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

ACCESS_MASK

InitializeObjectAttributes

Uso di nt e zw versioni delle routine di Servizi di sistema nativo

ZwCreateFile