estrutura CONTROLLER_OBJECT (ntddk.h)
Um objeto de controlador representa um adaptador de hardware ou controlador com dispositivos homogêneos que são os destinos reais para solicitações de E/S. Um objeto de controlador pode ser usado para sincronizar a E/S de um driver de dispositivo com os dispositivos de destino por meio de seu adaptador/controlador de hardware.
Um objeto de controlador é parcialmente opaco. Os gravadores de driver devem saber sobre um determinado campo associado ao objeto do controlador porque seus drivers acessam esse campo por meio do ponteiro de objeto do controlador retornado por IoCreateController. O campo a seguir em um objeto de controlador é acessível para o driver de criação.
Sintaxe
typedef struct _CONTROLLER_OBJECT {
CSHORT Type;
CSHORT Size;
PVOID ControllerExtension;
KDEVICE_QUEUE DeviceWaitQueue;
ULONG Spare1;
LARGE_INTEGER Spare2;
} CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;
Membros
Type
Size
ControllerExtension
Ponteiro para a extensão do controlador. A estrutura e o conteúdo da extensão do controlador são definidos pelo driver. O tamanho é determinado pelo driver, especificado na chamada do driver para IoCreateController. Normalmente, os drivers mantêm o estado comum sobre as operações de E/S na extensão do controlador e o estado específico do dispositivo sobre E/S para um dispositivo de destino na extensão de dispositivo correspondente.
DeviceWaitQueue
Spare1
Spare2
Comentários
A maioria das rotinas de driver que processam IRPs recebe um ponteiro para o objeto de dispositivo de destino. Consequentemente, os drivers de dispositivo que usam objetos de controlador frequentemente armazenam o ponteiro de objeto do controlador retornado por IoCreateController em cada extensão de dispositivo.
Observe que um objeto de controlador não tem nome, portanto, ele não pode ser o destino de uma solicitação de E/S e os drivers de nível superior não podem se conectar ou anexar seus objetos de dispositivo ao objeto do controlador de um driver de dispositivo.
Campos não documentados em um objeto de controlador devem ser considerados inacessíveis. Drivers com dependências em locais de campo de objeto ou acesso a campos não documentados podem não permanecer portáteis e interoperáveis com outros drivers ao longo do tempo.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | ntddk.h (inclua Ntddk.h) |