IDE_HW_CONTROL コールバック関数 (irb.h)

IdeHwControl ミニポート ドライバー ルーチンは、プラグ アンド プレイ (PnP) と電源イベントについてミニポート ドライバーに通知します。

メモ ATA ポート ドライバーと ATA ミニポート ドライバー モデルは、今後変更または使用できない可能性があります。 代わりに、 Storport ドライバー モデルと Storport ミニポート ドライバー モデルを使用することをお勧めします。
 

構文

IDE_HW_CONTROL IdeHwControl;

BOOLEAN IdeHwControl(
  [in]      PVOID ChannelExtension,
  [in]      IDE_CONTROL_ACTION ControlAction,
  [in, out] PVOID Parameters
)
{...}

パラメーター

[in] ChannelExtension

チャネル拡張機能へのポインター。

[in] ControlAction

実行するコントロール アクションを示す IDE_CONTROL_ACTION 型の列挙子値を格納します。

[in, out] Parameters

コントロール アクションに関連付けられているパラメーターを含むバッファーへのポインター。 このパラメーターには、次の表のいずれかの値を指定できます。

コントロール アクション パラメーター 説明
IdeStart パラメーターは、IDE_CHANNEL_CONFIGURATION型の構造体を指します。 ポート ドライバーがチャネルを開始していることを示します。
IdeVendorDefined パラメーターは、IDE_VENDOR_DEFINED_POWER_INFO型の構造体を指します。 ベンダー定義の電源イベントが発生していることを示します。

戻り値

操作が成功した場合、IdeHwControlTRUE を返します。 それ以外の場合は、 FALSE を返します。

注釈

ポート ドライバーは、このルーチンを呼び出す前に、チャネルに未処理の I/O がないことを確認します。 ミニポート ドライバーは、システムが別の電源状態になったときに独自の電源ポリシー メソッドを持つことができます。 これを実現するには、ミニポート ドライバーは、次の操作を行う必要があります。

  • ミニポート ドライバーの INF ファイルに電源ポリシー設定スキームを追加します。 ミニポート ドライバーで定義された電源ポリシーを表示するには、GUID が必要です。 電源設定ディレクティブの詳細については、「 INF AddPowerSetting ディレクティブ」を参照してください。 GUID の詳細については、「 ディスクの設定」を参照してください。
  • コントロール アクション IdeStart を使用してミニポート ドライバー ルーチン IdeHwControl が呼び出されたとき:
    ChannelConfiguration 構造体の SupportedAdvances.AdvancedChannelConfigurationSupported フィールドを確認します。
    ChannelConfiguration 構造体の AdvancedChannelConfiguration->Present.VendorDefinedPower フィールドを確認します。
    前に示した 2 つのフィールドの値が両方とも TRUE の場合、このバージョンの ATA ポート ドライバーではベンダー定義の電源管理がサポートされます。
    ベンダー定義の電源管理が ATA ポート ドライバーでサポートされている場合、ミニポート ドライバーは、AdvancedChannelConfiguration->VendorDefinedPower.ValidGuids フィールドと AdvancedChannelConfiguration->VendorDefinedPower.Guid[] フィールドを設定することで、特別な電源管理処理に登録できます (後者は、ミニポート ドライバーの INF ファイル内の電源ポリシーの GUID である必要があります)。
  • ベンダー定義の電源管理が登録されると、ミニポート ドライバーは、システムの電源スキームが変更されたときに、コントロール アクション IdeVendorDefined を使用して、その IdeHwControl ルーチンへの呼び出しを受信できます。
  • ミニポート ドライバーは、コントロール アクション IdeVendorDefined を使用して IdeHwControl ルーチンを処理するときに、次の操作を行う必要があります。
    構造体IDE_VENDOR_DEFINED_POWER_INFOのパラメーター フィールドの SettingGuid フィールドを、ミニポート ドライバーが登録した GUID と比較して、呼び出しがこのチャネル用であることを確認します。 GUID が一致しない場合、ミニポート ドライバーは呼び出しを完了し、アクションを実行しない必要があります。
    構造体IDE_VENDOR_DEFINED_POWER_INFOのパラメーター フィールドから Value フィールドを取得し、適切なミニポート ドライバー固有の電源管理アクションを実行します。

要件

要件
対象プラットフォーム デスクトップ
Header irb.h (Irb.h を含む)

こちらもご覧ください

AtaPortGetUncachedExtension