次の方法で共有


EnumServicesStatusExA 関数 (winsvc.h)

指定したサービス コントロール マネージャー データベース内のサービスを列挙します。 各サービスの名前と状態が、指定された情報レベルに基づく追加データと共に提供されます。

構文

BOOL EnumServicesStatusExA(
  [in]                SC_HANDLE    hSCManager,
  [in]                SC_ENUM_TYPE InfoLevel,
  [in]                DWORD        dwServiceType,
  [in]                DWORD        dwServiceState,
  [out, optional]     LPBYTE       lpServices,
  [in]                DWORD        cbBufSize,
  [out]               LPDWORD      pcbBytesNeeded,
  [out]               LPDWORD      lpServicesReturned,
  [in, out, optional] LPDWORD      lpResumeHandle,
  [in, optional]      LPCSTR       pszGroupName
);

パラメーター

[in] hSCManager

サービス コントロール マネージャー データベースへのハンドル。 このハンドルは OpenSCManager 関数によって返され、 SC_MANAGER_ENUMERATE_SERVICE アクセス権が必要です。 詳細については、「 サービス セキュリティとアクセス権」を参照してください。

[in] InfoLevel

返されるサービス属性。 SC_ENUM_PROCESS_INFOを使用して、データベース内の各サービスの名前とサービスの状態情報を取得します。 lpServices パラメーターは、ENUM_SERVICE_STATUS_PROCESS構造体の配列を受け取るバッファーへのポインターです。 バッファーは、構造体とそのメンバーが指す文字列を保持するのに十分な大きさである必要があります。

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

[in] dwServiceType

列挙するサービスの種類。 このパラメーターには、次の 1 つ以上の値を指定できます。

説明
SERVICE_DRIVER
0x0000000B
SERVICE_KERNEL_DRIVERSERVICE_FILE_SYSTEM_DRIVERの種類のサービス。
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
ファイル システム ドライバー サービス。
SERVICE_KERNEL_DRIVER
0x00000001
ドライバー サービス。
SERVICE_WIN32
0x00000030
SERVICE_WIN32_OWN_PROCESSとSERVICE_WIN32_SHARE_PROCESSの種類サービス。
SERVICE_WIN32_OWN_PROCESS
0x00000010
独自のプロセスで実行されるサービス。
SERVICE_WIN32_SHARE_PROCESS
0x00000020
1 つ以上の他のサービスとプロセスを共有するサービス。 詳細については、「 サービス プログラム」を参照してください。

[in] dwServiceState

列挙するサービスの状態。 このパラメーターには、次の値のいずれかを指定できます。

説明
SERVICE_ACTIVE
0x00000001
SERVICE_START_PENDING、SERVICE_STOP_PENDING、SERVICE_RUNNINGSERVICE_CONTINUE_PENDINGSERVICE_PAUSE_PENDINGSERVICE_PAUSEDの各状態のサービスを列挙します。
SERVICE_INACTIVE
0x00000002
SERVICE_STOPPED状態のサービスを列挙します。
SERVICE_STATE_ALL
0x00000003
SERVICE_ACTIVESERVICE_INACTIVEの状態を組み合わせます。

[out, optional] lpServices

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

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

Windows Server 2003 および Windows XP: この配列の最大サイズは 64K バイトです。 この制限は、WINDOWS Server 2003 SP1 と Windows XP SP2 の時点で増加しました。

[in] cbBufSize

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

[out] pcbBytesNeeded

バッファーが小さすぎる場合に、残りのサービス エントリを返すために必要なバイト数を受け取る変数へのポインター。

[out] lpServicesReturned

返されるサービス エントリの数を受け取る変数へのポインター。

[in, out, optional] lpResumeHandle

入力時に列挙の開始点を指定する変数へのポインター。 EnumServicesStatusEx 関数を初めて呼び出す場合は、この値を 0 に設定する必要があります。 出力では、関数が成功した場合、この値は 0 になります。 ただし、関数が 0 を返し、 GetLastError 関数 がERROR_MORE_DATAを返す場合、この値は、追加データを取得するために EnumServicesStatusEx 関数が呼び出されたときに読み取られる次のサービス エントリを示します。

[in, optional] pszGroupName

読み込み順序グループ名。 このパラメーターが文字列の場合、列挙されるサービスは、文字列で指定された名前を持つグループに属するサービスのみです。 このパラメーターが空の文字列の場合、どのグループにも属していないサービスのみが列挙されます。 このパラメーターが NULL の場合、グループ メンバーシップは無視され、すべてのサービスが列挙されます。

戻り値

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

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

リターン コード 説明
ERROR_ACCESS_DENIED
ハンドルに SC_MANAGER_ENUMERATE_SERVICE アクセス権がありません。
ERROR_MORE_DATA
バッファーが小さすぎます。 アクティブなデータベース内のすべてのデータを返せるわけではありません。 pcbBytesNeeded パラメーターには、残りのエントリを受信するために必要なバイト数が含まれています。
ERROR_INVALID_PARAMETER
無効なパラメーター値が使用されました。
ERROR_INVALID_HANDLE
ハンドルが正しくありません。
ERROR_INVALID_LEVEL
InfoLevel パラメーターには、サポートされていない値が含まれています。
ERROR_SHUTDOWN_IN_PROGRESS
システムがシャットダウンしています。この関数を呼び出すことはできません。

解説

呼び出し元がサービスに 対するSERVICE_QUERY_STATUS アクセス権を持っていない場合、クライアントに返されるサービスの一覧からサービスは自動的に省略されます。

注意

winsvc.h ヘッダーは EnumServicesStatusEx をエイリアスとして定義します。このエイリアスは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

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

関連項目

ENUM_SERVICE_STATUS_PROCESS

サービス関数

サービスのインストール、削除、および列挙