CONTROLLER_OBJECT 结构 (ntddk.h)

控制器对象表示硬件适配器或控制器,其设备是 I/O 请求的实际目标。 控制器对象可用于通过其硬件适配器/控制器将设备驱动程序的 I/O 同步到目标设备。

控制器对象部分不透明。 驱动程序编写器必须知道与控制器对象关联的特定字段,因为它们的驱动程序通过 IoCreateController 返回的控制器对象指针访问此字段。 创建驱动程序可以访问控制器对象中的以下字段。

语法

typedef struct _CONTROLLER_OBJECT {
  CSHORT        Type;
  CSHORT        Size;
  PVOID         ControllerExtension;
  KDEVICE_QUEUE DeviceWaitQueue;
  ULONG         Spare1;
  LARGE_INTEGER Spare2;
} CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;

成员

Type

Size

ControllerExtension

指向控制器扩展的指针。 控制器扩展的结构和内容由驱动程序定义。 大小由驱动程序确定,在驱动程序对 IoCreateController 的调用中指定。 通常,驱动程序在控制器扩展中维护有关 I/O 操作的常见状态,以及有关相应设备扩展中目标设备的 I/O 的特定于设备的状态。

DeviceWaitQueue

Spare1

Spare2

注解

为处理 IRP 的大多数驱动程序例程提供了指向目标设备对象的指针。 因此,使用控制器对象的设备驱动程序经常将 IoCreateController 返回的控制器对象指针存储在每个设备扩展中。

请注意,控制器对象没有名称,因此它不能成为 I/O 请求的目标,并且更高级别的驱动程序无法将其设备对象连接或附加到设备驱动程序的控制器对象。

控制器对象中的未记录字段应被视为不可访问。 随着时间的推移,依赖于对象字段位置或访问未记录字段的驱动程序可能无法保持可移植和与其他驱动程序的互操作。

要求

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

另请参阅

IoCreateController