Share via


WSAPROTOCOL_INFOW-Struktur (winsock2.h)

Die WSAPROTOCOL_INFOW-Struktur wird verwendet, um vollständige Informationen für ein bestimmtes Protokoll zu speichern oder abzurufen. Der Protokollname wird als Array von Unicode-Zeichen dargestellt.

Syntax

typedef struct _WSAPROTOCOL_INFOW {
  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;
  WCHAR            szProtocol[WSAPROTOCOL_LEN + 1];
} WSAPROTOCOL_INFOW, *LPWSAPROTOCOL_INFOW;

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 Werte 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
Legen Sie von einem Anbieter fest, um dem Ws2_32.dll anzugeben, dass dieses Protokoll nicht im von WSAEnumProtocols generierten Ergebnispuffer zurückgegeben werden soll. Offensichtlich sollte eine Windows Sockets 2-Anwendung niemals einen Eintrag mit diesem Bitsatz sehen.
PFL_MATCHES_PROTOCOL_ZERO
0x00000008
Gibt an, dass der Wert null im Protokollparameter von Socket oder WSASocket mit diesem Protokolleintrag übereinstimmt.
PFL_NETWORKDIRECT_PROVIDER
0x00000010
Legen Sie von einem Anbieter fest, 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

Ein global eindeutiger Bezeichner (GUID), der 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 den ProviderId-Member verwenden, um zwischen Anbietern zu unterscheiden, die andernfalls 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 mehrschichtiges 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-Member 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 Array ProtocolChain.ChainEntries, beginnend mit dem mehrschichtigen Protokoll oben (dem Nullelement im Array ProtocolChain.ChainEntries) 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 die Socket- oder 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 .

Im Windows SDK, das für Windows Vista und höher veröffentlicht wurde, werden die möglichen Werte für die Adressfamilie in der Headerdatei Ws2def.h definiert. Beachten Sie, dass die Ws2def.h-Headerdatei automatisch in Winsock2.h enthalten ist und nie 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 Adressfamilien 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 NWLink IPX/SPX NetBIOS Compatible Transport-Protokoll 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 nicht unter 64-Bit-Versionen von Windows 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 in direktem 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-Adressfamilie (Infrared Data Association).

Diese Adressfamilie wird nur unterstützt, wenn auf dem Computer ein Infrarotport und ein 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 Headerdatei Winsock2.h definiert.

In der folgenden Tabelle sind die möglichen Werte für das für Windows Sockets 2 unterstützte iSocketType-Member aufgeführt:

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 einer festen (in der Regel kleinen) maximalen 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, der es einer Anwendung ermöglicht, den nächsten Protokollheader der oberen Ebene zu bearbeiten. Zum Bearbeiten des IPv4-Headers muss die IP_HDRINCL-Socketoption für den Socket festgelegt werden. Zum Bearbeiten des IPv6-Headers muss die IPV6_HDRINCL-Socketoption 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.

Im Windows SDK, das für Windows Vista und höher veröffentlicht wurde, 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. Im Windows SDK, das für Windows Vista und höher veröffentlicht wurde, 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 dem iProtocol-Member hinzugefügt werden kann, wenn ein Wert für den Protokollparameter für Socket und WSASocket 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: WCHAR[WSAPROTOCOL_LEN+1]

Ein Array von Unicode-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

   
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

WSAPROTOCOLCHAIN

WSAPROTOCOL_INFO

WSASend

WSASendTo

WSASocket

WSCEnumProtocols

WSCEnumProtocols32

getsockopt

Socket