共用方式為


LPOVERLAPPED_COMPLETION_ROUTINE回呼函式 (minwinbase.h)

搭配 ReadFileExWriteFileEx 函式使用的應用程式定義回呼函式。 ) (使用 SleepExMsgWaitForMultipleObjectsExWaitForSingleObjectsEx 或 WaitForMultipleObjectsExWaitForMultipleObjectsEx 或 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)

另請參閱

BindIoCompletionCallback

檔案管理功能

重疊

ReadFileEx

SleepEx

同步和異步 I/O

WaitForMultipleObjectsEx

WaitForSingleObjectEx

WriteFileEx