Code de contrôle SIO_TCP_INFO
Description
Le code de contrôle d' _ _ informations TCP SIO récupère les statistiques TCP (Transmission Control Protocol) pour un socket spécifié.
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_TCP_INFO, // dwIoControlCode
(LPVOID) lpvInBuffer, // pointer to a DWORD
(DWORD) cbInBuffer, // size, in bytes, of the input buffer
(LPVOID) lpvOutBuffer, // pointer to a TCP_INFO_v0 structure
(DWORD) cbOutBuffer, // size of the 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_TCP_INFO, // dwIoControlCode
(LPVOID) lpvInBuffer, // pointer to a DWORD
(DWORD) cbInBuffer, // size, in bytes, of the input buffer
(LPVOID) lpvOutBuffer, // pointer to a TCP_INFO_v0 structure
(DWORD) cbOutBuffer, // size of the 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 qui identifie un Socket.
dwIoControlCode
Code de contrôle de l’opération. Utilisez les _ _ informations TCP SIO pour cette opération.
lpvInBuffer
Pointeur vers la mémoire tampon d’entrée. Ce paramètre contient un pointeur vers une valeur DWORD qui spécifie la version du code de contrôle d' _ _ informations TCP SIO que vous utilisez. Spécifiez 0 pour utiliser TCP_INFO_v0. Spécifiez 1 pour utiliser TCP_INFO_v1, qui fournit davantage de champs.
cbInBuffer
Taille, en octets, de la mémoire tampon d’entrée. Ce paramètre doit correspondre à la taille du type de données DWORD .
lpvOutBuffer
Pointeur vers la mémoire tampon de sortie. En cas de sortie réussie, ce paramètre contient un pointeur vers une structure TCP_INFO_v0 qui contient les statistiques TCP pour le socket spécifié.
cbOutBuffer
Taille, en octets, de la mémoire tampon de sortie. Ce paramètre doit avoir au moins la taille de la structure TCP_INFO_v0 .
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 |
|---|---|
| WSAEMSGSIZE | Le pointeur vers la mémoire tampon d’entrée a la valeur null, ou la taille spécifiée de la mémoire tampon d’entrée est incorrecte. |
| WSAEINVAL | Argument non valide fourni. Cette erreur est retournée si le paramètre dwIoControlCode n’est pas une commande valide, si un paramètre d’entrée spécifié n’est pas acceptable ou si la commande n’est pas applicable au type de socket spécifié. |
Remarques
Contrairement à la récupération des statistiques TCP avec la fonction GetPerTcpConnectionEStats , la récupération des statistiques TCP avec ce code de contrôle ne nécessite pas que le code utilisateur charge, stocke et filtre la table de connexion TCP et ne nécessite pas de privilèges élevés pour utiliser.