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 드라이버도 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
새 레지스트리 키 개체에 대한 핸들을 받는 위치에 대한 포인터입니다.
반환 값
WdfFdoInitOpenRegistryKey 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 메서드는 다음 값 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
|
WdfFdoInitOpenRegistryKey IRQL = PASSIVE_LEVEL 호출되지 않았습니다. |
|
잘못된 매개 변수가 지정되었거나 드라이버가 EvtDriverDeviceAdd 콜백 함수에서 WDFDEVICE_INIT 구조를 가져오지 못했습니다. UMDF의 경우 이 반환 값은 액세스 권한이 없음을 나타낼 수 있습니다. |
|
레지스트리 키 개체를 할당할 수 없습니다. |
|
지정된 레지스트리 키가 없습니다. |
WdfFdoInitOpenRegistryKey 메서드가 반환할 수 있는 다른 반환 값 목록은 Framework 개체 만들기 오류참조하세요.
이 메서드는 다른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) |