KsGetOverlappedResult
此函式是否可用依装置支援项目而定。
检索对指定文件、命名管道或通讯装置重叠操作的结果。
语法
BOOL KsGetOverlappedResult(
HANDLE hFile,
LPOVERLAPPED lpOverlapped,
LPDWORD lpNumberOfBytesTransferred,
BOOL bWait
);
参数
hFile:档案、附名管与通讯装置的控制代码,这与呼叫 KsReadFile, KsWriteFile, ConnectNamedPipe, TransactNamedPipe, DeviceIoControl 或 KsWaitCommEvent 函式来开启重叠操作时指定的控制代码相同。
lpOverlapped:当重叠操作开始时指定的 OVERLAPPED 结构指标。
lpNumberOfBytesTransferred:接收读取或写入操作实际传输的位元组数的变数的指标,对于 TransactNamedPipe 操作,此为从导管读取的位元组数; 对于 DeviceIoControl 操作,此为装置驱动器回传的输出资料位元组数;对于 ConnectNamedPipe 或 KsWaitCommEvent 操作,此值未定义。
bWait:若此参数为 TRUE,且 lpOverlapped 结构的内部数值为 STATUS_PENDING
,函式直到操作完成后才会回传;若此参数为 FALSE 且操作仍搁置,函式将回传 FALSE ,而 GetLastError 函式将回传 ERROR_IO_INCOMPLETE
。
回传值
若函式执行成功将回传 TRUE;失败将回传 FALSE。欲获取延伸错误资讯请呼叫 GetLastError。
备注
KsGetOverlappedResult 函式回报的结果是指定控制代码最后一个重叠操作的结果,其中提供指定的 OVERLAPPED 结构,且操作结果处于搁置状态,搁置的操作是在当开启该操作的函式回传 FALSE 且 GetLastError 函式回传 ERROR_IO_PENDING
时指示的。当 I/O 操作搁置时,开启该操作的函式会将 OVERLAPPED 结构的 hEvent
成员重置为非信号 (nonsignaled) 状态,接著当搁置的操作完成时,系统会将事件物件设置为信号 (signaled) 状态。
若 bWait 参数为 TRUE,KsGetOverlappedResult 会透过等待事件物件是否处于信号状态来确定搁置的操作是否完成。
若 OVERLAPPED 结构的 hEvent
成员为 NULL, 系统会使用 hFile 控制代码的状态来传送操作完成的信号,不建议使用档案、附名管或通讯装置控制代码来操作,使用事件物件为较安全的做法,避免多个重叠操作使用相同档案、附名管或通讯装置控制代码同时执行,导致无从得知是哪一个操作造成物件状态出现信号。
范例
N/A
使用需求
RT | Win32 | |
---|---|---|
最低支援版本 | 4.0 | 4.0 |
标头档 | kscom.h | kscom.h |
程式库 | KsApi_Rtss.lib | ksapi.h |
参见