QueryServiceStatusEx

指定した情報レベルに基づき、指定したサービスの現在の状態を取得する。

QueryServiceStatusEx hService, InfoLevel, lpBuffer, cbBufSize, pcbBytesNeeded

hService : [intptr] サービスへのハンドル。このハンドルは CreateService または OpenService 関数が返すもので、SERVICE_QUERY_STATUS アクセス権を持っている必要がある。詳細はサービスのセキュリティとアクセス権を参照のこと。
InfoLevel : [int] 返すべきサービス属性。サービスの状態情報を取得するには SC_STATUS_PROCESS_INFO を使用する。lpBuffer パラメータは SERVICE_STATUS_PROCESS 構造体へのポインタとなる。
lpBuffer : [var] 状態情報を受け取るバッファへのポインタ。このデータの形式は InfoLevel パラメータの値に依存する。この配列の最大サイズは 8K バイトである。必要なサイズを調べるには、このパラメータに NULL、cbBufSize パラメータに 0 を指定する。関数は失敗し、GetLastError は ERROR_INSUFFICIENT_BUFFER を返す。pcbBytesNeeded パラメータが必要なサイズを受け取る。
cbBufSize : [int] lpBuffer パラメータが指すバッファのサイズ(バイト単位)。
pcbBytesNeeded : [var] 関数が ERROR_INSUFFICIENT_BUFFER で失敗した場合に、すべての状態情報を格納するために必要なバイト数を受け取る変数へのポインタ。

(プラグイン / モジュール : advapi32.dll)

解説

指定した情報レベルに基づき、指定したサービスの現在の状態を取得する。

[戻り値]
関数が成功した場合、戻り値は 0 以外となる。
関数が失敗した場合、戻り値は 0 となる。拡張エラー情報を取得するには GetLastError
を呼び出す。次のエラーが返される場合がある。
(以下省略)

[備考]
QueryServiceStatusEx
関数は、サービス制御マネージャに最後に報告されたサービス状態情報を返す。サービスが状態を変更した直後であれば、まだサービス制御マネージャに反映されていない場合がある。SERVICE_STATUS_PROCESS
構造体で返されるプロセス識別子は、サービスの状態が
SERVICE_RUNNING、SERVICE_PAUSE_PENDING、SERVICE_PAUSED、SERVICE_CONTINUE_PENDING
のいずれかである場合に有効である。サービスが SERVICE_START_PENDING または SERVICE_STOP_PENDING
の状態の場合、プロセス識別子は有効でない場合があり、SERVICE_STOPPED 状態ではけっして有効ではない。

情報

プラグイン / モジュールadvapi32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の advapi32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_advapi32_gen2.hs