Compartir a través de


estructura CONTROLLER_OBJECT (ntddk.h)

Un objeto de controlador representa un adaptador de hardware o un controlador con dispositivos homogéneos que son los destinos reales de las solicitudes de E/S. Se puede usar un objeto de controlador para sincronizar la E/S de un controlador de dispositivo con los dispositivos de destino a través de su adaptador o controlador de hardware.

Un objeto de controlador es parcialmente opaco. Los escritores de controladores deben conocer un campo determinado asociado al objeto de controlador porque sus controladores acceden a este campo a través del puntero de objeto de controlador devuelto por IoCreateController. El siguiente campo de un objeto de controlador es accesible para el controlador de creación.

Sintaxis

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

Miembros

Type

Size

ControllerExtension

Puntero a la extensión del controlador. La estructura y el contenido de la extensión del controlador están definidos por el controlador. El tamaño está determinado por el controlador, especificado en la llamada del controlador a IoCreateController. Normalmente, los controladores mantienen un estado común sobre las operaciones de E/S en la extensión del controlador y el estado específico del dispositivo sobre E/S para un dispositivo de destino en la extensión de dispositivo correspondiente.

DeviceWaitQueue

Spare1

Spare2

Comentarios

La mayoría de las rutinas de controlador que procesan IRP reciben un puntero al objeto de dispositivo de destino. Por lo tanto, los controladores de dispositivo que usan objetos de controlador almacenan con frecuencia el puntero de objeto de controlador devuelto por IoCreateController en cada extensión de dispositivo.

Tenga en cuenta que un objeto de controlador no tiene nombre, por lo que no puede ser el destino de una solicitud de E/S y los controladores de nivel superior no pueden conectarse ni adjuntar sus objetos de dispositivo a un objeto de controlador de dispositivo.

Los campos no documentados dentro de un objeto de controlador deben considerarse inaccesibles. Es posible que los controladores con dependencias en las ubicaciones del campo de objeto o el acceso a campos no documentados no permanezcan portátiles e interoperables con otros controladores a lo largo del tiempo.

Requisitos

Requisito Valor
Header ntddk.h (incluya Ntddk.h)

Consulte también

IoCreateController