RmShutdown 関数 (restartmanager.h)

アプリケーションのシャットダウンを開始します。 この関数は、 RmStartSession 関数を使用して再起動マネージャー セッションを開始したインストーラーからのみ呼び出すことができます。

構文

DWORD RmShutdown(
  [in]           DWORD                    dwSessionHandle,
  [in]           ULONG                    lActionFlags,
  [in, optional] RM_WRITE_STATUS_CALLBACK fnStatus
);

パラメーター

[in] dwSessionHandle

既存の再起動マネージャー セッションへのハンドル。

[in] lActionFlags

コンポーネントのシャットダウン 構成する 1 つ以上のRM_SHUTDOWN_TYPEオプション。 次の値を OR 演算子で組み合わせて、すべてのアプリケーションが再起動のために登録されている場合にのみ、応答しないアプリケーションとサービスを強制的にシャットダウンするように指定できます。

意味
RmForceShutdown
0x1
タイムアウト期間後に、応答しないアプリケーションとサービスを強制的にシャットダウンします。 シャットダウン要求に応答しないアプリケーションは、30 秒以内に強制的にシャットダウンされます。 シャットダウン要求に応答しないサービスは、20 秒後に強制的にシャットダウンされます。
RmShutdownOnlyRegistered
0x10
RegisterApplicationRestart 関数を使用してすべてのアプリケーションが再起動のために登録されている場合にのみ、アプリケーションをシャットダウンします。 プロセスまたはサービスを再起動できない場合、プロセスまたはサービスはシャットダウンされません。

[in, optional] fnStatus

この関数の実行中に詳細な状態を伝えるために使用されるRM_WRITE_STATUS_CALLBACK関数へのポインター。 NULL の場合、状態は指定されません。

戻り値

これは、受信した最新のエラーです。 この関数は、Winerror.h で定義されている システム エラー コード のいずれかを返すことができます。

意味
ERROR_SUCCESS
0
すべてのシャットダウン、再起動、コールバック操作が正常に完了しました。
ERROR_FAIL_NOACTION_REBOOT
350
シャットダウン 操作は実行されませんでした。 1 つ以上のプロセスまたはサービスでは、システムの再起動をシャットダウンする必要があります。 このエラー コードは、再起動マネージャーがアプリケーションをシャットダウンする前にシステムの再起動が必要であることを検出したときに返されます。
ERROR_FAIL_SHUTDOWN
351
一部のアプリケーションをシャットダウンできませんでした。 RmGetList 関数によって返されるRM_PROCESS_INFO構造体の AppStatus には、更新された状態情報が含まれています。
ERROR_CANCELLED
1223
このエラー値は、操作を取り消す要求が成功した場合に RmShutdown 関数によって返されます。
ERROR_SEM_TIMEOUT
121
再起動マネージャー関数は、割り当てられた時間内にレジストリ書き込みミューテックスを取得できませんでした。 再起動マネージャーをさらに使用すると失敗する可能性があるため、システムの再起動をお勧めします。
ERROR_BAD_ARGUMENTS
160
1 つ以上の引数が正しくありません。 Null 以外の値と 0 以外の値を必要とするパラメーターに NULL ポインターまたは 0 が渡された場合、このエラー値は Restart Manager 関数によって返されます。
ERROR_WRITE_FAULT
29
操作でレジストリの読み取りまたは書き込みができませんでした。
ERROR_OUTOFMEMORY
14
十分なメモリがないため、再起動マネージャー操作を完了できませんでした。
ERROR_INVALID_HANDLE
6
指定されたハンドルに対して再起動マネージャー セッションが存在しません。

注釈

RmShutdown 関数は RmGetList を呼び出し、登録されたリソースを現在使用しているプロセスの一覧を更新してから、プロセスをシャットダウンします。 その後、 RmShutdown 関数は、最新のリストの登録済みリソースを使用してプロセスのシャットダウンを試みます。 RmShutdown 関数は、RmGetList 関数によって返されるRM_PROCESS_INFO構造体の AppStatus メンバーを詳細な状態情報で更新します。

再起動マネージャーは、異なるユーザーまたはターミナル セッションを分離する特権を尊重します。 LocalSystem 特権を持つサービスとして実行されているインストーラーは、別のユーザーまたはターミナル セッション内のアプリケーションをシャットダウンまたは再起動できません。 インストーラーは、他のセッションで実行されているアプリケーションをシャットダウンして再起動するカスタム メソッドを実装する必要があります。 1 つの方法は、もう一方のセッションで新しいインストーラー プロセスを開始して、シャットダウンと再起動の操作を実行することです。

RmShutdown 関数がすべてのアプリケーションとサービスをシャットダウンできないというエラーが返された場合でも、インストーラーは RmRestart 関数を使用してアプリケーションとサービスを常に再起動する必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー restartmanager.h
Library Rstrtmgr.lib
[DLL] Rstrtmgr.dll

こちらもご覧ください

RegisterApplicationRestart

RmCancelCurrentTask

RmRestart