다음을 통해 공유


RtlVerifyVersionInfo 함수(wdm.h)

RtlVerifyVersionInfo 루틴은 지정된 운영 체제 버전 요구 사항 집합을 현재 실행 중인 운영 체제 버전의 해당 특성과 비교합니다.

구문

NTSYSAPI NTSTATUS RtlVerifyVersionInfo(
  [in] PRTL_OSVERSIONINFOEXW VersionInfo,
  [in] ULONG                 TypeMask,
  [in] ULONGLONG             ConditionMask
);

매개 변수

[in] VersionInfo

현재 실행 중인 운영 체제 버전의 해당 특성과 비교할 운영 체제 버전 요구 사항을 지정하는 RTL_OSVERSIONINFOEXW 구조에 대한 포인터입니다.

[in] TypeMask

현재 실행 중인 운영 체제 버전의 해당 특성과 비교할 VersionInfo 의 멤버를 지정합니다. TypeMask 는 다음 값 중 하나 이상의 논리적 OR로 설정됩니다.

해당 멤버
VER_BUILDNUMBER dwBuildNumber
VER_MAJORVERSION dwMajorVersion
VER_MINORVERSION dwMinorVersion
VER_PLATFORMID dwPlatformId
VER_SERVICEPACKMAJOR wServicePackMajor
VER_SERVICEPACKMINOR wServicePackMinor
VER_SUITENAME wSuiteMask
VER_PRODUCT_TYPE wProductType

[in] ConditionMask

VersionInfo 멤버를 비교하는 방법을 지정합니다. ConditionMask 값을 설정하려면 호출자가 VER_SET_CONDITION 매크로를 사용해야 합니다.

VER_SET_CONDITION (
        IN OUT  ULONGLONG  ConditionMask,
        IN ULONG  TypeBitMask,
        IN UCHAR  ComparisonType
        );

ConditionMask의 값은 다음과 같은 방식으로 만들어집니다.

  • ConditionMask 값을 0으로 초기화합니다.

  • TypeMask에서 지정한 각 VersionInfo 멤버에 대해 VER_SET_CONDITION 한 번 호출합니다.

  • 다음과 같이 VER_SET_CONDITION 각 호출에 대해 TypeBitMaskComparisonType 매개 변수를 설정합니다.

TypeBitMask

비교 형식이 설정된 VersionInfo 멤버를 나타냅니다. TypeBitMask는 다음 값 중 하나일 수 있습니다.

해당 멤버
VER_BUILDNUMBER dwBuildNumber
VER_MAJORVERSION dwMajorVersion
VER_MINORVERSION dwMinorVersion
VER_PLATFORMID dwPlatformId
VER_SERVICEPACKMAJOR wServicePackMajor
VER_SERVICEPACKMINOR wServicePackMinor
VER_SUITENAME wSuiteMask
VER_PRODUCT_TYPE wProductType

ComparisonType

RtlVerifyVersionInfo에서 TypeBitMask에 지정된 VersionInfo 멤버를 현재 실행 중인 운영 체제의 해당 특성과 비교하는 데 사용하는 비교 형식을 지정합니다.

VER_SUITENAME 이외의 TypeBitMask 의 모든 값에 대해 ComparisonType 은 다음 값 중 하나로 설정됩니다.

의미
VER_EQUAL 현재 값은 지정된 값과 같아야 합니다.
VER_GREATER 현재 값은 지정된 값보다 커야 합니다.
VER_GREATER_EQUAL 현재 값은 지정된 값보다 크거나 같아야 합니다.
VER_LESS 현재 값은 지정된 값보다 작아야 합니다.
VER_LESS_EQUAL 현재 값은 지정된 값보다 작거나 같아야 합니다.

TypeBitMask가 VER_SUITENAME 설정된 경우 ComparisonType은 다음 값 중 하나로 설정됩니다.

의미
VER_AND wSuiteMask 멤버에 지정된 모든 제품 제품군이 현재 시스템에 있어야 합니다.
VER_OR 지정된 제품 제품군 중 하나 이상이 현재 시스템에 있어야 합니다.

반환 값

RtlVerifyVersionInfo는 다음 상태 값 중 하나를 반환합니다.

반환 코드 설명
STATUS_SUCCESS 지정된 버전은 현재 실행 중인 운영 체제 버전과 일치합니다.
STATUS_INVALID_PARAMETER 입력 매개 변수가 잘못되었습니다.
STATUS_REVISION_MISMATCH 지정된 버전이 현재 실행 중인 운영 체제 버전과 일치하지 않습니다.

설명

RtlVerifyVersionInfo 를 사용하면 드라이버가 필요한 운영 체제 특성 집합이 있는지 쉽게 확인할 수 있습니다. RtlVerifyVersionInfo 는 Windows SDK의 사용자 모드 VerifyVersionInfo 함수와 동일한 커널 모드입니다. 시스템 버전을 확인하는 방법을 보여 주는 Windows SDK의 예제를 참조하세요.

일반적으로 RtlVerifyVersionInfo 는 모든 비교가 성공한 경우에만 STATUS_SUCCESS 반환합니다. 그러나 주 버전, 부 버전 및 서비스 팩 버전은 다음과 같은 방식으로 순차적으로 테스트됩니다.

  • 주 버전이 필요한 최소 버전을 초과하면 부 버전 및 서비스 팩 버전이 테스트되지 않습니다. 예를 들어 현재 주 버전이 6.0인 경우 버전 5.1 서비스 팩 1보다 크거나 같은 시스템에 대한 테스트가 성공합니다. 부 버전 및 서비스 팩 버전은 테스트되지 않습니다.

  • 부 버전이 필요한 최소 버전을 초과하면 서비스 팩 버전이 테스트되지 않습니다. 예를 들어 현재 주 버전이 5.2인 경우 버전 5.1 서비스 팩 1보다 크거나 같은 시스템 버전에 대한 테스트가 성공합니다. 서비스 팩 버전은 테스트되지 않습니다.

  • 주 서비스 팩 버전이 필요한 최소값을 초과하면 부 서비스 팩 버전이 테스트되지 않습니다.

다양한 시스템 버전을 확인하기 위해 드라이버는 RtlVerifyVersionInfo 를 두 번 호출하고, 한 번은 시스템 버전에서 하한을 확인하고, 한 번은 시스템 버전에서 상한을 확인할 수 있습니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 wdm.h(Ntddk.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe(커널 모드); Ntdll.dll(사용자 모드)
IRQL PASSIVE_LEVEL

추가 정보

RTL_OSVERSIONINFOEXW

RTL_OSVERSIONINFOW

RtlGetVersion