次の方法で共有


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

AtaControllerChannelEnabled ミニポート ドライバー ルーチンは、指定されたチャネルが有効になっているかどうかを示します。

手記

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

構文

IDE_CHANNEL_ENABLED IdeChannelEnabled;

ATA_CHANNEL_STATE IdeChannelEnabled(
  PVOID ControllerExtension,
  ULONG Channel
)
{...}

パラメーター

ControllerExtension

[in]コントローラー拡張機能へのポインター。

Channel

[in]有効にするチャネル。

戻り値

ataControllerChannelEnabled は、ATA_CHANNEL_STATE型の列挙子値を返します。この列挙子には、次のいずれかの値を指定できます。

リターン コード 意味
ChannelStateEnabled 指定したチャネルが有効になっていることを示します。
ChannelStateDisabled 指定したチャネルが無効になっていることを示します。
ChannelStateUnKnown チャネルの状態を特定できなかったことを示します。

備考

次のシーケンスでは、ミニポート ドライバーとポート ドライバーが対話して、どのコントローラー チャネルが有効になっているかを判断する方法について説明します。

  1. ポート ドライバーは、ミニポート ドライバーの AtaAdapterControl ルーチンを呼び出し、IdeStart 制御アクションを使用します。

  2. ミニポート ドライバーは、AtaAdapterControl ルーチンを IdeStart 制御アクションを使用して処理しますが、有効になっているチャネルの数を示すために、IDE_CONTROLLER_CONFIGURATIONNumberOfChannels メンバーを初期化します。

  3. AtaAdapterControl ルーチンが戻った後、ポート ドライバーは、AtaAdapterControlによって返される ControllerConfiguration 構造体で指定されたすべての NumberOfChannels に対して、AtaControllerChannelEnabled を 1 回呼び出します。

このルーチンには、コントローラーの操作に不可欠なステップを含めてはなりません。 クラッシュダンプ操作中など、この関数がまったく呼び出されない場合があります。 さらに、この関数は、PCIIDEx が QueryDeviceRelations IRP に応答する場合にのみ、チャネルが再起動されるときに呼び出されません。

AtaControllerChannelEnabled は省略可能なルーチンです。 ミニポート ドライバーがこのルーチンを実装していない場合、ポート ドライバーは既定のハンドラーを読み込みます。 ポート ドライバーが既定のハンドラーを読み込む場合、AtaAdapterControl によって返される ControllerConfiguration 構造体の NumberOfChannels で指定されているすべてのチャネルが有効になっていると見なされます。 このルーチンにより、PCIIDEx は、有効になっているチャネルに対してのみ ATA ポート ドライバーを読み込むことができます。 これにより、スパース チャネルのサポートが可能になります (チャネル 0、チャネル 1、チャネル 3、チャネル 4、チャネル 6 などですが、チャネル 2 とチャネル 5 はサポートされません)。

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー irb.h (Irb.h を含む)

関連項目

IDE_CONTROLLER_CONFIGURATION