BindIoCompletionCallback 函式 (winbase.h)

執行緒集 區所擁有的 I/O 完成埠與指定的檔案控制代碼產生關聯。 完成涉及此檔案的 I/O 要求時,非 I/O 背景工作執行緒會執行指定的回呼函式。

語法

BOOL BindIoCompletionCallback(
  [in] HANDLE                          FileHandle,
  [in] LPOVERLAPPED_COMPLETION_ROUTINE Function,
  [in] ULONG                           Flags
);

參數

[in] FileHandle

針對重迭 I/O 完成開啟之檔案的控制碼。 這個控制碼是由 CreateFile 函式傳回,具有 FILE_FLAG_OVERLAPPED 旗標。

[in] Function

當 I/O 作業完成時,要于非 I/O 背景工作執行緒中執行的回呼函式指標。 這個回呼函式不得呼叫 TerminateThread 函式。

如需完成常式的詳細資訊,請參閱 FileIOCompletionRoutine

[in] Flags

此參數必須是零。

傳回值

如果函式成功,則傳回非零的值。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError 函 式。

備註

如果進程在 FileHandle 參數所指定的檔案上發出非同步要求,但要求會立即傳回,且錯誤碼不是ERROR_IO_PENDING,則可能不會執行回呼函式。

請確定起始非同步 I/O 要求的執行緒不會在要求完成之前終止。 此外,如果 DLL 中的函式已排入背景工作執行緒,請確定 DLL 中的函式已在卸載 DLL 之前完成執行。

執行緒集區會維護 I/O 完成埠。 當您呼叫 BindIoCompletionCallback時,它會將指定的檔案與執行緒集區的 I/O 完成埠產生關聯。 該檔案物件的非同步要求會藉由張貼到完成埠來完成,而執行緒集區背景工作執行緒會從該埠中挑選這些要求。 對於必須發出以非同步程序呼叫方式完成之 I/O 要求的回呼,執行緒集區會提供 I/O 背景工作集區。 I/O 背景工作執行緒不會等候完成埠;他們會以可警示的等候狀態睡眠,讓完成的 I/O 要求封包可以喚醒它們。 這兩種類型的背景工作執行緒都會檢查其上是否有 I/O 擱置中,如果有,則不會結束。 如需詳細資訊,請參閱 非同步程序呼叫

若要編譯使用此函式的應用程式,請將_WIN32_WINNT定義為0x0500或更新版本。 如需詳細資訊,請參閱 使用 Windows 標頭

規格需求

   
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平臺 Windows
標頭 winbase.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

FileIOCompletionRoutine

處理序和執行緒函式

執行緒共用