共用方式為


WinUsb_GetOverlappedResult函式 (winusb.h)

WinUsb_GetOverlappedResult函式會擷取指定檔案上重迭作業的結果。

語法

BOOL WinUsb_GetOverlappedResult(
  [in]  WINUSB_INTERFACE_HANDLE InterfaceHandle,
  [in]  LPOVERLAPPED            lpOverlapped,
  [out] LPDWORD                 lpNumberOfBytesTransferred,
  [in]  BOOL                    bWait
);

參數

[in] InterfaceHandle

裝置上第一個介面的不透明句柄,由 WinUsb_Initialize傳回。

[in] lpOverlapped

重疊作業啟動時所指定 之重疊 結構的指標。

[out] lpNumberOfBytesTransferred

變數的指標,接收讀取或寫入作業實際傳輸的位元元組數目。

[in] bWait

如果此參數為 TRUE,則函式不會在作業完成之前傳回。 如果此參數為 FALSE 且作業仍然擱置中,則函式會傳回 FALSE ,而 GetLastError 函式會傳回ERROR_IO_INCOMPLETE。

傳回值

如果函式成功,則傳回值是零以外的任何數位。 如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

此函式就像 Win32 API 例程 GetOverlappedResult 一樣,有一個差異,而不是傳遞從 CreateFile 傳回的檔案句柄,呼叫端會傳遞從 WinUsb_Initialize傳回的介面句柄。 如果傳遞適當的句柄,呼叫端可以使用任一 API 例程。 WinUsb_GetOverlappedResult函式會從介面句柄擷取檔句柄,然後呼叫 GetOverlappedResult

WinUsb_GetOverlappedResult函式所報告的結果,是從指定句柄的最後一個重迭作業中提供的重疊作業,以及作業的結果擱置中。 當啟動作業的函式傳回 FALSE,而 GetLastError 例程傳回ERROR_IO_PENDING時,就會指出暫止作業。 當 I/O 作業擱置時,啟動作業的函式會將疊結構的 hEvent 成員重設為非簽署狀態。 然後,當擱置作業完成時,系統會將事件物件設定為已發出訊號的狀態。

呼叫端可以指定在 RESETED 結構中手動重設事件物件。 如果使用自動重設事件物件,則啟動重疊作業和呼叫 WinUsb_GetOverlappedResult之間的間隔,不得在任何其他等候作業中指定事件句柄。 例如,事件物件有時會在其中一個等候例程中指定,以等候作業完成。 當等候例程傳回時,系統會將自動重設事件的狀態設定為非ignaled,而將 bWait 參數設定為 TRUE 的連續 WinUsb_GetOverlappedResult呼叫會無限期地封鎖函式。

如果 bWait 參數為 TRUE,WinUsb_GetOverlappedResult會等待事件對象處於訊號狀態,判斷是否已完成擱置的作業。

如果 OVERLAPPED 結構的 hEvent 成員為 NULL,系統會使用檔案句柄的狀態,在作業完成時發出訊號。 請勿針對此目的使用檔句柄。 最好使用事件對象,因為在同一個檔案上執行多個並行重疊作業時可能發生的混淆。 在此情況下,您無法知道哪個作業導致物件的狀態收到訊號。

規格需求

需求
目標平台 Universal
標頭 winusb.h (包含 Winusb.h)
程式庫 Winusb.lib
Dll Winusb.dll

另請參閱

WinUSB

WinUSB 函式

WinUsb_Initialize

_URB_CONTROL_DESCRIPTOR_REQUEST