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) |