Partilhar via


Diretrizes de Sessão Zero para Drivers UMDF

A partir do Windows Vista, o sistema operacional isola serviços e processos do sistema na Sessão 0, enquanto os aplicativos são executados em sessões subsequentes e numeradas mais altas. Como o processo de host UMDF (WUDFHost.exe) é um dos processos do sistema executados na sessão 0, os drivers UMDF são isolados dos aplicativos. Como resultado, você deve usar as seguintes diretrizes ao desenvolver seu driver:

  • Não crie um elemento de interface do usuário (UI), como uma caixa de diálogo, ou dependa da entrada do usuário. Como o utilizador não está a executar na Sessão 0, ele nunca vê a UI e não pode responder a ela.

    Da mesma forma, não manipule nenhum elemento da interface do usuário. Por exemplo, um driver UMDF não pode enumerar janelas na sessão do usuário.

  • Se o driver tiver de se comunicar com um serviço, use um mecanismo cliente/servidor, como chamada de procedimento remoto (RPC) ou named pipes.

  • Tenha cuidado ao chamar funções na API do Windows. Algumas funções podem manipular elementos da interface do usuário ou tentar acessar objetos nomeados na sessão de um usuário. Não chame funções do Windows que você não chamaria de um serviço de modo de usuário. Como regra geral, um driver UMDF pode chamar com segurança funções que são exportadas em kernel32.dll, mas não funções exportadas em user32.dll.

    Um driver UMDF pode chamar funções do Windows para executar as seguintes tarefas:

    • Um driver pode chamar as funções SetupDiXxx para recuperar uma propriedade de dispositivo Plug and Play. Por exemplo, o driver de exemplo UMDF para OSR USB Fx2 Learning Kit chama SetupDiGetDeviceRegistryProperty para recuperar o GUID para o tipo de barramento do dispositivo. Observação Um driver UMDF não pode utilizar com segurança muitas das funções SetupDiXxx, mas é seguro utilizar funções que recuperam propriedades do nó do dispositivo.

    • Um driver que recupera solicitações de E/S de uma fila manual pode criar um temporizador periódico para sondar a fila. Por exemplo, o exemplo WudfVhidmini registra uma rotina de retorno de chamada de temporizador chamando CreateThreadpoolTimer e, em seguida, define um temporizador periódico chamando SetThreadpoolTimer. Observação A partir da versão 1.11, o UMDF fornece suporte para itens de trabalho. Para obter mais informações, consulte Usando itens de trabalho.

Para obter informações adicionais sobre como usar serviços do sistema fora das estruturas, consulte o Capítulo 14 ("Além das estruturas") de Orwick, Penny e Guy Smith. Desenvolvendo drivers com o Windows Driver Foundation. Redmond, WA: Editora Microsoft, 2007.

Para obter informações adicionais sobre isolamento zero de sessão, consulte Impacto do isolamento de sessão 0 em serviços e drivers no Windows.