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 각 호출에 대해 TypeBitMask 및 ComparisonType 매개 변수를 설정합니다.
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 |