Función IoGetDriverDirectory (wdm.h)

Devuelve un identificador a un directorio del disco desde el que el controlador puede leer y escribir archivos. Los archivos de ese directorio se aplican a un objeto de controlador específico.

Sintaxis

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

Parámetros

[_In_] DriverObject

Puntero al objeto de controlador (DRIVER_OBJECT estructura) del controlador que llama.

[_In_] DirectoryType

Valor de tipo _DRIVER_DIRECTORY_TYPE que indica el tipo de directorio solicitado.

[_In_] Flags

Debe ser 0.

[_Out_] DriverDirectoryHandle

Puntero a una variable que recibe un identificador al directorio del controlador solicitado. El autor de la llamada no debe pasar NULL.

Valor devuelto

Devuelve un valor NTSTATUS adecuado. Los valores posibles son:

Código de error Descripción
STATUS_SUCCESS La llamada abrió correctamente un identificador en el directorio del controlador solicitado.
STATUS_INVALID_PARAMETER Un valor de entrada para esta función no es válido. Por ejemplo, DriverObject o DriverDirectoryHandle es NULL; Las marcas no son 0.

Comentarios

Si se llama a IoGetDriverDirectory antes de iniciar los discos y volúmenes necesarios, la función no abre un identificador y devuelve un error.

Los controladores suelen usar ZwOpenFile y ZwCreateFile para acceder o crear archivos. Uno de los parámetros de esas funciones es una estructura OBJECT_ATTRIBUTES , que contiene el nombre del objeto y un directorio raíz. Si el directorio raíz es NULL, el nombre del objeto debe ser una ruta de acceso completa. Sin embargo, si proporciona un identificador para el directorio raíz, el nombre del objeto debe ser relativo al objeto (en el caso de los archivos, el directorio), que representa el identificador.

Una vez que la llamada a IoGetDriverDirectory se realiza correctamente, use el identificador recibido como directorio raíz en el OBJECT_ATTRIBUTES que se pasa a un ZwOpenFile y ZwCreateFile.

El controlador debe llamar a ZwClose para cerrar el identificador recibido cuando el acceso ya no sea necesario.

Los autores de llamadas de IoGetDriverDirectory deben ejecutarse en IRQL = PASSIVE_LEVEL en el contexto de un subproceso del sistema.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 1803
Encabezado wdm.h
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Consulte también

DRIVER_OBJECT

_DRIVER_DIRECTORY_TYPE

ZwOpenFile

ZwCreateFile

ZwClose

OBJECT_ATTRIBUTES

InitializeObjectAttributes