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 |