Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[Gilt für KMDF und UMDF]
Die WdfRegistryOpenKey--Methode öffnet einen angegebenen Registrierungsschlüssel und erstellt ein Framework-Registrierungsschlüsselobjekt, das den Registrierungsschlüssel darstellt.
Syntax
NTSTATUS WdfRegistryOpenKey(
[in, optional] WDFKEY ParentKey,
[in] PCUNICODE_STRING KeyName,
[in] ACCESS_MASK DesiredAccess,
[in, optional] PWDF_OBJECT_ATTRIBUTES KeyAttributes,
[out] WDFKEY *Key
);
Die Parameter
[in, optional] ParentKey
Ein Handle zu einem Framework-Registrierungsschlüsselobjekt. Dieses Objekt stellt einen übergeordneten Registrierungsschlüssel dar, den der Treiber geöffnet hat. Dieser Parameter ist optional und kann NULL-werden. Wenn der Parameter nicht NULL-ist, muss sich der Schlüssel, der KeyName- angibt, unter diesem übergeordneten Schlüssel in der Registrierung befinden. Weitere Informationen zu diesem übergeordneten Schlüssel finden Sie im Abschnitt "Hinweise".
[in] KeyName
Ein Zeiger auf eine UNICODE_STRING Struktur, die den Namen des zu öffnenden Schlüssels enthält. Der Schlüsselname kann Pfadinformationen enthalten. Wenn ParentKey-NULL-ist, muss KeyName- einen vollständigen Pfad zu einem Registrierungsschlüssel angeben. Beispiele finden Sie im Abschnitt "Hinweise".
[in] DesiredAccess
Ein ACCESS_MASK-typed-Wert, der Zugriffsrechte angibt, die der Treiber für den angegebenen Registrierungsschlüssel anfordert. Eine Liste der Zugriffsrechte, die treiber normalerweise für Registrierungsschlüssel verwenden, finden Sie unter Öffnen eines Handle für ein Registry-Key Object. Ihr Treiber muss nur die Zugriffstypen anfordern, die er benötigt. Beispielsweise darf der Treiber nicht nach KEY_ALL_ACCESS fragen, wenn er nur den Registrierungsschlüssel liest.
[in, optional] KeyAttributes
Ein Zeiger auf eine WDF_OBJECT_ATTRIBUTES-Struktur, die vom Treiber bereitgestellte Attribute für das neue Registrierungsschlüsselobjekt enthält. Dieser Parameter ist optional und kann WDF_NO_OBJECT_ATTRIBUTES werden.
[out] Key
Ein Zeiger auf einen Speicherort, der ein Handle für das neue Registrierungsschlüsselobjekt empfängt.
Rückgabewert
WdfRegistryOpenKey gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt die Methode möglicherweise einen der folgenden Werte zurück:
| Rückgabecode | BESCHREIBUNG |
|---|---|
|
WdfRegistryOpenKey- wurde bei IRQL = PASSIVE_LEVEL nicht aufgerufen. |
|
Es wurde ein ungültiger Parameter angegeben. |
|
Ein Registrierungsschlüsselobjekt konnte nicht zugeordnet werden. |
|
Das System hat die angegebenen Zugriffsrechte verweigert. |
|
Der angegebene Registrierungsschlüssel ist nicht vorhanden. |
Eine Liste mit anderen Rückgabewerten, die von der WdfRegistryOpenKey--Methode möglicherweise zurückgegeben werden, finden Sie unter Framework-Objekterstellungsfehler.
Diese Methode kann auch andere NTSTATUS-Wertezurückgeben.
Bemerkungen
Um ein Handle für ein Registrierungsschlüsselobjekt abzurufen, das einen übergeordneten Schlüssel darstellt, kann Ihr Treiber WdfDriverOpenParametersRegistryKey-, WdfDeviceOpenRegistryKey-oder WdfFdoInitOpenRegistryKeyaufrufen.
Das im KeyName Parameter angegebene Zeichenfolgenformat hängt davon ab, ob der Aufrufer ein KMDF-Treiber oder ein UMDF-Treiber ist. Um beispielsweise den folgenden Pfad zu öffnen:
HKLM\System\CurrentControlSet\Control
Ihr Treiber verwendet möglicherweise diese bedingte Logik:
#ifdef _KERNEL_MODE
#define CONTROL_KEY_FULL_PATH L"\\Registry\\Machine\\System\\CurrentControlSet\\Control "
#else
#define CONTROL_KEY_FULL_PATH L"System\\CurrentControlSet\\Control\\"
#endif
Wenn der Treiber einen Registrierungsschlüssel verwendet hat, der mit WdfRegistryOpenKey-geöffnet wird, muss der Treiber WdfRegistryCloseaufrufen.
Weitere Informationen zu Registrierungsschlüsselobjekten finden Sie unter Verwenden der Registrierung in Framework-Based Drivers.
Beispiele
Das folgende Codebeispiel öffnet den Softwareschlüssel eines Treibers und öffnet dann den MySubKey Registrierungsschlüssel, der sich unter dem Softwareschlüssel des Treibers befindet.
WDFKEY hKey, subkey;
NTSTATUS status;
UNICODE_STRING myKeyStr;
status = WdfDeviceOpenRegistryKey(
device,
PLUGPLAY_REGKEY_DRIVER,
KEY_READ,
WDF_NO_OBJECT_ATTRIBUTES,
&hKey
);
if (NT_SUCCESS(status)){
RtlInitUnicodeString(
&myKeyStr,
L"MySubKey"
);
status = WdfRegistryOpenKey(
hKey,
&myKeyStr,
KEY_READ,
WDF_NO_OBJECT_ATTRIBUTES,
&subkey
);
}
Anforderungen
| Anforderung | Wert |
|---|---|
| Zielplattform | universell |
| Minimale KMDF-Version | 1.0 |
| Mindest-UMDF-Version | 2.0 |
| Kopfzeile | wdfregistry.h (include Wdf.h) |
| Bibliothek | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
| IRQL | PASSIVE_LEVEL |
| DDI-Complianceregeln | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |