Compartilhar via


Criando objetos de dispositivo em um driver de barramento

Cada driver de barramento deve criar um objeto de dispositivo de estrutura quando descobrir que um dispositivo filho está conectado a um dispositivo pai. O dispositivo pai normalmente é um barramento, mas também pode ser um dispositivo multifuncional para o qual cada função requer um conjunto separado de drivers (como uma placa de som que dá suporte a áudio digital e MIDI). Os objetos de dispositivo que os drivers de barramento criam são chamados de PDOs (objetos de dispositivo físico) porque cada um representa uma conexão real de uma parte do hardware (o filho) com outro (o pai).

O processo de identificar e relatar os dispositivos conectados a um barramento é chamado de enumeração de barramento.

Para obter mais informações sobre a enumeração de barramento, consulte Enumerando os dispositivos em um barramento.

Um driver de barramento pode chamar um conjunto de métodos de inicialização de objeto de dispositivo de estrutura, que armazenam informações na estrutura WDFDEVICE_INIT . Além disso, os drivers de barramento podem chamar métodos de inicialização PDO de estrutura.

A criação de um objeto de dispositivo de estrutura para um dispositivo filho enumerado normalmente inclui as seguintes etapas:

Se o driver encontrar um erro ao inicializar a estrutura WDFDEVICE_INIT obtida de WdfPdoInitAllocate, o driver deverá chamar WdfDeviceInitFree em vez de WdfDeviceCreate.

Depois que o driver de barramento tiver criado o objeto de dispositivo, ele normalmente chama WdfDeviceSetPnpCapabilities e WdfDeviceSetPowerCapabilities para relatar os recursos de Plug and Play e energia do dispositivo.

Cada driver de ônibus também é o driver de função para o adaptador de barramento. Portanto, o driver também deve fornecer uma função de retorno de chamada EvtDriverDeviceAdd . Essa função de retorno de chamada cria um FDO (objeto de dispositivo funcional) para cada adaptador de barramento no sistema. Para obter mais informações sobre como criar FDOs, consulte Criando objetos de dispositivo em um driver de função.