IDE_CHANNEL_ENABLED コールバック関数 (irb.h)
AtaControllerChannelEnabled ミニポート ドライバー ルーチンは、指定されたチャネルが有効かどうかを示します。
注意
ATA ポート ドライバーと ATA ミニポート ドライバー モデルは、今後変更または使用できない可能性があります。 代わりに、 Storport ドライバー と Storport ミニポート ドライバー モデルを使用することをお勧めします。
構文
IDE_CHANNEL_ENABLED IdeChannelEnabled;
ATA_CHANNEL_STATE IdeChannelEnabled(
PVOID ControllerExtension,
ULONG Channel
)
{...}
パラメーター
ControllerExtension
[入力]コントローラー拡張機能へのポインター。
Channel
[入力]有効にするチャネル。
戻り値
AtaControllerChannelEnabled は、 ATA_CHANNEL_STATE型の列挙子値を返します。これは、次のいずれかの値を持つことができます。
リターン コード | 意味 |
---|---|
ChannelStateEnabled | 指定したチャネルが有効になっていることを示します。 |
ChannelStateDisabled | 指定したチャネルが無効になっていることを示します。 |
ChannelStateUnKnown | チャネルの状態を特定できなかったことを示します。 |
注釈
次のシーケンスでは、ミニポート ドライバーとポート ドライバーが対話して、有効になっているコントローラー チャネルを決定する方法について説明します。
ポート ドライバーは、コントロール アクション IdeStart を使用してミニポート ドライバーの AtaAdapterControl ルーチンを呼び出します。
ミニポート ドライバーは、コントロール アクション IdeStart を使用して AtaAdapterControl ルーチンを処理しながら、有効になっているチャネルの数を示すために、IDE_CONTROLLER_CONFIGURATIONの NumberOfChannels メンバーを初期化します。
AtaAdapterControl ルーチンが返された後、ポート ドライバーは、AtaAdapterControl によって返される ControllerConfiguration 構造体で指定されたすべての NumberOfChannel に対して AtaControllerChannelEnabled を 1 回呼び出します。
このルーチンには、コントローラーの操作に不可欠なステップを含めてはいけません。 クラッシュダンプ操作中など、この関数がまったく呼び出されない状況があります。 さらに、この関数は、PCIIDEx が QueryDeviceRelations IRP に応答する場合にのみ、チャネルが再起動されたときに呼び出されません。
AtaControllerChannelEnabled は省略可能なルーチンです。 ミニポート ドライバーがこのルーチンを実装していない場合、ポート ドライバーは既定のハンドラーを読み込みます。 ポート ドライバーが既定のハンドラーを読み込む場合、IdeStart アクションの処理時に AtaAdapterControl によって返される ControllerConfiguration 構造体で NumberOfChannels によって指定されたすべてのチャネルが有効であると見なされます。 このルーチンを使用すると、PCIIDEx は、有効になっているチャネルに対してのみ ATA ポート ドライバーを読み込むことができます。 これにより、スパース チャネルのサポートが可能になります (チャネル 0、チャネル 1、チャネル 3、チャネル 4、チャネル 6 などですが、チャネル 2 とチャネル 5 はサポートされません)。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | irb.h (Irb.h を含む) |