2e22649ba39800ffdcab51b2a57b94f3d93832af
[reactos.git] / reactos / drivers / storage / ide / uniata / inc / CrossNt.h
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 CrNtInit(
32 IN PDRIVER_OBJECT DriverObject,
33 IN PUNICODE_STRING RegistryPath
34 );
35
36 extern "C"
37 PVOID
38 CrNtGetModuleBase(
39 IN PCHAR pModuleName
40 );
41
42 extern "C"
43 PVOID
44 CrNtFindModuleBaseByPtr(
45 IN PVOID ptrInSection,
46 IN PCHAR ptrExportedName
47 );
48
49 extern "C"
50 PVOID
51 CrNtGetProcAddress(
52 PVOID ModuleBase,
53 PCHAR pFunctionName
54 );
55
56 typedef BOOLEAN (__stdcall *ptrCrNtPsGetVersion)(
57 PULONG MajorVersion OPTIONAL,
58 PULONG MinorVersion OPTIONAL,
59 PULONG BuildNumber OPTIONAL,
60 PUNICODE_STRING CSDVersion OPTIONAL
61 );
62
63 extern "C"
64 ptrCrNtPsGetVersion CrNtPsGetVersion;
65
66 typedef NTSTATUS (__stdcall *ptrCrNtNtQuerySystemInformation)(
67 IN SYSTEM_INFORMATION_CLASS SystemInfoClass,
68 OUT PVOID SystemInfoBuffer,
69 IN ULONG SystemInfoBufferSize,
70 OUT PULONG BytesReturned OPTIONAL
71 );
72
73 extern "C"
74 ptrCrNtNtQuerySystemInformation CrNtNtQuerySystemInformation;
75
76
77 extern "C" {
78
79 extern ULONG MajorVersion;
80 extern ULONG MinorVersion;
81 extern ULONG BuildNumber;
82 extern ULONG SPVersion;
83
84 extern HANDLE g_hNtosKrnl;
85 extern HANDLE g_hHal;
86
87 };
88
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)
97
98 #define WinVer_Id() ((MajorVersion << 8) | MinorVersion)
99
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)
107
108 #ifdef _DEBUG
109
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
112
113 size_t __cdecl CrNtstrlen (
114 const char * str
115 );
116
117 int __cdecl CrNtstrcmp (
118 const char * src,
119 const char * dst
120 );
121
122 #endif //_DEBUG
123
124 #define CROSSNT_DECL_API
125
126 #include "CrNtDecl.h"
127 #include "CrNtStubs.h"
128
129 #undef CROSSNT_DECL_API
130
131 }; // end extern "C"
132
133 #endif //__CROSS_VERSION_LIB_NT__H__