Code de contrôle SIO_QUERY_RSS_PROCESSOR_INFO

Description

Le code de contrôle _ _ _ _ informations sur le processeur RSS de la requête SIO interroge l’association entre un socket et un cœur de processeur RSS et un nœud NUMA.

Pour effectuer cette opération, appelez la fonction WSAIoctl ou WSPIoctl avec les paramètres suivants.

int WSAIoctl(
  (socket) s,             // descriptor identifying a socket
  SIO_QUERY_RSS_PROCESSOR_INFO, // dwIoControlCode
  NULL,                         // lpvInBuffer
  0,                            // cbInBuffer
  (LPVOID) lpvOutBuffer,         // output buffer
  (DWORD) cbOutBuffer,       // size of output buffer
  (LPDWORD) lpcbBytesReturned,    // number of bytes returned
  (LPWSAOVERLAPPED) lpOverlapped,   // OVERLAPPED structure
  (LPWSAOVERLAPPED_COMPLETION_ROUTINE) lpCompletionRoutine,  // completion routine
);
int WSPIoctl(
  (socket) s,             // descriptor identifying a socket
  SIO_QUERY_RSS_PROCESSOR_INFO, // dwIoControlCode
  NULL,                         // lpvInBuffer
  0,                            // cbInBuffer
  (LPVOID) lpvOutBuffer,         // output buffer
  (DWORD) cbOutBuffer,       // size of output buffer
  (LPDWORD) lpcbBytesReturned,    // number of bytes returned
  (LPWSAOVERLAPPED) lpOverlapped,   // OVERLAPPED structure
  (LPWSAOVERLAPPED_COMPLETION_ROUTINE) lpCompletionRoutine,  // completion routine
  (LPWSATHREADID) lpThreadId,   // a WSATHREADID structure
  (LPINT) lpErrno   // a pointer to the error code.
);

Paramètres

s

Descripteur identifiant un Socket.

dwIoControlCode

Code de contrôle de l’opération. Utilisez les _ _ informations du _ processeur _ RSS de la requête SIO pour cette opération.

lpvInBuffer

Pointeur vers la mémoire tampon d’entrée. Ce paramètre n’est pas utilisé pour cette opération.

cbInBuffer

Taille, en octets, de la mémoire tampon d’entrée. Ce paramètre n’est pas utilisé pour cette opération.

lpvOutBuffer

Pointeur vers la mémoire tampon de sortie. Ce paramètre doit pointer vers une structure d' _ _ affinité de processeur de socket si les paramètres LpOverlapped et lpCompletionRoutine ont la valeur null.

cbOutBuffer

Taille, en octets, de la mémoire tampon de sortie. Ce paramètre doit avoir au moins la taille d’une structure d' _ _ affinité du processeur de sockets .

lpcbBytesReturned

Pointeur vers une variable qui reçoit la taille, en octets, des données stockées dans la mémoire tampon de sortie.

Si la mémoire tampon de sortie est trop petite, l’appel échoue, WSAGetLastError retourne WSAEINVALet le paramètre LpcbBytesReturned pointe vers une valeur DWORD égale à zéro.

Si lpOverlapped a la valeur null, la valeur DWORD vers laquelle pointe le paramètre lpcbBytesReturned retourné sur un appel réussi ne peut pas être égale à zéro.

Si le paramètre lpOverlapped n’a pas la valeur null pour les sockets superposés, les opérations qui ne peuvent pas être terminées immédiatement seront lancées et l’achèvement sera indiqué ultérieurement. La valeur DWORD pointée par le paramètre lpcbBytesReturned retourné peut être égale à zéro, car la taille des données stockées ne peut pas être déterminée tant que l’opération avec chevauchement n’est pas terminée. L’état d’achèvement final peut être récupéré lorsque la méthode d’achèvement appropriée est signalée lorsque l’opération est terminée.

lpvOverlapped

Pointeur vers une structure WSAOVERLAPPED .

Si le socket s a été créé sans l’attribut Overlapped, le paramètre lpOverlapped est ignoré.

Si s a été ouvert avec l’attribut Overlapped et que le paramètre lpOverlapped n’a pas la valeur null, l’opération est exécutée en tant qu’opération Overlapped (asynchrone). Dans ce cas, le paramètre lpOverlapped doit pointer vers une structure WSAOVERLAPPED valide.

Pour les opérations avec chevauchement, la fonction WSAIoctl ou WSPIoctl retourne immédiatement, et la méthode d’achèvement appropriée est signalée lorsque l’opération est terminée. Sinon, la fonction ne retourne pas jusqu’à ce que l’opération soit terminée ou qu’une erreur se produise.

lpCompletionRoutine

Type : _ In_opt _ LPWSAOVERLAPPED_COMPLETION_ROUTINE

Pointeur vers la routine de saisie semi-automatique appelée lorsque l’opération est terminée (ignoré pour les sockets non superposés).

lpThreadId

Pointeur vers une structure WSATHREADID qui doit être utilisée par le fournisseur dans un appel ultérieur à WPUQueueApc. Le fournisseur doit stocker la structure WSATHREADID référencée (pas le pointeur vers le même) jusqu’à ce que la fonction WPUQueueApc soit retournée.

Remarque Ce paramètre s’applique uniquement à la fonction WSPIoctl .

lpErrno

Pointeur vers le code d’erreur.

Remarque Ce paramètre s’applique uniquement à la fonction WSPIoctl .

Valeur retournée

Si l’opération se termine correctement, la fonction WSAIoctl ou WSPIoctl retourne la valeur zéro.

Si l’opération échoue ou est en attente, la fonction WSAIoctl ou WSPIoctl retourne une _ erreur de socket. Pour afficher les informations d’erreur étendues, appelez WSAGetLastError.

Code d'erreur Signification
ERREUR _ de _ mémoire tampon insuffisante La zone de données passée à un appel système est insuffisante. Cette erreur est retournée si la mémoire tampon vers laquelle pointe le paramètre lpvOutBuffer avec une taille de mémoire tampon passée dans le paramètre cbOutBuffer est trop petite. La taille de la mémoire tampon requise est retournée dans le paramètre lpcbBytesReturned . Cette erreur est retournée si le paramètre cbOutBuffer est inférieur à la taille d’une structure d' affinité du _ processeur _ de sockets .
_e/s WSA _ en attente Une opération avec chevauchement a été correctement initiée et l’achèvement sera indiqué ultérieurement.
_opération WSA _ abandonnée Une opération avec chevauchement a été annulée en raison de la fermeture du socket ou de l’exécution de la commande SIO _ flush ioctl.
WSAEFAULT Le paramètre lpvInBuffer, lpvoutBuffer, lpcbBytesReturned, lpOverlapped ou lpCompletionRoutine n’est pas entièrement contenu dans une partie valide de l’espace d’adressage de l’utilisateur.
WSAEINPROGRESS La fonction est appelée lorsqu’un rappel est en cours.
WSAEINTR Une opération de blocage a été interrompue.
WSAEINVAL Le paramètre dwIoControlCode n’est pas une commande valide, ou un paramètre d’entrée spécifié n’est pas acceptable, ou la commande n’est pas applicable au type de socket spécifié. Cette erreur est retournée si le paramètre cbOutBuffer est inférieur à la taille d’une structure d' affinité du _ processeur _ de sockets .
WSAENETDOWN Le sous-système réseau a échoué.
WSAENOPROTOOPT L’option de socket n’est pas prise en charge sur le protocole spécifié.
WSAENOTCONN Le socket n' est pas connecté.
WSAENOTSOCK Le descripteur s n’est pas un Socket.
WSAEOPNOTSUPP La commande IOCTL spécifiée n’est pas prise en charge. Cette erreur est retournée si le fournisseur de transport ne prend pas en charge l’IOCTL de l' _ _ _ _ information sur le processeur RSS de la requête SIO .

Remarques

les informations IOCTL du _ _ _ processeur _ RSS de la requête SIO sont prises en charge sur Windows 8, Windows Server 2012 et versions ultérieures du système d’exploitation.

Les informations IOCTL du _ _ _ processeur _ RSS de la requête SIO permettent de déterminer l’association entre un socket et un cœur de processeur RSS et un nœud NUMA. Cette IOCTL retourne une structure d' _ _ affinité de processeur de socket qui contient le _ numéro de processeur et l’ID de nœud NUMA. La structure retournée du _ numéro de processeur contient un numéro de groupe et un numéro de processeur relatif dans le groupe.

Si le socket est un socket UDP, le socket doit être connecté pour que l’IOCTL de l’information sur le _ _ _ processeur _ RSS de la requête SIO fonctionne correctement.

Voir aussi

PROCESSOR_NUMBER

socle

SOCKET_PROCESSOR_AFFINITY

WSAGetLastError

WSAGetOverlappedResult

WSAIoctl

WSAOVERLAPPED

WSASocketA

WSASocketW