Fonction BindIoCompletionCallback (winbase.h)

Associe le port d’achèvement des E/S appartenant au pool de threads au handle de fichier spécifié. À la fin d’une demande d’E/S impliquant ce fichier, un thread de travail non-E/S exécute la fonction de rappel spécifiée.

Syntaxe

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

Paramètres

[in] FileHandle

Handle du fichier ouvert pour l’achèvement des E/S qui se chevauche. Ce handle est retourné par la fonction CreateFile , avec l’indicateur FILE_FLAG_OVERLAPPED .

[in] Function

Pointeur vers la fonction de rappel à exécuter dans un thread de travail non-E/S lorsque l’opération d’E/S est terminée. Cette fonction de rappel ne doit pas appeler la fonction TerminateThread .

Pour plus d’informations sur la routine d’achèvement, consultez FileIOCompletionRoutine.

[in] Flags

Ce paramètre doit être égal à zéro.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations d’erreur étendues, appelez la fonction GetLastError .

Remarques

La fonction de rappel peut ne pas être exécutée si le processus émet une requête asynchrone sur le fichier spécifié par le paramètre FileHandle , mais que la demande retourne immédiatement avec un code d’erreur autre que ERROR_IO_PENDING.

Assurez-vous que le thread qui lance la demande d’E/S asynchrone ne se termine pas avant la fin de la demande. En outre, si une fonction d’une DLL est mise en file d’attente vers un thread de travail, assurez-vous que la fonction dans la DLL a terminé l’exécution avant que la DLL ne soit déchargée.

Le pool de threads gère un port d’achèvement d’E/S. Lorsque vous appelez BindIoCompletionCallback, il associe le fichier spécifié au port d’achèvement des E/S du pool de threads. Les requêtes asynchrones sur cet objet de fichier se terminent en les publiant sur le port d’achèvement, où elles sont récupérées par les threads worker du pool de threads. Pour les rappels qui doivent émettre une demande d’E/S qui se termine en tant qu’appel de procédure asynchrone, le pool de threads fournit un pool de workers d’E/S. Les threads de travail d’E/S n’attendent pas sur le port d’achèvement ; ils veillent dans un état d’attente pouvant être alerté afin que les paquets de demandes d’E/S qui se terminent puissent les réveiller. Les deux types de threads de travail vérifient s’il y a des E/S en attente et s’il y en a, ils ne se quittent pas. Pour plus d’informations, consultez Appels de procédure asynchrone.

Pour compiler une application qui utilise cette fonction, définissez _WIN32_WINNT comme 0x0500 ou version ultérieure. Pour plus d’informations, consultez Utilisation des en-têtes Windows.

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête winbase.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

FileIOCompletionRoutine

Fonctions de processus et de thread

Regroupement des threads