HalGetBusDataByOffset 函数 (ntddk.h)
警告
HalGetBusDataByOffset 和 HalSetBusDataByOffset 是为向后兼容而提供的,但仅当无法访问 访问设备配置空间 中建议的方法时,才应使用。
此函数从偏移量开始检索有关 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) |