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 例程将从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 参数传递给 StorPortGetDeviceBaseFALSE 表示要映射的范围在内存空间中。

返回值

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

注解

每个微型端口驱动程序在与其 HBA () 通信时,必须将映射的逻辑访问范围地址传递给 Storport 端口 读/写例程和 Storport 寄存器 读/写例程。

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

要求

要求
目标平台 通用
标头 storport.h (包括 Storport.h)
Library Storport.lib

另请参阅

StorPortFreeDeviceBase