我从 Win32 API 收到了两个关于 ReadFile 函数的问题。首先,鉴于
BOOL WINAPI ReadFile(
_In_ HANDLE hFile,
_Out_ LPVOID lpBuffer,
_In_ DWORD nNumberOfBytesToRead,
_Out_opt_ LPDWORD lpNumberOfBytesRead,
_Inout_opt_ LPOVERLAPPED lpOverlapped
);
第三个和第四个参数是DWORD类型,最多可以容纳1^32而不会溢出。这是否意味着 ReadFile 一次只能读取少于 1^32 字节数据的文件?如果这是真的,我想读取一个大于 1^32 的文件,我会将 ReadFile 放在这样的循环中
char buffer[1<<32];
while(!EOF){
ReadFIle(filename,buffer,1^32,bytesout,NULL);
SomeFunctionToExtractDataFromBuffer(buffer)
}
假设循环倾向于在每次迭代时覆盖缓冲区,为了使这种设计工作,ReadFile 需要记住文件中先前读取发生的位置,这是真的吗?或者还有其他方法可以实现这一点。非常感谢