次の方法で共有


ATA ポート ドライバーのサポート ルーチン

このページでは、システム提供の ATA ポート ドライバーによって提供されるサポート ルーチンを分類します。

ATA ドライバー ミニポート ルーチンの一覧については、「ATA ミニポート ドライバー」を参照してください。

初期化ルーチン

ATA ポート ドライバーは、次の初期化ルーチンを提供します。

ルーチンによって返される値 説明
AtaPortInitializeEx ポートとミニポート ドライバーを初期化します。

PCI 構成スペース アクセスのルーチン

ATA ポート ドライバーには、デバイスの PCI 構成領域の内容の読み取りと変更に役立つ次のルーチンが用意されています。

ルーチンによって返される値 説明
AtaPortGetBusData デバイスの PCI 構成領域内の指定した場所からデータを取得します。
AtaPortSetBusData 指定されたオフセットにある表示されたデバイスの PCI 構成スペースにデータを格納します。

I/O 要求を処理するためのルーチン

ATA ポート ドライバーには、次の I/O 要求処理サポート ルーチンが用意されています。

ルーチンによって返される値 説明
AtaPortGetScatterGatherList この要求に関連付けられている散布図/収集リストを取得します。
AtaPortGetPhysicalAddress 仮想アドレス範囲を物理アドレス範囲に変換します。
AtaPortGetDeviceBase ホスト バス アダプター (HBA) との通信に使用されるマップされた論理ベース アドレスを返します。
AtaPortGetUncachedExtension CPU とデバイスによって共有されるキャッシュされていない共通バッファーを割り当てます。
AtaPortBuildRequestSenseIrb 操作コード SCSIOP_REQUEST_SENSE の IRB をビルドして返します。
AtaPortReleaseRequestSenseIrb AtaPortBuildRequestSenseIrbを使用して割り当てられた要求センス IRB を解放します。
AtaPortCompleteAllActiveRequests 指定されたデバイスのすべてのアクティブな IRB を完了します。
AtaPortCompleteRequest 指定された IRB を完了します。

コールバック ルーチン

ミニポート ドライバーは、ポート ドライバーからのコールバックを要求するいくつかのルーチンを使用します。

ルーチンによって返される値 説明
AtaPortRequestWorkerRoutine ワーカー ルーチンを要求します。
AtaPortRequestSynchronizedRoutine 割り込みサービス ルーチン (ISR) との同期を要求します。
AtaPortControllerSyncRoutine コントローラー上のすべてのチャネルで共有されるデータ構造への同期アクセスを提供します。
AtaPortRequestTimer タイマー コールバックを要求します。

構成の変更を報告するルーチン

次のルーチンでは、ミニポート ドライバーは、チャネルに接続されているデバイスの構成に ATA ポート ドライバーの変更を通知します。

ルーチンによって返される値 説明
AtaPortBusChangeDetected 指定されたチャネルのデバイス構成の変更をポート ドライバーに通知します。
AtaPortRequestPowerStateChange 指定されたデバイスの電源状態遷移を要求します。

要求キューを制御するルーチン

ポート ドライバーは、論理ユニット番号 (LUN) 要求キューごとに 1 つと、チャネルごとに 1 つの要求キューが含まれます。 ミニポート ドライバーは、一時停止し、別の要求キューを再開する次のルーチンを使用できます。

ルーチンによって返される値 説明
AtaPortDeviceBusy 指定されたデバイスがビジーであることをポート ドライバーに通知します。
AtaPortDeviceReady 指定されたデバイスが新しい要求を受け入れる準備ができていることをポート ドライバーに通知します。

ユーティリティ ルーチン

次のルーチンは、ミニポート ドライバーの一般的なユーティリティサポート関数です。

ルーチンによって返される値 説明
AtaPortCopyMemory ある場所から別の場所にデータをコピーします。
**AtaPortMoveMemory ルーチン ある場所から別の場所にデータをコピーします。
AtaPortConvertUlongToPhysicalAddress 指定した ULONG アドレスを IDE_PHYSICAL_ADDRESS 型の値に変換します。
AtaPortConvertPhysicalAddressToUlong ULONG に IDE_PHYSICAL_ADDRESS 型のアドレスを切り捨てます。
AtaPortStallExecution ミニポート ドライバーにストールします。
AtaPortInitializeQueueTag 指定したデバイスのキュー タグ リストを初期化します。
AtaPortAllocateQueueTag 指定したデバイスのキュー タグを返します。
AtaPortReleaseQueueTag 指定したキュー タグを解放します。

デバッグおよびエラー報告ルーチン

デバッグとエラーの報告には、次のルーチンを使用できます。

ルーチンによって返される値 説明
AtaPortDebugPrint デバッガーが出力できるように、メッセージ文字列をカーネル デバッガーに渡します。

デバイス ポートとレジスタ アクセスのルーチン

ATA ポート ドライバーは、次のポートを提供し、アクセスのサポート ルーチンを登録します。

ルーチンによって返される値 説明
AtaPortReadPortBufferUchar 指定された数の符号なしバイト値を HBA からバッファーに転送します。
AtaPortReadPortBufferUlong 指定された数の ULONG 値を HBA からバッファーに転送します。
AtaPortReadPortBufferUshort 指定された数の USHORT 値を HBA からバッファーに転送します。
AtaPortReadPortUchar HBA から符号なしバイト値を読み取ります。
AtaPortReadPortUlong HBA から ULONG 値を読み取ります。
AtaPortReadPortUshort HBA から USHORT 値を読み取ります。
AtaPortReadRegisterBufferUchar HBA からバッファーに、指定された数の符号なしバイトを転送します。
AtaPortReadRegisterBufferUlong 指定された数の ULONG を HBA からバッファーに転送します。
AtaPortReadRegisterBufferUshort 指定された数の USHORT を HBA からバッファーに転送します。
AtaPortReadRegisterUchar HBA から符号なしバイト値を読み取ります。
AtaPortReadRegisterUlong HBA から ULONG 値を読み取ります。
AtaPortReadRegisterUshort HBA から USHORT 値を読み取ります。
AtaPortWritePortBufferUchar 指定したレジスタ アドレスに値を書き込みます。
AtaPortWritePortBufferUlong 指定したレジスタ アドレスに値を書き込みます。
AtaPortWritePortBufferUshort 指定したレジスタ アドレスに値を書き込みます。
AtaPortWritePortUchar 符号なしバイト値を HBA に転送します。
AtaPortWritePortUlong ULONG 値を HBA に転送します。
AtaPortWritePortUshort USHORT 値を HBA に転送します。
AtaPortWriteRegisterBufferUchar バッファーから HBA に、指定された数の符号なしバイトを転送します。
AtaPortWriteRegisterBufferUlong 指定した数の ULONG 値をバッファーから HBA に転送します。
AtaPortWriteRegisterBufferUshort 指定した数の USHORT 値をバッファーから HBA に転送します。
AtaPortWriteRegisterUchar 符号なしバイトを HBA アドレスに転送します。
AtaPortWriteRegisterUlong ULONG 値を HBA アドレスに転送します。
AtaPortWriteRegisterUshort USHORT 値を HBA アドレスに転送します。

レジストリ アクセスのルーチン

チャネル インターフェイスを実装するミニポート ドライバーは、Windows レジストリにアクセスする次のルーチンを呼び出すことができます。 コントローラー インターフェイス ルーチンのみを実装するミニポート ドライバーは、これらのルーチンにアクセスできません。

ルーチンによって返される値 説明
AtaPortRegistryAllocateBuffer レジストリ操作用のバッファーを割り当てます。
AtaPortRegistryFreeBuffer AtaPortRegistryAllocateBuffer を使用して割り当てられたレジストリ バッファーを解放します。
AtaPortRegistryControllerKeyRead レジストリ キー HKLM\CurrentControlSet\Services\<service name>\ControllerNの下の指定された値名関連付けられているデータを読み取ります。N はコントローラーの番号です。
AtaPortRegistryContrlollerKeyWrite レジストリ キー HKLM\CurrentControlSet\Services\<service name>\ControllerNの下の指定された値名にデータを書き込みます。N はコントローラーの番号です。
AtaPortRegistryControllerKeyWriteDeferred レジストリ キー HKLM\CurrentControlSet\Services\<service name>\ControllerNの下の指定された値名に非同期にデータを書き込みます。N はコントローラーの番号です。
AtaPortRegistryChannelSubKeyRead レジストリ キー HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM の下の指定された値名に関連付けられているデータを読み取ります。ここでN はコントローラーの番号、M はチャネルの番号です。
AtaPortRegistryChannelSubKeyWrite レジストリ キー HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM の下の指定された値名にデータを書き込みます。ここでN はコントローラーの番号、M はチャネルの番号です。
AtaPortRegistryChannelSubKeyWriteDeferred レジストリ キー HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM の下の指定された値名に非同期にデータを書き込みます。ここでN はコントローラーの番号、M はチャネルの番号です。