GetServiceW 関数 (nspapi.h)
GetService 関数は、一連の既定の名前空間または指定された名前空間のコンテキストで、ネットワーク サービスに関する情報を取得します。 ネットワーク サービスは、その種類と名前で指定されます。 サービスに関する情報は、 NS_SERVICE_INFO データ構造のセットとして取得されます。
構文
INT GetServiceW(
[in] DWORD dwNameSpace,
[in] LPGUID lpGuid,
[in] LPWSTR lpServiceName,
[in] DWORD dwProperties,
[out] LPVOID lpBuffer,
[in, out] LPDWORD lpdwBufferSize,
[in, optional] LPSERVICE_ASYNC_INFO lpServiceAsyncInfo
);
パラメーター
[in] dwNameSpace
オペレーティング システムが指定したネットワーク サービスに関する情報を照会する必要がある名前空間 (既定の名前空間のセット)。
名前空間を指定するには、次のいずれかの定数を使用します。
GetService のほとんどの呼び出しでは、特別な値NS_DEFAULTを使用する必要があります。 これにより、クライアントはインターネットワークで使用可能な名前空間を知らずに取得できます。 システム管理者が名前空間へのアクセスを決定します。 名前空間は、クライアントが変更を認識しなくても行き来できます。
[in] lpGuid
ネットワーク サービスの種類を指定するグローバル一意識別子 (GUID) へのポインター。 Svcguid.h ヘッダー ファイルには、DNS および SAP 名前空間内の多くの既知のサービスからの GUID サービスの種類が含まれています。
Svcguid.h ヘッダー ファイルは、Winsock2.h ヘッダー ファイルに自動的に含まれません。
[in] lpServiceName
サービス名を一意に表す、0 で終わる文字列へのポインター。 たとえば、"MY SNA SERVER" などです。
[in] dwProperties
関数が取得するサービス情報を指定するビット フラグのセット。 これらの各ビット フラグ定数は、PROP_ALL以外の、 SERVICE_INFO データ構造の特定のメンバーに対応します。 フラグが設定されている場合、関数は *lpBuffer に格納されているデータ構造の対応するメンバーに情報を入れます。 次のビット フラグが定義されています。
[out] lpBuffer
NS_SERVICE_INFO構造体と関連するサービス情報の配列を受け取るバッファーへのポインター。 各 NS_SERVICE_INFO 構造体には、特定の名前空間のコンテキストにサービス情報が含まれています。 dwNameSpace がNS_DEFAULT場合、関数は複数の構造体をバッファーに格納します。それ以外の場合は、1 つの構造体だけが格納されます。
各 NS_SERVICE_INFO 構造体には、 SERVICE_INFO 構造体が含まれています。 これらの SERVICE_INFO 構造体のメンバーには、 dwProperties パラメーターに設定されているビット フラグに基づく有効なデータが含まれます。 dwProperties でメンバーの対応するビット フラグが設定されていない場合、メンバーの値は未定義です。
関数は、 NS_SERVICE_INFO 構造体をバッファーの先頭から連続する配列に格納します。 包含SERVICE_INFO構造体内のポインターは、NS_SERVICE_INFO構造体の末尾とバッファーの末尾の間のバッファーに格納されている情報を指します。
[in, out] lpdwBufferSize
入力時に lpBuffer が指すバッファーのサイズをバイト単位で格納する変数へのポインター。 出力時に、この変数には、要求された情報を格納するために必要なバイト数が含まれます。 この出力値が入力値より大きい場合、バッファー サイズが不十分なため、関数は失敗しました。
[in, optional] lpServiceAsyncInfo
将来利用するために予約されています。 NULL に設定する必要があります。
戻り値
関数が成功した場合、戻り値は *lpBuffer に格納されているNS_SERVICE_INFO構造体の数です。 ゼロは、構造体が格納されなかったことを示します。
関数が失敗した場合、戻り値は SOCKET_ERROR ( – 1) になります。 拡張エラー情報を取得するには、 GetLastError を呼び出します。これは、次のいずれかの拡張エラー値を返します。
エラー コード | 意味 |
---|---|
|
lpBuffer が指すバッファーが小さすぎて、要求されたすべての情報を受信できません。 *lpdwBufferSize で返される値と同じ大きさのバッファーを使用して関数を呼び出します。 |
|
指定したサービスが見つからないか、指定した名前空間が使用されていません。 この場合、関数の戻り値は 0 です。 |
注釈
注意
nspapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetService を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | nspapi.h |
Library | Mswsock.lib |
[DLL] | Mswsock.dll |