Controlando o WDM (Acesso ao Dispositivo)

O acesso a um dispositivo é controlado por um descritor de segurança (e pela ACL que ele contém). Um descritor de segurança para um objeto de dispositivo pode ser especificado quando o objeto de dispositivo é criado ou definido no registro.

Controlando o acesso ao dispositivo para drivers WDM

Quando um driver WDM (diferente de determinados drivers de barramento) cria um objeto de dispositivo, o gerenciador de Plug and Play determina um descritor de segurança para o dispositivo. A ordem das operações é a seguinte.

  1. O gerenciador PnP chama a rotina AddDevice do driver.

  2. A rotina AddDevice do driver chama IoCreateDevice para criar o objeto do dispositivo e anexá-lo à pilha de objetos do dispositivo.

  3. O gerenciador PnP atualiza o descritor de segurança para o objeto de dispositivo recém-criado.

Para um driver WDM, o gerenciador PnP determina o descritor de segurança para o objeto do dispositivo da seguinte maneira.

  1. Se o dispositivo tiver uma configuração de descritor de segurança no registro, ele será aplicado a todos os objetos na pilha do dispositivo.

  2. Caso contrário, se a classe de instalação do dispositivo tiver uma configuração de descritor de segurança no registro, ela será aplicada a todos os objetos na pilha do dispositivo.

  3. Caso contrário, o gerenciador PnP deixará o descritor de segurança padrão para cada objeto inalterado. Nesse caso, o descritor de segurança padrão para a pilha é determinado pelo tipo de dispositivo e pelas características do dispositivo do PDO.

Para a maioria dos tipos de dispositivo e características, o descritor de segurança padrão fornece acesso completo (GENERIC_ALL) aos administradores e acesso de leitura, gravação e execução (GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE) acesso a todos os outros.

Para obter mais informações sobre como definir um descritor de segurança para uma classe de configuração de dispositivo ou dispositivo no Registro, consulte Definindo propriedades de objeto de dispositivo no Registro.

Se um dispositivo for operado no modo bruto, o gerenciador PnP não poderá determinar um descritor de segurança para o objeto do dispositivo. Nesse caso, o motorista do ônibus deve fornecer um descritor de segurança; veja abaixo.

Controlando o acesso ao dispositivo para drivers de barramento WDM

Um driver de barramento WDM deve fornecer um descritor de segurança para o PDO de todos os dispositivos que podem ser operados no modo bruto. Use IoCreateDeviceSecure para criar o objeto de dispositivo com um descritor de segurança.

Se o motorista do ônibus não operar um dispositivo no modo bruto, não será necessário fornecer um descritor de segurança. O gerenciador PnP determina o descritor de segurança, conforme descrito acima. O motorista do ônibus poderá fornecer um descritor de segurança se precisar garantir que seus PDOs tenham configurações de segurança mais rigorosas do que o descritor padrão. Qualquer descritor especificado pelo motorista do barramento é substituído pelas configurações no registro.

Para obter mais informações sobre como criar objetos de dispositivo, consulte Criando um objeto de dispositivo.

Controlando o acesso ao dispositivo para drivers não WDM

Os drivers não WDM devem especificar um descritor de segurança padrão e um GUID de classe para quaisquer objetos de dispositivo nomeados que eles criarem.

Use a rotina IoCreateDeviceSecure para criar o objeto de dispositivo nomeado e especificar o descritor de segurança padrão e o GUID de classe para esse dispositivo. O descritor de segurança é especificado em um subconjunto de SDDL. Para obter mais informações, consulte SDDL para objetos de dispositivo.

O sistema substitui o descritor de segurança padrão por quaisquer configurações de segurança no registro para o GUID de classe especificado. O driver deve especificar seu próprio GUID exclusivo para o dispositivo. Use a ferramenta GuidGen para gerar um GUID exclusivo. (GuidGen está incluído no SDK do Microsoft Windows.)