WriteFile函数C ++

时间:2012-02-07 10:52:56

标签: c++ windows winapi

我试图使用WriteFile函数。我一直在研究这个例子

http://msdn.microsoft.com/en-us/library/ms900134.aspx

这里传递给WriteFile的缓冲区是从ReadFile填充的。但我不想这样做。我只想写一个像“示例文本测试WriteFile”之类的字符串。但我不确定参数应该具有什么值。我试过在谷歌上四处寻找,但无法找到任何东西。谁知道我是怎么做到的?

2 个答案:

答案 0 :(得分:8)

来自MSDN

BOOL WINAPI WriteFile(
  __in         HANDLE hFile,
  __in         LPCVOID lpBuffer,
  __in         DWORD nNumberOfBytesToWrite,
  __out_opt    LPDWORD lpNumberOfBytesWritten,
  __inout_opt  LPOVERLAPPED lpOverlapped
);
  • 第一个参数是文件的句柄。
  • 第二个参数是指向要写入的数据的指针。在你的情况下,它是字符串。
  • 第三个参数是您要写入的数据的长度。在您的情况下,它将类似于strlen(str)
  • 第四个参数是指向DWORD变量的指针,该变量将接收实际写入的字节数。
  • 现在,第五个和最后一个参数可以为NULL。

你这样使用它:

char str[] = "Example text testing WriteFile";
DWORD bytesWritten;

WriteFile(fileHandle, str, strlen(str), &bytesWritten, NULL);

如果WriteFile返回FALSE,则会出错。使用GetLastError功能找出错误代码。

答案 1 :(得分:2)

编写字符串的简单示例:

hOutFile这是一个来自CreateFile的调用的打开文件句柄:

{
    DWORD dwBytesWritten = 0;
    char Str[] = "Example text testing WriteFile";
    WriteFile( hOutFile, Str, strlen(Str), &dwBytesWritten, NULL );
}

编辑:检查MSDN函数定义,了解每个参数的作用。