HalSetBusDataByOffset 函数 (ntddk.h)

警告

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

此函数在具有已发布的标准接口的动态可配置 I/O 总线上设置设备的总线配置数据。

语法

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

参数

[in] BusDataType

要设置的总线数据。 此值可以是 PCIConfiguration。 支持的类型的上限始终为 MaximumBusDataType。

[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

缓冲区中的字节数。

返回值

返回值是写入配置空间的实际长度。

注解

如果异常情况或其设备的性质需要此类调用,驱动程序可以调用此函数或 HalSetBusData。 例如,如果驱动程序的设备在初始化期间发出目标中止信号,则驱动程序可能会调用其中任一函数来清除 PCI 状态寄存器中的一个位。 通常,硬件或启动代码会相应地配置设备。

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

要求

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

另请参阅

BUS_DATA_TYPE

HalGetBusData

HalGetBusDataByOffset

HalSetBusData

HalTranslateBusAddress

PCI_COMMON_CONFIG