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.
No WDM (Windows Driver Model), cada objeto de dispositivo tem um namespace associado. Os nomes no namespace do dispositivo são caminhos que começam com o nome do dispositivo. Para um dispositivo chamado "\Device\DeviceName", seu namespace consiste em qualquer nome do formato "\Device\DeviceName\FileName". (Para um sistema de arquivos, FileName é um nome real de um arquivo no sistema de arquivos.)
Um driver WDM recebe solicitações abertas para todos os nomes no namespace do dispositivo. O driver trata uma solicitação aberta para "\Device\DeviceName" como uma abertura do próprio objeto de dispositivo. Se o driver implementar suporte para solicitações abertas no namespace do dispositivo, ele tratará uma solicitação aberta para "\Device\DeviceName\FileName" como uma abertura de um "arquivo" dentro do namespace do objeto de dispositivo (onde a noção de "arquivo" para o dispositivo é determinada pelo driver).
A maioria dos drivers não implementa suporte para operações abertas no namespace do dispositivo, mas todos os drivers devem fornecer verificações de segurança para impedir o acesso não autorizado ao namespace do dispositivo. Por padrão, as verificações de segurança para solicitações de abertura de arquivo dentro do namespace do dispositivo (por exemplo, "\Device\DeviceName\FileName") são deixadas inteiramente a cargo do driver — a ACL do objeto de dispositivo não é verificada pelo sistema operacional.
Se a característica FILE_DEVICE_SECURE_OPEN de um objeto de dispositivo estiver definida, o sistema aplicará o descritor de segurança do objeto de dispositivo a todas as solicitações de abertura de arquivo no namespace do dispositivo. Os drivers podem definir FILE_DEVICE_SECURE_OPEN quando criam o objeto de dispositivo com IoCreateDevice ou IoCreateDeviceSecure. Para drivers WDM, FILE_DEVICE_SECURE_OPEN também pode ser definido no registro. Ele também pode ser definido no registro para objetos de dispositivo de drivers não-WDM que são criados por IoCreateDeviceSecure. Para obter mais informações sobre como definir propriedades de objeto de dispositivo, como as características do dispositivo, no Registro, consulte Definindo propriedades de objeto de dispositivo no Registro. Para obter mais informações sobre as características do dispositivo, consulte Especificando características do dispositivo.
Os drivers para dispositivos que não suportam namespaces devem usar um dos dois métodos para garantir que as solicitações de abertura de arquivo dentro do namespace do dispositivo sejam tratadas corretamente:
Os objetos do dispositivo do driver têm o conjunto de características do dispositivo FILE_DEVICE_SECURE_OPEN. O driver pode então tratar qualquer solicitação aberta no namespace do dispositivo como uma solicitação aberta para o objeto de dispositivo.
O driver pode falhar em qualquer solicitação IRP_MJ_CREATE que especifique um parâmetro IrpSp-FileObject-FileName>> cujo comprimento não seja zero. Nesse caso, as solicitações abertas para o dispositivo estão sujeitas à verificação de ACL do sistema, enquanto todas as solicitações de abertura de arquivo dentro do namespace do dispositivo são falhadas pelo driver. (Os drivers que suportam aberturas exclusivas devem usar essa opção.)
Os drivers para dispositivos que suportam namespaces também podem usar dois métodos para proteger solicitações de abertura de arquivo no namespace do dispositivo:
Os objetos do dispositivo do driver têm o conjunto de características do dispositivo FILE_DEVICE_SECURE_OPEN. Isso garante que as configurações de segurança do dispositivo se apliquem uniformemente ao namespace do dispositivo. (O driver é responsável por implementar o suporte para o namespace em sua função de retorno de chamada DRIVER_DISPATCH .)
O driver verifica todas as ACLs para o nome do arquivo em sua rotina DispatchCreate . (Mesmo neste caso, o driver deverá configurar o atributo FILE_DEVICE_SECURE_OPEN, a menos que as aberturas na namespace do dispositivo possam ter configurações de segurança mais fracas do que o objeto de dispositivo.)
A característica FILE_DEVICE_SECURE_OPEN é verificada na parte superior da pilha, portanto, os objetos de dispositivo de filtro devem copiar o membro Características do objeto de dispositivo inferior seguinte após a anexação.