LPFN_RIORESIZEREQUESTQUEUE fonction de rappel (mswsock.h)
La fonction RIOResizeRequestQueue redimensionne une file d’attente de requêtes pour qu’elle soit plus grande ou plus petite pour une utilisation avec les extensions d’E/S inscrites dans Winsock.
Syntaxe
LPFN_RIORESIZEREQUESTQUEUE LpfnRioresizerequestqueue;
BOOL LpfnRioresizerequestqueue(
RIO_RQ RQ,
DWORD MaxOutstandingReceive,
DWORD MaxOutstandingSend
)
{...}
Paramètres
RQ
Descripteur qui identifie un descripteur de socket d’E/S inscrit existant (file d’attente de demandes) à redimensionner.
MaxOutstandingReceive
Nombre maximal d’envois en attente autorisés sur le socket. Cette valeur peut être supérieure ou inférieure au nombre d’origine.
Ce paramètre est généralement un petit nombre pour la plupart des applications.
MaxOutstandingSend
Nombre maximal de réceptions en attente autorisées sur le socket. Cette valeur peut être supérieure ou inférieure au nombre d’origine.
Valeur retournée
Si aucune erreur ne se produit, la fonction RIOResizeRequestQueue 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 |
---|---|
Un paramètre non valide a été transmis à la fonction. Cette erreur est retournée si le paramètre RQ n’est pas valide (RIO_INVALID_RQ, par exemple). Cette erreur est également retournée si les paramètres MaxOutstandingReceive et MaxOutstandingSend sont zéro. |
|
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 de requêtes redimensionnée. |
|
Il existe trop d’opérations qui font toujours référence à la file d’attente des requêtes. Le redimensionnement de cette file d’attente de demandes pour qu’il soit plus petit n’est pas possible pour le moment. |
Remarques
La fonction RIOResizeRequestQueue redimensionne une file d’attente de requêtes pour qu’elle soit plus grande ou plus petite. Si la file d’attente de requêtes contient déjà des entrées, ces entrées sont copiées dans la nouvelle file d’attente de requêtes.
Une file d’attente de requêtes a une taille minimale requise qui dépend du nombre actuel d’entrées (nombre d’envois et de réceptions sur la file d’attente de requêtes). Si une application appelle la fonction RIOResizeRequestQueue et tente de définir la file d’attente trop petite pour le nombre d’entrées existantes, l’appel échoue et la file d’attente ne sera pas redimensionnée.
Notes
Le pointeur de fonction vers la fonction RIOResizeRequestQueue 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_RQ à l’aide de la fonction RIODequeueCompletion ou RIOResizeRequestQueue , 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 |