WriteFileEx是一个Windows API函数。它与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调。
WriteFileEx是一个Windows API函数。它与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调。
BOOL WINAPIWriteFileEx(
HANDLEhFile,
LPCVOIDlpBuffer,
DWORDnNumberOfBytesToWrite,
LPOVERLAPPEDlpOverlapped,
LPOVERLAPPED_COMPLETION_ROUTINElpCompletionRoutine
);
Declare Function WriteFileEx Lib "kernel32" Alias "WriteFileEx" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpOverlapped As OVERLAPPED, ByVal lpCompletionRoutine As Long) As Long
hFile
文件的句柄。这个参数可以是任何一个由带有FILE_FLAG_OVERLAPPED参数的CreateFile函数打开的句柄。这个句柄同时也需要有GENERIC_WRITE访问权限。
lpBuffer
指定一个缓冲区,其中包含了要写入的数据。除非写操作完成,否则不要访问这个缓冲区 。
nNumberOfBytesToWrite
要写入数据的字节量。
lpOverlapped
一个指向OVERLAPPED类型的结构体指针,定义了一次异步写操作的结构。使用这个函数时,结构中的hEvent字段会被忽略。
lpCompletionRoutine
回调函数的值。
非零表示成功,否则返回零。要得到额外的错误信息,调用GetLastError。
并不是每种操作系统都支持在任何类型的设备上进行异步操作。windows 95不支持对磁盘文件的重叠读取操作。
在Windows 8和Windows Server 2012中,这个函数也被下列技术所支持:
技术 | 支持 |
|---|---|
Server Message Block(SMB) 3.0 protocol | 是 |
SMB 3.0 Transparent Failover (TFO) | 是 |
SMB 3.0 with Scale-out File Shares (SO) | 是 |
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。 |