WSALookupServiceBeginA 関数 (winsock2.h)
構文
INT WSAAPI WSALookupServiceBeginA(
[in] LPWSAQUERYSETA lpqsRestrictions,
[in] DWORD dwControlFlags,
[out] LPHANDLE lphLookup
);
パラメーター
[in] lpqsRestrictions
検索条件へのポインター。 詳細については、「解説」を参照してください。
[in] dwControlFlags
検索の深さを制御するフラグのセット。
dwControlFlags パラメーターでサポートされる値は、Winsock2.h ヘッダー ファイルで定義されており、次のオプションを組み合わせて使用できます。
旗 | 意味 |
---|---|
|
最初のレベルではなく、深いクエリ。 |
|
コンテナーのみを返します。 |
|
コンテナーを返さないでください。 |
|
可能であれば、結果を距離の順序で返します。 距離のメジャーはプロバイダー固有です。 |
|
lpszServiceInstanceName |
|
lpServiceClassId |
|
lpVersionとしてバージョン |
|
lpszCommentとしてコメント |
|
lpcsaBuffer |
|
lpBlobとしてプライベート データ |
|
使用可能なエイリアス情報は、WSALookupServiceNext |
|
要求に使用されるクエリ文字列を取得します。 |
|
すべてのLUP_RETURN_* 値を取得するフラグのセット。 |
|
WSALookupServiceNextの |
|
プロバイダーが情報をキャッシュしている場合は、キャッシュを無視し、名前空間自体にクエリを実行します。 |
|
これは、素応答が構造体のリモート部分とローカル部分のどちらにあるかを示 CSADDR_INFO。 どちらの場合も、もう 1 つの部分を使用できる必要があります。 |
[out] lphLookup
結果セットの取得を開始するために WSALookupServiceNext
戻り値
操作が成功した場合、戻り値は 0 です。 それ以外の場合は、SOCKET_ERROR値が返され、WSAGetLastError
エラー コード | 意味 |
---|---|
操作を実行するためのメモリが不足していました。 | |
|
このプロバイダーに対して 1 つ以上のパラメーターが見つからないか無効でした。 |
データベースで名前が見つかりましたが、指定された制限に一致するデータが見つかりませんでした。 | |
|
WS2_32.DLLが初期化されていません。 アプリケーションは、Windows ソケット関数を呼び出す前 WSAStartup を最初に呼び出す必要があります。 |
そのようなサービスは不明です。 指定された名前空間にサービスが見つかりません。
リモート Bluetooth デバイスが見つからなかった場合、Bluetooth サービス検出要求に対してこのエラーが返されます。 |
備考
lpqsRestrictions パラメーターは、WSAQUERYSET 構造体を含むバッファーを指します。 少なくとも、WSALookupServiceBegin 関数を呼び出す前に、WSAQUERYSET の dwSize メンバーをバッファーの長さに設定する必要があります。 アプリケーションでは、WSAQUERYSETで他のメンバーを指定することで、クエリを制限できます。
ほとんどの場合、特定のトランスポート プロトコルのみに関心があるアプリケーションでは、dwNameSpace メンバー内の名前空間を指定するのではなく、dwNumberOfProtocols と lpafpProtocolsWSAQUERYSET のメンバーを使用して、アドレス ファミリとプロトコルによってクエリを制限する必要があります。
サポートされているネットワーク トランスポート プロトコルに関する情報は、
クエリを 1 つの名前空間に制限することもできます。 たとえば、(ローカル ホスト ファイルやその他の名前付けサービスからの結果ではなく) DNS からの結果のみを求めるクエリでは、dwNameSpace メンバーがNS_DNSに設定されます。 たとえば、bluetooth デバイス検出では、dwNameSpace メンバーがNS_BTHに設定されます。
アプリケーションでは、lpNSProviderId メンバーでプロバイダーの GUID へのポインターを指定することで、クエリを特定の名前空間プロバイダーに制限することもできます。
ローカル コンピューター上の名前空間プロバイダーに関する情報は、WSAEnumNameSpaceProvidersEx
呼び出しでLUP_CONTAINERSが指定されている場合は、他の制限値を避ける必要があります。 指定されている場合、コンテナーに対するこの制限をサポートできるかどうかを判断するのは、名前サービス プロバイダーにかかってください。 できない場合は、エラーを返す必要があります。
一部の名前サービス プロバイダーは、コンテナーを検索する他の手段を持つことができます。 たとえば、コンテナーはすべて既知の型、または一連の既知の型である可能性があるため、それらを検索するためのクエリ制限を作成できます。 コンテナーを検索するためにサービス プロバイダーが持っている名前が他に何を意味するかにかかわらず、LUP_CONTAINERSとLUP_NOCONTAINERSが優先されます。 そのため、コンテナーを含むクエリ制限が与えられている場合、LUP_NOCONTAINERSを指定すると、コンテナー項目が返されなくなります。 同様に、クエリの制限に関係なく、LUP_CONTAINERSが指定されている場合は、コンテナーのみを返す必要があります。 名前空間がコンテナーをサポートせず、LUP_CONTAINERSが指定されている場合は、WSANO_DATAを返すだけです。
別のコンテナー内のコンテナーを取得する推奨される方法は、次の呼び出しです。
dwStatus = WSALookupServiceBegin(
lpqsRestrictions,
LUP_CONTAINERS,
lphLookup);
この呼び出しの後に、WSALookupServiceNext 呼び出し
前述のように、
WSAQUERYSET メンバー | クエリの解釈 |
---|---|
dwSize を |
sizeof(WSAQUERYSET) に設定する必要があります。 これはバージョン管理メカニズムです。 |
dwOutputFlags を |
クエリでは無視されます。 |
lpszServiceInstanceName を |
(省略可能)参照される文字列には、サービス名が含まれています。 文字列内のワイルドカードのセマンティクスは定義されていませんが、特定の名前空間プロバイダーでサポートできます。 |
lpServiceClassId を |
(必須)サービス クラスに対応する GUID。 |
lpVersion | (省略可能)目的のバージョン番号を参照し、バージョン比較セマンティクスを提供します (つまり、バージョンが正確に一致する必要があります。または、バージョンが指定された値より小さくなければなりません)。 |
lpszComment を |
クエリでは無視されます。 |
dwNameSpace を 次の重要な注意事項を参照してください。 |
検索を制限する単一の名前空間の識別子。またはすべての名前空間を含めるNS_ALL。 |
lpNSProviderId を |
(省略可能)特定の名前空間プロバイダーの GUID を参照し、クエリをこのプロバイダーのみに制限します。 |
lpszContext を |
(省略可能)階層型名前空間内のクエリの開始点を指定します。 |
dwNumberOfProtocols を |
プロトコル制約配列のサイズは 0 にすることができます。 |
lpafpProtocols を |
(省略可能)AFPROTOCOLS 構造体 |
lpszQueryString を |
(省略可能)一部の名前空間 (whois++など) では、単純なテキスト文字列に含まれる強化された SQL のようなクエリがサポートされています。 このパラメーターは、その文字列を指定するために使用されます。 |
dwNumberOfCsAddrs を |
クエリでは無視されます。 |
lpcsaBuffer を |
クエリでは無視されます。 |
lpBlob を |
(省略可能)これは、プロバイダー固有のエンティティへのポインターです。 |
手記
winsock2.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして WSALookupServiceBegin を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8.1、Windows Vista [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winsock2.h |
ライブラリ | Ws2_32.lib |
DLL | Ws2_32.dll |
関連項目
Bluetooth と WSALookupServiceBegin
EnumProtocols の
WSAEnumNameSpaceProviders の
WSAEnumNameSpaceProvidersEx の
WSAEnumProtocols の
WSALookupServiceEnd を
WSALookupServiceNext の
WSAQUERYSET の
WSCEnumNameSpaceProviders32 の
WSCEnumNameSpaceProvidersEx32 の
WSCEnumProtocols の
WSCEnumProtocols32 の