Partager via


Ouverture d’un handle dans un fichier

Pour ouvrir un handle dans un fichier, procédez comme suit :

  1. Créez une structure OBJECT_ATTRIBUTES et appelez la macro InitializeObjectAttributes pour initialiser la structure. Vous spécifiez le nom de l’objet du fichier comme paramètre ObjectName sur InitializeObjectAttributes.

  2. Ouvrez un handle dans le fichier en passant la structure OBJECT_ATTRIBUTES à IoCreateFile, ZwCreateFile ou ZwOpenFile.

    Si le fichier n’existe pas, IoCreateFile et ZwCreateFile le créent, tandis que ZwOpenFile retourne STATUS_OBJECT_NAME_NOT_FOUND.

Notez que les pilotes utilisent presque toujours ZwCreateFile ou ZwOpenFile plutôt que IoCreateFile.

Lorsque vous appelez IoCreateFile, ZwCreateFile ou ZwOpenFile, l’administrateur Windows crée un objet de fichier pour représenter le fichier et fournit un handle ouvert à l’objet. Cet objet de fichier persiste jusqu’à ce que vous fermiez tous les handles ouverts.

Quelle que soit la routine que vous appelez, vous devez passer les droits d’accès dont vous avez besoin en tant que paramètre DesiredAccess . Ces droits doivent couvrir toutes les opérations que votre pilote effectuera. Le tableau suivant répertorie ces opérations et le droit d’accès correspondant à demander.

Opération Droit d’accès requis

Lire à partir du fichier.

FILE_READ_DATA ou GENERIC_READ

Écrivez dans le fichier.

FILE_WRITE_DATA ou GENERIC_WRITE

Écrivez uniquement à la fin du fichier.

FILE_APPEND_DATA

Lisez les métadonnées du fichier, telles que l’heure de création du fichier.

FILE_READ_ATTRIBUTES ou GENERIC_READ

Écrivez les métadonnées du fichier, telles que l’heure de création du fichier.

FILE_WRITE_ATTRIBUTES ou GENERIC_WRITE

Pour plus d’informations sur les valeurs disponibles pour DesiredAccess, consultez ZwCreateFile.