次の方法で共有


ScsiPortGetUncachedExtension 関数 (srb.h)

ScsiPortGetUncachedExtension ルーチンは、DMA または共有データの CPU とバス マスター HBA の両方で使用できるメモリを割り当てます。

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

構文

SCSIPORT_API PVOID ScsiPortGetUncachedExtension(
  [in] PVOID                           HwDeviceExtension,
  [in] PPORT_CONFIGURATION_INFORMATION ConfigInfo,
  [in] ULONG                           NumberOfBytes
);

パラメーター

[in] HwDeviceExtension

ハードウェア デバイス拡張機能へのポインター。 これは、ポート ドライバーが割り当て、ミニポート ドライバーの代わりに初期化する HBA ごとの記憶域です。 ミニポート ドライバーは通常、HBA の状態や HBA のマップされたアクセス範囲など、この拡張機能に HBA 固有の情報を格納します。 この領域は、ミニポート ドライバーが ScsiPortInitialize を呼び出した直後に、HBA のデバイス オブジェクトの DeviceExtension-HwDeviceExtension> メンバーのミニポート ドライバーで使用できます。 ポート ドライバーは、デバイスを削除すると、このメモリを解放します。

[in] ConfigInfo

HBA の DMA 機能に関する情報を指定します。 DmaChannel または DmaPortDmaWidthDmaSpeedMaximumTransferLengthScatterGatherMaster set to TRUENumberOfPhysicalBreaksAdapterInterfaceTypeDma32BitAddressesSystemIoBusNumberAutoRequestSenseおよび SrbExtensionSize のメンバーを入力する必要があります。

EISA バス マスター アダプターの DmaChannel など、HBA に関連しないメンバーはそのままにする必要があります。

[in] NumberOfBytes

割り当てられるキャッシュされていない拡張機能のサイズをバイト単位で示します。 Windows XP 以前のオペレーティング システムのドライバーは、100 KB を超えるキャッシュされていない拡張機能を割り当ててはなりません。また、休止状態ファイルまたはクラッシュ ダンプ ファイルに対する I/O 操作に参加する場合は、割り当てるキャッシュされていない拡張機能の量を 32 KB 未満に制限する必要があります。

戻り値

ScsiPortGetUncachedExtension は、キャッシュされていない拡張機能への仮想アドレス ポインターを返します。 要求されたメモリを割り当てることができない場合は、 NULL を返します。

注釈

ScsiPortGetUncachedExtension は、ミニポート ドライバーの HwScsiFindAdapter ルーチンからのみ呼び出すことができます。バス マスター HBA の場合のみ呼び出すことができます。 他のミニポート ドライバー ルーチンからの呼び出しは、呼び出し元のシステムエラーまたは正しくない操作が発生します。

ハイエンド マシンにはキャッシュと大きなメモリがあるため、HBA と CPU の間で共有するメモリは特別に割り当てる必要があります。 システム メモリ内のメールボックスまたは I/O 要求キューは、この種類の共有メモリの例です。

ミニポート ドライバーは、SrbExtensionSize を設定する必要があります。NumberOfPhysicalBreaks に基づいて要求ごとのストレージのサイズを変更するには、ScsiPortGetUncachedExtension を呼び出す前に。

HwScsiFindAdapter ルーチンは、ミニポート ドライバーがサポートするバス マスター HBA ごとに 1 回だけ ScsiPortGetUncachedExtension を呼び出すことができます。

HBA で使用できるキャッシュされていない拡張機能の物理アドレスを取得するには、 ScsiPortGetPhysicalAddress を呼び出します。

ScsiPort ドライバーは、アダプター デバイスが停止したときに ScsiPortGetUncachedExtension によって割り当てられたメモリを解放します。

要件

要件
対象プラットフォーム デスクトップ
Header srb.h (Miniport.h、Scsi.h を含む)
Library Scsiport.lib

こちらもご覧ください

HwScsiFindAdapter

PORT_CONFIGURATION_INFORMATION (SCSI)

ScsiPortGetPhysicalAddress