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 |