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.
User-Mode Driver Framework (UMDF) versões 1.11 e 2.0
Se o driver do User-Mode Driver Framework (UMDF) foi criado com a versão 1.11 ou 2.0 e está sendo executado no Windows 8 ou posterior, a estrutura cria uma única instância do Wudfhost que pode hospedar várias pilhas de dispositivos. Essa técnica é chamada de agregação de dispositivos. O principal benefício do pool de dispositivos é a redução do consumo de memória em um ambiente com vários dispositivos UMDF.
Se um dispositivo em pool falhar, a estrutura encerrará a instância do Wudfhost e tentará reiniciar todos os dispositivos que estavam anteriormente no pool. Se o dispositivo falhar novamente enquanto estiver agrupado, a estrutura criará um processo Wudfhost separado para o dispositivo e tentará iniciar o dispositivo novamente.
Se o dispositivo falhar no processo de host separado, a estrutura tentará reiniciá-lo até cinco vezes. A estrutura redefine a contagem de erros do dispositivo para um quando trinta minutos tiverem decorrido desde a última falha.
Se o sistema for reinicializado, a estrutura reagrupará dispositivos, exceto aqueles que falharam durante a execução em um processo separado.
Para desativar o agrupamento de dispositivos para um dispositivo específico, use a diretiva UmdfHostProcessSharing na seção DDInstall específica do WDF no INF. Para obter informações sobre UmdfHostProcessSharing, consulte Especificar Diretivas WDF em Ficheiros INF.
Se o teu driver usar I/O direto , deves definir UmdfHostProcessSharing como ProcessSharingDisabled . Caso contrário, o driver pode falhar em iniciar. Se WdfDeviceIoBufferedOrDirect estiver selecionado e o dispositivo estiver agrupado, o framework alterará o método de acesso ao buffer para E/S de buffer. Se WdfDeviceIoBufferedOrDirect estiver selecionado e o dispositivo não estiver agrupado, o framework alterará o método de acesso ao buffer para E/S direta.
Para selecionar um método de acesso a buffer, o seu driver deve chamar o método IWDFDeviceInitialize2::SetIoTypePreference a partir da sua função de retorno de chamada IDriverEntry::OnDeviceAdd. Para obter informações sobre métodos de acesso, consulte Aceder a buffers de dados em drivers UMDF-Based.
UMDF versões 1.9 e anteriores
Se o driver foi criado com UMDF versão 1.9 ou anterior, o framework cria uma instância separada do processo de host (Wudfhost) para cada pilha de dispositivos.
Se o dispositivo falhar ao iniciar, a estrutura tentará reiniciá-lo até cinco vezes. A estrutura redefine a contagem de erros do dispositivo para um quando trinta minutos tiverem decorrido desde a última falha.
Em um ambiente não agrupado, se várias pilhas de dispositivos compartilharem o mesmo driver UMDF:
- Cada pilha de dispositivos é carregada num processo WudfHost separado.
- O framework chama os métodos IDriverEntry::OnInitialize e IDriverEntry::OnDeinitialize do driver uma vez para cada pilha de dispositivos.
- A estrutura chama o método IDriverEntry::OnDeviceAdd do driver uma vez para cada pilha de dispositivos. Cada objeto de dispositivo está associado a um objeto de driver separado.
Num ambiente partilhado, se várias pilhas de dispositivos partilharem o mesmo driver em modo de utilizador:
- Cada pilha de dispositivos é carregada no mesmo processo WudfHost.
- A estrutura chama os métodos IDriverEntry::OnInitialize e IDriverEntry::OnDeinitialize do driver apenas uma vez.
- A estrutura chama o método do driver IDriverEntry::OnDeviceAdd uma vez para cada pilha de dispositivos. Cada objeto de dispositivo está associado ao mesmo objeto de driver.
Como há apenas um objeto de driver em uma configuração agrupada, o driver não deve armazenar nenhum contexto por dispositivo em variáveis globais ou em objetos compartilhados entre os dispositivos, como o objeto de retorno de chamada do driver. Em vez disso, o driver deve armazenar o contexto de cada dispositivo em um objeto que não é partilhado nas várias pilhas de dispositivos, como o objeto de retorno de chamada do dispositivo do driver.