次の方法で共有


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

IdeHwInterrupt ミニポート ドライバー ルーチンは、ミニポート ドライバーのコントローラーが接続されているホスト バス アダプター (HBA) からの割り込みを処理します。

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

構文

IDE_HW_INTERRUPT IdeHwInterrupt;

BOOLEAN IdeHwInterrupt(
  [in] PVOID ChannelExtension
)
{...}

パラメーター

[in] ChannelExtension

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

戻り値

割り込みがコントローラーのいずれかのチャネルによって生成された場合、AtaHwInterrruptTRUE を返します。 チャネルが割り込みを生成しなかった場合、ルーチンは可能な限り迅速に FALSE を 返す必要があります。

注釈

IdeHwInterrupt ルーチンは、割り込みドリブン I/O 操作を完了します。

指定されたチャネルで割り込みが生成されなかった場合、ミニポート ドライバーは、コントローラーの他のチャネルを対象とする割り込みを処理するために 、IdeHwInterrupt ルーチンに対して 2 番目の (再帰的な) 呼び出しを行う必要があります。

ミニポート ドライバーが割り込みを処理するために大量の時間が必要な場合は、次の手順に従う必要があります。

  1. HBA の割り込みを無視します。
  2. ChannelExtension パラメーターによって示されるチャネルでの割り込みを無効にします。
  3. AtaPortRequestWorkerRoutine を使用してワーカー ルーチンを要求します。
  4. ワーカー ルーチンで追加の処理を完了します。
  5. チャネルで割り込みを有効にします。
次の ATA ポート ルーチンは、 IdeHwInterrupt ルーチンから呼び出してはなりません。 ただし、ミニポート ドライバーは、ワーカー ルーチンを要求し、ワーカー ルーチンで呼び出しを行うことができます。

ワーカー ルーチンが TRUE を返す前に、HBA の割り込みをクリアする必要があります。

要件

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

こちらもご覧ください

AtaPortCompleteAllActiveRequests

AtaPortDeviceBusy

AtaPortRequestWorkerRoutine