win32 api CreateFile 和 WriteFile 问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了win32 api CreateFile 和 WriteFile 问题相关的知识,希望对你有一定的参考价值。

请大哥们帮我写个 win32 api 操作文件的例子,谢谢,注意要测试通过 采纳后将送100分 有 创建,追加,读取 的函数

#include "stdafx.h"
#include <windows.h>
int main(int argc, char* argv[])

HANDLE hFile=::CreateFile("test.txt",
GENERIC_ALL,//文件操作方式,读写删都可
0,//此标示无法再创建test.txt文件,必须关闭句柄才可
NULL,//一般高级文件操作用
OPEN_ALWAYS,//有文件就打开,没文件就创建
FILE_ATTRIBUTE_NORMAL,//其它标示将会覆写此标示
NULL);//基本不用,再me/98系统下.必须是null
if(hFile==INVALID_HANDLE_VALUE)
printf("error\\n");
else
const char* cBuffer="hello world";
DWORD dwLenght=strlen(cBuffer);
DWORD dwNumOfWrite;
DWORD dwPos;
dwPos = SetFilePointer(hFile, 0, NULL, FILE_END);//这样可以继续接写文件,而不是复写

WriteFile(hFile,
cBuffer,
dwLenght, //写入字数
&dwNumOfWrite,//实际写入字数
NULL);

::CloseHandle(hFile);
printf("success\\n");


return 0;


注意:我个人不推荐直接操作win api,因为除非你是非常资深技术人员,可以考虑到线程之间的影响以及 兼容性,要不然就不要直接使用api,而是使用c运行库,例如fopen,fwrite等

有错请纠正~~
参考技术A HANDLE hfile;
hfile=CreateFileA(文件名,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_FLAG_OVERLAPPED,NULL);
DWORD dwWrite=0;
MessageBox(NULL,arr2[1],"提示",MB_OK);
WriteFile(hfile,文件内容sizeof(文件内容),&dwWrite,NULL);
FlushFileBuffers(hfile);

Win10系统CreateFile() Error: 5问题解决

当按下键盘Shitf键,然后点击鼠标右键,打开Powershell窗口后,弹出如下错误:

CreateFile() Error: 5是Win10系统中出现的权限问题,解决该问题需要将注册表中相关权限给关闭掉,具体操作如下:
(1) 按下键盘Win + R组合快捷键,打开后输入命令:regedit, 具体如下图

(2) 然后点击确认,打开注册表: regedit,找到如下选项HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System,修改路径下的键值:EnableLUA,将1改为0即可解决该问题。

以上是关于win32 api CreateFile 和 WriteFile 问题的主要内容,如果未能解决你的问题,请参考以下文章

Qt 中的 Win32 API

Win32 文件封装API Demo

Win32 文件封装API Demo

UWP是否具有同步文件读/写API?

CreateFile 失败,错误代码为 2,而文件存在

006 异步IO操作