Partager via


Fonction NtOpenFile (winternl.h)

Ouvre un fichier, un appareil, un répertoire ou un volume existant et retourne un handle pour l’objet fichier.

Cette fonction est équivalente à la fonction ZwOpenFile documentée dans le Kit de pilotes Windows (WDK).

Syntaxe

__kernel_entry NTSTATUS NtOpenFile(
  [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 un handle pour le fichier ouvert. Le pilote doit fermer la poignée avec ZwClose une fois que la poignée n’est plus utilisée.

[in] DesiredAccess

Valeur ACCESS_MASK qui exprime les types d’accès aux fichiers souhaités par l’appelant. Pour plus d’informations sur les types d’accès qui peuvent être spécifiés, consultez ZwCreateFile dans wdK.

[in] ObjectAttributes

Pointeur vers une structure qu’un appelant initialise avec InitializeObjectAttributes. Si l’appelant n’est pas en cours d’exécution dans le contexte du processus système, il doit définir l’attribut OBJ_KERNEL_HANDLE pour ObjectAttributes. Pour plus d’informations sur la spécification des attributs d’objet, consultez le paramètre CreateOptions de ZwCreateFile dans WDK.

[out] IoStatusBlock

Pointeur vers une structure qui contient des informations sur l’opération demandée et l’achèvement final status.

[in] ShareAccess

Type d’accès au partage pour le fichier. Pour plus d’informations, consultez ZwCreateFile dans WDK.

[in] OpenOptions

Options à appliquer lors de l’ouverture du fichier. Pour plus d’informations, consultez ZwCreateFile dans WDK.

Valeur retournée

NtOpenFile retourne STATUS_SUCCESS ou une erreur appropriée status. S’il retourne une erreur status, l’appelant peut trouver des informations supplémentaires sur la cause de l’échec en vérifiant ioStatusBlock.

Remarques

Les routines de pilote qui s’exécutent dans un contexte de processus autre que celui du processus système doivent définir l’attribut OBJ_KERNEL_HANDLE pour le paramètre ObjectAttributes de ZwOpenFile. Cela limite l’utilisation du handle retourné par ZwOpenFile aux processus exécutés uniquement en mode noyau. Sinon, le handle est accessible par le processus dans le contexte dans lequel le pilote est en cours d’exécution. Les pilotes peuvent appeler InitializeObjectAttributes pour définir l’attribut OBJ_KERNEL_HANDLE comme suit.

InitializeObjectAttributes(&ObjectAddributes, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);

Les appelants de ZwCreateFile doivent s’exécuter sur IRQL = PASSIVE_LEVEL.

Notez que le fichier d’en-tête WDK Ntdef.h est nécessaire pour de nombreuses définitions de constantes, ainsi que pour la macro InitializeObjectAttributes . Vous pouvez également utiliser les fonctions LoadLibrary et GetProcAddress pour établir une liaison dynamique vers Ntdll.dll.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête winternl.h
Bibliothèque ntdll.lib
DLL ntdll.dll