Adicionando um dispositivo
Aviso
O UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar o UMDF 2.
Os exemplos de UMDF 1 arquivados podem ser encontrados no Windows 11, versão 22H2 – Atualização de exemplos de driver de maio de 2022.
Para obter mais informações, consulte Introdução com UMDF.
A estrutura adiciona um objeto de dispositivo para cada dispositivo carregado no processo de host do driver. Para adicionar o dispositivo, a estrutura chama o método IDriverEntry::OnDeviceAdd do driver e passa as interfaces IWDFDriver e IWDFDeviceInitialize na chamada. A interface IWDFDeviceInitialize fornecida só é válida antes que o driver chame IWDFDriver::CreateDevice. O driver pode chamar os seguintes métodos de IWDFDeviceInitialize para executar as seguintes operações:
O driver chama o método IWDFDeviceInitialize::RetrieveDevicePropertyStore para recuperar a interface IWDFNamedPropertyStore para o repositório de propriedades do dispositivo. O driver pode usar IWDFNamedPropertyStore para recuperar e definir propriedades para o dispositivo.
O driver chama o método IWDFDeviceInitialize::SetLockingConstraint para especificar como suas funções de retorno de chamada são chamadas pela estrutura.
O driver chama o método IWDFDeviceInitialize::SetFilter para habilitar o dispositivo como um dispositivo de filtro.
Depois que o driver usa IWDFDeviceInitialize para inicializar o dispositivo, o driver passa um ponteiro para IWDFDeviceInitialize em uma chamada para o método IWDFDriver::CreateDevice para criar um objeto de dispositivo UMDF para o dispositivo. Depois que o objeto do dispositivo de estrutura é criado, o driver faz chamadas para o método IWDFDevice::CreateIoQueue para criar filas de E/S de leitura e gravação. Nessas chamadas IWDFDevice::CreateIoQueue , o driver deve identificar como ele recebe solicitações da fila de E/S. Para obter mais informações, consulte Configurando o modo de expedição para uma fila de E/S.