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 はチャネルの番号です。 |