# 定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

Win32Service サービス型のビットマスク
定数 | 値 | 説明
--- | --- | ---
`WIN32_SERVICE_WIN32_OWN_PROCESS` | `0x00000010` | サービスは自分のプロセスで動作します。
`WIN32_SERVICE_INTERACTIVE_PROCESS` | `0x00000100` | サービスはデスクトップとのやりとりができます。このオプションは、Windows Vista 以降では使えません。
`WIN32_SERVICE_WIN32_OWN_PROCESS_INTERACTIVE` | `0x00000110`j | サービスは自分のプロセスで動作し、デスクトップとのやりとりができます。このオプションは、Windows Vista 以降では使えません。

Win32Service サービスステータス定数
定数 | 値 | 説明
--- | --- | ---
`WIN32_SERVICE_CONTINUE_PENDING` | `0x00000005` | サービスの続行が待機状態です。
`WIN32_SERVICE_PAUSE_PENDING` | `0x00000006` | サービスの中断が待機状態です。
`WIN32_SERVICE_PAUSED` | `0x00000007` | サービスは中断しています。
`WIN32_SERVICE_RUNNING` | `0x00000004` | サービスは実行中です。
`WIN32_SERVICE_START_PENDING` | `0x00000002` | サービスは開始中です。
`WIN32_SERVICE_STOP_PENDING` | `0x00000003` | サービスは停止中です。
`WIN32_SERVICE_STOPPED` | `0x00000001` | サービスは動作していません。

Win32Service サービス制御メッセージ定数
定数 | 値 | 説明
--- | --- | ---
`WIN32_SERVICE_CONTROL_CONTINUE` | `0x00000003` | 停止中のサービスに再開を指示します。
`WIN32_SERVICE_CONTROL_DEVICEEVENT` | `0x0000000B` |
`WIN32_SERVICE_CONTROL_HARDWAREPROFILECHANGE` | `0x0000000C` |
`WIN32_SERVICE_CONTROL_INTERROGATE` | `0x00000004` | 現状の情報をサービス制御マネージャーに報告するようサービスに指示します。
`WIN32_SERVICE_CONTROL_NETBINDADD` | `0x00000007` | バインドする新しいコンポーネントがあった場合、ネットワークサービスに通知します。
`WIN32_SERVICE_CONTROL_NETBINDDISABLE` | `0x0000000A` | バインドされているコンポーネントが無効にされた場合、ネットワークサービスに通知します。
`WIN32_SERVICE_CONTROL_NETBINDENABLE` | `0x00000009` | 無効にされていたバインディングが有効になった場合、ネットワークサービスに通知します。
`WIN32_SERVICE_CONTROL_NETBINDREMOVE` | `0x00000008` | バインドされているコンポーネントが削除された場合、ネットワークサービスに通知します。
`WIN32_SERVICE_CONTROL_PARAMCHANGE` | `0x00000006` | 起動時のパラメータが変更されたことをサービスに通知します。
`WIN32_SERVICE_CONTROL_PAUSE` | `0x00000002` | サービスに停止するよう指示します。
`WIN32_SERVICE_CONTROL_POWEREVENT` | `0x0000000D` |
`WIN32_SERVICE_CONTROL_PRESHUTDOWN` | `0x0000000F` | サービスに、システムのシャットダウンを通知します。 この通知を処理するサービスは、サービスが終了するかあるいはシャットダウン前のタイムアウトに達するまで システムのシャットダウンを待機させることができます。 この値は、Windows Server 2003 および Windows XP/2000 以降では使えません。
`WIN32_SERVICE_CONTROL_SESSIONCHANGE` | `0x0000000E` |
`WIN32_SERVICE_CONTROL_SHUTDOWN` | `0x00000005` | サービスに、システムがシャットダウンするので後始末をするよう通知します。 サービスがこの制御コードを受け付けた場合は、 後始末のタスクを終えてからサービスを終了しなければなりません。 SCM がこの制御コードを送った後は、他の制御コードを送ることはできません。
`WIN32_SERVICE_CONTROL_STOP` | `0x00000001` | サービスに終了するよう指示します。

Win32Service サービス制御メッセージが受領されたときのビットマスク
定数 | 値 | 説明
--- | --- | ---
`WIN32_SERVICE_ACCEPT_HARDWAREPROFILECHANGE` | `0x00000020` | コンピューターのハードウェアプロファイルが変化した場合にサービスに通知します。 これによって、システムは `WIN32_SERVICE_CONTROL_HARDWAREPROFILECHANGE` をサービスに通知できるようになります。
`WIN32_SERVICE_ACCEPT_NETBINDCHANGE` | `0x00000010` | このサービスは、停止や再起動なしに、 バインディングの変更を受け入れることができるネットワークコンポーネントです。 この制御コードは、サービスが `WIN32_SERVICE_CONTROL_NETBINDADD`, `WIN32_SERVICE_CONTROL_NETBINDREMOVE`, `WIN32_SERVICE_CONTROL_NETBINDENABLE` および `WIN32_SERVICE_CONTROL_NETBINDDISABLE` の通知を受け取れることを表します。
`WIN32_SERVICE_ACCEPT_PARAMCHANGE` | `0x00000008` | サービスを停止したり再起動することなく、スタートアップパラメータを再読込できるサービスです。 この制御コードは、サービスが `WIN32_SERVICE_CONTROL_PARAMCHANGE` の通知を受け取れることを表します。
`WIN32_SERVICE_ACCEPT_PAUSE_CONTINUE` | `0x00000002` | サービスは一時停止して続行できます。この制御コードは、サービスが `WIN32_SERVICE_CONTROL_PAUSE` および `WIN32_SERVICE_CONTROL_CONTINUE` の通知を受け取れることを表します。
`WIN32_SERVICE_ACCEPT_POWEREVENT` | `0x00000040` | コンピューターの電源状態が変化した時にサービスに通知します。 これによって、システムが `WIN32_SERVICE_CONTROL_POWEREVENT` 通知をサービスに送信できるようになります。
`WIN32_SERVICE_ACCEPT_PRESHUTDOWN` | `0x00000100` | サービスはシャットダウン前のタスクを処理できます。この制御コードは、サービスが `WIN32_SERVICE_CONTROL_PRESHUTDOWN` の通知を受け取れることを表します。 この値は Windows Server 2003 や Windows XP/2000 以降では使えません。
`WIN32_SERVICE_ACCEPT_SESSIONCHANGE` | `0x00000080` | コンピューターのセッション状態が変更された場合にサービスに通知します。 これによって、システムは `WIN32_SERVICE_CONTROL_SESSIONCHANGE` 通知をサービスに送信できるようになります。 Windows 2000 では、この値は使えません。
`WIN32_SERVICE_ACCEPT_SHUTDOWN` | `0x00000004` | サービスはシステムのシャットダウン通知を受け取ります。この制御コードは、サービスが `WIN32_SERVICE_CONTROL_SHUTDOWN` の通知を受け取れることを表します。
`WIN32_SERVICE_ACCEPT_STOP` | `0x00000001` | サービスは終了できます。この制御コードは、サービスが `WIN32_SERVICE_CONTROL_STOP` の通知を受け取れることを表します。
`WIN32_SERVICE_ACCEPT_TIMECHANGE` | `0x00000200` | システム時刻が変更された場合にサービスに通知します。 これによって、システムは `WIN32_SERVICE_CONTROL_TIMECHANGE` 通知をサービスに送信できるようになります。 Windows Server 2008, Windows Vista, Windows Server 2003, and Windows XP/2000 では、この制御コードはサポートされていません。
`WIN32_SERVICE_ACCEPT_TRIGGEREVENT` | `0x00000400` | サービスの登録イベントが起きた場合にサービスに通知します。 これによって、システムは `WIN32_SERVICE_CONTROL_TRIGGEREVENT` 通知をサービスに送信できるようになります。 Windows Server 2008, Windows Vista, Windows Server 2003, and Windows XP/2000 では、この制御コードはサポートされていません。

Win32Service サービス開始型定数
定数 | 値 | 説明
--- | --- | ---
`WIN32_SERVICE_BOOT_START` | `0x00000000` | デバイスドライバがシステムローダによって開始されました。 この値はドライバサービス向けにのみ有効です。
`WIN32_SERVICE_SYSTEM_START` | `0x00000001` | デバイスドライバが IoInitSystem 関数によって開始されました。 この値はドライバサービス向けにのみ有効です。
`WIN32_SERVICE_AUTO_START` | `0x00000002` | システムの起動時に、サービス制御マネージャーが自動的にサービスを開始します。
`WIN32_SERVICE_DEMAND_START` | `0x00000003` | プロセスが StartService 関数をコールしたときに、 サービス制御マネージャーがサービスを開始します。
`WIN32_SERVICE_DISABLED` | `0x00000004` | サービスを開始することができません。開始させようとすると、エラーコード `WIN32_ERROR_SERVICE_DISABLED` を返します。

Win32Service サービスエラー制御定数
定数 | 値 | 説明
--- | --- | ---
`WIN32_SERVICE_ERROR_IGNORE` | `0x00000000` | 起動プログラムはエラーを無視し、開始操作を続行します。
`WIN32_SERVICE_ERROR_NORMAL` | `0x00000001` | 起動プログラムはエラーをイベントログに記録し、開始操作を続行します。
`WIN32_SERVICE_ERROR_SEVERE` | `0x00000002` | 起動プログラムはエラーをイベントログに記録します。 最後に正常起動した構成で起動中の場合、 起動処理は続行されます。そうでない場合、 システムは最後に正常起動した構成で再起動されます。
`WIN32_SERVICE_ERROR_CRITICAL` | `0x00000003` | 起動プログラムは可能であれば、エラーをイベントログに記録します。 最後に正常起動した構成で起動中の場合、 起動処理は失敗します。 そうでない場合、 システムは最後に正常起動した構成で再起動されます。

Win32Service サービスフラグ定数
定数 | 値 | 説明
--- | --- | ---
`WIN32_SERVICE_RUNS_IN_SYSTEM_PROCESS` | `0x00000001` | サービスはシステムプロセスで動作し、常に動作している必要があります。

> 注意:

> これらの定数は、Win32Service 1.0.0 以降では使えません。

Win32 エラーコード
定数 | 値 | 説明
--- | --- | ---
`WIN32_ERROR_ACCESS_DENIED` | `0x00000005` | SCM データベースへのハンドルに適切なアクセス権限がありません。
`WIN32_ERROR_CIRCULAR_DEPENDENCY` | `0x00000423` | 循環依存のサービスを指定しました。
`WIN32_ERROR_DATABASE_DOES_NOT_EXIST` | `0x00000429` | 指定したデータベースが存在しません。
`WIN32_ERROR_DEPENDENT_SERVICES_RUNNING` | `0x0000041B` | 他の実行中のサービスがこのサービスに依存しているため、サービスを終了できません。
`WIN32_ERROR_DUPLICATE_SERVICE_NAME` | `0x00000436` | その表示名が、サービス制御マネージャーのデータベース内に (データベース名あるいは別の表示名として) 既に存在します。
`WIN32_ERROR_FAILED_SERVICE_CONTROLLER_CONNECT` | `0x00000427` | このエラーは、サービスではなくコンソールアプリケーションとしてプログラムを実行したときに返されます。 デバッグ用にコンソールアプリケーションとして実行する場合は、 サービスに固有のコードをコールしないようにしましょう。
`WIN32_ERROR_INSUFFICIENT_BUFFER` | `0x0000007A` | サービス状況構造体用のバッファが小さすぎます。構造体には何も書き込まれませんでした。
`WIN32_ERROR_INVALID_DATA` | `0x0000000D` | 指定したサービス状況構造体が無効です。
`WIN32_ERROR_INVALID_HANDLE` | `0x00000006` | サービス制御マネージャーデータベースへのハンドルが無効です。
`WIN32_ERROR_INVALID_LEVEL` | `0x0000007C` | InfoLevel パラメータにサポートしていない値が含まれています。
`WIN32_ERROR_INVALID_NAME` | `0x0000007B` | 指定したサービス名が無効です。
`WIN32_ERROR_INVALID_PARAMETER` | `0x00000057` | 指定したパラメータが無効です。
`WIN32_ERROR_INVALID_SERVICE_ACCOUNT` | `0x00000421` | `user` で指定したユーザーアカウントが存在しません。 win32_create_service() を参照ください。
`WIN32_ERROR_INVALID_SERVICE_CONTROL` | `0x0000041C` | 指定した制御コードが無効、あるいはこのサービスでは処理できません。
`WIN32_ERROR_PATH_NOT_FOUND` | `0x00000003` | サービスのバイナリファイルが見つかりません。
`WIN32_ERROR_SERVICE_ALREADY_RUNNING` | `0x00000420` | サービスのインスタンスが既に動作中です。
`WIN32_ERROR_SERVICE_CANNOT_ACCEPT_CTRL` | `0x00000425` | 指定した制御コードをサービスに送れませんでした。サービスの状態が `WIN32_SERVICE_STOPPED`、 `WIN32_SERVICE_START_PENDING` あるいは `WIN32_SERVICE_STOP_PENDING` だったためです。
`WIN32_ERROR_SERVICE_DATABASE_LOCKED` | `0x0000041F` | データベースがロックされています。
`WIN32_ERROR_SERVICE_DEPENDENCY_DELETED` | `0x00000433` | このサービスが依存する別のサービスが存在しないか、あるいは削除マークがつけられています。
`WIN32_ERROR_SERVICE_DEPENDENCY_FAIL` | `0x0000042C` | このサービスが依存する別のサービスの起動に失敗しました。
`WIN32_ERROR_SERVICE_DISABLED` | `0x00000422` | サービスが無効化されました。
`WIN32_ERROR_SERVICE_DOES_NOT_EXIST` | `0x00000424` | 指定したサービスはインストール済みのサービスの中に存在しません。
`WIN32_ERROR_SERVICE_EXISTS` | `0x00000431` | 指定したサービスは既にこのデータベースに存在します。
`WIN32_ERROR_SERVICE_LOGON_FAILED` | `0x0000042D` | ログオンに失敗したためサービスを起動できません。このエラーが発生するのは、 そのサービスが "Log on as a service" 権限のないアカウントで動作するように設定されている場合です。
`WIN32_ERROR_SERVICE_MARKED_FOR_DELETE` | `0x00000430` | 指定したサービスには既に削除マークがついています。
`WIN32_ERROR_SERVICE_NO_THREAD` | `0x0000041E` | このサービスのスレッドを作成できません。
`WIN32_ERROR_SERVICE_NOT_ACTIVE` | `0x00000426` | サービスが起動していません。
`WIN32_ERROR_SERVICE_REQUEST_TIMEOUT` | `0x0000041D` | サービスのプロセスは起動しましたが StartServiceCtrlDispatcher をコールしていません。あるいは StartServiceCtrlDispatcher をコールしたスレッドが制御ハンドラ関数でブロックされています。
`WIN32_ERROR_SHUTDOWN_IN_PROGRESS` | `0x0000045B` | システムがシャットダウン中なので、この関数はコールできません。
`WIN32_ERROR_SERVICE_SPECIFIC_ERROR` | `0x0000042A` | サービスがサービス特有のエラーコードを返しました。
`WIN32_NO_ERROR` | `0x00000000` | エラーはありません。

Win32 ベース優先度クラス
定数 | 値 | 説明
--- | --- | ---
`WIN32_ABOVE_NORMAL_PRIORITY_CLASS` | `0x00008000` | WIN32_NORMAL_PRIORITY_CLASS よりも高いけれど WIN32_HIGH_PRIORITY_CLASS よりは低い優先度のプロセス。
`WIN32_BELOW_NORMAL_PRIORITY_CLASS` | `0x00004000` | WIN32_IDLE_PRIORITY_CLASS よりも高いけれど WIN32_NORMAL_PRIORITY_CLASS よりは低い優先度のプロセス。
`WIN32_HIGH_PRIORITY_CLASS` | `0x00000080` | ただちに実行しなければならないような、時間制約の厳しいプロセス。 このプロセスのスレッドは、優先度クラスが NORMAL あるいは IDLE であるすべてのプロセスのスレッドを先取りします。 このクラスを使う例はタスクリストです。 タスクリストは、ユーザーが呼び出したときは OS の負荷にかかわらずすぐに反応しなければなりません。 この優先度クラスを使うときには細心の注意が必要です。 この優先度クラスのアプリケーションは CPU をほぼすべて使い切ってしまうこともあるからです。
`WIN32_IDLE_PRIORITY_CLASS` | `0x00000040` | システムがアイドル状態のときにだけスレッドが実行されるプロセス。 より優先度クラスの高いプロセスが実行中の場合は、 そちらのスレッドが優先的に実行されます。 このクラスを使う例はスクリーンセーバーです。 この優先度クラスは、子プロセスにも引き継がれます。
`WIN32_NORMAL_PRIORITY_CLASS` | `0x00000020` | 特別なスケジューリングが不要なプロセス。
`WIN32_REALTIME_PRIORITY_CLASS` | `0x00000100` | 可能な限り優先度を高くするプロセス。 このプロセスのスレッドは、他のすべてのプロセスのスレッドを先取りします。 重要なタスクをこなす OS のプロセスであっても例外ではありません。 リアルタイムプロセスを非常に短い間隔で実行させると、 ディスクキャッシュがフラッシュされなくなったり マウスが反応しなくなったりすることがあり得ます。

Win32 リカバリアクション
定数 | 値 | 説明
--- | --- | ---
`WIN32_SC_ACTION_NONE` | `0x00000000` | アクションを実行しません。
`WIN32_SC_ACTION_RESTART` | `0x00000001` | サービスを再起動します。
`WIN32_SC_ACTION_REBOOT` | `0x00000002` | サーバーを再起動します。
`WIN32_SC_ACTION_RUN_COMMAND` | `0x00000003` | コマンドを実行します。

Win32 サービスの情報
定数 | 値 | 説明
--- | --- | ---
`WIN32_INFO_SERVICE` | "service" |
`WIN32_INFO_DISPLAY` | "display" |
`WIN32_INFO_USER` | "user" |
`WIN32_INFO_PASSWORD` | "password" |
`WIN32_INFO_PATH` | "path" |
`WIN32_INFO_PARAMS` | "params" |
`WIN32_INFO_DESCRIPTION` | "description" |
`WIN32_INFO_START_TYPE` | "start_type" |
`WIN32_INFO_LOAD_ORDER` | "load_order" |
`WIN32_INFO_SVC_TYPE` | "svc_type" |
`WIN32_INFO_ERROR_CONTROL` | "error_control" |
`WIN32_INFO_DELAYED_START` | "delayed_start" |
`WIN32_INFO_BASE_PRIORITY` | "base_priority" |
`WIN32_INFO_DEPENDENCIES` | "dependencies" |
`WIN32_INFO_RECOVERY_DELAY` | "recovery_delay" |
`WIN32_INFO_RECOVERY_ACTION_1` | "recovery_action_1" |
`WIN32_INFO_RECOVERY_ACTION_2` | "recovery_action_2" |
`WIN32_INFO_RECOVERY_ACTION_3` | "recovery_action_3" |
`WIN32_INFO_RECOVERY_RESET_PERIOD` | "recovery_reset_period" |
`WIN32_INFO_RECOVERY_ENABLED` | "recovery_enabled" |
`WIN32_INFO_RECOVERY_REBOOT_MSG` | "recovery_reboot_msg" |
`WIN32_INFO_RECOVERY_COMMAND` | "recovery_command" |

Win32 Service rights
定数 | 値 | 説明
--- | --- | ---
`WIN32_SERVICE_ALL_ACCESS` | `0x000F003F` |
`WIN32_SERVICE_CHANGE_CONFIG` | `0x00000002` |
`WIN32_SERVICE_ENUMERATE_DEPENDENTS` | `0x00000008` |
`WIN32_SERVICE_INTERROGATE` | `0x00000080` |
`WIN32_SERVICE_PAUSE_CONTINUE` | `0x00000040` |
`WIN32_SERVICE_QUERY_CONFIG` | `0x00000001` |
`WIN32_SERVICE_QUERY_STATUS` | `0x00000004` |
`WIN32_SERVICE_START` | `0x00000010` |
`WIN32_SERVICE_STOP` | `0x00000020` |
`WIN32_SERVICE_USER_DEFINED_CONTROL` | `0x00000100` |
`WIN32_ACCESS_SYSTEM_SECURITY` | `0x00001000` |
`WIN32_DELETE` | `0x00010000` |
`WIN32_READ_CONTROL` | `0x00020000` |
`WIN32_WRITE_DAC` | `0x00040000` |
`WIN32_WRITE_OWNER` | `0x00080000` |
`WIN32_GENERIC_READ` | Include rights: `WIN32_STANDARD_RIGHTS_READ`, `WIN32_SERVICE_QUERY_CONFIG`, `WIN32_SERVICE_QUERY_STATUS`, `WIN32_SERVICE_INTERROGATE`, `WIN32_SERVICE_ENUMERATE_DEPENDENTS` |
`WIN32_GENERIC_WRITE` | Include rights: `WIN32_STANDARD_RIGHTS_WRITE`, `WIN32_SERVICE_CHANGE_CONFIG` |
`WIN32_GENERIC_EXECUTE` | Include rights: `WIN32_STANDARD_RIGHTS_EXECUTE`, `WIN32_SERVICE_START`, `WIN32_SERVICE_STOP`, `WIN32_SERVICE_PAUSE_CONTINUE`, `WIN32_SERVICE_USER_DEFINED_CONTROL` |

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open