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
IoAPI. h (include Windows. h);
WinBase. h sur Windows server 2008 R2, Windows 7, Windows Server 2008 et Windows Vista (include Windows. h)
Bibliothèque
Kernel32.lib
DLL
Kernel32.dll

Voir aussi

Rubriques de présentation

Fonctions de gestion de fichiers

Ports de terminaison d’e/s

utilisation des en-têtes de Windows

Fonctions

ConnectNamedPipe

CreateIoCompletionPort

DeviceIoControl

GetQueuedCompletionStatusEx

LockFileEx

ReadFile

PostQueuedCompletionStatus

TransactNamedPipe

WaitCommEvent

WriteFile