REG_CREATE_KEY_INFORMATION_V1-Struktur (wdm.h)

Die REG_CREATE_KEY_INFORMATION_V1-Struktur enthält Informationen, die die RegistryCallback-Routine eines Filtertreibers beim Erstellen eines Registrierungsschlüssels verwenden kann.

Syntax

typedef struct _REG_CREATE_KEY_INFORMATION_V1 {
  PUNICODE_STRING CompleteName;
  PVOID           RootObject;
  PVOID           ObjectType;
  ULONG           Options;
  PUNICODE_STRING Class;
  PVOID           SecurityDescriptor;
  PVOID           SecurityQualityOfService;
  ACCESS_MASK     DesiredAccess;
  ACCESS_MASK     GrantedAccess;
  PULONG          Disposition;
  PVOID           *ResultObject;
  PVOID           CallContext;
  PVOID           RootObjectContext;
  PVOID           Transaction;
  ULONG_PTR       Version;
  PUNICODE_STRING RemainingName;
  ULONG           Wow64Flags;
  ULONG           Attributes;
  KPROCESSOR_MODE CheckAccessMode;
} REG_CREATE_KEY_INFORMATION_V1, REG_OPEN_KEY_INFORMATION_V1, *PREG_CREATE_KEY_INFORMATION_V1, *PREG_OPEN_KEY_INFORMATION_V1;

Member

CompleteName

Ein Zeiger auf eine UNICODE_STRING-Struktur , die den Pfad des neuen Registrierungsschlüssels enthält. Der Pfad kann absolut oder relativ sein. Wenn der Pfad absolut ist, enthält diese Struktur einen vollqualifizierten Pfad, der mit dem Zeichen "\" beginnt. Für einen absoluten Pfad gibt das RootObject-Element den Schlüssel \REGISTRY an, bei dem es sich um das Stammverzeichnis der Registrierungsstruktur handelt. Wenn der Pfad relativ ist, beginnt der Pfad mit einem anderen Zeichen als "\" und ist relativ zum Schlüssel, der vom RootObject-Element angegeben wird.

RootObject

Ein Zeiger auf ein Registrierungsschlüsselobjekt, das den Stammregistrierungsschlüssel für den Pfad darstellt, der vom CompleteName-Element angegeben wird.

ObjectType

Dieses Element ist für die Verwendung durch das Betriebssystem reserviert. Treiber dürfen nicht auf diesen Member zugreifen.

Options

Gibt die Optionen für die Schlüsselerstellungsroutine an, die zum Erstellen oder Öffnen des neuen Schlüssels verwendet werden soll. Weitere Informationen finden Sie in der Beschreibung des CreateOptions-Parameters der ZwCreateKey-Routine und der Beschreibung des OpenOptions-Parameters der ZwOpenKeyEx-Routine .

Class

Ein Zeiger auf eine UNICODE_STRING Struktur, die die Objektklasse des neuen Schlüssels identifiziert. Weitere Informationen zu diesem Member finden Sie im Class-Parameter der ZwCreateKey-Routine . Dieser Zeigerwert kann NULL sein.

SecurityDescriptor

Ein Zeiger auf eine SECURITY_DESCRIPTOR-Struktur , die Sicherheitsinformationen für das Schlüsselobjekt enthält. Dieser Zeiger wurde vom SecurityDescriptor-Member der OBJECT_ATTRIBUTES-Struktur abgerufen, das beim Aufruf zum Erstellen des neuen Registrierungsschlüssels als Eingabeparameter übergeben wurde.

SecurityQualityOfService

Ein Zeiger auf eine SECURITY_QUALITY_OF_SERVICE-Struktur . Diese Struktur gibt an, ob ein Server die Identität des Clients annehmen kann, der versucht, den Registrierungsschlüssel zu erstellen, und, wenn der Identitätswechsel zulässig ist, den Umfang, in dem er zulässig ist.

DesiredAccess

Die Zugriffsmaske, die vom Thread angegeben wurde, der versucht, den Registrierungsschlüssel zu erstellen. Weitere Informationen zu dieser Zugriffsmaske finden Sie in der Beschreibung des DesiredAccess-Parameters der ZwCreateKey-Routine .

GrantedAccess

Eine Zugriffsmaske, die die Zugriffsrechte angibt, die dem Thread gewährt wurden, der versucht, den Registrierungsschlüssel zu erstellen. Weitere Informationen zu diesem Member finden Sie im folgenden Abschnitt Hinweise.

Disposition

Ein Wert, der angibt, ob der angeforderte Registrierungsvorgang einen neuen Schlüssel erstellt oder einen vorhandenen Schlüssel öffnet. Weitere Informationen zu diesem Member finden Sie in der Beschreibung des Disposition-Parameters der ZwCreateKey-Routine und im folgenden Abschnitt Hinweise.

ResultObject

Ein Zeiger auf einen Speicherort, der die Adresse des Schlüsselobjekts empfängt, das den erstellten Registrierungsschlüssel darstellt.

CallContext

Optionale vom Treiber definierte Kontextinformationen, die die RegistryCallback-Routine des Treibers bereitstellen kann.

RootObjectContext

Ein Zeiger auf vom Treiber definierte Kontextinformationen, die der Treiber dem Stamm des Pfads des Registrierungsobjekts zugeordnet hat, indem die CmSetCallbackObjectContext-Routine aufgerufen wird.

Transaction

Ein Zeiger auf ein Transaktionsobjekt für den Registrierungsvorgang. Sie können diesen Zeiger auf die ObOpenObjectByPointer-Routine bereitstellen, um das entsprechende Transaktionshandle abzurufen. Wenn dieser Member NULL ist, wird der Vorgang im Nichttransaktionskontext ausgeführt.

Version

Die Versionsnummer der Struktur. Dieses Element unterscheidet die REG_CREATE_KEY_INFORMATION-Struktur in Windows Vista von der REG_CREATE_KEY_INFORMATION_V1-Struktur in Windows 7 und höheren Versionen von Windows. Die folgenden Versionsnummern sind derzeit definiert.

Versionsnummer Version der Struktur
0 REG_CREATE_KEY_INFORMATION
1 REG_CREATE_KEY_INFORMATION_V1
 

In zukünftigen Versionen dieser Struktur werden möglicherweise neue Member hinzugefügt, aber die Member, die bereits in vorhandenen Versionen der Struktur definiert sind, nicht geändert. Dieser Member ist in der REG_CREATE_KEY_INFORMATION_V1-Struktur definiert, die in Windows 7 und höheren Versionen der Windows-Betriebssysteme unterstützt wird. In der REG_CREATE_KEY_INFORMATION Struktur, die Windows Vista unterstützt, wird dieser Member Reserviert genannt und auf Null festgelegt. Filtertreiber sollten sich auf die Versionsnummer und nicht auf die Betriebssystemversion verlassen, um zu bestimmen, welche Version der Struktur sie verwenden.

RemainingName

Ein Zeiger auf eine UNICODE_STRING-Struktur , die den relativen Pfad des neuen Registrierungsschlüssels enthält. Dieses Element gibt immer den Pfad des neuen Schlüssels relativ zum Pfad des Schlüssels aus, der vom RootObject-Element angegeben wird. Im Gegensatz dazu kann das CompleteName-Element einen absoluten Pfad enthalten, wenn das RootObject-Element den Schlüssel \REGISTRY angibt.

Wow64Flags

Enthält die Wow64-Flags aus der Zugriffsmaske, die als Eingabeparameter im Aufruf zum Erstellen des neuen Registrierungsschlüssels übergeben wurde. Dieses Element gibt an, ob ein 32-Bit-Clientprogramm, das unter einer 64-Bit-Version von Windows ausgeführt wird, versucht, einen Registrierungsschlüssel zu erstellen. Dieses Element ist auf null oder auf eines der folgenden Flagbits festgelegt:

  • KEY_WOW64_32KEY
  • KEY_WOW64_64KEY
Diese Flagbits werden in den Headerdateien Wdm.h und Winnt.h definiert. Weitere Informationen zu diesen Flags finden Sie unter Sicherheit und Zugriffsrechte für Registrierungsschlüssel.

Attributes

Enthält die Objektattributflags aus dem Attribute-Member der OBJECT_ATTRIBUTES-Struktur , die beim Aufruf zum Erstellen des neuen Registrierungsschlüssels als Eingabeparameter übergeben wurde. Dieses Element kann mindestens eins der folgenden Flagbits enthalten:

  • OBJ_KERNEL_HANDLE
  • OBJ_FORCE_ACCESS_CHECK
  • OBJ_OPENLINK
Weitere Informationen zu diesen Flags finden Sie unter OBJECT_ATTRIBUTES.

CheckAccessMode

Gibt an, wie der Konfigurations-Manager die Sicherheitszugriffsprüfung für den Aufruf zum Erstellen des neuen Schlüssels durchführt. Dieses Element enthält einen der folgenden MODE-Enumerationswerte aus der Wdm.h-Headerdatei:

  • KernelMode
  • Usermode
Diese Sicherheitsüberprüfung ähnelt der von der SeAccessCheck-Routine durchgeführten Überprüfung, die über einen AccessMode-Parameter verfügt, der entweder auf UserMode oder KernelMode festgelegt werden kann. Wenn CheckAccessMode auf UserMode festgelegt ist, führt der Konfigurations-Manager eine vollständige Überprüfung des Sicherheitszugriffs durch, unabhängig davon, ob der Aufruf im Benutzer- oder Kernelmodus erfolgt ist. Weitere Informationen zum Erzwingen von Sicherheitszugriffsprüfungen im Benutzermodus für einen Aufruf, der aus dem Kernelmodus stammt, finden Sie in der Beschreibung des OBJ_FORCE_ACCESS_CHECK Flags im Attributelement der OBJECT_ATTRIBUTES-Struktur .

Hinweise

Der Konfigurations-Manager übergibt diese Struktur jedes Mal an die RegistryCallback-Routine , wenn ein Thread versucht, einen Schlüssel zu erstellen, z. B. wenn ein Benutzermodusthread RegCreateKey oder RegCreateKeyEx aufruft oder wenn ein Kernelmodustreiber ZwCreateKey aufruft.

Diese Struktur ist eine erweiterte Version der REG_CREATE_KEY_INFORMATION-Struktur , die Von Windows Vista unterstützt wird. Die ersten 14 Member, CompleteName bis Transaction, sind in den beiden Strukturen identisch. Die letzten fünf Elemente der REG_CREATE_KEY_INFORMATION_V1-StrukturVersion über CheckAccessMode sind nicht Teil der REG_CREATE_KEY_INFORMATION-Struktur .

Wenn die RegistryCallback-Routine des Treibers STATUS_CALLBACK_BYPASS für eine RegNtPreCreateKeyEx-Benachrichtigung zurückgibt, muss der Treiber die Werte für die Member GrantedAccess, Disposition und ResultObject angeben.

Die REG_CREATE_KEY_INFORMATION_V1-Struktur ist eine von mehreren Strukturen, die ein Filtertreiber über seine RegistryCallback-Routine empfangen kann. Weitere Informationen zu Registrierungsfiltervorgängen finden Sie unter Filtern von Registrierungsaufrufen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar unter Windows 7 und höheren Versionen der Windows-Betriebssysteme.
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)

Weitere Informationen

CmSetCallbackObjectContext

OBJECT_ATTRIBUTES

ObOpenObjectByPointer

REG_CREATE_KEY_INFORMATION

RegCreateKey

RegCreateKeyEx

RegistryCallback

SECURITY_DESCRIPTOR

SECURITY_QUALITY_OF_SERVICE

UNICODE_STRING

ZwCreateKey