Partager via


ZwOpenDirectoryObject, fonction (ntifs.h)

La routine ZwOpenDirectoryObject ouvre un objet de répertoire existant.

Syntaxe

NTSYSAPI NTSTATUS ZwOpenDirectoryObject(
  [out] PHANDLE            DirectoryHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes
);

Paramètres

[out] DirectoryHandle

Handle pour l’objet de répertoire nouvellement ouvert.

[in] DesiredAccess

Structure ACCESS_MASK spécifiant les types d’accès demandés pour cet objet d’annuaire. Un appelant peut spécifier une ou une combinaison des éléments suivants.

indicateurs de DesiredAccess Signification
DIRECTORY_QUERY Interroger l’accès à l’objet de répertoire
DIRECTORY_TRAVERSE Accès à la recherche de noms à l’objet de répertoire
DIRECTORY_CREATE_OBJECT Accès à la création de noms à l’objet d’annuaire
DIRECTORY_CREATE_SUBDIRECTORY Accès de création de sous-répertoire à l’objet d’annuaire
DIRECTORY_ALL_ACCESS Tous les droits précédents plus STANDARD_RIGHTS_REQUIRED.
 

Ces types d’accès demandés sont comparés à la liste de contrôle d’accès discrétionnaire de l’objet (DACL) pour déterminer quels accès sont accordés ou refusés.

[in] ObjectAttributes

Attributs spécifiés pour l’objet de répertoire fourni par l’appelant. Ce paramètre est initialisé en appelant la macro InitializeObjectAttributes.

Valeur de retour

ZwOpenDirectoryObject retourne STATUS_SUCCESS ou un état d’erreur approprié. Les codes d’état d’erreur les plus courants sont les suivants :

Retourner le code Description
STATUS_INSUFFICIENT_RESOURCES
Impossible d’allouer une mémoire tampon temporaire requise par cette routine.
STATUS_INVALID_PARAMETER
Le paramètre ObjectAttributes spécifié était un pointeur NULL , et non un pointeur valide vers une structure OBJECT_ATTRIBUTES, ou certains des champs spécifiés dans la structure OBJECT_ATTRIBUTES n’étaient pas valides.
STATUS_OBJECT_NAME_INVALID
Le paramètre ObjectAttributes contenait un champ ObjectName dans la structure OBJECT_ATTRIBUTES qui n’était pas valide, car une chaîne vide a été trouvée après le caractère OBJECT_NAME_PATH_SEPARATOR.
STATUS_OBJECT_NAME_NOT_FOUND
Le paramètre ObjectAttributes contenait un champ ObjectName dans la structure OBJECT_ATTRIBUTES introuvable.
STATUS_OBJECT_PATH_NOT_FOUND
Le paramètre ObjectAttributes contenait un champ ObjectName dans la structure OBJECT_ATTRIBUTES avec un chemin d’accès d’objet introuvable.
STATUS_OBJECT_PATH_SYNTAX_BAD
Le paramètre ObjectAttributes ne contenait pas de champ RootDirectory, mais le champ ObjectName de la structure OBJECT_ATTRIBUTES était une chaîne vide ou ne contenait pas de caractère OBJECT_NAME_PATH_SEPARATOR. Cela indique une syntaxe incorrecte pour le chemin d’accès de l’objet.
 

La routine ZwOpenDirectoryObject lève une exception si le paramètre DirectoryHandle est un pointeur illégal.

Remarques

ZwOpenDirectoryObject ouvre un objet de répertoire existant et retourne un handle à l’objet.

La routine ZwOpenDirectoryObject est appelée après l’ouverture de la macro InitializeObjectAttributes pour initialiser des attributs spécifiques de la structure OBJECT_ATTRIBUTES de l’objet à ouvrir.

Un objet de répertoire est créé à l’aide de la routineZwCreateDirectoryObject . Tout handle obtenu en appelant ZwOpenDirectoryObject doit finalement être libéré en appelant ZwClose.

Pour plus d’informations sur la sécurité et le contrôle d’accès, consultez modèle de sécurité Windows pour les développeurs de pilotes et la documentation sur ces rubriques dans le Kit de développement logiciel (SDK) Windows.

Remarque Si l’appel à la fonction ZwCreateDirectoryObject se produit en mode utilisateur, vous devez utiliser le nom «NtCreateDirectoryObject» au lieu de «ZwCreateDirectoryObject».
 
Pour les appels à partir de pilotes en mode noyau, les versions NtXxx et ZwXxx d’une routine Windows Native System Services peuvent se comporter différemment de la façon dont elles gèrent et interprètent les paramètres d’entrée. Pour plus d’informations sur la relation entre les versions NtXxx et ZwXxx d’une routine, consultez Using Nt and Zw Versions of the Native System Services Routines.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP
plateforme cible Universel
d’en-tête ntifs.h (include Ntdef.h, Ntifs.h, Fltkernel.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
règles de conformité DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Voir aussi

ACCESS_MASK

de liste de contrôle d’accès

InitializeObjectAttributes

à l’aide de versions Nt et Zw des routines natives des services système

ZwClose

ZwCreateDirectoryObject