【发布时间】:2012-09-21 05:32:00
【问题描述】:
我从 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 需要记住文件中先前读取发生的位置,这是真的吗?或者还有其他方法可以实现这一点。非常感谢
【问题讨论】:
-
请修改此问题的标题,以便对本网站的未来访问者有用。否则它可能会因为过于本地化而被关闭。
-
没有理由假设 DWORD 的大小是 32。有很多商业应用,它更高。
标签: c++ windows winapi visual-c++