2024年3月27日发(作者:)
ReadFile函数从文件指针指定的位置读取数据。读操作完成后,文件指针将根据实际
读出的数据自动进行调整,除非文件句柄是以OVERLAPPED属性值打开的。如果是以
OVERLAPPED打开的I/O,应用程序就需要自己手动调整文件指针。
这个函数被设计成兼有同步和异步操作。ReadFileEx函数则设计成只支持异步操作,
异步操作允许应用程序在读文件期间可以同时进行其他的操作。
函数原型:
BOOL ReadFile(
HANDLE hFile, // handle to file
LPVOID lpBuffer, // data buffer
DWORD nNumberOfBytesToRead, // number of bytes to read
LPDWORD lpNumberOfBytesRead, // number of bytes read
LPOVERLAPPED lpOverlapped // overlapped buffer
);
【Parameters】
1、hFile
文件句柄(必须具有GENERIC_READ访问权限)。
在Windows NT/2000/XP平台上:对于异步读操作,hFile可以是由CreateFile函数
以FILE_FLAG_OVERLAPPED方式打开的任何句柄,或者一个由socket或accept函数返
回的socket句柄。
在Windows 95/98/Me平台上:对于邮槽、命名管道和磁盘文件不能使用异步读操作。
2、lpBuffer
用来接收从文件中读出的数据的缓冲区指针。
3、nNumberOfBytesToRead
指明要读的字节总数。
4、lpNumberOfBytesRead
一个变量指针,用来存储实际传输的字节总数。ReadFile在做所有事情(包括错误检查)
之前,先将这个值赋为0。当ReadFile从一个命名管道上返回TRUE时这个参数为0,说
明消息管道另一端调用WriteFile时设置的nNumberOfBytesToWrite 参数为0。
在Windows NT/2000/XP平台上:如果lpOverlapped 为NULL,则
lpNumberOfBytesRead不能为NULL。如果lpOverlapped 不是NULL,
lpNumberOfBytesRead可以设为NULL。如果是一个overlapped形式的读操作,我们
可以动用GetOverlappedResult函数来获得传输的实际字节数。如果hFile关联的是一个


发布评论