EnumServicesStatusA 関数 (winsvc.h)
指定したサービス コントロール マネージャー データベース内のサービスを列挙します。 各サービスの名前と状態が提供されます。
この関数は、enumServicesStatusEx 関数
構文
BOOL EnumServicesStatusA(
[in] SC_HANDLE hSCManager,
[in] DWORD dwServiceType,
[in] DWORD dwServiceState,
[out, optional] LPENUM_SERVICE_STATUSA lpServices,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded,
[out] LPDWORD lpServicesReturned,
[in, out, optional] LPDWORD lpResumeHandle
);
パラメーター
[in] hSCManager
サービス コントロール マネージャー データベースへのハンドル。 このハンドルは、OpenSCManager 関数によって返され、SC_MANAGER_ENUMERATE_SERVICEアクセス権が必要です。 詳細については、「サービスのセキュリティとアクセス権の」を参照してください。
[in] dwServiceType
列挙するサービスの種類。 このパラメーターには、次の値のうち 1 つ以上を指定できます。
価値 | 意味 |
---|---|
|
SERVICE_KERNEL_DRIVERおよびSERVICE_FILE_SYSTEM_DRIVERの種類のサービス。 |
|
ファイル システム ドライバー サービス。 |
|
ドライバー サービス。 |
|
SERVICE_WIN32_OWN_PROCESSおよびSERVICE_WIN32_SHARE_PROCESSの種類のサービス。 |
|
独自のプロセスで実行されるサービス。 |
|
プロセスを 1 つ以上の他のサービスと共有するサービス。 詳細については、「サービス プログラムの」を参照してください。 |
[in] dwServiceState
列挙するサービスの状態。 このパラメーターには、次のいずれかの値を指定できます。
[out, optional] lpServices
データベース内の各サービスの名前とサービスの状態情報を受け取る ENUM_SERVICE_STATUS 構造体の配列を含むバッファーへのポインター。 バッファーは、構造体とメンバーが指す文字列を保持するのに十分な大きさである必要があります。
この配列の最大サイズは 256,000 バイトです。 必要なサイズを決定するには、このパラメーターに NULL を、cbBufSize パラメーターに 0 を指定します。 関数は失敗し、GetLastError
Windows Server 2003 および Windows XP: この配列の最大サイズは 64,000 バイトです。 この制限は、Windows Server 2003 SP1 および Windows XP SP2 の時点で引き上げられました。
[in] cbBufSize
lpServices パラメーターが指すバッファーのサイズ (バイト単位)。
[out] pcbBytesNeeded
バッファーが小さすぎる場合に、残りのサービス エントリを返すために必要なバイト数を受け取る変数へのポインター。
[out] lpServicesReturned
返されるサービス エントリの数を受け取る変数へのポインター。
[in, out, optional] lpResumeHandle
入力時に列挙の開始点を指定する変数へのポインター。 この関数を初めて呼び出す場合は、この値を 0 に設定する必要があります。 出力時、関数が成功した場合、この値は 0 になります。 ただし、関数が 0 を返し、GetLastError 関数がERROR_MORE_DATAを返す場合、この値は、追加のデータを取得するために関数が呼び出されたときに読み取られる次のサービス エントリを示すために使用されます。
戻り値
関数が成功した場合、戻り値は 0 以外です。
関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError
サービス コントロール マネージャーでは、次のエラー コードを設定できます。 その他のエラー コードは、サービス コントロール マネージャーによって呼び出されるレジストリ関数によって設定できます。
リターン コード | 形容 |
---|---|
|
ハンドルにSC_MANAGER_ENUMERATE_SERVICEアクセス権がありません。 |
|
指定されたハンドルが無効です。 |
|
指定されたパラメーターが無効です。 |
|
lpServices バッファーに収まるよりも多くのサービス エントリがあります。 lpServices |
備考
手記
winsvc.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして EnumServicesStatus を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winsvc.h (Windows.h を含む) |
ライブラリ | Advapi32.lib |
DLL | Advapi32.dll |
関連項目
EnumDependentServices を
EnumServicesStatusEx の