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 de fichier.

Cette fonction équivaut à 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 initialisée par un appelant 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 d’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’état d’achèvement final.

[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 de retour

NtOpenFile retourne STATUS_SUCCESS ou un état d’erreur approprié. S’il retourne un état d’erreur, 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 s’exécutant uniquement en mode noyau. Sinon, le handle est accessible par le processus 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 à IRQL = PASSIVE_LEVEL.

Notez que le fichier d’en-tête WDK Ntdef.h est nécessaire pour de nombreuses définitions constantes. Vous pouvez également utiliser les fonctions LoadLibrary et GetProcAddress pour lier dynamiquement à Ntdll.dll.

Spécifications

Requirement Valeur
plateforme cible Fenêtres
Header winternl.h
Library ntdll.lib
DLL ntdll.dll