Fonction IoGetDriverDirectory (wdm.h)
Retourne un handle dans un répertoire sur disque à partir duquel le pilote peut lire et écrire des fichiers. Les fichiers de ce répertoire s’appliquent à un objet pilote spécifique.
Syntaxe
NTSTATUS IoGetDriverDirectory(
[_In_] PDRIVER_OBJECT DriverObject,
[_In_] DRIVER_DIRECTORY_TYPE DirectoryType,
[_In_] ULONG Flags,
[_Out_] PHANDLE DriverDirectoryHandle
);
Paramètres
[_In_] DriverObject
Pointeur vers l’objet pilote (structure DRIVER_OBJECT ) du pilote appelant.
[_In_] DirectoryType
Valeur de type _DRIVER_DIRECTORY_TYPE qui indique le type de répertoire demandé.
[_In_] Flags
Doit être égal à 0.
[_Out_] DriverDirectoryHandle
Pointeur vers une variable qui reçoit un HANDLE vers le répertoire du pilote demandé. L’appelant ne doit pas passer 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 du pilote demandé. |
STATUS_INVALID_PARAMETER | Une valeur d’entrée pour cette fonction n’est pas valide. Par exemple, DriverObject ou DriverDirectoryHandle a la valeur NULL ; Les indicateurs n’ont pas la valeur 0. |
Remarques
Si IoGetDriverDirectory 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 aux fichiers et les créer. 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 d’accès 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 IoGetDriverDirectory réussi, utilisez le HANDLE reçu comme répertoire racine dans le OBJECT_ATTRIBUTES que vous transmettez à 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 d’IoGetDriverDirectory doivent s’exécuter sur 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 |