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.
Os drivers devem ajudar a evitar que os usuários acessem inadequadamente os dispositivos e arquivos de um computador. Para impedir o acesso não autorizado a dispositivos e ficheiros, deve:
Nomeie objetos de dispositivo somente quando necessário.
Fornecer descritores de segurança para objetos e interfaces de dispositivos.
nomear objetos de dispositivo somente quando necessário
Como a maioria dos drivers WDM (Windows Driver Model), os drivers baseados em estrutura normalmente não nomeiam seus objetos de dispositivo. Os aplicativos podem acessar um dispositivo especificando um nome de objeto de dispositivo, portanto, cada nome de objeto de dispositivo adicional representa um caminho adicional que um aplicativo pode usar para acessar o dispositivo.
Para impedir o acesso não autorizado a um dispositivo, cada driver pode especificar um descritor de segurança quando nomeia um objeto de dispositivo. No entanto, o nome de arquivo que o sistema operacional fornece a um driver (consulte WdfFileObjectGetFileName) não inclui o nome do objeto de dispositivo que o aplicativo usou. Portanto, se vários drivers na pilha de drivers atribuírem nomes aos seus objetos de dispositivo, o driver não poderá determinar qual nome de objeto a aplicação usou para abrir o dispositivo. Como resultado, um aplicativo pode abrir o dispositivo com um descritor de segurança menos restritivo do que o driver espera.
Os objetos de dispositivo físico (DOP) devem ter nomes. Normalmente, os drivers de barramento baseados em framework não especificam um nome para um PDO, porque o framework (por padrão) instrui o sistema operacional a gerar automaticamente um nome.
Por outro lado, um driver baseado em estrutura pode atribuir um nome de dispositivo a um objeto de dispositivo chamando WdfDeviceInitAssignName. Um driver deve nomear um objeto de dispositivo funcional (FDO), objeto de dispositivo de filtro (filtro DO) ou PDO somente se o driver deve suportar um aplicativo mais antigo que espera um nome de dispositivo específico, ou se o driver pertence a uma pilha de driver mais antiga cuja arquitetura requer nomes de objeto.
Em vez de nomear FDOs e filtrar DOs, os drivers WDM e os drivers baseados em estrutura devem fornecer interfaces de dispositivo que os aplicativos podem acessar. O sistema operacional obtém o descritor de segurança da interface do dispositivo a partir do PDO do dispositivo e das entradas do Registro especificadas pelo arquivo INF de um pacote de driver. Um driver de barramento pode fornecer interfaces de dispositivo para um PDO se os dispositivos do driver operarem em modo bruto, sem um driver de função.
Alguns drivers devem chamar WdfDeviceCreateSymbolicLink para criar nomes de link simbólico para seus dispositivos. Por exemplo, um driver pode criar um nome de dispositivo MS-DOS se os aplicativos esperam ver um nome MS-DOS para o dispositivo. Se o driver criar um nome de link simbólico para um FDO ou filtro DO não nomeado, a estrutura associará o nome do link simbólico ao nome do PDO. (Os dispositivos de controlo não estão associados a uma DOP, portanto, o seu controlador não pode criar um nome de ligação simbólico para um dispositivo de controlo não identificado.)
Fornecendo descritores de segurança para objetos e interfaces de dispositivos
Cada objeto de dispositivo nomeado deve ter um descritor de segurança. O sistema operacional usa o descritor de segurança do objeto de dispositivo para determinar os tipos de usuários que têm permissão para acessar um dispositivo e suas interfaces de dispositivo. Os descritores de segurança podem ser atribuídos a objetos de dispositivo da seguinte forma:
O sistema operacional, que fornece um descritor de segurança padrão para objetos de dispositivo (consulte Controlando o acesso ao dispositivo).
O framework, que fornece um descritor de segurança padrão (usando o valor SDDL_DEVOBJ_SYS_ALL_ADM_ALL) quando o driver chama WdfDeviceInitAssignName para atribuir um nome a um objeto de dispositivo (consulte SDDL para Objetos de Dispositivo).
Seu driver, que pode substituir o descritor de segurança padrão da estrutura chamando WdfDeviceInitAssignSDDLString.
Por padrão, o sistema operacional também usa o descritor de segurança do PDO do dispositivo para determinar os direitos de acesso às interfaces do dispositivo que um driver fornece.
Um pacote de driver pode fornecer um arquivo INF que especifica os descritores de segurança de um dispositivo com uma diretiva INF AddReg dentro de uma seção INF DDInstall.HW.
Para obter mais informações sobre como especificar descritores de segurança em arquivos INF, consulte Criando instalações seguras de dispositivos.
Se o driver cria PDOs para dispositivos que operam no modo bruto, o driver deve especificar uma classe de configuração de dispositivo quando chama WdfPdoInitAssignRawDevice. Além disso, se o driver cria dispositivos de controle, ele pode chamar WdfDeviceInitSetDeviceClass para especificar uma classe de configuração de dispositivo. Em ambos os casos, os administradores de sistema podem usar a chave do Registro da classe de instalação especificada para armazenar descritores de segurança para o dispositivo.
Para obter informações sobre como o sistema operacional determina qual descritor de segurança usar para um dispositivo, consulte Controlando o acesso ao dispositivo.
Quando a estrutura cria um objeto de dispositivo, ela sempre define o sinalizador de FILE_DEVICE_SECURE_OPEN para que o sistema operacional verifique o descritor de segurança de um dispositivo antes de permitir que um aplicativo acesse quaisquer nomes dentro do namespace do dispositivo. Para obter mais informações sobre o sinalizador de FILE_DEVICE_SECURE_OPEN e o namespace do dispositivo, consulte Controlando o acesso ao namespace do dispositivo.