1 #ifndef __CROSS_VERSION_LIB_NT__H__
2 #define __CROSS_VERSION_LIB_NT__H__
8 #if !defined(NT_INCLUDED)
9 #include <ntddk.h> // various NT definitions
21 #ifdef CROSS_NT_INTERNAL
23 #endif //CROSS_NT_INTERNAL
32 IN PDRIVER_OBJECT DriverObject
,
33 IN PUNICODE_STRING RegistryPath
44 CrNtFindModuleBaseByPtr(
45 IN PVOID ptrInSection
,
46 IN PCHAR ptrExportedName
56 typedef BOOLEAN (__stdcall
*ptrCrNtPsGetVersion
)(
57 PULONG MajorVersion OPTIONAL
,
58 PULONG MinorVersion OPTIONAL
,
59 PULONG BuildNumber OPTIONAL
,
60 PUNICODE_STRING CSDVersion OPTIONAL
64 ptrCrNtPsGetVersion CrNtPsGetVersion
;
66 typedef NTSTATUS (__stdcall
*ptrCrNtNtQuerySystemInformation
)(
67 IN SYSTEM_INFORMATION_CLASS SystemInfoClass
,
68 OUT PVOID SystemInfoBuffer
,
69 IN ULONG SystemInfoBufferSize
,
70 OUT PULONG BytesReturned OPTIONAL
74 ptrCrNtNtQuerySystemInformation CrNtNtQuerySystemInformation
;
79 extern ULONG MajorVersion
;
80 extern ULONG MinorVersion
;
81 extern ULONG BuildNumber
;
82 extern ULONG SPVersion
;
84 extern HANDLE g_hNtosKrnl
;
89 #define WinVer_Is351 (MajorVersion==0x03)
90 #define WinVer_IsNT (MajorVersion==0x04)
91 #define WinVer_Is2k (MajorVersion==0x05 && MinorVersion==0x00)
92 #define WinVer_IsXP (MajorVersion==0x05 && MinorVersion==0x01)
93 #define WinVer_IsXPp (MajorVersion==0x05 && MinorVersion>=0x01)
94 #define WinVer_IsdNET (MajorVersion==0x05 && MinorVersion==0x02)
95 #define WinVer_IsdNETp ((MajorVersion==0x05 && MinorVersion>=0x02) || (MajorVersion>0x05))
96 #define WinVer_IsVista (MajorVersion==0x06 && MinorVersion==0x00)
98 #define WinVer_Id() ((MajorVersion << 8) | MinorVersion)
100 #define WinVer_351 (0x0351)
101 #define WinVer_NT (0x0400)
102 #define WinVer_ROS (0x0401)
103 #define WinVer_2k (0x0500)
104 #define WinVer_XP (0x0501)
105 #define WinVer_dNET (0x0502)
106 #define WinVer_Vista (0x0600)
110 // NT3.51 doesn't export strlen() and strcmp()
111 // The same time, Release build doesn't depend no these functions since they are inlined
113 size_t __cdecl
CrNtstrlen (
117 int __cdecl
CrNtstrcmp (
124 #define CROSSNT_DECL_API
126 #include "CrNtDecl.h"
127 #include "CrNtStubs.h"
129 #undef CROSSNT_DECL_API
133 #endif //__CROSS_VERSION_LIB_NT__H__