次の方法で共有


EnumDependentServicesW 関数 (winsvc.h)

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

構文

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

パラメーター

[in] hService

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

[in] dwServiceState

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

価値 意味
SERVICE_ACTIVE
0x00000001
SERVICE_START_PENDINGSERVICE_STOP_PENDINGSERVICE_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 バイトです。 必要なサイズを決定するには、このパラメーター NULLcbBufSize パラメーターに 0 を指定します。 この関数は失敗し、GetLastError ERROR_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 ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして EnumDependentServices を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winsvc.h (Windows.h を含む)
ライブラリ Advapi32.lib
DLL Advapi32.dll

関連項目

CreateService の

ENUM_SERVICE_STATUS

EnumServicesStatusEx の

OpenService

サービス関数の

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