Condividi tramite


Apertura di un handle in un file

Per aprire un handle in un file, seguire questa procedura:

  1. Creare una struttura OBJECT_ATTRIBUTES e chiamare la macro InitializeObjectAttributes per inizializzare la struttura. Specificare il nome dell'oggetto del file come parametro ObjectName in InitializeObjectAttributes.

  2. Aprire un handle al file passando la struttura OBJECT_ATTRIBUTES a IoCreateFile, ZwCreateFile o ZwOpenFile.

    Se il file non esiste, IoCreateFile e ZwCreateFile lo creeranno, mentre ZwOpenFile restituirà STATUS_OBJECT_NAME_NOT_FOUND.

Si noti che i driver usano quasi sempre ZwCreateFile o ZwOpenFile anziché IoCreateFile.

Quando si chiama IoCreateFile, ZwCreateFile o ZwOpenFile, windows executive crea un nuovo oggetto file per rappresentare il file e fornisce un handle aperto all'oggetto. Questo oggetto file persiste fino a chiudere tutti gli handle aperti.

Quale routine si chiama, è necessario passare i diritti di accesso necessari come parametro DesiredAccess . Questi diritti devono coprire tutte le operazioni eseguite dal driver. Nella tabella seguente sono elencate queste operazioni e il diritto di accesso corrispondente alla richiesta.

Operazione Diritto di accesso obbligatorio

Leggere dal file.

FILE_READ_DATA o GENERIC_READ

Scrivere nel file.

FILE_WRITE_DATA o GENERIC_WRITE

Scrivere solo alla fine del file.

FILE_APPEND_DATA

Leggere i metadati del file, ad esempio l'ora di creazione del file.

FILE_READ_ATTRIBUTES o GENERIC_READ

Scrivere i metadati del file, ad esempio l'ora di creazione del file.

FILE_WRITE_ATTRIBUTES o GENERIC_WRITE

Per altre informazioni sui valori disponibili per DesiredAccess, vedere ZwCreateFile.