xref: /reactos/drivers/storage/ide/uniata/inc/CrossNt.h (revision d6eebaa4)
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