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 루틴의 처리 매개 변수 설명 및 다음 설명 섹션을 참조하세요.

ResultObject

만든 레지스트리 키를 나타내는 키 개체의 주소를 받는 위치에 대한 포인터입니다.

CallContext

드라이버의 RegistryCallback 루틴에서 제공할 수 있는 선택적 드라이버 정의 컨텍스트 정보입니다.

RootObjectContext

CmSetCallbackObjectContext 루틴을 호출하여 드라이버가 레지스트리 개체의 경로 루트와 연결한 드라이버 정의 컨텍스트 정보에 대한 포인터입니다.

Transaction

레지스트리 작업에 대한 트랜잭션 개체에 대한 포인터입니다. 이 포인터를 ObOpenObjectByPointer 루틴에 제공하여 해당 트랜잭션 핸들을 가져올 수 있습니다. 이 멤버가 NULL이면 비 트랜잭션 컨텍스트에서 작업이 수행됩니다.

Version

구조체 버전 번호입니다. 이 멤버는 Windows Vista의 REG_CREATE_KEY_INFORMATION 구조를 Windows 7 이상 버전의 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 멤버의 개체 특성 플래그를 포함합니다. 이 멤버는 다음 플래그 비트 중 하나 이상을 포함할 수 있습니다.

  • OBJ_KERNEL_HANDLE
  • OBJ_FORCE_ACCESS_CHECK
  • OBJ_OPENLINK
이러한 플래그에 대한 자세한 내용은 OBJECT_ATTRIBUTES 참조하세요.

CheckAccessMode

구성 관리자가 새 키를 만들기 위한 호출에 대한 보안 액세스 검사 수행하는 방법을 나타냅니다. 이 멤버는 Wdm.h 헤더 파일의 다음 MODE 열거형 값 중 하나를 포함합니다.

  • KernelMode
  • UserMode
이 보안 검사 UserMode 또는 KernelMode로 설정할 수 있는 AccessMode 매개 변수가 있는 SeAccessCheck 루틴에서 수행하는 것과 비슷합니다. CheckAccessModeUserMode로 설정된 경우 구성 관리자는 호출이 사용자 모드 또는 커널 모드에서 시작되었는지 여부에 관계없이 검사 전체 보안 액세스를 수행합니다. 커널 모드에서 시작된 호출에 대해 사용자 모드 보안 액세스 검사를 강제하는 방법에 대한 자세한 내용은 OBJECT_ATTRIBUTES 구조의 특성 멤버에서 OBJ_FORCE_ACCESS_CHECK 플래그에 대한 설명을 참조하세요.

설명

구성 관리자는 스레드가 키를 만들려고 할 때마다(예: 사용자 모드 스레드가 RegCreateKey 또는 RegCreateKeyEx를 호출하거나 커널 모드 드라이버가 ZwCreateKey호출하는 경우) RegistryCallback 루틴에 이 구조를 전달합니다.

이 구조체는 Windows Vista에서 지원하는 REG_CREATE_KEY_INFORMATION 구조체의 확장 버전입니다. 트랜잭션을 통한 처음 14개 멤버인 CompleteName은 두 구조체에서 동일합니다. REG_CREATE_KEY_INFORMATION_V1 구조체의 마지막 5개 멤버인 Version through CheckAccessModeREG_CREATE_KEY_INFORMATION 구조체의 일부가 아닙니다.

드라이버의 RegistryCallback 루틴이 RegNtPreCreateKeyEx 알림에 대한 STATUS_CALLBACK_BYPASS 반환하는 경우 드라이버는 GrantedAccess, DispositionResultObject 멤버에 대한 값을 제공해야 합니다.

REG_CREATE_KEY_INFORMATION_V1 구조체는 필터 드라이버가 RegistryCallback 루틴을 통해 수신할 수 있는 여러 구조체 중 하나입니다. 레지스트리 필터링 작업에 대한 자세한 내용은 레지스트리 호출 필터링을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
헤더 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