WdfFdoInitOpenRegistryKey 함수(wdffdo.h)

[KMDF 및 UMDF에 적용]

WdfFdoInitOpenRegistryKey 메서드는 레지스트리에서 디바이스의 하드웨어 키 또는 드라이버 소프트웨어 키를 열고 레지스트리 키를 나타내는 프레임워크 레지스트리 키 개체를 만듭니다.

구문

NTSTATUS WdfFdoInitOpenRegistryKey(
  [in]           PWDFDEVICE_INIT        DeviceInit,
  [in]           ULONG                  DeviceInstanceKeyType,
  [in]           ACCESS_MASK            DesiredAccess,
  [in, optional] PWDF_OBJECT_ATTRIBUTES KeyAttributes,
  [out]          WDFKEY                 *Key
);

매개 변수

[in] DeviceInit

드라이버가 EvtDriverDeviceAdd 콜백 함수에서 가져온 WDFDEVICE_INIT 구조체에 대한 포인터입니다.

[in] DeviceInstanceKeyType

열 키 또는 하위 키를 지정합니다.

참고

UMDF는 하위 키 만들기를 지원하지 않습니다.

이는 Wdm.h에 정의된 다음 플래그의 비트 OR입니다.

DeviceInstanceKeyType 플래그 의미 프레임워크
PLUGPLAY_REGKEY_DEVICE 디바이스의 하드웨어 키를 엽니다. KMDF/UMDF
PLUGPLAY_REGKEY_DRIVER 드라이버의 소프트웨어 키를 엽니다. 이 플래그를 설정하는 UMDF 드라이버도 DesiredAccessKEY_READ 설정해야 합니다. 그렇지 않으면 이 메서드는 STATUS_ACCESS_DENIED 반환합니다. KMDF/UMDF
PLUGPLAY_REGKEY_CURRENT_HWPROFILE KMDF 드라이버는 이 플래그를 사용하여 현재 하드웨어 프로필에 있는 하드웨어 또는 소프트웨어 키의 복사본을 엽니다. Kmdf
PLUGPLAY_REGKEY_DRIVER | WDF_REGKEY_DRIVER_SUBKEY UMDF 드라이버는 이러한 플래그를 함께 사용하여 읽기/쓰기 액세스를 위해 드라이버 소프트웨어 키의 ServiceName 하위 키를 엽니다. Umdf
PLUGPLAY_REGKEY_DEVICE | WDF_REGKEY_DEVICE_SUBKEY 마찬가지로 UMDF 드라이버는 이러한 플래그를 사용하여 읽기/쓰기 액세스를 위해 디바이스 하드웨어 키의 ServiceName 하위 키를 엽니다. Umdf

[in] DesiredAccess

드라이버가 지정된 레지스트리 키에 대해 요청하는 액세스 권한을 지정하는 ACCESS_MASK 형식의 값입니다.

KMDF 드라이버는 일반적으로 KEY_READ, KEY_WRITE 또는 KEY_READ요청 | KEY_WRITE.

UMDF 드라이버를 작성하는 경우 다음 표를 사용합니다.

DeviceInstanceKeyType DesiredAccess
PLUGPLAY_REGKEY_DEVICE KEY_READ
PLUGPLAY_REGKEY_DEVICE | WDF_REGKEY_DEVICE_SUBKEY KEY_READ 또는 KEY_READ | KEY_SET_VALUE
PLUGPLAY_REGKEY_DRIVER KEY_READ
PLUGPLAY_REGKEY_DRIVER | WDF_REGKEY_DRIVER_SUBKEY KEY_READ 또는 KEY_READ | KEY_SET_VALUE
 

모범 사례로 드라이버에 필요한 액세스 유형만 요청합니다.

[in, optional] KeyAttributes

새 레지스트리 키 개체에 대한 드라이버 제공 특성을 포함하는 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 WDF_NO_OBJECT_ATTRIBUTES 수 있습니다.

[out] Key

새 레지스트리 키 개체에 대한 핸들을 수신하는 위치에 대한 포인터입니다.

반환 값

WdfFdoInitOpenRegistryKey 는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 메서드는 다음 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
STATUS_INVALID_DEVICE_REQUEST

WdfFdoInitOpenRegistryKey 는 IRQL = PASSIVE_LEVEL 호출되지 않았습니다.

STATUS_INVALID_PARAMETER
잘못된 매개 변수가 지정되었거나 드라이버가 EvtDriverDeviceAdd 콜백 함수에서 WDFDEVICE_INIT 구조를 가져오지 못했습니다. UMDF의 경우 이 반환 값은 액세스 권한이 부족함을 나타낼 수 있습니다.
STATUS_INSUFFICIENT_RESOURCES
레지스트리 키 개체를 할당할 수 없습니다.
STATUS_OBJECT_NAME_NOT_FOUND
지정된 레지스트리 키가 없습니다.
 

WdfFdoInitOpenRegistryKey 메서드가 반환할 수 있는 다른 반환 값 목록은 프레임워크 개체 만들기 오류를 참조하세요.

메서드는 다른 NTSTATUS 값을 반환할 수도 있습니다.

설명

드라이버는 WdfDeviceCreate를 호출하기 전에 WdfFdoInitOpenRegistryKey를 호출해야 합니다. WdfDeviceCreate를 호출하는 방법에 대한 자세한 내용은 프레임워크 디바이스 개체 만들기를 참조하세요.

WdfFdoInitOpenRegistryKey 메서드에 대한 자세한 내용은 함수 드라이버에서 디바이스 개체 만들기를 참조하세요.

레지스트리, 하드웨어 및 소프트웨어 키 및 레지스트리 개체에 대한 자세한 내용은 Framework-Based 드라이버에서 레지스트리 사용을 참조하세요.

예제

다음 코드 예제에서는 읽기 권한이 있는 디바이스의 하드웨어 키를 엽니다.

WDFKEY key;
NTSTATUS status;

status = WdfFdoInitOpenRegistryKey(
                                   DeviceInit,
                                   PLUGPLAY_REGKEY_DEVICE,
                                   GENERIC_READ,
                                   WDF_NO_OBJECT_ATTRIBUTES,
                                   &key
                                   );
if (!NT_SUCCESS(status)) {
    return status;
}

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
최소 UMDF 버전 2.0
머리글 wdffdo.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF)
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 DeviceInitAPI(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

추가 정보

WdfDeviceOpenRegistryKey

WdfDriverOpenParametersRegistryKey