#endif
typedef wchar_t WCHAR;
-typedef WCHAR *PWCHAR,*LPWCH,*PWCH,*NWPSTR,*LPWSTR,*PWSTR;
-typedef CONST WCHAR *LPCWCH,*PCWCH,*LPCWSTR,*PCWSTR;
+typedef WCHAR *PWCHAR,*LPWCH,*PWCH,*NWPSTR,*LPWSTR,*PWSTR,*PZZWSTR;
+typedef CONST WCHAR *LPCWCH,*PCWCH,*LPCWSTR,*PCWSTR,*PCZZWSTR;
typedef CHAR *PCHAR,*LPCH,*PCH,*NPSTR,*LPSTR,*PSTR;
typedef CONST CHAR *LPCCH,*PCCH,*PCSTR,*LPCSTR;
typedef PWSTR *PZPWSTR;
typedef CONST PSTR *PCZPSTR;
typedef PCSTR *PZPCSTR;
+
#ifdef UNICODE
#ifndef _TCHAR_DEFINED
#define _TCHAR_DEFINED
#define SEC_RESERVE 0x04000000
#define SEC_COMMIT 0x08000000
#define SEC_NOCACHE 0x10000000
+#define SEC_WRITECOMBINE 0x40000000
+#define SEC_LARGE_PAGES 0x80000000
#define SECTION_EXTEND_SIZE 16
#define SECTION_MAP_READ 4
#define SECTION_MAP_WRITE 2
HeapEnableTerminationOnCorruption
} HEAP_INFORMATION_CLASS;
-NTSYSAPI
-DWORD
-NTAPI
-RtlSetHeapInformation (
- IN PVOID HeapHandle,
- IN HEAP_INFORMATION_CLASS HeapInformationClass,
- IN PVOID HeapInformation OPTIONAL,
- IN SIZE_T HeapInformationLength OPTIONAL
- );
-
-NTSYSAPI
-DWORD
-NTAPI
-RtlQueryHeapInformation (
- IN PVOID HeapHandle,
- IN HEAP_INFORMATION_CLASS HeapInformationClass,
- OUT PVOID HeapInformation OPTIONAL,
- IN SIZE_T HeapInformationLength OPTIONAL,
- OUT PSIZE_T ReturnLength OPTIONAL
- );
-
-//
-// Multiple alloc-free APIS
-//
-
-DWORD
-NTAPI
-RtlMultipleAllocateHeap (
- IN PVOID HeapHandle,
- IN DWORD Flags,
- IN SIZE_T Size,
- IN DWORD Count,
- OUT PVOID * Array
- );
-
-DWORD
-NTAPI
-RtlMultipleFreeHeap (
- IN PVOID HeapHandle,
- IN DWORD Flags,
- IN DWORD Count,
- OUT PVOID * Array
- );
-
typedef enum _PROCESSOR_CACHE_TYPE {
CacheUnified,
CacheInstruction,
}
#endif
-#if defined(_M_IX86)
-extern __inline__ struct _TEB * NtCurrentTeb(void)
-{
- struct _TEB *ret;
-
- __asm__ __volatile__ (
- "movl %%fs:0x18, %0\n"
- : "=r" (ret)
- : /* no inputs */
- );
-
- return ret;
-}
-#elif defined(_M_ARM)
-
-//
-// NT-ARM is not documented
-//
-#include <armddk.h>
-
-#elif defined(_M_AMD64)
-FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
-{
- return (struct _TEB *)__readgsqword(FIELD_OFFSET(NT_TIB, Self));
-}
-#elif defined(_M_PPC)
-extern __inline__ struct _TEB * NtCurrentTeb(void)
-{
- return __readfsdword_winnt(0x18);
-}
-#else
-extern __inline__ struct _TEB * NtCurrentTeb(void)
-{
- return __readfsdword_winnt(0x18);
-}
-#endif
-
#elif defined(__WATCOMC__)
extern PVOID GetCurrentFiber(void);
value [eax] \
modify [eax];
-extern struct _TEB * NtCurrentTeb(void);
-#pragma aux NtCurrentTeb = \
- "mov eax, dword ptr fs:0x18" \
- value [eax] \
- modify [eax];
-
#elif defined(_MSC_VER)
#if (_MSC_FULL_VER >= 13012035)
__inline PVOID GetCurrentFiber(void) { return (PVOID)(ULONG_PTR)__readfsdword(0x10); }
-__inline struct _TEB * NtCurrentTeb(void) { return (struct _TEB *)(ULONG_PTR)__readfsdword(0x18); }
#else
return p;
}
-static __inline struct _TEB * NtCurrentTeb(void)
-{
- struct _TEB *p;
- __asm mov eax, fs:[18h]
- __asm mov [p], eax
- return p;
-}
-
#endif /* _MSC_FULL_VER */
#endif /* __GNUC__/__WATCOMC__/_MSC_VER */
+#include "inline_ntcurrentteb.h"
+
static __inline PVOID GetFiberData(void)
{
return *((PVOID *)GetCurrentFiber());
#endif
}
+#endif
+
#define BitScanForward _BitScanForward
#define BitScanReverse _BitScanReverse
-#endif
-
/* TODO: Other architectures than X86 */
#if defined(_M_IX86)
#define PF_TEMPORAL_LEVEL_1