LPOVERLAPPED_COMPLETION_ROUTINE回呼函式 (minwinbase.h)
搭配 ReadFileEx 和 WriteFileEx 函式使用的應用程式定義回呼函式。 ) (使用 SleepEx、 MsgWaitForMultipleObjectsEx、 WaitForSingleObjectsEx 或 WaitForMultipleObjectsEx 或 WaitForMultipleObjectsEx 或 WaitForMultipleObjectsEx 函數的 fAlertable 參數設定為 TRUE) ,就會呼叫 (它。
LPOVERLAPPED_COMPLETION_ROUTINE類型會定義這個回呼函式的指標。 FileIOCompletionRoutine 是應用程式定義函數名稱的佔位元。
語法
LPOVERLAPPED_COMPLETION_ROUTINE LpoverlappedCompletionRoutine;
void LpoverlappedCompletionRoutine(
[in] DWORD dwErrorCode,
[in] DWORD dwNumberOfBytesTransfered,
[in, out] LPOVERLAPPED lpOverlapped
)
{...}
參數
[in] dwErrorCode
I/O 完成狀態。 此參數可以是其中一個 系統錯誤碼。
[in] dwNumberOfBytesTransfered
已傳輸的位元組數。 如果發生錯誤,此參數為零。
[in, out] lpOverlapped
異步 I/O 函式所指定 之 OVERLAPPED 結構的指標。
系統在呼叫完成例程之後不會使用 OVERLAPPED 結構,因此完成例程可以解除分配重疊結構所使用的記憶體。
傳回值
無
備註
異步操作的傳回值為 0 (ERROR_SUCCESS) 如果作業成功完成,或作業已完成,則為警告。 若要判斷 I/O 作業是否已順利完成,請檢查 dwErrorCode 是否為 0、呼叫 GetOverlappedResult,然後呼叫 GetLastError。 例如,如果緩衝區不夠大,無法接收 ReadFileEx 呼叫中的所有數據,dwErrorCode 會設定為 0,GetOverlappedResult 會失敗,而 GetLastError 會傳回ERROR_MORE_DATA。
從此函式傳回,允許呼叫另一個擱置的 I/O 完成例程。 所有等候完成例程都會在可警示線程的等候完成之前呼叫,並傳回 WAIT_IO_COMPLETION的傳回碼。 系統可能會依任何順序呼叫等候完成例程。 它們可能或可能不會依 I/O 函式完成的順序呼叫。
每次系統呼叫完成例程時,都會使用一些應用程式的堆疊。 如果完成例程執行其他異步 I/O 和可警示的等候,堆疊可能會成長。
如需詳細資訊,請參閱 異步過程調用。
範例
如需範例程式代碼,請參閱 使用完成例程的命名管道伺服器。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | minwinbase.h (包含 Windows.h) |