SERVICE_STATUS_PROCESS 構造体 (winsvc.h)
サービスのプロセス状態情報が含まれます。 ControlServiceEx、EnumServicesStatusEx、NotifyServiceStatusChange、QueryServiceStatusEx 関数は、この構造体を使用します。
構文
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_WIN32_OWN_PROCESS または SERVICE_WIN32_SHARE_PROCESSで、サービスが LocalSystem アカウントのコンテキストで実行されている場合は、次の種類も指定できます。
値 | 説明 |
---|---|
|
サービスはデスクトップと対話できます。
詳細については、「 対話型サービス」を参照してください。 |
dwCurrentState
サービスの現在の状態。 このメンバーには、次のいずれかの値を指定できます。
dwControlsAccepted
コントロールは、サービスがハンドラー関数で受け入れて処理することをコード化します ( 「Handler and HandlerEx」を参照してください)。 ユーザー インターフェイス プロセスでは、 ControlService または ControlServiceEx 関数でコントロール コマンドを指定することで、サービス を制御 できます。 既定では、すべてのサービスは SERVICE_CONTROL_INTERROGATE 値を受け入れます。
コントロール コードを次に示します。
制御コード | 説明 |
---|---|
|
サービスは、バインドの変更を停止および再起動せずに受け入れることができるネットワーク コンポーネントです。
この制御コードを使用すると、サービスは SERVICE_CONTROL_NETBINDADD、 SERVICE_CONTROL_NETBINDREMOVE、 SERVICE_CONTROL_NETBINDENABLE、 およびSERVICE_CONTROL_NETBINDDISABLE 通知を受信できます。 |
|
サービスは、停止および再起動することなく、そのスタートアップ パラメーターを再読み取りできます。
この制御コードにより、サービスは SERVICE_CONTROL_PARAMCHANGE 通知を受け取ることができます。 |
|
サービスを一時停止して続行できます。
この制御コードを使用すると、サービスは SERVICE_CONTROL_PAUSE および SERVICE_CONTROL_CONTINUE 通知を受信できます。 |
|
サービスは、事前シャットダウン タスクを実行できます。
この制御コードにより、サービスは SERVICE_CONTROL_PRESHUTDOWN 通知を受信できます。 ControlService と ControlServiceExは、この通知を送信できないことに注意してください。システムのみが送信できます。 Windows Server 2003 および Windows XP: この値はサポートされていません。 |
|
システムのシャットダウンが発生すると、サービスに通知されます。
この制御コードにより、サービスは SERVICE_CONTROL_SHUTDOWN 通知を受け取ることができます。 ControlService と ControlServiceExは、この通知を送信できないことに注意してください。システムのみが送信できます。 |
|
サービスを停止できます。
この制御コードにより、サービスは SERVICE_CONTROL_STOP 通知を受け取ることができます。 |
このメンバーには、 HandlerEx でのみサポートされている次の拡張コントロール コードを含めることもできます。 (これらのコントロール コードは 、ControlService または ControlServiceEx では送信できないこと に注意してください)。
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
このメンバーには、次のいずれかの値を指定できます。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
Header | winsvc.h (Windows.h を含む) |