次の方法で共有


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 つ以上のエントリの 1 つであることを示します。 その例として、受信側でメッセージ指向またはストリーム指向のプロトコルとして動作できる SPX があります。
PFL_RECOMMENDED_PROTO_ENTRY
0x00000002
これは、複数の動作を実装できるプロトコルの推奨または最も頻繁に使用されるエントリであることを示します。
PFL_HIDDEN
0x00000004
WSAEnumProtocolsによって生成された結果バッファーでこのプロトコルを返してはならないことを Ws2_32.dll に示すようにプロバイダーによって設定されます。 明らかに、Windows Sockets 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 Sockets 2 SPI を上端と下端の両方として持つ階層化プロトコルを表します。 チェーンの長さが 1 の場合、このエントリは、カタログ エントリ識別子が WSAPROTOCOL_INFO 構造体の dwCatalogEntryId メンバーにある基本プロトコルを表します。 チェーンの長さが 1 より大きい場合、このエントリは、基本プロトコルの上に 1 つ以上の階層化されたプロトコルで構成されるプロトコル チェーンを表します。 対応するカタログ エントリ識別子は ProtocolChain.ChainEntries 配列内にあり、最上位の階層化プロトコル (ProtocolChain.ChainEntries 配列の 0 要素) で始まり、ベース プロトコルで終わるものです。 プロトコル チェーンの詳細については、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 ヘッダー ファイルで定義されます。

現在サポートされている値は AF_INET または AF_INET6 です。これは、IPv4 および IPv6 のインターネット アドレス ファミリ形式です。 アドレス ファミリの 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 ソケット プロバイダーでは、 パラメーターが 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 Sockets 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 でのプラグマティック一般マルチキャスト (UWP) マルチキャスト プロトコルの実装が挙 、信頼性の高いマルチキャスト プログラミングと呼ばれます。

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

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

iProtocol

型: int

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

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

Windows Server 2003 以前のバージョンのプラットフォーム 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

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

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

必要条件

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

関連項目

WSAEnumProtocols の

WSAPROTOCOLCHAIN の

WSAPROTOCOL_INFOW

WSASend を する

WSASendTo を する

WSASocket の

WSCInstallProvider の

WSCInstallProvider64_32

WSCUpdateProvider の

WSCUpdateProvider32 の

getsockopt

ソケット