GetQueuedCompletionStatusEx fonction)
Récupère simultanément plusieurs entrées de port de terminaison. Elle attend la fin des opérations d’e/s en attente associées au port de terminaison spécifié.
Pour défiler les paquets de fin d’exécution d’e/s une à la fois, utilisez la fonction GetQueuedCompletionStatus .
Syntaxe
BOOL WINAPI GetQueuedCompletionStatusEx(
_In_ HANDLE CompletionPort,
_Out_ LPOVERLAPPED_ENTRY lpCompletionPortEntries,
_In_ ULONG ulCount,
_Out_ PULONG ulNumEntriesRemoved,
_In_ DWORD dwMilliseconds,
_In_ BOOL fAlertable
);
Paramètres
-
CompletionPort [ dans]
-
Handle vers le port de terminaison. Pour créer un port de terminaison, utilisez la fonction CreateIoCompletionPort .
-
lpCompletionPortEntries [ à]
-
En entrée, pointe vers un tableau pré-alloué de structures d' _ entrée avec chevauchement .
Lors de la sortie, reçoit un tableau de structures d' _ entrée avec chevauchement qui contiennent les entrées. Le nombre d’éléments du tableau est fourni par ulNumEntriesRemoved.
Le nombre d’octets transférés au cours de chaque e/s, la clé de saisie semi-automatique qui indique sur quel fichier chaque e/s s’est produite, et l’adresse de la structure OVERLAPPED utilisée dans chaque e/s d’origine sont toutes retournées dans le tableau lpCompletionPortEntries .
-
ulCount [ dans]
-
Nombre maximal d’entrées à supprimer.
-
ulNumEntriesRemoved [ à]
-
Pointeur vers une variable qui reçoit le nombre d’entrées réellement supprimées.
-
dwMilliseconds [ dans]
-
Nombre de millisecondes pendant lesquelles l’appelant est disposé à attendre qu’un paquet d’achèvement apparaisse sur le port de terminaison. Si un paquet de saisie semi-automatique n’apparaît pas dans le délai spécifié, la fonction expire et retourne false.
Si dwMilliseconds est infini (0xFFFFFFFF), la fonction n’expire jamais. Si dwMilliseconds est égal à zéro et qu’il n’y a pas d’opération d’e/s à défiler, la fonction expire immédiatement.
Windows XP, Windows server 2003, Windows Vista, Windows 7, Windows server 2008 et Windows server 2008 R2 : la valeur dwMilliseconds inclut le temps passé dans les états de faible consommation d’énergie. Par exemple, le délai d’expiration diminue lorsque l’ordinateur est en veille.
Windows 8, Windows Server 2012, Windows 8.1, Windows Server 2012 R2, Windows 10 et Windows Server 2016 : la valeur dwMilliseconds n’inclut pas le temps passé en faible puissance déclare. Par exemple, le délai d’attente ne continue pas à s’effectuer lorsque l’ordinateur est en veille.
-
fAlertable [ dans]
-
Si ce paramètre a la valeur false, la fonction ne retourne pas de valeur tant que le délai d’attente n’est pas écoulé ou qu’une entrée n’a pas été récupérée.
Si le paramètre a la valeur true et qu’il n’y a pas d’entrées disponibles, la fonction exécute une attente signalable. Le thread retourne lorsque le système met en file d’attente une routine d’exécution d’e/s ou un APC dans le thread et que le thread exécute la fonction.
Une routine de saisie semi-automatique est mise en file d’attente lorsque la fonction ReadFileEx ou WriteFileEx dans laquelle elle a été spécifiée est terminée, et le thread appelant est le thread qui a initié l’opération. Un APC est mis en file d’attente lorsque vous appelez QueueUserAPC.
Valeur de retour
Retourne une valeur différente de zéro (true) en cas de réussite ou zéro (false) dans le cas contraire.
Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
Cette fonction associe un thread au port de terminaison spécifié. Un thread peut être associé à au plus un port de terminaison.
Cette fonction retourne la valeur true lorsqu’au moins une e/s en attente est terminée, mais il est possible qu’une ou plusieurs opérations d’e/s aient échoué. Notez qu’il revient à l’utilisateur de cette fonction de vérifier la liste des entrées retournées dans le paramètre lpCompletionPortEntries pour déterminer celles qui correspondent à toutes les opérations d’e/s ayant échoué, en examinant l’État contenu dans le membre lpOverlapped de chaque _ entrée Overlapped.
Cette fonction retourne la valeur false lorsqu’aucune opération d’e/s n’a été déplacée dans la file d’attente. Cela signifie généralement qu’une erreur s’est produite lors du traitement des paramètres de cet appel, ou que le handle CompletionPort a été fermé ou qu’il n’est pas valide. La fonction GetLastError fournit des informations d’erreur étendues.
Si un appel à GetQueuedCompletionStatusEx échoue parce que le descripteur qui lui est associé est fermé, la fonction retourne false et GetLastError retourne une erreur d' _ attente abandonnée _ _ 0.
Les applications serveur peuvent avoir plusieurs threads appelant la fonction GetQueuedCompletionStatusEx pour le même port de terminaison. À mesure que les opérations d’e/s se terminent, elles sont mises en file d’attente sur ce port dans l’ordre First-in-First-Out. Si un thread attend activement cet appel, une ou plusieurs demandes mises en file d’attente terminent l’appel de ce thread uniquement.
Pour plus d’informations sur la théorie, l’utilisation et les fonctions associées du port de terminaison d’e/s, consultez ports de terminaison d’e/s.
dans Windows 8 et Windows Server 2012, cette fonction est prise en charge par les technologies suivantes.
| Technology | Prise en charge |
|---|---|
| Protocole SMB (Server Message Block) 3,0 |
Yes |
| Basculement transparent SMB 3,0 (TFO) |
Yes |
| SMB 3,0 avec des partages de fichiers avec montée en puissance parallèle (SO) |
Yes |
| Système de fichiers Volume partagé de cluster (CsvFS) |
Yes |
| Système de fichiers résilient (ReFS) |
Yes |
Spécifications
| Condition requise | Value |
|---|---|
| Client minimal pris en charge |
[applications UWP Windows Vista desktop apps |] |
| Serveur minimal pris en charge |
applications de bureau Windows Server 2008 pour les applications de [ bureau | UWP] |
| En-tête |
|
| Bibliothèque |
|
| DLL |
|
Voir aussi
-
Rubriques de présentation
-
Fonctions