Condividi tramite


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 nel 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 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 NtCreateFile.

[in] OpenOptions

Specifica le opzioni da applicare quando si apre il 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 .

Commenti

NtOpenFile fornisce un handle che il chiamante può usare per modificare i dati di un file o gli attributi e lo stato dell'oggetto file. NtOpenFile fornisce un subset delle funzionalità fornite da NtCreateFile. 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 NtClose 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 NtOpenFile 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
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

Vedi anche

ACCESS_MASK

InitializeObjectAttributes

NtClose

NtCreateFile