ReadFileEx是一个Windows API函数。与ReadFile相似,只是它只能用于异步读取文件操作,异步操作完成后会调用指定的回调函数。
ReadFileEx是一个Windows API函数。与ReadFile相似,只是它只能用于异步读取文件操作,异步操作完成后会调用指定的回调函数。
BOOLReadFileEx(
HANDLEhFile, //文件的句柄
LPVOIDlpBuffer, //用于接收数据的缓冲区
DWORDnNumberOfByteToRead, //允许接收的最大字节数
LPOVERLAPPEDlpOverlapped, //一个OVERLAPPED结构的指针
LPOVERLAPPED_COMPLETION_ROUTINElpCompletionRoutine //异步读取完成后调用的回调函数
);
Declare Function ReadFileEx Lib "kernel32" Alias "ReadFileEx" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpOverlapped As OVERLAPPED, ByVal lpCompletionRoutine As Long) As Long
hFile
文件的句柄。这个参数可以是任何一个由带有FILE_FLAG_OVERLAPPED参数的CreateFile函数打开的句柄。这个句柄同时也需要有GENERIC_WRITE访问权限。
lpBuffer
指定容纳读入数据的一个缓冲区。除非读操作执行完毕,否则不要访问这个缓冲区。
nNumberOfBytesToRead
要读入的字节数。
lpOverlapped
一个指向OVERLAPPED类型的结构体指针,定义了一个异步操作的结构。使用这个函数时,结构中的hEvent字段会被忽略
lpCompletionRoutine
回调函数的返回值。
返回非零表示成功,返回零表示失败,并可用GetLastError得到错误代码。
在Windows 8和Windows Server 2012中,这个函数也被下列技术所支持:
技术 | 支持 |
|---|---|
Server Message Block(SMB) 3.0 protocol | 是 |
SMB 3.0 Transparent Failover (TFO) | 是 |
Cluster Shared Volume File System (CsvFS) | 是 |
弹性文件系统 (ReFS) | 是 |
客户端 | 需要Windows XP、Windows 2000 Professional、Windows NT Workstation、Windows Me、Windows 98或Windows 95。 |
|---|---|
服务器 | 需要Windows Server 2003、Windows 2000 Server或Windows NT Server。 |
头文件 | 在Winbase.h中声明,包含于Windows.h。 |
库文件 | Kernel32.lib。 |
DLL | 需要Kernel32.dll。 |