StorPortGetPhysicalAddress 函式 (storport.h)
StorPortGetPhysicalAddress 例程會將指定的虛擬位址範圍轉換為 DMA 作業的實體地址範圍。
語法
STORPORT_API STOR_PHYSICAL_ADDRESS StorPortGetPhysicalAddress(
[in] PVOID HwDeviceExtension,
[in, optional] PSCSI_REQUEST_BLOCK Srb,
[in] PVOID VirtualAddress,
[out] ULONG *Length
);
參數
[in] HwDeviceExtension
硬體裝置擴充功能的指標。 這是每個 HBA 儲存區域,埠驅動程式會代表迷你埠驅動程式配置和初始化。 迷你埠驅動程式通常會將此擴充功能中儲存 HBA 特定資訊,例如 HBA 的狀態和 HBA 的對應存取範圍。 此區域可在迷你埠驅動程式呼叫 StorPortInitialize 之後,立即提供給裝置物件的 DeviceExtension-HwDeviceExtension> 成員。 埠驅動程式會在移除裝置時釋放此記憶體。
[in, optional] Srb
如果要轉換的虛擬位址來自該 SRB 的 DataBuffer 成員或 SenseInfoBuffer 成員,則為 SCSI 要求區塊的指標。 否則,此參數必須是 NULL。
[in] VirtualAddress
要轉換之基底虛擬位址的指標。 如果此虛擬位址落在 SRB 提供的 DataBuffer 範圍內,呼叫端也必須提供 Srb 指標。
[out] Length
值的指標,指出所對應的位元組數目,從傳回的實體地址開始。
傳回值
StorPortGetPhysicalAddress 會傳回指定虛擬地址的對應實體位址。 如果無法轉換指定的位址,函式會傳回 NULL。
備註
如果傳遞至 StorPortGetPhysicalAddress 的虛擬位址是從 StorPortAllocateContiguousMemorySpecifyCacheNode 取得 ,則應該 忽略 Length 傳回的值。
從 Windows 8 開始,Srb 參數可能會指向 SCSI_REQUEST_BLOCK 或 STORAGE_REQUEST_BLOCK。 如果 Srb的函式欄位中的函式識別碼是SRB_FUNCTION_STORAGE_REQUEST_BLOCK,SRB 是STORAGE_REQUEST_BLOCK要求結構。
StorPortGetPhysicalAddress 會使用 STOR_PHYSICAL_ADDRESS 來代表實體位址。
typedef PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS, *PSTOR_PHYSICAL_ADDRESS;
STOR_PHYSICAL_ADDRESS類型是與操作系統無關的數據類型,Storport 迷你埠驅動程式用來代表實體位址或總線相對位址。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | storport.h (包含 Storport.h) |
程式庫 | Storport.lib |