WSAPROTOCOL_INFOA 構造体 (winsock2.h)

WSAPROTOCOL_INFO構造体は、特定のプロトコルの完全な情報を格納または取得するために使用されます。

構文

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;

メンバー

dwServiceFlags1

型: DWORD

プロトコルによって提供されるサービスを記述するビットマスク。 このメンバーに指定できる値は、 Winsock2.h ヘッダー ファイルで定義されています。

次の値を使用できます。

意味
XP1_CONNECTIONLESS
0x00000001
コネクションレス (データグラム) サービスを提供します。 設定されていない場合、プロトコルは接続指向のデータ転送をサポートします。
XP1_GUARANTEED_DELIVERY
0x00000002
送信されるすべてのデータが目的の宛先に到達することを保証します。
XP1_GUARANTEED_ORDER
0x00000004
データが送信された順序でのみ到着し、重複しないことを保証します。 この特性は、必ずしもデータが常に配信されるのではなく、配信されたデータが送信された順序で配信されることを意味します。
XP1_MESSAGE_ORIENTED
0x00000008
メッセージ境界の概念がないストリーム指向プロトコルとは対照的に、メッセージ境界を優先します。
XP1_PSEUDO_STREAM
0x00000010
メッセージ指向プロトコルですが、メッセージ境界はすべての受信に対して無視されます。 これは、アプリケーションがプロトコルによってメッセージ フレーミングを行う必要がない場合に便利です。
XP1_GRACEFUL_CLOSE
0x00000020
2 フェーズ (正常) クローズをサポートします。 設定されていない場合は、中止終了のみが実行されます。
XP1_EXPEDITED_DATA
0x00000040
迅速 (緊急) データをサポートします。
XP1_CONNECT_DATA
0x00000080
接続データをサポートします。
XP1_DISCONNECT_DATA
0x00000100
データの切断をサポートします。
XP1_SUPPORT_BROADCAST
0x00000200
ブロードキャスト メカニズムをサポートします。
XP1_SUPPORT_MULTIPOINT
0x00000400
マルチポイントまたはマルチキャスト メカニズムをサポートします。 コントロールとデータ プレーンの属性を以下に示します。
XP1_MULTIPOINT_CONTROL_PLANE
0x00000800
コントロール プレーンがルート (値 = 1) か非ルート (値 = 0) かを示します。
XP1_MULTIPOINT_DATA_PLANE
0x00001000
データ プレーンがルート (値 = 1) か非ルート (値 = 0) かを示します。
XP1_QOS_SUPPORTED
0x00002000
サービスの品質要求をサポートします。
XP1_INTERRUPT
ビットは予約されています。
XP1_UNI_SEND
0x00008000
プロトコルは送信方向に一方向です。
XP1_UNI_RECV
0x00010000
プロトコルは recv 方向に一方向です。
XP1_IFS_HANDLES
0x00020000
プロバイダーによって返されるソケット記述子は、オペレーティング システムのインストール可能ファイル システム (IFS) ハンドルです。
XP1_PARTIAL_MESSAGE
0x00040000
MSG_PARTIAL フラグは 、WSASend および WSASendTo でサポートされています。
XP1_SAN_SUPPORT_SDP
0x00080000
このプロトコルは、SAN のサポートを提供します。

この値は、Windows 7 および Windows Server 2008 R2 でサポートされています。

 
メモ XP1_UNI_SEND値またはXP1_UNI_RECV値の 1 つだけを設定できます。 プロトコルをどちらの方向でも一方向にできる場合は、2 つの WSAPROTOCOL_INFOW 構造体を使用する必要があります。 どちらのビットも設定されていない場合、プロトコルは双方向と見なされます。
 

dwServiceFlags2

型: DWORD

追加のプロトコル属性定義用に予約されています。

dwServiceFlags3

型: DWORD

追加のプロトコル属性定義用に予約されています。

dwServiceFlags4

型: DWORD

追加のプロトコル属性定義用に予約されています。

dwProviderFlags

型: DWORD

Winsock カタログでのこのプロトコルの表現方法に関する情報を提供するフラグのセット。 このメンバーに指定できる値は、 Winsock2.h ヘッダー ファイルで定義されています。

次のフラグ値を使用できます。

意味
PFL_MULTIPLE_PROTO_ENTRIES
0x00000001
これは、複数の動作を実装できる 1 つのプロトコル (特定のプロバイダーからの) の 2 つ以上のエントリのいずれかであることを示します。 この例として、受信側でメッセージ指向またはストリーム指向プロトコルとして動作できる SPX があります。
PFL_RECOMMENDED_PROTO_ENTRY
0x00000002
これは、複数の動作を実装できるプロトコルに推奨されるエントリまたは最も頻繁に使用されるエントリであることを示します。
PFL_HIDDEN
0x00000004
WSAEnumProtocols によって生成された結果バッファーでこのプロトコルを返すべきではないことを Ws2_32.dll に示すようにプロバイダーによって設定されます。 明らかに、Windows ソケット 2 アプリケーションでは、このビットが設定されたエントリは表示されません。
PFL_MATCHES_PROTOCOL_ZERO
0x00000008
ソケットまたは WSASocketプロトコル パラメーターの値が、このプロトコル エントリと一致することを示します。
PFL_NETWORKDIRECT_PROVIDER
0x00000010
ネットワーク直接アクセスのサポートを示すようにプロバイダーによって設定されます。

この値は、Windows 7 および Windows Server 2008 R2 でサポートされています。

ProviderId

種類: GUID

サービス プロバイダー ベンダーによってプロバイダーに割り当てられたグローバル一意識別子 (GUID)。 この値は、複数のサービス プロバイダーが特定のプロトコルを実装できる場合に便利です。 アプリケーションでは、 ProviderId メンバーを使用して、区別できないプロバイダーを区別できます。

dwCatalogEntryId

型: DWORD

WSAPROTOCOL_INFO 構造体に対して WS2_32.DLL によって割り当てられる一意識別子。

ProtocolChain

種類: WSAPROTOCOLCHAIN

プロトコルに関連付けられている WSAPROTOCOLCHAIN 構造体。 チェーンの長さが 0 の場合、この WSAPROTOCOL_INFO エントリは、Windows ソケット 2 SPI を上端と下端の両方として持つ階層型プロトコルを表します。 チェーンの長さが 1 の場合、このエントリは、カタログ エントリ識別子がWSAPROTOCOL_INFO構造体の dwCatalogEntryId メンバーにある基本プロトコルを表します。 チェーンの長さが 1 より大きい場合、このエントリは、基本プロトコルの上にある 1 つ以上の階層化されたプロトコルで構成されるプロトコル チェーンを表します。 対応するカタログ エントリ識別子は ProtocolChain.ChainEntries 配列内にあり、先頭の階層化プロトコル (ProtocolChain.ChainEntries 配列のゼロ要素) から始まり、基本プロトコルで終わる。 プロトコル チェーンの詳細については、Windows ソケット 2 サービス プロバイダー インターフェイスの仕様に関するページを参照してください。

iVersion

型: int

プロトコル バージョン識別子。

iAddressFamily

型: int

このプロトコルのソケットを開くために、アドレス ファミリ パラメーターとして ソケット または WSASocket 関数に渡す値。 また、この値は、プロトコルで使用される sockaddr のプロトコル アドレスの構造を一意に定義します。

Windows Vista 以降でリリースされたWindows SDKでは、アドレス ファミリに使用できる値は Ws2def.h ヘッダー ファイルで定義されています。 Ws2def.h ヘッダー ファイルは Winsock2.h に自動的に含まれるので、直接使用しないでください。

Windows Server 2003 以前のバージョンの Platform SDK では、アドレス ファミリに使用できる値は Winsock2.h ヘッダー ファイルで定義されています。

現在サポートされている値は、IPv4 と IPv6 のインターネット アドレス ファミリ形式であるAF_INETまたはAF_INET6です。 アドレス ファミリの Windows ソケット サービス プロバイダーがインストールされている場合、アドレス ファミリのその他のオプション (NetBIOS で使用するためのAF_NETBIOSなど) がサポートされます。 AF_ アドレス ファミリ定数とPF_ プロトコル ファミリ定数の値は同一であるため ( たとえば、AF_INETPF_INET)、どちらの定数も使用できます。

次の表に、アドレス ファミリの一般的な値を示しますが、他の多くの値を使用できます。

iAddressFamily 意味
AF_INET
2
インターネット プロトコル バージョン 4 (IPv4) アドレス ファミリ。
AF_IPX
6
IPX/SPX アドレス ファミリ。 このアドレス ファミリは、NWLink IPX/SPX NetBIOS 互換トランスポート プロトコルがインストールされている場合にのみサポートされます。

このアドレス ファミリは、Windows Vista 以降ではサポートされていません。

AF_APPLETALK
16
AppleTalk アドレス ファミリ。 このアドレス ファミリは、AppleTalk プロトコルがインストールされている場合にのみサポートされます。

このアドレス ファミリは、Windows Vista 以降ではサポートされていません。

AF_NETBIOS
17
NetBIOS アドレス ファミリ。 このアドレス ファミリは、NetBIOS 用 Windows ソケット プロバイダーがインストールされている場合にのみサポートされます。

NetBIOS 用 Windows ソケット プロバイダーは、32 ビット バージョンの Windows でサポートされています。 このプロバイダーは、既定で 32 ビット バージョンの Windows にインストールされます。

NetBIOS 用 Windows ソケット プロバイダーは、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003、または Windows XP を含む 64 ビット バージョンの Windows ではサポートされていません。

NetBIOS 用 Windows ソケット プロバイダーでは、 type パラメーターが SOCK_DGRAM に設定されているソケットのみがサポートされます。

NetBIOS 用の Windows ソケット プロバイダーは、 NetBIOS プログラミング インターフェイスに直接関連していません。 NetBIOS プログラミング インターフェイスは、Windows Vista、Windows Server 2008 以降ではサポートされていません。

AF_INET6
23
インターネット プロトコル バージョン 6 (IPv6) アドレス ファミリ。
AF_IRDA
26
赤外線データ関連付け (IrDA) アドレス ファミリ。

このアドレス ファミリは、コンピューターに赤外線ポートとドライバーがインストールされている場合にのみサポートされます。

AF_BTH
32
Bluetooth アドレス ファミリ。

このアドレス ファミリは、コンピューターに Bluetooth アダプターとドライバーがインストールされている場合、SP2 以降の Windows XP でサポートされます。

iMaxSockAddr

型: int

最大アドレス長 (バイト単位)。

iMinSockAddr

型: int

最小アドレス長 (バイト単位)。

iSocketType

型: int

このプロトコルのソケットを開くためにソケットまたは WSASocket 関数にソケット型パラメーターとして渡す値。 ソケットの種類に使用できる値は、 Winsock2.h ヘッダー ファイルで定義されています。

次の表に、Windows ソケット 2 でサポートされている iSocketType メンバーに使用できる値を示します。

iSocketType 意味
Sock_stream
1
OOB データ転送メカニズムを使用して、シーケンスされた信頼性の高い双方向の接続ベースのバイト ストリームを提供するソケット型。 このソケットの種類は、インターネット アドレス ファミリ (AF_INET または AF_INET6) に伝送制御プロトコル (TCP) を使用します。
SOCK_DGRAM
2
固定 (通常は小さい) 最大長のコネクションレスで信頼性の低いバッファーである、データグラムをサポートするソケット型。 このソケットの種類では、インターネット アドレス ファミリ (AF_INET または AF_INET6) にユーザー データグラム プロトコル (UDP) が使用されます。
SOCK_RAW
3
アプリケーションが次の上位層プロトコル ヘッダーを操作できるようにする未加工のソケットを提供するソケット型。 IPv4 ヘッダーを操作するには、 ソケットで IP_HDRINCL ソケット オプションを設定する必要があります。 IPv6 ヘッダーを操作するには、 ソケットに IPV6_HDRINCL ソケット オプションを設定する必要があります。
SOCK_RDM
4
信頼性の高いメッセージ データグラムを提供するソケット型。 この種類の例として、Windows でのプラグマティック一般マルチキャスト (PGM) マルチキャスト プロトコルの実装があります。これは、 信頼性の高いマルチキャスト プログラミングと呼ばれることがよくあります。

この値は、Reliable Multicast Protocol がインストールされている場合にのみサポートされます。

SOCK_SEQPACKET
5
データグラムに基づいて擬似ストリーム パケットを提供するソケット型。

iProtocol

型: int

この プロトコルのソケット を開くために 、プロトコル パラメーターとしてソケットまたは WSASocket 関数に渡す値。 iProtocol メンバーに使用できるオプションは、指定されたアドレス ファミリとソケットの種類に固有です。

Windows Vista 以降用にリリースされたWindows SDKでは、このメンバーは、Ws2def.h ヘッダー ファイルで定義されている IPPROTO 列挙型の値のいずれかになります。 Ws2def.h ヘッダー ファイルは Winsock2.h に自動的に含まれるので、直接使用しないでください。

Windows Server 2003 以前のバージョンの Platform SDK では、 iProtocol メンバーに使用できる値は Winsock2.h ヘッダー ファイルと Wsrm.h ヘッダー ファイルで定義されています。

次の表は、他の多くの値が可能ですが、 iProtocol の一般的な値を示しています。

iProtocol 意味
IPPROTO_ICMP
1
インターネット制御メッセージ プロトコル (ICMP)。

この値は、Windows XP 以降でサポートされています。

IPPROTO_IGMP
2
インターネット グループ管理プロトコル (IGMP)。

この値は、Windows XP 以降でサポートされています。

BTHPROTO_RFCOMM
3
Bluetooth 無線周波数通信 (Bluetooth RFCOMM) プロトコル。

この値は、SP2 以降の Windows XP でサポートされています。

IPPROTO_TCP
6
伝送制御プロトコル (TCP)。
IPPROTO_UDP
17
ユーザー データグラム プロトコル (UDP)。
IPPROTO_ICMPV6
58
インターネット制御メッセージ プロトコル バージョン 6 (ICMPv6)。

この値は、Windows XP 以降でサポートされています。

IPPROTO_RM
113
信頼性の高いマルチキャスト用の PGM プロトコル。 Windows Vista 以降用にリリースされたWindows SDKでは、このプロトコルは IPPROTO_PGM とも呼ばれます。

この値は、Reliable Multicast Protocol がインストールされている場合にのみサポートされます。

iProtocolMaxOffset

型: int

ソケットまたは WSASocket 関数にプロトコル パラメーターの値を指定するときに iProtocol に追加できる最大値。 すべてのプロトコルで値の範囲が許可されるわけではありません。 この場合、 iProtocolMaxOffset は 0 です。

iNetworkByteOrder

型: int

現在、これらの値はマニフェスト定数 (BIGENDIAN と LITTLEENDIAN) であり、それぞれ値が 0 と 1 のビッグ エンディアンまたはリトル エンディアンを示します。

iSecurityScheme

型: int

使用されるセキュリティ スキームの種類 (存在する場合)。 SECURITY_PROTOCOL_NONE (0) の値は、セキュリティ プロビジョニングを組み込まないプロトコルに使用されます。

dwMessageSize

型: DWORD

プロトコルでサポートされる最大メッセージ サイズ (バイト単位)。 これは、ホストのローカル インターフェイスから送信できる最大サイズです。 メッセージ フレーミングをサポートしていないプロトコルの場合、特定のアドレスに送信できる実際の最大値が小さい場合があります。 受信メッセージの最大サイズを決定するための標準のプロビジョニングはありません。 次の特殊な値が定義されています。

意味
0
プロトコルはストリーム指向であるため、メッセージ サイズの概念は関係ありません。
0x1
最大送信 (送信) メッセージ サイズは、基になるネットワーク MTU (最大サイズの送信ユニット) に依存するため、ソケットがバインドされるまでは認識できません。 ソケットがローカル アドレスにバインドされた後、アプリケーションは getsockopt を使用してSO_MAX_MSG_SIZEの値を取得する必要があります。
0xFFFFFFFF
プロトコルはメッセージ指向ですが、送信される可能性のあるメッセージのサイズに上限はありません。

dwProviderReserved

型: DWORD

サービス プロバイダーが使用するために予約されています。

szProtocol[WSAPROTOCOL_LEN + 1]

種類: TCHAR[WSAPROTOCOL_LEN+1]

"MSAFD Tcpip [UDP/IP]" など、プロトコルを識別する人間が判読できる名前を含む文字の配列。 使用できる最大文字数はWSAPROTOCOL_LENで、255 として定義されます。

注釈

注意

winsock2.h ヘッダーは、WSAPROTOCOL_INFOをエイリアスとして定義します。このエイリアスは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
Header winsock2.h

こちらもご覧ください

WSAEnumProtocols

WSAPROTOCOLCHAIN

WSAPROTOCOL_INFOW

WSASend

WSASendTo

WSASocket

WSCInstallProvider

WSCInstallProvider64_32

WSCUpdateProvider

WSCUpdateProvider32

getsockopt

socket