다음을 통해 공유


레지스트리 Run-Time 라이브러리 루틴

레지스트리 항목을 조작하기 위해 드라이버는 ZwXxx 키 루틴보다 간단한 인터페이스를 제공하는 Rtl Xxx 레지스트리 Xxx 루틴을 호출할 수 있습니다. 이렇게 하면 드라이버가 핸들을 열고 닫을 필요가 없습니다. 대신 드라이버는 이름으로 키를 참조합니다.

RelativeToPath 매개 변수를 각 RtlXxx레지스트리Xxx 루틴에 전달합니다. RelativeTo가 RTL_REGISTRY_ABSOLUTE 경우 Path\Registry 루트로 시작하는 키의 전체 경로를 지정합니다. RelativeTo가 RTL_REGISTRY_HANDLE 경우 Path는 실제로 열린 핸들입니다. Relative에 대한 추가 RTL_REGISTRY_XXX 값 키에 대한 공통 루트의 경로를 지정 합니다 . 이러한 경우 Path 는 해당 루트를 기준으로 경로를 지정합니다. 예를 들어 RTL_REGISTRY_USER 경로 가 현재 사용자의 레지스트리 설정을 기준으로 해야 합니다. (이 값은 사용자 모드 애플리케이션에서 HKEY_CURRENT_USER 지정하는 것과 같습니다.) 모든 RTL_REGISTRY_XXX 값에 대한 설명은 RtlCheckRegistryKey를 참조하세요.

다음 표에서는 RtlXxx레지스트리Xxx 루틴을 호출하여 드라이버가 수행할 수 있는 작업을 나열합니다.

작업 호출할 RtlXxx레지스트리Xxx 루틴

레지스트리 키 만들기

RtlCreateRegistryKey

레지스트리 키가 있는지 확인

RtlCheckRegistryKey

하나 이상의 레지스트리 키 값 검사

RtlQueryRegistryValues

레지스트리 키 값 작성

RtlWriteRegistryValue

레지스트리 키 값 삭제

RtlDeleteRegistryValue

다음 코드 예제에서는 \Registry\Machine\System\KeyNameValueName을 0xFF ULONG 값으로 설정하는 방법을 보여 줍니다. 이 예제를 레지스트리 키 개체 루틴 섹션의 해당 예제와 비교합니다.

NTSTATUS status;
ULONG data = 0xFF;

status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE,
                               (PWCSTR)L"\\Registry\\Machine\\System\\KeyName",
                               (PWCSTR)L"ValueName",
                               REG_DWORD,
                               &data,
                               sizeof(ULONG));

Zw Xxx 키 루틴 대신 RtlXxx레지스트리Xxx 루틴을 사용할 때 코드 줄을 더 적게 작성하지만, 후자는 특정 작업을 수행하는 데 필요합니다. 예를 들어 ZwEnumerateKey에 해당하는 RtlXxx레지스트리Xxx 루틴이 없습니다.

동일한 키에서 여러 작업을 수행하는 경우 ZwXxx 루틴이 더 효율적입니다. 각 작업에 대해 동일한 열린 핸들을 사용할 수 있습니다. 반면 RtlXxx레지스트리Xxx 루틴은 각 작업에 대한 새 핸들을 열고 닫습니다.