Funzione NtOpenFile (ntifs.h)
La routine NtOpenFile apre un file, una directory, un dispositivo o un volume esistente.
Sintassi
__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
);
Parametri
[out] FileHandle
Puntatore a una variabile HANDLE che riceve un handle per il file.
[in] DesiredAccess
Specifica un valore ACCESS_MASK che determina l'accesso richiesto all'oggetto. Per altre informazioni, vedere il parametro desiredAccess di NtCreateFile.
[in] ObjectAttributes
Puntatore a una struttura OBJECT_ATTRIBUTES che specifica il nome dell'oggetto e altri attributi. Usare InitializeObjectAttributes per inizializzare questa struttura. Se il chiamante non è in esecuzione in un contesto di thread di sistema, deve impostare l'attributo OBJ_KERNEL_HANDLE quando chiama InitializeObjectAttributes.
[out] IoStatusBlock
Puntatore a una struttura IO_STATUS_BLOCK che riceve lo stato di completamento finale e informazioni sull'operazione richiesta.
[in] ShareAccess
Specifica il tipo di accesso alla condivisione per il file. Per altre informazioni, vedere il parametro ShareAccess di NtCreateFile.
[in] OpenOptions
Specifica le opzioni da applicare all'apertura del file. Per altre informazioni, vedere il parametro CreateOptions di NtCreateFile.
Valore restituito
ntOpenFile restituisce STATUS_SUCCESS o il codice di errore NTSTATUS appropriato. In quest'ultimo caso, il chiamante può trovare altre informazioni sulla causa dell'errore controllando il parametro IoStatusBlock.
Osservazioni
NtOpenFile fornisce un handle che il chiamante può usare per modificare i dati di un file o lo stato e gli attributi dell'oggetto file. ntOpenFile fornisce un subset delle funzionalità fornite da NtCreateFile. Per altre informazioni, vedere Using Files in a Driver.
Quando l'handle a cui punta fileHandle non è più in uso, il driver deve chiamare NtClose per chiuderlo.
Se il chiamante non è in esecuzione in un contesto di thread di sistema, deve assicurarsi che gli handle creati siano handle privati. In caso contrario, l'handle può essere accessibile dal processo nel cui contesto è in esecuzione il driver. Per altre informazioni, vedere Handle di oggetti .
I chiamanti di NtOpenFile devono essere in esecuzione in IRQL = PASSIVE_LEVEL e con API kernel speciali abilitate.
Se la chiamata a questa funzione viene eseguita in modalità utente, è necessario usare il nome "NtOpenFile" anziché "ZwOpenFile".
Per le chiamate da driver in modalità kernel, le NtXxx e ZwXxx versioni di una routine di Windows Native System Services possono comportarsi in modo diverso nel modo in cui gestiscono e interpretano i parametri di input. Per altre informazioni sulla relazione tra le versioni NtXxx e ZwXxx di una routine, vedere Using Nt and Zw Versions of the Native System Services Routines.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 2000 |
piattaforma di destinazione | Universale |
intestazione | ntifs.h (include Wdm.h, Ntddk.h, Ntifs.h) |
libreria | NtosKrnl.lib |
dll | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (vedere la sezione Osservazioni) |
regole di conformità DDI | HwStorPortProhibitedDDIs, PowerIrpDDis |