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

このページでは、システム提供の Storport ドライバーによってミニポートに提供されるサポート ルーチンの一部を分類します。 すべてのリストについては storport.h を参照してください。

Storport ドライバー ミニポート ルーチンのリストについては、Storport ミニポート ドライバー ルーチンを参照してください。

ダイレクト メモリ アクセスのサポート ルーチン

Storport ドライバーは、次のダイレクト メモリ アクセス (DMA) サポート ルーチンを提供します。

ルーチンによって返される値 説明
StorPortBuildScatterGatherList 指定したデータ バッファーの散布図/収集リストを作成します。
StorPortGetScatterGatherList 指定した SCSI 要求ブロック (SRB) の関連する散布図/収集リストを取得します。
StorPortPutScatterGatherList StorPortBuildScatterGatherList ルーチンの呼び出しによって以前に作成された散布図/収集リストに関連付けられているすべてのリソースを解放します。

一般的なサポート ルーチン

Storport には、次の一般的なサポート ルーチンが用意されています。

ルーチンによって返される値 説明
StorPortDebugPrint デバッガーがアタッチされている場合は、デバッグ文字列をカーネル デバッガーに出力します。
StorPortEtwEvent2 Windows イベント トレーシング (ETW) イベントをストレージ トレース チャネルに発行します。 ミニポートは、2 つの汎用 ETW パラメーターをログに記録できます。 ETW パラメーターは、2 つの名前と値のペアとして表されます。
StorPortEtwEvent4 ETW イベントをストレージ トレース チャネルに発行します。 ミニポートは、4 つの汎用 ETW パラメーターをログに記録できます。 ETW パラメーターは、4 つの名前と値のペアとして表されます。
StorPortEtwEvent8 ETW イベントをストレージ トレース チャネルに発行します。 ミニポートは、8 つの汎用 ETW パラメーターをログに記録できます。 ETW パラメーターは、8 つの名前と値のペアとして表されます。
StorPortGetActivityIdSrb 要求ブロックに関連付けられている ETW アクティビティ ID を取得します。
StorPortGetDeviceObjects アダプター デバイス スタックに関連付けられているデバイス オブジェクトを返します。 返されるデバイス オブジェクトは、アダプターの機能デバイス オブジェクトと物理デバイス オブジェクトと、機能デバイス オブジェクトが接続されているデバイス オブジェクトです。
StorPortGetSystemPortNumber ストレージ アダプターのシステム割り当てポート番号を取得します。
StorPortInitializeSListHead Storport で管理されるシングル リンク リストの先頭を初期化します。
StorPortInterlockedFlushSList Storport で管理されるシングル リンク リストからすべての項目を削除します。 リストへのアクセスは、マルチプロセッサ システム上で同期されます
StorPortInterlockedPopEntrySList Storport で管理されるシングル リンク リストの先頭から項目を削除します。 リストへのアクセスは、マルチプロセッサ システム上で同期されます。
StorPortInterlockedPushEntrySList Storport で管理されるシングル リンク リストの先頭に項目を挿入します。 リストへのアクセスは、マルチプロセッサ システム上で同期されます。
StorPortInvokeAcpiMethod ストレージ デバイスの ACPI メソッドを実行します。
StorPortIsCurrentOsInstallationUpgrade Windows の現在のインストールが以前のバージョンからのアップグレードであるかどうかを確認します。
StorPortIsDeviceOperationAllowed ミニポートが特定のデバイス管理クラスの操作が許可されているかどうかを判断することを許可します。
StorPortLogError エラーが発生したことをポート ドライバーに通知します。
StorPortLogSystemEvent ミニポート ドライバーに Windows カーネル イベント機能へのフル アクセスを提供し、ミニポート ドライバーがストレージの問題のトラブルシューティングに真に役立つイベント ログ エントリを作成できるようにします。 StorPortLogError に代わる優れた代替手段を提供します。
StorPortQueryDepthSList Storport で管理される 1 つのリンク リスト内のエントリの数を取得します。
StorPortQueryPerformanceCounter 現在のシステム パフォーマンス カウンター値を照会して返します。
StorPortQuerySystemTime 現在のシステム時刻を取得します。
StorPortRegistryRead 指定されたデバイスと値のレジストリ データを読み取ります。
StorPortRegistryReadAdapterKey HKLM/CurrentControlSet/Enum</Instance path>/DeviceParameters/... のレジストリにあるハードウェアまたはデバイス レジストリ アダプター キーを読み取ります。
StorPortRegistryWriteAdapterKey HKLM/CurrentControlSet/Enum</Instance path>/DeviceParameters/... のレジストリにあるハードウェアまたはデバイス レジストリ アダプター キーを記述します。
StorPortRegistryWrite 指定したバッファーに含まれるレジストリ データを ASCII から Unicode に変換し、ミニポート ドライバーの HBA ごとのストレージにデータを書き込みます。

I/O 要求処理のサポート ルーチン

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

ルーチンによって返される値 説明
StorPortBusy アダプターが現在ビジー状態であり、未処理の要求を処理していることをポート ドライバーに通知します。
StorPortCompleteRequest SRB 状態値を SrbStatus に設定するすべての未処理の要求を完了します。
StorPortCompleteServiceIrp HwStorProcessServiceRequest コールバック ルーチンで受信した要求を完了する必要がある場合に、Storport 仮想ミニポート ドライバーによって呼び出されます。
StorPortDeviceBusy 指定された論理ユニットが現在ビジー状態であり、未処理の要求を処理していることをポート ドライバーに通知します。
StorPortDeviceReady 指定された論理ユニットが新しい要求を処理する準備ができていることをポート ドライバーに通知します。
StorPortFreeWorker 以前に StorPortInitializeWorker ルーチンによって割り当てられた Storport 作業項目を解放します。
StorPortGetRequestInfo SCSI 要求ブロック (SRB) に関連付けられている IO 要求情報を取得し、STOR_REQUEST_INFO 構造体で返します。
StorPortInitializeWorker システム ワーカー スレッドで実行される新しい Storport 作業項目を作成します。
StorPortQueueWorkItem システム ワーカー スレッドのコンテキスト内で実行する Storport 作業項目をスケジュールします。
StorPortPause 指定した期間、アダプタを一時停止します。
StorPortPauseDevice 指定した期間、特定の論理ユニット デバイスを一時停止します。
StorPortReady アダプターがビジー状態でなくなったことをポート ドライバーに通知します。
StorPortResume 一時停止中のアダプターを再開します。
StorPortResumeDevice 以前に一時停止した論理ユニットを再開します。

初期化サポート ルーチン

Storport ドライバーには、次の初期化サポート ルーチンが用意されています。

ルーチンによって返される値 説明
StorPortEnablePassiveInitialization ミニポートの初期化中に PASSIVE_LEVEL で実行するミニポートの HwStorPassiveInitializeRoutine コールバック ルーチンを有効にします。
StorPortGetActiveGroupCount システムに存在するプロセッサ グループの数を返します。
StorPortGetActiveNodeCount システムに存在するノードの数を返します。
StorPortGetBusData HBA を初期化するために必要なバス固有の構成情報を取得します。
StorPortGetCurrentProcessorNumber カーネルから現在のプロセッサ番号を取得します。
StorPortGetGroupAffinity 要求されたグループ内のアクティブなプロセッサのマスクを構築します。
StorPortGetHighestNodeNumber システム上で可能な最大のノード番号を返します。
StorPortGetLogicalProcessorRelationship 指定した 1 つ以上の種類のリレーションシップ情報を返します。 これらの種類には、ホスト システム内のグループ、物理パッケージ、およびノードが含まれます。 返される情報には、ホスト システム内の論理プロセッサで構成されるプロセッサ アフィニティ マスクが含まれます。 これらの論理プロセッサは、指定されたリレーションシップの種類を共有します。
StorPortGetLogicalUnit ミニポート ドライバーの論理ユニットごとのストレージへのポインターを返します。
StorPortGetNodeAffinity 要求された非均一メモリ アクセス (NUMA) ノードでアクティブなプロセッサのマスクを構築します。
StorPortGetStartIoPerfParams 特定の I/O 要求のパフォーマンス パラメーターを STARTIO_PERFORMANCE_PARAMETERS 構造体に配置します。
StorPortInitialize ポート ドライバーのパラメーターと拡張データを初期化します。 StorPortInitilize では、ミニポート ドライバーから提供されたアダプター情報も保存されます。
StorPortInitializePerfOpts ミニポート ドライバーと Storport ドライバーの両方が PERF_CONFIGURATION_DATA 構造体を使用してサポートするパフォーマンスの最適化を初期化します。
StorPortSetAdapterBusType 現在の構成に応じてアダプターの BusType を調整するために使用されます。 このルーチンで BusType を設定すると、ドライバーを再インストールしなくても、ミニポート INF で設定されたグローバル プロパティをオーバーライドできます。 これは、RAID のサポートや、バスの種類が異なる複数のアダプターのサポートなどのシナリオに役立ちます。
StorPortSetBusDataByOffset バス固有の構成情報を書き込みます。
StorPortSetDeviceQueueDepth 指定されたデバイスのデバイス キューの最大深度を設定します。
StorPortSetPowerSettingNotificationGuids ミニポートが電源設定通知を受信できるようにします。 ミニポートは、電源変更通知を受信する電源設定を識別する GUID の配列を登録します。
StorPortSetUnitAttributes ストレージ ユニット デバイスの電源属性を Storport ドライバーに登録します。

割り込みサポート ルーチン

Storport ドライバーには、次の割り込みサポート ルーチンが用意されています。

ルーチンによって返される値 説明
StorPortGetMSIInfo 指定したメッセージのメッセージ通知割り込み (MSI) 情報を取得します。
StorPortSynchronizeAccess ミニポート ドライバーのデバイス拡張機能への同期アクセスを提供します。
StorPortInitializeDpc StorPort 遅延プロシージャ 呼び出し (DPC) を初期化します。
StorPortIssueDpc Storport DPC を発行します。
StorPortStallExecution ミニポート ドライバーをストールします。

ロック サポート ルーチン

Storport ドライバーには、ロック サポート ルーチンが用意されています。

ルーチンによって返される値 説明
StorPortAcquireMSISpinLock 指定されたメッセージに関連付けられているメッセージ 通知割り込み (MSI) スピン ロックを取得します。
StorPortAcquireSpinLock 指定したスピン ロックを取得します。
StorPortReleaseMSISpinLock 指定されたメッセージに対して以前に取得した MSI スピン ロックを解放します。
StorPortReleaseSpinLock StorPortAcquireSpinLock によって取得されたスピン ロックを解放します。

メモリ管理サポート ルーチン

Storport ドライバーには、次のメモリ管理サポート ルーチンが用意されています。

ルーチンによって返される値 説明
StorPortAllocateContiguousMemorySpecifyCacheNode 物理的に連続するキャッシュされていない非ページ メモリの範囲を割り当てます。
StorPortAllocateMdl 指定された非ページ プール メモリを記述する MDL を割り当てます。
StorPortAllocatePool 連続していない、ページされていないプール メモリのブロックを割り当てます。
StorPortAllocateRegistryBuffer ミニポートがレジストリ データの読み取りと書き込みに使用できるバッファーを割り当てます。
StorPortBuildMdlForNonPagedPool MDL を更新して、関連付けられている非ページ メモリについて説明します。
StorPortConvertUlongToPhysicalAddress 符号のない長いアドレスを物理アドレスに変換します。
StorPortConvertPhysicalAddressToULong64 物理アドレスを ULONG64 値に変換します。
StorPortFreeMdl ページプール以外のメモリを記述するメモリ記述子リスト (MDL) を解放します。
StorPortFreeContiguousMemorySpecifyCache システム アドレス空間の非ページ部分にキャッシュされていないメモリの範囲の割り当てを解除します。
StorPortFreePool StorPortAllocatePool ルーチンの呼び出しによって以前に割り当てられたメモリ ブロックを解放します。
StorPortFreeRegistryBuffer レジストリ データを格納するために割り当てられたバッファーを解放します。
StorPortGetDataInBufferMdl SCSI 要求ブロック (SRB) の入力データ バッファーに関連付けられている MDL を返します。
StorPortGetDataInBufferScatterGatherList SCSI 要求ブロック (SRB) の入力データ バッファーに関連付けられている散布図収集リストを返します。
StorPortGetDataInBufferSystemAddress SCSI 要求ブロック (SRB) の入力データ バッファーのシステム アドレスを返します。
StorPortGetOriginalMdl 指定された SRB に関連付けられている MDL を返します。
StorPortGetVirtualAddress 指定された物理アドレスにマップされる仮想アドレスを取得します。
StorPortGetPhysicalAddress 指定された仮想アドレス範囲を DMA 操作の物理アドレス範囲に変換します。
StorPortGetSystemAddress 指定した SCSI 要求ブロック (SRB) のデータ バッファーのシステム空間内の仮想アドレスを返します。
StorPortGetUncachedExtension CPU とデバイスによって共有されるキャッシュされていない共通バッファーを割り当てます。
StorPortMarkDumpMemory ミニポートは、ダンプ ファイルまたは休止状態ファイルに使用されるメモリをマークする必要があります。 マークされたメモリは保持されメイン休止操作からの再開後に有効になります。 マークするメモリは、StorPortMarkDumpMemory の呼び出しでアドレスと範囲の長さによって指定されます。
StorPortMoveMemory あるバッファーから別のバッファーにメモリをコピーします。

通知サポート ルーチン

Storport ドライバーには、次の通知サポート ルーチンが用意されています。

ルーチンによって返される値 説明
StorPortAsyncNotificationDetected ストレージ デバイスの状態変更イベントを Storport ドライバーに通知します。
StorPortNotification Storport ドライバーに特定のイベントと条件を通知します。
StorPortStateChangeDetected Storport ポート ドライバーに、論理ユニット番号 (LUN)、ホスト バス アダプター (HBA) ポート、またはターゲット デバイスの状態変更を通知します。

ポートおよびレジスタ I/O サポート ルーチン

Storport ドライバーは、次のポートを提供し、I/O サポート ルーチンを登録します。

ルーチンによって返される値 説明
StorPortGetDeviceBase I/O アドレスをシステム・アドレス・スペースにマップします。
StorPortFreeDeviceBase StorPortGetDeviceBase によってマップされたデバイス I/O メモリの範囲を解放します。
StorPortReadPortBufferUchar 指定したポート アドレスから値を読み取ります。
StorPortReadPortBufferUlong 指定したポート アドレスから値を読み取ります。
StorPortReadPortBufferUshort 指定したポート アドレスから値を読み取ります。
StorPortReadPortUchar 指定したポート アドレスから値を読み取ります。
StorPortReadPortUlong 指定したポート アドレスから値を読み取ります。
StorPortReadPortUshort 指定したポート アドレスから値を読み取ります。
StorPortReadRegisterBufferUchar 指定したレジスタ アドレスから値を読み取ります。
StorPortReadRegisterBufferUlong 指定したレジスタ アドレスから値を読み取ります。
StorPortReadRegisterBufferUlong64 指定された 64 ビット レジスタ アドレスからバッファーに多数の ULONG64 値を読み取ります。
StorPortReadRegisterBufferUshort 指定したレジスタ アドレスから値を読み取ります。
StorPortReadRegisterUchar 指定したレジスタ アドレスから値を読み取ります。
StorPortReadRegisterUlong 指定したレジスタ アドレスから値を読み取ります。
StorPortReadRegisterUlong64 指定した 64 ビット レジスタ アドレスから 64 ビット値を読み取ります。
StorPortReadRegisterUshort 指定したレジスタ アドレスから値を読み取ります。
StorPortValidateRange 指定した I/O アドレス範囲が別のアダプターで使用されているかどうかを判断します。 このルーチンは、Windows NT 4.0 以降のオペレーティング システムでは廃止されています。
StorPortWritePortBufferUchar 指定したレジスタ アドレスに値を書き込みます。
StorPortWritePortBufferUlong 指定したレジスタ アドレスに値を書き込みます。
StorPortWritePortBufferUshort 指定したレジスタ アドレスに値を書き込みます。
StorPortWritePortUchar 指定したレジスタ アドレスに値を書き込みます。
StorPortWritePortUlong 指定したレジスタ アドレスに値を書き込みます。
StorPortWritePortUshort 指定したレジスタ アドレスに値を書き込みます。
StorPortWriteRegisterBufferUchar バッファーから HBA に、指定された数の符号なしバイトを転送します。
StorPortWriteRegisterBufferUlong 指定された数の ULONG 値をバッファーから HBA に転送します。
StorPortWriteRegisterBufferUlong64 指定した 64 ビット レジスタ アドレスから多数の ULONG64 値を書き込みます。
StorPortWriteRegisterBufferUshort 指定された数の USHORT 値をバッファーから HBA に転送します。
StorPortWriteRegisterUchar バッファーから指定された数の文字値を、指定された HBA レジスタ アドレスに転送します。
StorPortWriteRegisterUlong 指定された HBA レジスタ アドレスに ULONG 値を転送します。
StorPortWriteRegisterUlong64 指定したレジスタ アドレスに ULONG64 値を書き込みます。
StorPortWriteRegisterUshort 指定された HBA レジスタ アドレスに ULONG 値を転送します。

ランタイム電源管理のサポート ルーチン

Storport ドライバーには、次のランタイム電源管理サポート ルーチンが用意されています。

ルーチンによって返される値 説明
StorPortInitializePoFxPower ストレージ デバイスを電源管理フレームワーク (PoFx) に登録します。
StorPortPoFxActivateComponent ストレージ デバイスの指定したコンポーネントのアクティブ化参照カウントをインクリメントします。
StorPortPoFxIdleComponent ストレージ デバイスの指定したコンポーネントのアクティブ化参照カウントをデクリメントします。
StorPortPoFxPowerControl 電源管理フレームワーク (PoFx) に電源制御要求を送信して、電源エンジン プラグイン (PEP) に転送します。
StorPortPoFxSetComponentLatency アイドル状態から指定したストレージ デバイス コンポーネントのアクティブな状態への移行で許容できる最大レイテンシーを指定します。
StorPortPoFxSetComponentResidency ストレージ デバイス コンポーネントがアイドル状態に入った後、ストレージ デバイス コンポーネントがアイドル状態メイン再び発生する可能性がある期間の推定時間を設定します。

タイマー・サポート・ルーチン

Storport ドライバーには、タイマー サポート ルーチンが用意されています。

ルーチンによって返される値 説明
StorPortFreeTimer 以前に StorPortInitializeTimer ルーチンによって作成された Storport タイマー コンテキスト オブジェクトを解放します。
StorPortInitializeTimer Storport タイマー コンテキスト オブジェクトを作成します。
StorPortRequestTimer Storport タイマー コンテキスト オブジェクトのコールバック イベントをスケジュールします。