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
これらのフラグ ビットは、Wdm.h ヘッダー ファイルと Winnt.h ヘッダー ファイルで定義されます。 これらのフラグの詳細については、「 レジストリ キーのセキュリティとアクセス権」を参照してください。

Attributes

新しいレジストリ キーを作成するための呼び出しで入力パラメーターとして渡されたOBJECT_ATTRIBUTES構造体の Attributes メンバーのオブジェクト属性フラグを格納します。 このメンバーには、次のフラグ ビットが 1 つ以上含まれる場合があります。

  • OBJ_KERNEL_HANDLE
  • OBJ_FORCE_ACCESS_CHECK
  • OBJ_OPENLINK
これらのフラグの詳細については、「 OBJECT_ATTRIBUTES」を参照してください。

CheckAccessMode

構成マネージャーが、新しいキーを作成するための呼び出しのセキュリティ アクセス チェックを実行する方法を示します。 このメンバーには、Wdm.h ヘッダー ファイルの次のいずれかの MODE 列挙値が含まれています。

  • KernelMode
  • UserMode
このセキュリティ チェックは、UserMode または KernelMode に設定できる AccessMode パラメーターを持つ SeAccessCheck ルーチンによって実行されるのと似ています。 CheckAccessModeUserMode に設定されている場合、構成マネージャーは、呼び出しがユーザー モードかカーネル モードかに関係なく、完全なセキュリティ アクセス チェックを実行します。 カーネル モードで発生する呼び出しに対してユーザー モードのセキュリティ アクセス チェックを強制する方法の詳細については、OBJECT_ATTRIBUTES構造体の Attributes メンバーのOBJ_FORCE_ACCESS_CHECK フラグの説明を参照してください。

注釈

構成マネージャーは、ユーザー モード スレッドが 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を返す場合、ドライバーは GrantedAccessDisposition、および ResultObject メンバーの値を指定する必要があります。

REG_CREATE_KEY_INFORMATION_V1構造体は、フィルター ドライバーが RegistryCallback ルーチンを通じて受け取ることができるいくつかの構造体の 1 つです。 レジストリのフィルター処理操作の詳細については、「レジストリ 呼び出しのフィルター処理」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 7 以降のバージョンの Windows オペレーティング システムで使用できます。
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)

こちらもご覧ください

CmSetCallbackObjectContext

OBJECT_ATTRIBUTES

ObOpenObjectByPointer

REG_CREATE_KEY_INFORMATION

RegCreateKey

RegCreateKeyEx

RegistryCallback

SECURITY_DESCRIPTOR

SECURITY_QUALITY_OF_SERVICE

UNICODE_STRING

ZwCreateKey