reactos/sdk/lib/drivers/rtlver/rtl.c

41 lines
1.2 KiB
C

/*
* PROJECT: ReactOS Kernel - Vista+ APIs
* LICENSE: GPL v2 - See COPYING in the top level directory
* FILE: lib/drivers/ntoskrnl_vista/rtl.c
* PURPOSE: Implementation of RtlIsNtDdiVersionAvailable and RtlIsServicePackVersionInstalled
* PROGRAMMERS: Pierre Schweitzer <pierre@reactos.org>
*/
#include <ntdef.h>
#include <ntifs.h>
BOOLEAN
WdmlibRtlIsNtDdiVersionAvailable(
_In_ ULONG Version)
{
UNICODE_STRING ImportName;
ULONG Major, Minor, Current;
BOOLEAN (NTAPI *pRtlIsNtDdiVersionAvailable)(ULONG Version);
/* Try to use ntoskrnl version if available */
RtlInitUnicodeString(&ImportName, L"RtlIsNtDdiVersionAvailable");
pRtlIsNtDdiVersionAvailable = MmGetSystemRoutineAddress(&ImportName);
if (pRtlIsNtDdiVersionAvailable)
{
return pRtlIsNtDdiVersionAvailable(Version);
}
/* Only provide OS version. No SP */
if (SPVER(Version) || SUBVER(Version))
{
return FALSE;
}
/* Compute the version and compare */
Major = 0;
Minor = 0;
PsGetVersion(&Major, &Minor, NULL, NULL);
Current = (Minor + (Major << 8)) << 16;
return (Current >= Version);
}