GetOverlappedResult

【勇芳软件工作室】汉化HomePreviousNext

GetOverlappedResult函数返回指定文件(名称为管道或通信设备)上的重叠操作的结果。

Windows 95:此函数仅适用于串行设备或使用DeviceIoControl功能打开的文件。

BOOL GetOverlappedResult(

HANDLE 【HFILE】,//文件,管道或通讯设备的句柄
LPOVERLAPPED 【lpOverlapped的】,//重叠结构的地址
LPDWORD 【lpNumberOfBytesTransferred】,//实际字节数的地址
BOOL 【BWAIT】// wait flag
); 

参数

【HFILE】

标识文件,命名管道或通信设备。这是通过调用ReadFile WriteFileConnectNamedPipeTransactNamedPipeDeviceIoControlWaitCommEvent函数启动重叠操作时指定的句柄。

【lpOverlapped的】

指向重叠操作启动时指定的OVERLAPPED结构。

【lpNumberOfBytesTransferred】

指向一个32位变量,它接收通过读或写操作实际传输的字节数。对于TransactNamedPipe操作,这是从管道读取的字节数。对于DeviceIoControl操作,这是设备驱动程序返回的输出数据的字节数。对于ConnectNamedPipeWaitCommEvent操作,此值未定义。

【BWAIT】

指定函数是否等待待完成的重叠操作。如果为TRUE,该函数在操作完成之前不会返回。如果FALSE和操作仍待处理,函数返回FALSE,并且GetLastError函数返回ERROR_IO_INCOMPLETE。

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

备注

GetOverlappedResult功能报告的结果是指定的句柄的最后一次重叠操作,其中指定的OVERLAPPED结构被提供给该操作,并且操作的结果正在等待。当启动操作的功能返回FALSE,并且GetLastError函数返回ERROR_IO_PENDING时,指示挂起的操作。当I / O操作挂起时,启动操作的功能将OVERLAPPED结构的活动成员重置为非信号状态。然后当等待操作完成时,系统将事件对象设置为信号状态。

如果【BWAIT】参数为TRUE,则GetOverlappedResult通过等待事件对象处于信号状态来确定挂起操作是否已完成。

如果OVERLAPPED结构的活动成员为NULL,系统将使用【HFILE】句柄的状态在操作完成时发出信号。不建议使用文件,命名管道或通讯设备手柄。使用事件对象更安全,因为在同一个文件,名为管道或通信设备上执行多个同时重叠操作时可能会发生混淆。在这种情况下,没有办法知道哪个操作导致了对象的状态信号。

OVERLAPPED结构中指定手动重置事件对象。如果使用自动复位事件对象,则在开始重叠操作和调用GetOverlappedResult之间的间隔内,不得在任何其他等待操作中指定事件句柄。例如,事件对象有时在其中一个等待功能中指定,等待操作完成。当wait函数返回时,系统会将自动复位事件的状态设置为非信号状态,并将【BWAIT】参数设置为TRUE的后续调用GetOverlappedResult将导致该函数无限期被阻止。

也可以看看

CancelIo, ConnectNamedPipe, CreateEvent, DeviceIoControl, GetLastError, OVERLAPPED, ReadFile, TransactNamedPipe, WaitCommEvent, WriteFile