1 #ifndef __CROSS_VERSION_LIB_NT__H__ 2 #define __CROSS_VERSION_LIB_NT__H__ 3 4 extern "C" { 5 6 #pragma pack(push, 8) 7 8 #if !defined(NT_INCLUDED) 9 #include <ntddk.h> // various NT definitions 10 #endif 11 12 #include <stddef.h> 13 #include <string.h> 14 #include <stdarg.h> 15 #include <stdio.h> 16 #include "ntddk_ex.h" 17 #include "tools.h" 18 19 #include "rwlock.h" 20 21 #ifdef CROSS_NT_INTERNAL 22 #include "ilock.h" 23 #endif //CROSS_NT_INTERNAL 24 25 #include "misc.h" 26 27 #pragma pack(pop) 28 29 extern "C" 30 NTSTATUS 31 NTAPI 32 CrNtInit( 33 IN PDRIVER_OBJECT DriverObject, 34 IN PUNICODE_STRING RegistryPath 35 ); 36 37 extern "C" 38 PVOID 39 NTAPI 40 CrNtGetModuleBase( 41 IN PCHAR pModuleName 42 ); 43 44 extern "C" 45 PVOID 46 NTAPI 47 CrNtFindModuleBaseByPtr( 48 IN PVOID ptrInSection, 49 IN PCHAR ptrExportedName 50 ); 51 52 extern "C" 53 PVOID 54 NTAPI 55 CrNtGetProcAddress( 56 PVOID ModuleBase, 57 PCHAR pFunctionName 58 ); 59 60 #ifdef __GNUC__ 61 #define DECL_FUNC_PTR(_type, _cconv, _name) _type _cconv ( * _name) 62 #else 63 #define DECL_FUNC_PTR(_type, _cconv, _name) _type (_cconv * _name) 64 #endif 65 66 typedef DECL_FUNC_PTR(BOOLEAN, __stdcall, ptrCrNtPsGetVersion)( 67 PULONG MajorVersion OPTIONAL, 68 PULONG MinorVersion OPTIONAL, 69 PULONG BuildNumber OPTIONAL, 70 PUNICODE_STRING CSDVersion OPTIONAL 71 ); 72 73 extern "C" 74 ptrCrNtPsGetVersion CrNtPsGetVersion; 75 76 typedef DECL_FUNC_PTR(NTSTATUS, __stdcall, ptrCrNtNtQuerySystemInformation)( 77 IN SYSTEM_INFORMATION_CLASS SystemInfoClass, 78 OUT PVOID SystemInfoBuffer, 79 IN ULONG SystemInfoBufferSize, 80 OUT PULONG BytesReturned OPTIONAL 81 ); 82 83 extern "C" 84 ptrCrNtNtQuerySystemInformation CrNtNtQuerySystemInformation; 85 86 87 extern "C" { 88 89 extern ULONG MajorVersion; 90 extern ULONG MinorVersion; 91 extern ULONG BuildNumber; 92 extern ULONG SPVersion; 93 94 extern HANDLE g_hNtosKrnl; 95 extern HANDLE g_hHal; 96 97 }; 98 99 #define WinVer_Is351 (MajorVersion==0x03) 100 #define WinVer_IsNT (MajorVersion==0x04) 101 #define WinVer_Is2k (MajorVersion==0x05 && MinorVersion==0x00) 102 #define WinVer_IsXP (MajorVersion==0x05 && MinorVersion==0x01) 103 #define WinVer_IsXPp (MajorVersion==0x05 && MinorVersion>=0x01) 104 #define WinVer_IsdNET (MajorVersion==0x05 && MinorVersion==0x02) 105 #define WinVer_IsdNETp ((MajorVersion==0x05 && MinorVersion>=0x02) || (MajorVersion>0x05)) 106 #define WinVer_IsVista (MajorVersion==0x06 && MinorVersion==0x00) 107 108 #define WinVer_Id() ((MajorVersion << 8) | MinorVersion) 109 110 #define WinVer_351 (0x0351) 111 #define WinVer_NT (0x0400) 112 #define WinVer_ROS (0x0401) 113 #define WinVer_2k (0x0500) 114 #define WinVer_XP (0x0501) 115 #define WinVer_dNET (0x0502) 116 #define WinVer_Vista (0x0600) 117 118 #ifdef _DEBUG 119 120 // NT3.51 doesn't export strlen() and strcmp() 121 // The same time, Release build doesn't depend no these functions since they are inlined 122 123 #ifndef USE_REACTOS_DDK 124 125 size_t __cdecl CrNtstrlen ( 126 const char * str 127 ); 128 129 int __cdecl CrNtstrcmp ( 130 const char * src, 131 const char * dst 132 ); 133 134 #define strlen CrNtstrlen 135 #define strcmp CrNtstrcmp 136 137 #endif // !USE_REACTOS_DDK 138 139 #endif //_DEBUG 140 141 #define CROSSNT_DECL_API 142 143 #include "CrNtDecl.h" 144 #include "CrNtStubs.h" 145 146 #undef CROSSNT_DECL_API 147 148 }; // end extern "C" 149 150 #endif //__CROSS_VERSION_LIB_NT__H__ 151