Fonction NtOpenFile (ntifs.h)
La routine NtOpenFile ouvre un fichier, un répertoire, un appareil ou un volume existant.
Syntaxe
__kernel_entry NTSYSCALLAPI 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 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 NtCreateFile.
[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 NtCreateFile.
[in] OpenOptions
Spécifie les options à appliquer lors de l’ouverture du fichier. Pour plus d’informations, consultez le paramètre CreateOptions de NtCreateFile.
Valeur retournée
NtOpenFile 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
NtOpenFile 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. NtOpenFile fournit un sous-ensemble des fonctionnalités fournies par NtCreateFile. 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 NtClose 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 NtOpenFile 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 |
---|---|
Client minimal pris en charge | Windows 2000 |
Plateforme cible | Universal |
En-tête | ntifs.h (inclure 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, PowerIrpDDis |