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 | エラーが発生したことをポート ドライバーに通知します。 |
StorPortLogTelemetry | ミニポート テレメトリ イベントをログに記録して、有用な情報を診断または収集します。 |
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 タイマー コンテキスト オブジェクトのコールバック イベントをスケジュールします。 |