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