ScsiPortGetUncachedExtension 函式 (srb.h)
ScsiPortGetUncachedExtension 例程會配置記憶體,供 CPU 和總線主機 HBA 用於 DMA 或共享數據。
語法
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 或 DmaPort、DmaWidth、DmaSpeed、MaximumTransferLength、ScatterGather、Master 設為 TRUE、NumberOfPhysicalBreaks、AdapterInterfaceType、Dma32BitAddresses、SystemIoBusNumber、AutoRequestSense 和 SrbExtensionSize。
與 HBA 不相關的成員,例如 EISA 總線主要適配卡的 DmaChannel ,必須保持原狀。
[in] NumberOfBytes
表示要配置之未快取延伸模組的位元元組大小。 Windows XP 和舊版作業系統中的驅動程式不得配置超過 100 KB 的未快取擴充功能,而且如果它們參與休眠檔案或損毀傾印檔案上的 I/O 作業,則必須限制其配置在 32 KB 以下的未快取擴充功能數量。
傳回值
ScsiPortGetUncachedExtension 會傳回未快取延伸模組的虛擬位址指標。 如果無法配置要求的記憶體,則會傳回 NULL。
備註
ScsiPortGetUncachedExtension 只能從迷你埠驅動程式的 HwScsiFindAdapter 例程呼叫,而且僅適用於總線主機 HBA。 來自其他迷你埠驅動程式例程的呼叫會導致系統失敗或呼叫端的作業不正確。
由於高階機器具有快取和大型記憶體,因此必須特別配置 HBA 與 CPU 之間共用的任何記憶體。 系統記憶體中的信箱或 I/O 要求佇列是這種類型的共用記憶體範例。
迷你埠驅動程序必須設定 SrbExtensionSize。 在呼叫 ScsiPortGetUncachedExtension 之前,必須根據 NumberOfPhysicalBreaks 變更其每個要求記憶體的大小。
HwScsiFindAdapter 例程只能針對迷你埠驅動程序支援的每個總線主機 HBA 呼叫 ScsiPortGetUncachedExtension 一次。
若要取得 HBA 可以使用之未快取延伸模組的實體位址,請呼叫 ScsiPortGetPhysicalAddress。
當適配卡裝置停止時,ScsiPort 驅動程式會釋放 ScsiPortGetUncachedExtension 所配置的記憶體。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | srb.h (包括 Miniport.h、Scsi.h) |
程式庫 | Scsiport.lib |