Funzione BindIoCompletionCallback (winbase.h)

Associa la porta di completamento I/O di proprietà del pool di thread all'handle di file specificato. Al termine di una richiesta di I/O che coinvolge questo file, un thread di lavoro non I/O eseguirà la funzione di callback specificata.

Sintassi

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

Parametri

[in] FileHandle

Handle per il file aperto per il completamento di I/O sovrapposto. Questo handle viene restituito dalla funzione CreateFile , con il flag FILE_FLAG_OVERLAPPED .

[in] Function

Puntatore alla funzione di callback da eseguire in un thread di lavoro non di I/O al termine dell'operazione di I/O. Questa funzione di callback non deve chiamare la funzione TerminateThread .

Per altre informazioni sulla routine di completamento, vedere FileIOCompletionRoutine.

[in] Flags

Questo parametro deve essere zero.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per ottenere informazioni sull'errore estese, chiamare la funzione GetLastError .

Commenti

La funzione di callback potrebbe non essere eseguita se il processo genera una richiesta asincrona nel file specificato dal parametro FileHandle , ma la richiesta restituisce immediatamente con un codice di errore diverso da ERROR_IO_PENDING.

Assicurarsi che il thread che avvia la richiesta di I/O asincrona non venga terminato prima del completamento della richiesta. Inoltre, se una funzione in una DLL viene accodata a un thread di lavoro, assicurarsi che la funzione nella DLL abbia completato l'esecuzione prima che la DLL venga scaricata.

Il pool di thread gestisce una porta di completamento I/O. Quando si chiama BindIoCompletionCallback, associa il file specificato alla porta di completamento I/O del pool di thread. Le richieste asincrone su tale oggetto file verranno completate pubblicando sulla porta di completamento, in cui verranno prelevate dai thread di lavoro del pool di thread. Per i callback che devono eseguire una richiesta di I/O che viene completata come chiamata di procedura asincrona, il pool di thread fornisce un pool di lavoro di I/O. I thread di lavoro di I/O non attendono la porta di completamento; sospendono in uno stato di attesa avvisabile in modo che i pacchetti di richiesta di I/O completati possano riattivarli. Entrambi i tipi di thread di lavoro controllano se sono presenti operazioni di I/O in sospeso e, in caso affermativo, non vengono chiusi. Per altre informazioni, vedere Chiamate di routine asincrone.

Per compilare un'applicazione che usa questa funzione, definire _WIN32_WINNT come 0x0500 o versione successiva. Per altre informazioni, vedere Uso delle intestazioni di Windows.

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

FileIOCompletionRoutine

Funzioni di processi e thread

Pooling dei thread