<Return[PQ]><Top>

QueryServiceStatusEx

Declare Function Api_QueryServiceStatusEx& Lib "advapi32" Alias "QueryServiceStatusEx" (ByVal hService&, ByVal InfoLevel As Struct_MembersOf_SC_STATUS_TYPE, ByVal lpBuffer$, ByVal cbBufSize&, ByRef pcbBytesNeeded&)

Declare Function QueryServiceStatusEx Lib "advapi32" Alias "QueryServiceStatusEx" (ByVal hService As Long, ByVal InfoLevel As Struct_MembersOf_SC_STATUS_TYPE, ByVal lpBuffer As String, ByVal cbBufSize As Long, ByRef pcbBytesNeeded As Long) As Long

指定された情報レベルに基づいて、指定されたサービスの現在のステータスを取得する。
この関数は、QueryServiceStatus 関数の改訂版である。QueryServiceStatusEx 関数は QueryServiceStatus 関数と同じ情報に加えて、プロセス識別子と、サービスに関する追加のフラグを返す。

パラメータ
 

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

    SERVICE_QUERY_STATUS アクセス権が必要である。
InfoLevel
    [入力]取得するサービス属性を指定する。サービスのステータス情報を取得するには、SC_STATUS_PROCESS_INFO を指定する。

    lpBuffer パラメータは、 構造体へのポインタである。
    現在、他の値は定義されていない。
lpBuffer
    [出力]ステータス情報を受け取るバッファへのポインタを指定する。このデータの形式は、InfoLevel パラメータの値に依存する。
cbBufSize
    [入力]lpBuffer パラメータが指すバッファのサイズをバイト数で指定する。
pcbBytesNeeded
    [出力]関数が失敗して ERROR_INSUFFICIENT_BUFFER エラーが発生した場合に、すべてのステータス情報を取得するために必

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

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、 関数を使う。次のエラーが返ることがある。

    エラーコード                                             意味                                                                                                                  
    ERROR_INVALID_HANDLE このハンドルは無効である。
    ERROR_ACCESS_DENIED 指定されたハンドルを開く際に、SERVICE_QUERY_STATUS アクセス権が指定されていなかった。
    ERROR_INSUFFICIENT_BUFFER バッファが小さすぎて、SERVICE_STATUS_PROCESS 構造体を格納できない。この構造体には何も書き込まれない。
    ERROR_INVALID_PARAMETER 構造体の cbSize メンバは無効である。
    ERROR_INVALID_LEVEL パラメータに、サポートされていない値が指定されている。
    ERROR_SHUTDOWN_IN_PROGRESS システムのシャットダウン中のため、この関数を呼び出すことはできない。

 

解説
    QueryServiceStatusEx 関数は、サービス制御マネージャへ報告された、サービスの最新ステータス情報を取得する。

    サービスがステータスを変更した直後は、サービス制御マネージャの保持する情報がまだ更新されていない可能性がある。アプリケーション

    は SERVICE_CONTROL_INTERROGATE 制御コードを指定して ControlService 関数を呼び出すことにより、サービスを直接検討し、

    サービスの現在のステータスを把握することもでる。