Apertura di un handle in un file
Per aprire un handle in un file, seguire questa procedura:
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.
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.