Função IoGetDriverDirectory (wdm.h)

Retorna um identificador para um diretório no disco do qual o driver pode ler e gravar arquivos. Os arquivos nesse diretório se aplicam a um objeto de driver específico.

Sintaxe

NTSTATUS IoGetDriverDirectory(
  [_In_]  PDRIVER_OBJECT        DriverObject,
  [_In_]  DRIVER_DIRECTORY_TYPE DirectoryType,
  [_In_]  ULONG                 Flags,
  [_Out_] PHANDLE               DriverDirectoryHandle
);

Parâmetros

[_In_] DriverObject

Um ponteiro para o objeto de driver (estrutura DRIVER_OBJECT ) do driver de chamada.

[_In_] DirectoryType

Um valor de tipo _DRIVER_DIRECTORY_TYPE que indica o tipo de diretório solicitado.

[_In_] Flags

Deve ser 0.

[_Out_] DriverDirectoryHandle

Um ponteiro para uma variável que recebe um HANDLE para o diretório de driver solicitado. O chamador não deve passar NULL.

Retornar valor

Retorna um valor NTSTATUS apropriado. Os valores possíveis incluem:

Código do erro Descrição
STATUS_SUCCESS A chamada abriu com êxito um identificador para o diretório de driver solicitado.
STATUS_INVALID_PARAMETER Um valor de entrada para essa função é inválido. Por exemplo, DriverObject ou DriverDirectoryHandle é NULL; Sinalizadores não são 0.

Comentários

Se IoGetDriverDirectory for chamado antes de os discos e volumes necessários terem sido iniciados, a função não abrirá um identificador e retornará um erro.

Os drivers normalmente usam ZwOpenFile e ZwCreateFile para acessar/criar arquivos. Um dos parâmetros para essas funções é uma estrutura OBJECT_ATTRIBUTES , que contém o nome do objeto e um diretório raiz. Se o diretório raiz for NULL, o nome do objeto deverá ser um caminho totalmente qualificado. No entanto, se você fornecer um identificador para o diretório raiz, o nome do objeto deverá ser relativo ao objeto (no caso de arquivos, o diretório), que o identificador representa.

Depois que a chamada IoGetDriverDirectory for bem-sucedida, use o HANDLE recebido como um diretório raiz no OBJECT_ATTRIBUTES que você está passando para um ZwOpenFile e ZwCreateFile.

O driver deve chamar ZwClose para fechar o identificador recebido quando o acesso não for mais necessário.

Os chamadores de IoGetDriverDirectory devem estar em execução em IRQL = PASSIVE_LEVEL no contexto de um thread do sistema.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1803
Cabeçalho wdm.h
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Confira também

DRIVER_OBJECT

_DRIVER_DIRECTORY_TYPE

ZwOpenFile

ZwCreateFile

ZwClose

OBJECT_ATTRIBUTES

InitializeObjectAttributes