LPOVERLAPPED_COMPLETION_ROUTINE fonction de rappel (minwinbase.h)

Fonction de rappel définie par l’application utilisée avec les fonctions ReadFileEx et WriteFileEx. Il est appelé lorsque l’opération asynchrone d’entrée et de sortie (E/S) est terminée ou annulée et que le thread appelant est dans un état alertable (à l’aide de la fonction SleepEx, MsgWaitForMultipleObjectsEx, WaitForSingleObjectEx ou WaitForMultipleObjectsEx avec le paramètre fAlertable défini sur TRUE).

Le type LPOVERLAPPED_COMPLETION_ROUTINE définit un pointeur vers cette fonction de rappel. FileIOCompletionRoutine est un espace réservé pour le nom de fonction défini par l’application.

Syntaxe

LPOVERLAPPED_COMPLETION_ROUTINE LpoverlappedCompletionRoutine;

void LpoverlappedCompletionRoutine(
  [in]      DWORD dwErrorCode,
  [in]      DWORD dwNumberOfBytesTransfered,
  [in, out] LPOVERLAPPED lpOverlapped
)
{...}

Paramètres

[in] dwErrorCode

Status d’achèvement des E/S. Ce paramètre peut être l’un des codes d’erreur système.

[in] dwNumberOfBytesTransfered

Nombre d'octets transférés. Si une erreur se produit, ce paramètre est égal à zéro.

[in, out] lpOverlapped

Pointeur vers la structure CHEVAUCHEMENT SPÉCIFIÉE par la fonction d’E/S asynchrone.

Le système n’utilise pas la structure CHEVAUCHEMENT APRÈS l’appel de la routine d’achèvement, de sorte que la routine d’achèvement peut libérer la mémoire utilisée par la structure qui se chevauche.

Valeur de retour

None

Remarques

La valeur de retour d’une opération asynchrone est 0 (ERROR_SUCCESS) si l’opération s’est terminée avec succès ou si l’opération s’est terminée avec un avertissement. Pour déterminer si une opération d’E/S a été effectuée avec succès, case activée que dwErrorCode a la valeur 0, appelez GetOverlappedResult, puis appelez GetLastError. Par exemple, si la mémoire tampon n’était pas assez grande pour recevoir toutes les données d’un appel à ReadFileEx, dwErrorCode a la valeur 0, GetOverlappedResult échoue et GetLastError retourne ERROR_MORE_DATA.

Le retour à partir de cette fonction permet d’appeler une autre routine d’achèvement d’E/S en attente. Toutes les routines d’achèvement en attente sont appelées avant que l’attente du thread pouvant être alerté soit terminée avec un code de retour de WAIT_IO_COMPLETION. Le système peut appeler les routines d’achèvement en attente dans n’importe quel ordre. Elles peuvent ou non être appelées dans l’ordre d’exécution des fonctions d’E/S.

Chaque fois que le système appelle une routine d’achèvement, il utilise une partie de la pile de l’application. Si la routine d’achèvement effectue des E/S asynchrones supplémentaires et des attentes pouvant être alertées, la pile peut augmenter.

Pour plus d’informations, consultez Appels de procédure asynchrone.

Exemples

Pour obtenir un exemple de code, consultez Serveur de canal nommé à l’aide de routines d’achèvement.

Configuration requise

Condition requise Valeur
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 minwinbase.h (inclure Windows.h)

Voir aussi

BindIoCompletionCallback

Fonctions de gestion des fichiers

OVERLAPPED

ReadFileEx

SleepEx

E/S synchrones et asynchrones

WaitForMultipleObjectsEx

WaitForSingleObjectEx

WriteFileEx