StartServiceCtrlDispatcherA 関数 (winsvc.h)
サービス プロセスのメイン スレッドをサービス コントロール マネージャーに接続します。これにより、スレッドが呼び出し元プロセスのサービス コントロール ディスパッチャー スレッドになります。
構文
BOOL StartServiceCtrlDispatcherA(
[in] const SERVICE_TABLE_ENTRYA *lpServiceStartTable
);
パラメーター
[in] lpServiceStartTable
呼び出し元のプロセスで実行できるサービスごとに 1 つのエントリを含む SERVICE_TABLE_ENTRY 構造体の配列へのポインター。 テーブルの最後のエントリのメンバーには、テーブルの末尾を指定する NULL 値が必要です。
戻り値
関数が成功した場合、戻り値は 0 以外です。
関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError
次のエラー コードは、サービス コントロール マネージャーによって設定できます。 その他のエラー コードは、サービス コントロール マネージャーによって呼び出されるレジストリ関数によって設定できます。
リターン コード | 形容 |
---|---|
|
このエラーは、プログラムがサービスとしてではなくコンソール アプリケーションとして実行されている場合に返されます。
デバッグ目的でプログラムをコンソール アプリケーションとして実行する場合は、このエラーが返されるときにサービス固有のコードが呼び出されないように構成します。 |
|
指定されたディスパッチ テーブルには、適切な形式ではないエントリが含まれています。 |
|
このプロセスでは、startServiceCtrlDispatcher |
備考
サービス コントロール マネージャーは、サービス プロセスを開始すると、プロセスが StartServiceCtrlDispatcher 関数を呼び出すのを待機します。 サービス プロセスのメイン スレッドは、起動後 (30 秒以内) にできるだけ早くこの呼び出しを行う必要があります。 StartServiceCtrlDispatcher
lpServiceTable パラメーターには、呼び出し元プロセスで実行できる各サービスのエントリが含まれています。 各エントリは、そのサービス ServiceMain 関数を指定します。 SERVICE_WIN32_SHARE_PROCESS サービスの場合、各エントリにはサービスの名前が含まれている必要があります。 この名前は、サービスのインストール時に CreateService 関数によって指定されたサービス名です。 SERVICE_WIN32_OWN_PROCESS サービスの場合、テーブル エントリ内のサービス名は無視されます。
サービスが独自のプロセスで実行されている場合、サービス プロセスのメイン スレッドは直ちに StartServiceCtrlDispatcher
複数のサービスがプロセスを共有し、ServiceMain 関数を呼び出す前に一般的なプロセス全体の初期化を行う必要がある場合、メイン スレッドは、StartServiceCtrlDispatcherを呼び出す前に、30 秒未満で作業を実行できます。 それ以外の場合は、プロセス全体の初期化を行うために別のスレッドを作成する必要があります。メイン スレッドは StartServiceCtrlDispatcher
サービスは、ユーザー インターフェイスを直接表示しないでください。 詳細については、「対話型サービスの
例
例については、サービス・プログラムのメイン機能の作成
手記
winsvc.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして StartServiceCtrlDispatcher を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winsvc.h (Windows.h を含む) |
ライブラリ | Advapi32.lib |
DLL | Advapi32.dll |
関連項目
ServiceMain の