次の方法で共有


SERVICE_STATUS構造体 (winsvc.h)

サービスの状態情報が含まれます。 ControlServiceEnumDependentServicesEnumServicesStatusQueryServiceStatus 関数は、この構造体を使用します。 サービスは SetServiceStatus 関数でこの構造を使用して、その現在の状態をサービス コントロール マネージャーに報告します。

構文

typedef struct _SERVICE_STATUS {
  DWORD dwServiceType;
  DWORD dwCurrentState;
  DWORD dwControlsAccepted;
  DWORD dwWin32ExitCode;
  DWORD dwServiceSpecificExitCode;
  DWORD dwCheckPoint;
  DWORD dwWaitHint;
} SERVICE_STATUS, *LPSERVICE_STATUS;

メンバー

dwServiceType

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

説明
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
サービスはファイル システム ドライバーです。
SERVICE_KERNEL_DRIVER
0x00000001
サービスはデバイス ドライバーです。
SERVICE_WIN32_OWN_PROCESS
0x00000010
サービスは独自のプロセスで実行されます。
SERVICE_WIN32_SHARE_PROCESS
0x00000020
サービスは、プロセスを他のサービスと共有します。
SERVICE_USER_OWN_PROCESS
0x00000050
このサービスは、ログオンしたユーザー アカウントで独自のプロセスで実行されます。
SERVICE_USER_SHARE_PROCESS
0x00000060
このサービスは、ログオンしているユーザー アカウントで実行される 1 つ以上の他のサービスとプロセスを共有します。
 

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

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

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

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_CONTROL_DEVICEEVENT値を受け入れるには、RegisterDeviceNotification 関数を使用してデバイス イベントを受信するようにサービスを登録する必要があります。

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

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

この制御コードを使用すると、サービスはSERVICE_CONTROL_NETBINDADDSERVICE_CONTROL_NETBINDREMOVE、SERVICE_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 通知を受信できます。 ControlServiceControlServiceEx は、この通知を送信できないことに注意してください。システムのみが送信できます。

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

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

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

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 通知をサービスに送信できます。
SERVICE_ACCEPT_TIMECHANGE
0x00000200
システム時刻が変更されると、サービスに通知されます。 これにより、システムは SERVICE_CONTROL_TIMECHANGE 通知をサービスに送信できます。

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: このコントロール コードはサポートされていません。

SERVICE_ACCEPT_TRIGGEREVENT
0x00000400
サービスが登録されているイベントが発生すると、サービスに通知されます。 これにより、システムは SERVICE_CONTROL_TRIGGEREVENT 通知をサービスに送信できます。

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: このコントロール コードはサポートされていません。

SERVICE_ACCEPT_USERMODEREBOOT
0x00000800
ユーザーが再起動を開始すると、サービスに通知されます。

Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: このコントロール コードはサポートされていません。

dwWin32ExitCode

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

dwServiceSpecificExitCode

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

dwCheckPoint

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

dwWaitHint

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

要件

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

関連項目

ControlService

ControlServiceEx

EnumDependentServices

EnumServicesStatus

QueryServiceStatus

SetServiceStatus