Share via


Funzione NtOpenFile (winternl.h)

Apre un file, un dispositivo, una directory o un volume esistenti e restituisce un handle per l'oggetto file.

Questa funzione equivale alla funzione ZwOpenFile documentata in Windows Driver Kit (WDK).

Sintassi

__kernel_entry 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 un handle per il file aperto. Il driver deve chiudere l'handle con ZwClose una volta che l'handle non è più in uso.

[in] DesiredAccess

Valore ACCESS_MASK che esprime i tipi di accesso ai file desiderati dal chiamante. Per informazioni sui tipi di accesso che possono essere specificati, vedere ZwCreateFile in WDK.

[in] ObjectAttributes

Puntatore a una struttura che un chiamante inizializza con InitializeObjectAttributes. Se il chiamante non è in esecuzione nel contesto del processo di sistema, deve impostare l'attributo OBJ_KERNEL_HANDLE per ObjectAttributes. Per altre informazioni sulla specifica degli attributi dell'oggetto, vedere il parametro CreateOptions di ZwCreateFile in WDK.

[out] IoStatusBlock

Puntatore a una struttura che contiene informazioni sull'operazione richiesta e sullo stato di completamento finale.

[in] ShareAccess

Tipo di accesso di condivisione per il file. Per altre informazioni, vedere ZwCreateFile in WDK.

[in] OpenOptions

Le opzioni da applicare quando si apre il file. Per altre informazioni, vedere ZwCreateFile in WDK.

Valore restituito

NtOpenFile restituisce STATUS_SUCCESS o uno stato di errore appropriato. Se restituisce uno stato di errore, il chiamante può trovare informazioni aggiuntive sulla causa dell'errore controllando IoStatusBlock.

Commenti

Le routine del driver eseguite in un contesto di processo diverso da quello del processo di sistema devono impostare l'attributo OBJ_KERNEL_HANDLE per il parametro ObjectAttributes di ZwOpenFile. Ciò limita l'uso dell'handle restituito da ZwOpenFile ai processi in esecuzione solo in modalità kernel. In caso contrario, l'handle può essere accessibile dal processo nel cui contesto è in esecuzione il driver. I driver possono chiamare InitializeObjectAttributes per impostare l'attributo OBJ_KERNEL_HANDLE come indicato di seguito.

InitializeObjectAttributes(&ObjectAddributes, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);

I chiamanti di ZwCreateFile devono essere in esecuzione in IRQL = PASSIVE_LEVEL.

Si noti che il file di intestazione WDK Ntdef.h è necessario per molte definizioni costanti e la macro InitializeObjectAttributes . È anche possibile usare le funzioni LoadLibrary e GetProcAddress per collegare dinamicamente a Ntdll.dll.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione winternl.h
Libreria ntdll.lib
DLL ntdll.dll