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_BLOCKSTORAGE_REQUEST_BLOCK。 如果 Srb的函式欄位中的函式識別碼是SRB_FUNCTION_STORAGE_REQUEST_BLOCK,SRBSTORAGE_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

另請參閱

SCSI_REQUEST_BLOCK

STORAGE_REQUEST_BLOCK

ScsiPortGetPhysicalAddress