HalGetBusDataByOffset 函数 (ntddk.h)

警告

HalGetBusDataByOffsetHalSetBusDataByOffset 是为向后兼容而提供的,但仅当无法访问 访问设备配置空间 中建议的方法时,才应使用。

此函数从偏移量开始检索有关 I/O 总线上的槽或地址的信息。

语法

NTHALAPI ULONG HalGetBusDataByOffset(
  [in] BUS_DATA_TYPE BusDataType,
  [in] ULONG         BusNumber,
  [in] ULONG         SlotNumber,
  [in] PVOID         Buffer,
  [in] ULONG         Offset,
  [in] ULONG         Length
);

参数

[in] BusDataType

要检索的总线数据。 支持的总线类型的上限始终为 MaximumBusDataType。 唯一支持的 BusDataType 是 PCIConfiguration 已弃用所有其他类型。

[in] BusNumber

在具有同一 BusDataType 的多个总线的系统中,总线的从零开始和系统分配的编号。 此参数还包含段号。 若要指定段编号,请使用 (段 << 8) |BusNumber

[in] SlotNumber

设备的逻辑槽号或位置。 如果将 PCIConfiguration 指定为 BusDataType,则此值是一个PCI_SLOT_NUMBER值,该值是槽号和函数号的组合。

[in] Buffer

指向调用方提供的缓冲区的指针,以获取特定于 BusDataType 的配置信息。

如果指定 PCIConfiguration,缓冲区包含指定 SlotNumber 和函数编号的 PCI 配置空间信息。 指定的偏移量和长度确定要提供的信息量。 PCI 配置空间的某些成员具有只读值 调用方负责保留系统提供的只读成员的值。 请注意,对于 Type-1 PCI 设备,HalSetBusDataByOffset 阻止写入公共标头 (配置空间) 的前 256 字节的寄存器。

[in] Offset

应为其返回所请求信息PCI_COMMON_CONFIG结构中的字节偏移量。 调用方可以使用系统定义的常量PCI_COMMON_HDR_LENGTH指定设备特定的PCI_COMMON_CONFIG区域。

[in] Length

缓冲区中的最大字节数。

返回值

返回值是从配置空间读取的实际长度。

注解

设备驱动程序在初始化期间调用此函数,以在特定 I/O 总线上查找其设备。 可以在以后调用其他配置和初始化函数(如 HalTranslateBusAddress)时使用返回的特定于总线类型的配置数据。

访问 PCI 配置空间的设备特定区域时,HalGetBusDataByOffset 保证此函数永远不会读取或写入输入 Offset 和 Length 指定的范围以外的数据。 即使输入 Length 正好是 1 字节或 2 字节字,此函数也永远不会访问请求范围以外的任何数据。

要求

要求
Header ntddk.h (包括 Ntddk.h)

另请参阅

BUS_DATA_TYPE

HalGetBusData

HalSetBusDataByOffset

HalSetBusData

HalTranslateBusAddress

PCI_COMMON_CONFIG