休止状態からのウェイクと高速スタートアップの区別Distinguishing Fast Startup from Wake-from-Hibernation

Windows 8 以降、高速スタートアップ モードは、従来のコールド起動時が通常よりも短時間でコンピューターを起動します。Starting with Windows 8, a fast startup mode is available to start a computer in less time than is typically required for a traditional, cold startup. 高速スタートアップは、コールド起動と休止状態-のウェイク アップのスタートアップのハイブリッド組み合わせです。A fast startup is a hybrid combination of a cold startup and a wake-from-hibernation startup. 多くの場合、カーネル モード デバイス ドライバーは、自分のデバイスがユーザーの期待どおりに動作できるように、休止状態-のスリープ解除からから高速スタートアップを区別するために必要があります。Frequently, kernel-mode device drivers need to distinguish fast startups from wake-from-hibernation so that their devices behave as users expect. ドライバーがで提供される情報の使用時に区別する、システム電源 Irpします。To make this distinction, drivers can use information that is available in system power IRPs.

、コールド起動中には、ブート ローダーは、Windows カーネルのファイルのセクションでは、をメモリに読み込むと、リンクすることによってカーネル メモリのイメージを構築します。During a cold startup, the boot loader constructs a kernel memory image by loading the sections of the Windows kernel file into memory and linking them. 次に、カーネルはコアのシステム関数を構成します、コンピューターに接続されているデバイスを列挙し、それらのドライバーを読み込みます。Next, the kernel configures core system functions, enumerates the devices attached to the computer, and loads drivers for them.

これに対し、この高速スタートアップは単に、休止状態ファイル (Hiberfil.sys) を Windows カーネルと読み込まれているドライバーの以前に保存したイメージを復元するメモリに読み込みます。In contrast, a fast startup simply loads the hibernation file (Hiberfil.sys) into memory to restore the previously saved image of the Windows kernel and loaded drivers. 高速スタートアップをコールド起動に比べて大幅に少ない時間がかかる傾向があります。A fast startup tends to take significantly less time than a cold startup.

を高速スタートアップを準備するには、Windows は、ハイブリッドのシャット ダウン シーケンスは完全にシャット ダウン シーケンスの要素を結合して、休止状態-の準備のシーケンスを実行します。To prepare for a fast startup, Windows performs a hybrid shutdown sequence that combines elements of a full shutdown sequence and a prepare-for-hibernation sequence. 最初に、完全にシャット ダウンのように、Windows はすべてのアプリケーションを終了し、すべてのユーザー セッションをログオフします。First, as in a full shutdown, Windows closes all applications and logs off all user sessions. この段階で、システムの状態がだけが開始されるコンピューターに似ていますが、アプリケーションが実行されていないが、Windows カーネルが読み込まれ、システムのセッションが実行されています。At this stage, the system state is similar to that of a computer that has just started up—no applications are running, but the Windows kernel is loaded and the system session is running. 次に、電源マネージャはシステムを休止状態にするようにデバイスを準備することを通知するデバイス ドライバーをで電源の Irp に送信します。Next, the power manager sends system power IRPs to device drivers to tell them to prepare their devices to enter hibernation. 最後に、Windows は Hiberfil.sys に (読み込まれたカーネル モード ドライバーを含む)、カーネル メモリのイメージを保存し、コンピューターをシャット ダウンします。Finally, Windows saves the kernel memory image (including the loaded kernel-mode drivers) in Hiberfil.sys and shuts down the computer.

既定では、Windows 8 は、コールド起動の代わりに高速スタートアップを使用します。By default, Windows 8 uses a fast startup in place of a cold startup. ユーザーは通常、高速とコールドの新興企業間の違いを無視が、ユーザーの期待を満たすためには、高速スタートアップする必要があります動作コールド起動の場合と同じです。Users can typically ignore the differences between fast and cold startups, but, to meet users' expectations, fast startups should behave the same as cold startups. 具体的には、コンピューターに接続されているデバイスには、コールド起動の場合と同じ高速スタートアップを同じように構成します。In particular, the devices attached to the computer should be configured the same for a fast startup as they would be for a cold startup.

デバイスのドライバーがコールド起動時または休止からのスリープ解除が発生したかどうかに応じて異なる方法でデバイスを構成した場合このドライバーは、高速の起動後にデバイスを構成いなくても (ウェイク-から-休止状態) ではなく、コールド起動発生しました。If the driver for a device configures the device differently depending on whether a cold startup or a wake-from-hibernation occurred, this driver should, after a fast startup, configure the device as though a cold startup (instead of a wake-from-hibernation) occurred. たとえば、システム提供の NDIS ドライバーには、ミニポート ウェイク アップ機能休止からのスリープ解除ではなく高速スタートアップが無効にします。For example, the system-supplied NDIS driver disables miniport wake capabilities on a fast startup but not on a wake-from-hibernation.

休止からのスリープ解除から高速スタートアップを区別するために、ドライバーがシステム セット電源の情報を確認できます (IRP_MN_設定_POWER) IRPコンピューターが、S0 を入力したこと、ドライバーに通知する (操作) の状態。To distinguish a fast startup from a wake-from-hibernation, a driver can inspect the information in the system set-power (IRP_MN_SET_POWER) IRP that informs the driver that the computer has entered the S0 (working) state. ドライバーのI/O スタックの場所この IRP が含まれています、 Powerは電源関連の情報を格納する構造体のメンバー。The driver's I/O stack location in this IRP contains a Power member, which is a structure that contains power-related information. 以降、Windows Vista では、 Powerメンバー構造に含まれる、 SystemPowerStateContextは、メンバー、 システム_POWER_状態_コンテキスト前のシステム電源の状態に関する情報を含む構造体。Starting with Windows Vista, the Power member structure contains a SystemPowerStateContext member, which is a SYSTEM_POWER_STATE_CONTEXT structure that contains information about the previous system power states. この情報は、ビット フィールドでエンコード、システム_POWER_状態_コンテキスト構造体。This information is encoded in bit fields in the SYSTEM_POWER_STATE_CONTEXT structure.

ほとんどのビット フィールドのシステム_POWER_状態_コンテキスト構造がシステム用に予約されているし、ドライバーには見えません。Most of the bit fields in the SYSTEM_POWER_STATE_CONTEXT structure are reserved for system use and are opaque to drivers. ただし、この構造体には、2 つのビット フィールドが含まれるTargetSystemStateEffectiveSystemState、高速スタートアップかどうかを判断するドライバーによって読み取ることができる、または休止からのスリープ解除が発生しました。However, this structure contains two bit fields, TargetSystemState and EffectiveSystemState, that can be read by drivers to determine whether a fast startup or a wake-from-hibernation occurred.

TargetSystemStateEffectiveSystemStateビット フィールドに設定されますシステム_POWER_状態列挙値。The TargetSystemState and EffectiveSystemState bit fields are set to SYSTEM_POWER_STATE enumeration values. 場合TargetSystemState = PowerSystemHibernateEffectiveSystemState = PowerSystemHibernate、休止からのスリープ解除が発生しました。If TargetSystemState = PowerSystemHibernate and EffectiveSystemState = PowerSystemHibernate, a wake-from-hibernation occurred. ただし場合、 TargetSystemState = PowerSystemHibernateEffectiveSystemState = PowerSystemShutdown、高速スタートアップが発生しました。However, if TargetSystemState = PowerSystemHibernate and EffectiveSystemState = PowerSystemShutdown, a fast startup occurred.

TargetSystemStateビット フィールドは、ドライバーがコンピューターをシャット ダウンまたは休止状態を入力する前にシステムの電源 IRP を受け取ったの最後のシステム電源状態遷移を指定します。The TargetSystemState bit field specifies the last system power state transition for which the driver received a system power IRP before the computer shut down or entered hibernation. EffectiveSystemStateユーザーによって認識されたビット フィールドをデバイスの以前システム電源の有効な状態を示します。The EffectiveSystemState bit field indicates the effective previous system power state of the device, as perceived by the user. TargetSystemStateEffectiveSystemState場合、ドライバーが休止状態が、ハイブリッドへの切り替えを保留中のシステムの通知を受信するなど、値が一致しないがありますその後、シャット ダウンが発生しました。The TargetSystemState and EffectiveSystemState values might not match if, for example, the driver received notification of a pending system transition to the hibernation state, but a hybrid shutdown subsequently occurred.

詳細については、次を参照してください。 システム_POWER_状態_コンテキストします。For more information, see SYSTEM_POWER_STATE_CONTEXT.