Partilhar via


Introdução aos objetos de dispositivo

O sistema operacional representa dispositivos por objetos de dispositivo. Um ou mais objetos de dispositivo estão associados a cada dispositivo. Os objetos do dispositivo servem como o destino de todas as operações no dispositivo.

Os drivers de modo kernel devem criar pelo menos um objeto de dispositivo para cada dispositivo, com as seguintes exceções:

  • Minidrivers que têm um controlador de classe ou controlador de porta associado não precisam criar os seus próprios objetos de dispositivo. A classe ou driver de porta cria os objetos de dispositivo e despacha operações para o minidriver.

  • Os drivers que fazem parte de subsistemas específicos do tipo de dispositivo, como os drivers de miniporta "NDIS", têm os seus objetos de dispositivo criados pelo subsistema.

Consulte a documentação do seu tipo de dispositivo específico para determinar se o driver cria seus próprios objetos de dispositivo.

Alguns objetos de dispositivo não representam dispositivos físicos. Um driver somente de software, que lida com solicitações de E/S, mas não passa essas solicitações para o hardware, ainda deve criar um objeto de dispositivo para representar o destino de suas operações.

Para obter mais informações sobre como o driver pode criar objetos de dispositivo, consulte Criando um objeto de dispositivo.

Os dispositivos geralmente são representados por vários objetos de dispositivo, um para cada driver na pilha de drivers que lida com solicitações de E/S para o dispositivo. Os objetos de dispositivo para um dispositivo são organizados em uma pilha de dispositivos. Sempre que uma operação é executada em um dispositivo, o sistema passa uma estrutura de dados IRP para o driver do objeto de dispositivo superior na pilha de dispositivos. Cada driver manipula o IRP ou o passa para o driver associado ao próximo objeto de dispositivo inferior na pilha de dispositivos. Para obter mais informações sobre pilhas de dispositivos, consulte Exemplo de pilha de dispositivos WDM. Para obter mais informações sobre IRPs, consulte Gestão de IRPs.

Os objetos de dispositivo são representados por estruturas DEVICE_OBJECT , que são gerenciadas pelo gerenciador de objetos. O gerenciador de objetos fornece os mesmos recursos para objetos de dispositivo que ele faz para outros objetos do sistema. Em específico, um objeto de dispositivo pode ser nomeado, e um objeto de dispositivo nomeado pode ter identificadores associados a ele. Para obter mais informações sobre objetos de dispositivo nomeados, consulte Objetos de dispositivo nomeado.

O sistema fornece armazenamento dedicado para cada objeto de dispositivo, chamado de extensão de dispositivo, que o driver pode usar para armazenamento específico do dispositivo. A extensão do dispositivo é criada e liberada pelo sistema junto com o objeto do dispositivo. Para obter mais informações, consulte Extensões de dispositivo.

A figura a seguir ilustra a relação entre objetos de dispositivo e o gerenciador de E/S.

diagrama ilustrando um objeto de dispositivo.

A figura mostra os membros da estrutura DEVICE_OBJECT que são de interesse para um escritor de motoristas. Para obter mais informações sobre esses membros, consulte Criando um objeto de dispositivo, Inicializando um objeto de dispositivo e Propriedades de objetos de dispositivo.