WSAPROTOCOL_INFOA-Struktur (winsock2.h)

Die WSAPROTOCOL_INFO-Struktur wird verwendet, um vollständige Informationen für ein bestimmtes Protokoll zu speichern oder abzurufen.

Syntax

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;

Member

dwServiceFlags1

Art: DWORD

Eine Bitmaske, die die vom Protokoll bereitgestellten Dienste beschreibt. Die möglichen Werte für diesen Member werden in der Winsock2.h-Headerdatei definiert.

Die folgenden Werte sind möglich.

Wert Bedeutung
XP1_CONNECTIONLESS
0x00000001
Stellt einen verbindungslosen (Datagramm)-Dienst bereit. Wenn nicht festgelegt, unterstützt das Protokoll die verbindungsorientierte Datenübertragung.
XP1_GUARANTEED_DELIVERY
0x00000002
Garantiert, dass alle gesendeten Daten das beabsichtigte Ziel erreichen.
XP1_GUARANTEED_ORDER
0x00000004
Garantiert, dass Daten nur in der Reihenfolge eintreffen, in der sie gesendet wurden, und dass sie nicht dupliziert werden. Dieses Merkmal bedeutet nicht unbedingt, dass die Daten immer übermittelt werden, sondern dass alle gelieferten Daten in der Reihenfolge geliefert werden, in der sie gesendet wurden.
XP1_MESSAGE_ORIENTED
0x00000008
Berücksichtigt Nachrichtengrenzen – im Gegensatz zu einem streamorientierten Protokoll, bei dem es kein Konzept von Nachrichtengrenzen gibt.
XP1_PSEUDO_STREAM
0x00000010
Ein nachrichtenorientiertes Protokoll, aber Nachrichtengrenzen werden für alle Belege ignoriert. Dies ist praktisch, wenn eine Anwendung keine Nachrichtenrahmenerstellung durch das Protokoll durchführen möchte.
XP1_GRACEFUL_CLOSE
0x00000020
Unterstützt zweistufiges (ordnungsgemäßes) Schließen. Wenn nicht festgelegt, werden nur abgebrochene Schließungen ausgeführt.
XP1_EXPEDITED_DATA
0x00000040
Unterstützt beschleunigte (dringende) Daten.
XP1_CONNECT_DATA
0x00000080
Unterstützt Verbindungsdaten.
XP1_DISCONNECT_DATA
0x00000100
Unterstützt Trennen von Daten.
XP1_SUPPORT_BROADCAST
0x00000200
Unterstützt einen Übertragungsmechanismus.
XP1_SUPPORT_MULTIPOINT
0x00000400
Unterstützt einen Multipoint- oder Multicastmechanismus. Die Attribute "Steuerelement" und "Datenebene" sind unten angegeben.
XP1_MULTIPOINT_CONTROL_PLANE
0x00000800
Gibt an, ob die Steuerungsebene gerootet (Wert = 1) oder nicht rooted (Wert = 0) ist.
XP1_MULTIPOINT_DATA_PLANE
0x00001000
Gibt an, ob die Datenebene gerootet (Wert = 1) oder nicht rooted (Wert = 0) ist.
XP1_QOS_SUPPORTED
0x00002000
Unterstützt die Qualität von Serviceanforderungen.
XP1_INTERRUPT
Bit ist reserviert.
XP1_UNI_SEND
0x00008000
Das Protokoll ist unidirektional in Senderichtung.
XP1_UNI_RECV
0x00010000
Das Protokoll ist unidirektional in recv-Richtung.
XP1_IFS_HANDLES
0x00020000
Socketdeskriptoren, die vom Anbieter zurückgegeben werden, sind IFS-Handles (Installable File System, Installable File System) des Betriebssystems.
XP1_PARTIAL_MESSAGE
0x00040000
Das MSG_PARTIAL-Flag wird in WSASend und WSASendTo unterstützt.
XP1_SAN_SUPPORT_SDP
0x00080000
Das Protokoll bietet Unterstützung für SAN.

Dieser Wert wird unter Windows 7 und Windows Server 2008 R2 unterstützt.

 
Hinweis Es kann nur einer der XP1_UNI_SEND- oder XP1_UNI_RECV-Werte festgelegt werden. Wenn ein Protokoll in beide Richtungen unidirektional sein kann, sollten zwei WSAPROTOCOL_INFOW Strukturen verwendet werden. Wenn kein Bit festgelegt ist, wird das Protokoll als bidirektional betrachtet.
 

dwServiceFlags2

Art: DWORD

Reserviert für zusätzliche Protokollattributedefinitionen.

dwServiceFlags3

Art: DWORD

Reserviert für zusätzliche Protokollattributedefinitionen.

dwServiceFlags4

Art: DWORD

Reserviert für zusätzliche Protokollattributedefinitionen.

dwProviderFlags

Art: DWORD

Eine Reihe von Flags, die Informationen darüber bereitstellen, wie dieses Protokoll im Winsock-Katalog dargestellt wird. Die möglichen Werte für diesen Member werden in der Winsock2.h-Headerdatei definiert.

Die folgenden Flagwerte sind möglich.

Wert Bedeutung
PFL_MULTIPLE_PROTO_ENTRIES
0x00000001
Gibt an, dass dies einer von zwei oder mehr Einträgen für ein einzelnes Protokoll (von einem bestimmten Anbieter) ist, das mehrere Verhaltensweisen implementieren kann. Ein Beispiel hierfür ist SPX, das sich auf der Empfangsseite entweder als nachrichtenorientiertes oder streamorientiertes Protokoll verhalten kann.
PFL_RECOMMENDED_PROTO_ENTRY
0x00000002
Gibt an, dass dies der empfohlene oder am häufigsten verwendete Eintrag für ein Protokoll ist, das mehrere Verhaltensweisen implementieren kann.
PFL_HIDDEN
0x00000004
Wird von einem Anbieter festgelegt, um dem Ws2_32.dll anzugeben, dass dieses Protokoll nicht im von WSAEnumProtocols generierten Ergebnispuffer zurückgegeben werden soll. Offensichtlich sollte einer Windows Sockets 2-Anwendung niemals ein Eintrag mit diesem Bitsatz angezeigt werden.
PFL_MATCHES_PROTOCOL_ZERO
0x00000008
Gibt an, dass der Wert 0 (null) im Protokollparameter von Socket oder WSASocket mit diesem Protokolleintrag übereinstimmt.
PFL_NETWORKDIRECT_PROVIDER
0x00000010
Wird von einem Anbieter festgelegt, um die Unterstützung für den direkten Netzwerkzugriff anzugeben.

Dieser Wert wird unter Windows 7 und Windows Server 2008 R2 unterstützt.

ProviderId

Typ: GUID

Eine GUID (Globally Unique Identifier), die dem Anbieter vom Anbieter des Dienstanbieters zugewiesen ist. Dieser Wert ist nützlich für Instanzen, in denen mehrere Dienstanbieter ein bestimmtes Protokoll implementieren können. Eine Anwendung kann das ProviderId-Element verwenden, um zwischen Anbietern zu unterscheiden, die andernfalls möglicherweise nicht unterschieden werden können.

dwCatalogEntryId

Art: DWORD

Ein eindeutiger Bezeichner, der vom WS2_32.DLL für jede WSAPROTOCOL_INFO-Struktur zugewiesen wird.

ProtocolChain

Typ: WSAPROTOCOLCHAIN

Die dem Protokoll zugeordnete WSAPROTOCOLCHAIN-Struktur . Wenn die Länge der Kette 0 ist, stellt dieser WSAPROTOCOL_INFO Eintrag ein mehrstufiges Protokoll dar, das windows Sockets 2 SPI als oberen und unteren Rand aufweist. Wenn die Länge der Kette gleich 1 ist, stellt dieser Eintrag ein Basisprotokoll dar, dessen Katalogeintragsbezeichner sich im dwCatalogEntryId-Element der WSAPROTOCOL_INFO-Struktur befindet. Wenn die Länge der Kette größer als 1 ist, stellt dieser Eintrag eine Protokollkette dar, die aus einem oder mehreren mehrstufigen Protokollen auf einem Basisprotokoll besteht. Die entsprechenden Katalogeintragsbezeichner befinden sich im ProtocolChain.ChainEntries-Array, beginnend mit dem mehrstufigen Protokoll oben (dem Nullelement im ProtocolChain.ChainEntries-Array) und enden mit dem Basisprotokoll. Weitere Informationen zu Protokollketten finden Sie in der Spezifikation der Windows Sockets 2-Dienstanbieterschnittstelle.

iVersion

Typ: int

Der Protokollversionsbezeichner.

iAddressFamily

Typ: int

Ein Wert, der als Adressfamilienparameter an den Socket oder die WSASocket-Funktion übergeben werden soll, um einen Socket für dieses Protokoll zu öffnen. Dieser Wert definiert auch eindeutig die Struktur einer Protokolladresse für einen vom Protokoll verwendeten Sockaddr .

Auf der für Windows Vista und höher veröffentlichten Windows SDK werden die möglichen Werte für die Adressfamilie in der Ws2def.h-Headerdatei definiert. Beachten Sie, dass die Ws2def.h-Headerdatei automatisch in Winsock2.h enthalten ist und niemals direkt verwendet werden sollte.

In Versionen des Platform SDK für Windows Server 2003 und älter werden die möglichen Werte für die Adressfamilie in der Winsock2.h-Headerdatei definiert.

Die derzeit unterstützten Werte sind AF_INET oder AF_INET6, d. h. die Internetadressenfamilienformate für IPv4 und IPv6. Andere Optionen für adressfamilien (z. B. AF_NETBIOS für die Verwendung mit NetBIOS) werden unterstützt, wenn ein Windows Sockets-Dienstanbieter für die Adressfamilie installiert ist. Beachten Sie, dass die Werte für die AF_ Adressfamilie und PF_ Protokollfamilienkonstanten identisch sind (z. B. AF_INET und PF_INET), sodass beide Konstanten verwendet werden können.

In der folgenden Tabelle sind allgemeine Werte für die Adressfamilie aufgeführt, obwohl viele andere Werte möglich sind.

iAddressFamily Bedeutung
AF_INET
2
Die IPv4-Adressfamilie (Internet Protocol Version 4).
AF_IPX
6
Die IPX/SPX-Adressfamilie. Diese Adressfamilie wird nur unterstützt, wenn das NetBIOS Compatible Transport-Protokoll NWLink IPX/SPX installiert ist.

Diese Adressfamilie wird unter Windows Vista und höher nicht unterstützt.

AF_APPLETALK
16
Die AppleTalk-Adressfamilie. Diese Adressfamilie wird nur unterstützt, wenn das AppleTalk-Protokoll installiert ist.

Diese Adressfamilie wird unter Windows Vista und höher nicht unterstützt.

AF_NETBIOS
17
Die NetBIOS-Adressfamilie. Diese Adressfamilie wird nur unterstützt, wenn der Windows Sockets-Anbieter für NetBIOS installiert ist.

Der Windows Sockets-Anbieter für NetBIOS wird unter 32-Bit-Versionen von Windows unterstützt. Dieser Anbieter wird standardmäßig unter 32-Bit-Versionen von Windows installiert.

Der Windows Sockets-Anbieter für NetBIOS wird in 64-Bit-Versionen von Windows nicht unterstützt, einschließlich Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 oder Windows XP.

Der Windows Sockets-Anbieter für NetBIOS unterstützt nur Sockets, bei denen der Typparameter auf SOCK_DGRAM festgelegt ist.

Der Windows Sockets-Anbieter für NetBIOS steht nicht direkt im Zusammenhang mit der NetBIOS-Programmierschnittstelle . Die NetBIOS-Programmierschnittstelle wird unter Windows Vista, Windows Server 2008 und höher nicht unterstützt.

AF_INET6
23
Die IPv6-Adressfamilie (Internet Protocol Version 6).
AF_IRDA
26
Die IrDA (Infrared Data Association) adressiert familie.

Diese Adressfamilie wird nur unterstützt, wenn auf dem Computer ein Infrarotport und treiber installiert sind.

AF_BTH
32
Die Bluetooth-Adressfamilie.

Diese Adressfamilie wird unter Windows XP mit SP2 oder höher unterstützt, wenn auf dem Computer ein Bluetooth-Adapter und -Treiber installiert sind.

iMaxSockAddr

Typ: int

Die maximale Adresslänge in Bytes.

iMinSockAddr

Typ: int

Die minimale Adresslänge in Bytes.

iSocketType

Typ: int

Ein Wert, der als Sockettypparameter an die Socket- oder WSASocket-Funktion übergeben werden soll, um einen Socket für dieses Protokoll zu öffnen. Mögliche Werte für den Sockettyp sind in der Winsock2.h-Headerdatei definiert.

In der folgenden Tabelle sind die möglichen Werte für das iSocketType-Element aufgeführt, das für Windows Sockets 2 unterstützt wird:

iSocketType Bedeutung
SOCK_STREAM
1
Ein Sockettyp, der sequenzierte, zuverlässige, bidirektionale, verbindungsbasierte Bytedatenströme mit einem OOB-Datenübertragungsmechanismus bereitstellt. Dieser Sockettyp verwendet tcp (Transmission Control Protocol) für die Internetadressenfamilie (AF_INET oder AF_INET6).
SOCK_DGRAM
2
Ein Sockettyp, der Datagramme unterstützt, bei denen es sich um verbindungslose, unzuverlässige Puffer mit fester (in der Regel kleiner) maximaler Länge handelt. Dieser Sockettyp verwendet das User Datagram Protocol (UDP) für die Internetadressenfamilie (AF_INET oder AF_INET6).
SOCK_RAW
3
Ein Sockettyp, der einen unformatierten Socket bereitstellt, mit dem eine Anwendung den nächsten Protokollheader der oberen Ebene bearbeiten kann. Um den IPv4-Header zu bearbeiten, muss die Option IP_HDRINCL Socket für den Socket festgelegt werden. Um den IPv6-Header zu bearbeiten, muss die Option IPV6_HDRINCL Socket für den Socket festgelegt werden.
SOCK_RDM
4
Ein Sockettyp, der ein zuverlässiges Nachrichtendatengramm bereitstellt. Ein Beispiel für diesen Typ ist die PGM-Multicastprotokollimplementierung (Pragmatic General Multicast) in Windows, die häufig als zuverlässige Multicastprogrammierung bezeichnet wird.

Dieser Wert wird nur unterstützt, wenn das Reliable Multicast Protocol installiert ist.

SOCK_SEQPACKET
5
Ein Sockettyp, der ein Pseudostreampaket basierend auf Datagrammen bereitstellt.

iProtocol

Typ: int

Ein Wert, der als Protokollparameter an den Socket oder die WSASocket-Funktion übergeben werden soll, um einen Socket für dieses Protokoll zu öffnen. Die möglichen Optionen für das iProtocol-Element sind spezifisch für die angegebene Adressfamilie und den angegebenen Sockettyp.

Auf der für Windows Vista und höher veröffentlichten Windows SDK kann dieser Member einer der Werte des IPPROTO-Enumerationstyps sein, der in der Ws2def.h-Headerdatei definiert ist. Beachten Sie, dass die Ws2def.h-Headerdatei automatisch in Winsock2.h enthalten ist und niemals direkt verwendet werden sollte.

In Versionen des Platform SDK für Windows Server 2003 und früher werden die möglichen Werte für das iProtocol-Element in den Headerdateien Winsock2.h und Wsrm.h definiert.

In der folgenden Tabelle sind allgemeine Werte für das iProtocol aufgeführt, obwohl viele andere Werte möglich sind.

iProtocol Bedeutung
IPPROTO_ICMP
1
Das Internet Control Message Protocol (ICMP).

Dieser Wert wird unter Windows XP und höher unterstützt.

IPPROTO_IGMP
2
Das Internet Group Management Protocol (IGMP).

Dieser Wert wird unter Windows XP und höher unterstützt.

BTHPROTO_RFCOMM
3
Das Bluetooth-Protokoll für Funkfrequenzkommunikation (Bluetooth RFCOMM).

Dieser Wert wird unter Windows XP mit SP2 oder höher unterstützt.

IPPROTO_TCP
6
Das Tcp-Protokoll (Transmission Control Protocol).
IPPROTO_UDP
17
Das User Datagram Protocol (UDP).
IPPROTO_ICMPV6
58
Internet Control Message Protocol Version 6 (ICMPv6).

Dieser Wert wird unter Windows XP und höher unterstützt.

IPPROTO_RM
113
Das PGM-Protokoll für zuverlässiges Multicast. Auf der für Windows Vista und höher veröffentlichten Windows SDK wird dieses Protokoll auch als IPPROTO_PGM bezeichnet.

Dieser Wert wird nur unterstützt, wenn das Reliable Multicast Protocol installiert ist.

iProtocolMaxOffset

Typ: int

Der maximale Wert, der iProtocol hinzugefügt werden kann, wenn ein Wert für den Protokollparameter für den Socket oder die WSASocket-Funktion bereitgestellt wird. Nicht alle Protokolle lassen einen Bereich von Werten zu. Wenn dies der Fall ist , ist iProtocolMaxOffset null.

iNetworkByteOrder

Typ: int

Derzeit sind diese Werte Manifestkonstanten (BIGENDIAN und LITTLEENDIAN), die entweder big-endian oder little-endian mit den Werten 0 bzw. 1 angeben.

iSecurityScheme

Typ: int

Der Typ des verwendeten Sicherheitssystems (sofern vorhanden). Der Wert SECURITY_PROTOCOL_NONE (0) wird für Protokolle verwendet, die keine Sicherheitsbestimmungen enthalten.

dwMessageSize

Art: DWORD

Die maximale Nachrichtengröße in Bytes, die vom Protokoll unterstützt wird. Dies ist die maximale Größe, die von einer der lokalen Schnittstellen des Hosts gesendet werden kann. Bei Protokollen, die keine Nachrichtenrahmen unterstützen, kann das tatsächliche Maximum, das an eine bestimmte Adresse gesendet werden kann, niedriger sein. Es gibt keine Standardbereitstellung, um die maximale Größe eingehender Nachrichten zu bestimmen. Die folgenden speziellen Werte werden definiert.

Wert Bedeutung
0
Das Protokoll ist streamorientiert und daher ist das Konzept der Nachrichtengröße nicht relevant.
0x1
Die maximale Größe ausgehender Nachrichten (Sendenachrichten) hängt von der zugrunde liegenden Netzwerk-MTU (maximale Übertragungseinheit) ab und kann daher erst bekannt werden, nachdem ein Socket gebunden wurde. Anwendungen sollten getsockopt verwenden, um den Wert von SO_MAX_MSG_SIZE abzurufen, nachdem der Socket an eine lokale Adresse gebunden wurde.
0xFFFFFFFF
Das Protokoll ist nachrichtenorientiert, aber es gibt keine maximale Beschränkung für die Größe von Nachrichten, die übertragen werden können.

dwProviderReserved

Art: DWORD

Reserviert für die Verwendung durch Dienstanbieter.

szProtocol[WSAPROTOCOL_LEN + 1]

Typ: TCHAR[WSAPROTOCOL_LEN+1]

Ein Array von Zeichen, das einen lesbaren Namen enthält, der das Protokoll identifiziert, z. B. "MSAFD Tcpip [UDP/IP]". Die maximal zulässige Anzahl von Zeichen ist WSAPROTOCOL_LEN, die auf 255 definiert ist.

Hinweise

Hinweis

Der winsock2.h-Header definiert WSAPROTOCOL_INFO als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Kopfzeile winsock2.h

Weitere Informationen

WSAEnumProtocols

WSAPROTOCOLCHAIN

WSAPROTOCOL_INFOW

WSASend

WSASendTo

WSASocket

WSCInstallProvider

WSCInstallProvider64_32

WSCUpdateProvider

WSCUpdateProvider32

getsockopt

Socket