KsGetOverlappedResult

此函式是否可用依装置支援项目而定。

检索对指定文件、命名管道或通讯装置重叠操作的结果。

语法

BOOL KsGetOverlappedResult(
     HANDLE hFile,
     LPOVERLAPPED lpOverlapped,
     LPDWORD lpNumberOfBytesTransferred,
     BOOL bWait
);

参数

hFile:档案、附名管与通讯装置的控制代码,这与呼叫 KsReadFile, KsWriteFile, ConnectNamedPipe, TransactNamedPipe, DeviceIoControlKsWaitCommEvent 函式来开启重叠操作时指定的控制代码相同。

lpOverlapped:当重叠操作开始时指定的 OVERLAPPED 结构指标。

lpNumberOfBytesTransferred:接收读取或写入操作实际传输的位元组数的变数的指标,对于 TransactNamedPipe 操作,此为从导管读取的位元组数; 对于 DeviceIoControl 操作,此为装置驱动器回传的输出资料位元组数;对于 ConnectNamedPipeKsWaitCommEvent 操作,此值未定义。

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

参见

KsReadFile

KsWriteFile

KsWaitCommEvent