00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _TYPEDEFS_HOST_H
00011 #define _TYPEDEFS_HOST_H
00012
00013 #include <assert.h>
00014 #include <stdlib.h>
00015 #include <limits.h>
00016
00017
00018 #if !defined(_MSC_VER) && !defined(__fastcall)
00019 #define __fastcall __attribute__((fastcall))
00020 #endif
00021 #if !defined(_MSC_VER) && !defined(__cdecl)
00022 #define __cdecl __attribute__((cdecl))
00023 #endif
00024 #if !defined(_MSC_VER) && !defined(__stdcall)
00025 #define __stdcall __attribute__((stdcall))
00026 #endif
00027
00028
00029 #define UNIMPLEMENTED { printf("%s unimplemented\n", __FUNCTION__); exit(1); }
00030 #define ASSERT(x) assert(x)
00031 #define ASSERTMSG(x, m) assert(x)
00032 #define DPRINT if (0) printf
00033 #define DPRINT1 printf
00034
00035 #define NTAPI
00036 #define WINAPI
00037
00038 #define IN
00039 #define OUT
00040 #define OPTIONAL
00041
00042 #define FALSE 0
00043 #define TRUE 1
00044
00045 #define ANYSIZE_ARRAY 1
00046
00047
00048
00049 typedef void VOID, *PVOID;
00050 typedef char CHAR, CCHAR, *PCHAR, *PSTR;
00051 typedef const char *PCSTR, *LPCSTR;
00052 typedef unsigned char UCHAR, *PUCHAR, BYTE, *LPBYTE, BOOLEAN, *PBOOLEAN;
00053 typedef short SHORT, *PSHORT;
00054 typedef unsigned short USHORT, *PUSHORT, WORD, *PWORD, *LPWORD, WCHAR, *PWCHAR, *PWSTR, *LPWSTR;
00055 typedef const unsigned short *PCWSTR, *LPCWSTR;
00056 typedef int INT, LONG, *PLONG, *LPLONG, BOOL;
00057 typedef unsigned int UINT, *PUINT, *LPUINT, ULONG, *PULONG, DWORD, *LPDWORD;
00058 typedef long LONG_PTR, *PLONG_PTR, INT_PTR, *PINT_PTR;
00059 typedef unsigned long ULONG_PTR, DWORD_PTR, *PULONG_PTR, UINT_PTR, *PUINT_PTR;
00060 typedef long long LONGLONG;
00061 typedef unsigned long long ULONGLONG;
00062
00063
00064 typedef PVOID HANDLE, HKEY, *PHKEY;
00065 typedef INT NTSTATUS, POOL_TYPE;
00066 typedef LONG HRESULT;
00067 typedef ULONG_PTR SIZE_T, *PSIZE_T;
00068 typedef WORD LANGID;
00069
00070 #define MAXUSHORT USHRT_MAX
00071
00072
00073 #include <pshpack4.h>
00074 typedef struct _RTL_BITMAP
00075 {
00076 ULONG SizeOfBitMap;
00077 PULONG Buffer;
00078 } RTL_BITMAP, *PRTL_BITMAP;
00079
00080 typedef struct _RTL_BITMAP_RUN
00081 {
00082 ULONG StartingIndex;
00083 ULONG NumberOfBits;
00084 } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
00085
00086 typedef union _LARGE_INTEGER
00087 {
00088 struct
00089 {
00090 DWORD LowPart;
00091 LONG HighPart;
00092 };
00093 LONGLONG QuadPart;
00094 } LARGE_INTEGER, *PLARGE_INTEGER;
00095
00096 typedef struct _LIST_ENTRY
00097 {
00098 struct _LIST_ENTRY *Flink;
00099 struct _LIST_ENTRY *Blink;
00100 } LIST_ENTRY,*PLIST_ENTRY;
00101
00102 typedef struct _ANSI_STRING
00103 {
00104 USHORT Length;
00105 USHORT MaximumLength;
00106 PSTR Buffer;
00107 } ANSI_STRING, *PANSI_STRING;
00108
00109 typedef struct _UNICODE_STRING
00110 {
00111 USHORT Length;
00112 USHORT MaximumLength;
00113 PWSTR Buffer;
00114 } UNICODE_STRING, *PUNICODE_STRING;
00115 #include <poppack.h>
00116
00117
00118 static __inline
00119 VOID
00120 InitializeListHead(
00121 IN PLIST_ENTRY ListHead
00122 )
00123 {
00124 ListHead->Flink = ListHead->Blink = ListHead;
00125 }
00126
00127 static __inline
00128 VOID
00129 InsertHeadList(
00130 IN PLIST_ENTRY ListHead,
00131 IN PLIST_ENTRY Entry
00132 )
00133 {
00134 PLIST_ENTRY OldFlink;
00135 OldFlink = ListHead->Flink;
00136 Entry->Flink = OldFlink;
00137 Entry->Blink = ListHead;
00138 OldFlink->Blink = Entry;
00139 ListHead->Flink = Entry;
00140 }
00141
00142 static __inline
00143 VOID
00144 InsertTailList(
00145 IN PLIST_ENTRY ListHead,
00146 IN PLIST_ENTRY Entry
00147 )
00148 {
00149 PLIST_ENTRY OldBlink;
00150 OldBlink = ListHead->Blink;
00151 Entry->Flink = ListHead;
00152 Entry->Blink = OldBlink;
00153 OldBlink->Flink = Entry;
00154 ListHead->Blink = Entry;
00155 }
00156
00157 static __inline
00158 BOOLEAN
00159 IsListEmpty(
00160 IN const LIST_ENTRY * ListHead
00161 )
00162 {
00163 return (BOOLEAN)(ListHead->Flink == ListHead);
00164 }
00165
00166 static __inline
00167 BOOLEAN
00168 RemoveEntryList(
00169 IN PLIST_ENTRY Entry)
00170 {
00171 PLIST_ENTRY OldFlink;
00172 PLIST_ENTRY OldBlink;
00173
00174 OldFlink = Entry->Flink;
00175 OldBlink = Entry->Blink;
00176 OldFlink->Blink = OldBlink;
00177 OldBlink->Flink = OldFlink;
00178 return (BOOLEAN)(OldFlink == OldBlink);
00179 }
00180
00181 static __inline
00182 PLIST_ENTRY
00183 RemoveHeadList(
00184 IN PLIST_ENTRY ListHead)
00185 {
00186 PLIST_ENTRY Flink;
00187 PLIST_ENTRY Entry;
00188
00189 Entry = ListHead->Flink;
00190 Flink = Entry->Flink;
00191 ListHead->Flink = Flink;
00192 Flink->Blink = ListHead;
00193 return Entry;
00194 }
00195
00196 static __inline
00197 PLIST_ENTRY
00198 RemoveTailList(
00199 IN PLIST_ENTRY ListHead)
00200 {
00201 PLIST_ENTRY Blink;
00202 PLIST_ENTRY Entry;
00203
00204 Entry = ListHead->Blink;
00205 Blink = Entry->Blink;
00206 ListHead->Blink = Blink;
00207 Blink->Flink = ListHead;
00208 return Entry;
00209 }
00210
00211 typedef const UNICODE_STRING *PCUNICODE_STRING;
00212
00213
00214 #define LOBYTE(w) ((BYTE)(w))
00215 #define HIBYTE(w) ((BYTE)(((WORD)(w)>>8)&0xFF))
00216 #define LOWORD(l) ((WORD)((DWORD_PTR)(l)))
00217 #define HIWORD(l) ((WORD)(((DWORD_PTR)(l)>>16)&0xFFFF))
00218 #define MAKEWORD(a,b) ((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8)))
00219 #define MAKELONG(a,b) ((LONG)(((WORD)(a))|(((DWORD)((WORD)(b)))<<16)))
00220
00221 #define MAXULONG 0xFFFFFFFF
00222
00223 #define NT_SUCCESS(x) ((x)>=0)
00224 #if !defined(__GNUC__)
00225 #define FIELD_OFFSET(t,f) ((LONG)(LONG_PTR)&(((t*) 0)->f))
00226 #else
00227 #define FIELD_OFFSET(t,f) ((LONG)__builtin_offsetof(t,f))
00228 #endif
00229 #define RTL_CONSTANT_STRING(s) { sizeof(s)-sizeof((s)[0]), sizeof(s), s }
00230 #define CONTAINING_RECORD(address, type, field) ((type *)(((ULONG_PTR)address) - (ULONG_PTR)(&(((type *)0)->field))))
00231
00232 #define RtlZeroMemory(Destination, Length) memset(Destination, 0, Length)
00233 #define RtlCopyMemory(Destination, Source, Length) memcpy(Destination, Source, Length)
00234 #define RtlMoveMemory(Destination, Source, Length) memmove(Destination, Source, Length)
00235
00236 #define MAKELANGID(p,s) ((((WORD)(s))<<10)|(WORD)(p))
00237 #define PRIMARYLANGID(l) ((WORD)(l)&0x3ff)
00238 #define SUBLANGID(l) ((WORD)(l)>>10)
00239 #define SUBLANG_NEUTRAL 0x00
00240
00241
00242 #define __INTERNAL_DEBUG
00243 #define RTL_H
00244
00245 #endif