Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Cada driver de função cria um objeto de dispositivo de estrutura para cada um de seus dispositivos suportados que existem no sistema. Como esses objetos de dispositivo são criados por drivers de função, eles são chamados de objetos de dispositivo funcional (FDOs). Cada FDO é uma representação de um dispositivo pelo controlador de função.
Um controlador de função deve criar um objeto de dispositivo da framework cada vez que a framework invoca a função de retorno de chamada EvtDriverDeviceAdd do controlador. A estrutura chama esta função de retorno de chamada para informar o controlador de que um dos seus dispositivos suportados se encontra no sistema.
A função de retorno de chamada EvtDriverDeviceAdd do driver recebe um ponteiro para uma estrutura WDFDEVICE_INIT. O driver pode chamar um conjunto de métodos de inicialização de objeto de dispositivo de framework, que armazenam informações na estrutura WDFDEVICE_INIT. Além disso, os drivers de funções podem chamar métodos de inicialização do FDO do framework.
A criação de um objeto de dispositivo de estrutura em um driver de função normalmente inclui as seguintes etapas:
Registando funções de callback de PnP, energia e política de energia.
A maioria dos drivers de função chama WdfDeviceInitSetPnpPowerEventCallbacks para registrar PnP e funções de retorno de chamada de energia. Para obter mais informações sobre essas funções de retorno de chamada, consulte Compatibilidade com PnP e gestão de energia em drivers de função.
Se o dispositivo suportar baixa potência ociosa ou tiver recursos de ativação, o driver de função normalmente também chama WdfDeviceInitSetPowerPolicyEventCallbacks para registrar funções de retorno de chamada de política de energia. Para mais informações sobre estas funções de retorno de chamada, consulte Gestão da Política de Energia.
Registrando funções de retorno de chamada específicas do driver.
Alguns drivers de função chamam WdfFdoInitSetEventCallbacks, se precisarem participar da especificação dos recursos de hardware do sistema que um dispositivo exige. Para obter mais informações sobre recursos de hardware, consulte Recursos de hardware para drivers Framework-Based.
Registando funções de callback de eventos de ficheiro.
Se o driver deve responder quando um aplicativo abre ou fecha um arquivo em um dispositivo, o driver deve chamar WdfDeviceInitSetFileObjectConfig para registrar funções de retorno de chamada para o objeto de arquivo de estrutura. Para obter mais informações, consulte Usando objetos de arquivo do Framework.
Definição de atributos de solicitação de E/S.
Se o driver receber solicitações de E/S de objetos de fila de estrutura, o driver poderá chamar WdfDeviceInitSetRequestAttributes para configurar a memória de contexto que a estrutura atribuirá aos objetos de solicitação de um dispositivo. Para obter mais informações, consulte Usando o contexto do objeto de solicitação.
Definição das características do dispositivo.
Normalmente, um driver de função chama alguns dos seguintes métodos para especificar as características de um dispositivo:
- WdfDeviceInitSetDeviceType, para identificar o tipo de hardware suportado pelo driver.
- WdfDeviceInitSetIoType, para identificar um método para acessar buffers de dados, se o driver lida com solicitações de E/S de aplicativos.
- WdfDeviceInitSetCharacteristics, para definir as características do dispositivo, como se o dispositivo é somente leitura ou suporta mídia removível.
- WdfDeviceInitSetExclusive, caso o dispositivo necessite de acesso exclusivo por um aplicativo de cada vez.
- WdfDeviceInitSetPowerInrush, se o dispositivo requer uma entrada de corrente quando transita de um estado de baixo consumo de energia para o seu estado de trabalho (D0).
- WdfDeviceInitSetPowerPageable ou WdfDeviceInitSetPowerNotPageable, para indicar se o driver deve acessar dados pagináveis enquanto o sistema está em transição entre um estado de suspensão e o estado de trabalho (S0).
- WdfDeviceInitAssignName, para atribuir um nome ao objeto do dispositivo.
- WdfDeviceInitAssignSDDLString, para atribuir um descritor de segurança ao objeto do dispositivo.
- WdfDeviceInitSetDeviceClass, para identificar a classe de configuração do dispositivo.
Obtenção de propriedades do dispositivo.
Às vezes, os drivers de função devem obter informações sobre as propriedades do dispositivo que o driver para o barramento do dispositivo, ou outro driver de nível inferior, definiu. O driver pode chamar WdfFdoInitQueryProperty ou WdfFdoInitAllocAndQueryProperty para obter essas informações. Novos drivers destinados ao Windows 8.1 e posterior podem chamar WdfFdoInitQueryPropertyEx e WdfFdoInitAllocAndQueryPropertyEx.
Aceder à chave de registo do dispositivo.
Alguns drivers de função devem obter informações sobre o dispositivo ou driver que outro driver, um usuário ou um pacote de instalação colocou no registro. O driver pode chamar WdfFdoInitOpenRegistryKey para abrir o dispositivo ou a chave de registro do driver. Para obter mais informações, consulte Usando o registro em drivers Framework-Based.
Criação de uma configuração de lista filho padrão para usar para enumeração dinâmica.
Se você estiver escrevendo um driver de função para um barramento e se o driver executará a enumeração dinâmica de dispositivos filho que estão conectados ao barramento, o driver deverá chamar WdfFdoInitSetDefaultChildListConfig. Para obter mais informações, consulte Enumerando os dispositivos em um barramento.
Criando o objeto de dispositivo.
A etapa final na criação de um objeto de dispositivo é chamar WdfDeviceCreate.