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 |
---|---|
|
Stellt einen verbindungslosen (Datagramm)-Dienst bereit. Wenn nicht festgelegt, unterstützt das Protokoll die verbindungsorientierte Datenübertragung. |
|
Garantiert, dass alle gesendeten Daten das beabsichtigte Ziel erreichen. |
|
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. |
|
Berücksichtigt Nachrichtengrenzen – im Gegensatz zu einem streamorientierten Protokoll, bei dem es kein Konzept von Nachrichtengrenzen gibt. |
|
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. |
|
Unterstützt zweistufiges (ordnungsgemäßes) Schließen. Wenn nicht festgelegt, werden nur abgebrochene Schließungen ausgeführt. |
|
Unterstützt beschleunigte (dringende) Daten. |
|
Unterstützt Verbindungsdaten. |
|
Unterstützt Trennen von Daten. |
|
Unterstützt einen Übertragungsmechanismus. |
|
Unterstützt einen Multipoint- oder Multicastmechanismus. Die Attribute "Steuerelement" und "Datenebene" sind unten angegeben. |
|
Gibt an, ob die Steuerungsebene gerootet (Wert = 1) oder nicht rooted (Wert = 0) ist. |
|
Gibt an, ob die Datenebene gerootet (Wert = 1) oder nicht rooted (Wert = 0) ist. |
|
Unterstützt die Qualität von Serviceanforderungen. |
|
Bit ist reserviert. |
|
Das Protokoll ist unidirektional in Senderichtung. |
|
Das Protokoll ist unidirektional in recv-Richtung. |
|
Socketdeskriptoren, die vom Anbieter zurückgegeben werden, sind IFS-Handles (Installable File System, Installable File System) des Betriebssystems. |
|
Das MSG_PARTIAL-Flag wird in WSASend und WSASendTo unterstützt. |
|
Das Protokoll bietet Unterstützung für SAN.
Dieser Wert wird unter Windows 7 und Windows Server 2008 R2 unterstützt. |
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 |
---|---|
|
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. |
|
Gibt an, dass dies der empfohlene oder am häufigsten verwendete Eintrag für ein Protokoll ist, das mehrere Verhaltensweisen implementieren kann. |
|
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. |
|
Gibt an, dass der Wert null im Protokollparameter von Socket oder WSASocket mit diesem Protokolleintrag übereinstimmt. |
|
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 |
---|---|
|
Die IPv4-Adressfamilie (Internet Protocol Version 4). |
|
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. |
|
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. |
|
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. |
|
Die IPv6-Adressfamilie (Internet Protocol Version 6). |
|
Die IrDA-Adressfamilie (Infrared Data Association).
Diese Adressfamilie wird nur unterstützt, wenn auf dem Computer ein Infrarotport und ein Treiber installiert sind. |
|
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 |
---|---|
|
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). |
|
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). |
|
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. |
|
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. |
|
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.
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 |
---|---|
|
Das Protokoll ist streamorientiert und daher ist das Konzept der Nachrichtengröße nicht relevant. |
|
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. |
|
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 |