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 请求的目标,而更高级别的驱动程序无法连接或将其设备对象附加到设备驱动程序的控制器对象。
控制器对象中的未记录字段应被视为不可访问。 依赖于对象字段位置或对未记录字段的访问的驱动程序可能无法在一段时间内保持可移植性且与其他驱动程序互作。
要求
要求 | 价值 |
---|---|
标头 | ntddk.h (包括 Ntddk.h) |