Fonction IoGetDeviceDirectory (wdm.h)
Retourne un handle à un répertoire sur le disque, dans lequel les pilotes peuvent stocker des fichiers. Les fichiers de ce répertoire s’appliquent à un appareil spécifique instance.
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’un appareil particulier instance. Ne doit pas avoir la valeur Null.
[_In_] DirectoryType
Valeur de type _DEVICE_DIRECTORY_TYPE qui indique le type de répertoire demandé.
[_In_] Flags
Doit être égal à 0.
[_In_] Reserved
Réservé. Doit être NULL.
[_Out_] DeviceDirectoryHandle
Pointeur vers une variable qui reçoit un HANDLE vers le répertoire de l’appareil demandé. L’appelant ne doit pas passer la valeur NULL.
Valeur retournée
Retourne une valeur NTSTATUS appropriée. Les valeurs possibles incluent :
Code d'erreur | Description |
---|---|
STATUS_SUCCESS | L’appel a ouvert un handle dans le répertoire de l’appareil demandé. |
STATUS_INVALID_PARAMETER | Une valeur d’entrée de cette fonction n’est pas valide. Par exemple, PhysicalDeviceObject ou DeviceDirectoryHandle a la valeur NULL ; Les indicateurs n’ont pas la valeur 0 ; Réservé n’a pas la valeur NULL. |
Remarques
Si IoGetDeviceDirectory est appelé avant le démarrage des disques et 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 des 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 le OBJECT_ATTRIBUTES que vous passez à un ZwOpenFile et à un ZwCreateFile.
Le pilote doit appeler ZwClose pour fermer le handle reçu lorsque l’accès n’est plus nécessaire.
Les appelants d’IoGetDeviceDirectory doivent s’exécuter à IRQL = PASSIVE_LEVEL dans le contexte d’un thread système.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 version 1803 |
En-tête | wdm.h |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |