Partager via


Fonction IoGetDeviceDirectory (wdm.h)

Retourne un handle dans un répertoire sur le disque, dans lequel les pilotes peuvent stocker des fichiers. Les fichiers de ce répertoire s’appliquent à une instance d’appareil spécifique.

Syntaxe

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

Paramètres

[_In_] PhysicalDeviceObject

Pointeur vers l’objet d’appareil physique interrogé dans la pile d’appareils d’une instance d’appareil spécifique. Ne doit pas être NULL.

[_In_] DirectoryType

Valeur _DEVICE_DIRECTORY_TYPE-type qui indique le type de répertoire demandé.

[_In_] Flags

Doit être 0.

[_In_] Reserved

Réservé. Doit être NULL.

[_Out_] DeviceDirectoryHandle

Pointeur vers une variable qui reçoit un HANDLE vers le répertoire d’appareil demandé. L’appelant ne doit pas passer NULL.

Valeur de retour

Retourne une valeur NTSTATUS appropriée . Les valeurs possibles sont les suivantes :

Code d’erreur Description
STATUS_SUCCESS L’appel a correctement ouvert un handle dans le répertoire de l’appareil demandé.
STATUS_INVALID_PARAMETER Une valeur d’entrée pour cette fonction n’est pas valide. Par exemple, PhysicalDeviceObject ou DeviceDirectoryHandle est NULL ; indicateurs n’est pas 0 ; réservée n’est pas NULL.

Remarques

Si IoGetDeviceDirectory est appelé avant le démarrage des disques et des volumes requis, la fonction n’ouvre pas de handle et retourne une erreur.

Les pilotes utilisent généralement ZwOpenFile et ZwCreateFile pour accéder/créer des fichiers. L’un des paramètres de ces fonctions est une structure OBJECT_ATTRIBUTES, qui contient le nom de l’objet et un répertoire racine. Si le répertoire racine est NULL, le nom de l’objet doit être un chemin complet. Toutefois, si vous fournissez un handle pour le répertoire racine, le nom de l’objet doit être relatif à l’objet (dans le cas de fichiers, le répertoire), que le handle représente.

Une fois l’appel IoGetDeviceDirectory réussi, utilisez le HANDLE reçu comme répertoire racine dans l'OBJECT_ATTRIBUTES que vous passez à un ZwOpenFile et ZwCreateFile.

Le pilote doit appeler ZwClose pour fermer le handle reçu lorsque l’accès n’est plus nécessaire.

Les appelants de IoGetDeviceDirectory doivent s’exécuter à IRQL = PASSIVE_LEVEL dans le contexte d’un thread système.

Exigences

Exigence Valeur
client minimum pris en charge Windows 10, version 1803
d’en-tête wdm.h
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Voir aussi

ZwOpenFile

ZwCreateFile

ZwClose

_DEVICE_DIRECTORY_TYPE

OBJECT_ATTRIBUTES

InitializeObjectAttributes