WSAPROTOCOL_INFOA structure (winsock2.h)
La structure WSAPROTOCOL_INFO est utilisée pour stocker ou récupérer des informations complètes pour un protocole donné.
Syntaxe
typedef struct _WSAPROTOCOL_INFOA {
DWORD dwServiceFlags1;
DWORD dwServiceFlags2;
DWORD dwServiceFlags3;
DWORD dwServiceFlags4;
DWORD dwProviderFlags;
GUID ProviderId;
DWORD dwCatalogEntryId;
WSAPROTOCOLCHAIN ProtocolChain;
int iVersion;
int iAddressFamily;
int iMaxSockAddr;
int iMinSockAddr;
int iSocketType;
int iProtocol;
int iProtocolMaxOffset;
int iNetworkByteOrder;
int iSecurityScheme;
DWORD dwMessageSize;
DWORD dwProviderReserved;
CHAR szProtocol[WSAPROTOCOL_LEN + 1];
} WSAPROTOCOL_INFOA, *LPWSAPROTOCOL_INFOA;
Membres
dwServiceFlags1
Type : DWORD
Masque de bits qui décrit les services fournis par le protocole. Les valeurs possibles pour ce membre sont définies dans le fichier d’en-tête Winsock2.h .
Les valeurs suivantes sont possibles.
Valeur | Signification |
---|---|
|
Fournit le service sans connexion (datagramme). S’il n’est pas défini, le protocole prend en charge le transfert de données orienté connexion. |
|
Garantit que toutes les données envoyées atteignent la destination prévue. |
|
Garantit que les données arrivent uniquement dans l’ordre dans lequel elles ont été envoyées et qu’elles ne sont pas dupliquées. Cette caractéristique ne signifie pas nécessairement que les données sont toujours remises, mais que toutes les données livrées sont remises dans l’ordre dans lequel elles ont été envoyées. |
|
Respecte les limites des messages, par opposition à un protocole orienté flux où il n’existe aucun concept de limites de message. |
|
Protocole orienté message, mais les limites de message sont ignorées pour tous les reçus. Cela est pratique lorsqu’une application ne souhaite pas que l’encadrement des messages soit effectué par le protocole. |
|
Prend en charge la fermeture en deux phases (normale). S’il n’est pas défini, seules les fermetures abandonnées sont effectuées. |
|
Prend en charge les données accélérées (urgentes). |
|
Prend en charge la connexion des données. |
|
Prend en charge la déconnexion des données. |
|
Prend en charge un mécanisme de diffusion. |
|
Prend en charge un mécanisme multipoint ou multidiffusion. Les attributs de contrôle et de plan de données sont indiqués ci-dessous. |
|
Indique si le plan de contrôle est rooté (valeur = 1) ou non rooté (valeur = 0). |
|
Indique si le plan de données est rooté (valeur = 1) ou non rooté (valeur = 0). |
|
Prend en charge les demandes de qualité de service. |
|
Le bit est réservé. |
|
Le protocole est unidirectionnel dans le sens d’envoi. |
|
Le protocole est unidirectionnel dans le sens recv. |
|
Les descripteurs de socket retournés par le fournisseur sont des handles IFS (Installable File System) du système d’exploitation. |
|
L’indicateur MSG_PARTIAL est pris en charge dans WSASend et WSASendTo. |
|
Le protocole prend en charge SAN.
Cette valeur est prise en charge sur Windows 7 et Windows Server 2008 R2. |
dwServiceFlags2
Type : DWORD
Réservé aux définitions d’attributs de protocole supplémentaires.
dwServiceFlags3
Type : DWORD
Réservé aux définitions d’attributs de protocole supplémentaires.
dwServiceFlags4
Type : DWORD
Réservé aux définitions d’attributs de protocole supplémentaires.
dwProviderFlags
Type : DWORD
Ensemble d’indicateurs qui fournit des informations sur la façon dont ce protocole est représenté dans le catalogue Winsock. Les valeurs possibles pour ce membre sont définies dans le fichier d’en-tête Winsock2.h .
Les valeurs d’indicateur suivantes sont possibles.
Valeur | Signification |
---|---|
|
Indique qu’il s’agit de l’une des deux entrées ou plus d’un protocole unique (à partir d’un fournisseur donné) capable d’implémenter plusieurs comportements. Par exemple, SPX, qui, côté réception, peut se comporter comme un protocole orienté message ou un protocole orienté flux. |
|
Indique qu’il s’agit de l’entrée recommandée ou la plus fréquemment utilisée pour un protocole capable d’implémenter plusieurs comportements. |
|
Défini par un fournisseur pour indiquer au Ws2_32.dll que ce protocole ne doit pas être retourné dans la mémoire tampon de résultats générée par WSAEnumProtocols. De toute évidence, une application Windows Sockets 2 ne doit jamais voir une entrée avec ce bit défini. |
|
Indique qu’une valeur de zéro dans le paramètre de protocole de socket ou WSASocket correspond à cette entrée de protocole. |
|
Défini par un fournisseur pour indiquer la prise en charge de l’accès direct réseau.
Cette valeur est prise en charge sur Windows 7 et Windows Server 2008 R2. |
ProviderId
Type : GUID
Identificateur global unique (GUID) attribué au fournisseur par le fournisseur de services. Cette valeur est utile pour les instances où plusieurs fournisseurs de services sont en mesure d’implémenter un protocole particulier. Une application peut utiliser le membre ProviderId pour faire la distinction entre les fournisseurs qui, autrement, ne peuvent pas être distingués.
dwCatalogEntryId
Type : DWORD
Identificateur unique attribué par le WS2_32.DLL pour chaque structure WSAPROTOCOL_INFO .
ProtocolChain
Type : WSAPROTOCOLCHAIN
Structure WSAPROTOCOLCHAIN associée au protocole. Si la longueur de la chaîne est 0, cette entrée WSAPROTOCOL_INFO représente un protocole en couches qui a Windows Sockets 2 SPI comme bords supérieurs et inférieurs. Si la longueur de la chaîne est égale à 1, cette entrée représente un protocole de base dont l’identificateur d’entrée de catalogue se trouve dans le membre dwCatalogEntryId de la structure WSAPROTOCOL_INFO . Si la longueur de la chaîne est supérieure à 1, cette entrée représente une chaîne de protocole qui se compose d’un ou plusieurs protocoles en couches au-dessus d’un protocole de base. Les identificateurs d’entrée de catalogue correspondants se trouvent dans le tableau ProtocolChain.ChainEntries en commençant par le protocole en couches en haut (l’élément zéro dans le tableau ProtocolChain.ChainEntries) et se terminant par le protocole de base. Pour plus d’informations sur les chaînes de protocole, reportez-vous à la spécification de l’interface de fournisseur de services Windows Sockets 2.
iVersion
Type : int
Identificateur de version du protocole.
iAddressFamily
Type : int
Valeur à passer comme paramètre de famille d’adresses à la fonction socket ou WSASocket afin d’ouvrir un socket pour ce protocole. Cette valeur définit également de manière unique la structure d’une adresse de protocole pour un sockaddr utilisé par le protocole.
Sur le SDK Windows publié pour Windows Vista et versions ultérieures, les valeurs possibles pour la famille d’adresses sont définies dans le fichier d’en-tête Ws2def.h. Notez que le fichier d’en-tête Ws2def.h est automatiquement inclus dans Winsock2.h et ne doit jamais être utilisé directement.
Sur les versions du Kit de développement logiciel (SDK) de plateforme pour Windows Server 2003 et versions antérieures, les valeurs possibles pour la famille d’adresses sont définies dans le fichier d’en-tête Winsock2.h .
Les valeurs actuellement prises en charge sont AF_INET ou AF_INET6, qui sont les formats de famille d’adresses Internet pour IPv4 et IPv6. D’autres options pour la famille d’adresses (AF_NETBIOS à utiliser avec NetBIOS, par exemple) sont prises en charge si un fournisseur de services Windows Sockets pour la famille d’adresses est installé. Notez que les valeurs de la famille d’adresses AF_ et des constantes de famille de protocole PF_ sont identiques (par exemple , AF_INET et PF_INET), de sorte que l’une ou l’autre constante peut être utilisée.
Le tableau ci-dessous répertorie les valeurs courantes pour la famille d’adresses, bien que de nombreuses autres valeurs soient possibles.
iAddressFamily | Signification |
---|---|
|
Famille d’adresses IPv4 (Internet Protocol version 4). |
|
Famille d’adresses IPX/SPX. Cette famille d’adresses est uniquement prise en charge si le protocole de transport compatible NWLink IPX/SPX NetBIOS est installé.
Cette famille d’adresses n’est pas prise en charge sur Windows Vista et versions ultérieures. |
|
Famille d’adresses AppleTalk. Cette famille d’adresses est prise en charge uniquement si le protocole AppleTalk est installé.
Cette famille d’adresses n’est pas prise en charge sur Windows Vista et versions ultérieures. |
|
Famille d’adresses NetBIOS. Cette famille d’adresses est prise en charge uniquement si le fournisseur Windows Sockets pour NetBIOS est installé.
Le fournisseur Windows Sockets pour NetBIOS est pris en charge sur les versions 32 bits de Windows. Ce fournisseur est installé par défaut sur les versions 32 bits de Windows. Le fournisseur Windows Sockets pour NetBIOS n’est pas pris en charge sur les versions 64 bits de Windows, notamment Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 ou Windows XP. Le fournisseur Windows Sockets pour NetBIOS prend uniquement en charge les sockets pour lesquels le paramètre type est défini sur SOCK_DGRAM. Le fournisseur Windows Sockets pour NetBIOS n’est pas directement lié à l’interface de programmation NetBIOS . L’interface de programmation NetBIOS n’est pas prise en charge sur Windows Vista, Windows Server 2008 et versions ultérieures. |
|
Famille d’adresses IPv6 (Internet Protocol version 6). |
|
L’IrDA (Infrared Data Association) adresse la famille.
Cette famille d’adresses est prise en charge uniquement si un port infrarouge et un pilote sont installés sur l’ordinateur. |
|
Famille d’adresses Bluetooth.
Cette famille d’adresses est prise en charge sur Windows XP avec SP2 ou version ultérieure si un adaptateur et un pilote Bluetooth sont installés sur l’ordinateur. |
iMaxSockAddr
Type : int
Longueur d’adresse maximale, en octets.
iMinSockAddr
Type : int
Longueur d’adresse minimale, en octets.
iSocketType
Type : int
Valeur à passer en tant que paramètre de type de socket à la fonction socket ou WSASocket afin d’ouvrir un socket pour ce protocole. Les valeurs possibles pour le type de socket sont définies dans le fichier d’en-tête Winsock2.h .
Le tableau suivant répertorie les valeurs possibles pour le membre iSocketType pris en charge pour Windows Sockets 2 :
iSocketType | Signification |
---|---|
|
Type de socket qui fournit des flux d’octets séquencés, fiables, bidirectionnel et basés sur la connexion avec un mécanisme de transmission de données OOB. Ce type de socket utilise le protocole TCP (Transmission Control Protocol) pour la famille d’adresses Internet (AF_INET ou AF_INET6). |
|
Type de socket qui prend en charge les datagrammes, qui sont des mémoires tampons sans connexion et non fiables d’une longueur maximale fixe (généralement petite). Ce type de socket utilise le protocole UDP (User Datagram Protocol) pour la famille d’adresses Internet (AF_INET ou AF_INET6). |
|
Type de socket qui fournit un socket brut qui permet à une application de manipuler l’en-tête de protocole de couche supérieure suivant. Pour manipuler l’en-tête IPv4, l’option de socket IP_HDRINCL doit être définie sur le socket. Pour manipuler l’en-tête IPv6, l’option de socket IPV6_HDRINCL doit être définie sur le socket. |
|
Type de socket qui fournit un datagramme de message fiable. Un exemple de ce type est l’implémentation du protocole de multidiffusion général pragmatique (PGM) dans Windows, souvent appelée programmation de multidiffusion fiable.
Cette valeur n’est prise en charge que si le protocole De multidiffusion fiable est installé. |
|
Type de socket qui fournit un paquet de pseudo-flux basé sur des datagrammes. |
iProtocol
Type : int
Valeur à passer en tant que paramètre de protocole à la fonction socket ou WSASocket afin d’ouvrir un socket pour ce protocole. Les options possibles pour le membre iProtocol sont spécifiques à la famille d’adresses et au type de socket spécifiés.
Sur le SDK Windows publié pour Windows Vista et versions ultérieures, ce membre peut être l’une des valeurs du type d’énumération IPPROTO défini dans le fichier d’en-tête Ws2def.h. Notez que le fichier d’en-tête Ws2def.h est automatiquement inclus dans Winsock2.h et ne doit jamais être utilisé directement.
Sur les versions du Kit de développement logiciel (SDK) de plateforme pour Windows Server 2003 et versions antérieures, les valeurs possibles pour le membre iProtocol sont définies dans les fichiers d’en-tête Winsock2.h et Wsrm.h .
Le tableau ci-dessous répertorie les valeurs courantes pour l’iProtocol , bien que de nombreuses autres valeurs soient possibles.
iProtocolMaxOffset
Type : int
Valeur maximale qui peut être ajoutée à iProtocol lors de la fourniture d’une valeur pour le paramètre de protocole à socket ou à la fonction WSASocket . Tous les protocoles n’autorisent pas une plage de valeurs. Dans ce cas, iProtocolMaxOffset est égal à zéro.
iNetworkByteOrder
Type : int
Actuellement, ces valeurs sont des constantes manifestes (BIGENDIAN et LITTLEENDIAN) qui indiquent big-endian ou little-endian avec les valeurs 0 et 1 respectivement.
iSecurityScheme
Type : int
Le type de régime de sécurité employé (le cas échéant). La valeur SECURITY_PROTOCOL_NONE (0) est utilisée pour les protocoles qui n’intègrent pas de dispositions de sécurité.
dwMessageSize
Type : DWORD
Taille maximale du message, en octets, prise en charge par le protocole. Il s’agit de la taille maximale qui peut être envoyée à partir de n’importe quelle interface locale de l’hôte. Pour les protocoles qui ne prennent pas en charge l’encadrement des messages, le maximum réel qui peut être envoyé à une adresse donnée peut être inférieur. Il n’existe pas de provisionnement standard pour déterminer la taille maximale des messages entrants. Les valeurs spéciales suivantes sont définies.
Valeur | Signification |
---|---|
|
Le protocole est orienté flux et, par conséquent, le concept de taille de message n’est pas pertinent. |
|
La taille maximale des messages sortants (d’envoi) dépend de la MTU du réseau sous-jacent (unité de transmission de taille maximale) et ne peut donc pas être connue tant qu’un socket n’est pas lié. Les applications doivent utiliser getsockopt pour récupérer la valeur de SO_MAX_MSG_SIZE une fois que le socket a été lié à une adresse locale. |
|
Le protocole est orienté vers les messages, mais il n’existe aucune limite maximale à la taille des messages qui peuvent être transmis. |
dwProviderReserved
Type : DWORD
Réservé à l’utilisation par les fournisseurs de services.
szProtocol[WSAPROTOCOL_LEN + 1]
Type : TCHAR[WSAPROTOCOL_LEN+1]
Tableau de caractères qui contient un nom lisible par l’homme identifiant le protocole, par exemple « MSAFD Tcpip [UDP/IP] ». Le nombre maximal de caractères autorisé est WSAPROTOCOL_LEN, qui est défini sur 255.
Remarques
Notes
L’en-tête winsock2.h définit WSAPROTOCOL_INFO en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
En-tête | winsock2.h |