Funzione ZwOpenFile (wdm.h)
La routine ZwOpenFile apre un file, una directory, un dispositivo o un volume esistente.
Sintassi
NTSYSAPI NTSTATUS ZwOpenFile(
[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 nel file.
[in] DesiredAccess
Specifica un valore ACCESS_MASK che determina l'accesso richiesto all'oggetto. Per altre informazioni, vedere il parametro DesiredAccess di ZwCreateFile.
[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 le informazioni sull'operazione richiesta.
[in] ShareAccess
Specifica il tipo di accesso di condivisione per il file. Per altre informazioni, vedere il parametro ShareAccess di ZwCreateFile.
[in] OpenOptions
Specifica le opzioni da applicare quando si apre il file. Per altre informazioni, vedere il parametro CreateOptions di ZwCreateFile.
Valore restituito
ZwOpenFile 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 .
Commenti
ZwOpenFile fornisce un handle che il chiamante può usare per modificare i dati di un file o gli attributi e lo stato dell'oggetto file. ZwOpenFile fornisce un subset delle funzionalità fornite da ZwCreateFile. Per altre informazioni, vedere Uso di file in un driver.
Una volta che l'handle puntato da FileHandle non è più in uso, il driver deve chiamare ZwClose per chiuderlo.
Se il chiamante non è in esecuzione in un contesto di thread di sistema, è necessario 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 degli oggetti.
I chiamanti di ZwOpenFile devono essere in esecuzione in IRQL = PASSIVE_LEVEL e con API kernel speciali abilitate.
Se la chiamata a questa funzione si verifica in modalità utente, è necessario usare il nome "NtOpenFile" anziché "ZwOpenFile".
Per le chiamate dai driver in modalità kernel, le versioni NtXxx e ZwXxx 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 Uso di nt e zw versioni delle routine di Servizi di sistema nativo.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | wdm.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(storport), PowerIrpDDis(wdm) |
Vedi anche
Uso di nt e zw versioni delle routine di Servizi di sistema nativo