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 |
參見