我有一个结构:
PROCESSENTRY32 pe32;
我想将此结构传递给函数。该函数将创建一个文件并将结构中的数据写入该文件。函数的名称是takeinput()。我把结构传递给了函数:
errflag = takeinput (&pe32)
;
在takeinput(PROCESSENTRY32 * pe31)中,我使用createfile()创建了一个文件D:\ File.txt。现在我必须将日期写入file.txt。我正在使用:
WriteFile(
hFile, // open file handle
DataBuffer, // start of data to write
dwBytesToWrite, // number of bytes to write
&dwBytesWritten, // number of bytes that were written
NULL); // no overlapped structure
这里我知道了。最后三个我知道。但我对DataBuffer参数感到困惑。通过什么?结构pe31中有许多变量。有人可以帮助我吗?
如果有另一种方法将结构数据写入file.txt,请解释一下。提前致谢。
答案 0 :(得分:2)
这是保存数据的缓冲区。您的电话将是:
takeinput (PROCESSENTRY32* ppe32)
{
WriteFile(
hFile, // open file handle
(void*)ppe2, // pointer to buffer to write
sizeof(PROCESSENTRY32), // number of bytes to write
&dwBytesWritten, // this will contain number of bytes actually written
NULL); // no overlapped structure
// some other stuff
}
返回后dwBytesWritten
应等于sizeof(PROCESSENTRY32)
。
答案 1 :(得分:0)
WriteFile函数签名是
BOOL WINAPI WriteFile(
__in HANDLE hFile,
__in LPCVOID lpBuffer,
__in DWORD nNumberOfBytesToWrite,
__out_opt LPDWORD lpNumberOfBytesWritten,
__inout_opt LPOVERLAPPED lpOverlapped
);
您的DataBuffer是签名中的lpBuffer,lpBuffer是指向包含要写入文件或设备的数据的缓冲区的指针。您应该显式地将指向数据的指针(PROCESSENTRY32 pe31)转换为指向void(()pe31)的指针并将其传递给WriteFile。
答案 2 :(得分:0)
您是否阅读了WriteFile
函数的documentation?这可能有助于您了解所使用的每个参数的用途及其含义。< / p>
BOOL WINAPI WriteFile(
__in HANDLE hFile,
__in LPCVOID lpBuffer,
__in DWORD nNumberOfBytesToWrite,
__out_opt LPDWORD lpNumberOfBytesWritten,
__inout_opt LPOVERLAPPED lpOverlapped
);
你说你对DataBuffer
参数感到困惑。 MSDN解释说这是:
指向包含要写入文件或设备的数据的缓冲区的指针。
此缓冲区必须在写入操作期间保持有效。在写操作完成之前,调用者不得使用此缓冲区。
因此,实质上,DataBuffer
(lpBuffer
)参数是您提供要写入文本文件的数据的地方。
有一个完整的例子,说明如何打开和写入文件here。您应该能够按照代码查看如何根据具体情况对其进行编码。