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
Utilisation des versions Nt et Zw des routines des services système natifs