Freigeben über


RtlVerifyVersionInfo-Funktion (wdm.h)

Die RtlVerifyVersionInfo-Routine vergleicht einen angegebenen Satz von Betriebssystemversionsanforderungen mit den entsprechenden Attributen der derzeit ausgeführten Version des Betriebssystems.

Syntax

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

Parameter

[in] VersionInfo

Zeiger auf eine RTL_OSVERSIONINFOEXW Struktur, die die Anforderungen an die Betriebssystemversion angibt, die mit den entsprechenden Attributen der derzeit ausgeführten Version des Betriebssystems verglichen werden sollen.

[in] TypeMask

Gibt an, welche Member von VersionInfo mit den entsprechenden Attributen der derzeit ausgeführten Version des Betriebssystems verglichen werden sollen. TypeMask ist auf ein logisches OR mit einem oder mehreren der folgenden Werte festgelegt.

Wert Entsprechendes Mitglied
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

Gibt an, wie die einzelnen VersionInfo-Member verglichen werden. Um den Wert von ConditionMask festzulegen, sollte ein Aufrufer das makro VER_SET_CONDITION verwenden:

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

Der Wert von ConditionMask wird wie folgt erstellt:

  • Initialisieren Sie den Wert von ConditionMask auf null.

  • Rufen Sie VER_SET_CONDITION einmal für jedes durch TypeMask angegebene VersionInfo-Element auf.

  • Legen Sie die Parameter TypeBitMask und ComparisonType für jeden Aufruf auf VER_SET_CONDITION wie folgt fest:

TypeBitMask

Gibt das VersionInfo-Element an, für das der Vergleichstyp festgelegt ist. TypeBitMask kann einer der folgenden Werte sein.

Wert Entsprechendes Mitglied
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

Gibt den Vergleichstyp an, den RtlVerifyVersionInfo verwendet, um den von TypeBitMask angegebenen VersionInfo-Member mit dem entsprechenden Attribut des derzeit ausgeführten Betriebssystems zu vergleichen.

Für alle Werte von TypeBitMask außer VER_SUITENAME ist ComparisonType auf einen der folgenden Werte festgelegt.

Wert Bedeutung
VER_EQUAL Der aktuelle Wert muss dem angegebenen Wert entsprechen.
VER_GREATER Der aktuelle Wert muss größer als der angegebene Wert sein.
VER_GREATER_EQUAL Der aktuelle Wert muss größer oder gleich dem angegebenen Wert sein.
VER_LESS Der aktuelle Wert muss kleiner als der angegebene Wert sein.
VER_LESS_EQUAL Der aktuelle Wert muss kleiner oder gleich dem angegebenen Wert sein.

Wenn TypeBitMask auf VER_SUITENAME festgelegt ist, wird ComparisonType auf einen der folgenden Werte festgelegt.

Wert Bedeutung
VER_AND Alle im wSuiteMask-Member angegebenen Produktsammlungen müssen im aktuellen System vorhanden sein.
VER_OR Mindestens eine der angegebenen Produktsammlungen muss im aktuellen System vorhanden sein.

Rückgabewert

RtlVerifyVersionInfo gibt einen der folgenden status Werte zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS Die angegebene Version entspricht der aktuell ausgeführten Version des Betriebssystems.
STATUS_INVALID_PARAMETER Die Eingabeparameter sind ungültig.
STATUS_REVISION_MISMATCH Die angegebene Version stimmt nicht mit der aktuell ausgeführten Version des Betriebssystems überein.

Hinweise

RtlVerifyVersionInfo ermöglicht es einem Treiber, das Vorhandensein eines erforderlichen Satz von Betriebssystemattributen einfach zu überprüfen. RtlVerifyVersionInfo ist die Kernelmodus-Entsprechung der VerifyVersionInfo-Funktion im Benutzermodus im Windows SDK. Sehen Sie sich das Beispiel im Windows SDK an, das zeigt, wie Die Systemversion überprüft wird.

Normalerweise gibt RtlVerifyVersionInfo nur dann STATUS_SUCCESS zurück, wenn alle Vergleiche erfolgreich sind. Hauptversion, Nebenversion und Service Pack-Version werden jedoch sequenziell auf folgende Weise getestet:

  • Wenn die Hauptversion die erforderliche Mindestversion überschreitet, werden die Nebenversion und die Service Pack-Version nicht getestet. Wenn die aktuelle Hauptversion beispielsweise 6.0 ist, ist ein Test für ein System erfolgreich, das größer oder gleich Version 5.1 Service Pack 1 ist. Die Nebenversion und die Service Pack-Version werden nicht getestet.

  • Wenn die Nebenversion den erforderlichen Mindestwert überschreitet, wird die Service Pack-Version nicht getestet. Wenn die aktuelle Hauptversion beispielsweise 5.2 ist, ist ein Test für eine Systemversion, die größer oder gleich Version 5.1 Service Pack 1 ist, erfolgreich. Die Service Pack-Version wird nicht getestet.

  • Wenn die Hauptversion des Service Packs die erforderliche Mindestversion überschreitet, wird die Nebenversion des Service Packs nicht getestet.

Um eine Reihe von Systemversionen zu überprüfen, kann ein Treiber RtlVerifyVersionInfo zweimal aufrufen, einmal, um eine Untergrenze für die Systemversion zu überprüfen, und einmal, um eine Obergrenze für die Systemversion zu überprüfen.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header wdm.h (include Ntddk.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe (Kernelmodus); Ntdll.dll (Benutzermodus)
IRQL PASSIVE_LEVEL

Weitere Informationen

RTL_OSVERSIONINFOEXW

RTL_OSVERSIONINFOW

RtlGetVersion