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 例程从 AccessRangesPORT_CONFIGURATION_INFORMATION 元素之一获取此参数的值。 否则,此地址可以是 StorPortGetBusData 或微型端口驱动程序提供的默认值返回的值。 避免使用零的基址,因为它的成功返回状态可能会与错误状态(NULL) 冲突。
[in] NumberOfBytes
指定映射应涵盖的范围的大小(以字节为单位)。 HwStorFindAdapter 例程从与端口驱动程序提供范围配置信息时相同的 AccessRanges 元素获取此参数的值,IoAddress。 否则,StorPortGetBusData 或微型端口驱动程序提供的默认值可以返回此值。 在任何情况下,驱动程序不得访问返回的映射范围之外的硬件。
[in] InIoSpace
TRUE 表示要映射的范围位于 I/O 空间中,微型端口驱动程序会将此范围内的映射地址传递给 Storport 端口 读/写例程来与 HBA 通信。 HwStorFindAdapter 例程从与 IoAddress 相同的 AccessRanges元素中获取此参数的值。 请注意,微型端口驱动程序 必须在ACCESS_RANGE类型元素中 反转 InMemorySpace 成员的值,然后将其作为 InIoSpace 参数传递给 StorPortGetDeviceBase。 FALSE 指示要映射的范围位于内存空间中。
返回值
对应于 IoAddress 参数中提供的总线相对地址的映射逻辑基址。
言论
每个微型端口驱动程序都必须将映射的逻辑访问范围地址传递给 Storport 端口 读/写例程,并且 Storport 在与其 HBA 通信时注册 读/写例程。
此例程仅支持由系统即插即用(PnP)管理器分配给驱动程序的地址。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | storport.h (包括 Storport.h) |
库 | Storport.lib |