Compartilhar via


Função IoGetDeviceDirectory (wdm.h)

Retorna um identificador para um diretório no disco, no qual os drivers podem armazenar arquivos. Os arquivos nesse diretório se aplicam a uma instância de dispositivo específica.

Sintaxe

NTSTATUS IoGetDeviceDirectory(
  [_In_]  PDEVICE_OBJECT        PhysicalDeviceObject,
  [_In_]  DEVICE_DIRECTORY_TYPE DirectoryType,
  [_In_]  ULONG                 Flags,
  [_In_]  PVOID                 Reserved,
  [_Out_] PHANDLE               DeviceDirectoryHandle
);

Parâmetros

[_In_] PhysicalDeviceObject

Um ponteiro para o objeto dispositivo físico sendo consultado na pilha de dispositivos de uma instância de dispositivo específica. Não deve ser NULL.

[_In_] DirectoryType

Um valor de tipo _DEVICE_DIRECTORY_TYPEque indica o tipo de diretório solicitado.

[_In_] Flags

Deve ser 0.

[_In_] Reserved

Reservado. Deve ser NULL.

[_Out_] DeviceDirectoryHandle

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

Valor de retorno

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

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

Observações

Se IoGetDeviceDirectory for chamado antes que os discos e volumes necessários sejam iniciados, a função não abrirá um identificador e retornará um erro.

Normalmente, os drivers 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 IoGetDeviceDirectory for bem-sucedida, use o HANDLE recebido como um diretório raiz no OBJECT_ATTRIBUTES que você está passando para umZwOpenFile e ZwCreateFile.

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

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

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 10, versão 1803
cabeçalho wdm.h
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Consulte também

ZwOpenFile

ZwCreateFile

ZwClose

_DEVICE_DIRECTORY_TYPE

OBJECT_ATTRIBUTES

InitializeObjectAttributes