SERVICE_STATUS_PROCESS 構造体 (winsvc.h)

サービスのプロセス状態情報が含まれます。 ControlServiceExEnumServicesStatusExNotifyServiceStatusChangeQueryServiceStatusEx 関数は、この構造体を使用します。

構文

typedef struct _SERVICE_STATUS_PROCESS {
  DWORD dwServiceType;
  DWORD dwCurrentState;
  DWORD dwControlsAccepted;
  DWORD dwWin32ExitCode;
  DWORD dwServiceSpecificExitCode;
  DWORD dwCheckPoint;
  DWORD dwWaitHint;
  DWORD dwProcessId;
  DWORD dwServiceFlags;
} SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS;

メンバー

dwServiceType

サービスの種類。 このメンバーには、次のいずれかの値を指定できます。

説明
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
サービスはファイル システム ドライバーです。
SERVICE_KERNEL_DRIVER
0x00000001
サービスはデバイス ドライバーです。
SERVICE_WIN32_OWN_PROCESS
0x00000010
サービスは独自のプロセスで実行されます。
SERVICE_WIN32_SHARE_PROCESS
0x00000020
サービスは、プロセスを他のサービスと共有します。
 

サービスの種類が SERVICE_WIN32_OWN_PROCESS または SERVICE_WIN32_SHARE_PROCESSで、サービスが LocalSystem アカウントのコンテキストで実行されている場合は、次の種類も指定できます。

説明
SERVICE_INTERACTIVE_PROCESS
サービスはデスクトップと対話できます。

詳細については、「 対話型サービス」を参照してください。

dwCurrentState

サービスの現在の状態。 このメンバーには、次のいずれかの値を指定できます。

説明
SERVICE_CONTINUE_PENDING
0x00000005
サービスは続行されようとしています。
SERVICE_PAUSE_PENDING
0x00000006
サービスが一時停止しています。
SERVICE_PAUSED
0x00000007
サービスは一時中断されています。
SERVICE_RUNNING
0x00000004
サービスは実行中です。
SERVICE_START_PENDING
0x00000002
サービスは開始中です。
SERVICE_STOP_PENDING
0x00000003
サービスは停止中です。
SERVICE_STOPPED
0x00000001
サービスが停止しました。

dwControlsAccepted

コントロールは、サービスがハンドラー関数で受け入れて処理することをコード化します ( 「Handler and HandlerEx」を参照してください)。 ユーザー インターフェイス プロセスでは、 ControlService または ControlServiceEx 関数でコントロール コマンドを指定することで、サービス を制御 できます。 既定では、すべてのサービスは SERVICE_CONTROL_INTERROGATE 値を受け入れます。

コントロール コードを次に示します。

制御コード 説明
SERVICE_ACCEPT_NETBINDCHANGE
0x00000010
サービスは、バインドの変更を停止および再起動せずに受け入れることができるネットワーク コンポーネントです。

この制御コードを使用すると、サービスは SERVICE_CONTROL_NETBINDADDSERVICE_CONTROL_NETBINDREMOVESERVICE_CONTROL_NETBINDENABLEおよびSERVICE_CONTROL_NETBINDDISABLE 通知を受信できます。

SERVICE_ACCEPT_PARAMCHANGE
0x00000008
サービスは、停止および再起動することなく、そのスタートアップ パラメーターを再読み取りできます。

この制御コードにより、サービスは SERVICE_CONTROL_PARAMCHANGE 通知を受け取ることができます。

SERVICE_ACCEPT_PAUSE_CONTINUE
0x00000002
サービスを一時停止して続行できます。

この制御コードを使用すると、サービスは SERVICE_CONTROL_PAUSE および SERVICE_CONTROL_CONTINUE 通知を受信できます。

SERVICE_ACCEPT_PRESHUTDOWN
0x00000100
サービスは、事前シャットダウン タスクを実行できます。

この制御コードにより、サービスは SERVICE_CONTROL_PRESHUTDOWN 通知を受信できます。 ControlService と ControlServiceEx、この通知を送信できないことに注意してください。システムのみが送信できます。

Windows Server 2003 および Windows XP: この値はサポートされていません。

SERVICE_ACCEPT_SHUTDOWN
0x00000004
システムのシャットダウンが発生すると、サービスに通知されます。

この制御コードにより、サービスは SERVICE_CONTROL_SHUTDOWN 通知を受け取ることができます。 ControlService と ControlServiceEx、この通知を送信できないことに注意してください。システムのみが送信できます。

SERVICE_ACCEPT_STOP
0x00000001
サービスを停止できます。

この制御コードにより、サービスは SERVICE_CONTROL_STOP 通知を受け取ることができます。

 

このメンバーには、 HandlerEx でのみサポートされている次の拡張コントロール コードを含めることもできます。 (これらのコントロール コードは 、ControlService または ControlServiceEx では送信できないこと 注意してください)。

制御コード 説明
SERVICE_ACCEPT_HARDWAREPROFILECHANGE
0x00000020
コンピューターのハードウェア プロファイルが変更されると、サービスに通知されます。 これにより、システムは SERVICE_CONTROL_HARDWAREPROFILECHANGE 通知をサービスに送信できます。
SERVICE_ACCEPT_POWEREVENT
0x00000040
コンピューターの電源状態が変更されると、サービスに通知されます。 これにより、システムは SERVICE_CONTROL_POWEREVENT 通知をサービスに送信できます。
SERVICE_ACCEPT_SESSIONCHANGE
0x00000080
コンピューターのセッションの状態が変更されると、サービスに通知されます。 これにより、システムは SERVICE_CONTROL_SESSIONCHANGE 通知をサービスに送信できます。

dwWin32ExitCode

サービスが開始または停止中に発生するエラーを報告するために使用するエラー コード。 サービスに固有のエラー コードを返すには、dwServiceSpecificExitCode メンバーにエラー コードが含まれていることを示すために、この値を ERROR_SERVICE_SPECIFIC_ERROR に設定する必要があります。 サービスは、実行中と正常に終了したときに、この値を NO_ERROR に設定する必要があります。

dwServiceSpecificExitCode

サービスの開始または停止中にエラーが発生したときにサービスが返すサービス固有のエラー コード。 dwWin32ExitCode メンバーが ERROR_SERVICE_SPECIFIC_ERROR に設定されていない限り、この値は無視されます。

dwCheckPoint

サービスが定期的にインクリメントして、長い開始、停止、一時停止、または継続操作中に進行状況を報告するチェックポイント値。 たとえば、サービスは起動時に初期化の各ステップを完了するときに、この値をインクリメントする必要があります。 サービスで操作を呼び出したユーザー インターフェイス プログラムは、この値を使用して、長い操作中のサービスの進行状況を追跡します。 この値は無効であり、サービスに開始、停止、一時停止、または続行操作が保留中でない場合は 0 にする必要があります。

dwWaitHint

保留中の開始、停止、一時停止、または続行操作に必要な推定時間 (ミリ秒単位)。 指定した時間が経過する前に、サービスは、インクリメントされた dwCheckPoint 値または dwCurrentState の変更を使用して、SetServiceStatus 関数の次の呼び出しを行う必要があります。 dwWaitHint で指定された時間が経過し、dwCheckPoint がインクリメントされていないか、dwCurrentState が変更されていない場合、サービス コントロール マネージャーまたはサービス制御プログラムはエラーが発生し、サービスを停止する必要があると見なすことができます。 ただし、サービスが他のサービスとプロセスを共有している場合、サービス コントロール マネージャーは、プロセスを共有する他のサービスも終了する必要があるため、サービス アプリケーションを終了できません。

dwProcessId

サービスのプロセス識別子。

dwServiceFlags

このメンバーには、次のいずれかの値を指定できます。

説明
0
サービスは、システム プロセスではないプロセスで実行されているか、実行されていません。

サービスがシステム プロセスではないプロセスで実行されている場合、 dwProcessId は 0 以外です。 サービスが実行されていない場合、 dwProcessId は 0 です。

SERVICE_RUNS_IN_SYSTEM_PROCESS
0x00000001
サービスは、常に実行されている必要があるシステム プロセスで実行されます。

要件

   
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
Header winsvc.h (Windows.h を含む)

関連項目

ControlServiceEx

EnumServicesStatusEx

NotifyServiceStatusChange

QueryServiceStatusEx