RTL_QUERY_REGISTRY_ROUTINE 콜백 함수(wdm.h)

QueryRoutine 루틴은 RtlQueryRegistryValues 루틴에 대한 이전 호출에서 요청된 레지스트리 값에 대한 정보를 제공합니다.

구문

RTL_QUERY_REGISTRY_ROUTINE RtlQueryRegistryRoutine;

NTSTATUS RtlQueryRegistryRoutine(
  [in]           PWSTR ValueName,
  [in]           ULONG ValueType,
  [in]           PVOID ValueData,
  [in]           ULONG ValueLength,
  [in, optional] PVOID Context,
  [in, optional] PVOID EntryContext
)
{...}

매개 변수

[in] ValueName

요청된 레지스트리 값과 연결된 레지스트리 키를 지정합니다. 이 매개 변수는 키를 포함하는 null로 끝나는 유니코드 문자열에 대한 포인터입니다.

[in] ValueType

지정된 레지스트리 키와 함께 저장되는 레지스트리 값의 유형을 지정합니다. 레지스트리 값 형식에 대한 자세한 내용은 KEY_VALUE_BASIC_INFORMATIONType 매개 변수 정의를 참조하세요.

[in] ValueData

지정된 레지스트리 키와 연결된 데이터 값에 대한 포인터입니다. 드라이버는 이 값을 읽기 전용으로 처리해야 합니다. ValueData가 가리키는 값 데이터의 형식에 대한 자세한 내용은 KEY_VALUE_BASIC_INFORMATIONType 매개 변수의 정의를 참조하세요.

[in] ValueLength

ValueData가 가리키는 값의 길이(바이트)를 지정합니다.

[in, optional] Context

RtlQueryRegistryValues에 대한 이전 호출에서 드라이버가 지정한 Context 매개 변수 값을 지정합니다.

[in, optional] EntryContext

RtlQueryRegistryValues에 대한 이전 호출에서 드라이버가 지정한 QueryTable 배열 요소의 EntryContext 값을 지정합니다.

반환 값

QueryRoutine은 호출에 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 적절한 오류 상태 코드를 반환합니다. Ntstatus.h 헤더 파일에 정의된 상태 코드만 사용합니다.

설명

커널 모드 드라이버는 QueryRoutine 루틴을 구현합니다. 이 루틴은 RtlQueryRegistryValues 루틴에 의해 호출됩니다.

하나 이상의 레지스트리 값에 대한 정보를 얻기 위해 드라이버는 RtlQueryRegistryValues 를 호출하고 포인터를 입력 매개 변수로 RTL_QUERY_REGISTRY_TABLE 구조의 배열에 전달합니다. 이 배열의 각 구조에는 드라이버 구현 QueryRoutine 루틴에 대한 포인터와 특정 레지스트리 값에 대한 정보 요청이 포함됩니다. 배열의 각 구조에 대해 RtlQueryRegistryValues 는 지정된 QueryRoutine 루틴을 호출하고 지정된 레지스트리 값에 대한 요청된 정보를 포함하는 매개 변수 집합을 이 루틴에 전달합니다.

RTL_QUERY_REGISTRY_TABLE 구조에 대한 자세한 내용은 RtlQueryRegistryValues를 참조하세요.

예제

QueryRoutine 콜백 루틴을 정의하려면 먼저 정의할 콜백 루틴의 유형을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 콜백 함수 형식 집합을 제공합니다. 콜백 함수 형식을 사용하여 함수를 선언하면 드라이버에 대한 코드 분석, SDV( 정적 드라이버 검증 도구 ) 및 기타 확인 도구에서 오류를 찾는 데 도움이 되며 Windows 운영 체제용 드라이버를 작성하기 위한 요구 사항입니다.

예를 들어 라는 MyQueryRoutineQueryRoutine 콜백 루틴을 정의하려면 이 코드 예제와 같이 RTL_QUERY_REGISTRY_ROUTINE 형식을 사용합니다.

RTL_QUERY_REGISTRY_ROUTINE MyQueryRoutine;

그런 다음 다음과 같이 콜백 루틴을 구현합니다.

_Use_decl_annotations_
NTSTATUS
  MyQueryRoutine(
    PWSTR ValueName,
    ULONG ValueType,
    PVOID ValueData,
    ULONG ValueLength,
    PVOID Context,
    PVOID EntryContext
    )
  {
      // Function body
  }

RTL_QUERY_REGISTRY_ROUTINE 함수 형식은 Wdm.h 헤더 파일에 정의되어 있습니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 _Use_decl_annotations_ 주석을 추가해야 합니다. 주석을 _Use_decl_annotations_ 사용하면 헤더 파일의 RTL_QUERY_REGISTRY_ROUTINE 함수 형식에 적용되는 주석이 사용됩니다. 함수 선언에 대한 요구 사항에 대한 자세한 내용은 WDM 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요. 에 대한 _Use_decl_annotations_자세한 내용은 함수 동작 주석 지정을 참조하세요.

요구 사항

요구 사항
대상 플랫폼 데스크톱
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
IRQL PASSIVE_LEVEL 호출되었습니다.

추가 정보

KEY_VALUE_BASIC_INFORMATION

RtlQueryRegistryValues