BindIoCompletionCallback-Funktion (winbase.h)
Ordnet den E/A-Vervollständigungsport im Besitz des Threadpools dem angegebenen Dateihandle zu. Nach Abschluss einer E/A-Anforderung, die diese Datei umfasst, führt ein Nicht-E/A-Workerthread die angegebene Rückruffunktion aus.
Syntax
BOOL BindIoCompletionCallback(
[in] HANDLE FileHandle,
[in] LPOVERLAPPED_COMPLETION_ROUTINE Function,
[in] ULONG Flags
);
Parameter
[in] FileHandle
Ein Handle für die Datei, die für überlappende E/A-Vervollständigung geöffnet wurde. Dieses Handle wird von der CreateFile-Funktion mit dem flag FILE_FLAG_OVERLAPPED zurückgegeben.
[in] Function
Ein Zeiger auf die Rückruffunktion, die in einem Nicht-E/A-Workerthread ausgeführt werden soll, wenn der E/A-Vorgang abgeschlossen ist. Diese Rückruffunktion darf die Funktion TerminateThread nicht aufrufen.
Weitere Informationen zur Vervollständigungsroutine finden Sie unter FileIOCompletionRoutine.
[in] Flags
Dieser Parameter muss null sein.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Rufen Sie die GetLastError-Funktion auf, um erweiterte Fehlerinformationen abzurufen.
Bemerkungen
Die Rückruffunktion wird möglicherweise nicht ausgeführt, wenn der Prozess eine asynchrone Anforderung für die durch den FileHandle-Parameter angegebene Datei ausgibt, aber die Anforderung wird sofort mit einem anderen Fehlercode als ERROR_IO_PENDING zurückgegeben.
Stellen Sie sicher, dass der Thread, der die asynchrone E/A-Anforderung initiiert, nicht beendet wird, bevor die Anforderung abgeschlossen ist. Wenn eine Funktion in einer DLL in eine Warteschlange für einen Workerthread eingereiht wird, stellen Sie außerdem sicher, dass die Funktion in der DLL die Ausführung abgeschlossen hat, bevor die DLL entladen wird.
Der Threadpool verwaltet einen E/A-Vervollständigungsport. Wenn Sie BindIoCompletionCallback aufrufen, ordnet es die angegebene Datei dem E/A-Vervollständigungsport des Threadpools zu. Asynchrone Anforderungen für dieses Dateiobjekt werden abgeschlossen, indem sie am Vervollständigungsport veröffentlicht werden, wo sie von Threadpool-Workerthreads abgerufen werden. Für Rückrufe, die eine E/A-Anforderung ausstellen müssen, die als asynchroner Prozeduraufruf abgeschlossen wird, stellt der Threadpool einen E/A-Workerpool bereit. Die E/A-Workerthreads warten nicht auf den Abschlussport. sie befinden sich in einem warnbaren Wartezustand, sodass E/A-Anforderungspakete, die abgeschlossen sind, sie reaktivieren können. Beide Arten von Workerthreads überprüfen, ob E/A-Vorgänge für sie ausstehen, und wenn vorhanden, werden sie nicht beendet. Weitere Informationen finden Sie unter Asynchrone Prozeduraufrufe.
Um eine Anwendung zu kompilieren, die diese Funktion verwendet, definieren Sie _WIN32_WINNT als 0x0500 oder höher. Weitere Informationen finden Sie unter Verwenden der Windows-Header.
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbase.h (einschließlich Windows.h) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |