Funzione WdfFdoInitOpenRegistryKey (wdffdo.h)
[Si applica a KMDF e UMDF]
Il metodo WdfFdoInitOpenRegistryKey apre la chiave hardware di un dispositivo o la chiave software di un driver nel Registro di sistema e crea un oggetto chiave del Registro di sistema framework che rappresenta la chiave del Registro di sistema.
Sintassi
NTSTATUS WdfFdoInitOpenRegistryKey(
[in] PWDFDEVICE_INIT DeviceInit,
[in] ULONG DeviceInstanceKeyType,
[in] ACCESS_MASK DesiredAccess,
[in, optional] PWDF_OBJECT_ATTRIBUTES KeyAttributes,
[out] WDFKEY *Key
);
Parametri
[in] DeviceInit
Puntatore a una struttura WDFDEVICE_INIT ottenuta dal driver dalla funzione EvtDriverDeviceAdd callback.
[in] DeviceInstanceKeyType
Specifica la chiave o la sottochiave da aprire.
Nota
UMDF non supporta la creazione di sottochiave.
Si tratta di un OR bit per bit dei flag seguenti (definiti in Wdm.h).
Flag DeviceInstanceKeyType | Significato | Framework |
---|---|---|
PLUGPLAY_REGKEY_DEVICE | Apre la chiave hardware del dispositivo. | KMDF/UMDF |
PLUGPLAY_REGKEY_DRIVER | Apre la chiave software del driver. Un driver UMDF che imposta questo flag deve anche impostare DesiredAccess su KEY_READ. In caso contrario, questo metodo restituisce STATUS_ACCESS_DENIED. | KMDF/UMDF |
PLUGPLAY_REGKEY_CURRENT_HWPROFILE | Un driver KMDF usa questo flag per aprire la copia della chiave hardware o software presente nel profilo hardware corrente. | KMDF |
PLUGPLAY_REGKEY_DRIVER | WDF_REGKEY_DRIVER_SUBKEY | Un driver UMDF usa questi flag insieme per aprire la sottochiave ServiceName della chiave software del driver per l'accesso in lettura/scrittura. | UMDF |
PLUGPLAY_REGKEY_DEVICE | WDF_REGKEY_DEVICE_SUBKEY | Analogamente, un driver UMDF usa questi flag per aprire la sottochiave ServiceName della chiave hardware del dispositivo per l'accesso in lettura/scrittura. | UMDF |
[in] DesiredAccess
Valore ACCESS_MASK tipizzato che specifica i diritti di accesso richiesti dal driver per la chiave del Registro di sistema specificata.
Un driver KMDF richiede in genere KEY_READ, KEY_WRITE o KEY_READ | KEY_WRITE.
Se si scrive un driver UMDF, usare la tabella seguente.
DeviceInstanceKeyType | DesiredAccess |
---|---|
PLUGPLAY_REGKEY_DEVICE | KEY_READ |
PLUGPLAY_REGKEY_DEVICE | WDF_REGKEY_DEVICE_SUBKEY | KEY_READ o KEY_READ | KEY_SET_VALUE |
PLUGPLAY_REGKEY_DRIVER | KEY_READ |
PLUGPLAY_REGKEY_DRIVER | WDF_REGKEY_DRIVER_SUBKEY | KEY_READ o KEY_READ | KEY_SET_VALUE |
Come procedura consigliata, chiedere solo i tipi di accesso necessari al driver.
[in, optional] KeyAttributes
Puntatore a una struttura WDF_OBJECT_ATTRIBUTES che contiene attributi forniti dal driver per il nuovo oggetto chiave del Registro di sistema. Questo parametro è facoltativo e può essere WDF_NO_OBJECT_ATTRIBUTES.
[out] Key
Puntatore a una posizione che riceve un handle per il nuovo oggetto chiave del Registro di sistema.
Valore restituito
WdfFdoInitOpenRegistryKey restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, il metodo potrebbe restituire uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
|
WdfFdoInitOpenRegistryKey non è stato chiamato in IRQL = PASSIVE_LEVEL. |
|
È stato specificato un parametro non valido oppure il driver non ha ottenuto la struttura WDFDEVICE_INIT dalla relativa funzione EvtDriverDeviceAdd callback. Per UMDF, questo valore restituito può indicare diritti di accesso insufficienti. |
|
Impossibile allocare un oggetto chiave del Registro di sistema. |
|
La chiave del Registro di sistema specificata non esiste. |
Per un elenco di altri valori restituiti che il metodo WdfFdoInitOpenRegistryKey potrebbe restituire, vedere Errori di creazione di oggetti Framework.
Il metodo potrebbe restituire anche altri valori NTSTATUS.
Commenti
Il driver deve chiamare WdfFdoInitOpenRegistryKey prima di chiamare WdfDeviceCreate. Per altre informazioni sulla chiamata a WdfDeviceCreate, vedere Creazione di un oggetto dispositivo Framework.
Per altre informazioni sul metodo WdfFdoInitOpenRegistryKey , vedere Creazione di oggetti dispositivo in un driver di funzione.
o altre informazioni sugli oggetti del Registro di sistema, hardware e software e del Registro di sistema, vedere Uso del Registro di sistema in Framework-Based Driver.
Esempio
L'esempio di codice seguente apre la chiave hardware di un dispositivo, con accesso in lettura.
WDFKEY key;
NTSTATUS status;
status = WdfFdoInitOpenRegistryKey(
DeviceInit,
PLUGPLAY_REGKEY_DEVICE,
GENERIC_READ,
WDF_NO_OBJECT_ATTRIBUTES,
&key
);
if (!NT_SUCCESS(status)) {
return status;
}
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1,0 |
Versione UMDF minima | 2,0 |
Intestazione | wdffdo.h (include Wdf.h) |
Libreria | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
Regole di conformità DDI | DeviceInitAPI(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |