Função RtlVerifyVersionInfo (wdm.h)

A rotina RtlVerifyVersionInfo compara um conjunto especificado de requisitos de versão do sistema operacional com os atributos correspondentes da versão atualmente em execução do sistema operacional.

Sintaxe

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

Parâmetros

[in] VersionInfo

Ponteiro para uma estrutura RTL_OSVERSIONINFOEXW que especifica os requisitos de versão do sistema operacional a serem comparados aos atributos correspondentes da versão em execução no momento do sistema operacional.

[in] TypeMask

Especifica quais membros de VersionInfo comparar com os atributos correspondentes da versão atualmente em execução do sistema operacional. TypeMask é definido como um OR lógico de um ou mais dos valores a seguir.

Valor Membro correspondente
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

Especifica como comparar cada membro VersionInfo . Para definir o valor de ConditionMask, um chamador deve usar a macro VER_SET_CONDITION :

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

O valor de ConditionMask é criado da seguinte maneira:

  • Inicialize o valor de ConditionMask como zero.

  • Chame VER_SET_CONDITION uma vez para cada membro VersionInfo especificado por TypeMask.

  • Defina os parâmetros TypeBitMask e ComparisonType para cada chamada como VER_SET_CONDITION da seguinte maneira:

TypeBitMask

Indica o membro VersionInfo para o qual o tipo de comparação está definido. TypeBitMask pode ser um dos valores a seguir.

Valor Membro correspondente
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

Especifica o tipo de comparação que RtlVerifyVersionInfo usa para comparar o membro VersionInfo especificado por TypeBitMask com o atributo correspondente do sistema operacional em execução no momento.

Para todos os valores de TypeBitMask diferentes de VER_SUITENAME, ComparisonType é definido como um dos valores a seguir.

Valor Significado
VER_EQUAL O valor atual deve ser igual ao valor especificado.
VER_GREATER O valor atual deve ser maior que o valor especificado.
VER_GREATER_EQUAL O valor atual deve ser maior ou igual ao valor especificado.
VER_LESS O valor atual deve ser menor que o valor especificado.
VER_LESS_EQUAL O valor atual deve ser menor ou igual ao valor especificado.

Se TypeBitMask for definido como VER_SUITENAME, ComparisonType será definido como um dos valores a seguir.

Valor Significado
VER_AND Todos os pacotes de produtos especificados no membro wSuiteMask devem estar presentes no sistema atual.
VER_OR Pelo menos um dos pacotes de produtos especificados deve estar presente no sistema atual.

Retornar valor

RtlVerifyVersionInfo retorna um dos seguintes valores de status:

Código de retorno Descrição
STATUS_SUCCESS A versão especificada corresponde à versão em execução no momento do sistema operacional.
STATUS_INVALID_PARAMETER Os parâmetros de entrada não são válidos.
STATUS_REVISION_MISMATCH A versão especificada não corresponde à versão em execução no momento do sistema operacional.

Comentários

RtlVerifyVersionInfo permite que um driver verifique facilmente a presença de um conjunto necessário de atributos do sistema operacional. RtlVerifyVersionInfo é o equivalente do modo kernel da função VerifyVersionInfo no modo de usuário no SDK do Windows. Consulte o exemplo no SDK do Windows que mostra como verificar a versão do sistema.

Normalmente, RtlVerifyVersionInfo retornará STATUS_SUCCESS somente se todas as comparações forem bem-sucedidas. No entanto, a versão principal, a versão secundária e a versão do service pack são testadas de maneira sequencial da seguinte maneira:

  • Se a versão principal exceder o mínimo necessário, a versão secundária e a versão do service pack não serão testadas. Por exemplo, se a versão principal atual for 6.0, um teste para um sistema maior ou igual à versão 5.1 service pack 1 terá êxito. A versão secundária e a versão do service pack não são testadas.

  • Se a versão secundária exceder o mínimo necessário, a versão do service pack não será testada. Por exemplo, se a versão principal atual for 5.2, um teste para uma versão do sistema maior ou igual à versão 5.1 do service pack 1 terá êxito. A versão do service pack não foi testada.

  • Se a versão principal do service pack exceder o mínimo necessário, a versão secundária do service pack não será testada.

Para verificar um intervalo de versões do sistema, um driver pode chamar RtlVerifyVersionInfo duas vezes, uma vez para verificar um limite inferior na versão do sistema e uma vez para verificar um limite superior na versão do sistema.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho wdm.h (include Ntddk.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe (modo kernel); Ntdll.dll (modo de usuário)
IRQL PASSIVE_LEVEL

Confira também

RTL_OSVERSIONINFOEXW

RTL_OSVERSIONINFOW

RtlGetVersion