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_INFORMATIONAdapterInterfaceType 成员获取此参数的值。

[in] SystemIoBusNumber

指定 HBA 所连接的 I/O 总线的系统分配数。 HwStorFindAdapter 例程从输入 PORT_CONFIGURATION_INFORMATIONSystemIoBusNumber 成员获取此参数的值。

[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 参数传递给 StorPortGetDeviceBaseFALSE 指示要映射的范围位于内存空间中。

返回值

对应于 IoAddress 参数中提供的总线相对地址的映射逻辑基址。

言论

每个微型端口驱动程序都必须将映射的逻辑访问范围地址传递给 Storport 端口 读/写例程,并且 Storport 在与其 HBA 通信时注册 读/写例程。

此例程仅支持由系统即插即用(PnP)管理器分配给驱动程序的地址。

要求

要求 价值
目标平台 普遍
标头 storport.h (包括 Storport.h)
Storport.lib

另请参阅

StorPortFreeDeviceBase