REG_CREATE_KEY_INFORMATION_V1 構造体 (wdm.h)
REG_CREATE_KEY_INFORMATION_V1構造体には、レジストリ キーの作成時にフィルター ドライバーの RegistryCallback ルーチンで使用できる情報が含まれています。
構文
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;
メンバー
CompleteName
新しいレジストリ キーのパスを含む UNICODE_STRING 構造体へのポインター。 パスは絶対パスでも相対パスでもかまいません。 パスが絶対パスの場合、この構造体には "\" 文字で始まる完全修飾パスが含まれます。 絶対パスの場合、 RootObject メンバーはレジストリ ツリーのルート ディレクトリである \REGISTRY キーを指定します。 パスが相対パスの場合、パスは "\" 以外の文字で始まり、 RootObject メンバーによって指定されたキーに対する相対パスになります。
RootObject
CompleteName メンバーによって指定されたパスのルート レジストリ キーを表すレジストリ キー オブジェクトへのポインター。
ObjectType
このメンバーは、オペレーティング システムで使用するために予約されています。 ドライバーは、このメンバーにアクセスできません。
Options
新しいキーを作成または開くために使用するキー作成ルーチンのオプションを指定します。 詳細については、ZwCreateKey ルーチンの CreateOptions パラメーターの説明と、ZwOpenKeyEx ルーチンの OpenOptions パラメーターの説明を参照してください。
Class
新しいキーのオブジェクト クラスを識別する UNICODE_STRING 構造体へのポインター。 このメンバーの詳細については、ZwCreateKey ルーチンの Class パラメーターを参照してください。 このポインター値には NULL を指定できます。
SecurityDescriptor
キー オブジェクトのセキュリティ情報を含む SECURITY_DESCRIPTOR 構造体へのポインター。 このポインターは、新しいレジストリ キーを作成するための呼び出しで入力パラメーターとして渡されたOBJECT_ATTRIBUTES構造体の SecurityDescriptor メンバーから取得されました。
SecurityQualityOfService
SECURITY_QUALITY_OF_SERVICE構造体へのポインター。 この構造体は、レジストリ キーを作成しようとしているクライアントをサーバーが偽装できるかどうかを示し、偽装が許可されている場合は許可される範囲を示します。
DesiredAccess
レジストリ キーを作成しようとしているスレッドによって指定されたアクセス マスク。 このアクセス マスクの詳細については、ZwCreateKey ルーチンの DesiredAccess パラメーターの説明を参照してください。
GrantedAccess
レジストリ キーを作成しようとしているスレッドに付与されたアクセス権を示すアクセス マスク。 このメンバーの詳細については、次の「解説」セクションを参照してください。
Disposition
要求されたレジストリ操作で新しいキーを作成するか、既存のキーを開くかを示す 値。 このメンバーの詳細については、ZwCreateKey ルーチンの Disposition パラメーターの説明と、次の「解説」セクションを参照してください。
ResultObject
作成されたレジストリ キーを表すキー オブジェクトのアドレスを受け取る場所へのポインター。
CallContext
ドライバーの RegistryCallback ルーチンが提供できるオプションのドライバー定義コンテキスト情報。
RootObjectContext
CmSetCallbackObjectContext ルーチンを呼び出すことによって、ドライバーがレジストリ オブジェクトのパスのルートに関連付けたドライバー定義のコンテキスト情報へのポインター。
Transaction
レジストリ操作のトランザクション オブジェクトへのポインター。 このポインターを ObOpenObjectByPointer ルーチンに指定して、対応するトランザクション ハンドルを取得できます。 このメンバーが NULL の場合、操作は非トランザクション コンテキストで実行されます。
Version
構造体のバージョン番号。 このメンバーは、Windows Vista の REG_CREATE_KEY_INFORMATION 構造と Windows 7 以降のバージョンの Windows の REG_CREATE_KEY_INFORMATION_V1 構造を区別します。 現在、次のバージョン番号が定義されています。
バージョン番号 | 構造体のバージョン |
---|---|
0 | REG_CREATE_KEY_INFORMATION |
1 | REG_CREATE_KEY_INFORMATION_V1 |
この構造体の将来のバージョンでは、新しいメンバーが追加される可能性がありますが、構造体の既存のバージョンで既に定義されているメンバーは変更されません。 このメンバーは、Windows 7 以降のバージョンの Windows オペレーティング システムでサポートされている REG_CREATE_KEY_INFORMATION_V1 構造で定義されています。 Windows Vista がサポートする REG_CREATE_KEY_INFORMATION 構造体では、このメンバーの名前は Reserved で、0 に設定されます。 フィルター ドライバーは、オペレーティング システムのバージョンではなく、バージョン番号に依存して、使用している構造体のバージョンを決定する必要があります。
RemainingName
新しいレジストリ キーの相対パスを含む UNICODE_STRING 構造体へのポインター。 このメンバーは常に、 RootObject メンバーによって指定されたキーのパスを基準にして、新しいキーのパスを表します。 これに対し、RootObject メンバーが \REGISTRY キーを指定している場合、CompleteName メンバーには絶対パスを含めることができます。
Wow64Flags
新しいレジストリ キーを作成するための呼び出しで入力パラメーターとして渡されたアクセス マスクの Wow64 フラグが含まれています。 このメンバーは、64 ビット バージョンの Windows で実行されている 32 ビット クライアント プログラムがレジストリ キーを作成しようとしているかどうかを示します。 このメンバーは、0 または次のいずれかのフラグ ビットに設定されます。
- KEY_WOW64_32KEY
- KEY_WOW64_64KEY
Attributes
新しいレジストリ キーを作成するための呼び出しで入力パラメーターとして渡されたOBJECT_ATTRIBUTES構造体の Attributes メンバーのオブジェクト属性フラグを格納します。 このメンバーには、次のフラグ ビットが 1 つ以上含まれる場合があります。
- OBJ_KERNEL_HANDLE
- OBJ_FORCE_ACCESS_CHECK
- OBJ_OPENLINK
CheckAccessMode
構成マネージャーが、新しいキーを作成するための呼び出しのセキュリティ アクセス チェックを実行する方法を示します。 このメンバーには、Wdm.h ヘッダー ファイルの次のいずれかの MODE 列挙値が含まれています。
- KernelMode
- UserMode
注釈
構成マネージャーは、ユーザー モード スレッドが RegCreateKey または RegCreateKeyEx を呼び出すときや、カーネル モード ドライバーが ZwCreateKey を呼び出すときなど、スレッドがキーを作成しようとするたびに、この構造体を RegistryCallback ルーチンに渡します。
この構造体は、Windows Vista がサポートする REG_CREATE_KEY_INFORMATION 構造の拡張バージョンです。 最初の 14 個のメンバー である CompleteName から Transaction は、2 つの構造体で同じです。 REG_CREATE_KEY_INFORMATION_V1 構造体の最後の 5 つのメンバーである Version through CheckAccessMode は、REG_CREATE_KEY_INFORMATION構造体の一部ではありません。
ドライバーの RegistryCallback ルーチンが RegNtPreCreateKeyEx 通知のSTATUS_CALLBACK_BYPASSを返す場合、ドライバーは GrantedAccess、 Disposition、および ResultObject メンバーの値を指定する必要があります。
REG_CREATE_KEY_INFORMATION_V1構造体は、フィルター ドライバーが RegistryCallback ルーチンを通じて受け取ることができるいくつかの構造体の 1 つです。 レジストリのフィルター処理操作の詳細については、「レジストリ 呼び出しのフィルター処理」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 以降のバージョンの Windows オペレーティング システムで使用できます。 |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |