QueryServiceStatusEx 関数 (winsvc.h)

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

構文

BOOL QueryServiceStatusEx(
  [in]            SC_HANDLE      hService,
  [in]            SC_STATUS_TYPE InfoLevel,
  [out, optional] LPBYTE         lpBuffer,
  [in]            DWORD          cbBufSize,
  [out]           LPDWORD        pcbBytesNeeded
);

パラメーター

[in] hService

サービスへのハンドル。 このハンドルは CreateService 関数または OpenService 関数によって返され、SERVICE_QUERY_STATUSアクセス権が必要です。 詳細については、「 サービス セキュリティとアクセス権」を参照してください。

[in] InfoLevel

返されるサービス属性。 SC_STATUS_PROCESS_INFOを使用して、サービスの状態情報を取得します。 lpBuffer パラメーターは、SERVICE_STATUS_PROCESS構造体へのポインターです。

現時点では、他の情報レベルは定義されていません。

[out, optional] lpBuffer

状態情報を受け取るバッファーへのポインター。 このデータの形式は 、InfoLevel パラメーターの値によって異なります。

この配列の最大サイズは 8K バイトです。 必要なサイズを確認するには、このパラメーターに NULL を指定し、 cbBufSize パラメーターに 0 を指定します。 関数は失敗し、 GetLastError はERROR_INSUFFICIENT_BUFFERを返します。 pcbBytesNeeded パラメーターは、必要なサイズを受け取ります。

[in] cbBufSize

lpBuffer パラメーターが指すバッファーのサイズ (バイト単位)。

[out] pcbBytesNeeded

関数がERROR_INSUFFICIENT_BUFFERで失敗した場合に、すべての状態情報を格納するために必要なバイト数を受け取る変数へのポインター。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。 次のエラーが返される可能性があります。

リターン コード 説明
ERROR_INVALID_HANDLE
ハンドルが正しくありません。
ERROR_ACCESS_DENIED
ハンドルには、SERVICE_QUERY_STATUSアクセス権がありません。
ERROR_INSUFFICIENT_BUFFER
バッファーが小さすぎて 、SERVICE_STATUS_PROCESS 構造に対しては小さすぎます。 構造体には何も書き込まれなかった。
ERROR_INVALID_PARAMETER
SERVICE_STATUS_PROCESScbSize メンバーが無効です。
ERROR_INVALID_LEVEL
InfoLevel パラメーターには、サポートされていない値が含まれています。
ERROR_SHUTDOWN_IN_PROGRESS
システムがシャットダウンしています。この関数を呼び出すことはできません。

注釈

QueryServiceStatusEx 関数は、サービス コントロール マネージャーに報告された最新のサービス状態情報を返します。 サービスが状態を変更したばかりの場合は、サービス コントロール マネージャーがまだ更新されていない可能性があります。

SERVICE_STATUS_PROCESS構造体で返されるプロセス識別子は、サービスの状態がSERVICE_RUNNING、SERVICE_PAUSE_PENDING、SERVICE_PAUSED、またはSERVICE_CONTINUE_PENDINGのいずれかである場合に有効です。 ただし、サービスがSERVICE_START_PENDING状態またはSERVICE_STOP_PENDING状態の場合、プロセス識別子が無効である可能性があり、サービスがSERVICE_STOPPED状態の場合は無効です。

例については、「 サービスの開始 」または「サービス の停止」を参照してください。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー winsvc.h (Windows.h を含む)
Library Advapi32.lib
[DLL] Advapi32.dll

こちらもご覧ください

SERVICE_STATUS_PROCESS

サービス関数

サービスの起動