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 。
言论
如果从 StorPortAllocateContiguousMemorySpecifyCacheNode获取传递给 StorPortGetPhysicalAddress 的虚拟地址,则应忽略为 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 微型端口驱动程序用于表示物理地址或相对于总线的地址。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | storport.h (包括 Storport.h) |
库 | Storport.lib |