ZwOpenFile, fonction (wdm.h)

La routine ZwOpenFile ouvre un fichier, un répertoire, un appareil ou un volume existant.

Syntaxe

NTSYSAPI NTSTATUS ZwOpenFile(
  [out] PHANDLE            FileHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes,
  [out] PIO_STATUS_BLOCK   IoStatusBlock,
  [in]  ULONG              ShareAccess,
  [in]  ULONG              OpenOptions
);

Paramètres

[out] FileHandle

Pointeur vers une variable HANDLE qui reçoit un handle pour le fichier.

[in] DesiredAccess

Spécifie une valeur ACCESS_MASK qui détermine l’accès demandé à l’objet . Pour plus d’informations, consultez le paramètre DesiredAccess de ZwCreateFile.

[in] ObjectAttributes

Pointeur vers une structure OBJECT_ATTRIBUTES qui spécifie le nom de l’objet et d’autres attributs. Utilisez InitializeObjectAttributes pour initialiser cette structure. Si l’appelant n’est pas en cours d’exécution dans un contexte de thread système, il doit définir l’attribut OBJ_KERNEL_HANDLE lorsqu’il appelle InitializeObjectAttributes.

[out] IoStatusBlock

Pointeur vers une structure de IO_STATUS_BLOCK qui reçoit le status d’achèvement final et des informations sur l’opération demandée.

[in] ShareAccess

Spécifie le type d’accès au partage pour le fichier. Pour plus d’informations, consultez le paramètre ShareAccess de ZwCreateFile.

[in] OpenOptions

Spécifie les options à appliquer lors de l’ouverture du fichier. Pour plus d’informations, consultez le paramètre CreateOptions de ZwCreateFile.

Valeur retournée

ZwOpenFile retourne STATUS_SUCCESS ou le code d’erreur NTSTATUS approprié. Dans ce dernier cas, l’appelant peut trouver plus d’informations sur la cause de l’échec en vérifiant le paramètre IoStatusBlock .

Remarques

ZwOpenFile fournit un handle que l’appelant peut utiliser pour manipuler les données d’un fichier, ou l’état et les attributs de l’objet fichier. ZwOpenFile fournit un sous-ensemble des fonctionnalités fournies par ZwCreateFile. Pour plus d’informations, consultez Utilisation de fichiers dans un pilote.

Une fois que le handle pointé par FileHandle n’est plus utilisé, le pilote doit appeler ZwClose pour le fermer.

Si l’appelant n’est pas en cours d’exécution dans un contexte de thread système, il doit s’assurer que tous les handles qu’il crée sont des handles privés. Sinon, le handle est accessible par le processus dans le contexte dans lequel le pilote est en cours d’exécution. Pour plus d’informations, consultez Handles d’objet.

Les appelants de ZwOpenFile doivent s’exécuter sur IRQL = PASSIVE_LEVEL et avec des API de noyau spéciales activées.

Si l’appel à cette fonction se produit en mode utilisateur, vous devez utiliser le nom « NtOpenFile » au lieu de « ZwOpenFile ».

Pour les appels provenant de pilotes en mode noyau, les versions NtXxx et ZwXxx d’une routine Windows Native System Services peuvent se comporter différemment dans 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.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (voir la section Remarques)
Règles de conformité DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Voir aussi

ACCESS_MASK

InitializeObjectAttributes

Utilisation des versions Nt et Zw des routines des services système natifs

ZwCreateFile