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之後,此區域可供 DeviceExtension->HwDeviceExtension HBA 裝置對象的成員使用。 埠驅動程式會在移除裝置時釋放此記憶體。
[in] ConfigInfo
指定 HBA DMA 功能的相關信息。 下列成員必須填入:DmaChannel 或 DmaPort、DmaWidth、DmaSpeed、MaximumTransferLength、ScatterGather、Master set 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 (include Miniport.h, Scsi.h) |
連結庫 | Scsiport.lib |