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.
Considere as seguintes diretrizes de design ao escrever uma AddDevice rotina:
Se um driver de filtro determinar que a sua rotina AddDevice foi chamada para um dispositivo que não precisa de serviço, o driver de filtro deve retornar STATUS_SUCCESS para permitir que o restante da pilha de dispositivos seja carregado para ele. O driver de filtro não cria um objeto de dispositivo nem o anexa à pilha de dispositivos; O driver de filtro apenas retorna o sucesso e permite que o resto dos drivers sejam adicionados à pilha.
Um driver deve fornecer armazenamento, geralmente na extensão de dispositivo de um objeto de dispositivo, para quaisquer objetos definidos pelo kernel e bloqueios de spin de nível executivo que utiliza. Um driver também deve fornecer armazenamento para ponteiros para determinados objetos obtidos do gerenciador de E/S ou outros componentes do sistema.
Você pode decidir alocar memória adicional de espaço do sistema para as necessidades do driver, como buffers de E/S de longo prazo ou uma lista de reserva antecipada. Em caso afirmativo, uma rotina AddDevice pode chamar as seguintes rotinas:
ExAllocatePoolWithTag para memória de espaço do sistema paginada ou não paginada
ExInitializePagedLookasideList ou ExInitializeNPagedLookasideList para inicializar uma lista de lookaside paginada ou não paginada
Se o driver tiver um thread dedicado ao dispositivo ou aguardar por qualquer objeto de dispatcher definido pelo kernel, a rotina AddDevice poderá inicializar objetos de dispatcher do kernel.
Se o driver usar qualquer barramento de rotação executivo ou fornecer o armazenamento para um barramento de rotação de interrupção, a rotina AddDevice poderá inicializar esses barramentos de rotação. Consulte Spin Locks para obter mais informações.
Aumente a segurança de abertura de arquivo ao chamar IoCreateDevice.
Especifique a característica FILE_DEVICE_SECURE_OPEN na chamada para IoCreateDevice. Esta característica é suportada no Windows NT 4.0 SP5 e posterior. Ele direciona o gerenciador de E/S para executar verificações de segurança em relação ao objeto de dispositivo para todas as solicitações abertas. Os fornecedores devem especificar essa característica em chamadas para IoCreateDevice se a característica FILE_DEVICE_SECURE_OPEN não estiver definida no INF do instalador de classe do dispositivo ou no INF do dispositivo e os drivers não executarem suas próprias verificações de segurança em aberturas. (Para obter mais informações, consulte Controlando o acesso ao namespace do dispositivo.)
Se um driver definir a característica FILE_DEVICE_SECURE_OPEN quando chamar IoCreateDevice, o gestor de I/O aplicará o descritor de segurança do objeto de dispositivo a qualquer abertura relativa ou aberturas por nome de ficheiro com sufixo. Por exemplo, se FILE_DEVICE_SECURE_OPEN estiver definido para \Device\foo e se \Device\foo só puder ser aberto pelo administrador, \Device\foo\abc também poderá ser aberto pelo administrador. O gerenciador de E/S, no entanto, impede que um usuário normal abra \Device\foo e \Device\foo\abc.
Se um driver para um dispositivo definir esta característica, o gestor PnP propaga-a para todos os objetos de dispositivo desse dispositivo.
Importante
As DDIs ExAllocatePool discutidas neste tópico foram preteridas no Windows 10, versão 2004 e substituídas por ExAllocatePool2 e ExAllocatePool3. Para obter mais informações, consulte Atualizando chamadas ExAllocatePool preteridas para ExAllocatePool2 e ExAllocatePool3.