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 ヘッダー ファイルで定義されています。
次の値を指定できます。
dwServiceFlags2
型: DWORD
追加のプロトコル属性定義用に予約されています。
dwServiceFlags3
型: DWORD
追加のプロトコル属性定義用に予約されています。
dwServiceFlags4
型: DWORD
追加のプロトコル属性定義用に予約されています。
dwProviderFlags
型: DWORD
Winsock カタログでのこのプロトコルの表現方法に関する情報を提供するフラグのセット。 このメンバーに指定できる値は、Winsock2.h ヘッダー ファイルで定義されています。
次のフラグ値を指定できます。
価値 | 意味 |
---|---|
|
これは、複数の動作を実装できる 1 つのプロトコル (特定のプロバイダーから) の 2 つ以上のエントリの 1 つであることを示します。 その例として、受信側でメッセージ指向またはストリーム指向のプロトコルとして動作できる SPX があります。 |
|
これは、複数の動作を実装できるプロトコルの推奨または最も頻繁に使用されるエントリであることを示します。 |
|
WSAEnumProtocolsによって生成された結果バッファーでこのプロトコルを返してはならないことを Ws2_32.dll に示すようにプロバイダーによって設定されます。 明らかに、Windows Sockets 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 Sockets 2 SPI を上端と下端の両方として持つ階層化プロトコルを表します。 チェーンの長さが 1 の場合、このエントリは、カタログ エントリ識別子が WSAPROTOCOL_INFO 構造体の dwCatalogEntryId メンバーにある基本プロトコルを表します。 チェーンの長さが 1 より大きい場合、このエントリは、基本プロトコルの上に 1 つ以上の階層化されたプロトコルで構成されるプロトコル チェーンを表します。 対応するカタログ エントリ識別子は ProtocolChain.ChainEntries 配列内にあり、最上位の階層化プロトコル (ProtocolChain.ChainEntries 配列の 0 要素) で始まり、ベース プロトコルで終わるものです。 プロトコル チェーンの詳細については、Windows ソケット 2 のサービス プロバイダー インターフェイスの仕様を参照してください。
iVersion
型: int
プロトコル バージョン識別子。
iAddressFamily
型: int
このプロトコルのソケットを開くために、アドレス ファミリ パラメーターとして
Windows Vista 以降用にリリースされた Windows SDK では、アドレス ファミリに使用できる値は、Ws2def.h ヘッダー ファイルで定義されます。
Windows Server 2003 以前のバージョンの Platform SDK では、アドレス ファミリに使用できる値は、Winsock2.h ヘッダー ファイルで定義されます。
現在サポートされている値は AF_INET または AF_INET6 です。これは、IPv4 および IPv6 のインターネット アドレス ファミリ形式です。 アドレス ファミリの 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 ソケット プロバイダーでは、型 パラメーターが 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
このプロトコルのソケットを開くために、
次の表に、Windows Sockets 2 でサポートされている iSocketType メンバーに使用できる値を示します。
iSocketType | 意味 |
---|---|
|
OOB データ転送メカニズムを使用して、シーケンスされた信頼性の高い双方向の接続ベースのバイト ストリームを提供するソケット型。 このソケットの種類は、インターネット アドレス ファミリ (AF_INET または AF_INET6) に伝送制御プロトコル (TCP) を使用します。 |
|
固定 (通常は小さい) 最大長のコネクションレスで信頼性の低いバッファーであるデータグラムをサポートするソケット型。 このソケットの種類は、インターネット アドレス ファミリ (AF_INET または AF_INET6) にユーザー データグラム プロトコル (UDP) を使用します。 |
|
アプリケーションが次の上位層プロトコル ヘッダーを操作できるようにする生のソケットを提供するソケットの種類。 IPv4 ヘッダーを操作するには、ソケットに IP_HDRINCL ソケット オプションを設定する必要があります。 IPv6 ヘッダーを操作するには、ソケットに IPV6_HDRINCL ソケット オプションを設定する必要があります。 |
|
信頼性の高いメッセージ データグラムを提供するソケットの種類。 この型の例として、Windows でのプラグマティック一般マルチキャスト (UWP) マルチキャスト プロトコルの実装が挙 、信頼性の高いマルチキャスト プログラミングと呼ばれます。
この値は、Reliable Multicast Protocol がインストールされている場合にのみサポートされます。 |
|
データグラムに基づいて擬似ストリーム パケットを提供するソケットの種類。 |
iProtocol
型: int
このプロトコルのソケットを開くために、
Windows Vista 以降でリリースされた Windows SDK では、このメンバーは、Ws2def.h ヘッダー ファイルで定義されている IPPROTO 列挙型の値のいずれかになります。
Windows Server 2003 以前のバージョンのプラットフォーム SDK では、
次の表に、iProtocol の一般的な値を示しますが、他の多くの値を使用できます。
iProtocolMaxOffset
型: int
ソケット または WSASocket 関数に
iNetworkByteOrder
型: int
現在、これらの値はそれぞれ 0 と 1 のビッグ エンディアンまたはリトル エンディアンを示すマニフェスト定数 (BIGENDIAN および LITTLEENDIAN) です。
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 ヘッダーは、unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとしてWSAPROTOCOL_INFOを定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ヘッダー | winsock2.h |
関連項目
WSAEnumProtocols の
WSAPROTOCOLCHAIN の
WSASend を
WSASendTo を
WSASocket の
WSCInstallProvider の
WSCUpdateProvider の
WSCUpdateProvider32 の
ソケット