/* * 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 */ #include #include 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); }