EnumDependentServicesA 関数 (winsvc.h)

指定したサービスに依存する各サービスの名前と状態を取得します。つまり、依存サービスを実行するには、指定されたサービスが実行されている必要があります。

構文

BOOL EnumDependentServicesA(
  [in]            SC_HANDLE              hService,
  [in]            DWORD                  dwServiceState,
  [out, optional] LPENUM_SERVICE_STATUSA lpServices,
  [in]            DWORD                  cbBufSize,
  [out]           LPDWORD                pcbBytesNeeded,
  [out]           LPDWORD                lpServicesReturned
);

パラメーター

[in] hService

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

[in] dwServiceState

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

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

[out, optional] lpServices

データベース 内の各 依存サービスの名前とサービスの状態情報を受け取るENUM_SERVICE_STATUS構造体の配列へのポインター。 バッファーは、構造体とメンバーが指す文字列を保持するのに十分な大きさである必要があります。

この配列内のサービスの順序は、サービスの開始順序の逆です。 つまり、配列内の最初のサービスは最後に開始されるサービスであり、配列内の最後のサービスは最初に開始されるサービスです。

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

[in] cbBufSize

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

[out] pcbBytesNeeded

サービス エントリの配列を格納するために必要なバイト数を受け取る変数へのポインター。 変数は、 lpServices が指すバッファーが小さすぎて、関数エラーと ERROR_MORE_DATA エラーによって示される場合にのみ、この値を受け取ります。それ以外の場合、 pcbBytesNeeded の 内容は未定義です。

[out] lpServicesReturned

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

戻り値

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

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

次のエラー コードは、サービス コントロール マネージャーによって設定される場合があります。 その他のエラー コードは、サービス コントロール マネージャーによって呼び出されるレジストリ関数によって設定される場合があります。

リターン コード 説明
ERROR_ACCESS_DENIED
ハンドルには 、SERVICE_ENUMERATE_DEPENDENTS アクセス権がありません。
ERROR_INVALID_HANDLE
指定されたハンドルが無効です。
ERROR_INVALID_PARAMETER
指定されたパラメーターが無効です。
ERROR_MORE_DATA
lpServices が指すバッファーが十分な大きさではありません。 この関数は、 lpServicesReturned が指す変数を、バッファーに格納されているサービス エントリの実際の数に設定します。 この関数は 、pcbBytesNeeded が指す変数を、すべてのサービス エントリを格納するために必要なバイト数に設定します。

解説

返されたサービス エントリは、開始注文の逆順に並べ替えられます。グループ注文が考慮されます。 依存サービスを停止する必要がある場合は、 lpServices バッファーに書き込まれたエントリの順序を使用して、依存サービスを適切な順序で停止できます。

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

注意

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

要件

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

関連項目

CreateService

ENUM_SERVICE_STATUS

EnumServicesStatusEx

OpenService

サービス関数

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