Partager via


LPFN_RIORESIZECOMPLETIONQUEUE fonction de rappel (mswsock.h)

La fonction RIOResizeCompletionQueue redimensionne une file d’attente d’achèvement d’E/S pour qu’elle soit plus grande ou plus petite pour une utilisation avec les extensions d’E/S inscrites winsock.

Syntaxe

LPFN_RIORESIZECOMPLETIONQUEUE LpfnRioresizecompletionqueue;

BOOL LpfnRioresizecompletionqueue(
  RIO_CQ CQ,
  DWORD QueueSize
)
{...}

Paramètres

CQ

Descripteur qui identifie une file d’attente d’achèvement d’E/S existante à redimensionner.

QueueSize

Valeur retournée

Si aucune erreur ne se produit, la fonction RIOResizeCompletionQueue retourne TRUE. Sinon, une valeur FALSE est retournée et un code d’erreur spécifique peut être récupéré en appelant la fonction WSAGetLastError .

Code de retour Description
WSAEFAULT
Le système a détecté une adresse de pointeur non valide lors de la tentative d’utilisation d’un argument pointeur dans un appel. Cette erreur est retournée si la file d’attente d’achèvement spécifiée dans le paramètre CQ contient un pointeur non valide.
WSAEINVAL
Un paramètre non valide a été transmis à la fonction. Cette erreur est retournée si le paramètre CQ n’est pas valide (RIO_INVALID_CQ, par exemple). Cette erreur est également retournée si la taille de la file d’attente spécifiée dans le paramètre QueueSize est supérieure à RIO_CQ_MAX_SIZE.
WSAENOBUFS
Une mémoire suffisante n’a pas pu être allouée. Cette erreur est retournée si la mémoire n’a pas pu être allouée pour la file d’attente spécifiée dans le paramètre QueueSize .
WSAETOOMANYREFS
Il existe trop d’opérations qui font toujours référence à la file d’attente d’achèvement des E/S. Le redimensionnement de cette file d’attente d’achèvement d’E/S pour qu’il soit plus petit n’est pas possible pour l’instant.

La fonction RIOResizeCompletionQueue redimensionne une file d’attente d’achèvement d’E/S pour qu’elle soit plus grande ou plus petite. Si la file d’attente d’achèvement des E/S contient déjà des achèvements, ces achèvements sont copiés dans la nouvelle file d’attente d’achèvement.

Les files d’attente d’achèvement des E/S ont une taille minimale requise qui dépend du nombre de files d’attente de demandes associées à la file d’attente d’achèvement et du nombre d’envois et de réceptions sur les files d’attente de requêtes. Si une application appelle la fonction RIOResizeCompletionQueue et tente de définir la file d’attente trop petite pour le nombre d’achèvements existants dans la file d’attente d’achèvement d’E/S, l’appel échoue et la file d’attente ne sera pas redimensionnée.

Notes

Le pointeur de fonction vers la fonction RIOResizeCompletionQueue doit être obtenu au moment de l’exécution en appelant la fonction WSAIoctl avec le SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER opcode spécifié. La mémoire tampon d’entrée passée à la fonction WSAIoctl doit contenir WSAID_MULTIPLE_RIO, un identificateur global unique (GUID) dont la valeur identifie les fonctions d’extension d’E/S inscrites dans Winsock. En cas de réussite, la sortie retournée par la fonction WSAIoctl contient un pointeur vers la structure RIO_EXTENSION_FUNCTION_TABLE qui contient des pointeurs vers les fonctions d’extension d’E/S inscrites dans Winsock. Le SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER IOCTL est défini dans le fichier d’en-tête Ws2def.h . Le GUID WSAID_MULTIPLE_RIO est défini dans le fichier d’en-tête Mswsock.h .

 

Windows Phone 8 : cette fonction est prise en charge pour les applications du Store Windows Phone Windows Phone 8 et versions ultérieures.

Windows 8.1 et Windows Server 2012 R2 : cette fonction est prise en charge pour les applications du Windows Store sur Windows 8.1, Windows Server 2012 R2 et versions ultérieures.

Cohérence de thread

Si plusieurs threads tentent d’accéder au même RIO_CQ à l’aide de la fonction RIODequeueCompletion ou RIOResizeCompletionQueue, l’accès doit être coordonné par une section critique, un verrou d’enregistreur de lecture mince ou un mécanisme d’exclusion mutuelle similaire. Si les files d’attente d’achèvement ne sont pas partagées, l’exclusion mutuelle n’est pas requise.

Configuration requise

Condition requise Valeur
En-tête mswsock.h