WdfDeviceOpenRegistryKey 함수(wdfdevice.h)
[KMDF 및 UMDF에 적용]
WdfDeviceOpenRegistryKey 메서드는 레지스트리에서 디바이스의 하드웨어 키 또는 드라이버 소프트웨어 키를 열고 레지스트리 키를 나타내는 프레임워크 레지스트리 키 개체를 만듭니다.
구문
NTSTATUS WdfDeviceOpenRegistryKey(
[in] WDFDEVICE Device,
[in] ULONG DeviceInstanceKeyType,
[in] ACCESS_MASK DesiredAccess,
[in, optional] PWDF_OBJECT_ATTRIBUTES KeyAttributes,
[out] WDFKEY *Key
);
매개 변수
[in] Device
프레임워크 디바이스 개체에 대한 핸들입니다.
[in] DeviceInstanceKeyType
열 키 또는 하위 키를 지정합니다.
참고
UMDF는 하위 키 만들기를 지원하지 않습니다.
이는 Wdm.h에 정의된 다음 플래그의 비트 OR입니다.
DeviceInstanceKeyType 플래그 | 의미 | 프레임워크 |
---|---|---|
PLUGPLAY_REGKEY_DEVICE | 디바이스의 하드웨어 키를 엽니다. | KMDF/UMDF |
PLUGPLAY_REGKEY_DRIVER | 드라이버의 소프트웨어 키를 엽니다. 이 플래그를 설정하는 UMDF 드라이버도 DesiredAccess를KEY_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
새 레지스트리 키 개체에 대한 핸들을 수신하는 위치에 대한 포인터입니다.
반환 값
WdfDeviceOpenRegistryKey 는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 메서드는 다음 값 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
|
WdfDeviceOpenRegistryKey 가 IRQL = PASSIVE_LEVEL 호출되지 않았습니다. |
|
잘못된 매개 변수가 지정되었습니다. UMDF의 경우 이 반환 값은 액세스 권한이 부족함을 나타낼 수 있습니다. |
|
레지스트리 키 개체를 할당할 수 없습니다. |
|
지정된 레지스트리 키가 없습니다. |
WdfDeviceOpenRegistryKey 메서드가 반환할 수 있는 다른 반환 값 목록은 프레임워크 개체 만들기 오류를 참조하세요.
메서드는 다른 NTSTATUS 값을 반환할 수 있습니다.
드라이버가 잘못된 개체 핸들을 제공하는 경우 버그 검사 발생합니다.
설명
드라이버가 WdfDeviceCreate를 호출하기 전에 하드웨어 또는 소프트웨어 키를 열어야 하는 경우 WdfDeviceOpenRegistryKey 대신 WdfFdoInitOpenRegistryKey를 호출해야 합니다.
드라이버가 WdfDeviceOpenRegistryKey로 연 레지스트리 키 사용을 완료하면 드라이버는 WdfRegistryClose를 호출해야 합니다.
레지스트리, 하드웨어 및 소프트웨어 키 및 레지스트리 개체에 대한 자세한 내용은 Framework-Based 드라이버에서 레지스트리 사용을 참조하세요.
예제
WdfDeviceOpenRegistryKey를 사용하는 코드 예제는 WdfRegistryCreateKey, WdfRegistryOpenKey 및 WdfRegistryQueryValue를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
최소 KMDF 버전 | 1.0 |
최소 UMDF 버전 | 2.0 |
머리글 | wdfdevice.h(Wdf.h 포함) |
라이브러리 | Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF) |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | AccessHardwareKey(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |