summaryrefslogtreecommitdiff
path: root/src/winintern.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/winintern.h')
-rw-r--r--src/winintern.h367
1 files changed, 367 insertions, 0 deletions
diff --git a/src/winintern.h b/src/winintern.h
new file mode 100644
index 0000000..458a832
--- /dev/null
+++ b/src/winintern.h
@@ -0,0 +1,367 @@
+//|_ _ _. _ ._ |_ _. _ |
+//| | (/_ (_| \/ (/_ | | | | (_| (_ |<
+
+#pragma once
+
+#include <windows.h>
+
+#ifndef STATUS_SUCCESS
+# define STATUS_SUCCESS 0
+#endif
+
+template <class T>
+struct _LIST_ENTRY_T
+{
+ T Flink;
+ T Blink;
+};
+
+template <class T>
+struct _UNICODE_STRING_T
+{
+ union
+ {
+ struct
+ {
+ WORD Length;
+ WORD MaximumLength;
+ };
+ T dummy;
+ };
+ T Buffer;
+};
+
+template <class T>
+struct _NT_TIB_T
+{
+ T ExceptionList;
+ T StackBase;
+ T StackLimit;
+ T SubSystemTib;
+ T FiberData;
+ T ArbitraryUserPointer;
+ T Self;
+};
+
+template <class T>
+struct _CLIENT_ID_T
+{
+ T UniqueProcess;
+ T UniqueThread;
+};
+
+struct OBJECT_HANDLE_FLAG_INFORMATION {
+ BOOLEAN inherit;
+ BOOLEAN protect;
+};
+
+template <class T>
+struct _TEB_T_
+{
+ _NT_TIB_T<T> NtTib;
+ T EnvironmentPointer;
+ _CLIENT_ID_T<T> ClientId;
+ T ActiveRpcHandle;
+ T ThreadLocalStoragePointer;
+ T ProcessEnvironmentBlock;
+ DWORD LastErrorValue;
+ DWORD CountOfOwnedCriticalSections;
+ T CsrClientThread;
+ T Win32ThreadInfo;
+ DWORD User32Reserved[26];
+ //rest of the structure is not defined for now, as it is not needed
+};
+
+template <class T>
+struct _LDR_DATA_TABLE_ENTRY_T
+{
+ _LIST_ENTRY_T<T> InLoadOrderLinks;
+ _LIST_ENTRY_T<T> InMemoryOrderLinks;
+ _LIST_ENTRY_T<T> InInitializationOrderLinks;
+ T DllBase;
+ T EntryPoint;
+ union
+ {
+ DWORD SizeOfImage;
+ T dummy01;
+ };
+ _UNICODE_STRING_T<T> FullDllName;
+ _UNICODE_STRING_T<T> BaseDllName;
+ DWORD Flags;
+ WORD LoadCount;
+ WORD TlsIndex;
+ union
+ {
+ _LIST_ENTRY_T<T> HashLinks;
+ struct
+ {
+ T SectionPointer;
+ T CheckSum;
+ };
+ };
+ union
+ {
+ T LoadedImports;
+ DWORD TimeDateStamp;
+ };
+ T EntryPointActivationContext;
+ T PatchInformation;
+ _LIST_ENTRY_T<T> ForwarderLinks;
+ _LIST_ENTRY_T<T> ServiceTagLinks;
+ _LIST_ENTRY_T<T> StaticLinks;
+ T ContextInformation;
+ T OriginalBase;
+ _LARGE_INTEGER LoadTime;
+};
+
+template <class T>
+struct _PEB_LDR_DATA_T
+{
+ DWORD Length;
+ DWORD Initialized;
+ T SsHandle;
+ _LIST_ENTRY_T<T> InLoadOrderModuleList;
+ _LIST_ENTRY_T<T> InMemoryOrderModuleList;
+ _LIST_ENTRY_T<T> InInitializationOrderModuleList;
+ T EntryInProgress;
+ DWORD ShutdownInProgress;
+ T ShutdownThreadId;
+
+};
+
+struct PROCESS_BASIC_INFORMATION64 {
+ LONG ExitStatus;
+ U64 PebBaseAddress;
+ U64 AfiinityMask;
+ LONG BasePriority;
+ U64 UniqueProcessId;
+ U64 InheritedFromUniqueProcessId;
+};
+
+template <class T, class NGF, int A>
+struct _PEB_T
+{
+ UCHAR InheritedAddressSpace;
+ UCHAR ReadImageFileExecOptions;
+ UCHAR BeingDebugged;
+ UCHAR BitField;
+ ULONG ImageUsesLargePages: 1;
+ ULONG IsProtectedProcess: 1;
+ ULONG IsLegacyProcess: 1;
+ ULONG IsImageDynamicallyRelocated: 1;
+ ULONG SpareBits: 4;
+ T Mutant;
+ T ImageBaseAddress;
+ T Ldr;
+ T ProcessParameters;
+ T SubSystemData;
+ T ProcessHeap;
+ T FastPebLock;
+ T AtlThunkSListPtr;
+ T IFEOKey;
+ T CrossProcessFlags;
+ T UserSharedInfoPtr;
+ DWORD SystemReserved;
+ DWORD AtlThunkSListPtr32;
+ T ApiSetMap;
+ T TlsExpansionCounter;
+ T TlsBitmap;
+ DWORD TlsBitmapBits[2];
+ T ReadOnlySharedMemoryBase;
+ T HotpatchInformation;
+ T ReadOnlyStaticServerData;
+ T AnsiCodePageData;
+ T OemCodePageData;
+ T UnicodeCaseTableData;
+ DWORD NumberOfProcessors;
+ union
+ {
+ DWORD NtGlobalFlag;
+ NGF dummy02;
+ };
+ LARGE_INTEGER CriticalSectionTimeout;
+ T HeapSegmentReserve;
+ T HeapSegmentCommit;
+ T HeapDeCommitTotalFreeThreshold;
+ T HeapDeCommitFreeBlockThreshold;
+ DWORD NumberOfHeaps;
+ DWORD MaximumNumberOfHeaps;
+ T ProcessHeaps;
+ T GdiSharedHandleTable;
+ T ProcessStarterHelper;
+ T GdiDCAttributeList;
+ T LoaderLock;
+ DWORD OSMajorVersion;
+ DWORD OSMinorVersion;
+ WORD OSBuildNumber;
+ WORD OSCSDVersion;
+ DWORD OSPlatformId;
+ DWORD ImageSubsystem;
+ DWORD ImageSubsystemMajorVersion;
+ T ImageSubsystemMinorVersion;
+ T ActiveProcessAffinityMask;
+ T GdiHandleBuffer[A];
+ T PostProcessInitRoutine;
+ T TlsExpansionBitmap;
+ DWORD TlsExpansionBitmapBits[32];
+ T SessionId;
+ ULARGE_INTEGER AppCompatFlags;
+ ULARGE_INTEGER AppCompatFlagsUser;
+ T pShimData;
+ T AppCompatInfo;
+ _UNICODE_STRING_T<T> CSDVersion;
+ T ActivationContextData;
+ T ProcessAssemblyStorageMap;
+ T SystemDefaultActivationContextData;
+ T SystemAssemblyStorageMap;
+ T MinimumStackCommit;
+ T FlsCallback;
+ _LIST_ENTRY_T<T> FlsListHead;
+ T FlsBitmap;
+ DWORD FlsBitmapBits[4];
+ T FlsHighIndex;
+ T WerRegistrationData;
+ T WerShipAssertPtr;
+ T pContextData;
+ T pImageHeaderHash;
+ T TracingFlags;
+};
+
+typedef _LDR_DATA_TABLE_ENTRY_T<DWORD> LDR_DATA_TABLE_ENTRY32;
+typedef _LDR_DATA_TABLE_ENTRY_T<DWORD64> LDR_DATA_TABLE_ENTRY64;
+
+typedef _TEB_T_<DWORD> TEB32;
+typedef _TEB_T_<DWORD64> TEB64;
+
+typedef _PEB_LDR_DATA_T<DWORD> PEB_LDR_DATA32;
+typedef _PEB_LDR_DATA_T<DWORD64> PEB_LDR_DATA64;
+
+typedef _PEB_T<DWORD, DWORD64, 34> PEB32;
+typedef _PEB_T<DWORD64, DWORD, 30> PEB64;
+
+struct _XSAVE_FORMAT64
+{
+ WORD ControlWord;
+ WORD StatusWord;
+ BYTE TagWord;
+ BYTE Reserved1;
+ WORD ErrorOpcode;
+ DWORD ErrorOffset;
+ WORD ErrorSelector;
+ WORD Reserved2;
+ DWORD DataOffset;
+ WORD DataSelector;
+ WORD Reserved3;
+ DWORD MxCsr;
+ DWORD MxCsr_Mask;
+ _M128A FloatRegisters[8];
+ _M128A XmmRegisters[16];
+ BYTE Reserved4[96];
+};
+
+struct _CONTEXT64
+{
+ DWORD64 P1Home;
+ DWORD64 P2Home;
+ DWORD64 P3Home;
+ DWORD64 P4Home;
+ DWORD64 P5Home;
+ DWORD64 P6Home;
+ DWORD ContextFlags;
+ DWORD MxCsr;
+ WORD SegCs;
+ WORD SegDs;
+ WORD SegEs;
+ WORD SegFs;
+ WORD SegGs;
+ WORD SegSs;
+ DWORD EFlags;
+ DWORD64 Dr0;
+ DWORD64 Dr1;
+ DWORD64 Dr2;
+ DWORD64 Dr3;
+ DWORD64 Dr6;
+ DWORD64 Dr7;
+ DWORD64 Rax;
+ DWORD64 Rcx;
+ DWORD64 Rdx;
+ DWORD64 Rbx;
+ DWORD64 Rsp;
+ DWORD64 Rbp;
+ DWORD64 Rsi;
+ DWORD64 Rdi;
+ DWORD64 R8;
+ DWORD64 R9;
+ DWORD64 R10;
+ DWORD64 R11;
+ DWORD64 R12;
+ DWORD64 R13;
+ DWORD64 R14;
+ DWORD64 R15;
+ DWORD64 Rip;
+ _XSAVE_FORMAT64 FltSave;
+ _M128A Header[2];
+ _M128A Legacy[8];
+ _M128A Xmm0;
+ _M128A Xmm1;
+ _M128A Xmm2;
+ _M128A Xmm3;
+ _M128A Xmm4;
+ _M128A Xmm5;
+ _M128A Xmm6;
+ _M128A Xmm7;
+ _M128A Xmm8;
+ _M128A Xmm9;
+ _M128A Xmm10;
+ _M128A Xmm11;
+ _M128A Xmm12;
+ _M128A Xmm13;
+ _M128A Xmm14;
+ _M128A Xmm15;
+ _M128A VectorRegister[26];
+ DWORD64 VectorControl;
+ DWORD64 DebugControl;
+ DWORD64 LastBranchToRip;
+ DWORD64 LastBranchFromRip;
+ DWORD64 LastExceptionToRip;
+ DWORD64 LastExceptionFromRip;
+};
+
+struct _SYSTEM_PROCESS_INFORMATION64 {
+ ULONG NextEntryOffset;
+ ULONG NumberOfThreads;
+ BYTE Reserved1[48];
+ _UNICODE_STRING_T<U64> ImageName;
+ KPRIORITY BasePriority;
+ U64 UniqueProcessId;
+ U64 Reserved2;
+ ULONG HandleCount;
+ ULONG SessionId;
+ U64 Reserved3;
+ U64 PeakVirtualSize;
+ U64 VirtualSize;
+ ULONG Reserved4;
+ U64 PeakWorkingSetSize;
+ U64 WorkingSetSize;
+ U64 Reserved5;
+ U64 QuotaPagedPoolUsage;
+ U64 Reserved6;
+ U64 QuotaNonPagedPoolUsage;
+ U64 PagefileUsage;
+ U64 PeakPagefileUsage;
+ U64 PrivatePageCount;
+ LARGE_INTEGER Reserved7[6];
+};
+
+template< class T >
+struct _OBJECT_ATTRIBUTES_T {
+ ULONG Length;
+ T RootDirectory;
+ T ObjectName;
+ ULONG Attributes;
+ T SecurityDescriptor;
+ T SecurityQualityOfService;
+};
+
+using _OBJECT_ATTRIBUTES64 = _OBJECT_ATTRIBUTES_T<DWORD64>;
+using NTSTATUS64 = DWORD64; \ No newline at end of file