StorPortGetDeviceBase 函数 (storport.h)
StorPortGetDeviceBase 例程将 I/O 地址映射到系统地址空间。
语法
STORPORT_API PVOID StorPortGetDeviceBase(
[in] PVOID HwDeviceExtension,
[in] INTERFACE_TYPE BusType,
[in] ULONG SystemIoBusNumber,
[in] STOR_PHYSICAL_ADDRESS IoAddress,
[in] ULONG NumberOfBytes,
[in] BOOLEAN InIoSpace
);
参数
[in] HwDeviceExtension
指向硬件设备扩展的指针。 这是端口驱动程序代表微型端口驱动程序分配和初始化的每个 HBA 存储区域。 微型端口驱动程序通常在此扩展中存储特定于 HBA 的信息,例如 HBA 的状态和 HBA 的映射访问范围。 在微型端口驱动程序调用 StorPortInitialize 后,微型端口驱动程序立即可以使用此区域。 端口驱动程序在删除设备时释放此内存。
[in] BusType
指定 HBA 连接的 I/O 总线的接口类型。 微型端口驱动程序的 HwStorFindAdapter 例程从输入PORT_CONFIGURATION_INFORMATION的 AdapterInterfaceType 成员获取此参数的值。
[in] SystemIoBusNumber
指定 HBA 连接的 I/O 总线的系统分配编号。 HwStorFindAdapter 例程从输入PORT_CONFIGURATION_INFORMATION的 SystemIoBusNumber 成员获取此参数的值。
[in] IoAddress
指定 HBA 使用的范围的总线相对基址。 如果端口驱动程序提供范围配置信息,HwStorFindAdapter 例程将从PORT_CONFIGURATION_INFORMATION中的 AccessRanges 元素之一获取此参数的值。 否则,此地址可以是 StorPortGetBusData 返回的值,也可以是微型端口驱动程序提供的默认值。 避免使用零基址,因为其成功返回状态可能会与 null) 错误状态 (冲突 。
[in] NumberOfBytes
指定映射应涵盖的范围的大小(以字节为单位)。 如果端口驱动程序提供范围配置信息,HwStorFindAdapter 例程将从与 IoAddress 相同的 AccessRanges 元素获取此参数的值。 否则,此值可由 StorPortGetBusData 或微型端口驱动程序提供的默认值返回。 在任何情况下,驱动程序都不得访问返回的映射范围以外的硬件。
[in] InIoSpace
TRUE 表示要映射的范围位于 I/O 空间中,微型端口驱动程序会将此范围内的映射地址传递给 Storport 端口 读/写例程,以便与 HBA 通信。 HwStorFindAdapter 例程从与 IoAddress 相同的 AccessRanges 元素获取此参数的值。 请注意,微型端口驱动程序必须先在ACCESS_RANGE类型元素中反转 InMemorySpace 成员的值,然后才能将其作为 InIoSpace 参数传递给 StorPortGetDeviceBase。 FALSE 表示要映射的范围在内存空间中。
返回值
对应于 IoAddress 参数中提供的总线相对地址的映射逻辑基址。
注解
每个微型端口驱动程序在与其 HBA () 通信时,必须将映射的逻辑访问范围地址传递给 Storport 端口 读/写例程和 Storport 寄存器 读/写例程。
此例程仅支持系统即插即用 (PnP) 管理器分配给驱动程序的地址。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | storport.h (包括 Storport.h) |
Library | Storport.lib |