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 ヘッダー ファイルで定義されています。
次の値を使用できます。
値 | 意味 |
---|---|
|
コネクションレス (データグラム) サービスを提供します。 設定されていない場合、プロトコルは接続指向のデータ転送をサポートします。 |
|
送信されるすべてのデータが目的の宛先に到達することを保証します。 |
|
データが送信された順序でのみ到着し、重複しないことを保証します。 この特性は、必ずしもデータが常に配信されるのではなく、配信されたデータが送信された順序で配信されることを意味します。 |
|
メッセージ境界の概念がないストリーム指向プロトコルとは対照的に、メッセージ境界を優先します。 |
|
メッセージ指向プロトコルですが、メッセージ境界はすべての受信に対して無視されます。 これは、アプリケーションがプロトコルによってメッセージ フレーミングを行う必要がない場合に便利です。 |
|
2 フェーズ (正常) クローズをサポートします。 設定されていない場合は、中止終了のみが実行されます。 |
|
迅速 (緊急) データをサポートします。 |
|
接続データをサポートします。 |
|
データの切断をサポートします。 |
|
ブロードキャスト メカニズムをサポートします。 |
|
マルチポイントまたはマルチキャスト メカニズムをサポートします。 コントロールとデータ プレーンの属性を以下に示します。 |
|
コントロール プレーンがルート (値 = 1) か非ルート (値 = 0) かを示します。 |
|
データ プレーンがルート (値 = 1) か非ルート (値 = 0) かを示します。 |
|
サービスの品質要求をサポートします。 |
|
ビットは予約されています。 |
|
プロトコルは送信方向に一方向です。 |
|
プロトコルは recv 方向に一方向です。 |
|
プロバイダーによって返されるソケット記述子は、オペレーティング システムのインストール可能ファイル システム (IFS) ハンドルです。 |
|
MSG_PARTIAL フラグは 、WSASend および WSASendTo でサポートされています。 |
|
このプロトコルは、SAN のサポートを提供します。
この値は、Windows 7 および Windows Server 2008 R2 でサポートされています。 |
dwServiceFlags2
型: DWORD
追加のプロトコル属性定義用に予約されています。
dwServiceFlags3
型: DWORD
追加のプロトコル属性定義用に予約されています。
dwServiceFlags4
型: DWORD
追加のプロトコル属性定義用に予約されています。
dwProviderFlags
型: DWORD
Winsock カタログでのこのプロトコルの表現方法に関する情報を提供するフラグのセット。 このメンバーに指定できる値は、 Winsock2.h ヘッダー ファイルで定義されています。
次のフラグ値を使用できます。
値 | 意味 |
---|---|
|
これは、複数の動作を実装できる 1 つのプロトコル (特定のプロバイダーからの) の 2 つ以上のエントリのいずれかであることを示します。 この例として、受信側でメッセージ指向またはストリーム指向プロトコルとして動作できる SPX があります。 |
|
これは、複数の動作を実装できるプロトコルに推奨されるエントリまたは最も頻繁に使用されるエントリであることを示します。 |
|
WSAEnumProtocols によって生成された結果バッファーでこのプロトコルを返すべきではないことを Ws2_32.dll に示すようにプロバイダーによって設定されます。 明らかに、Windows ソケット 2 アプリケーションでは、このビットが設定されたエントリは表示されません。 |
|
ソケットまたは WSASocket のプロトコル パラメーターの値が、このプロトコル エントリと一致することを示します。 |
|
ネットワーク直接アクセスのサポートを示すようにプロバイダーによって設定されます。
この値は、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_INET と PF_INET)、どちらの定数も使用できます。
次の表に、アドレス ファミリの一般的な値を示しますが、他の多くの値を使用できます。
iAddressFamily | 意味 |
---|---|
|
インターネット プロトコル バージョン 4 (IPv4) アドレス ファミリ。 |
|
IPX/SPX アドレス ファミリ。 このアドレス ファミリは、NWLink IPX/SPX NetBIOS 互換トランスポート プロトコルがインストールされている場合にのみサポートされます。
このアドレス ファミリは、Windows Vista 以降ではサポートされていません。 |
|
AppleTalk アドレス ファミリ。 このアドレス ファミリは、AppleTalk プロトコルがインストールされている場合にのみサポートされます。
このアドレス ファミリは、Windows Vista 以降ではサポートされていません。 |
|
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 以降ではサポートされていません。 |
|
インターネット プロトコル バージョン 6 (IPv6) アドレス ファミリ。 |
|
赤外線データ関連付け (IrDA) アドレス ファミリ。
このアドレス ファミリは、コンピューターに赤外線ポートとドライバーがインストールされている場合にのみサポートされます。 |
|
Bluetooth アドレス ファミリ。
このアドレス ファミリは、コンピューターに Bluetooth アダプターとドライバーがインストールされている場合、SP2 以降の Windows XP でサポートされます。 |
iMaxSockAddr
型: int
最大アドレス長 (バイト単位)。
iMinSockAddr
型: int
最小アドレス長 (バイト単位)。
iSocketType
型: int
このプロトコルのソケットを開くためにソケットまたは WSASocket 関数にソケット型パラメーターとして渡す値。 ソケットの種類に使用できる値は、 Winsock2.h ヘッダー ファイルで定義されています。
次の表に、Windows ソケット 2 でサポートされている iSocketType メンバーに使用できる値を示します。
iSocketType | 意味 |
---|---|
|
OOB データ転送メカニズムを使用して、シーケンスされた信頼性の高い双方向の接続ベースのバイト ストリームを提供するソケット型。 このソケットの種類は、インターネット アドレス ファミリ (AF_INET または AF_INET6) に伝送制御プロトコル (TCP) を使用します。 |
|
固定 (通常は小さい) 最大長のコネクションレスで信頼性の低いバッファーである、データグラムをサポートするソケット型。 このソケットの種類では、インターネット アドレス ファミリ (AF_INET または AF_INET6) にユーザー データグラム プロトコル (UDP) が使用されます。 |
|
アプリケーションが次の上位層プロトコル ヘッダーを操作できるようにする未加工のソケットを提供するソケット型。 IPv4 ヘッダーを操作するには、 ソケットで IP_HDRINCL ソケット オプションを設定する必要があります。 IPv6 ヘッダーを操作するには、 ソケットに IPV6_HDRINCL ソケット オプションを設定する必要があります。 |
|
信頼性の高いメッセージ データグラムを提供するソケット型。 この種類の例として、Windows でのプラグマティック一般マルチキャスト (PGM) マルチキャスト プロトコルの実装があります。これは、 信頼性の高いマルチキャスト プログラミングと呼ばれることがよくあります。
この値は、Reliable Multicast Protocol がインストールされている場合にのみサポートされます。 |
|
データグラムに基づいて擬似ストリーム パケットを提供するソケット型。 |
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 の一般的な値を示しています。
iProtocolMaxOffset
型: int
ソケットまたは WSASocket 関数にプロトコル パラメーターの値を指定するときに iProtocol に追加できる最大値。 すべてのプロトコルで値の範囲が許可されるわけではありません。 この場合、 iProtocolMaxOffset は 0 です。
iNetworkByteOrder
型: int
現在、これらの値はマニフェスト定数 (BIGENDIAN と LITTLEENDIAN) であり、それぞれ値が 0 と 1 のビッグ エンディアンまたはリトル エンディアンを示します。
iSecurityScheme
型: int
使用されるセキュリティ スキームの種類 (存在する場合)。 SECURITY_PROTOCOL_NONE (0) の値は、セキュリティ プロビジョニングを組み込まないプロトコルに使用されます。
dwMessageSize
型: DWORD
プロトコルでサポートされる最大メッセージ サイズ (バイト単位)。 これは、ホストのローカル インターフェイスから送信できる最大サイズです。 メッセージ フレーミングをサポートしていないプロトコルの場合、特定のアドレスに送信できる実際の最大値が小さい場合があります。 受信メッセージの最大サイズを決定するための標準のプロビジョニングはありません。 次の特殊な値が定義されています。
値 | 意味 |
---|---|
|
プロトコルはストリーム指向であるため、メッセージ サイズの概念は関係ありません。 |
|
最大送信 (送信) メッセージ サイズは、基になるネットワーク MTU (最大サイズの送信ユニット) に依存するため、ソケットがバインドされるまでは認識できません。 ソケットがローカル アドレスにバインドされた後、アプリケーションは getsockopt を使用してSO_MAX_MSG_SIZEの値を取得する必要があります。 |
|
プロトコルはメッセージ指向ですが、送信される可能性のあるメッセージのサイズに上限はありません。 |
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 |