다음을 통해 공유


PcNewRegistryKey 함수(portcls.h)

PcNewRegistryKey 함수는 새 레지스트리 키를 열거나 만들고 키를 나타내는 IRegistryKey 개체를 만듭니다. 호출자는 이 개체를 통해 키에 액세스합니다.

구문

PORTCLASSAPI NTSTATUS PcNewRegistryKey(
  [out]           PREGISTRYKEY       *OutRegistryKey,
  [in, optional]  PUNKNOWN           OuterUnknown,
  [in]            ULONG              RegistryKeyType,
  [in]            ACCESS_MASK        DesiredAccess,
  [in, optional]  PVOID              DeviceObject,
  [in, optional]  PVOID              SubDevice,
  [in, optional]  POBJECT_ATTRIBUTES ObjectAttributes,
  [in, optional]  ULONG              CreateOptions,
  [out, optional] PULONG             Disposition
);

매개 변수

[out] OutRegistryKey

이 함수에서 만든 레지스트리 키 개체에 대한 출력 포인터입니다. 이 매개 변수는 함수가 IRegistryKey 개체에 대한 포인터를 출력하는 호출자 할당 포인터 변수를 가리킵니다. 개체는 열거나 만드는 레지스트리 키를 나타냅니다. 이 매개 변수에 유효한 NULL 이 아닌 포인터 값을 지정합니다.

[in, optional] OuterUnknown

OutRegistryKey 개체를 집계해야 하는 개체의 IUnknown 인터페이스에 대한 포인터입니다. 집계가 필요하지 않은 경우 이 매개 변수를 NULL로 설정합니다.

[in] RegistryKeyType

호출자가 만들거나 열려는 레지스트리 키의 유형을 지정합니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

[in] DesiredAccess

액세스 제어 마스크를 지정합니다. 이 매개 변수는 ACCESS_MASK 형식의 구조입니다. 호출자가 열거나 만들 레지스트리 키에 요청하는 액세스 유형을 나타냅니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

[in, optional] DeviceObject

어댑터 드라이버의 디바이스 개체에 대한 포인터입니다. 이 포인터는 PVOID 형식으로 캐스팅됩니다. RegistryKeyTypeGeneralRegistryKey 이외의 값인 경우 이 매개 변수는 DEVICE_OBJECT 형식의 유효한 초기화된 시스템 구조를 가리킵니다. RegistryKeyType 값이 GeneralRegistryKey이면 PcNewRegistryKey 함수는 이 매개 변수를 사용하지 않습니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

[in, optional] SubDevice

클라이언트에 제공할 디바이스의 측면을 지정합니다. 어댑터 드라이버는 이 매개 변수에 NULL 값을 할당해야 합니다.

[in, optional] ObjectAttributes

만들거나 여는 키의 개체 특성에 대한 포인터입니다. RegistryKeyTypeGeneralRegistryKey 값이 있는 경우 이 매개 변수는 키에 유효한 ObjectName 문자열이 있는 OBJECT_ATTRIBUTES 형식의 유효하고 초기화된 시스템 구조를 가리킵니다. 그렇지 않으면 함수는 이 매개 변수를 사용하지 않습니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

[in, optional] CreateOptions

만들기 옵션을 지정합니다. 원하는 항목이 없으면 0이 될 수 있습니다. RegistryKeyTypeGeneralRegistryKey가 아닌 경우 PcNewRegistryKey 함수는 이 매개 변수를 무시합니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

[out, optional] Disposition

키가 만들어졌는지 또는 기존 키가 열렸는지 여부를 나타내는 값을 수신하는 변수에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL로 지정할 수 있습니다. RegistryKeyTypeGeneralRegistryKey 이외의 값인 경우 PcNewRegistryKey 함수는 이 매개 변수를 무시합니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

반환 값

PcNewRegistryKey 는 호출이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 적절한 오류 코드를 반환합니다.

설명

RegistryKeyType 매개 변수의 값이 GeneralRegistryKey인 경우 PcNewRegistryKey 함수는 기존 키를 열거나 Disposition 매개 변수를 통해 함수가 출력하는 값으로 표시된 대로 레지스트리에 새 키를 만듭니다. 키가 GeneralRegistryKey 이외의 형식인 경우 함수는 플러그 앤 플레이 디바이스 열거 중에 이전에 만든 기존 키를 엽니다.

DesiredAccess, ObjectAttributes, CreateOptionsDisposition 매개 변수는 ZwCreateKey 호출에서 이름이 같은 매개 변수에 대해 정의된 값을 사용합니다.

RegistryKeyType 매개 변수는 다음 표에 표시된 열거형 값 중 하나로 설정해야 합니다.

RegistryKeyType 값 의미
GeneralRegistryKey 모든 키 형식에 대한 일반 액세스를 제공합니다. 지정된 키가 이미 있는 경우 열거나 키가 없는 경우 키를 만듭니다.
DeviceRegistryKey 디바이스별 정보를 포함하는 기존 키를 엽니다. 키는 DeviceObject에서 지정한 디바이스 instance 키 아래에 있습니다.
DriverRegistryKey 드라이버 관련 정보가 포함된 기존 키를 엽니다.
HwProfileRegistryKey 디바이스 또는 드라이버 정보를 포함하는 현재 하드웨어 프로필을 기준으로 기존 키를 엽니다. 이렇게 하면 드라이버가 하드웨어 프로필 관련 구성 정보에 액세스할 수 있습니다.
DeviceInterfaceRegistryKey PcNewRegistryKey와 함께 사용되지 않습니다. 자세한 내용은 IPort::NewRegistryKey 를 참조하세요.
 

GeneralRegistryKeyRegistryKeyType 값의 경우 호출자는 유효한 ObjectAttributes 매개 변수 값을 제공해야 하며 CreateOptionsDisposition 매개 변수는 선택 사항입니다. 다른 RegistryKeyType 값의 경우 호출자는 유효한 DeviceObject 매개 변수 값을 제공해야 하며 CreateOptionsDisposition 매개 변수는 사용되지 않습니다.

ObjectAttributes 매개 변수는 키 이름 및 보안 설명자와 같은 개체 특성을 포함하는 OBJECT_ATTRIBUTES 형식의 불투명 구조를 가리킵니다. InitializeObjectAttributes 매크로를 사용하여 구조를 초기화합니다. 이 매크로의 Attributes 매개 변수에서 보안이 아닌 사용자 모드 애플리케이션이 레지스트리 키에 대한 읽기/쓰기 액세스를 허용하지 않는 한 OBJ_KERNEL_HANDLE 플래그를 설정합니다.

DesiredAccess 매개 변수는 액세스 제어 마스크입니다. OutRegistryKey 개체를 통해 액세스할 때 호출자가 새 레지스트리 키에 대해 가져야 하는 액세스 제어 유형을 지정합니다. 이 마스크는 레지스트리 키에 대한 사용자의 액세스를 제어하는 ACL(액세스 제어 목록)과 혼동해서는 안 됩니다. PcNewRegistryKey를 호출하여 GeneralRegistryKey 형식의 레지스트리 키를 만들 때 ObjectAttributes 매개 변수는 ACL을 포함하는 보안 설명자를 포함하여 키의 특성을 지정합니다. 그러나 새 키가 GeneralRegistryKey 형식이고 ObjectAttributes 구조의 보안 설명자 포인터가 NULL 이거나 보안 설명자의 ACL 포인터가 NULL인 경우 새 키는 기본적으로 부모 키의 ACL을 상속합니다.

키가 GeneralRegistryKey 이외의 형식인 경우 키는 디바이스 열거 중에 키에 할당된 플러그 앤 플레이 ACL을 유지합니다.

PcNewRegistryKey 함수는 디바이스 개체와 포트 개체가 PcNewRegistryKey 호출에서 명시적으로 지정되어야 하지만 NewRegistryKey 호출에만 암시된다는 점을 제외하고 IPort::NewRegistryKey 메서드와 비슷합니다. PcNewRegistryKey 는 주로 어댑터 드라이버에서 사용됩니다. 미니포트 드라이버는 일반적으로 NewRegistryKey 를 대신 호출합니다.

OutRegistryKeyOuterUnknown 매개 변수는 COM 개체에 대한 참조 계산 규칙을 따릅니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 PortCls 시스템 드라이버는 Microsoft Windows 98/Me 및 Windows 2000 이상 운영 체제에서 PcNewRegistryKey 함수를 구현합니다.
대상 플랫폼 유니버설
헤더 portcls.h(Portcls.h 포함)
라이브러리 Portcls.lib
IRQL PASSIVE_LEVEL

추가 정보

ACCESS_MASK

DEVICE_OBJECT

IPort::NewRegistryKey

IRegistryKey

InitializeObjectAttributes

OBJECT_ATTRIBUTES

ZwCreateKey