Condividi tramite


Funzione ZwOpenKeyEx (wdm.h)

La routine ZwOpenKeyEx apre una chiave del Registro di sistema esistente.

Sintassi

NTSYSAPI NTSTATUS ZwOpenKeyEx(
  [out] PHANDLE            KeyHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes,
  [in]  ULONG              OpenOptions
);

Parametri

[out] KeyHandle

Puntatore a una variabile HANDLE in cui la routine scrive l'handle nella chiave.

[in] DesiredAccess

Specifica il tipo di accesso alla chiave richiesta dal chiamante. Questo parametro è un valore ACCESS_MASK . Per altre informazioni, vedere la descrizione del parametro DesiredAccess della routine ZwCreateKey .

[in] ObjectAttributes

Puntatore agli attributi dell'oggetto della chiave da aprire. Questo parametro punta a una struttura OBJECT_ATTRIBUTES che deve essere stata inizializzata in precedenza dalla routine InitializeObjectAttributes . Il chiamante deve specificare il nome della chiave del Registro di sistema come parametro ObjectName nella chiamata a InitializeObjectAttributes. Se il chiamante non è in esecuzione in un contesto di thread di sistema, deve impostare l'attributo OBJ_KERNEL_HANDLE quando chiama InitializeObjectAttributes.

[in] OpenOptions

Specifica le opzioni da applicare all'apertura della chiave. Impostare questo parametro su zero o sull'OR bit per bit di uno o più dei bit di flag REG_OPTION_XXX seguenti:

Flag OpenOptions Descrizione
REG_OPTION_OPEN_LINK La chiave è un collegamento simbolico. Questo flag non viene usato dai driver intermedi e del dispositivo.
REG_OPTION_BACKUP_RESTORE La chiave deve essere aperta con privilegi speciali che consentono operazioni di backup e ripristino. Questo flag non viene usato dai driver intermedi e del dispositivo.

Valore restituito

ZwOpenKeyEx restituisce STATUS_SUCCESS se la chiamata riesce ad aprire la chiave. I valori restituiti di errore possibili includono quanto segue:

Codice restituito Descrizione
STATUS_INVALID_PARAMETER_4
Il parametro OpenOptions specifica opzioni non valide.
STATUS_OBJECT_PATH_SYNTAX_BAD
Il percorso del Registro di sistema negli attributi dell'oggetto non è valido.
STATUS_OBJECT_NAME_NOT_FOUND
Il nome della chiave del Registro di sistema negli attributi dell'oggetto non è stato trovato.
STATUS_OBJECT_TYPE_MISMATCH
La chiave del Registro di sistema denominata è un collegamento simbolico, ma il bit del flag REG_OPTION_OPEN_LINK non è impostato in OpenOptions.
STATUS_ACCESS_DENIED
Il chiamante non dispone dei diritti di accesso necessari per aprire un handle per la chiave del Registro di sistema denominata.
STATUS_INSUFFICIENT_RESOURCES
Operazione di allocazione della memoria non riuscita.

Commenti

Questa routine fornisce un handle con cui il chiamante può accedere a una chiave del Registro di sistema. Se la chiave specificata non esiste, la routine restituisce un valore di stato di errore e non fornisce un handle di chiave.

La routine ZwOpenKey è simile a ZwOpenKeyEx , ma non accetta un parametro OpenOptions . Il parametro OpenOptions di ZwOpenKeyEx consente al chiamante di aprire una chiave che è un collegamento simbolico o di aprire una chiave per le operazioni di backup e ripristino. Una chiamata a ZwOpenKeyEx con OpenOptions = 0 equivale a una chiamata a ZwOpenKey.

Dopo che l'handle a cui punta KeyHandle non è più in uso, il driver deve chiamare ZwClose per chiuderlo.

ZwOpenKeyEx ignora le informazioni di sicurezza nella struttura a cui punta il parametro ObjectAttributes .

Se il chiamante in modalità kernel non è in esecuzione in un contesto di thread di sistema, deve assicurarsi che gli handle creati siano handle del kernel. In caso contrario, l'handle può essere accessibile dal processo nel cui contesto è in esecuzione il driver. Per altre informazioni, vedere Handle di oggetti.

Per altre informazioni sull'uso delle chiavi del Registro di sistema in modalità kernel, vedere Uso del Registro di sistema in un driver.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows 7 e versioni successive di Windows.
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regole di conformità DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Vedi anche

ACCESS_MASK

InitializeObjectAttributes

OBJECT_ATTRIBUTES

ZwClose

ZwOpenKey