<Return[PQ]><Top>

QueryServiceConfig

Declare Function Api_QueryServiceConfig& Lib "advapi32" Alias "QueryServiceConfigA" (ByVal hService&, lpServiceConfig As QUERY_SERVICE_CONFIG, ByVal cbBufSize&, pcbBytesNeeded&)

Declare Function QueryServiceConfig Lib "advapi32" Alias "QueryServiceConfigA" (ByVal hService As Long, lpServiceConfig As QUERY_SERVICE_CONFIG, ByVal cbBufSize As Long, pcbBytesNeeded As Long) As Long

指定されたサービスの構成パラメータを取得する。QueryServiceConfig2 関数を使うと、オプション構成パラメータを取得できる。

パラメータ
hService
    [入力]サービスのハンドルを指定する。OpenService 関数または CreateService 関数が返したハンドルを指定し、これには

    SERVICE_QUERY_CONFIG アクセス権が必要である。
lpServiceConfig
    [出力]サービス構成情報を受け取るバッファへのポインタを指定する。データの形式は、 構造体である。
cbBufSize
    [入力]lpServiceConfig パラメータが指すバッファのサイズをバイト数で指定する。
pcbBytesNeeded
    [出力]関数が失敗して ERROR_INSUFFICIENT_BUFFER エラーが発生した場合に、すべての構成情報を取得するために必要なバ

    イト数を受け取る変数へのポインタを指定する。

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、 関数を使う。
    サービス制御マネージャは次のエラーコードを設定することがある。サービス制御マネージャが呼び出したレジストリ関数は、その他のエラー

    コードを設定することがある。

    エラーコー                                          

意味                                                                                                                  

    ERROR_ACCESS_DENIED

指定されたハンドルを開く際に、SERVICE_QUERY_CONFIG アクセス権が指定されていなかった。

    ERROR_INSUFFICIENT_BUFFER

 

lpServiceConfig パラメータが指すバッファに収容しきれないサービス構成情報が存在する。すべての情報を取得するために必要なバイト数は、pcbBytesNeeded パラメータに書き込まれる。lpServiceConfig バッファには何も書き込まれない。

    ERROR_INVALID_HANDLE

指定されたハンドルは無効である。

 

解説
    QueryServiceConfig 関数は、特定のサービスに関してレジストリ内に維持されているサービス構成情報を取得する。サービス制御プログラ

    ムは最初に、CreateService 関数を使ってこの構成情報を設定する。その後この情報は、サービス構成プログラムが

    ChangeServiceConfig 関数を使って更新した可能性がある。
    構成情報に最後に変更を加えた際にサービスが動作中だった場合、QueryServiceConfig 関数が返す情報はサービスの現在の構成を反

    映していないはずである。代わりにこの情報は、サービスを次に動作させた場合の構成を反映している。ただし、DisplayName キーは例

    外である。DisplayName キーに変更を加えると、サービスが動作中かどうかにかかわりなく、変更結果が直ちに有効になる。