diff --git a/Andromeda-CS2-Base.sln b/Andromeda-CS2-Base.sln index 077df24..d3ec9bf 100644 --- a/Andromeda-CS2-Base.sln +++ b/Andromeda-CS2-Base.sln @@ -1,10 +1,12 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 -VisualStudioVersion = 17.14.36603.0 d17.14 +VisualStudioVersion = 17.14.36603.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Andromeda-CS2-Base", "Andromeda-CS2-Base\Andromeda-CS2-Base.vcxproj", "{0011461C-0E5F-401C-AC58-23719D1EF845}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Andromeda-Injector", "Andromeda-Injector\Andromeda-Injector.vcxproj", "{CCCB11FE-9B54-44BF-8C77-29DBB3B83B74}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -21,6 +23,14 @@ Global {0011461C-0E5F-401C-AC58-23719D1EF845}.Release|x64.Build.0 = Release|x64 {0011461C-0E5F-401C-AC58-23719D1EF845}.Release|x86.ActiveCfg = Release|Win32 {0011461C-0E5F-401C-AC58-23719D1EF845}.Release|x86.Build.0 = Release|Win32 + {CCCB11FE-9B54-44BF-8C77-29DBB3B83B74}.Debug|x64.ActiveCfg = Release|x64 + {CCCB11FE-9B54-44BF-8C77-29DBB3B83B74}.Debug|x64.Build.0 = Release|x64 + {CCCB11FE-9B54-44BF-8C77-29DBB3B83B74}.Debug|x86.ActiveCfg = Release|x64 + {CCCB11FE-9B54-44BF-8C77-29DBB3B83B74}.Debug|x86.Build.0 = Release|x64 + {CCCB11FE-9B54-44BF-8C77-29DBB3B83B74}.Release|x64.ActiveCfg = Release|x64 + {CCCB11FE-9B54-44BF-8C77-29DBB3B83B74}.Release|x64.Build.0 = Release|x64 + {CCCB11FE-9B54-44BF-8C77-29DBB3B83B74}.Release|x86.ActiveCfg = Release|x64 + {CCCB11FE-9B54-44BF-8C77-29DBB3B83B74}.Release|x86.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Andromeda-CS2-Base/Andromeda-CS2-Base/Common/Include/Config.hpp b/Andromeda-CS2-Base/Andromeda-CS2-Base/Common/Include/Config.hpp index d67eefc..6525f5b 100644 --- a/Andromeda-CS2-Base/Andromeda-CS2-Base/Common/Include/Config.hpp +++ b/Andromeda-CS2-Base/Andromeda-CS2-Base/Common/Include/Config.hpp @@ -14,7 +14,7 @@ #ifdef RELEASE_BUILD #define ENABLE_CONSOLE_DEBUG 1 -#define ENABLE_MANUAL_MAP 0 +#define ENABLE_MANUAL_MAP 1 #define ENABLE_CPP_EH_EXCEPTION 0 #define LOG_SDK 1 diff --git a/Andromeda-CS2-Base/Andromeda-CS2-Base/DllLauncher.hpp b/Andromeda-CS2-Base/Andromeda-CS2-Base/DllLauncher.hpp index 03baa2c..5e9e054 100644 --- a/Andromeda-CS2-Base/Andromeda-CS2-Base/DllLauncher.hpp +++ b/Andromeda-CS2-Base/Andromeda-CS2-Base/DllLauncher.hpp @@ -6,7 +6,6 @@ struct ManualMapParam_t { uint64_t ArgsSize = 0; - DWORD64 DllLoaderCode = 0; char DllPath[MAX_PATH] = { 0 }; }; diff --git a/Andromeda-Injector/Andromeda-Injector.vcxproj b/Andromeda-Injector/Andromeda-Injector.vcxproj new file mode 100644 index 0000000..6554476 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector.vcxproj @@ -0,0 +1,73 @@ + + + + + Release + x64 + + + + 17.0 + Win32Proj + {cccb11fe-9b54-44bf-8c77-29dbb3b83b74} + AndromedaInjector + 10.0 + + + + Application + false + v143 + true + MultiByte + + + + + + + + + + + + $(MSBuildProjectDirectory)\Andromeda-Injector\Common\Include\;$(IncludePath) + Andromeda-CS2-Base + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpplatest + stdclatest + MultiThreaded + true + + + Console + true + RequireAdministrator + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector.vcxproj.filters b/Andromeda-Injector/Andromeda-Injector.vcxproj.filters new file mode 100644 index 0000000..c3aadea --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector.vcxproj.filters @@ -0,0 +1,37 @@ + + + + + {9c07d84f-e39a-4705-8217-1dbb5ae8bdb2} + + + {59b7c3b3-cff8-4adf-854f-183274448de6} + + + + + Andromeda-Injector + + + Andromeda-Injector + + + + + Andromeda-Injector + + + Andromeda-Injector + + + Andromeda-Injector\Common + + + Andromeda-Injector\Common + + + + + + + \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/CInjector.cpp b/Andromeda-Injector/Andromeda-Injector/CInjector.cpp new file mode 100644 index 0000000..88f600b --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/CInjector.cpp @@ -0,0 +1,188 @@ +#include "CInjector.h" + +#include + +auto CInjector::Init() -> bool +{ + GetModuleFileNameA( 0 , szDllFilePath , MAX_PATH ); + GetCurrentDirectoryA( MAX_PATH , szCurrentDir ); + + int len = lstrlenA( szDllFilePath ); + + szDllFilePath[len - 1] = 'l'; + szDllFilePath[len - 2] = 'l'; + szDllFilePath[len - 3] = 'd'; + + if ( GetPrivileges() && FileExist( szDllFilePath ) ) + return true; + + return false; +} + +auto CInjector::GetPrivileges() -> bool +{ + HANDLE hToken = NULL; + LUID luid; + TOKEN_PRIVILEGES tp; + + OpenProcessToken( GetCurrentProcess() , TOKEN_ALL_ACCESS , &hToken ); + + LookupPrivilegeValue( NULL , SE_DEBUG_NAME , &luid ); + + tp.PrivilegeCount = 1; + tp.Privileges[0].Luid = luid; + tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; + + if ( AdjustTokenPrivileges( hToken , FALSE , &tp , sizeof( TOKEN_PRIVILEGES ) , NULL , NULL ) ) + { + CloseHandle( hToken ); + return true; + } + + return false; +} + +auto CInjector::GetProcessIdByName( const char* szProcName )->DWORD +{ + HANDLE hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS , 0 ); + DWORD dwGetProcessID = 0; + + if ( hSnapshot != INVALID_HANDLE_VALUE ) + { + PROCESSENTRY32 ProcEntry32 = { 0 }; + ProcEntry32.dwSize = sizeof( MODULEENTRY32 ); + + if ( Process32First( hSnapshot , &ProcEntry32 ) ) + { + do + { + if ( _stricmp( ProcEntry32.szExeFile , szProcName ) == 0 ) + { + dwGetProcessID = (DWORD)ProcEntry32.th32ProcessID; + break; + } + } while ( Process32Next( hSnapshot , &ProcEntry32 ) ); + } + + CloseHandle( hSnapshot ); + } + + return dwGetProcessID; +} + +auto CInjector::InjectManualMap( const char* szProcessName ) -> bool +{ + bool Result = false; + DWORD PID = 0; + + DEV_LOG( "[info] Wait for start %s\n" , szProcessName ); + + while ( !PID ) + { + PID = GetProcessIdByName( szProcessName ); + Sleep( 100 ); + } + + m_hProcess = OpenProcess( PROCESS_ALL_ACCESS , FALSE , PID ); + + if ( !m_hProcess ) + { + DEV_LOG( "[-] inject code: #1\n" ); + return false; + } + + // Read Dll File + { + auto hFile = CreateFileA( szDllFilePath , GENERIC_READ , 0 , NULL , OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , NULL ); + + if ( !hFile ) + { + DEV_LOG( "[-] inject code: #2\n" ); + CloseHandle( m_hProcess ); + return false; + } + + auto dwLength = GetFileSize( hFile , NULL ); + + if ( dwLength == INVALID_FILE_SIZE || dwLength == 0 ) + { + DEV_LOG( "[-] inject code: #3\n" ); + + CloseHandle( hFile ); + CloseHandle( m_hProcess ); + + return false; + } + + m_pDllFile = (PBYTE)HeapAlloc( GetProcessHeap() , 0 , dwLength ); + + if ( !m_pDllFile ) + { + DEV_LOG( "[-] inject code: #4\n" ); + + CloseHandle( hFile ); + CloseHandle( m_hProcess ); + + return false; + } + + if ( ReadFile( hFile , m_pDllFile , dwLength , &m_DllFileSize , NULL ) == FALSE ) + { + DEV_LOG( "[-] inject code: #5\n" ); + + CloseHandle( hFile ); + CloseHandle( m_hProcess ); + + return false; + } + + if ( dwLength != m_DllFileSize ) + { + DEV_LOG( "[-] inject code: #6\n" ); + + CloseHandle( hFile ); + CloseHandle( m_hProcess ); + + return false; + } + + CloseHandle( hFile ); + } + + DllLoaderData_t LoaderData = { 0 }; + + // Loader Data + memcpy( LoaderData.DllPath , szCurrentDir , MAX_PATH ); + + // Inject To Process + { + blackbone::Process CS2Process; + CS2Process.Attach( m_hProcess ); + + blackbone::CustomArgs_t Args; + + Args.push_back( &LoaderData , sizeof( DllLoaderData_t ) ); + + auto pImage = CS2Process.mmap().MapImage( m_DllFileSize , m_pDllFile , false , blackbone::WipeHeader , nullptr , nullptr , &Args ); + + if ( pImage ) + Result = true; + else + DEV_LOG( "[-] inject: %ws\n" , blackbone::Utils::GetErrorDescription( pImage.status ).c_str() ); + } + + // Free And Close + { + if ( m_pDllFile ) + HeapFree( GetProcessHeap() , 0 , m_pDllFile ); + + CloseHandle( m_hProcess ); + } + + return Result; +} + +auto GetInjector() -> CInjector* +{ + return CInjector::Instance(); +} diff --git a/Andromeda-Injector/Andromeda-Injector/CInjector.h b/Andromeda-Injector/Andromeda-Injector/CInjector.h new file mode 100644 index 0000000..90a17db --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/CInjector.h @@ -0,0 +1,41 @@ +#pragma once + +#include "Main.h" + +struct DllLoaderData_t +{ + char DllPath[MAX_PATH] = { 0 }; +}; + +class CInjector : Singleton +{ +public: + auto Init() -> bool; + +public: + auto InjectManualMap( const char* szProcessName ) -> bool; + +private: + auto GetPrivileges() -> bool; + auto GetProcessIdByName( const char* szName ) -> DWORD; + +private: + bool __forceinline FileExist( const char* szFileName ) + { + return GetFileAttributesA( szFileName ) != INVALID_FILE_ATTRIBUTES; + } + +public: + char szCurrentDir[MAX_PATH] = { 0 }; + char szDllFilePath[MAX_PATH] = { 0 }; + +private: + HANDLE m_hProcess; + PBYTE m_pDllFile = nullptr; + DWORD m_DllFileSize = 0; + +private: + friend auto GetInjector() -> CInjector*; +}; + +auto GetInjector() -> CInjector*; diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Common.h b/Andromeda-Injector/Andromeda-Injector/Common/Common.h new file mode 100644 index 0000000..a99bd09 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Common.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +#include "Singleton.h" + +#pragma warning( disable : 26812 ) diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/ApiBegin.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/ApiBegin.h new file mode 100644 index 0000000..b025e2e --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/ApiBegin.h @@ -0,0 +1,49 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +#if !defined(_ASMJIT_BUILD_H) +#include "build.h" +#endif // !_ASMJIT_BUILD_H + +// ============================================================================ +// [MSVC] +// ============================================================================ + +#if defined(_MSC_VER) +// Disable some warnings we know about +# pragma warning(push) +# pragma warning(disable: 4127) // conditional expression is constant +# pragma warning(disable: 4201) // nameless struct/union +# pragma warning(disable: 4244) // '+=' : conversion from 'int' to 'x', possible + // loss of data +# pragma warning(disable: 4251) // struct needs to have dll-interface to be used + // by clients of struct ... +# pragma warning(disable: 4275) // non dll-interface struct ... used as base for + // dll-interface struct +# pragma warning(disable: 4355) // this used in base member initializer list +# pragma warning(disable: 4480) // specifying underlying type for enum +# pragma warning(disable: 4800) // forcing value to bool 'true' or 'false' + +// Rename symbols. +# if !defined(vsnprintf) +# define ASMJIT_DEFINED_VSNPRINTF +# define vsnprintf _vsnprintf +# endif // !vsnprintf +# if !defined(snprintf) +# define ASMJIT_DEFINED_SNPRINTF +# define snprintf _snprintf +# endif // !snprintf +#endif // _MSC_VER + +// ============================================================================ +// [GNUC] +// ============================================================================ + +#if defined(__GNUC__) && !defined(__clang__) +# if __GNUC__ >= 4 && !defined(__MINGW32__) +# pragma GCC visibility push(hidden) +# endif // __GNUC__ >= 4 +#endif // __GNUC__ diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/ApiEnd.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/ApiEnd.h new file mode 100644 index 0000000..4ec7834 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/ApiEnd.h @@ -0,0 +1,33 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// ============================================================================ +// [MSVC] +// ============================================================================ + +#if defined(_MSC_VER) +// Pop disabled warnings by ApiBegin.h +# pragma warning(pop) +// Rename symbols back. +# if defined(ASMJIT_DEFINED_VSNPRINTF) +# undef ASMJIT_DEFINED_VSNPRINTF +# undef vsnprintf +# endif // ASMJIT_DEFINED_VSNPRINTF +# if defined(ASMJIT_DEFINED_SNPRINTF) +# undef ASMJIT_DEFINED_SNPRINTF +# undef snprintf +# endif // ASMJIT_DEFINED_SNPRINTF +#endif // _MSC_VER + +// ============================================================================ +// [GNUC] +// ============================================================================ + +#if defined(__GNUC__) && !defined(__clang__) +# if __GNUC__ >= 4 && !defined(__MINGW32__) +# pragma GCC visibility pop +# endif // __GNUC__ >= 4 +#endif // __GNUC__ diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/AsmJit.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/AsmJit.h new file mode 100644 index 0000000..9b143d4 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/AsmJit.h @@ -0,0 +1,379 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_ASMJIT_H +#define _ASMJIT_ASMJIT_H + +// ============================================================================ +// [asmjit_mainpage] +// ============================================================================ + +//! @mainpage +//! +//! AsmJit - Complete x86/x64 JIT and Remote Assembler for C++. +//! +//! AsmJit is a complete JIT and remote assembler for C++ language. It can +//! generate native code for x86 and x64 architectures having support for +//! a full instruction set, from legacy MMX to the newest AVX2. It has a +//! type-safe API that allows C++ compiler to do a semantic checks at +//! compile-time even before the assembled code is generated or run. +//! +//! AsmJit is not a virtual machine (VM). It doesn't have functionality to +//! implement VM out of the box; however, it can be be used as a JIT backend +//! for your own VM. The usage of AsmJit is not limited at all; it's suitable +//! for multimedia, VM backends or remote code generation. +//! +//! @section AsmJit_Concepts Code Generation Concepts +//! +//! AsmJit has two completely different code generation concepts. The difference +//! is in how the code is generated. The first concept, also referred as the low +//! level concept, is called 'Assembler' and it's the same as writing RAW +//! assembly by using physical registers directly. In this case AsmJit does only +//! instruction encoding, verification and relocation. +//! +//! The second concept, also referred as the high level concept, is called +//! 'Compiler'. Compiler lets you use virtually unlimited number of registers +//! (called variables) significantly simplifying the code generation process. +//! Compiler allocates these virtual registers to physical registers after the +//! code generation is done. This requires some extra effort - Compiler has to +//! generate information for each node (instruction, function declaration, +//! function call) in the code, perform a variable liveness analysis and +//! translate the code having variables into code having only registers. +//! +//! In addition, Compiler understands functions and function calling conventions. +//! It has been designed in a way that the code generated is always a function +//! having prototype like in a programming language. By having a function +//! prototype the Compiler is able to insert prolog and epilog to a function +//! being generated and it is able to call a function inside a generated one. +//! +//! There is no conclusion on which concept is better. Assembler brings full +//! control on how the code is generated, while Compiler makes the generation +//! more portable. +//! +//! @section AsmJit_Main_CodeGeneration Code Generation +//! +//! - \ref asmjit_base_general "Assembler core" - Operands, intrinsics and low-level assembler. +//! - \ref asmjit_compiler "Compiler" - High level code generation. +//! - \ref asmjit_cpuinfo "Cpu Information" - Get information about host processor. +//! - \ref asmjit_logging "Logging" - Logging and error handling. +//! - \ref AsmJit_MemoryManagement "Memory Management" - Virtual memory management. +//! +//! @section AsmJit_Main_HomePage AsmJit Homepage +//! +//! - https://github.com/kobalicek/asmjit + +// ============================================================================ +// [asmjit_base] +// ============================================================================ + +//! \defgroup asmjit_base AsmJit +//! +//! \brief AsmJit. + +// ============================================================================ +// [asmjit_base_general] +// ============================================================================ + +//! \defgroup asmjit_base_general AsmJit General API +//! \ingroup asmjit_base +//! +//! \brief AsmJit general API. +//! +//! Contains all `asmjit` classes and helper functions that are architecture +//! independent or abstract. Abstract classes are implemented by the backend, +//! for example `Assembler` is implemented by `X86Assembler`. +//! +//! - See `Assembler` for low level code generation documentation. +//! - See `Compiler` for high level code generation documentation. +//! - See `Operand` for operand's overview. +//! +//! Logging and Error Handling +//! -------------------------- +//! +//! AsmJit contains robust interface that can be used to log the generated code +//! and to handle possible errors. Base logging interface is defined in `Logger` +//! class that is abstract and can be overridden. AsmJit contains two loggers +//! that can be used out of the box - `FileLogger` that logs into a pure C +//! `FILE*` stream and `StringLogger` that just concatenates all log messages +//! by using a `StringBuilder` class. +//! +//! The following snippet shows how to setup a logger that logs to `stderr`: +//! +//! ~~~ +//! // `FileLogger` instance. +//! FileLogger logger(stderr); +//! +//! // `Compiler` or any other `CodeGen` interface. +//! host::Compiler c; +//! +//! // use `setLogger` to replace the `CodeGen` logger. +//! c.setLogger(&logger); +//! ~~~ +//! +//! \sa \ref Logger, \ref FileLogger, \ref StringLogger. + +// ============================================================================ +// [asmjit_base_compiler] +// ============================================================================ + +//! \defgroup asmjit_base_compiler AsmJit Compiler +//! \ingroup asmjit_base +//! +//! \brief AsmJit code-tree used by Compiler. +//! +//! AsmJit intermediate code-tree is a double-linked list that is made of nodes +//! that represent assembler instructions, directives, labels and high-level +//! constructs compiler is using to represent functions and function calls. The +//! node list can only be used together with \ref Compiler. +//! +//! TODO + +// ============================================================================ +// [asmjit_base_util] +// ============================================================================ + +//! \defgroup asmjit_base_util AsmJit Utilities +//! \ingroup asmjit_base +//! +//! \brief AsmJit utility classes. +//! +//! AsmJit contains numerous utility classes that are needed by the library +//! itself. The most useful ones have been made public and are now exported. +//! +//! POD Containers +//! -------------- +//! +//! POD containers are used by AsmJit to manage its own data structures. The +//! following classes can be used by AsmJit consumers: +//! +//! - \ref PodVector - Simple growing array-like container for POD data. +//! - \ref StringBuilder - Simple string builder that can append string +//! and integers. +//! +//! Zone Memory Allocator +//! --------------------- +//! +//! Zone memory allocator is an incremental memory allocator that can be used +//! to allocate data of short life-time. It has much better performance +//! characteristics than all other allocators, because the only thing it can do +//! is to increment a pointer and return its previous address. See \ref Zone +//! for more details. +//! +//! CPU Ticks +//! --------- +//! +//! CPU Ticks is a simple helper that can be used to do basic benchmarks. See +//! \ref CpuTicks class for more details. +//! +//! Integer Utilities +//! ----------------- +//! +//! Integer utilities are all implemented by a static class \ref IntUtil. +//! There are utilities for bit manipulation and bit counting, utilities to get +//! an integer minimum / maximum and various other helpers required to perform +//! alignment checks and binary casting from float to integer and vica versa. +//! +//! Vector Utilities +//! ---------------- +//! +//! SIMD code generation often requires to embed constants after each function +//! or a block of functions generated. AsmJit contains classes `Vec64`, +//! `Vec128` and `Vec256` that can be used to prepare data useful when +//! generating SIMD code. +//! +//! X86/X64 code generator contains member functions `dmm`, `dxmm` and `dymm` +//! which can be used to embed 64-bit, 128-bit and 256-bit data structures into +//! machine code (both assembler and compiler are supported). +//! +//! \note Compiler contains a constant pool, which should be used instead of +//! embedding constants manually after the function body. + +// ============================================================================ +// [asmjit_x86] +// ============================================================================ + +//! \defgroup asmjit_x86 X86/X64 +//! +//! \brief X86/X64 module + +// ============================================================================ +// [asmjit_x86_general] +// ============================================================================ + +//! \defgroup asmjit_x86_general X86/X64 General API +//! \ingroup asmjit_x86 +//! +//! \brief X86/X64 general API. +//! +//! X86/X64 Registers +//! ----------------- +//! +//! There are static objects that represents X86 and X64 registers. They can +//! be used directly (like `eax`, `mm`, `xmm`, ...) or created through +//! these functions: +//! +//! - `asmjit::gpb_lo()` - Get Gpb-lo register. +//! - `asmjit::gpb_hi()` - Get Gpb-hi register. +//! - `asmjit::gpw()` - Get Gpw register. +//! - `asmjit::gpd()` - Get Gpd register. +//! - `asmjit::gpq()` - Get Gpq Gp register. +//! - `asmjit::gpz()` - Get Gpd/Gpq register. +//! - `asmjit::fp()` - Get Fp register. +//! - `asmjit::mm()` - Get Mm register. +//! - `asmjit::xmm()` - Get Xmm register. +//! - `asmjit::ymm()` - Get Ymm register. +//! +//! X86/X64 Addressing +//! ------------------ +//! +//! X86 and x64 architectures contains several addressing modes and most ones +//! are possible with AsmJit library. Memory represents are represented by +//! `BaseMem` class. These functions are used to make operands that represents +//! memory addresses: +//! +//! - `asmjit::ptr()` - Address size not specified. +//! - `asmjit::byte_ptr()` - 1 byte. +//! - `asmjit::word_ptr()` - 2 bytes (Gpw size). +//! - `asmjit::dword_ptr()` - 4 bytes (Gpd size). +//! - `asmjit::qword_ptr()` - 8 bytes (Gpq/Mm size). +//! - `asmjit::tword_ptr()` - 10 bytes (FPU). +//! - `asmjit::oword_ptr()` - 16 bytes (Xmm size). +//! - `asmjit::yword_ptr()` - 32 bytes (Ymm size). +//! - `asmjit::zword_ptr()` - 64 bytes (Zmm size). +//! +//! Most useful function to make pointer should be `asmjit::ptr()`. It creates +//! pointer to the target with unspecified size. Unspecified size works in all +//! intrinsics where are used registers (this means that size is specified by +//! register operand or by instruction itself). For example `asmjit::ptr()` +//! can't be used with `Assembler::inc()` instruction. In this case size must +//! be specified and it's also reason to make difference between pointer sizes. +//! +//! Supported are simple address forms `[base + displacement]` and complex +//! address forms `[base + index * scale + displacement]`. +//! +//! X86/X64 Immediates +//! ------------------ +//! +//! Immediate values are constants thats passed directly after instruction +//! opcode. To create such value use `imm()` or `imm_u()` methods to create +//! signed or unsigned immediate value. +//! +//! X86/X64 CPU Information +//! ----------------------- +//! +//! The CPUID instruction can be used to get an exhaustive information about +//! the host X86/X64 processor. AsmJit contains utilities that can get the most +//! important information related to the features supported by the CPU and the +//! host operating system, in addition to host processor name and number of +//! cores. Class `X86CpuInfo` extends `CpuInfo` and provides functionality +//! specific to X86 and X64. +//! +//! By default AsmJit queries the CPU information after the library is loaded +//! and the queried information is reused by all instances of `JitRuntime`. +//! The global instance of `X86CpuInfo` can't be changed, because it will affect +//! the code generation of all `Runtime`s. If there is a need to have a +//! specific CPU information which contains modified features or processor +//! vendor it's possible by creating a new instance of `X86CpuInfo` and setting +//! up its members. `X86CpuUtil::detect` can be used to detect CPU features into +//! an existing `X86CpuInfo` instance - it may become handly if only one property +//! has to be turned on/off. +//! +//! If the high-level interface `X86CpuInfo` offers is not enough there is also +//! `X86CpuUtil::callCpuId` helper that can be used to call CPUID instruction +//! with a given parameters and to consume the output. +//! +//! Cpu detection is important when generating a JIT code that may or may not +//! use certain CPU features. For example there used to be a SSE/SSE2 detection +//! in the past and today there is often AVX/AVX2 detection. +//! +//! The example below shows how to detect SSE2: +//! +//! ~~~ +//! using namespace asmjit; +//! +//! // Get `X86CpuInfo` global instance. +//! const X86CpuInfo* cpuInfo = X86CpuInfo::getHost(); +//! +//! if (cpuInfo->hasFeature(kX86CpuFeatureSSE2)) { +//! // Processor has SSE2. +//! } +//! else if (cpuInfo->hasFeature(kX86CpuFeatureMMX)) { +//! // Processor doesn't have SSE2, but has MMX. +//! } +//! else { +//! // Processor is archaic; it's a wonder AsmJit works here! +//! } +//! ~~~ +//! +//! The next example shows how to call `CPUID` directly: +//! +//! ~~~ +//! using namespace asmjit; +//! +//! // Call cpuid, first two arguments are passed in Eax/Ecx. +//! X86CpuId out; +//! X86CpuUtil::callCpuId(0, 0, &out); +//! +//! // If Eax argument is 0, Ebx, Ecx and Edx registers are filled with a cpu vendor. +//! char cpuVendor[13]; +//! ::memcpy(cpuVendor, &out.ebx, 4); +//! ::memcpy(cpuVendor + 4, &out.edx, 4); +//! ::memcpy(cpuVendor + 8, &out.ecx, 4); +//! vendor[12] = '\0'; +//! +//! // Print a CPU vendor retrieved from CPUID. +//! ::printf("%s", cpuVendor); +//! ~~~ + +// ============================================================================ +// [asmjit_x86_compiler] +// ============================================================================ + +//! \defgroup asmjit_x86_compiler X86/X64 Code-Tree +//! \ingroup asmjit_x86 +//! +//! \brief X86/X64 code-tree and helpers. + +// ============================================================================ +// [asmjit_x86_inst] +// ============================================================================ + +//! \defgroup asmjit_x86_inst X86/X64 Instructions +//! \ingroup asmjit_x86 +//! +//! \brief X86/X64 low-level instruction definitions. + +// ============================================================================ +// [asmjit_x86_util] +// ============================================================================ + +//! \defgroup asmjit_x86_util X86/X64 Utilities +//! \ingroup asmjit_x86 +//! +//! \brief X86/X64 utility classes. + +// ============================================================================ +// [asmjit_contrib] +// ============================================================================ + +//! \defgroup asmjit_contrib Contributions +//! +//! \brief Contributions. + +// [Dependencies - Base] +#include "base.h" + +// [Dependencies - X86/X64] +#if defined(ASMJIT_BUILD_X86) || defined(ASMJIT_BUILD_X64) +#include "x86.h" +#endif // ASMJIT_BUILD_X86 || ASMJIT_BUILD_X64 + +// [Dependencies - Host] +#include "host.h" + +// [Guard] +#endif // _ASMJIT_ASMJIT_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/Build.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/Build.h new file mode 100644 index 0000000..b97a456 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/Build.h @@ -0,0 +1,385 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BUILD_H +#define _ASMJIT_BUILD_H + +// [Include] +#if defined(ASMJIT_CONFIG_FILE) +# include ASMJIT_CONFIG_FILE +#else +# include "./config.h" +#endif // ASMJIT_CONFIG_FILE + +// Turn off deprecation warnings when compiling AsmJit. +#if defined(ASMJIT_EXPORTS) && defined(_MSC_VER) +# if !defined(_CRT_SECURE_NO_DEPRECATE) +# define _CRT_SECURE_NO_DEPRECATE +# endif // !_CRT_SECURE_NO_DEPRECATE +# if !defined(_CRT_SECURE_NO_WARNINGS) +# define _CRT_SECURE_NO_WARNINGS +# endif // !_CRT_SECURE_NO_WARNINGS +#endif // ASMJIT_EXPORTS + +// [Dependencies - C] +#include +#include +#include + +// [Dependencies - C++] +#include + +// ============================================================================ +// [asmjit::build - Sanity] +// ============================================================================ + +#if defined(ASMJIT_DISABLE_NAMES) && !defined(ASMJIT_DISABLE_LOGGER) +# error "ASMJIT_DISABLE_NAMES requires ASMJIT_DISABLE_LOGGER to be defined." +#endif // ASMJIT_DISABLE_NAMES && !ASMJIT_DISABLE_LOGGER + +// ============================================================================ +// [asmjit::build - OS] +// ============================================================================ + +#if defined(_WINDOWS) || defined(__WINDOWS__) || defined(_WIN32) || defined(_WIN64) +# define ASMJIT_OS_WINDOWS +#elif defined(__linux) || defined(__linux__) +# define ASMJIT_OS_POSIX +# define ASMJIT_OS_LINUX +#elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) +# define ASMJIT_OS_POSIX +# define ASMJIT_OS_BSD +#elif defined(__APPLE__) +# define ASMJIT_OS_POSIX +# define ASMJIT_OS_MAC +#else +# warning "AsmJit - Unable to detect host operating system, using ASMJIT_OS_POSIX" +# define ASMJIT_OS_POSIX +#endif + +// ============================================================================ +// [asmjit::build - Arch] +// ============================================================================ + +#if defined(_M_X64 ) || \ + defined(_M_AMD64 ) || \ + defined(_WIN64 ) || \ + defined(__amd64__ ) || \ + defined(__LP64 ) || \ + defined(__x86_64__) +# define ASMJIT_HOST_X64 +# define ASMJIT_HOST_LE +# define ASMJIT_HOST_UNALIGNED_16 +# define ASMJIT_HOST_UNALIGNED_32 +# define ASMJIT_HOST_UNALIGNED_64 +#elif \ + defined(_M_IX86 ) || \ + defined(__INTEL__) || \ + defined(__i386__ ) +# define ASMJIT_HOST_X86 +# define ASMJIT_HOST_LE +# define ASMJIT_HOST_UNALIGNED_16 +# define ASMJIT_HOST_UNALIGNED_32 +# define ASMJIT_HOST_UNALIGNED_64 +#elif \ + defined(_ARM ) || \ + defined(_M_ARM_FP ) || \ + defined(__ARM_NEON__ ) || \ + defined(__arm ) || \ + defined(__arm__ ) || \ + defined(__TARGET_ARCH_ARM ) || \ + defined(__TARGET_ARCH_THUMB) || \ + defined(__thumb__ ) +# define ASMJIT_HOST_ARM +# define ASMJIT_HOST_LE +#else +# warning "AsmJit - Unable to detect host architecture" +#endif + +// ============================================================================ +// [asmjit::build - Build] +// ============================================================================ + +// Build host architecture if no architecture is selected. +#if !defined(ASMJIT_BUILD_HOST) && \ + !defined(ASMJIT_BUILD_X86) && \ + !defined(ASMJIT_BUILD_X64) +# define ASMJIT_BUILD_HOST +#endif + +// Autodetect host architecture if enabled. +#if defined(ASMJIT_BUILD_HOST) +# if defined(ASMJIT_HOST_X86) && !defined(ASMJIT_BUILD_X86) +# define ASMJIT_BUILD_X86 +# endif // ASMJIT_HOST_X86 && !ASMJIT_BUILD_X86 +# if defined(ASMJIT_HOST_X64) && !defined(ASMJIT_BUILD_X64) +# define ASMJIT_BUILD_X64 +# endif // ASMJIT_HOST_X64 && !ASMJIT_BUILD_X64 +#endif // ASMJIT_BUILD_HOST + +// ============================================================================ +// [asmjit::build - Decorators] +// ============================================================================ + +#if defined(ASMJIT_EMBED) && !defined(ASMJIT_STATIC) +# define ASMJIT_STATIC +#endif // ASMJIT_EMBED && !ASMJIT_STATIC + +#if defined(ASMJIT_STATIC) +# define ASMJIT_API +#elif defined(ASMJIT_OS_WINDOWS) +# if (defined(__GNUC__) || defined(__clang__)) && !defined(__MINGW32__) +# if defined(ASMJIT_EXPORTS) +# define ASMJIT_API __attribute__((dllexport)) +# else +# define ASMJIT_API __attribute__((dllimport)) +# endif // ASMJIT_EXPORTS +# else +# if defined(ASMJIT_EXPORTS) +# define ASMJIT_API __declspec(dllexport) +# else +# define ASMJIT_API __declspec(dllimport) +# endif +# endif +#elif defined(__GNUC__) && (__GNUC__ >= 4) +# define ASMJIT_API __attribute__((visibility("default"))) +#endif + +#if !defined(ASMJIT_API) +# define ASMJIT_API +#endif // ASMJIT_API + +// This is basically a workaround. When using MSVC and marking class as DLL +// export everything is exported, which is unwanted since there are many +// inlines which mimic instructions. MSVC automatically exports typeinfo and +// vtable if at least one symbol of that class is exported. However, GCC has +// some strange behavior that even if one or more symbol is exported it doesn't +// export `typeinfo` unless the class itself is marked as "visibility(default)". +#if !defined(ASMJIT_OS_WINDOWS) && (defined(__GNUC__) || defined (__clang__)) +# define ASMJIT_VCLASS ASMJIT_API +#else +# define ASMJIT_VCLASS +#endif + +#if !defined(ASMJIT_VAR) +# define ASMJIT_VAR extern ASMJIT_API +#endif // !ASMJIT_VAR + +#if defined(_MSC_VER) +# define ASMJIT_INLINE __forceinline +#elif defined(__clang__) +# define ASMJIT_INLINE inline __attribute__((always_inline)) __attribute__((visibility("hidden"))) +#elif defined(__GNUC__) +# define ASMJIT_INLINE inline __attribute__((always_inline)) +#else +# define ASMJIT_INLINE inline +#endif + +#if defined(ASMJIT_HOST_X86) +# if defined(__GNUC__) || defined(__clang__) +# define ASMJIT_REGPARM_1 __attribute__((regparm(1))) +# define ASMJIT_REGPARM_2 __attribute__((regparm(2))) +# define ASMJIT_REGPARM_3 __attribute__((regparm(3))) +# define ASMJIT_FASTCALL __attribute__((fastcall)) +# define ASMJIT_STDCALL __attribute__((stdcall)) +# define ASMJIT_CDECL __attribute__((cdecl)) +# else +# define ASMJIT_FASTCALL __fastcall +# define ASMJIT_STDCALL __stdcall +# define ASMJIT_CDECL __cdecl +# endif +#else +# define ASMJIT_FASTCALL +# define ASMJIT_STDCALL +# define ASMJIT_CDECL +#endif // ASMJIT_HOST_X86 + +// ============================================================================ +// [asmjit::build - Enum] +// ============================================================================ + +#if defined(_MSC_VER) +# define ASMJIT_ENUM(_Name_) enum _Name_ : uint32_t +#else +# define ASMJIT_ENUM(_Name_) enum _Name_ +#endif + +// ============================================================================ +// [asmjit::build - Memory Management] +// ============================================================================ + +#if !defined(ASMJIT_ALLOC) && !defined(ASMJIT_REALLOC) && !defined(ASMJIT_FREE) +# define ASMJIT_ALLOC(_Size_) ::malloc(_Size_) +# define ASMJIT_REALLOC(_Ptr_, _Size_) ::realloc(_Ptr_, _Size_) +# define ASMJIT_FREE(_Ptr_) ::free(_Ptr_) +#else +# if !defined(ASMJIT_ALLOC) || !defined(ASMJIT_REALLOC) || !defined(ASMJIT_FREE) +# error "AsmJit - You must redefine ASMJIT_ALLOC, ASMJIT_REALLOC and ASMJIT_FREE." +# endif +#endif // !ASMJIT_ALLOC && !ASMJIT_REALLOC && !ASMJIT_FREE + +// ============================================================================ +// [asmjit::build - _ASMJIT_HOST_INDEX] +// ============================================================================ + +#if defined(ASMJIT_HOST_LE) +# define _ASMJIT_HOST_INDEX(_Total_, _Index_) (_Index_) +#else +# define _ASMJIT_HOST_INDEX(_Total_, _Index_) ((_Total_) - 1 - (_Index_)) +#endif + +// ============================================================================ +// [asmjit::build - BLEND_OFFSET_OF] +// ============================================================================ + +//! Cross-platform solution to get offset of `_Field_` in `_Struct_`. +#define ASMJIT_OFFSET_OF(_Struct_, _Field_) \ + static_cast((intptr_t) ((const uint8_t*) &((const _Struct_*)0x1)->_Field_) - 1) + +// ============================================================================ +// [asmjit::build - ASMJIT_ARRAY_SIZE] +// ============================================================================ + +#define ASMJIT_ARRAY_SIZE(_Array_) \ + (sizeof(_Array_) / sizeof(*_Array_)) + +// ============================================================================ +// [asmjit::build - ASMJIT_DEBUG / ASMJIT_TRACE] +// ============================================================================ + +// If ASMJIT_DEBUG and ASMJIT_RELEASE is not defined ASMJIT_DEBUG will be +// detected using the compiler specific macros. This enables to set the build +// type using IDE. +#if !defined(ASMJIT_DEBUG) && !defined(ASMJIT_RELEASE) +# if defined(_DEBUG) +# define ASMJIT_DEBUG +# endif // _DEBUG +#endif // !ASMJIT_DEBUG && !ASMJIT_RELEASE + +// ASMJIT_TRACE is only used by sources and private headers. It's safe to make +// it unavailable outside of AsmJit. +#if defined(ASMJIT_EXPORTS) +namespace asmjit { static inline int disabledTrace(...) { return 0; } } +# if defined(ASMJIT_TRACE) +# define ASMJIT_TSEC(_Section_) _Section_ +# define ASMJIT_TLOG ::printf(__VA_ARGS__) +# else +# define ASMJIT_TSEC(_Section_) do {} while(0) +# define ASMJIT_TLOG 0 && ::asmjit::disabledTrace +# endif // ASMJIT_TRACE +#endif // ASMJIT_EXPORTS + +// ============================================================================ +// [asmjit::build - ASMJIT_UNUSED] +// ============================================================================ + +#if !defined(ASMJIT_UNUSED) +# define ASMJIT_UNUSED(_Var_) ((void)_Var_) +#endif // ASMJIT_UNUSED + +// ============================================================================ +// [asmjit::build - ASMJIT_NOP] +// ============================================================================ + +#if !defined(ASMJIT_NOP) +# define ASMJIT_NOP() ((void)0) +#endif // ASMJIT_NOP + +// ============================================================================ +// [asmjit::build - ASMJIT_NO_COPY] +// ============================================================================ + +#define ASMJIT_NO_COPY(_Type_) \ +private: \ + ASMJIT_INLINE _Type_(const _Type_& other); \ + ASMJIT_INLINE _Type_& operator=(const _Type_& other); \ +public: + +// ============================================================================ +// [asmjit::build - StdInt] +// ============================================================================ + +#if defined(__MINGW32__) +# include +#endif // __MINGW32__ + +#if defined(_MSC_VER) && (_MSC_VER < 1600) +# if !defined(ASMJIT_SUPRESS_STD_TYPES) +# if (_MSC_VER < 1300) +typedef signed char int8_t; +typedef signed short int16_t; +typedef signed int int32_t; +typedef signed __int64 int64_t; +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +typedef unsigned __int64 uint64_t; +# else +typedef signed __int8 int8_t; +typedef signed __int16 int16_t; +typedef signed __int32 int32_t; +typedef signed __int64 int64_t; +typedef unsigned __int8 uint8_t; +typedef unsigned __int16 uint16_t; +typedef unsigned __int32 uint32_t; +typedef unsigned __int64 uint64_t; +# endif // _MSC_VER +# endif // ASMJIT_SUPRESS_STD_TYPES +#else +# include +# include +#endif + +#if defined(_MSC_VER) +# define ASMJIT_INT64_C(_Num_) _Num_##i64 +# define ASMJIT_UINT64_C(_Num_) _Num_##ui64 +#else +# define ASMJIT_INT64_C(_Num_) _Num_##LL +# define ASMJIT_UINT64_C(_Num_) _Num_##ULL +#endif + +// ============================================================================ +// [asmjit::build - Windows] +// ============================================================================ + +#if defined(ASMJIT_OS_WINDOWS) && !defined(ASMJIT_SUPRESS_WINDOWS_H) + +# if !defined(WIN32_LEAN_AND_MEAN) +# define WIN32_LEAN_AND_MEAN +# define ASMJIT_UNDEF_WIN32_LEAN_AND_MEAN +# endif // !WIN32_LEAN_AND_MEAN + +# if !defined(NOMINMAX) +# define NOMINMAX +# define ASMJIT_UNDEF_NOMINMAX +# endif // !NOMINMAX + +# include + +# if defined(ASMJIT_UNDEF_NOMINMAX) +# undef NOMINMAX +# undef ASMJIT_UNDEF_NOMINMAX +# endif + +# if defined(ASMJIT_UNDEF_WIN32_LEAN_AND_MEAN) +# undef WIN32_LEAN_AND_MEAN +# undef ASMJIT_UNDEF_WIN32_LEAN_AND_MEAN +# endif + +#endif // ASMJIT_OS_WINDOWS && !ASMJIT_SUPRESS_WINDOWS_H + +// ============================================================================ +// [asmjit::build - Test] +// ============================================================================ + +// Include a unit testing package if this is a `asmjit_test` build. +#if defined(ASMJIT_TEST) +#include "./test/broken.h" +#endif // ASMJIT_TEST + +// [Guard] +#endif // _ASMJIT_BUILD_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/Config.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/Config.h new file mode 100644 index 0000000..4041c11 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/Config.h @@ -0,0 +1,65 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_CONFIG_H +#define _ASMJIT_CONFIG_H + +// This file can be used to modify built-in features of AsmJit. AsmJit is by +// default compiled only for host processor to enable JIT compilation. Both +// Assembler and Compiler code generators are compiled by default. +// +// ASMJIT_BUILD_... flags can be defined to build additional backends that can +// be used for remote code generation. +// +// ASMJIT_DISABLE_... flags can be defined to disable standard features. These +// are handy especially when building asmjit statically and some features are +// not needed or unwanted (like Compiler). + +#ifdef _DEBUG +#define ASMJIT_DEBUG // Define to enable debug-mode. +#else +#define ASMJIT_RELEASE // Define to enable release-mode. +#endif + +// ============================================================================ +// [AsmJit - Build-Type] +// ============================================================================ + +#ifdef BLACKBONE_STATIC +#define ASMJIT_STATIC +#elif BLACKBONE_EXPORTS +#define ASMJIT_EXPORTS +#endif + +// #define ASMJIT_EMBED // Asmjit is embedded (implies ASMJIT_STATIC). +// #define ASMJIT_STATIC // Define to enable static-library build. + +// ============================================================================ +// [AsmJit - Build-Mode] +// ============================================================================ + +// #define ASMJIT_DEBUG // Define to enable debug-mode. +// #define ASMJIT_RELEASE // Define to enable release-mode. +// #define ASMJIT_TRACE // Define to enable tracing. + +// ============================================================================ +// [AsmJit - Features] +// ============================================================================ + +// If none of these is defined AsmJit will select host architecture by default. + #define ASMJIT_BUILD_X86 // Define to enable x86 instruction set (32-bit). + #define ASMJIT_BUILD_X64 // Define to enable x64 instruction set (64-bit). +// #define ASMJIT_BUILD_HOST // Define to enable host instruction set. + +// AsmJit features are enabled by default. +#define ASMJIT_DISABLE_COMPILER // Disable Compiler (completely). +#define ASMJIT_DISABLE_LOGGER // Disable Logger (completely). +#define ASMJIT_DISABLE_NAMES // Disable everything that uses strings + // (instruction names, error names, ...). + +// [Guard] +#endif // _ASMJIT_CONFIG_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base.h new file mode 100644 index 0000000..47e1bfe --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base.h @@ -0,0 +1,34 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_H +#define _ASMJIT_BASE_H + +// [Dependencies - AsmJit] +#include "build.h" + +#include "base/assembler.h" +#include "base/codegen.h" +#include "base/compiler.h" +#include "base/constpool.h" +#include "base/containers.h" +#include "base/cpuinfo.h" +#include "base/cputicks.h" +#include "base/error.h" +#include "base/globals.h" +#include "base/intutil.h" +#include "base/lock.h" +#include "base/logger.h" +#include "base/operand.h" +#include "base/runtime.h" +#include "base/string.h" +#include "base/vectypes.h" +#include "base/vmem.h" +#include "base/zone.h" + +// [Guard] +#endif // _ASMJIT_BASE_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/assembler.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/assembler.h new file mode 100644 index 0000000..bfd8c53 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/assembler.h @@ -0,0 +1,542 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_ASSEMBLER_H +#define _ASMJIT_BASE_ASSEMBLER_H + +// [Dependencies - AsmJit] +#include "../base/codegen.h" +#include "../base/containers.h" +#include "../base/error.h" +#include "../base/logger.h" +#include "../base/operand.h" +#include "../base/runtime.h" +#include "../base/zone.h" + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_general +//! \{ + +// ============================================================================ +// [asmjit::kInstId] +// ============================================================================ + +//! Instruction codes (stub). +ASMJIT_ENUM(kInstId) { + //! No instruction. + kInstIdNone = 0 +}; + +// ============================================================================ +// [asmjit::kInstOptions] +// ============================================================================ + +//! Instruction options (stub). +ASMJIT_ENUM(kInstOptions) { + //! No instruction options. + kInstOptionNone = 0x00000000, + + //! Emit short form of the instruction. + //! + //! X86/X64: + //! + //! Short form is mostly related to jmp and jcc instructions, but can be used + //! by other instructions supporting 8-bit or 32-bit immediates. This option + //! can be dangerous if the short jmp/jcc is required, but not encodable due + //! to large displacement, in such case an error happens and the whole + //! assembler/compiler stream is unusable. + kInstOptionShortForm = 0x00000001, + + //! Emit long form of the instruction. + //! + //! X86/X64: + //! + //! Long form is mosrlt related to jmp and jcc instructions, but like the + //! `kInstOptionShortForm` option it can be used by other instructions + //! supporting both 8-bit and 32-bit immediates. + kInstOptionLongForm = 0x00000002, + + //! Condition is likely to be taken. + kInstOptionTaken = 0x00000004, + + //! Condition is unlikely to be taken. + kInstOptionNotTaken = 0x00000008 +}; + +// ============================================================================ +// [asmjit::LabelLink] +// ============================================================================ + +//! \internal +//! +//! Data structure used to link linked-labels. +struct LabelLink { + //! Previous link. + LabelLink* prev; + //! Offset. + intptr_t offset; + //! Inlined displacement. + intptr_t displacement; + //! RelocId if link must be absolute when relocated. + intptr_t relocId; +}; + +// ============================================================================ +// [asmjit::LabelData] +// ============================================================================ + +//! \internal +//! +//! Label data. +struct LabelData { + //! Label offset. + intptr_t offset; + //! Label links chain. + LabelLink* links; +}; + +// ============================================================================ +// [asmjit::RelocData] +// ============================================================================ + +//! \internal +//! +//! Code relocation data (relative vs absolute addresses). +//! +//! X86/X64: +//! +//! X86 architecture uses 32-bit absolute addressing model by memory operands, +//! but 64-bit mode uses relative addressing model (RIP + displacement). In +//! code we are always using relative addressing model for referencing labels +//! and embedded data. In 32-bit mode we must patch all references to absolute +//! address before we can call generated function. +struct RelocData { + //! Type of relocation. + uint32_t type; + //! Size of relocation (4 or 8 bytes). + uint32_t size; + + //! Offset from code begin address. + Ptr from; + + //! Relative displacement from code begin address (not to `offset`) or + //! absolute address. + Ptr data; +}; + +// ============================================================================ +// [asmjit::Assembler] +// ============================================================================ + +//! Base assembler. +//! +//! This class implements the base interface to an assembler. The architecture +//! specific API is implemented by backends. +//! +//! \sa Compiler. +struct ASMJIT_VCLASS Assembler : public CodeGen { + ASMJIT_NO_COPY(Assembler) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `Assembler` instance. + ASMJIT_API Assembler(Runtime* runtime); + //! Destroy the `Assembler` instance. + ASMJIT_API virtual ~Assembler(); + + // -------------------------------------------------------------------------- + // [Reset] + // -------------------------------------------------------------------------- + + //! Reset the assembler. + //! + //! If `releaseMemory` is true all buffers will be released to the system. + ASMJIT_API void reset(bool releaseMemory = false); + + // -------------------------------------------------------------------------- + // [Buffer] + // -------------------------------------------------------------------------- + + //! Get capacity of the code buffer. + ASMJIT_INLINE size_t getCapacity() const { + return (size_t)(_end - _buffer); + } + + //! Get the number of remaining bytes (space between cursor and the end of + //! the buffer). + ASMJIT_INLINE size_t getRemainingSpace() const { + return (size_t)(_end - _cursor); + } + + //! Get buffer. + ASMJIT_INLINE uint8_t* getBuffer() const { + return _buffer; + } + + //! Get the end of the buffer (points to the first byte that is outside). + ASMJIT_INLINE uint8_t* getEnd() const { + return _end; + } + + //! Get the current position in the buffer. + ASMJIT_INLINE uint8_t* getCursor() const { + return _cursor; + } + + //! Set the current position in the buffer. + ASMJIT_INLINE void setCursor(uint8_t* cursor) { + ASMJIT_ASSERT(cursor >= _buffer && cursor <= _end); + _cursor = cursor; + } + + //! Get the current offset in the buffer. + ASMJIT_INLINE size_t getOffset() const { + return (size_t)(_cursor - _buffer); + } + + //! Set the current offset in the buffer to `offset` and get the previous + //! offset value. + ASMJIT_INLINE size_t setOffset(size_t offset) { + ASMJIT_ASSERT(offset < getCapacity()); + + size_t oldOffset = (size_t)(_cursor - _buffer); + _cursor = _buffer + offset; + return oldOffset; + } + + //! Grow the internal buffer. + //! + //! The internal buffer will grow at least by `n` bytes so `n` bytes can be + //! added to it. If `n` is zero or `getOffset() + n` is not greater than the + //! current capacity of the buffer this function does nothing. + ASMJIT_API Error _grow(size_t n); + + //! Reserve the internal buffer to at least `n` bytes. + ASMJIT_API Error _reserve(size_t n); + + //! Get BYTE at position `pos`. + ASMJIT_INLINE uint8_t getByteAt(size_t pos) const { + ASMJIT_ASSERT(pos + 1 <= (size_t)(_end - _buffer)); + return *reinterpret_cast(_buffer + pos); + } + + //! Get WORD at position `pos`. + ASMJIT_INLINE uint16_t getWordAt(size_t pos) const { + ASMJIT_ASSERT(pos + 2 <= (size_t)(_end - _buffer)); + return *reinterpret_cast(_buffer + pos); + } + + //! Get DWORD at position `pos`. + ASMJIT_INLINE uint32_t getDWordAt(size_t pos) const { + ASMJIT_ASSERT(pos + 4 <= (size_t)(_end - _buffer)); + return *reinterpret_cast(_buffer + pos); + } + + //! Get QWORD at position `pos`. + ASMJIT_INLINE uint64_t getQWordAt(size_t pos) const { + ASMJIT_ASSERT(pos + 8 <= (size_t)(_end - _buffer)); + return *reinterpret_cast(_buffer + pos); + } + + //! Get int32_t at position `pos`. + ASMJIT_INLINE int32_t getInt32At(size_t pos) const { + ASMJIT_ASSERT(pos + 4 <= (size_t)(_end - _buffer)); + return *reinterpret_cast(_buffer + pos); + } + + //! Get uint32_t at position `pos`. + ASMJIT_INLINE uint32_t getUInt32At(size_t pos) const { + ASMJIT_ASSERT(pos + 4 <= (size_t)(_end - _buffer)); + return *reinterpret_cast(_buffer + pos); + } + + //! Set BYTE at position `pos`. + ASMJIT_INLINE void setByteAt(size_t pos, uint8_t x) { + ASMJIT_ASSERT(pos + 1 <= (size_t)(_end - _buffer)); + *reinterpret_cast(_buffer + pos) = x; + } + + //! Set WORD at position `pos`. + ASMJIT_INLINE void setWordAt(size_t pos, uint16_t x) { + ASMJIT_ASSERT(pos + 2 <= (size_t)(_end - _buffer)); + *reinterpret_cast(_buffer + pos) = x; + } + + //! Set DWORD at position `pos`. + ASMJIT_INLINE void setDWordAt(size_t pos, uint32_t x) { + ASMJIT_ASSERT(pos + 4 <= (size_t)(_end - _buffer)); + *reinterpret_cast(_buffer + pos) = x; + } + + //! Set QWORD at position `pos`. + ASMJIT_INLINE void setQWordAt(size_t pos, uint64_t x) { + ASMJIT_ASSERT(pos + 8 <= (size_t)(_end - _buffer)); + *reinterpret_cast(_buffer + pos) = x; + } + + //! Set int32_t at position `pos`. + ASMJIT_INLINE void setInt32At(size_t pos, int32_t x) { + ASMJIT_ASSERT(pos + 4 <= (size_t)(_end - _buffer)); + *reinterpret_cast(_buffer + pos) = x; + } + + //! Set uint32_t at position `pos`. + ASMJIT_INLINE void setUInt32At(size_t pos, uint32_t x) { + ASMJIT_ASSERT(pos + 4 <= (size_t)(_end - _buffer)); + *reinterpret_cast(_buffer + pos) = x; + } + + // -------------------------------------------------------------------------- + // [GetCodeSize] + // -------------------------------------------------------------------------- + + //! Get current offset in buffer, same as `getOffset() + getTramplineSize()`. + ASMJIT_INLINE size_t getCodeSize() const { + return getOffset() + getTrampolineSize(); + } + + // -------------------------------------------------------------------------- + // [GetTrampolineSize] + // -------------------------------------------------------------------------- + + //! Get size of all possible trampolines. + //! + //! Trampolines are needed to successfuly generate relative jumps to absolute + //! addresses. This value is only non-zero if jmp of call instructions were + //! used with immediate operand (this means jumping or calling an absolute + //! address directly). + ASMJIT_INLINE size_t getTrampolineSize() const { + return _trampolineSize; + } + + // -------------------------------------------------------------------------- + // [Label] + // -------------------------------------------------------------------------- + + //! Get number of labels created. + ASMJIT_INLINE size_t getLabelsCount() const { + return _labelList.getLength(); + } + + //! Get whether the `label` is valid (created by the assembler). + ASMJIT_INLINE bool isLabelValid(const Label& label) const { + return isLabelValid(label.getId()); + } + + //! \overload + ASMJIT_INLINE bool isLabelValid(uint32_t id) const { + return static_cast(id) < _labelList.getLength(); + } + + //! Get whether the `label` is bound. + //! + //! \note It's an error to pass label that is not valid. Check the validity + //! of the label by using `isLabelValid()` method before the bound check if + //! you are not sure about its validity, otherwise you may hit an assertion + //! failure in debug mode, and undefined behavior in release mode. + ASMJIT_INLINE bool isLabelBound(const Label& label) const { + return isLabelBound(label.getId()); + } + + //! \overload + ASMJIT_INLINE bool isLabelBound(uint32_t id) const { + ASMJIT_ASSERT(isLabelValid(id)); + + return _labelList[id].offset != -1; + } + + //! Get `label` offset or -1 if the label is not yet bound. + ASMJIT_INLINE intptr_t getLabelOffset(const Label& label) const { + return getLabelOffset(label.getId()); + } + + //! \overload + ASMJIT_INLINE intptr_t getLabelOffset(uint32_t id) const { + ASMJIT_ASSERT(isLabelValid(id)); + return _labelList[id].offset; + } + + //! Get `LabelData` by `label`. + ASMJIT_INLINE LabelData* getLabelData(const Label& label) const { + return getLabelData(label.getId()); + } + + //! \overload + ASMJIT_INLINE LabelData* getLabelData(uint32_t id) const { + ASMJIT_ASSERT(isLabelValid(id)); + return const_cast(&_labelList[id]); + } + + //! \internal + //! + //! Register labels for other code generator, i.e. `Compiler`. + ASMJIT_API Error _registerIndexedLabels(size_t index); + + //! \internal + //! + //! Create and initialize a new `Label`. + ASMJIT_API Error _newLabel(Label* dst); + + //! \internal + //! + //! New LabelLink instance. + ASMJIT_API LabelLink* _newLabelLink(); + + //! Create and return a new `Label`. + ASMJIT_INLINE Label newLabel() { + Label result(NoInit); + _newLabel(&result); + return result; + } + + //! Bind label to the current offset. + //! + //! \note Label can be bound only once! + ASMJIT_API virtual Error bind(const Label& label); + + // -------------------------------------------------------------------------- + // [Embed] + // -------------------------------------------------------------------------- + + //! Embed data into the code buffer. + ASMJIT_API virtual Error embed(const void* data, uint32_t size); + + // -------------------------------------------------------------------------- + // [Align] + // -------------------------------------------------------------------------- + + //! Align target buffer to `m` bytes. + //! + //! Typical usage of this is to align labels at start of the inner loops. + //! + //! Inserts `nop()` instructions or CPU optimized NOPs. + virtual Error align(uint32_t mode, uint32_t offset) = 0; + + // -------------------------------------------------------------------------- + // [Reloc] + // -------------------------------------------------------------------------- + + //! Relocate the code to `baseAddress` and copy to `dst`. + //! + //! \param dst Contains the location where the relocated code should be + //! copied. The pointer can be address returned by virtual memory allocator + //! or any other address that has sufficient space. + //! + //! \param base Base address used for relocation. The `JitRuntime` always + //! sets the `base` address to be the same as `dst`, but other runtimes, for + //! example `StaticRuntime`, do not have to follow this rule. + //! + //! \retval The number bytes actually used. If the code generator reserved + //! space for possible trampolines, but didn't use it, the number of bytes + //! used can actually be less than the expected worst case. Virtual memory + //! allocator can shrink the memory allocated first time. + //! + //! A given buffer will be overwritten, to get the number of bytes required, + //! use `getCodeSize()`. + ASMJIT_API size_t relocCode(void* dst, Ptr baseAddress = kNoBaseAddress) const; + + //! \internal + //! + //! Reloc code. + virtual size_t _relocCode(void* dst, Ptr baseAddress) const = 0; + + // -------------------------------------------------------------------------- + // [Make] + // -------------------------------------------------------------------------- + + ASMJIT_API virtual void* make(); + + // -------------------------------------------------------------------------- + // [Emit] + // -------------------------------------------------------------------------- + + //! Emit an instruction. + ASMJIT_API Error emit(uint32_t code); + //! \overload + ASMJIT_API Error emit(uint32_t code, const Operand& o0); + //! \overload + ASMJIT_API Error emit(uint32_t code, const Operand& o0, const Operand& o1); + //! \overload + ASMJIT_API Error emit(uint32_t code, const Operand& o0, const Operand& o1, const Operand& o2); + //! \overload + ASMJIT_INLINE Error emit(uint32_t code, const Operand& o0, const Operand& o1, const Operand& o2, const Operand& o3) { + return _emit(code, o0, o1, o2, o3); + } + + //! Emit an instruction with integer immediate operand. + ASMJIT_API Error emit(uint32_t code, int o0); + //! \overload + ASMJIT_API Error emit(uint32_t code, uint64_t o0); + //! \overload + ASMJIT_API Error emit(uint32_t code, const Operand& o0, int o1); + //! \overload + ASMJIT_API Error emit(uint32_t code, const Operand& o0, uint64_t o1); + //! \overload + ASMJIT_API Error emit(uint32_t code, const Operand& o0, const Operand& o1, int o2); + //! \overload + ASMJIT_API Error emit(uint32_t code, const Operand& o0, const Operand& o1, uint64_t o2); + //! \overload + ASMJIT_API Error emit(uint32_t code, const Operand& o0, const Operand& o1, const Operand& o2, int o3); + //! \overload + ASMJIT_API Error emit(uint32_t code, const Operand& o0, const Operand& o1, const Operand& o2, uint64_t o3); + + //! Emit an instruction (virtual). + virtual Error _emit(uint32_t code, const Operand& o0, const Operand& o1, const Operand& o2, const Operand& o3) = 0; + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Buffer where the code is emitted (either live or temporary). + //! + //! This is actually the base pointer of the buffer, to get the current + //! position (cursor) look at the `_cursor` member. + uint8_t* _buffer; + //! The end of the buffer (points to the first invalid byte). + //! + //! The end of the buffer is calculated as _buffer + size. + uint8_t* _end; + //! The current position in code `_buffer`. + uint8_t* _cursor; + + //! Size of possible trampolines. + uint32_t _trampolineSize; + + //! Inline comment that will be logged by the next instruction and set to NULL. + const char* _comment; + //! Unused `LabelLink` structures pool. + LabelLink* _unusedLinks; + + //! LabelData list. + PodVector _labelList; + //! RelocData list. + PodVector _relocList; +}; + +//! \} + +// ============================================================================ +// [Defined-Later] +// ============================================================================ + +ASMJIT_INLINE Label::Label(Assembler& a) : Operand(NoInit) { + a._newLabel(this); +} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_ASSEMBLER_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/codegen.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/codegen.h new file mode 100644 index 0000000..551b84b --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/codegen.h @@ -0,0 +1,337 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_CODEGEN_H +#define _ASMJIT_BASE_CODEGEN_H + +// [Dependencies - AsmJit] +#include "../base/error.h" +#include "../base/logger.h" +#include "../base/runtime.h" +#include "../base/zone.h" + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_general +//! \{ + +// ============================================================================ +// [asmjit::kCodeGen] +// ============================================================================ + +//! Features of \ref CodeGen. +ASMJIT_ENUM(kCodeGen) { + //! Emit optimized code-alignment sequences (`Assembler` and `Compiler`). + //! + //! Default `true`. + //! + //! X86/X64 + //! ------- + //! + //! Default align sequence used by X86/X64 architecture is one-byte 0x90 + //! opcode that is mostly shown by disassemblers as nop. However there are + //! more optimized align sequences for 2-11 bytes that may execute faster. + //! If this feature is enabled asmjit will generate specialized sequences + //! for alignment between 1 to 11 bytes. Also when `X86Compiler` is used, + //! it can add REX prefixes into the code to make some instructions greater + //! so no alignment sequence is needed. + kCodeGenOptimizedAlign = 0, + + //! Emit jump-prediction hints (`Assembler` and `Compiler`). + //! + //! Default `false`. + //! + //! X86/X64 + //! ------- + //! + //! Jump prediction is usually based on the direction of the jump. If the + //! jump is backward it is usually predicted as taken; and if the jump is + //! forward it is usually predicted as not-taken. The reason is that loops + //! generally use backward jumps and conditions usually use forward jumps. + //! However this behavior can be overridden by using instruction prefixes. + //! If this option is enabled these hints will be emitted. + //! + //! This feature is disabled by default, because the only processor that + //! used to take into consideration prediction hints was P4. Newer processors + //! implement heuristics for branch prediction that ignores any static hints. + kCodeGenPredictedJumps = 1, + + //! Schedule instructions so they can be executed faster (`Compiler` only). + //! + //! Default `false` - has to be explicitly enabled as the scheduler needs + //! some time to run. + //! + //! X86/X64 + //! ------- + //! + //! If scheduling is enabled AsmJit will try to reorder instructions to + //! minimize dependency chain. Scheduler always runs after the registers are + //! allocated so it doesn't change count of register allocs/spills. + //! + //! This feature is highly experimental and untested. + kCodeGenEnableScheduler = 2 +}; + +// ============================================================================ +// [asmjit::kAlignMode] +// ============================================================================ + +//! Code aligning mode. +ASMJIT_ENUM(kAlignMode) { + //! Align by emitting a sequence that can be executed (code). + kAlignCode = 0, + //! Align by emitting sequence that shouldn't be executed (data). + kAlignData = 1 +}; + +// ============================================================================ +// [asmjit::kRelocMode] +// ============================================================================ + +//! Relocation mode. +ASMJIT_ENUM(kRelocMode) { + //! Relocate an absolute address to an absolute address. + kRelocAbsToAbs = 0, + //! Relocate a relative address to an absolute address. + kRelocRelToAbs = 1, + //! Relocate an absolute address to a relative address. + kRelocAbsToRel = 2, + //! Relocate an absolute address to a relative address or use trampoline. + kRelocTrampoline = 3 +}; + +// ============================================================================ +// [asmjit::CodeGen] +// ============================================================================ + +//! Abstract class defining basics of \ref Assembler and \ref Compiler. +struct ASMJIT_VCLASS CodeGen { + ASMJIT_NO_COPY(CodeGen) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `CodeGen` instance. + ASMJIT_API CodeGen(Runtime* runtime); + //! Destroy the `CodeGen` instance. + ASMJIT_API virtual ~CodeGen(); + + // -------------------------------------------------------------------------- + // [Runtime] + // -------------------------------------------------------------------------- + + //! Get runtime. + ASMJIT_INLINE Runtime* getRuntime() const { + return _runtime; + } + + // -------------------------------------------------------------------------- + // [Logger] + // -------------------------------------------------------------------------- + +#if !defined(ASMJIT_DISABLE_LOGGER) + //! Get whether the code generator has a logger. + ASMJIT_INLINE bool hasLogger() const { + return _logger != NULL; + } + + //! Get logger. + ASMJIT_INLINE Logger* getLogger() const { + return _logger; + } + + //! Set logger to `logger`. + ASMJIT_API Error setLogger(Logger* logger); +#endif // !ASMJIT_DISABLE_LOGGER + + // -------------------------------------------------------------------------- + // [Arch] + // -------------------------------------------------------------------------- + + //! Get target architecture. + ASMJIT_INLINE uint32_t getArch() const { + return _arch; + } + + //! Get default register size (4 or 8 bytes). + ASMJIT_INLINE uint32_t getRegSize() const { + return _regSize; + } + + // -------------------------------------------------------------------------- + // [BaseAddress] + // -------------------------------------------------------------------------- + + //! Get whether the code-generator has a base address. + //! + //! \sa \ref getBaseAddress() + ASMJIT_INLINE bool hasBaseAddress() const { + return _baseAddress != kNoBaseAddress; + } + + //! Get the base address. + ASMJIT_INLINE Ptr getBaseAddress() const { + return _baseAddress; + } + + //! Set the base address to `baseAddress`. + ASMJIT_INLINE void setBaseAddress(Ptr baseAddress) { + _baseAddress = baseAddress; + } + + //! Reset the base address. + ASMJIT_INLINE void resetBaseAddress() { + setBaseAddress(kNoBaseAddress); + } + + // -------------------------------------------------------------------------- + // [LastError / ErrorHandler] + // -------------------------------------------------------------------------- + + //! Get last error code. + ASMJIT_INLINE Error getError() const { + return _error; + } + + //! Set last error code and propagate it through the error handler. + ASMJIT_API Error setError(Error error, const char* message = NULL); + + //! Clear the last error code. + ASMJIT_INLINE void resetError() { + _error = kErrorOk; + } + + //! Get error handler. + ASMJIT_INLINE ErrorHandler* getErrorHandler() const { + return _errorHandler; + } + + //! Set error handler. + ASMJIT_API Error setErrorHandler(ErrorHandler* handler); + + //! Clear error handler. + ASMJIT_INLINE Error resetErrorHandler() { + return setErrorHandler(NULL); + } + + // -------------------------------------------------------------------------- + // [Code-Generation Features] + // -------------------------------------------------------------------------- + + //! Get code-generator `feature`. + ASMJIT_INLINE bool hasFeature(uint32_t feature) const { + ASMJIT_ASSERT(feature < 32); + + return (_features & (1 << feature)) != 0; + } + + //! Set code-generator `feature` to `value`. + ASMJIT_INLINE void setFeature(uint32_t feature, bool value) { + ASMJIT_ASSERT(feature < 32); + + feature = static_cast(value) << feature; + _features = (_features & ~feature) | feature; + } + + //! Get code-generator features. + ASMJIT_INLINE uint32_t getFeatures() const { + return _features; + } + + //! Set code-generator features. + ASMJIT_INLINE void setFeatures(uint32_t features) { + _features = features; + } + + // -------------------------------------------------------------------------- + // [Instruction Options] + // -------------------------------------------------------------------------- + + //! Get options of the next instruction. + ASMJIT_INLINE uint32_t getInstOptions() const { + return _instOptions; + } + + //! Get options of the next instruction and reset them. + ASMJIT_INLINE uint32_t getInstOptionsAndReset() { + uint32_t instOptions = _instOptions; + _instOptions = 0; + return instOptions; + }; + + //! Set options of the next instruction. + ASMJIT_INLINE void setInstOptions(uint32_t instOptions) { + _instOptions = instOptions; + } + + // -------------------------------------------------------------------------- + // [Make] + // -------------------------------------------------------------------------- + + //! Make is a convenience method to make and relocate the current code and + //! add it to the associated `Runtime`. + //! + //! What is needed is only to cast the returned pointer to your function type + //! and then use it. If there was an error during `make()` `NULL` is returned + //! and the last error code can be obtained by calling `getError()`. + virtual void* make() = 0; + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Target runtime. + Runtime* _runtime; + +#if !defined(ASMJIT_DISABLE_LOGGER) + //! Logger. + Logger* _logger; +#else + //! \internal + //! + //! Makes libraries built with or without logging support binary compatible. + void* _logger; +#endif // ASMJIT_DISABLE_LOGGER + + //! Error handler, called by \ref setError(). + ErrorHandler* _errorHandler; + + //! Base address (-1 if unknown/not used). + Ptr _baseAddress; + + //! Target architecture ID. + uint8_t _arch; + //! Target architecture GP register size in bytes (4 or 8). + uint8_t _regSize; + //! \internal + uint16_t _reserved; + + //! Code-Generation features, used by \ref hasFeature() and \ref setFeature(). + uint32_t _features; + //! Options affecting the next instruction. + uint32_t _instOptions; + + //! Last error code. + uint32_t _error; + + //! Base zone. + Zone _baseZone; +}; + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_CODEGEN_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/compiler.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/compiler.h new file mode 100644 index 0000000..9d3a533 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/compiler.h @@ -0,0 +1,3159 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_COMPILER_H +#define _ASMJIT_BASE_COMPILER_H + +#include "../build.h" +#if !defined(ASMJIT_DISABLE_COMPILER) + +// [Dependencies - AsmJit] +#include "../base/assembler.h" +#include "../base/codegen.h" +#include "../base/constpool.h" +#include "../base/containers.h" +#include "../base/error.h" +#include "../base/intutil.h" +#include "../base/operand.h" +#include "../base/zone.h" + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +// ============================================================================ +// [Forward Declarations] +// ============================================================================ + +struct Compiler; + +struct VarAttr; +struct VarData; +struct VarMap; +struct VarState; + +struct Node; +struct EndNode; +struct InstNode; +struct JumpNode; + +// ============================================================================ +// [asmjit::kConstScope] +// ============================================================================ + +//! \addtogroup asmjit_base_compiler +//! \{ + +//! Scope of the constant. +ASMJIT_ENUM(kConstScope) { + //! Local constant, always embedded right after the current function. + kConstScopeLocal = 0, + //! Global constant, embedded at the end of the currently compiled code. + kConstScopeGlobal = 1 +}; + +// ============================================================================ +// [asmjit::kVarType] +// ============================================================================ + +ASMJIT_ENUM(kVarType) { + //! Variable is 8-bit signed integer. + kVarTypeInt8 = 0, + //! Variable is 8-bit unsigned integer. + kVarTypeUInt8 = 1, + //! Variable is 16-bit signed integer. + kVarTypeInt16 = 2, + //! Variable is 16-bit unsigned integer. + kVarTypeUInt16 = 3, + //! Variable is 32-bit signed integer. + kVarTypeInt32 = 4, + //! Variable is 32-bit unsigned integer. + kVarTypeUInt32 = 5, + //! Variable is 64-bit signed integer. + kVarTypeInt64 = 6, + //! Variable is 64-bit unsigned integer. + kVarTypeUInt64 = 7, + + //! Variable is target `intptr_t`, not compatible with host `intptr_t`. + kVarTypeIntPtr = 8, + //! Variable is target `uintptr_t`, not compatible with host `uintptr_t`. + kVarTypeUIntPtr = 9, + + //! Variable is 32-bit floating point (single precision). + kVarTypeFp32 = 10, + //! Variable is 64-bit floating point (double precision). + kVarTypeFp64 = 11, + + //! \internal + _kVarTypeIntStart = kVarTypeInt8, + //! \internal + _kVarTypeIntEnd = kVarTypeUIntPtr, + + //! \internal + _kVarTypeFpStart = kVarTypeFp32, + //! \internal + _kVarTypeFpEnd = kVarTypeFp64 +}; + +// ============================================================================ +// [asmjit::kVarFlags] +// ============================================================================ + +//! \internal +//! +//! X86/X64 variable flags. +ASMJIT_ENUM(kVarFlags) { + //! Variable contains single-precision floating-point(s). + kVarFlagSp = 0x10, + //! Variable contains double-precision floating-point(s). + kVarFlagDp = 0x20, + //! Variable is packed, i.e. packed floats, doubles, ... + kVarFlagPacked = 0x40 +}; + +// ============================================================================ +// [asmjit::kVarAttrFlags] +// ============================================================================ + +//! Variable attribute flags. +ASMJIT_ENUM(kVarAttrFlags) { + //! Variable is accessed through register on input. + kVarAttrInReg = 0x00000001, + //! Variable is accessed through register on output. + kVarAttrOutReg = 0x00000002, + //! Variable is accessed through register on input & output. + kVarAttrInOutReg = 0x00000003, + + //! Variable is accessed through memory on input. + kVarAttrInMem = 0x00000004, + //! Variable is accessed through memory on output. + kVarAttrOutMem = 0x00000008, + //! Variable is accessed through memory on input & output. + kVarAttrInOutMem = 0x0000000C, + + //! Register allocator can decide if input will be in register or memory. + kVarAttrInDecide = 0x00000010, + //! Register allocator can decide if output will be in register or memory. + kVarAttrOutDecide = 0x00000020, + //! Register allocator can decide if in/out will be in register or memory. + kVarAttrInOutDecide = 0x00000030, + + //! Variable is converted to other type/class on the input. + kVarAttrInConv = 0x00000040, + //! Variable is converted from other type/class on the output. + kVarAttrOutConv = 0x00000080, + //! Combination of `kVarAttrInConv` and `kVarAttrOutConv`. + kVarAttrInOutConv = 0x000000C0, + + //! Variable is a function call operand. + kVarAttrInCall = 0x00000100, + //! Variable is a function argument passed in register. + kVarAttrInArg = 0x00000200, + + //! Variable is a function return value passed in register. + kVarAttrOutRet = 0x00000400, + //! Variable should be spilled. + kVarAttrSpill = 0x00000800, + //! Variable should be unused at the end of the instruction/node. + kVarAttrUnuse = 0x00001000, + + //! \internal + //! + //! All in-flags. + kVarAttrInAll = + kVarAttrInReg | + kVarAttrInMem | + kVarAttrInDecide | + kVarAttrInCall | + kVarAttrInArg, + + //! \internal + //! + //! All out-flags. + kVarAttrOutAll = + kVarAttrOutReg | + kVarAttrOutMem | + kVarAttrOutDecide | + kVarAttrOutRet, + + //! Variable is already allocated on the input. + kVarAttrAllocInDone = 0x00400000, + //! Variable is already allocated on the output. + kVarAttrAllocOutDone = 0x00800000 +}; + +// ============================================================================ +// [asmjit::kVarHint] +// ============================================================================ + +//! Variable hint (used by `Compiler)`. +//! +//! \sa Compiler. +ASMJIT_ENUM(kVarHint) { + //! Alloc variable. + kVarHintAlloc = 0, + //! Spill variable. + kVarHintSpill = 1, + //! Save variable if modified. + kVarHintSave = 2, + //! Save variable if modified and mark it as unused. + kVarHintSaveAndUnuse = 3, + //! Mark variable as unused. + kVarHintUnuse = 4 +}; + +// ============================================================================ +// [asmjit::kVarState] +// ============================================================================ + +//! State of variable. +//! +//! \note State of variable is used only during make process and it's not +//! visible to the developer. +ASMJIT_ENUM(kVarState) { + //! Variable is currently not used. + kVarStateUnused = 0, + + //! Variable is in register. + //! + //! Variable is currently allocated in register. + kVarStateReg = 1, + + //! Variable is in memory location or spilled. + //! + //! Variable was spilled from register to memory or variable is used for + //! memory only storage. + kVarStateMem = 2 +}; + +// ============================================================================ +// [asmjit::kFuncConv] +// ============================================================================ + +//! Function calling convention. +//! +//! For a platform specific calling conventions, see: +//! - `kX86FuncConv` - X86/X64 calling conventions. +ASMJIT_ENUM(kFuncConv) { + //! Calling convention is invalid (can't be used). + kFuncConvNone = 0, + +#if defined(ASMJIT_DOCGEN) + //! Default calling convention for current platform / operating system. + kFuncConvHost = DependsOnHost, + + //! Default C calling convention based on current compiler's settings. + kFuncConvHostCDecl = DependsOnHost, + + //! Compatibility for `__stdcall` calling convention. + //! + //! \note This enumeration is always set to a value which is compatible with + //! current compilers __stdcall calling convention. In 64-bit mode the value + //! is compatible with `kX86FuncConvW64` or `kX86FuncConvU64`. + kFuncConvHostStdCall = DependsOnHost, + + //! Compatibility for `__fastcall` calling convention. + //! + //! \note This enumeration is always set to a value which is compatible with + //! current compilers `__fastcall` calling convention. In 64-bit mode the value + //! is compatible with `kX86FuncConvW64` or `kX86FuncConvU64`. + kFuncConvHostFastCall = DependsOnHost +#endif // ASMJIT_DOCGEN +}; + +// ============================================================================ +// [asmjit::kFuncHint] +// ============================================================================ + +//! Function hints. +//! +//! For a platform specific calling conventions, see: +//! - `kX86FuncHint` - X86/X64 function hints. +ASMJIT_ENUM(kFuncHint) { + //! Make a naked function (default true). + //! + //! Naked function is function without using standard prolog/epilog sequence). + //! + //! X86/X64 Specific + //! ---------------- + //! + //! Standard prolog sequence is: + //! + //! ~~~ + //! push zbp + //! mov zsp, zbp + //! sub zsp, StackAdjustment + //! ~~~ + //! + //! which is an equivalent to: + //! + //! ~~~ + //! enter StackAdjustment, 0 + //! ~~~ + //! + //! Standard epilog sequence is: + //! + //! ~~~ + //! mov zsp, zbp + //! pop zbp + //! ~~~ + //! + //! which is an equavalent to: + //! + //! ~~~ + //! leave + //! ~~~ + //! + //! Naked functions can omit the prolog/epilog sequence. The advantage of + //! doing such modification is that EBP/RBP register can be used by the + //! register allocator which can result in less spills/allocs. + kFuncHintNaked = 0, + + //! Generate compact function prolog/epilog if possible. + //! + //! X86/X64 Specific + //! ---------------- + //! + //! Use shorter, but possible slower prolog/epilog sequence to save/restore + //! registers. + kFuncHintCompact = 1 +}; + +// ============================================================================ +// [asmjit::kFuncFlags] +// ============================================================================ + +//! Function flags. +//! +//! For a platform specific calling conventions, see: +//! - `kX86FuncFlags` - X86/X64 function flags. +ASMJIT_ENUM(kFuncFlags) { + //! Whether the function is using naked (minimal) prolog / epilog. + kFuncFlagIsNaked = 0x00000001, + + //! Whether an another function is called from this function. + kFuncFlagIsCaller = 0x00000002, + + //! Whether the stack is not aligned to the required stack alignment, + //! thus it has to be aligned manually. + kFuncFlagIsStackMisaligned = 0x00000004, + + //! Whether the stack pointer is adjusted by the stack size needed + //! to save registers and function variables. + //! + //! X86/X64 Specific + //! ---------------- + //! + //! Stack pointer (ESP/RSP) is adjusted by 'sub' instruction in prolog and by + //! 'add' instruction in epilog (only if function is not naked). If function + //! needs to perform manual stack alignment more instructions are used to + //! adjust the stack (like "and zsp, -Alignment"). + kFuncFlagIsStackAdjusted = 0x00000008, + + //! Whether the function is finished using `Compiler::endFunc()`. + kFuncFlagIsFinished = 0x80000000 +}; + +// ============================================================================ +// [asmjit::kFuncDir] +// ============================================================================ + +//! Function arguments direction. +ASMJIT_ENUM(kFuncDir) { + //! Arguments are passed left to right. + //! + //! This arguments direction is unusual in C, however it's used in Pascal. + kFuncDirLtr = 0, + + //! Arguments are passed right ro left + //! + //! This is the default argument direction in C. + kFuncDirRtl = 1 +}; + +// ============================================================================ +// [asmjit::kFuncArg] +// ============================================================================ + +//! Function argument (lo/hi) specification. +ASMJIT_ENUM(kFuncArg) { + //! Maxumum number of function arguments supported by AsmJit. + kFuncArgCount = 16, + //! Extended maximum number of arguments (used internally). + kFuncArgCountLoHi = kFuncArgCount * 2, + + //! Index to the LO part of function argument (default). + //! + //! This value is typically omitted and added only if there is HI argument + //! accessed. + kFuncArgLo = 0, + //! Index to the HI part of function argument. + //! + //! HI part of function argument depends on target architecture. On x86 it's + //! typically used to transfer 64-bit integers (they form a pair of 32-bit + //! integers). + kFuncArgHi = kFuncArgCount +}; + +// ============================================================================ +// [asmjit::kFuncRet] +// ============================================================================ + +//! Function return value (lo/hi) specification. +ASMJIT_ENUM(kFuncRet) { + //! Index to the LO part of function return value. + kFuncRetLo = 0, + //! Index to the HI part of function return value. + kFuncRetHi = 1 +}; + +// ============================================================================ +// [asmjit::kFuncStackInvalid] +// ============================================================================ + +enum kFuncMisc { + //! Invalid stack offset in function or function parameter. + kFuncStackInvalid = -1 +}; + +// ============================================================================ +// [asmjit::kNodeType] +// ============================================================================ + +//! Type of node, see \ref Node. +ASMJIT_ENUM(kNodeType) { + //! Invalid node (internal, can't be used). + kNodeTypeNone = 0, + //! Node is an .align directive, see \ref AlignNode. + kNodeTypeAlign, + //! Node is an embedded data, see \ref EmbedNode. + kNodeTypeEmbed, + //! Node is a comment, see \ref CommentNode. + kNodeTypeComment, + //! Node is a variable hint (alloc, spill, use, unuse), see \ref HintNode. + kNodeTypeHint, + //! Node is a label, see \ref TargetNode. + kNodeTypeTarget, + //! Node is an instruction, see \ref InstNode. + kNodeTypeInst, + //! Node is a function declaration, see \ref FuncNode. + kNodeTypeFunc, + //! Node is an end of the function, see \ref EndNode. + kNodeTypeEnd, + //! Node is a return, see \ref RetNode. + kNodeTypeRet, + //! Node is a function call, see \ref CallNode. + kNodeTypeCall, + //! Node is a function call argument moved on stack, see \ref SArgNode. + kNodeTypeSArg +}; + +// ============================================================================ +// [asmjit::kNodeFlags] +// ============================================================================ + +ASMJIT_ENUM(kNodeFlags) { + //! Whether the node has been translated, thus contains only registers. + kNodeFlagIsTranslated = 0x0001, + + //! Whether the node was scheduled - possibly reordered, but basically this + //! is a mark that is set by scheduler after the node has been visited. + kNodeFlagIsScheduled = 0x0002, + + //! Whether the node is informative only and can be safely removed. + kNodeFlagIsInformative = 0x0004, + + //! Whether the `InstNode` is a jump. + kNodeFlagIsJmp = 0x0008, + //! Whether the `InstNode` is a conditional jump. + kNodeFlagIsJcc = 0x0010, + + //! Whether the `InstNode` is an unconditinal jump or conditional + //! jump that is likely to be taken. + kNodeFlagIsTaken = 0x0020, + + //! Whether the `Node` will return from a function. + //! + //! This flag is used by both `EndNode` and `RetNode`. + kNodeFlagIsRet = 0x0040, + + //! Whether the instruction is special. + kNodeFlagIsSpecial = 0x0080, + + //! Whether the instruction is an FPU instruction. + kNodeFlagIsFp = 0x0100 +}; + +// ============================================================================ +// [asmjit::MemCell] +// ============================================================================ + +struct MemCell { + ASMJIT_NO_COPY(MemCell) + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get cell offset. + ASMJIT_INLINE int32_t getOffset() const { return _offset; } + //! Set cell offset. + ASMJIT_INLINE void setOffset(int32_t offset) { _offset = offset; } + + //! Get cell size. + ASMJIT_INLINE uint32_t getSize() const { return _size; } + //! Set cell size. + ASMJIT_INLINE void setSize(uint32_t size) { _size = size; } + + //! Get cell alignment. + ASMJIT_INLINE uint32_t getAlignment() const { return _alignment; } + //! Set cell alignment. + ASMJIT_INLINE void setAlignment(uint32_t alignment) { _alignment = alignment; } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Next active cell. + MemCell* _next; + + //! Offset, relative to base-offset. + int32_t _offset; + //! Size. + uint32_t _size; + //! Alignment. + uint32_t _alignment; +}; + +// ============================================================================ +// [asmjit::Var] +// ============================================================================ + +//! Base class for all variables. +struct Var : public Operand { + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE Var() : Operand(NoInit) { + _init_packed_op_sz_b0_b1_id(kOperandTypeVar, 0, 0, 0, kInvalidValue); + _init_packed_d2_d3(kInvalidValue, kInvalidValue); + } + + ASMJIT_INLINE Var(const Var& other) : Operand(other) {} + + explicit ASMJIT_INLINE Var(const _NoInit&) : Operand(NoInit) {} + + // -------------------------------------------------------------------------- + // [Var Specific] + // -------------------------------------------------------------------------- + + //! Clone `Var` operand. + ASMJIT_INLINE Var clone() const { + return Var(*this); + } + + //! Reset Var operand. + ASMJIT_INLINE void reset() { + _init_packed_op_sz_b0_b1_id(kOperandTypeVar, 0, kInvalidReg, kInvalidReg, kInvalidValue); + _init_packed_d2_d3(kInvalidValue, kInvalidValue); + } + + //! Get whether the variable has been initialized by `Compiler`. + ASMJIT_INLINE bool isInitialized() const { + return _vreg.id != kInvalidValue; + } + + //! Get variable type. + ASMJIT_INLINE uint32_t getVarType() const { + return _vreg.vType; + } + + // -------------------------------------------------------------------------- + // [Operator Overload] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE Var& operator=(const Var& other) { _copy(other); return *this; } + + ASMJIT_INLINE bool operator==(const Var& other) const { return _packed[0] == other._packed[0]; } + ASMJIT_INLINE bool operator!=(const Var& other) const { return !operator==(other); } +}; + +// ============================================================================ +// [asmjit::VarBits] +// ============================================================================ + +//! Bit-array used by variable-liveness analysis. +struct VarBits { + // -------------------------------------------------------------------------- + // [Enums] + // -------------------------------------------------------------------------- + + enum { + kEntitySize = static_cast(sizeof(uintptr_t)), + kEntityBits = kEntitySize * 8 + }; + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE uintptr_t getBit(uint32_t index) const { + return (data[index / kEntityBits] >> (index % kEntityBits)) & 1; + } + + ASMJIT_INLINE void setBit(uint32_t index) { + data[index / kEntityBits] |= static_cast(1) << (index % kEntityBits); + } + + ASMJIT_INLINE void delBit(uint32_t index) { + data[index / kEntityBits] &= ~(static_cast(1) << (index % kEntityBits)); + } + + // -------------------------------------------------------------------------- + // [Ops] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE bool copyBits(const VarBits* s0, uint32_t len) { + uintptr_t r = 0; + for (uint32_t i = 0; i < len; i++) { + uintptr_t t = s0->data[i]; + data[i] = t; + r |= t; + } + return r != 0; + } + + ASMJIT_INLINE bool addBits(const VarBits* s0, uint32_t len) { + return addBits(this, s0, len); + } + + ASMJIT_INLINE bool addBits(const VarBits* s0, const VarBits* s1, uint32_t len) { + uintptr_t r = 0; + for (uint32_t i = 0; i < len; i++) { + uintptr_t t = s0->data[i] | s1->data[i]; + data[i] = t; + r |= t; + } + return r != 0; + } + + ASMJIT_INLINE bool andBits(const VarBits* s1, uint32_t len) { + return andBits(this, s1, len); + } + + ASMJIT_INLINE bool andBits(const VarBits* s0, const VarBits* s1, uint32_t len) { + uintptr_t r = 0; + for (uint32_t i = 0; i < len; i++) { + uintptr_t t = s0->data[i] & s1->data[i]; + data[i] = t; + r |= t; + } + return r != 0; + } + + ASMJIT_INLINE bool delBits(const VarBits* s1, uint32_t len) { + return delBits(this, s1, len); + } + + ASMJIT_INLINE bool delBits(const VarBits* s0, const VarBits* s1, uint32_t len) { + uintptr_t r = 0; + for (uint32_t i = 0; i < len; i++) { + uintptr_t t = s0->data[i] & ~s1->data[i]; + data[i] = t; + r |= t; + } + return r != 0; + } + + ASMJIT_INLINE bool _addBitsDelSource(VarBits* s1, uint32_t len) { + return _addBitsDelSource(this, s1, len); + } + + ASMJIT_INLINE bool _addBitsDelSource(const VarBits* s0, VarBits* s1, uint32_t len) { + uintptr_t r = 0; + for (uint32_t i = 0; i < len; i++) { + uintptr_t a = s0->data[i]; + uintptr_t b = s1->data[i]; + + this->data[i] = a | b; + b &= ~a; + + s1->data[i] = b; + r |= b; + } + return r != 0; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + uintptr_t data[1]; +}; + +// ============================================================================ +// [asmjit::VarData] +// ============================================================================ + +//! Base variable data. +struct VarData { + // -------------------------------------------------------------------------- + // [Accessors - Base] + // -------------------------------------------------------------------------- + + //! Get variable name. + ASMJIT_INLINE const char* getName() const { + return _name; + } + + //! Get variable id. + ASMJIT_INLINE uint32_t getId() const { + return _id; + } + + //! Get variable type. + ASMJIT_INLINE uint32_t getType() const { + return _type; + } + + //! Get variable class. + ASMJIT_INLINE uint32_t getClass() const { + return _class; + } + + // -------------------------------------------------------------------------- + // [Accessors - ContextId] + // -------------------------------------------------------------------------- + + //! Get whether the variable has context id. + ASMJIT_INLINE bool hasContextId() const { + return _contextId != kInvalidValue; + } + + //! Get context variable id (used only by `Context)`. + ASMJIT_INLINE uint32_t getContextId() const { + return _contextId; + } + + //! Set context variable id (used only by `Context)`. + ASMJIT_INLINE void setContextId(uint32_t contextId) { + _contextId = contextId; + } + + //! Reset context variable id (used only by `Context)`. + ASMJIT_INLINE void resetContextId() { + _contextId = kInvalidValue; + } + + // -------------------------------------------------------------------------- + // [Accessors - Priority] + // -------------------------------------------------------------------------- + + //! Get variable priority, used by compiler to decide which variable to spill. + ASMJIT_INLINE uint32_t getPriority() const { + return _priority; + } + + //! Set variable priority. + ASMJIT_INLINE void setPriority(uint32_t priority) { + ASMJIT_ASSERT(priority <= 0xFF); + _priority = static_cast(priority); + } + + // -------------------------------------------------------------------------- + // [Accessors - State] + // -------------------------------------------------------------------------- + + //! Get variable state, only used by `Context`. + ASMJIT_INLINE uint32_t getState() const { + return _state; + } + + //! Set variable state, only used by `Context`. + ASMJIT_INLINE void setState(uint32_t state) { + ASMJIT_ASSERT(state <= 0xFF); + _state = static_cast(state); + } + + // -------------------------------------------------------------------------- + // [Accessors - RegIndex] + // -------------------------------------------------------------------------- + + //! Get register index. + ASMJIT_INLINE uint32_t getRegIndex() const { + return _regIndex; + } + + //! Set register index. + ASMJIT_INLINE void setRegIndex(uint32_t regIndex) { + ASMJIT_ASSERT(regIndex <= 0xFF); + _regIndex = static_cast(regIndex); + } + + //! Reset register index. + ASMJIT_INLINE void resetRegIndex() { + _regIndex = static_cast(kInvalidReg); + } + + // -------------------------------------------------------------------------- + // [Accessors - HomeIndex/Mask] + // -------------------------------------------------------------------------- + + //! Get home registers mask. + ASMJIT_INLINE uint32_t getHomeMask() const { + return _homeMask; + } + + //! Add a home register index to the home registers mask. + ASMJIT_INLINE void addHomeIndex(uint32_t regIndex) { + _homeMask |= IntUtil::mask(regIndex); + } + + // -------------------------------------------------------------------------- + // [Accessors - Flags] + // -------------------------------------------------------------------------- + + //! Get variable flags. + ASMJIT_INLINE uint32_t getFlags() const { + return _flags; + } + + //! Get whether the VarData is only memory allocated on the stack. + ASMJIT_INLINE bool isStack() const { return static_cast(_isStack); } + + //! Get whether the variable is a function argument passed through memory. + ASMJIT_INLINE bool isMemArg() const { return static_cast(_isMemArg); } + + //! Get variable content can be calculated by a simple instruction. + ASMJIT_INLINE bool isCalculated() const { return static_cast(_isCalculated); } + //! Get whether to save variable when it's unused (spill). + ASMJIT_INLINE bool saveOnUnuse() const { return static_cast(_saveOnUnuse); } + + //! Get whether the variable was changed. + ASMJIT_INLINE bool isModified() const { return static_cast(_modified); } + //! Set whether the variable was changed. + ASMJIT_INLINE void setModified(bool modified) { _modified = modified; } + + //! Get variable alignment. + ASMJIT_INLINE uint32_t getAlignment() const { return _alignment; } + //! Get variable size. + ASMJIT_INLINE uint32_t getSize() const { return _size; } + + //! Get home memory offset. + ASMJIT_INLINE int32_t getMemOffset() const { return _memOffset; } + //! Set home memory offset. + ASMJIT_INLINE void setMemOffset(int32_t offset) { _memOffset = offset; } + + //! Get home memory cell. + ASMJIT_INLINE MemCell* getMemCell() const { return _memCell; } + //! Set home memory cell. + ASMJIT_INLINE void setMemCell(MemCell* cell) { _memCell = cell; } + + // -------------------------------------------------------------------------- + // [Accessors - Temporary Usage] + // -------------------------------------------------------------------------- + + //! Get temporary VarAttr. + ASMJIT_INLINE VarAttr* getVa() const { return _va; } + //! Set temporary VarAttr. + ASMJIT_INLINE void setVa(VarAttr* va) { _va = va; } + //! Reset temporary VarAttr. + ASMJIT_INLINE void resetVa() { _va = NULL; } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Variable name. + const char* _name; + + //! Variable id. + uint32_t _id; + //! Context variable id, used by `Context` only, initially `kInvalidValue`. + uint32_t _contextId; + + //! Variable type. + uint8_t _type; + //! Variable class. + uint8_t _class; + //! Variable flags. + uint8_t _flags; + //! Variable priority. + uint8_t _priority; + + //! Variable state (connected with actual `VarState)`. + uint8_t _state; + //! Actual register index (only used by `Context)`, during translate. + uint8_t _regIndex; + + //! Whether the variable is only used as memory allocated on the stack. + uint8_t _isStack : 1; + //! Whether the variable is a function argument passed through memory. + uint8_t _isMemArg : 1; + //! Whether variable content can be calculated by a simple instruction. + //! + //! This is used mainly by MMX and SSE2 code. This flag indicates that + //! register allocator should never reserve memory for this variable, because + //! the content can be generated by a single instruction (for example PXOR). + uint8_t _isCalculated : 1; + //! Save on unuse (at end of the variable scope). + uint8_t _saveOnUnuse : 1; + //! Whether variable was changed (connected with actual `VarState)`. + uint8_t _modified : 1; + //! \internal + uint8_t _reserved0 : 3; + //! Variable natural alignment. + uint8_t _alignment; + + //! Variable size. + uint32_t _size; + + //! Mask of all registers variable has been allocated to. + uint32_t _homeMask; + + //! Home memory offset. + int32_t _memOffset; + //! Home memory cell, used by `Context` (initially NULL). + MemCell* _memCell; + + //! Register read access statistics. + uint32_t rReadCount; + //! Register write access statistics. + uint32_t rWriteCount; + + //! Memory read statistics. + uint32_t mReadCount; + //! Memory write statistics. + uint32_t mWriteCount; + + // -------------------------------------------------------------------------- + // [Members - Temporary Usage] + // -------------------------------------------------------------------------- + + // These variables are only used during register allocation. They are + // initialized by init() phase and reset by cleanup() phase. + + union { + //! Temporary link to VarAttr* used by the `Context` used in + //! various phases, but always set back to NULL when finished. + //! + //! This temporary data is designed to be used by algorithms that need to + //! store some data into variables themselves during compilation. But it's + //! expected that after variable is compiled & translated the data is set + //! back to zero/null. Initial value is NULL. + VarAttr* _va; + + //! \internal + //! + //! Same as `_va` just provided as `uintptr_t`. + uintptr_t _vaUInt; + }; +}; + +// ============================================================================ +// [asmjit::VarAttr] +// ============================================================================ + +struct VarAttr { + // -------------------------------------------------------------------------- + // [Setup] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE void setup(VarData* vd, uint32_t flags = 0, uint32_t inRegs = 0, uint32_t allocableRegs = 0) { + _vd = vd; + _flags = flags; + _varCount = 0; + _inRegIndex = kInvalidReg; + _outRegIndex = kInvalidReg; + _reserved = 0; + _inRegs = inRegs; + _allocableRegs = allocableRegs; + } + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get VarData. + ASMJIT_INLINE VarData* getVd() const { return _vd; } + //! Set VarData. + ASMJIT_INLINE void setVd(VarData* vd) { _vd = vd; } + + //! Get flags. + ASMJIT_INLINE uint32_t getFlags() const { return _flags; } + //! Set flags. + ASMJIT_INLINE void setFlags(uint32_t flags) { _flags = flags; } + + //! Get whether `flag` is on. + ASMJIT_INLINE bool hasFlag(uint32_t flag) { return (_flags & flag) != 0; } + //! Add `flags`. + ASMJIT_INLINE void orFlags(uint32_t flags) { _flags |= flags; } + //! Mask `flags`. + ASMJIT_INLINE void andFlags(uint32_t flags) { _flags &= flags; } + //! Clear `flags`. + ASMJIT_INLINE void andNotFlags(uint32_t flags) { _flags &= ~flags; } + + //! Get how many times the variable is used by the instruction/node. + ASMJIT_INLINE uint32_t getVarCount() const { return _varCount; } + //! Set how many times the variable is used by the instruction/node. + ASMJIT_INLINE void setVarCount(uint32_t count) { _varCount = static_cast(count); } + //! Add how many times the variable is used by the instruction/node. + ASMJIT_INLINE void addVarCount(uint32_t count = 1) { _varCount += static_cast(count); } + + //! Get whether the variable has to be allocated in a specific input register. + ASMJIT_INLINE uint32_t hasInRegIndex() const { return _inRegIndex != kInvalidReg; } + //! Get the input register index or `kInvalidReg`. + ASMJIT_INLINE uint32_t getInRegIndex() const { return _inRegIndex; } + //! Set the input register index. + ASMJIT_INLINE void setInRegIndex(uint32_t index) { _inRegIndex = static_cast(index); } + //! Reset the input register index. + ASMJIT_INLINE void resetInRegIndex() { _inRegIndex = kInvalidReg; } + + //! Get whether the variable has to be allocated in a specific output register. + ASMJIT_INLINE uint32_t hasOutRegIndex() const { return _outRegIndex != kInvalidReg; } + //! Get the output register index or `kInvalidReg`. + ASMJIT_INLINE uint32_t getOutRegIndex() const { return _outRegIndex; } + //! Set the output register index. + ASMJIT_INLINE void setOutRegIndex(uint32_t index) { _outRegIndex = static_cast(index); } + //! Reset the output register index. + ASMJIT_INLINE void resetOutRegIndex() { _outRegIndex = kInvalidReg; } + + //! Get whether the mandatory input registers are in used. + ASMJIT_INLINE bool hasInRegs() const { return _inRegs != 0; } + //! Get mandatory input registers (mask). + ASMJIT_INLINE uint32_t getInRegs() const { return _inRegs; } + //! Set mandatory input registers (mask). + ASMJIT_INLINE void setInRegs(uint32_t mask) { _inRegs = mask; } + //! Add mandatory input registers (mask). + ASMJIT_INLINE void addInRegs(uint32_t mask) { _inRegs |= mask; } + //! And mandatory input registers (mask). + ASMJIT_INLINE void andInRegs(uint32_t mask) { _inRegs &= mask; } + //! Clear mandatory input registers (mask). + ASMJIT_INLINE void delInRegs(uint32_t mask) { _inRegs &= ~mask; } + + //! Get allocable input registers (mask). + ASMJIT_INLINE uint32_t getAllocableRegs() const { return _allocableRegs; } + //! Set allocable input registers (mask). + ASMJIT_INLINE void setAllocableRegs(uint32_t mask) { _allocableRegs = mask; } + //! Add allocable input registers (mask). + ASMJIT_INLINE void addAllocableRegs(uint32_t mask) { _allocableRegs |= mask; } + //! And allocable input registers (mask). + ASMJIT_INLINE void andAllocableRegs(uint32_t mask) { _allocableRegs &= mask; } + //! Clear allocable input registers (mask). + ASMJIT_INLINE void delAllocableRegs(uint32_t mask) { _allocableRegs &= ~mask; } + + // -------------------------------------------------------------------------- + // [Operator Overload] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE VarAttr& operator=(const VarAttr& other) { + ::memcpy(this, &other, sizeof(VarAttr)); + return *this; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + VarData* _vd; + //! Flags. + uint32_t _flags; + + union { + struct { + //! How many times the variable is used by the instruction/node. + uint8_t _varCount; + //! Input register index or `kInvalidReg` if it's not given. + //! + //! Even if the input register index is not given (i.e. it may by any + //! register), register allocator should assign an index that will be + //! used to persist a variable into this specific index. It's helpful + //! in situations where one variable has to be allocated in multiple + //! registers to determine the register which will be persistent. + uint8_t _inRegIndex; + //! Output register index or `kInvalidReg` if it's not given. + //! + //! Typically `kInvalidReg` if variable is only used on input. + uint8_t _outRegIndex; + //! \internal + uint8_t _reserved; + }; + + //! \internal + //! + //! Packed data #0. + uint32_t _packed; + }; + + //! Mandatory input registers. + //! + //! Mandatory input registers are required by the instruction even if + //! there are duplicates. This schema allows us to allocate one variable + //! in one or more register when needed. Required mostly by instructions + //! that have implicit register operands (imul, cpuid, ...) and function + //! call. + uint32_t _inRegs; + + //! Allocable input registers. + //! + //! Optional input registers is a mask of all allocable registers for a given + //! variable where we have to pick one of them. This mask is usually not used + //! when _inRegs is set. If both masks are used then the register + //! allocator tries first to find an intersection between these and allocates + //! an extra slot if not found. + uint32_t _allocableRegs; +}; + +// ============================================================================ +// [asmjit::VarMap] +// ============================================================================ + +//! Variables' map related to a single node (instruction / other node). +struct VarMap { + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get count of variables (all). + ASMJIT_INLINE uint32_t getVaCount() const { + return _vaCount; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Variables count. + uint32_t _vaCount; +}; + +// ============================================================================ +// [asmjit::VarState] +// ============================================================================ + +//! Variables' state. +struct VarState {}; + +// ============================================================================ +// [asmjit::TypeId / VarMapping] +// ============================================================================ + +//! Function builder 'void' type. +struct Void {}; + +//! Function builder 'int8_t' type. +struct Int8Type {}; +//! Function builder 'uint8_t' type. +struct UInt8Type {}; + +//! Function builder 'int16_t' type. +struct Int16Type {}; +//! Function builder 'uint16_t' type. +struct UInt16Type {}; + +//! Function builder 'int32_t' type. +struct Int32Type {}; +//! Function builder 'uint32_t' type. +struct UInt32Type {}; + +//! Function builder 'int64_t' type. +struct Int64Type {}; +//! Function builder 'uint64_t' type. +struct UInt64Type {}; + +//! Function builder 'intptr_t' type. +struct IntPtrType {}; +//! Function builder 'uintptr_t' type. +struct UIntPtrType {}; + +//! Function builder 'float' type. +struct FloatType {}; +//! Function builder 'double' type. +struct DoubleType {}; + +#if !defined(ASMJIT_DOCGEN) +template +struct TypeId { + enum { kId = static_cast(::asmjit::kInvalidVar) }; +}; + +template +struct TypeId { + enum { kId = kVarTypeIntPtr }; +}; + +#define ASMJIT_TYPE_ID(_T_, _Id_) \ + template<> \ + struct TypeId<_T_> { enum { kId = _Id_ }; } + +ASMJIT_TYPE_ID(void, kInvalidVar); +ASMJIT_TYPE_ID(Void, kInvalidVar); + +ASMJIT_TYPE_ID(int8_t, kVarTypeInt8); +ASMJIT_TYPE_ID(Int8Type, kVarTypeInt8); + +ASMJIT_TYPE_ID(uint8_t, kVarTypeUInt8); +ASMJIT_TYPE_ID(UInt8Type, kVarTypeUInt8); + +ASMJIT_TYPE_ID(int16_t, kVarTypeInt16); +ASMJIT_TYPE_ID(Int16Type, kVarTypeInt16); + +ASMJIT_TYPE_ID(uint16_t, kVarTypeUInt8); +ASMJIT_TYPE_ID(UInt16Type, kVarTypeUInt8); + +ASMJIT_TYPE_ID(int32_t, kVarTypeInt32); +ASMJIT_TYPE_ID(Int32Type, kVarTypeUInt8); + +ASMJIT_TYPE_ID(uint32_t, kVarTypeUInt32); +ASMJIT_TYPE_ID(UInt32Type, kVarTypeUInt8); + +ASMJIT_TYPE_ID(int64_t, kVarTypeInt64); +ASMJIT_TYPE_ID(Int64Type, kVarTypeUInt8); + +ASMJIT_TYPE_ID(uint64_t, kVarTypeUInt64); +ASMJIT_TYPE_ID(UInt64Type, kVarTypeUInt8); + +ASMJIT_TYPE_ID(float, kVarTypeFp32); +ASMJIT_TYPE_ID(FloatType, kVarTypeFp32); + +ASMJIT_TYPE_ID(double, kVarTypeFp64); +ASMJIT_TYPE_ID(DoubleType, kVarTypeFp64); +#endif // !ASMJIT_DOCGEN + +// ============================================================================ +// [asmjit::FuncInOut] +// ============================================================================ + +//! Function in/out - argument or return value translated from `FuncPrototype`. +struct FuncInOut { + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE uint32_t getVarType() const { return _varType; } + + ASMJIT_INLINE bool hasRegIndex() const { return _regIndex != kInvalidReg; } + ASMJIT_INLINE uint32_t getRegIndex() const { return _regIndex; } + + ASMJIT_INLINE bool hasStackOffset() const { return _stackOffset != kFuncStackInvalid; } + ASMJIT_INLINE int32_t getStackOffset() const { return static_cast(_stackOffset); } + + //! Get whether the argument / return value is assigned. + ASMJIT_INLINE bool isSet() const { + return (_regIndex != kInvalidReg) | (_stackOffset != kFuncStackInvalid); + } + + // -------------------------------------------------------------------------- + // [Reset] + // -------------------------------------------------------------------------- + + //! Reset the function argument to "unassigned state". + ASMJIT_INLINE void reset() { _packed = 0xFFFFFFFF; } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + union { + struct { + //! Variable type, see `kVarType`. + uint8_t _varType; + //! Register index if argument / return value is a register. + uint8_t _regIndex; + //! Stack offset if argument / return value is on the stack. + int16_t _stackOffset; + }; + + //! All members packed into single 32-bit integer. + uint32_t _packed; + }; +}; + +// ============================================================================ +// [asmjit::FuncPrototype] +// ============================================================================ + +//! Function prototype. +//! +//! Function prototype contains information about function return type, count +//! of arguments and their types. Function prototype is a low level structure +//! which doesn't contain platform specific or calling convention specific +//! information. Function prototype is used to create a `FuncDecl`. +struct FuncPrototype { + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get function return value. + ASMJIT_INLINE uint32_t getRet() const { return _ret; } + + //! Get function arguments' IDs. + ASMJIT_INLINE const uint32_t* getArgList() const { return _argList; } + //! Get count of function arguments. + ASMJIT_INLINE uint32_t getArgCount() const { return _argCount; } + + //! Get argument at index `id`. + ASMJIT_INLINE uint32_t getArg(uint32_t id) const { + ASMJIT_ASSERT(id < _argCount); + return _argList[id]; + } + + //! Set function definition - return type and arguments. + ASMJIT_INLINE void _setPrototype(uint32_t ret, const uint32_t* argList, uint32_t argCount) { + _ret = ret; + _argList = argList; + _argCount = argCount; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + uint32_t _ret; + uint32_t _argCount; + const uint32_t* _argList; +}; + +// ============================================================================ +// [asmjit::FuncBuilderX] +// ============================================================================ + +//! Custom function builder for up to 32 function arguments. +struct FuncBuilderX : public FuncPrototype { + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE FuncBuilderX() { + _setPrototype(kInvalidVar, _builderArgList, 0); + } + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Set return type to `retType`. + ASMJIT_INLINE void setRet(uint32_t retType) { + _ret = retType; + } + + ASMJIT_INLINE void setArg(uint32_t id, uint32_t type) { + ASMJIT_ASSERT(id < _argCount); + _builderArgList[id] = type; + } + + ASMJIT_INLINE void addArg(uint32_t type) { + ASMJIT_ASSERT(_argCount < kFuncArgCount); + _builderArgList[_argCount++] = type; + } + + template + ASMJIT_INLINE void setRetT() { + setRet(TypeId::kId); + } + + template + ASMJIT_INLINE void setArgT(uint32_t id) { + setArg(id, TypeId::kId); + } + + template + ASMJIT_INLINE void addArgT() { + addArg(TypeId::kId); + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + uint32_t _builderArgList[kFuncArgCount]; +}; + +//! \internal +#define T(_Type_) TypeId<_Type_>::kId + +//! Function prototype (no args). +template +struct FuncBuilder0 : public FuncPrototype { + ASMJIT_INLINE FuncBuilder0() { + _setPrototype(T(RET), NULL, 0); + } +}; + +//! Function prototype (1 argument). +template +struct FuncBuilder1 : public FuncPrototype { + ASMJIT_INLINE FuncBuilder1() { + static const uint32_t args[] = { T(P0) }; + _setPrototype(T(RET), args, ASMJIT_ARRAY_SIZE(args)); + } +}; + +//! Function prototype (2 arguments). +template +struct FuncBuilder2 : public FuncPrototype { + ASMJIT_INLINE FuncBuilder2() { + static const uint32_t args[] = { T(P0), T(P1) }; + _setPrototype(T(RET), args, ASMJIT_ARRAY_SIZE(args)); + } +}; + +//! Function prototype (3 arguments). +template +struct FuncBuilder3 : public FuncPrototype { + ASMJIT_INLINE FuncBuilder3() { + static const uint32_t args[] = { T(P0), T(P1), T(P2) }; + _setPrototype(T(RET), args, ASMJIT_ARRAY_SIZE(args)); + } +}; + +//! Function prototype (4 arguments). +template +struct FuncBuilder4 : public FuncPrototype { + ASMJIT_INLINE FuncBuilder4() { + static const uint32_t args[] = { T(P0), T(P1), T(P2), T(P3) }; + _setPrototype(T(RET), args, ASMJIT_ARRAY_SIZE(args)); + } +}; + +//! Function prototype (5 arguments). +template +struct FuncBuilder5 : public FuncPrototype { + ASMJIT_INLINE FuncBuilder5() { + static const uint32_t args[] = { T(P0), T(P1), T(P2), T(P3), T(P4) }; + _setPrototype(T(RET), args, ASMJIT_ARRAY_SIZE(args)); + } +}; + +//! Function prototype (6 arguments). +template +struct FuncBuilder6 : public FuncPrototype { + ASMJIT_INLINE FuncBuilder6() { + static const uint32_t args[] = { T(P0), T(P1), T(P2), T(P3), T(P4), T(P5) }; + _setPrototype(T(RET), args, ASMJIT_ARRAY_SIZE(args)); + } +}; + +//! Function prototype (7 arguments). +template +struct FuncBuilder7 : public FuncPrototype { + ASMJIT_INLINE FuncBuilder7() { + static const uint32_t args[] = { T(P0), T(P1), T(P2), T(P3), T(P4), T(P5), T(P6) }; + _setPrototype(T(RET), args, ASMJIT_ARRAY_SIZE(args)); + } +}; + +//! Function prototype (8 arguments). +template +struct FuncBuilder8 : public FuncPrototype { + ASMJIT_INLINE FuncBuilder8() { + static const uint32_t args[] = { T(P0), T(P1), T(P2), T(P3), T(P4), T(P5), T(P6), T(P7) }; + _setPrototype(T(RET), args, ASMJIT_ARRAY_SIZE(args)); + } +}; + +//! Function prototype (9 arguments). +template +struct FuncBuilder9 : public FuncPrototype { + ASMJIT_INLINE FuncBuilder9() { + static const uint32_t args[] = { T(P0), T(P1), T(P2), T(P3), T(P4), T(P5), T(P6), T(P7), T(P8) }; + _setPrototype(T(RET), args, ASMJIT_ARRAY_SIZE(args)); + } +}; + +//! Function prototype (10 arguments). +template +struct FuncBuilder10 : public FuncPrototype { + ASMJIT_INLINE FuncBuilder10() { + static const uint32_t args[] = { T(P0), T(P1), T(P2), T(P3), T(P4), T(P5), T(P6), T(P7), T(P8), T(P9) }; + _setPrototype(T(RET), args, ASMJIT_ARRAY_SIZE(args)); + } +}; + +#undef T + +// ============================================================================ +// [asmjit::FuncDecl] +// ============================================================================ + +//! Function declaration. +struct FuncDecl { + // -------------------------------------------------------------------------- + // [Accessors - Calling Convention] + // -------------------------------------------------------------------------- + + //! Get function calling convention, see `kFuncConv`. + ASMJIT_INLINE uint32_t getConvention() const { return _convention; } + + //! Get whether the callee pops the stack. + ASMJIT_INLINE uint32_t getCalleePopsStack() const { return _calleePopsStack; } + + //! Get direction of arguments passed on the stack. + //! + //! Direction should be always `kFuncDirRtl`. + //! + //! \note This is related to used calling convention, it's not affected by + //! number of function arguments or their types. + ASMJIT_INLINE uint32_t getDirection() const { return _direction; } + + //! Get stack size needed for function arguments passed on the stack. + ASMJIT_INLINE uint32_t getArgStackSize() const { return _argStackSize; } + //! Get size of "Red Zone". + ASMJIT_INLINE uint32_t getRedZoneSize() const { return _redZoneSize; } + //! Get size of "Spill Zone". + ASMJIT_INLINE uint32_t getSpillZoneSize() const { return _spillZoneSize; } + + // -------------------------------------------------------------------------- + // [Accessors - Arguments and Return] + // -------------------------------------------------------------------------- + + //! Get whether the function has a return value. + ASMJIT_INLINE bool hasRet() const { return _retCount != 0; } + //! Get count of function return values. + ASMJIT_INLINE uint32_t getRetCount() const { return _retCount; } + + //! Get function return value. + ASMJIT_INLINE FuncInOut& getRet(uint32_t index = kFuncRetLo) { return _retList[index]; } + //! Get function return value. + ASMJIT_INLINE const FuncInOut& getRet(uint32_t index = kFuncRetLo) const { return _retList[index]; } + + //! Get count of function arguments. + ASMJIT_INLINE uint32_t getArgCount() const { return _argCount; } + + //! Get function arguments array. + ASMJIT_INLINE FuncInOut* getArgList() { return _argList; } + //! Get function arguments array (const). + ASMJIT_INLINE const FuncInOut* getArgList() const { return _argList; } + + //! Get function argument at index `index`. + ASMJIT_INLINE FuncInOut& getArg(size_t index) { + ASMJIT_ASSERT(index < kFuncArgCountLoHi); + return _argList[index]; + } + + //! Get function argument at index `index`. + ASMJIT_INLINE const FuncInOut& getArg(size_t index) const { + ASMJIT_ASSERT(index < kFuncArgCountLoHi); + return _argList[index]; + } + + ASMJIT_INLINE void resetArg(size_t index) { + ASMJIT_ASSERT(index < kFuncArgCountLoHi); + _argList[index].reset(); + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Calling convention. + uint8_t _convention; + //! Whether a callee pops stack. + uint8_t _calleePopsStack : 1; + //! Direction for arguments passed on the stack, see `kFuncDir`. + uint8_t _direction : 1; + //! Reserved #0 (alignment). + uint8_t _reserved0 : 6; + + //! Count of arguments in `_argList`. + uint8_t _argCount; + //! Count of return value(s). + uint8_t _retCount; + + //! Count of bytes consumed by arguments on the stack (aligned). + uint32_t _argStackSize; + + //! Size of "Red Zone". + //! + //! \note Used by AMD64-ABI (128 bytes). + uint16_t _redZoneSize; + + //! Size of "Spill Zone". + //! + //! \note Used by WIN64-ABI (32 bytes). + uint16_t _spillZoneSize; + + //! Function arguments (including HI arguments) mapped to physical + //! registers and stack offset. + FuncInOut _argList[kFuncArgCountLoHi]; + + //! Function return value(s). + FuncInOut _retList[2]; +}; + +// ============================================================================ +// [asmjit::Node] +// ============================================================================ + +//! Base node. +//! +//! `Every` node represents an abstract instruction, directive, label, or +//! macro-instruction generated by compiler. +struct Node { + ASMJIT_NO_COPY(Node) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create new `Node`. + //! + //! \note Always use compiler to create nodes. + ASMJIT_INLINE Node(Compiler* compiler, uint32_t type); // Defined-Later. + + //! Destroy `Node`. + ASMJIT_INLINE ~Node() {} + + // -------------------------------------------------------------------------- + // [Accessors - List] + // -------------------------------------------------------------------------- + + //! Get previous node in the compiler stream. + ASMJIT_INLINE Node* getPrev() const { + return _prev; + } + + //! Get next node in the compiler stream. + ASMJIT_INLINE Node* getNext() const { + return _next; + } + + // -------------------------------------------------------------------------- + // [Accessors - Comment] + // -------------------------------------------------------------------------- + + //! Get comment string. + ASMJIT_INLINE const char* getComment() const { + return _comment; + } + + //! Set comment string to `str`. + ASMJIT_INLINE void setComment(const char* comment) { + _comment = comment; + } + + // -------------------------------------------------------------------------- + // [Accessors - Type and Flags] + // -------------------------------------------------------------------------- + + //! Get node type, see `kNodeType`. + ASMJIT_INLINE uint32_t getType() const { + return _type; + } + + //! Get node flags. + ASMJIT_INLINE uint32_t getFlags() const { + return _flags; + } + + //! Get whether the instruction has flag `flag`. + ASMJIT_INLINE bool hasFlag(uint32_t flag) const { + return (static_cast(_flags) & flag) != 0; + } + + //! Set node flags to `flags`. + ASMJIT_INLINE void setFlags(uint32_t flags) { + _flags = static_cast(flags); + } + + //! Add instruction `flags`. + ASMJIT_INLINE void orFlags(uint32_t flags) { + _flags |= static_cast(flags); + } + + //! And instruction `flags`. + ASMJIT_INLINE void andFlags(uint32_t flags) { + _flags &= static_cast(flags); + } + + //! Clear instruction `flags`. + ASMJIT_INLINE void andNotFlags(uint32_t flags) { + _flags &= ~static_cast(flags); + } + + //! Get whether the node has beed fetched. + ASMJIT_INLINE bool isFetched() const { + return _flowId != 0; + } + + //! Get whether the node has been translated. + ASMJIT_INLINE bool isTranslated() const { + return hasFlag(kNodeFlagIsTranslated); + } + + //! Get whether the node has been translated. + ASMJIT_INLINE bool isScheduled() const { + return hasFlag(kNodeFlagIsScheduled); + } + + //! Get whether the node is informative only and can be safely removed after + //! translation. + //! + //! Informative nodes are comments and hints. + ASMJIT_INLINE bool isInformative() const { + return hasFlag(kNodeFlagIsInformative); + } + + //! Whether the node is `InstNode` and unconditional jump. + ASMJIT_INLINE bool isJmp() const { return hasFlag(kNodeFlagIsJmp); } + //! Whether the node is `InstNode` and conditional jump. + ASMJIT_INLINE bool isJcc() const { return hasFlag(kNodeFlagIsJcc); } + //! Whether the node is `InstNode` and conditional/unconditional jump. + ASMJIT_INLINE bool isJmpOrJcc() const { return hasFlag(kNodeFlagIsJmp | kNodeFlagIsJcc); } + //! Whether the node is `InstNode` and return. + ASMJIT_INLINE bool isRet() const { return hasFlag(kNodeFlagIsRet); } + + //! Get whether the node is `InstNode` and the instruction is special. + ASMJIT_INLINE bool isSpecial() const { return hasFlag(kNodeFlagIsSpecial); } + //! Get whether the node is `InstNode` and the instruction uses x87-FPU. + ASMJIT_INLINE bool isFp() const { return hasFlag(kNodeFlagIsFp); } + + // -------------------------------------------------------------------------- + // [Accessors - FlowId] + // -------------------------------------------------------------------------- + + //! Get flow index. + ASMJIT_INLINE uint32_t getFlowId() const { return _flowId; } + //! Set flow index. + ASMJIT_INLINE void setFlowId(uint32_t flowId) { _flowId = flowId; } + + // -------------------------------------------------------------------------- + // [Accessors - VarMap] + // -------------------------------------------------------------------------- + + //! Get whether node contains variable allocation instructions. + ASMJIT_INLINE bool hasMap() const { + return _map != NULL; + } + + //! Get variable allocation instructions. + ASMJIT_INLINE VarMap* getMap() const { + return _map; + } + + //! Get variable allocation instructions casted to `T*`. + template + ASMJIT_INLINE T* getMap() const { + return static_cast(_map); + } + + //! Set variable allocation instructions. + ASMJIT_INLINE void setMap(VarMap* map) { + _map = map; + } + + // -------------------------------------------------------------------------- + // [Accessors - VarState] + // -------------------------------------------------------------------------- + + //! Get node state. + ASMJIT_INLINE VarState* getState() const { + return _state; + } + + //! Get node state casted to `T*`. + template + ASMJIT_INLINE T* getState() const { + return static_cast(_state); + } + + //! Set node state. + ASMJIT_INLINE void setState(VarState* state) { + _state = state; + } + + // -------------------------------------------------------------------------- + // [Accessors - Liveness] + // -------------------------------------------------------------------------- + + //! Get whether the node has variable liveness bits. + ASMJIT_INLINE bool hasLiveness() const { + return _liveness != NULL; + } + + //! Get variable liveness bits. + ASMJIT_INLINE VarBits* getLiveness() const { + return _liveness; + } + + //! Set variable liveness bits. + ASMJIT_INLINE void setLiveness(VarBits* liveness) { + _liveness = liveness; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Previous node. + Node* _prev; + //! Next node. + Node* _next; + + //! Node type, see `kNodeType`. + uint8_t _type; + //! Operands count (if the node has operands, otherwise zero). + uint8_t _opCount; + //! Node flags, different meaning for every node type. + uint16_t _flags; + + //! Flow index. + uint32_t _flowId; + + //! Inline comment string, initially set to NULL. + const char* _comment; + + //! Variable mapping (VarAttr to VarData), initially NULL, filled during + //! fetch phase. + VarMap* _map; + + //! Variable liveness bits (initially NULL, filled by analysis phase). + VarBits* _liveness; + + //! Saved state. + //! + //! Initially NULL, not all nodes have saved state, only branch/flow control + //! nodes. + VarState* _state; +}; + +// ============================================================================ +// [asmjit::AlignNode] +// ============================================================================ + +//! Align node. +struct AlignNode : public Node { + ASMJIT_NO_COPY(AlignNode) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `AlignNode` instance. + ASMJIT_INLINE AlignNode(Compiler* compiler, uint32_t mode, uint32_t offset) : + Node(compiler, kNodeTypeAlign) { + + _mode = mode; + _offset = offset; + } + + //! Destroy the `AlignNode` instance. + ASMJIT_INLINE ~AlignNode() {} + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get alignment mode. + ASMJIT_INLINE uint32_t getMode() const { + return _mode; + } + + //! Set alignment mode. + ASMJIT_INLINE void setMode(uint32_t mode) { + _mode = mode; + } + + //! Get align offset in bytes. + ASMJIT_INLINE uint32_t getOffset() const { + return _offset; + } + + //! Set align offset in bytes to `offset`. + ASMJIT_INLINE void setOffset(uint32_t offset) { + _offset = offset; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Alignment mode, see \ref kAlignMode. + uint32_t _mode; + //! Alignment offset in bytes. + uint32_t _offset; +}; + +// ============================================================================ +// [asmjit::EmbedNode] +// ============================================================================ + +//! Embed node. +//! +//! Embed node is used to embed data into final assembler stream. The data is +//! considered to be RAW; No analysis is performed on RAW data. +struct EmbedNode : public Node { + ASMJIT_NO_COPY(EmbedNode) + + // -------------------------------------------------------------------------- + // [Enums] + // -------------------------------------------------------------------------- + + enum { kInlineBufferSize = 8 }; + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `EmbedNode` instance. + ASMJIT_INLINE EmbedNode(Compiler* compiler, void* data, uint32_t size) : + Node(compiler, kNodeTypeEmbed) { + + _size = size; + if (size <= kInlineBufferSize) { + if (data != NULL) + ::memcpy(_data.buf, data, size); + } + else { + _data.ptr = static_cast(data); + } + } + + //! Destroy the `EmbedNode` instance. + ASMJIT_INLINE ~EmbedNode() {} + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get pointer to data. + uint8_t* getData() { return getSize() <= kInlineBufferSize ? const_cast(_data.buf) : _data.ptr; } + //! Get size of data. + uint32_t getSize() const { return _size; } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Size of the embedded data. + uint32_t _size; + + union { + //! data buffer. + uint8_t buf[kInlineBufferSize]; + //! Data buffer. + uint8_t* ptr; + } _data; +}; + +// ============================================================================ +// [asmjit::CommentNode] +// ============================================================================ + +//! Comment node. +//! +//! Comments allows to comment your assembler stream for better debugging +//! and visualization. Comments are usually ignored in release builds unless +//! the logger is present. +struct CommentNode : public Node { + ASMJIT_NO_COPY(CommentNode) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `CommentNode` instance. + ASMJIT_INLINE CommentNode(Compiler* compiler, const char* comment) : Node(compiler, kNodeTypeComment) { + orFlags(kNodeFlagIsInformative); + _comment = comment; + } + + //! Destroy the `CommentNode` instance. + ASMJIT_INLINE ~CommentNode() {} +}; + +// ============================================================================ +// [asmjit::HintNode] +// ============================================================================ + +//! Hint node. +struct HintNode : public Node { + ASMJIT_NO_COPY(HintNode) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `HintNode` instance. + ASMJIT_INLINE HintNode(Compiler* compiler, VarData* vd, uint32_t hint, uint32_t value) : + Node(compiler, kNodeTypeHint) { + + orFlags(kNodeFlagIsInformative); + _vd = vd; + _hint = hint; + _value = value; + } + + //! Destroy the `HintNode` instance. + ASMJIT_INLINE ~HintNode() {} + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get variable. + ASMJIT_INLINE VarData* getVd() const { return _vd; } + + //! Get hint it (see `kVarHint)`. + ASMJIT_INLINE uint32_t getHint() const{ return _hint; } + //! Set hint it (see `kVarHint)`. + ASMJIT_INLINE void setHint(uint32_t hint) { _hint = hint; } + + //! Get hint value. + ASMJIT_INLINE uint32_t getValue() const { return _value; } + //! Set hint value. + ASMJIT_INLINE void setValue(uint32_t value) { _value = value; } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Variable. + VarData* _vd; + //! Hint id. + uint32_t _hint; + //! Value. + uint32_t _value; +}; + +// ============================================================================ +// [asmjit::TargetNode] +// ============================================================================ + +//! label node. +struct TargetNode : public Node { + ASMJIT_NO_COPY(TargetNode) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `TargetNode` instance. + ASMJIT_INLINE TargetNode(Compiler* compiler, uint32_t labelId) : Node(compiler, kNodeTypeTarget) { + _id = labelId; + _numRefs = 0; + _offset = -1; + _from = NULL; + } + + //! Destroy the `TargetNode` instance. + ASMJIT_INLINE ~TargetNode() {} + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get target label. + ASMJIT_INLINE Label getLabel() const { return Label(_id); } + //! Get target label id. + ASMJIT_INLINE uint32_t getLabelId() const { return _id; } + + //! Get first jmp instruction. + ASMJIT_INLINE JumpNode* getFrom() const { return _from; } + + //! Get whether the node has assigned state. + ASMJIT_INLINE bool hasState() const { return _state != NULL; } + //! Get state for this target. + ASMJIT_INLINE VarState* getState() const { return _state; } + //! Set state for this target. + ASMJIT_INLINE void setState(VarState* state) { _state = state; } + + //! Get number of jumps to this target. + ASMJIT_INLINE uint32_t getNumRefs() const { return _numRefs; } + //! Set number of jumps to this target. + ASMJIT_INLINE void setNumRefs(uint32_t i) { _numRefs = i; } + + //! Add number of jumps to this target. + ASMJIT_INLINE void addNumRefs(uint32_t i = 1) { _numRefs += i; } + //! Subtract number of jumps to this target. + ASMJIT_INLINE void subNumRefs(uint32_t i = 1) { _numRefs -= i; } + + //! Get the label offset. + //! + //! \note Only valid after the content has been serialized to the `Assembler`. + ASMJIT_INLINE intptr_t getOffset() const { return _offset; } + + //! Set the label offset. + ASMJIT_INLINE void setOffset(intptr_t offset) { _offset = offset; } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Label id. + uint32_t _id; + //! Count of jumps here. + uint32_t _numRefs; + + //! Label offset, after serialization. + intptr_t _offset; + //! First jump instruction that points to this target (label). + JumpNode* _from; +}; + +// ============================================================================ +// [asmjit::InstNode] +// ============================================================================ + +//! Instruction node. +struct InstNode : public Node { + ASMJIT_NO_COPY(InstNode) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `InstNode` instance. + ASMJIT_INLINE InstNode(Compiler* compiler, uint32_t instId, uint32_t instOptions, Operand* opList, uint32_t opCount) : + Node(compiler, kNodeTypeInst) { + + _instId = static_cast(instId); + _reserved = 0; + _instOptions = instOptions; + + _opCount = static_cast(opCount); + _opList = opList; + + _updateMemOp(); + } + + //! Destroy the `InstNode` instance. + ASMJIT_INLINE ~InstNode() {} + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get instruction ID, see `kX86InstId`. + ASMJIT_INLINE uint32_t getInstId() const { + return _instId; + } + + //! Set instruction ID to `instId`. + //! + //! Please do not modify instruction code if you don't know what are you + //! doing. Incorrect instruction code or operands can cause assertion failure. + ASMJIT_INLINE void setInstId(uint32_t instId) { + _instId = static_cast(instId); + } + + //! Whether the instruction is an unconditional jump or whether the + //! instruction is a conditional jump which is likely to be taken. + ASMJIT_INLINE bool isTaken() const { + return hasFlag(kNodeFlagIsTaken); + } + + //! Get emit options. + ASMJIT_INLINE uint32_t getOptions() const { + return _instOptions; + } + //! Set emit options. + ASMJIT_INLINE void setOptions(uint32_t options) { + _instOptions = options; + } + //! Add emit options. + ASMJIT_INLINE void addOptions(uint32_t options) { + _instOptions |= options; + } + //! Mask emit options. + ASMJIT_INLINE void andOptions(uint32_t options) { + _instOptions &= options; + } + //! Clear emit options. + ASMJIT_INLINE void delOptions(uint32_t options) { + _instOptions &= ~options; + } + + //! Get operands list. + ASMJIT_INLINE Operand* getOpList() { + return _opList; + } + //! \overload + ASMJIT_INLINE const Operand* getOpList() const { + return _opList; + } + + //! Get operands count. + ASMJIT_INLINE uint32_t getOpCount() const { + return _opCount; + } + + //! Get whether the instruction contains a memory operand. + ASMJIT_INLINE bool hasMemOp() const { + return _memOpIndex != 0xFF; + } + + //! Set memory operand index (in opList), 0xFF means that instruction + //! doesn't have a memory operand. + ASMJIT_INLINE void setMemOpIndex(uint32_t index) { + _memOpIndex = static_cast(index); + } + //! Reset memory operand index, setting it to 0xFF. + ASMJIT_INLINE void resetMemOpIndex() { + _memOpIndex = 0xFF; + } + + //! Get memory operand. + //! + //! Can only be called if the instruction has such operand, see `hasMemOp()`. + ASMJIT_INLINE BaseMem* getMemOp() const { + ASMJIT_ASSERT(hasMemOp()); + return static_cast(&_opList[_memOpIndex]); + } + + //! \overload + template + ASMJIT_INLINE T* getMemOp() const { + ASMJIT_ASSERT(hasMemOp()); + return static_cast(&_opList[_memOpIndex]); + } + + // -------------------------------------------------------------------------- + // [Utils] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE void _updateMemOp() { + Operand* opList = getOpList(); + uint32_t opCount = getOpCount(); + + uint32_t i; + for (i = 0; i < opCount; i++) + if (opList[i].isMem()) + goto _Update; + i = 0xFF; + +_Update: + setMemOpIndex(i); + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Instruction ID, see `kInstId`. + uint16_t _instId; + //! \internal + uint8_t _memOpIndex; + //! \internal + uint8_t _reserved; + //! Instruction options, see `kInstOptions`. + uint32_t _instOptions; + + //! Operands list. + Operand* _opList; +}; + +// ============================================================================ +// [asmjit::JumpNode] +// ============================================================================ + +//! Jump node. +struct JumpNode : public InstNode { + ASMJIT_NO_COPY(JumpNode) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE JumpNode(Compiler* compiler, uint32_t code, uint32_t options, Operand* opList, uint32_t opCount) : + InstNode(compiler, code, options, opList, opCount) {} + ASMJIT_INLINE ~JumpNode() {} + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE TargetNode* getTarget() const { return _target; } + ASMJIT_INLINE JumpNode* getJumpNext() const { return _jumpNext; } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Target node. + TargetNode* _target; + //! Next jump to the same target in a single linked-list. + JumpNode *_jumpNext; +}; + +// ============================================================================ +// [asmjit::FuncNode] +// ============================================================================ + +//! Function declaration node. +//! +//! Functions are base blocks for generating assembler output. Each generated +//! assembler stream needs standard entry and leave sequences which are compatible +//! with the operating system ABI. +//! +//! `FuncNode` can be used to generate function prolog and epilog which are +//! compatible with a given function calling convention and to allocate and +//! manage variables that can be allocated/spilled during compilation phase. +struct FuncNode : public Node { + ASMJIT_NO_COPY(FuncNode) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `FuncNode` instance. + //! + //! Always use `Compiler::addFunc()` to create a `FuncNode` instance. + ASMJIT_INLINE FuncNode(Compiler* compiler) : + Node(compiler, kNodeTypeFunc), + _entryNode(NULL), + _exitNode(NULL), + _decl(NULL), + _end(NULL), + _argList(NULL), + _funcHints(IntUtil::mask(kFuncHintNaked)), + _funcFlags(0), + _expectedStackAlignment(0), + _requiredStackAlignment(0), + _redZoneSize(0), + _spillZoneSize(0), + _argStackSize(0), + _memStackSize(0), + _callStackSize(0) {} + + //! Destroy the `FuncNode` instance. + ASMJIT_INLINE ~FuncNode() {} + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get function entry `TargetNode`. + ASMJIT_INLINE TargetNode* getEntryNode() const { return _entryNode; } + //! Get function exit `TargetNode`. + ASMJIT_INLINE TargetNode* getExitNode() const { return _exitNode; } + + //! Get function entry label. + ASMJIT_INLINE Label getEntryLabel() const { return _entryNode->getLabel(); } + //! Get function exit label. + ASMJIT_INLINE Label getExitLabel() const { return _exitNode->getLabel(); } + + //! Get function `EndNode`. + ASMJIT_INLINE EndNode* getEnd() const { return _end; } + //! Get function declaration. + ASMJIT_INLINE FuncDecl* getDecl() const { return _decl; } + + //! Get arguments list. + ASMJIT_INLINE VarData** getArgList() const { return _argList; } + //! Get arguments count. + ASMJIT_INLINE uint32_t getArgCount() const { return _decl->getArgCount(); } + + //! Get argument at `i`. + ASMJIT_INLINE VarData* getArg(uint32_t i) const { + ASMJIT_ASSERT(i < getArgCount()); + return _argList[i]; + } + + //! Set argument at `i`. + ASMJIT_INLINE void setArg(uint32_t i, VarData* vd) { + ASMJIT_ASSERT(i < getArgCount()); + _argList[i] = vd; + } + + //! Reset argument at `i`. + ASMJIT_INLINE void resetArg(uint32_t i) { + ASMJIT_ASSERT(i < getArgCount()); + _argList[i] = NULL; + } + + //! Get function hints. + ASMJIT_INLINE uint32_t getFuncHints() const { return _funcHints; } + //! Get function flags. + ASMJIT_INLINE uint32_t getFuncFlags() const { return _funcFlags; } + + //! Get whether the _funcFlags has `flag` + ASMJIT_INLINE bool hasFuncFlag(uint32_t flag) const { return (_funcFlags & flag) != 0; } + //! Set function `flag`. + ASMJIT_INLINE void addFuncFlags(uint32_t flags) { _funcFlags |= flags; } + //! Clear function `flag`. + ASMJIT_INLINE void clearFuncFlags(uint32_t flags) { _funcFlags &= ~flags; } + + //! Get whether the function is naked. + ASMJIT_INLINE bool isNaked() const { return hasFuncFlag(kFuncFlagIsNaked); } + //! Get whether the function is also a caller. + ASMJIT_INLINE bool isCaller() const { return hasFuncFlag(kFuncFlagIsCaller); } + //! Get whether the required stack alignment is lower than expected one, + //! thus it has to be aligned manually. + ASMJIT_INLINE bool isStackMisaligned() const { return hasFuncFlag(kFuncFlagIsStackMisaligned); } + //! Get whether the stack pointer is adjusted inside function prolog/epilog. + ASMJIT_INLINE bool isStackAdjusted() const { return hasFuncFlag(kFuncFlagIsStackAdjusted); } + + //! Get whether the function is finished. + ASMJIT_INLINE bool isFinished() const { return hasFuncFlag(kFuncFlagIsFinished); } + + //! Get expected stack alignment. + ASMJIT_INLINE uint32_t getExpectedStackAlignment() const { return _expectedStackAlignment; } + //! Set expected stack alignment. + ASMJIT_INLINE void setExpectedStackAlignment(uint32_t alignment) { _expectedStackAlignment = alignment; } + + //! Get required stack alignment. + ASMJIT_INLINE uint32_t getRequiredStackAlignment() const { return _requiredStackAlignment; } + //! Set required stack alignment. + ASMJIT_INLINE void setRequiredStackAlignment(uint32_t alignment) { _requiredStackAlignment = alignment; } + + //! Update required stack alignment so it's not lower than expected + //! stack alignment. + ASMJIT_INLINE void updateRequiredStackAlignment() { + if (_requiredStackAlignment <= _expectedStackAlignment) { + _requiredStackAlignment = _expectedStackAlignment; + clearFuncFlags(kFuncFlagIsStackMisaligned); + } + else { + addFuncFlags(kFuncFlagIsStackMisaligned); + } + } + + //! Set stack "Red Zone" size. + ASMJIT_INLINE uint32_t getRedZoneSize() const { return _redZoneSize; } + //! Get stack "Red Zone" size. + ASMJIT_INLINE void setRedZoneSize(uint32_t s) { _redZoneSize = static_cast(s); } + + //! Set stack "Spill Zone" size. + ASMJIT_INLINE uint32_t getSpillZoneSize() const { return _spillZoneSize; } + //! Get stack "Spill Zone" size. + ASMJIT_INLINE void setSpillZoneSize(uint32_t s) { _spillZoneSize = static_cast(s); } + + //! Get stack size used by function arguments. + ASMJIT_INLINE uint32_t getArgStackSize() const { return _argStackSize; } + + //! Get stack size used by variables and memory allocated on the stack. + ASMJIT_INLINE uint32_t getMemStackSize() const { return _memStackSize; } + + //! Get stack size used by function calls. + ASMJIT_INLINE uint32_t getCallStackSize() const { return _callStackSize; } + //! Merge stack size used by function call with `s`. + ASMJIT_INLINE void mergeCallStackSize(uint32_t s) { if (_callStackSize < s) _callStackSize = s; } + + // -------------------------------------------------------------------------- + // [Hints] + // -------------------------------------------------------------------------- + + //! Set function hint. + ASMJIT_INLINE void setHint(uint32_t hint, uint32_t value) { + ASMJIT_ASSERT(hint <= 31); + ASMJIT_ASSERT(value <= 1); + + _funcHints &= ~(1 << hint); + _funcHints |= (value << hint); + } + + //! Get function hint. + ASMJIT_INLINE uint32_t getHint(uint32_t hint) const { + ASMJIT_ASSERT(hint <= 31); + return (_funcHints >> hint) & 0x1; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Function entry. + TargetNode* _entryNode; + //! Function exit. + TargetNode* _exitNode; + + //! Function declaration. + FuncDecl* _decl; + //! Function end. + EndNode* _end; + + //! Arguments list as `VarData`. + VarData** _argList; + + //! Function hints; + uint32_t _funcHints; + //! Function flags. + uint32_t _funcFlags; + + //! Expected stack alignment (we depend on this value). + //! + //! \note It can be global alignment given by the OS or described by an + //! target platform ABI. + uint32_t _expectedStackAlignment; + //! Required stack alignment (usually for multimedia instructions). + uint32_t _requiredStackAlignment; + + //! The "Red Zone" size - count of bytes which might be accessed without + //! adjusting the stack pointer. + uint16_t _redZoneSize; + //! Spill zone size (used by WIN64 ABI). + uint16_t _spillZoneSize; + + //! Stack size needed for function arguments. + uint32_t _argStackSize; + //! Stack size needed for all variables and memory allocated on the stack. + uint32_t _memStackSize; + //! Stack size needed to call other functions. + uint32_t _callStackSize; +}; + +// ============================================================================ +// [asmjit::EndNode] +// ============================================================================ + +//! End of function/block node. +struct EndNode : public Node { + ASMJIT_NO_COPY(EndNode) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `EndNode` instance. + ASMJIT_INLINE EndNode(Compiler* compiler) : Node(compiler, kNodeTypeEnd) { + _flags |= kNodeFlagIsRet; + } + + //! Destroy the `EndNode` instance. + ASMJIT_INLINE ~EndNode() {} +}; + +// ============================================================================ +// [asmjit::RetNode] +// ============================================================================ + +//! Function return node. +struct RetNode : public Node { + ASMJIT_NO_COPY(RetNode) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `RetNode` instance. + ASMJIT_INLINE RetNode(Compiler* compiler, const Operand& o0, const Operand& o1) : Node(compiler, kNodeTypeRet) { + _flags |= kNodeFlagIsRet; + _ret[0] = o0; + _ret[1] = o1; + } + + //! Destroy the `RetNode` instance. + ASMJIT_INLINE ~RetNode() {} + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get the first return operand. + ASMJIT_INLINE Operand& getFirst() { return _ret[0]; } + //! \overload + ASMJIT_INLINE const Operand& getFirst() const { return _ret[0]; } + + //! Get the second return operand. + ASMJIT_INLINE Operand& getSecond() { return _ret[1]; } + //! \overload + ASMJIT_INLINE const Operand& getSecond() const { return _ret[1]; } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Ret operand(s). + Operand _ret[2]; +}; + +// ============================================================================ +// [asmjit::CallNode] +// ============================================================================ + +//! Function-call node. +struct CallNode : public Node { + ASMJIT_NO_COPY(CallNode) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `CallNode` instance. + ASMJIT_INLINE CallNode(Compiler* compiler, const Operand& target) : + Node(compiler, kNodeTypeCall), + _decl(NULL), + _target(target), + _args(NULL) {} + + //! Destroy the `CallNode` instance. + ASMJIT_INLINE ~CallNode() {} + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get function declaration. + ASMJIT_INLINE FuncDecl* getDecl() const { return _decl; } + + //! Get target operand. + ASMJIT_INLINE Operand& getTarget() { return _target; } + //! \overload + ASMJIT_INLINE const Operand& getTarget() const { return _target; } + + //! Get return at `i`. + ASMJIT_INLINE Operand& getRet(uint32_t i = 0) { + ASMJIT_ASSERT(i < 2); + return _ret[i]; + } + //! \overload + ASMJIT_INLINE const Operand& getRet(uint32_t i = 0) const { + ASMJIT_ASSERT(i < 2); + return _ret[i]; + } + + //! Get argument at `i`. + ASMJIT_INLINE Operand& getArg(uint32_t i) { + ASMJIT_ASSERT(i < kFuncArgCountLoHi); + return _args[i]; + } + //! \overload + ASMJIT_INLINE const Operand& getArg(uint32_t i) const { + ASMJIT_ASSERT(i < kFuncArgCountLoHi); + return _args[i]; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Function declaration. + FuncDecl* _decl; + + //! Target (address of function, register, label, ...). + Operand _target; + //! Return. + Operand _ret[2]; + //! Arguments. + Operand* _args; +}; + +// ============================================================================ +// [asmjit::SArgNode] +// ============================================================================ + +//! Function-call 'argument on the stack' node. +struct SArgNode : public Node { + ASMJIT_NO_COPY(SArgNode) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `SArgNode` instance. + ASMJIT_INLINE SArgNode(Compiler* compiler, CallNode* call, VarData* sVd, VarData* cVd) : + Node(compiler, kNodeTypeSArg), + _call(call), + _sVd(sVd), + _cVd(cVd), + _args(0) {} + + //! Destroy the `SArgNode` instance. + ASMJIT_INLINE ~SArgNode() {} + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get the associated function-call. + ASMJIT_INLINE CallNode* getCall() const { return _call; } + //! Get source variable. + ASMJIT_INLINE VarData* getSVd() const { return _sVd; } + //! Get conversion variable. + ASMJIT_INLINE VarData* getCVd() const { return _cVd; } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Associated `CallNode`. + CallNode* _call; + //! Source variable. + VarData* _sVd; + //! Temporary variable used for conversion (or NULL). + VarData* _cVd; + + //! Affected arguments bit-array. + uint32_t _args; +}; + +//! \} + +// ============================================================================ +// [asmjit::Compiler] +// ============================================================================ + +//! \addtogroup asmjit_base_general +//! \{ + +//! Base compiler. +//! +//! \sa Assembler. +struct ASMJIT_VCLASS Compiler : public CodeGen { + ASMJIT_NO_COPY(Compiler) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `Compiler` instance. + ASMJIT_API Compiler(Runtime* runtime); + //! Destroy the `Compiler` instance. + ASMJIT_API virtual ~Compiler(); + + // -------------------------------------------------------------------------- + // [LookAhead] + // -------------------------------------------------------------------------- + + //! Get maximum look ahead. + ASMJIT_INLINE uint32_t getMaxLookAhead() const { + return _maxLookAhead; + } + + //! Set maximum look ahead to `val`. + ASMJIT_INLINE void setMaxLookAhead(uint32_t val) { + _maxLookAhead = val; + } + + // -------------------------------------------------------------------------- + // [Clear / Reset] + // -------------------------------------------------------------------------- + + //! Reset the compiler. + //! + //! If `releaseMemory` is true all buffers will be released to the system. + ASMJIT_API void reset(bool releaseMemory = false); + + // -------------------------------------------------------------------------- + // [Nodes] + // -------------------------------------------------------------------------- + + template + ASMJIT_INLINE T* newNode() { + void* p = _baseZone.alloc(sizeof(T)); + return new(p) T(this); + } + + template + ASMJIT_INLINE T* newNode(P0 p0) { + void* p = _baseZone.alloc(sizeof(T)); + return new(p) T(this, p0); + } + + template + ASMJIT_INLINE T* newNode(P0 p0, P1 p1) { + void* p = _baseZone.alloc(sizeof(T)); + return new(p) T(this, p0, p1); + } + + template + ASMJIT_INLINE T* newNode(P0 p0, P1 p1, P2 p2) { + void* p = _baseZone.alloc(sizeof(T)); + return new(p) T(this, p0, p1, p2); + } + + //! Get first node. + ASMJIT_INLINE Node* getFirstNode() const { return _firstNode; } + //! Get last node. + ASMJIT_INLINE Node* getLastNode() const { return _lastNode; } + + //! Get current node. + //! + //! \note If this method returns `NULL` it means that nothing has been emitted + //! yet. + ASMJIT_INLINE Node* getCursor() const { return _cursor; } + //! Set the current node without returning the previous node (private). + ASMJIT_INLINE void _setCursor(Node* node) { _cursor = node; } + //! Set the current node to `node` and return the previous one. + ASMJIT_API Node* setCursor(Node* node); + + //! Add node `node` after current and set current to `node`. + ASMJIT_API Node* addNode(Node* node); + //! Add node before `ref`. + ASMJIT_API Node* addNodeBefore(Node* node, Node* ref); + //! Add node after `ref`. + ASMJIT_API Node* addNodeAfter(Node* node, Node* ref); + //! Remove node `node`. + ASMJIT_API Node* removeNode(Node* node); + //! Remove multiple nodes. + ASMJIT_API void removeNodes(Node* first, Node* last); + + // -------------------------------------------------------------------------- + // [Func] + // -------------------------------------------------------------------------- + + //! Get current function. + ASMJIT_INLINE FuncNode* getFunc() const { return _func; } + + // -------------------------------------------------------------------------- + // [Align] + // -------------------------------------------------------------------------- + + //! Create a new `AlignNode`. + ASMJIT_API AlignNode* newAlign(uint32_t mode, uint32_t offset); + //! Add a new `AlignNode`. + ASMJIT_API AlignNode* addAlign(uint32_t mode, uint32_t offset); + + //! Align target buffer to `m` bytes. + //! + //! Typical usage of this is to align labels at start of the inner loops. + //! + //! Inserts `nop()` instructions or CPU optimized NOPs. + ASMJIT_INLINE AlignNode* align(uint32_t mode, uint32_t offset) { + return addAlign(mode, offset); + } + + // -------------------------------------------------------------------------- + // [Target] + // -------------------------------------------------------------------------- + + //! Create a new `TargetNode`. + ASMJIT_API TargetNode* newTarget(); + //! Add a new `TargetNode`. + ASMJIT_API TargetNode* addTarget(); + + //! Get `TargetNode` by `id`. + ASMJIT_INLINE TargetNode* getTargetById(uint32_t id) { + ASMJIT_ASSERT(OperandUtil::isLabelId(id)); + ASMJIT_ASSERT(id < _targetList.getLength()); + + return _targetList[id]; + } + + //! Get `TargetNode` by `label`. + ASMJIT_INLINE TargetNode* getTarget(const Label& label) { + return getTargetById(label.getId()); + } + + // -------------------------------------------------------------------------- + // [Label] + // -------------------------------------------------------------------------- + + //! Get count of created labels. + ASMJIT_INLINE size_t getLabelsCount() const { + return _targetList.getLength(); + } + + //! Get whether `label` is created. + ASMJIT_INLINE bool isLabelValid(const Label& label) const { + return isLabelValid(label.getId()); + } + + //! \overload + ASMJIT_INLINE bool isLabelValid(uint32_t id) const { + return static_cast(id) < _targetList.getLength(); + } + + //! Get `TargetNode` by `label`. + ASMJIT_INLINE TargetNode* getTargetByLabel(const Label& label) { + return getTargetByLabel(label.getId()); + } + + //! \overload + ASMJIT_INLINE TargetNode* getTargetByLabel(uint32_t id) { + ASMJIT_ASSERT(isLabelValid(id)); + return _targetList[id]; + } + + //! Get `label` offset or -1 if the label is not bound. + //! + //! This method can be only called after the code has been serialized to the + //! `Assembler`, otherwise the offset returned will be -1 (even if the label + //! has been bound). + ASMJIT_INLINE intptr_t getLabelOffset(const Label& label) const { + return getLabelOffset(label.getId()); + } + + //! \overload + ASMJIT_INLINE intptr_t getLabelOffset(uint32_t id) const { + ASMJIT_ASSERT(isLabelValid(id)); + return _targetList[id]->getOffset(); + } + + //! \internal + //! + //! Create and initialize a new `Label`. + ASMJIT_API Error _newLabel(Label* dst); + + //! Create and return a new `Label`. + ASMJIT_INLINE Label newLabel() { + Label result(NoInit); + _newLabel(&result); + return result; + } + + //! Bind label to the current offset. + //! + //! \note Label can be bound only once! + ASMJIT_API Error bind(const Label& label); + + // -------------------------------------------------------------------------- + // [Embed] + // -------------------------------------------------------------------------- + + //! Create a new `EmbedNode`. + ASMJIT_API EmbedNode* newEmbed(const void* data, uint32_t size); + //! Add a new `EmbedNode`. + ASMJIT_API EmbedNode* addEmbed(const void* data, uint32_t size); + + //! Embed data. + ASMJIT_INLINE EmbedNode* embed(const void* data, uint32_t size) { + return addEmbed(data, size); + } + + // -------------------------------------------------------------------------- + // [Comment] + // -------------------------------------------------------------------------- + + //! Create a new `CommentNode`. + ASMJIT_API CommentNode* newComment(const char* str); + //! Add a new `CommentNode`. + ASMJIT_API CommentNode* addComment(const char* str); + + //! Emit a single comment line. + ASMJIT_API CommentNode* comment(const char* fmt, ...); + + // -------------------------------------------------------------------------- + // [Hint] + // -------------------------------------------------------------------------- + + //! Create a new `HintNode`. + ASMJIT_API HintNode* newHint(Var& var, uint32_t hint, uint32_t value); + //! Add a new `HintNode`. + ASMJIT_API HintNode* addHint(Var& var, uint32_t hint, uint32_t value); + + // -------------------------------------------------------------------------- + // [Vars] + // -------------------------------------------------------------------------- + + //! Get whether variable `var` is created. + ASMJIT_INLINE bool isVarValid(const Var& var) const { + return static_cast(var.getId() & kOperandIdNum) < _varList.getLength(); + } + + //! \internal + //! + //! Get `VarData` by `var`. + ASMJIT_INLINE VarData* getVd(const Var& var) const { + return getVdById(var.getId()); + } + + //! \internal + //! + //! Get `VarData` by `id`. + ASMJIT_INLINE VarData* getVdById(uint32_t id) const { + ASMJIT_ASSERT(id != kInvalidValue); + ASMJIT_ASSERT(static_cast(id & kOperandIdNum) < _varList.getLength()); + + return _varList[id & kOperandIdNum]; + } + + //! \internal + //! + //! Get an array of 'VarData*'. + ASMJIT_INLINE VarData** _getVdArray() const { + return const_cast(_varList.getData()); + } + + //! \internal + //! + //! Create a new `VarData`. + ASMJIT_API VarData* _newVd(uint32_t type, uint32_t size, uint32_t c, const char* name); + + //! Create a new `Var`. + virtual Error _newVar(Var* var, uint32_t type, const char* name) = 0; + + //! Alloc variable `var`. + ASMJIT_API void alloc(Var& var); + //! Alloc variable `var` using `regIndex` as a register index. + ASMJIT_API void alloc(Var& var, uint32_t regIndex); + //! Alloc variable `var` using `reg` as a register operand. + ASMJIT_API void alloc(Var& var, const Reg& reg); + //! Spill variable `var`. + ASMJIT_API void spill(Var& var); + //! Save variable `var` if the status is `modified` at this point. + ASMJIT_API void save(Var& var); + //! Unuse variable `var`. + ASMJIT_API void unuse(Var& var); + + //! Alloc variable `var` (if initialized), but only if it's initialized. + ASMJIT_INLINE void allocUnsafe(Var& var) { + if (var.isInitialized()) + alloc(var); + } + + //! Alloc variable `var` (if initialized) using `regIndex` as a register index + ASMJIT_INLINE void allocUnsafe(Var& var, uint32_t regIndex) { + if (var.isInitialized()) + alloc(var, regIndex); + } + + //! Alloc variable `var` (if initialized) using `reg` as a register operand. + ASMJIT_INLINE void allocUnsafe(Var& var, const Reg& reg) { + if (var.isInitialized()) + alloc(var, reg); + } + + //! Spill variable `var` (if initialized). + ASMJIT_INLINE void spillUnsafe(Var& var) { + if (var.isInitialized()) + spill(var); + } + + //! Save variable `var` (if initialized) if the status is `modified` at this point. + ASMJIT_INLINE void saveUnsafe(Var& var) { + if (var.isInitialized()) + save(var); + } + + //! Unuse variable `var` (if initialized). + ASMJIT_INLINE void unuseUnsafe(Var& var) { + if (var.isInitialized()) + unuse(var); + } + + //! Get priority of variable `var`. + ASMJIT_API uint32_t getPriority(Var& var) const; + //! Set priority of variable `var` to `priority`. + ASMJIT_API void setPriority(Var& var, uint32_t priority); + + //! Get save-on-unuse `var` property. + ASMJIT_API bool getSaveOnUnuse(Var& var) const; + //! Set save-on-unuse `var` property to `value`. + ASMJIT_API void setSaveOnUnuse(Var& var, bool value); + + //! Rename variable `var` to `name`. + //! + //! \note Only new name will appear in the logger. + ASMJIT_API void rename(Var& var, const char* name); + + // -------------------------------------------------------------------------- + // [Stack] + // -------------------------------------------------------------------------- + + //! \internal + //! + //! Create a new memory chunk allocated on the current function's stack. + virtual Error _newStack(BaseMem* mem, uint32_t size, uint32_t alignment, const char* name) = 0; + + // -------------------------------------------------------------------------- + // [Const] + // -------------------------------------------------------------------------- + + //! \internal + //! + //! Put data to a constant-pool and get a memory reference to it. + virtual Error _newConst(BaseMem* mem, uint32_t scope, const void* data, size_t size) = 0; + + // -------------------------------------------------------------------------- + // [Assembler] + // -------------------------------------------------------------------------- + + //! Get an assembler instance that is associated with the compiler. + //! + //! \note One instance of `Assembler` is shared and has lifetime same as the + //! compiler, however, each call to `getAssembler()` resets the assembler so + //! new code can be serialized into it. + ASMJIT_API Assembler* getAssembler(); + + //! \internal + //! + //! Create a new `Assembler` instance associated with the compiler. + virtual Assembler* _newAssembler() = 0; + + // -------------------------------------------------------------------------- + // [Serialize] + // -------------------------------------------------------------------------- + + //! Serialize a compiled code to `assembler`. + virtual Error serialize(Assembler* assembler) = 0; + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Internal assembler. + Assembler* _assembler; + + //! Flow id added to each node created (used only by `Context)`. + uint32_t _nodeFlowId; + //! Flags added to each node created (used only by `Context)`. + uint32_t _nodeFlags; + + //! Maximum count of nodes to look ahead when allocating/spilling + //! registers. + uint32_t _maxLookAhead; + + //! Variable mapping (translates incoming kVarType into target). + const uint8_t* _targetVarMapping; + + //! First node. + Node* _firstNode; + //! Last node. + Node* _lastNode; + + //! Current node. + Node* _cursor; + //! Current function. + FuncNode* _func; + + //! Variable zone. + Zone _varZone; + //! String/data zone. + Zone _stringZone; + //! Local constant pool zone. + Zone _localConstZone; + + //! TargetNode list. + PodVector _targetList; + //! VarData list. + PodVector _varList; + + //! Local constant pool, flushed at the end of each function. + ConstPool _localConstPool; + //! Global constant pool, flushed at the end of the compilation. + ConstPool _globalConstPool; + + //! Label to start of the local constant pool. + Label _localConstPoolLabel; + //! Label to start of the global constant pool. + Label _globalConstPoolLabel; +}; + +//! \} + +// ============================================================================ +// [Defined-Later] +// ============================================================================ + +ASMJIT_INLINE Label::Label(Compiler& c) : Operand(NoInit) { + c._newLabel(this); +} + +ASMJIT_INLINE Node::Node(Compiler* compiler, uint32_t type) { + _prev = NULL; + _next = NULL; + _type = static_cast(type); + _opCount = 0; + _flags = static_cast(compiler->_nodeFlags); + _flowId = compiler->_nodeFlowId; + _comment = NULL; + _map = NULL; + _liveness = NULL; + _state = NULL; +} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // !ASMJIT_DISABLE_COMPILER +#endif // _ASMJIT_BASE_COMPILER_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/constpool.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/constpool.h new file mode 100644 index 0000000..8f66b8b --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/constpool.h @@ -0,0 +1,303 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_CONSTPOOL_H +#define _ASMJIT_BASE_CONSTPOOL_H + +// [Dependencies - AsmJit] +#include "../base/error.h" +#include "../base/zone.h" + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_util +//! \{ + +// ============================================================================ +// [asmjit::ConstPoolNode] +// ============================================================================ + +//! \internal +//! +//! Zone-allocated constant-pool node. +struct ConstPoolNode { + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE void* getData() const { + return static_cast(const_cast(this) + 1); + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Left/Right nodes. + ConstPoolNode* _link[2]; + //! Horizontal level for balance. + uint32_t _level : 31; + //! Whether this constant is shared with another. + uint32_t _shared : 1; + //! Data offset from the beginning of the pool. + uint32_t _offset; +}; + +// ============================================================================ +// [asmjit::ConstPoolTree] +// ============================================================================ + +//! \internal +//! +//! Zone-allocated constant-pool tree. +struct ConstPoolTree { + enum { + //! Maximum tree height == log2(1 << 64). + kHeightLimit = 64 + }; + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE ConstPoolTree(size_t dataSize = 0) : + _root(NULL), + _length(0), + _dataSize(dataSize) {} + ASMJIT_INLINE ~ConstPoolTree() {} + + // -------------------------------------------------------------------------- + // [Reset] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE void reset() { + _root = NULL; + _length = 0; + } + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE bool isEmpty() const { + return _length == 0; + } + + ASMJIT_INLINE size_t getLength() const { + return _length; + } + + ASMJIT_INLINE void setDataSize(size_t dataSize) { + ASMJIT_ASSERT(isEmpty()); + _dataSize = dataSize; + } + + // -------------------------------------------------------------------------- + // [Ops] + // -------------------------------------------------------------------------- + + ASMJIT_API ConstPoolNode* get(const void* data); + ASMJIT_API void put(ConstPoolNode* node); + + // -------------------------------------------------------------------------- + // [Iterate] + // -------------------------------------------------------------------------- + + template + ASMJIT_INLINE void iterate(Visitor& visitor) const { + ConstPoolNode* node = const_cast(_root); + ConstPoolNode* link; + + ConstPoolNode* stack[kHeightLimit]; + + if (node == NULL) + return; + + size_t top = 0; + + for (;;) { + link = node->_link[0]; + + if (link != NULL) { + ASMJIT_ASSERT(top != kHeightLimit); + stack[top++] = node; + + node = link; + continue; + } + +_Visit: + visitor.visit(node); + link = node->_link[1]; + + if (link != NULL) { + node = link; + continue; + } + + if (top == 0) + break; + + node = stack[--top]; + goto _Visit; + } + } + + // -------------------------------------------------------------------------- + // [Helpers] + // -------------------------------------------------------------------------- + + static ASMJIT_INLINE ConstPoolNode* _newNode(Zone* zone, const void* data, size_t size, size_t offset, bool shared) { + ConstPoolNode* node = zone->allocT(sizeof(ConstPoolNode) + size); + if (node == NULL) + return NULL; + + node->_link[0] = NULL; + node->_link[1] = NULL; + node->_level = 1; + node->_shared = shared; + node->_offset = static_cast(offset); + + ::memcpy(node->getData(), data, size); + return node; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Root of the tree + ConstPoolNode* _root; + //! Length of the tree (count of nodes). + size_t _length; + //! Size of the data. + size_t _dataSize; +}; + +// ============================================================================ +// [asmjit::ConstPoolGap] +// ============================================================================ + +//! \internal +//! +//! Zone-allocated constant-pool gap. +struct ConstPoolGap { + //! Link to the next gap + ConstPoolGap* _next; + //! Offset of the gap. + size_t _offset; + //! Remaining bytes of the gap (basically a gap size). + size_t _length; +}; + +// ============================================================================ +// [asmjit::ConstPool] +// ============================================================================ + +//! Constant pool. +struct ConstPool { + ASMJIT_NO_COPY(ConstPool) + + enum { + kIndex1 = 0, + kIndex2 = 1, + kIndex4 = 2, + kIndex8 = 3, + kIndex16 = 4, + kIndex32 = 5, + kIndexCount = 6 + }; + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + ASMJIT_API ConstPool(Zone* zone); + ASMJIT_API ~ConstPool(); + + // -------------------------------------------------------------------------- + // [Reset] + // -------------------------------------------------------------------------- + + ASMJIT_API void reset(); + + // -------------------------------------------------------------------------- + // [Ops] + // -------------------------------------------------------------------------- + + //! Get whether the constant-pool is empty. + ASMJIT_INLINE bool isEmpty() const { + return _size == 0; + } + + //! Get the size of the constant-pool in bytes. + ASMJIT_INLINE size_t getSize() const { + return _size; + } + + //! Get minimum alignment. + ASMJIT_INLINE size_t getAlignment() const { + return _alignment; + } + + //! Add a constant to the constant pool. + //! + //! The constant must have known size, which is 1, 2, 4, 8, 16 or 32 bytes. + //! The constant is added to the pool only if it doesn't not exist, otherwise + //! cached value is returned. + //! + //! AsmJit is able to subdivide added constants, so for example if you add + //! 8-byte constant 0x1122334455667788 it will create the following slots: + //! + //! 8-byte: 0x1122334455667788 + //! 4-byte: 0x11223344, 0x55667788 + //! + //! The reason is that when combining MMX/SSE/AVX code some patterns are used + //! frequently. However, AsmJit is not able to reallocate a constant that has + //! been already added. For example if you try to add 4-byte constant and then + //! 8-byte constant having the same 4-byte pattern as the previous one, two + //! independent slots will be generated by the pool. + ASMJIT_API Error add(const void* data, size_t size, size_t& dstOffset); + + // -------------------------------------------------------------------------- + // [Fill] + // -------------------------------------------------------------------------- + + //! Fill the destination with the constants from the pool. + ASMJIT_API void fill(void* dst); + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Zone allocator. + Zone* _zone; + //! Tree per size. + ConstPoolTree _tree[kIndexCount]; + //! Gaps per size. + ConstPoolGap* _gaps[kIndexCount]; + //! Gaps pool + ConstPoolGap* _gapPool; + + //! Size of the pool (in bytes). + size_t _size; + //! Alignemnt. + size_t _alignment; +}; + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_CONSTPOOL_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/containers.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/containers.h new file mode 100644 index 0000000..c6dc70d --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/containers.h @@ -0,0 +1,350 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_CONTAINERS_H +#define _ASMJIT_BASE_CONTAINERS_H + +// [Dependencies - AsmJit] +#include "../base/error.h" +#include "../base/globals.h" + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_util +//! \{ + +// ============================================================================ +// [asmjit::PodVectorData] +// ============================================================================ + +//! \internal +struct PodVectorData { + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get data. + ASMJIT_INLINE void* getData() const { + return (void*)(this + 1); + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Capacity of the vector. + size_t capacity; + //! Length of the vector. + size_t length; +}; + +// ============================================================================ +// [asmjit::PodVectorBase] +// ============================================================================ + +//! \internal +struct PodVectorBase { + static ASMJIT_API const PodVectorData _nullData; + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new instance of `PodVectorBase`. + ASMJIT_INLINE PodVectorBase() : + _d(const_cast(&_nullData)) {} + + //! Destroy the `PodVectorBase` and data. + ASMJIT_INLINE ~PodVectorBase() { + reset(true); + } + + // -------------------------------------------------------------------------- + // [Reset] + // -------------------------------------------------------------------------- + + //! Reset the vector data and set its `length` to zero. + //! + //! If `releaseMemory` is true the vector buffer will be released to the + //! system. + ASMJIT_API void reset(bool releaseMemory = false); + + // -------------------------------------------------------------------------- + // [Grow / Reserve] + // -------------------------------------------------------------------------- + +protected: + ASMJIT_API Error _grow(size_t n, size_t sizeOfT); + ASMJIT_API Error _reserve(size_t n, size_t sizeOfT); + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + +public: + PodVectorData* _d; +}; + +// ============================================================================ +// [asmjit::PodVector] +// ============================================================================ + +//! Template used to store and manage array of POD data. +//! +//! This template has these adventages over other vector<> templates: +//! - Non-copyable (designed to be non-copyable, we want it) +//! - No copy-on-write (some implementations of stl can use it) +//! - Optimized for working only with POD types +//! - Uses ASMJIT_... memory management macros +template +struct PodVector : PodVectorBase { + ASMJIT_NO_COPY(PodVector) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new instance of `PodVector`. + ASMJIT_INLINE PodVector() {} + //! Destroy the `PodVector<>` and data. + ASMJIT_INLINE ~PodVector() {} + + // -------------------------------------------------------------------------- + // [Data] + // -------------------------------------------------------------------------- + + //! Get whether the vector is empty. + ASMJIT_INLINE bool isEmpty() const { + return _d->length == 0; + } + + //! Get length. + ASMJIT_INLINE size_t getLength() const { + return _d->length; + } + + //! Get capacity. + ASMJIT_INLINE size_t getCapacity() const { + return _d->capacity; + } + + //! Get data. + ASMJIT_INLINE T* getData() { + return static_cast(_d->getData()); + } + + //! \overload + ASMJIT_INLINE const T* getData() const { + return static_cast(_d->getData()); + } + + // -------------------------------------------------------------------------- + // [Grow / Reserve] + // -------------------------------------------------------------------------- + + //! Called to grow the buffer to fit at least `n` elements more. + ASMJIT_INLINE Error _grow(size_t n) { + return PodVectorBase::_grow(n, sizeof(T)); + } + + //! Realloc internal array to fit at least `n` items. + ASMJIT_INLINE Error _reserve(size_t n) { + return PodVectorBase::_reserve(n, sizeof(T)); + } + + // -------------------------------------------------------------------------- + // [Ops] + // -------------------------------------------------------------------------- + + //! Prepend `item` to vector. + Error prepend(const T& item) { + PodVectorData* d = _d; + + if (d->length == d->capacity) { + ASMJIT_PROPAGATE_ERROR(_grow(1)); + _d = d; + } + + ::memmove(static_cast(d->getData()) + 1, d->getData(), d->length * sizeof(T)); + ::memcpy(d->getData(), &item, sizeof(T)); + + d->length++; + return kErrorOk; + } + + //! Insert an `item` at the `index`. + Error insert(size_t index, const T& item) { + PodVectorData* d = _d; + ASMJIT_ASSERT(index <= d->length); + + if (d->length == d->capacity) { + ASMJIT_PROPAGATE_ERROR(_grow(1)); + d = _d; + } + + T* dst = static_cast(d->getData()) + index; + ::memmove(dst + 1, dst, d->length - index); + ::memcpy(dst, &item, sizeof(T)); + + d->length++; + return kErrorOk; + } + + //! Append `item` to vector. + Error append(const T& item) { + PodVectorData* d = _d; + + if (d->length == d->capacity) { + ASMJIT_PROPAGATE_ERROR(_grow(1)); + d = _d; + } + + ::memcpy(static_cast(d->getData()) + d->length, &item, sizeof(T)); + + d->length++; + return kErrorOk; + } + + //! Get index of `val` or `kInvalidIndex` if not found. + size_t indexOf(const T& val) const { + PodVectorData* d = _d; + + const T* data = static_cast(d->getData()); + size_t len = d->length; + + for (size_t i = 0; i < len; i++) + if (data[i] == val) + return i; + + return kInvalidIndex; + } + + //! Remove item at index `i`. + void removeAt(size_t i) { + PodVectorData* d = _d; + ASMJIT_ASSERT(i < d->length); + + T* data = static_cast(d->getData()) + i; + d->length--; + ::memmove(data, data + 1, d->length - i); + } + + //! Swap this pod-vector with `other`. + void swap(PodVector& other) { + T* otherData = other._d; + other._d = _d; + _d = otherData; + } + + //! Get item at index `i`. + ASMJIT_INLINE T& operator[](size_t i) { + ASMJIT_ASSERT(i < getLength()); + return getData()[i]; + } + + //! Get item at index `i`. + ASMJIT_INLINE const T& operator[](size_t i) const { + ASMJIT_ASSERT(i < getLength()); + return getData()[i]; + } +}; + +// ============================================================================ +// [asmjit::PodList] +// ============================================================================ + +//! \internal +template +struct PodList { + ASMJIT_NO_COPY(PodList) + + // -------------------------------------------------------------------------- + // [Link] + // -------------------------------------------------------------------------- + + struct Link { + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get next node. + ASMJIT_INLINE Link* getNext() const { return _next; } + + //! Get value. + ASMJIT_INLINE T getValue() const { return _value; } + //! Set value to `value`. + ASMJIT_INLINE void setValue(const T& value) { _value = value; } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + Link* _next; + T _value; + }; + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE PodList() : _first(NULL), _last(NULL) {} + ASMJIT_INLINE ~PodList() {} + + // -------------------------------------------------------------------------- + // [Data] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE bool isEmpty() const { return _first != NULL; } + + ASMJIT_INLINE Link* getFirst() const { return _first; } + ASMJIT_INLINE Link* getLast() const { return _last; } + + // -------------------------------------------------------------------------- + // [Ops] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE void reset() { + _first = NULL; + _last = NULL; + } + + ASMJIT_INLINE void prepend(Link* link) { + link->_next = _first; + if (_first == NULL) + _last = link; + _first = link; + } + + ASMJIT_INLINE void append(Link* link) { + link->_next = NULL; + if (_first == NULL) + _first = link; + else + _last->_next = link; + _last = link; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + Link* _first; + Link* _last; +}; + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_CONTAINERS_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/context_p.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/context_p.h new file mode 100644 index 0000000..bd23501 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/context_p.h @@ -0,0 +1,307 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_CONTEXT_P_H +#define _ASMJIT_BASE_CONTEXT_P_H + +#include "../build.h" +#if !defined(ASMJIT_DISABLE_COMPILER) + +// [Dependencies - AsmJit] +#include "../base/compiler.h" +#include "../base/zone.h" + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_compiler +//! \{ + +// ============================================================================ +// [asmjit::Context] +// ============================================================================ + +//! \internal +//! +//! Code generation context is the logic behind `Compiler`. The context is +//! used to compile the code stored in `Compiler`. +struct Context { + ASMJIT_NO_COPY(Context) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + Context(Compiler* compiler); + virtual ~Context(); + + // -------------------------------------------------------------------------- + // [Reset] + // -------------------------------------------------------------------------- + + //! Reset the whole context. + virtual void reset(bool releaseMemory = false); + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get compiler. + ASMJIT_INLINE Compiler* getCompiler() const { return _compiler; } + + //! Get function. + ASMJIT_INLINE FuncNode* getFunc() const { return _func; } + //! Get stop node. + ASMJIT_INLINE Node* getStop() const { return _stop; } + + //! Get start of the current scope. + ASMJIT_INLINE Node* getStart() const { return _start; } + //! Get end of the current scope. + ASMJIT_INLINE Node* getEnd() const { return _end; } + + //! Get extra block. + ASMJIT_INLINE Node* getExtraBlock() const { return _extraBlock; } + //! Set extra block. + ASMJIT_INLINE void setExtraBlock(Node* node) { _extraBlock = node; } + + // -------------------------------------------------------------------------- + // [Error] + // -------------------------------------------------------------------------- + + //! Get the last error code. + ASMJIT_INLINE Error getError() const { + return getCompiler()->getError(); + } + + //! Set the last error code and propagate it through the error handler. + ASMJIT_INLINE Error setError(Error error, const char* message = NULL) { + return getCompiler()->setError(error, message); + } + + // -------------------------------------------------------------------------- + // [State] + // -------------------------------------------------------------------------- + + //! Get current state. + ASMJIT_INLINE VarState* getState() const { + return _state; + } + + //! Load current state from `target` state. + virtual void loadState(VarState* src) = 0; + + //! Save current state, returning new `VarState` instance. + virtual VarState* saveState() = 0; + + //! Change the current state to `target` state. + virtual void switchState(VarState* src) = 0; + + //! Change the current state to the intersection of two states `a` and `b`. + virtual void intersectStates(VarState* a, VarState* b) = 0; + + // -------------------------------------------------------------------------- + // [Context] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE Error _registerContextVar(VarData* vd) { + if (vd->hasContextId()) + return kErrorOk; + + uint32_t cid = static_cast(_contextVd.getLength()); + ASMJIT_PROPAGATE_ERROR(_contextVd.append(vd)); + + vd->setContextId(cid); + return kErrorOk; + } + + // -------------------------------------------------------------------------- + // [Mem] + // -------------------------------------------------------------------------- + + MemCell* _newVarCell(VarData* vd); + MemCell* _newStackCell(uint32_t size, uint32_t alignment); + + ASMJIT_INLINE MemCell* getVarCell(VarData* vd) { + MemCell* cell = vd->getMemCell(); + return cell ? cell : _newVarCell(vd); + } + + virtual Error resolveCellOffsets(); + + // -------------------------------------------------------------------------- + // [Bits] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE VarBits* newBits(uint32_t len) { + return static_cast( + _baseZone.allocZeroed(static_cast(len) * VarBits::kEntitySize)); + } + + ASMJIT_INLINE VarBits* copyBits(const VarBits* src, uint32_t len) { + return static_cast( + _baseZone.dup(src, static_cast(len) * VarBits::kEntitySize)); + } + + // -------------------------------------------------------------------------- + // [Fetch] + // -------------------------------------------------------------------------- + + //! Fetch. + //! + //! Fetch iterates over all nodes and gathers information about all variables + //! used. The process generates information required by register allocator, + //! variable liveness analysis and translator. + virtual Error fetch() = 0; + + // -------------------------------------------------------------------------- + // [RemoveUnreachableCode] + // -------------------------------------------------------------------------- + + //! Remove unreachable code. + virtual Error removeUnreachableCode(); + + // -------------------------------------------------------------------------- + // [Analyze] + // -------------------------------------------------------------------------- + + //! Perform variable liveness analysis. + //! + //! Analysis phase iterates over nodes in reverse order and generates a bit + //! array describing variables that are alive at every node in the function. + //! When the analysis start all variables are assumed dead. When a read or + //! read/write operations of a variable is detected the variable becomes + //! alive; when only write operation is detected the variable becomes dead. + //! + //! When a label is found all jumps to that label are followed and analysis + //! repeats until all variables are resolved. + virtual Error livenessAnalysis(); + + // -------------------------------------------------------------------------- + // [Annotate] + // -------------------------------------------------------------------------- + + virtual Error annotate() = 0; + + // -------------------------------------------------------------------------- + // [Translate] + // -------------------------------------------------------------------------- + + //! Translate code by allocating registers and handling state changes. + virtual Error translate() = 0; + + // -------------------------------------------------------------------------- + // [Schedule] + // -------------------------------------------------------------------------- + + virtual Error schedule(); + + // -------------------------------------------------------------------------- + // [Cleanup] + // -------------------------------------------------------------------------- + + virtual void cleanup(); + + // -------------------------------------------------------------------------- + // [Compile] + // -------------------------------------------------------------------------- + + virtual Error compile(FuncNode* func); + + // -------------------------------------------------------------------------- + // [Serialize] + // -------------------------------------------------------------------------- + + virtual Error serialize(Assembler* assembler, Node* start, Node* stop) = 0; + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Compiler. + Compiler* _compiler; + //! Function. + FuncNode* _func; + + //! Zone allocator. + Zone _baseZone; + + //! \internal + //! + //! Offset (how many bytes to add) to `VarMap` to get `VarAttr` array. Used + //! by liveness analysis shared across all backends. This is needed because + //! `VarMap` is a base class for a specialized version that liveness analysis + //! doesn't use, it just needs `VarAttr` array. + uint32_t _varMapToVaListOffset; + + //! Start of the current active scope. + Node* _start; + //! End of the current active scope. + Node* _end; + + //! Node that is used to insert extra code after the function body. + Node* _extraBlock; + //! Stop node. + Node* _stop; + + //! Unreachable nodes. + PodList _unreachableList; + //! Jump nodes. + PodList _jccList; + + //! All variables used by the current function. + PodVector _contextVd; + + //! Memory used to spill variables. + MemCell* _memVarCells; + //! Memory used to alloc memory on the stack. + MemCell* _memStackCells; + + //! Count of 1-byte cells. + uint32_t _mem1ByteVarsUsed; + //! Count of 2-byte cells. + uint32_t _mem2ByteVarsUsed; + //! Count of 4-byte cells. + uint32_t _mem4ByteVarsUsed; + //! Count of 8-byte cells. + uint32_t _mem8ByteVarsUsed; + //! Count of 16-byte cells. + uint32_t _mem16ByteVarsUsed; + //! Count of 32-byte cells. + uint32_t _mem32ByteVarsUsed; + //! Count of 64-byte cells. + uint32_t _mem64ByteVarsUsed; + //! Count of stack memory cells. + uint32_t _memStackCellsUsed; + + //! Maximum memory alignment used by the function. + uint32_t _memMaxAlign; + //! Count of bytes used by variables. + uint32_t _memVarTotal; + //! Count of bytes used by stack. + uint32_t _memStackTotal; + //! Count of bytes used by variables and stack after alignment. + uint32_t _memAllTotal; + + //! Default lenght of annotated instruction. + uint32_t _annotationLength; + + //! Current state (used by register allocator). + VarState* _state; +}; + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // !ASMJIT_DISABLE_COMPILER +#endif // _ASMJIT_BASE_CONTEXT_P_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/cpuinfo.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/cpuinfo.h new file mode 100644 index 0000000..06ff636 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/cpuinfo.h @@ -0,0 +1,147 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_CPUINFO_H +#define _ASMJIT_BASE_CPUINFO_H + +// [Dependencies - AsmJit] +#include "../base/globals.h" + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_general +//! \{ + +// ============================================================================ +// [asmjit::kCpuVendor] +// ============================================================================ + +//! Cpu vendor ID. +//! +//! Vendor IDs are specific to AsmJit library. During the library initialization +//! AsmJit checks host CPU and tries to identify the vendor based on the CPUID +//! calls. Some manufacturers changed their vendor strings and AsmJit is aware +//! of that - it checks multiple combinations and decides which vendor ID should +//! be used. +ASMJIT_ENUM(kCpuVendor) { + //! No/Unknown vendor. + kCpuVendorNone = 0, + + //! Intel vendor. + kCpuVendorIntel = 1, + //! AMD vendor. + kCpuVendorAmd = 2, + //! VIA vendor. + kCpuVendorVia = 3 +}; + +// ============================================================================ +// [asmjit::CpuInfo] +// ============================================================================ + +//! Base cpu information. +struct CpuInfo { + ASMJIT_NO_COPY(CpuInfo) + + //! \internal + enum { + kFeaturesPerUInt32 = static_cast(sizeof(uint32_t)) * 8 + }; + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE CpuInfo(uint32_t size = sizeof(CpuInfo)) : _size(size) {} + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get CPU vendor string. + ASMJIT_INLINE const char* getVendorString() const { return _vendorString; } + //! Get CPU brand string. + ASMJIT_INLINE const char* getBrandString() const { return _brandString; } + + //! Get CPU vendor ID. + ASMJIT_INLINE uint32_t getVendorId() const { return _vendorId; } + //! Get CPU family ID. + ASMJIT_INLINE uint32_t getFamily() const { return _family; } + //! Get CPU model ID. + ASMJIT_INLINE uint32_t getModel() const { return _model; } + //! Get CPU stepping. + ASMJIT_INLINE uint32_t getStepping() const { return _stepping; } + + //! Get number of hardware threads available. + ASMJIT_INLINE uint32_t getHwThreadsCount() const { return _hwThreadsCount; } + + //! Get whether CPU has a `feature`. + ASMJIT_INLINE bool hasFeature(uint32_t feature) const { + ASMJIT_ASSERT(feature < sizeof(_features) * 8); + + return static_cast( + (_features[feature / kFeaturesPerUInt32] >> (feature % kFeaturesPerUInt32)) & 0x1); + } + + //! Add a CPU `feature`. + ASMJIT_INLINE CpuInfo& addFeature(uint32_t feature) { + ASMJIT_ASSERT(feature < sizeof(_features) * 8); + + _features[feature / kFeaturesPerUInt32] |= (1U << (feature % kFeaturesPerUInt32)); + return *this; + } + + // -------------------------------------------------------------------------- + // [Statics] + // -------------------------------------------------------------------------- + + //! Detect the number of hardware threads. + static ASMJIT_API uint32_t detectHwThreadsCount(); + + //! Get host cpu. + static ASMJIT_API const CpuInfo* getHost(); + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Size of the structure in bytes. + uint32_t _size; + + //! Cpu short vendor string. + char _vendorString[16]; + //! Cpu long vendor string (brand). + char _brandString[64]; + + //! Cpu vendor id, see `asmjit::kCpuVendor`. + uint32_t _vendorId; + //! Cpu family ID. + uint32_t _family; + //! Cpu model ID. + uint32_t _model; + //! Cpu stepping. + uint32_t _stepping; + + //! Number of hardware threads. + uint32_t _hwThreadsCount; + + //! Cpu features bitfield. + uint32_t _features[4]; +}; + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_CPUINFO_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/cputicks.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/cputicks.h new file mode 100644 index 0000000..1732c2e --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/cputicks.h @@ -0,0 +1,40 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_CPUTICKS_H +#define _ASMJIT_BASE_CPUTICKS_H + +// [Dependencies - AsmJit] +#include "../base/globals.h" + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_util +//! \{ + +// ============================================================================ +// [asmjit::CpuTicks] +// ============================================================================ + +//! CPU ticks utilities. +struct CpuTicks { + //! Get the current CPU ticks for benchmarking (1ms resolution). + static ASMJIT_API uint32_t now(); +}; + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_CPUTICKS_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/error.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/error.h new file mode 100644 index 0000000..46b4089 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/error.h @@ -0,0 +1,218 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_ERROR_H +#define _ASMJIT_BASE_ERROR_H + +// [Api-Begin] +#include "../apibegin.h" + +// [Dependencies - AsmJit] +#include "../base/globals.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_general +//! \{ + +// ============================================================================ +// [asmjit::kError] +// ============================================================================ + +//! AsmJit error codes. +ASMJIT_ENUM(kError) { + //! No error (success). + //! + //! This is default state and state you want. + kErrorOk = 0, + + //! Heap memory allocation failed. + kErrorNoHeapMemory = 1, + + //! Virtual memory allocation failed. + kErrorNoVirtualMemory = 2, + + //! Invalid argument. + kErrorInvalidArgument = 3, + + //! Invalid state. + kErrorInvalidState = 4, + + //! No code generated. + //! + //! Returned by runtime if the code-generator contains no code. + kErrorNoCodeGenerated = 5, + + //! Code generated is too large to fit in memory reserved. + //! + //! Returned by `StaticRuntime` in case that the code generated is too large + //! to fit in the memory already reserved for it. + kErrorCodeTooLarge = 6, + + //! Label is already bound. + kErrorLabelAlreadyBound = 7, + + //! Unknown instruction (an instruction ID is out of bounds or instruction + //! name is invalid). + kErrorUnknownInst = 8, + + //! Illegal instruction. + //! + //! This status code can also be returned in X64 mode if AH, BH, CH or DH + //! registers have been used together with a REX prefix. The instruction + //! is not encodable in such case. + //! + //! Example of raising `kErrorIllegalInst` error. + //! + //! ~~~ + //! // Invalid address size. + //! a.mov(dword_ptr(eax), al); + //! + //! // Undecodable instruction - AH used with R10, however R10 can only be + //! // encoded by using REX prefix, which conflicts with AH. + //! a.mov(byte_ptr(r10), ah); + //! ~~~ + //! + //! \note In debug mode assertion is raised instead of returning an error. + kErrorIllegalInst = 9, + + //! Illegal (unencodable) addressing used. + kErrorIllegalAddresing = 10, + + //! Illegal (unencodable) displacement used. + //! + //! X86/X64 + //! ------- + //! + //! Short form of jump instruction has been used, but the displacement is out + //! of bounds. + kErrorIllegalDisplacement = 11, + + //! A variable has been assigned more than once to a function argument (Compiler). + kErrorOverlappedArgs = 12, + + //! Count of AsmJit error codes. + kErrorCount = 13 +}; + +// ============================================================================ +// [asmjit::Error] +// ============================================================================ + +//! AsmJit error type (unsigned integer). +typedef uint32_t Error; + +// ============================================================================ +// [asmjit::ErrorHandler] +// ============================================================================ + +//! Error handler. +//! +//! Error handler can be used to override the default behavior of `CodeGen` +//! error handling and propagation. See `handleError` on how to override it. +//! +//! Please note that `addRef` and `release` functions are used, but there is +//! no reference counting implemented by default, reimplement to change the +//! default behavior. +struct ASMJIT_VCLASS ErrorHandler { + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `ErrorHandler` instance. + ASMJIT_API ErrorHandler(); + //! Destroy the `ErrorHandler` instance. + ASMJIT_API virtual ~ErrorHandler(); + + // -------------------------------------------------------------------------- + // [Interface] + // -------------------------------------------------------------------------- + + //! Reference this error handler. + //! + //! \note This member function is provided for convenience. The default + //! implementation does nothing. If you are working in environment where + //! multiple `ErrorHandler` instances are used by a different code generators + //! you may provide your own functionality for reference counting. In that + //! case `addRef()` and `release()` functions should be overridden. + ASMJIT_API virtual ErrorHandler* addRef() const; + + //! Release this error handler. + //! + //! \note This member function is provided for convenience. See `addRef()` + //! for more detailed information related to reference counting. + ASMJIT_API virtual void release(); + + //! Error handler (pure). + //! + //! Error handler is called when an error happened. An error can happen in + //! many places, but error handler is mostly used by `Assembler` and + //! `Compiler` classes to report anything that may cause incorrect code + //! generation. There are multiple ways how the error handler can be used + //! and each has it's pros/cons. + //! + //! AsmJit library doesn't use exceptions and can be compiled with or without + //! exception handling support. Even if the AsmJit library is compiled without + //! exceptions it is exception-safe and handleError() can report an incoming + //! error by throwing an exception of any type. It's guaranteed that the + //! exception won't be catched by AsmJit and will be propagated to the code + //! calling AsmJit `Assembler` or `Compiler` methods. Alternative to + //! throwing an exception is using `setjmp()` and `longjmp()` pair available + //! in the standard C library. + //! + //! If the exception or setjmp() / longjmp() mechanism is used, the state of + //! the `BaseAssember` or `Compiler` is unchanged and if it's possible the + //! execution (instruction serialization) can continue. However if the error + //! happened during any phase that translates or modifies the stored code + //! (for example relocation done by `Assembler` or analysis/translation + //! done by `Compiler`) the execution can't continue and the error will + //! be also stored in `Assembler` or `Compiler`. + //! + //! Finally, if no exceptions nor setjmp() / longjmp() mechanisms were used, + //! you can still implement a compatible handling by returning from your + //! error handler. Returning `true` means that error was reported and AsmJit + //! should continue execution, but `false` sets the rror immediately to the + //! `Assembler` or `Compiler` and execution shouldn't continue (this + //! is the default behavior in case no error handler is used). + virtual bool handleError(Error code, const char* message) = 0; +}; + +// ============================================================================ +// [asmjit::ErrorUtil] +// ============================================================================ + +//! Error utilities. +struct ErrorUtil { +#if !defined(ASMJIT_DISABLE_NAMES) + //! Get printable version of AsmJit `kError` code. + static ASMJIT_API const char* asString(Error code); +#endif // ASMJIT_DISABLE_NAMES +}; + +//! \} + +// ============================================================================ +// [ASMJIT_PROPAGATE_ERROR] +// ============================================================================ + +//! \internal +//! +//! Used by AsmJit to return the `_Exp_` result if it's an error. +#define ASMJIT_PROPAGATE_ERROR(_Exp_) \ + do { \ + ::asmjit::Error errval_ = (_Exp_); \ + if (errval_ != ::asmjit::kErrorOk) \ + return errval_; \ + } while (0) + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_ERROR_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/globals.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/globals.h new file mode 100644 index 0000000..0364578 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/globals.h @@ -0,0 +1,177 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_GLOBALS_H +#define _ASMJIT_BASE_GLOBALS_H + +// [Dependencies - AsmJit] +#include "../build.h" + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_general +//! \{ + +// ============================================================================ +// [asmjit::Ptr / SignedPtr] +// ============================================================================ + +//! 64-bit unsigned pointer, compatible with JIT and non-JIT generators. +//! +//! This is the preferred pointer type to use with AsmJit library. It has a +//! capability to hold any pointer for any architecture making it an ideal +//! candidate for cross-platform code generation. +typedef uint64_t Ptr; + +//! 64-bit signed pointer, like \ref Ptr, but made signed. +typedef int64_t SignedPtr; + +// ============================================================================ +// [asmjit::kGlobals] +// ============================================================================ + +//! Invalid index +//! +//! Invalid index is the last possible index that is never used in practice. In +//! AsmJit it is used exclusively with strings to indicate the the length of the +//! string is not known and has to be determined. +static const size_t kInvalidIndex = ~static_cast(0); + +//! Invalid base address. +static const Ptr kNoBaseAddress = static_cast(static_cast(-1)); + +//! Global constants. +ASMJIT_ENUM(kGlobals) { + //! Invalid value or operand id. + kInvalidValue = 0xFFFFFFFF, + + //! Invalid register index. + kInvalidReg = 0xFF, + //! Invalid variable type. + kInvalidVar = 0xFF, + + //! Host memory allocator overhead. + //! + //! The overhead is decremented from all zone allocators so the operating + //! system doesn't have allocate extra virtual page to keep tract of the + //! requested memory block. + //! + //! The number is actually a guess. + kMemAllocOverhead = sizeof(intptr_t) * 4, + + //! Memory grow threshold. + //! + //! After the grow threshold is reached the capacity won't be doubled + //! anymore. + kMemAllocGrowMax = 8192 * 1024 +}; + +// ============================================================================ +// [asmjit::kArch] +// ============================================================================ + +//! Architecture. +ASMJIT_ENUM(kArch) { + //! No/Unknown architecture. + kArchNone = 0, + + //! X86 architecture. + kArchX86 = 1, + //! X64 architecture, also called AMD64. + kArchX64 = 2, + + //! Arm architecture. + kArchArm = 4, + +#if defined(ASMJIT_HOST_X86) + kArchHost = kArchX86, +#endif // ASMJIT_HOST_X86 + +#if defined(ASMJIT_HOST_X64) + kArchHost = kArchX64, +#endif // ASMJIT_HOST_X64 + +#if defined(ASMJIT_HOST_ARM) + kArchHost = kArchArm, +#endif // ASMJIT_HOST_ARM + + //! Whether the host is 64-bit. + kArchHost64Bit = sizeof(intptr_t) >= 8 +}; + +//! \} + +// ============================================================================ +// [asmjit::Init / NoInit] +// ============================================================================ + +#if !defined(ASMJIT_DOCGEN) +struct _Init {}; +static const _Init Init = {}; + +struct _NoInit {}; +static const _NoInit NoInit = {}; +#endif // !ASMJIT_DOCGEN + +// ============================================================================ +// [asmjit::Assert] +// ============================================================================ + +//! \addtogroup asmjit_base_general +//! \{ + +//! Called in debug build on assertion failure. +//! +//! \param exp Expression that failed. +//! \param file Source file name where it happened. +//! \param line Line in the source file. +//! +//! If you have problems with assertions put a breakpoint at assertionFailed() +//! function (asmjit/base/globals.cpp) and check the call stack to locate the +//! failing code. +ASMJIT_API void assertionFailed(const char* exp, const char* file, int line); + +#if defined(ASMJIT_DEBUG) +#define ASMJIT_ASSERT(_Exp_) \ + do { \ + if (!(_Exp_)) ::asmjit::assertionFailed(#_Exp_, __FILE__, __LINE__); \ + } while (0) +#else +#define ASMJIT_ASSERT(_Exp_) ASMJIT_NOP() +#endif // DEBUG + +//! \} + +} // asmjit namespace + +// ============================================================================ +// [asmjit_cast<>] +// ============================================================================ + +//! \addtogroup asmjit_base_util +//! \{ + +//! Cast used to cast pointer to function. It's like reinterpret_cast<>, +//! but uses internally C style cast to work with MinGW. +//! +//! If you are using single compiler and `reinterpret_cast<>` works for you, +//! there is no reason to use `asmjit_cast<>`. If you are writing +//! cross-platform software with various compiler support, consider using +//! `asmjit_cast<>` instead of `reinterpret_cast<>`. +template +static ASMJIT_INLINE T asmjit_cast(Z* p) { return (T)p; } + +//! \} + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_GLOBALS_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/intutil.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/intutil.h new file mode 100644 index 0000000..c58d957 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/intutil.h @@ -0,0 +1,713 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_INTUTIL_H +#define _ASMJIT_BASE_INTUTIL_H + +// [Dependencies - AsmJit] +#include "../base/globals.h" + +#if defined(_MSC_VER) +#pragma intrinsic(_BitScanForward) +#endif // ASMJIT_OS_WINDOWS + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_util +//! \{ + +// ============================================================================ +// [asmjit::IntTraits] +// ============================================================================ + +//! \internal +template +struct IntTraits { + enum { + kIsSigned = static_cast(~static_cast(0)) < static_cast(0), + kIsUnsigned = !kIsSigned, + + kIs8Bit = sizeof(T) == 1, + kIs16Bit = sizeof(T) == 2, + kIs32Bit = sizeof(T) == 4, + kIs64Bit = sizeof(T) == 8, + + kIsIntPtr = sizeof(T) == sizeof(intptr_t) + }; +}; + +// ============================================================================ +// [asmjit::IntUtil] +// ============================================================================ + +//! Integer utilities. +struct IntUtil { + // -------------------------------------------------------------------------- + // [Float <-> Int] + // -------------------------------------------------------------------------- + + //! \internal + union Float { + int32_t i; + float f; + }; + + //! \internal + union Double { + int64_t i; + double d; + }; + + //! Bit-cast `float` to 32-bit integer. + static ASMJIT_INLINE int32_t floatAsInt(float f) { Float m; m.f = f; return m.i; } + //! Bit-cast 32-bit integer to `float`. + static ASMJIT_INLINE float intAsFloat(int32_t i) { Float m; m.i = i; return m.f; } + + //! Bit-cast `double` to 64-bit integer. + static ASMJIT_INLINE int64_t doubleAsInt(double d) { Double m; m.d = d; return m.i; } + //! Bit-cast 64-bit integer to `double`. + static ASMJIT_INLINE double intAsDouble(int64_t i) { Double m; m.i = i; return m.d; } + + // -------------------------------------------------------------------------- + // [AsmJit - Pack / Unpack] + // -------------------------------------------------------------------------- + + //! Pack two 8-bit integer and one 16-bit integer into a 32-bit integer as it + //! is an array of `{u0,u1,w2}`. + static ASMJIT_INLINE uint32_t pack32_2x8_1x16(uint32_t u0, uint32_t u1, uint32_t w2) { +#if defined(ASMJIT_HOST_LE) + return u0 + (u1 << 8) + (w2 << 16); +#else + return (u0 << 24) + (u1 << 16) + (w2); +#endif // ASMJIT_HOST + } + + //! Pack four 8-bit integer into a 32-bit integer as it is an array of `{u0,u1,u2,u3}`. + static ASMJIT_INLINE uint32_t pack32_4x8(uint32_t u0, uint32_t u1, uint32_t u2, uint32_t u3) { +#if defined(ASMJIT_HOST_LE) + return u0 + (u1 << 8) + (u2 << 16) + (u3 << 24); +#else + return (u0 << 24) + (u1 << 16) + (u2 << 8) + u3; +#endif // ASMJIT_HOST + } + + //! Pack two 32-bit integer into a 64-bit integer as it is an array of `{u0,u1}`. + static ASMJIT_INLINE uint64_t pack64_2x32(uint32_t u0, uint32_t u1) { +#if defined(ASMJIT_HOST_LE) + return (static_cast(u1) << 32) + u0; +#else + return (static_cast(u0) << 32) + u1; +#endif // ASMJIT_HOST + } + + // -------------------------------------------------------------------------- + // [AsmJit - Min/Max] + // -------------------------------------------------------------------------- + + // NOTE: Because some environments declare min() and max() as macros, it has + // been decided to use different name so we never collide with them. + + //! Get minimum value of `a` and `b`. + template + static ASMJIT_INLINE T iMin(const T& a, const T& b) { return a < b ? a : b; } + + //! Get maximum value of `a` and `b`. + template + static ASMJIT_INLINE T iMax(const T& a, const T& b) { return a > b ? a : b; } + + // -------------------------------------------------------------------------- + // [AsmJit - MaxUInt] + // -------------------------------------------------------------------------- + + //! Get maximum unsigned value of `T`. + template + static ASMJIT_INLINE T maxUInt() { return ~T(0); } + + // -------------------------------------------------------------------------- + // [AsmJit - InInterval] + // -------------------------------------------------------------------------- + + //! Get whether `x` is greater or equal than `start` and less or equal than `end`. + template + static ASMJIT_INLINE bool inInterval(const T& x, const T& start, const T& end) { + return x >= start && x <= end; + } + + // -------------------------------------------------------------------------- + // [AsmJit - IsInt/IsUInt] + // -------------------------------------------------------------------------- + + //! Get whether the given integer `x` can be casted to 8-bit signed integer. + template + static ASMJIT_INLINE bool isInt8(T x) { + if (IntTraits::kIsSigned) + return sizeof(T) <= sizeof(int8_t) ? true : x >= T(-128) && x <= T(127); + else + return x <= T(127); + } + + //! Get whether the given integer `x` can be casted to 8-bit unsigned integer. + template + static ASMJIT_INLINE bool isUInt8(T x) { + if (IntTraits::kIsSigned) + return x >= T(0) && (sizeof(T) <= sizeof(uint8_t) ? true : x <= T(255)); + else + return sizeof(T) <= sizeof(uint8_t) ? true : x <= T(255); + } + + //! Get whether the given integer `x` can be casted to 16-bit signed integer. + template + static ASMJIT_INLINE bool isInt16(T x) { + if (IntTraits::kIsSigned) + return sizeof(T) <= sizeof(int16_t) ? true : x >= T(-32768) && x <= T(32767); + else + return x >= T(0) && (sizeof(T) <= sizeof(int16_t) ? true : x <= T(32767)); + } + + //! Get whether the given integer `x` can be casted to 16-bit unsigned integer. + template + static ASMJIT_INLINE bool isUInt16(T x) { + if (IntTraits::kIsSigned) + return x >= T(0) && (sizeof(T) <= sizeof(uint16_t) ? true : x <= T(65535)); + else + return sizeof(T) <= sizeof(uint16_t) ? true : x <= T(65535); + } + + //! Get whether the given integer `x` can be casted to 32-bit signed integer. + template + static ASMJIT_INLINE bool isInt32(T x) { + if (IntTraits::kIsSigned) + return sizeof(T) <= sizeof(int32_t) ? true : x >= T(-2147483647) - 1 && x <= T(2147483647); + else + return x >= T(0) && (sizeof(T) <= sizeof(int32_t) ? true : x <= T(2147483647)); + } + + //! Get whether the given integer `x` can be casted to 32-bit unsigned integer. + template + static ASMJIT_INLINE bool isUInt32(T x) { + if (IntTraits::kIsSigned) + return x >= T(0) && (sizeof(T) <= sizeof(uint32_t) ? true : x <= T(4294967295U)); + else + return sizeof(T) <= sizeof(uint32_t) ? true : x <= T(4294967295U); + } + + // -------------------------------------------------------------------------- + // [AsmJit - IsPowerOf2] + // -------------------------------------------------------------------------- + + //! Get whether the `n` value is a power of two (only one bit is set). + template + static ASMJIT_INLINE bool isPowerOf2(T n) { + return n != 0 && (n & (n - 1)) == 0; + } + + // -------------------------------------------------------------------------- + // [AsmJit - Mask] + // -------------------------------------------------------------------------- + + //! Generate a bit-mask that has `x` bit set. + static ASMJIT_INLINE uint32_t mask(uint32_t x) { + ASMJIT_ASSERT(x < 32); + return (1U << x); + } + + //! Generate a bit-mask that has `x0` and `x1` bits set. + static ASMJIT_INLINE uint32_t mask(uint32_t x0, uint32_t x1) { + return mask(x0) | mask(x1); + } + + //! Generate a bit-mask that has `x0`, `x1` and `x2` bits set. + static ASMJIT_INLINE uint32_t mask(uint32_t x0, uint32_t x1, uint32_t x2) { + return mask(x0) | mask(x1) | mask(x2); + } + + //! Generate a bit-mask that has `x0`, `x1`, `x2` and `x3` bits set. + static ASMJIT_INLINE uint32_t mask(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3) { + return mask(x0) | mask(x1) | mask(x2) | mask(x3); + } + + //! Generate a bit-mask that has `x0`, `x1`, `x2`, `x3` and `x4` bits set. + static ASMJIT_INLINE uint32_t mask(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3, uint32_t x4) { + return mask(x0) | mask(x1) | mask(x2) | mask(x3) | + mask(x4) ; + } + + //! Generate a bit-mask that has `x0`, `x1`, `x2`, `x3`, `x4` and `x5` bits set. + static ASMJIT_INLINE uint32_t mask(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3, uint32_t x4, uint32_t x5) { + return mask(x0) | mask(x1) | mask(x2) | mask(x3) | + mask(x4) | mask(x5) ; + } + + //! Generate a bit-mask that has `x0`, `x1`, `x2`, `x3`, `x4`, `x5` and `x6` bits set. + static ASMJIT_INLINE uint32_t mask(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3, uint32_t x4, uint32_t x5, uint32_t x6) { + return mask(x0) | mask(x1) | mask(x2) | mask(x3) | + mask(x4) | mask(x5) | mask(x6) ; + } + + //! Generate a bit-mask that has `x0`, `x1`, `x2`, `x3`, `x4`, `x5`, `x6` and `x7` bits set. + static ASMJIT_INLINE uint32_t mask(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3, uint32_t x4, uint32_t x5, uint32_t x6, uint32_t x7) { + return mask(x0) | mask(x1) | mask(x2) | mask(x3) | + mask(x4) | mask(x5) | mask(x6) | mask(x7) ; + } + + //! Generate a bit-mask that has `x0`, `x1`, `x2`, `x3`, `x4`, `x5`, `x6`, `x7` and `x8` bits set. + static ASMJIT_INLINE uint32_t mask(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3, uint32_t x4, uint32_t x5, uint32_t x6, uint32_t x7, uint32_t x8) { + return mask(x0) | mask(x1) | mask(x2) | mask(x3) | + mask(x4) | mask(x5) | mask(x6) | mask(x7) | + mask(x8) ; + } + + //! Generate a bit-mask that has `x0`, `x1`, `x2`, `x3`, `x4`, `x5`, `x6`, `x7`, `x8` and `x9` bits set. + static ASMJIT_INLINE uint32_t mask(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3, uint32_t x4, uint32_t x5, uint32_t x6, uint32_t x7, uint32_t x8, uint32_t x9) { + return mask(x0) | mask(x1) | mask(x2) | mask(x3) | + mask(x4) | mask(x5) | mask(x6) | mask(x7) | + mask(x8) | mask(x9) ; + } + + // -------------------------------------------------------------------------- + // [AsmJit - Bits] + // -------------------------------------------------------------------------- + + //! Generate a bit-mask that has `x` most significant bits set. + static ASMJIT_INLINE uint32_t bits(uint32_t x) { + // Shifting more bits that the type has has undefined behavior. Everything + // we need is that application shouldn't crash because of that, but the + // content of register after shift is not defined. So in case that the + // requested shift is too large for the type we correct this undefined + // behavior by setting all bits to ones (this is why we generate an overflow + // mask). + uint32_t overflow = static_cast( + -static_cast(x >= sizeof(uint32_t) * 8)); + + return ((static_cast(1) << x) - 1U) | overflow; + } + + // -------------------------------------------------------------------------- + // [AsmJit - HasBit] + // -------------------------------------------------------------------------- + + //! Get whether `x` has bit `n` set. + static ASMJIT_INLINE bool hasBit(uint32_t x, uint32_t n) { + return static_cast((x >> n) & 0x1); + } + + // -------------------------------------------------------------------------- + // [AsmJit - BitCount] + // -------------------------------------------------------------------------- + + //! Get count of bits in `x`. + //! + //! Taken from http://graphics.stanford.edu/~seander/bithacks.html . + static ASMJIT_INLINE uint32_t bitCount(uint32_t x) { + x = x - ((x >> 1) & 0x55555555U); + x = (x & 0x33333333U) + ((x >> 2) & 0x33333333U); + return (((x + (x >> 4)) & 0x0F0F0F0FU) * 0x01010101U) >> 24; + } + + // -------------------------------------------------------------------------- + // [AsmJit - FindFirstBit] + // -------------------------------------------------------------------------- + + //! \internal + static ASMJIT_INLINE uint32_t findFirstBitSlow(uint32_t mask) { + // This is a reference (slow) implementation of findFirstBit(), used when + // we don't have compiler support for this task. The implementation speed + // has been improved to check for 2 bits per iteration. + uint32_t i = 1; + + while (mask != 0) { + uint32_t two = mask & 0x3; + if (two != 0x0) + return i - (two & 0x1); + + i += 2; + mask >>= 2; + } + + return 0xFFFFFFFFU; + } + + //! Find a first bit in `mask`. + static ASMJIT_INLINE uint32_t findFirstBit(uint32_t mask) { +#if defined(_MSC_VER) + DWORD i; + if (_BitScanForward(&i, mask)) { + ASMJIT_ASSERT(findFirstBitSlow(mask) == i); + return static_cast(i); + } + return 0xFFFFFFFFU; +#else + return findFirstBitSlow(mask); +#endif + } + + // -------------------------------------------------------------------------- + // [AsmJit - Misc] + // -------------------------------------------------------------------------- + + static ASMJIT_INLINE uint32_t keepNOnesFromRight(uint32_t mask, uint32_t nBits) { + uint32_t m = 0x1; + + do { + nBits -= (mask & m) == 0; + m <<= 1; + if (nBits == 0) { + m -= 1; + mask &= m; + break; + } + } while (m); + + return mask; + } + + static ASMJIT_INLINE uint32_t indexNOnesFromRight(uint8_t* dst, uint32_t mask, uint32_t nBits) { + uint32_t totalBits = nBits; + uint8_t i = 0; + uint32_t m = 0x1; + + do { + if (mask & m) { + *dst++ = i; + if (--nBits == 0) + break; + } + + m <<= 1; + i++; + } while (m); + + return totalBits - nBits; + } + + // -------------------------------------------------------------------------- + // [AsmJit - Alignment] + // -------------------------------------------------------------------------- + + template + static ASMJIT_INLINE bool isAligned(T base, T alignment) { + return (base % alignment) == 0; + } + + //! Align `base` to `alignment`. + template + static ASMJIT_INLINE T alignTo(T base, T alignment) { + return (base + (alignment - 1)) & ~(alignment - 1); + } + + template + static ASMJIT_INLINE T alignToPowerOf2(T base) { + // Implementation is from "Hacker's Delight" by Henry S. Warren, Jr. + base -= 1; + +#if defined(_MSC_VER) +# pragma warning(push) +# pragma warning(disable: 4293) +#endif // _MSC_VER + + base = base | (base >> 1); + base = base | (base >> 2); + base = base | (base >> 4); + + // 8/16/32 constants are multiplied by the condition to prevent a compiler + // complaining about the 'shift count >= type width' (GCC). + if (sizeof(T) >= 2) base = base | (base >> ( 8 * (sizeof(T) >= 2))); // Base >> 8. + if (sizeof(T) >= 4) base = base | (base >> (16 * (sizeof(T) >= 4))); // Base >> 16. + if (sizeof(T) >= 8) base = base | (base >> (32 * (sizeof(T) >= 8))); // Base >> 32. + +#if defined(_MSC_VER) +# pragma warning(pop) +#endif // _MSC_VER + + return base + 1; + } + + //! Get delta required to align `base` to `alignment`. + template + static ASMJIT_INLINE T deltaTo(T base, T alignment) { + return alignTo(base, alignment) - base; + } +}; + +// ============================================================================ +// [asmjit::UInt64] +// ============================================================================ + +union UInt64 { + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE UInt64 fromUInt64(uint64_t val) { + UInt64 data; + data.setUInt64(val); + return data; + } + + ASMJIT_INLINE UInt64 fromUInt64(const UInt64& val) { + UInt64 data; + data.setUInt64(val); + return data; + } + + // -------------------------------------------------------------------------- + // [Reset] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE void reset() { + if (kArchHost64Bit) { + u64 = 0; + } + else { + u32[0] = 0; + u32[1] = 0; + } + } + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE uint64_t getUInt64() const { + return u64; + } + + ASMJIT_INLINE UInt64& setUInt64(uint64_t val) { + u64 = val; + return *this; + } + + ASMJIT_INLINE UInt64& setUInt64(const UInt64& val) { + if (kArchHost64Bit) { + u64 = val.u64; + } + else { + u32[0] = val.u32[0]; + u32[1] = val.u32[1]; + } + return *this; + } + + ASMJIT_INLINE UInt64& setPacked_2x32(uint32_t u0, uint32_t u1) { + if (kArchHost64Bit) { + u64 = IntUtil::pack64_2x32(u0, u1); + } + else { + u32[0] = u0; + u32[1] = u1; + } + return *this; + } + + // -------------------------------------------------------------------------- + // [Add] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE UInt64& add(uint64_t val) { + u64 += val; + return *this; + } + + ASMJIT_INLINE UInt64& add(const UInt64& val) { + if (kArchHost64Bit) { + u64 += val.u64; + } + else { + u32[0] += val.u32[0]; + u32[1] += val.u32[1]; + } + return *this; + } + + // -------------------------------------------------------------------------- + // [Sub] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE UInt64& sub(uint64_t val) { + u64 -= val; + return *this; + } + + ASMJIT_INLINE UInt64& sub(const UInt64& val) { + if (kArchHost64Bit) { + u64 -= val.u64; + } + else { + u32[0] -= val.u32[0]; + u32[1] -= val.u32[1]; + } + return *this; + } + + // -------------------------------------------------------------------------- + // [And] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE UInt64& and_(uint64_t val) { + u64 &= val; + return *this; + } + + ASMJIT_INLINE UInt64& and_(const UInt64& val) { + if (kArchHost64Bit) { + u64 &= val.u64; + } + else { + u32[0] &= val.u32[0]; + u32[1] &= val.u32[1]; + } + return *this; + } + + // -------------------------------------------------------------------------- + // [AndNot] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE UInt64& andNot(uint64_t val) { + u64 &= ~val; + return *this; + } + + ASMJIT_INLINE UInt64& andNot(const UInt64& val) { + if (kArchHost64Bit) { + u64 &= ~val.u64; + } + else { + u32[0] &= ~val.u32[0]; + u32[1] &= ~val.u32[1]; + } + return *this; + } + + // -------------------------------------------------------------------------- + // [Or] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE UInt64& or_(uint64_t val) { + u64 |= val; + return *this; + } + + ASMJIT_INLINE UInt64& or_(const UInt64& val) { + if (kArchHost64Bit) { + u64 |= val.u64; + } + else { + u32[0] |= val.u32[0]; + u32[1] |= val.u32[1]; + } + return *this; + } + + // -------------------------------------------------------------------------- + // [Xor] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE UInt64& xor_(uint64_t val) { + u64 ^= val; + return *this; + } + + ASMJIT_INLINE UInt64& xor_(const UInt64& val) { + if (kArchHost64Bit) { + u64 ^= val.u64; + } + else { + u32[0] ^= val.u32[0]; + u32[1] ^= val.u32[1]; + } + return *this; + } + + // -------------------------------------------------------------------------- + // [Eq] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE bool isZero() const { + return kArchHost64Bit ? u64 == 0 : (u32[0] | u32[1]) == 0; + } + + ASMJIT_INLINE bool isNonZero() const { + return kArchHost64Bit ? u64 != 0 : (u32[0] | u32[1]) != 0; + } + + ASMJIT_INLINE bool eq(uint64_t val) const { + return u64 == val; + } + + ASMJIT_INLINE bool eq(const UInt64& val) const { + return kArchHost64Bit ? u64 == val.u64 : (u32[0] == val.u32[0]) & (u32[1] == val.u32[1]); + } + + // -------------------------------------------------------------------------- + // [Operator Overload] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE UInt64& operator+=(uint64_t val) { return add(val); } + ASMJIT_INLINE UInt64& operator+=(const UInt64& val) { return add(val); } + + ASMJIT_INLINE UInt64& operator-=(uint64_t val) { return sub(val); } + ASMJIT_INLINE UInt64& operator-=(const UInt64& val) { return sub(val); } + + ASMJIT_INLINE UInt64& operator&=(uint64_t val) { return and_(val); } + ASMJIT_INLINE UInt64& operator&=(const UInt64& val) { return and_(val); } + + ASMJIT_INLINE UInt64& operator|=(uint64_t val) { return or_(val); } + ASMJIT_INLINE UInt64& operator|=(const UInt64& val) { return or_(val); } + + ASMJIT_INLINE UInt64& operator^=(uint64_t val) { return xor_(val); } + ASMJIT_INLINE UInt64& operator^=(const UInt64& val) { return xor_(val); } + + ASMJIT_INLINE bool operator==(uint64_t val) const { return eq(val); } + ASMJIT_INLINE bool operator==(const UInt64& val) const { return eq(val); } + + ASMJIT_INLINE bool operator!=(uint64_t val) const { return !eq(val); } + ASMJIT_INLINE bool operator!=(const UInt64& val) const { return !eq(val); } + + ASMJIT_INLINE bool operator<(uint64_t val) const { return u64 < val; } + ASMJIT_INLINE bool operator<(const UInt64& val) const { return u64 < val.u64; } + + ASMJIT_INLINE bool operator<=(uint64_t val) const { return u64 <= val; } + ASMJIT_INLINE bool operator<=(const UInt64& val) const { return u64 <= val.u64; } + + ASMJIT_INLINE bool operator>(uint64_t val) const { return u64 > val; } + ASMJIT_INLINE bool operator>(const UInt64& val) const { return u64 > val.u64; } + + ASMJIT_INLINE bool operator>=(uint64_t val) const { return u64 >= val; } + ASMJIT_INLINE bool operator>=(const UInt64& val) const { return u64 >= val.u64; } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + uint64_t u64; + + uint32_t u32[2]; + uint16_t u16[4]; + uint8_t u8[8]; + + struct { +#if defined(ASMJIT_HOST_LE) + uint32_t lo, hi; +#else + uint32_t hi, lo; +#endif // ASMJIT_HOST_LE + }; +}; + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_INTUTIL_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/lock.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/lock.h new file mode 100644 index 0000000..f2e2042 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/lock.h @@ -0,0 +1,131 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_LOCK_H +#define _ASMJIT_BASE_LOCK_H + +// [Dependencies - AsmJit] +#include "../build.h" + +// [Dependencies - Posix] +#if defined(ASMJIT_OS_POSIX) +# include +#endif // ASMJIT_OS_POSIX + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_util +//! \{ + +// ============================================================================ +// [asmjit::Lock] +// ============================================================================ + +//! Lock - used in thread-safe code for locking. +struct Lock { + ASMJIT_NO_COPY(Lock) + + // -------------------------------------------------------------------------- + // [Windows] + // -------------------------------------------------------------------------- + +#if defined(ASMJIT_OS_WINDOWS) + typedef CRITICAL_SECTION Handle; + + //! Create a new `Lock` instance. + ASMJIT_INLINE Lock() { InitializeCriticalSection(&_handle); } + //! Destroy the `Lock` instance. + ASMJIT_INLINE ~Lock() { DeleteCriticalSection(&_handle); } + + //! Lock. + ASMJIT_INLINE void lock() { EnterCriticalSection(&_handle); } + //! Unlock. + ASMJIT_INLINE void unlock() { LeaveCriticalSection(&_handle); } + +#endif // ASMJIT_OS_WINDOWS + + // -------------------------------------------------------------------------- + // [Posix] + // -------------------------------------------------------------------------- + +#if defined(ASMJIT_OS_POSIX) + typedef pthread_mutex_t Handle; + + //! Create a new `Lock` instance. + ASMJIT_INLINE Lock() { pthread_mutex_init(&_handle, NULL); } + //! Destroy the `Lock` instance. + ASMJIT_INLINE ~Lock() { pthread_mutex_destroy(&_handle); } + + //! Lock. + ASMJIT_INLINE void lock() { pthread_mutex_lock(&_handle); } + //! Unlock. + ASMJIT_INLINE void unlock() { pthread_mutex_unlock(&_handle); } +#endif // ASMJIT_OS_POSIX + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get handle. + ASMJIT_INLINE Handle& getHandle() { + return _handle; + } + //! \overload + ASMJIT_INLINE const Handle& getHandle() const { + return _handle; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Handle. + Handle _handle; +}; + +// ============================================================================ +// [asmjit::AutoLock] +// ============================================================================ + +//! Scoped lock. +struct AutoLock { + ASMJIT_NO_COPY(AutoLock) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Autolock `target`, scoped. + ASMJIT_INLINE AutoLock(Lock& target) : _target(target) { + _target.lock(); + } + + //! Autounlock `target`. + ASMJIT_INLINE ~AutoLock() { + _target.unlock(); + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Pointer to target (lock). + Lock& _target; +}; + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_LOCK_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/logger.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/logger.h new file mode 100644 index 0000000..b3adc40 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/logger.h @@ -0,0 +1,249 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_LOGGER_H +#define _ASMJIT_BASE_LOGGER_H + +#include "../build.h" +#if !defined(ASMJIT_DISABLE_LOGGER) + +// [Dependencies - AsmJit] +#include "../base/string.h" + +// [Dependencies - C] +#include + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_util +//! \{ + +// ============================================================================ +// [asmjit::kLoggerOption] +// ============================================================================ + +//! Logger options. +ASMJIT_ENUM(kLoggerOption) { + //! Whether to output instructions also in binary form. + kLoggerOptionBinaryForm = 0, + + //! Whether to output immediates as hexadecimal numbers. + kLoggerOptionHexImmediate = 1, + //! Whether to output displacements as hexadecimal numbers. + kLoggerOptionHexDisplacement = 2, + + //! Count of logger options. + kLoggerOptionCount = 3 +}; + +// ============================================================================ +// [asmjit::kLoggerStyle] +// ============================================================================ + +//! Logger style. +ASMJIT_ENUM(kLoggerStyle) { + kLoggerStyleDefault = 0, + kLoggerStyleDirective = 1, + kLoggerStyleLabel = 2, + kLoggerStyleData = 3, + kLoggerStyleComment = 4, + + kLoggerStyleCount = 5 +}; + +// ============================================================================ +// [asmjit::Logger] +// ============================================================================ + +//! Abstract logging class. +//! +//! This class can be inherited and reimplemented to fit into your logging +//! subsystem. When reimplementing use `Logger::log()` method to log into +//! a custom stream. +//! +//! This class also contain `_enabled` member that can be used to enable +//! or disable logging. +struct ASMJIT_VCLASS Logger { + ASMJIT_NO_COPY(Logger) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a `Logger` instance. + ASMJIT_API Logger(); + //! Destroy the `Logger` instance. + ASMJIT_API virtual ~Logger(); + + // -------------------------------------------------------------------------- + // [Logging] + // -------------------------------------------------------------------------- + + //! Log output. + virtual void logString(uint32_t style, const char* buf, size_t len = kInvalidIndex) = 0; + + //! Log formatter message (like sprintf) sending output to `logString()` method. + ASMJIT_API void logFormat(uint32_t style, const char* fmt, ...); + //! Log binary data. + ASMJIT_API void logBinary(uint32_t style, const void* data, size_t size); + + // -------------------------------------------------------------------------- + // [Options] + // -------------------------------------------------------------------------- + + //! Get all logger options as a single integer. + ASMJIT_INLINE uint32_t getOptions() const { + return _options; + } + + //! Get the given logger option. + ASMJIT_INLINE bool getOption(uint32_t id) const { + ASMJIT_ASSERT(id < kLoggerOptionCount); + return static_cast((_options >> id) & 0x1); + } + + //! Set the given logger option. + ASMJIT_API void setOption(uint32_t id, bool value); + + // -------------------------------------------------------------------------- + // [Indentation] + // -------------------------------------------------------------------------- + + //! Get indentation. + ASMJIT_INLINE const char* getIndentation() const { + return _indentation; + } + + //! Set indentation. + ASMJIT_API void setIndentation(const char* indentation); + + //! Reset indentation. + ASMJIT_INLINE void resetIndentation() { + setIndentation(NULL); + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Options, see `kLoggerOption`. + uint32_t _options; + + //! Indentation. + char _indentation[12]; +}; + +// ============================================================================ +// [asmjit::FileLogger] +// ============================================================================ + +//! Logger that can log to standard C `FILE*` stream. +struct ASMJIT_VCLASS FileLogger : public Logger { + ASMJIT_NO_COPY(FileLogger) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new `FileLogger` that logs to a `FILE` stream. + ASMJIT_API FileLogger(FILE* stream = NULL); + + //! Destroy the `FileLogger`. + ASMJIT_API virtual ~FileLogger(); + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get `FILE*` stream. + //! + //! \note Return value can be `NULL`. + ASMJIT_INLINE FILE* getStream() const { + return _stream; + } + + //! Set `FILE*` stream, can be set to `NULL` to disable logging, although + //! the `CodeGen` will still call `logString` even if there is no stream. + ASMJIT_INLINE void setStream(FILE* stream) { + _stream = stream; + } + + // -------------------------------------------------------------------------- + // [Logging] + // -------------------------------------------------------------------------- + + ASMJIT_API virtual void logString(uint32_t style, const char* buf, size_t len = kInvalidIndex); + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! C file stream. + FILE* _stream; +}; + +// ============================================================================ +// [asmjit::StringLogger] +// ============================================================================ + +//! String logger. +struct ASMJIT_VCLASS StringLogger : public Logger { + ASMJIT_NO_COPY(StringLogger) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create new `StringLogger`. + ASMJIT_API StringLogger(); + + //! Destroy the `StringLogger`. + ASMJIT_API virtual ~StringLogger(); + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get `char*` pointer which represents the resulting string. + //! + //! The pointer is owned by `StringLogger`, it can't be modified or freed. + ASMJIT_INLINE const char* getString() const { + return _stringBuilder.getData(); + } + + //! Clear the resulting string. + ASMJIT_INLINE void clearString() { + _stringBuilder.clear(); + } + + // -------------------------------------------------------------------------- + // [Logging] + // -------------------------------------------------------------------------- + + ASMJIT_API virtual void logString(uint32_t style, const char* buf, size_t len = kInvalidIndex); + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Output. + StringBuilder _stringBuilder; +}; + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // !ASMJIT_DISABLE_LOGGER +#endif // _ASMJIT_BASE_LOGGER_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/operand.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/operand.h new file mode 100644 index 0000000..4553e33 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/operand.h @@ -0,0 +1,1090 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_OPERAND_H +#define _ASMJIT_BASE_OPERAND_H + +// [Dependencies - AsmJit] +#include "../base/intutil.h" + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +// ============================================================================ +// [Forward Declarations] +// ============================================================================ + +struct Assembler; +struct Compiler; + +//! \addtogroup asmjit_base_general +//! \{ + +// ============================================================================ +// [asmjit::kOperandType] +// ============================================================================ + +//! Operand types that can be encoded in `Operand`. +ASMJIT_ENUM(kOperandType) { + //! Invalid operand, used only internally (not initialized Operand). + kOperandTypeNone = 0, + //! Operand is a register. + kOperandTypeReg = 1, + //! Operand is a variable. + kOperandTypeVar = 2, + //! Operand is a memory. + kOperandTypeMem = 3, + //! Operand is an immediate value. + kOperandTypeImm = 4, + //! Operand is a label. + kOperandTypeLabel = 5 +}; + +// ============================================================================ +// [asmjit::kOperandId] +// ============================================================================ + +//! Operand id masks used to determine the operand type. +ASMJIT_ENUM(kOperandId) { + //! Operand id refers to `Var`. + kOperandIdVar = 0x80000000U, + //! Operand id to real index mask. + kOperandIdNum = 0x7FFFFFFFU +}; + +// ============================================================================ +// [asmjit::kRegClass] +// ============================================================================ + +//! Register class. +ASMJIT_ENUM(kRegClass) { + //! Gp register class, compatible with all architectures. + kRegClassGp = 0 +}; + +// ============================================================================ +// [asmjit::kSize] +// ============================================================================ + +//! Common size of registers and pointers. +ASMJIT_ENUM(kSize) { + //! 1 byte size (BYTE). + kSizeByte = 1, + //! 2 bytes size (WORD). + kSizeWord = 2, + //! 4 bytes size (DWORD). + kSizeDWord = 4, + //! 8 bytes size (QWORD). + kSizeQWord = 8, + //! 10 bytes size (TWORD). + kSizeTWord = 10, + //! 16 bytes size (OWORD / DQWORD). + kSizeOWord = 16, + //! 32 bytes size (YWORD / QQWORD). + kSizeYWord = 32 +}; + +// ============================================================================ +// [asmjit::kMemType] +// ============================================================================ + +//! Type of memory operand. +ASMJIT_ENUM(kMemType) { + //! Memory operand is a combination of base register and optional index register + //! and displacement. + //! + //! The `Assembler` interprets `kMemTypeBaseIndex` and `kMemTypeStackIndex` + //! types the same way, but `Compiler` interprets `kMemTypeBaseIndex` as + //! `[base + index]` and `kMemTypeStackIndex` as `[stack(base) + index]`. + kMemTypeBaseIndex = 0, + + //! Memory operand is a combination of variable's memory location, + //! optional index register and displacement. + //! + //! The `Assembler` interprets `kMemTypeBaseIndex` and `kMemTypeStackIndex` + //! types in the same way, but `Compiler` interprets `kMemTypeBaseIndex` as + //! `[base + index]` and `kMemTypeStackIndex` as `[stack(base) + index]`. + kMemTypeStackIndex = 1, + + //! Memory operand refers to the memory location specified by a label. + kMemTypeLabel = 2, + //! Memory operand is an absolute memory location. + //! + //! Supported mostly by x86, truncated to a 32-bit value when running in + //! 64-bit mode (x64). + kMemTypeAbsolute = 3 +}; + +// ============================================================================ +// [asmjit::Operand] +// ============================================================================ + +//! Operand can contain register, memory location, immediate, or label. +struct Operand { + // -------------------------------------------------------------------------- + // [Structs] + // -------------------------------------------------------------------------- + + //! \internal + //! + //! Base operand data. + struct BaseOp { + //! Type of operand, see `kOperandType`. + uint8_t op; + //! Size of operand (register, address, immediate, or variable). + uint8_t size; + //! \internal + uint8_t reserved_2_1; + //! \internal + uint8_t reserved_3_1; + + //! Operand id, identifier used by `Assembler` and `Compiler`. + //! + //! \note Uninitialized operand has always set id to `kInvalidValue`. + uint32_t id; + + //! \internal + uint32_t reserved_8_4; + //! \internal + uint32_t reserved_12_4; + }; + + //! \internal + //! + //! Register or Variable operand data. + struct VRegOp { + //! Type of operand, `kOperandTypeReg`. + uint8_t op; + //! Size of register or variable. + uint8_t size; + + union { + //! Register code = (type << 8) | index. + uint16_t code; + + //! Register type and index access. + struct { +#if defined(ASMJIT_HOST_LE) + //! Register index. + uint8_t index; + //! Register type. + uint8_t type; +#else + //! Register type. + uint8_t type; + //! Register index. + uint8_t index; +#endif // ASMJIT_HOST + }; + }; + + //! Variable id, used by `Compiler` to identify variables. + uint32_t id; + + union { + struct { + //! Variable type. + uint32_t vType; + //! \internal + uint32_t reserved_12_4; + }; + + //! \internal + //! + //! This is not needed or used, it's just to force compiler to always + //! align this struct to 8-bytes (so the struct is compatible to others + //! when it comes to alignment). It should fix VS linker warning as well. + uint64_t reserved8_8; + }; + }; + + //! \internal + //! + //! Memory or Variable operand data. + struct VMemOp { + //! Type of operand, `kOperandTypeMem`. + uint8_t op; + //! Size of the pointer in bytes. + uint8_t size; + //! Type of the memory operand, see `kMemType`. + uint8_t type; + //! X86/X64 layout: + //! - segment [3 bits], see `kX86Seg`. + //! - shift [2 bits], index register shift (0 to 3). + uint8_t flags; + + //! Base register, variable or label id. + uint32_t base; + //! Index register or variable. + uint32_t index; + //! 32-bit displacement or absolute address. + int32_t displacement; + }; + + //! \internal + //! + //! Immediate operand data. + struct ImmOp { + //! Type of operand, `kOperandTypeImm`. + uint8_t op; + //! Size of immediate (or 0 to autodetect). + uint8_t size; + //! \internal + uint8_t reserved_2_1; + //! \internal + uint8_t reserved_3_1; + + //! Operand id, always set to `kInvalidValue` (immediates don't have IDs). + uint32_t id; + + union { + //! 8x8-bit signed immediate values. + int8_t _i8[8]; + //! 8x8-bit unsigned immediate values. + uint8_t _u8[8]; + + //! 4x16-bit signed immediate values. + int16_t _i16[4]; + //! 4x16-bit unsigned immediate values. + uint16_t _u16[4]; + + //! 2x32-bit signed immediate values. + int32_t _i32[2]; + //! 2x32-bit unsigned immediate values. + uint32_t _u32[2]; + + //! 1x64-bit signed immediate value. + int64_t _i64[1]; + //! 1x64-bit unsigned immediate value. + uint64_t _u64[1]; + + //! 2x SP-FP values. + float _f32[2]; + //! 1x DP-FP value. + double _f64[1]; + } value; + }; + + //! \internal + //! + //! Label operand data. + struct LabelOp { + //! Type of operand, `kOperandTypeLabel`. + uint8_t op; + //! Always zero, labels don't have size. + uint8_t size; + //! \internal + uint8_t reserved_2_1; + //! \internal + uint8_t reserved_3_1; + + //! Operand id (`kInvalidValue` if the label is not initialized by code + //! generator). + uint32_t id; + + //! \internal + uint32_t reserved_8_4; + //! \internal + uint32_t reserved_12_4; + }; + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create an uninitialized operand. + ASMJIT_INLINE Operand() { + _init_packed_op_sz_b0_b1_id(kOperandTypeNone, 0, 0, 0, kInvalidValue); + _init_packed_d2_d3(0, 0); + } + + //! Create a reference to `other` operand. + ASMJIT_INLINE Operand(const Operand& other) { + _init(other); + } + + explicit ASMJIT_INLINE Operand(const _NoInit&) {} + + // -------------------------------------------------------------------------- + // [Operand] + // -------------------------------------------------------------------------- + + //! Clone `Operand`. + ASMJIT_INLINE Operand clone() const { + return Operand(*this); + } + + // -------------------------------------------------------------------------- + // [Init & Copy] + // -------------------------------------------------------------------------- + + //! \internal + //! + //! Initialize operand to `other` (used by constructors). + ASMJIT_INLINE void _init(const Operand& other) { + ::memcpy(this, &other, sizeof(Operand)); + } + + ASMJIT_INLINE void _init_packed_op_sz_b0_b1_id(uint32_t op, uint32_t sz, uint32_t r0, uint32_t r1, uint32_t id) { + // This hack is not for performance, but to decrease the size of the binary + // generated when constructing AsmJit operands (mostly for third parties). + // Some compilers are not able to join four BYTE writes to a single DWORD + // write. Because the 'a', 'b', 'c' and 'd' variables are usually compile + // time constants the compiler can do a really nice job if they are joined + // by using bitwise operations. + _packed[0].setPacked_2x32(IntUtil::pack32_4x8(op, sz, r0, r1), id); + } + + ASMJIT_INLINE void _init_packed_op_sz_w0_id(uint32_t op, uint32_t sz, uint32_t w0, uint32_t id) { + _packed[0].setPacked_2x32(IntUtil::pack32_2x8_1x16(op, sz, w0), id); + } + + ASMJIT_INLINE void _init_packed_d0_d1(uint32_t u0, uint32_t u1) { + _packed[0].setPacked_2x32(u0, u1); + } + + ASMJIT_INLINE void _init_packed_d2_d3(uint32_t u2, uint32_t u3) { + _packed[1].setPacked_2x32(u2, u3); + } + + //! \internal + //! + //! Initialize operand to `other` (used by assign operators). + ASMJIT_INLINE void _copy(const Operand& other) { + ::memcpy(this, &other, sizeof(Operand)); + } + + // -------------------------------------------------------------------------- + // [Data] + // -------------------------------------------------------------------------- + + template + ASMJIT_INLINE T& getData() { + return reinterpret_cast(_base); + } + + template + ASMJIT_INLINE const T& getData() const { + return reinterpret_cast(_base); + } + + // -------------------------------------------------------------------------- + // [Type] + // -------------------------------------------------------------------------- + + //! Get type of the operand, see `kOperandType`. + ASMJIT_INLINE uint32_t getOp() const { return _base.op; } + + //! Get whether the operand is none - `kOperandTypeNone`. + ASMJIT_INLINE bool isNone() const { return (_base.op == kOperandTypeNone); } + //! Get whether the operand is a register - `kOperandTypeReg`. + ASMJIT_INLINE bool isReg() const { return (_base.op == kOperandTypeReg); } + //! Get whether the operand is a variable - `kOperandTypeVar`. + ASMJIT_INLINE bool isVar() const { return (_base.op == kOperandTypeVar); } + //! Get whether the operand is a memory address - `kOperandTypeMem`. + ASMJIT_INLINE bool isMem() const { return (_base.op == kOperandTypeMem); } + //! Get whether the operand is an immediate value - `kOperandTypeImm`. + ASMJIT_INLINE bool isImm() const { return (_base.op == kOperandTypeImm); } + //! Get whether the operand is a label - `kOperandTypeLabel`. + ASMJIT_INLINE bool isLabel() const { return (_base.op == kOperandTypeLabel); } + + // -------------------------------------------------------------------------- + // [Type - Combined] + // -------------------------------------------------------------------------- + + //! Get register type. + ASMJIT_INLINE uint32_t getRegType() const { + return _vreg.type; + } + + //! Get register index. + ASMJIT_INLINE uint32_t getRegIndex() const { + return _vreg.index; + } + + //! Get whether the operand is register of `type`. + ASMJIT_INLINE bool isRegType(uint32_t type) const { + return (_packed[0].u32[0] & IntUtil::pack32_2x8_1x16(0xFF, 0, 0xFF00)) == IntUtil::pack32_2x8_1x16(kOperandTypeReg, 0, (type << 8)); + } + + //! Get whether the operand is register and of `type` and `index`. + ASMJIT_INLINE bool isRegCode(uint32_t type, uint32_t index) const { + return (_packed[0].u32[0] & IntUtil::pack32_2x8_1x16(0xFF, 0, 0xFFFF)) == IntUtil::pack32_2x8_1x16(kOperandTypeReg, 0, (type << 8) + index); + } + + //! Get whether the operand is a register or memory. + ASMJIT_INLINE bool isRegOrMem() const { + ASMJIT_ASSERT(kOperandTypeReg == 1); + ASMJIT_ASSERT(kOperandTypeMem == 3); + return (static_cast(_base.op) | 0x2U) == 0x3U; + } + + //! Get whether the operand is variable or memory. + ASMJIT_INLINE bool isVarOrMem() const { + ASMJIT_ASSERT(kOperandTypeVar == 2); + ASMJIT_ASSERT(kOperandTypeMem == 3); + return (static_cast(_base.op) - 2U) <= 1; + } + + // -------------------------------------------------------------------------- + // [Size] + // -------------------------------------------------------------------------- + + //! Get size of the operand in bytes. + ASMJIT_INLINE uint32_t getSize() const { + return _base.size; + } + + // -------------------------------------------------------------------------- + // [Id] + // -------------------------------------------------------------------------- + + //! Get operand id. + //! + //! Operand id's are used internally by `Assembler` and `Compiler`. + //! + //! There is no way to change or remove operand id. Unneeded operands can be + //! simply reassigned by `operator=`. + ASMJIT_INLINE uint32_t getId() const { + return _base.id; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + union { + //! Base data. + BaseOp _base; + //! Register or variable data. + VRegOp _vreg; + //! Memory data. + VMemOp _vmem; + //! Immediate data. + ImmOp _imm; + //! Label data. + LabelOp _label; + + //! Packed operand as two 64-bit integers. + UInt64 _packed[2]; + }; +}; + +// ============================================================================ +// [asmjit::OperandUtil] +// ============================================================================ + +//! Operand utilities. +struct OperandUtil { + //! Make variable id. + static ASMJIT_INLINE uint32_t makeVarId(uint32_t id) { + return id | kOperandIdVar; + } + + //! Make label id. + static ASMJIT_INLINE uint32_t makeLabelId(uint32_t id) { + return id; + } + + //! Strip variable id bit so it becomes a pure index to `VarData[]` array. + static ASMJIT_INLINE uint32_t stripVarId(uint32_t id) { + return id & 0x7FFFFFFFU; + } + + //! Get whether the id refers to `Var`. + //! + //! \note The function will never return `true` if the id is `kInvalidValue`. + //! The trick is to compare a given id to -1 (kInvalidValue) so we check both + //! using only one comparison. + static ASMJIT_INLINE bool isVarId(uint32_t id) { + return static_cast(id) < -1; + } + + //! Get whether the id refers to `Label`. + //! + //! \note The function will never return `true` if the id is `kInvalidValue`. + static ASMJIT_INLINE bool isLabelId(uint32_t id) { + return static_cast(id) >= 0; + } +}; + +// ============================================================================ +// [asmjit::Reg] +// ============================================================================ + +//! Base class for all register operands. +struct Reg : public Operand { + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a dummy base register. + ASMJIT_INLINE Reg() : Operand(NoInit) { + _init_packed_op_sz_w0_id(kOperandTypeReg, 0, (kInvalidReg << 8) + kInvalidReg, kInvalidValue); + _init_packed_d2_d3(kInvalidVar, 0); + } + + //! Create a new base register. + ASMJIT_INLINE Reg(uint32_t type, uint32_t index, uint32_t size) : Operand(NoInit) { + _init_packed_op_sz_w0_id(kOperandTypeReg, size, (type << 8) + index, kInvalidValue); + _init_packed_d2_d3(kInvalidVar, 0); + } + + //! Create a new reference to `other`. + ASMJIT_INLINE Reg(const Reg& other) : Operand(other) {} + + //! Create a new reference to `other` and change the index to `index`. + ASMJIT_INLINE Reg(const Reg& other, uint32_t index) : Operand(other) { + _vreg.index = static_cast(index); + } + + explicit ASMJIT_INLINE Reg(const _NoInit&) : Operand(NoInit) {} + + // -------------------------------------------------------------------------- + // [Reg Specific] + // -------------------------------------------------------------------------- + + //! Clone `Reg` operand. + ASMJIT_INLINE Reg clone() const { + return Reg(*this); + } + + //! Get whether register code is equal to `type`. + ASMJIT_INLINE bool isRegType(uint32_t type) const { + return _vreg.type == type; + } + + //! Get whether register code is equal to `type`. + ASMJIT_INLINE bool isRegCode(uint32_t code) const { + return _vreg.code == code; + } + + //! Get whether register code is equal to `type`. + ASMJIT_INLINE bool isRegCode(uint32_t type, uint32_t index) const { + return _vreg.code == (type << 8) + index; + } + + //! Get register code that equals to '(type << 8) + index'. + ASMJIT_INLINE uint32_t getRegCode() const { + return _vreg.code; + } + + //! Get register type. + ASMJIT_INLINE uint32_t getRegType() const { + return _vreg.type; + } + + //! Get register index. + ASMJIT_INLINE uint32_t getRegIndex() const { + return _vreg.index; + } + +#define ASMJIT_REG_OP(_Type_) \ + ASMJIT_INLINE _Type_ clone() const { \ + return _Type_(*this); \ + } \ + \ + /*! Set register `size`. */ \ + ASMJIT_INLINE _Type_& setSize(uint32_t size) { \ + _vreg.size = static_cast(size); \ + return *this; \ + } \ + \ + /*! Set register `code`. */ \ + ASMJIT_INLINE _Type_& setCode(uint32_t code) { \ + _vreg.code = static_cast(code); \ + return *this; \ + } \ + \ + /*! Set register `type` and `index`. */ \ + ASMJIT_INLINE _Type_& setCode(uint32_t type, uint32_t index) { \ + _vreg.type = static_cast(type); \ + _vreg.index = static_cast(index); \ + return *this; \ + } \ + \ + /*! Set register `type`. */ \ + ASMJIT_INLINE _Type_& setType(uint32_t type) { \ + _vreg.type = static_cast(type); \ + return *this; \ + } \ + \ + /*! Set register `index`. */ \ + ASMJIT_INLINE _Type_& setIndex(uint32_t index) { \ + _vreg.index = static_cast(index); \ + return *this; \ + } \ + \ + ASMJIT_INLINE _Type_& operator=(const _Type_& other) { _copy(other); return *this; } \ + \ + ASMJIT_INLINE bool operator==(const _Type_& other) const { return _packed[0].u32[0] == other._packed[0].u32[0]; } \ + ASMJIT_INLINE bool operator!=(const _Type_& other) const { return !operator==(other); } +}; + +// ============================================================================ +// [asmjit::BaseMem] +// ============================================================================ + +//! Base class for all memory operands. +struct BaseMem : public Operand { + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE BaseMem() : Operand(NoInit) { + reset(); + } + + ASMJIT_INLINE BaseMem(const BaseMem& other) : Operand(other) {} + explicit ASMJIT_INLINE BaseMem(const _NoInit&) : Operand(NoInit) {} + + // -------------------------------------------------------------------------- + // [BaseMem Specific] + // -------------------------------------------------------------------------- + + //! Clone `BaseMem` operand. + ASMJIT_INLINE BaseMem clone() const { + return BaseMem(*this); + } + + //! Reset `BaseMem` operand. + ASMJIT_INLINE void reset() { + _init_packed_op_sz_b0_b1_id(kOperandTypeMem, 0, kMemTypeBaseIndex, 0, kInvalidValue); + _init_packed_d2_d3(kInvalidValue, 0); + } + + //! Get the type of the memory operand, see `kMemType`. + ASMJIT_INLINE uint32_t getMemType() const { + return _vmem.type; + } + + //! Get whether the type of the memory operand is either `kMemTypeBaseIndex` + //! or `kMemTypeStackIndex`. + ASMJIT_INLINE bool isBaseIndexType() const { + return _vmem.type <= kMemTypeStackIndex; + } + + //! Get whether the memory operand has base register. + ASMJIT_INLINE bool hasBase() const { + return _vmem.base != kInvalidValue; + } + + //! Get memory operand base id, or `kInvalidValue`. + ASMJIT_INLINE uint32_t getBase() const { + return _vmem.base; + } + + //! Set memory operand size. + ASMJIT_INLINE BaseMem& setSize(uint32_t size) { + _vmem.size = static_cast(size); + return *this; + } + + //! Get memory operand relative displacement. + ASMJIT_INLINE int32_t getDisplacement() const { + return _vmem.displacement; + } + + //! Set memory operand relative displacement. + ASMJIT_INLINE BaseMem& setDisplacement(int32_t disp) { + _vmem.displacement = disp; + return *this; + } + + // -------------------------------------------------------------------------- + // [Operator Overload] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE BaseMem& operator=(const BaseMem& other) { + _copy(other); + return *this; + } + + ASMJIT_INLINE bool operator==(const BaseMem& other) const { + return (_packed[0] == other._packed[0]) & (_packed[1] == other._packed[1]); + } + + ASMJIT_INLINE bool operator!=(const BaseMem& other) const { + return !(*this == other); + } +}; + +// ============================================================================ +// [asmjit::Imm] +// ============================================================================ + +//! Immediate operand. +//! +//! Immediate operand is usually part of instruction itself. It's inlined after +//! or before the instruction opcode. Immediates can be only signed or unsigned +//! integers. +//! +//! To create immediate operand use `imm()` or `imm_u()` non-members or `Imm` +//! constructors. +struct Imm : public Operand { + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new immediate value (initial value is 0). + Imm() : Operand(NoInit) { + _init_packed_op_sz_b0_b1_id(kOperandTypeImm, 0, 0, 0, kInvalidValue); + _imm.value._i64[0] = 0; + } + + //! Create a new signed immediate value, assigning the value to `val`. + explicit Imm(int64_t val) : Operand(NoInit) { + _init_packed_op_sz_b0_b1_id(kOperandTypeImm, 0, 0, 0, kInvalidValue); + _imm.value._i64[0] = val; + } + + //! Create a new immediate value from `other`. + ASMJIT_INLINE Imm(const Imm& other) : Operand(other) {} + + explicit ASMJIT_INLINE Imm(const _NoInit&) : Operand(NoInit) {} + + // -------------------------------------------------------------------------- + // [Immediate Specific] + // -------------------------------------------------------------------------- + + //! Clone `Imm` operand. + ASMJIT_INLINE Imm clone() const { + return Imm(*this); + } + + //! Get whether the immediate can be casted to 8-bit signed integer. + ASMJIT_INLINE bool isInt8() const { return IntUtil::isInt8(_imm.value._i64[0]); } + //! Get whether the immediate can be casted to 8-bit unsigned integer. + ASMJIT_INLINE bool isUInt8() const { return IntUtil::isUInt8(_imm.value._i64[0]); } + + //! Get whether the immediate can be casted to 16-bit signed integer. + ASMJIT_INLINE bool isInt16() const { return IntUtil::isInt16(_imm.value._i64[0]); } + //! Get whether the immediate can be casted to 16-bit unsigned integer. + ASMJIT_INLINE bool isUInt16() const { return IntUtil::isUInt16(_imm.value._i64[0]); } + + //! Get whether the immediate can be casted to 32-bit signed integer. + ASMJIT_INLINE bool isInt32() const { return IntUtil::isInt32(_imm.value._i64[0]); } + //! Get whether the immediate can be casted to 32-bit unsigned integer. + ASMJIT_INLINE bool isUInt32() const { return IntUtil::isUInt32(_imm.value._i64[0]); } + + //! Get immediate value as 8-bit signed integer. + ASMJIT_INLINE int8_t getInt8() const { return _imm.value._i8[_ASMJIT_HOST_INDEX(8, 0)]; } + //! Get immediate value as 8-bit unsigned integer. + ASMJIT_INLINE uint8_t getUInt8() const { return _imm.value._u8[_ASMJIT_HOST_INDEX(8, 0)]; } + //! Get immediate value as 16-bit signed integer. + ASMJIT_INLINE int16_t getInt16() const { return _imm.value._i16[_ASMJIT_HOST_INDEX(4, 0)]; } + //! Get immediate value as 16-bit unsigned integer. + ASMJIT_INLINE uint16_t getUInt16() const { return _imm.value._u16[_ASMJIT_HOST_INDEX(4, 0)]; } + //! Get immediate value as 32-bit signed integer. + ASMJIT_INLINE int32_t getInt32() const { return _imm.value._i32[_ASMJIT_HOST_INDEX(2, 0)]; } + //! Get immediate value as 32-bit unsigned integer. + ASMJIT_INLINE uint32_t getUInt32() const { return _imm.value._u32[_ASMJIT_HOST_INDEX(2, 0)]; } + //! Get immediate value as 64-bit signed integer. + ASMJIT_INLINE int64_t getInt64() const { return _imm.value._i64[0]; } + //! Get immediate value as 64-bit unsigned integer. + ASMJIT_INLINE uint64_t getUInt64() const { return _imm.value._u64[0]; } + + //! Get immediate value as `intptr_t`. + ASMJIT_INLINE intptr_t getIntPtr() const { + if (sizeof(intptr_t) == sizeof(int64_t)) + return static_cast(getInt64()); + else + return static_cast(getInt32()); + } + + //! Get immediate value as `uintptr_t`. + ASMJIT_INLINE uintptr_t getUIntPtr() const { + if (sizeof(uintptr_t) == sizeof(uint64_t)) + return static_cast(getUInt64()); + else + return static_cast(getUInt32()); + } + + //! Get low 32-bit signed integer. + ASMJIT_INLINE int32_t getInt32Lo() const { return _imm.value._i32[_ASMJIT_HOST_INDEX(2, 0)]; } + //! Get low 32-bit signed integer. + ASMJIT_INLINE uint32_t getUInt32Lo() const { return _imm.value._u32[_ASMJIT_HOST_INDEX(2, 0)]; } + //! Get high 32-bit signed integer. + ASMJIT_INLINE int32_t getInt32Hi() const { return _imm.value._i32[_ASMJIT_HOST_INDEX(2, 1)]; } + //! Get high 32-bit signed integer. + ASMJIT_INLINE uint32_t getUInt32Hi() const { return _imm.value._u32[_ASMJIT_HOST_INDEX(2, 1)]; } + + //! Set immediate value to 8-bit signed integer `val`. + ASMJIT_INLINE Imm& setInt8(int8_t val) { + if (kArchHost64Bit) { + _imm.value._i64[0] = static_cast(val); + } + else { + int32_t val32 = static_cast(val); + _imm.value._i32[_ASMJIT_HOST_INDEX(2, 0)] = val32; + _imm.value._i32[_ASMJIT_HOST_INDEX(2, 1)] = val32 >> 31; + } + return *this; + } + + //! Set immediate value to 8-bit unsigned integer `val`. + ASMJIT_INLINE Imm& setUInt8(uint8_t val) { + if (kArchHost64Bit) { + _imm.value._u64[0] = static_cast(val); + } + else { + _imm.value._u32[_ASMJIT_HOST_INDEX(2, 0)] = static_cast(val); + _imm.value._u32[_ASMJIT_HOST_INDEX(2, 1)] = 0; + } + return *this; + } + + //! Set immediate value to 16-bit signed integer `val`. + ASMJIT_INLINE Imm& setInt16(int16_t val) { + if (kArchHost64Bit) { + _imm.value._i64[0] = static_cast(val); + } + else { + int32_t val32 = static_cast(val); + _imm.value._i32[_ASMJIT_HOST_INDEX(2, 0)] = val32; + _imm.value._i32[_ASMJIT_HOST_INDEX(2, 1)] = val32 >> 31; + } + return *this; + } + + //! Set immediate value to 16-bit unsigned integer `val`. + ASMJIT_INLINE Imm& setUInt16(uint16_t val) { + if (kArchHost64Bit) { + _imm.value._u64[0] = static_cast(val); + } + else { + _imm.value._u32[_ASMJIT_HOST_INDEX(2, 0)] = static_cast(val); + _imm.value._u32[_ASMJIT_HOST_INDEX(2, 1)] = 0; + } + return *this; + } + + //! Set immediate value to 32-bit signed integer `val`. + ASMJIT_INLINE Imm& setInt32(int32_t val) { + if (kArchHost64Bit) { + _imm.value._i64[0] = static_cast(val); + } + else { + _imm.value._i32[_ASMJIT_HOST_INDEX(2, 0)] = val; + _imm.value._i32[_ASMJIT_HOST_INDEX(2, 1)] = val >> 31; + } + return *this; + } + + //! Set immediate value to 32-bit unsigned integer `val`. + ASMJIT_INLINE Imm& setUInt32(uint32_t val) { + if (kArchHost64Bit) { + _imm.value._u64[0] = static_cast(val); + } + else { + _imm.value._u32[_ASMJIT_HOST_INDEX(2, 0)] = val; + _imm.value._u32[_ASMJIT_HOST_INDEX(2, 1)] = 0; + } + return *this; + } + + //! Set immediate value to 64-bit signed integer `val`. + ASMJIT_INLINE Imm& setInt64(int64_t val) { + _imm.value._i64[0] = val; + return *this; + } + + //! Set immediate value to 64-bit unsigned integer `val`. + ASMJIT_INLINE Imm& setUInt64(uint64_t val) { + _imm.value._u64[0] = val; + return *this; + } + + //! Set immediate value to intptr_t `val`. + ASMJIT_INLINE Imm& setIntPtr(intptr_t val) { + _imm.value._i64[0] = static_cast(val); + return *this; + } + + //! Set immediate value to uintptr_t `val`. + ASMJIT_INLINE Imm& setUIntPtr(uintptr_t val) { + _imm.value._u64[0] = static_cast(val); + return *this; + } + + //! Set immediate value as unsigned type to `val`. + ASMJIT_INLINE Imm& setPtr(void* p) { return setIntPtr((intptr_t)p); } + + // -------------------------------------------------------------------------- + // [Float] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE Imm& setFloat(float f) { + _imm.value._f32[_ASMJIT_HOST_INDEX(2, 0)] = f; + _imm.value._u32[_ASMJIT_HOST_INDEX(2, 1)] = 0; + return *this; + } + + ASMJIT_INLINE Imm& setDouble(double d) { + _imm.value._f64[0] = d; + return *this; + } + + // -------------------------------------------------------------------------- + // [Truncate] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE Imm& truncateTo8Bits() { + if (kArchHost64Bit) { + _imm.value._u64[0] &= static_cast(0x000000FFU); + } + else { + _imm.value._u32[_ASMJIT_HOST_INDEX(2, 0)] &= 0x000000FFU; + _imm.value._u32[_ASMJIT_HOST_INDEX(2, 1)] = 0; + } + return *this; + } + + ASMJIT_INLINE Imm& truncateTo16Bits() { + if (kArchHost64Bit) { + _imm.value._u64[0] &= static_cast(0x0000FFFFU); + } + else { + _imm.value._u32[_ASMJIT_HOST_INDEX(2, 0)] &= 0x0000FFFFU; + _imm.value._u32[_ASMJIT_HOST_INDEX(2, 1)] = 0; + } + return *this; + } + + ASMJIT_INLINE Imm& truncateTo32Bits() { + _imm.value._u32[_ASMJIT_HOST_INDEX(2, 1)] = 0; + return *this; + } + + // -------------------------------------------------------------------------- + // [Operator Overload] + // -------------------------------------------------------------------------- + + //! Assign `other` to the immediate operand. + ASMJIT_INLINE Imm& operator=(const Imm& other) { + _copy(other); + return *this; + } +}; + +// ============================================================================ +// [asmjit::Label] +// ============================================================================ + +//! Label (jump target or data location). +//! +//! Label represents a location in code typically used as jump targets, but may +//! be also reference data or static variables. Label has to be explicitly +//! created by a code-generator by calling `CodeGen::newLabel()` where `CodeGen` +//! is your code generator, which derives from `Assembler` or `Compiler`. +//! +//! Example of using labels: +//! +//! ~~~ +//! // Create Assembler/Compiler. +//! host::Assembler a; +//! +//! // Create Label instance. +//! Label L_1(a); +//! +//! // ... your code ... +//! +//! // Using label. +//! a.jump(L_1); +//! +//! // ... your code ... +//! +//! // Bind label to the current position, see `CodeGen::bind()`. +//! a.bind(L_1); +//! ~~~ +struct Label : public Operand { + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create new, unassociated label. + ASMJIT_INLINE Label() : Operand(NoInit) { + reset(); + } + + explicit ASMJIT_INLINE Label(uint32_t id) : Operand(NoInit) { + _init_packed_op_sz_b0_b1_id(kOperandTypeLabel, 0, 0, 0, id); + _init_packed_d2_d3(0, 0); + } + + //! Create new initialized label. + explicit ASMJIT_INLINE Label(Assembler& a); + //! Create new initialized label. + explicit ASMJIT_INLINE Label(Compiler& c); + + //! Create reference to another label. + ASMJIT_INLINE Label(const Label& other) : Operand(other) {} + + explicit ASMJIT_INLINE Label(const _NoInit&) : Operand(NoInit) {} + + // -------------------------------------------------------------------------- + // [Reset] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE void reset() { + _init_packed_op_sz_b0_b1_id(kOperandTypeLabel, 0, 0, 0, kInvalidValue); + _init_packed_d2_d3(0, 0); + } + + // -------------------------------------------------------------------------- + // [Label Specific] + // -------------------------------------------------------------------------- + + //! Get whether the label has been initialized by `Assembler` or `Compiler`. + ASMJIT_INLINE bool isInitialized() const { + return _label.id != kInvalidValue; + } + + // -------------------------------------------------------------------------- + // [Operator Overload] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE Label& operator=(const Label& other) { _copy(other); return *this; } + + ASMJIT_INLINE bool operator==(const Label& other) const { return _base.id == other._base.id; } + ASMJIT_INLINE bool operator!=(const Label& other) const { return _base.id != other._base.id; } +}; + +// ============================================================================ +// [asmjit::Operand - Globals] +// ============================================================================ + +//! No operand, can be used to reset an operand by assignment or to refer to an +//! operand that doesn't exist. +ASMJIT_VAR const Operand noOperand; + +//! Create signed immediate value operand. +static ASMJIT_INLINE Imm imm(int64_t val) { + return Imm(val); +} + +//! Create unsigned immediate value operand. +static ASMJIT_INLINE Imm imm_u(uint64_t val) { + return Imm(static_cast(val)); +} + +//! Create void* pointer immediate value operand. +static ASMJIT_INLINE Imm imm_ptr(void* p) { + return Imm(static_cast((intptr_t)p)); +} + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_OPERAND_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/runtime.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/runtime.h new file mode 100644 index 0000000..b355fc4 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/runtime.h @@ -0,0 +1,262 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_RUNTIME_H +#define _ASMJIT_BASE_RUNTIME_H + +// [Dependencies - AsmJit] +#include "../base/error.h" +#include "../base/vmem.h" + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +// ============================================================================ +// [Forward Declarations] +// ============================================================================ + +struct Assembler; +struct CpuInfo; + +//! \addtogroup asmjit_base_general +//! \{ + +// ============================================================================ +// [asmjit::kRuntimeType] +// ============================================================================ + +ASMJIT_ENUM(kRuntimeType) { + kRuntimeTypeNone = 0, + + kRuntimeTypeJit = 1, + kRuntimeTypeRemote = 2 +}; + +// ============================================================================ +// [asmjit::Runtime] +// ============================================================================ + +//! Base runtime. +struct ASMJIT_VCLASS Runtime { + ASMJIT_NO_COPY(Runtime) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a `Runtime` instance. + ASMJIT_API Runtime(); + //! Destroy the `Runtime` instance. + ASMJIT_API virtual ~Runtime(); + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get runtime type. + ASMJIT_INLINE uint32_t getRuntimeType() const { + return _runtimeType; + } + + //! Get whether the runtime has a base address. + //! + //! \sa \ref getBaseAddress() + ASMJIT_INLINE bool hasBaseAddress() const { + return _baseAddress == kNoBaseAddress; + } + + //! Get the base address. + ASMJIT_INLINE Ptr getBaseAddress() const { + return _baseAddress; + } + + // -------------------------------------------------------------------------- + // [Interface] + // -------------------------------------------------------------------------- + + //! Get CPU information. + virtual const CpuInfo* getCpuInfo() = 0; + + //! Get stack alignment of target runtime. + virtual uint32_t getStackAlignment() = 0; + + //! Allocate a memory needed for a code generated by `assembler` and + //! relocate it to the target location. + //! + //! The beginning of the memory allocated for the function is returned in + //! `dst`. Returns Status code as \ref kError, on failure `dst` is set to + //! `NULL`. + virtual Error add(void** dst, Assembler* assembler) = 0; + + //! Release memory allocated by `add`. + virtual Error release(void* p) = 0; + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Maximum size of the code that can be added to the runtime (0=unlimited). + size_t _sizeLimit; + //! Base address (-1 means no base address). + Ptr _baseAddress; + + //! Type of the runtime. + uint8_t _runtimeType; + //! Type of the allocation. + uint8_t _allocType; + //! \internal + uint8_t _reserved[sizeof(intptr_t) - 2]; +}; + +// ============================================================================ +// [asmjit::HostRuntime] +// ============================================================================ + +//! Base runtime for JIT code generation. +struct ASMJIT_VCLASS HostRuntime : public Runtime { + ASMJIT_NO_COPY(HostRuntime) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a `HostRuntime` instance. + ASMJIT_API HostRuntime(); + //! Destroy the `HostRuntime` instance. + ASMJIT_API virtual ~HostRuntime(); + + // -------------------------------------------------------------------------- + // [Interface] + // -------------------------------------------------------------------------- + + ASMJIT_API virtual const CpuInfo* getCpuInfo(); + ASMJIT_API virtual uint32_t getStackAlignment(); + + //! Flush an instruction cache. + //! + //! This member function is called after the code has been copied to the + //! destination buffer. It is only useful for JIT code generation as it + //! causes a flush of the processor cache. + //! + //! Flushing is basically a NOP under X86/X64, but is needed by architectures + //! that do not have a transparent instruction cache. + //! + //! This function can also be overridden to improve compatibility with tools + //! such as Valgrind, however, it's not an official part of AsmJit. + ASMJIT_API virtual void flush(void* p, size_t size); +}; + +// ============================================================================ +// [asmjit::StaticRuntime] +// ============================================================================ + +//! JIT static runtime. +//! +//! JIT static runtime can be used to generate code to a memory location that +//! is known. +struct ASMJIT_VCLASS StaticRuntime : public HostRuntime { + ASMJIT_NO_COPY(StaticRuntime) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a `StaticRuntime` instance. + //! + //! The `address` specifies a fixed target address, which will be used as a + //! base address for relocation, and `sizeLimit` specified the maximum size + //! of a code that can be copied to it. If there is no limit `sizeLimit` + //! should be zero. + ASMJIT_API StaticRuntime(void* baseAddress, size_t sizeLimit = 0); + //! Destroy the `StaticRuntime` instance. + ASMJIT_API virtual ~StaticRuntime(); + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get the base address. + ASMJIT_INLINE Ptr getBaseAddress() const { + return _baseAddress; + } + + //! Get the maximum size of the code that can be relocated to the target + //! address or zero if unlimited. + ASMJIT_INLINE size_t getSizeLimit() const { + return _sizeLimit; + } + + // -------------------------------------------------------------------------- + // [Interface] + // -------------------------------------------------------------------------- + + ASMJIT_API virtual Error add(void** dst, Assembler* assembler); + ASMJIT_API virtual Error release(void* p); +}; + +// ============================================================================ +// [asmjit::JitRuntime] +// ============================================================================ + +//! JIT runtime. +struct ASMJIT_VCLASS JitRuntime : public HostRuntime { + ASMJIT_NO_COPY(JitRuntime) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a `JitRuntime` instance. + ASMJIT_API JitRuntime(); + //! Destroy the `JitRuntime` instance. + ASMJIT_API virtual ~JitRuntime(); + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get the type of allocation. + ASMJIT_INLINE uint32_t getAllocType() const { + return _allocType; + } + + //! Set the type of allocation. + ASMJIT_INLINE void setAllocType(uint32_t allocType) { + _allocType = allocType; + } + + //! Get the virtual memory manager. + ASMJIT_INLINE VMemMgr* getMemMgr() const { + return const_cast(&_memMgr); + } + + // -------------------------------------------------------------------------- + // [Interface] + // -------------------------------------------------------------------------- + + ASMJIT_API virtual Error add(void** dst, Assembler* assembler); + ASMJIT_API virtual Error release(void* p); + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Virtual memory manager. + VMemMgr _memMgr; +}; + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_RUNTIME_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/string.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/string.h new file mode 100644 index 0000000..145a689 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/string.h @@ -0,0 +1,372 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_STRING_H +#define _ASMJIT_BASE_STRING_H + +// [Dependencies - AsmJit] +#include "../base/globals.h" + +// [Dependencies - C] +#include + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_util +//! \{ + +// ============================================================================ +// [asmjit::kStringOp] +// ============================================================================ + +//! \internal +//! +//! String operation. +ASMJIT_ENUM(kStringOp) { + //! Replace the current string by a given content. + kStringOpSet = 0, + //! Append a given content to the current string. + kStringOpAppend = 1 +}; + +// ============================================================================ +// [asmjit::kStringFormat] +// ============================================================================ + +//! \internal +//! +//! String format flags. +ASMJIT_ENUM(kStringFormat) { + kStringFormatShowSign = 0x00000001, + kStringFormatShowSpace = 0x00000002, + kStringFormatAlternate = 0x00000004, + kStringFormatSigned = 0x80000000 +}; + +// ============================================================================ +// [asmjit::StringUtil] +// ============================================================================ + +//! String utilities. +struct StringUtil { + static ASMJIT_INLINE size_t nlen(const char* s, size_t maxlen) { + size_t i; + for (i = 0; i < maxlen; i++) + if (!s[i]) + break; + return i; + } +}; + +// ============================================================================ +// [asmjit::StringBuilder] +// ============================================================================ + +//! String builder. +//! +//! String builder was designed to be able to build a string using append like +//! operation to append numbers, other strings, or signle characters. It can +//! allocate it's own buffer or use a buffer created on the stack. +//! +//! String builder contains method specific to AsmJit functionality, used for +//! logging or HTML output. +struct StringBuilder { + ASMJIT_NO_COPY(StringBuilder) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + ASMJIT_API StringBuilder(); + ASMJIT_API ~StringBuilder(); + + ASMJIT_INLINE StringBuilder(const _NoInit&) {} + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get string builder capacity. + ASMJIT_INLINE size_t getCapacity() const { return _capacity; } + //! Get length. + ASMJIT_INLINE size_t getLength() const { return _length; } + + //! Get null-terminated string data. + ASMJIT_INLINE char* getData() { return _data; } + //! Get null-terminated string data (const). + ASMJIT_INLINE const char* getData() const { return _data; } + + // -------------------------------------------------------------------------- + // [Prepare / Reserve] + // -------------------------------------------------------------------------- + + //! Prepare to set/append. + ASMJIT_API char* prepare(uint32_t op, size_t len); + + //! Reserve `to` bytes in string builder. + ASMJIT_API bool reserve(size_t to); + + // -------------------------------------------------------------------------- + // [Clear] + // -------------------------------------------------------------------------- + + //! Clear the content in String builder. + ASMJIT_API void clear(); + + // -------------------------------------------------------------------------- + // [Op] + // -------------------------------------------------------------------------- + + ASMJIT_API bool _opString(uint32_t op, const char* str, size_t len = kInvalidIndex); + ASMJIT_API bool _opVFormat(uint32_t op, const char* fmt, va_list ap); + ASMJIT_API bool _opChar(uint32_t op, char c); + ASMJIT_API bool _opChars(uint32_t op, char c, size_t len); + ASMJIT_API bool _opNumber(uint32_t op, uint64_t i, uint32_t base = 0, size_t width = 0, uint32_t flags = 0); + ASMJIT_API bool _opHex(uint32_t op, const void* data, size_t len); + + // -------------------------------------------------------------------------- + // [Set] + // -------------------------------------------------------------------------- + + //! Replace the current content by `str` of `len`. + ASMJIT_INLINE bool setString(const char* str, size_t len = kInvalidIndex) { + return _opString(kStringOpSet, str, len); + } + + //! Replace the current content by formatted string `fmt`. + ASMJIT_INLINE bool setVFormat(const char* fmt, va_list ap) { + return _opVFormat(kStringOpSet, fmt, ap); + } + + //! Replace the current content by formatted string `fmt`. + ASMJIT_API bool setFormat(const char* fmt, ...); + + //! Replace the current content by `c` character. + ASMJIT_INLINE bool setChar(char c) { + return _opChar(kStringOpSet, c); + } + + //! Replace the current content by `c` of `len`. + ASMJIT_INLINE bool setChars(char c, size_t len) { + return _opChars(kStringOpSet, c, len); + } + + //! Replace the current content by formatted integer `i`. + ASMJIT_INLINE bool setInt(uint64_t i, uint32_t base = 0, size_t width = 0, uint32_t flags = 0) { + return _opNumber(kStringOpSet, i, base, width, flags | kStringFormatSigned); + } + + //! Replace the current content by formatted integer `i`. + ASMJIT_INLINE bool setUInt(uint64_t i, uint32_t base = 0, size_t width = 0, uint32_t flags = 0) { + return _opNumber(kStringOpSet, i, base, width, flags); + } + + //! Replace the current content by the given `data` converted to a HEX string. + ASMJIT_INLINE bool setHex(const void* data, size_t len) { + return _opHex(kStringOpSet, data, len); + } + + // -------------------------------------------------------------------------- + // [Append] + // -------------------------------------------------------------------------- + + //! Append `str` of `len`. + ASMJIT_INLINE bool appendString(const char* str, size_t len = kInvalidIndex) { + return _opString(kStringOpAppend, str, len); + } + + //! Append a formatted string `fmt` to the current content. + ASMJIT_INLINE bool appendVFormat(const char* fmt, va_list ap) { + return _opVFormat(kStringOpAppend, fmt, ap); + } + + //! Append a formatted string `fmt` to the current content. + ASMJIT_API bool appendFormat(const char* fmt, ...); + + //! Append `c` character. + ASMJIT_INLINE bool appendChar(char c) { + return _opChar(kStringOpAppend, c); + } + + //! Append `c` of `len`. + ASMJIT_INLINE bool appendChars(char c, size_t len) { + return _opChars(kStringOpAppend, c, len); + } + + //! Append `i`. + ASMJIT_INLINE bool appendInt(int64_t i, uint32_t base = 0, size_t width = 0, uint32_t flags = 0) { + return _opNumber(kStringOpAppend, static_cast(i), base, width, flags | kStringFormatSigned); + } + + //! Append `i`. + ASMJIT_INLINE bool appendUInt(uint64_t i, uint32_t base = 0, size_t width = 0, uint32_t flags = 0) { + return _opNumber(kStringOpAppend, i, base, width, flags); + } + + //! Append the given `data` converted to a HEX string. + ASMJIT_INLINE bool appendHex(const void* data, size_t len) { + return _opHex(kStringOpAppend, data, len); + } + + // -------------------------------------------------------------------------- + // [_Append] + // -------------------------------------------------------------------------- + + //! Append `str` of `len`, inlined, without buffer overflow check. + ASMJIT_INLINE void _appendString(const char* str, size_t len = kInvalidIndex) { + // len should be a constant if we are inlining. + if (len == kInvalidIndex) { + char* p = &_data[_length]; + + while (*str) { + ASMJIT_ASSERT(p < _data + _capacity); + *p++ = *str++; + } + + *p = '\0'; + _length = (size_t)(p - _data); + } + else { + ASMJIT_ASSERT(_capacity - _length >= len); + + char* p = &_data[_length]; + char* pEnd = p + len; + + while (p < pEnd) + *p++ = *str++; + + *p = '\0'; + _length += len; + } + } + + //! Append `c` character, inlined, without buffer overflow check. + ASMJIT_INLINE void _appendChar(char c) { + ASMJIT_ASSERT(_capacity - _length >= 1); + + _data[_length] = c; + _length++; + _data[_length] = '\0'; + } + + //! Append `c` of `len`, inlined, without buffer overflow check. + ASMJIT_INLINE void _appendChars(char c, size_t len) { + ASMJIT_ASSERT(_capacity - _length >= len); + + char* p = &_data[_length]; + char* pEnd = p + len; + + while (p < pEnd) + *p++ = c; + + *p = '\0'; + _length += len; + } + + ASMJIT_INLINE void _appendUInt32(uint32_t i) { + char buf_[32]; + + char* pEnd = buf_ + ASMJIT_ARRAY_SIZE(buf_); + char* pBuf = pEnd; + + do { + uint32_t d = i / 10; + uint32_t r = i % 10; + + *--pBuf = static_cast(r + '0'); + i = d; + } while (i); + + ASMJIT_ASSERT(_capacity - _length >= (size_t)(pEnd - pBuf)); + char* p = &_data[_length]; + + do { + *p++ = *pBuf; + } while (++pBuf != pEnd); + + *p = '\0'; + _length = (size_t)(p - _data); + } + + // -------------------------------------------------------------------------- + // [Eq] + // -------------------------------------------------------------------------- + + //! Check for equality with other `str` of `len`. + ASMJIT_API bool eq(const char* str, size_t len = kInvalidIndex) const; + //! Check for equality with `other`. + ASMJIT_INLINE bool eq(const StringBuilder& other) const { + return eq(other._data); + } + + // -------------------------------------------------------------------------- + // [Operator Overload] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE bool operator==(const StringBuilder& other) const { return eq(other); } + ASMJIT_INLINE bool operator!=(const StringBuilder& other) const { return !eq(other); } + + ASMJIT_INLINE bool operator==(const char* str) const { return eq(str); } + ASMJIT_INLINE bool operator!=(const char* str) const { return !eq(str); } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! String data. + char* _data; + //! Length. + size_t _length; + //! Capacity. + size_t _capacity; + //! Whether the string can be freed. + size_t _canFree; +}; + +// ============================================================================ +// [asmjit::StringBuilderT] +// ============================================================================ + +//! \internal +template +struct StringBuilderT : public StringBuilder { + ASMJIT_NO_COPY(StringBuilderT) + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + ASMJIT_INLINE StringBuilderT() : StringBuilder(NoInit) { + _data = _embeddedData; + _data[0] = 0; + + _length = 0; + _capacity = N; + _canFree = false; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Embedded data. + char _embeddedData[static_cast( + N + 1 + sizeof(intptr_t)) & ~static_cast(sizeof(intptr_t) - 1)]; +}; + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_STRING_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/vectypes.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/vectypes.h new file mode 100644 index 0000000..d675ec2 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/vectypes.h @@ -0,0 +1,1251 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_VECTYPES_H +#define _ASMJIT_BASE_VECTYPES_H + +// [Dependencies - AsmJit] +#include "../base/globals.h" + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_util +//! \{ + +// ============================================================================ +// [asmjit::Vec64] +// ============================================================================ + +//! 64-bit vector register data. +union Vec64 { + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Set all eight 8-bit signed integers. + static ASMJIT_INLINE Vec64 fromSb( + int8_t x0, int8_t x1, int8_t x2, int8_t x3, int8_t x4, int8_t x5, int8_t x6, int8_t x7) + { + Vec64 self; + self.setSb(x0, x1, x2, x3, x4, x5, x6, x7); + return self; + } + + //! Set all eight 8-bit signed integers. + static ASMJIT_INLINE Vec64 fromSb( + int8_t x0) + { + Vec64 self; + self.setSb(x0); + return self; + } + + //! Set all eight 8-bit unsigned integers. + static ASMJIT_INLINE Vec64 fromUb( + uint8_t x0, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4, uint8_t x5, uint8_t x6, uint8_t x7) + { + Vec64 self; + self.setUb(x0, x1, x2, x3, x4, x5, x6, x7); + return self; + } + + //! Set all eight 8-bit unsigned integers. + static ASMJIT_INLINE Vec64 fromUb( + uint8_t x0) + { + Vec64 self; + self.setUb(x0); + return self; + } + + //! Set all four 16-bit signed integers. + static ASMJIT_INLINE Vec64 fromSw( + int16_t x0, int16_t x1, int16_t x2, int16_t x3) + { + Vec64 self; + self.setSw(x0, x1, x2, x3); + return self; + } + + //! Set all four 16-bit signed integers. + static ASMJIT_INLINE Vec64 fromSw( + int16_t x0) + { + Vec64 self; + self.setSw(x0); + return self; + } + + //! Set all four 16-bit unsigned integers. + static ASMJIT_INLINE Vec64 fromUw( + uint16_t x0, uint16_t x1, uint16_t x2, uint16_t x3) + { + Vec64 self; + self.setUw(x0, x1, x2, x3); + return self; + } + + //! Set all four 16-bit unsigned integers. + static ASMJIT_INLINE Vec64 fromUw( + uint16_t x0) + { + Vec64 self; + self.setUw(x0); + return self; + } + + //! Set all two 32-bit signed integers. + static ASMJIT_INLINE Vec64 fromSd( + int32_t x0, int32_t x1) + { + Vec64 self; + self.setSd(x0, x1); + return self; + } + + //! Set all two 32-bit signed integers. + static ASMJIT_INLINE Vec64 fromSd( + int32_t x0) + { + Vec64 self; + self.setSd(x0); + return self; + } + + //! Set all two 32-bit unsigned integers. + static ASMJIT_INLINE Vec64 fromUd( + uint32_t x0, uint32_t x1) + { + Vec64 self; + self.setUd(x0, x1); + return self; + } + + //! Set all two 32-bit unsigned integers. + static ASMJIT_INLINE Vec64 fromUd( + uint32_t x0) + { + Vec64 self; + self.setUd(x0); + return self; + } + + //! Set 64-bit signed integer. + static ASMJIT_INLINE Vec64 fromSq( + int64_t x0) + { + Vec64 self; + self.setSq(x0); + return self; + } + + //! Set 64-bit unsigned integer. + static ASMJIT_INLINE Vec64 fromUq( + uint64_t x0) + { + Vec64 self; + self.setUq(x0); + return self; + } + + //! Set all two SP-FP values. + static ASMJIT_INLINE Vec64 fromSf( + float x0, float x1) + { + Vec64 self; + self.setSf(x0, x1); + return self; + } + + //! Set all two SP-FP values. + static ASMJIT_INLINE Vec64 fromSf( + float x0) + { + Vec64 self; + self.setSf(x0); + return self; + } + + //! Set all two SP-FP values. + static ASMJIT_INLINE Vec64 fromDf( + double x0) + { + Vec64 self; + self.setDf(x0); + return self; + } + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Set all eight 8-bit signed integers. + ASMJIT_INLINE void setSb( + int8_t x0, int8_t x1, int8_t x2, int8_t x3, int8_t x4, int8_t x5, int8_t x6, int8_t x7) + { + sb[0] = x0; sb[1] = x1; sb[2] = x2; sb[3] = x3; + sb[4] = x4; sb[5] = x5; sb[6] = x6; sb[7] = x7; + } + + //! Set all eight 8-bit signed integers. + ASMJIT_INLINE void setSb( + int8_t x0) + { + setUb(static_cast(x0)); + } + + //! Set all eight 8-bit unsigned integers. + ASMJIT_INLINE void setUb( + uint8_t x0, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4, uint8_t x5, uint8_t x6, uint8_t x7) + { + ub[0] = x0; ub[1] = x1; ub[2] = x2; ub[3] = x3; + ub[4] = x4; ub[5] = x5; ub[6] = x6; ub[7] = x7; + } + + //! Set all eight 8-bit unsigned integers. + ASMJIT_INLINE void setUb( + uint8_t x0) + { + if (kArchHost64Bit) { + uint64_t t = static_cast(x0) * ASMJIT_UINT64_C(0x0101010101010101); + uq[0] = t; + } + else { + uint32_t t = static_cast(x0) * static_cast(0x01010101U); + ud[0] = t; + ud[1] = t; + } + } + + //! Set all four 16-bit signed integers. + ASMJIT_INLINE void setSw( + int16_t x0, int16_t x1, int16_t x2, int16_t x3) + { + sw[0] = x0; sw[1] = x1; sw[2] = x2; sw[3] = x3; + } + + //! Set all four 16-bit signed integers. + ASMJIT_INLINE void setSw( + int16_t x0) + { + setUw(static_cast(x0)); + } + + //! Set all four 16-bit unsigned integers. + ASMJIT_INLINE void setUw( + uint16_t x0, uint16_t x1, uint16_t x2, uint16_t x3) + { + uw[0] = x0; uw[1] = x1; uw[2] = x2; uw[3] = x3; + } + + //! Set all four 16-bit unsigned integers. + ASMJIT_INLINE void setUw( + uint16_t x0) + { + if (kArchHost64Bit) { + uint64_t t = static_cast(x0) * ASMJIT_UINT64_C(0x0001000100010001); + uq[0] = t; + } + else { + uint32_t t = static_cast(x0) * static_cast(0x00010001U); + ud[0] = t; + ud[1] = t; + } + } + + //! Set all two 32-bit signed integers. + ASMJIT_INLINE void setSd( + int32_t x0, int32_t x1) + { + sd[0] = x0; sd[1] = x1; + } + + //! Set all two 32-bit signed integers. + ASMJIT_INLINE void setSd( + int32_t x0) + { + sd[0] = x0; sd[1] = x0; + } + + //! Set all two 32-bit unsigned integers. + ASMJIT_INLINE void setUd( + uint32_t x0, uint32_t x1) + { + ud[0] = x0; ud[1] = x1; + } + + //! Set all two 32-bit unsigned integers. + ASMJIT_INLINE void setUd( + uint32_t x0) + { + ud[0] = x0; ud[1] = x0; + } + + //! Set 64-bit signed integer. + ASMJIT_INLINE void setSq( + int64_t x0) + { + sq[0] = x0; + } + + //! Set 64-bit unsigned integer. + ASMJIT_INLINE void setUq( + uint64_t x0) + { + uq[0] = x0; + } + + //! Set all two SP-FP values. + ASMJIT_INLINE void setSf( + float x0, float x1) + { + sf[0] = x0; sf[1] = x1; + } + + //! Set all two SP-FP values. + ASMJIT_INLINE void setSf( + float x0) + { + sf[0] = x0; sf[1] = x0; + } + + //! Set all two SP-FP values. + ASMJIT_INLINE void setDf( + double x0) + { + df[0] = x0; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Array of eight 8-bit signed integers. + int8_t sb[8]; + //! Array of eight 8-bit unsigned integers. + uint8_t ub[8]; + //! Array of four 16-bit signed integers. + int16_t sw[4]; + //! Array of four 16-bit unsigned integers. + uint16_t uw[4]; + //! Array of two 32-bit signed integers. + int32_t sd[2]; + //! Array of two 32-bit unsigned integers. + uint32_t ud[2]; + //! Array of one 64-bit signed integer. + int64_t sq[1]; + //! Array of one 64-bit unsigned integer. + uint64_t uq[1]; + + //! Array of two SP-FP values. + float sf[2]; + //! Array of one DP-FP value. + double df[1]; +}; + +// ============================================================================ +// [asmjit::Vec128] +// ============================================================================ + +//! 128-bit vector register data. +union Vec128 { + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Set all sixteen 8-bit signed integers. + static ASMJIT_INLINE Vec128 fromSb( + int8_t x0 , int8_t x1 , int8_t x2 , int8_t x3 , + int8_t x4 , int8_t x5 , int8_t x6 , int8_t x7 , + int8_t x8 , int8_t x9 , int8_t x10, int8_t x11, + int8_t x12, int8_t x13, int8_t x14, int8_t x15) + { + Vec128 self; + self.setSb(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15); + return self; + } + + //! Set all sixteen 8-bit signed integers. + static ASMJIT_INLINE Vec128 fromSb( + int8_t x0) + { + Vec128 self; + self.setSb(x0); + return self; + } + + //! Set all sixteen 8-bit unsigned integers. + static ASMJIT_INLINE Vec128 fromUb( + uint8_t x0 , uint8_t x1 , uint8_t x2 , uint8_t x3 , + uint8_t x4 , uint8_t x5 , uint8_t x6 , uint8_t x7 , + uint8_t x8 , uint8_t x9 , uint8_t x10, uint8_t x11, + uint8_t x12, uint8_t x13, uint8_t x14, uint8_t x15) + { + Vec128 self; + self.setUb(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15); + return self; + } + + //! Set all sixteen 8-bit unsigned integers. + static ASMJIT_INLINE Vec128 fromUb( + uint8_t x0) + { + Vec128 self; + self.setUb(x0); + return self; + } + + //! Set all eight 16-bit signed integers. + static ASMJIT_INLINE Vec128 fromSw( + int16_t x0, int16_t x1, int16_t x2, int16_t x3, int16_t x4, int16_t x5, int16_t x6, int16_t x7) + { + Vec128 self; + self.setSw(x0, x1, x2, x3, x4, x5, x6, x7); + return self; + } + + //! Set all eight 16-bit signed integers. + static ASMJIT_INLINE Vec128 fromSw( + int16_t x0) + { + Vec128 self; + self.setSw(x0); + return self; + } + + //! Set all eight 16-bit unsigned integers. + static ASMJIT_INLINE Vec128 fromUw( + uint16_t x0, uint16_t x1, uint16_t x2, uint16_t x3, uint16_t x4, uint16_t x5, uint16_t x6, uint16_t x7) + { + Vec128 self; + self.setUw(x0, x1, x2, x3, x4, x5, x6, x7); + return self; + } + + //! Set all eight 16-bit unsigned integers. + static ASMJIT_INLINE Vec128 fromUw( + uint16_t x0) + { + Vec128 self; + self.setUw(x0); + return self; + } + + //! Set all four 32-bit signed integers. + static ASMJIT_INLINE Vec128 fromSd( + int32_t x0, int32_t x1, int32_t x2, int32_t x3) + { + Vec128 self; + self.setSd(x0, x1, x2, x3); + return self; + } + + //! Set all four 32-bit signed integers. + static ASMJIT_INLINE Vec128 fromSd( + int32_t x0) + { + Vec128 self; + self.setSd(x0); + return self; + } + + //! Set all four 32-bit unsigned integers. + static ASMJIT_INLINE Vec128 fromUd( + uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3) + { + Vec128 self; + self.setUd(x0, x1, x2, x3); + return self; + } + + //! Set all four 32-bit unsigned integers. + static ASMJIT_INLINE Vec128 fromUd( + uint32_t x0) + { + Vec128 self; + self.setUd(x0); + return self; + } + + //! Set all two 64-bit signed integers. + static ASMJIT_INLINE Vec128 fromSq( + int64_t x0, int64_t x1) + { + Vec128 self; + self.setSq(x0, x1); + return self; + } + + //! Set all two 64-bit signed integers. + static ASMJIT_INLINE Vec128 fromSq( + int64_t x0) + { + Vec128 self; + self.setSq(x0); + return self; + } + + //! Set all two 64-bit unsigned integers. + static ASMJIT_INLINE Vec128 fromUq( + uint64_t x0, uint64_t x1) + { + Vec128 self; + self.setUq(x0, x1); + return self; + } + + //! Set all two 64-bit unsigned integers. + static ASMJIT_INLINE Vec128 fromUq( + uint64_t x0) + { + Vec128 self; + self.setUq(x0); + return self; + } + + //! Set all four SP-FP floats. + static ASMJIT_INLINE Vec128 fromSf( + float x0, float x1, float x2, float x3) + { + Vec128 self; + self.setSf(x0, x1, x2, x3); + return self; + } + + //! Set all four SP-FP floats. + static ASMJIT_INLINE Vec128 fromSf( + float x0) + { + Vec128 self; + self.setSf(x0); + return self; + } + + //! Set all two DP-FP floats. + static ASMJIT_INLINE Vec128 fromDf( + double x0, double x1) + { + Vec128 self; + self.setDf(x0, x1); + return self; + } + + //! Set all two DP-FP floats. + static ASMJIT_INLINE Vec128 fromDf( + double x0) + { + Vec128 self; + self.setDf(x0); + return self; + } + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Set all sixteen 8-bit signed integers. + ASMJIT_INLINE void setSb( + int8_t x0 , int8_t x1 , int8_t x2 , int8_t x3 , + int8_t x4 , int8_t x5 , int8_t x6 , int8_t x7 , + int8_t x8 , int8_t x9 , int8_t x10, int8_t x11, + int8_t x12, int8_t x13, int8_t x14, int8_t x15) + { + sb[0 ] = x0 ; sb[1 ] = x1 ; sb[2 ] = x2 ; sb[3 ] = x3 ; + sb[4 ] = x4 ; sb[5 ] = x5 ; sb[6 ] = x6 ; sb[7 ] = x7 ; + sb[8 ] = x8 ; sb[9 ] = x9 ; sb[10] = x10; sb[11] = x11; + sb[12] = x12; sb[13] = x13; sb[14] = x14; sb[15] = x15; + } + + //! Set all sixteen 8-bit signed integers. + ASMJIT_INLINE void setSb( + int8_t x0) + { + setUb(static_cast(x0)); + } + + //! Set all sixteen 8-bit unsigned integers. + ASMJIT_INLINE void setUb( + uint8_t x0 , uint8_t x1 , uint8_t x2 , uint8_t x3 , + uint8_t x4 , uint8_t x5 , uint8_t x6 , uint8_t x7 , + uint8_t x8 , uint8_t x9 , uint8_t x10, uint8_t x11, + uint8_t x12, uint8_t x13, uint8_t x14, uint8_t x15) + { + ub[0 ] = x0 ; ub[1 ] = x1 ; ub[2 ] = x2 ; ub[3 ] = x3 ; + ub[4 ] = x4 ; ub[5 ] = x5 ; ub[6 ] = x6 ; ub[7 ] = x7 ; + ub[8 ] = x8 ; ub[9 ] = x9 ; ub[10] = x10; ub[11] = x11; + ub[12] = x12; ub[13] = x13; ub[14] = x14; ub[15] = x15; + } + + //! Set all sixteen 8-bit unsigned integers. + ASMJIT_INLINE void setUb( + uint8_t x0) + { + if (kArchHost64Bit) { + uint64_t t = static_cast(x0) * ASMJIT_UINT64_C(0x0101010101010101); + uq[0] = t; + uq[1] = t; + } + else { + uint32_t t = static_cast(x0) * static_cast(0x01010101U); + ud[0] = t; + ud[1] = t; + ud[2] = t; + ud[3] = t; + } + } + + //! Set all eight 16-bit signed integers. + ASMJIT_INLINE void setSw( + int16_t x0, int16_t x1, int16_t x2, int16_t x3, int16_t x4, int16_t x5, int16_t x6, int16_t x7) + { + sw[0] = x0; sw[1] = x1; sw[2] = x2; sw[3] = x3; + sw[4] = x4; sw[5] = x5; sw[6] = x6; sw[7] = x7; + } + + //! Set all eight 16-bit signed integers. + ASMJIT_INLINE void setSw( + int16_t x0) + { + setUw(static_cast(x0)); + } + + //! Set all eight 16-bit unsigned integers. + ASMJIT_INLINE void setUw( + uint16_t x0, uint16_t x1, uint16_t x2, uint16_t x3, uint16_t x4, uint16_t x5, uint16_t x6, uint16_t x7) + { + uw[0] = x0; uw[1] = x1; uw[2] = x2; uw[3] = x3; + uw[4] = x4; uw[5] = x5; uw[6] = x6; uw[7] = x7; + } + + //! Set all eight 16-bit unsigned integers. + ASMJIT_INLINE void setUw( + uint16_t x0) + { + if (kArchHost64Bit) { + uint64_t t = static_cast(x0) * ASMJIT_UINT64_C(0x0001000100010001); + uq[0] = t; + uq[1] = t; + } + else { + uint32_t t = static_cast(x0) * static_cast(0x00010001U); + ud[0] = t; + ud[1] = t; + ud[2] = t; + ud[3] = t; + } + } + + //! Set all four 32-bit signed integers. + ASMJIT_INLINE void setSd( + int32_t x0, int32_t x1, int32_t x2, int32_t x3) + { + sd[0] = x0; sd[1] = x1; sd[2] = x2; sd[3] = x3; + } + + //! Set all four 32-bit signed integers. + ASMJIT_INLINE void setSd( + int32_t x0) + { + setUd(static_cast(x0)); + } + + //! Set all four 32-bit unsigned integers. + ASMJIT_INLINE void setUd( + uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3) + { + ud[0] = x0; ud[1] = x1; ud[2] = x2; ud[3] = x3; + } + + //! Set all four 32-bit unsigned integers. + ASMJIT_INLINE void setUd( + uint32_t x0) + { + if (kArchHost64Bit) { + uint64_t t = (static_cast(x0) << 32) + x0; + uq[0] = t; + uq[1] = t; + } + else { + ud[0] = x0; + ud[1] = x0; + ud[2] = x0; + ud[3] = x0; + } + } + + //! Set all two 64-bit signed integers. + ASMJIT_INLINE void setSq( + int64_t x0, int64_t x1) + { + sq[0] = x0; sq[1] = x1; + } + + //! Set all two 64-bit signed integers. + ASMJIT_INLINE void setSq( + int64_t x0) + { + sq[0] = x0; sq[1] = x0; + } + + //! Set all two 64-bit unsigned integers. + ASMJIT_INLINE void setUq( + uint64_t x0, uint64_t x1) + { + uq[0] = x0; uq[1] = x1; + } + + //! Set all two 64-bit unsigned integers. + ASMJIT_INLINE void setUq( + uint64_t x0) + { + uq[0] = x0; uq[1] = x0; + } + + //! Set all four SP-FP floats. + ASMJIT_INLINE void setSf( + float x0, float x1, float x2, float x3) + { + sf[0] = x0; sf[1] = x1; sf[2] = x2; sf[3] = x3; + } + + //! Set all four SP-FP floats. + ASMJIT_INLINE void setSf( + float x0) + { + sf[0] = x0; sf[1] = x0; sf[2] = x0; sf[3] = x0; + } + + //! Set all two DP-FP floats. + ASMJIT_INLINE void setDf( + double x0, double x1) + { + df[0] = x0; df[1] = x1; + } + + //! Set all two DP-FP floats. + ASMJIT_INLINE void setDf( + double x0) + { + df[0] = x0; df[1] = x0; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Array of sixteen 8-bit signed integers. + int8_t sb[16]; + //! Array of sixteen 8-bit unsigned integers. + uint8_t ub[16]; + //! Array of eight 16-bit signed integers. + int16_t sw[8]; + //! Array of eight 16-bit unsigned integers. + uint16_t uw[8]; + //! Array of four 32-bit signed integers. + int32_t sd[4]; + //! Array of four 32-bit unsigned integers. + uint32_t ud[4]; + //! Array of two 64-bit signed integers. + int64_t sq[2]; + //! Array of two 64-bit unsigned integers. + uint64_t uq[2]; + + //! Array of four 32-bit single precision floating points. + float sf[4]; + //! Array of two 64-bit double precision floating points. + double df[2]; +}; + +// ============================================================================ +// [asmjit::Vec256] +// ============================================================================ + +//! 256-bit vector register data. +union Vec256 { + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Set all thirty two 8-bit signed integers. + static ASMJIT_INLINE Vec256 fromSb( + int8_t x0 , int8_t x1 , int8_t x2 , int8_t x3 , + int8_t x4 , int8_t x5 , int8_t x6 , int8_t x7 , + int8_t x8 , int8_t x9 , int8_t x10, int8_t x11, + int8_t x12, int8_t x13, int8_t x14, int8_t x15, + int8_t x16, int8_t x17, int8_t x18, int8_t x19, + int8_t x20, int8_t x21, int8_t x22, int8_t x23, + int8_t x24, int8_t x25, int8_t x26, int8_t x27, + int8_t x28, int8_t x29, int8_t x30, int8_t x31) + { + Vec256 self; + self.setSb( + x0, x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 , x10, x11, x12, x13, x14, x15, + x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31); + return self; + } + + //! Set all thirty two 8-bit signed integers. + static ASMJIT_INLINE Vec256 fromSb( + int8_t x0) + { + Vec256 self; + self.setSb(x0); + return self; + } + + //! Set all thirty two 8-bit unsigned integers. + static ASMJIT_INLINE Vec256 fromUb( + uint8_t x0 , uint8_t x1 , uint8_t x2 , uint8_t x3 , + uint8_t x4 , uint8_t x5 , uint8_t x6 , uint8_t x7 , + uint8_t x8 , uint8_t x9 , uint8_t x10, uint8_t x11, + uint8_t x12, uint8_t x13, uint8_t x14, uint8_t x15, + uint8_t x16, uint8_t x17, uint8_t x18, uint8_t x19, + uint8_t x20, uint8_t x21, uint8_t x22, uint8_t x23, + uint8_t x24, uint8_t x25, uint8_t x26, uint8_t x27, + uint8_t x28, uint8_t x29, uint8_t x30, uint8_t x31) + { + Vec256 self; + self.setUb( + x0, x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 , x10, x11, x12, x13, x14, x15, + x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31); + return self; + } + + //! Set all thirty two 8-bit unsigned integers. + static ASMJIT_INLINE Vec256 fromUb( + uint8_t x0) + { + Vec256 self; + self.setUb(x0); + return self; + } + + //! Set all sixteen 16-bit signed integers. + static ASMJIT_INLINE Vec256 fromSw( + int16_t x0, int16_t x1, int16_t x2 , int16_t x3 , int16_t x4 , int16_t x5 , int16_t x6 , int16_t x7 , + int16_t x8, int16_t x9, int16_t x10, int16_t x11, int16_t x12, int16_t x13, int16_t x14, int16_t x15) + { + Vec256 self; + self.setSw(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15); + return self; + } + + //! Set all sixteen 16-bit signed integers. + static ASMJIT_INLINE Vec256 fromSw( + int16_t x0) + { + Vec256 self; + self.setSw(x0); + return self; + } + + //! Set all sixteen 16-bit unsigned integers. + static ASMJIT_INLINE Vec256 fromUw( + uint16_t x0, uint16_t x1, uint16_t x2 , uint16_t x3 , uint16_t x4 , uint16_t x5 , uint16_t x6 , uint16_t x7 , + uint16_t x8, uint16_t x9, uint16_t x10, uint16_t x11, uint16_t x12, uint16_t x13, uint16_t x14, uint16_t x15) + { + Vec256 self; + self.setUw(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15); + return self; + } + + //! Set all sixteen 16-bit unsigned integers. + static ASMJIT_INLINE Vec256 fromUw( + uint16_t x0) + { + Vec256 self; + self.setUw(x0); + return self; + } + + //! Set all eight 32-bit signed integers. + static ASMJIT_INLINE Vec256 fromSd( + int32_t x0, int32_t x1, int32_t x2, int32_t x3, + int32_t x4, int32_t x5, int32_t x6, int32_t x7) + { + Vec256 self; + self.setSd(x0, x1, x2, x3, x4, x5, x6, x7); + return self; + } + + //! Set all eight 32-bit signed integers. + static ASMJIT_INLINE Vec256 fromSd( + int32_t x0) + { + Vec256 self; + self.setSd(x0); + return self; + } + + //! Set all eight 32-bit unsigned integers. + static ASMJIT_INLINE Vec256 fromUd( + uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3, + uint32_t x4, uint32_t x5, uint32_t x6, uint32_t x7) + { + Vec256 self; + self.setUd(x0, x1, x2, x3, x4, x5, x6, x7); + return self; + } + + //! Set all eight 32-bit unsigned integers. + static ASMJIT_INLINE Vec256 fromUd( + uint32_t x0) + { + Vec256 self; + self.setUd(x0); + return self; + } + + //! Set all four 64-bit signed integers. + static ASMJIT_INLINE Vec256 fromSq( + int64_t x0, int64_t x1, int64_t x2, int64_t x3) + { + Vec256 self; + self.setSq(x0, x1, x2, x3); + return self; + } + + //! Set all four 64-bit signed integers. + static ASMJIT_INLINE Vec256 fromSq( + int64_t x0) + { + Vec256 self; + self.setSq(x0); + return self; + } + + //! Set all four 64-bit unsigned integers. + static ASMJIT_INLINE Vec256 fromUq( + uint64_t x0, uint64_t x1, uint64_t x2, uint64_t x3) + { + Vec256 self; + self.setUq(x0, x1, x2, x3); + return self; + } + + //! Set all four 64-bit unsigned integers. + static ASMJIT_INLINE Vec256 fromUq( + uint64_t x0) + { + Vec256 self; + self.setUq(x0); + return self; + } + + //! Set all eight SP-FP floats. + static ASMJIT_INLINE Vec256 fromSf( + float x0, float x1, float x2, float x3, + float x4, float x5, float x6, float x7) + { + Vec256 self; + self.setSf(x0, x1, x2, x3, x4, x5, x6, x7); + return self; + } + + //! Set all eight SP-FP floats. + static ASMJIT_INLINE Vec256 fromSf( + float x0) + { + Vec256 self; + self.setSf(x0); + return self; + } + + //! Set all four DP-FP floats. + static ASMJIT_INLINE Vec256 fromDf( + double x0, double x1, double x2, double x3) + { + Vec256 self; + self.setDf(x0, x1, x2, x3); + return self; + } + + //! Set all four DP-FP floats. + static ASMJIT_INLINE Vec256 fromDf( + double x0) + { + Vec256 self; + self.setDf(x0); + return self; + } + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Set all thirty two 8-bit signed integers. + ASMJIT_INLINE void setSb( + int8_t x0 , int8_t x1 , int8_t x2 , int8_t x3 , + int8_t x4 , int8_t x5 , int8_t x6 , int8_t x7 , + int8_t x8 , int8_t x9 , int8_t x10, int8_t x11, + int8_t x12, int8_t x13, int8_t x14, int8_t x15, + int8_t x16, int8_t x17, int8_t x18, int8_t x19, + int8_t x20, int8_t x21, int8_t x22, int8_t x23, + int8_t x24, int8_t x25, int8_t x26, int8_t x27, + int8_t x28, int8_t x29, int8_t x30, int8_t x31) + { + sb[0 ] = x0 ; sb[1 ] = x1 ; sb[2 ] = x2 ; sb[3 ] = x3 ; + sb[4 ] = x4 ; sb[5 ] = x5 ; sb[6 ] = x6 ; sb[7 ] = x7 ; + sb[8 ] = x8 ; sb[9 ] = x9 ; sb[10] = x10; sb[11] = x11; + sb[12] = x12; sb[13] = x13; sb[14] = x14; sb[15] = x15; + sb[16] = x16; sb[17] = x17; sb[18] = x18; sb[19] = x19; + sb[20] = x20; sb[21] = x21; sb[22] = x22; sb[23] = x23; + sb[24] = x24; sb[25] = x25; sb[26] = x26; sb[27] = x27; + sb[28] = x28; sb[29] = x29; sb[30] = x30; sb[31] = x31; + } + + //! Set all thirty two 8-bit signed integers. + ASMJIT_INLINE void setSb( + int8_t x0) + { + setUb(static_cast(x0)); + } + + //! Set all thirty two 8-bit unsigned integers. + ASMJIT_INLINE void setUb( + uint8_t x0 , uint8_t x1 , uint8_t x2 , uint8_t x3 , + uint8_t x4 , uint8_t x5 , uint8_t x6 , uint8_t x7 , + uint8_t x8 , uint8_t x9 , uint8_t x10, uint8_t x11, + uint8_t x12, uint8_t x13, uint8_t x14, uint8_t x15, + uint8_t x16, uint8_t x17, uint8_t x18, uint8_t x19, + uint8_t x20, uint8_t x21, uint8_t x22, uint8_t x23, + uint8_t x24, uint8_t x25, uint8_t x26, uint8_t x27, + uint8_t x28, uint8_t x29, uint8_t x30, uint8_t x31) + { + ub[0 ] = x0 ; ub[1 ] = x1 ; ub[2 ] = x2 ; ub[3 ] = x3 ; + ub[4 ] = x4 ; ub[5 ] = x5 ; ub[6 ] = x6 ; ub[7 ] = x7 ; + ub[8 ] = x8 ; ub[9 ] = x9 ; ub[10] = x10; ub[11] = x11; + ub[12] = x12; ub[13] = x13; ub[14] = x14; ub[15] = x15; + ub[16] = x16; ub[17] = x17; ub[18] = x18; ub[19] = x19; + ub[20] = x20; ub[21] = x21; ub[22] = x22; ub[23] = x23; + ub[24] = x24; ub[25] = x25; ub[26] = x26; ub[27] = x27; + ub[28] = x28; ub[29] = x29; ub[30] = x30; ub[31] = x31; + } + + //! Set all thirty two 8-bit unsigned integers. + ASMJIT_INLINE void setUb( + uint8_t x0) + { + if (kArchHost64Bit) { + uint64_t t = static_cast(x0)* ASMJIT_UINT64_C(0x0101010101010101); + uq[0] = t; + uq[1] = t; + uq[2] = t; + uq[3] = t; + } + else { + uint32_t t = static_cast(x0)* static_cast(0x01010101U); + ud[0] = t; + ud[1] = t; + ud[2] = t; + ud[3] = t; + ud[4] = t; + ud[5] = t; + ud[6] = t; + ud[7] = t; + } + } + + //! Set all sixteen 16-bit signed integers. + ASMJIT_INLINE void setSw( + int16_t x0, int16_t x1, int16_t x2, int16_t x3, int16_t x4, int16_t x5, int16_t x6, int16_t x7, + int16_t x8, int16_t x9, int16_t x10, int16_t x11, int16_t x12, int16_t x13, int16_t x14, int16_t x15) + { + sw[0 ] = x0 ; sw[1 ] = x1 ; sw[2 ] = x2 ; sw[3 ] = x3 ; + sw[4 ] = x4 ; sw[5 ] = x5 ; sw[6 ] = x6 ; sw[7 ] = x7 ; + sw[8 ] = x8 ; sw[9 ] = x9 ; sw[10] = x10; sw[11] = x11; + sw[12] = x12; sw[13] = x13; sw[14] = x14; sw[15] = x15; + } + + //! Set all sixteen 16-bit signed integers. + ASMJIT_INLINE void setSw( + int16_t x0) + { + setUw(static_cast(x0)); + } + + //! Set all sixteen 16-bit unsigned integers. + ASMJIT_INLINE void setUw( + uint16_t x0, uint16_t x1, uint16_t x2 , uint16_t x3 , uint16_t x4 , uint16_t x5 , uint16_t x6 , uint16_t x7 , + uint16_t x8, uint16_t x9, uint16_t x10, uint16_t x11, uint16_t x12, uint16_t x13, uint16_t x14, uint16_t x15) + { + uw[0 ] = x0 ; uw[1 ] = x1 ; uw[2 ] = x2 ; uw[3 ] = x3 ; + uw[4 ] = x4 ; uw[5 ] = x5 ; uw[6 ] = x6 ; uw[7 ] = x7 ; + uw[8 ] = x8 ; uw[9 ] = x9 ; uw[10] = x10; uw[11] = x11; + uw[12] = x12; uw[13] = x13; uw[14] = x14; uw[15] = x15; + } + + //! Set all eight 16-bit unsigned integers. + ASMJIT_INLINE void setUw( + uint16_t x0) + { + if (kArchHost64Bit) { + uint64_t t = static_cast(x0)* ASMJIT_UINT64_C(0x0001000100010001); + uq[0] = t; + uq[1] = t; + uq[2] = t; + uq[3] = t; + } + else { + uint32_t t = static_cast(x0)* static_cast(0x00010001U); + ud[0] = t; + ud[1] = t; + ud[2] = t; + ud[3] = t; + ud[4] = t; + ud[5] = t; + ud[6] = t; + ud[7] = t; + } + } + + //! Set all eight 32-bit signed integers. + ASMJIT_INLINE void setSd( + int32_t x0, int32_t x1, int32_t x2, int32_t x3, + int32_t x4, int32_t x5, int32_t x6, int32_t x7) + { + sd[0] = x0; sd[1] = x1; sd[2] = x2; sd[3] = x3; + sd[4] = x4; sd[5] = x5; sd[6] = x6; sd[7] = x7; + } + + //! Set all eight 32-bit signed integers. + ASMJIT_INLINE void setSd( + int32_t x0) + { + setUd(static_cast(x0)); + } + + //! Set all eight 32-bit unsigned integers. + ASMJIT_INLINE void setUd( + uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3, + uint32_t x4, uint32_t x5, uint32_t x6, uint32_t x7) + { + ud[0] = x0; ud[1] = x1; ud[2] = x2; ud[3] = x3; + ud[4] = x4; ud[5] = x5; ud[6] = x6; ud[7] = x7; + } + + //! Set all eight 32-bit unsigned integers. + ASMJIT_INLINE void setUd( + uint32_t x0) + { + if (kArchHost64Bit) { + uint64_t t = (static_cast(x0) << 32) + x0; + uq[0] = t; + uq[1] = t; + uq[2] = t; + uq[3] = t; + } + else { + ud[0] = x0; + ud[1] = x0; + ud[2] = x0; + ud[3] = x0; + ud[4] = x0; + ud[5] = x0; + ud[6] = x0; + ud[7] = x0; + } + } + + //! Set all four 64-bit signed integers. + ASMJIT_INLINE void setSq( + int64_t x0, int64_t x1, int64_t x2, int64_t x3) + { + sq[0] = x0; sq[1] = x1; sq[2] = x2; sq[3] = x3; + } + + //! Set all four 64-bit signed integers. + ASMJIT_INLINE void setSq( + int64_t x0) + { + sq[0] = x0; sq[1] = x0; sq[2] = x0; sq[3] = x0; + } + + //! Set all four 64-bit unsigned integers. + ASMJIT_INLINE void setUq( + uint64_t x0, uint64_t x1, uint64_t x2, uint64_t x3) + { + uq[0] = x0; uq[1] = x1; uq[2] = x2; uq[3] = x3; + } + + //! Set all four 64-bit unsigned integers. + ASMJIT_INLINE void setUq( + uint64_t x0) + { + uq[0] = x0; uq[1] = x0; uq[2] = x0; uq[3] = x0; + } + + //! Set all eight SP-FP floats. + ASMJIT_INLINE void setSf( + float x0, float x1, float x2, float x3, + float x4, float x5, float x6, float x7) + { + sf[0] = x0; sf[1] = x1; sf[2] = x2; sf[3] = x3; + sf[4] = x4; sf[5] = x5; sf[6] = x6; sf[7] = x7; + } + + //! Set all eight SP-FP floats. + ASMJIT_INLINE void setSf( + float x0) + { + sf[0] = x0; sf[1] = x0; sf[2] = x0; sf[3] = x0; + sf[4] = x0; sf[5] = x0; sf[6] = x0; sf[7] = x0; + } + + //! Set all four DP-FP floats. + ASMJIT_INLINE void setDf( + double x0, double x1, double x2, double x3) + { + df[0] = x0; df[1] = x1; df[2] = x2; df[3] = x3; + } + + //! Set all four DP-FP floats. + ASMJIT_INLINE void setDf( + double x0) + { + df[0] = x0; df[1] = x0; df[2] = x0; df[3] = x0; + } + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! Array of thirty two 8-bit signed integers. + int8_t sb[32]; + //! Array of thirty two 8-bit unsigned integers. + uint8_t ub[32]; + //! Array of sixteen 16-bit signed integers. + int16_t sw[16]; + //! Array of sixteen 16-bit unsigned integers. + uint16_t uw[16]; + //! Array of eight 32-bit signed integers. + int32_t sd[8]; + //! Array of eight 32-bit unsigned integers. + uint32_t ud[8]; + //! Array of four 64-bit signed integers. + int64_t sq[4]; + //! Array of four 64-bit unsigned integers. + uint64_t uq[4]; + + //! Array of eight 32-bit single precision floating points. + float sf[8]; + //! Array of four 64-bit double precision floating points. + double df[4]; +}; + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_VECTYPES_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/vmem.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/vmem.h new file mode 100644 index 0000000..998a49b --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/vmem.h @@ -0,0 +1,240 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_VMEM_H +#define _ASMJIT_BASE_VMEM_H + +// [Dependencies] +#include "../base/error.h" +#include "../base/lock.h" + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_util +//! \{ + +// ============================================================================ +// [asmjit::kVMemAlloc] +// ============================================================================ + +//! Type of virtual memory allocation, see `VMemMgr::alloc()`. +ASMJIT_ENUM(kVMemAlloc) { + //! Normal memory allocation, has to be freed by `VMemMgr::release()`. + kVMemAllocFreeable = 0, + //! Allocate permanent memory, can't be freed. + kVMemAllocPermanent = 1 +}; + +// ============================================================================ +// [asmjit::kVMemFlags] +// ============================================================================ + +//! Type of virtual memory allocation, see `VMemMgr::alloc()`. +ASMJIT_ENUM(kVMemFlags) { + //! Memory is writable. + kVMemFlagWritable = 0x00000001, + //! Memory is executable. + kVMemFlagExecutable = 0x00000002 +}; + +// ============================================================================ +// [asmjit::VMemUtil] +// ============================================================================ + +//! Virtual memory utilities. +//! +//! Defines functions that provide facility to allocate and free memory that is +//! executable in a platform independent manner. If both the processor and host +//! operating system support data-execution-prevention then the only way how to +//! run machine code is to allocate it to a memory that has marked as executable. +//! VMemUtil is just unified interface to platform dependent APIs. +//! +//! `VirtualAlloc()` function is used on Windows operating system and `mmap()` +//! on POSIX. `VirtualAlloc()` and `mmap()` documentation provide a detailed +//! overview on how to use a platform specific APIs. +struct VMemUtil { + //! Get a size/alignment of a single virtual memory page. + static ASMJIT_API size_t getPageSize(); + + //! Get a recommended granularity for a single `alloc` call. + static ASMJIT_API size_t getPageGranularity(); + + //! Allocate virtual memory. + //! + //! Pages are readable/writeable, but they are not guaranteed to be + //! executable unless 'canExecute' is true. Returns the address of + //! allocated memory, or NULL on failure. + static ASMJIT_API void* alloc(size_t length, size_t* allocated, uint32_t flags); + +#if defined(ASMJIT_OS_WINDOWS) + //! Allocate virtual memory of `hProcess`. + //! + //! \note This function is Windows specific. + static ASMJIT_API void* allocProcessMemory(HANDLE hProcess, size_t length, size_t* allocated, uint32_t flags); +#endif // ASMJIT_OS_WINDOWS + + //! Free memory allocated by `alloc()`. + static ASMJIT_API Error release(void* addr, size_t length); + +#if defined(ASMJIT_OS_WINDOWS) + //! Release virtual memory of `hProcess`. + //! + //! \note This function is Windows specific. + static ASMJIT_API Error releaseProcessMemory(HANDLE hProcess, void* addr, size_t length); +#endif // ASMJIT_OS_WINDOWS +}; + +// ============================================================================ +// [asmjit::VMemMgr] +// ============================================================================ + +//! Reference implementation of memory manager that uses `VMemUtil` to allocate +//! chunks of virtual memory and bit arrays to manage it. +struct VMemMgr { + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + +#if !defined(ASMJIT_OS_WINDOWS) + //! Create a `VMemMgr` instance. + ASMJIT_API VMemMgr(); +#else + //! Create a `VMemMgr` instance. + //! + //! \note When running on Windows it's possible to specify a `hProcess` to + //! be used for memory allocation. This allows to allocate memory of remote + //! process. + ASMJIT_API VMemMgr(HANDLE hProcess = static_cast(0)); +#endif // ASMJIT_OS_WINDOWS + + //! Destroy the `VMemMgr` instance and free all blocks. + ASMJIT_API ~VMemMgr(); + + // -------------------------------------------------------------------------- + // [Reset] + // -------------------------------------------------------------------------- + + //! Free all allocated memory. + ASMJIT_API void reset(); + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + +#if defined(ASMJIT_OS_WINDOWS) + //! Get the handle of the process memory manager is bound to. + ASMJIT_INLINE HANDLE getProcessHandle() const { + return _hProcess; + } +#endif // ASMJIT_OS_WINDOWS + + //! Get how many bytes are currently allocated. + ASMJIT_INLINE size_t getAllocatedBytes() const { + return _allocatedBytes; + } + + //! Get how many bytes are currently used. + ASMJIT_INLINE size_t getUsedBytes() const { + return _usedBytes; + } + + //! Get whether to keep allocated memory after the `VMemMgr` is destroyed. + //! + //! \sa \ref setKeepVirtualMemory. + ASMJIT_INLINE bool getKeepVirtualMemory() const { + return _keepVirtualMemory; + } + + //! Set whether to keep allocated memory after memory manager is + //! destroyed. + //! + //! This method is usable when patching code of remote process. You need to + //! allocate process memory, store generated assembler into it and patch the + //! method you want to redirect (into your code). This method affects only + //! VMemMgr destructor. After destruction all internal + //! structures are freed, only the process virtual memory remains. + //! + //! \note Memory allocated with kVMemAllocPermanent is always kept. + //! + //! \sa \ref getKeepVirtualMemory. + ASMJIT_INLINE void setKeepVirtualMemory(bool keepVirtualMemory) { + _keepVirtualMemory = keepVirtualMemory; + } + + // -------------------------------------------------------------------------- + // [Alloc / Release] + // -------------------------------------------------------------------------- + + //! Allocate a `size` bytes of virtual memory. + //! + //! Note that if you are implementing your own virtual memory manager then you + //! can quitly ignore type of allocation. This is mainly for AsmJit to memory + //! manager that allocated memory will be never freed. + ASMJIT_API void* alloc(size_t size, uint32_t type = kVMemAllocFreeable); + + //! Free previously allocated memory at a given `address`. + ASMJIT_API Error release(void* p); + + //! Free extra memory allocated with `p`. + ASMJIT_API Error shrink(void* p, size_t used); + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + +#if defined(ASMJIT_OS_WINDOWS) + //! Process passed to `VirtualAllocEx` and `VirtualFree`. + HANDLE _hProcess; +#endif // ASMJIT_OS_WINDOWS + + //! Lock to enable thread-safe functionality. + Lock _lock; + + //! Default block size. + size_t _blockSize; + //! Default block density. + size_t _blockDensity; + + // Whether to keep virtual memory after destroy. + bool _keepVirtualMemory; + + //! How many bytes are currently allocated. + size_t _allocatedBytes; + //! How many bytes are currently used. + size_t _usedBytes; + + //! \internal + //! \{ + + struct RbNode; + struct MemNode; + struct PermanentNode; + + // Memory nodes root. + MemNode* _root; + // Memory nodes list. + MemNode* _first; + MemNode* _last; + MemNode* _optimal; + // Permanent memory. + PermanentNode* _permanent; + + //! \} +}; + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_VMEM_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/zone.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/zone.h new file mode 100644 index 0000000..3578902 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/base/zone.h @@ -0,0 +1,221 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_BASE_ZONE_H +#define _ASMJIT_BASE_ZONE_H + +// [Dependencies] +#include "../base/globals.h" + +// [Api-Begin] +#include "../apibegin.h" + +namespace asmjit { + +//! \addtogroup asmjit_base_util +//! \{ + +// ============================================================================ +// [asmjit::Zone] +// ============================================================================ + +//! Zone memory allocator. +//! +//! Zone is an incremental memory allocator that allocates memory by simply +//! incrementing a pointer. It allocates blocks of memory by using standard +//! C library `malloc/free`, but divides these blocks into smaller segments +//! requirested by calling `Zone::alloc()` and friends. +//! +//! Zone memory allocators are designed to allocate data of short lifetime. The +//! data used by `Assembler` and `Compiler` has a very short lifetime, thus, is +//! allocated by `Zone`. The advantage is that `Zone` can free all of the data +//! allocated at once by calling `reset()` or by `Zone` destructor. +struct Zone { + // -------------------------------------------------------------------------- + // [Block] + // -------------------------------------------------------------------------- + + //! \internal + //! + //! A single block of memory. + struct Block { + // ------------------------------------------------------------------------ + // [Accessors] + // ------------------------------------------------------------------------ + + //! Get the size of the block. + ASMJIT_INLINE size_t getBlockSize() const { + return (size_t)(end - data); + } + + //! Get count of remaining bytes in the block. + ASMJIT_INLINE size_t getRemainingSize() const { + return (size_t)(end - pos); + } + + // ------------------------------------------------------------------------ + // [Members] + // ------------------------------------------------------------------------ + + //! Current data pointer (pointer to the first available byte). + uint8_t* pos; + //! End data pointer (pointer to the first invalid byte). + uint8_t* end; + + //! Link to the previous block. + Block* prev; + //! Link to the next block. + Block* next; + + //! Data. + uint8_t data[sizeof(void*)]; + }; + + // -------------------------------------------------------------------------- + // [Construction / Destruction] + // -------------------------------------------------------------------------- + + //! Create a new instance of `Zone` allocator. + //! + //! The `blockSize` parameter describes the default size of the block. If the + //! `size` parameter passed to `alloc()` is greater than the default size + //! `Zone` will allocate and use a larger block, but it will not change the + //! default `blockSize`. + //! + //! It's not required, but it's good practice to set `blockSize` to a + //! reasonable value that depends on the usage of `Zone`. Greater block sizes + //! are generally safer and performs better than unreasonably low values. + ASMJIT_API Zone(size_t blockSize); + + //! Destroy the `Zone` instance. + //! + //! This will destroy the `Zone` instance and release all blocks of memory + //! allocated by it. It performs implicit `reset(true)`. + ASMJIT_API ~Zone(); + + // -------------------------------------------------------------------------- + // [Reset] + // -------------------------------------------------------------------------- + + //! Reset the `Zone` invalidating all blocks allocated. + //! + //! If `releaseMemory` is true all buffers will be released to the system. + ASMJIT_API void reset(bool releaseMemory = false); + + // -------------------------------------------------------------------------- + // [Accessors] + // -------------------------------------------------------------------------- + + //! Get the default block size. + ASMJIT_INLINE size_t getBlockSize() const { + return _blockSize; + } + + // -------------------------------------------------------------------------- + // [Alloc] + // -------------------------------------------------------------------------- + + //! Allocate `size` bytes of memory. + //! + //! Pointer returned is valid until the `Zone` instance is destroyed or reset + //! by calling `reset()`. If you plan to make an instance of C++ from the + //! given pointer use placement `new` and `delete` operators: + //! + //! ~~~ + //! using namespace asmjit; + //! + //! class SomeObject { ... }; + //! + //! // Create Zone with default block size of 65536 bytes. + //! Zone zone(65536); + //! + //! // Create your objects using zone object allocating, for example: + //! Object* obj = static_cast( zone.alloc(sizeof(SomeClass)) ); + // + //! if (obj == NULL) { + //! // Handle out of memory error. + //! } + //! + //! // To instantiate class placement `new` and `delete` operators can be used. + //! new(obj) Object(); + //! + //! // ... lifetime of your objects ... + //! + //! // To destroy the instance (if required). + //! obj->~Object(); + //! + //! // Reset of destroy `Zone`. + //! zone.reset(); + //! ~~~ + ASMJIT_INLINE void* alloc(size_t size) { + Block* cur = _block; + + uint8_t* ptr = cur->pos; + size_t remainingBytes = (size_t)(cur->end - ptr); + + if (remainingBytes < size) + return _alloc(size); + + cur->pos += size; + ASMJIT_ASSERT(cur->pos <= cur->end); + + return (void*)ptr; + } + + //! Allocate `size` bytes of zeroed memory. + //! + //! See \ref alloc() for more details. + ASMJIT_API void* allocZeroed(size_t size); + + //! Like `alloc()`, but the return pointer is casted to `T*`. + template + ASMJIT_INLINE T* allocT(size_t size = sizeof(T)) { + return static_cast(alloc(size)); + } + + //! Like `allocZeroed()`, but the return pointer is casted to `T*`. + template + ASMJIT_INLINE T* allocZeroedT(size_t size = sizeof(T)) { + return static_cast(allocZeroed(size)); + } + + //! \internal + ASMJIT_API void* _alloc(size_t size); + + //! Helper to duplicate data. + ASMJIT_API void* dup(const void* data, size_t size); + + //! Helper to duplicate string. + ASMJIT_API char* sdup(const char* str); + + //! Helper to duplicate formatted string, maximum length is 256 bytes. + ASMJIT_API char* sformat(const char* str, ...); + + // -------------------------------------------------------------------------- + // [Members] + // -------------------------------------------------------------------------- + + //! The current block. + Block* _block; + //! Default block size. + size_t _blockSize; +}; + +enum { + //! Zone allocator overhead. + kZoneOverhead = static_cast(sizeof(Zone::Block) - sizeof(void*)) + kMemAllocOverhead +}; + +//! \} + +} // asmjit namespace + +// [Api-End] +#include "../apiend.h" + +// [Guard] +#endif // _ASMJIT_BASE_ZONE_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/host.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/host.h new file mode 100644 index 0000000..48d8ce4 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/host.h @@ -0,0 +1,59 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_HOST_H +#define _ASMJIT_HOST_H + +// [Dependencies - Core] +#include "base.h" + +// ============================================================================ +// [asmjit::host - X86 / X64] +// ============================================================================ + +#if defined(ASMJIT_HOST_X86) || defined(ASMJIT_HOST_X64) +#include "x86.h" + +namespace asmjit { + +// Define `asmjit::host` namespace wrapping `asmjit::x86`. +namespace host { using namespace ::asmjit::x86; } + +// Define host assembler. +typedef X86Assembler HostAssembler; + +// Define host operands. +typedef X86GpReg GpReg; +typedef X86FpReg FpReg; +typedef X86MmReg MmReg; +typedef X86XmmReg XmmReg; +typedef X86YmmReg YmmReg; +typedef X86SegReg SegReg; +typedef X86Mem Mem; + +// Define host utilities. +typedef X86CpuInfo HostCpuInfo; + +// Define host compiler and related. +#if !defined(ASMJIT_DISABLE_COMPILER) +typedef X86Compiler HostCompiler; +typedef X86CallNode HostCallNode; +typedef X86FuncDecl HostFuncDecl; +typedef X86FuncNode HostFuncNode; + +typedef X86GpVar GpVar; +typedef X86MmVar MmVar; +typedef X86XmmVar XmmVar; +typedef X86YmmVar YmmVar; +#endif // !ASMJIT_DISABLE_COMPILER + +} // asmjit namespace + +#endif // ASMJIT_HOST_X86 || ASMJIT_HOST_X64 + +// [Guard] +#endif // _ASMJIT_HOST_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/x86.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/x86.h new file mode 100644 index 0000000..ef5e006 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/AsmJit/x86.h @@ -0,0 +1,21 @@ +// [AsmJit] +// Complete x86/x64 JIT and Remote Assembler for C++. +// +// [License] +// Zlib - See LICENSE.md file in the package. + +// [Guard] +#ifndef _ASMJIT_X86_H +#define _ASMJIT_X86_H + +// [Dependencies - AsmJit] +#include "base.h" + +#include "x86/x86assembler.h" +#include "x86/x86compiler.h" +#include "x86/x86cpuinfo.h" +#include "x86/x86inst.h" +#include "x86/x86operand.h" + +// [Guard] +#endif // _ASMJIT_X86_H diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/Win64/Lib/BeaEngine64.lib b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/Win64/Lib/BeaEngine64.lib new file mode 100644 index 0000000..3bd7898 Binary files /dev/null and b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/Win64/Lib/BeaEngine64.lib differ diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/Win64/Lib/BeaEngineCheetah64.lib b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/Win64/Lib/BeaEngineCheetah64.lib new file mode 100644 index 0000000..fc3d7a4 Binary files /dev/null and b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/Win64/Lib/BeaEngineCheetah64.lib differ diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/headers/BeaEngine.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/headers/BeaEngine.h new file mode 100644 index 0000000..007f931 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/headers/BeaEngine.h @@ -0,0 +1,314 @@ +/* Header for BeaEngine 4.x */ +#ifndef _BEA_ENGINE_ +#define _BEA_ENGINE_ + +#include "Includes/export.h" +#include "Includes/basic_types.h" + +#if !defined(BEA_ENGINE_STATIC) + #if defined(BUILD_BEA_ENGINE_DLL) + #define BEA_API bea__api_export__ + #else + #define BEA_API bea__api_import__ + #endif +#else + #define BEA_API +#endif + + +#define INSTRUCT_LENGTH 64 + +#pragma pack(1) +typedef struct { + UInt8 W_; + UInt8 R_; + UInt8 X_; + UInt8 B_; + UInt8 state; +} REX_Struct ; +#pragma pack() + +#pragma pack(1) +typedef struct { + int Number; + int NbUndefined; + UInt8 LockPrefix; + UInt8 OperandSize; + UInt8 AddressSize; + UInt8 RepnePrefix; + UInt8 RepPrefix; + UInt8 FSPrefix; + UInt8 SSPrefix; + UInt8 GSPrefix; + UInt8 ESPrefix; + UInt8 CSPrefix; + UInt8 DSPrefix; + UInt8 BranchTaken; + UInt8 BranchNotTaken; + REX_Struct REX; + char alignment[2]; +} PREFIXINFO ; +#pragma pack() + +#pragma pack(1) +typedef struct { + UInt8 OF_; + UInt8 SF_; + UInt8 ZF_; + UInt8 AF_; + UInt8 PF_; + UInt8 CF_; + UInt8 TF_; + UInt8 IF_; + UInt8 DF_; + UInt8 NT_; + UInt8 RF_; + UInt8 alignment; +} EFLStruct ; +#pragma pack() + +#pragma pack(4) +typedef struct { + Int32 BaseRegister; + Int32 IndexRegister; + Int32 Scale; + Int64 Displacement; +} MEMORYTYPE ; +#pragma pack() + + +#pragma pack(1) +typedef struct { + Int32 Category; + Int32 Opcode; + char Mnemonic[16]; + Int32 BranchType; + EFLStruct Flags; + UInt64 AddrValue; + Int64 Immediat; + UInt32 ImplicitModifiedRegs; +} INSTRTYPE; +#pragma pack() + +#pragma pack(1) +typedef struct { + char ArgMnemonic[64]; + Int32 ArgType; + Int32 ArgSize; + Int32 ArgPosition; + UInt32 AccessMode; + MEMORYTYPE Memory; + UInt32 SegmentReg; +} ARGTYPE; +#pragma pack() + + + +#pragma pack(1) +typedef struct _Disasm { + UIntPtr EIP; + UInt64 VirtualAddr; + UInt32 SecurityBlock; + char CompleteInstr[INSTRUCT_LENGTH]; + UInt32 Archi; + UInt64 Options; + INSTRTYPE Instruction; + ARGTYPE Argument1; + ARGTYPE Argument2; + ARGTYPE Argument3; + PREFIXINFO Prefix; + UInt32 Reserved_[40]; +} DISASM, *PDISASM, *LPDISASM; +#pragma pack() + +#define ESReg 1 +#define DSReg 2 +#define FSReg 3 +#define GSReg 4 +#define CSReg 5 +#define SSReg 6 + +#define InvalidPrefix 4 +#define SuperfluousPrefix 2 +#define NotUsedPrefix 0 +#define MandatoryPrefix 8 +#define InUsePrefix 1 + +#define LowPosition 0 +#define HighPosition 1 + +enum INSTRUCTION_TYPE +{ + GENERAL_PURPOSE_INSTRUCTION = 0x10000, + FPU_INSTRUCTION = 0x20000, + MMX_INSTRUCTION = 0x40000, + SSE_INSTRUCTION = 0x80000, + SSE2_INSTRUCTION = 0x100000, + SSE3_INSTRUCTION = 0x200000, + SSSE3_INSTRUCTION = 0x400000, + SSE41_INSTRUCTION = 0x800000, + SSE42_INSTRUCTION = 0x1000000, + SYSTEM_INSTRUCTION = 0x2000000, + VM_INSTRUCTION = 0x4000000, + UNDOCUMENTED_INSTRUCTION = 0x8000000, + AMD_INSTRUCTION = 0x10000000, + ILLEGAL_INSTRUCTION = 0x20000000, + AES_INSTRUCTION = 0x40000000, + CLMUL_INSTRUCTION = (int)0x80000000, + + + DATA_TRANSFER = 0x1, + ARITHMETIC_INSTRUCTION, + LOGICAL_INSTRUCTION, + SHIFT_ROTATE, + BIT_UInt8, + CONTROL_TRANSFER, + STRING_INSTRUCTION, + InOutINSTRUCTION, + ENTER_LEAVE_INSTRUCTION, + FLAG_CONTROL_INSTRUCTION, + SEGMENT_REGISTER, + MISCELLANEOUS_INSTRUCTION, + COMPARISON_INSTRUCTION, + LOGARITHMIC_INSTRUCTION, + TRIGONOMETRIC_INSTRUCTION, + UNSUPPORTED_INSTRUCTION, + LOAD_CONSTANTS, + FPUCONTROL, + STATE_MANAGEMENT, + CONVERSION_INSTRUCTION, + SHUFFLE_UNPACK, + PACKED_SINGLE_PRECISION, + SIMD128bits, + SIMD64bits, + CACHEABILITY_CONTROL, + FP_INTEGER_CONVERSION, + SPECIALIZED_128bits, + SIMD_FP_PACKED, + SIMD_FP_HORIZONTAL , + AGENT_SYNCHRONISATION, + PACKED_ALIGN_RIGHT , + PACKED_SIGN, + PACKED_BLENDING_INSTRUCTION, + PACKED_TEST, + PACKED_MINMAX, + HORIZONTAL_SEARCH, + PACKED_EQUALITY, + STREAMING_LOAD, + INSERTION_EXTRACTION, + DOT_PRODUCT, + SAD_INSTRUCTION, + ACCELERATOR_INSTRUCTION, /* crc32, popcnt (sse4.2) */ + ROUND_INSTRUCTION + +}; + +enum EFLAGS_STATES +{ + TE_ = 1, + MO_ = 2, + RE_ = 4, + SE_ = 8, + UN_ = 0x10, + PR_ = 0x20 +}; + +enum BRANCH_TYPE +{ + JO = 1, + JC = 2, + JE = 3, + JA = 4, + JS = 5, + JP = 6, + JL = 7, + JG = 8, + JB = 2, /* JC == JB */ + JECXZ = 10, + JmpType = 11, + CallType = 12, + RetType = 13, + JNO = -1, + JNC = -2, + JNE = -3, + JNA = -4, + JNS = -5, + JNP = -6, + JNL = -7, + JNG = -8, + JNB = -2 /* JNC == JNB */ +}; + +enum ARGUMENTS_TYPE +{ + NO_ARGUMENT = 0x10000000, + REGISTER_TYPE = 0x20000000, + MEMORY_TYPE = 0x40000000, + CONSTANT_TYPE = (int)0x80000000, + + MMX_REG = 0x10000, + GENERAL_REG = 0x20000, + FPU_REG = 0x40000, + SSE_REG = 0x80000, + CR_REG = 0x100000, + DR_REG = 0x200000, + SPECIAL_REG = 0x400000, + MEMORY_MANAGEMENT_REG = 0x800000, + SEGMENT_REG = 0x1000000, + + RELATIVE_ = 0x4000000, + ABSOLUTE_ = 0x8000000, + + READ = 0x1, + WRITE = 0x2, + + REG0 = 0x1, + REG1 = 0x2, + REG2 = 0x4, + REG3 = 0x8, + REG4 = 0x10, + REG5 = 0x20, + REG6 = 0x40, + REG7 = 0x80, + REG8 = 0x100, + REG9 = 0x200, + REG10 = 0x400, + REG11 = 0x800, + REG12 = 0x1000, + REG13 = 0x2000, + REG14 = 0x4000, + REG15 = 0x8000 +}; + +enum SPECIAL_INFO +{ + UNKNOWN_OPCODE = -1, + OUT_OF_BLOCK = 0, + + /* === mask = 0xff */ + NoTabulation = 0x00000000, + Tabulation = 0x00000001, + + /* === mask = 0xff00 */ + MasmSyntax = 0x00000000, + GoAsmSyntax = 0x00000100, + NasmSyntax = 0x00000200, + ATSyntax = 0x00000400, + + /* === mask = 0xff0000 */ + PrefixedNumeral = 0x00010000, + SuffixedNumeral = 0x00000000, + + /* === mask = 0xff000000 */ + ShowSegmentRegs = 0x01000000 +}; + + +#ifdef __cplusplus +extern "C" +#endif + +BEA_API int __bea_callspec__ Disasm (LPDISASM pDisAsm); +BEA_API const__ char* __bea_callspec__ BeaEngineVersion (void); +BEA_API const__ char* __bea_callspec__ BeaEngineRevision (void); +#endif diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/headers/Includes/basic_types.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/headers/Includes/basic_types.h new file mode 100644 index 0000000..4c50f11 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/headers/Includes/basic_types.h @@ -0,0 +1,250 @@ +/** + * @file basic_types.h + * @author + * @date Thu Dec 24 19:31:22 2009 + * + * @brief Definitions of fixed-size integer types for various platforms + * + * This file is part of BeaEngine. + * + * BeaEngine is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * BeaEngine is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with BeaEngine. If not, see . */ + +#ifndef __BEA_BASIC_TYPES_HPP__ +#define __BEA_BASIC_TYPES_HPP__ + +#include + +#if defined(__GNUC__) || defined (__INTEL_COMPILER) || defined(__LCC__) +#include +#endif + +#if defined(_MSC_VER) + /* + * Windows/Visual C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef signed __int64 Int64; + typedef unsigned __int64 UInt64; + #if defined(_WIN64) + #define BEA_PTR_IS_64_BIT 1 + typedef signed __int64 IntPtr; + typedef unsigned __int64 UIntPtr; + #else + typedef signed long IntPtr; + typedef size_t UIntPtr; + #endif + #define BEA_HAVE_INT64 1 +#elif defined(__GNUC__) || defined(__LCC__) + /* + * Unix/GCC + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef intptr_t IntPtr; + typedef uintptr_t UIntPtr; + #if defined(__LP64__) + #define BEA_PTR_IS_64_BIT 1 + #define BEA_LONG_IS_64_BIT 1 + typedef signed long Int64; + typedef unsigned long UInt64; + #else + #if defined (__INTEL_COMPILER) || defined (__ICC) || defined (_ICC) + typedef __int64 Int64; + typedef unsigned __int64 UInt64; + #else + typedef signed long long Int64; + typedef unsigned long long UInt64; + #endif + #endif + #define BEA_HAVE_INT64 1 +#elif defined(__DECCXX) + /* + * Compaq C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef signed __int64 Int64; + typedef unsigned __int64 UInt64; + #if defined(__VMS) + #if defined(__32BITS) + typedef signed long IntPtr; + typedef unsigned long UIntPtr; + #else + typedef Int64 IntPtr; + typedef UInt64 UIntPtr; + #define BEA_PTR_IS_64_BIT 1 + #endif + #else + typedef signed long IntPtr; + typedef unsigned long UIntPtr; + #define BEA_PTR_IS_64_BIT 1 + #define BEA_LONG_IS_64_BIT 1 + #endif + #define BEA_HAVE_INT64 1 +#elif defined(__HP_aCC) + /* + * HP Ansi C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef signed long IntPtr; + typedef unsigned long UIntPtr; + #if defined(__LP64__) + #define BEA_PTR_IS_64_BIT 1 + #define BEA_LONG_IS_64_BIT 1 + typedef signed long Int64; + typedef unsigned long UInt64; + #else + typedef signed long long Int64; + typedef unsigned long long UInt64; + #endif + #define BEA_HAVE_INT64 1 +#elif defined(__SUNPRO_CC) || defined(__SUNPRO_C) + /* + * SUN Forte C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef signed long IntPtr; + typedef unsigned long UIntPtr; + #if defined(__sparcv9) + #define BEA_PTR_IS_64_BIT 1 + #define BEA_LONG_IS_64_BIT 1 + typedef signed long Int64; + typedef unsigned long UInt64; + #else + typedef signed long long Int64; + typedef unsigned long long UInt64; + #endif + #define BEA_HAVE_INT64 1 +#elif defined(__IBMCPP__) + /* + * IBM XL C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef signed long IntPtr; + typedef unsigned long UIntPtr; + #if defined(__64BIT__) + #define BEA_PTR_IS_64_BIT 1 + #define BEA_LONG_IS_64_BIT 1 + typedef signed long Int64; + typedef unsigned long UInt64; + #else + typedef signed long long Int64; + typedef unsigned long long UInt64; + #endif + #define BEA_HAVE_INT64 1 +#elif defined(__BORLANDC__) + /* + * Borland C/C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef unsigned __int64 Int64; + typedef signed __int64 UInt64; + typedef unsigned long UIntPtr; + #define BEA_HAVE_INT64 1 +#elif defined(__WATCOMC__) + /* + * Watcom C/C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef unsigned __int64 Int64; + typedef signed __int64 UInt64; + #define BEA_HAVE_INT64 1 + typedef size_t UIntPtr; +#elif defined(__sgi) + /* + * MIPSpro C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef signed long IntPtr; + typedef unsigned long UIntPtr; + #if _MIPS_SZLONG == 64 + #define BEA_PTR_IS_64_BIT 1 + #define BEA_LONG_IS_64_BIT 1 + typedef signed long Int64; + typedef unsigned long UInt64; + #else + typedef signed long long Int64; + typedef unsigned long long UInt64; + #endif + #define BEA_HAVE_INT64 1 +#endif + +#if defined(_MSC_VER) || defined(__BORLANDC__) + #define W64LIT(x) x##ui64 +#else + #define W64LIT(x) x##ULL +#endif + + +#ifndef C_STATIC_ASSERT +#define C_STATIC_ASSERT(tag_name, x) \ + typedef int cache_static_assert_ ## tag_name[(x) * 2-1] +#endif + +C_STATIC_ASSERT(sizeof_Int8 , (sizeof(Int8) == 1)); +C_STATIC_ASSERT(sizeof_UInt8, (sizeof(UInt8) == 1)); + +C_STATIC_ASSERT(sizeof_Int16 , (sizeof(Int16) == 2)); +C_STATIC_ASSERT(sizeof_UInt16, (sizeof(UInt16) == 2)); + +C_STATIC_ASSERT(sizeof_Int32 , (sizeof(Int32) == 4)); +C_STATIC_ASSERT(sizeof_UInt32, (sizeof(UInt32) == 4)); + +C_STATIC_ASSERT(sizeof_Int64 , (sizeof(Int64) == 8)); +C_STATIC_ASSERT(sizeof_UInt64, (sizeof(UInt64) == 8)); + +#endif diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/headers/Includes/export.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/headers/Includes/export.h new file mode 100644 index 0000000..6e550db --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/BeaEngine/headers/Includes/export.h @@ -0,0 +1,173 @@ +/** + * @file export.h + * @author igor.gutnik@gmail.com + * @date Mon Sep 22 09:28:54 2008 + * + * @brief This file sets things up for C dynamic library function definitions and + * static inlined functions + * + * This file is part of BeaEngine. + * + * BeaEngine is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * BeaEngine is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with BeaEngine. If not, see . */ + +#ifndef __BEA_EXPORT_H__ +#define __BEA_EXPORT_H__ + + +/* Set up for C function definitions, even when using C++ */ + +#ifdef __cplusplus +#define CPP_VISIBLE_BEGIN extern "C" { +#define CPP_VISIBLE_END } +#else +#define CPP_VISIBLE_BEGIN +#define CPP_VISIBLE_END +#endif + +#if defined(_MSC_VER) +#pragma warning( disable: 4251 ) +#endif + +/* Some compilers use a special export keyword */ +#ifndef bea__api_export__ +# if defined(__BEOS__) +# if defined(__GNUC__) +# define bea__api_export__ __declspec(dllexport) +# else +# define bea__api_export__ __declspec(export) +# endif +# elif defined(_WIN32) || defined(_WIN64) +# ifdef __BORLANDC__ +# define bea__api_export__ __declspec(dllexport) +# define bea__api_import__ __declspec(dllimport) +# elif defined(__WATCOMC__) +# define bea__api_export__ __declspec(dllexport) +# define bea__api_import__ +# else +# define bea__api_export__ __declspec(dllexport) +# define bea__api_import__ __declspec(dllimport) +# endif +# elif defined(__OS2__) +# ifdef __WATCOMC__ +# define bea__api_export__ __declspec(dllexport) +# define bea__api_import__ +# else +# define bea__api_export__ +# define bea__api_import__ +# endif +# else +# if defined(_WIN32) && defined(__GNUC__) && __GNUC__ >= 4 +# define bea__api_export__ __attribubea__ ((visibility("default"))) +# define bea__api_import__ __attribubea__ ((visibility("default"))) +# else +# define bea__api_export__ +# define bea__api_import__ +# endif +# endif +#endif + +/* Use C calling convention by default*/ + +#ifndef __bea_callspec__ +#if defined(BEA_USE_STDCALL) + #if defined(__WIN32__) || defined(WIN32) || defined(_WIN32) || defined(_WIN64) + #if defined(__BORLANDC__) || defined(__WATCOMC__) || defined(_MSC_VER) || defined(__MINGW32__) || defined(__POCC__) + #define __bea_callspec__ __stdcall + #else + #define __bea_callspec__ + #endif + #else + #ifdef __OS2__ + #define __bea_callspec__ _System + #else + #define __bea_callspec__ + #endif + #endif +#else + #define __bea_callspec__ +#endif +#endif + +#ifdef __SYMBIAN32__ +# ifndef EKA2 +# undef bea__api_export__ +# undef bea__api_import__ +# define bea__api_export__ +# define bea__api_import__ +# elif !defined(__WINS__) +# undef bea__api_export__ +# undef bea__api_import__ +# define bea__api_export__ __declspec(dllexport) +# define bea__api_import__ __declspec(dllexport) +# endif /* !EKA2 */ +#endif /* __SYMBIAN32__ */ + + +#if defined(__GNUC__) && (__GNUC__ > 2) +#define BEA_EXPECT_CONDITIONAL(c) (__builtin_expect((c), 1)) +#define BEA_UNEXPECT_CONDITIONAL(c) (__builtin_expect((c), 0)) +#else +#define BEA_EXPECT_CONDITIONAL(c) (c) +#define BEA_UNEXPECT_CONDITIONAL(c) (c) +#endif + + +/* Set up compiler-specific options for inlining functions */ +#ifndef BEA_HAS_INLINE +#if defined(__GNUC__) || defined(__POCC__) || defined(__WATCOMC__) || defined(__SUNPRO_C) +#define BEA_HAS_INLINE +#else +/* Add any special compiler-specific cases here */ +#if defined(_MSC_VER) || defined(__BORLANDC__) || \ + defined(__DMC__) || defined(__SC__) || \ + defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__DECC) || defined(__EABI__) +#ifndef __inline__ +#define __inline__ __inline +#endif +#define BEA_HAS_INLINE +#else +#if !defined(__MRC__) && !defined(_SGI_SOURCE) +#ifndef __inline__ +#define __inline__ inline +#endif +#define BEA_HAS_INLINE +#endif /* Not a funky compiler */ +#endif /* Visual C++ */ +#endif /* GNU C */ +#endif /* CACHE_HAS_INLINE */ + +/* If inlining isn't supported, remove "__inline__", turning static + inlined functions into static functions (resulting in code bloat + in all files which include the offending header files) +*/ +#ifndef BEA_HAS_INLINE +#define __inline__ +#endif + +/* fix a bug with gcc under windows */ + +#if defined(__WIN32__) || defined(WIN32) || defined(_WIN32) || defined(_WIN64) + #if defined(__MINGW32__) + #define const__ + #else + #define const__ const + #endif +#else + #define const__ const +#endif + + + +#endif diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/CorError.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/CorError.h new file mode 100644 index 0000000..e92b0a8 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/CorError.h @@ -0,0 +1,2152 @@ +// ==++== +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// ==--== +/********************************************************************* + ** ** + ** CorError.h - lists the HResults used by the .NET Framework's ** + ** Common Language Runtime. ** + ** Created: September 3, 1999. ** + ** ** + *********************************************************************/ + + +#ifndef __COMMON_LANGUAGE_RUNTIME_HRESULTS__ +#define __COMMON_LANGUAGE_RUNTIME_HRESULTS__ + +/********************************************************************* + +These HRESULTs are used for mapping managed exceptions to COM error codes +and vice versa through COM Interop. For background on COM error codes see +http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/error_9td2.asp. + +FACILITY_URT is defined as 0x13 (0x8013xxxx). The facility range is reserved +for the .NET Framework SDK teams. + +Within that range, the following subranges have been allocated for different +feature areas: + +0x10yy for Execution Engine +0x11yy for Metadata, TypeLib Export, and CLDB +0x12yy for MetaData Validator +0x13yy for Debugger and Profiler errors +0x14yy for Security +0x15yy for BCL +0x1600 - 0x161F for Reflection +0x1620 - 0x163F for System.IO +0x1640 - 0x165F for Security +0x1660 - 0x16FF for BCL +0x17yy for shim +0x18yy for IL Verifier +0x19yy for .NET Framework +0x1Ayy for .NET Framework +0x1Byy for MetaData Validator +0x1Cyy for more debugger errors +0x1Dyy for PE Format Validation +0x1Eyy for CLR Optimization Service errors +0x1Fyy for NGEN errors +0x30yy for VSA errors + +Base class library HRESULTs are copied from this file into many different +files named __HResults.cs under the BCL directory. Frameworks HRESULTs are +defined in src/main/HResults.cs. If you make any modifications to +the range allocations described above, please make sure the corerror.h file +gets updated. + +*********************************************************************/ + +#include + +#ifndef FACILITY_URT +#define FACILITY_URT 0x13 +#endif + +#ifndef EMAKEHR +#define SMAKEHR(val) MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_URT, val) +#define EMAKEHR(val) MAKE_HRESULT(SEVERITY_ERROR, FACILITY_URT, val) +#endif + + +// ****************** +// FACILITY_UTF +// ****************** + + +// ****************** +// Metadata errors +// ****************** + +//**** ICeeFileGen errors. +#define CEE_E_ENTRYPOINT EMAKEHR(0x1000) // The entry point info is invalid. +#define CEE_E_CVTRES_NOT_FOUND EMAKEHR(0x1001) // cannot find cvtres.exe + +//**** EE errors +#define MSEE_E_LOADLIBFAILED EMAKEHR(0x1010) // Failed to delay load library %s (Win32 error: %d). +#define MSEE_E_GETPROCFAILED EMAKEHR(0x1011) // Failed to get entry point %s (Win32 error: %d). +#define MSEE_E_MULTCOPIESLOADED EMAKEHR(0x1012) // Multiple copies of MSCOREE.dll have been loaded by the same process. +// the following two are COR to match the name used in the library +#define COR_E_APPDOMAINUNLOADED EMAKEHR(0x1014) // access unloaded appdomain +#define COR_E_CANNOTUNLOADAPPDOMAIN EMAKEHR(0x1015) // Error while unloading an appdomain +#define MSEE_E_ASSEMBLYLOADINPROGRESS EMAKEHR(0x1016) // Assembly is being currently being loaded +#define MSEE_E_CANNOTCREATEAPPDOMAIN EMAKEHR(0x1017) // Attempt to create appdomain failed +#define COR_E_FIXUPSINEXE EMAKEHR(0x1019) // Attempt to load an unverifiable exe with fixups (IAT with more than 2 sections or a TLS section) +#define COR_E_NO_LOADLIBRARY_ALLOWED EMAKEHR(0x101A) // Attempt to LoadLibrary a managed image in an improper way (only assemblies with EAT's area allowed.) +#define COR_E_NEWER_RUNTIME EMAKEHR(0x101B) // The assembly is built by a runtime newer than the currently loaded runtime, and cannot be loaded. +#define COR_E_CANNOT_SET_POLICY EMAKEHR(0x101C) // Unable to set app domain security policy after non-GAC domain neutral assemblies are loaded +#define COR_E_CANNOT_SPECIFY_EVIDENCE EMAKEHR(0x101D) // Unable to use assembly evidence after non-GAC domain neutral assemblies are loaded + +// The CLR hosting support reserves 0x1020-0x102F. +#define HOST_E_DEADLOCK EMAKEHR(0x1020) // Host detects deadlock on a blocking operation +#define HOST_E_INTERRUPTED EMAKEHR(0x1021) // Host interrupts a wait, similar to APC +#define HOST_E_INVALIDOPERATION EMAKEHR(0x1022) // The operation is invalid +#define HOST_E_CLRNOTAVAILABLE EMAKEHR(0x1023) // CLR has been disabled due to unrecoverable error +#define HOST_E_TIMEOUT EMAKEHR(0x1024) // A wait times out +#define HOST_E_NOT_OWNER EMAKEHR(0x1025) // +#define HOST_E_ABANDONED EMAKEHR(0x1026) // An event is abandoned +#define HOST_E_EXITPROCESS_THREADABORT EMAKEHR(0x1027) // ExitProcess due to ThreadAbort escalation +#define HOST_E_EXITPROCESS_ADUNLOAD EMAKEHR(0x1028) // ExitProcess due to AD Unload escalation +#define HOST_E_EXITPROCESS_TIMEOUT EMAKEHR(0x1029) // ExitProcess due to Timeout escalation +#define HOST_E_EXITPROCESS_OUTOFMEMORY EMAKEHR(0x102a) // ExitProcess due to OutOfMemory escalation +#define HOST_E_EXITPROCESS_STACKOVERFLOW EMAKEHR(0x102b) // ExitProcess due to StackOverflow escalation + +//**** Assembly Cache errors +#define COR_E_MODULE_HASH_CHECK_FAILED EMAKEHR(0x1039) // The check of the module's hash failed. +#define FUSION_E_REF_DEF_MISMATCH EMAKEHR(0x1040) // The located assembly's manifest definition does not match the assembly reference. +#define FUSION_E_INVALID_PRIVATE_ASM_LOCATION EMAKEHR(0x1041) // The private assembly was located outside the appbase directory. +#define FUSION_E_ASM_MODULE_MISSING EMAKEHR(0x1042) // A module specified in the manifest was not found. +#define FUSION_E_UNEXPECTED_MODULE_FOUND EMAKEHR(0x1043) // Modules which are not in the manifest were streamed in. +#define FUSION_E_PRIVATE_ASM_DISALLOWED EMAKEHR(0x1044) // A strongly-named assembly is required. +#define FUSION_E_SIGNATURE_CHECK_FAILED EMAKEHR(0x1045) // The check of the signature failed. +#define FUSION_E_DATABASE_ERROR EMAKEHR(0x1046) // An unexpected error was encountered in the Assembly Cache database. +#define FUSION_E_INVALID_NAME EMAKEHR(0x1047) // The given assembly name or codebase was invalid. +#define FUSION_E_CODE_DOWNLOAD_DISABLED EMAKEHR(0x1048) // HTTP download of assemblies has been disabled for this appdomain. +#define FUSION_E_UNINSTALL_DISALLOWED EMAKEHR(0x1049) // Uninstall of given assembly is not allowed. +#define FUSION_E_HOST_GAC_ASM_MISMATCH EMAKEHR(0x1050) // Assembly in host store has a different signature than assembly in GAC +#define FUSION_E_LOADFROM_BLOCKED EMAKEHR(0x1051) // Hosted environment doesn't permit loading by location +#define FUSION_E_CACHEFILE_FAILED EMAKEHR(0x1052) // Failed to add file to AppDomain cache + + +//============================================================================= +// THE VALIDATOR IS CURRENTLY USING ERROR CODES STARTING WITH 0x1050 ONWARDS. +// LOOK AT ERROR CODES STARTING FROM VLDTR_E_AS_NAMENULL. JUST A NOTE IN CASE +// THE EE EVER COMES TO THE POINT OF NEEDING THOSE!!! +//============================================================================= + +//**** Generic errors. +#define CLDB_E_FILE_BADREAD EMAKEHR(0x1100) // Error occured during a read. +#define CLDB_E_FILE_BADWRITE EMAKEHR(0x1101) // Error occured during a write. +#define CLDB_E_FILE_READONLY EMAKEHR(0x1103) // File is read only. +#define CLDB_E_NAME_ERROR EMAKEHR(0x1105) // An ill-formed name was given. +#define CLDB_S_TRUNCATION SMAKEHR(0x1106) // STATUS: Data value was truncated. +#define CLDB_E_TRUNCATION EMAKEHR(0x1106) // ERROR: Data value was truncated. +#define CLDB_E_FILE_OLDVER EMAKEHR(0x1107) // Old version error. +#define CLDB_E_RELOCATED EMAKEHR(0x1108) // A shared mem open failed to open at the originally + // assigned memory address. +#define CLDB_S_NULL SMAKEHR(0x1109) // NULL data value. +#define CLDB_E_SMDUPLICATE EMAKEHR(0x110A) // Create of shared memory failed. A memory mapping of the same name already exists. +#define CLDB_E_NO_DATA EMAKEHR(0x110B) // There isn't .CLB data in the memory or stream. +#define CLDB_E_READONLY EMAKEHR(0x110C) // Database is read only. +#define CLDB_E_INCOMPATIBLE EMAKEHR(0x110D) // The importing scope is not comptabile with the emitting scope + +//**** Schema errors. +#define CLDB_E_FILE_CORRUPT EMAKEHR(0x110E) // File is corrupt. +#define CLDB_E_SCHEMA_VERNOTFOUND EMAKEHR(0x110F) // Version %d of schema '%s' not found. +#define CLDB_E_BADUPDATEMODE EMAKEHR(0x1110) // cannot open a incrementally build scope for full update + +//**** Index errors. +#define CLDB_E_INDEX_NONULLKEYS EMAKEHR(0x1121) // Null value not allowed in unique index or primary key. +#define CLDB_E_INDEX_DUPLICATE EMAKEHR(0x1122) // Unique index %s has been violated. +#define CLDB_E_INDEX_BADTYPE EMAKEHR(0x1123) // The columns data type is not allowed in an index. +#define CLDB_E_INDEX_NOTFOUND EMAKEHR(0x1124) // Index %s not found. +#define CLDB_S_INDEX_TABLESCANREQUIRED SMAKEHR(0x1125) // Table scan required to run query. + +//**** Record errors. +#define CLDB_E_RECORD_NOTFOUND EMAKEHR(0x1130) // Record wasn't found on lookup. +#define CLDB_E_RECORD_OVERFLOW EMAKEHR(0x1131) // Too many records were returned for criteria. +#define CLDB_E_RECORD_DUPLICATE EMAKEHR(0x1132) // Record is a duplicate. +#define CLDB_E_RECORD_PKREQUIRED EMAKEHR(0x1133) // Primary key value is required. +#define CLDB_E_RECORD_DELETED EMAKEHR(0x1134) // Record is valid but deleted. +#define CLDB_E_RECORD_OUTOFORDER EMAKEHR(0x1135) // Record is emitted out of order. + +//**** Column errors. +#define CLDB_E_COLUMN_OVERFLOW EMAKEHR(0x1140) // Data too large. +#define CLDB_E_COLUMN_READONLY EMAKEHR(0x1141) // Column cannot be changed. +#define CLDB_E_COLUMN_SPECIALCOL EMAKEHR(0x1142) // Too many RID or primary key columns, 1 is max. +#define CLDB_E_COLUMN_PKNONULLS EMAKEHR(0x1143) // Primary key column %s may not allow the null value. + +//**** Table errors. +#define CLDB_E_TABLE_CANTDROP EMAKEHR(0x1150) // Can't auto-drop table while open. + +//**** Object errors. +#define CLDB_E_OBJECT_NOTFOUND EMAKEHR(0x1151) // Object was not found in the database. +#define CLDB_E_OBJECT_COLNOTFOUND EMAKEHR(0x1152) // The column was not found. + +//**** Vector errors. +#define CLDB_E_VECTOR_BADINDEX EMAKEHR(0x1153) // The index given was invalid. + +//**** Heap errors; +#define CLDB_E_TOO_BIG EMAKEHR(0x1154) // A blob or string was too big. + +//**** IMeta* errors. +#define META_E_INVALID_TOKEN_TYPE EMAKEHR(0x115f) // A token of the wrong type passed to a metadata function. + +#define TLBX_E_INVALID_TYPEINFO EMAKEHR(0x1160) // Typelib import: invalid type, not converted. +#define TLBX_E_INVALID_TYPEINFO_UNNAMED EMAKEHR(0x1161) // Typelib import: invalid type, not converted -- name unknown. +#define TLBX_E_CTX_NESTED EMAKEHR(0x1162) // Typelib export: Format string for nested contexts. +#define TLBX_E_ERROR_MESSAGE EMAKEHR(0x1163) // Typelib export: Error message wrapper. +#define TLBX_E_CANT_SAVE EMAKEHR(0x1164) // Typelib export: cant "SaveAllChanges()" +#define TLBX_W_LIBNOTREGISTERED EMAKEHR(0x1165) // Typelib export: type library is not registered. +#define TLBX_E_CANTLOADLIBRARY EMAKEHR(0x1166) // Typelib export: type library cannot be loaded. +#define TLBX_E_BAD_VT_TYPE EMAKEHR(0x1167) // Typelib import: invalid VT_*, not converted. +#define TLBX_E_NO_MSCOREE_TLB EMAKEHR(0x1168) // Typelib export: can't load mscoree.tlb +#define TLBX_E_BAD_MSCOREE_TLB EMAKEHR(0x1169) // Typelib export: can't get a required typeinfo from mscoree.tlb. +#define TLBX_E_TLB_EXCEPTION EMAKEHR(0x116a) // Typelib import: fault reading a typelib. +#define TLBX_E_MULTIPLE_LCIDS EMAKEHR(0x116b) // Typelib import: Multiple LCID's parameters on a method. +#define TLBX_I_TYPEINFO_IMPORTED SMAKEHR(0x116c) // Typelib import: progress report. +#define TLBX_E_AMBIGUOUS_RETURN EMAKEHR(0x116d) // Typelib import: duplicate or ambiguous return types. +#define TLBX_E_DUPLICATE_TYPE_NAME EMAKEHR(0x116e) // Typelib import: duplicate name (due to user-defined name). +#define TLBX_I_USEIUNKNOWN SMAKEHR(0x116f) // Typelib export: substituted IUnknown for type. + +#define TLBX_I_UNCONVERTABLE_ARGS SMAKEHR(0x1170) // Typelib import: signature can't be converted (eg, struct**) +#define TLBX_I_UNCONVERTABLE_FIELD SMAKEHR(0x1171) // Typelib import: signature can't be converted (eg, struct**) +#define TLBX_I_NONSEQUENTIALSTRUCT EMAKEHR(0x1172) // Typelib export: Can't convert non-sequential structs. +#define TLBX_W_WARNING_MESSAGE SMAKEHR(0x1173) // Typelib export: Warning message wrapper. +#define TLBX_I_RESOLVEREFFAILED EMAKEHR(0x1174) // Typelib import: The resolve ref call failed. +#define TLBX_E_ASANY EMAKEHR(0x1175) // Typelib export: Encounterd "AsAny" -- ignored. +#define TLBX_E_INVALIDLCIDPARAM EMAKEHR(0x1176) // Typelib export: Encounterd an LCID attribute set to an invalid param. +#define TLBX_E_LCIDONDISPONLYITF EMAKEHR(0x1177) // Typelib export: Encounterd an LCID attribute on a disp only interface. +#define TLBX_E_NONPUBLIC_FIELD EMAKEHR(0x1178) // Typelib export: Non-public field in public struct. +#define TLBX_I_TYPE_EXPORTED SMAKEHR(0x1179) // Typelib export: type exported +#define TLBX_I_DUPLICATE_DISPID SMAKEHR(0x117A) // Typelib export: duplicate dispid -- auto corrected. +#define TLBX_E_BAD_NAMES EMAKEHR(0x117B) // Typelib export: bad names list. +#define TLBX_I_REF_TYPE_AS_STRUCT SMAKEHR(0x117C) // Typelib export: referenct tyep had layout, exported as struct. +#define TLBX_E_GENERICINST_SIGNATURE EMAKEHR(0x117D) // TypeLib export: generic type instance in signature. +#define TLBX_E_GENERICPAR_SIGNATURE EMAKEHR(0x117E) // TypeLib export: generic type parameter in signature. +#define TLBX_I_GENERIC_TYPE SMAKEHR(0x117F) // TypeLib export: generic type definition + +#define META_E_DUPLICATE EMAKEHR(0x1180) // Attempt to define an object that already exists. +#define META_E_GUID_REQUIRED EMAKEHR(0x1181) // A guid was not provided where one was required. +#define META_E_TYPEDEF_MISMATCH EMAKEHR(0x1182) // Merge: an import typedef matched ns.name, but not version and guid. +#define META_E_MERGE_COLLISION EMAKEHR(0x1183) // Merge: conflict between import and emit +#define TLBX_W_NON_INTEGRAL_CA_TYPE SMAKEHR(0x1184) // TypeLib import: Ignoring IDL custom attribute -- does not have an integral value. +#define TLBX_W_IENUM_CA_ON_IUNK SMAKEHR(0x1185) // TypeLib import: Ignoring IDL custom attribute -- using IEnum CA on an IUnknown derived interface. +#define TLBX_E_NO_SAFEHANDLE_ARRAYS EMAKEHR(0x1186) // TypeLib export: detected array of SafeHandles +#define META_E_METHD_NOT_FOUND EMAKEHR(0x1187) // Merge: Class already in emit scope, but member not found +#define META_E_FIELD_NOT_FOUND EMAKEHR(0x1188) // Merge: Class already in emit scope, but member not found +#define META_S_PARAM_MISMATCH SMAKEHR(0x1189) // Merge: Parameter information mismatched. +#define META_E_PARAM_MISMATCH EMAKEHR(0x1189) // Merge: Parameter information mismatched. +#define META_E_BADMETADATA EMAKEHR(0x118A) // Merge: Inconsistency in meta data import scope +#define META_E_INTFCEIMPL_NOT_FOUND EMAKEHR(0x118B) // Merge: Class already in emit scope, but interfaceimpl not found +#define TLBX_E_NO_CRITICALHANDLE_ARRAYS EMAKEHR(0x118C) // TypeLib export: detected array of CriticalHandles +#define META_E_CLASS_LAYOUT_INCONSISTENT EMAKEHR(0x118D) // Merge: Class is duplicated but class layout information is not consistent +#define META_E_FIELD_MARSHAL_NOT_FOUND EMAKEHR(0x118E) // Merge: Field is duplicated but we cannot find the matching FieldMarshal information +#define META_E_METHODSEM_NOT_FOUND EMAKEHR(0x118F) // Merge: + +#define META_E_EVENT_NOT_FOUND EMAKEHR(0x1190) // Merge: Method is duplicated but we cannot find the matching event info. +#define META_E_PROP_NOT_FOUND EMAKEHR(0x1191) // Merge: Method is duplicated but we cannot find the maching property info. +#define META_E_BAD_SIGNATURE EMAKEHR(0x1192) // Bad binary signature +#define META_E_BAD_INPUT_PARAMETER EMAKEHR(0x1193) // Bad input parameters +#define META_E_METHDIMPL_INCONSISTENT EMAKEHR(0x1194) // Merge: duplicated methods have inconsistent ImplFlags +#define META_E_MD_INCONSISTENCY EMAKEHR(0x1195) // Merge: Inconsistency in meta data +#define META_E_CANNOTRESOLVETYPEREF EMAKEHR(0x1196) // Cannot resolve typeref +#define META_S_DUPLICATE SMAKEHR(0x1197) // Attempt to define an object that already exists in valid scenerios. +#define META_E_STRINGSPACE_FULL EMAKEHR(0x1198) // No logical space left to create more user strings. +#define META_E_UNEXPECTED_REMAP EMAKEHR(0x1199) // A TokenRemap occurred which we weren't prepared to handle. +#define META_E_HAS_UNMARKALL EMAKEHR(0x119A) // Unmark all has been called already +#define META_E_MUST_CALL_UNMARKALL EMAKEHR(0x119B) // Must call UnmarkAll first before marking. +#define META_E_GENERICPARAM_INCONSISTENT EMAKEHR(0x119C) // Merge: duplicated types/methods have inconsistent GenericParams +#define META_E_EVENT_COUNTS EMAKEHR(0x119D) // Merge: different event counts in import and emit scopes. +#define META_E_PROPERTY_COUNTS EMAKEHR(0x119E) // Merge: different property counts in import and emit scopes. +#define META_E_TYPEDEF_MISSING EMAKEHR(0x119F) // Merge: An input scope has a TypeRef which should but doesn't have a matching TypeDef. + +#define TLBX_E_CANT_LOAD_MODULE EMAKEHR(0x11A0) // TypeLib export: can't open the module to export. +#define TLBX_E_CANT_LOAD_CLASS EMAKEHR(0x11A1) // TypeLib export: can't load a class. +#define TLBX_E_NULL_MODULE EMAKEHR(0x11A2) // TypeLib export: the hMod of a loaded class is 0; can't export it. +#define TLBX_E_NO_CLSID_KEY EMAKEHR(0x11A3) // TypeLib export: no CLSID or Interface subkey to HKCR. +#define TLBX_E_CIRCULAR_EXPORT EMAKEHR(0x11A4) // TypeLib export: attempt to export a CLB imported from a TLB. +#define TLBX_E_CIRCULAR_EXPORT2 EMAKEHR(0x1B52) // TypeLib export: attempt to export a CLB imported from a TLB. +#define TLBX_E_CIRCULAR_IMPORT EMAKEHR(0x11A5) // TypeLib import: attempt to import a TLB exported from a CLB. +#define TLBX_E_BAD_NATIVETYPE EMAKEHR(0x11A6) // TypeLib export: bad Native type in method signature. +#define TLBX_E_BAD_VTABLE EMAKEHR(0x11A7) // TypeLib import: non-increasing vtable (duplicate slots). +#define TLBX_E_CRM_NON_STATIC EMAKEHR(0x11A8) // TypeLib export: the COM register method is non static. +#define TLBX_E_CRM_INVALID_SIG EMAKEHR(0x11A9) // TypeLib export: the specified COM register method does not have the correct signature. +#define TLBX_E_CLASS_LOAD_EXCEPTION EMAKEHR(0x11AA) // TypeLib export: can't load, have the class load exception. +#define TLBX_E_UNKNOWN_SIGNATURE EMAKEHR(0x11AB) // TypeLib export: unknown element in signature. +#define TLBX_E_REFERENCED_TYPELIB EMAKEHR(0x11AC) // TypeLib import: reference to an external typelib. +#define TLBX_S_REFERENCED_TYPELIB SMAKEHR(0x11AC) // TypeLib import: reference to an external typelib. +#define TLBX_E_INVALID_NAMESPACE EMAKEHR(0x11AD) // TypeLib import: an imported typelib has an invalid namespace name. +#define TLBX_E_LAYOUT_ERROR EMAKEHR(0x11AE) // Typelib export: an error on Layout() +#define TLBX_E_NOTIUNKNOWN EMAKEHR(0x11AF) // Typelib import: Interface not derived from IUnknown. + +#define TLBX_E_NONVISIBLEVALUECLASS EMAKEHR(0x11B0) // Typelib export: Non COM visible value type in method signature. +#define TLBX_E_LPTSTR_NOT_ALLOWED EMAKEHR(0x11B1) // Typelib export: Types which contain the native type NATIVE_TYPE_LPTSTR are not allowed to be exported to COM. +#define TLBX_E_AUTO_CS_NOT_ALLOWED EMAKEHR(0x11B2) // Typelib export: Types with a char set of auto are not allowed to be exported to COM. +#define TLBX_S_NOSTDINTERFACE SMAKEHR(0x11B3) // Typelib export: Found an interface marked as IID_IDispatch or IID_IUnknown. +#define TLBX_S_DUPLICATE_DISPID SMAKEHR(0x11B4) // Typelib export: duplicate dispid found; ignored. +#define TLBX_E_ENUM_VALUE_INVALID EMAKEHR(0x11B5) // Typelib export: The enum value is not legal for a typelib. +#define TLBX_E_DUPLICATE_IID EMAKEHR(0x11B6) // Typelib export: Duplicate IID +#define TLBX_E_NO_NESTED_ARRAYS EMAKEHR(0x11B7) // Tyeplib export: detected nested arrays. +#define TLBX_E_PARAM_ERROR_NAMED EMAKEHR(0x11B8) // Typelib import: param type couldn't be converted. +#define TLBX_E_PARAM_ERROR_UNNAMED EMAKEHR(0x11B9) // Typelib import: param type couldn't be converted -- param name unknown. +#define TLBX_E_AGNOST_SIGNATURE EMAKEHR(0x11BA) // TypeLib export: size agnostic element in signature. +#define TLBX_E_CONVERT_FAIL EMAKEHR(0x11BB) // TypeLib export: exporter failed. +#define TLBX_W_DUAL_NOT_DISPATCH EMAKEHR(0x11BC) // Typelib import: [dual] interface not derived from IDispatch. +#define TLBX_E_BAD_SIGNATURE EMAKEHR(0x11BD) // Typelib export: unconvertable signature (use specific error for reporting!) +#define TLBX_E_ARRAY_NEEDS_NT_FIXED EMAKEHR(0x11BE) // Typelib export: non-fixed/non-safearray array in struct +#define TLBX_E_CLASS_NEEDS_NT_INTF EMAKEHR(0x11BF) // Typelib export: non-interface class in struct + +#define META_E_CA_INVALID_TARGET EMAKEHR(0x11C0) // Known custom attribute on invalid target. +#define META_E_CA_INVALID_VALUE EMAKEHR(0x11C1) // Known custom attribute had invalid value. +#define META_E_CA_INVALID_BLOB EMAKEHR(0x11C2) // Known custom attribute blob is bad format. +#define META_E_CA_REPEATED_ARG EMAKEHR(0x11C3) // Known custom attribute blob has repeated named argument. +#define META_E_CA_UNKNOWN_ARGUMENT EMAKEHR(0x11C4) // Known custom attrubte named arg not recognized. +#define META_E_CA_VARIANT_NYI EMAKEHR(0x11C5) // Known attribute named argument doesn't support variant. +#define META_E_CA_ARRAY_NYI EMAKEHR(0x11C6) // Known attribute named argument doesn't support array. +#define META_E_CA_UNEXPECTED_TYPE EMAKEHR(0x11C7) // Known attribute parser found unexpected type. +#define META_E_CA_INVALID_ARGTYPE EMAKEHR(0x11C8) // Known attribute parser only handles fields -- no properties. +#define META_E_CA_INVALID_ARG_FOR_TYPE EMAKEHR(0x11C9) // Known attribute parser found an argument that is invalid for the object it is applied to. +#define META_E_CA_INVALID_UUID EMAKEHR(0x11CA) // The format of the UUID was invalid. +#define META_E_CA_INVALID_MARSHALAS_FIELDS EMAKEHR(0x11CB) // The MarshalAs attribute has fields set that are not valid for the specified unmanaged type. +#define META_E_CA_NT_FIELDONLY EMAKEHR(0x11CC) // The specified unmanaged type is only valid on fields. +#define META_E_CA_NEGATIVE_PARAMINDEX EMAKEHR(0x11CD) // The parameter index cannot be negative. +#define META_E_CA_NEGATIVE_MULTIPLIER EMAKEHR(0x11CE) // The multiplier cannot be negative. +#define META_E_CA_NEGATIVE_CONSTSIZE EMAKEHR(0x11CF) // The constant size cannot be negative. + +#define META_E_CA_FIXEDSTR_SIZE_REQUIRED EMAKEHR(0x11D0) // A fixed string requires a size. +#define META_E_CA_CUSTMARSH_TYPE_REQUIRED EMAKEHR(0x11D1) // A custom marshaler requires the custom marshaler type. +#define META_E_CA_FILENAME_REQUIRED EMAKEHR(0x11D2) // A DllImport attribute requires a filename. +#define TLBX_W_NO_PROPS_IN_EVENTS EMAKEHR(0x11D3) // TypeLib import: Detected properties in a source dispinterface. +#define META_E_NOT_IN_ENC_MODE EMAKEHR(0x11D4) // SaveDelta was called without being in EnC mode +#define TLBX_W_ENUM_VALUE_TOOBIG SMAKEHR(0x11D5) // Typelib export: The enum value is not legal for a typelib. +#define META_E_METHOD_COUNTS EMAKEHR(0x11D6) // Merge: different method counts in import and emit scopes. +#define META_E_FIELD_COUNTS EMAKEHR(0x11D7) // Merge: different field counts in import and emit scopes. +#define META_E_PARAM_COUNTS EMAKEHR(0x11D8) // Merge: different param counts in import and emit scopes. +#define TLBX_W_EXPORTING_AUTO_LAYOUT SMAKEHR(0x11D9) // TypeLib export: Exporting an auto-layout type. +#define TLBX_E_TYPED_REF EMAKEHR(0x11DA) // TypeLib export: Exporting a TypedReference. +#define TLBX_W_DEFAULT_INTF_NOT_VISIBLE SMAKEHR(0x11DB) // TypeLib export: ComDefaultInterface is not COMVisible. +#define TLBX_W_BAD_SAFEARRAYFIELD_NO_ELEMENTVT SMAKEHR(0x11DE) // TypeLib export: System.Array SAFEARRAY field without a SafeArraySubType. +#define TLBX_W_LAYOUTCLASS_AS_INTERFACE SMAKEHR(0x11DF) // TypeLib export: Class with layout parameter of field marked with UnmanagedType.Interface +#define TLBX_I_GENERIC_BASE_TYPE SMAKEHR(0x11E0) // TypeLib export: type deriving from a generic type. +#define TLBX_E_BITNESS_MISMATCH EMAKEHR(0x11E1) // TypeLib export: bitness of assembly doesn't match bitness of output type library +#define TLBX_E_EVENT_WITH_NEWENUM EMAKEHR(0x11E2) // TypeLib import: source interface with NewEnum member. +#define TLBX_E_PROPGET_WITHOUT_RETURN EMAKEHR(0x11E3) // TypeLib import: propget without return type +#define META_E_MISMATCHED_VISIBLITY EMAKEHR(0x11E4) // Merge - Match found for type/method/etc but differs in visiblity +#define META_E_CA_BAD_FRIENDS_ARGS EMAKEHR(0x11E5) // InternalsVisibileTo can't have a version, culture, or processor architecture +#define META_E_CA_FRIENDS_SN_REQUIRED EMAKEHR(0x11E6) // Strong-name signed assemblies can only grant friend access to strong name-signed assemblies + + +// Return values from validator functions. +#define VLDTR_S_WRN SMAKEHR(0x1200) // Warnings found in the validator. +#define VLDTR_S_ERR SMAKEHR(0x1201) // Errors found in the validator. +#define VLDTR_S_WRNERR SMAKEHR(0x1202) // Warnings and errors found in the validator. + +// Validator structural errors. +#define VLDTR_E_RID_OUTOFRANGE EMAKEHR(0x1203) // Rid is out of range. +#define VLDTR_E_CDTKN_OUTOFRANGE EMAKEHR(0x1204) // Coded token type is out of range. +#define VLDTR_E_CDRID_OUTOFRANGE EMAKEHR(0x1205) // Coded rid is out of range. +#define VLDTR_E_STRING_INVALID EMAKEHR(0x1206) // String offset is invalid. +#define VLDTR_E_GUID_INVALID EMAKEHR(0x1207) // GUID offset is invalid. +#define VLDTR_E_BLOB_INVALID EMAKEHR(0x1208) // Blob offset if invalid. + +// Validator semantic errors. +#define VLDTR_E_MOD_MULTI EMAKEHR(0x1209) // Multiple module records found. +#define VLDTR_E_MOD_NULLMVID EMAKEHR(0x120A) // Module has null MVID. +#define VLDTR_E_TR_NAMENULL EMAKEHR(0x120B) // TypeRef name is NULL. +#define VLDTR_E_TR_DUP EMAKEHR(0x120C) // TypeRef has a dup. +#define VLDTR_E_TD_NAMENULL EMAKEHR(0x120D) // TypeDef name is NULL. +#define VLDTR_E_TD_DUPNAME EMAKEHR(0x120E) // TypeDef has a dup based on name+namespace. +#define VLDTR_E_TD_DUPGUID EMAKEHR(0x120F) // TypeDef has a dup based on GUID. +#define VLDTR_E_TD_NOTIFACEOBJEXTNULL EMAKEHR(0x1210) // TypeDef that's not an Interface and not System.Object extends nil parent. +#define VLDTR_E_TD_OBJEXTENDSNONNULL EMAKEHR(0x1211) // System.Object extends a non-nil parent. +#define VLDTR_E_TD_EXTENDSSEALED EMAKEHR(0x1212) // TypeDef extends sealed class. +#define VLDTR_E_TD_DLTNORTSPCL EMAKEHR(0x1213) // TypeDef is Deleted but not marked with RTSpecialName. +#define VLDTR_E_TD_RTSPCLNOTDLT EMAKEHR(0x1214) // TypeDef is marked RTSpecialName, but is not a Deleted record. +#define VLDTR_E_MI_DECLPRIV EMAKEHR(0x1215) // MethodImpl's Decl is private +#define VLDTR_E_AS_BADNAME EMAKEHR(0x1216) // Assembly [Ref] name has path and/or extension. +#define VLDTR_E_FILE_SYSNAME EMAKEHR(0x1217) // File has a system name (con, com, aux, etc.). +#define VLDTR_E_MI_BODYSTATIC EMAKEHR(0x1218) // MethodImpl's body is static. +#define VLDTR_E_TD_IFACENOTABS EMAKEHR(0x1219) // TypeDef is marked Interface but not Abstract. +#define VLDTR_E_TD_IFACEPARNOTNIL EMAKEHR(0x121A) // TypeDef is marked Interface but parent is not Nil. +#define VLDTR_E_TD_IFACEGUIDNULL EMAKEHR(0x121B) // TypeDef is marked Interface but GUID is NULL. +#define VLDTR_E_MI_DECLFINAL EMAKEHR(0x121C) // TMethodImpl's Decl is final. +#define VLDTR_E_TD_VTNOTSEAL EMAKEHR(0x121D) // TypeDef is marked ValueType but not marked Sealed. +#define VLDTR_E_PD_BADFLAGS EMAKEHR(0x121E) // Param has extra bits in flags. +#define VLDTR_E_IFACE_DUP EMAKEHR(0x121F) // InterfaceImpl has a dup. +#define VLDTR_E_MR_NAMENULL EMAKEHR(0x1220) // MemberRef name is NULL. +#define VLDTR_E_MR_VTBLNAME EMAKEHR(0x1221) // MemberRef has an invalid name, _VtblGap*. +#define VLDTR_E_MR_DELNAME EMAKEHR(0x1222) // MemberRef has an invalid name, _Deleted*. +#define VLDTR_E_MR_PARNIL EMAKEHR(0x1223) // MemberRef parent Nil in a PE file. +#define VLDTR_E_MR_BADCALLINGCONV EMAKEHR(0x1224) // MemberRef has invalid calling convention. +#define VLDTR_E_MR_NOTVARARG EMAKEHR(0x1225) // MemberRef has Method parent but calling convention is not VARARG. +#define VLDTR_E_MR_NAMEDIFF EMAKEHR(0x1226) // MemberRef name different from parent MethodDef. +#define VLDTR_E_MR_SIGDIFF EMAKEHR(0x1227) // MemberRef signature different from parent MethodDef. +#define VLDTR_E_MR_DUP EMAKEHR(0x1228) // MemberRef has a dup. +#define VLDTR_E_CL_TDAUTO EMAKEHR(0x1229) // ClassLayout parent TypeDef is marked AutoLayout. +#define VLDTR_E_CL_BADPCKSZ EMAKEHR(0x122A) // ClassLayout has bad PackingSize. +#define VLDTR_E_CL_DUP EMAKEHR(0x122B) // ClassLayout has dup. +#define VLDTR_E_FL_BADOFFSET EMAKEHR(0x122C) // FieldLayout2 has bad offset. +#define VLDTR_E_FL_TDNIL EMAKEHR(0x122D) // FieldLayout2 has field with nil parent. +#define VLDTR_E_FL_NOCL EMAKEHR(0x122E) // FieldLayout2 has no ClassLayout record. +#define VLDTR_E_FL_TDNOTEXPLCT EMAKEHR(0x122F) // FieldLayout2 parent TypeDef is not marked with ExplicitLayout. +#define VLDTR_E_FL_FLDSTATIC EMAKEHR(0x1230) // FieldLayout2 has field marked Static. +#define VLDTR_E_FL_DUP EMAKEHR(0x1231) // FieldLayout2 has a dup. +#define VLDTR_E_MODREF_NAMENULL EMAKEHR(0x1232) // ModuleRef name is NULL. +#define VLDTR_E_MODREF_DUP EMAKEHR(0x1233) // ModuleRef has a dup. +#define VLDTR_E_TR_BADSCOPE EMAKEHR(0x1234) // TypeRef has a bad resolution scope. +#define VLDTR_E_TD_NESTEDNOENCL EMAKEHR(0x1235) // TypeDef marked nested has no encloser. +#define VLDTR_E_TD_EXTTRRES EMAKEHR(0x1236) // TypeDef extends a TypeRef which resolves to a TypeDef in the same module. +#define VLDTR_E_SIGNULL EMAKEHR(0x1237) // Signature specified is zero-sized. +#define VLDTR_E_SIGNODATA EMAKEHR(0x1238) // Signature does not have enough data at specified byte. +#define VLDTR_E_MD_BADCALLINGCONV EMAKEHR(0x1239) // Method signature has invalid calling convention. +#define VLDTR_E_MD_THISSTATIC EMAKEHR(0x123A) // Method is marked static but has HASTHIS/EXPLICITTHIS set on the calling convention. +#define VLDTR_E_MD_NOTTHISNOTSTATIC EMAKEHR(0x123B) // Method is not marked static but is not HASTHIS/EXPLICITTHIS. +#define VLDTR_E_MD_NOARGCNT EMAKEHR(0x123C) // Method signature is missing the argument count. +#define VLDTR_E_SIG_MISSELTYPE EMAKEHR(0x123D) // Signature missing element type. +#define VLDTR_E_SIG_MISSTKN EMAKEHR(0x123E) // Signature missing token. +#define VLDTR_E_SIG_TKNBAD EMAKEHR(0x123F) // Signature has bad token. +#define VLDTR_E_SIG_MISSFPTR EMAKEHR(0x1240) // Signature is missing function pointer. +#define VLDTR_E_SIG_MISSFPTRARGCNT EMAKEHR(0x1241) // Signature has function pointer missing argument count. +#define VLDTR_E_SIG_MISSRANK EMAKEHR(0x1242) // Signature is missing rank specification. +#define VLDTR_E_SIG_MISSNSIZE EMAKEHR(0x1243) // Signature is missing count of sized dimensions. +#define VLDTR_E_SIG_MISSSIZE EMAKEHR(0x1244) // Signature is missing size of dimension. +#define VLDTR_E_SIG_MISSNLBND EMAKEHR(0x1245) // Signature is missing count of lower bounds. +#define VLDTR_E_SIG_MISSLBND EMAKEHR(0x1246) // Signature is missing a lower bound. +#define VLDTR_E_SIG_BADELTYPE EMAKEHR(0x1247) // Signature has bad element type. +#define VLDTR_E_SIG_MISSVASIZE EMAKEHR(0x1248) // Signature has value array missing size. +#define VLDTR_E_FD_BADCALLINGCONV EMAKEHR(0x1249) // Field signature has invalid calling convention. +#define VLDTR_E_MD_NAMENULL EMAKEHR(0x124A) // Method name is NULL. +#define VLDTR_E_MD_PARNIL EMAKEHR(0x124B) // Method has parent NIL. +#define VLDTR_E_MD_DUP EMAKEHR(0x124C) // Method has dup. +#define VLDTR_E_FD_NAMENULL EMAKEHR(0x124D) // Field name is NULL. +#define VLDTR_E_FD_PARNIL EMAKEHR(0x124E) // Field parent is Nil. +#define VLDTR_E_FD_DUP EMAKEHR(0x124F) // Field has dup. +#define VLDTR_E_AS_MULTI EMAKEHR(0x1250) // Multiple Assembly records found. +#define VLDTR_E_AS_NAMENULL EMAKEHR(0x1251) // Assembly name is NULL. +#define VLDTR_E_SIG_TOKTYPEMISMATCH EMAKEHR(0x1252) // E_T_VALUETYPE or E_T_CLASS. +#define VLDTR_E_CL_TDINTF EMAKEHR(0x1253) // Class layout on an Interface. +#define VLDTR_E_ASOS_OSPLTFRMIDINVAL EMAKEHR(0x1254) // AssemblyOS platform ID invalid. +#define VLDTR_E_AR_NAMENULL EMAKEHR(0x1255) // AssemblyRef name is NULL. +#define VLDTR_E_TD_ENCLNOTNESTED EMAKEHR(0x1256) // TypeDef not nested has encloser. +#define VLDTR_E_AROS_OSPLTFRMIDINVAL EMAKEHR(0x1257) // AssemblyRefOS has invalid platform ID. +#define VLDTR_E_FILE_NAMENULL EMAKEHR(0x1258) // File name is NULL. +#define VLDTR_E_CT_NAMENULL EMAKEHR(0x1259) // ExportedType name is NULL. +#define VLDTR_E_TD_EXTENDSCHILD EMAKEHR(0x125A) // TypeDef extends its own child. +#define VLDTR_E_MAR_NAMENULL EMAKEHR(0x125B) // ManifestResource name is NULL. +#define VLDTR_E_FILE_DUP EMAKEHR(0x125C) // File has dup. +#define VLDTR_E_FILE_NAMEFULLQLFD EMAKEHR(0x125D) // File name is fully qualified. +#define VLDTR_E_CT_DUP EMAKEHR(0x125E) // ExportedType has dup. +#define VLDTR_E_MAR_DUP EMAKEHR(0x125F) // ManifestResource has dup. +#define VLDTR_E_MAR_NOTPUBPRIV EMAKEHR(0x1260) // ManifestResource is neither Public not Private. +#define VLDTR_E_TD_ENUMNOVALUE EMAKEHR(0x1261) // Enum has no "value__" field. +#define VLDTR_E_TD_ENUMVALSTATIC EMAKEHR(0x1262) // Enum's "value__" field is static. +#define VLDTR_E_TD_ENUMVALNOTSN EMAKEHR(0x1263) // Enum's "value__" field is not SpecialName. +#define VLDTR_E_TD_ENUMFLDNOTST EMAKEHR(0x1264) // Enum's field is not static. +#define VLDTR_E_TD_ENUMFLDNOTLIT EMAKEHR(0x1265) // Enum's field is not literal. +#define VLDTR_E_TD_ENUMNOLITFLDS EMAKEHR(0x1266) // Enum has no literal fields. +#define VLDTR_E_TD_ENUMFLDSIGMISMATCH EMAKEHR(0x1267) // Enum's field sig does not match value__ sig. +#define VLDTR_E_TD_ENUMVALNOT1ST EMAKEHR(0x1268) // Enum's "value__" field is not first. +#define VLDTR_E_FD_NOTVALUERTSN EMAKEHR(0x1269) // Field is RTSpecialName but name is not "value__". +#define VLDTR_E_FD_VALUEPARNOTENUM EMAKEHR(0x126A) // Field "value__" in not Enum class. +#define VLDTR_E_FD_INSTINIFACE EMAKEHR(0x126B) // Instance field in interface. +#define VLDTR_E_FD_NOTPUBINIFACE EMAKEHR(0x126C) // Non-public field in interface. +#define VLDTR_E_FMD_GLOBALNOTPUBPRIVSC EMAKEHR(0x126D) // Global field/method neither Public nor PrivateScope. +#define VLDTR_E_FMD_GLOBALNOTSTATIC EMAKEHR(0x126E) // Global field/method not static. +#define VLDTR_E_FD_GLOBALNORVA EMAKEHR(0x126F) // Global field has no RVA. +#define VLDTR_E_MD_CTORZERORVA EMAKEHR(0x1270) // .ctor,.cctor has zero RVA. +#define VLDTR_E_FD_MARKEDNOMARSHAL EMAKEHR(0x1271) // Field is marked marshaled but has no marshaling rec. +#define VLDTR_E_FD_MARSHALNOTMARKED EMAKEHR(0x1272) // Field has marshaling rec but is not marked marshaled. +#define VLDTR_E_FD_MARKEDNODEFLT EMAKEHR(0x1273) // Field is marked HasDefault but has no const value. +#define VLDTR_E_FD_DEFLTNOTMARKED EMAKEHR(0x1274) // Field has const value rec but is not marked HasDefault. +#define VLDTR_E_FMD_MARKEDNOSECUR EMAKEHR(0x1275) // Field/method is marked HasSecurity but has no security rec. +#define VLDTR_E_FMD_SECURNOTMARKED EMAKEHR(0x1276) // Field/method has security rec but is not marked HasSecurity. +#define VLDTR_E_FMD_PINVOKENOTSTATIC EMAKEHR(0x1277) // Field/method is PInvoke but is not marked Static. +#define VLDTR_E_FMD_MARKEDNOPINVOKE EMAKEHR(0x1278) // Field/method is marked PInvoke but has no ImplMap. +#define VLDTR_E_FMD_PINVOKENOTMARKED EMAKEHR(0x1279) // Field/method has ImplMap but is not marked PInvoke. +#define VLDTR_E_FMD_BADIMPLMAP EMAKEHR(0x127A) // Field/method has invalid ImplMap +#define VLDTR_E_IMAP_BADMODREF EMAKEHR(0x127B) // ImplMap has invalid ModuleRef +#define VLDTR_E_IMAP_BADMEMBER EMAKEHR(0x127C) // ImplMap has invalid MemberForwarded +#define VLDTR_E_IMAP_BADIMPORTNAME EMAKEHR(0x127D) // ImplMap has invalid ImportName +#define VLDTR_E_IMAP_BADCALLCONV EMAKEHR(0x127E) // ImplMap has invalid call conv +#define VLDTR_E_FMD_BADACCESSFLAG EMAKEHR(0x127F) // Field/method has invalid access flag +#define VLDTR_E_FD_INITONLYANDLITERAL EMAKEHR(0x1280) // Field is InitOnly and Literal +#define VLDTR_E_FD_LITERALNOTSTATIC EMAKEHR(0x1281) // Field is Literal but not Static +#define VLDTR_E_FMD_RTSNNOTSN EMAKEHR(0x1282) // Field/method is RTSpec.Name but not Spec.Name +#define VLDTR_E_MD_ABSTPARNOTABST EMAKEHR(0x1283) // Method is abstract, parent is not +#define VLDTR_E_MD_NOTSTATABSTININTF EMAKEHR(0x1284) // Method not static or abstract in interface +#define VLDTR_E_MD_NOTPUBININTF EMAKEHR(0x1285) // Method not public in interface +#define VLDTR_E_MD_CTORININTF EMAKEHR(0x1286) // ctor in interface +#define VLDTR_E_MD_GLOBALCTORCCTOR EMAKEHR(0x1287) // global ctor or cctor +#define VLDTR_E_MD_CTORSTATIC EMAKEHR(0x1288) // static ctor +#define VLDTR_E_MD_CTORNOTSNRTSN EMAKEHR(0x1289) // ctor,cctor not marked SpecialName,RTSpecialName +#define VLDTR_E_MD_CTORVIRT EMAKEHR(0x128A) // virtual ctor,cctor +#define VLDTR_E_MD_CTORABST EMAKEHR(0x128B) // abstract ctor,cctor +#define VLDTR_E_MD_CCTORNOTSTATIC EMAKEHR(0x128C) // instance cctor +#define VLDTR_E_MD_ZERORVA EMAKEHR(0x128D) // RVA=0, method not abstract or pinvoke or runtime, or reverse +#define VLDTR_E_MD_FINNOTVIRT EMAKEHR(0x128E) // Method is final and not virtual +#define VLDTR_E_MD_STATANDFINORVIRT EMAKEHR(0x128F) // Method is static and final or virtual +#define VLDTR_E_MD_ABSTANDFINAL EMAKEHR(0x1290) // Method is abstract and final +#define VLDTR_E_MD_ABSTANDIMPL EMAKEHR(0x1291) // Method is abstract and implemented +#define VLDTR_E_MD_ABSTANDPINVOKE EMAKEHR(0x1292) // Method is abstract and pinvoke +#define VLDTR_E_MD_ABSTNOTVIRT EMAKEHR(0x1293) // Method is abstract and not virtual +#define VLDTR_E_MD_NOTABSTNOTIMPL EMAKEHR(0x1294) // Method is not abstract and not implemented +#define VLDTR_E_MD_NOTABSTBADFLAGSRVA EMAKEHR(0x1295) // Method is not abstract and not (RVA!=0 or pinvoke or runtime) +#define VLDTR_E_MD_PRIVSCOPENORVA EMAKEHR(0x1296) // Method is PrivateScope and has RVA==0 +#define VLDTR_E_MD_GLOBALABSTORVIRT EMAKEHR(0x1297) // Global method is abstract or virtual +#define VLDTR_E_SIG_LONGFORM EMAKEHR(0x1298) // Signature uses long form +#define VLDTR_E_MD_MULTIPLESEMANTICS EMAKEHR(0x1299) // Method has multiple semantics (warning) +#define VLDTR_E_MD_INVALIDSEMANTICS EMAKEHR(0x129A) // Method has invalid semantics (not event or prop) +#define VLDTR_E_MD_SEMANTICSNOTEXIST EMAKEHR(0x129B) // Method has semantics assoc that does not exist +#define VLDTR_E_MI_DECLNOTVIRT EMAKEHR(0x129C) // MethodImpl's Decl is not virtual +#define VLDTR_E_FMD_GLOBALITEM EMAKEHR(0x129D) // Global field/method (warning,CLS) +#define VLDTR_E_MD_MULTSEMANTICFLAGS EMAKEHR(0x129E) // Method has multiple semantic flags set +#define VLDTR_E_MD_NOSEMANTICFLAGS EMAKEHR(0x129F) // Method has no semantic flags set +#define VLDTR_E_FD_FLDINIFACE EMAKEHR(0x12A0) // Field in Interface (warning, CLS) +#define VLDTR_E_AS_HASHALGID EMAKEHR(0x12A1) // Unrecognized Hash Alg ID (warning) +#define VLDTR_E_AS_PROCID EMAKEHR(0x12A2) // Unrecognized Processor ID in Assembly(warning) +#define VLDTR_E_AR_PROCID EMAKEHR(0x12A3) // Unrecognized Processor ID in AssemblyRef(warning) +#define VLDTR_E_CN_PARENTRANGE EMAKEHR(0x12A4) // Constant: parent token out of range +#define VLDTR_E_AS_BADFLAGS EMAKEHR(0x12A5) // Invalid flags in Assembly +#define VLDTR_E_TR_HASTYPEDEF EMAKEHR(0x12A6) // There is TypeDef with same name as TypeRef (warning) +#define VLDTR_E_IFACE_BADIMPL EMAKEHR(0x12A7) // In InterfaceImpl, the implementing token is not TypeDef +#define VLDTR_E_IFACE_BADIFACE EMAKEHR(0x12A8) // In InterfaceImpl, the implemented token is not TypeDef or TypeRef +#define VLDTR_E_TD_SECURNOTMARKED EMAKEHR(0x12A9) // TypeDef has security rec but not marked HasSecurity +#define VLDTR_E_TD_MARKEDNOSECUR EMAKEHR(0x12AA) // TypeDef marked HasSecurity but has no security rec +#define VLDTR_E_MD_CCTORHASARGS EMAKEHR(0x12AB) // .cctor has arguments +#define VLDTR_E_CT_BADIMPL EMAKEHR(0x12AC) // ExportedType has invalid Implementation +#define VLDTR_E_MI_ALIENBODY EMAKEHR(0x12AD) // MethodImpl has body from other class +#define VLDTR_E_MD_CCTORCALLCONV EMAKEHR(0x12AE) // .cctor has invalid calling convention +#define VLDTR_E_MI_BADCLASS EMAKEHR(0x12AF) // MethodImpl has invalid Class token +#define VLDTR_E_MI_CLASSISINTF EMAKEHR(0x12B0) // MethodImpl declared in Interface +#define VLDTR_E_MI_BADDECL EMAKEHR(0x12B1) // MethodImpl has invalid MethodDeclaration token +#define VLDTR_E_MI_BADBODY EMAKEHR(0x12B2) // MethodImpl has invalid MethodBody token +#define VLDTR_E_MI_DUP EMAKEHR(0x12B3) // MethodImpl has duplicate +#define VLDTR_E_FD_BADPARENT EMAKEHR(0x12B4) // Bad field parent +#define VLDTR_E_MD_PARAMOUTOFSEQ EMAKEHR(0x12B5) // Param out of sequence (warning) +#define VLDTR_E_MD_PARASEQTOOBIG EMAKEHR(0x12B6) // Param's sequence num exceeds num of args +#define VLDTR_E_MD_PARMMARKEDNOMARSHAL EMAKEHR(0x12B7) // Param marked HasMarshal, has no marshaling info +#define VLDTR_E_MD_PARMMARSHALNOTMARKED EMAKEHR(0x12B8) // Param has marshaling info, not marked HasMarshal +#define VLDTR_E_MD_PARMMARKEDNODEFLT EMAKEHR(0x12BA) // Param marked HasDefault, has no const value +#define VLDTR_E_MD_PARMDEFLTNOTMARKED EMAKEHR(0x12BB) // Param has const value, not marked HasDefault +#define VLDTR_E_PR_BADSCOPE EMAKEHR(0x12BC) // Prop has invalid scope +#define VLDTR_E_PR_NONAME EMAKEHR(0x12BD) // Prop has no name +#define VLDTR_E_PR_NOSIG EMAKEHR(0x12BE) // Prop has no signature +#define VLDTR_E_PR_DUP EMAKEHR(0x12BF) // Prop has a duplicate +#define VLDTR_E_PR_BADCALLINGCONV EMAKEHR(0x12C0) // Prop has bad calling convention +#define VLDTR_E_PR_MARKEDNODEFLT EMAKEHR(0x12C1) // Prop marked HasDefault, has no const value +#define VLDTR_E_PR_DEFLTNOTMARKED EMAKEHR(0x12C2) // Prop has const value, not marked HasDefault +#define VLDTR_E_PR_BADSEMANTICS EMAKEHR(0x12C3) // Prop has method not (Setter,Getter, or Other) +#define VLDTR_E_PR_BADMETHOD EMAKEHR(0x12C4) // Prop has method with invalid token +#define VLDTR_E_PR_ALIENMETHOD EMAKEHR(0x12C5) // Prop has method from another class +#define VLDTR_E_CN_BLOBNOTNULL EMAKEHR(0x12C6) // Const has non-null blob when it should not +#define VLDTR_E_CN_BLOBNULL EMAKEHR(0x12C7) // Const has null value blob +#define VLDTR_E_EV_BADSCOPE EMAKEHR(0x12C8) // Event has invalid scope +#define VLDTR_E_EV_NONAME EMAKEHR(0x12CA) // Event has no name +#define VLDTR_E_EV_DUP EMAKEHR(0x12CB) // Event has a duplicate +#define VLDTR_E_EV_BADEVTYPE EMAKEHR(0x12CC) // Event has invalid EventType +#define VLDTR_E_EV_EVTYPENOTCLASS EMAKEHR(0x12CD) // Event's EventType is not a class +#define VLDTR_E_EV_BADSEMANTICS EMAKEHR(0x12CE) // Event has method not (AddOn,RemoveOn,Fire,Other) +#define VLDTR_E_EV_BADMETHOD EMAKEHR(0x12CF) // Event has method with invalid token +#define VLDTR_E_EV_ALIENMETHOD EMAKEHR(0x12D0) // Event has method from another class +#define VLDTR_E_EV_NOADDON EMAKEHR(0x12D1) // Event has no AddOn method +#define VLDTR_E_EV_NOREMOVEON EMAKEHR(0x12D2) // Event has no RemoveOn method +#define VLDTR_E_CT_DUPTDNAME EMAKEHR(0x12D3) // ExportedType has same name as TypeDef +#define VLDTR_E_MAR_BADOFFSET EMAKEHR(0x12D4) // MRes refers to non-PE file with offset !=0 +#define VLDTR_E_DS_BADOWNER EMAKEHR(0x12D5) // Decl.security has invalid owner token +#define VLDTR_E_DS_BADFLAGS EMAKEHR(0x12D6) // Decl.security has invalid action flags +#define VLDTR_E_DS_NOBLOB EMAKEHR(0x12D7) // Decl.security has no permission blob +#define VLDTR_E_MAR_BADIMPL EMAKEHR(0x12D8) // Manifest resource has invalid Implementation +#define VLDTR_E_MR_VARARGCALLINGCONV EMAKEHR(0x12DA) // MemberRef has VARARG calling conv. (CLS warning) +#define VLDTR_E_MD_CTORNOTVOID EMAKEHR(0x12DB) // .ctor,.cctor returning not void +#define VLDTR_E_EV_FIRENOTVOID EMAKEHR(0x12DC) // Fire method returning not void +#define VLDTR_E_AS_BADLOCALE EMAKEHR(0x12DD) // Invalid locale +#define VLDTR_E_CN_PARENTTYPE EMAKEHR(0x12DE) // Constant has parent of invalid type +#define VLDTR_E_SIG_SENTINMETHODDEF EMAKEHR(0x12DF) // E_T_SENTINEL in MethodDef signature +#define VLDTR_E_SIG_SENTMUSTVARARG EMAKEHR(0x12E0) // E_T_SENTINEL <=> VARARG +#define VLDTR_E_SIG_MULTSENTINELS EMAKEHR(0x12E1) // Multiple E_T_SENTINELs +#define VLDTR_E_SIG_LASTSENTINEL EMAKEHR(0x12E2) // E_T_SENTINEL not followed by type +#define VLDTR_E_SIG_MISSARG EMAKEHR(0x12E3) // Signature missing argument +#define VLDTR_E_SIG_BYREFINFIELD EMAKEHR(0x12E4) // Field of ByRef type +#define VLDTR_E_MD_SYNCMETHODINVTYPE EMAKEHR(0x12E5) // Synchronized method in value class +#define VLDTR_E_TD_NAMETOOLONG EMAKEHR(0x12E6) // TypeDef name too long +#define VLDTR_E_AS_PROCDUP EMAKEHR(0x12E7) // Duplicate Assembly Processor +#define VLDTR_E_ASOS_DUP EMAKEHR(0x12E8) // Duplicate Assembly OS (ID+ver.major+ver.minor) +#define VLDTR_E_MAR_BADFLAGS EMAKEHR(0x12E9) // Manifest Resource has bad flags +#define VLDTR_E_CT_NOTYPEDEFID EMAKEHR(0x12EA) // ExportedType has nil TypeDefId +#define VLDTR_E_FILE_BADFLAGS EMAKEHR(0x12EB) // File has bad flags +#define VLDTR_E_FILE_NULLHASH EMAKEHR(0x12EC) // File has no hash blob +#define VLDTR_E_MOD_NONAME EMAKEHR(0x12ED) // Module has no name +#define VLDTR_E_MOD_NAMEFULLQLFD EMAKEHR(0x12EE) // Module has fully-qualified name +#define VLDTR_E_TD_RTSPCLNOTSPCL EMAKEHR(0x12EF) // TypeDef is tdRTSpecialName but not tdSpecialName +#define VLDTR_E_TD_EXTENDSIFACE EMAKEHR(0x12F0) // TypeDef extends interface +#define VLDTR_E_MD_CTORPINVOKE EMAKEHR(0x12F1) // .ctor,.cctor is PInvokeImpl +#define VLDTR_E_TD_SYSENUMNOTCLASS EMAKEHR(0x12F2) // System.Enum is not a class +#define VLDTR_E_TD_SYSENUMNOTEXTVTYPE EMAKEHR(0x12F3) // System.Enum extends not System.ValueType +#define VLDTR_E_MI_SIGMISMATCH EMAKEHR(0x12F4) // MethodImpl's Decl and Body signatures mismatch +#define VLDTR_E_TD_ENUMHASMETHODS EMAKEHR(0x12F5) // TypeDef extends System.Enum but has methods +#define VLDTR_E_TD_ENUMIMPLIFACE EMAKEHR(0x12F6) // TypeDef extends System.Enum but impls interface(s) +#define VLDTR_E_TD_ENUMHASPROP EMAKEHR(0x12F7) // TypeDef extends System.Enum but has prop(s) +#define VLDTR_E_TD_ENUMHASEVENT EMAKEHR(0x12F8) // TypeDef extends System.Enum but has event(s) +#define VLDTR_E_TD_BADMETHODLST EMAKEHR(0x12F9) // TypeDef has MethodList > Nmethods+1 +#define VLDTR_E_TD_BADFIELDLST EMAKEHR(0x12FA) // TypeDef has FieldList > Nfields+1 +#define VLDTR_E_CN_BADTYPE EMAKEHR(0x12FB) // Constant has wrong type +#define VLDTR_E_TD_ENUMNOINSTFLD EMAKEHR(0x12FC) // Enum has no instance fields +#define VLDTR_E_TD_ENUMMULINSTFLD EMAKEHR(0x12FD) // Enum has multiple instance fields + + +#define VLDTR_E_INTERRUPTED EMAKEHR(0x12FE) // Validator has been interrupted by the VEHandler. +#define VLDTR_E_NOTINIT EMAKEHR(0x12FF) // Validator failed to initialize correctly. + +#define VLDTR_E_IFACE_NOTIFACE EMAKEHR(0x1B00) // Interface in InterfaceImpl is not marked tdInterface +#define VLDTR_E_FD_RVAHASNORVA EMAKEHR(0x1B01) // Field marked fdHasFieldRVA but has no RVA rec +#define VLDTR_E_FD_RVAHASZERORVA EMAKEHR(0x1B02) // Field marked fdHasFieldRVA has RVA =0 +#define VLDTR_E_MD_RVAANDIMPLMAP EMAKEHR(0x1B03) // Method has both RVA !=0 and ImplMap +#define VLDTR_E_TD_EXTRAFLAGS EMAKEHR(0x1B04) // TypeDef has extraneous bits in flags +#define VLDTR_E_TD_EXTENDSITSELF EMAKEHR(0x1B05) // TypeDef extends itself +#define VLDTR_E_TD_SYSVTNOTEXTOBJ EMAKEHR(0x1B06) // System.ValueType does not extend System.Object +#define VLDTR_E_TD_EXTTYPESPEC EMAKEHR(0x1B07) // Class extends TypeSpec (warning) +#define VLDTR_E_TD_VTNOSIZE EMAKEHR(0x1B09) // Value Class has zero size +#define VLDTR_E_TD_IFACESEALED EMAKEHR(0x1B0A) // Interface is sealed +#define VLDTR_E_NC_BADNESTED EMAKEHR(0x1B0B) // Bad "nested" token in NestedClass +#define VLDTR_E_NC_BADENCLOSER EMAKEHR(0x1B0C) // Bad "enclosing" token in NestedClass +#define VLDTR_E_NC_DUP EMAKEHR(0x1B0D) // Duplicate NestedClass record +#define VLDTR_E_NC_DUPENCLOSER EMAKEHR(0x1B0E) // Duplicate NestedClass with different encloser +#define VLDTR_E_FRVA_ZERORVA EMAKEHR(0x1B0F) // RVA=0 in FieldRVA record +#define VLDTR_E_FRVA_BADFIELD EMAKEHR(0x1B10) // Invalid field token in FieldRVA record +#define VLDTR_E_FRVA_DUPRVA EMAKEHR(0x1B11) // Duplicate RVA in FieldRVA record +#define VLDTR_E_FRVA_DUPFIELD EMAKEHR(0x1B12) // Duplicate field in FieldRVA record +#define VLDTR_E_EP_BADTOKEN EMAKEHR(0x1B13) // Bad token as entry point in CLR header +#define VLDTR_E_EP_INSTANCE EMAKEHR(0x1B14) // Entry point in CLR header is a token of instance method +#define VLDTR_E_TD_ENUMFLDBADTYPE EMAKEHR(0x1B15) // Enum has non-integral underlying type +#define VLDTR_E_MD_BADRVA EMAKEHR(0x1B16) // Method has bogus RVA +#define VLDTR_E_FD_LITERALNODEFAULT EMAKEHR(0x1B17) // Literal field has no const value +#define VLDTR_E_IFACE_METHNOTIMPL EMAKEHR(0x1B18) // Class implementing an interface doesn't impl.one of methods +#define VLDTR_E_CA_BADPARENT EMAKEHR(0x1B19) // CA has invalid owner +#define VLDTR_E_CA_BADTYPE EMAKEHR(0x1B1A) // CA has invalid type +#define VLDTR_E_CA_NOTCTOR EMAKEHR(0x1B1B) // CA type is not .ctor +#define VLDTR_E_CA_BADSIG EMAKEHR(0x1B1C) // CA type has bad signature +#define VLDTR_E_CA_NOSIG EMAKEHR(0x1B1D) // CA type has no signature +#define VLDTR_E_CA_BADPROLOG EMAKEHR(0x1B1E) // CA blob has bad prolog (not 0x01 0x00) +#define VLDTR_E_MD_BADLOCALSIGTOK EMAKEHR(0x1B1F) // Method has invalid LocalSig token +#define VLDTR_E_MD_BADHEADER EMAKEHR(0x1B20) // Method has invalid header +#define VLDTR_E_EP_TOOMANYARGS EMAKEHR(0x1B21) // Entry point has more than one arg +#define VLDTR_E_EP_BADRET EMAKEHR(0x1B22) // Entry point has bad return type +#define VLDTR_E_EP_BADARG EMAKEHR(0x1B23) // Entry point has bad argument +#define VLDTR_E_SIG_BADVOID EMAKEHR(0x1B24) // Illegal "void" in signature +#define VLDTR_E_IFACE_METHMULTIMPL EMAKEHR(0x1B25) // Multiple implementation of method +//@GENERICS +#define VLDTR_E_GP_NAMENULL EMAKEHR(0x1B26) // GenericParam name is NULL +#define VLDTR_E_GP_OWNERNIL EMAKEHR(0x1B27) // GenericParam has nil owner. +#define VLDTR_E_GP_DUPNAME EMAKEHR(0x1B28) // GenericParam has duplicate by owner and name. +#define VLDTR_E_GP_DUPNUMBER EMAKEHR(0x1B29) // GenericParam has duplicate by owner and number. +#define VLDTR_E_GP_NONSEQ_BY_OWNER EMAKEHR(0x1B2A) // GenericParam is non sequential by owner +#define VLDTR_E_GP_NONSEQ_BY_NUMBER EMAKEHR(0x1B2B) // GenericParam is non sequential by number +#define VLDTR_E_GP_UNEXPECTED_OWNER_FOR_VARIANT_VAR EMAKEHR(0x1B2C) // GenericParam has variance but its owner is not an interface or delegate +#define VLDTR_E_GP_ILLEGAL_VARIANT_MVAR EMAKEHR(0x1B2D) // GenericParam is a method type parameter and must be non-variant +#define VLDTR_E_GP_ILLEGAL_VARIANCE_FLAGS EMAKEHR(0x1B2E) // GenericParam has illegal value for variance flags +#define VLDTR_E_GP_REFANDVALUETYPE EMAKEHR(0x1B2F) // GenericParam has incompatible special constraints reference type and valuetype +#define VLDTR_E_GPC_OWNERNIL EMAKEHR(0x1B30) // GenericParamConstraint has nil owner +#define VLDTR_E_GPC_DUP EMAKEHR(0x1B31) // GenericParamConstraint has duplicate by owner and constraint +#define VLDTR_E_GPC_NONCONTIGUOUS EMAKEHR(0x1B32) // GenericParamConstraint is non-contiguous with preceeding constraints for same owner +#define VLDTR_E_MS_METHODNIL EMAKEHR(0x1B33) // MethodSpec has nil method +#define VLDTR_E_MS_DUP EMAKEHR(0x1B34) // MethodSpec has duplicate based own method and instantiation +#define VLDTR_E_MS_BADCALLINGCONV EMAKEHR(0x1B35) // MethodSpec signature has invalid calling convention +#define VLDTR_E_MS_MISSARITY EMAKEHR(0x1B36) // MethodSpec signature is missing arity specification +#define VLDTR_E_MS_MISSARG EMAKEHR(0x1B37) // MethodSpec signature is missing type argument +#define VLDTR_E_MS_ARITYMISMATCH EMAKEHR(0x1B38) // MethodSpec arity of generic method and instantiation do not match +#define VLDTR_E_MS_METHODNOTGENERIC EMAKEHR(0x1B39) // MethodSpec method is not generic +#define VLDTR_E_SIG_MISSARITY EMAKEHR(0x1B3A) // Signature missing arity of instantiated generic type +#define VLDTR_E_SIG_ARITYMISMATCH EMAKEHR(0x1B3B) // Signature has generic type of arity instantiated at different arity +#define VLDTR_E_MD_GENERIC_CCTOR EMAKEHR(0x1B3C) // Method cannot be both generic and a class constructor +#define VLDTR_E_MD_GENERIC_CTOR EMAKEHR(0x1B3D) // Method cannot be both generic and an instance constructor +#define VLDTR_E_MD_GENERIC_IMPORT EMAKEHR(0x1B3E) // Method cannot be both generic and defined on an imported type +#define VLDTR_E_MD_GENERIC_BADCALLCONV EMAKEHR(0x1B3F) // Method cannot be both generic and have non-default calling convention +#define VLDTR_E_EP_GENERIC_METHOD EMAKEHR(0x1B40) // Entry point in CLR header is the token for a generic method +#define VLDTR_E_MD_MISSARITY EMAKEHR(0x1B41) // Method signature is generic but is missing its arity +#define VLDTR_E_MD_ARITYZERO EMAKEHR(0x1B42) // Method signature is generic but its arity is zero +#define VLDTR_E_SIG_ARITYZERO EMAKEHR(0x1B43) // Signature has generic type instantiated at arity 0 +#define VLDTR_E_MS_ARITYZERO EMAKEHR(0x1B44) // MethodSpec signature has arity 0 +#define VLDTR_E_MD_GPMISMATCH EMAKEHR(0x1B45) // MethodDef signature has arity n but owns m GenericParams +#define VLDTR_E_EP_GENERIC_TYPE EMAKEHR(0x1B46) // Entry point in CLR header is the token for a method in a generic type +#define VLDTR_E_MI_DECLNOTGENERIC EMAKEHR(0x1B47) // MethodImpl overrides non-generic method with generic method +#define VLDTR_E_MI_IMPLNOTGENERIC EMAKEHR(0x1B48) // MethodImpl overrides non-generic method with generic method +#define VLDTR_E_MI_ARITYMISMATCH EMAKEHR(0x1B49) // MethodImpl overrides generic method of arity n with generic method of arity m +#define VLDTR_E_TD_EXTBADTYPESPEC EMAKEHR(0x1B4A) // TypeDef extends a TypeSpec that is not an instantiated type +#define VLDTR_E_SIG_BYREFINST EMAKEHR(0x1B4B) // Signature has type instantiated at byref at offset i +#define VLDTR_E_MS_BYREFINST EMAKEHR(0x1B4C) // Signature has type instantiated at byref at offset i +#define VLDTR_E_TS_EMPTY EMAKEHR(0x1B4D) // TypeSpec has empty signature +#define VLDTR_E_TS_HASSENTINALS EMAKEHR(0x1B4E) // TypeSpec has signature containing one or more sentinals +#define VLDTR_E_TD_GENERICHASEXPLAYOUT EMAKEHR(0x1B4F) // TypeDef is generic but has explicit layout +#define VLDTR_E_SIG_BADTOKTYPE EMAKEHR(0x1B50) // Signature has token following ELEMENT_TYPE_CLASS (_VALUETYPE) that is not a TypeDef or TypeRef +#define VLDTR_E_IFACE_METHNOTIMPLTHISMOD EMAKEHR(0x1B51) // Warn:Class doesn't implement interface method in this module + +//**** Common Language Runtime Debugging Services errors +#define CORDBG_E_UNRECOVERABLE_ERROR EMAKEHR(0x1300) // Unrecoverable API error. +#define CORDBG_E_PROCESS_TERMINATED EMAKEHR(0x1301) // Process was terminated. +#define CORDBG_E_PROCESS_NOT_SYNCHRONIZED EMAKEHR(0x1302) // Process not synchronized. +#define CORDBG_E_CLASS_NOT_LOADED EMAKEHR(0x1303) // A class is not loaded. +#define CORDBG_E_IL_VAR_NOT_AVAILABLE EMAKEHR(0x1304) // An IL variable is not available at the + // current native IP. +#define CORDBG_E_BAD_REFERENCE_VALUE EMAKEHR(0x1305) // A reference value was found to be bad + // during dereferencing. +#define CORDBG_E_FIELD_NOT_AVAILABLE EMAKEHR(0x1306) // A field in a class is not available, + // because the runtime optimized it away. +#define CORDBG_E_NON_NATIVE_FRAME EMAKEHR(0x1307) // "Native frame only" operation on + // non-native frame +#define CORDBG_E_NONCONTINUABLE_EXCEPTION EMAKEHR(0x1308) // Continue on non-continuable exception +#define CORDBG_E_CODE_NOT_AVAILABLE EMAKEHR(0x1309) // The code is currently unavailable +#define CORDBG_E_FUNCTION_NOT_IL EMAKEHR(0x130A) // Attempt to get a ICorDebugFunction for + // a function that is not IL. +#define CORDBG_S_BAD_START_SEQUENCE_POINT SMAKEHR(0x130B) // Attempt to SetIP not at a sequence point +#define CORDBG_S_BAD_END_SEQUENCE_POINT SMAKEHR(0x130C) // Attempt to SetIP when not going to a + // sequence point. If both this and + // CORDBG_E_BAD_START_SEQUENCE_POINT are + // true, only CORDBG_E_BAD_START_SEQUENCE_POINT + // will be reported. +#define CORDBG_S_INSUFFICIENT_INFO_FOR_SET_IP SMAKEHR(0x130D) // SetIP is possible, but the debugger doesn't + // have enough info to fix variable locations, + // GC refs, or anything else. Use at your own + // risk. +#define CORDBG_E_CANT_SET_IP_INTO_FINALLY EMAKEHR(0x130E) // SetIP isn't possible, because SetIP would + // move EIP from outside of an exception + // handling finally clause to a point inside + // of one. +#define CORDBG_E_CANT_SET_IP_OUT_OF_FINALLY EMAKEHR(0x130F) // SetIP isn't possible because it would move + // EIP from within an exception handling finally + // clause to a point outside of one. +#define CORDBG_E_CANT_SET_IP_INTO_CATCH EMAKEHR(0x1310) // SetIP isn't possible, because SetIP would + // move EIP from outside of an exception + // handling catch clause to a point inside of + // one. +#define CORDBG_E_SET_IP_NOT_ALLOWED_ON_NONLEAF_FRAME EMAKEHR(0x1311) // Setip cannot be done on any frame except + // the leaf frame. +#define CORDBG_E_SET_IP_IMPOSSIBLE EMAKEHR(0x1312) // SetIP isn't allowed. For example, there is + // insufficient memory to perform SetIP. +#define CORDBG_E_FUNC_EVAL_BAD_START_POINT EMAKEHR(0x1313) // Func eval can't work if we're, for example, + // not stopped at a GC safe point. +#define CORDBG_E_INVALID_OBJECT EMAKEHR(0x1314) // This object value is no longer valid. +#define CORDBG_E_FUNC_EVAL_NOT_COMPLETE EMAKEHR(0x1315) // If you call CordbEval::GetResult before the + // func eval has finished, you'll get this + // result. +#define CORDBG_S_FUNC_EVAL_HAS_NO_RESULT SMAKEHR(0x1316) // Some Func evals will lack a return value, + // such as those whose return type is void. +#define CORDBG_S_VALUE_POINTS_TO_VOID SMAKEHR(0x1317) // The Debugging API doesn't support + // dereferencing pointers of type void. +#define CORDBG_E_INPROC_NOT_IMPL EMAKEHR(0x1318) // The inproc version of the debugging API + // doesn't implement this function, +#define CORDBG_S_FUNC_EVAL_ABORTED SMAKEHR(0x1319) // The func eval completed, but was aborted. +#define CORDBG_E_STATIC_VAR_NOT_AVAILABLE EMAKEHR(0x131A) // A static variable isn't available because + // it hasn't been initialized yet. +#define CORDBG_E_OBJECT_IS_NOT_COPYABLE_VALUE_CLASS EMAKEHR(0x131B) // Can't copy a VC with object refs in it. +#define CORDBG_E_CANT_SETIP_INTO_OR_OUT_OF_FILTER EMAKEHR(0x131C) // SetIP can't leave or enter a filter +#define CORDBG_E_CANT_CHANGE_JIT_SETTING_FOR_ZAP_MODULE EMAKEHR(0x131D) // You can't change JIT settings for ZAP + // modules. +#define CORDBG_E_CANT_SET_IP_OUT_OF_FINALLY_ON_WIN64 EMAKEHR(0x131E) // SetIP isn't possible because it would move + // EIP from within a finally clause to a point + // outside of one on WIN64 platforms. +#define CORDBG_E_CANT_SET_IP_OUT_OF_CATCH_ON_WIN64 EMAKEHR(0x131F) // SetIP isn't possible because it would move + // EIP from within a catch clause to a point + // outside of one on WIN64 platforms. + +#define CORDBG_E_REMOTE_CONNECTION_CONN_RESET EMAKEHR(0x1320) // The remote device closed the connection. +#define CORDBG_E_REMOTE_CONNECTION_KEEP_ALIVE EMAKEHR(0x1321) // The connection was closed due to akeep alive failure. +#define CORDBG_E_REMOTE_CONNECTION_FATAL_ERROR EMAKEHR(0x1322) // Generic error that the device connection has been broken with no chance for recovery. + +#define CORDBG_E_CANT_SET_TO_JMC EMAKEHR(0x1323) // Can't use JMC on this code (likely wrong jit settings). + +#define CORDBG_E_BAD_THREAD_STATE EMAKEHR(0x132d) // The state of the thread is invalid. +#define CORDBG_E_DEBUGGER_ALREADY_ATTACHED EMAKEHR(0x132e) // This process has already been attached to +#define CORDBG_E_SUPERFLOUS_CONTINUE EMAKEHR(0x132f) // Returned from a call to Continue that was + // Not matched with a stopping event. +#define CORDBG_E_SET_VALUE_NOT_ALLOWED_ON_NONLEAF_FRAME EMAKEHR(0x1330) // Can't perfrom SetValue on non-leaf frames. +#define CORDBG_E_ENC_EH_MAX_NESTING_LEVEL_CANT_INCREASE EMAKEHR(0x1331) // When doing EnC, some JITters don't let you + // increase the maximum level to which + // exception handling can be nested. +#define CORDBG_E_ENC_MODULE_NOT_ENC_ENABLED EMAKEHR(0x1332) // Tried to do EnC on a module that wasn't + // started in EnC mode. +#define CORDBG_E_SET_IP_NOT_ALLOWED_ON_EXCEPTION EMAKEHR(0x1333) // Setip cannot be done on any exception +#define CORDBG_E_VARIABLE_IS_ACTUALLY_LITERAL EMAKEHR(0x1334) // The 'variable' doesn't exist because it is a + // literal optimized away by the compiler - ask + // Metadata for it's default value, instead. +#define CORDBG_E_PROCESS_DETACHED EMAKEHR(0x1335) // Process has been detached from +#define CORDBG_E_ENC_METHOD_SIG_CHANGED EMAKEHR(0x1336) // Not allowed to change the signature of an + // existing method - compiler should make new method + // instead. +#define CORDBG_E_ENC_METHOD_NO_LOCAL_SIG EMAKEHR(0x1337) // Can't get the local signature for the method + // we're trying to EnC. +#define CORDBG_E_ENC_CANT_ADD_FIELD_TO_VALUE_OR_LAYOUT_CLASS EMAKEHR(0x1338) // Adding a field to a value or layout class is prohibitted, + // since we can't guarantee the new field is contiguous to + // VC's on the stack, embedded in other objects, etc. +#define CORDBG_E_ENC_CANT_CHANGE_FIELD EMAKEHR(0x1339) // Once you've got a field, you're not allowed to change + // it, since that would change the size of the type it belongs to. +#define CORDBG_E_ENC_CANT_ADD_NON_PRIVATE_MEMBER EMAKEHR(0x133A) // Only support addition of private members. +#define CORDBG_E_FIELD_NOT_STATIC EMAKEHR(0x133B) // Returned if someone tries to call GetStaticFieldValue + // on a non-static field +#define CORDBG_E_FIELD_NOT_INSTANCE EMAKEHR(0x133C) // Returned if someone tries to call GetStaticFieldValue + // on a non-instance field +#define CORDBG_E_ENC_ZAPPED_WITHOUT_ENC EMAKEHR(0x133D) // If a zap file was created without the EnC flag set, then + // we can't do EnC on it, no matter what. +#define CORDBG_E_ENC_BAD_METHOD_INFO EMAKEHR(0x133E) // Lacking information about method. +#define CORDBG_E_ENC_JIT_CANT_UPDATE EMAKEHR(0x133F) // The JIT is unable to update the method. +#define CORDBG_E_ENC_MISSING_CLASS EMAKEHR(0x1340) // An internal structure about the class is missing +#define CORDBG_E_ENC_INTERNAL_ERROR EMAKEHR(0x1341) // Generic message for "Something user doesn't control went wrong" message. +#define CORDBG_E_ENC_HANGING_FIELD EMAKEHR(0x1342) // The field was added via enc after the class was loaded, and so instead of + // the field being contiguous with the other fields, it's 'hanging' off the + // instance, so the right side will have to go & get (instance-specific + // info based on the particular object. +#define CORDBG_E_MODULE_NOT_LOADED EMAKEHR(0x1343) // If the module isn't loaded, including if it's been unloaded. + +#define CORDBG_E_ENC_CANT_CHANGE_SUPERCLASS EMAKEHR(0x1344) // Not allowed to change which class something inherits from +#define CORDBG_E_UNABLE_TO_SET_BREAKPOINT EMAKEHR(0x1345) // Can't set a breakpoint here. +#define CORDBG_E_DEBUGGING_NOT_POSSIBLE EMAKEHR(0x1346) // Debugging isn't possible due to an incompatability within the CLR implementation. +#define CORDBG_E_KERNEL_DEBUGGER_ENABLED EMAKEHR(0x1347) // Debugging isn't possible because a kernel debugger is enabled on the system. +#define CORDBG_E_KERNEL_DEBUGGER_PRESENT EMAKEHR(0x1348) // Debugging isn't possible because a kernel debugger is present on the system. +#define CORDBG_E_HELPER_THREAD_DEAD EMAKEHR(0x1349) // The debugger's internal helper thread is dead. +#define CORDBG_E_INTERFACE_INHERITANCE_CANT_CHANGE EMAKEHR(0x134A) // Not allowed to change interface inheritance. +#define CORDBG_E_INCOMPATIBLE_PROTOCOL EMAKEHR(0x134B) // The debugger's protocol is incompatible with the debuggee. +#define CORDBG_E_TOO_MANY_PROCESSES EMAKEHR(0x134C) // The debugger can only handle a finite number of debuggees. +#define CORDBG_E_INTEROP_NOT_SUPPORTED EMAKEHR(0x134D) // Interop is not allowed on a win9x platform +#define CORDBG_E_NO_REMAP_BREAKPIONT EMAKEHR(0x134E) // Cannot call RemapFunction until have received RemapBreakpoint +#define CORDBG_E_OBJECT_NEUTERED EMAKEHR(0x134F) // Object has been neutered (it's in a zombie state). +// NOTE! YOU CANNOT PUT MORE ERRORS HERE! They run into the range for profiling errors. All new +// new error need to be added below (search for cordbg_e_ in your editor). + +//**** Common Language Runtime Profiling Services errors +#define CORPROF_E_FUNCTION_NOT_COMPILED EMAKEHR(0x1350) // Function not yet compiled. +#define CORPROF_E_DATAINCOMPLETE EMAKEHR(0x1351) // The ID is not fully loaded/defined yet. +#define CORPROF_E_NOT_REJITABLE_METHODS EMAKEHR(0x1352) // The Module is not configured for updateable methods. +#define CORPROF_E_CANNOT_UPDATE_METHOD EMAKEHR(0x1353) // The Method could not be updated for re-jit. +#define CORPROF_E_FUNCTION_NOT_IL EMAKEHR(0x1354) // The Method has no associated IL +#define CORPROF_E_NOT_MANAGED_THREAD EMAKEHR(0x1355) // The thread has never run managed code before +#define CORPROF_E_CALL_ONLY_FROM_INIT EMAKEHR(0x1356) // The function may only be called during profiler init +#define CORPROF_E_INPROC_NOT_ENABLED EMAKEHR(0x1357) // Inprocess debugging must be enabled during init + // Also returned when BeginInprocDebugging not called + // before using the inprocess debugging services +#define CORPROF_E_JITMAPS_NOT_ENABLED EMAKEHR(0x1358) // Can't get a JIT map becuase they are not enabled +#define CORPROF_E_INPROC_ALREADY_BEGUN EMAKEHR(0x1359) // If a profiler tries to call BeginInprocDebugging more than + // once, it will get this error. +#define CORPROF_E_INPROC_NOT_AVAILABLE EMAKEHR(0x135A) // States that inprocess debugging not allowed at this point + // (for example during GC callbacks or RuntimeSuspention callbacks +#define CORPROF_E_NOT_YET_AVAILABLE EMAKEHR(0x135B) // This is a general error used to indicated that the information + // requested is not yet available +#define CORPROF_E_TYPE_IS_PARAMETERIZED EMAKEHR(0x135C) // The given type is a generic and cannot be used with this method. +#define CORPROF_E_FUNCTION_IS_PARAMETERIZED EMAKEHR(0x135D) // The given function is a generic and cannot be used with this method. +#define CORPROF_E_STACKSNAPSHOT_INVALID_TGT_THREAD EMAKEHR(0x135E) // A profiler tried to walk the stack of an invalid thread +#define CORPROF_E_STACKSNAPSHOT_UNMANAGED_CTX EMAKEHR(0x135F) // A profiler can not walk a thread that is currently executing unmanaged code +#define CORPROF_E_STACKSNAPSHOT_UNSAFE EMAKEHR(0x1360) // A stackwalk at this point may cause dead locks or data corruption +#define CORPROF_E_STACKSNAPSHOT_ABORTED EMAKEHR(0x1361) // Stackwalking callback requested the walk to abort +#define CORPROF_E_LITERALS_HAVE_NO_ADDRESS EMAKEHR(0x1362) // Returned when asked for the address of a static that is a literal. +#define CORPROF_E_UNSUPPORTED_CALL_SEQUENCE EMAKEHR(0x1363) // A call was made at an unsupported time (e.g., API illegally called asynchronously) +#define CORPROF_E_ASYNCHRONOUS_UNSAFE EMAKEHR(0x1364) // A legal asynchronous call was made at an unsafe time (e.g., CLR locks are held) +#define CORPROF_E_CLASSID_IS_ARRAY EMAKEHR(0x1365) // The specified ClassID cannot be inspected by this function because it is an array +#define CORPROF_E_CLASSID_IS_COMPOSITE EMAKEHR(0x1366) // The specified ClassID is a non-array composite type (e.g., ref) and cannot be inspected + + +//**** Security errors +#define SECURITY_E_XML_TO_ASN_ENCODING EMAKEHR(0x1400) // Failed to convert XML to ASN +#define SECURITY_E_INCOMPATIBLE_SHARE EMAKEHR(0x1401) // Loading this assembly would produce a different grant set from other instances +#define SECURITY_E_UNVERIFIABLE EMAKEHR(0x1402) // Unverifable code failed policy check +#define SECURITY_E_INCOMPATIBLE_EVIDENCE EMAKEHR(0x1403) // Assembly already loaded without additional security evidence. + +//**** Reserved. +#define CLDB_E_INTERNALERROR EMAKEHR(0x1fff) + +// ****************** +// Debugger & Profiler errors +// ****************** + + +// ****************** +// Security errors +// ****************** + +#define CORSEC_E_DECODE_SET EMAKEHR(0x1410) // Failure decoding permission set +#define CORSEC_E_ENCODE_SET EMAKEHR(0x1411) // Failure encoding permission set +#define CORSEC_E_UNSUPPORTED_FORMAT EMAKEHR(0x1412) // Unrecognized encoding format +#define SN_CRYPTOAPI_CALL_FAILED EMAKEHR(0x1413) // StrongName APIs not supported on system +#define CORSEC_E_CRYPTOAPI_CALL_FAILED EMAKEHR(0x1413) // StrongName APIs not supported on system +#define SN_NO_SUITABLE_CSP EMAKEHR(0x1414) // StrongName APIs couldn't locate a matching CSP +#define CORSEC_E_NO_SUITABLE_CSP EMAKEHR(0x1414) // StrongName APIs couldn't locate a matching CSP +#define CORSEC_E_INVALID_ATTR EMAKEHR(0x1415) // Invalid security custom attribute +#define CORSEC_E_POLICY_EXCEPTION EMAKEHR(0x1416) // PolicyException thrown +#define CORSEC_E_MIN_GRANT_FAIL EMAKEHR(0x1417) // Failed to grant minimum permission requests +#define CORSEC_E_NO_EXEC_PERM EMAKEHR(0x1418) // Failed to grant permission to execute +#define CORSEC_E_XMLSYNTAX EMAKEHR(0x1419) // XML Syntax error +#define CORSEC_E_INVALID_STRONGNAME EMAKEHR(0x141a) // Strong name validation failed +#define CORSEC_E_MISSING_STRONGNAME EMAKEHR(0x141b) // Assembly is not strong named +#define CORSEC_E_CONTAINER_NOT_FOUND EMAKEHR(0x141c) // Strong name key container not found +#define CORSEC_E_INVALID_IMAGE_FORMAT EMAKEHR(0x141d) // Invalid assembly file format +#define CORSEC_E_INVALID_PUBLICKEY EMAKEHR(0x141e) // Invalid assembly public key +#define CORSEC_E_SIGNATURE_MISMATCH EMAKEHR(0x1420) // Signature size mismatch + +//**** crypto errors 1430 -- 1439 +#define CORSEC_E_CRYPTO EMAKEHR(0x1430) // generic CryptographicException +#define CORSEC_E_CRYPTO_UNEX_OPER EMAKEHR(0x1431) // generic CryptographicUnexpectedOperationException + +//**** security custom attribute errors 143a -- 144f +#define CORSECATTR_E_BAD_ATTRIBUTE EMAKEHR(0x143a) // Generic problem with a custom attribute +#define CORSECATTR_E_MISSING_CONSTRUCTOR EMAKEHR(0x143b) // Missing a required constructor +#define CORSECATTR_E_FAILED_TO_CREATE_PERM EMAKEHR(0x143c) // Unable to create a permission for this attribute +#define CORSECATTR_E_BAD_ACTION_ASM EMAKEHR(0x143d) // SecurityAction type invalid on assembly +#define CORSECATTR_E_BAD_ACTION_OTHER EMAKEHR(0x143e) // SecurityAction type invalid on types and methods +#define CORSECATTR_E_BAD_PARENT EMAKEHR(0x143f) // Security custom attribute attached to invalid parent +#define CORSECATTR_E_TRUNCATED EMAKEHR(0x1440) // Bad custom attribute serialized blob +#define CORSECATTR_E_BAD_VERSION EMAKEHR(0x1441) // Bad custom attribute serialized blob version +#define CORSECATTR_E_BAD_ACTION EMAKEHR(0x1442) // Invalid security action code +#define CORSECATTR_E_NO_SELF_REF EMAKEHR(0x1443) // CA ref to CA def'd in same assembly +#define CORSECATTR_E_BAD_NONCAS EMAKEHR(0x1444) // Use of non-CAS perm with invalid action +#define CORSECATTR_E_ASSEMBLY_LOAD_FAILED EMAKEHR(0x1445) // Failed to load assembly containing CA (or req'd CA type) +#define CORSECATTR_E_ASSEMBLY_LOAD_FAILED_EX EMAKEHR(0x1446) // Failed to load assembly containing CA (or req'd CA type) +#define CORSECATTR_E_TYPE_LOAD_FAILED EMAKEHR(0x1447) // Failed to load CA type (or reqd CA type) +#define CORSECATTR_E_TYPE_LOAD_FAILED_EX EMAKEHR(0x1448) // Failed to load CA type (or reqd CA type) +#define CORSECATTR_E_ABSTRACT EMAKEHR(0x1449) // CA type is abstract +#define CORSECATTR_E_UNSUPPORTED_TYPE EMAKEHR(0x144a) // Unsupported type for field/property setter +#define CORSECATTR_E_UNSUPPORTED_ENUM_TYPE EMAKEHR(0x144b) // Unsupported base type for enum field/property +#define CORSECATTR_E_NO_FIELD EMAKEHR(0x144c) // Couldn't find a CA field +#define CORSECATTR_E_NO_PROPERTY EMAKEHR(0x144d) // Couldn't find a CA property +#define CORSECATTR_E_EXCEPTION EMAKEHR(0x144e) // Unexpected exception +#define CORSECATTR_E_EXCEPTION_HR EMAKEHR(0x144f) // Unexpected exception + + +//**** Isolated Storage Errors 1450 - 14FF +#define ISS_E_ISOSTORE EMAKEHR(0x1450L) + +#define ISS_E_OPEN_STORE_FILE EMAKEHR(0x1460L) +#define ISS_E_OPEN_FILE_MAPPING EMAKEHR(0x1461L) +#define ISS_E_MAP_VIEW_OF_FILE EMAKEHR(0x1462L) +#define ISS_E_GET_FILE_SIZE EMAKEHR(0x1463L) +#define ISS_E_CREATE_MUTEX EMAKEHR(0x1464L) +#define ISS_E_LOCK_FAILED EMAKEHR(0x1465L) +#define ISS_E_FILE_WRITE EMAKEHR(0x1466L) +#define ISS_E_SET_FILE_POINTER EMAKEHR(0x1467L) +#define ISS_E_CREATE_DIR EMAKEHR(0x1468L) +#define ISS_E_STORE_NOT_OPEN EMAKEHR(0x1469L) + +#define ISS_E_CORRUPTED_STORE_FILE EMAKEHR(0x1480L) +#define ISS_E_STORE_VERSION EMAKEHR(0x1481L) +#define ISS_E_FILE_NOT_MAPPED EMAKEHR(0x1482L) +#define ISS_E_BLOCK_SIZE_TOO_SMALL EMAKEHR(0x1483L) +#define ISS_E_ALLOC_TOO_LARGE EMAKEHR(0x1484L) +#define ISS_E_USAGE_WILL_EXCEED_QUOTA EMAKEHR(0x1485L) +#define ISS_E_TABLE_ROW_NOT_FOUND EMAKEHR(0x1486L) + +#define ISS_E_DEPRECATE EMAKEHR(0x14A0L) +#define ISS_E_CALLER EMAKEHR(0x14A1L) +#define ISS_E_PATH_LENGTH EMAKEHR(0x14A2L) +#define ISS_E_MACHINE EMAKEHR(0x14A3L) +#define ISS_E_MACHINE_DACL EMAKEHR(0x14A4L) + +#define ISS_E_ISOSTORE_START EMAKEHR(0x1450L) +#define ISS_E_ISOSTORE_END EMAKEHR(0x14FFL) + +// ****************** +// Classlib errors +// ****************** + + +// +// MessageId: COR_E_APPLICATION +// +// MessageText: +// +// The base class for all "less serious" exceptions. +// +#define COR_E_APPLICATION EMAKEHR(0x1600L) + + +// +// MessageId: COR_E_ARGUMENT +// +// MessageText: +// +// An argument does not meet the contract of the method. +// +#define COR_E_ARGUMENT E_INVALIDARG // 0x80070057 + + +// +// MessageId: COR_E_ARGUMENTOUTOFRANGE +// +// MessageText: +// +// An argument was out of its legal range. +// +#define COR_E_ARGUMENTOUTOFRANGE EMAKEHR(0x1502L) + + +// +// MessageId: COR_E_ARITHMETIC +// +// MessageText: +// +// Overflow or underflow in mathematical operations. +// +#define COR_E_ARITHMETIC HRESULT_FROM_WIN32(ERROR_ARITHMETIC_OVERFLOW) // 0x80070216 + + +// +// MessageId: COR_E_ARRAYTYPEMISMATCH +// +// MessageText: +// +// Attempted to store an object of the wrong type in an array +// +#define COR_E_ARRAYTYPEMISMATCH EMAKEHR(0x1503L) + + +// +// MessageId: COR_E_CONTEXTMARSHAL +// +// MessageText: +// +// +// +#define COR_E_CONTEXTMARSHAL EMAKEHR(0x1504L) + + +// +// MessageId: COR_E_TIMEOUT +// +// MessageText: +// +// +// +#define COR_E_TIMEOUT EMAKEHR(0x1505L) + + +// +// MessageId: COR_E_KEYNOTFOUND +// +// MessageText: +// +// +// +#define COR_E_KEYNOTFOUND EMAKEHR(0x1577L) + + + +// +// MessageId: COR_E_DEVICESNOTSUPPORTED +// +// MessageText: +// +// +// +#define COR_E_DEVICESNOTSUPPORTED EMAKEHR(0x1540L) + +// +// MessageId: COR_E_DIVIDEBYZERO +// +// MessageText: +// +// Attempted to divide a number by zero. +// +#define COR_E_DIVIDEBYZERO _HRESULT_TYPEDEF_(0x80020012L) // DISP_E_DIVBYZERO + + +// +// MessageId: COR_E_EXCEPTION +// +// MessageText: +// +// Base class for all exceptions in the runtime +// +#define COR_E_EXCEPTION EMAKEHR(0x1500L) + + +// +// MessageId: COR_E_EXECUTIONENGINE +// +// MessageText: +// +// An internal error happened in the Common Language Runtime's Execution Engine +// +#define COR_E_EXECUTIONENGINE EMAKEHR(0x1506L) + + +// +// MessageId: COR_E_FIELDACCESS +// +// MessageText: +// +// Access to this field is denied. +// +#define COR_E_FIELDACCESS EMAKEHR(0x1507L) + + +// +// MessageId: COR_E_FORMAT +// +// MessageText: +// +// The format of one arguments does not meet the contract of the method. +// +#define COR_E_FORMAT EMAKEHR(0x1537L) + + +// +// MessageId: COR_E_BADIMAGEFORMAT +// +// MessageText: +// +// The format of DLL or executable being loaded is invalid. +// +#define COR_E_BADIMAGEFORMAT _HRESULT_TYPEDEF_(0x8007000BL) + + +// +// MessageId: COR_E_ASSEMBLYEXPECTED +// +// MessageText: +// +// The module was expected to contain an assembly manifest. +// +#define COR_E_ASSEMBLYEXPECTED EMAKEHR(0x1018L) + +// +// MessageId: COR_E_TYPEUNLOADED +// +// MessageText: +// +// The type had been unloaded. +// +#define COR_E_TYPEUNLOADED EMAKEHR(0x1013L) + +// +// MessageId: COR_E_INDEXOUTOFRANGE +// +// MessageText: +// +// Attempted to access an element within an array by using an index that is +// not within the bound of that array. +// +#define COR_E_INDEXOUTOFRANGE EMAKEHR(0x1508L) + + +// +// MessageId: COR_E_INSUFFICIENTMEMORY +// +// MessageText: +// +// Not enough memory was available for an operation. +// This may not be potentially fatal (vs. an OutOfMemoryException). +// +#define COR_E_INSUFFICIENTMEMORY EMAKEHR(0x153DL) + + +// +// MessageId: COR_E_RUNTIMEWRAPPED +// +// MessageText: +// +// An object that does not derive from System.Exception has been wrapped in a RuntimeWrappedException. +// +#define COR_E_RUNTIMEWRAPPED EMAKEHR(0x153EL) + + +// +// MessageId: COR_E_INVALIDCAST +// +// MessageText: +// +// Indicates a bad cast condition +// +#define COR_E_INVALIDCAST E_NOINTERFACE // 0x80004002 + + +// +// MessageId: COR_E_INVALIDOPERATION +// +// MessageText: +// +// An operation is not legal in the current state. +// +#define COR_E_INVALIDOPERATION EMAKEHR(0x1509L) + + +// +// MessageId: COR_E_INVALIDPROGRAM +// +// MessageText: +// +// A program contained invalid IL or bad metadata. Usually this is a compiler bug. +// +#define COR_E_INVALIDPROGRAM EMAKEHR(0x153AL) + + +// +// MessageId: COR_E_MEMBERACCESS +// +// MessageText: +// +// Access to this member is denied. +// +#define COR_E_MEMBERACCESS EMAKEHR(0x151AL) + + +// +// MessageId: COR_E_METHODACCESS +// +// MessageText: +// +// Access to this method is denied. +// +#define COR_E_METHODACCESS EMAKEHR(0x1510L) + + +// +// MessageId: COR_E_MISSINGFIELD +// +// MessageText: +// +// An attempt was made to dynamically access a field that does not exist. +// +#define COR_E_MISSINGFIELD EMAKEHR(0x1511L) + + +// +// MessageId: COR_E_MISSINGMANIFESTRESOURCE +// +// MessageText: +// +// An expected resource in the assembly manifest was missing. +// +#define COR_E_MISSINGMANIFESTRESOURCE EMAKEHR(0x1532L) + + +// +// MessageId: COR_E_MISSINGMEMBER +// +// MessageText: +// +// An attempt was made to dynamically invoke or access a field or method +// that does not exist. +// +#define COR_E_MISSINGMEMBER EMAKEHR(0x1512L) + + +// +// MessageId: COR_E_MISSINGMETHOD +// +// MessageText: +// +// An attempt was made to dynamically invoke a method that does not exist +// +#define COR_E_MISSINGMETHOD EMAKEHR(0x1513L) + + +// +// MessageId: COR_E_MISSINGSATELLITEASSEMBLY +// +// MessageText: +// +// An expected satellite assembly containing the ultimate fallback resources +// for a given culture was not found or couldn't be loaded. Setup problem? +// +#define COR_E_MISSINGSATELLITEASSEMBLY EMAKEHR(0x1536L) + + +// +// MessageId: COR_E_MULTICASTNOTSUPPORTED +// +// MessageText: +// +// Attempted to combine delegates that are not multicast +// +#define COR_E_MULTICASTNOTSUPPORTED EMAKEHR(0x1514L) + + +// +// MessageId: COR_E_NOTFINITENUMBER +// +// MessageText: +// +// Thrown if value (a floating point number) is either the not a number value (NaN) or +- infinity value +// VB needs this stuff +#define COR_E_NOTFINITENUMBER EMAKEHR(0x1528L) + + +// +// MessageId: COR_E_DUPLICATEWAITOBJECT +// +// MessageText: +// +// An object appears more than once in the wait objects array. +// +#define COR_E_DUPLICATEWAITOBJECT EMAKEHR(0x1529L) + + +// +// MessageId: COR_E_PLATFORMNOTSUPPORTED +// +// MessageText: +// +// The method is not supported on this platform +// +#define COR_E_PLATFORMNOTSUPPORTED EMAKEHR(0x1539L) + +// +// MessageId: COR_E_NOTSUPPORTED +// +// MessageText: +// +// The operation is not supported +// +#define COR_E_NOTSUPPORTED EMAKEHR(0x1515L) + +// +// MessageId: COR_E_NULLREFERENCE +// +// MessageText: +// +// Dereferencing a null reference. In general class libraries should not throw this +// +#define COR_E_NULLREFERENCE E_POINTER // 0x80004003 + + +// +// MessageId: COR_E_OUTOFMEMORY +// +// MessageText: +// +// The EE thows this exception when no more memory is avaible to continue execution +// +#define COR_E_OUTOFMEMORY E_OUTOFMEMORY // 0x8007000E + + +// +// MessageId: COR_E_OVERFLOW +// +// MessageText: +// +// An arithmetic, casting, or conversion operation overflowed or underflowed. +// +#define COR_E_OVERFLOW EMAKEHR(0x1516L) + + +// +// MessageId: COR_E_RANK +// +// MessageText: +// +// An array has the wrong number of dimensions for a particular operation. +// +#define COR_E_RANK EMAKEHR(0x1517L) + + +// +// MessageId: COR_E_REMOTING +// +// MessageText: +// +// An error relating to remoting occurred. +// +#define COR_E_REMOTING EMAKEHR(0x150BL) +#define COR_E_SERVER EMAKEHR(0x150EL) + +// +// MessageId: COR_E_SERVICEDCOMPONENT +// +// MessageText: +// +// An error relating to ServicedComponent occurred. +// +#define COR_E_SERVICEDCOMPONENT EMAKEHR(0x150FL) + + +// +// MessageId: COR_E_SECURITY +// +// MessageText: +// +// An error relating to security occured. +// +#define COR_E_SECURITY EMAKEHR(0x150AL) + + +// +// MessageID: COR_E_SERIALIZATION +// +// MessageText: +// +// An error relating to serialization has occurred. +// +#define COR_E_SERIALIZATION EMAKEHR(0x150CL) + + +// +// MessageId: COR_E_STACKOVERFLOW +// +// MessageText: +// +// Is raised by the EE when the execution stack overflows as it is attempting to ex +// +#define COR_E_STACKOVERFLOW HRESULT_FROM_WIN32(ERROR_STACK_OVERFLOW) // 0x800703E9 + + +// +// MessageId: COR_E_SYNCHRONIZATIONLOCK +// +// MessageText: +// +// Wait(), Notify() or NotifyAll() was called from an unsynchronized ** block of c +// +#define COR_E_SYNCHRONIZATIONLOCK EMAKEHR(0x1518L) + + +// +// MessageId: COR_E_SYSTEM +// +// MessageText: +// +// The base class for the runtime's "less serious" exceptions +// +#define COR_E_SYSTEM EMAKEHR(0x1501L) + + +// +// MessageId: COR_E_THREADABORTED +// +// MessageText: +// +// Thrown into a thread to cause it to abort. Not catchable. +// +#define COR_E_THREADABORTED EMAKEHR(0x1530L) + + +// +// MessageId: COR_E_OPERATIONCANCELED +// +// MessageText: +// +// The operation was cancelled. +// +#define COR_E_OPERATIONCANCELED EMAKEHR(0x153BL) + + +// +// MessageId: COR_E_THREADINTERRUPTED +// +// MessageText: +// +// Indicates that the thread was interrupted from a waiting state +// +#define COR_E_THREADINTERRUPTED EMAKEHR(0x1519L) + + +// +// MessageId: COR_E_THREADSTATE +// +// MessageText: +// +// Indicate that the Thread class is in an invalid state for the method call +// +#define COR_E_THREADSTATE EMAKEHR(0x1520L) + + +// +// MessageId: COR_E_THREADSTOP +// +// MessageText: +// +// Thrown into a thread to cause it to stop. This exception is typically not caught +// +#define COR_E_THREADSTOP EMAKEHR(0x1521L) + + +// +// MessageId: COR_E_THREADSTART +// +// MessageText: +// +// Indicate that a user thread fails to start. +// +#define COR_E_THREADSTART EMAKEHR(0x1525L) + + +// +// MessageId: COR_E_TYPEINITIALIZATION +// +// MessageText: +// +// An exception was thrown by a type's initializer (.cctor). +// +#define COR_E_TYPEINITIALIZATION EMAKEHR(0x1534L) + + +// +// MessageId: COR_E_TYPELOAD +// +// MessageText: +// +// Could not find or load a specific type (class, enum, etc). +// +#define COR_E_TYPELOAD EMAKEHR(0x1522L) + + +// +// MessageId: COR_E_ENTRYPOINTNOTFOUND +// +// MessageText: +// +// Could not find the specified DllImport entry point +// +#define COR_E_ENTRYPOINTNOTFOUND EMAKEHR(0x1523L) + + +// +// MessageId: COR_E_DLLNOTFOUND +// +// MessageText: +// +// Could not find the specified DllImport DLL. +// +#define COR_E_DLLNOTFOUND EMAKEHR(0x1524L) + + +// +// MessageId: COR_E_UNAUTHORIZEDACCESS +// +// MessageText: +// +// Access is denied. +// +#define COR_E_UNAUTHORIZEDACCESS E_ACCESSDENIED // 0x80070005 + + +// +// MessageId: COR_E_VERIFICATION +// +// MessageText: +// +// A verification failure occurred +// +#define COR_E_VERIFICATION EMAKEHR(0x150DL) + + +// +// MessageId: COR_E_INVALIDCOMOBJECT +// +// MessageText: +// +// An invalid __ComObject has been used. +// +#define COR_E_INVALIDCOMOBJECT EMAKEHR(0x1527L) + + +// +// MessageId: COR_E_SEMAPHOREFULL +// +// MessageText: +// +// Adding the given count to the semaphore would cause it to exceed its maximum count. +// +#define COR_E_SEMAPHOREFULL EMAKEHR(0x152BL) + + +// +// MessageId: COR_E_WAITHANDLECANNOTBEOPENED +// +// MessageText: +// +// No Semaphore of the given name exists. +// +#define COR_E_WAITHANDLECANNOTBEOPENED EMAKEHR(0x152CL) + +// +// MessageId: COR_E_ABANDONEDMUTEX +// +// MessageText: +// +// The wait completed due to an abandoned mutex. +// +#define COR_E_ABANDONEDMUTEX EMAKEHR(0x152DL) + +// +// MessageId: COR_E_MARSHALDIRECTIVE +// +// MessageText: +// +// The marshaling directives are invalid. +// +#define COR_E_MARSHALDIRECTIVE EMAKEHR(0x1535L) + + +// +// MessageId: COR_E_INVALIDOLEVARIANTTYPE +// +// MessageText: +// +// The type of an OLE variant that was passed into the runtime is invalid. +// +#define COR_E_INVALIDOLEVARIANTTYPE EMAKEHR(0x1531L) + + +// +// MessageId: COR_E_SAFEARRAYTYPEMISMATCH +// +// MessageText: +// +// A mismatch has occured between the runtime type of the array and the +// sub type recorded in the metadata. +// +#define COR_E_SAFEARRAYTYPEMISMATCH EMAKEHR(0x1533L) + + +// +// MessageId: COR_E_SAFEARRAYRANKMISMATCH +// +// MessageText: +// +// A mismatch has occured between the runtime rank of the array and the +// rank recorded in the metadata. +// +#define COR_E_SAFEARRAYRANKMISMATCH EMAKEHR(0x1538L) + +// +// MessageId: COR_E_DATAMISALIGNED +// +// MessageText: +// +// A datatype misalignment was detected in a load or store instruction. +// +#define COR_E_DATAMISALIGNED EMAKEHR(0x1541L) + + +// +// MessageId: COR_E_TARGETPARAMCOUNT +// +// MessageText: +// +// There was a mismatch between number of arguments provided and the number expected +// +#define COR_E_TARGETPARAMCOUNT _HRESULT_TYPEDEF_(0x8002000EL) // DISP_E_BADPARAMCOUNT + + +// +// MessageId: COR_E_AMBIGUOUSMATCH +// +// MessageText: +// +// While late binding to a method via reflection, could not resolve between +// multiple overloads of a method. +// +#define COR_E_AMBIGUOUSMATCH _HRESULT_TYPEDEF_(0x8000211DL) + + +// +// MessageId: COR_E_INVALIDFILTERCRITERIA +// +// MessageText: +// +// The given filter criteria does not match the filter contract. +// +#define COR_E_INVALIDFILTERCRITERIA EMAKEHR(0x1601L) + + +// +// MessageId: COR_E_REFLECTIONTYPELOAD +// +// MessageText: +// +// Could not find or load a specific class that was requested through Reflection +// +#define COR_E_REFLECTIONTYPELOAD EMAKEHR(0x1602L) + + +// +// MessageId: COR_E_TARGET +// +// MessageText: +// +// - If you attempt to invoke a non-static method with a null Object - If you atte +// +#define COR_E_TARGET EMAKEHR(0x1603L) + + +// +// MessageId: COR_E_TARGETINVOCATION +// +// MessageText: +// +// If the method called throws an exception +// +#define COR_E_TARGETINVOCATION EMAKEHR(0x1604L) + + +// +// MessageId: COR_E_CUSTOMATTRIBUTEFORMAT +// +// MessageText: +// +// If the binary format of a custom attribute is invalid. +// +#define COR_E_CUSTOMATTRIBUTEFORMAT EMAKEHR(0x1605L) + + +// +// MessageId: COR_E_ENDOFSTREAM +// +// MessageText: +// +// Thrown when the End of file is reached +// +#define COR_E_ENDOFSTREAM HRESULT_FROM_WIN32(ERROR_HANDLE_EOF) + + +// +// MessageId: COR_E_FILELOAD +// +// MessageText: +// +// +// +#define COR_E_FILELOAD EMAKEHR(0x1621L) + + +// +// MessageId: COR_E_FILENOTFOUND +// +// MessageText: +// +// +// +#define COR_E_FILENOTFOUND HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) + +// +// MessageId: ERROR_BAD_PATHNAME +// +// MessageText: +// +// The specified path is invalid. +// +#define COR_E_BAD_PATHNAME HRESULT_FROM_WIN32(ERROR_BAD_PATHNAME) + +// +// MessageId: COR_E_IO +// +// MessageText: +// +// Some sort of I/O error. +// +#define COR_E_IO EMAKEHR(0x1620L) + + +// +// MessageId: COR_E_DIRECTORYNOTFOUND +// +// MessageText: +// +// The specified path couldn't be found. +// +#define COR_E_DIRECTORYNOTFOUND HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND) + + +// +// MessageId: COR_E_PATHTOOLONG +// +// MessageText: +// +// The specified path was too long. +// +#define COR_E_PATHTOOLONG HRESULT_FROM_WIN32(ERROR_FILENAME_EXCED_RANGE) + + +// +// MessageId: COR_E_OBJECTDISPOSED +// +// MessageText: +// +// The object has already been disposed. +// +#define COR_E_OBJECTDISPOSED EMAKEHR(0x1622L) + + +// +// MessageId: COR_E_FAILFAST +// +// MessageText: +// +// Runtime operation halted by call to System.Environment.FailFast(). +// +#define COR_E_FAILFAST EMAKEHR(0x1623L) + + +// +// MessageId: COR_E_HOSTPROTECTION +// +// MessageText: +// +// Attempted to perform an operation that was forbidden by the host. +// +#define COR_E_HOSTPROTECTION EMAKEHR(0x1640L) + + +// +// MessageId: COR_E_ILLEGAL_REENTRANCY +// +// MessageText: +// +// Attempted to call into managed code when executing inside a low level extensibility point. +// +#define COR_E_ILLEGAL_REENTRANCY EMAKEHR(0x1641L) + + +//**** Shim errors 1700 - 1750 +// +#define CLR_E_SHIM_RUNTIMELOAD EMAKEHR(0x1700) // Failed to load the runtime +#define CLR_E_SHIM_RUNTIMEEXPORT EMAKEHR(0x1701) // Failed to find a required export in the runtime +#define CLR_E_SHIM_INSTALLROOT EMAKEHR(0x1702) // Install root is not defined +#define CLR_E_SHIM_INSTALLCOMP EMAKEHR(0x1703) // Expected component of the runtime is not available + +//**** Verifier Errors 1800 - 18FF +// See src/dlls/mscorrc/mscorrc.rc for a description of each error + +#define VER_E_HRESULT EMAKEHR(0x1801) +#define VER_E_OFFSET EMAKEHR(0x1802) +#define VER_E_OPCODE EMAKEHR(0x1803) +#define VER_E_OPERAND EMAKEHR(0x1804) +#define VER_E_TOKEN EMAKEHR(0x1805) +#define VER_E_EXCEPT EMAKEHR(0x1806) +#define VER_E_STACK_SLOT EMAKEHR(0x1807) +#define VER_E_LOC EMAKEHR(0x1808) +#define VER_E_ARG EMAKEHR(0x1809) +#define VER_E_FOUND EMAKEHR(0x180A) +#define VER_E_EXPECTED EMAKEHR(0x180B) +#define VER_E_LOC_BYNAME EMAKEHR(0x180C) + +#define VER_E_UNKNOWN_OPCODE EMAKEHR(0x1810) +#define VER_E_SIG_CALLCONV EMAKEHR(0x1811) +#define VER_E_SIG_ELEMTYPE EMAKEHR(0x1812) + +#define VER_E_RET_SIG EMAKEHR(0x1814) +#define VER_E_FIELD_SIG EMAKEHR(0x1815) + +#define VER_E_INTERNAL EMAKEHR(0x1818) +#define VER_E_STACK_TOO_LARGE EMAKEHR(0x1819) +#define VER_E_ARRAY_NAME_LONG EMAKEHR(0x181A) + +#define VER_E_FALLTHRU EMAKEHR(0x1820) +#define VER_E_TRY_GTEQ_END EMAKEHR(0x1821) +#define VER_E_TRYEND_GT_CS EMAKEHR(0x1822) +#define VER_E_HND_GTEQ_END EMAKEHR(0x1823) +#define VER_E_HNDEND_GT_CS EMAKEHR(0x1824) +#define VER_E_FLT_GTEQ_CS EMAKEHR(0x1825) +#define VER_E_TRY_START EMAKEHR(0x1826) +#define VER_E_HND_START EMAKEHR(0x1827) +#define VER_E_FLT_START EMAKEHR(0x1828) +#define VER_E_TRY_OVERLAP EMAKEHR(0x1829) +#define VER_E_TRY_EQ_HND_FIL EMAKEHR(0x182A) +#define VER_E_TRY_SHARE_FIN_FAL EMAKEHR(0x182B) +#define VER_E_HND_OVERLAP EMAKEHR(0x182C) +#define VER_E_HND_EQ EMAKEHR(0x182D) +#define VER_E_FIL_OVERLAP EMAKEHR(0x182E) +#define VER_E_FIL_EQ EMAKEHR(0x182F) +#define VER_E_FIL_CONT_TRY EMAKEHR(0x1830) +#define VER_E_FIL_CONT_HND EMAKEHR(0x1831) +#define VER_E_FIL_CONT_FIL EMAKEHR(0x1832) +#define VER_E_FIL_GTEQ_CS EMAKEHR(0x1833) +#define VER_E_FIL_START EMAKEHR(0x1834) +#define VER_E_FALLTHRU_EXCEP EMAKEHR(0x1835) +#define VER_E_FALLTHRU_INTO_HND EMAKEHR(0x1836) +#define VER_E_FALLTHRU_INTO_FIL EMAKEHR(0x1837) +#define VER_E_LEAVE EMAKEHR(0x1838) +#define VER_E_RETHROW EMAKEHR(0x1839) +#define VER_E_ENDFINALLY EMAKEHR(0x183A) +#define VER_E_ENDFILTER EMAKEHR(0x183B) +#define VER_E_ENDFILTER_MISSING EMAKEHR(0x183C) +#define VER_E_BR_INTO_TRY EMAKEHR(0x183D) +#define VER_E_BR_INTO_HND EMAKEHR(0x183E) +#define VER_E_BR_INTO_FIL EMAKEHR(0x183F) +#define VER_E_BR_OUTOF_TRY EMAKEHR(0x1840) +#define VER_E_BR_OUTOF_HND EMAKEHR(0x1841) +#define VER_E_BR_OUTOF_FIL EMAKEHR(0x1842) +#define VER_E_BR_OUTOF_FIN EMAKEHR(0x1843) +#define VER_E_RET_FROM_TRY EMAKEHR(0x1844) +#define VER_E_RET_FROM_HND EMAKEHR(0x1845) +#define VER_E_RET_FROM_FIL EMAKEHR(0x1846) +#define VER_E_BAD_JMP_TARGET EMAKEHR(0x1847) +#define VER_E_PATH_LOC EMAKEHR(0x1848) +#define VER_E_PATH_THIS EMAKEHR(0x1849) +#define VER_E_PATH_STACK EMAKEHR(0x184A) +#define VER_E_PATH_STACK_DEPTH EMAKEHR(0x184B) +#define VER_E_THIS EMAKEHR(0x184C) +#define VER_E_THIS_UNINIT_EXCEP EMAKEHR(0x184D) +#define VER_E_THIS_UNINIT_STORE EMAKEHR(0x184E) +#define VER_E_THIS_UNINIT_RET EMAKEHR(0x184F) +#define VER_E_THIS_UNINIT_V_RET EMAKEHR(0x1850) +#define VER_E_THIS_UNINIT_BR EMAKEHR(0x1851) +#define VER_E_LDFTN_CTOR EMAKEHR(0x1852) +#define VER_E_STACK_NOT_EQ EMAKEHR(0x1853) +#define VER_E_STACK_UNEXPECTED EMAKEHR(0x1854) +#define VER_E_STACK_EXCEPTION EMAKEHR(0x1855) +#define VER_E_STACK_OVERFLOW EMAKEHR(0x1856) +#define VER_E_STACK_UNDERFLOW EMAKEHR(0x1857) +#define VER_E_STACK_EMPTY EMAKEHR(0x1858) +#define VER_E_STACK_UNINIT EMAKEHR(0x1859) +#define VER_E_STACK_I_I4_I8 EMAKEHR(0x185A) +#define VER_E_STACK_R_R4_R8 EMAKEHR(0x185B) +#define VER_E_STACK_NO_R_I8 EMAKEHR(0x185C) +#define VER_E_STACK_NUMERIC EMAKEHR(0x185D) +#define VER_E_STACK_OBJREF EMAKEHR(0x185E) +#define VER_E_STACK_P_OBJREF EMAKEHR(0x185F) +#define VER_E_STACK_BYREF EMAKEHR(0x1860) +#define VER_E_STACK_METHOD EMAKEHR(0x1861) +#define VER_E_STACK_ARRAY_SD EMAKEHR(0x1862) +#define VER_E_STACK_VALCLASS EMAKEHR(0x1863) +#define VER_E_STACK_P_VALCLASS EMAKEHR(0x1864) +#define VER_E_STACK_NO_VALCLASS EMAKEHR(0x1865) +#define VER_E_LOC_DEAD EMAKEHR(0x1866) +#define VER_E_LOC_NUM EMAKEHR(0x1867) +#define VER_E_ARG_NUM EMAKEHR(0x1868) +#define VER_E_TOKEN_RESOLVE EMAKEHR(0x1869) +#define VER_E_TOKEN_TYPE EMAKEHR(0x186A) +#define VER_E_TOKEN_TYPE_MEMBER EMAKEHR(0x186B) +#define VER_E_TOKEN_TYPE_FIELD EMAKEHR(0x186C) +#define VER_E_TOKEN_TYPE_SIG EMAKEHR(0x186D) +#define VER_E_UNVERIFIABLE EMAKEHR(0x186E) +#define VER_E_LDSTR_OPERAND EMAKEHR(0x186F) +#define VER_E_RET_PTR_TO_STACK EMAKEHR(0x1870) +#define VER_E_RET_VOID EMAKEHR(0x1871) +#define VER_E_RET_MISSING EMAKEHR(0x1872) +#define VER_E_RET_EMPTY EMAKEHR(0x1873) +#define VER_E_RET_UNINIT EMAKEHR(0x1874) +#define VER_E_ARRAY_ACCESS EMAKEHR(0x1875) +#define VER_E_ARRAY_V_STORE EMAKEHR(0x1876) +#define VER_E_ARRAY_SD EMAKEHR(0x1877) +#define VER_E_ARRAY_SD_PTR EMAKEHR(0x1878) +#define VER_E_ARRAY_FIELD EMAKEHR(0x1879) +#define VER_E_ARGLIST EMAKEHR(0x187A) +#define VER_E_VALCLASS EMAKEHR(0x187B) +#define VER_E_METHOD_ACCESS EMAKEHR(0x187C) +#define VER_E_FIELD_ACCESS EMAKEHR(0x187D) +#define VER_E_DEAD EMAKEHR(0x187E) +#define VER_E_FIELD_STATIC EMAKEHR(0x187F) +#define VER_E_FIELD_NO_STATIC EMAKEHR(0x1880) +#define VER_E_ADDR EMAKEHR(0x1881) +#define VER_E_ADDR_BYREF EMAKEHR(0x1882) +#define VER_E_ADDR_LITERAL EMAKEHR(0x1883) +#define VER_E_INITONLY EMAKEHR(0x1884) +#define VER_E_THROW EMAKEHR(0x1885) +#define VER_E_CALLVIRT_VALCLASS EMAKEHR(0x1886) +#define VER_E_CALL_SIG EMAKEHR(0x1887) +#define VER_E_CALL_STATIC EMAKEHR(0x1888) +#define VER_E_CTOR EMAKEHR(0x1889) +#define VER_E_CTOR_VIRT EMAKEHR(0x188A) +#define VER_E_CTOR_OR_SUPER EMAKEHR(0x188B) +#define VER_E_CTOR_MUL_INIT EMAKEHR(0x188C) +#define VER_E_SIG EMAKEHR(0x188D) +#define VER_E_SIG_ARRAY EMAKEHR(0x188E) +#define VER_E_SIG_ARRAY_PTR EMAKEHR(0x188F) +#define VER_E_SIG_ARRAY_BYREF EMAKEHR(0x1890) +#define VER_E_SIG_ELEM_PTR EMAKEHR(0x1891) +#define VER_E_SIG_VARARG EMAKEHR(0x1892) +#define VER_E_SIG_VOID EMAKEHR(0x1893) +#define VER_E_SIG_BYREF_BYREF EMAKEHR(0x1894) +#define VER_E_CODE_SIZE_ZERO EMAKEHR(0x1896) +#define VER_E_BAD_VARARG EMAKEHR(0x1897) +#define VER_E_TAIL_CALL EMAKEHR(0x1898) +#define VER_E_TAIL_BYREF EMAKEHR(0x1899) +#define VER_E_TAIL_RET EMAKEHR(0x189A) +#define VER_E_TAIL_RET_VOID EMAKEHR(0x189B) +#define VER_E_TAIL_RET_TYPE EMAKEHR(0x189C) +#define VER_E_TAIL_STACK_EMPTY EMAKEHR(0x189D) +#define VER_E_METHOD_END EMAKEHR(0x189E) +#define VER_E_BAD_BRANCH EMAKEHR(0x189F) +#define VER_E_FIN_OVERLAP EMAKEHR(0x18A0) +#define VER_E_LEXICAL_NESTING EMAKEHR(0x18A1) +#define VER_E_VOLATILE EMAKEHR(0x18A2) +#define VER_E_UNALIGNED EMAKEHR(0x18A3) +#define VER_E_INNERMOST_FIRST EMAKEHR(0x18A4) +#define VER_E_CALLI_VIRTUAL EMAKEHR(0x18A5) +#define VER_E_CALL_ABSTRACT EMAKEHR(0x18A6) +#define VER_E_STACK_UNEXP_ARRAY EMAKEHR(0x18A7) +#define VER_E_NOT_IN_GC_HEAP EMAKEHR(0x18A8) +#define VER_E_TRY_N_EMPTY_STACK EMAKEHR(0x18A9) +#define VER_E_DLGT_CTOR EMAKEHR(0x18AA) +#define VER_E_DLGT_BB EMAKEHR(0x18AB) +#define VER_E_DLGT_PATTERN EMAKEHR(0x18AC) +#define VER_E_DLGT_LDFTN EMAKEHR(0x18AD) +#define VER_E_FTN_ABSTRACT EMAKEHR(0x18AE) +#define VER_E_SIG_C_VC EMAKEHR(0x18AF) +#define VER_E_SIG_VC_C EMAKEHR(0x18B0) +#define VER_E_BOX_PTR_TO_STACK EMAKEHR(0x18B1) +#define VER_E_SIG_BYREF_TB_AH EMAKEHR(0x18B2) +#define VER_E_SIG_ARRAY_TB_AH EMAKEHR(0x18B3) +#define VER_E_ENDFILTER_STACK EMAKEHR(0x18B4) +#define VER_E_DLGT_SIG_I EMAKEHR(0x18B5) +#define VER_E_DLGT_SIG_O EMAKEHR(0x18B6) +#define VER_E_RA_PTR_TO_STACK EMAKEHR(0x18B7) +#define VER_E_CATCH_VALUE_TYPE EMAKEHR(0x18B8) +#define VER_E_CATCH_BYREF EMAKEHR(0x18B9) +#define VER_E_FIL_PRECEED_HND EMAKEHR(0x18BA) +#define VER_E_LDVIRTFTN_STATIC EMAKEHR(0x18BB) +#define VER_E_CALLVIRT_STATIC EMAKEHR(0x18BC) +#define VER_E_INITLOCALS EMAKEHR(0x18BD) +#define VER_E_BR_TO_EXCEPTION EMAKEHR(0x18BE) +#define VER_E_CALL_CTOR EMAKEHR(0x18BF) + +//@GENERICSVER: new generics related error messages +#define VER_E_VALCLASS_OBJREF_VAR EMAKEHR(0x18C0) +#define VER_E_STACK_P_VALCLASS_OBJREF_VAR EMAKEHR(0x18C1) +#define VER_E_SIG_VAR_PARAM EMAKEHR(0x18C2) +#define VER_E_SIG_MVAR_PARAM EMAKEHR(0x18C3) +#define VER_E_SIG_VAR_ARG EMAKEHR(0x18C4) +#define VER_E_SIG_MVAR_ARG EMAKEHR(0x18C5) +#define VER_E_SIG_GENERICINST EMAKEHR(0x18C6) +#define VER_E_SIG_METHOD_INST EMAKEHR(0x18C7) +#define VER_E_SIG_METHOD_PARENT_INST EMAKEHR(0x18C8) +#define VER_E_SIG_FIELD_PARENT_INST EMAKEHR(0x18C9) +#define VER_E_CALLCONV_NOT_GENERICINST EMAKEHR(0x18CA) +#define VER_E_TOKEN_BAD_METHOD_SPEC EMAKEHR(0x18CB) +#define VER_E_BAD_READONLY_PREFIX EMAKEHR(0x18CC) +#define VER_E_BAD_CONSTRAINED_PREFIX EMAKEHR(0x18CD) +//these two are actually raised by the EE - should they appear elsewhere? +#define VER_E_CIRCULAR_VAR_CONSTRAINTS EMAKEHR(0x18CE) +#define VER_E_CIRCULAR_MVAR_CONSTRAINTS EMAKEHR(0x18CF) +//these are used by the new peverify +#define VER_E_UNSATISFIED_METHOD_INST EMAKEHR(0x18D0) +#define VER_E_UNSATISFIED_METHOD_PARENT_INST EMAKEHR(0x18D1) +#define VER_E_UNSATISFIED_FIELD_PARENT_INST EMAKEHR(0x18D2) +#define VER_E_UNSATISFIED_BOX_OPERAND EMAKEHR(0x18D3) +#define VER_E_CONSTRAINED_CALL_WITH_NON_BYREF_THIS EMAKEHR(0x18D4) +#define VER_E_CONSTRAINED_OF_NON_VARIABLE_TYPE EMAKEHR(0x18D5) +#define VER_E_READONLY_UNEXPECTED_CALLEE EMAKEHR(0x18D6) +#define VER_E_READONLY_ILLEGAL_WRITE EMAKEHR(0x18D7) +#define VER_E_READONLY_IN_MKREFANY EMAKEHR(0x18D8) +#define VER_E_UNALIGNED_ALIGNMENT EMAKEHR(0x18D9) +#define VER_E_TAILCALL_INSIDE_EH EMAKEHR(0x18DA) +#define VER_E_BACKWARD_BRANCH EMAKEHR(0x18DB) +#define VER_E_CALL_TO_VTYPE_BASE EMAKEHR(0x18DC) +#define VER_E_NEWOBJ_OF_ABSTRACT_CLASS EMAKEHR(0x18DD) +#define VER_E_UNMANAGED_POINTER EMAKEHR(0x18DE) +#define VER_E_LDFTN_NON_FINAL_VIRTUAL EMAKEHR(0x18DF) +#define VER_E_FIELD_OVERLAP EMAKEHR(0x18E0) +#define VER_E_THIS_MISMATCH EMAKEHR(0x18E1) +#define VER_E_STACK_I_I4 EMAKEHR(0x18E2) + +#define VER_E_BAD_PE EMAKEHR(0x18F0) +#define VER_E_BAD_MD EMAKEHR(0x18F1) +#define VER_E_BAD_APPDOMAIN EMAKEHR(0x18F2) +#define VER_E_TYPELOAD EMAKEHR(0x18F3) +#define VER_E_PE_LOAD EMAKEHR(0x18F4) +#define VER_E_WRITE_RVA_STATIC EMAKEHR(0x18F5) + + +// +// ATTENTION: Range 0x1900 - 0x1AFF is reserved for Framework errors +// Range 0x1B00 - 0x1BFF is reserved for MD Validator errors (see above VLDTR_E_...) +// + +// System.Xml +#define COR_E_Xml EMAKEHR(0x1940) +#define COR_E_XmlSchema EMAKEHR(0x1941) +#define COR_E_XmlXslt EMAKEHR(0x1942) +#define COR_E_XmlXPath EMAKEHR(0x1943) +#define COR_E_XmlQuery EMAKEHR(0x1944) + +// System.Data DataSet +#define COR_E_Data EMAKEHR(0x1920) +#define COR_E_DataDeletedRowInaccessible EMAKEHR(0x1921) +#define COR_E_DataDuplicateName EMAKEHR(0x1922) +#define COR_E_DataInRowChangingEvent EMAKEHR(0x1923) +#define COR_E_DataInvalidConstraint EMAKEHR(0x1924) +#define COR_E_DataMissingPrimaryKey EMAKEHR(0x1925) +#define COR_E_DataNoNullAllowed EMAKEHR(0x1926) +#define COR_E_DataReadOnly EMAKEHR(0x1927) +#define COR_E_DataRowNotInTable EMAKEHR(0x1928) +#define COR_E_DataVersionNotFound EMAKEHR(0x1929) +#define COR_E_DataConstraint EMAKEHR(0x192A) +#define COR_E_StrongTyping EMAKEHR(0x192B) + +// System.Data Managed Providers +#define COR_E_SqlType EMAKEHR(0x1930) +#define COR_E_SqlNullValue EMAKEHR(0x1931) +#define COR_E_SqlTruncate EMAKEHR(0x1932) +#define COR_E_AdapterMapping EMAKEHR(0x1933) +#define COR_E_DataAdapter EMAKEHR(0x1934) +#define COR_E_DBConcurrency EMAKEHR(0x1935) +#define COR_E_OperationAborted EMAKEHR(0x1936) +#define COR_E_InvalidUdt EMAKEHR(0x1937) + +#define COR_E_SqlException EMAKEHR(0x1904) // System.Data.SqlClient.SqlClientException +#define COR_E_OdbcException EMAKEHR(0x1937) // System.Data.Odbc.OdbcException +#define COR_E_OracleException EMAKEHR(0x1938) // System.Data.OracleClient.OracleException + + +//**** More debugger error 1C00 - 1CFF +// +#define CORDBG_E_THREAD_NOT_SCHEDULED EMAKEHR(0x1C00) // Thread is not scheduled. Thus we may not have OSThreadId, handle, or context +#define CORDBG_E_HANDLE_HAS_BEEN_DISPOSED EMAKEHR(0x1C01) // Handle has been disposed. +#define CORDBG_E_NONINTERCEPTABLE_EXCEPTION EMAKEHR(0x1C02) // Cant intercept this exception. +#define CORDBG_E_CANT_UNWIND_ABOVE_CALLBACK EMAKEHR(0x1C03) // When intercepting an exception, cannot intercept above the current frame. +#define CORDBG_E_INTERCEPT_FRAME_ALREADY_SET EMAKEHR(0x1C04) // The intercept frame for this exception has already been set. +#define CORDBG_E_NO_NATIVE_PATCH_AT_ADDR EMAKEHR(0x1C05) // there's no native patch at the given address. +#define CORDBG_E_MUST_BE_INTEROP_DEBUGGING EMAKEHR(0x1C06) // This API is only allowed when interop debugging. +#define CORDBG_E_NATIVE_PATCH_ALREADY_AT_ADDR EMAKEHR(0x1C07) // There's already a native patch at the address +#define CORDBG_E_TIMEOUT EMAKEHR(0x1C08) // a wait timed out .. likely an indication of deadlock. +#define CORDBG_E_CANT_CALL_ON_THIS_THREAD EMAKEHR(0x1C09) // Can't use the API on this thread. +#define CORDBG_E_ENC_INFOLESS_METHOD EMAKEHR(0x1C0A) // Method was not JITed in EnC mode +#define CORDBG_E_ENC_NESTED_HANLDERS EMAKEHR(0x1C0B) // Frame cant be updated due to change in max nesting of handlers +#define CORDBG_E_ENC_IN_FUNCLET EMAKEHR(0x1C0C) // Method is in a callable handler/filter. Cant grow stack +#define CORDBG_E_ENC_LOCALLOC EMAKEHR(0x1C0D) // Frame cant be updated due to localloc +#define CORDBG_E_ENC_EDIT_NOT_SUPPORTED EMAKEHR(0x1C0E) // Attempt to perform unsupported edit +#define CORDBG_E_FEABORT_DELAYED_UNTIL_THREAD_RESUMED EMAKEHR(0x1C0F) // Attempt to func eval abort on a suspended thread. +#define CORDBG_E_NOTREADY EMAKEHR(0x1C10) // The LS is not in a good spot to perform the requested operation. +#define CORDBG_E_CANNOT_RESOLVE_ASSEMBLY EMAKEHR(0x1c11) // We failed to resolve assembly given an AssemblyRef token. Assembly may be not loaded yet or not a valid token. +#define CORDBG_E_MUST_BE_IN_LOAD_MODULE EMAKEHR(0x1C12) // Must be in context of LoadModule callback to perform requested operation +#define CORDBG_E_CANNOT_BE_ON_ATTACH EMAKEHR(0x1C13) // Requested operation cannot be performed during an attach operation +#define CORDBG_S_NOT_ALL_BITS_SET SMAKEHR(0x1C13) // Not all bits specified were successfully applied +#define CORDBG_E_NGEN_NOT_SUPPORTED EMAKEHR(0x1C14) // NGEN must be supported to perform the requested operation +#define CORDBG_E_ILLEGAL_SHUTDOWN_ORDER EMAKEHR(0x1C15) // Trying to shutdown out of order. +#define CORDBG_E_CANNOT_DEBUG_FIBER_PROCESS EMAKEHR(0x1C16) // For Whidbey, we don't support debugging fiber mode managed process +#define CORDBG_E_MUST_BE_IN_CREATE_PROCESS EMAKEHR(0x1C17) // Must be in context of CreateProcess callback to perform requested operation +#define CORDBG_E_DETACH_FAILED_OUTSTANDING_EVALS EMAKEHR(0x1C18) // All outstanding func-evals have not completed, detaching is not allowed at this time. +#define CORDBG_E_DETACH_FAILED_OUTSTANDING_STEPPERS EMAKEHR(0x1C19) // All outstanding steppers have not been closed, detaching is not allowed at this time. +#define CORDBG_E_CANT_INTEROP_STEP_OUT EMAKEHR(0x1C20) // Can't have an ICorDebugStepper do a native step-out. +#define CORDBG_E_DETACH_FAILED_OUTSTANDING_BREAKPOINTS EMAKEHR(0x1C21) // All outstanding breakpoints have not been closed, detaching is not allowed at this time. +#define CORDBG_E_ILLEGAL_IN_STACK_OVERFLOW EMAKEHR(0x1c22) // the operation is illegal because of a stackoverflow. +#define CORDBG_E_ILLEGAL_AT_GC_UNSAFE_POINT EMAKEHR(0x1c23) // The operation failed because it's a GC unsafe point. +#define CORDBG_E_ILLEGAL_IN_PROLOG EMAKEHR(0x1c24) // The operation failed because the thread is in the prolog +#define CORDBG_E_ILLEGAL_IN_NATIVE_CODE EMAKEHR(0x1c25) // The operation failed because the thread is in native code +#define CORDBG_E_ILLEGAL_IN_OPTIMIZED_CODE EMAKEHR(0x1c26) // The operation failed because the thread is in optimized code. +#define CORDBG_E_MINIDUMP_UNSUPPORTED EMAKEHR(0x1c27) // +#define CORDBG_E_APPDOMAIN_MISMATCH EMAKEHR(0x1c28) // A supplied object or type belongs to the wrong AppDomain +#define CORDBG_E_CONTEXT_UNVAILABLE EMAKEHR(0x1c29) // The thread's context is not available. +#define CORDBG_E_UNCOMPATIBLE_PLATFORMS EMAKEHR(0x1c30) // The operation failed because debuggee and debugger are on incompatible platform +#define CORDBG_E_DEBUGGING_DISABLED EMAKEHR(0x1c31) // The operation failed because the debugging has been disabled +#define CORDBG_E_DETACH_FAILED_ON_ENC EMAKEHR(0x1c32) // Detach is illegal after a module has been EnCed. +#define CORDBG_E_CURRENT_EXCEPTION_IS_OUTSIDE_CURRENT_EXECUTION_SCOPE EMAKEHR(0x1c33) // Interception of the current exception is not legal +#define CORDBG_E_HELPER_MAY_DEADLOCK EMAKEHR(0x1c34) // Helper thread can not safely run code. The opereration may work at a later time. + + + +//**** PE Format validation errors 1D00 - 1DFF +// +#define PEFMT_E_NO_CONTENTS EMAKEHR(0x1D00) // File is empty +#define PEFMT_E_NO_NTHEADERS EMAKEHR(0x1D01) // File has no NT headers +#define PEFMT_E_64BIT EMAKEHR(0x1D02) // File is PE32+ +#define PEFMT_E_NO_CORHEADER EMAKEHR(0x1D03) // File has no COR header +#define PEFMT_E_NOT_ILONLY EMAKEHR(0x1D04) // Flag IL_ONLY not set +#define PEFMT_E_IMPORT_DLLS EMAKEHR(0x1D05) // Bad import DLLs +#define PEFMT_E_EXE_NOENTRYPOINT EMAKEHR(0x1D06) // EXE file has no mgd entry point +#define PEFMT_E_BASE_RELOCS EMAKEHR(0x1D07) // Bad base relocations +#define PEFMT_E_ENTRYPOINT EMAKEHR(0x1D08) // Bad managed entry point +#define PEFMT_E_ZERO_SIZEOFCODE EMAKEHR(0x1D09) // OptHeader.SizeOfCode==0 +#define PEFMT_E_BAD_CORHEADER EMAKEHR(0x1D0A) // File has invalid COR header + +//**** CLR Optimization service 1E00 - 1EFF +// +#define CLR_OPTSVC_E_CONTROLLER_INTERRUPT EMAKEHR(0x1E00) // Service controller interrupted work + + +//**** CLR Optimization service 1F00 - 1FFF +// +#define NGEN_FAILED_GET_DEPENDENCIES EMAKEHR(0x1F00) // Service manager failed to get ICorSvcDependencies interface +#define NGEN_FAILED_NATIVE_IMAGE_DELETE EMAKEHR(0x1F01) // Failed to delete native image + + + + + +#endif // __COMMON_LANGUAGE_RUNTIME_HRESULTS__ diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/cvconst.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/cvconst.h new file mode 100644 index 0000000..5ad1f7e --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/cvconst.h @@ -0,0 +1,4093 @@ +// cvconst.h - codeview constant definitions +//----------------------------------------------------------------- +// +// Copyright Microsoft Corporation. All Rights Reserved. +// +//--------------------------------------------------------------- +#ifndef _CVCONST_H_ +#define _CVCONST_H_ + + + +// Enumeration for function call type + + +typedef enum CV_call_e +{ + CV_CALL_NEAR_C = 0x00, // near right to left push, caller pops stack + CV_CALL_FAR_C = 0x01, // far right to left push, caller pops stack + CV_CALL_NEAR_PASCAL = 0x02, // near left to right push, callee pops stack + CV_CALL_FAR_PASCAL = 0x03, // far left to right push, callee pops stack + CV_CALL_NEAR_FAST = 0x04, // near left to right push with regs, callee pops stack + CV_CALL_FAR_FAST = 0x05, // far left to right push with regs, callee pops stack + CV_CALL_SKIPPED = 0x06, // skipped (unused) call index + CV_CALL_NEAR_STD = 0x07, // near standard call + CV_CALL_FAR_STD = 0x08, // far standard call + CV_CALL_NEAR_SYS = 0x09, // near sys call + CV_CALL_FAR_SYS = 0x0a, // far sys call + CV_CALL_THISCALL = 0x0b, // this call (this passed in register) + CV_CALL_MIPSCALL = 0x0c, // Mips call + CV_CALL_GENERIC = 0x0d, // Generic call sequence + CV_CALL_ALPHACALL = 0x0e, // Alpha call + CV_CALL_PPCCALL = 0x0f, // PPC call + CV_CALL_SHCALL = 0x10, // Hitachi SuperH call + CV_CALL_ARMCALL = 0x11, // ARM call + CV_CALL_AM33CALL = 0x12, // AM33 call + CV_CALL_TRICALL = 0x13, // TriCore Call + CV_CALL_SH5CALL = 0x14, // Hitachi SuperH-5 call + CV_CALL_M32RCALL = 0x15, // M32R Call + CV_CALL_CLRCALL = 0x16, // clr call + CV_CALL_INLINE = 0x17, // Marker for routines always inlined and thus lacking a convention + CV_CALL_NEAR_VECTOR = 0x18, // near left to right push with regs, callee pops stack + CV_CALL_SWIFT = 0x19, // Swift calling convention + CV_CALL_RESERVED = 0x20 // first unused call enumeration + + // Do NOT add any more machine specific conventions. This is to be used for + // calling conventions in the source only (e.g. __cdecl, __stdcall). +} CV_call_e; + + +// Values for the access protection of class attributes + + +typedef enum CV_access_e +{ + CV_private = 1, + CV_protected = 2, + CV_public = 3 +} CV_access_e; + + +typedef enum THUNK_ORDINAL +{ + THUNK_ORDINAL_NOTYPE, // standard thunk + THUNK_ORDINAL_ADJUSTOR, // "this" adjustor thunk + THUNK_ORDINAL_VCALL, // virtual call thunk + THUNK_ORDINAL_PCODE, // pcode thunk + THUNK_ORDINAL_LOAD, // thunk which loads the address to jump to + // via unknown means... + + // trampoline thunk ordinals - only for use in Trampoline thunk symbols + + THUNK_ORDINAL_TRAMP_INCREMENTAL, + THUNK_ORDINAL_TRAMP_BRANCHISLAND, + THUNK_ORDINAL_TRAMP_STRICTICF, +} THUNK_ORDINAL; + + +enum CV_SourceChksum_t +{ + CHKSUM_TYPE_NONE = 0, // indicates no checksum is available + CHKSUM_TYPE_MD5, + CHKSUM_TYPE_SHA1, + CHKSUM_TYPE_SHA_256, +}; + +// +// DIA enums +// + +enum SymTagEnum +{ + SymTagNull, + SymTagExe, + SymTagCompiland, + SymTagCompilandDetails, + SymTagCompilandEnv, + SymTagFunction, + SymTagBlock, + SymTagData, + SymTagAnnotation, + SymTagLabel, + SymTagPublicSymbol, + SymTagUDT, + SymTagEnum, + SymTagFunctionType, + SymTagPointerType, + SymTagArrayType, + SymTagBaseType, + SymTagTypedef, + SymTagBaseClass, + SymTagFriend, + SymTagFunctionArgType, + SymTagFuncDebugStart, + SymTagFuncDebugEnd, + SymTagUsingNamespace, + SymTagVTableShape, + SymTagVTable, + SymTagCustom, + SymTagThunk, + SymTagCustomType, + SymTagManagedType, + SymTagDimension, + SymTagCallSite, + SymTagInlineSite, + SymTagBaseInterface, + SymTagVectorType, + SymTagMatrixType, + SymTagHLSLType, + SymTagCaller, + SymTagCallee, + SymTagExport, + SymTagHeapAllocationSite, + SymTagCoffGroup, + SymTagInlinee, + SymTagMax +}; + +enum LocationType +{ + LocIsNull, + LocIsStatic, + LocIsTLS, + LocIsRegRel, + LocIsThisRel, + LocIsEnregistered, + LocIsBitField, + LocIsSlot, + LocIsIlRel, + LocInMetaData, + LocIsConstant, + LocIsRegRelAliasIndir, + LocTypeMax +}; + +enum DataKind +{ + DataIsUnknown, + DataIsLocal, + DataIsStaticLocal, + DataIsParam, + DataIsObjectPtr, + DataIsFileStatic, + DataIsGlobal, + DataIsMember, + DataIsStaticMember, + DataIsConstant +}; + +enum UdtKind +{ + UdtStruct, + UdtClass, + UdtUnion, + UdtInterface +}; + +enum BasicType +{ + btNoType = 0, + btVoid = 1, + btChar = 2, + btWChar = 3, + btInt = 6, + btUInt = 7, + btFloat = 8, + btBCD = 9, + btBool = 10, + btLong = 13, + btULong = 14, + btCurrency = 25, + btDate = 26, + btVariant = 27, + btComplex = 28, + btBit = 29, + btBSTR = 30, + btHresult = 31, + btChar16 = 32, // char16_t + btChar32 = 33, // char32_t +}; + + +// enumeration for type modifier values + +typedef enum CV_modifier_e +{ + // 0x0000 - 0x01ff - Reserved. + + CV_MOD_INVALID = 0x0000, + + // Standard modifiers. + + CV_MOD_CONST = 0x0001, + CV_MOD_VOLATILE = 0x0002, + CV_MOD_UNALIGNED = 0x0003, + + // 0x0200 - 0x03ff - HLSL modifiers. + + CV_MOD_HLSL_UNIFORM = 0x0200, + CV_MOD_HLSL_LINE = 0x0201, + CV_MOD_HLSL_TRIANGLE = 0x0202, + CV_MOD_HLSL_LINEADJ = 0x0203, + CV_MOD_HLSL_TRIANGLEADJ = 0x0204, + CV_MOD_HLSL_LINEAR = 0x0205, + CV_MOD_HLSL_CENTROID = 0x0206, + CV_MOD_HLSL_CONSTINTERP = 0x0207, + CV_MOD_HLSL_NOPERSPECTIVE = 0x0208, + CV_MOD_HLSL_SAMPLE = 0x0209, + CV_MOD_HLSL_CENTER = 0x020a, + CV_MOD_HLSL_SNORM = 0x020b, + CV_MOD_HLSL_UNORM = 0x020c, + CV_MOD_HLSL_PRECISE = 0x020d, + CV_MOD_HLSL_UAV_GLOBALLY_COHERENT = 0x020e, + + // 0x0400 - 0xffff - Unused. + +} CV_modifier_e; + + +// built-in type kinds + + +typedef enum CV_builtin_e +{ + // 0x0000 - 0x01ff - Reserved. + CV_BI_INVALID = 0x0000, + + // 0x0200 - 0x03ff - HLSL types. + + CV_BI_HLSL_INTERFACE_POINTER = 0x0200, + CV_BI_HLSL_TEXTURE1D = 0x0201, + CV_BI_HLSL_TEXTURE1D_ARRAY = 0x0202, + CV_BI_HLSL_TEXTURE2D = 0x0203, + CV_BI_HLSL_TEXTURE2D_ARRAY = 0x0204, + CV_BI_HLSL_TEXTURE3D = 0x0205, + CV_BI_HLSL_TEXTURECUBE = 0x0206, + CV_BI_HLSL_TEXTURECUBE_ARRAY = 0x0207, + CV_BI_HLSL_TEXTURE2DMS = 0x0208, + CV_BI_HLSL_TEXTURE2DMS_ARRAY = 0x0209, + CV_BI_HLSL_SAMPLER = 0x020a, + CV_BI_HLSL_SAMPLERCOMPARISON = 0x020b, + CV_BI_HLSL_BUFFER = 0x020c, + CV_BI_HLSL_POINTSTREAM = 0x020d, + CV_BI_HLSL_LINESTREAM = 0x020e, + CV_BI_HLSL_TRIANGLESTREAM = 0x020f, + CV_BI_HLSL_INPUTPATCH = 0x0210, + CV_BI_HLSL_OUTPUTPATCH = 0x0211, + CV_BI_HLSL_RWTEXTURE1D = 0x0212, + CV_BI_HLSL_RWTEXTURE1D_ARRAY = 0x0213, + CV_BI_HLSL_RWTEXTURE2D = 0x0214, + CV_BI_HLSL_RWTEXTURE2D_ARRAY = 0x0215, + CV_BI_HLSL_RWTEXTURE3D = 0x0216, + CV_BI_HLSL_RWBUFFER = 0x0217, + CV_BI_HLSL_BYTEADDRESS_BUFFER = 0x0218, + CV_BI_HLSL_RWBYTEADDRESS_BUFFER = 0x0219, + CV_BI_HLSL_STRUCTURED_BUFFER = 0x021a, + CV_BI_HLSL_RWSTRUCTURED_BUFFER = 0x021b, + CV_BI_HLSL_APPEND_STRUCTURED_BUFFER = 0x021c, + CV_BI_HLSL_CONSUME_STRUCTURED_BUFFER= 0x021d, + CV_BI_HLSL_MIN8FLOAT = 0x021e, + CV_BI_HLSL_MIN10FLOAT = 0x021f, + CV_BI_HLSL_MIN16FLOAT = 0x0220, + CV_BI_HLSL_MIN12INT = 0x0221, + CV_BI_HLSL_MIN16INT = 0x0222, + CV_BI_HLSL_MIN16UINT = 0x0223, + CV_BI_HLSL_CONSTANT_BUFFER = 0x0224, + + // 0x0400 - 0xffff - Unused. + +} CV_builtin_e; + + +// enum describing the compile flag source language + + +typedef enum CV_CFL_LANG +{ + CV_CFL_C = 0x00, + CV_CFL_CXX = 0x01, + CV_CFL_FORTRAN = 0x02, + CV_CFL_MASM = 0x03, + CV_CFL_PASCAL = 0x04, + CV_CFL_BASIC = 0x05, + CV_CFL_COBOL = 0x06, + CV_CFL_LINK = 0x07, + CV_CFL_CVTRES = 0x08, + CV_CFL_CVTPGD = 0x09, + CV_CFL_CSHARP = 0x0A, // C# + CV_CFL_VB = 0x0B, // Visual Basic + CV_CFL_ILASM = 0x0C, // IL (as in CLR) ASM + CV_CFL_JAVA = 0x0D, + CV_CFL_JSCRIPT = 0x0E, + CV_CFL_MSIL = 0x0F, // Unknown MSIL (LTCG of .NETMODULE) + CV_CFL_HLSL = 0x10, // High Level Shader Language + CV_CFL_OBJC = 0x11, // Objective-C + CV_CFL_OBJCXX = 0x12, // Objective-C++ + CV_CFL_SWIFT = 0x13, // Swift +} CV_CFL_LANG; + + +// enum describing target processor + + +typedef enum CV_CPU_TYPE_e +{ + CV_CFL_8080 = 0x00, + CV_CFL_8086 = 0x01, + CV_CFL_80286 = 0x02, + CV_CFL_80386 = 0x03, + CV_CFL_80486 = 0x04, + CV_CFL_PENTIUM = 0x05, + CV_CFL_PENTIUMII = 0x06, + CV_CFL_PENTIUMPRO = CV_CFL_PENTIUMII, + CV_CFL_PENTIUMIII = 0x07, + CV_CFL_MIPS = 0x10, + CV_CFL_MIPSR4000 = CV_CFL_MIPS, // don't break current code + CV_CFL_MIPS16 = 0x11, + CV_CFL_MIPS32 = 0x12, + CV_CFL_MIPS64 = 0x13, + CV_CFL_MIPSI = 0x14, + CV_CFL_MIPSII = 0x15, + CV_CFL_MIPSIII = 0x16, + CV_CFL_MIPSIV = 0x17, + CV_CFL_MIPSV = 0x18, + CV_CFL_M68000 = 0x20, + CV_CFL_M68010 = 0x21, + CV_CFL_M68020 = 0x22, + CV_CFL_M68030 = 0x23, + CV_CFL_M68040 = 0x24, + CV_CFL_ALPHA = 0x30, + CV_CFL_ALPHA_21064 = 0x30, + CV_CFL_ALPHA_21164 = 0x31, + CV_CFL_ALPHA_21164A = 0x32, + CV_CFL_ALPHA_21264 = 0x33, + CV_CFL_ALPHA_21364 = 0x34, + CV_CFL_PPC601 = 0x40, + CV_CFL_PPC603 = 0x41, + CV_CFL_PPC604 = 0x42, + CV_CFL_PPC620 = 0x43, + CV_CFL_PPCFP = 0x44, + CV_CFL_PPCBE = 0x45, + CV_CFL_SH3 = 0x50, + CV_CFL_SH3E = 0x51, + CV_CFL_SH3DSP = 0x52, + CV_CFL_SH4 = 0x53, + CV_CFL_SHMEDIA = 0x54, + CV_CFL_ARM3 = 0x60, + CV_CFL_ARM4 = 0x61, + CV_CFL_ARM4T = 0x62, + CV_CFL_ARM5 = 0x63, + CV_CFL_ARM5T = 0x64, + CV_CFL_ARM6 = 0x65, + CV_CFL_ARM_XMAC = 0x66, + CV_CFL_ARM_WMMX = 0x67, + CV_CFL_ARM7 = 0x68, + CV_CFL_OMNI = 0x70, + CV_CFL_IA64 = 0x80, + CV_CFL_IA64_1 = 0x80, + CV_CFL_IA64_2 = 0x81, + CV_CFL_CEE = 0x90, + CV_CFL_AM33 = 0xA0, + CV_CFL_M32R = 0xB0, + CV_CFL_TRICORE = 0xC0, + CV_CFL_X64 = 0xD0, + CV_CFL_AMD64 = CV_CFL_X64, + CV_CFL_EBC = 0xE0, + CV_CFL_THUMB = 0xF0, + CV_CFL_ARMNT = 0xF4, + CV_CFL_ARM64 = 0xF6, + CV_CFL_HYBRID_X86_ARM64 = 0xF7, + CV_CFL_D3D11_SHADER = 0x100, +} CV_CPU_TYPE_e; + +typedef enum CV_HREG_e +{ + // Register subset shared by all processor types, + // must not overlap with any of the ranges below, hence the high values + + CV_ALLREG_ERR = 30000, + CV_ALLREG_TEB = 30001, + CV_ALLREG_TIMER = 30002, + CV_ALLREG_EFAD1 = 30003, + CV_ALLREG_EFAD2 = 30004, + CV_ALLREG_EFAD3 = 30005, + CV_ALLREG_VFRAME= 30006, + CV_ALLREG_HANDLE= 30007, + CV_ALLREG_PARAMS= 30008, + CV_ALLREG_LOCALS= 30009, + CV_ALLREG_TID = 30010, + CV_ALLREG_ENV = 30011, + CV_ALLREG_CMDLN = 30012, + + + // Register set for the Intel 80x86 and ix86 processor series + // (plus PCODE registers) + + CV_REG_NONE = 0, + CV_REG_AL = 1, + CV_REG_CL = 2, + CV_REG_DL = 3, + CV_REG_BL = 4, + CV_REG_AH = 5, + CV_REG_CH = 6, + CV_REG_DH = 7, + CV_REG_BH = 8, + CV_REG_AX = 9, + CV_REG_CX = 10, + CV_REG_DX = 11, + CV_REG_BX = 12, + CV_REG_SP = 13, + CV_REG_BP = 14, + CV_REG_SI = 15, + CV_REG_DI = 16, + CV_REG_EAX = 17, + CV_REG_ECX = 18, + CV_REG_EDX = 19, + CV_REG_EBX = 20, + CV_REG_ESP = 21, + CV_REG_EBP = 22, + CV_REG_ESI = 23, + CV_REG_EDI = 24, + CV_REG_ES = 25, + CV_REG_CS = 26, + CV_REG_SS = 27, + CV_REG_DS = 28, + CV_REG_FS = 29, + CV_REG_GS = 30, + CV_REG_IP = 31, + CV_REG_FLAGS = 32, + CV_REG_EIP = 33, + CV_REG_EFLAGS = 34, + CV_REG_TEMP = 40, // PCODE Temp + CV_REG_TEMPH = 41, // PCODE TempH + CV_REG_QUOTE = 42, // PCODE Quote + CV_REG_PCDR3 = 43, // PCODE reserved + CV_REG_PCDR4 = 44, // PCODE reserved + CV_REG_PCDR5 = 45, // PCODE reserved + CV_REG_PCDR6 = 46, // PCODE reserved + CV_REG_PCDR7 = 47, // PCODE reserved + CV_REG_CR0 = 80, // CR0 -- control registers + CV_REG_CR1 = 81, + CV_REG_CR2 = 82, + CV_REG_CR3 = 83, + CV_REG_CR4 = 84, // Pentium + CV_REG_DR0 = 90, // Debug register + CV_REG_DR1 = 91, + CV_REG_DR2 = 92, + CV_REG_DR3 = 93, + CV_REG_DR4 = 94, + CV_REG_DR5 = 95, + CV_REG_DR6 = 96, + CV_REG_DR7 = 97, + CV_REG_GDTR = 110, + CV_REG_GDTL = 111, + CV_REG_IDTR = 112, + CV_REG_IDTL = 113, + CV_REG_LDTR = 114, + CV_REG_TR = 115, + + CV_REG_PSEUDO1 = 116, + CV_REG_PSEUDO2 = 117, + CV_REG_PSEUDO3 = 118, + CV_REG_PSEUDO4 = 119, + CV_REG_PSEUDO5 = 120, + CV_REG_PSEUDO6 = 121, + CV_REG_PSEUDO7 = 122, + CV_REG_PSEUDO8 = 123, + CV_REG_PSEUDO9 = 124, + + CV_REG_ST0 = 128, + CV_REG_ST1 = 129, + CV_REG_ST2 = 130, + CV_REG_ST3 = 131, + CV_REG_ST4 = 132, + CV_REG_ST5 = 133, + CV_REG_ST6 = 134, + CV_REG_ST7 = 135, + CV_REG_CTRL = 136, + CV_REG_STAT = 137, + CV_REG_TAG = 138, + CV_REG_FPIP = 139, + CV_REG_FPCS = 140, + CV_REG_FPDO = 141, + CV_REG_FPDS = 142, + CV_REG_ISEM = 143, + CV_REG_FPEIP = 144, + CV_REG_FPEDO = 145, + + CV_REG_MM0 = 146, + CV_REG_MM1 = 147, + CV_REG_MM2 = 148, + CV_REG_MM3 = 149, + CV_REG_MM4 = 150, + CV_REG_MM5 = 151, + CV_REG_MM6 = 152, + CV_REG_MM7 = 153, + + CV_REG_XMM0 = 154, // KATMAI registers + CV_REG_XMM1 = 155, + CV_REG_XMM2 = 156, + CV_REG_XMM3 = 157, + CV_REG_XMM4 = 158, + CV_REG_XMM5 = 159, + CV_REG_XMM6 = 160, + CV_REG_XMM7 = 161, + + CV_REG_XMM00 = 162, // KATMAI sub-registers + CV_REG_XMM01 = 163, + CV_REG_XMM02 = 164, + CV_REG_XMM03 = 165, + CV_REG_XMM10 = 166, + CV_REG_XMM11 = 167, + CV_REG_XMM12 = 168, + CV_REG_XMM13 = 169, + CV_REG_XMM20 = 170, + CV_REG_XMM21 = 171, + CV_REG_XMM22 = 172, + CV_REG_XMM23 = 173, + CV_REG_XMM30 = 174, + CV_REG_XMM31 = 175, + CV_REG_XMM32 = 176, + CV_REG_XMM33 = 177, + CV_REG_XMM40 = 178, + CV_REG_XMM41 = 179, + CV_REG_XMM42 = 180, + CV_REG_XMM43 = 181, + CV_REG_XMM50 = 182, + CV_REG_XMM51 = 183, + CV_REG_XMM52 = 184, + CV_REG_XMM53 = 185, + CV_REG_XMM60 = 186, + CV_REG_XMM61 = 187, + CV_REG_XMM62 = 188, + CV_REG_XMM63 = 189, + CV_REG_XMM70 = 190, + CV_REG_XMM71 = 191, + CV_REG_XMM72 = 192, + CV_REG_XMM73 = 193, + + CV_REG_XMM0L = 194, + CV_REG_XMM1L = 195, + CV_REG_XMM2L = 196, + CV_REG_XMM3L = 197, + CV_REG_XMM4L = 198, + CV_REG_XMM5L = 199, + CV_REG_XMM6L = 200, + CV_REG_XMM7L = 201, + + CV_REG_XMM0H = 202, + CV_REG_XMM1H = 203, + CV_REG_XMM2H = 204, + CV_REG_XMM3H = 205, + CV_REG_XMM4H = 206, + CV_REG_XMM5H = 207, + CV_REG_XMM6H = 208, + CV_REG_XMM7H = 209, + + CV_REG_MXCSR = 211, // XMM status register + + CV_REG_EDXEAX = 212, // EDX:EAX pair + + CV_REG_EMM0L = 220, // XMM sub-registers (WNI integer) + CV_REG_EMM1L = 221, + CV_REG_EMM2L = 222, + CV_REG_EMM3L = 223, + CV_REG_EMM4L = 224, + CV_REG_EMM5L = 225, + CV_REG_EMM6L = 226, + CV_REG_EMM7L = 227, + + CV_REG_EMM0H = 228, + CV_REG_EMM1H = 229, + CV_REG_EMM2H = 230, + CV_REG_EMM3H = 231, + CV_REG_EMM4H = 232, + CV_REG_EMM5H = 233, + CV_REG_EMM6H = 234, + CV_REG_EMM7H = 235, + + // do not change the order of these regs, first one must be even too + CV_REG_MM00 = 236, + CV_REG_MM01 = 237, + CV_REG_MM10 = 238, + CV_REG_MM11 = 239, + CV_REG_MM20 = 240, + CV_REG_MM21 = 241, + CV_REG_MM30 = 242, + CV_REG_MM31 = 243, + CV_REG_MM40 = 244, + CV_REG_MM41 = 245, + CV_REG_MM50 = 246, + CV_REG_MM51 = 247, + CV_REG_MM60 = 248, + CV_REG_MM61 = 249, + CV_REG_MM70 = 250, + CV_REG_MM71 = 251, + + CV_REG_YMM0 = 252, // AVX registers + CV_REG_YMM1 = 253, + CV_REG_YMM2 = 254, + CV_REG_YMM3 = 255, + CV_REG_YMM4 = 256, + CV_REG_YMM5 = 257, + CV_REG_YMM6 = 258, + CV_REG_YMM7 = 259, + + CV_REG_YMM0H = 260, + CV_REG_YMM1H = 261, + CV_REG_YMM2H = 262, + CV_REG_YMM3H = 263, + CV_REG_YMM4H = 264, + CV_REG_YMM5H = 265, + CV_REG_YMM6H = 266, + CV_REG_YMM7H = 267, + + CV_REG_YMM0I0 = 268, // AVX integer registers + CV_REG_YMM0I1 = 269, + CV_REG_YMM0I2 = 270, + CV_REG_YMM0I3 = 271, + CV_REG_YMM1I0 = 272, + CV_REG_YMM1I1 = 273, + CV_REG_YMM1I2 = 274, + CV_REG_YMM1I3 = 275, + CV_REG_YMM2I0 = 276, + CV_REG_YMM2I1 = 277, + CV_REG_YMM2I2 = 278, + CV_REG_YMM2I3 = 279, + CV_REG_YMM3I0 = 280, + CV_REG_YMM3I1 = 281, + CV_REG_YMM3I2 = 282, + CV_REG_YMM3I3 = 283, + CV_REG_YMM4I0 = 284, + CV_REG_YMM4I1 = 285, + CV_REG_YMM4I2 = 286, + CV_REG_YMM4I3 = 287, + CV_REG_YMM5I0 = 288, + CV_REG_YMM5I1 = 289, + CV_REG_YMM5I2 = 290, + CV_REG_YMM5I3 = 291, + CV_REG_YMM6I0 = 292, + CV_REG_YMM6I1 = 293, + CV_REG_YMM6I2 = 294, + CV_REG_YMM6I3 = 295, + CV_REG_YMM7I0 = 296, + CV_REG_YMM7I1 = 297, + CV_REG_YMM7I2 = 298, + CV_REG_YMM7I3 = 299, + + CV_REG_YMM0F0 = 300, // AVX floating-point single precise registers + CV_REG_YMM0F1 = 301, + CV_REG_YMM0F2 = 302, + CV_REG_YMM0F3 = 303, + CV_REG_YMM0F4 = 304, + CV_REG_YMM0F5 = 305, + CV_REG_YMM0F6 = 306, + CV_REG_YMM0F7 = 307, + CV_REG_YMM1F0 = 308, + CV_REG_YMM1F1 = 309, + CV_REG_YMM1F2 = 310, + CV_REG_YMM1F3 = 311, + CV_REG_YMM1F4 = 312, + CV_REG_YMM1F5 = 313, + CV_REG_YMM1F6 = 314, + CV_REG_YMM1F7 = 315, + CV_REG_YMM2F0 = 316, + CV_REG_YMM2F1 = 317, + CV_REG_YMM2F2 = 318, + CV_REG_YMM2F3 = 319, + CV_REG_YMM2F4 = 320, + CV_REG_YMM2F5 = 321, + CV_REG_YMM2F6 = 322, + CV_REG_YMM2F7 = 323, + CV_REG_YMM3F0 = 324, + CV_REG_YMM3F1 = 325, + CV_REG_YMM3F2 = 326, + CV_REG_YMM3F3 = 327, + CV_REG_YMM3F4 = 328, + CV_REG_YMM3F5 = 329, + CV_REG_YMM3F6 = 330, + CV_REG_YMM3F7 = 331, + CV_REG_YMM4F0 = 332, + CV_REG_YMM4F1 = 333, + CV_REG_YMM4F2 = 334, + CV_REG_YMM4F3 = 335, + CV_REG_YMM4F4 = 336, + CV_REG_YMM4F5 = 337, + CV_REG_YMM4F6 = 338, + CV_REG_YMM4F7 = 339, + CV_REG_YMM5F0 = 340, + CV_REG_YMM5F1 = 341, + CV_REG_YMM5F2 = 342, + CV_REG_YMM5F3 = 343, + CV_REG_YMM5F4 = 344, + CV_REG_YMM5F5 = 345, + CV_REG_YMM5F6 = 346, + CV_REG_YMM5F7 = 347, + CV_REG_YMM6F0 = 348, + CV_REG_YMM6F1 = 349, + CV_REG_YMM6F2 = 350, + CV_REG_YMM6F3 = 351, + CV_REG_YMM6F4 = 352, + CV_REG_YMM6F5 = 353, + CV_REG_YMM6F6 = 354, + CV_REG_YMM6F7 = 355, + CV_REG_YMM7F0 = 356, + CV_REG_YMM7F1 = 357, + CV_REG_YMM7F2 = 358, + CV_REG_YMM7F3 = 359, + CV_REG_YMM7F4 = 360, + CV_REG_YMM7F5 = 361, + CV_REG_YMM7F6 = 362, + CV_REG_YMM7F7 = 363, + + CV_REG_YMM0D0 = 364, // AVX floating-point double precise registers + CV_REG_YMM0D1 = 365, + CV_REG_YMM0D2 = 366, + CV_REG_YMM0D3 = 367, + CV_REG_YMM1D0 = 368, + CV_REG_YMM1D1 = 369, + CV_REG_YMM1D2 = 370, + CV_REG_YMM1D3 = 371, + CV_REG_YMM2D0 = 372, + CV_REG_YMM2D1 = 373, + CV_REG_YMM2D2 = 374, + CV_REG_YMM2D3 = 375, + CV_REG_YMM3D0 = 376, + CV_REG_YMM3D1 = 377, + CV_REG_YMM3D2 = 378, + CV_REG_YMM3D3 = 379, + CV_REG_YMM4D0 = 380, + CV_REG_YMM4D1 = 381, + CV_REG_YMM4D2 = 382, + CV_REG_YMM4D3 = 383, + CV_REG_YMM5D0 = 384, + CV_REG_YMM5D1 = 385, + CV_REG_YMM5D2 = 386, + CV_REG_YMM5D3 = 387, + CV_REG_YMM6D0 = 388, + CV_REG_YMM6D1 = 389, + CV_REG_YMM6D2 = 390, + CV_REG_YMM6D3 = 391, + CV_REG_YMM7D0 = 392, + CV_REG_YMM7D1 = 393, + CV_REG_YMM7D2 = 394, + CV_REG_YMM7D3 = 395, + + CV_REG_BND0 = 396, // x86 MPX bounds registers + CV_REG_BND1 = 397, + CV_REG_BND2 = 398, + CV_REG_BND3 = 399, + CV_REG_BNDCFGU = 400, + CV_REG_BNDSTATUS = 401, + + CV_REG_ZMM0 = 402, // AVX-512 registers + CV_REG_ZMM1 = 403, + CV_REG_ZMM2 = 404, + CV_REG_ZMM3 = 405, + CV_REG_ZMM4 = 406, + CV_REG_ZMM5 = 407, + CV_REG_ZMM6 = 408, + CV_REG_ZMM7 = 409, + + CV_REG_ZMM0H = 410, + CV_REG_ZMM1H = 411, + CV_REG_ZMM2H = 412, + CV_REG_ZMM3H = 413, + CV_REG_ZMM4H = 414, + CV_REG_ZMM5H = 415, + CV_REG_ZMM6H = 416, + CV_REG_ZMM7H = 417, + + CV_REG_K0 = 418, + CV_REG_K1 = 419, + CV_REG_K2 = 420, + CV_REG_K3 = 421, + CV_REG_K4 = 422, + CV_REG_K5 = 423, + CV_REG_K6 = 424, + CV_REG_K7 = 425, + + // registers for the 68K processors + + CV_R68_D0 = 0, + CV_R68_D1 = 1, + CV_R68_D2 = 2, + CV_R68_D3 = 3, + CV_R68_D4 = 4, + CV_R68_D5 = 5, + CV_R68_D6 = 6, + CV_R68_D7 = 7, + CV_R68_A0 = 8, + CV_R68_A1 = 9, + CV_R68_A2 = 10, + CV_R68_A3 = 11, + CV_R68_A4 = 12, + CV_R68_A5 = 13, + CV_R68_A6 = 14, + CV_R68_A7 = 15, + CV_R68_CCR = 16, + CV_R68_SR = 17, + CV_R68_USP = 18, + CV_R68_MSP = 19, + CV_R68_SFC = 20, + CV_R68_DFC = 21, + CV_R68_CACR = 22, + CV_R68_VBR = 23, + CV_R68_CAAR = 24, + CV_R68_ISP = 25, + CV_R68_PC = 26, + //reserved 27 + CV_R68_FPCR = 28, + CV_R68_FPSR = 29, + CV_R68_FPIAR = 30, + //reserved 31 + CV_R68_FP0 = 32, + CV_R68_FP1 = 33, + CV_R68_FP2 = 34, + CV_R68_FP3 = 35, + CV_R68_FP4 = 36, + CV_R68_FP5 = 37, + CV_R68_FP6 = 38, + CV_R68_FP7 = 39, + //reserved 40 + CV_R68_MMUSR030 = 41, + CV_R68_MMUSR = 42, + CV_R68_URP = 43, + CV_R68_DTT0 = 44, + CV_R68_DTT1 = 45, + CV_R68_ITT0 = 46, + CV_R68_ITT1 = 47, + //reserved 50 + CV_R68_PSR = 51, + CV_R68_PCSR = 52, + CV_R68_VAL = 53, + CV_R68_CRP = 54, + CV_R68_SRP = 55, + CV_R68_DRP = 56, + CV_R68_TC = 57, + CV_R68_AC = 58, + CV_R68_SCC = 59, + CV_R68_CAL = 60, + CV_R68_TT0 = 61, + CV_R68_TT1 = 62, + //reserved 63 + CV_R68_BAD0 = 64, + CV_R68_BAD1 = 65, + CV_R68_BAD2 = 66, + CV_R68_BAD3 = 67, + CV_R68_BAD4 = 68, + CV_R68_BAD5 = 69, + CV_R68_BAD6 = 70, + CV_R68_BAD7 = 71, + CV_R68_BAC0 = 72, + CV_R68_BAC1 = 73, + CV_R68_BAC2 = 74, + CV_R68_BAC3 = 75, + CV_R68_BAC4 = 76, + CV_R68_BAC5 = 77, + CV_R68_BAC6 = 78, + CV_R68_BAC7 = 79, + + // Register set for the MIPS 4000 + + CV_M4_NOREG = CV_REG_NONE, + + CV_M4_IntZERO = 10, /* CPU REGISTER */ + CV_M4_IntAT = 11, + CV_M4_IntV0 = 12, + CV_M4_IntV1 = 13, + CV_M4_IntA0 = 14, + CV_M4_IntA1 = 15, + CV_M4_IntA2 = 16, + CV_M4_IntA3 = 17, + CV_M4_IntT0 = 18, + CV_M4_IntT1 = 19, + CV_M4_IntT2 = 20, + CV_M4_IntT3 = 21, + CV_M4_IntT4 = 22, + CV_M4_IntT5 = 23, + CV_M4_IntT6 = 24, + CV_M4_IntT7 = 25, + CV_M4_IntS0 = 26, + CV_M4_IntS1 = 27, + CV_M4_IntS2 = 28, + CV_M4_IntS3 = 29, + CV_M4_IntS4 = 30, + CV_M4_IntS5 = 31, + CV_M4_IntS6 = 32, + CV_M4_IntS7 = 33, + CV_M4_IntT8 = 34, + CV_M4_IntT9 = 35, + CV_M4_IntKT0 = 36, + CV_M4_IntKT1 = 37, + CV_M4_IntGP = 38, + CV_M4_IntSP = 39, + CV_M4_IntS8 = 40, + CV_M4_IntRA = 41, + CV_M4_IntLO = 42, + CV_M4_IntHI = 43, + + CV_M4_Fir = 50, + CV_M4_Psr = 51, + + CV_M4_FltF0 = 60, /* Floating point registers */ + CV_M4_FltF1 = 61, + CV_M4_FltF2 = 62, + CV_M4_FltF3 = 63, + CV_M4_FltF4 = 64, + CV_M4_FltF5 = 65, + CV_M4_FltF6 = 66, + CV_M4_FltF7 = 67, + CV_M4_FltF8 = 68, + CV_M4_FltF9 = 69, + CV_M4_FltF10 = 70, + CV_M4_FltF11 = 71, + CV_M4_FltF12 = 72, + CV_M4_FltF13 = 73, + CV_M4_FltF14 = 74, + CV_M4_FltF15 = 75, + CV_M4_FltF16 = 76, + CV_M4_FltF17 = 77, + CV_M4_FltF18 = 78, + CV_M4_FltF19 = 79, + CV_M4_FltF20 = 80, + CV_M4_FltF21 = 81, + CV_M4_FltF22 = 82, + CV_M4_FltF23 = 83, + CV_M4_FltF24 = 84, + CV_M4_FltF25 = 85, + CV_M4_FltF26 = 86, + CV_M4_FltF27 = 87, + CV_M4_FltF28 = 88, + CV_M4_FltF29 = 89, + CV_M4_FltF30 = 90, + CV_M4_FltF31 = 91, + CV_M4_FltFsr = 92, + + + // Register set for the ALPHA AXP + + CV_ALPHA_NOREG = CV_REG_NONE, + + CV_ALPHA_FltF0 = 10, // Floating point registers + CV_ALPHA_FltF1 = 11, + CV_ALPHA_FltF2 = 12, + CV_ALPHA_FltF3 = 13, + CV_ALPHA_FltF4 = 14, + CV_ALPHA_FltF5 = 15, + CV_ALPHA_FltF6 = 16, + CV_ALPHA_FltF7 = 17, + CV_ALPHA_FltF8 = 18, + CV_ALPHA_FltF9 = 19, + CV_ALPHA_FltF10 = 20, + CV_ALPHA_FltF11 = 21, + CV_ALPHA_FltF12 = 22, + CV_ALPHA_FltF13 = 23, + CV_ALPHA_FltF14 = 24, + CV_ALPHA_FltF15 = 25, + CV_ALPHA_FltF16 = 26, + CV_ALPHA_FltF17 = 27, + CV_ALPHA_FltF18 = 28, + CV_ALPHA_FltF19 = 29, + CV_ALPHA_FltF20 = 30, + CV_ALPHA_FltF21 = 31, + CV_ALPHA_FltF22 = 32, + CV_ALPHA_FltF23 = 33, + CV_ALPHA_FltF24 = 34, + CV_ALPHA_FltF25 = 35, + CV_ALPHA_FltF26 = 36, + CV_ALPHA_FltF27 = 37, + CV_ALPHA_FltF28 = 38, + CV_ALPHA_FltF29 = 39, + CV_ALPHA_FltF30 = 40, + CV_ALPHA_FltF31 = 41, + + CV_ALPHA_IntV0 = 42, // Integer registers + CV_ALPHA_IntT0 = 43, + CV_ALPHA_IntT1 = 44, + CV_ALPHA_IntT2 = 45, + CV_ALPHA_IntT3 = 46, + CV_ALPHA_IntT4 = 47, + CV_ALPHA_IntT5 = 48, + CV_ALPHA_IntT6 = 49, + CV_ALPHA_IntT7 = 50, + CV_ALPHA_IntS0 = 51, + CV_ALPHA_IntS1 = 52, + CV_ALPHA_IntS2 = 53, + CV_ALPHA_IntS3 = 54, + CV_ALPHA_IntS4 = 55, + CV_ALPHA_IntS5 = 56, + CV_ALPHA_IntFP = 57, + CV_ALPHA_IntA0 = 58, + CV_ALPHA_IntA1 = 59, + CV_ALPHA_IntA2 = 60, + CV_ALPHA_IntA3 = 61, + CV_ALPHA_IntA4 = 62, + CV_ALPHA_IntA5 = 63, + CV_ALPHA_IntT8 = 64, + CV_ALPHA_IntT9 = 65, + CV_ALPHA_IntT10 = 66, + CV_ALPHA_IntT11 = 67, + CV_ALPHA_IntRA = 68, + CV_ALPHA_IntT12 = 69, + CV_ALPHA_IntAT = 70, + CV_ALPHA_IntGP = 71, + CV_ALPHA_IntSP = 72, + CV_ALPHA_IntZERO = 73, + + + CV_ALPHA_Fpcr = 74, // Control registers + CV_ALPHA_Fir = 75, + CV_ALPHA_Psr = 76, + CV_ALPHA_FltFsr = 77, + CV_ALPHA_SoftFpcr = 78, + + // Register Set for Motorola/IBM PowerPC + + /* + ** PowerPC General Registers ( User Level ) + */ + CV_PPC_GPR0 = 1, + CV_PPC_GPR1 = 2, + CV_PPC_GPR2 = 3, + CV_PPC_GPR3 = 4, + CV_PPC_GPR4 = 5, + CV_PPC_GPR5 = 6, + CV_PPC_GPR6 = 7, + CV_PPC_GPR7 = 8, + CV_PPC_GPR8 = 9, + CV_PPC_GPR9 = 10, + CV_PPC_GPR10 = 11, + CV_PPC_GPR11 = 12, + CV_PPC_GPR12 = 13, + CV_PPC_GPR13 = 14, + CV_PPC_GPR14 = 15, + CV_PPC_GPR15 = 16, + CV_PPC_GPR16 = 17, + CV_PPC_GPR17 = 18, + CV_PPC_GPR18 = 19, + CV_PPC_GPR19 = 20, + CV_PPC_GPR20 = 21, + CV_PPC_GPR21 = 22, + CV_PPC_GPR22 = 23, + CV_PPC_GPR23 = 24, + CV_PPC_GPR24 = 25, + CV_PPC_GPR25 = 26, + CV_PPC_GPR26 = 27, + CV_PPC_GPR27 = 28, + CV_PPC_GPR28 = 29, + CV_PPC_GPR29 = 30, + CV_PPC_GPR30 = 31, + CV_PPC_GPR31 = 32, + + /* + ** PowerPC Condition Register ( User Level ) + */ + CV_PPC_CR = 33, + CV_PPC_CR0 = 34, + CV_PPC_CR1 = 35, + CV_PPC_CR2 = 36, + CV_PPC_CR3 = 37, + CV_PPC_CR4 = 38, + CV_PPC_CR5 = 39, + CV_PPC_CR6 = 40, + CV_PPC_CR7 = 41, + + /* + ** PowerPC Floating Point Registers ( User Level ) + */ + CV_PPC_FPR0 = 42, + CV_PPC_FPR1 = 43, + CV_PPC_FPR2 = 44, + CV_PPC_FPR3 = 45, + CV_PPC_FPR4 = 46, + CV_PPC_FPR5 = 47, + CV_PPC_FPR6 = 48, + CV_PPC_FPR7 = 49, + CV_PPC_FPR8 = 50, + CV_PPC_FPR9 = 51, + CV_PPC_FPR10 = 52, + CV_PPC_FPR11 = 53, + CV_PPC_FPR12 = 54, + CV_PPC_FPR13 = 55, + CV_PPC_FPR14 = 56, + CV_PPC_FPR15 = 57, + CV_PPC_FPR16 = 58, + CV_PPC_FPR17 = 59, + CV_PPC_FPR18 = 60, + CV_PPC_FPR19 = 61, + CV_PPC_FPR20 = 62, + CV_PPC_FPR21 = 63, + CV_PPC_FPR22 = 64, + CV_PPC_FPR23 = 65, + CV_PPC_FPR24 = 66, + CV_PPC_FPR25 = 67, + CV_PPC_FPR26 = 68, + CV_PPC_FPR27 = 69, + CV_PPC_FPR28 = 70, + CV_PPC_FPR29 = 71, + CV_PPC_FPR30 = 72, + CV_PPC_FPR31 = 73, + + /* + ** PowerPC Floating Point Status and Control Register ( User Level ) + */ + CV_PPC_FPSCR = 74, + + /* + ** PowerPC Machine State Register ( Supervisor Level ) + */ + CV_PPC_MSR = 75, + + /* + ** PowerPC Segment Registers ( Supervisor Level ) + */ + CV_PPC_SR0 = 76, + CV_PPC_SR1 = 77, + CV_PPC_SR2 = 78, + CV_PPC_SR3 = 79, + CV_PPC_SR4 = 80, + CV_PPC_SR5 = 81, + CV_PPC_SR6 = 82, + CV_PPC_SR7 = 83, + CV_PPC_SR8 = 84, + CV_PPC_SR9 = 85, + CV_PPC_SR10 = 86, + CV_PPC_SR11 = 87, + CV_PPC_SR12 = 88, + CV_PPC_SR13 = 89, + CV_PPC_SR14 = 90, + CV_PPC_SR15 = 91, + + /* + ** For all of the special purpose registers add 100 to the SPR# that the + ** Motorola/IBM documentation gives with the exception of any imaginary + ** registers. + */ + + /* + ** PowerPC Special Purpose Registers ( User Level ) + */ + CV_PPC_PC = 99, // PC (imaginary register) + + CV_PPC_MQ = 100, // MPC601 + CV_PPC_XER = 101, + CV_PPC_RTCU = 104, // MPC601 + CV_PPC_RTCL = 105, // MPC601 + CV_PPC_LR = 108, + CV_PPC_CTR = 109, + + CV_PPC_COMPARE = 110, // part of XER (internal to the debugger only) + CV_PPC_COUNT = 111, // part of XER (internal to the debugger only) + + /* + ** PowerPC Special Purpose Registers ( Supervisor Level ) + */ + CV_PPC_DSISR = 118, + CV_PPC_DAR = 119, + CV_PPC_DEC = 122, + CV_PPC_SDR1 = 125, + CV_PPC_SRR0 = 126, + CV_PPC_SRR1 = 127, + CV_PPC_SPRG0 = 372, + CV_PPC_SPRG1 = 373, + CV_PPC_SPRG2 = 374, + CV_PPC_SPRG3 = 375, + CV_PPC_ASR = 280, // 64-bit implementations only + CV_PPC_EAR = 382, + CV_PPC_PVR = 287, + CV_PPC_BAT0U = 628, + CV_PPC_BAT0L = 629, + CV_PPC_BAT1U = 630, + CV_PPC_BAT1L = 631, + CV_PPC_BAT2U = 632, + CV_PPC_BAT2L = 633, + CV_PPC_BAT3U = 634, + CV_PPC_BAT3L = 635, + CV_PPC_DBAT0U = 636, + CV_PPC_DBAT0L = 637, + CV_PPC_DBAT1U = 638, + CV_PPC_DBAT1L = 639, + CV_PPC_DBAT2U = 640, + CV_PPC_DBAT2L = 641, + CV_PPC_DBAT3U = 642, + CV_PPC_DBAT3L = 643, + + /* + ** PowerPC Special Purpose Registers Implementation Dependent ( Supervisor Level ) + */ + + /* + ** Doesn't appear that IBM/Motorola has finished defining these. + */ + + CV_PPC_PMR0 = 1044, // MPC620, + CV_PPC_PMR1 = 1045, // MPC620, + CV_PPC_PMR2 = 1046, // MPC620, + CV_PPC_PMR3 = 1047, // MPC620, + CV_PPC_PMR4 = 1048, // MPC620, + CV_PPC_PMR5 = 1049, // MPC620, + CV_PPC_PMR6 = 1050, // MPC620, + CV_PPC_PMR7 = 1051, // MPC620, + CV_PPC_PMR8 = 1052, // MPC620, + CV_PPC_PMR9 = 1053, // MPC620, + CV_PPC_PMR10 = 1054, // MPC620, + CV_PPC_PMR11 = 1055, // MPC620, + CV_PPC_PMR12 = 1056, // MPC620, + CV_PPC_PMR13 = 1057, // MPC620, + CV_PPC_PMR14 = 1058, // MPC620, + CV_PPC_PMR15 = 1059, // MPC620, + + CV_PPC_DMISS = 1076, // MPC603 + CV_PPC_DCMP = 1077, // MPC603 + CV_PPC_HASH1 = 1078, // MPC603 + CV_PPC_HASH2 = 1079, // MPC603 + CV_PPC_IMISS = 1080, // MPC603 + CV_PPC_ICMP = 1081, // MPC603 + CV_PPC_RPA = 1082, // MPC603 + + CV_PPC_HID0 = 1108, // MPC601, MPC603, MPC620 + CV_PPC_HID1 = 1109, // MPC601 + CV_PPC_HID2 = 1110, // MPC601, MPC603, MPC620 ( IABR ) + CV_PPC_HID3 = 1111, // Not Defined + CV_PPC_HID4 = 1112, // Not Defined + CV_PPC_HID5 = 1113, // MPC601, MPC604, MPC620 ( DABR ) + CV_PPC_HID6 = 1114, // Not Defined + CV_PPC_HID7 = 1115, // Not Defined + CV_PPC_HID8 = 1116, // MPC620 ( BUSCSR ) + CV_PPC_HID9 = 1117, // MPC620 ( L2CSR ) + CV_PPC_HID10 = 1118, // Not Defined + CV_PPC_HID11 = 1119, // Not Defined + CV_PPC_HID12 = 1120, // Not Defined + CV_PPC_HID13 = 1121, // MPC604 ( HCR ) + CV_PPC_HID14 = 1122, // Not Defined + CV_PPC_HID15 = 1123, // MPC601, MPC604, MPC620 ( PIR ) + + // + // JAVA VM registers + // + + CV_JAVA_PC = 1, + + // + // Register set for the Hitachi SH3 + // + + CV_SH3_NOREG = CV_REG_NONE, + + CV_SH3_IntR0 = 10, // CPU REGISTER + CV_SH3_IntR1 = 11, + CV_SH3_IntR2 = 12, + CV_SH3_IntR3 = 13, + CV_SH3_IntR4 = 14, + CV_SH3_IntR5 = 15, + CV_SH3_IntR6 = 16, + CV_SH3_IntR7 = 17, + CV_SH3_IntR8 = 18, + CV_SH3_IntR9 = 19, + CV_SH3_IntR10 = 20, + CV_SH3_IntR11 = 21, + CV_SH3_IntR12 = 22, + CV_SH3_IntR13 = 23, + CV_SH3_IntFp = 24, + CV_SH3_IntSp = 25, + CV_SH3_Gbr = 38, + CV_SH3_Pr = 39, + CV_SH3_Mach = 40, + CV_SH3_Macl = 41, + + CV_SH3_Pc = 50, + CV_SH3_Sr = 51, + + CV_SH3_BarA = 60, + CV_SH3_BasrA = 61, + CV_SH3_BamrA = 62, + CV_SH3_BbrA = 63, + CV_SH3_BarB = 64, + CV_SH3_BasrB = 65, + CV_SH3_BamrB = 66, + CV_SH3_BbrB = 67, + CV_SH3_BdrB = 68, + CV_SH3_BdmrB = 69, + CV_SH3_Brcr = 70, + + // + // Additional registers for Hitachi SH processors + // + + CV_SH_Fpscr = 75, // floating point status/control register + CV_SH_Fpul = 76, // floating point communication register + + CV_SH_FpR0 = 80, // Floating point registers + CV_SH_FpR1 = 81, + CV_SH_FpR2 = 82, + CV_SH_FpR3 = 83, + CV_SH_FpR4 = 84, + CV_SH_FpR5 = 85, + CV_SH_FpR6 = 86, + CV_SH_FpR7 = 87, + CV_SH_FpR8 = 88, + CV_SH_FpR9 = 89, + CV_SH_FpR10 = 90, + CV_SH_FpR11 = 91, + CV_SH_FpR12 = 92, + CV_SH_FpR13 = 93, + CV_SH_FpR14 = 94, + CV_SH_FpR15 = 95, + + CV_SH_XFpR0 = 96, + CV_SH_XFpR1 = 97, + CV_SH_XFpR2 = 98, + CV_SH_XFpR3 = 99, + CV_SH_XFpR4 = 100, + CV_SH_XFpR5 = 101, + CV_SH_XFpR6 = 102, + CV_SH_XFpR7 = 103, + CV_SH_XFpR8 = 104, + CV_SH_XFpR9 = 105, + CV_SH_XFpR10 = 106, + CV_SH_XFpR11 = 107, + CV_SH_XFpR12 = 108, + CV_SH_XFpR13 = 109, + CV_SH_XFpR14 = 110, + CV_SH_XFpR15 = 111, + + // + // Register set for the ARM processor. + // + + CV_ARM_NOREG = CV_REG_NONE, + + CV_ARM_R0 = 10, + CV_ARM_R1 = 11, + CV_ARM_R2 = 12, + CV_ARM_R3 = 13, + CV_ARM_R4 = 14, + CV_ARM_R5 = 15, + CV_ARM_R6 = 16, + CV_ARM_R7 = 17, + CV_ARM_R8 = 18, + CV_ARM_R9 = 19, + CV_ARM_R10 = 20, + CV_ARM_R11 = 21, // Frame pointer, if allocated + CV_ARM_R12 = 22, + CV_ARM_SP = 23, // Stack pointer + CV_ARM_LR = 24, // Link Register + CV_ARM_PC = 25, // Program counter + CV_ARM_CPSR = 26, // Current program status register + + CV_ARM_ACC0 = 27, // DSP co-processor 0 40 bit accumulator + + // + // Registers for ARM VFP10 support + // + + CV_ARM_FPSCR = 40, + CV_ARM_FPEXC = 41, + + CV_ARM_FS0 = 50, + CV_ARM_FS1 = 51, + CV_ARM_FS2 = 52, + CV_ARM_FS3 = 53, + CV_ARM_FS4 = 54, + CV_ARM_FS5 = 55, + CV_ARM_FS6 = 56, + CV_ARM_FS7 = 57, + CV_ARM_FS8 = 58, + CV_ARM_FS9 = 59, + CV_ARM_FS10 = 60, + CV_ARM_FS11 = 61, + CV_ARM_FS12 = 62, + CV_ARM_FS13 = 63, + CV_ARM_FS14 = 64, + CV_ARM_FS15 = 65, + CV_ARM_FS16 = 66, + CV_ARM_FS17 = 67, + CV_ARM_FS18 = 68, + CV_ARM_FS19 = 69, + CV_ARM_FS20 = 70, + CV_ARM_FS21 = 71, + CV_ARM_FS22 = 72, + CV_ARM_FS23 = 73, + CV_ARM_FS24 = 74, + CV_ARM_FS25 = 75, + CV_ARM_FS26 = 76, + CV_ARM_FS27 = 77, + CV_ARM_FS28 = 78, + CV_ARM_FS29 = 79, + CV_ARM_FS30 = 80, + CV_ARM_FS31 = 81, + + // + // ARM VFP Floating Point Extra control registers + // + + CV_ARM_FPEXTRA0 = 90, + CV_ARM_FPEXTRA1 = 91, + CV_ARM_FPEXTRA2 = 92, + CV_ARM_FPEXTRA3 = 93, + CV_ARM_FPEXTRA4 = 94, + CV_ARM_FPEXTRA5 = 95, + CV_ARM_FPEXTRA6 = 96, + CV_ARM_FPEXTRA7 = 97, + + // XSCALE Concan co-processor registers + CV_ARM_WR0 = 128, + CV_ARM_WR1 = 129, + CV_ARM_WR2 = 130, + CV_ARM_WR3 = 131, + CV_ARM_WR4 = 132, + CV_ARM_WR5 = 133, + CV_ARM_WR6 = 134, + CV_ARM_WR7 = 135, + CV_ARM_WR8 = 136, + CV_ARM_WR9 = 137, + CV_ARM_WR10 = 138, + CV_ARM_WR11 = 139, + CV_ARM_WR12 = 140, + CV_ARM_WR13 = 141, + CV_ARM_WR14 = 142, + CV_ARM_WR15 = 143, + + // XSCALE Concan co-processor control registers + CV_ARM_WCID = 144, + CV_ARM_WCON = 145, + CV_ARM_WCSSF = 146, + CV_ARM_WCASF = 147, + CV_ARM_WC4 = 148, + CV_ARM_WC5 = 149, + CV_ARM_WC6 = 150, + CV_ARM_WC7 = 151, + CV_ARM_WCGR0 = 152, + CV_ARM_WCGR1 = 153, + CV_ARM_WCGR2 = 154, + CV_ARM_WCGR3 = 155, + CV_ARM_WC12 = 156, + CV_ARM_WC13 = 157, + CV_ARM_WC14 = 158, + CV_ARM_WC15 = 159, + + // + // ARM VFPv3/Neon extended floating Point + // + + CV_ARM_FS32 = 200, + CV_ARM_FS33 = 201, + CV_ARM_FS34 = 202, + CV_ARM_FS35 = 203, + CV_ARM_FS36 = 204, + CV_ARM_FS37 = 205, + CV_ARM_FS38 = 206, + CV_ARM_FS39 = 207, + CV_ARM_FS40 = 208, + CV_ARM_FS41 = 209, + CV_ARM_FS42 = 210, + CV_ARM_FS43 = 211, + CV_ARM_FS44 = 212, + CV_ARM_FS45 = 213, + CV_ARM_FS46 = 214, + CV_ARM_FS47 = 215, + CV_ARM_FS48 = 216, + CV_ARM_FS49 = 217, + CV_ARM_FS50 = 218, + CV_ARM_FS51 = 219, + CV_ARM_FS52 = 220, + CV_ARM_FS53 = 221, + CV_ARM_FS54 = 222, + CV_ARM_FS55 = 223, + CV_ARM_FS56 = 224, + CV_ARM_FS57 = 225, + CV_ARM_FS58 = 226, + CV_ARM_FS59 = 227, + CV_ARM_FS60 = 228, + CV_ARM_FS61 = 229, + CV_ARM_FS62 = 230, + CV_ARM_FS63 = 231, + + // ARM double-precision floating point + + CV_ARM_ND0 = 300, + CV_ARM_ND1 = 301, + CV_ARM_ND2 = 302, + CV_ARM_ND3 = 303, + CV_ARM_ND4 = 304, + CV_ARM_ND5 = 305, + CV_ARM_ND6 = 306, + CV_ARM_ND7 = 307, + CV_ARM_ND8 = 308, + CV_ARM_ND9 = 309, + CV_ARM_ND10 = 310, + CV_ARM_ND11 = 311, + CV_ARM_ND12 = 312, + CV_ARM_ND13 = 313, + CV_ARM_ND14 = 314, + CV_ARM_ND15 = 315, + CV_ARM_ND16 = 316, + CV_ARM_ND17 = 317, + CV_ARM_ND18 = 318, + CV_ARM_ND19 = 319, + CV_ARM_ND20 = 320, + CV_ARM_ND21 = 321, + CV_ARM_ND22 = 322, + CV_ARM_ND23 = 323, + CV_ARM_ND24 = 324, + CV_ARM_ND25 = 325, + CV_ARM_ND26 = 326, + CV_ARM_ND27 = 327, + CV_ARM_ND28 = 328, + CV_ARM_ND29 = 329, + CV_ARM_ND30 = 330, + CV_ARM_ND31 = 331, + + // ARM extended precision floating point + + CV_ARM_NQ0 = 400, + CV_ARM_NQ1 = 401, + CV_ARM_NQ2 = 402, + CV_ARM_NQ3 = 403, + CV_ARM_NQ4 = 404, + CV_ARM_NQ5 = 405, + CV_ARM_NQ6 = 406, + CV_ARM_NQ7 = 407, + CV_ARM_NQ8 = 408, + CV_ARM_NQ9 = 409, + CV_ARM_NQ10 = 410, + CV_ARM_NQ11 = 411, + CV_ARM_NQ12 = 412, + CV_ARM_NQ13 = 413, + CV_ARM_NQ14 = 414, + CV_ARM_NQ15 = 415, + + // + // Register set for ARM64 + // + + CV_ARM64_NOREG = CV_REG_NONE, + + // General purpose 32-bit integer registers + + CV_ARM64_W0 = 10, + CV_ARM64_W1 = 11, + CV_ARM64_W2 = 12, + CV_ARM64_W3 = 13, + CV_ARM64_W4 = 14, + CV_ARM64_W5 = 15, + CV_ARM64_W6 = 16, + CV_ARM64_W7 = 17, + CV_ARM64_W8 = 18, + CV_ARM64_W9 = 19, + CV_ARM64_W10 = 20, + CV_ARM64_W11 = 21, + CV_ARM64_W12 = 22, + CV_ARM64_W13 = 23, + CV_ARM64_W14 = 24, + CV_ARM64_W15 = 25, + CV_ARM64_W16 = 26, + CV_ARM64_W17 = 27, + CV_ARM64_W18 = 28, + CV_ARM64_W19 = 29, + CV_ARM64_W20 = 30, + CV_ARM64_W21 = 31, + CV_ARM64_W22 = 32, + CV_ARM64_W23 = 33, + CV_ARM64_W24 = 34, + CV_ARM64_W25 = 35, + CV_ARM64_W26 = 36, + CV_ARM64_W27 = 37, + CV_ARM64_W28 = 38, + CV_ARM64_W29 = 39, + CV_ARM64_W30 = 40, + CV_ARM64_WZR = 41, + + // General purpose 64-bit integer registers + + CV_ARM64_X0 = 50, + CV_ARM64_X1 = 51, + CV_ARM64_X2 = 52, + CV_ARM64_X3 = 53, + CV_ARM64_X4 = 54, + CV_ARM64_X5 = 55, + CV_ARM64_X6 = 56, + CV_ARM64_X7 = 57, + CV_ARM64_X8 = 58, + CV_ARM64_X9 = 59, + CV_ARM64_X10 = 60, + CV_ARM64_X11 = 61, + CV_ARM64_X12 = 62, + CV_ARM64_X13 = 63, + CV_ARM64_X14 = 64, + CV_ARM64_X15 = 65, + CV_ARM64_IP0 = 66, + CV_ARM64_IP1 = 67, + CV_ARM64_X18 = 68, + CV_ARM64_X19 = 69, + CV_ARM64_X20 = 70, + CV_ARM64_X21 = 71, + CV_ARM64_X22 = 72, + CV_ARM64_X23 = 73, + CV_ARM64_X24 = 74, + CV_ARM64_X25 = 75, + CV_ARM64_X26 = 76, + CV_ARM64_X27 = 77, + CV_ARM64_X28 = 78, + CV_ARM64_FP = 79, + CV_ARM64_LR = 80, + CV_ARM64_SP = 81, + CV_ARM64_ZR = 82, + CV_ARM64_PC = 83, + + // status registers + + CV_ARM64_NZCV = 90, + CV_ARM64_CPSR = 91, + + // 32-bit floating point registers + + CV_ARM64_S0 = 100, + CV_ARM64_S1 = 101, + CV_ARM64_S2 = 102, + CV_ARM64_S3 = 103, + CV_ARM64_S4 = 104, + CV_ARM64_S5 = 105, + CV_ARM64_S6 = 106, + CV_ARM64_S7 = 107, + CV_ARM64_S8 = 108, + CV_ARM64_S9 = 109, + CV_ARM64_S10 = 110, + CV_ARM64_S11 = 111, + CV_ARM64_S12 = 112, + CV_ARM64_S13 = 113, + CV_ARM64_S14 = 114, + CV_ARM64_S15 = 115, + CV_ARM64_S16 = 116, + CV_ARM64_S17 = 117, + CV_ARM64_S18 = 118, + CV_ARM64_S19 = 119, + CV_ARM64_S20 = 120, + CV_ARM64_S21 = 121, + CV_ARM64_S22 = 122, + CV_ARM64_S23 = 123, + CV_ARM64_S24 = 124, + CV_ARM64_S25 = 125, + CV_ARM64_S26 = 126, + CV_ARM64_S27 = 127, + CV_ARM64_S28 = 128, + CV_ARM64_S29 = 129, + CV_ARM64_S30 = 130, + CV_ARM64_S31 = 131, + + // 64-bit floating point registers + + CV_ARM64_D0 = 140, + CV_ARM64_D1 = 141, + CV_ARM64_D2 = 142, + CV_ARM64_D3 = 143, + CV_ARM64_D4 = 144, + CV_ARM64_D5 = 145, + CV_ARM64_D6 = 146, + CV_ARM64_D7 = 147, + CV_ARM64_D8 = 148, + CV_ARM64_D9 = 149, + CV_ARM64_D10 = 150, + CV_ARM64_D11 = 151, + CV_ARM64_D12 = 152, + CV_ARM64_D13 = 153, + CV_ARM64_D14 = 154, + CV_ARM64_D15 = 155, + CV_ARM64_D16 = 156, + CV_ARM64_D17 = 157, + CV_ARM64_D18 = 158, + CV_ARM64_D19 = 159, + CV_ARM64_D20 = 160, + CV_ARM64_D21 = 161, + CV_ARM64_D22 = 162, + CV_ARM64_D23 = 163, + CV_ARM64_D24 = 164, + CV_ARM64_D25 = 165, + CV_ARM64_D26 = 166, + CV_ARM64_D27 = 167, + CV_ARM64_D28 = 168, + CV_ARM64_D29 = 169, + CV_ARM64_D30 = 170, + CV_ARM64_D31 = 171, + + // 128-bit SIMD registers + + CV_ARM64_Q0 = 180, + CV_ARM64_Q1 = 181, + CV_ARM64_Q2 = 182, + CV_ARM64_Q3 = 183, + CV_ARM64_Q4 = 184, + CV_ARM64_Q5 = 185, + CV_ARM64_Q6 = 186, + CV_ARM64_Q7 = 187, + CV_ARM64_Q8 = 188, + CV_ARM64_Q9 = 189, + CV_ARM64_Q10 = 190, + CV_ARM64_Q11 = 191, + CV_ARM64_Q12 = 192, + CV_ARM64_Q13 = 193, + CV_ARM64_Q14 = 194, + CV_ARM64_Q15 = 195, + CV_ARM64_Q16 = 196, + CV_ARM64_Q17 = 197, + CV_ARM64_Q18 = 198, + CV_ARM64_Q19 = 199, + CV_ARM64_Q20 = 200, + CV_ARM64_Q21 = 201, + CV_ARM64_Q22 = 202, + CV_ARM64_Q23 = 203, + CV_ARM64_Q24 = 204, + CV_ARM64_Q25 = 205, + CV_ARM64_Q26 = 206, + CV_ARM64_Q27 = 207, + CV_ARM64_Q28 = 208, + CV_ARM64_Q29 = 209, + CV_ARM64_Q30 = 210, + CV_ARM64_Q31 = 211, + + // Floating point status register + + CV_ARM64_FPSR = 220, + CV_ARM64_FPCR = 221, + + // 8-bit floating point registers + + CV_ARM64_B0 = 230, + CV_ARM64_B1 = 231, + CV_ARM64_B2 = 232, + CV_ARM64_B3 = 233, + CV_ARM64_B4 = 234, + CV_ARM64_B5 = 235, + CV_ARM64_B6 = 236, + CV_ARM64_B7 = 237, + CV_ARM64_B8 = 238, + CV_ARM64_B9 = 239, + CV_ARM64_B10 = 240, + CV_ARM64_B11 = 241, + CV_ARM64_B12 = 242, + CV_ARM64_B13 = 243, + CV_ARM64_B14 = 244, + CV_ARM64_B15 = 245, + CV_ARM64_B16 = 246, + CV_ARM64_B17 = 247, + CV_ARM64_B18 = 248, + CV_ARM64_B19 = 249, + CV_ARM64_B20 = 250, + CV_ARM64_B21 = 251, + CV_ARM64_B22 = 252, + CV_ARM64_B23 = 253, + CV_ARM64_B24 = 254, + CV_ARM64_B25 = 255, + CV_ARM64_B26 = 256, + CV_ARM64_B27 = 257, + CV_ARM64_B28 = 258, + CV_ARM64_B29 = 259, + CV_ARM64_B30 = 260, + CV_ARM64_B31 = 261, + + // 16-bit floating point registers + + CV_ARM64_H0 = 270, + CV_ARM64_H1 = 271, + CV_ARM64_H2 = 272, + CV_ARM64_H3 = 273, + CV_ARM64_H4 = 274, + CV_ARM64_H5 = 275, + CV_ARM64_H6 = 276, + CV_ARM64_H7 = 277, + CV_ARM64_H8 = 278, + CV_ARM64_H9 = 279, + CV_ARM64_H10 = 280, + CV_ARM64_H11 = 281, + CV_ARM64_H12 = 282, + CV_ARM64_H13 = 283, + CV_ARM64_H14 = 284, + CV_ARM64_H15 = 285, + CV_ARM64_H16 = 286, + CV_ARM64_H17 = 287, + CV_ARM64_H18 = 288, + CV_ARM64_H19 = 289, + CV_ARM64_H20 = 290, + CV_ARM64_H21 = 291, + CV_ARM64_H22 = 292, + CV_ARM64_H23 = 293, + CV_ARM64_H24 = 294, + CV_ARM64_H25 = 295, + CV_ARM64_H26 = 296, + CV_ARM64_H27 = 297, + CV_ARM64_H28 = 298, + CV_ARM64_H29 = 299, + CV_ARM64_H30 = 300, + CV_ARM64_H31 = 301, + + // 128-bit vector registers + + CV_ARM64_V0 = 310, + CV_ARM64_V1 = 311, + CV_ARM64_V2 = 312, + CV_ARM64_V3 = 313, + CV_ARM64_V4 = 314, + CV_ARM64_V5 = 315, + CV_ARM64_V6 = 316, + CV_ARM64_V7 = 317, + CV_ARM64_V8 = 318, + CV_ARM64_V9 = 319, + CV_ARM64_V10 = 320, + CV_ARM64_V11 = 321, + CV_ARM64_V12 = 322, + CV_ARM64_V13 = 323, + CV_ARM64_V14 = 324, + CV_ARM64_V15 = 325, + CV_ARM64_V16 = 326, + CV_ARM64_V17 = 327, + CV_ARM64_V18 = 328, + CV_ARM64_V19 = 329, + CV_ARM64_V20 = 330, + CV_ARM64_V21 = 331, + CV_ARM64_V22 = 332, + CV_ARM64_V23 = 333, + CV_ARM64_V24 = 334, + CV_ARM64_V25 = 335, + CV_ARM64_V26 = 336, + CV_ARM64_V27 = 337, + CV_ARM64_V28 = 338, + CV_ARM64_V29 = 339, + CV_ARM64_V30 = 340, + CV_ARM64_V31 = 341, + + // 128-bit SIMD registers upper 64 bits + + CV_ARM64_Q0H = 350, + CV_ARM64_Q1H = 351, + CV_ARM64_Q2H = 352, + CV_ARM64_Q3H = 353, + CV_ARM64_Q4H = 354, + CV_ARM64_Q5H = 355, + CV_ARM64_Q6H = 356, + CV_ARM64_Q7H = 357, + CV_ARM64_Q8H = 358, + CV_ARM64_Q9H = 359, + CV_ARM64_Q10H = 360, + CV_ARM64_Q11H = 361, + CV_ARM64_Q12H = 362, + CV_ARM64_Q13H = 363, + CV_ARM64_Q14H = 364, + CV_ARM64_Q15H = 365, + CV_ARM64_Q16H = 366, + CV_ARM64_Q17H = 367, + CV_ARM64_Q18H = 368, + CV_ARM64_Q19H = 369, + CV_ARM64_Q20H = 370, + CV_ARM64_Q21H = 371, + CV_ARM64_Q22H = 372, + CV_ARM64_Q23H = 373, + CV_ARM64_Q24H = 374, + CV_ARM64_Q25H = 375, + CV_ARM64_Q26H = 376, + CV_ARM64_Q27H = 377, + CV_ARM64_Q28H = 378, + CV_ARM64_Q29H = 379, + CV_ARM64_Q30H = 380, + CV_ARM64_Q31H = 381, + + // + // Register set for Intel IA64 + // + + CV_IA64_NOREG = CV_REG_NONE, + + // Branch Registers + + CV_IA64_Br0 = 512, + CV_IA64_Br1 = 513, + CV_IA64_Br2 = 514, + CV_IA64_Br3 = 515, + CV_IA64_Br4 = 516, + CV_IA64_Br5 = 517, + CV_IA64_Br6 = 518, + CV_IA64_Br7 = 519, + + // Predicate Registers + + CV_IA64_P0 = 704, + CV_IA64_P1 = 705, + CV_IA64_P2 = 706, + CV_IA64_P3 = 707, + CV_IA64_P4 = 708, + CV_IA64_P5 = 709, + CV_IA64_P6 = 710, + CV_IA64_P7 = 711, + CV_IA64_P8 = 712, + CV_IA64_P9 = 713, + CV_IA64_P10 = 714, + CV_IA64_P11 = 715, + CV_IA64_P12 = 716, + CV_IA64_P13 = 717, + CV_IA64_P14 = 718, + CV_IA64_P15 = 719, + CV_IA64_P16 = 720, + CV_IA64_P17 = 721, + CV_IA64_P18 = 722, + CV_IA64_P19 = 723, + CV_IA64_P20 = 724, + CV_IA64_P21 = 725, + CV_IA64_P22 = 726, + CV_IA64_P23 = 727, + CV_IA64_P24 = 728, + CV_IA64_P25 = 729, + CV_IA64_P26 = 730, + CV_IA64_P27 = 731, + CV_IA64_P28 = 732, + CV_IA64_P29 = 733, + CV_IA64_P30 = 734, + CV_IA64_P31 = 735, + CV_IA64_P32 = 736, + CV_IA64_P33 = 737, + CV_IA64_P34 = 738, + CV_IA64_P35 = 739, + CV_IA64_P36 = 740, + CV_IA64_P37 = 741, + CV_IA64_P38 = 742, + CV_IA64_P39 = 743, + CV_IA64_P40 = 744, + CV_IA64_P41 = 745, + CV_IA64_P42 = 746, + CV_IA64_P43 = 747, + CV_IA64_P44 = 748, + CV_IA64_P45 = 749, + CV_IA64_P46 = 750, + CV_IA64_P47 = 751, + CV_IA64_P48 = 752, + CV_IA64_P49 = 753, + CV_IA64_P50 = 754, + CV_IA64_P51 = 755, + CV_IA64_P52 = 756, + CV_IA64_P53 = 757, + CV_IA64_P54 = 758, + CV_IA64_P55 = 759, + CV_IA64_P56 = 760, + CV_IA64_P57 = 761, + CV_IA64_P58 = 762, + CV_IA64_P59 = 763, + CV_IA64_P60 = 764, + CV_IA64_P61 = 765, + CV_IA64_P62 = 766, + CV_IA64_P63 = 767, + + CV_IA64_Preds = 768, + + // Banked General Registers + + CV_IA64_IntH0 = 832, + CV_IA64_IntH1 = 833, + CV_IA64_IntH2 = 834, + CV_IA64_IntH3 = 835, + CV_IA64_IntH4 = 836, + CV_IA64_IntH5 = 837, + CV_IA64_IntH6 = 838, + CV_IA64_IntH7 = 839, + CV_IA64_IntH8 = 840, + CV_IA64_IntH9 = 841, + CV_IA64_IntH10 = 842, + CV_IA64_IntH11 = 843, + CV_IA64_IntH12 = 844, + CV_IA64_IntH13 = 845, + CV_IA64_IntH14 = 846, + CV_IA64_IntH15 = 847, + + // Special Registers + + CV_IA64_Ip = 1016, + CV_IA64_Umask = 1017, + CV_IA64_Cfm = 1018, + CV_IA64_Psr = 1019, + + // Banked General Registers + + CV_IA64_Nats = 1020, + CV_IA64_Nats2 = 1021, + CV_IA64_Nats3 = 1022, + + // General-Purpose Registers + + // Integer registers + CV_IA64_IntR0 = 1024, + CV_IA64_IntR1 = 1025, + CV_IA64_IntR2 = 1026, + CV_IA64_IntR3 = 1027, + CV_IA64_IntR4 = 1028, + CV_IA64_IntR5 = 1029, + CV_IA64_IntR6 = 1030, + CV_IA64_IntR7 = 1031, + CV_IA64_IntR8 = 1032, + CV_IA64_IntR9 = 1033, + CV_IA64_IntR10 = 1034, + CV_IA64_IntR11 = 1035, + CV_IA64_IntR12 = 1036, + CV_IA64_IntR13 = 1037, + CV_IA64_IntR14 = 1038, + CV_IA64_IntR15 = 1039, + CV_IA64_IntR16 = 1040, + CV_IA64_IntR17 = 1041, + CV_IA64_IntR18 = 1042, + CV_IA64_IntR19 = 1043, + CV_IA64_IntR20 = 1044, + CV_IA64_IntR21 = 1045, + CV_IA64_IntR22 = 1046, + CV_IA64_IntR23 = 1047, + CV_IA64_IntR24 = 1048, + CV_IA64_IntR25 = 1049, + CV_IA64_IntR26 = 1050, + CV_IA64_IntR27 = 1051, + CV_IA64_IntR28 = 1052, + CV_IA64_IntR29 = 1053, + CV_IA64_IntR30 = 1054, + CV_IA64_IntR31 = 1055, + + // Register Stack + CV_IA64_IntR32 = 1056, + CV_IA64_IntR33 = 1057, + CV_IA64_IntR34 = 1058, + CV_IA64_IntR35 = 1059, + CV_IA64_IntR36 = 1060, + CV_IA64_IntR37 = 1061, + CV_IA64_IntR38 = 1062, + CV_IA64_IntR39 = 1063, + CV_IA64_IntR40 = 1064, + CV_IA64_IntR41 = 1065, + CV_IA64_IntR42 = 1066, + CV_IA64_IntR43 = 1067, + CV_IA64_IntR44 = 1068, + CV_IA64_IntR45 = 1069, + CV_IA64_IntR46 = 1070, + CV_IA64_IntR47 = 1071, + CV_IA64_IntR48 = 1072, + CV_IA64_IntR49 = 1073, + CV_IA64_IntR50 = 1074, + CV_IA64_IntR51 = 1075, + CV_IA64_IntR52 = 1076, + CV_IA64_IntR53 = 1077, + CV_IA64_IntR54 = 1078, + CV_IA64_IntR55 = 1079, + CV_IA64_IntR56 = 1080, + CV_IA64_IntR57 = 1081, + CV_IA64_IntR58 = 1082, + CV_IA64_IntR59 = 1083, + CV_IA64_IntR60 = 1084, + CV_IA64_IntR61 = 1085, + CV_IA64_IntR62 = 1086, + CV_IA64_IntR63 = 1087, + CV_IA64_IntR64 = 1088, + CV_IA64_IntR65 = 1089, + CV_IA64_IntR66 = 1090, + CV_IA64_IntR67 = 1091, + CV_IA64_IntR68 = 1092, + CV_IA64_IntR69 = 1093, + CV_IA64_IntR70 = 1094, + CV_IA64_IntR71 = 1095, + CV_IA64_IntR72 = 1096, + CV_IA64_IntR73 = 1097, + CV_IA64_IntR74 = 1098, + CV_IA64_IntR75 = 1099, + CV_IA64_IntR76 = 1100, + CV_IA64_IntR77 = 1101, + CV_IA64_IntR78 = 1102, + CV_IA64_IntR79 = 1103, + CV_IA64_IntR80 = 1104, + CV_IA64_IntR81 = 1105, + CV_IA64_IntR82 = 1106, + CV_IA64_IntR83 = 1107, + CV_IA64_IntR84 = 1108, + CV_IA64_IntR85 = 1109, + CV_IA64_IntR86 = 1110, + CV_IA64_IntR87 = 1111, + CV_IA64_IntR88 = 1112, + CV_IA64_IntR89 = 1113, + CV_IA64_IntR90 = 1114, + CV_IA64_IntR91 = 1115, + CV_IA64_IntR92 = 1116, + CV_IA64_IntR93 = 1117, + CV_IA64_IntR94 = 1118, + CV_IA64_IntR95 = 1119, + CV_IA64_IntR96 = 1120, + CV_IA64_IntR97 = 1121, + CV_IA64_IntR98 = 1122, + CV_IA64_IntR99 = 1123, + CV_IA64_IntR100 = 1124, + CV_IA64_IntR101 = 1125, + CV_IA64_IntR102 = 1126, + CV_IA64_IntR103 = 1127, + CV_IA64_IntR104 = 1128, + CV_IA64_IntR105 = 1129, + CV_IA64_IntR106 = 1130, + CV_IA64_IntR107 = 1131, + CV_IA64_IntR108 = 1132, + CV_IA64_IntR109 = 1133, + CV_IA64_IntR110 = 1134, + CV_IA64_IntR111 = 1135, + CV_IA64_IntR112 = 1136, + CV_IA64_IntR113 = 1137, + CV_IA64_IntR114 = 1138, + CV_IA64_IntR115 = 1139, + CV_IA64_IntR116 = 1140, + CV_IA64_IntR117 = 1141, + CV_IA64_IntR118 = 1142, + CV_IA64_IntR119 = 1143, + CV_IA64_IntR120 = 1144, + CV_IA64_IntR121 = 1145, + CV_IA64_IntR122 = 1146, + CV_IA64_IntR123 = 1147, + CV_IA64_IntR124 = 1148, + CV_IA64_IntR125 = 1149, + CV_IA64_IntR126 = 1150, + CV_IA64_IntR127 = 1151, + + // Floating-Point Registers + + // Low Floating Point Registers + CV_IA64_FltF0 = 2048, + CV_IA64_FltF1 = 2049, + CV_IA64_FltF2 = 2050, + CV_IA64_FltF3 = 2051, + CV_IA64_FltF4 = 2052, + CV_IA64_FltF5 = 2053, + CV_IA64_FltF6 = 2054, + CV_IA64_FltF7 = 2055, + CV_IA64_FltF8 = 2056, + CV_IA64_FltF9 = 2057, + CV_IA64_FltF10 = 2058, + CV_IA64_FltF11 = 2059, + CV_IA64_FltF12 = 2060, + CV_IA64_FltF13 = 2061, + CV_IA64_FltF14 = 2062, + CV_IA64_FltF15 = 2063, + CV_IA64_FltF16 = 2064, + CV_IA64_FltF17 = 2065, + CV_IA64_FltF18 = 2066, + CV_IA64_FltF19 = 2067, + CV_IA64_FltF20 = 2068, + CV_IA64_FltF21 = 2069, + CV_IA64_FltF22 = 2070, + CV_IA64_FltF23 = 2071, + CV_IA64_FltF24 = 2072, + CV_IA64_FltF25 = 2073, + CV_IA64_FltF26 = 2074, + CV_IA64_FltF27 = 2075, + CV_IA64_FltF28 = 2076, + CV_IA64_FltF29 = 2077, + CV_IA64_FltF30 = 2078, + CV_IA64_FltF31 = 2079, + + // High Floating Point Registers + CV_IA64_FltF32 = 2080, + CV_IA64_FltF33 = 2081, + CV_IA64_FltF34 = 2082, + CV_IA64_FltF35 = 2083, + CV_IA64_FltF36 = 2084, + CV_IA64_FltF37 = 2085, + CV_IA64_FltF38 = 2086, + CV_IA64_FltF39 = 2087, + CV_IA64_FltF40 = 2088, + CV_IA64_FltF41 = 2089, + CV_IA64_FltF42 = 2090, + CV_IA64_FltF43 = 2091, + CV_IA64_FltF44 = 2092, + CV_IA64_FltF45 = 2093, + CV_IA64_FltF46 = 2094, + CV_IA64_FltF47 = 2095, + CV_IA64_FltF48 = 2096, + CV_IA64_FltF49 = 2097, + CV_IA64_FltF50 = 2098, + CV_IA64_FltF51 = 2099, + CV_IA64_FltF52 = 2100, + CV_IA64_FltF53 = 2101, + CV_IA64_FltF54 = 2102, + CV_IA64_FltF55 = 2103, + CV_IA64_FltF56 = 2104, + CV_IA64_FltF57 = 2105, + CV_IA64_FltF58 = 2106, + CV_IA64_FltF59 = 2107, + CV_IA64_FltF60 = 2108, + CV_IA64_FltF61 = 2109, + CV_IA64_FltF62 = 2110, + CV_IA64_FltF63 = 2111, + CV_IA64_FltF64 = 2112, + CV_IA64_FltF65 = 2113, + CV_IA64_FltF66 = 2114, + CV_IA64_FltF67 = 2115, + CV_IA64_FltF68 = 2116, + CV_IA64_FltF69 = 2117, + CV_IA64_FltF70 = 2118, + CV_IA64_FltF71 = 2119, + CV_IA64_FltF72 = 2120, + CV_IA64_FltF73 = 2121, + CV_IA64_FltF74 = 2122, + CV_IA64_FltF75 = 2123, + CV_IA64_FltF76 = 2124, + CV_IA64_FltF77 = 2125, + CV_IA64_FltF78 = 2126, + CV_IA64_FltF79 = 2127, + CV_IA64_FltF80 = 2128, + CV_IA64_FltF81 = 2129, + CV_IA64_FltF82 = 2130, + CV_IA64_FltF83 = 2131, + CV_IA64_FltF84 = 2132, + CV_IA64_FltF85 = 2133, + CV_IA64_FltF86 = 2134, + CV_IA64_FltF87 = 2135, + CV_IA64_FltF88 = 2136, + CV_IA64_FltF89 = 2137, + CV_IA64_FltF90 = 2138, + CV_IA64_FltF91 = 2139, + CV_IA64_FltF92 = 2140, + CV_IA64_FltF93 = 2141, + CV_IA64_FltF94 = 2142, + CV_IA64_FltF95 = 2143, + CV_IA64_FltF96 = 2144, + CV_IA64_FltF97 = 2145, + CV_IA64_FltF98 = 2146, + CV_IA64_FltF99 = 2147, + CV_IA64_FltF100 = 2148, + CV_IA64_FltF101 = 2149, + CV_IA64_FltF102 = 2150, + CV_IA64_FltF103 = 2151, + CV_IA64_FltF104 = 2152, + CV_IA64_FltF105 = 2153, + CV_IA64_FltF106 = 2154, + CV_IA64_FltF107 = 2155, + CV_IA64_FltF108 = 2156, + CV_IA64_FltF109 = 2157, + CV_IA64_FltF110 = 2158, + CV_IA64_FltF111 = 2159, + CV_IA64_FltF112 = 2160, + CV_IA64_FltF113 = 2161, + CV_IA64_FltF114 = 2162, + CV_IA64_FltF115 = 2163, + CV_IA64_FltF116 = 2164, + CV_IA64_FltF117 = 2165, + CV_IA64_FltF118 = 2166, + CV_IA64_FltF119 = 2167, + CV_IA64_FltF120 = 2168, + CV_IA64_FltF121 = 2169, + CV_IA64_FltF122 = 2170, + CV_IA64_FltF123 = 2171, + CV_IA64_FltF124 = 2172, + CV_IA64_FltF125 = 2173, + CV_IA64_FltF126 = 2174, + CV_IA64_FltF127 = 2175, + + // Application Registers + + CV_IA64_ApKR0 = 3072, + CV_IA64_ApKR1 = 3073, + CV_IA64_ApKR2 = 3074, + CV_IA64_ApKR3 = 3075, + CV_IA64_ApKR4 = 3076, + CV_IA64_ApKR5 = 3077, + CV_IA64_ApKR6 = 3078, + CV_IA64_ApKR7 = 3079, + CV_IA64_AR8 = 3080, + CV_IA64_AR9 = 3081, + CV_IA64_AR10 = 3082, + CV_IA64_AR11 = 3083, + CV_IA64_AR12 = 3084, + CV_IA64_AR13 = 3085, + CV_IA64_AR14 = 3086, + CV_IA64_AR15 = 3087, + CV_IA64_RsRSC = 3088, + CV_IA64_RsBSP = 3089, + CV_IA64_RsBSPSTORE = 3090, + CV_IA64_RsRNAT = 3091, + CV_IA64_AR20 = 3092, + CV_IA64_StFCR = 3093, + CV_IA64_AR22 = 3094, + CV_IA64_AR23 = 3095, + CV_IA64_EFLAG = 3096, + CV_IA64_CSD = 3097, + CV_IA64_SSD = 3098, + CV_IA64_CFLG = 3099, + CV_IA64_StFSR = 3100, + CV_IA64_StFIR = 3101, + CV_IA64_StFDR = 3102, + CV_IA64_AR31 = 3103, + CV_IA64_ApCCV = 3104, + CV_IA64_AR33 = 3105, + CV_IA64_AR34 = 3106, + CV_IA64_AR35 = 3107, + CV_IA64_ApUNAT = 3108, + CV_IA64_AR37 = 3109, + CV_IA64_AR38 = 3110, + CV_IA64_AR39 = 3111, + CV_IA64_StFPSR = 3112, + CV_IA64_AR41 = 3113, + CV_IA64_AR42 = 3114, + CV_IA64_AR43 = 3115, + CV_IA64_ApITC = 3116, + CV_IA64_AR45 = 3117, + CV_IA64_AR46 = 3118, + CV_IA64_AR47 = 3119, + CV_IA64_AR48 = 3120, + CV_IA64_AR49 = 3121, + CV_IA64_AR50 = 3122, + CV_IA64_AR51 = 3123, + CV_IA64_AR52 = 3124, + CV_IA64_AR53 = 3125, + CV_IA64_AR54 = 3126, + CV_IA64_AR55 = 3127, + CV_IA64_AR56 = 3128, + CV_IA64_AR57 = 3129, + CV_IA64_AR58 = 3130, + CV_IA64_AR59 = 3131, + CV_IA64_AR60 = 3132, + CV_IA64_AR61 = 3133, + CV_IA64_AR62 = 3134, + CV_IA64_AR63 = 3135, + CV_IA64_RsPFS = 3136, + CV_IA64_ApLC = 3137, + CV_IA64_ApEC = 3138, + CV_IA64_AR67 = 3139, + CV_IA64_AR68 = 3140, + CV_IA64_AR69 = 3141, + CV_IA64_AR70 = 3142, + CV_IA64_AR71 = 3143, + CV_IA64_AR72 = 3144, + CV_IA64_AR73 = 3145, + CV_IA64_AR74 = 3146, + CV_IA64_AR75 = 3147, + CV_IA64_AR76 = 3148, + CV_IA64_AR77 = 3149, + CV_IA64_AR78 = 3150, + CV_IA64_AR79 = 3151, + CV_IA64_AR80 = 3152, + CV_IA64_AR81 = 3153, + CV_IA64_AR82 = 3154, + CV_IA64_AR83 = 3155, + CV_IA64_AR84 = 3156, + CV_IA64_AR85 = 3157, + CV_IA64_AR86 = 3158, + CV_IA64_AR87 = 3159, + CV_IA64_AR88 = 3160, + CV_IA64_AR89 = 3161, + CV_IA64_AR90 = 3162, + CV_IA64_AR91 = 3163, + CV_IA64_AR92 = 3164, + CV_IA64_AR93 = 3165, + CV_IA64_AR94 = 3166, + CV_IA64_AR95 = 3167, + CV_IA64_AR96 = 3168, + CV_IA64_AR97 = 3169, + CV_IA64_AR98 = 3170, + CV_IA64_AR99 = 3171, + CV_IA64_AR100 = 3172, + CV_IA64_AR101 = 3173, + CV_IA64_AR102 = 3174, + CV_IA64_AR103 = 3175, + CV_IA64_AR104 = 3176, + CV_IA64_AR105 = 3177, + CV_IA64_AR106 = 3178, + CV_IA64_AR107 = 3179, + CV_IA64_AR108 = 3180, + CV_IA64_AR109 = 3181, + CV_IA64_AR110 = 3182, + CV_IA64_AR111 = 3183, + CV_IA64_AR112 = 3184, + CV_IA64_AR113 = 3185, + CV_IA64_AR114 = 3186, + CV_IA64_AR115 = 3187, + CV_IA64_AR116 = 3188, + CV_IA64_AR117 = 3189, + CV_IA64_AR118 = 3190, + CV_IA64_AR119 = 3191, + CV_IA64_AR120 = 3192, + CV_IA64_AR121 = 3193, + CV_IA64_AR122 = 3194, + CV_IA64_AR123 = 3195, + CV_IA64_AR124 = 3196, + CV_IA64_AR125 = 3197, + CV_IA64_AR126 = 3198, + CV_IA64_AR127 = 3199, + + // CPUID Registers + + CV_IA64_CPUID0 = 3328, + CV_IA64_CPUID1 = 3329, + CV_IA64_CPUID2 = 3330, + CV_IA64_CPUID3 = 3331, + CV_IA64_CPUID4 = 3332, + + // Control Registers + + CV_IA64_ApDCR = 4096, + CV_IA64_ApITM = 4097, + CV_IA64_ApIVA = 4098, + CV_IA64_CR3 = 4099, + CV_IA64_CR4 = 4100, + CV_IA64_CR5 = 4101, + CV_IA64_CR6 = 4102, + CV_IA64_CR7 = 4103, + CV_IA64_ApPTA = 4104, + CV_IA64_ApGPTA = 4105, + CV_IA64_CR10 = 4106, + CV_IA64_CR11 = 4107, + CV_IA64_CR12 = 4108, + CV_IA64_CR13 = 4109, + CV_IA64_CR14 = 4110, + CV_IA64_CR15 = 4111, + CV_IA64_StIPSR = 4112, + CV_IA64_StISR = 4113, + CV_IA64_CR18 = 4114, + CV_IA64_StIIP = 4115, + CV_IA64_StIFA = 4116, + CV_IA64_StITIR = 4117, + CV_IA64_StIIPA = 4118, + CV_IA64_StIFS = 4119, + CV_IA64_StIIM = 4120, + CV_IA64_StIHA = 4121, + CV_IA64_CR26 = 4122, + CV_IA64_CR27 = 4123, + CV_IA64_CR28 = 4124, + CV_IA64_CR29 = 4125, + CV_IA64_CR30 = 4126, + CV_IA64_CR31 = 4127, + CV_IA64_CR32 = 4128, + CV_IA64_CR33 = 4129, + CV_IA64_CR34 = 4130, + CV_IA64_CR35 = 4131, + CV_IA64_CR36 = 4132, + CV_IA64_CR37 = 4133, + CV_IA64_CR38 = 4134, + CV_IA64_CR39 = 4135, + CV_IA64_CR40 = 4136, + CV_IA64_CR41 = 4137, + CV_IA64_CR42 = 4138, + CV_IA64_CR43 = 4139, + CV_IA64_CR44 = 4140, + CV_IA64_CR45 = 4141, + CV_IA64_CR46 = 4142, + CV_IA64_CR47 = 4143, + CV_IA64_CR48 = 4144, + CV_IA64_CR49 = 4145, + CV_IA64_CR50 = 4146, + CV_IA64_CR51 = 4147, + CV_IA64_CR52 = 4148, + CV_IA64_CR53 = 4149, + CV_IA64_CR54 = 4150, + CV_IA64_CR55 = 4151, + CV_IA64_CR56 = 4152, + CV_IA64_CR57 = 4153, + CV_IA64_CR58 = 4154, + CV_IA64_CR59 = 4155, + CV_IA64_CR60 = 4156, + CV_IA64_CR61 = 4157, + CV_IA64_CR62 = 4158, + CV_IA64_CR63 = 4159, + CV_IA64_SaLID = 4160, + CV_IA64_SaIVR = 4161, + CV_IA64_SaTPR = 4162, + CV_IA64_SaEOI = 4163, + CV_IA64_SaIRR0 = 4164, + CV_IA64_SaIRR1 = 4165, + CV_IA64_SaIRR2 = 4166, + CV_IA64_SaIRR3 = 4167, + CV_IA64_SaITV = 4168, + CV_IA64_SaPMV = 4169, + CV_IA64_SaCMCV = 4170, + CV_IA64_CR75 = 4171, + CV_IA64_CR76 = 4172, + CV_IA64_CR77 = 4173, + CV_IA64_CR78 = 4174, + CV_IA64_CR79 = 4175, + CV_IA64_SaLRR0 = 4176, + CV_IA64_SaLRR1 = 4177, + CV_IA64_CR82 = 4178, + CV_IA64_CR83 = 4179, + CV_IA64_CR84 = 4180, + CV_IA64_CR85 = 4181, + CV_IA64_CR86 = 4182, + CV_IA64_CR87 = 4183, + CV_IA64_CR88 = 4184, + CV_IA64_CR89 = 4185, + CV_IA64_CR90 = 4186, + CV_IA64_CR91 = 4187, + CV_IA64_CR92 = 4188, + CV_IA64_CR93 = 4189, + CV_IA64_CR94 = 4190, + CV_IA64_CR95 = 4191, + CV_IA64_CR96 = 4192, + CV_IA64_CR97 = 4193, + CV_IA64_CR98 = 4194, + CV_IA64_CR99 = 4195, + CV_IA64_CR100 = 4196, + CV_IA64_CR101 = 4197, + CV_IA64_CR102 = 4198, + CV_IA64_CR103 = 4199, + CV_IA64_CR104 = 4200, + CV_IA64_CR105 = 4201, + CV_IA64_CR106 = 4202, + CV_IA64_CR107 = 4203, + CV_IA64_CR108 = 4204, + CV_IA64_CR109 = 4205, + CV_IA64_CR110 = 4206, + CV_IA64_CR111 = 4207, + CV_IA64_CR112 = 4208, + CV_IA64_CR113 = 4209, + CV_IA64_CR114 = 4210, + CV_IA64_CR115 = 4211, + CV_IA64_CR116 = 4212, + CV_IA64_CR117 = 4213, + CV_IA64_CR118 = 4214, + CV_IA64_CR119 = 4215, + CV_IA64_CR120 = 4216, + CV_IA64_CR121 = 4217, + CV_IA64_CR122 = 4218, + CV_IA64_CR123 = 4219, + CV_IA64_CR124 = 4220, + CV_IA64_CR125 = 4221, + CV_IA64_CR126 = 4222, + CV_IA64_CR127 = 4223, + + // Protection Key Registers + + CV_IA64_Pkr0 = 5120, + CV_IA64_Pkr1 = 5121, + CV_IA64_Pkr2 = 5122, + CV_IA64_Pkr3 = 5123, + CV_IA64_Pkr4 = 5124, + CV_IA64_Pkr5 = 5125, + CV_IA64_Pkr6 = 5126, + CV_IA64_Pkr7 = 5127, + CV_IA64_Pkr8 = 5128, + CV_IA64_Pkr9 = 5129, + CV_IA64_Pkr10 = 5130, + CV_IA64_Pkr11 = 5131, + CV_IA64_Pkr12 = 5132, + CV_IA64_Pkr13 = 5133, + CV_IA64_Pkr14 = 5134, + CV_IA64_Pkr15 = 5135, + + // Region Registers + + CV_IA64_Rr0 = 6144, + CV_IA64_Rr1 = 6145, + CV_IA64_Rr2 = 6146, + CV_IA64_Rr3 = 6147, + CV_IA64_Rr4 = 6148, + CV_IA64_Rr5 = 6149, + CV_IA64_Rr6 = 6150, + CV_IA64_Rr7 = 6151, + + // Performance Monitor Data Registers + + CV_IA64_PFD0 = 7168, + CV_IA64_PFD1 = 7169, + CV_IA64_PFD2 = 7170, + CV_IA64_PFD3 = 7171, + CV_IA64_PFD4 = 7172, + CV_IA64_PFD5 = 7173, + CV_IA64_PFD6 = 7174, + CV_IA64_PFD7 = 7175, + CV_IA64_PFD8 = 7176, + CV_IA64_PFD9 = 7177, + CV_IA64_PFD10 = 7178, + CV_IA64_PFD11 = 7179, + CV_IA64_PFD12 = 7180, + CV_IA64_PFD13 = 7181, + CV_IA64_PFD14 = 7182, + CV_IA64_PFD15 = 7183, + CV_IA64_PFD16 = 7184, + CV_IA64_PFD17 = 7185, + + // Performance Monitor Config Registers + + CV_IA64_PFC0 = 7424, + CV_IA64_PFC1 = 7425, + CV_IA64_PFC2 = 7426, + CV_IA64_PFC3 = 7427, + CV_IA64_PFC4 = 7428, + CV_IA64_PFC5 = 7429, + CV_IA64_PFC6 = 7430, + CV_IA64_PFC7 = 7431, + CV_IA64_PFC8 = 7432, + CV_IA64_PFC9 = 7433, + CV_IA64_PFC10 = 7434, + CV_IA64_PFC11 = 7435, + CV_IA64_PFC12 = 7436, + CV_IA64_PFC13 = 7437, + CV_IA64_PFC14 = 7438, + CV_IA64_PFC15 = 7439, + + // Instruction Translation Registers + + CV_IA64_TrI0 = 8192, + CV_IA64_TrI1 = 8193, + CV_IA64_TrI2 = 8194, + CV_IA64_TrI3 = 8195, + CV_IA64_TrI4 = 8196, + CV_IA64_TrI5 = 8197, + CV_IA64_TrI6 = 8198, + CV_IA64_TrI7 = 8199, + + // Data Translation Registers + + CV_IA64_TrD0 = 8320, + CV_IA64_TrD1 = 8321, + CV_IA64_TrD2 = 8322, + CV_IA64_TrD3 = 8323, + CV_IA64_TrD4 = 8324, + CV_IA64_TrD5 = 8325, + CV_IA64_TrD6 = 8326, + CV_IA64_TrD7 = 8327, + + // Instruction Breakpoint Registers + + CV_IA64_DbI0 = 8448, + CV_IA64_DbI1 = 8449, + CV_IA64_DbI2 = 8450, + CV_IA64_DbI3 = 8451, + CV_IA64_DbI4 = 8452, + CV_IA64_DbI5 = 8453, + CV_IA64_DbI6 = 8454, + CV_IA64_DbI7 = 8455, + + // Data Breakpoint Registers + + CV_IA64_DbD0 = 8576, + CV_IA64_DbD1 = 8577, + CV_IA64_DbD2 = 8578, + CV_IA64_DbD3 = 8579, + CV_IA64_DbD4 = 8580, + CV_IA64_DbD5 = 8581, + CV_IA64_DbD6 = 8582, + CV_IA64_DbD7 = 8583, + + // + // Register set for the TriCore processor. + // + + CV_TRI_NOREG = CV_REG_NONE, + + // General Purpose Data Registers + + CV_TRI_D0 = 10, + CV_TRI_D1 = 11, + CV_TRI_D2 = 12, + CV_TRI_D3 = 13, + CV_TRI_D4 = 14, + CV_TRI_D5 = 15, + CV_TRI_D6 = 16, + CV_TRI_D7 = 17, + CV_TRI_D8 = 18, + CV_TRI_D9 = 19, + CV_TRI_D10 = 20, + CV_TRI_D11 = 21, + CV_TRI_D12 = 22, + CV_TRI_D13 = 23, + CV_TRI_D14 = 24, + CV_TRI_D15 = 25, + + // General Purpose Address Registers + + CV_TRI_A0 = 26, + CV_TRI_A1 = 27, + CV_TRI_A2 = 28, + CV_TRI_A3 = 29, + CV_TRI_A4 = 30, + CV_TRI_A5 = 31, + CV_TRI_A6 = 32, + CV_TRI_A7 = 33, + CV_TRI_A8 = 34, + CV_TRI_A9 = 35, + CV_TRI_A10 = 36, + CV_TRI_A11 = 37, + CV_TRI_A12 = 38, + CV_TRI_A13 = 39, + CV_TRI_A14 = 40, + CV_TRI_A15 = 41, + + // Extended (64-bit) data registers + + CV_TRI_E0 = 42, + CV_TRI_E2 = 43, + CV_TRI_E4 = 44, + CV_TRI_E6 = 45, + CV_TRI_E8 = 46, + CV_TRI_E10 = 47, + CV_TRI_E12 = 48, + CV_TRI_E14 = 49, + + // Extended (64-bit) address registers + + CV_TRI_EA0 = 50, + CV_TRI_EA2 = 51, + CV_TRI_EA4 = 52, + CV_TRI_EA6 = 53, + CV_TRI_EA8 = 54, + CV_TRI_EA10 = 55, + CV_TRI_EA12 = 56, + CV_TRI_EA14 = 57, + + CV_TRI_PSW = 58, + CV_TRI_PCXI = 59, + CV_TRI_PC = 60, + CV_TRI_FCX = 61, + CV_TRI_LCX = 62, + CV_TRI_ISP = 63, + CV_TRI_ICR = 64, + CV_TRI_BIV = 65, + CV_TRI_BTV = 66, + CV_TRI_SYSCON = 67, + CV_TRI_DPRx_0 = 68, + CV_TRI_DPRx_1 = 69, + CV_TRI_DPRx_2 = 70, + CV_TRI_DPRx_3 = 71, + CV_TRI_CPRx_0 = 68, + CV_TRI_CPRx_1 = 69, + CV_TRI_CPRx_2 = 70, + CV_TRI_CPRx_3 = 71, + CV_TRI_DPMx_0 = 68, + CV_TRI_DPMx_1 = 69, + CV_TRI_DPMx_2 = 70, + CV_TRI_DPMx_3 = 71, + CV_TRI_CPMx_0 = 68, + CV_TRI_CPMx_1 = 69, + CV_TRI_CPMx_2 = 70, + CV_TRI_CPMx_3 = 71, + CV_TRI_DBGSSR = 72, + CV_TRI_EXEVT = 73, + CV_TRI_SWEVT = 74, + CV_TRI_CREVT = 75, + CV_TRI_TRnEVT = 76, + CV_TRI_MMUCON = 77, + CV_TRI_ASI = 78, + CV_TRI_TVA = 79, + CV_TRI_TPA = 80, + CV_TRI_TPX = 81, + CV_TRI_TFA = 82, + + // + // Register set for the AM33 and related processors. + // + + CV_AM33_NOREG = CV_REG_NONE, + + // "Extended" (general purpose integer) registers + CV_AM33_E0 = 10, + CV_AM33_E1 = 11, + CV_AM33_E2 = 12, + CV_AM33_E3 = 13, + CV_AM33_E4 = 14, + CV_AM33_E5 = 15, + CV_AM33_E6 = 16, + CV_AM33_E7 = 17, + + // Address registers + CV_AM33_A0 = 20, + CV_AM33_A1 = 21, + CV_AM33_A2 = 22, + CV_AM33_A3 = 23, + + // Integer data registers + CV_AM33_D0 = 30, + CV_AM33_D1 = 31, + CV_AM33_D2 = 32, + CV_AM33_D3 = 33, + + // (Single-precision) floating-point registers + CV_AM33_FS0 = 40, + CV_AM33_FS1 = 41, + CV_AM33_FS2 = 42, + CV_AM33_FS3 = 43, + CV_AM33_FS4 = 44, + CV_AM33_FS5 = 45, + CV_AM33_FS6 = 46, + CV_AM33_FS7 = 47, + CV_AM33_FS8 = 48, + CV_AM33_FS9 = 49, + CV_AM33_FS10 = 50, + CV_AM33_FS11 = 51, + CV_AM33_FS12 = 52, + CV_AM33_FS13 = 53, + CV_AM33_FS14 = 54, + CV_AM33_FS15 = 55, + CV_AM33_FS16 = 56, + CV_AM33_FS17 = 57, + CV_AM33_FS18 = 58, + CV_AM33_FS19 = 59, + CV_AM33_FS20 = 60, + CV_AM33_FS21 = 61, + CV_AM33_FS22 = 62, + CV_AM33_FS23 = 63, + CV_AM33_FS24 = 64, + CV_AM33_FS25 = 65, + CV_AM33_FS26 = 66, + CV_AM33_FS27 = 67, + CV_AM33_FS28 = 68, + CV_AM33_FS29 = 69, + CV_AM33_FS30 = 70, + CV_AM33_FS31 = 71, + + // Special purpose registers + + // Stack pointer + CV_AM33_SP = 80, + + // Program counter + CV_AM33_PC = 81, + + // Multiply-divide/accumulate registers + CV_AM33_MDR = 82, + CV_AM33_MDRQ = 83, + CV_AM33_MCRH = 84, + CV_AM33_MCRL = 85, + CV_AM33_MCVF = 86, + + // CPU status words + CV_AM33_EPSW = 87, + CV_AM33_FPCR = 88, + + // Loop buffer registers + CV_AM33_LIR = 89, + CV_AM33_LAR = 90, + + // + // Register set for the Mitsubishi M32R + // + + CV_M32R_NOREG = CV_REG_NONE, + + CV_M32R_R0 = 10, + CV_M32R_R1 = 11, + CV_M32R_R2 = 12, + CV_M32R_R3 = 13, + CV_M32R_R4 = 14, + CV_M32R_R5 = 15, + CV_M32R_R6 = 16, + CV_M32R_R7 = 17, + CV_M32R_R8 = 18, + CV_M32R_R9 = 19, + CV_M32R_R10 = 20, + CV_M32R_R11 = 21, + CV_M32R_R12 = 22, // Gloabal Pointer, if used + CV_M32R_R13 = 23, // Frame Pointer, if allocated + CV_M32R_R14 = 24, // Link Register + CV_M32R_R15 = 25, // Stack Pointer + CV_M32R_PSW = 26, // Preocessor Status Register + CV_M32R_CBR = 27, // Condition Bit Register + CV_M32R_SPI = 28, // Interrupt Stack Pointer + CV_M32R_SPU = 29, // User Stack Pointer + CV_M32R_SPO = 30, // OS Stack Pointer + CV_M32R_BPC = 31, // Backup Program Counter + CV_M32R_ACHI = 32, // Accumulator High + CV_M32R_ACLO = 33, // Accumulator Low + CV_M32R_PC = 34, // Program Counter + + // + // Register set for the SuperH SHMedia processor including compact + // mode + // + + // Integer - 64 bit general registers + CV_SHMEDIA_NOREG = CV_REG_NONE, + CV_SHMEDIA_R0 = 10, + CV_SHMEDIA_R1 = 11, + CV_SHMEDIA_R2 = 12, + CV_SHMEDIA_R3 = 13, + CV_SHMEDIA_R4 = 14, + CV_SHMEDIA_R5 = 15, + CV_SHMEDIA_R6 = 16, + CV_SHMEDIA_R7 = 17, + CV_SHMEDIA_R8 = 18, + CV_SHMEDIA_R9 = 19, + CV_SHMEDIA_R10 = 20, + CV_SHMEDIA_R11 = 21, + CV_SHMEDIA_R12 = 22, + CV_SHMEDIA_R13 = 23, + CV_SHMEDIA_R14 = 24, + CV_SHMEDIA_R15 = 25, + CV_SHMEDIA_R16 = 26, + CV_SHMEDIA_R17 = 27, + CV_SHMEDIA_R18 = 28, + CV_SHMEDIA_R19 = 29, + CV_SHMEDIA_R20 = 30, + CV_SHMEDIA_R21 = 31, + CV_SHMEDIA_R22 = 32, + CV_SHMEDIA_R23 = 33, + CV_SHMEDIA_R24 = 34, + CV_SHMEDIA_R25 = 35, + CV_SHMEDIA_R26 = 36, + CV_SHMEDIA_R27 = 37, + CV_SHMEDIA_R28 = 38, + CV_SHMEDIA_R29 = 39, + CV_SHMEDIA_R30 = 40, + CV_SHMEDIA_R31 = 41, + CV_SHMEDIA_R32 = 42, + CV_SHMEDIA_R33 = 43, + CV_SHMEDIA_R34 = 44, + CV_SHMEDIA_R35 = 45, + CV_SHMEDIA_R36 = 46, + CV_SHMEDIA_R37 = 47, + CV_SHMEDIA_R38 = 48, + CV_SHMEDIA_R39 = 49, + CV_SHMEDIA_R40 = 50, + CV_SHMEDIA_R41 = 51, + CV_SHMEDIA_R42 = 52, + CV_SHMEDIA_R43 = 53, + CV_SHMEDIA_R44 = 54, + CV_SHMEDIA_R45 = 55, + CV_SHMEDIA_R46 = 56, + CV_SHMEDIA_R47 = 57, + CV_SHMEDIA_R48 = 58, + CV_SHMEDIA_R49 = 59, + CV_SHMEDIA_R50 = 60, + CV_SHMEDIA_R51 = 61, + CV_SHMEDIA_R52 = 62, + CV_SHMEDIA_R53 = 63, + CV_SHMEDIA_R54 = 64, + CV_SHMEDIA_R55 = 65, + CV_SHMEDIA_R56 = 66, + CV_SHMEDIA_R57 = 67, + CV_SHMEDIA_R58 = 68, + CV_SHMEDIA_R59 = 69, + CV_SHMEDIA_R60 = 70, + CV_SHMEDIA_R61 = 71, + CV_SHMEDIA_R62 = 72, + CV_SHMEDIA_R63 = 73, + + // Target Registers - 32 bit + CV_SHMEDIA_TR0 = 74, + CV_SHMEDIA_TR1 = 75, + CV_SHMEDIA_TR2 = 76, + CV_SHMEDIA_TR3 = 77, + CV_SHMEDIA_TR4 = 78, + CV_SHMEDIA_TR5 = 79, + CV_SHMEDIA_TR6 = 80, + CV_SHMEDIA_TR7 = 81, + CV_SHMEDIA_TR8 = 82, // future-proof + CV_SHMEDIA_TR9 = 83, // future-proof + CV_SHMEDIA_TR10 = 84, // future-proof + CV_SHMEDIA_TR11 = 85, // future-proof + CV_SHMEDIA_TR12 = 86, // future-proof + CV_SHMEDIA_TR13 = 87, // future-proof + CV_SHMEDIA_TR14 = 88, // future-proof + CV_SHMEDIA_TR15 = 89, // future-proof + + // Single - 32 bit fp registers + CV_SHMEDIA_FR0 = 128, + CV_SHMEDIA_FR1 = 129, + CV_SHMEDIA_FR2 = 130, + CV_SHMEDIA_FR3 = 131, + CV_SHMEDIA_FR4 = 132, + CV_SHMEDIA_FR5 = 133, + CV_SHMEDIA_FR6 = 134, + CV_SHMEDIA_FR7 = 135, + CV_SHMEDIA_FR8 = 136, + CV_SHMEDIA_FR9 = 137, + CV_SHMEDIA_FR10 = 138, + CV_SHMEDIA_FR11 = 139, + CV_SHMEDIA_FR12 = 140, + CV_SHMEDIA_FR13 = 141, + CV_SHMEDIA_FR14 = 142, + CV_SHMEDIA_FR15 = 143, + CV_SHMEDIA_FR16 = 144, + CV_SHMEDIA_FR17 = 145, + CV_SHMEDIA_FR18 = 146, + CV_SHMEDIA_FR19 = 147, + CV_SHMEDIA_FR20 = 148, + CV_SHMEDIA_FR21 = 149, + CV_SHMEDIA_FR22 = 150, + CV_SHMEDIA_FR23 = 151, + CV_SHMEDIA_FR24 = 152, + CV_SHMEDIA_FR25 = 153, + CV_SHMEDIA_FR26 = 154, + CV_SHMEDIA_FR27 = 155, + CV_SHMEDIA_FR28 = 156, + CV_SHMEDIA_FR29 = 157, + CV_SHMEDIA_FR30 = 158, + CV_SHMEDIA_FR31 = 159, + CV_SHMEDIA_FR32 = 160, + CV_SHMEDIA_FR33 = 161, + CV_SHMEDIA_FR34 = 162, + CV_SHMEDIA_FR35 = 163, + CV_SHMEDIA_FR36 = 164, + CV_SHMEDIA_FR37 = 165, + CV_SHMEDIA_FR38 = 166, + CV_SHMEDIA_FR39 = 167, + CV_SHMEDIA_FR40 = 168, + CV_SHMEDIA_FR41 = 169, + CV_SHMEDIA_FR42 = 170, + CV_SHMEDIA_FR43 = 171, + CV_SHMEDIA_FR44 = 172, + CV_SHMEDIA_FR45 = 173, + CV_SHMEDIA_FR46 = 174, + CV_SHMEDIA_FR47 = 175, + CV_SHMEDIA_FR48 = 176, + CV_SHMEDIA_FR49 = 177, + CV_SHMEDIA_FR50 = 178, + CV_SHMEDIA_FR51 = 179, + CV_SHMEDIA_FR52 = 180, + CV_SHMEDIA_FR53 = 181, + CV_SHMEDIA_FR54 = 182, + CV_SHMEDIA_FR55 = 183, + CV_SHMEDIA_FR56 = 184, + CV_SHMEDIA_FR57 = 185, + CV_SHMEDIA_FR58 = 186, + CV_SHMEDIA_FR59 = 187, + CV_SHMEDIA_FR60 = 188, + CV_SHMEDIA_FR61 = 189, + CV_SHMEDIA_FR62 = 190, + CV_SHMEDIA_FR63 = 191, + + // Double - 64 bit synonyms for 32bit fp register pairs + // subtract 128 to find first base single register + CV_SHMEDIA_DR0 = 256, + CV_SHMEDIA_DR2 = 258, + CV_SHMEDIA_DR4 = 260, + CV_SHMEDIA_DR6 = 262, + CV_SHMEDIA_DR8 = 264, + CV_SHMEDIA_DR10 = 266, + CV_SHMEDIA_DR12 = 268, + CV_SHMEDIA_DR14 = 270, + CV_SHMEDIA_DR16 = 272, + CV_SHMEDIA_DR18 = 274, + CV_SHMEDIA_DR20 = 276, + CV_SHMEDIA_DR22 = 278, + CV_SHMEDIA_DR24 = 280, + CV_SHMEDIA_DR26 = 282, + CV_SHMEDIA_DR28 = 284, + CV_SHMEDIA_DR30 = 286, + CV_SHMEDIA_DR32 = 288, + CV_SHMEDIA_DR34 = 290, + CV_SHMEDIA_DR36 = 292, + CV_SHMEDIA_DR38 = 294, + CV_SHMEDIA_DR40 = 296, + CV_SHMEDIA_DR42 = 298, + CV_SHMEDIA_DR44 = 300, + CV_SHMEDIA_DR46 = 302, + CV_SHMEDIA_DR48 = 304, + CV_SHMEDIA_DR50 = 306, + CV_SHMEDIA_DR52 = 308, + CV_SHMEDIA_DR54 = 310, + CV_SHMEDIA_DR56 = 312, + CV_SHMEDIA_DR58 = 314, + CV_SHMEDIA_DR60 = 316, + CV_SHMEDIA_DR62 = 318, + + // Vector - 128 bit synonyms for 32bit fp register quads + // subtract 384 to find first base single register + CV_SHMEDIA_FV0 = 512, + CV_SHMEDIA_FV4 = 516, + CV_SHMEDIA_FV8 = 520, + CV_SHMEDIA_FV12 = 524, + CV_SHMEDIA_FV16 = 528, + CV_SHMEDIA_FV20 = 532, + CV_SHMEDIA_FV24 = 536, + CV_SHMEDIA_FV28 = 540, + CV_SHMEDIA_FV32 = 544, + CV_SHMEDIA_FV36 = 548, + CV_SHMEDIA_FV40 = 552, + CV_SHMEDIA_FV44 = 556, + CV_SHMEDIA_FV48 = 560, + CV_SHMEDIA_FV52 = 564, + CV_SHMEDIA_FV56 = 568, + CV_SHMEDIA_FV60 = 572, + + // Matrix - 512 bit synonyms for 16 adjacent 32bit fp registers + // subtract 896 to find first base single register + CV_SHMEDIA_MTRX0 = 1024, + CV_SHMEDIA_MTRX16 = 1040, + CV_SHMEDIA_MTRX32 = 1056, + CV_SHMEDIA_MTRX48 = 1072, + + // Control - Implementation defined 64bit control registers + CV_SHMEDIA_CR0 = 2000, + CV_SHMEDIA_CR1 = 2001, + CV_SHMEDIA_CR2 = 2002, + CV_SHMEDIA_CR3 = 2003, + CV_SHMEDIA_CR4 = 2004, + CV_SHMEDIA_CR5 = 2005, + CV_SHMEDIA_CR6 = 2006, + CV_SHMEDIA_CR7 = 2007, + CV_SHMEDIA_CR8 = 2008, + CV_SHMEDIA_CR9 = 2009, + CV_SHMEDIA_CR10 = 2010, + CV_SHMEDIA_CR11 = 2011, + CV_SHMEDIA_CR12 = 2012, + CV_SHMEDIA_CR13 = 2013, + CV_SHMEDIA_CR14 = 2014, + CV_SHMEDIA_CR15 = 2015, + CV_SHMEDIA_CR16 = 2016, + CV_SHMEDIA_CR17 = 2017, + CV_SHMEDIA_CR18 = 2018, + CV_SHMEDIA_CR19 = 2019, + CV_SHMEDIA_CR20 = 2020, + CV_SHMEDIA_CR21 = 2021, + CV_SHMEDIA_CR22 = 2022, + CV_SHMEDIA_CR23 = 2023, + CV_SHMEDIA_CR24 = 2024, + CV_SHMEDIA_CR25 = 2025, + CV_SHMEDIA_CR26 = 2026, + CV_SHMEDIA_CR27 = 2027, + CV_SHMEDIA_CR28 = 2028, + CV_SHMEDIA_CR29 = 2029, + CV_SHMEDIA_CR30 = 2030, + CV_SHMEDIA_CR31 = 2031, + CV_SHMEDIA_CR32 = 2032, + CV_SHMEDIA_CR33 = 2033, + CV_SHMEDIA_CR34 = 2034, + CV_SHMEDIA_CR35 = 2035, + CV_SHMEDIA_CR36 = 2036, + CV_SHMEDIA_CR37 = 2037, + CV_SHMEDIA_CR38 = 2038, + CV_SHMEDIA_CR39 = 2039, + CV_SHMEDIA_CR40 = 2040, + CV_SHMEDIA_CR41 = 2041, + CV_SHMEDIA_CR42 = 2042, + CV_SHMEDIA_CR43 = 2043, + CV_SHMEDIA_CR44 = 2044, + CV_SHMEDIA_CR45 = 2045, + CV_SHMEDIA_CR46 = 2046, + CV_SHMEDIA_CR47 = 2047, + CV_SHMEDIA_CR48 = 2048, + CV_SHMEDIA_CR49 = 2049, + CV_SHMEDIA_CR50 = 2050, + CV_SHMEDIA_CR51 = 2051, + CV_SHMEDIA_CR52 = 2052, + CV_SHMEDIA_CR53 = 2053, + CV_SHMEDIA_CR54 = 2054, + CV_SHMEDIA_CR55 = 2055, + CV_SHMEDIA_CR56 = 2056, + CV_SHMEDIA_CR57 = 2057, + CV_SHMEDIA_CR58 = 2058, + CV_SHMEDIA_CR59 = 2059, + CV_SHMEDIA_CR60 = 2060, + CV_SHMEDIA_CR61 = 2061, + CV_SHMEDIA_CR62 = 2062, + CV_SHMEDIA_CR63 = 2063, + + CV_SHMEDIA_FPSCR = 2064, + + // Compact mode synonyms + CV_SHMEDIA_GBR = CV_SHMEDIA_R16, + CV_SHMEDIA_MACL = 90, // synonym for lower 32bits of media R17 + CV_SHMEDIA_MACH = 91, // synonym for upper 32bits of media R17 + CV_SHMEDIA_PR = CV_SHMEDIA_R18, + CV_SHMEDIA_T = 92, // synonym for lowest bit of media R19 + CV_SHMEDIA_FPUL = CV_SHMEDIA_FR32, + CV_SHMEDIA_PC = 93, + CV_SHMEDIA_SR = CV_SHMEDIA_CR0, + + // + // AMD64 registers + // + + CV_AMD64_AL = 1, + CV_AMD64_CL = 2, + CV_AMD64_DL = 3, + CV_AMD64_BL = 4, + CV_AMD64_AH = 5, + CV_AMD64_CH = 6, + CV_AMD64_DH = 7, + CV_AMD64_BH = 8, + CV_AMD64_AX = 9, + CV_AMD64_CX = 10, + CV_AMD64_DX = 11, + CV_AMD64_BX = 12, + CV_AMD64_SP = 13, + CV_AMD64_BP = 14, + CV_AMD64_SI = 15, + CV_AMD64_DI = 16, + CV_AMD64_EAX = 17, + CV_AMD64_ECX = 18, + CV_AMD64_EDX = 19, + CV_AMD64_EBX = 20, + CV_AMD64_ESP = 21, + CV_AMD64_EBP = 22, + CV_AMD64_ESI = 23, + CV_AMD64_EDI = 24, + CV_AMD64_ES = 25, + CV_AMD64_CS = 26, + CV_AMD64_SS = 27, + CV_AMD64_DS = 28, + CV_AMD64_FS = 29, + CV_AMD64_GS = 30, + CV_AMD64_FLAGS = 32, + CV_AMD64_RIP = 33, + CV_AMD64_EFLAGS = 34, + + // Control registers + CV_AMD64_CR0 = 80, + CV_AMD64_CR1 = 81, + CV_AMD64_CR2 = 82, + CV_AMD64_CR3 = 83, + CV_AMD64_CR4 = 84, + CV_AMD64_CR8 = 88, + + // Debug registers + CV_AMD64_DR0 = 90, + CV_AMD64_DR1 = 91, + CV_AMD64_DR2 = 92, + CV_AMD64_DR3 = 93, + CV_AMD64_DR4 = 94, + CV_AMD64_DR5 = 95, + CV_AMD64_DR6 = 96, + CV_AMD64_DR7 = 97, + CV_AMD64_DR8 = 98, + CV_AMD64_DR9 = 99, + CV_AMD64_DR10 = 100, + CV_AMD64_DR11 = 101, + CV_AMD64_DR12 = 102, + CV_AMD64_DR13 = 103, + CV_AMD64_DR14 = 104, + CV_AMD64_DR15 = 105, + + CV_AMD64_GDTR = 110, + CV_AMD64_GDTL = 111, + CV_AMD64_IDTR = 112, + CV_AMD64_IDTL = 113, + CV_AMD64_LDTR = 114, + CV_AMD64_TR = 115, + + CV_AMD64_ST0 = 128, + CV_AMD64_ST1 = 129, + CV_AMD64_ST2 = 130, + CV_AMD64_ST3 = 131, + CV_AMD64_ST4 = 132, + CV_AMD64_ST5 = 133, + CV_AMD64_ST6 = 134, + CV_AMD64_ST7 = 135, + CV_AMD64_CTRL = 136, + CV_AMD64_STAT = 137, + CV_AMD64_TAG = 138, + CV_AMD64_FPIP = 139, + CV_AMD64_FPCS = 140, + CV_AMD64_FPDO = 141, + CV_AMD64_FPDS = 142, + CV_AMD64_ISEM = 143, + CV_AMD64_FPEIP = 144, + CV_AMD64_FPEDO = 145, + + CV_AMD64_MM0 = 146, + CV_AMD64_MM1 = 147, + CV_AMD64_MM2 = 148, + CV_AMD64_MM3 = 149, + CV_AMD64_MM4 = 150, + CV_AMD64_MM5 = 151, + CV_AMD64_MM6 = 152, + CV_AMD64_MM7 = 153, + + CV_AMD64_XMM0 = 154, // KATMAI registers + CV_AMD64_XMM1 = 155, + CV_AMD64_XMM2 = 156, + CV_AMD64_XMM3 = 157, + CV_AMD64_XMM4 = 158, + CV_AMD64_XMM5 = 159, + CV_AMD64_XMM6 = 160, + CV_AMD64_XMM7 = 161, + + CV_AMD64_XMM0_0 = 162, // KATMAI sub-registers + CV_AMD64_XMM0_1 = 163, + CV_AMD64_XMM0_2 = 164, + CV_AMD64_XMM0_3 = 165, + CV_AMD64_XMM1_0 = 166, + CV_AMD64_XMM1_1 = 167, + CV_AMD64_XMM1_2 = 168, + CV_AMD64_XMM1_3 = 169, + CV_AMD64_XMM2_0 = 170, + CV_AMD64_XMM2_1 = 171, + CV_AMD64_XMM2_2 = 172, + CV_AMD64_XMM2_3 = 173, + CV_AMD64_XMM3_0 = 174, + CV_AMD64_XMM3_1 = 175, + CV_AMD64_XMM3_2 = 176, + CV_AMD64_XMM3_3 = 177, + CV_AMD64_XMM4_0 = 178, + CV_AMD64_XMM4_1 = 179, + CV_AMD64_XMM4_2 = 180, + CV_AMD64_XMM4_3 = 181, + CV_AMD64_XMM5_0 = 182, + CV_AMD64_XMM5_1 = 183, + CV_AMD64_XMM5_2 = 184, + CV_AMD64_XMM5_3 = 185, + CV_AMD64_XMM6_0 = 186, + CV_AMD64_XMM6_1 = 187, + CV_AMD64_XMM6_2 = 188, + CV_AMD64_XMM6_3 = 189, + CV_AMD64_XMM7_0 = 190, + CV_AMD64_XMM7_1 = 191, + CV_AMD64_XMM7_2 = 192, + CV_AMD64_XMM7_3 = 193, + + CV_AMD64_XMM0L = 194, + CV_AMD64_XMM1L = 195, + CV_AMD64_XMM2L = 196, + CV_AMD64_XMM3L = 197, + CV_AMD64_XMM4L = 198, + CV_AMD64_XMM5L = 199, + CV_AMD64_XMM6L = 200, + CV_AMD64_XMM7L = 201, + + CV_AMD64_XMM0H = 202, + CV_AMD64_XMM1H = 203, + CV_AMD64_XMM2H = 204, + CV_AMD64_XMM3H = 205, + CV_AMD64_XMM4H = 206, + CV_AMD64_XMM5H = 207, + CV_AMD64_XMM6H = 208, + CV_AMD64_XMM7H = 209, + + CV_AMD64_MXCSR = 211, // XMM status register + + CV_AMD64_EMM0L = 220, // XMM sub-registers (WNI integer) + CV_AMD64_EMM1L = 221, + CV_AMD64_EMM2L = 222, + CV_AMD64_EMM3L = 223, + CV_AMD64_EMM4L = 224, + CV_AMD64_EMM5L = 225, + CV_AMD64_EMM6L = 226, + CV_AMD64_EMM7L = 227, + + CV_AMD64_EMM0H = 228, + CV_AMD64_EMM1H = 229, + CV_AMD64_EMM2H = 230, + CV_AMD64_EMM3H = 231, + CV_AMD64_EMM4H = 232, + CV_AMD64_EMM5H = 233, + CV_AMD64_EMM6H = 234, + CV_AMD64_EMM7H = 235, + + // do not change the order of these regs, first one must be even too + CV_AMD64_MM00 = 236, + CV_AMD64_MM01 = 237, + CV_AMD64_MM10 = 238, + CV_AMD64_MM11 = 239, + CV_AMD64_MM20 = 240, + CV_AMD64_MM21 = 241, + CV_AMD64_MM30 = 242, + CV_AMD64_MM31 = 243, + CV_AMD64_MM40 = 244, + CV_AMD64_MM41 = 245, + CV_AMD64_MM50 = 246, + CV_AMD64_MM51 = 247, + CV_AMD64_MM60 = 248, + CV_AMD64_MM61 = 249, + CV_AMD64_MM70 = 250, + CV_AMD64_MM71 = 251, + + // Extended KATMAI registers + CV_AMD64_XMM8 = 252, // KATMAI registers + CV_AMD64_XMM9 = 253, + CV_AMD64_XMM10 = 254, + CV_AMD64_XMM11 = 255, + CV_AMD64_XMM12 = 256, + CV_AMD64_XMM13 = 257, + CV_AMD64_XMM14 = 258, + CV_AMD64_XMM15 = 259, + + CV_AMD64_XMM8_0 = 260, // KATMAI sub-registers + CV_AMD64_XMM8_1 = 261, + CV_AMD64_XMM8_2 = 262, + CV_AMD64_XMM8_3 = 263, + CV_AMD64_XMM9_0 = 264, + CV_AMD64_XMM9_1 = 265, + CV_AMD64_XMM9_2 = 266, + CV_AMD64_XMM9_3 = 267, + CV_AMD64_XMM10_0 = 268, + CV_AMD64_XMM10_1 = 269, + CV_AMD64_XMM10_2 = 270, + CV_AMD64_XMM10_3 = 271, + CV_AMD64_XMM11_0 = 272, + CV_AMD64_XMM11_1 = 273, + CV_AMD64_XMM11_2 = 274, + CV_AMD64_XMM11_3 = 275, + CV_AMD64_XMM12_0 = 276, + CV_AMD64_XMM12_1 = 277, + CV_AMD64_XMM12_2 = 278, + CV_AMD64_XMM12_3 = 279, + CV_AMD64_XMM13_0 = 280, + CV_AMD64_XMM13_1 = 281, + CV_AMD64_XMM13_2 = 282, + CV_AMD64_XMM13_3 = 283, + CV_AMD64_XMM14_0 = 284, + CV_AMD64_XMM14_1 = 285, + CV_AMD64_XMM14_2 = 286, + CV_AMD64_XMM14_3 = 287, + CV_AMD64_XMM15_0 = 288, + CV_AMD64_XMM15_1 = 289, + CV_AMD64_XMM15_2 = 290, + CV_AMD64_XMM15_3 = 291, + + CV_AMD64_XMM8L = 292, + CV_AMD64_XMM9L = 293, + CV_AMD64_XMM10L = 294, + CV_AMD64_XMM11L = 295, + CV_AMD64_XMM12L = 296, + CV_AMD64_XMM13L = 297, + CV_AMD64_XMM14L = 298, + CV_AMD64_XMM15L = 299, + + CV_AMD64_XMM8H = 300, + CV_AMD64_XMM9H = 301, + CV_AMD64_XMM10H = 302, + CV_AMD64_XMM11H = 303, + CV_AMD64_XMM12H = 304, + CV_AMD64_XMM13H = 305, + CV_AMD64_XMM14H = 306, + CV_AMD64_XMM15H = 307, + + CV_AMD64_EMM8L = 308, // XMM sub-registers (WNI integer) + CV_AMD64_EMM9L = 309, + CV_AMD64_EMM10L = 310, + CV_AMD64_EMM11L = 311, + CV_AMD64_EMM12L = 312, + CV_AMD64_EMM13L = 313, + CV_AMD64_EMM14L = 314, + CV_AMD64_EMM15L = 315, + + CV_AMD64_EMM8H = 316, + CV_AMD64_EMM9H = 317, + CV_AMD64_EMM10H = 318, + CV_AMD64_EMM11H = 319, + CV_AMD64_EMM12H = 320, + CV_AMD64_EMM13H = 321, + CV_AMD64_EMM14H = 322, + CV_AMD64_EMM15H = 323, + + // Low byte forms of some standard registers + CV_AMD64_SIL = 324, + CV_AMD64_DIL = 325, + CV_AMD64_BPL = 326, + CV_AMD64_SPL = 327, + + // 64-bit regular registers + CV_AMD64_RAX = 328, + CV_AMD64_RBX = 329, + CV_AMD64_RCX = 330, + CV_AMD64_RDX = 331, + CV_AMD64_RSI = 332, + CV_AMD64_RDI = 333, + CV_AMD64_RBP = 334, + CV_AMD64_RSP = 335, + + // 64-bit integer registers with 8-, 16-, and 32-bit forms (B, W, and D) + CV_AMD64_R8 = 336, + CV_AMD64_R9 = 337, + CV_AMD64_R10 = 338, + CV_AMD64_R11 = 339, + CV_AMD64_R12 = 340, + CV_AMD64_R13 = 341, + CV_AMD64_R14 = 342, + CV_AMD64_R15 = 343, + + CV_AMD64_R8B = 344, + CV_AMD64_R9B = 345, + CV_AMD64_R10B = 346, + CV_AMD64_R11B = 347, + CV_AMD64_R12B = 348, + CV_AMD64_R13B = 349, + CV_AMD64_R14B = 350, + CV_AMD64_R15B = 351, + + CV_AMD64_R8W = 352, + CV_AMD64_R9W = 353, + CV_AMD64_R10W = 354, + CV_AMD64_R11W = 355, + CV_AMD64_R12W = 356, + CV_AMD64_R13W = 357, + CV_AMD64_R14W = 358, + CV_AMD64_R15W = 359, + + CV_AMD64_R8D = 360, + CV_AMD64_R9D = 361, + CV_AMD64_R10D = 362, + CV_AMD64_R11D = 363, + CV_AMD64_R12D = 364, + CV_AMD64_R13D = 365, + CV_AMD64_R14D = 366, + CV_AMD64_R15D = 367, + + // AVX registers 256 bits + CV_AMD64_YMM0 = 368, + CV_AMD64_YMM1 = 369, + CV_AMD64_YMM2 = 370, + CV_AMD64_YMM3 = 371, + CV_AMD64_YMM4 = 372, + CV_AMD64_YMM5 = 373, + CV_AMD64_YMM6 = 374, + CV_AMD64_YMM7 = 375, + CV_AMD64_YMM8 = 376, + CV_AMD64_YMM9 = 377, + CV_AMD64_YMM10 = 378, + CV_AMD64_YMM11 = 379, + CV_AMD64_YMM12 = 380, + CV_AMD64_YMM13 = 381, + CV_AMD64_YMM14 = 382, + CV_AMD64_YMM15 = 383, + + // AVX registers upper 128 bits + CV_AMD64_YMM0H = 384, + CV_AMD64_YMM1H = 385, + CV_AMD64_YMM2H = 386, + CV_AMD64_YMM3H = 387, + CV_AMD64_YMM4H = 388, + CV_AMD64_YMM5H = 389, + CV_AMD64_YMM6H = 390, + CV_AMD64_YMM7H = 391, + CV_AMD64_YMM8H = 392, + CV_AMD64_YMM9H = 393, + CV_AMD64_YMM10H = 394, + CV_AMD64_YMM11H = 395, + CV_AMD64_YMM12H = 396, + CV_AMD64_YMM13H = 397, + CV_AMD64_YMM14H = 398, + CV_AMD64_YMM15H = 399, + + //Lower/upper 8 bytes of XMM registers. Unlike CV_AMD64_XMM, these + //values reprsesent the bit patterns of the registers as 64-bit integers, not + //the representation of these registers as a double. + CV_AMD64_XMM0IL = 400, + CV_AMD64_XMM1IL = 401, + CV_AMD64_XMM2IL = 402, + CV_AMD64_XMM3IL = 403, + CV_AMD64_XMM4IL = 404, + CV_AMD64_XMM5IL = 405, + CV_AMD64_XMM6IL = 406, + CV_AMD64_XMM7IL = 407, + CV_AMD64_XMM8IL = 408, + CV_AMD64_XMM9IL = 409, + CV_AMD64_XMM10IL = 410, + CV_AMD64_XMM11IL = 411, + CV_AMD64_XMM12IL = 412, + CV_AMD64_XMM13IL = 413, + CV_AMD64_XMM14IL = 414, + CV_AMD64_XMM15IL = 415, + + CV_AMD64_XMM0IH = 416, + CV_AMD64_XMM1IH = 417, + CV_AMD64_XMM2IH = 418, + CV_AMD64_XMM3IH = 419, + CV_AMD64_XMM4IH = 420, + CV_AMD64_XMM5IH = 421, + CV_AMD64_XMM6IH = 422, + CV_AMD64_XMM7IH = 423, + CV_AMD64_XMM8IH = 424, + CV_AMD64_XMM9IH = 425, + CV_AMD64_XMM10IH = 426, + CV_AMD64_XMM11IH = 427, + CV_AMD64_XMM12IH = 428, + CV_AMD64_XMM13IH = 429, + CV_AMD64_XMM14IH = 430, + CV_AMD64_XMM15IH = 431, + + CV_AMD64_YMM0I0 = 432, // AVX integer registers + CV_AMD64_YMM0I1 = 433, + CV_AMD64_YMM0I2 = 434, + CV_AMD64_YMM0I3 = 435, + CV_AMD64_YMM1I0 = 436, + CV_AMD64_YMM1I1 = 437, + CV_AMD64_YMM1I2 = 438, + CV_AMD64_YMM1I3 = 439, + CV_AMD64_YMM2I0 = 440, + CV_AMD64_YMM2I1 = 441, + CV_AMD64_YMM2I2 = 442, + CV_AMD64_YMM2I3 = 443, + CV_AMD64_YMM3I0 = 444, + CV_AMD64_YMM3I1 = 445, + CV_AMD64_YMM3I2 = 446, + CV_AMD64_YMM3I3 = 447, + CV_AMD64_YMM4I0 = 448, + CV_AMD64_YMM4I1 = 449, + CV_AMD64_YMM4I2 = 450, + CV_AMD64_YMM4I3 = 451, + CV_AMD64_YMM5I0 = 452, + CV_AMD64_YMM5I1 = 453, + CV_AMD64_YMM5I2 = 454, + CV_AMD64_YMM5I3 = 455, + CV_AMD64_YMM6I0 = 456, + CV_AMD64_YMM6I1 = 457, + CV_AMD64_YMM6I2 = 458, + CV_AMD64_YMM6I3 = 459, + CV_AMD64_YMM7I0 = 460, + CV_AMD64_YMM7I1 = 461, + CV_AMD64_YMM7I2 = 462, + CV_AMD64_YMM7I3 = 463, + CV_AMD64_YMM8I0 = 464, + CV_AMD64_YMM8I1 = 465, + CV_AMD64_YMM8I2 = 466, + CV_AMD64_YMM8I3 = 467, + CV_AMD64_YMM9I0 = 468, + CV_AMD64_YMM9I1 = 469, + CV_AMD64_YMM9I2 = 470, + CV_AMD64_YMM9I3 = 471, + CV_AMD64_YMM10I0 = 472, + CV_AMD64_YMM10I1 = 473, + CV_AMD64_YMM10I2 = 474, + CV_AMD64_YMM10I3 = 475, + CV_AMD64_YMM11I0 = 476, + CV_AMD64_YMM11I1 = 477, + CV_AMD64_YMM11I2 = 478, + CV_AMD64_YMM11I3 = 479, + CV_AMD64_YMM12I0 = 480, + CV_AMD64_YMM12I1 = 481, + CV_AMD64_YMM12I2 = 482, + CV_AMD64_YMM12I3 = 483, + CV_AMD64_YMM13I0 = 484, + CV_AMD64_YMM13I1 = 485, + CV_AMD64_YMM13I2 = 486, + CV_AMD64_YMM13I3 = 487, + CV_AMD64_YMM14I0 = 488, + CV_AMD64_YMM14I1 = 489, + CV_AMD64_YMM14I2 = 490, + CV_AMD64_YMM14I3 = 491, + CV_AMD64_YMM15I0 = 492, + CV_AMD64_YMM15I1 = 493, + CV_AMD64_YMM15I2 = 494, + CV_AMD64_YMM15I3 = 495, + + CV_AMD64_YMM0F0 = 496, // AVX floating-point single precise registers + CV_AMD64_YMM0F1 = 497, + CV_AMD64_YMM0F2 = 498, + CV_AMD64_YMM0F3 = 499, + CV_AMD64_YMM0F4 = 500, + CV_AMD64_YMM0F5 = 501, + CV_AMD64_YMM0F6 = 502, + CV_AMD64_YMM0F7 = 503, + CV_AMD64_YMM1F0 = 504, + CV_AMD64_YMM1F1 = 505, + CV_AMD64_YMM1F2 = 506, + CV_AMD64_YMM1F3 = 507, + CV_AMD64_YMM1F4 = 508, + CV_AMD64_YMM1F5 = 509, + CV_AMD64_YMM1F6 = 510, + CV_AMD64_YMM1F7 = 511, + CV_AMD64_YMM2F0 = 512, + CV_AMD64_YMM2F1 = 513, + CV_AMD64_YMM2F2 = 514, + CV_AMD64_YMM2F3 = 515, + CV_AMD64_YMM2F4 = 516, + CV_AMD64_YMM2F5 = 517, + CV_AMD64_YMM2F6 = 518, + CV_AMD64_YMM2F7 = 519, + CV_AMD64_YMM3F0 = 520, + CV_AMD64_YMM3F1 = 521, + CV_AMD64_YMM3F2 = 522, + CV_AMD64_YMM3F3 = 523, + CV_AMD64_YMM3F4 = 524, + CV_AMD64_YMM3F5 = 525, + CV_AMD64_YMM3F6 = 526, + CV_AMD64_YMM3F7 = 527, + CV_AMD64_YMM4F0 = 528, + CV_AMD64_YMM4F1 = 529, + CV_AMD64_YMM4F2 = 530, + CV_AMD64_YMM4F3 = 531, + CV_AMD64_YMM4F4 = 532, + CV_AMD64_YMM4F5 = 533, + CV_AMD64_YMM4F6 = 534, + CV_AMD64_YMM4F7 = 535, + CV_AMD64_YMM5F0 = 536, + CV_AMD64_YMM5F1 = 537, + CV_AMD64_YMM5F2 = 538, + CV_AMD64_YMM5F3 = 539, + CV_AMD64_YMM5F4 = 540, + CV_AMD64_YMM5F5 = 541, + CV_AMD64_YMM5F6 = 542, + CV_AMD64_YMM5F7 = 543, + CV_AMD64_YMM6F0 = 544, + CV_AMD64_YMM6F1 = 545, + CV_AMD64_YMM6F2 = 546, + CV_AMD64_YMM6F3 = 547, + CV_AMD64_YMM6F4 = 548, + CV_AMD64_YMM6F5 = 549, + CV_AMD64_YMM6F6 = 550, + CV_AMD64_YMM6F7 = 551, + CV_AMD64_YMM7F0 = 552, + CV_AMD64_YMM7F1 = 553, + CV_AMD64_YMM7F2 = 554, + CV_AMD64_YMM7F3 = 555, + CV_AMD64_YMM7F4 = 556, + CV_AMD64_YMM7F5 = 557, + CV_AMD64_YMM7F6 = 558, + CV_AMD64_YMM7F7 = 559, + CV_AMD64_YMM8F0 = 560, + CV_AMD64_YMM8F1 = 561, + CV_AMD64_YMM8F2 = 562, + CV_AMD64_YMM8F3 = 563, + CV_AMD64_YMM8F4 = 564, + CV_AMD64_YMM8F5 = 565, + CV_AMD64_YMM8F6 = 566, + CV_AMD64_YMM8F7 = 567, + CV_AMD64_YMM9F0 = 568, + CV_AMD64_YMM9F1 = 569, + CV_AMD64_YMM9F2 = 570, + CV_AMD64_YMM9F3 = 571, + CV_AMD64_YMM9F4 = 572, + CV_AMD64_YMM9F5 = 573, + CV_AMD64_YMM9F6 = 574, + CV_AMD64_YMM9F7 = 575, + CV_AMD64_YMM10F0 = 576, + CV_AMD64_YMM10F1 = 577, + CV_AMD64_YMM10F2 = 578, + CV_AMD64_YMM10F3 = 579, + CV_AMD64_YMM10F4 = 580, + CV_AMD64_YMM10F5 = 581, + CV_AMD64_YMM10F6 = 582, + CV_AMD64_YMM10F7 = 583, + CV_AMD64_YMM11F0 = 584, + CV_AMD64_YMM11F1 = 585, + CV_AMD64_YMM11F2 = 586, + CV_AMD64_YMM11F3 = 587, + CV_AMD64_YMM11F4 = 588, + CV_AMD64_YMM11F5 = 589, + CV_AMD64_YMM11F6 = 590, + CV_AMD64_YMM11F7 = 591, + CV_AMD64_YMM12F0 = 592, + CV_AMD64_YMM12F1 = 593, + CV_AMD64_YMM12F2 = 594, + CV_AMD64_YMM12F3 = 595, + CV_AMD64_YMM12F4 = 596, + CV_AMD64_YMM12F5 = 597, + CV_AMD64_YMM12F6 = 598, + CV_AMD64_YMM12F7 = 599, + CV_AMD64_YMM13F0 = 600, + CV_AMD64_YMM13F1 = 601, + CV_AMD64_YMM13F2 = 602, + CV_AMD64_YMM13F3 = 603, + CV_AMD64_YMM13F4 = 604, + CV_AMD64_YMM13F5 = 605, + CV_AMD64_YMM13F6 = 606, + CV_AMD64_YMM13F7 = 607, + CV_AMD64_YMM14F0 = 608, + CV_AMD64_YMM14F1 = 609, + CV_AMD64_YMM14F2 = 610, + CV_AMD64_YMM14F3 = 611, + CV_AMD64_YMM14F4 = 612, + CV_AMD64_YMM14F5 = 613, + CV_AMD64_YMM14F6 = 614, + CV_AMD64_YMM14F7 = 615, + CV_AMD64_YMM15F0 = 616, + CV_AMD64_YMM15F1 = 617, + CV_AMD64_YMM15F2 = 618, + CV_AMD64_YMM15F3 = 619, + CV_AMD64_YMM15F4 = 620, + CV_AMD64_YMM15F5 = 621, + CV_AMD64_YMM15F6 = 622, + CV_AMD64_YMM15F7 = 623, + + CV_AMD64_YMM0D0 = 624, // AVX floating-point double precise registers + CV_AMD64_YMM0D1 = 625, + CV_AMD64_YMM0D2 = 626, + CV_AMD64_YMM0D3 = 627, + CV_AMD64_YMM1D0 = 628, + CV_AMD64_YMM1D1 = 629, + CV_AMD64_YMM1D2 = 630, + CV_AMD64_YMM1D3 = 631, + CV_AMD64_YMM2D0 = 632, + CV_AMD64_YMM2D1 = 633, + CV_AMD64_YMM2D2 = 634, + CV_AMD64_YMM2D3 = 635, + CV_AMD64_YMM3D0 = 636, + CV_AMD64_YMM3D1 = 637, + CV_AMD64_YMM3D2 = 638, + CV_AMD64_YMM3D3 = 639, + CV_AMD64_YMM4D0 = 640, + CV_AMD64_YMM4D1 = 641, + CV_AMD64_YMM4D2 = 642, + CV_AMD64_YMM4D3 = 643, + CV_AMD64_YMM5D0 = 644, + CV_AMD64_YMM5D1 = 645, + CV_AMD64_YMM5D2 = 646, + CV_AMD64_YMM5D3 = 647, + CV_AMD64_YMM6D0 = 648, + CV_AMD64_YMM6D1 = 649, + CV_AMD64_YMM6D2 = 650, + CV_AMD64_YMM6D3 = 651, + CV_AMD64_YMM7D0 = 652, + CV_AMD64_YMM7D1 = 653, + CV_AMD64_YMM7D2 = 654, + CV_AMD64_YMM7D3 = 655, + CV_AMD64_YMM8D0 = 656, + CV_AMD64_YMM8D1 = 657, + CV_AMD64_YMM8D2 = 658, + CV_AMD64_YMM8D3 = 659, + CV_AMD64_YMM9D0 = 660, + CV_AMD64_YMM9D1 = 661, + CV_AMD64_YMM9D2 = 662, + CV_AMD64_YMM9D3 = 663, + CV_AMD64_YMM10D0 = 664, + CV_AMD64_YMM10D1 = 665, + CV_AMD64_YMM10D2 = 666, + CV_AMD64_YMM10D3 = 667, + CV_AMD64_YMM11D0 = 668, + CV_AMD64_YMM11D1 = 669, + CV_AMD64_YMM11D2 = 670, + CV_AMD64_YMM11D3 = 671, + CV_AMD64_YMM12D0 = 672, + CV_AMD64_YMM12D1 = 673, + CV_AMD64_YMM12D2 = 674, + CV_AMD64_YMM12D3 = 675, + CV_AMD64_YMM13D0 = 676, + CV_AMD64_YMM13D1 = 677, + CV_AMD64_YMM13D2 = 678, + CV_AMD64_YMM13D3 = 679, + CV_AMD64_YMM14D0 = 680, + CV_AMD64_YMM14D1 = 681, + CV_AMD64_YMM14D2 = 682, + CV_AMD64_YMM14D3 = 683, + CV_AMD64_YMM15D0 = 684, + CV_AMD64_YMM15D1 = 685, + CV_AMD64_YMM15D2 = 686, + CV_AMD64_YMM15D3 = 687, + + CV_AMD64_BND0 = 688, // AMD64 MPX bounds registers + CV_AMD64_BND1 = 689, + CV_AMD64_BND2 = 690, + CV_AMD64_BND3 = 691, + CV_AMD64_BNDCFGU = 692, + CV_AMD64_BNDSTATUS = 693, + + CV_AMD64_XMM16 = 694, // AVX-512 registers + CV_AMD64_XMM17 = 695, + CV_AMD64_XMM18 = 696, + CV_AMD64_XMM19 = 697, + CV_AMD64_XMM20 = 698, + CV_AMD64_XMM21 = 699, + CV_AMD64_XMM22 = 700, + CV_AMD64_XMM23 = 701, + CV_AMD64_XMM24 = 702, + CV_AMD64_XMM25 = 703, + CV_AMD64_XMM26 = 704, + CV_AMD64_XMM27 = 705, + CV_AMD64_XMM28 = 706, + CV_AMD64_XMM29 = 707, + CV_AMD64_XMM30 = 708, + CV_AMD64_XMM31 = 709, + + CV_AMD64_YMM16 = 710, + CV_AMD64_YMM17 = 711, + CV_AMD64_YMM18 = 712, + CV_AMD64_YMM19 = 713, + CV_AMD64_YMM20 = 714, + CV_AMD64_YMM21 = 715, + CV_AMD64_YMM22 = 716, + CV_AMD64_YMM23 = 717, + CV_AMD64_YMM24 = 718, + CV_AMD64_YMM25 = 719, + CV_AMD64_YMM26 = 720, + CV_AMD64_YMM27 = 721, + CV_AMD64_YMM28 = 722, + CV_AMD64_YMM29 = 723, + CV_AMD64_YMM30 = 724, + CV_AMD64_YMM31 = 725, + + CV_AMD64_ZMM0 = 726, + CV_AMD64_ZMM1 = 727, + CV_AMD64_ZMM2 = 728, + CV_AMD64_ZMM3 = 729, + CV_AMD64_ZMM4 = 730, + CV_AMD64_ZMM5 = 731, + CV_AMD64_ZMM6 = 732, + CV_AMD64_ZMM7 = 733, + CV_AMD64_ZMM8 = 734, + CV_AMD64_ZMM9 = 735, + CV_AMD64_ZMM10 = 736, + CV_AMD64_ZMM11 = 737, + CV_AMD64_ZMM12 = 738, + CV_AMD64_ZMM13 = 739, + CV_AMD64_ZMM14 = 740, + CV_AMD64_ZMM15 = 741, + CV_AMD64_ZMM16 = 742, + CV_AMD64_ZMM17 = 743, + CV_AMD64_ZMM18 = 744, + CV_AMD64_ZMM19 = 745, + CV_AMD64_ZMM20 = 746, + CV_AMD64_ZMM21 = 747, + CV_AMD64_ZMM22 = 748, + CV_AMD64_ZMM23 = 749, + CV_AMD64_ZMM24 = 750, + CV_AMD64_ZMM25 = 751, + CV_AMD64_ZMM26 = 752, + CV_AMD64_ZMM27 = 753, + CV_AMD64_ZMM28 = 754, + CV_AMD64_ZMM29 = 755, + CV_AMD64_ZMM30 = 756, + CV_AMD64_ZMM31 = 757, + + CV_AMD64_K0 = 758, + CV_AMD64_K1 = 759, + CV_AMD64_K2 = 760, + CV_AMD64_K3 = 761, + CV_AMD64_K4 = 762, + CV_AMD64_K5 = 763, + CV_AMD64_K6 = 764, + CV_AMD64_K7 = 765, + + CV_AMD64_ZMM0H = 766, // upper 256 bits of the first 16 AMD64 AVX-512 registers + CV_AMD64_ZMM1H = 767, + CV_AMD64_ZMM2H = 768, + CV_AMD64_ZMM3H = 769, + CV_AMD64_ZMM4H = 770, + CV_AMD64_ZMM5H = 771, + CV_AMD64_ZMM6H = 772, + CV_AMD64_ZMM7H = 773, + CV_AMD64_ZMM8H = 774, + CV_AMD64_ZMM9H = 775, + CV_AMD64_ZMM10H = 776, + CV_AMD64_ZMM11H = 777, + CV_AMD64_ZMM12H = 778, + CV_AMD64_ZMM13H = 779, + CV_AMD64_ZMM14H = 780, + CV_AMD64_ZMM15H = 781, + + CV_AMD64_XMM16L = 782, // extended KATMAI registers + CV_AMD64_XMM17L = 783, + CV_AMD64_XMM18L = 784, + CV_AMD64_XMM19L = 785, + CV_AMD64_XMM20L = 786, + CV_AMD64_XMM21L = 787, + CV_AMD64_XMM22L = 788, + CV_AMD64_XMM23L = 789, + CV_AMD64_XMM24L = 790, + CV_AMD64_XMM25L = 791, + CV_AMD64_XMM26L = 792, + CV_AMD64_XMM27L = 793, + CV_AMD64_XMM28L = 794, + CV_AMD64_XMM29L = 795, + CV_AMD64_XMM30L = 796, + CV_AMD64_XMM31L = 797, + + CV_AMD64_XMM16_0 = 798, + CV_AMD64_XMM17_0 = 799, + CV_AMD64_XMM18_0 = 800, + CV_AMD64_XMM19_0 = 801, + CV_AMD64_XMM20_0 = 802, + CV_AMD64_XMM21_0 = 803, + CV_AMD64_XMM22_0 = 804, + CV_AMD64_XMM23_0 = 805, + CV_AMD64_XMM24_0 = 806, + CV_AMD64_XMM25_0 = 807, + CV_AMD64_XMM26_0 = 808, + CV_AMD64_XMM27_0 = 809, + CV_AMD64_XMM28_0 = 810, + CV_AMD64_XMM29_0 = 811, + CV_AMD64_XMM30_0 = 812, + CV_AMD64_XMM31_0 = 813, + + CV_AMD64_XMM16H = 814, + CV_AMD64_XMM17H = 815, + CV_AMD64_XMM18H = 816, + CV_AMD64_XMM19H = 817, + CV_AMD64_XMM20H = 818, + CV_AMD64_XMM21H = 819, + CV_AMD64_XMM22H = 820, + CV_AMD64_XMM23H = 821, + CV_AMD64_XMM24H = 822, + CV_AMD64_XMM25H = 823, + CV_AMD64_XMM26H = 824, + CV_AMD64_XMM27H = 825, + CV_AMD64_XMM28H = 826, + CV_AMD64_XMM29H = 827, + CV_AMD64_XMM30H = 828, + CV_AMD64_XMM31H = 829, + + CV_AMD64_EMM16H = 830, + CV_AMD64_EMM17H = 831, + CV_AMD64_EMM18H = 832, + CV_AMD64_EMM19H = 833, + CV_AMD64_EMM20H = 834, + CV_AMD64_EMM21H = 835, + CV_AMD64_EMM22H = 836, + CV_AMD64_EMM23H = 837, + CV_AMD64_EMM24H = 838, + CV_AMD64_EMM25H = 839, + CV_AMD64_EMM26H = 840, + CV_AMD64_EMM27H = 841, + CV_AMD64_EMM28H = 842, + CV_AMD64_EMM29H = 843, + CV_AMD64_EMM30H = 844, + CV_AMD64_EMM31H = 845, + + // Note: Next set of platform registers need to go into a new enum... + // this one is above 44K now. + +} CV_HREG_e; + +typedef enum CV_HLSLREG_e +{ + CV_HLSLREG_TEMP = 0, + CV_HLSLREG_INPUT = 1, + CV_HLSLREG_OUTPUT = 2, + CV_HLSLREG_INDEXABLE_TEMP = 3, + CV_HLSLREG_IMMEDIATE32 = 4, + CV_HLSLREG_IMMEDIATE64 = 5, + CV_HLSLREG_SAMPLER = 6, + CV_HLSLREG_RESOURCE = 7, + CV_HLSLREG_CONSTANT_BUFFER = 8, + CV_HLSLREG_IMMEDIATE_CONSTANT_BUFFER = 9, + CV_HLSLREG_LABEL = 10, + CV_HLSLREG_INPUT_PRIMITIVEID = 11, + CV_HLSLREG_OUTPUT_DEPTH = 12, + CV_HLSLREG_NULL = 13, + CV_HLSLREG_RASTERIZER = 14, + CV_HLSLREG_OUTPUT_COVERAGE_MASK = 15, + CV_HLSLREG_STREAM = 16, + CV_HLSLREG_FUNCTION_BODY = 17, + CV_HLSLREG_FUNCTION_TABLE = 18, + CV_HLSLREG_INTERFACE = 19, + CV_HLSLREG_FUNCTION_INPUT = 20, + CV_HLSLREG_FUNCTION_OUTPUT = 21, + CV_HLSLREG_OUTPUT_CONTROL_POINT_ID = 22, + CV_HLSLREG_INPUT_FORK_INSTANCE_ID = 23, + CV_HLSLREG_INPUT_JOIN_INSTANCE_ID = 24, + CV_HLSLREG_INPUT_CONTROL_POINT = 25, + CV_HLSLREG_OUTPUT_CONTROL_POINT = 26, + CV_HLSLREG_INPUT_PATCH_CONSTANT = 27, + CV_HLSLREG_INPUT_DOMAIN_POINT = 28, + CV_HLSLREG_THIS_POINTER = 29, + CV_HLSLREG_UNORDERED_ACCESS_VIEW = 30, + CV_HLSLREG_THREAD_GROUP_SHARED_MEMORY = 31, + CV_HLSLREG_INPUT_THREAD_ID = 32, + CV_HLSLREG_INPUT_THREAD_GROUP_ID = 33, + CV_HLSLREG_INPUT_THREAD_ID_IN_GROUP = 34, + CV_HLSLREG_INPUT_COVERAGE_MASK = 35, + CV_HLSLREG_INPUT_THREAD_ID_IN_GROUP_FLATTENED = 36, + CV_HLSLREG_INPUT_GS_INSTANCE_ID = 37, + CV_HLSLREG_OUTPUT_DEPTH_GREATER_EQUAL = 38, + CV_HLSLREG_OUTPUT_DEPTH_LESS_EQUAL = 39, + CV_HLSLREG_CYCLE_COUNTER = 40, +} CV_HLSLREG_e; + +enum StackFrameTypeEnum +{ + FrameTypeFPO, // Frame pointer omitted, FPO info available + FrameTypeTrap, // Kernel Trap frame + FrameTypeTSS, // Kernel Trap frame + FrameTypeStandard, // Standard EBP stackframe + FrameTypeFrameData, // Frame pointer omitted, FrameData info available + + FrameTypeUnknown = -1, // Frame which does not have any debug info +}; + +enum MemoryTypeEnum +{ + MemTypeCode, // Read only code memory + MemTypeData, // Read only data/stack memory + MemTypeStack, // Read only stack memory + MemTypeCodeOnHeap, // Read only memory for code generated on heap by runtime + + MemTypeAny = -1, +}; + +typedef enum CV_HLSLMemorySpace_e +{ + // HLSL specific memory spaces + + CV_HLSL_MEMSPACE_DATA = 0x00, + CV_HLSL_MEMSPACE_SAMPLER = 0x01, + CV_HLSL_MEMSPACE_RESOURCE = 0x02, + CV_HLSL_MEMSPACE_RWRESOURCE = 0x03, + + CV_HLSL_MEMSPACE_MAX = 0x0F, +} CV_HLSLMemorySpace_e; + +enum +{ + NAMEHASH_BUILD_START, + NAMEHASH_BUILD_PAUSE, + NAMEHASH_BUILD_RESUME, + NAMEHASH_BUILD_COMPLETE, + NAMEHASH_BUILD_ERROR, + NAMEHASH_BUILD_OOM = NAMEHASH_BUILD_ERROR, + NAMEHASH_BUILD_FAIL_TO_OPEN_MOD, +}; + +#endif diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/dia2.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/dia2.h new file mode 100644 index 0000000..313b446 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/dia2.h @@ -0,0 +1,10646 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 8.01.0622 */ +/* @@MIDL_FILE_HEADING( ) */ + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCSAL_H_VERSION__ +#define __REQUIRED_RPCSAL_H_VERSION__ 100 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif /* __RPCNDR_H_VERSION__ */ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __dia2_h__ +#define __dia2_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IDiaLoadCallback_FWD_DEFINED__ +#define __IDiaLoadCallback_FWD_DEFINED__ +typedef interface IDiaLoadCallback IDiaLoadCallback; + +#endif /* __IDiaLoadCallback_FWD_DEFINED__ */ + + +#ifndef __IDiaLoadCallback2_FWD_DEFINED__ +#define __IDiaLoadCallback2_FWD_DEFINED__ +typedef interface IDiaLoadCallback2 IDiaLoadCallback2; + +#endif /* __IDiaLoadCallback2_FWD_DEFINED__ */ + + +#ifndef __IDiaReadExeAtOffsetCallback_FWD_DEFINED__ +#define __IDiaReadExeAtOffsetCallback_FWD_DEFINED__ +typedef interface IDiaReadExeAtOffsetCallback IDiaReadExeAtOffsetCallback; + +#endif /* __IDiaReadExeAtOffsetCallback_FWD_DEFINED__ */ + + +#ifndef __IDiaReadExeAtRVACallback_FWD_DEFINED__ +#define __IDiaReadExeAtRVACallback_FWD_DEFINED__ +typedef interface IDiaReadExeAtRVACallback IDiaReadExeAtRVACallback; + +#endif /* __IDiaReadExeAtRVACallback_FWD_DEFINED__ */ + + +#ifndef __IDiaDataSource_FWD_DEFINED__ +#define __IDiaDataSource_FWD_DEFINED__ +typedef interface IDiaDataSource IDiaDataSource; + +#endif /* __IDiaDataSource_FWD_DEFINED__ */ + + +#ifndef __IDiaEnumSymbols_FWD_DEFINED__ +#define __IDiaEnumSymbols_FWD_DEFINED__ +typedef interface IDiaEnumSymbols IDiaEnumSymbols; + +#endif /* __IDiaEnumSymbols_FWD_DEFINED__ */ + + +#ifndef __IDiaEnumSymbolsByAddr_FWD_DEFINED__ +#define __IDiaEnumSymbolsByAddr_FWD_DEFINED__ +typedef interface IDiaEnumSymbolsByAddr IDiaEnumSymbolsByAddr; + +#endif /* __IDiaEnumSymbolsByAddr_FWD_DEFINED__ */ + + +#ifndef __IDiaEnumSourceFiles_FWD_DEFINED__ +#define __IDiaEnumSourceFiles_FWD_DEFINED__ +typedef interface IDiaEnumSourceFiles IDiaEnumSourceFiles; + +#endif /* __IDiaEnumSourceFiles_FWD_DEFINED__ */ + + +#ifndef __IDiaEnumInputAssemblyFiles_FWD_DEFINED__ +#define __IDiaEnumInputAssemblyFiles_FWD_DEFINED__ +typedef interface IDiaEnumInputAssemblyFiles IDiaEnumInputAssemblyFiles; + +#endif /* __IDiaEnumInputAssemblyFiles_FWD_DEFINED__ */ + + +#ifndef __IDiaEnumLineNumbers_FWD_DEFINED__ +#define __IDiaEnumLineNumbers_FWD_DEFINED__ +typedef interface IDiaEnumLineNumbers IDiaEnumLineNumbers; + +#endif /* __IDiaEnumLineNumbers_FWD_DEFINED__ */ + + +#ifndef __IDiaEnumInjectedSources_FWD_DEFINED__ +#define __IDiaEnumInjectedSources_FWD_DEFINED__ +typedef interface IDiaEnumInjectedSources IDiaEnumInjectedSources; + +#endif /* __IDiaEnumInjectedSources_FWD_DEFINED__ */ + + +#ifndef __IDiaEnumSegments_FWD_DEFINED__ +#define __IDiaEnumSegments_FWD_DEFINED__ +typedef interface IDiaEnumSegments IDiaEnumSegments; + +#endif /* __IDiaEnumSegments_FWD_DEFINED__ */ + + +#ifndef __IDiaEnumSectionContribs_FWD_DEFINED__ +#define __IDiaEnumSectionContribs_FWD_DEFINED__ +typedef interface IDiaEnumSectionContribs IDiaEnumSectionContribs; + +#endif /* __IDiaEnumSectionContribs_FWD_DEFINED__ */ + + +#ifndef __IDiaEnumFrameData_FWD_DEFINED__ +#define __IDiaEnumFrameData_FWD_DEFINED__ +typedef interface IDiaEnumFrameData IDiaEnumFrameData; + +#endif /* __IDiaEnumFrameData_FWD_DEFINED__ */ + + +#ifndef __IDiaEnumDebugStreamData_FWD_DEFINED__ +#define __IDiaEnumDebugStreamData_FWD_DEFINED__ +typedef interface IDiaEnumDebugStreamData IDiaEnumDebugStreamData; + +#endif /* __IDiaEnumDebugStreamData_FWD_DEFINED__ */ + + +#ifndef __IDiaEnumDebugStreams_FWD_DEFINED__ +#define __IDiaEnumDebugStreams_FWD_DEFINED__ +typedef interface IDiaEnumDebugStreams IDiaEnumDebugStreams; + +#endif /* __IDiaEnumDebugStreams_FWD_DEFINED__ */ + + +#ifndef __IDiaAddressMap_FWD_DEFINED__ +#define __IDiaAddressMap_FWD_DEFINED__ +typedef interface IDiaAddressMap IDiaAddressMap; + +#endif /* __IDiaAddressMap_FWD_DEFINED__ */ + + +#ifndef __IDiaSession_FWD_DEFINED__ +#define __IDiaSession_FWD_DEFINED__ +typedef interface IDiaSession IDiaSession; + +#endif /* __IDiaSession_FWD_DEFINED__ */ + + +#ifndef __IDiaSymbol_FWD_DEFINED__ +#define __IDiaSymbol_FWD_DEFINED__ +typedef interface IDiaSymbol IDiaSymbol; + +#endif /* __IDiaSymbol_FWD_DEFINED__ */ + + +#ifndef __IDiaSourceFile_FWD_DEFINED__ +#define __IDiaSourceFile_FWD_DEFINED__ +typedef interface IDiaSourceFile IDiaSourceFile; + +#endif /* __IDiaSourceFile_FWD_DEFINED__ */ + + +#ifndef __IDiaInputAssemblyFile_FWD_DEFINED__ +#define __IDiaInputAssemblyFile_FWD_DEFINED__ +typedef interface IDiaInputAssemblyFile IDiaInputAssemblyFile; + +#endif /* __IDiaInputAssemblyFile_FWD_DEFINED__ */ + + +#ifndef __IDiaLineNumber_FWD_DEFINED__ +#define __IDiaLineNumber_FWD_DEFINED__ +typedef interface IDiaLineNumber IDiaLineNumber; + +#endif /* __IDiaLineNumber_FWD_DEFINED__ */ + + +#ifndef __IDiaSectionContrib_FWD_DEFINED__ +#define __IDiaSectionContrib_FWD_DEFINED__ +typedef interface IDiaSectionContrib IDiaSectionContrib; + +#endif /* __IDiaSectionContrib_FWD_DEFINED__ */ + + +#ifndef __IDiaSegment_FWD_DEFINED__ +#define __IDiaSegment_FWD_DEFINED__ +typedef interface IDiaSegment IDiaSegment; + +#endif /* __IDiaSegment_FWD_DEFINED__ */ + + +#ifndef __IDiaInjectedSource_FWD_DEFINED__ +#define __IDiaInjectedSource_FWD_DEFINED__ +typedef interface IDiaInjectedSource IDiaInjectedSource; + +#endif /* __IDiaInjectedSource_FWD_DEFINED__ */ + + +#ifndef __IDiaStackWalkFrame_FWD_DEFINED__ +#define __IDiaStackWalkFrame_FWD_DEFINED__ +typedef interface IDiaStackWalkFrame IDiaStackWalkFrame; + +#endif /* __IDiaStackWalkFrame_FWD_DEFINED__ */ + + +#ifndef __IDiaFrameData_FWD_DEFINED__ +#define __IDiaFrameData_FWD_DEFINED__ +typedef interface IDiaFrameData IDiaFrameData; + +#endif /* __IDiaFrameData_FWD_DEFINED__ */ + + +#ifndef __IDiaImageData_FWD_DEFINED__ +#define __IDiaImageData_FWD_DEFINED__ +typedef interface IDiaImageData IDiaImageData; + +#endif /* __IDiaImageData_FWD_DEFINED__ */ + + +#ifndef __IDiaTable_FWD_DEFINED__ +#define __IDiaTable_FWD_DEFINED__ +typedef interface IDiaTable IDiaTable; + +#endif /* __IDiaTable_FWD_DEFINED__ */ + + +#ifndef __IDiaEnumTables_FWD_DEFINED__ +#define __IDiaEnumTables_FWD_DEFINED__ +typedef interface IDiaEnumTables IDiaEnumTables; + +#endif /* __IDiaEnumTables_FWD_DEFINED__ */ + + +#ifndef __DiaSource_FWD_DEFINED__ +#define __DiaSource_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DiaSource DiaSource; +#else +typedef struct DiaSource DiaSource; +#endif /* __cplusplus */ + +#endif /* __DiaSource_FWD_DEFINED__ */ + + +#ifndef __DiaSourceAlt_FWD_DEFINED__ +#define __DiaSourceAlt_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DiaSourceAlt DiaSourceAlt; +#else +typedef struct DiaSourceAlt DiaSourceAlt; +#endif /* __cplusplus */ + +#endif /* __DiaSourceAlt_FWD_DEFINED__ */ + + +#ifndef __DiaStackWalker_FWD_DEFINED__ +#define __DiaStackWalker_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DiaStackWalker DiaStackWalker; +#else +typedef struct DiaStackWalker DiaStackWalker; +#endif /* __cplusplus */ + +#endif /* __DiaStackWalker_FWD_DEFINED__ */ + + +#ifndef __IDiaPropertyStorage_FWD_DEFINED__ +#define __IDiaPropertyStorage_FWD_DEFINED__ +typedef interface IDiaPropertyStorage IDiaPropertyStorage; + +#endif /* __IDiaPropertyStorage_FWD_DEFINED__ */ + + +#ifndef __IDiaStackFrame_FWD_DEFINED__ +#define __IDiaStackFrame_FWD_DEFINED__ +typedef interface IDiaStackFrame IDiaStackFrame; + +#endif /* __IDiaStackFrame_FWD_DEFINED__ */ + + +#ifndef __IDiaEnumStackFrames_FWD_DEFINED__ +#define __IDiaEnumStackFrames_FWD_DEFINED__ +typedef interface IDiaEnumStackFrames IDiaEnumStackFrames; + +#endif /* __IDiaEnumStackFrames_FWD_DEFINED__ */ + + +#ifndef __IDiaStackWalkHelper_FWD_DEFINED__ +#define __IDiaStackWalkHelper_FWD_DEFINED__ +typedef interface IDiaStackWalkHelper IDiaStackWalkHelper; + +#endif /* __IDiaStackWalkHelper_FWD_DEFINED__ */ + + +#ifndef __IDiaStackWalker_FWD_DEFINED__ +#define __IDiaStackWalker_FWD_DEFINED__ +typedef interface IDiaStackWalker IDiaStackWalker; + +#endif /* __IDiaStackWalker_FWD_DEFINED__ */ + + +#ifndef __IDiaStackWalkHelper2_FWD_DEFINED__ +#define __IDiaStackWalkHelper2_FWD_DEFINED__ +typedef interface IDiaStackWalkHelper2 IDiaStackWalkHelper2; + +#endif /* __IDiaStackWalkHelper2_FWD_DEFINED__ */ + + +#ifndef __IDiaStackWalker2_FWD_DEFINED__ +#define __IDiaStackWalker2_FWD_DEFINED__ +typedef interface IDiaStackWalker2 IDiaStackWalker2; + +#endif /* __IDiaStackWalker2_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "objidl.h" +#include "oaidl.h" +#include "propidl.h" +#include "cvconst.h" + +#ifdef __cplusplus +extern "C"{ +#endif + + +/* interface __MIDL_itf_dia2_0000_0000 */ +/* [local] */ + + +enum NameSearchOptions + { + nsNone = 0, + nsfCaseSensitive = 0x1, + nsfCaseInsensitive = 0x2, + nsfFNameExt = 0x4, + nsfRegularExpression = 0x8, + nsfUndecoratedName = 0x10, + nsCaseSensitive = nsfCaseSensitive, + nsCaseInsensitive = nsfCaseInsensitive, + nsFNameExt = ( nsfCaseInsensitive | nsfFNameExt ) , + nsRegularExpression = ( nsfRegularExpression | nsfCaseSensitive ) , + nsCaseInRegularExpression = ( nsfRegularExpression | nsfCaseInsensitive ) + } ; + +enum __MIDL___MIDL_itf_dia2_0000_0000_0001 + { + E_PDB_OK = ( HRESULT )(( ( ( ( unsigned long )1 << 31 ) | ( ( unsigned long )( LONG )0x6d << 16 ) ) | ( unsigned long )1 ) ), + E_PDB_USAGE = ( E_PDB_OK + 1 ) , + E_PDB_OUT_OF_MEMORY = ( E_PDB_USAGE + 1 ) , + E_PDB_FILE_SYSTEM = ( E_PDB_OUT_OF_MEMORY + 1 ) , + E_PDB_NOT_FOUND = ( E_PDB_FILE_SYSTEM + 1 ) , + E_PDB_INVALID_SIG = ( E_PDB_NOT_FOUND + 1 ) , + E_PDB_INVALID_AGE = ( E_PDB_INVALID_SIG + 1 ) , + E_PDB_PRECOMP_REQUIRED = ( E_PDB_INVALID_AGE + 1 ) , + E_PDB_OUT_OF_TI = ( E_PDB_PRECOMP_REQUIRED + 1 ) , + E_PDB_NOT_IMPLEMENTED = ( E_PDB_OUT_OF_TI + 1 ) , + E_PDB_V1_PDB = ( E_PDB_NOT_IMPLEMENTED + 1 ) , + E_PDB_FORMAT = ( E_PDB_V1_PDB + 1 ) , + E_PDB_LIMIT = ( E_PDB_FORMAT + 1 ) , + E_PDB_CORRUPT = ( E_PDB_LIMIT + 1 ) , + E_PDB_TI16 = ( E_PDB_CORRUPT + 1 ) , + E_PDB_ACCESS_DENIED = ( E_PDB_TI16 + 1 ) , + E_PDB_ILLEGAL_TYPE_EDIT = ( E_PDB_ACCESS_DENIED + 1 ) , + E_PDB_INVALID_EXECUTABLE = ( E_PDB_ILLEGAL_TYPE_EDIT + 1 ) , + E_PDB_DBG_NOT_FOUND = ( E_PDB_INVALID_EXECUTABLE + 1 ) , + E_PDB_NO_DEBUG_INFO = ( E_PDB_DBG_NOT_FOUND + 1 ) , + E_PDB_INVALID_EXE_TIMESTAMP = ( E_PDB_NO_DEBUG_INFO + 1 ) , + E_PDB_RESERVED = ( E_PDB_INVALID_EXE_TIMESTAMP + 1 ) , + E_PDB_DEBUG_INFO_NOT_IN_PDB = ( E_PDB_RESERVED + 1 ) , + E_PDB_SYMSRV_BAD_CACHE_PATH = ( E_PDB_DEBUG_INFO_NOT_IN_PDB + 1 ) , + E_PDB_SYMSRV_CACHE_FULL = ( E_PDB_SYMSRV_BAD_CACHE_PATH + 1 ) , + E_PDB_OBJECT_DISPOSED = ( E_PDB_SYMSRV_CACHE_FULL + 1 ) , + E_PDB_MAX = ( E_PDB_OBJECT_DISPOSED + 1 ) + } ; +typedef void ( __cdecl *PfnPDBDebugDirV )( + BOOL __MIDL____MIDL_itf_dia2_0000_00000000, + void *__MIDL____MIDL_itf_dia2_0000_00000001); + + + + + + + + + + + + + + + + + + + + +extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0000_v0_0_s_ifspec; + +#ifndef __IDiaLoadCallback_INTERFACE_DEFINED__ +#define __IDiaLoadCallback_INTERFACE_DEFINED__ + +/* interface IDiaLoadCallback */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaLoadCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C32ADB82-73F4-421b-95D5-A4706EDF5DBE") + IDiaLoadCallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE NotifyDebugDir( + /* [in] */ BOOL fExecutable, + /* [in] */ DWORD cbData, + /* [size_is][in] */ BYTE *pbData) = 0; + + virtual HRESULT STDMETHODCALLTYPE NotifyOpenDBG( + /* [in] */ LPCOLESTR dbgPath, + /* [in] */ HRESULT resultCode) = 0; + + virtual HRESULT STDMETHODCALLTYPE NotifyOpenPDB( + /* [in] */ LPCOLESTR pdbPath, + /* [in] */ HRESULT resultCode) = 0; + + virtual HRESULT STDMETHODCALLTYPE RestrictRegistryAccess( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE RestrictSymbolServerAccess( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaLoadCallbackVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaLoadCallback * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaLoadCallback * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaLoadCallback * This); + + HRESULT ( STDMETHODCALLTYPE *NotifyDebugDir )( + IDiaLoadCallback * This, + /* [in] */ BOOL fExecutable, + /* [in] */ DWORD cbData, + /* [size_is][in] */ BYTE *pbData); + + HRESULT ( STDMETHODCALLTYPE *NotifyOpenDBG )( + IDiaLoadCallback * This, + /* [in] */ LPCOLESTR dbgPath, + /* [in] */ HRESULT resultCode); + + HRESULT ( STDMETHODCALLTYPE *NotifyOpenPDB )( + IDiaLoadCallback * This, + /* [in] */ LPCOLESTR pdbPath, + /* [in] */ HRESULT resultCode); + + HRESULT ( STDMETHODCALLTYPE *RestrictRegistryAccess )( + IDiaLoadCallback * This); + + HRESULT ( STDMETHODCALLTYPE *RestrictSymbolServerAccess )( + IDiaLoadCallback * This); + + END_INTERFACE + } IDiaLoadCallbackVtbl; + + interface IDiaLoadCallback + { + CONST_VTBL struct IDiaLoadCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaLoadCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaLoadCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaLoadCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaLoadCallback_NotifyDebugDir(This,fExecutable,cbData,pbData) \ + ( (This)->lpVtbl -> NotifyDebugDir(This,fExecutable,cbData,pbData) ) + +#define IDiaLoadCallback_NotifyOpenDBG(This,dbgPath,resultCode) \ + ( (This)->lpVtbl -> NotifyOpenDBG(This,dbgPath,resultCode) ) + +#define IDiaLoadCallback_NotifyOpenPDB(This,pdbPath,resultCode) \ + ( (This)->lpVtbl -> NotifyOpenPDB(This,pdbPath,resultCode) ) + +#define IDiaLoadCallback_RestrictRegistryAccess(This) \ + ( (This)->lpVtbl -> RestrictRegistryAccess(This) ) + +#define IDiaLoadCallback_RestrictSymbolServerAccess(This) \ + ( (This)->lpVtbl -> RestrictSymbolServerAccess(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaLoadCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaLoadCallback2_INTERFACE_DEFINED__ +#define __IDiaLoadCallback2_INTERFACE_DEFINED__ + +/* interface IDiaLoadCallback2 */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaLoadCallback2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("4688a074-5a4d-4486-aea8-7b90711d9f7c") + IDiaLoadCallback2 : public IDiaLoadCallback + { + public: + virtual HRESULT STDMETHODCALLTYPE RestrictOriginalPathAccess( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE RestrictReferencePathAccess( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE RestrictDBGAccess( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE RestrictSystemRootAccess( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaLoadCallback2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaLoadCallback2 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaLoadCallback2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaLoadCallback2 * This); + + HRESULT ( STDMETHODCALLTYPE *NotifyDebugDir )( + IDiaLoadCallback2 * This, + /* [in] */ BOOL fExecutable, + /* [in] */ DWORD cbData, + /* [size_is][in] */ BYTE *pbData); + + HRESULT ( STDMETHODCALLTYPE *NotifyOpenDBG )( + IDiaLoadCallback2 * This, + /* [in] */ LPCOLESTR dbgPath, + /* [in] */ HRESULT resultCode); + + HRESULT ( STDMETHODCALLTYPE *NotifyOpenPDB )( + IDiaLoadCallback2 * This, + /* [in] */ LPCOLESTR pdbPath, + /* [in] */ HRESULT resultCode); + + HRESULT ( STDMETHODCALLTYPE *RestrictRegistryAccess )( + IDiaLoadCallback2 * This); + + HRESULT ( STDMETHODCALLTYPE *RestrictSymbolServerAccess )( + IDiaLoadCallback2 * This); + + HRESULT ( STDMETHODCALLTYPE *RestrictOriginalPathAccess )( + IDiaLoadCallback2 * This); + + HRESULT ( STDMETHODCALLTYPE *RestrictReferencePathAccess )( + IDiaLoadCallback2 * This); + + HRESULT ( STDMETHODCALLTYPE *RestrictDBGAccess )( + IDiaLoadCallback2 * This); + + HRESULT ( STDMETHODCALLTYPE *RestrictSystemRootAccess )( + IDiaLoadCallback2 * This); + + END_INTERFACE + } IDiaLoadCallback2Vtbl; + + interface IDiaLoadCallback2 + { + CONST_VTBL struct IDiaLoadCallback2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaLoadCallback2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaLoadCallback2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaLoadCallback2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaLoadCallback2_NotifyDebugDir(This,fExecutable,cbData,pbData) \ + ( (This)->lpVtbl -> NotifyDebugDir(This,fExecutable,cbData,pbData) ) + +#define IDiaLoadCallback2_NotifyOpenDBG(This,dbgPath,resultCode) \ + ( (This)->lpVtbl -> NotifyOpenDBG(This,dbgPath,resultCode) ) + +#define IDiaLoadCallback2_NotifyOpenPDB(This,pdbPath,resultCode) \ + ( (This)->lpVtbl -> NotifyOpenPDB(This,pdbPath,resultCode) ) + +#define IDiaLoadCallback2_RestrictRegistryAccess(This) \ + ( (This)->lpVtbl -> RestrictRegistryAccess(This) ) + +#define IDiaLoadCallback2_RestrictSymbolServerAccess(This) \ + ( (This)->lpVtbl -> RestrictSymbolServerAccess(This) ) + + +#define IDiaLoadCallback2_RestrictOriginalPathAccess(This) \ + ( (This)->lpVtbl -> RestrictOriginalPathAccess(This) ) + +#define IDiaLoadCallback2_RestrictReferencePathAccess(This) \ + ( (This)->lpVtbl -> RestrictReferencePathAccess(This) ) + +#define IDiaLoadCallback2_RestrictDBGAccess(This) \ + ( (This)->lpVtbl -> RestrictDBGAccess(This) ) + +#define IDiaLoadCallback2_RestrictSystemRootAccess(This) \ + ( (This)->lpVtbl -> RestrictSystemRootAccess(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaLoadCallback2_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaReadExeAtOffsetCallback_INTERFACE_DEFINED__ +#define __IDiaReadExeAtOffsetCallback_INTERFACE_DEFINED__ + +/* interface IDiaReadExeAtOffsetCallback */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaReadExeAtOffsetCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("587A461C-B80B-4f54-9194-5032589A6319") + IDiaReadExeAtOffsetCallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ReadExecutableAt( + /* [in] */ DWORDLONG fileOffset, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaReadExeAtOffsetCallbackVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaReadExeAtOffsetCallback * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaReadExeAtOffsetCallback * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaReadExeAtOffsetCallback * This); + + HRESULT ( STDMETHODCALLTYPE *ReadExecutableAt )( + IDiaReadExeAtOffsetCallback * This, + /* [in] */ DWORDLONG fileOffset, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData); + + END_INTERFACE + } IDiaReadExeAtOffsetCallbackVtbl; + + interface IDiaReadExeAtOffsetCallback + { + CONST_VTBL struct IDiaReadExeAtOffsetCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaReadExeAtOffsetCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaReadExeAtOffsetCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaReadExeAtOffsetCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaReadExeAtOffsetCallback_ReadExecutableAt(This,fileOffset,cbData,pcbData,pbData) \ + ( (This)->lpVtbl -> ReadExecutableAt(This,fileOffset,cbData,pcbData,pbData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaReadExeAtOffsetCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaReadExeAtRVACallback_INTERFACE_DEFINED__ +#define __IDiaReadExeAtRVACallback_INTERFACE_DEFINED__ + +/* interface IDiaReadExeAtRVACallback */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaReadExeAtRVACallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8E3F80CA-7517-432a-BA07-285134AAEA8E") + IDiaReadExeAtRVACallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ReadExecutableAtRVA( + /* [in] */ DWORD relativeVirtualAddress, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaReadExeAtRVACallbackVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaReadExeAtRVACallback * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaReadExeAtRVACallback * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaReadExeAtRVACallback * This); + + HRESULT ( STDMETHODCALLTYPE *ReadExecutableAtRVA )( + IDiaReadExeAtRVACallback * This, + /* [in] */ DWORD relativeVirtualAddress, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData); + + END_INTERFACE + } IDiaReadExeAtRVACallbackVtbl; + + interface IDiaReadExeAtRVACallback + { + CONST_VTBL struct IDiaReadExeAtRVACallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaReadExeAtRVACallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaReadExeAtRVACallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaReadExeAtRVACallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaReadExeAtRVACallback_ReadExecutableAtRVA(This,relativeVirtualAddress,cbData,pcbData,pbData) \ + ( (This)->lpVtbl -> ReadExecutableAtRVA(This,relativeVirtualAddress,cbData,pcbData,pbData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaReadExeAtRVACallback_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaDataSource_INTERFACE_DEFINED__ +#define __IDiaDataSource_INTERFACE_DEFINED__ + +/* interface IDiaDataSource */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaDataSource; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("79F1BB5F-B66E-48e5-B6A9-1545C323CA3D") + IDiaDataSource : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lastError( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE loadDataFromPdb( + /* [in] */ LPCOLESTR pdbPath) = 0; + + virtual HRESULT STDMETHODCALLTYPE loadAndValidateDataFromPdb( + /* [in] */ LPCOLESTR pdbPath, + /* [in] */ GUID *pcsig70, + /* [in] */ DWORD sig, + /* [in] */ DWORD age) = 0; + + virtual HRESULT STDMETHODCALLTYPE loadDataForExe( + /* [in] */ LPCOLESTR executable, + /* [in] */ LPCOLESTR searchPath, + /* [in] */ IUnknown *pCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE loadDataFromIStream( + /* [in] */ IStream *pIStream) = 0; + + virtual HRESULT STDMETHODCALLTYPE openSession( + /* [out] */ IDiaSession **ppSession) = 0; + + virtual HRESULT STDMETHODCALLTYPE loadDataFromCodeViewInfo( + /* [in] */ LPCOLESTR executable, + /* [in] */ LPCOLESTR searchPath, + /* [in] */ DWORD cbCvInfo, + /* [size_is][in] */ BYTE *pbCvInfo, + /* [in] */ IUnknown *pCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE loadDataFromMiscInfo( + /* [in] */ LPCOLESTR executable, + /* [in] */ LPCOLESTR searchPath, + /* [in] */ DWORD timeStampExe, + /* [in] */ DWORD timeStampDbg, + /* [in] */ DWORD sizeOfExe, + /* [in] */ DWORD cbMiscInfo, + /* [size_is][in] */ BYTE *pbMiscInfo, + /* [in] */ IUnknown *pCallback) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaDataSourceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaDataSource * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaDataSource * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaDataSource * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lastError )( + IDiaDataSource * This, + /* [retval][out] */ BSTR *pRetVal); + + HRESULT ( STDMETHODCALLTYPE *loadDataFromPdb )( + IDiaDataSource * This, + /* [in] */ LPCOLESTR pdbPath); + + HRESULT ( STDMETHODCALLTYPE *loadAndValidateDataFromPdb )( + IDiaDataSource * This, + /* [in] */ LPCOLESTR pdbPath, + /* [in] */ GUID *pcsig70, + /* [in] */ DWORD sig, + /* [in] */ DWORD age); + + HRESULT ( STDMETHODCALLTYPE *loadDataForExe )( + IDiaDataSource * This, + /* [in] */ LPCOLESTR executable, + /* [in] */ LPCOLESTR searchPath, + /* [in] */ IUnknown *pCallback); + + HRESULT ( STDMETHODCALLTYPE *loadDataFromIStream )( + IDiaDataSource * This, + /* [in] */ IStream *pIStream); + + HRESULT ( STDMETHODCALLTYPE *openSession )( + IDiaDataSource * This, + /* [out] */ IDiaSession **ppSession); + + HRESULT ( STDMETHODCALLTYPE *loadDataFromCodeViewInfo )( + IDiaDataSource * This, + /* [in] */ LPCOLESTR executable, + /* [in] */ LPCOLESTR searchPath, + /* [in] */ DWORD cbCvInfo, + /* [size_is][in] */ BYTE *pbCvInfo, + /* [in] */ IUnknown *pCallback); + + HRESULT ( STDMETHODCALLTYPE *loadDataFromMiscInfo )( + IDiaDataSource * This, + /* [in] */ LPCOLESTR executable, + /* [in] */ LPCOLESTR searchPath, + /* [in] */ DWORD timeStampExe, + /* [in] */ DWORD timeStampDbg, + /* [in] */ DWORD sizeOfExe, + /* [in] */ DWORD cbMiscInfo, + /* [size_is][in] */ BYTE *pbMiscInfo, + /* [in] */ IUnknown *pCallback); + + END_INTERFACE + } IDiaDataSourceVtbl; + + interface IDiaDataSource + { + CONST_VTBL struct IDiaDataSourceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaDataSource_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaDataSource_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaDataSource_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaDataSource_get_lastError(This,pRetVal) \ + ( (This)->lpVtbl -> get_lastError(This,pRetVal) ) + +#define IDiaDataSource_loadDataFromPdb(This,pdbPath) \ + ( (This)->lpVtbl -> loadDataFromPdb(This,pdbPath) ) + +#define IDiaDataSource_loadAndValidateDataFromPdb(This,pdbPath,pcsig70,sig,age) \ + ( (This)->lpVtbl -> loadAndValidateDataFromPdb(This,pdbPath,pcsig70,sig,age) ) + +#define IDiaDataSource_loadDataForExe(This,executable,searchPath,pCallback) \ + ( (This)->lpVtbl -> loadDataForExe(This,executable,searchPath,pCallback) ) + +#define IDiaDataSource_loadDataFromIStream(This,pIStream) \ + ( (This)->lpVtbl -> loadDataFromIStream(This,pIStream) ) + +#define IDiaDataSource_openSession(This,ppSession) \ + ( (This)->lpVtbl -> openSession(This,ppSession) ) + +#define IDiaDataSource_loadDataFromCodeViewInfo(This,executable,searchPath,cbCvInfo,pbCvInfo,pCallback) \ + ( (This)->lpVtbl -> loadDataFromCodeViewInfo(This,executable,searchPath,cbCvInfo,pbCvInfo,pCallback) ) + +#define IDiaDataSource_loadDataFromMiscInfo(This,executable,searchPath,timeStampExe,timeStampDbg,sizeOfExe,cbMiscInfo,pbMiscInfo,pCallback) \ + ( (This)->lpVtbl -> loadDataFromMiscInfo(This,executable,searchPath,timeStampExe,timeStampDbg,sizeOfExe,cbMiscInfo,pbMiscInfo,pCallback) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaDataSource_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaEnumSymbols_INTERFACE_DEFINED__ +#define __IDiaEnumSymbols_INTERFACE_DEFINED__ + +/* interface IDiaEnumSymbols */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaEnumSymbols; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("CAB72C48-443B-48f5-9B0B-42F0820AB29A") + IDiaEnumSymbols : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ DWORD index, + /* [retval][out] */ IDiaSymbol **symbol) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [out] */ IDiaSymbol **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IDiaEnumSymbols **ppenum) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaEnumSymbolsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaEnumSymbols * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaEnumSymbols * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaEnumSymbols * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + IDiaEnumSymbols * This, + /* [retval][out] */ IUnknown **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + IDiaEnumSymbols * This, + /* [retval][out] */ LONG *pRetVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + IDiaEnumSymbols * This, + /* [in] */ DWORD index, + /* [retval][out] */ IDiaSymbol **symbol); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IDiaEnumSymbols * This, + /* [in] */ ULONG celt, + /* [out] */ IDiaSymbol **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IDiaEnumSymbols * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IDiaEnumSymbols * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDiaEnumSymbols * This, + /* [out] */ IDiaEnumSymbols **ppenum); + + END_INTERFACE + } IDiaEnumSymbolsVtbl; + + interface IDiaEnumSymbols + { + CONST_VTBL struct IDiaEnumSymbolsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaEnumSymbols_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaEnumSymbols_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaEnumSymbols_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaEnumSymbols_get__NewEnum(This,pRetVal) \ + ( (This)->lpVtbl -> get__NewEnum(This,pRetVal) ) + +#define IDiaEnumSymbols_get_Count(This,pRetVal) \ + ( (This)->lpVtbl -> get_Count(This,pRetVal) ) + +#define IDiaEnumSymbols_Item(This,index,symbol) \ + ( (This)->lpVtbl -> Item(This,index,symbol) ) + +#define IDiaEnumSymbols_Next(This,celt,rgelt,pceltFetched) \ + ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) + +#define IDiaEnumSymbols_Skip(This,celt) \ + ( (This)->lpVtbl -> Skip(This,celt) ) + +#define IDiaEnumSymbols_Reset(This) \ + ( (This)->lpVtbl -> Reset(This) ) + +#define IDiaEnumSymbols_Clone(This,ppenum) \ + ( (This)->lpVtbl -> Clone(This,ppenum) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaEnumSymbols_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaEnumSymbolsByAddr_INTERFACE_DEFINED__ +#define __IDiaEnumSymbolsByAddr_INTERFACE_DEFINED__ + +/* interface IDiaEnumSymbolsByAddr */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaEnumSymbolsByAddr; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("624B7D9C-24EA-4421-9D06-3B577471C1FA") + IDiaEnumSymbolsByAddr : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE symbolByAddr( + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [retval][out] */ IDiaSymbol **ppSymbol) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE symbolByRVA( + /* [in] */ DWORD relativeVirtualAddress, + /* [retval][out] */ IDiaSymbol **ppSymbol) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE symbolByVA( + /* [in] */ ULONGLONG virtualAddress, + /* [retval][out] */ IDiaSymbol **ppSymbol) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [out] */ IDiaSymbol **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Prev( + /* [in] */ ULONG celt, + /* [out] */ IDiaSymbol **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IDiaEnumSymbolsByAddr **ppenum) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaEnumSymbolsByAddrVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaEnumSymbolsByAddr * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaEnumSymbolsByAddr * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaEnumSymbolsByAddr * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *symbolByAddr )( + IDiaEnumSymbolsByAddr * This, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [retval][out] */ IDiaSymbol **ppSymbol); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *symbolByRVA )( + IDiaEnumSymbolsByAddr * This, + /* [in] */ DWORD relativeVirtualAddress, + /* [retval][out] */ IDiaSymbol **ppSymbol); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *symbolByVA )( + IDiaEnumSymbolsByAddr * This, + /* [in] */ ULONGLONG virtualAddress, + /* [retval][out] */ IDiaSymbol **ppSymbol); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IDiaEnumSymbolsByAddr * This, + /* [in] */ ULONG celt, + /* [out] */ IDiaSymbol **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Prev )( + IDiaEnumSymbolsByAddr * This, + /* [in] */ ULONG celt, + /* [out] */ IDiaSymbol **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDiaEnumSymbolsByAddr * This, + /* [out] */ IDiaEnumSymbolsByAddr **ppenum); + + END_INTERFACE + } IDiaEnumSymbolsByAddrVtbl; + + interface IDiaEnumSymbolsByAddr + { + CONST_VTBL struct IDiaEnumSymbolsByAddrVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaEnumSymbolsByAddr_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaEnumSymbolsByAddr_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaEnumSymbolsByAddr_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaEnumSymbolsByAddr_symbolByAddr(This,isect,offset,ppSymbol) \ + ( (This)->lpVtbl -> symbolByAddr(This,isect,offset,ppSymbol) ) + +#define IDiaEnumSymbolsByAddr_symbolByRVA(This,relativeVirtualAddress,ppSymbol) \ + ( (This)->lpVtbl -> symbolByRVA(This,relativeVirtualAddress,ppSymbol) ) + +#define IDiaEnumSymbolsByAddr_symbolByVA(This,virtualAddress,ppSymbol) \ + ( (This)->lpVtbl -> symbolByVA(This,virtualAddress,ppSymbol) ) + +#define IDiaEnumSymbolsByAddr_Next(This,celt,rgelt,pceltFetched) \ + ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) + +#define IDiaEnumSymbolsByAddr_Prev(This,celt,rgelt,pceltFetched) \ + ( (This)->lpVtbl -> Prev(This,celt,rgelt,pceltFetched) ) + +#define IDiaEnumSymbolsByAddr_Clone(This,ppenum) \ + ( (This)->lpVtbl -> Clone(This,ppenum) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaEnumSymbolsByAddr_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaEnumSourceFiles_INTERFACE_DEFINED__ +#define __IDiaEnumSourceFiles_INTERFACE_DEFINED__ + +/* interface IDiaEnumSourceFiles */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaEnumSourceFiles; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("10F3DBD9-664F-4469-B808-9471C7A50538") + IDiaEnumSourceFiles : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ DWORD index, + /* [retval][out] */ IDiaSourceFile **sourceFile) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [out] */ IDiaSourceFile **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IDiaEnumSourceFiles **ppenum) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaEnumSourceFilesVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaEnumSourceFiles * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaEnumSourceFiles * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaEnumSourceFiles * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + IDiaEnumSourceFiles * This, + /* [retval][out] */ IUnknown **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + IDiaEnumSourceFiles * This, + /* [retval][out] */ LONG *pRetVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + IDiaEnumSourceFiles * This, + /* [in] */ DWORD index, + /* [retval][out] */ IDiaSourceFile **sourceFile); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IDiaEnumSourceFiles * This, + /* [in] */ ULONG celt, + /* [out] */ IDiaSourceFile **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IDiaEnumSourceFiles * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IDiaEnumSourceFiles * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDiaEnumSourceFiles * This, + /* [out] */ IDiaEnumSourceFiles **ppenum); + + END_INTERFACE + } IDiaEnumSourceFilesVtbl; + + interface IDiaEnumSourceFiles + { + CONST_VTBL struct IDiaEnumSourceFilesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaEnumSourceFiles_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaEnumSourceFiles_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaEnumSourceFiles_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaEnumSourceFiles_get__NewEnum(This,pRetVal) \ + ( (This)->lpVtbl -> get__NewEnum(This,pRetVal) ) + +#define IDiaEnumSourceFiles_get_Count(This,pRetVal) \ + ( (This)->lpVtbl -> get_Count(This,pRetVal) ) + +#define IDiaEnumSourceFiles_Item(This,index,sourceFile) \ + ( (This)->lpVtbl -> Item(This,index,sourceFile) ) + +#define IDiaEnumSourceFiles_Next(This,celt,rgelt,pceltFetched) \ + ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) + +#define IDiaEnumSourceFiles_Skip(This,celt) \ + ( (This)->lpVtbl -> Skip(This,celt) ) + +#define IDiaEnumSourceFiles_Reset(This) \ + ( (This)->lpVtbl -> Reset(This) ) + +#define IDiaEnumSourceFiles_Clone(This,ppenum) \ + ( (This)->lpVtbl -> Clone(This,ppenum) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaEnumSourceFiles_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaEnumInputAssemblyFiles_INTERFACE_DEFINED__ +#define __IDiaEnumInputAssemblyFiles_INTERFACE_DEFINED__ + +/* interface IDiaEnumInputAssemblyFiles */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaEnumInputAssemblyFiles; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1C7FF653-51F7-457E-8419-B20F57EF7E4D") + IDiaEnumInputAssemblyFiles : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ DWORD index, + /* [retval][out] */ IDiaInputAssemblyFile **file) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [out] */ IDiaInputAssemblyFile **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IDiaEnumInputAssemblyFiles **ppenum) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaEnumInputAssemblyFilesVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaEnumInputAssemblyFiles * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaEnumInputAssemblyFiles * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaEnumInputAssemblyFiles * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + IDiaEnumInputAssemblyFiles * This, + /* [retval][out] */ IUnknown **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + IDiaEnumInputAssemblyFiles * This, + /* [retval][out] */ LONG *pRetVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + IDiaEnumInputAssemblyFiles * This, + /* [in] */ DWORD index, + /* [retval][out] */ IDiaInputAssemblyFile **file); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IDiaEnumInputAssemblyFiles * This, + /* [in] */ ULONG celt, + /* [out] */ IDiaInputAssemblyFile **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IDiaEnumInputAssemblyFiles * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IDiaEnumInputAssemblyFiles * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDiaEnumInputAssemblyFiles * This, + /* [out] */ IDiaEnumInputAssemblyFiles **ppenum); + + END_INTERFACE + } IDiaEnumInputAssemblyFilesVtbl; + + interface IDiaEnumInputAssemblyFiles + { + CONST_VTBL struct IDiaEnumInputAssemblyFilesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaEnumInputAssemblyFiles_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaEnumInputAssemblyFiles_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaEnumInputAssemblyFiles_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaEnumInputAssemblyFiles_get__NewEnum(This,pRetVal) \ + ( (This)->lpVtbl -> get__NewEnum(This,pRetVal) ) + +#define IDiaEnumInputAssemblyFiles_get_Count(This,pRetVal) \ + ( (This)->lpVtbl -> get_Count(This,pRetVal) ) + +#define IDiaEnumInputAssemblyFiles_Item(This,index,file) \ + ( (This)->lpVtbl -> Item(This,index,file) ) + +#define IDiaEnumInputAssemblyFiles_Next(This,celt,rgelt,pceltFetched) \ + ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) + +#define IDiaEnumInputAssemblyFiles_Skip(This,celt) \ + ( (This)->lpVtbl -> Skip(This,celt) ) + +#define IDiaEnumInputAssemblyFiles_Reset(This) \ + ( (This)->lpVtbl -> Reset(This) ) + +#define IDiaEnumInputAssemblyFiles_Clone(This,ppenum) \ + ( (This)->lpVtbl -> Clone(This,ppenum) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaEnumInputAssemblyFiles_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaEnumLineNumbers_INTERFACE_DEFINED__ +#define __IDiaEnumLineNumbers_INTERFACE_DEFINED__ + +/* interface IDiaEnumLineNumbers */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaEnumLineNumbers; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("FE30E878-54AC-44f1-81BA-39DE940F6052") + IDiaEnumLineNumbers : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ DWORD index, + /* [retval][out] */ IDiaLineNumber **lineNumber) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [out] */ IDiaLineNumber **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IDiaEnumLineNumbers **ppenum) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaEnumLineNumbersVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaEnumLineNumbers * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaEnumLineNumbers * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaEnumLineNumbers * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + IDiaEnumLineNumbers * This, + /* [retval][out] */ IUnknown **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + IDiaEnumLineNumbers * This, + /* [retval][out] */ LONG *pRetVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + IDiaEnumLineNumbers * This, + /* [in] */ DWORD index, + /* [retval][out] */ IDiaLineNumber **lineNumber); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IDiaEnumLineNumbers * This, + /* [in] */ ULONG celt, + /* [out] */ IDiaLineNumber **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IDiaEnumLineNumbers * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IDiaEnumLineNumbers * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDiaEnumLineNumbers * This, + /* [out] */ IDiaEnumLineNumbers **ppenum); + + END_INTERFACE + } IDiaEnumLineNumbersVtbl; + + interface IDiaEnumLineNumbers + { + CONST_VTBL struct IDiaEnumLineNumbersVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaEnumLineNumbers_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaEnumLineNumbers_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaEnumLineNumbers_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaEnumLineNumbers_get__NewEnum(This,pRetVal) \ + ( (This)->lpVtbl -> get__NewEnum(This,pRetVal) ) + +#define IDiaEnumLineNumbers_get_Count(This,pRetVal) \ + ( (This)->lpVtbl -> get_Count(This,pRetVal) ) + +#define IDiaEnumLineNumbers_Item(This,index,lineNumber) \ + ( (This)->lpVtbl -> Item(This,index,lineNumber) ) + +#define IDiaEnumLineNumbers_Next(This,celt,rgelt,pceltFetched) \ + ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) + +#define IDiaEnumLineNumbers_Skip(This,celt) \ + ( (This)->lpVtbl -> Skip(This,celt) ) + +#define IDiaEnumLineNumbers_Reset(This) \ + ( (This)->lpVtbl -> Reset(This) ) + +#define IDiaEnumLineNumbers_Clone(This,ppenum) \ + ( (This)->lpVtbl -> Clone(This,ppenum) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaEnumLineNumbers_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaEnumInjectedSources_INTERFACE_DEFINED__ +#define __IDiaEnumInjectedSources_INTERFACE_DEFINED__ + +/* interface IDiaEnumInjectedSources */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaEnumInjectedSources; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("D5612573-6925-4468-8883-98CDEC8C384A") + IDiaEnumInjectedSources : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ DWORD index, + /* [retval][out] */ IDiaInjectedSource **injectedSource) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [out] */ IDiaInjectedSource **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IDiaEnumInjectedSources **ppenum) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaEnumInjectedSourcesVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaEnumInjectedSources * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaEnumInjectedSources * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaEnumInjectedSources * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + IDiaEnumInjectedSources * This, + /* [retval][out] */ IUnknown **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + IDiaEnumInjectedSources * This, + /* [retval][out] */ LONG *pRetVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + IDiaEnumInjectedSources * This, + /* [in] */ DWORD index, + /* [retval][out] */ IDiaInjectedSource **injectedSource); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IDiaEnumInjectedSources * This, + /* [in] */ ULONG celt, + /* [out] */ IDiaInjectedSource **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IDiaEnumInjectedSources * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IDiaEnumInjectedSources * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDiaEnumInjectedSources * This, + /* [out] */ IDiaEnumInjectedSources **ppenum); + + END_INTERFACE + } IDiaEnumInjectedSourcesVtbl; + + interface IDiaEnumInjectedSources + { + CONST_VTBL struct IDiaEnumInjectedSourcesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaEnumInjectedSources_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaEnumInjectedSources_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaEnumInjectedSources_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaEnumInjectedSources_get__NewEnum(This,pRetVal) \ + ( (This)->lpVtbl -> get__NewEnum(This,pRetVal) ) + +#define IDiaEnumInjectedSources_get_Count(This,pRetVal) \ + ( (This)->lpVtbl -> get_Count(This,pRetVal) ) + +#define IDiaEnumInjectedSources_Item(This,index,injectedSource) \ + ( (This)->lpVtbl -> Item(This,index,injectedSource) ) + +#define IDiaEnumInjectedSources_Next(This,celt,rgelt,pceltFetched) \ + ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) + +#define IDiaEnumInjectedSources_Skip(This,celt) \ + ( (This)->lpVtbl -> Skip(This,celt) ) + +#define IDiaEnumInjectedSources_Reset(This) \ + ( (This)->lpVtbl -> Reset(This) ) + +#define IDiaEnumInjectedSources_Clone(This,ppenum) \ + ( (This)->lpVtbl -> Clone(This,ppenum) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaEnumInjectedSources_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaEnumSegments_INTERFACE_DEFINED__ +#define __IDiaEnumSegments_INTERFACE_DEFINED__ + +/* interface IDiaEnumSegments */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaEnumSegments; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("E8368CA9-01D1-419d-AC0C-E31235DBDA9F") + IDiaEnumSegments : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ DWORD index, + /* [retval][out] */ IDiaSegment **segment) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [out] */ IDiaSegment **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IDiaEnumSegments **ppenum) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaEnumSegmentsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaEnumSegments * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaEnumSegments * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaEnumSegments * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + IDiaEnumSegments * This, + /* [retval][out] */ IUnknown **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + IDiaEnumSegments * This, + /* [retval][out] */ LONG *pRetVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + IDiaEnumSegments * This, + /* [in] */ DWORD index, + /* [retval][out] */ IDiaSegment **segment); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IDiaEnumSegments * This, + /* [in] */ ULONG celt, + /* [out] */ IDiaSegment **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IDiaEnumSegments * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IDiaEnumSegments * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDiaEnumSegments * This, + /* [out] */ IDiaEnumSegments **ppenum); + + END_INTERFACE + } IDiaEnumSegmentsVtbl; + + interface IDiaEnumSegments + { + CONST_VTBL struct IDiaEnumSegmentsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaEnumSegments_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaEnumSegments_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaEnumSegments_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaEnumSegments_get__NewEnum(This,pRetVal) \ + ( (This)->lpVtbl -> get__NewEnum(This,pRetVal) ) + +#define IDiaEnumSegments_get_Count(This,pRetVal) \ + ( (This)->lpVtbl -> get_Count(This,pRetVal) ) + +#define IDiaEnumSegments_Item(This,index,segment) \ + ( (This)->lpVtbl -> Item(This,index,segment) ) + +#define IDiaEnumSegments_Next(This,celt,rgelt,pceltFetched) \ + ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) + +#define IDiaEnumSegments_Skip(This,celt) \ + ( (This)->lpVtbl -> Skip(This,celt) ) + +#define IDiaEnumSegments_Reset(This) \ + ( (This)->lpVtbl -> Reset(This) ) + +#define IDiaEnumSegments_Clone(This,ppenum) \ + ( (This)->lpVtbl -> Clone(This,ppenum) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaEnumSegments_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaEnumSectionContribs_INTERFACE_DEFINED__ +#define __IDiaEnumSectionContribs_INTERFACE_DEFINED__ + +/* interface IDiaEnumSectionContribs */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaEnumSectionContribs; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1994DEB2-2C82-4b1d-A57F-AFF424D54A68") + IDiaEnumSectionContribs : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ DWORD index, + /* [retval][out] */ IDiaSectionContrib **section) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [out] */ IDiaSectionContrib **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IDiaEnumSectionContribs **ppenum) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaEnumSectionContribsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaEnumSectionContribs * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaEnumSectionContribs * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaEnumSectionContribs * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + IDiaEnumSectionContribs * This, + /* [retval][out] */ IUnknown **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + IDiaEnumSectionContribs * This, + /* [retval][out] */ LONG *pRetVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + IDiaEnumSectionContribs * This, + /* [in] */ DWORD index, + /* [retval][out] */ IDiaSectionContrib **section); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IDiaEnumSectionContribs * This, + /* [in] */ ULONG celt, + /* [out] */ IDiaSectionContrib **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IDiaEnumSectionContribs * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IDiaEnumSectionContribs * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDiaEnumSectionContribs * This, + /* [out] */ IDiaEnumSectionContribs **ppenum); + + END_INTERFACE + } IDiaEnumSectionContribsVtbl; + + interface IDiaEnumSectionContribs + { + CONST_VTBL struct IDiaEnumSectionContribsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaEnumSectionContribs_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaEnumSectionContribs_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaEnumSectionContribs_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaEnumSectionContribs_get__NewEnum(This,pRetVal) \ + ( (This)->lpVtbl -> get__NewEnum(This,pRetVal) ) + +#define IDiaEnumSectionContribs_get_Count(This,pRetVal) \ + ( (This)->lpVtbl -> get_Count(This,pRetVal) ) + +#define IDiaEnumSectionContribs_Item(This,index,section) \ + ( (This)->lpVtbl -> Item(This,index,section) ) + +#define IDiaEnumSectionContribs_Next(This,celt,rgelt,pceltFetched) \ + ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) + +#define IDiaEnumSectionContribs_Skip(This,celt) \ + ( (This)->lpVtbl -> Skip(This,celt) ) + +#define IDiaEnumSectionContribs_Reset(This) \ + ( (This)->lpVtbl -> Reset(This) ) + +#define IDiaEnumSectionContribs_Clone(This,ppenum) \ + ( (This)->lpVtbl -> Clone(This,ppenum) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaEnumSectionContribs_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaEnumFrameData_INTERFACE_DEFINED__ +#define __IDiaEnumFrameData_INTERFACE_DEFINED__ + +/* interface IDiaEnumFrameData */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaEnumFrameData; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9FC77A4B-3C1C-44ed-A798-6C1DEEA53E1F") + IDiaEnumFrameData : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ DWORD index, + /* [retval][out] */ IDiaFrameData **frame) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [out] */ IDiaFrameData **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IDiaEnumFrameData **ppenum) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE frameByRVA( + /* [in] */ DWORD relativeVirtualAddress, + /* [retval][out] */ IDiaFrameData **frame) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE frameByVA( + /* [in] */ ULONGLONG virtualAddress, + /* [retval][out] */ IDiaFrameData **frame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaEnumFrameDataVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaEnumFrameData * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaEnumFrameData * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaEnumFrameData * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + IDiaEnumFrameData * This, + /* [retval][out] */ IUnknown **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + IDiaEnumFrameData * This, + /* [retval][out] */ LONG *pRetVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + IDiaEnumFrameData * This, + /* [in] */ DWORD index, + /* [retval][out] */ IDiaFrameData **frame); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IDiaEnumFrameData * This, + /* [in] */ ULONG celt, + /* [out] */ IDiaFrameData **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IDiaEnumFrameData * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IDiaEnumFrameData * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDiaEnumFrameData * This, + /* [out] */ IDiaEnumFrameData **ppenum); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *frameByRVA )( + IDiaEnumFrameData * This, + /* [in] */ DWORD relativeVirtualAddress, + /* [retval][out] */ IDiaFrameData **frame); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *frameByVA )( + IDiaEnumFrameData * This, + /* [in] */ ULONGLONG virtualAddress, + /* [retval][out] */ IDiaFrameData **frame); + + END_INTERFACE + } IDiaEnumFrameDataVtbl; + + interface IDiaEnumFrameData + { + CONST_VTBL struct IDiaEnumFrameDataVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaEnumFrameData_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaEnumFrameData_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaEnumFrameData_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaEnumFrameData_get__NewEnum(This,pRetVal) \ + ( (This)->lpVtbl -> get__NewEnum(This,pRetVal) ) + +#define IDiaEnumFrameData_get_Count(This,pRetVal) \ + ( (This)->lpVtbl -> get_Count(This,pRetVal) ) + +#define IDiaEnumFrameData_Item(This,index,frame) \ + ( (This)->lpVtbl -> Item(This,index,frame) ) + +#define IDiaEnumFrameData_Next(This,celt,rgelt,pceltFetched) \ + ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) + +#define IDiaEnumFrameData_Skip(This,celt) \ + ( (This)->lpVtbl -> Skip(This,celt) ) + +#define IDiaEnumFrameData_Reset(This) \ + ( (This)->lpVtbl -> Reset(This) ) + +#define IDiaEnumFrameData_Clone(This,ppenum) \ + ( (This)->lpVtbl -> Clone(This,ppenum) ) + +#define IDiaEnumFrameData_frameByRVA(This,relativeVirtualAddress,frame) \ + ( (This)->lpVtbl -> frameByRVA(This,relativeVirtualAddress,frame) ) + +#define IDiaEnumFrameData_frameByVA(This,virtualAddress,frame) \ + ( (This)->lpVtbl -> frameByVA(This,virtualAddress,frame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaEnumFrameData_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaEnumDebugStreamData_INTERFACE_DEFINED__ +#define __IDiaEnumDebugStreamData_INTERFACE_DEFINED__ + +/* interface IDiaEnumDebugStreamData */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaEnumDebugStreamData; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("486943E8-D187-4a6b-A3C4-291259FFF60D") + IDiaEnumDebugStreamData : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_name( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ DWORD index, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IDiaEnumDebugStreamData **ppenum) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaEnumDebugStreamDataVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaEnumDebugStreamData * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaEnumDebugStreamData * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaEnumDebugStreamData * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + IDiaEnumDebugStreamData * This, + /* [retval][out] */ IUnknown **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + IDiaEnumDebugStreamData * This, + /* [retval][out] */ LONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_name )( + IDiaEnumDebugStreamData * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + IDiaEnumDebugStreamData * This, + /* [in] */ DWORD index, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IDiaEnumDebugStreamData * This, + /* [in] */ ULONG celt, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IDiaEnumDebugStreamData * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IDiaEnumDebugStreamData * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDiaEnumDebugStreamData * This, + /* [out] */ IDiaEnumDebugStreamData **ppenum); + + END_INTERFACE + } IDiaEnumDebugStreamDataVtbl; + + interface IDiaEnumDebugStreamData + { + CONST_VTBL struct IDiaEnumDebugStreamDataVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaEnumDebugStreamData_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaEnumDebugStreamData_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaEnumDebugStreamData_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaEnumDebugStreamData_get__NewEnum(This,pRetVal) \ + ( (This)->lpVtbl -> get__NewEnum(This,pRetVal) ) + +#define IDiaEnumDebugStreamData_get_Count(This,pRetVal) \ + ( (This)->lpVtbl -> get_Count(This,pRetVal) ) + +#define IDiaEnumDebugStreamData_get_name(This,pRetVal) \ + ( (This)->lpVtbl -> get_name(This,pRetVal) ) + +#define IDiaEnumDebugStreamData_Item(This,index,cbData,pcbData,pbData) \ + ( (This)->lpVtbl -> Item(This,index,cbData,pcbData,pbData) ) + +#define IDiaEnumDebugStreamData_Next(This,celt,cbData,pcbData,pbData,pceltFetched) \ + ( (This)->lpVtbl -> Next(This,celt,cbData,pcbData,pbData,pceltFetched) ) + +#define IDiaEnumDebugStreamData_Skip(This,celt) \ + ( (This)->lpVtbl -> Skip(This,celt) ) + +#define IDiaEnumDebugStreamData_Reset(This) \ + ( (This)->lpVtbl -> Reset(This) ) + +#define IDiaEnumDebugStreamData_Clone(This,ppenum) \ + ( (This)->lpVtbl -> Clone(This,ppenum) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaEnumDebugStreamData_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaEnumDebugStreams_INTERFACE_DEFINED__ +#define __IDiaEnumDebugStreams_INTERFACE_DEFINED__ + +/* interface IDiaEnumDebugStreams */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaEnumDebugStreams; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("08CBB41E-47A6-4f87-92F1-1C9C87CED044") + IDiaEnumDebugStreams : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ VARIANT index, + /* [retval][out] */ IDiaEnumDebugStreamData **stream) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [out] */ IDiaEnumDebugStreamData **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IDiaEnumDebugStreams **ppenum) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaEnumDebugStreamsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaEnumDebugStreams * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaEnumDebugStreams * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaEnumDebugStreams * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + IDiaEnumDebugStreams * This, + /* [retval][out] */ IUnknown **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + IDiaEnumDebugStreams * This, + /* [retval][out] */ LONG *pRetVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + IDiaEnumDebugStreams * This, + /* [in] */ VARIANT index, + /* [retval][out] */ IDiaEnumDebugStreamData **stream); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IDiaEnumDebugStreams * This, + /* [in] */ ULONG celt, + /* [out] */ IDiaEnumDebugStreamData **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IDiaEnumDebugStreams * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IDiaEnumDebugStreams * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDiaEnumDebugStreams * This, + /* [out] */ IDiaEnumDebugStreams **ppenum); + + END_INTERFACE + } IDiaEnumDebugStreamsVtbl; + + interface IDiaEnumDebugStreams + { + CONST_VTBL struct IDiaEnumDebugStreamsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaEnumDebugStreams_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaEnumDebugStreams_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaEnumDebugStreams_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaEnumDebugStreams_get__NewEnum(This,pRetVal) \ + ( (This)->lpVtbl -> get__NewEnum(This,pRetVal) ) + +#define IDiaEnumDebugStreams_get_Count(This,pRetVal) \ + ( (This)->lpVtbl -> get_Count(This,pRetVal) ) + +#define IDiaEnumDebugStreams_Item(This,index,stream) \ + ( (This)->lpVtbl -> Item(This,index,stream) ) + +#define IDiaEnumDebugStreams_Next(This,celt,rgelt,pceltFetched) \ + ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) + +#define IDiaEnumDebugStreams_Skip(This,celt) \ + ( (This)->lpVtbl -> Skip(This,celt) ) + +#define IDiaEnumDebugStreams_Reset(This) \ + ( (This)->lpVtbl -> Reset(This) ) + +#define IDiaEnumDebugStreams_Clone(This,ppenum) \ + ( (This)->lpVtbl -> Clone(This,ppenum) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaEnumDebugStreams_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dia2_0000_0016 */ +/* [local] */ + +struct DiaAddressMapEntry + { + DWORD rva; + DWORD rvaTo; + } ; + + +extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0016_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0016_v0_0_s_ifspec; + +#ifndef __IDiaAddressMap_INTERFACE_DEFINED__ +#define __IDiaAddressMap_INTERFACE_DEFINED__ + +/* interface IDiaAddressMap */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaAddressMap; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B62A2E7A-067A-4ea3-B598-04C09717502C") + IDiaAddressMap : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_addressMapEnabled( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_addressMapEnabled( + /* [in] */ BOOL NewVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_relativeVirtualAddressEnabled( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_relativeVirtualAddressEnabled( + /* [in] */ BOOL NewVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_imageAlign( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_imageAlign( + /* [in] */ DWORD NewVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE set_imageHeaders( + /* [in] */ DWORD cbData, + /* [size_is][in] */ BYTE *pbData, + /* [in] */ BOOL originalHeaders) = 0; + + virtual HRESULT STDMETHODCALLTYPE set_addressMap( + /* [in] */ DWORD cData, + /* [size_is][in] */ struct DiaAddressMapEntry *pData, + /* [in] */ BOOL imageToSymbols) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaAddressMapVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaAddressMap * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaAddressMap * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaAddressMap * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_addressMapEnabled )( + IDiaAddressMap * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_addressMapEnabled )( + IDiaAddressMap * This, + /* [in] */ BOOL NewVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_relativeVirtualAddressEnabled )( + IDiaAddressMap * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_relativeVirtualAddressEnabled )( + IDiaAddressMap * This, + /* [in] */ BOOL NewVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_imageAlign )( + IDiaAddressMap * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_imageAlign )( + IDiaAddressMap * This, + /* [in] */ DWORD NewVal); + + HRESULT ( STDMETHODCALLTYPE *set_imageHeaders )( + IDiaAddressMap * This, + /* [in] */ DWORD cbData, + /* [size_is][in] */ BYTE *pbData, + /* [in] */ BOOL originalHeaders); + + HRESULT ( STDMETHODCALLTYPE *set_addressMap )( + IDiaAddressMap * This, + /* [in] */ DWORD cData, + /* [size_is][in] */ struct DiaAddressMapEntry *pData, + /* [in] */ BOOL imageToSymbols); + + END_INTERFACE + } IDiaAddressMapVtbl; + + interface IDiaAddressMap + { + CONST_VTBL struct IDiaAddressMapVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaAddressMap_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaAddressMap_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaAddressMap_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaAddressMap_get_addressMapEnabled(This,pRetVal) \ + ( (This)->lpVtbl -> get_addressMapEnabled(This,pRetVal) ) + +#define IDiaAddressMap_put_addressMapEnabled(This,NewVal) \ + ( (This)->lpVtbl -> put_addressMapEnabled(This,NewVal) ) + +#define IDiaAddressMap_get_relativeVirtualAddressEnabled(This,pRetVal) \ + ( (This)->lpVtbl -> get_relativeVirtualAddressEnabled(This,pRetVal) ) + +#define IDiaAddressMap_put_relativeVirtualAddressEnabled(This,NewVal) \ + ( (This)->lpVtbl -> put_relativeVirtualAddressEnabled(This,NewVal) ) + +#define IDiaAddressMap_get_imageAlign(This,pRetVal) \ + ( (This)->lpVtbl -> get_imageAlign(This,pRetVal) ) + +#define IDiaAddressMap_put_imageAlign(This,NewVal) \ + ( (This)->lpVtbl -> put_imageAlign(This,NewVal) ) + +#define IDiaAddressMap_set_imageHeaders(This,cbData,pbData,originalHeaders) \ + ( (This)->lpVtbl -> set_imageHeaders(This,cbData,pbData,originalHeaders) ) + +#define IDiaAddressMap_set_addressMap(This,cData,pData,imageToSymbols) \ + ( (This)->lpVtbl -> set_addressMap(This,cData,pData,imageToSymbols) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaAddressMap_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaSession_INTERFACE_DEFINED__ +#define __IDiaSession_INTERFACE_DEFINED__ + +/* interface IDiaSession */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaSession; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2F609EE1-D1C8-4E24-8288-3326BADCD211") + IDiaSession : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_loadAddress( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_loadAddress( + /* [in] */ ULONGLONG NewVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_globalScope( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE getEnumTables( + /* [out] */ IDiaEnumTables **ppEnumTables) = 0; + + virtual HRESULT STDMETHODCALLTYPE getSymbolsByAddr( + /* [out] */ IDiaEnumSymbolsByAddr **ppEnumbyAddr) = 0; + + virtual HRESULT STDMETHODCALLTYPE findChildren( + /* [in] */ IDiaSymbol *parent, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findChildrenEx( + /* [in] */ IDiaSymbol *parent, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findChildrenExByAddr( + /* [in] */ IDiaSymbol *parent, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findChildrenExByVA( + /* [in] */ IDiaSymbol *parent, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [in] */ ULONGLONG va, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findChildrenExByRVA( + /* [in] */ IDiaSymbol *parent, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [in] */ DWORD rva, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findSymbolByAddr( + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [in] */ enum SymTagEnum symtag, + /* [out] */ IDiaSymbol **ppSymbol) = 0; + + virtual HRESULT STDMETHODCALLTYPE findSymbolByRVA( + /* [in] */ DWORD rva, + /* [in] */ enum SymTagEnum symtag, + /* [out] */ IDiaSymbol **ppSymbol) = 0; + + virtual HRESULT STDMETHODCALLTYPE findSymbolByVA( + /* [in] */ ULONGLONG va, + /* [in] */ enum SymTagEnum symtag, + /* [out] */ IDiaSymbol **ppSymbol) = 0; + + virtual HRESULT STDMETHODCALLTYPE findSymbolByToken( + /* [in] */ ULONG token, + /* [in] */ enum SymTagEnum symtag, + /* [out] */ IDiaSymbol **ppSymbol) = 0; + + virtual HRESULT STDMETHODCALLTYPE symsAreEquiv( + /* [in] */ IDiaSymbol *symbolA, + /* [in] */ IDiaSymbol *symbolB) = 0; + + virtual HRESULT STDMETHODCALLTYPE symbolById( + /* [in] */ DWORD id, + /* [out] */ IDiaSymbol **ppSymbol) = 0; + + virtual HRESULT STDMETHODCALLTYPE findSymbolByRVAEx( + /* [in] */ DWORD rva, + /* [in] */ enum SymTagEnum symtag, + /* [out] */ IDiaSymbol **ppSymbol, + /* [out] */ long *displacement) = 0; + + virtual HRESULT STDMETHODCALLTYPE findSymbolByVAEx( + /* [in] */ ULONGLONG va, + /* [in] */ enum SymTagEnum symtag, + /* [out] */ IDiaSymbol **ppSymbol, + /* [out] */ long *displacement) = 0; + + virtual HRESULT STDMETHODCALLTYPE findFile( + /* [in] */ IDiaSymbol *pCompiland, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [out] */ IDiaEnumSourceFiles **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findFileById( + /* [in] */ DWORD uniqueId, + /* [out] */ IDiaSourceFile **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findLines( + /* [in] */ IDiaSymbol *compiland, + /* [in] */ IDiaSourceFile *file, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findLinesByAddr( + /* [in] */ DWORD seg, + /* [in] */ DWORD offset, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findLinesByRVA( + /* [in] */ DWORD rva, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findLinesByVA( + /* [in] */ ULONGLONG va, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findLinesByLinenum( + /* [in] */ IDiaSymbol *compiland, + /* [in] */ IDiaSourceFile *file, + /* [in] */ DWORD linenum, + /* [in] */ DWORD column, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInjectedSource( + /* [in] */ LPCOLESTR srcFile, + /* [out] */ IDiaEnumInjectedSources **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE getEnumDebugStreams( + /* [out] */ IDiaEnumDebugStreams **ppEnumDebugStreams) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineFramesByAddr( + /* [in] */ IDiaSymbol *parent, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineFramesByRVA( + /* [in] */ IDiaSymbol *parent, + /* [in] */ DWORD rva, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineFramesByVA( + /* [in] */ IDiaSymbol *parent, + /* [in] */ ULONGLONG va, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineeLines( + /* [in] */ IDiaSymbol *parent, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineeLinesByAddr( + /* [in] */ IDiaSymbol *parent, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineeLinesByRVA( + /* [in] */ IDiaSymbol *parent, + /* [in] */ DWORD rva, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineeLinesByVA( + /* [in] */ IDiaSymbol *parent, + /* [in] */ ULONGLONG va, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineeLinesByLinenum( + /* [in] */ IDiaSymbol *compiland, + /* [in] */ IDiaSourceFile *file, + /* [in] */ DWORD linenum, + /* [in] */ DWORD column, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineesByName( + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD option, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findAcceleratorInlineeLinesByLinenum( + /* [in] */ IDiaSymbol *parent, + /* [in] */ IDiaSourceFile *file, + /* [in] */ DWORD linenum, + /* [in] */ DWORD column, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findSymbolsForAcceleratorPointerTag( + /* [in] */ IDiaSymbol *parent, + /* [in] */ DWORD tagValue, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findSymbolsByRVAForAcceleratorPointerTag( + /* [in] */ IDiaSymbol *parent, + /* [in] */ DWORD tagValue, + /* [in] */ DWORD rva, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findAcceleratorInlineesByName( + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD option, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE addressForVA( + /* [in] */ ULONGLONG va, + /* [out] */ DWORD *pISect, + /* [out] */ DWORD *pOffset) = 0; + + virtual HRESULT STDMETHODCALLTYPE addressForRVA( + /* [in] */ DWORD rva, + /* [out] */ DWORD *pISect, + /* [out] */ DWORD *pOffset) = 0; + + virtual HRESULT STDMETHODCALLTYPE findILOffsetsByAddr( + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findILOffsetsByRVA( + /* [in] */ DWORD rva, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findILOffsetsByVA( + /* [in] */ ULONGLONG va, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInputAssemblyFiles( + /* [out] */ IDiaEnumInputAssemblyFiles **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInputAssembly( + /* [in] */ DWORD index, + /* [out] */ IDiaInputAssemblyFile **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInputAssemblyById( + /* [in] */ DWORD uniqueId, + /* [out] */ IDiaInputAssemblyFile **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE getFuncMDTokenMapSize( + /* [out] */ DWORD *pcb) = 0; + + virtual HRESULT STDMETHODCALLTYPE getFuncMDTokenMap( + /* [in] */ DWORD cb, + /* [out] */ DWORD *pcb, + /* [size_is][out] */ BYTE *pb) = 0; + + virtual HRESULT STDMETHODCALLTYPE getTypeMDTokenMapSize( + /* [out] */ DWORD *pcb) = 0; + + virtual HRESULT STDMETHODCALLTYPE getTypeMDTokenMap( + /* [in] */ DWORD cb, + /* [out] */ DWORD *pcb, + /* [size_is][out] */ BYTE *pb) = 0; + + virtual HRESULT STDMETHODCALLTYPE getNumberOfFunctionFragments_VA( + /* [in] */ ULONGLONG vaFunc, + /* [in] */ DWORD cbFunc, + /* [out] */ DWORD *pNumFragments) = 0; + + virtual HRESULT STDMETHODCALLTYPE getNumberOfFunctionFragments_RVA( + /* [in] */ DWORD rvaFunc, + /* [in] */ DWORD cbFunc, + /* [out] */ DWORD *pNumFragments) = 0; + + virtual HRESULT STDMETHODCALLTYPE getFunctionFragments_VA( + /* [in] */ ULONGLONG vaFunc, + /* [in] */ DWORD cbFunc, + /* [in] */ DWORD cFragments, + /* [size_is][out] */ ULONGLONG *pVaFragment, + /* [size_is][out] */ DWORD *pLenFragment) = 0; + + virtual HRESULT STDMETHODCALLTYPE getFunctionFragments_RVA( + /* [in] */ DWORD rvaFunc, + /* [in] */ DWORD cbFunc, + /* [in] */ DWORD cFragments, + /* [size_is][out] */ DWORD *pRvaFragment, + /* [size_is][out] */ DWORD *pLenFragment) = 0; + + virtual HRESULT STDMETHODCALLTYPE getExports( + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE getHeapAllocationSites( + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInputAssemblyFile( + /* [in] */ IDiaSymbol *pSymbol, + /* [out] */ IDiaInputAssemblyFile **ppResult) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaSessionVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaSession * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaSession * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaSession * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_loadAddress )( + IDiaSession * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_loadAddress )( + IDiaSession * This, + /* [in] */ ULONGLONG NewVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_globalScope )( + IDiaSession * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + HRESULT ( STDMETHODCALLTYPE *getEnumTables )( + IDiaSession * This, + /* [out] */ IDiaEnumTables **ppEnumTables); + + HRESULT ( STDMETHODCALLTYPE *getSymbolsByAddr )( + IDiaSession * This, + /* [out] */ IDiaEnumSymbolsByAddr **ppEnumbyAddr); + + HRESULT ( STDMETHODCALLTYPE *findChildren )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findChildrenEx )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findChildrenExByAddr )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findChildrenExByVA )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [in] */ ULONGLONG va, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findChildrenExByRVA )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [in] */ DWORD rva, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findSymbolByAddr )( + IDiaSession * This, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [in] */ enum SymTagEnum symtag, + /* [out] */ IDiaSymbol **ppSymbol); + + HRESULT ( STDMETHODCALLTYPE *findSymbolByRVA )( + IDiaSession * This, + /* [in] */ DWORD rva, + /* [in] */ enum SymTagEnum symtag, + /* [out] */ IDiaSymbol **ppSymbol); + + HRESULT ( STDMETHODCALLTYPE *findSymbolByVA )( + IDiaSession * This, + /* [in] */ ULONGLONG va, + /* [in] */ enum SymTagEnum symtag, + /* [out] */ IDiaSymbol **ppSymbol); + + HRESULT ( STDMETHODCALLTYPE *findSymbolByToken )( + IDiaSession * This, + /* [in] */ ULONG token, + /* [in] */ enum SymTagEnum symtag, + /* [out] */ IDiaSymbol **ppSymbol); + + HRESULT ( STDMETHODCALLTYPE *symsAreEquiv )( + IDiaSession * This, + /* [in] */ IDiaSymbol *symbolA, + /* [in] */ IDiaSymbol *symbolB); + + HRESULT ( STDMETHODCALLTYPE *symbolById )( + IDiaSession * This, + /* [in] */ DWORD id, + /* [out] */ IDiaSymbol **ppSymbol); + + HRESULT ( STDMETHODCALLTYPE *findSymbolByRVAEx )( + IDiaSession * This, + /* [in] */ DWORD rva, + /* [in] */ enum SymTagEnum symtag, + /* [out] */ IDiaSymbol **ppSymbol, + /* [out] */ long *displacement); + + HRESULT ( STDMETHODCALLTYPE *findSymbolByVAEx )( + IDiaSession * This, + /* [in] */ ULONGLONG va, + /* [in] */ enum SymTagEnum symtag, + /* [out] */ IDiaSymbol **ppSymbol, + /* [out] */ long *displacement); + + HRESULT ( STDMETHODCALLTYPE *findFile )( + IDiaSession * This, + /* [in] */ IDiaSymbol *pCompiland, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [out] */ IDiaEnumSourceFiles **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findFileById )( + IDiaSession * This, + /* [in] */ DWORD uniqueId, + /* [out] */ IDiaSourceFile **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findLines )( + IDiaSession * This, + /* [in] */ IDiaSymbol *compiland, + /* [in] */ IDiaSourceFile *file, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findLinesByAddr )( + IDiaSession * This, + /* [in] */ DWORD seg, + /* [in] */ DWORD offset, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findLinesByRVA )( + IDiaSession * This, + /* [in] */ DWORD rva, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findLinesByVA )( + IDiaSession * This, + /* [in] */ ULONGLONG va, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findLinesByLinenum )( + IDiaSession * This, + /* [in] */ IDiaSymbol *compiland, + /* [in] */ IDiaSourceFile *file, + /* [in] */ DWORD linenum, + /* [in] */ DWORD column, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInjectedSource )( + IDiaSession * This, + /* [in] */ LPCOLESTR srcFile, + /* [out] */ IDiaEnumInjectedSources **ppResult); + + HRESULT ( STDMETHODCALLTYPE *getEnumDebugStreams )( + IDiaSession * This, + /* [out] */ IDiaEnumDebugStreams **ppEnumDebugStreams); + + HRESULT ( STDMETHODCALLTYPE *findInlineFramesByAddr )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInlineFramesByRVA )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [in] */ DWORD rva, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInlineFramesByVA )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [in] */ ULONGLONG va, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInlineeLines )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInlineeLinesByAddr )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInlineeLinesByRVA )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [in] */ DWORD rva, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInlineeLinesByVA )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [in] */ ULONGLONG va, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInlineeLinesByLinenum )( + IDiaSession * This, + /* [in] */ IDiaSymbol *compiland, + /* [in] */ IDiaSourceFile *file, + /* [in] */ DWORD linenum, + /* [in] */ DWORD column, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInlineesByName )( + IDiaSession * This, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD option, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findAcceleratorInlineeLinesByLinenum )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [in] */ IDiaSourceFile *file, + /* [in] */ DWORD linenum, + /* [in] */ DWORD column, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [in] */ DWORD tagValue, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag )( + IDiaSession * This, + /* [in] */ IDiaSymbol *parent, + /* [in] */ DWORD tagValue, + /* [in] */ DWORD rva, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findAcceleratorInlineesByName )( + IDiaSession * This, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD option, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *addressForVA )( + IDiaSession * This, + /* [in] */ ULONGLONG va, + /* [out] */ DWORD *pISect, + /* [out] */ DWORD *pOffset); + + HRESULT ( STDMETHODCALLTYPE *addressForRVA )( + IDiaSession * This, + /* [in] */ DWORD rva, + /* [out] */ DWORD *pISect, + /* [out] */ DWORD *pOffset); + + HRESULT ( STDMETHODCALLTYPE *findILOffsetsByAddr )( + IDiaSession * This, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findILOffsetsByRVA )( + IDiaSession * This, + /* [in] */ DWORD rva, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findILOffsetsByVA )( + IDiaSession * This, + /* [in] */ ULONGLONG va, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInputAssemblyFiles )( + IDiaSession * This, + /* [out] */ IDiaEnumInputAssemblyFiles **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInputAssembly )( + IDiaSession * This, + /* [in] */ DWORD index, + /* [out] */ IDiaInputAssemblyFile **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInputAssemblyById )( + IDiaSession * This, + /* [in] */ DWORD uniqueId, + /* [out] */ IDiaInputAssemblyFile **ppResult); + + HRESULT ( STDMETHODCALLTYPE *getFuncMDTokenMapSize )( + IDiaSession * This, + /* [out] */ DWORD *pcb); + + HRESULT ( STDMETHODCALLTYPE *getFuncMDTokenMap )( + IDiaSession * This, + /* [in] */ DWORD cb, + /* [out] */ DWORD *pcb, + /* [size_is][out] */ BYTE *pb); + + HRESULT ( STDMETHODCALLTYPE *getTypeMDTokenMapSize )( + IDiaSession * This, + /* [out] */ DWORD *pcb); + + HRESULT ( STDMETHODCALLTYPE *getTypeMDTokenMap )( + IDiaSession * This, + /* [in] */ DWORD cb, + /* [out] */ DWORD *pcb, + /* [size_is][out] */ BYTE *pb); + + HRESULT ( STDMETHODCALLTYPE *getNumberOfFunctionFragments_VA )( + IDiaSession * This, + /* [in] */ ULONGLONG vaFunc, + /* [in] */ DWORD cbFunc, + /* [out] */ DWORD *pNumFragments); + + HRESULT ( STDMETHODCALLTYPE *getNumberOfFunctionFragments_RVA )( + IDiaSession * This, + /* [in] */ DWORD rvaFunc, + /* [in] */ DWORD cbFunc, + /* [out] */ DWORD *pNumFragments); + + HRESULT ( STDMETHODCALLTYPE *getFunctionFragments_VA )( + IDiaSession * This, + /* [in] */ ULONGLONG vaFunc, + /* [in] */ DWORD cbFunc, + /* [in] */ DWORD cFragments, + /* [size_is][out] */ ULONGLONG *pVaFragment, + /* [size_is][out] */ DWORD *pLenFragment); + + HRESULT ( STDMETHODCALLTYPE *getFunctionFragments_RVA )( + IDiaSession * This, + /* [in] */ DWORD rvaFunc, + /* [in] */ DWORD cbFunc, + /* [in] */ DWORD cFragments, + /* [size_is][out] */ DWORD *pRvaFragment, + /* [size_is][out] */ DWORD *pLenFragment); + + HRESULT ( STDMETHODCALLTYPE *getExports )( + IDiaSession * This, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *getHeapAllocationSites )( + IDiaSession * This, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInputAssemblyFile )( + IDiaSession * This, + /* [in] */ IDiaSymbol *pSymbol, + /* [out] */ IDiaInputAssemblyFile **ppResult); + + END_INTERFACE + } IDiaSessionVtbl; + + interface IDiaSession + { + CONST_VTBL struct IDiaSessionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaSession_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaSession_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaSession_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaSession_get_loadAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_loadAddress(This,pRetVal) ) + +#define IDiaSession_put_loadAddress(This,NewVal) \ + ( (This)->lpVtbl -> put_loadAddress(This,NewVal) ) + +#define IDiaSession_get_globalScope(This,pRetVal) \ + ( (This)->lpVtbl -> get_globalScope(This,pRetVal) ) + +#define IDiaSession_getEnumTables(This,ppEnumTables) \ + ( (This)->lpVtbl -> getEnumTables(This,ppEnumTables) ) + +#define IDiaSession_getSymbolsByAddr(This,ppEnumbyAddr) \ + ( (This)->lpVtbl -> getSymbolsByAddr(This,ppEnumbyAddr) ) + +#define IDiaSession_findChildren(This,parent,symtag,name,compareFlags,ppResult) \ + ( (This)->lpVtbl -> findChildren(This,parent,symtag,name,compareFlags,ppResult) ) + +#define IDiaSession_findChildrenEx(This,parent,symtag,name,compareFlags,ppResult) \ + ( (This)->lpVtbl -> findChildrenEx(This,parent,symtag,name,compareFlags,ppResult) ) + +#define IDiaSession_findChildrenExByAddr(This,parent,symtag,name,compareFlags,isect,offset,ppResult) \ + ( (This)->lpVtbl -> findChildrenExByAddr(This,parent,symtag,name,compareFlags,isect,offset,ppResult) ) + +#define IDiaSession_findChildrenExByVA(This,parent,symtag,name,compareFlags,va,ppResult) \ + ( (This)->lpVtbl -> findChildrenExByVA(This,parent,symtag,name,compareFlags,va,ppResult) ) + +#define IDiaSession_findChildrenExByRVA(This,parent,symtag,name,compareFlags,rva,ppResult) \ + ( (This)->lpVtbl -> findChildrenExByRVA(This,parent,symtag,name,compareFlags,rva,ppResult) ) + +#define IDiaSession_findSymbolByAddr(This,isect,offset,symtag,ppSymbol) \ + ( (This)->lpVtbl -> findSymbolByAddr(This,isect,offset,symtag,ppSymbol) ) + +#define IDiaSession_findSymbolByRVA(This,rva,symtag,ppSymbol) \ + ( (This)->lpVtbl -> findSymbolByRVA(This,rva,symtag,ppSymbol) ) + +#define IDiaSession_findSymbolByVA(This,va,symtag,ppSymbol) \ + ( (This)->lpVtbl -> findSymbolByVA(This,va,symtag,ppSymbol) ) + +#define IDiaSession_findSymbolByToken(This,token,symtag,ppSymbol) \ + ( (This)->lpVtbl -> findSymbolByToken(This,token,symtag,ppSymbol) ) + +#define IDiaSession_symsAreEquiv(This,symbolA,symbolB) \ + ( (This)->lpVtbl -> symsAreEquiv(This,symbolA,symbolB) ) + +#define IDiaSession_symbolById(This,id,ppSymbol) \ + ( (This)->lpVtbl -> symbolById(This,id,ppSymbol) ) + +#define IDiaSession_findSymbolByRVAEx(This,rva,symtag,ppSymbol,displacement) \ + ( (This)->lpVtbl -> findSymbolByRVAEx(This,rva,symtag,ppSymbol,displacement) ) + +#define IDiaSession_findSymbolByVAEx(This,va,symtag,ppSymbol,displacement) \ + ( (This)->lpVtbl -> findSymbolByVAEx(This,va,symtag,ppSymbol,displacement) ) + +#define IDiaSession_findFile(This,pCompiland,name,compareFlags,ppResult) \ + ( (This)->lpVtbl -> findFile(This,pCompiland,name,compareFlags,ppResult) ) + +#define IDiaSession_findFileById(This,uniqueId,ppResult) \ + ( (This)->lpVtbl -> findFileById(This,uniqueId,ppResult) ) + +#define IDiaSession_findLines(This,compiland,file,ppResult) \ + ( (This)->lpVtbl -> findLines(This,compiland,file,ppResult) ) + +#define IDiaSession_findLinesByAddr(This,seg,offset,length,ppResult) \ + ( (This)->lpVtbl -> findLinesByAddr(This,seg,offset,length,ppResult) ) + +#define IDiaSession_findLinesByRVA(This,rva,length,ppResult) \ + ( (This)->lpVtbl -> findLinesByRVA(This,rva,length,ppResult) ) + +#define IDiaSession_findLinesByVA(This,va,length,ppResult) \ + ( (This)->lpVtbl -> findLinesByVA(This,va,length,ppResult) ) + +#define IDiaSession_findLinesByLinenum(This,compiland,file,linenum,column,ppResult) \ + ( (This)->lpVtbl -> findLinesByLinenum(This,compiland,file,linenum,column,ppResult) ) + +#define IDiaSession_findInjectedSource(This,srcFile,ppResult) \ + ( (This)->lpVtbl -> findInjectedSource(This,srcFile,ppResult) ) + +#define IDiaSession_getEnumDebugStreams(This,ppEnumDebugStreams) \ + ( (This)->lpVtbl -> getEnumDebugStreams(This,ppEnumDebugStreams) ) + +#define IDiaSession_findInlineFramesByAddr(This,parent,isect,offset,ppResult) \ + ( (This)->lpVtbl -> findInlineFramesByAddr(This,parent,isect,offset,ppResult) ) + +#define IDiaSession_findInlineFramesByRVA(This,parent,rva,ppResult) \ + ( (This)->lpVtbl -> findInlineFramesByRVA(This,parent,rva,ppResult) ) + +#define IDiaSession_findInlineFramesByVA(This,parent,va,ppResult) \ + ( (This)->lpVtbl -> findInlineFramesByVA(This,parent,va,ppResult) ) + +#define IDiaSession_findInlineeLines(This,parent,ppResult) \ + ( (This)->lpVtbl -> findInlineeLines(This,parent,ppResult) ) + +#define IDiaSession_findInlineeLinesByAddr(This,parent,isect,offset,length,ppResult) \ + ( (This)->lpVtbl -> findInlineeLinesByAddr(This,parent,isect,offset,length,ppResult) ) + +#define IDiaSession_findInlineeLinesByRVA(This,parent,rva,length,ppResult) \ + ( (This)->lpVtbl -> findInlineeLinesByRVA(This,parent,rva,length,ppResult) ) + +#define IDiaSession_findInlineeLinesByVA(This,parent,va,length,ppResult) \ + ( (This)->lpVtbl -> findInlineeLinesByVA(This,parent,va,length,ppResult) ) + +#define IDiaSession_findInlineeLinesByLinenum(This,compiland,file,linenum,column,ppResult) \ + ( (This)->lpVtbl -> findInlineeLinesByLinenum(This,compiland,file,linenum,column,ppResult) ) + +#define IDiaSession_findInlineesByName(This,name,option,ppResult) \ + ( (This)->lpVtbl -> findInlineesByName(This,name,option,ppResult) ) + +#define IDiaSession_findAcceleratorInlineeLinesByLinenum(This,parent,file,linenum,column,ppResult) \ + ( (This)->lpVtbl -> findAcceleratorInlineeLinesByLinenum(This,parent,file,linenum,column,ppResult) ) + +#define IDiaSession_findSymbolsForAcceleratorPointerTag(This,parent,tagValue,ppResult) \ + ( (This)->lpVtbl -> findSymbolsForAcceleratorPointerTag(This,parent,tagValue,ppResult) ) + +#define IDiaSession_findSymbolsByRVAForAcceleratorPointerTag(This,parent,tagValue,rva,ppResult) \ + ( (This)->lpVtbl -> findSymbolsByRVAForAcceleratorPointerTag(This,parent,tagValue,rva,ppResult) ) + +#define IDiaSession_findAcceleratorInlineesByName(This,name,option,ppResult) \ + ( (This)->lpVtbl -> findAcceleratorInlineesByName(This,name,option,ppResult) ) + +#define IDiaSession_addressForVA(This,va,pISect,pOffset) \ + ( (This)->lpVtbl -> addressForVA(This,va,pISect,pOffset) ) + +#define IDiaSession_addressForRVA(This,rva,pISect,pOffset) \ + ( (This)->lpVtbl -> addressForRVA(This,rva,pISect,pOffset) ) + +#define IDiaSession_findILOffsetsByAddr(This,isect,offset,length,ppResult) \ + ( (This)->lpVtbl -> findILOffsetsByAddr(This,isect,offset,length,ppResult) ) + +#define IDiaSession_findILOffsetsByRVA(This,rva,length,ppResult) \ + ( (This)->lpVtbl -> findILOffsetsByRVA(This,rva,length,ppResult) ) + +#define IDiaSession_findILOffsetsByVA(This,va,length,ppResult) \ + ( (This)->lpVtbl -> findILOffsetsByVA(This,va,length,ppResult) ) + +#define IDiaSession_findInputAssemblyFiles(This,ppResult) \ + ( (This)->lpVtbl -> findInputAssemblyFiles(This,ppResult) ) + +#define IDiaSession_findInputAssembly(This,index,ppResult) \ + ( (This)->lpVtbl -> findInputAssembly(This,index,ppResult) ) + +#define IDiaSession_findInputAssemblyById(This,uniqueId,ppResult) \ + ( (This)->lpVtbl -> findInputAssemblyById(This,uniqueId,ppResult) ) + +#define IDiaSession_getFuncMDTokenMapSize(This,pcb) \ + ( (This)->lpVtbl -> getFuncMDTokenMapSize(This,pcb) ) + +#define IDiaSession_getFuncMDTokenMap(This,cb,pcb,pb) \ + ( (This)->lpVtbl -> getFuncMDTokenMap(This,cb,pcb,pb) ) + +#define IDiaSession_getTypeMDTokenMapSize(This,pcb) \ + ( (This)->lpVtbl -> getTypeMDTokenMapSize(This,pcb) ) + +#define IDiaSession_getTypeMDTokenMap(This,cb,pcb,pb) \ + ( (This)->lpVtbl -> getTypeMDTokenMap(This,cb,pcb,pb) ) + +#define IDiaSession_getNumberOfFunctionFragments_VA(This,vaFunc,cbFunc,pNumFragments) \ + ( (This)->lpVtbl -> getNumberOfFunctionFragments_VA(This,vaFunc,cbFunc,pNumFragments) ) + +#define IDiaSession_getNumberOfFunctionFragments_RVA(This,rvaFunc,cbFunc,pNumFragments) \ + ( (This)->lpVtbl -> getNumberOfFunctionFragments_RVA(This,rvaFunc,cbFunc,pNumFragments) ) + +#define IDiaSession_getFunctionFragments_VA(This,vaFunc,cbFunc,cFragments,pVaFragment,pLenFragment) \ + ( (This)->lpVtbl -> getFunctionFragments_VA(This,vaFunc,cbFunc,cFragments,pVaFragment,pLenFragment) ) + +#define IDiaSession_getFunctionFragments_RVA(This,rvaFunc,cbFunc,cFragments,pRvaFragment,pLenFragment) \ + ( (This)->lpVtbl -> getFunctionFragments_RVA(This,rvaFunc,cbFunc,cFragments,pRvaFragment,pLenFragment) ) + +#define IDiaSession_getExports(This,ppResult) \ + ( (This)->lpVtbl -> getExports(This,ppResult) ) + +#define IDiaSession_getHeapAllocationSites(This,ppResult) \ + ( (This)->lpVtbl -> getHeapAllocationSites(This,ppResult) ) + +#define IDiaSession_findInputAssemblyFile(This,pSymbol,ppResult) \ + ( (This)->lpVtbl -> findInputAssemblyFile(This,pSymbol,ppResult) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaSession_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaSymbol_INTERFACE_DEFINED__ +#define __IDiaSymbol_INTERFACE_DEFINED__ + +/* interface IDiaSymbol */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaSymbol; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("cb787b2f-bd6c-4635-ba52-933126bd2dcd") + IDiaSymbol : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_symIndexId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_symTag( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_name( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lexicalParent( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_classParent( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_type( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_dataKind( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_locationType( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_addressSection( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_addressOffset( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_relativeVirtualAddress( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtualAddress( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_registerId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_offset( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_length( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_slot( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_volatileType( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_constType( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_unalignedType( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_access( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_libraryName( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_platform( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_language( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_editAndContinueEnabled( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_frontEndMajor( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_frontEndMinor( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_frontEndBuild( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_backEndMajor( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_backEndMinor( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_backEndBuild( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_sourceFileName( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_unused( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_thunkOrdinal( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_thisAdjust( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtualBaseOffset( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtual( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_intro( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_pure( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_callingConvention( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_value( + /* [retval][out] */ VARIANT *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_baseType( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_token( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_timeStamp( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_guid( + /* [retval][out] */ GUID *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_symbolsFileName( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_reference( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_count( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_bitPosition( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_arrayIndexType( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_packed( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_constructor( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_overloadedOperator( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_nested( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasNestedTypes( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasAssignmentOperator( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasCastOperator( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_scoped( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtualBaseClass( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_indirectVirtualBaseClass( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtualBasePointerOffset( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtualTableShape( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lexicalParentId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_classParentId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_typeId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_arrayIndexTypeId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtualTableShapeId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_code( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_function( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_managed( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_msil( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtualBaseDispIndex( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_undecoratedName( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_age( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_signature( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_compilerGenerated( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_addressTaken( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_rank( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lowerBound( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_upperBound( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lowerBoundId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_upperBoundId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_dataBytes( + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData) = 0; + + virtual HRESULT STDMETHODCALLTYPE findChildren( + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findChildrenEx( + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findChildrenExByAddr( + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findChildrenExByVA( + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [in] */ ULONGLONG va, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findChildrenExByRVA( + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [in] */ DWORD rva, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_targetSection( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_targetOffset( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_targetRelativeVirtualAddress( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_targetVirtualAddress( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_machineType( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_oemId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_oemSymbolId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_types( + /* [in] */ DWORD cTypes, + /* [out] */ DWORD *pcTypes, + /* [size_is][size_is][out] */ IDiaSymbol **pTypes) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_typeIds( + /* [in] */ DWORD cTypeIds, + /* [out] */ DWORD *pcTypeIds, + /* [size_is][out] */ DWORD *pdwTypeIds) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_objectPointerType( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_udtKind( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_undecoratedNameEx( + /* [in] */ DWORD undecorateOptions, + /* [out] */ BSTR *name) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_noReturn( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_customCallingConvention( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_noInline( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_optimizedCodeDebugInfo( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_notReached( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_interruptReturn( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_farReturn( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isStatic( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasDebugInfo( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isLTCG( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isDataAligned( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasSecurityChecks( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_compilerName( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasAlloca( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasSetJump( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasLongJump( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasInlAsm( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasEH( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasSEH( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasEHa( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isNaked( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isAggregated( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isSplitted( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_container( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_inlSpec( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_noStackOrdering( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtualBaseTableType( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasManagedCode( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isHotpatchable( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isCVTCIL( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isMSILNetmodule( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isCTypes( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isStripped( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_frontEndQFE( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_backEndQFE( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_wasInlined( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_strictGSCheck( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isCxxReturnUdt( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isConstructorVirtualBase( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_RValueReference( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_unmodifiedType( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_framePointerPresent( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isSafeBuffers( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_intrinsic( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_sealed( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hfaFloat( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hfaDouble( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_liveRangeStartAddressSection( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_liveRangeStartAddressOffset( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_liveRangeStartRelativeVirtualAddress( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_countLiveRanges( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_liveRangeLength( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_offsetInUdt( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_paramBasePointerRegisterId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_localBasePointerRegisterId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isLocationControlFlowDependent( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_stride( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_numberOfRows( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_numberOfColumns( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isMatrixRowMajor( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_numericProperties( + /* [in] */ DWORD cnt, + /* [out] */ DWORD *pcnt, + /* [size_is][out] */ DWORD *pProperties) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_modifierValues( + /* [in] */ DWORD cnt, + /* [out] */ DWORD *pcnt, + /* [size_is][out] */ WORD *pModifiers) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isReturnValue( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isOptimizedAway( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_builtInKind( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_registerType( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_baseDataSlot( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_baseDataOffset( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_textureSlot( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_samplerSlot( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_uavSlot( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_sizeInUdt( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_memorySpaceKind( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_unmodifiedTypeId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_subTypeId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_subType( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_numberOfModifiers( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_numberOfRegisterIndices( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isHLSLData( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isPointerToDataMember( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isPointerToMemberFunction( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isSingleInheritance( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isMultipleInheritance( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isVirtualInheritance( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_restrictedType( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isPointerBasedOnSymbolValue( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_baseSymbol( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_baseSymbolId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_objectFileName( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isAcceleratorGroupSharedLocal( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isAcceleratorPointerTagLiveRange( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isAcceleratorStubFunction( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_numberOfAcceleratorPointerTags( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isSdl( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isWinRTPointer( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isRefUdt( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isValueUdt( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isInterfaceUdt( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineFramesByAddr( + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineFramesByRVA( + /* [in] */ DWORD rva, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineFramesByVA( + /* [in] */ ULONGLONG va, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineeLines( + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineeLinesByAddr( + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineeLinesByRVA( + /* [in] */ DWORD rva, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInlineeLinesByVA( + /* [in] */ ULONGLONG va, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findSymbolsForAcceleratorPointerTag( + /* [in] */ DWORD tagValue, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE findSymbolsByRVAForAcceleratorPointerTag( + /* [in] */ DWORD tagValue, + /* [in] */ DWORD rva, + /* [out] */ IDiaEnumSymbols **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_acceleratorPointerTags( + /* [in] */ DWORD cnt, + /* [out] */ DWORD *pcnt, + /* [size_is][out] */ DWORD *pPointerTags) = 0; + + virtual HRESULT STDMETHODCALLTYPE getSrcLineOnTypeDefn( + /* [out] */ IDiaLineNumber **ppResult) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isPGO( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasValidPGOCounts( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_isOptimizedForSpeed( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_PGOEntryCount( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_PGOEdgeCount( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_PGODynamicInstructionCount( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_staticSize( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_finalLiveStaticSize( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_phaseName( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasControlFlowCheck( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_constantExport( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_dataExport( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_privateExport( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_noNameExport( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_exportHasExplicitlyAssignedOrdinal( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_exportIsForwarder( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_ordinal( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_frameSize( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_exceptionHandlerAddressSection( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_exceptionHandlerAddressOffset( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_exceptionHandlerRelativeVirtualAddress( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_exceptionHandlerVirtualAddress( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE findInputAssemblyFile( + /* [out] */ IDiaInputAssemblyFile **ppResult) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_characteristics( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_coffGroup( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_bindID( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_bindSpace( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_bindSlot( + /* [retval][out] */ DWORD *pRetVal) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaSymbolVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaSymbol * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaSymbol * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaSymbol * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_symIndexId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_symTag )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_name )( + IDiaSymbol * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lexicalParent )( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_classParent )( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_type )( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_dataKind )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_locationType )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_addressSection )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_addressOffset )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_relativeVirtualAddress )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtualAddress )( + IDiaSymbol * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_registerId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_offset )( + IDiaSymbol * This, + /* [retval][out] */ LONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_length )( + IDiaSymbol * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_slot )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_volatileType )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_constType )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_unalignedType )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_access )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_libraryName )( + IDiaSymbol * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_platform )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_language )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_editAndContinueEnabled )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_frontEndMajor )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_frontEndMinor )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_frontEndBuild )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_backEndMajor )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_backEndMinor )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_backEndBuild )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_sourceFileName )( + IDiaSymbol * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_unused )( + IDiaSymbol * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_thunkOrdinal )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_thisAdjust )( + IDiaSymbol * This, + /* [retval][out] */ LONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtualBaseOffset )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtual )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_intro )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_pure )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_callingConvention )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_value )( + IDiaSymbol * This, + /* [retval][out] */ VARIANT *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_baseType )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_token )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_timeStamp )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_guid )( + IDiaSymbol * This, + /* [retval][out] */ GUID *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_symbolsFileName )( + IDiaSymbol * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_reference )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_count )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_bitPosition )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_arrayIndexType )( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_packed )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_constructor )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_overloadedOperator )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_nested )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasNestedTypes )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasAssignmentOperator )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasCastOperator )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_scoped )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtualBaseClass )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_indirectVirtualBaseClass )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtualBasePointerOffset )( + IDiaSymbol * This, + /* [retval][out] */ LONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtualTableShape )( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lexicalParentId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_classParentId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_typeId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_arrayIndexTypeId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtualTableShapeId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_code )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_function )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_managed )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_msil )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtualBaseDispIndex )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_undecoratedName )( + IDiaSymbol * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_age )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_signature )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_compilerGenerated )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_addressTaken )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_rank )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lowerBound )( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_upperBound )( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lowerBoundId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_upperBoundId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + HRESULT ( STDMETHODCALLTYPE *get_dataBytes )( + IDiaSymbol * This, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData); + + HRESULT ( STDMETHODCALLTYPE *findChildren )( + IDiaSymbol * This, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findChildrenEx )( + IDiaSymbol * This, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findChildrenExByAddr )( + IDiaSymbol * This, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findChildrenExByVA )( + IDiaSymbol * This, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [in] */ ULONGLONG va, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findChildrenExByRVA )( + IDiaSymbol * This, + /* [in] */ enum SymTagEnum symtag, + /* [in] */ LPCOLESTR name, + /* [in] */ DWORD compareFlags, + /* [in] */ DWORD rva, + /* [out] */ IDiaEnumSymbols **ppResult); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_targetSection )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_targetOffset )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_targetRelativeVirtualAddress )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_targetVirtualAddress )( + IDiaSymbol * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_machineType )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_oemId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_oemSymbolId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + HRESULT ( STDMETHODCALLTYPE *get_types )( + IDiaSymbol * This, + /* [in] */ DWORD cTypes, + /* [out] */ DWORD *pcTypes, + /* [size_is][size_is][out] */ IDiaSymbol **pTypes); + + HRESULT ( STDMETHODCALLTYPE *get_typeIds )( + IDiaSymbol * This, + /* [in] */ DWORD cTypeIds, + /* [out] */ DWORD *pcTypeIds, + /* [size_is][out] */ DWORD *pdwTypeIds); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_objectPointerType )( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_udtKind )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + HRESULT ( STDMETHODCALLTYPE *get_undecoratedNameEx )( + IDiaSymbol * This, + /* [in] */ DWORD undecorateOptions, + /* [out] */ BSTR *name); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_noReturn )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_customCallingConvention )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_noInline )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_optimizedCodeDebugInfo )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_notReached )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_interruptReturn )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_farReturn )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isStatic )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasDebugInfo )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isLTCG )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isDataAligned )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasSecurityChecks )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_compilerName )( + IDiaSymbol * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasAlloca )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasSetJump )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasLongJump )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasInlAsm )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasEH )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasSEH )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasEHa )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isNaked )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isAggregated )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isSplitted )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_container )( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_inlSpec )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_noStackOrdering )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtualBaseTableType )( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasManagedCode )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isHotpatchable )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isCVTCIL )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isMSILNetmodule )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isCTypes )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isStripped )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_frontEndQFE )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_backEndQFE )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_wasInlined )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_strictGSCheck )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isCxxReturnUdt )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isConstructorVirtualBase )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_RValueReference )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_unmodifiedType )( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_framePointerPresent )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isSafeBuffers )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_intrinsic )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_sealed )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hfaFloat )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hfaDouble )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_liveRangeStartAddressSection )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_liveRangeStartAddressOffset )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_liveRangeStartRelativeVirtualAddress )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_countLiveRanges )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_liveRangeLength )( + IDiaSymbol * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_offsetInUdt )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_paramBasePointerRegisterId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_localBasePointerRegisterId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isLocationControlFlowDependent )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_stride )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_numberOfRows )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_numberOfColumns )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isMatrixRowMajor )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + HRESULT ( STDMETHODCALLTYPE *get_numericProperties )( + IDiaSymbol * This, + /* [in] */ DWORD cnt, + /* [out] */ DWORD *pcnt, + /* [size_is][out] */ DWORD *pProperties); + + HRESULT ( STDMETHODCALLTYPE *get_modifierValues )( + IDiaSymbol * This, + /* [in] */ DWORD cnt, + /* [out] */ DWORD *pcnt, + /* [size_is][out] */ WORD *pModifiers); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isReturnValue )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isOptimizedAway )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_builtInKind )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_registerType )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_baseDataSlot )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_baseDataOffset )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_textureSlot )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_samplerSlot )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_uavSlot )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_sizeInUdt )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_memorySpaceKind )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_unmodifiedTypeId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_subTypeId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_subType )( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_numberOfModifiers )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_numberOfRegisterIndices )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isHLSLData )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isPointerToDataMember )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isPointerToMemberFunction )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isSingleInheritance )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isMultipleInheritance )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isVirtualInheritance )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_restrictedType )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isPointerBasedOnSymbolValue )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_baseSymbol )( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_baseSymbolId )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_objectFileName )( + IDiaSymbol * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isAcceleratorGroupSharedLocal )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isAcceleratorPointerTagLiveRange )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isAcceleratorStubFunction )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_numberOfAcceleratorPointerTags )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isSdl )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isWinRTPointer )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isRefUdt )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isValueUdt )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isInterfaceUdt )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + HRESULT ( STDMETHODCALLTYPE *findInlineFramesByAddr )( + IDiaSymbol * This, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInlineFramesByRVA )( + IDiaSymbol * This, + /* [in] */ DWORD rva, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInlineFramesByVA )( + IDiaSymbol * This, + /* [in] */ ULONGLONG va, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInlineeLines )( + IDiaSymbol * This, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInlineeLinesByAddr )( + IDiaSymbol * This, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInlineeLinesByRVA )( + IDiaSymbol * This, + /* [in] */ DWORD rva, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findInlineeLinesByVA )( + IDiaSymbol * This, + /* [in] */ ULONGLONG va, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findSymbolsForAcceleratorPointerTag )( + IDiaSymbol * This, + /* [in] */ DWORD tagValue, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *findSymbolsByRVAForAcceleratorPointerTag )( + IDiaSymbol * This, + /* [in] */ DWORD tagValue, + /* [in] */ DWORD rva, + /* [out] */ IDiaEnumSymbols **ppResult); + + HRESULT ( STDMETHODCALLTYPE *get_acceleratorPointerTags )( + IDiaSymbol * This, + /* [in] */ DWORD cnt, + /* [out] */ DWORD *pcnt, + /* [size_is][out] */ DWORD *pPointerTags); + + HRESULT ( STDMETHODCALLTYPE *getSrcLineOnTypeDefn )( + IDiaSymbol * This, + /* [out] */ IDiaLineNumber **ppResult); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isPGO )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasValidPGOCounts )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_isOptimizedForSpeed )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PGOEntryCount )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PGOEdgeCount )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PGODynamicInstructionCount )( + IDiaSymbol * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_staticSize )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_finalLiveStaticSize )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_phaseName )( + IDiaSymbol * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_hasControlFlowCheck )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_constantExport )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_dataExport )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_privateExport )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_noNameExport )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_exportHasExplicitlyAssignedOrdinal )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_exportIsForwarder )( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ordinal )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_frameSize )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_exceptionHandlerAddressSection )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_exceptionHandlerAddressOffset )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_exceptionHandlerRelativeVirtualAddress )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_exceptionHandlerVirtualAddress )( + IDiaSymbol * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + HRESULT ( STDMETHODCALLTYPE *findInputAssemblyFile )( + IDiaSymbol * This, + /* [out] */ IDiaInputAssemblyFile **ppResult); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_characteristics )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_coffGroup )( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_bindID )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_bindSpace )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_bindSlot )( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + END_INTERFACE + } IDiaSymbolVtbl; + + interface IDiaSymbol + { + CONST_VTBL struct IDiaSymbolVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaSymbol_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaSymbol_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaSymbol_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaSymbol_get_symIndexId(This,pRetVal) \ + ( (This)->lpVtbl -> get_symIndexId(This,pRetVal) ) + +#define IDiaSymbol_get_symTag(This,pRetVal) \ + ( (This)->lpVtbl -> get_symTag(This,pRetVal) ) + +#define IDiaSymbol_get_name(This,pRetVal) \ + ( (This)->lpVtbl -> get_name(This,pRetVal) ) + +#define IDiaSymbol_get_lexicalParent(This,pRetVal) \ + ( (This)->lpVtbl -> get_lexicalParent(This,pRetVal) ) + +#define IDiaSymbol_get_classParent(This,pRetVal) \ + ( (This)->lpVtbl -> get_classParent(This,pRetVal) ) + +#define IDiaSymbol_get_type(This,pRetVal) \ + ( (This)->lpVtbl -> get_type(This,pRetVal) ) + +#define IDiaSymbol_get_dataKind(This,pRetVal) \ + ( (This)->lpVtbl -> get_dataKind(This,pRetVal) ) + +#define IDiaSymbol_get_locationType(This,pRetVal) \ + ( (This)->lpVtbl -> get_locationType(This,pRetVal) ) + +#define IDiaSymbol_get_addressSection(This,pRetVal) \ + ( (This)->lpVtbl -> get_addressSection(This,pRetVal) ) + +#define IDiaSymbol_get_addressOffset(This,pRetVal) \ + ( (This)->lpVtbl -> get_addressOffset(This,pRetVal) ) + +#define IDiaSymbol_get_relativeVirtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_relativeVirtualAddress(This,pRetVal) ) + +#define IDiaSymbol_get_virtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtualAddress(This,pRetVal) ) + +#define IDiaSymbol_get_registerId(This,pRetVal) \ + ( (This)->lpVtbl -> get_registerId(This,pRetVal) ) + +#define IDiaSymbol_get_offset(This,pRetVal) \ + ( (This)->lpVtbl -> get_offset(This,pRetVal) ) + +#define IDiaSymbol_get_length(This,pRetVal) \ + ( (This)->lpVtbl -> get_length(This,pRetVal) ) + +#define IDiaSymbol_get_slot(This,pRetVal) \ + ( (This)->lpVtbl -> get_slot(This,pRetVal) ) + +#define IDiaSymbol_get_volatileType(This,pRetVal) \ + ( (This)->lpVtbl -> get_volatileType(This,pRetVal) ) + +#define IDiaSymbol_get_constType(This,pRetVal) \ + ( (This)->lpVtbl -> get_constType(This,pRetVal) ) + +#define IDiaSymbol_get_unalignedType(This,pRetVal) \ + ( (This)->lpVtbl -> get_unalignedType(This,pRetVal) ) + +#define IDiaSymbol_get_access(This,pRetVal) \ + ( (This)->lpVtbl -> get_access(This,pRetVal) ) + +#define IDiaSymbol_get_libraryName(This,pRetVal) \ + ( (This)->lpVtbl -> get_libraryName(This,pRetVal) ) + +#define IDiaSymbol_get_platform(This,pRetVal) \ + ( (This)->lpVtbl -> get_platform(This,pRetVal) ) + +#define IDiaSymbol_get_language(This,pRetVal) \ + ( (This)->lpVtbl -> get_language(This,pRetVal) ) + +#define IDiaSymbol_get_editAndContinueEnabled(This,pRetVal) \ + ( (This)->lpVtbl -> get_editAndContinueEnabled(This,pRetVal) ) + +#define IDiaSymbol_get_frontEndMajor(This,pRetVal) \ + ( (This)->lpVtbl -> get_frontEndMajor(This,pRetVal) ) + +#define IDiaSymbol_get_frontEndMinor(This,pRetVal) \ + ( (This)->lpVtbl -> get_frontEndMinor(This,pRetVal) ) + +#define IDiaSymbol_get_frontEndBuild(This,pRetVal) \ + ( (This)->lpVtbl -> get_frontEndBuild(This,pRetVal) ) + +#define IDiaSymbol_get_backEndMajor(This,pRetVal) \ + ( (This)->lpVtbl -> get_backEndMajor(This,pRetVal) ) + +#define IDiaSymbol_get_backEndMinor(This,pRetVal) \ + ( (This)->lpVtbl -> get_backEndMinor(This,pRetVal) ) + +#define IDiaSymbol_get_backEndBuild(This,pRetVal) \ + ( (This)->lpVtbl -> get_backEndBuild(This,pRetVal) ) + +#define IDiaSymbol_get_sourceFileName(This,pRetVal) \ + ( (This)->lpVtbl -> get_sourceFileName(This,pRetVal) ) + +#define IDiaSymbol_get_unused(This,pRetVal) \ + ( (This)->lpVtbl -> get_unused(This,pRetVal) ) + +#define IDiaSymbol_get_thunkOrdinal(This,pRetVal) \ + ( (This)->lpVtbl -> get_thunkOrdinal(This,pRetVal) ) + +#define IDiaSymbol_get_thisAdjust(This,pRetVal) \ + ( (This)->lpVtbl -> get_thisAdjust(This,pRetVal) ) + +#define IDiaSymbol_get_virtualBaseOffset(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtualBaseOffset(This,pRetVal) ) + +#define IDiaSymbol_get_virtual(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtual(This,pRetVal) ) + +#define IDiaSymbol_get_intro(This,pRetVal) \ + ( (This)->lpVtbl -> get_intro(This,pRetVal) ) + +#define IDiaSymbol_get_pure(This,pRetVal) \ + ( (This)->lpVtbl -> get_pure(This,pRetVal) ) + +#define IDiaSymbol_get_callingConvention(This,pRetVal) \ + ( (This)->lpVtbl -> get_callingConvention(This,pRetVal) ) + +#define IDiaSymbol_get_value(This,pRetVal) \ + ( (This)->lpVtbl -> get_value(This,pRetVal) ) + +#define IDiaSymbol_get_baseType(This,pRetVal) \ + ( (This)->lpVtbl -> get_baseType(This,pRetVal) ) + +#define IDiaSymbol_get_token(This,pRetVal) \ + ( (This)->lpVtbl -> get_token(This,pRetVal) ) + +#define IDiaSymbol_get_timeStamp(This,pRetVal) \ + ( (This)->lpVtbl -> get_timeStamp(This,pRetVal) ) + +#define IDiaSymbol_get_guid(This,pRetVal) \ + ( (This)->lpVtbl -> get_guid(This,pRetVal) ) + +#define IDiaSymbol_get_symbolsFileName(This,pRetVal) \ + ( (This)->lpVtbl -> get_symbolsFileName(This,pRetVal) ) + +#define IDiaSymbol_get_reference(This,pRetVal) \ + ( (This)->lpVtbl -> get_reference(This,pRetVal) ) + +#define IDiaSymbol_get_count(This,pRetVal) \ + ( (This)->lpVtbl -> get_count(This,pRetVal) ) + +#define IDiaSymbol_get_bitPosition(This,pRetVal) \ + ( (This)->lpVtbl -> get_bitPosition(This,pRetVal) ) + +#define IDiaSymbol_get_arrayIndexType(This,pRetVal) \ + ( (This)->lpVtbl -> get_arrayIndexType(This,pRetVal) ) + +#define IDiaSymbol_get_packed(This,pRetVal) \ + ( (This)->lpVtbl -> get_packed(This,pRetVal) ) + +#define IDiaSymbol_get_constructor(This,pRetVal) \ + ( (This)->lpVtbl -> get_constructor(This,pRetVal) ) + +#define IDiaSymbol_get_overloadedOperator(This,pRetVal) \ + ( (This)->lpVtbl -> get_overloadedOperator(This,pRetVal) ) + +#define IDiaSymbol_get_nested(This,pRetVal) \ + ( (This)->lpVtbl -> get_nested(This,pRetVal) ) + +#define IDiaSymbol_get_hasNestedTypes(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasNestedTypes(This,pRetVal) ) + +#define IDiaSymbol_get_hasAssignmentOperator(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasAssignmentOperator(This,pRetVal) ) + +#define IDiaSymbol_get_hasCastOperator(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasCastOperator(This,pRetVal) ) + +#define IDiaSymbol_get_scoped(This,pRetVal) \ + ( (This)->lpVtbl -> get_scoped(This,pRetVal) ) + +#define IDiaSymbol_get_virtualBaseClass(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtualBaseClass(This,pRetVal) ) + +#define IDiaSymbol_get_indirectVirtualBaseClass(This,pRetVal) \ + ( (This)->lpVtbl -> get_indirectVirtualBaseClass(This,pRetVal) ) + +#define IDiaSymbol_get_virtualBasePointerOffset(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtualBasePointerOffset(This,pRetVal) ) + +#define IDiaSymbol_get_virtualTableShape(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtualTableShape(This,pRetVal) ) + +#define IDiaSymbol_get_lexicalParentId(This,pRetVal) \ + ( (This)->lpVtbl -> get_lexicalParentId(This,pRetVal) ) + +#define IDiaSymbol_get_classParentId(This,pRetVal) \ + ( (This)->lpVtbl -> get_classParentId(This,pRetVal) ) + +#define IDiaSymbol_get_typeId(This,pRetVal) \ + ( (This)->lpVtbl -> get_typeId(This,pRetVal) ) + +#define IDiaSymbol_get_arrayIndexTypeId(This,pRetVal) \ + ( (This)->lpVtbl -> get_arrayIndexTypeId(This,pRetVal) ) + +#define IDiaSymbol_get_virtualTableShapeId(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtualTableShapeId(This,pRetVal) ) + +#define IDiaSymbol_get_code(This,pRetVal) \ + ( (This)->lpVtbl -> get_code(This,pRetVal) ) + +#define IDiaSymbol_get_function(This,pRetVal) \ + ( (This)->lpVtbl -> get_function(This,pRetVal) ) + +#define IDiaSymbol_get_managed(This,pRetVal) \ + ( (This)->lpVtbl -> get_managed(This,pRetVal) ) + +#define IDiaSymbol_get_msil(This,pRetVal) \ + ( (This)->lpVtbl -> get_msil(This,pRetVal) ) + +#define IDiaSymbol_get_virtualBaseDispIndex(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtualBaseDispIndex(This,pRetVal) ) + +#define IDiaSymbol_get_undecoratedName(This,pRetVal) \ + ( (This)->lpVtbl -> get_undecoratedName(This,pRetVal) ) + +#define IDiaSymbol_get_age(This,pRetVal) \ + ( (This)->lpVtbl -> get_age(This,pRetVal) ) + +#define IDiaSymbol_get_signature(This,pRetVal) \ + ( (This)->lpVtbl -> get_signature(This,pRetVal) ) + +#define IDiaSymbol_get_compilerGenerated(This,pRetVal) \ + ( (This)->lpVtbl -> get_compilerGenerated(This,pRetVal) ) + +#define IDiaSymbol_get_addressTaken(This,pRetVal) \ + ( (This)->lpVtbl -> get_addressTaken(This,pRetVal) ) + +#define IDiaSymbol_get_rank(This,pRetVal) \ + ( (This)->lpVtbl -> get_rank(This,pRetVal) ) + +#define IDiaSymbol_get_lowerBound(This,pRetVal) \ + ( (This)->lpVtbl -> get_lowerBound(This,pRetVal) ) + +#define IDiaSymbol_get_upperBound(This,pRetVal) \ + ( (This)->lpVtbl -> get_upperBound(This,pRetVal) ) + +#define IDiaSymbol_get_lowerBoundId(This,pRetVal) \ + ( (This)->lpVtbl -> get_lowerBoundId(This,pRetVal) ) + +#define IDiaSymbol_get_upperBoundId(This,pRetVal) \ + ( (This)->lpVtbl -> get_upperBoundId(This,pRetVal) ) + +#define IDiaSymbol_get_dataBytes(This,cbData,pcbData,pbData) \ + ( (This)->lpVtbl -> get_dataBytes(This,cbData,pcbData,pbData) ) + +#define IDiaSymbol_findChildren(This,symtag,name,compareFlags,ppResult) \ + ( (This)->lpVtbl -> findChildren(This,symtag,name,compareFlags,ppResult) ) + +#define IDiaSymbol_findChildrenEx(This,symtag,name,compareFlags,ppResult) \ + ( (This)->lpVtbl -> findChildrenEx(This,symtag,name,compareFlags,ppResult) ) + +#define IDiaSymbol_findChildrenExByAddr(This,symtag,name,compareFlags,isect,offset,ppResult) \ + ( (This)->lpVtbl -> findChildrenExByAddr(This,symtag,name,compareFlags,isect,offset,ppResult) ) + +#define IDiaSymbol_findChildrenExByVA(This,symtag,name,compareFlags,va,ppResult) \ + ( (This)->lpVtbl -> findChildrenExByVA(This,symtag,name,compareFlags,va,ppResult) ) + +#define IDiaSymbol_findChildrenExByRVA(This,symtag,name,compareFlags,rva,ppResult) \ + ( (This)->lpVtbl -> findChildrenExByRVA(This,symtag,name,compareFlags,rva,ppResult) ) + +#define IDiaSymbol_get_targetSection(This,pRetVal) \ + ( (This)->lpVtbl -> get_targetSection(This,pRetVal) ) + +#define IDiaSymbol_get_targetOffset(This,pRetVal) \ + ( (This)->lpVtbl -> get_targetOffset(This,pRetVal) ) + +#define IDiaSymbol_get_targetRelativeVirtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_targetRelativeVirtualAddress(This,pRetVal) ) + +#define IDiaSymbol_get_targetVirtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_targetVirtualAddress(This,pRetVal) ) + +#define IDiaSymbol_get_machineType(This,pRetVal) \ + ( (This)->lpVtbl -> get_machineType(This,pRetVal) ) + +#define IDiaSymbol_get_oemId(This,pRetVal) \ + ( (This)->lpVtbl -> get_oemId(This,pRetVal) ) + +#define IDiaSymbol_get_oemSymbolId(This,pRetVal) \ + ( (This)->lpVtbl -> get_oemSymbolId(This,pRetVal) ) + +#define IDiaSymbol_get_types(This,cTypes,pcTypes,pTypes) \ + ( (This)->lpVtbl -> get_types(This,cTypes,pcTypes,pTypes) ) + +#define IDiaSymbol_get_typeIds(This,cTypeIds,pcTypeIds,pdwTypeIds) \ + ( (This)->lpVtbl -> get_typeIds(This,cTypeIds,pcTypeIds,pdwTypeIds) ) + +#define IDiaSymbol_get_objectPointerType(This,pRetVal) \ + ( (This)->lpVtbl -> get_objectPointerType(This,pRetVal) ) + +#define IDiaSymbol_get_udtKind(This,pRetVal) \ + ( (This)->lpVtbl -> get_udtKind(This,pRetVal) ) + +#define IDiaSymbol_get_undecoratedNameEx(This,undecorateOptions,name) \ + ( (This)->lpVtbl -> get_undecoratedNameEx(This,undecorateOptions,name) ) + +#define IDiaSymbol_get_noReturn(This,pRetVal) \ + ( (This)->lpVtbl -> get_noReturn(This,pRetVal) ) + +#define IDiaSymbol_get_customCallingConvention(This,pRetVal) \ + ( (This)->lpVtbl -> get_customCallingConvention(This,pRetVal) ) + +#define IDiaSymbol_get_noInline(This,pRetVal) \ + ( (This)->lpVtbl -> get_noInline(This,pRetVal) ) + +#define IDiaSymbol_get_optimizedCodeDebugInfo(This,pRetVal) \ + ( (This)->lpVtbl -> get_optimizedCodeDebugInfo(This,pRetVal) ) + +#define IDiaSymbol_get_notReached(This,pRetVal) \ + ( (This)->lpVtbl -> get_notReached(This,pRetVal) ) + +#define IDiaSymbol_get_interruptReturn(This,pRetVal) \ + ( (This)->lpVtbl -> get_interruptReturn(This,pRetVal) ) + +#define IDiaSymbol_get_farReturn(This,pRetVal) \ + ( (This)->lpVtbl -> get_farReturn(This,pRetVal) ) + +#define IDiaSymbol_get_isStatic(This,pRetVal) \ + ( (This)->lpVtbl -> get_isStatic(This,pRetVal) ) + +#define IDiaSymbol_get_hasDebugInfo(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasDebugInfo(This,pRetVal) ) + +#define IDiaSymbol_get_isLTCG(This,pRetVal) \ + ( (This)->lpVtbl -> get_isLTCG(This,pRetVal) ) + +#define IDiaSymbol_get_isDataAligned(This,pRetVal) \ + ( (This)->lpVtbl -> get_isDataAligned(This,pRetVal) ) + +#define IDiaSymbol_get_hasSecurityChecks(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasSecurityChecks(This,pRetVal) ) + +#define IDiaSymbol_get_compilerName(This,pRetVal) \ + ( (This)->lpVtbl -> get_compilerName(This,pRetVal) ) + +#define IDiaSymbol_get_hasAlloca(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasAlloca(This,pRetVal) ) + +#define IDiaSymbol_get_hasSetJump(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasSetJump(This,pRetVal) ) + +#define IDiaSymbol_get_hasLongJump(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasLongJump(This,pRetVal) ) + +#define IDiaSymbol_get_hasInlAsm(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasInlAsm(This,pRetVal) ) + +#define IDiaSymbol_get_hasEH(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasEH(This,pRetVal) ) + +#define IDiaSymbol_get_hasSEH(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasSEH(This,pRetVal) ) + +#define IDiaSymbol_get_hasEHa(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasEHa(This,pRetVal) ) + +#define IDiaSymbol_get_isNaked(This,pRetVal) \ + ( (This)->lpVtbl -> get_isNaked(This,pRetVal) ) + +#define IDiaSymbol_get_isAggregated(This,pRetVal) \ + ( (This)->lpVtbl -> get_isAggregated(This,pRetVal) ) + +#define IDiaSymbol_get_isSplitted(This,pRetVal) \ + ( (This)->lpVtbl -> get_isSplitted(This,pRetVal) ) + +#define IDiaSymbol_get_container(This,pRetVal) \ + ( (This)->lpVtbl -> get_container(This,pRetVal) ) + +#define IDiaSymbol_get_inlSpec(This,pRetVal) \ + ( (This)->lpVtbl -> get_inlSpec(This,pRetVal) ) + +#define IDiaSymbol_get_noStackOrdering(This,pRetVal) \ + ( (This)->lpVtbl -> get_noStackOrdering(This,pRetVal) ) + +#define IDiaSymbol_get_virtualBaseTableType(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtualBaseTableType(This,pRetVal) ) + +#define IDiaSymbol_get_hasManagedCode(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasManagedCode(This,pRetVal) ) + +#define IDiaSymbol_get_isHotpatchable(This,pRetVal) \ + ( (This)->lpVtbl -> get_isHotpatchable(This,pRetVal) ) + +#define IDiaSymbol_get_isCVTCIL(This,pRetVal) \ + ( (This)->lpVtbl -> get_isCVTCIL(This,pRetVal) ) + +#define IDiaSymbol_get_isMSILNetmodule(This,pRetVal) \ + ( (This)->lpVtbl -> get_isMSILNetmodule(This,pRetVal) ) + +#define IDiaSymbol_get_isCTypes(This,pRetVal) \ + ( (This)->lpVtbl -> get_isCTypes(This,pRetVal) ) + +#define IDiaSymbol_get_isStripped(This,pRetVal) \ + ( (This)->lpVtbl -> get_isStripped(This,pRetVal) ) + +#define IDiaSymbol_get_frontEndQFE(This,pRetVal) \ + ( (This)->lpVtbl -> get_frontEndQFE(This,pRetVal) ) + +#define IDiaSymbol_get_backEndQFE(This,pRetVal) \ + ( (This)->lpVtbl -> get_backEndQFE(This,pRetVal) ) + +#define IDiaSymbol_get_wasInlined(This,pRetVal) \ + ( (This)->lpVtbl -> get_wasInlined(This,pRetVal) ) + +#define IDiaSymbol_get_strictGSCheck(This,pRetVal) \ + ( (This)->lpVtbl -> get_strictGSCheck(This,pRetVal) ) + +#define IDiaSymbol_get_isCxxReturnUdt(This,pRetVal) \ + ( (This)->lpVtbl -> get_isCxxReturnUdt(This,pRetVal) ) + +#define IDiaSymbol_get_isConstructorVirtualBase(This,pRetVal) \ + ( (This)->lpVtbl -> get_isConstructorVirtualBase(This,pRetVal) ) + +#define IDiaSymbol_get_RValueReference(This,pRetVal) \ + ( (This)->lpVtbl -> get_RValueReference(This,pRetVal) ) + +#define IDiaSymbol_get_unmodifiedType(This,pRetVal) \ + ( (This)->lpVtbl -> get_unmodifiedType(This,pRetVal) ) + +#define IDiaSymbol_get_framePointerPresent(This,pRetVal) \ + ( (This)->lpVtbl -> get_framePointerPresent(This,pRetVal) ) + +#define IDiaSymbol_get_isSafeBuffers(This,pRetVal) \ + ( (This)->lpVtbl -> get_isSafeBuffers(This,pRetVal) ) + +#define IDiaSymbol_get_intrinsic(This,pRetVal) \ + ( (This)->lpVtbl -> get_intrinsic(This,pRetVal) ) + +#define IDiaSymbol_get_sealed(This,pRetVal) \ + ( (This)->lpVtbl -> get_sealed(This,pRetVal) ) + +#define IDiaSymbol_get_hfaFloat(This,pRetVal) \ + ( (This)->lpVtbl -> get_hfaFloat(This,pRetVal) ) + +#define IDiaSymbol_get_hfaDouble(This,pRetVal) \ + ( (This)->lpVtbl -> get_hfaDouble(This,pRetVal) ) + +#define IDiaSymbol_get_liveRangeStartAddressSection(This,pRetVal) \ + ( (This)->lpVtbl -> get_liveRangeStartAddressSection(This,pRetVal) ) + +#define IDiaSymbol_get_liveRangeStartAddressOffset(This,pRetVal) \ + ( (This)->lpVtbl -> get_liveRangeStartAddressOffset(This,pRetVal) ) + +#define IDiaSymbol_get_liveRangeStartRelativeVirtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_liveRangeStartRelativeVirtualAddress(This,pRetVal) ) + +#define IDiaSymbol_get_countLiveRanges(This,pRetVal) \ + ( (This)->lpVtbl -> get_countLiveRanges(This,pRetVal) ) + +#define IDiaSymbol_get_liveRangeLength(This,pRetVal) \ + ( (This)->lpVtbl -> get_liveRangeLength(This,pRetVal) ) + +#define IDiaSymbol_get_offsetInUdt(This,pRetVal) \ + ( (This)->lpVtbl -> get_offsetInUdt(This,pRetVal) ) + +#define IDiaSymbol_get_paramBasePointerRegisterId(This,pRetVal) \ + ( (This)->lpVtbl -> get_paramBasePointerRegisterId(This,pRetVal) ) + +#define IDiaSymbol_get_localBasePointerRegisterId(This,pRetVal) \ + ( (This)->lpVtbl -> get_localBasePointerRegisterId(This,pRetVal) ) + +#define IDiaSymbol_get_isLocationControlFlowDependent(This,pRetVal) \ + ( (This)->lpVtbl -> get_isLocationControlFlowDependent(This,pRetVal) ) + +#define IDiaSymbol_get_stride(This,pRetVal) \ + ( (This)->lpVtbl -> get_stride(This,pRetVal) ) + +#define IDiaSymbol_get_numberOfRows(This,pRetVal) \ + ( (This)->lpVtbl -> get_numberOfRows(This,pRetVal) ) + +#define IDiaSymbol_get_numberOfColumns(This,pRetVal) \ + ( (This)->lpVtbl -> get_numberOfColumns(This,pRetVal) ) + +#define IDiaSymbol_get_isMatrixRowMajor(This,pRetVal) \ + ( (This)->lpVtbl -> get_isMatrixRowMajor(This,pRetVal) ) + +#define IDiaSymbol_get_numericProperties(This,cnt,pcnt,pProperties) \ + ( (This)->lpVtbl -> get_numericProperties(This,cnt,pcnt,pProperties) ) + +#define IDiaSymbol_get_modifierValues(This,cnt,pcnt,pModifiers) \ + ( (This)->lpVtbl -> get_modifierValues(This,cnt,pcnt,pModifiers) ) + +#define IDiaSymbol_get_isReturnValue(This,pRetVal) \ + ( (This)->lpVtbl -> get_isReturnValue(This,pRetVal) ) + +#define IDiaSymbol_get_isOptimizedAway(This,pRetVal) \ + ( (This)->lpVtbl -> get_isOptimizedAway(This,pRetVal) ) + +#define IDiaSymbol_get_builtInKind(This,pRetVal) \ + ( (This)->lpVtbl -> get_builtInKind(This,pRetVal) ) + +#define IDiaSymbol_get_registerType(This,pRetVal) \ + ( (This)->lpVtbl -> get_registerType(This,pRetVal) ) + +#define IDiaSymbol_get_baseDataSlot(This,pRetVal) \ + ( (This)->lpVtbl -> get_baseDataSlot(This,pRetVal) ) + +#define IDiaSymbol_get_baseDataOffset(This,pRetVal) \ + ( (This)->lpVtbl -> get_baseDataOffset(This,pRetVal) ) + +#define IDiaSymbol_get_textureSlot(This,pRetVal) \ + ( (This)->lpVtbl -> get_textureSlot(This,pRetVal) ) + +#define IDiaSymbol_get_samplerSlot(This,pRetVal) \ + ( (This)->lpVtbl -> get_samplerSlot(This,pRetVal) ) + +#define IDiaSymbol_get_uavSlot(This,pRetVal) \ + ( (This)->lpVtbl -> get_uavSlot(This,pRetVal) ) + +#define IDiaSymbol_get_sizeInUdt(This,pRetVal) \ + ( (This)->lpVtbl -> get_sizeInUdt(This,pRetVal) ) + +#define IDiaSymbol_get_memorySpaceKind(This,pRetVal) \ + ( (This)->lpVtbl -> get_memorySpaceKind(This,pRetVal) ) + +#define IDiaSymbol_get_unmodifiedTypeId(This,pRetVal) \ + ( (This)->lpVtbl -> get_unmodifiedTypeId(This,pRetVal) ) + +#define IDiaSymbol_get_subTypeId(This,pRetVal) \ + ( (This)->lpVtbl -> get_subTypeId(This,pRetVal) ) + +#define IDiaSymbol_get_subType(This,pRetVal) \ + ( (This)->lpVtbl -> get_subType(This,pRetVal) ) + +#define IDiaSymbol_get_numberOfModifiers(This,pRetVal) \ + ( (This)->lpVtbl -> get_numberOfModifiers(This,pRetVal) ) + +#define IDiaSymbol_get_numberOfRegisterIndices(This,pRetVal) \ + ( (This)->lpVtbl -> get_numberOfRegisterIndices(This,pRetVal) ) + +#define IDiaSymbol_get_isHLSLData(This,pRetVal) \ + ( (This)->lpVtbl -> get_isHLSLData(This,pRetVal) ) + +#define IDiaSymbol_get_isPointerToDataMember(This,pRetVal) \ + ( (This)->lpVtbl -> get_isPointerToDataMember(This,pRetVal) ) + +#define IDiaSymbol_get_isPointerToMemberFunction(This,pRetVal) \ + ( (This)->lpVtbl -> get_isPointerToMemberFunction(This,pRetVal) ) + +#define IDiaSymbol_get_isSingleInheritance(This,pRetVal) \ + ( (This)->lpVtbl -> get_isSingleInheritance(This,pRetVal) ) + +#define IDiaSymbol_get_isMultipleInheritance(This,pRetVal) \ + ( (This)->lpVtbl -> get_isMultipleInheritance(This,pRetVal) ) + +#define IDiaSymbol_get_isVirtualInheritance(This,pRetVal) \ + ( (This)->lpVtbl -> get_isVirtualInheritance(This,pRetVal) ) + +#define IDiaSymbol_get_restrictedType(This,pRetVal) \ + ( (This)->lpVtbl -> get_restrictedType(This,pRetVal) ) + +#define IDiaSymbol_get_isPointerBasedOnSymbolValue(This,pRetVal) \ + ( (This)->lpVtbl -> get_isPointerBasedOnSymbolValue(This,pRetVal) ) + +#define IDiaSymbol_get_baseSymbol(This,pRetVal) \ + ( (This)->lpVtbl -> get_baseSymbol(This,pRetVal) ) + +#define IDiaSymbol_get_baseSymbolId(This,pRetVal) \ + ( (This)->lpVtbl -> get_baseSymbolId(This,pRetVal) ) + +#define IDiaSymbol_get_objectFileName(This,pRetVal) \ + ( (This)->lpVtbl -> get_objectFileName(This,pRetVal) ) + +#define IDiaSymbol_get_isAcceleratorGroupSharedLocal(This,pRetVal) \ + ( (This)->lpVtbl -> get_isAcceleratorGroupSharedLocal(This,pRetVal) ) + +#define IDiaSymbol_get_isAcceleratorPointerTagLiveRange(This,pRetVal) \ + ( (This)->lpVtbl -> get_isAcceleratorPointerTagLiveRange(This,pRetVal) ) + +#define IDiaSymbol_get_isAcceleratorStubFunction(This,pRetVal) \ + ( (This)->lpVtbl -> get_isAcceleratorStubFunction(This,pRetVal) ) + +#define IDiaSymbol_get_numberOfAcceleratorPointerTags(This,pRetVal) \ + ( (This)->lpVtbl -> get_numberOfAcceleratorPointerTags(This,pRetVal) ) + +#define IDiaSymbol_get_isSdl(This,pRetVal) \ + ( (This)->lpVtbl -> get_isSdl(This,pRetVal) ) + +#define IDiaSymbol_get_isWinRTPointer(This,pRetVal) \ + ( (This)->lpVtbl -> get_isWinRTPointer(This,pRetVal) ) + +#define IDiaSymbol_get_isRefUdt(This,pRetVal) \ + ( (This)->lpVtbl -> get_isRefUdt(This,pRetVal) ) + +#define IDiaSymbol_get_isValueUdt(This,pRetVal) \ + ( (This)->lpVtbl -> get_isValueUdt(This,pRetVal) ) + +#define IDiaSymbol_get_isInterfaceUdt(This,pRetVal) \ + ( (This)->lpVtbl -> get_isInterfaceUdt(This,pRetVal) ) + +#define IDiaSymbol_findInlineFramesByAddr(This,isect,offset,ppResult) \ + ( (This)->lpVtbl -> findInlineFramesByAddr(This,isect,offset,ppResult) ) + +#define IDiaSymbol_findInlineFramesByRVA(This,rva,ppResult) \ + ( (This)->lpVtbl -> findInlineFramesByRVA(This,rva,ppResult) ) + +#define IDiaSymbol_findInlineFramesByVA(This,va,ppResult) \ + ( (This)->lpVtbl -> findInlineFramesByVA(This,va,ppResult) ) + +#define IDiaSymbol_findInlineeLines(This,ppResult) \ + ( (This)->lpVtbl -> findInlineeLines(This,ppResult) ) + +#define IDiaSymbol_findInlineeLinesByAddr(This,isect,offset,length,ppResult) \ + ( (This)->lpVtbl -> findInlineeLinesByAddr(This,isect,offset,length,ppResult) ) + +#define IDiaSymbol_findInlineeLinesByRVA(This,rva,length,ppResult) \ + ( (This)->lpVtbl -> findInlineeLinesByRVA(This,rva,length,ppResult) ) + +#define IDiaSymbol_findInlineeLinesByVA(This,va,length,ppResult) \ + ( (This)->lpVtbl -> findInlineeLinesByVA(This,va,length,ppResult) ) + +#define IDiaSymbol_findSymbolsForAcceleratorPointerTag(This,tagValue,ppResult) \ + ( (This)->lpVtbl -> findSymbolsForAcceleratorPointerTag(This,tagValue,ppResult) ) + +#define IDiaSymbol_findSymbolsByRVAForAcceleratorPointerTag(This,tagValue,rva,ppResult) \ + ( (This)->lpVtbl -> findSymbolsByRVAForAcceleratorPointerTag(This,tagValue,rva,ppResult) ) + +#define IDiaSymbol_get_acceleratorPointerTags(This,cnt,pcnt,pPointerTags) \ + ( (This)->lpVtbl -> get_acceleratorPointerTags(This,cnt,pcnt,pPointerTags) ) + +#define IDiaSymbol_getSrcLineOnTypeDefn(This,ppResult) \ + ( (This)->lpVtbl -> getSrcLineOnTypeDefn(This,ppResult) ) + +#define IDiaSymbol_get_isPGO(This,pRetVal) \ + ( (This)->lpVtbl -> get_isPGO(This,pRetVal) ) + +#define IDiaSymbol_get_hasValidPGOCounts(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasValidPGOCounts(This,pRetVal) ) + +#define IDiaSymbol_get_isOptimizedForSpeed(This,pRetVal) \ + ( (This)->lpVtbl -> get_isOptimizedForSpeed(This,pRetVal) ) + +#define IDiaSymbol_get_PGOEntryCount(This,pRetVal) \ + ( (This)->lpVtbl -> get_PGOEntryCount(This,pRetVal) ) + +#define IDiaSymbol_get_PGOEdgeCount(This,pRetVal) \ + ( (This)->lpVtbl -> get_PGOEdgeCount(This,pRetVal) ) + +#define IDiaSymbol_get_PGODynamicInstructionCount(This,pRetVal) \ + ( (This)->lpVtbl -> get_PGODynamicInstructionCount(This,pRetVal) ) + +#define IDiaSymbol_get_staticSize(This,pRetVal) \ + ( (This)->lpVtbl -> get_staticSize(This,pRetVal) ) + +#define IDiaSymbol_get_finalLiveStaticSize(This,pRetVal) \ + ( (This)->lpVtbl -> get_finalLiveStaticSize(This,pRetVal) ) + +#define IDiaSymbol_get_phaseName(This,pRetVal) \ + ( (This)->lpVtbl -> get_phaseName(This,pRetVal) ) + +#define IDiaSymbol_get_hasControlFlowCheck(This,pRetVal) \ + ( (This)->lpVtbl -> get_hasControlFlowCheck(This,pRetVal) ) + +#define IDiaSymbol_get_constantExport(This,pRetVal) \ + ( (This)->lpVtbl -> get_constantExport(This,pRetVal) ) + +#define IDiaSymbol_get_dataExport(This,pRetVal) \ + ( (This)->lpVtbl -> get_dataExport(This,pRetVal) ) + +#define IDiaSymbol_get_privateExport(This,pRetVal) \ + ( (This)->lpVtbl -> get_privateExport(This,pRetVal) ) + +#define IDiaSymbol_get_noNameExport(This,pRetVal) \ + ( (This)->lpVtbl -> get_noNameExport(This,pRetVal) ) + +#define IDiaSymbol_get_exportHasExplicitlyAssignedOrdinal(This,pRetVal) \ + ( (This)->lpVtbl -> get_exportHasExplicitlyAssignedOrdinal(This,pRetVal) ) + +#define IDiaSymbol_get_exportIsForwarder(This,pRetVal) \ + ( (This)->lpVtbl -> get_exportIsForwarder(This,pRetVal) ) + +#define IDiaSymbol_get_ordinal(This,pRetVal) \ + ( (This)->lpVtbl -> get_ordinal(This,pRetVal) ) + +#define IDiaSymbol_get_frameSize(This,pRetVal) \ + ( (This)->lpVtbl -> get_frameSize(This,pRetVal) ) + +#define IDiaSymbol_get_exceptionHandlerAddressSection(This,pRetVal) \ + ( (This)->lpVtbl -> get_exceptionHandlerAddressSection(This,pRetVal) ) + +#define IDiaSymbol_get_exceptionHandlerAddressOffset(This,pRetVal) \ + ( (This)->lpVtbl -> get_exceptionHandlerAddressOffset(This,pRetVal) ) + +#define IDiaSymbol_get_exceptionHandlerRelativeVirtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_exceptionHandlerRelativeVirtualAddress(This,pRetVal) ) + +#define IDiaSymbol_get_exceptionHandlerVirtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_exceptionHandlerVirtualAddress(This,pRetVal) ) + +#define IDiaSymbol_findInputAssemblyFile(This,ppResult) \ + ( (This)->lpVtbl -> findInputAssemblyFile(This,ppResult) ) + +#define IDiaSymbol_get_characteristics(This,pRetVal) \ + ( (This)->lpVtbl -> get_characteristics(This,pRetVal) ) + +#define IDiaSymbol_get_coffGroup(This,pRetVal) \ + ( (This)->lpVtbl -> get_coffGroup(This,pRetVal) ) + +#define IDiaSymbol_get_bindID(This,pRetVal) \ + ( (This)->lpVtbl -> get_bindID(This,pRetVal) ) + +#define IDiaSymbol_get_bindSpace(This,pRetVal) \ + ( (This)->lpVtbl -> get_bindSpace(This,pRetVal) ) + +#define IDiaSymbol_get_bindSlot(This,pRetVal) \ + ( (This)->lpVtbl -> get_bindSlot(This,pRetVal) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_virtualBaseTableType_Proxy( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + +void __RPC_STUB IDiaSymbol_get_virtualBaseTableType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_hasManagedCode_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_hasManagedCode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isHotpatchable_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isHotpatchable_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isCVTCIL_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isCVTCIL_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isMSILNetmodule_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isMSILNetmodule_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isCTypes_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isCTypes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isStripped_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isStripped_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_frontEndQFE_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_frontEndQFE_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_backEndQFE_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_backEndQFE_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_wasInlined_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_wasInlined_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_strictGSCheck_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_strictGSCheck_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isCxxReturnUdt_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isCxxReturnUdt_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isConstructorVirtualBase_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isConstructorVirtualBase_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_RValueReference_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_RValueReference_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_unmodifiedType_Proxy( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + +void __RPC_STUB IDiaSymbol_get_unmodifiedType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_framePointerPresent_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_framePointerPresent_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isSafeBuffers_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isSafeBuffers_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_intrinsic_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_intrinsic_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_sealed_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_sealed_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_hfaFloat_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_hfaFloat_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_hfaDouble_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_hfaDouble_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_liveRangeStartAddressSection_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_liveRangeStartAddressSection_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_liveRangeStartAddressOffset_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_liveRangeStartAddressOffset_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_liveRangeStartRelativeVirtualAddress_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_liveRangeStartRelativeVirtualAddress_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_countLiveRanges_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_countLiveRanges_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_liveRangeLength_Proxy( + IDiaSymbol * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_liveRangeLength_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_offsetInUdt_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_offsetInUdt_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_paramBasePointerRegisterId_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_paramBasePointerRegisterId_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_localBasePointerRegisterId_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_localBasePointerRegisterId_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isLocationControlFlowDependent_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isLocationControlFlowDependent_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_stride_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_stride_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_numberOfRows_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_numberOfRows_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_numberOfColumns_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_numberOfColumns_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isMatrixRowMajor_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isMatrixRowMajor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDiaSymbol_get_numericProperties_Proxy( + IDiaSymbol * This, + /* [in] */ DWORD cnt, + /* [out] */ DWORD *pcnt, + /* [size_is][out] */ DWORD *pProperties); + + +void __RPC_STUB IDiaSymbol_get_numericProperties_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDiaSymbol_get_modifierValues_Proxy( + IDiaSymbol * This, + /* [in] */ DWORD cnt, + /* [out] */ DWORD *pcnt, + /* [size_is][out] */ WORD *pModifiers); + + +void __RPC_STUB IDiaSymbol_get_modifierValues_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isReturnValue_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isReturnValue_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isOptimizedAway_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isOptimizedAway_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_builtInKind_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_builtInKind_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_registerType_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_registerType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_baseDataSlot_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_baseDataSlot_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_baseDataOffset_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_baseDataOffset_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_textureSlot_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_textureSlot_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_samplerSlot_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_samplerSlot_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_uavSlot_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_uavSlot_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_sizeInUdt_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_sizeInUdt_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_memorySpaceKind_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_memorySpaceKind_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_unmodifiedTypeId_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_unmodifiedTypeId_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_subTypeId_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_subTypeId_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_subType_Proxy( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + +void __RPC_STUB IDiaSymbol_get_subType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_numberOfModifiers_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_numberOfModifiers_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_numberOfRegisterIndices_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_numberOfRegisterIndices_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isHLSLData_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isHLSLData_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isPointerToDataMember_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isPointerToDataMember_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isPointerToMemberFunction_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isPointerToMemberFunction_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isSingleInheritance_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isSingleInheritance_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isMultipleInheritance_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isMultipleInheritance_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isVirtualInheritance_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isVirtualInheritance_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_restrictedType_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_restrictedType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isPointerBasedOnSymbolValue_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isPointerBasedOnSymbolValue_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_baseSymbol_Proxy( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + +void __RPC_STUB IDiaSymbol_get_baseSymbol_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_baseSymbolId_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_baseSymbolId_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_objectFileName_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BSTR *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_objectFileName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isAcceleratorGroupSharedLocal_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isAcceleratorGroupSharedLocal_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isAcceleratorPointerTagLiveRange_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isAcceleratorPointerTagLiveRange_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isAcceleratorStubFunction_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isAcceleratorStubFunction_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_numberOfAcceleratorPointerTags_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_numberOfAcceleratorPointerTags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isSdl_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isSdl_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isWinRTPointer_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isWinRTPointer_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isRefUdt_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isRefUdt_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isValueUdt_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isValueUdt_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isInterfaceUdt_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isInterfaceUdt_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDiaSymbol_findInlineFramesByAddr_Proxy( + IDiaSymbol * This, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [out] */ IDiaEnumSymbols **ppResult); + + +void __RPC_STUB IDiaSymbol_findInlineFramesByAddr_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDiaSymbol_findInlineFramesByRVA_Proxy( + IDiaSymbol * This, + /* [in] */ DWORD rva, + /* [out] */ IDiaEnumSymbols **ppResult); + + +void __RPC_STUB IDiaSymbol_findInlineFramesByRVA_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDiaSymbol_findInlineFramesByVA_Proxy( + IDiaSymbol * This, + /* [in] */ ULONGLONG va, + /* [out] */ IDiaEnumSymbols **ppResult); + + +void __RPC_STUB IDiaSymbol_findInlineFramesByVA_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDiaSymbol_findInlineeLines_Proxy( + IDiaSymbol * This, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + +void __RPC_STUB IDiaSymbol_findInlineeLines_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDiaSymbol_findInlineeLinesByAddr_Proxy( + IDiaSymbol * This, + /* [in] */ DWORD isect, + /* [in] */ DWORD offset, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + +void __RPC_STUB IDiaSymbol_findInlineeLinesByAddr_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDiaSymbol_findInlineeLinesByRVA_Proxy( + IDiaSymbol * This, + /* [in] */ DWORD rva, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + +void __RPC_STUB IDiaSymbol_findInlineeLinesByRVA_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDiaSymbol_findInlineeLinesByVA_Proxy( + IDiaSymbol * This, + /* [in] */ ULONGLONG va, + /* [in] */ DWORD length, + /* [out] */ IDiaEnumLineNumbers **ppResult); + + +void __RPC_STUB IDiaSymbol_findInlineeLinesByVA_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDiaSymbol_findSymbolsForAcceleratorPointerTag_Proxy( + IDiaSymbol * This, + /* [in] */ DWORD tagValue, + /* [out] */ IDiaEnumSymbols **ppResult); + + +void __RPC_STUB IDiaSymbol_findSymbolsForAcceleratorPointerTag_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDiaSymbol_findSymbolsByRVAForAcceleratorPointerTag_Proxy( + IDiaSymbol * This, + /* [in] */ DWORD tagValue, + /* [in] */ DWORD rva, + /* [out] */ IDiaEnumSymbols **ppResult); + + +void __RPC_STUB IDiaSymbol_findSymbolsByRVAForAcceleratorPointerTag_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDiaSymbol_get_acceleratorPointerTags_Proxy( + IDiaSymbol * This, + /* [in] */ DWORD cnt, + /* [out] */ DWORD *pcnt, + /* [size_is][out] */ DWORD *pPointerTags); + + +void __RPC_STUB IDiaSymbol_get_acceleratorPointerTags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDiaSymbol_getSrcLineOnTypeDefn_Proxy( + IDiaSymbol * This, + /* [out] */ IDiaLineNumber **ppResult); + + +void __RPC_STUB IDiaSymbol_getSrcLineOnTypeDefn_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isPGO_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isPGO_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_hasValidPGOCounts_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_hasValidPGOCounts_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_isOptimizedForSpeed_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_isOptimizedForSpeed_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_PGOEntryCount_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_PGOEntryCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_PGOEdgeCount_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_PGOEdgeCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_PGODynamicInstructionCount_Proxy( + IDiaSymbol * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_PGODynamicInstructionCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_staticSize_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_staticSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_finalLiveStaticSize_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_finalLiveStaticSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_phaseName_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BSTR *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_phaseName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_hasControlFlowCheck_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_hasControlFlowCheck_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_constantExport_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_constantExport_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_dataExport_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_dataExport_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_privateExport_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_privateExport_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_noNameExport_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_noNameExport_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_exportHasExplicitlyAssignedOrdinal_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_exportHasExplicitlyAssignedOrdinal_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_exportIsForwarder_Proxy( + IDiaSymbol * This, + /* [retval][out] */ BOOL *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_exportIsForwarder_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_ordinal_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_ordinal_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_frameSize_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_frameSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_exceptionHandlerAddressSection_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_exceptionHandlerAddressSection_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_exceptionHandlerAddressOffset_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_exceptionHandlerAddressOffset_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_exceptionHandlerRelativeVirtualAddress_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_exceptionHandlerRelativeVirtualAddress_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_exceptionHandlerVirtualAddress_Proxy( + IDiaSymbol * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_exceptionHandlerVirtualAddress_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDiaSymbol_findInputAssemblyFile_Proxy( + IDiaSymbol * This, + /* [out] */ IDiaInputAssemblyFile **ppResult); + + +void __RPC_STUB IDiaSymbol_findInputAssemblyFile_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_characteristics_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_characteristics_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_coffGroup_Proxy( + IDiaSymbol * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + +void __RPC_STUB IDiaSymbol_get_coffGroup_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_bindID_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_bindID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_bindSpace_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_bindSpace_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_bindSlot_Proxy( + IDiaSymbol * This, + /* [retval][out] */ DWORD *pRetVal); + + +void __RPC_STUB IDiaSymbol_get_bindSlot_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDiaSymbol_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaSourceFile_INTERFACE_DEFINED__ +#define __IDiaSourceFile_INTERFACE_DEFINED__ + +/* interface IDiaSourceFile */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaSourceFile; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("A2EF5353-F5A8-4eb3-90D2-CB526ACB3CDD") + IDiaSourceFile : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_uniqueId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_fileName( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_checksumType( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_compilands( + /* [retval][out] */ IDiaEnumSymbols **pRetVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_checksum( + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaSourceFileVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaSourceFile * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaSourceFile * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaSourceFile * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_uniqueId )( + IDiaSourceFile * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_fileName )( + IDiaSourceFile * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_checksumType )( + IDiaSourceFile * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_compilands )( + IDiaSourceFile * This, + /* [retval][out] */ IDiaEnumSymbols **pRetVal); + + HRESULT ( STDMETHODCALLTYPE *get_checksum )( + IDiaSourceFile * This, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData); + + END_INTERFACE + } IDiaSourceFileVtbl; + + interface IDiaSourceFile + { + CONST_VTBL struct IDiaSourceFileVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaSourceFile_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaSourceFile_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaSourceFile_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaSourceFile_get_uniqueId(This,pRetVal) \ + ( (This)->lpVtbl -> get_uniqueId(This,pRetVal) ) + +#define IDiaSourceFile_get_fileName(This,pRetVal) \ + ( (This)->lpVtbl -> get_fileName(This,pRetVal) ) + +#define IDiaSourceFile_get_checksumType(This,pRetVal) \ + ( (This)->lpVtbl -> get_checksumType(This,pRetVal) ) + +#define IDiaSourceFile_get_compilands(This,pRetVal) \ + ( (This)->lpVtbl -> get_compilands(This,pRetVal) ) + +#define IDiaSourceFile_get_checksum(This,cbData,pcbData,pbData) \ + ( (This)->lpVtbl -> get_checksum(This,cbData,pcbData,pbData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaSourceFile_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaInputAssemblyFile_INTERFACE_DEFINED__ +#define __IDiaInputAssemblyFile_INTERFACE_DEFINED__ + +/* interface IDiaInputAssemblyFile */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaInputAssemblyFile; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3BFE56B0-390C-4863-9430-1F3D083B7684") + IDiaInputAssemblyFile : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_uniqueId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_index( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_timestamp( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_pdbAvailableAtILMerge( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_fileName( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_version( + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaInputAssemblyFileVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaInputAssemblyFile * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaInputAssemblyFile * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaInputAssemblyFile * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_uniqueId )( + IDiaInputAssemblyFile * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_index )( + IDiaInputAssemblyFile * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_timestamp )( + IDiaInputAssemblyFile * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_pdbAvailableAtILMerge )( + IDiaInputAssemblyFile * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_fileName )( + IDiaInputAssemblyFile * This, + /* [retval][out] */ BSTR *pRetVal); + + HRESULT ( STDMETHODCALLTYPE *get_version )( + IDiaInputAssemblyFile * This, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData); + + END_INTERFACE + } IDiaInputAssemblyFileVtbl; + + interface IDiaInputAssemblyFile + { + CONST_VTBL struct IDiaInputAssemblyFileVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaInputAssemblyFile_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaInputAssemblyFile_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaInputAssemblyFile_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaInputAssemblyFile_get_uniqueId(This,pRetVal) \ + ( (This)->lpVtbl -> get_uniqueId(This,pRetVal) ) + +#define IDiaInputAssemblyFile_get_index(This,pRetVal) \ + ( (This)->lpVtbl -> get_index(This,pRetVal) ) + +#define IDiaInputAssemblyFile_get_timestamp(This,pRetVal) \ + ( (This)->lpVtbl -> get_timestamp(This,pRetVal) ) + +#define IDiaInputAssemblyFile_get_pdbAvailableAtILMerge(This,pRetVal) \ + ( (This)->lpVtbl -> get_pdbAvailableAtILMerge(This,pRetVal) ) + +#define IDiaInputAssemblyFile_get_fileName(This,pRetVal) \ + ( (This)->lpVtbl -> get_fileName(This,pRetVal) ) + +#define IDiaInputAssemblyFile_get_version(This,cbData,pcbData,pbData) \ + ( (This)->lpVtbl -> get_version(This,cbData,pcbData,pbData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaInputAssemblyFile_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaLineNumber_INTERFACE_DEFINED__ +#define __IDiaLineNumber_INTERFACE_DEFINED__ + +/* interface IDiaLineNumber */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaLineNumber; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B388EB14-BE4D-421d-A8A1-6CF7AB057086") + IDiaLineNumber : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_compiland( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_sourceFile( + /* [retval][out] */ IDiaSourceFile **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lineNumber( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lineNumberEnd( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_columnNumber( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_columnNumberEnd( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_addressSection( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_addressOffset( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_relativeVirtualAddress( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtualAddress( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_length( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_sourceFileId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_statement( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_compilandId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaLineNumberVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaLineNumber * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaLineNumber * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaLineNumber * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_compiland )( + IDiaLineNumber * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_sourceFile )( + IDiaLineNumber * This, + /* [retval][out] */ IDiaSourceFile **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lineNumber )( + IDiaLineNumber * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lineNumberEnd )( + IDiaLineNumber * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnNumber )( + IDiaLineNumber * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnNumberEnd )( + IDiaLineNumber * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_addressSection )( + IDiaLineNumber * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_addressOffset )( + IDiaLineNumber * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_relativeVirtualAddress )( + IDiaLineNumber * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtualAddress )( + IDiaLineNumber * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_length )( + IDiaLineNumber * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_sourceFileId )( + IDiaLineNumber * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_statement )( + IDiaLineNumber * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_compilandId )( + IDiaLineNumber * This, + /* [retval][out] */ DWORD *pRetVal); + + END_INTERFACE + } IDiaLineNumberVtbl; + + interface IDiaLineNumber + { + CONST_VTBL struct IDiaLineNumberVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaLineNumber_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaLineNumber_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaLineNumber_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaLineNumber_get_compiland(This,pRetVal) \ + ( (This)->lpVtbl -> get_compiland(This,pRetVal) ) + +#define IDiaLineNumber_get_sourceFile(This,pRetVal) \ + ( (This)->lpVtbl -> get_sourceFile(This,pRetVal) ) + +#define IDiaLineNumber_get_lineNumber(This,pRetVal) \ + ( (This)->lpVtbl -> get_lineNumber(This,pRetVal) ) + +#define IDiaLineNumber_get_lineNumberEnd(This,pRetVal) \ + ( (This)->lpVtbl -> get_lineNumberEnd(This,pRetVal) ) + +#define IDiaLineNumber_get_columnNumber(This,pRetVal) \ + ( (This)->lpVtbl -> get_columnNumber(This,pRetVal) ) + +#define IDiaLineNumber_get_columnNumberEnd(This,pRetVal) \ + ( (This)->lpVtbl -> get_columnNumberEnd(This,pRetVal) ) + +#define IDiaLineNumber_get_addressSection(This,pRetVal) \ + ( (This)->lpVtbl -> get_addressSection(This,pRetVal) ) + +#define IDiaLineNumber_get_addressOffset(This,pRetVal) \ + ( (This)->lpVtbl -> get_addressOffset(This,pRetVal) ) + +#define IDiaLineNumber_get_relativeVirtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_relativeVirtualAddress(This,pRetVal) ) + +#define IDiaLineNumber_get_virtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtualAddress(This,pRetVal) ) + +#define IDiaLineNumber_get_length(This,pRetVal) \ + ( (This)->lpVtbl -> get_length(This,pRetVal) ) + +#define IDiaLineNumber_get_sourceFileId(This,pRetVal) \ + ( (This)->lpVtbl -> get_sourceFileId(This,pRetVal) ) + +#define IDiaLineNumber_get_statement(This,pRetVal) \ + ( (This)->lpVtbl -> get_statement(This,pRetVal) ) + +#define IDiaLineNumber_get_compilandId(This,pRetVal) \ + ( (This)->lpVtbl -> get_compilandId(This,pRetVal) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaLineNumber_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaSectionContrib_INTERFACE_DEFINED__ +#define __IDiaSectionContrib_INTERFACE_DEFINED__ + +/* interface IDiaSectionContrib */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaSectionContrib; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0CF4B60E-35B1-4c6c-BDD8-854B9C8E3857") + IDiaSectionContrib : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_compiland( + /* [retval][out] */ IDiaSymbol **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_addressSection( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_addressOffset( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_relativeVirtualAddress( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtualAddress( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_length( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_notPaged( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_code( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_initializedData( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_uninitializedData( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_remove( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_comdat( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_discardable( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_notCached( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_share( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_execute( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_read( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_write( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_dataCrc( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_relocationsCrc( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_compilandId( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_code16bit( + /* [retval][out] */ BOOL *pRetVal) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaSectionContribVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaSectionContrib * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaSectionContrib * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaSectionContrib * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_compiland )( + IDiaSectionContrib * This, + /* [retval][out] */ IDiaSymbol **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_addressSection )( + IDiaSectionContrib * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_addressOffset )( + IDiaSectionContrib * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_relativeVirtualAddress )( + IDiaSectionContrib * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtualAddress )( + IDiaSectionContrib * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_length )( + IDiaSectionContrib * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_notPaged )( + IDiaSectionContrib * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_code )( + IDiaSectionContrib * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_initializedData )( + IDiaSectionContrib * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_uninitializedData )( + IDiaSectionContrib * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_remove )( + IDiaSectionContrib * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_comdat )( + IDiaSectionContrib * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_discardable )( + IDiaSectionContrib * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_notCached )( + IDiaSectionContrib * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_share )( + IDiaSectionContrib * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_execute )( + IDiaSectionContrib * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_read )( + IDiaSectionContrib * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_write )( + IDiaSectionContrib * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_dataCrc )( + IDiaSectionContrib * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_relocationsCrc )( + IDiaSectionContrib * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_compilandId )( + IDiaSectionContrib * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_code16bit )( + IDiaSectionContrib * This, + /* [retval][out] */ BOOL *pRetVal); + + END_INTERFACE + } IDiaSectionContribVtbl; + + interface IDiaSectionContrib + { + CONST_VTBL struct IDiaSectionContribVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaSectionContrib_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaSectionContrib_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaSectionContrib_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaSectionContrib_get_compiland(This,pRetVal) \ + ( (This)->lpVtbl -> get_compiland(This,pRetVal) ) + +#define IDiaSectionContrib_get_addressSection(This,pRetVal) \ + ( (This)->lpVtbl -> get_addressSection(This,pRetVal) ) + +#define IDiaSectionContrib_get_addressOffset(This,pRetVal) \ + ( (This)->lpVtbl -> get_addressOffset(This,pRetVal) ) + +#define IDiaSectionContrib_get_relativeVirtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_relativeVirtualAddress(This,pRetVal) ) + +#define IDiaSectionContrib_get_virtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtualAddress(This,pRetVal) ) + +#define IDiaSectionContrib_get_length(This,pRetVal) \ + ( (This)->lpVtbl -> get_length(This,pRetVal) ) + +#define IDiaSectionContrib_get_notPaged(This,pRetVal) \ + ( (This)->lpVtbl -> get_notPaged(This,pRetVal) ) + +#define IDiaSectionContrib_get_code(This,pRetVal) \ + ( (This)->lpVtbl -> get_code(This,pRetVal) ) + +#define IDiaSectionContrib_get_initializedData(This,pRetVal) \ + ( (This)->lpVtbl -> get_initializedData(This,pRetVal) ) + +#define IDiaSectionContrib_get_uninitializedData(This,pRetVal) \ + ( (This)->lpVtbl -> get_uninitializedData(This,pRetVal) ) + +#define IDiaSectionContrib_get_remove(This,pRetVal) \ + ( (This)->lpVtbl -> get_remove(This,pRetVal) ) + +#define IDiaSectionContrib_get_comdat(This,pRetVal) \ + ( (This)->lpVtbl -> get_comdat(This,pRetVal) ) + +#define IDiaSectionContrib_get_discardable(This,pRetVal) \ + ( (This)->lpVtbl -> get_discardable(This,pRetVal) ) + +#define IDiaSectionContrib_get_notCached(This,pRetVal) \ + ( (This)->lpVtbl -> get_notCached(This,pRetVal) ) + +#define IDiaSectionContrib_get_share(This,pRetVal) \ + ( (This)->lpVtbl -> get_share(This,pRetVal) ) + +#define IDiaSectionContrib_get_execute(This,pRetVal) \ + ( (This)->lpVtbl -> get_execute(This,pRetVal) ) + +#define IDiaSectionContrib_get_read(This,pRetVal) \ + ( (This)->lpVtbl -> get_read(This,pRetVal) ) + +#define IDiaSectionContrib_get_write(This,pRetVal) \ + ( (This)->lpVtbl -> get_write(This,pRetVal) ) + +#define IDiaSectionContrib_get_dataCrc(This,pRetVal) \ + ( (This)->lpVtbl -> get_dataCrc(This,pRetVal) ) + +#define IDiaSectionContrib_get_relocationsCrc(This,pRetVal) \ + ( (This)->lpVtbl -> get_relocationsCrc(This,pRetVal) ) + +#define IDiaSectionContrib_get_compilandId(This,pRetVal) \ + ( (This)->lpVtbl -> get_compilandId(This,pRetVal) ) + +#define IDiaSectionContrib_get_code16bit(This,pRetVal) \ + ( (This)->lpVtbl -> get_code16bit(This,pRetVal) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaSectionContrib_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaSegment_INTERFACE_DEFINED__ +#define __IDiaSegment_INTERFACE_DEFINED__ + +/* interface IDiaSegment */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaSegment; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0775B784-C75B-4449-848B-B7BD3159545B") + IDiaSegment : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_frame( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_offset( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_length( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_read( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_write( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_execute( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_addressSection( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_relativeVirtualAddress( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtualAddress( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaSegmentVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaSegment * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaSegment * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaSegment * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_frame )( + IDiaSegment * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_offset )( + IDiaSegment * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_length )( + IDiaSegment * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_read )( + IDiaSegment * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_write )( + IDiaSegment * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_execute )( + IDiaSegment * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_addressSection )( + IDiaSegment * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_relativeVirtualAddress )( + IDiaSegment * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtualAddress )( + IDiaSegment * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + END_INTERFACE + } IDiaSegmentVtbl; + + interface IDiaSegment + { + CONST_VTBL struct IDiaSegmentVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaSegment_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaSegment_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaSegment_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaSegment_get_frame(This,pRetVal) \ + ( (This)->lpVtbl -> get_frame(This,pRetVal) ) + +#define IDiaSegment_get_offset(This,pRetVal) \ + ( (This)->lpVtbl -> get_offset(This,pRetVal) ) + +#define IDiaSegment_get_length(This,pRetVal) \ + ( (This)->lpVtbl -> get_length(This,pRetVal) ) + +#define IDiaSegment_get_read(This,pRetVal) \ + ( (This)->lpVtbl -> get_read(This,pRetVal) ) + +#define IDiaSegment_get_write(This,pRetVal) \ + ( (This)->lpVtbl -> get_write(This,pRetVal) ) + +#define IDiaSegment_get_execute(This,pRetVal) \ + ( (This)->lpVtbl -> get_execute(This,pRetVal) ) + +#define IDiaSegment_get_addressSection(This,pRetVal) \ + ( (This)->lpVtbl -> get_addressSection(This,pRetVal) ) + +#define IDiaSegment_get_relativeVirtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_relativeVirtualAddress(This,pRetVal) ) + +#define IDiaSegment_get_virtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtualAddress(This,pRetVal) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaSegment_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaInjectedSource_INTERFACE_DEFINED__ +#define __IDiaInjectedSource_INTERFACE_DEFINED__ + +/* interface IDiaInjectedSource */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaInjectedSource; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("AE605CDC-8105-4a23-B710-3259F1E26112") + IDiaInjectedSource : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_crc( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_length( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_filename( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_objectFilename( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtualFilename( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_sourceCompression( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_source( + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaInjectedSourceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaInjectedSource * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaInjectedSource * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaInjectedSource * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_crc )( + IDiaInjectedSource * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_length )( + IDiaInjectedSource * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_filename )( + IDiaInjectedSource * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_objectFilename )( + IDiaInjectedSource * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtualFilename )( + IDiaInjectedSource * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_sourceCompression )( + IDiaInjectedSource * This, + /* [retval][out] */ DWORD *pRetVal); + + HRESULT ( STDMETHODCALLTYPE *get_source )( + IDiaInjectedSource * This, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData); + + END_INTERFACE + } IDiaInjectedSourceVtbl; + + interface IDiaInjectedSource + { + CONST_VTBL struct IDiaInjectedSourceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaInjectedSource_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaInjectedSource_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaInjectedSource_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaInjectedSource_get_crc(This,pRetVal) \ + ( (This)->lpVtbl -> get_crc(This,pRetVal) ) + +#define IDiaInjectedSource_get_length(This,pRetVal) \ + ( (This)->lpVtbl -> get_length(This,pRetVal) ) + +#define IDiaInjectedSource_get_filename(This,pRetVal) \ + ( (This)->lpVtbl -> get_filename(This,pRetVal) ) + +#define IDiaInjectedSource_get_objectFilename(This,pRetVal) \ + ( (This)->lpVtbl -> get_objectFilename(This,pRetVal) ) + +#define IDiaInjectedSource_get_virtualFilename(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtualFilename(This,pRetVal) ) + +#define IDiaInjectedSource_get_sourceCompression(This,pRetVal) \ + ( (This)->lpVtbl -> get_sourceCompression(This,pRetVal) ) + +#define IDiaInjectedSource_get_source(This,cbData,pcbData,pbData) \ + ( (This)->lpVtbl -> get_source(This,cbData,pcbData,pbData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaInjectedSource_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dia2_0000_0025 */ +/* [local] */ + + +enum __MIDL___MIDL_itf_dia2_0000_0025_0001 + { + E_DIA_INPROLOG = ( HRESULT )(( ( ( ( unsigned long )1 << 31 ) | ( ( unsigned long )( LONG )0x6d << 16 ) ) | ( unsigned long )100 ) ), + E_DIA_SYNTAX = ( E_DIA_INPROLOG + 1 ) , + E_DIA_FRAME_ACCESS = ( E_DIA_SYNTAX + 1 ) , + E_DIA_VALUE = ( E_DIA_FRAME_ACCESS + 1 ) + } ; + + +extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0025_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0025_v0_0_s_ifspec; + +#ifndef __IDiaStackWalkFrame_INTERFACE_DEFINED__ +#define __IDiaStackWalkFrame_INTERFACE_DEFINED__ + +/* interface IDiaStackWalkFrame */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaStackWalkFrame; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("07C590C1-438D-4F47-BDCD-4397BC81AD75") + IDiaStackWalkFrame : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_registerValue( + /* [in] */ DWORD index, + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_registerValue( + /* [in] */ DWORD index, + /* [in] */ ULONGLONG NewVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE readMemory( + /* [in] */ enum MemoryTypeEnum type, + /* [in] */ ULONGLONG va, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData) = 0; + + virtual HRESULT STDMETHODCALLTYPE searchForReturnAddress( + /* [in] */ IDiaFrameData *frame, + /* [out] */ ULONGLONG *returnAddress) = 0; + + virtual HRESULT STDMETHODCALLTYPE searchForReturnAddressStart( + /* [in] */ IDiaFrameData *frame, + /* [in] */ ULONGLONG startAddress, + /* [out] */ ULONGLONG *returnAddress) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaStackWalkFrameVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaStackWalkFrame * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaStackWalkFrame * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaStackWalkFrame * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_registerValue )( + IDiaStackWalkFrame * This, + /* [in] */ DWORD index, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_registerValue )( + IDiaStackWalkFrame * This, + /* [in] */ DWORD index, + /* [in] */ ULONGLONG NewVal); + + HRESULT ( STDMETHODCALLTYPE *readMemory )( + IDiaStackWalkFrame * This, + /* [in] */ enum MemoryTypeEnum type, + /* [in] */ ULONGLONG va, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData); + + HRESULT ( STDMETHODCALLTYPE *searchForReturnAddress )( + IDiaStackWalkFrame * This, + /* [in] */ IDiaFrameData *frame, + /* [out] */ ULONGLONG *returnAddress); + + HRESULT ( STDMETHODCALLTYPE *searchForReturnAddressStart )( + IDiaStackWalkFrame * This, + /* [in] */ IDiaFrameData *frame, + /* [in] */ ULONGLONG startAddress, + /* [out] */ ULONGLONG *returnAddress); + + END_INTERFACE + } IDiaStackWalkFrameVtbl; + + interface IDiaStackWalkFrame + { + CONST_VTBL struct IDiaStackWalkFrameVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaStackWalkFrame_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaStackWalkFrame_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaStackWalkFrame_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaStackWalkFrame_get_registerValue(This,index,pRetVal) \ + ( (This)->lpVtbl -> get_registerValue(This,index,pRetVal) ) + +#define IDiaStackWalkFrame_put_registerValue(This,index,NewVal) \ + ( (This)->lpVtbl -> put_registerValue(This,index,NewVal) ) + +#define IDiaStackWalkFrame_readMemory(This,type,va,cbData,pcbData,pbData) \ + ( (This)->lpVtbl -> readMemory(This,type,va,cbData,pcbData,pbData) ) + +#define IDiaStackWalkFrame_searchForReturnAddress(This,frame,returnAddress) \ + ( (This)->lpVtbl -> searchForReturnAddress(This,frame,returnAddress) ) + +#define IDiaStackWalkFrame_searchForReturnAddressStart(This,frame,startAddress,returnAddress) \ + ( (This)->lpVtbl -> searchForReturnAddressStart(This,frame,startAddress,returnAddress) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaStackWalkFrame_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaFrameData_INTERFACE_DEFINED__ +#define __IDiaFrameData_INTERFACE_DEFINED__ + +/* interface IDiaFrameData */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaFrameData; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("A39184B7-6A36-42de-8EEC-7DF9F3F59F33") + IDiaFrameData : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_addressSection( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_addressOffset( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_relativeVirtualAddress( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtualAddress( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lengthBlock( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lengthLocals( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lengthParams( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_maxStack( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lengthProlog( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lengthSavedRegisters( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_program( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_systemExceptionHandling( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_cplusplusExceptionHandling( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_functionStart( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_allocatesBasePointer( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_type( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_functionParent( + /* [retval][out] */ IDiaFrameData **pRetVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE execute( + IDiaStackWalkFrame *frame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaFrameDataVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaFrameData * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaFrameData * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaFrameData * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_addressSection )( + IDiaFrameData * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_addressOffset )( + IDiaFrameData * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_relativeVirtualAddress )( + IDiaFrameData * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtualAddress )( + IDiaFrameData * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lengthBlock )( + IDiaFrameData * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lengthLocals )( + IDiaFrameData * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lengthParams )( + IDiaFrameData * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_maxStack )( + IDiaFrameData * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lengthProlog )( + IDiaFrameData * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lengthSavedRegisters )( + IDiaFrameData * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_program )( + IDiaFrameData * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_systemExceptionHandling )( + IDiaFrameData * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_cplusplusExceptionHandling )( + IDiaFrameData * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_functionStart )( + IDiaFrameData * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_allocatesBasePointer )( + IDiaFrameData * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_type )( + IDiaFrameData * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_functionParent )( + IDiaFrameData * This, + /* [retval][out] */ IDiaFrameData **pRetVal); + + HRESULT ( STDMETHODCALLTYPE *execute )( + IDiaFrameData * This, + IDiaStackWalkFrame *frame); + + END_INTERFACE + } IDiaFrameDataVtbl; + + interface IDiaFrameData + { + CONST_VTBL struct IDiaFrameDataVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaFrameData_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaFrameData_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaFrameData_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaFrameData_get_addressSection(This,pRetVal) \ + ( (This)->lpVtbl -> get_addressSection(This,pRetVal) ) + +#define IDiaFrameData_get_addressOffset(This,pRetVal) \ + ( (This)->lpVtbl -> get_addressOffset(This,pRetVal) ) + +#define IDiaFrameData_get_relativeVirtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_relativeVirtualAddress(This,pRetVal) ) + +#define IDiaFrameData_get_virtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtualAddress(This,pRetVal) ) + +#define IDiaFrameData_get_lengthBlock(This,pRetVal) \ + ( (This)->lpVtbl -> get_lengthBlock(This,pRetVal) ) + +#define IDiaFrameData_get_lengthLocals(This,pRetVal) \ + ( (This)->lpVtbl -> get_lengthLocals(This,pRetVal) ) + +#define IDiaFrameData_get_lengthParams(This,pRetVal) \ + ( (This)->lpVtbl -> get_lengthParams(This,pRetVal) ) + +#define IDiaFrameData_get_maxStack(This,pRetVal) \ + ( (This)->lpVtbl -> get_maxStack(This,pRetVal) ) + +#define IDiaFrameData_get_lengthProlog(This,pRetVal) \ + ( (This)->lpVtbl -> get_lengthProlog(This,pRetVal) ) + +#define IDiaFrameData_get_lengthSavedRegisters(This,pRetVal) \ + ( (This)->lpVtbl -> get_lengthSavedRegisters(This,pRetVal) ) + +#define IDiaFrameData_get_program(This,pRetVal) \ + ( (This)->lpVtbl -> get_program(This,pRetVal) ) + +#define IDiaFrameData_get_systemExceptionHandling(This,pRetVal) \ + ( (This)->lpVtbl -> get_systemExceptionHandling(This,pRetVal) ) + +#define IDiaFrameData_get_cplusplusExceptionHandling(This,pRetVal) \ + ( (This)->lpVtbl -> get_cplusplusExceptionHandling(This,pRetVal) ) + +#define IDiaFrameData_get_functionStart(This,pRetVal) \ + ( (This)->lpVtbl -> get_functionStart(This,pRetVal) ) + +#define IDiaFrameData_get_allocatesBasePointer(This,pRetVal) \ + ( (This)->lpVtbl -> get_allocatesBasePointer(This,pRetVal) ) + +#define IDiaFrameData_get_type(This,pRetVal) \ + ( (This)->lpVtbl -> get_type(This,pRetVal) ) + +#define IDiaFrameData_get_functionParent(This,pRetVal) \ + ( (This)->lpVtbl -> get_functionParent(This,pRetVal) ) + +#define IDiaFrameData_execute(This,frame) \ + ( (This)->lpVtbl -> execute(This,frame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaFrameData_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaImageData_INTERFACE_DEFINED__ +#define __IDiaImageData_INTERFACE_DEFINED__ + +/* interface IDiaImageData */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaImageData; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C8E40ED2-A1D9-4221-8692-3CE661184B44") + IDiaImageData : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_relativeVirtualAddress( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_virtualAddress( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_imageBase( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaImageDataVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaImageData * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaImageData * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaImageData * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_relativeVirtualAddress )( + IDiaImageData * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_virtualAddress )( + IDiaImageData * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_imageBase )( + IDiaImageData * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + END_INTERFACE + } IDiaImageDataVtbl; + + interface IDiaImageData + { + CONST_VTBL struct IDiaImageDataVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaImageData_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaImageData_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaImageData_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaImageData_get_relativeVirtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_relativeVirtualAddress(This,pRetVal) ) + +#define IDiaImageData_get_virtualAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_virtualAddress(This,pRetVal) ) + +#define IDiaImageData_get_imageBase(This,pRetVal) \ + ( (This)->lpVtbl -> get_imageBase(This,pRetVal) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaImageData_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaTable_INTERFACE_DEFINED__ +#define __IDiaTable_INTERFACE_DEFINED__ + +/* interface IDiaTable */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaTable; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("4A59FB77-ABAC-469b-A30B-9ECC85BFEF14") + IDiaTable : public IEnumUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_name( + /* [retval][out] */ BSTR *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ DWORD index, + /* [retval][out] */ IUnknown **element) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaTableVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaTable * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaTable * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaTable * This); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Next )( + IDiaTable * This, + /* [annotation][in] */ + _In_ ULONG celt, + /* [annotation][out] */ + _Out_writes_to_(celt,*pceltFetched) IUnknown **rgelt, + /* [annotation][out] */ + _Out_opt_ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IDiaTable * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IDiaTable * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDiaTable * This, + /* [out] */ IEnumUnknown **ppenum); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + IDiaTable * This, + /* [retval][out] */ IUnknown **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_name )( + IDiaTable * This, + /* [retval][out] */ BSTR *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + IDiaTable * This, + /* [retval][out] */ LONG *pRetVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + IDiaTable * This, + /* [in] */ DWORD index, + /* [retval][out] */ IUnknown **element); + + END_INTERFACE + } IDiaTableVtbl; + + interface IDiaTable + { + CONST_VTBL struct IDiaTableVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaTable_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaTable_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaTable_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaTable_Next(This,celt,rgelt,pceltFetched) \ + ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) + +#define IDiaTable_Skip(This,celt) \ + ( (This)->lpVtbl -> Skip(This,celt) ) + +#define IDiaTable_Reset(This) \ + ( (This)->lpVtbl -> Reset(This) ) + +#define IDiaTable_Clone(This,ppenum) \ + ( (This)->lpVtbl -> Clone(This,ppenum) ) + + +#define IDiaTable_get__NewEnum(This,pRetVal) \ + ( (This)->lpVtbl -> get__NewEnum(This,pRetVal) ) + +#define IDiaTable_get_name(This,pRetVal) \ + ( (This)->lpVtbl -> get_name(This,pRetVal) ) + +#define IDiaTable_get_Count(This,pRetVal) \ + ( (This)->lpVtbl -> get_Count(This,pRetVal) ) + +#define IDiaTable_Item(This,index,element) \ + ( (This)->lpVtbl -> Item(This,index,element) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaTable_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaEnumTables_INTERFACE_DEFINED__ +#define __IDiaEnumTables_INTERFACE_DEFINED__ + +/* interface IDiaEnumTables */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaEnumTables; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C65C2B0A-1150-4d7a-AFCC-E05BF3DEE81E") + IDiaEnumTables : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IUnknown **pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ LONG *pRetVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( + /* [in] */ VARIANT index, + /* [retval][out] */ IDiaTable **table) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + ULONG celt, + IDiaTable **rgelt, + ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IDiaEnumTables **ppenum) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaEnumTablesVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaEnumTables * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaEnumTables * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaEnumTables * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + IDiaEnumTables * This, + /* [retval][out] */ IUnknown **pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + IDiaEnumTables * This, + /* [retval][out] */ LONG *pRetVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( + IDiaEnumTables * This, + /* [in] */ VARIANT index, + /* [retval][out] */ IDiaTable **table); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IDiaEnumTables * This, + ULONG celt, + IDiaTable **rgelt, + ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IDiaEnumTables * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IDiaEnumTables * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDiaEnumTables * This, + /* [out] */ IDiaEnumTables **ppenum); + + END_INTERFACE + } IDiaEnumTablesVtbl; + + interface IDiaEnumTables + { + CONST_VTBL struct IDiaEnumTablesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaEnumTables_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaEnumTables_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaEnumTables_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaEnumTables_get__NewEnum(This,pRetVal) \ + ( (This)->lpVtbl -> get__NewEnum(This,pRetVal) ) + +#define IDiaEnumTables_get_Count(This,pRetVal) \ + ( (This)->lpVtbl -> get_Count(This,pRetVal) ) + +#define IDiaEnumTables_Item(This,index,table) \ + ( (This)->lpVtbl -> Item(This,index,table) ) + +#define IDiaEnumTables_Next(This,celt,rgelt,pceltFetched) \ + ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) + +#define IDiaEnumTables_Skip(This,celt) \ + ( (This)->lpVtbl -> Skip(This,celt) ) + +#define IDiaEnumTables_Reset(This) \ + ( (This)->lpVtbl -> Reset(This) ) + +#define IDiaEnumTables_Clone(This,ppenum) \ + ( (This)->lpVtbl -> Clone(This,ppenum) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaEnumTables_INTERFACE_DEFINED__ */ + + + +#ifndef __Dia2Lib_LIBRARY_DEFINED__ +#define __Dia2Lib_LIBRARY_DEFINED__ + +/* library Dia2Lib */ +/* [helpstring][version][uuid] */ + + +EXTERN_C const IID LIBID_Dia2Lib; + +EXTERN_C const CLSID CLSID_DiaSource; + +#ifdef __cplusplus + +class DECLSPEC_UUID("e6756135-1e65-4d17-8576-610761398c3c") +DiaSource; +#endif + +EXTERN_C const CLSID CLSID_DiaSourceAlt; + +#ifdef __cplusplus + +class DECLSPEC_UUID("91904831-49ca-4766-b95c-25397e2dd6dc") +DiaSourceAlt; +#endif + +EXTERN_C const CLSID CLSID_DiaStackWalker; + +#ifdef __cplusplus + +class DECLSPEC_UUID("ce4a85db-5768-475b-a4e1-c0bca2112a6b") +DiaStackWalker; +#endif +#endif /* __Dia2Lib_LIBRARY_DEFINED__ */ + +/* interface __MIDL_itf_dia2_0000_0031 */ +/* [local] */ + +#define DiaTable_Symbols ( L"Symbols" ) + +#define DiaTable_Sections ( L"Sections" ) + +#define DiaTable_SrcFiles ( L"SourceFiles" ) + +#define DiaTable_LineNums ( L"LineNumbers" ) + +#define DiaTable_SegMap ( L"SegmentMap" ) + +#define DiaTable_Dbg ( L"Dbg" ) + +#define DiaTable_InjSrc ( L"InjectedSource" ) + +#define DiaTable_FrameData ( L"FrameData" ) + +#define DiaTable_InputAssemblyFiles ( L"InputAssemblyFiles" ) + + + +extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0031_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0031_v0_0_s_ifspec; + +#ifndef __IDiaPropertyStorage_INTERFACE_DEFINED__ +#define __IDiaPropertyStorage_INTERFACE_DEFINED__ + +/* interface IDiaPropertyStorage */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaPropertyStorage; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9d416f9c-e184-45b2-a4f0-ce517f719e9b") + IDiaPropertyStorage : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ReadMultiple( + /* [in] */ ULONG cpspec, + /* [size_is][in] */ const PROPSPEC *rgpspec, + /* [size_is][out] */ PROPVARIANT *rgvar) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReadPropertyNames( + /* [in] */ ULONG cpropid, + /* [size_is][in] */ const PROPID *rgpropid, + /* [size_is][out][in] */ BSTR *rglpwstrName) = 0; + + virtual HRESULT STDMETHODCALLTYPE Enum( + /* [out] */ IEnumSTATPROPSTG **ppenum) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReadDWORD( + /* [in] */ PROPID id, + /* [out] */ DWORD *pValue) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReadLONG( + /* [in] */ PROPID id, + /* [out] */ LONG *pValue) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReadBOOL( + /* [in] */ PROPID id, + /* [out] */ BOOL *pValue) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReadULONGLONG( + /* [in] */ PROPID id, + /* [out] */ ULONGLONG *pValue) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReadBSTR( + /* [in] */ PROPID id, + /* [out] */ BSTR *pValue) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaPropertyStorageVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaPropertyStorage * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaPropertyStorage * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaPropertyStorage * This); + + HRESULT ( STDMETHODCALLTYPE *ReadMultiple )( + IDiaPropertyStorage * This, + /* [in] */ ULONG cpspec, + /* [size_is][in] */ const PROPSPEC *rgpspec, + /* [size_is][out] */ PROPVARIANT *rgvar); + + HRESULT ( STDMETHODCALLTYPE *ReadPropertyNames )( + IDiaPropertyStorage * This, + /* [in] */ ULONG cpropid, + /* [size_is][in] */ const PROPID *rgpropid, + /* [size_is][out][in] */ BSTR *rglpwstrName); + + HRESULT ( STDMETHODCALLTYPE *Enum )( + IDiaPropertyStorage * This, + /* [out] */ IEnumSTATPROPSTG **ppenum); + + HRESULT ( STDMETHODCALLTYPE *ReadDWORD )( + IDiaPropertyStorage * This, + /* [in] */ PROPID id, + /* [out] */ DWORD *pValue); + + HRESULT ( STDMETHODCALLTYPE *ReadLONG )( + IDiaPropertyStorage * This, + /* [in] */ PROPID id, + /* [out] */ LONG *pValue); + + HRESULT ( STDMETHODCALLTYPE *ReadBOOL )( + IDiaPropertyStorage * This, + /* [in] */ PROPID id, + /* [out] */ BOOL *pValue); + + HRESULT ( STDMETHODCALLTYPE *ReadULONGLONG )( + IDiaPropertyStorage * This, + /* [in] */ PROPID id, + /* [out] */ ULONGLONG *pValue); + + HRESULT ( STDMETHODCALLTYPE *ReadBSTR )( + IDiaPropertyStorage * This, + /* [in] */ PROPID id, + /* [out] */ BSTR *pValue); + + END_INTERFACE + } IDiaPropertyStorageVtbl; + + interface IDiaPropertyStorage + { + CONST_VTBL struct IDiaPropertyStorageVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaPropertyStorage_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaPropertyStorage_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaPropertyStorage_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaPropertyStorage_ReadMultiple(This,cpspec,rgpspec,rgvar) \ + ( (This)->lpVtbl -> ReadMultiple(This,cpspec,rgpspec,rgvar) ) + +#define IDiaPropertyStorage_ReadPropertyNames(This,cpropid,rgpropid,rglpwstrName) \ + ( (This)->lpVtbl -> ReadPropertyNames(This,cpropid,rgpropid,rglpwstrName) ) + +#define IDiaPropertyStorage_Enum(This,ppenum) \ + ( (This)->lpVtbl -> Enum(This,ppenum) ) + +#define IDiaPropertyStorage_ReadDWORD(This,id,pValue) \ + ( (This)->lpVtbl -> ReadDWORD(This,id,pValue) ) + +#define IDiaPropertyStorage_ReadLONG(This,id,pValue) \ + ( (This)->lpVtbl -> ReadLONG(This,id,pValue) ) + +#define IDiaPropertyStorage_ReadBOOL(This,id,pValue) \ + ( (This)->lpVtbl -> ReadBOOL(This,id,pValue) ) + +#define IDiaPropertyStorage_ReadULONGLONG(This,id,pValue) \ + ( (This)->lpVtbl -> ReadULONGLONG(This,id,pValue) ) + +#define IDiaPropertyStorage_ReadBSTR(This,id,pValue) \ + ( (This)->lpVtbl -> ReadBSTR(This,id,pValue) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaPropertyStorage_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaStackFrame_INTERFACE_DEFINED__ +#define __IDiaStackFrame_INTERFACE_DEFINED__ + +/* interface IDiaStackFrame */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaStackFrame; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5edbc96d-cdd6-4792-afbe-cc89007d9610") + IDiaStackFrame : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_type( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_base( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_size( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_returnAddress( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_localsBase( + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lengthLocals( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lengthParams( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lengthProlog( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_lengthSavedRegisters( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_systemExceptionHandling( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_cplusplusExceptionHandling( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_functionStart( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_allocatesBasePointer( + /* [retval][out] */ BOOL *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_maxStack( + /* [retval][out] */ DWORD *pRetVal) = 0; + + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_registerValue( + /* [in] */ DWORD index, + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaStackFrameVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaStackFrame * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaStackFrame * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaStackFrame * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_type )( + IDiaStackFrame * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_base )( + IDiaStackFrame * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_size )( + IDiaStackFrame * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_returnAddress )( + IDiaStackFrame * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_localsBase )( + IDiaStackFrame * This, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lengthLocals )( + IDiaStackFrame * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lengthParams )( + IDiaStackFrame * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lengthProlog )( + IDiaStackFrame * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_lengthSavedRegisters )( + IDiaStackFrame * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_systemExceptionHandling )( + IDiaStackFrame * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_cplusplusExceptionHandling )( + IDiaStackFrame * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_functionStart )( + IDiaStackFrame * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_allocatesBasePointer )( + IDiaStackFrame * This, + /* [retval][out] */ BOOL *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_maxStack )( + IDiaStackFrame * This, + /* [retval][out] */ DWORD *pRetVal); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_registerValue )( + IDiaStackFrame * This, + /* [in] */ DWORD index, + /* [retval][out] */ ULONGLONG *pRetVal); + + END_INTERFACE + } IDiaStackFrameVtbl; + + interface IDiaStackFrame + { + CONST_VTBL struct IDiaStackFrameVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaStackFrame_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaStackFrame_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaStackFrame_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaStackFrame_get_type(This,pRetVal) \ + ( (This)->lpVtbl -> get_type(This,pRetVal) ) + +#define IDiaStackFrame_get_base(This,pRetVal) \ + ( (This)->lpVtbl -> get_base(This,pRetVal) ) + +#define IDiaStackFrame_get_size(This,pRetVal) \ + ( (This)->lpVtbl -> get_size(This,pRetVal) ) + +#define IDiaStackFrame_get_returnAddress(This,pRetVal) \ + ( (This)->lpVtbl -> get_returnAddress(This,pRetVal) ) + +#define IDiaStackFrame_get_localsBase(This,pRetVal) \ + ( (This)->lpVtbl -> get_localsBase(This,pRetVal) ) + +#define IDiaStackFrame_get_lengthLocals(This,pRetVal) \ + ( (This)->lpVtbl -> get_lengthLocals(This,pRetVal) ) + +#define IDiaStackFrame_get_lengthParams(This,pRetVal) \ + ( (This)->lpVtbl -> get_lengthParams(This,pRetVal) ) + +#define IDiaStackFrame_get_lengthProlog(This,pRetVal) \ + ( (This)->lpVtbl -> get_lengthProlog(This,pRetVal) ) + +#define IDiaStackFrame_get_lengthSavedRegisters(This,pRetVal) \ + ( (This)->lpVtbl -> get_lengthSavedRegisters(This,pRetVal) ) + +#define IDiaStackFrame_get_systemExceptionHandling(This,pRetVal) \ + ( (This)->lpVtbl -> get_systemExceptionHandling(This,pRetVal) ) + +#define IDiaStackFrame_get_cplusplusExceptionHandling(This,pRetVal) \ + ( (This)->lpVtbl -> get_cplusplusExceptionHandling(This,pRetVal) ) + +#define IDiaStackFrame_get_functionStart(This,pRetVal) \ + ( (This)->lpVtbl -> get_functionStart(This,pRetVal) ) + +#define IDiaStackFrame_get_allocatesBasePointer(This,pRetVal) \ + ( (This)->lpVtbl -> get_allocatesBasePointer(This,pRetVal) ) + +#define IDiaStackFrame_get_maxStack(This,pRetVal) \ + ( (This)->lpVtbl -> get_maxStack(This,pRetVal) ) + +#define IDiaStackFrame_get_registerValue(This,index,pRetVal) \ + ( (This)->lpVtbl -> get_registerValue(This,index,pRetVal) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaStackFrame_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaEnumStackFrames_INTERFACE_DEFINED__ +#define __IDiaEnumStackFrames_INTERFACE_DEFINED__ + +/* interface IDiaEnumStackFrames */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaEnumStackFrames; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("ec9d461d-ce74-4711-a020-7d8f9a1dd255") + IDiaEnumStackFrames : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [out] */ IDiaStackFrame **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaEnumStackFramesVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaEnumStackFrames * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaEnumStackFrames * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaEnumStackFrames * This); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IDiaEnumStackFrames * This, + /* [in] */ ULONG celt, + /* [out] */ IDiaStackFrame **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IDiaEnumStackFrames * This); + + END_INTERFACE + } IDiaEnumStackFramesVtbl; + + interface IDiaEnumStackFrames + { + CONST_VTBL struct IDiaEnumStackFramesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaEnumStackFrames_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaEnumStackFrames_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaEnumStackFrames_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaEnumStackFrames_Next(This,celt,rgelt,pceltFetched) \ + ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) + +#define IDiaEnumStackFrames_Reset(This) \ + ( (This)->lpVtbl -> Reset(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaEnumStackFrames_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dia2_0000_0034 */ +/* [local] */ + +typedef /* [public] */ struct __MIDL___MIDL_itf_dia2_0000_0034_0001 + { + DWORD ulOffStart; + DWORD cbProcSize; + DWORD cdwLocals; + WORD cdwParams; + WORD cdwFlags; + } FPODATA; + + + +extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0034_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dia2_0000_0034_v0_0_s_ifspec; + +#ifndef __IDiaStackWalkHelper_INTERFACE_DEFINED__ +#define __IDiaStackWalkHelper_INTERFACE_DEFINED__ + +/* interface IDiaStackWalkHelper */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaStackWalkHelper; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("21F81B1B-C5BB-42A3-BC4F-CCBAA75B9F19") + IDiaStackWalkHelper : public IUnknown + { + public: + virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_registerValue( + /* [in] */ DWORD index, + /* [retval][out] */ ULONGLONG *pRetVal) = 0; + + virtual /* [id][helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_registerValue( + /* [in] */ DWORD index, + /* [in] */ ULONGLONG NewVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE readMemory( + /* [in] */ enum MemoryTypeEnum type, + /* [in] */ ULONGLONG va, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData) = 0; + + virtual HRESULT STDMETHODCALLTYPE searchForReturnAddress( + /* [in] */ IDiaFrameData *frame, + /* [out] */ ULONGLONG *returnAddress) = 0; + + virtual HRESULT STDMETHODCALLTYPE searchForReturnAddressStart( + /* [in] */ IDiaFrameData *frame, + /* [in] */ ULONGLONG startAddress, + /* [out] */ ULONGLONG *returnAddress) = 0; + + virtual HRESULT STDMETHODCALLTYPE frameForVA( + /* [in] */ ULONGLONG va, + /* [out] */ IDiaFrameData **ppFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE symbolForVA( + /* [in] */ ULONGLONG va, + /* [out] */ IDiaSymbol **ppSymbol) = 0; + + virtual HRESULT STDMETHODCALLTYPE pdataForVA( + /* [in] */ ULONGLONG va, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData) = 0; + + virtual HRESULT STDMETHODCALLTYPE imageForVA( + /* [in] */ ULONGLONG vaContext, + /* [out] */ ULONGLONG *pvaImageStart) = 0; + + virtual HRESULT STDMETHODCALLTYPE addressForVA( + /* [in] */ ULONGLONG va, + /* [out] */ DWORD *pISect, + /* [out] */ DWORD *pOffset) = 0; + + virtual HRESULT STDMETHODCALLTYPE numberOfFunctionFragmentsForVA( + /* [in] */ ULONGLONG vaFunc, + /* [in] */ DWORD cbFunc, + /* [out] */ DWORD *pNumFragments) = 0; + + virtual HRESULT STDMETHODCALLTYPE functionFragmentsForVA( + /* [in] */ ULONGLONG vaFunc, + /* [in] */ DWORD cbFunc, + /* [in] */ DWORD cFragments, + /* [out] */ ULONGLONG *pVaFragment, + /* [out] */ DWORD *pLenFragment) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaStackWalkHelperVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaStackWalkHelper * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaStackWalkHelper * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaStackWalkHelper * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_registerValue )( + IDiaStackWalkHelper * This, + /* [in] */ DWORD index, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_registerValue )( + IDiaStackWalkHelper * This, + /* [in] */ DWORD index, + /* [in] */ ULONGLONG NewVal); + + HRESULT ( STDMETHODCALLTYPE *readMemory )( + IDiaStackWalkHelper * This, + /* [in] */ enum MemoryTypeEnum type, + /* [in] */ ULONGLONG va, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData); + + HRESULT ( STDMETHODCALLTYPE *searchForReturnAddress )( + IDiaStackWalkHelper * This, + /* [in] */ IDiaFrameData *frame, + /* [out] */ ULONGLONG *returnAddress); + + HRESULT ( STDMETHODCALLTYPE *searchForReturnAddressStart )( + IDiaStackWalkHelper * This, + /* [in] */ IDiaFrameData *frame, + /* [in] */ ULONGLONG startAddress, + /* [out] */ ULONGLONG *returnAddress); + + HRESULT ( STDMETHODCALLTYPE *frameForVA )( + IDiaStackWalkHelper * This, + /* [in] */ ULONGLONG va, + /* [out] */ IDiaFrameData **ppFrame); + + HRESULT ( STDMETHODCALLTYPE *symbolForVA )( + IDiaStackWalkHelper * This, + /* [in] */ ULONGLONG va, + /* [out] */ IDiaSymbol **ppSymbol); + + HRESULT ( STDMETHODCALLTYPE *pdataForVA )( + IDiaStackWalkHelper * This, + /* [in] */ ULONGLONG va, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData); + + HRESULT ( STDMETHODCALLTYPE *imageForVA )( + IDiaStackWalkHelper * This, + /* [in] */ ULONGLONG vaContext, + /* [out] */ ULONGLONG *pvaImageStart); + + HRESULT ( STDMETHODCALLTYPE *addressForVA )( + IDiaStackWalkHelper * This, + /* [in] */ ULONGLONG va, + /* [out] */ DWORD *pISect, + /* [out] */ DWORD *pOffset); + + HRESULT ( STDMETHODCALLTYPE *numberOfFunctionFragmentsForVA )( + IDiaStackWalkHelper * This, + /* [in] */ ULONGLONG vaFunc, + /* [in] */ DWORD cbFunc, + /* [out] */ DWORD *pNumFragments); + + HRESULT ( STDMETHODCALLTYPE *functionFragmentsForVA )( + IDiaStackWalkHelper * This, + /* [in] */ ULONGLONG vaFunc, + /* [in] */ DWORD cbFunc, + /* [in] */ DWORD cFragments, + /* [out] */ ULONGLONG *pVaFragment, + /* [out] */ DWORD *pLenFragment); + + END_INTERFACE + } IDiaStackWalkHelperVtbl; + + interface IDiaStackWalkHelper + { + CONST_VTBL struct IDiaStackWalkHelperVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaStackWalkHelper_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaStackWalkHelper_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaStackWalkHelper_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaStackWalkHelper_get_registerValue(This,index,pRetVal) \ + ( (This)->lpVtbl -> get_registerValue(This,index,pRetVal) ) + +#define IDiaStackWalkHelper_put_registerValue(This,index,NewVal) \ + ( (This)->lpVtbl -> put_registerValue(This,index,NewVal) ) + +#define IDiaStackWalkHelper_readMemory(This,type,va,cbData,pcbData,pbData) \ + ( (This)->lpVtbl -> readMemory(This,type,va,cbData,pcbData,pbData) ) + +#define IDiaStackWalkHelper_searchForReturnAddress(This,frame,returnAddress) \ + ( (This)->lpVtbl -> searchForReturnAddress(This,frame,returnAddress) ) + +#define IDiaStackWalkHelper_searchForReturnAddressStart(This,frame,startAddress,returnAddress) \ + ( (This)->lpVtbl -> searchForReturnAddressStart(This,frame,startAddress,returnAddress) ) + +#define IDiaStackWalkHelper_frameForVA(This,va,ppFrame) \ + ( (This)->lpVtbl -> frameForVA(This,va,ppFrame) ) + +#define IDiaStackWalkHelper_symbolForVA(This,va,ppSymbol) \ + ( (This)->lpVtbl -> symbolForVA(This,va,ppSymbol) ) + +#define IDiaStackWalkHelper_pdataForVA(This,va,cbData,pcbData,pbData) \ + ( (This)->lpVtbl -> pdataForVA(This,va,cbData,pcbData,pbData) ) + +#define IDiaStackWalkHelper_imageForVA(This,vaContext,pvaImageStart) \ + ( (This)->lpVtbl -> imageForVA(This,vaContext,pvaImageStart) ) + +#define IDiaStackWalkHelper_addressForVA(This,va,pISect,pOffset) \ + ( (This)->lpVtbl -> addressForVA(This,va,pISect,pOffset) ) + +#define IDiaStackWalkHelper_numberOfFunctionFragmentsForVA(This,vaFunc,cbFunc,pNumFragments) \ + ( (This)->lpVtbl -> numberOfFunctionFragmentsForVA(This,vaFunc,cbFunc,pNumFragments) ) + +#define IDiaStackWalkHelper_functionFragmentsForVA(This,vaFunc,cbFunc,cFragments,pVaFragment,pLenFragment) \ + ( (This)->lpVtbl -> functionFragmentsForVA(This,vaFunc,cbFunc,cFragments,pVaFragment,pLenFragment) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaStackWalkHelper_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaStackWalker_INTERFACE_DEFINED__ +#define __IDiaStackWalker_INTERFACE_DEFINED__ + +/* interface IDiaStackWalker */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaStackWalker; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5485216b-a54c-469f-9670-52b24d5229bb") + IDiaStackWalker : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE getEnumFrames( + /* [in] */ IDiaStackWalkHelper *pHelper, + /* [out] */ IDiaEnumStackFrames **ppEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE getEnumFrames2( + /* [in] */ enum CV_CPU_TYPE_e cpuid, + /* [in] */ IDiaStackWalkHelper *pHelper, + /* [out] */ IDiaEnumStackFrames **ppEnum) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDiaStackWalkerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaStackWalker * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaStackWalker * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaStackWalker * This); + + HRESULT ( STDMETHODCALLTYPE *getEnumFrames )( + IDiaStackWalker * This, + /* [in] */ IDiaStackWalkHelper *pHelper, + /* [out] */ IDiaEnumStackFrames **ppEnum); + + HRESULT ( STDMETHODCALLTYPE *getEnumFrames2 )( + IDiaStackWalker * This, + /* [in] */ enum CV_CPU_TYPE_e cpuid, + /* [in] */ IDiaStackWalkHelper *pHelper, + /* [out] */ IDiaEnumStackFrames **ppEnum); + + END_INTERFACE + } IDiaStackWalkerVtbl; + + interface IDiaStackWalker + { + CONST_VTBL struct IDiaStackWalkerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaStackWalker_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaStackWalker_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaStackWalker_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaStackWalker_getEnumFrames(This,pHelper,ppEnum) \ + ( (This)->lpVtbl -> getEnumFrames(This,pHelper,ppEnum) ) + +#define IDiaStackWalker_getEnumFrames2(This,cpuid,pHelper,ppEnum) \ + ( (This)->lpVtbl -> getEnumFrames2(This,cpuid,pHelper,ppEnum) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaStackWalker_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaStackWalkHelper2_INTERFACE_DEFINED__ +#define __IDiaStackWalkHelper2_INTERFACE_DEFINED__ + +/* interface IDiaStackWalkHelper2 */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaStackWalkHelper2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8222c490-507b-4bef-b3bd-41dca7b5934c") + IDiaStackWalkHelper2 : public IDiaStackWalkHelper + { + public: + }; + + +#else /* C style interface */ + + typedef struct IDiaStackWalkHelper2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaStackWalkHelper2 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaStackWalkHelper2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaStackWalkHelper2 * This); + + /* [id][helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_registerValue )( + IDiaStackWalkHelper2 * This, + /* [in] */ DWORD index, + /* [retval][out] */ ULONGLONG *pRetVal); + + /* [id][helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_registerValue )( + IDiaStackWalkHelper2 * This, + /* [in] */ DWORD index, + /* [in] */ ULONGLONG NewVal); + + HRESULT ( STDMETHODCALLTYPE *readMemory )( + IDiaStackWalkHelper2 * This, + /* [in] */ enum MemoryTypeEnum type, + /* [in] */ ULONGLONG va, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData); + + HRESULT ( STDMETHODCALLTYPE *searchForReturnAddress )( + IDiaStackWalkHelper2 * This, + /* [in] */ IDiaFrameData *frame, + /* [out] */ ULONGLONG *returnAddress); + + HRESULT ( STDMETHODCALLTYPE *searchForReturnAddressStart )( + IDiaStackWalkHelper2 * This, + /* [in] */ IDiaFrameData *frame, + /* [in] */ ULONGLONG startAddress, + /* [out] */ ULONGLONG *returnAddress); + + HRESULT ( STDMETHODCALLTYPE *frameForVA )( + IDiaStackWalkHelper2 * This, + /* [in] */ ULONGLONG va, + /* [out] */ IDiaFrameData **ppFrame); + + HRESULT ( STDMETHODCALLTYPE *symbolForVA )( + IDiaStackWalkHelper2 * This, + /* [in] */ ULONGLONG va, + /* [out] */ IDiaSymbol **ppSymbol); + + HRESULT ( STDMETHODCALLTYPE *pdataForVA )( + IDiaStackWalkHelper2 * This, + /* [in] */ ULONGLONG va, + /* [in] */ DWORD cbData, + /* [out] */ DWORD *pcbData, + /* [size_is][out] */ BYTE *pbData); + + HRESULT ( STDMETHODCALLTYPE *imageForVA )( + IDiaStackWalkHelper2 * This, + /* [in] */ ULONGLONG vaContext, + /* [out] */ ULONGLONG *pvaImageStart); + + HRESULT ( STDMETHODCALLTYPE *addressForVA )( + IDiaStackWalkHelper2 * This, + /* [in] */ ULONGLONG va, + /* [out] */ DWORD *pISect, + /* [out] */ DWORD *pOffset); + + HRESULT ( STDMETHODCALLTYPE *numberOfFunctionFragmentsForVA )( + IDiaStackWalkHelper2 * This, + /* [in] */ ULONGLONG vaFunc, + /* [in] */ DWORD cbFunc, + /* [out] */ DWORD *pNumFragments); + + HRESULT ( STDMETHODCALLTYPE *functionFragmentsForVA )( + IDiaStackWalkHelper2 * This, + /* [in] */ ULONGLONG vaFunc, + /* [in] */ DWORD cbFunc, + /* [in] */ DWORD cFragments, + /* [out] */ ULONGLONG *pVaFragment, + /* [out] */ DWORD *pLenFragment); + + END_INTERFACE + } IDiaStackWalkHelper2Vtbl; + + interface IDiaStackWalkHelper2 + { + CONST_VTBL struct IDiaStackWalkHelper2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaStackWalkHelper2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaStackWalkHelper2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaStackWalkHelper2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaStackWalkHelper2_get_registerValue(This,index,pRetVal) \ + ( (This)->lpVtbl -> get_registerValue(This,index,pRetVal) ) + +#define IDiaStackWalkHelper2_put_registerValue(This,index,NewVal) \ + ( (This)->lpVtbl -> put_registerValue(This,index,NewVal) ) + +#define IDiaStackWalkHelper2_readMemory(This,type,va,cbData,pcbData,pbData) \ + ( (This)->lpVtbl -> readMemory(This,type,va,cbData,pcbData,pbData) ) + +#define IDiaStackWalkHelper2_searchForReturnAddress(This,frame,returnAddress) \ + ( (This)->lpVtbl -> searchForReturnAddress(This,frame,returnAddress) ) + +#define IDiaStackWalkHelper2_searchForReturnAddressStart(This,frame,startAddress,returnAddress) \ + ( (This)->lpVtbl -> searchForReturnAddressStart(This,frame,startAddress,returnAddress) ) + +#define IDiaStackWalkHelper2_frameForVA(This,va,ppFrame) \ + ( (This)->lpVtbl -> frameForVA(This,va,ppFrame) ) + +#define IDiaStackWalkHelper2_symbolForVA(This,va,ppSymbol) \ + ( (This)->lpVtbl -> symbolForVA(This,va,ppSymbol) ) + +#define IDiaStackWalkHelper2_pdataForVA(This,va,cbData,pcbData,pbData) \ + ( (This)->lpVtbl -> pdataForVA(This,va,cbData,pcbData,pbData) ) + +#define IDiaStackWalkHelper2_imageForVA(This,vaContext,pvaImageStart) \ + ( (This)->lpVtbl -> imageForVA(This,vaContext,pvaImageStart) ) + +#define IDiaStackWalkHelper2_addressForVA(This,va,pISect,pOffset) \ + ( (This)->lpVtbl -> addressForVA(This,va,pISect,pOffset) ) + +#define IDiaStackWalkHelper2_numberOfFunctionFragmentsForVA(This,vaFunc,cbFunc,pNumFragments) \ + ( (This)->lpVtbl -> numberOfFunctionFragmentsForVA(This,vaFunc,cbFunc,pNumFragments) ) + +#define IDiaStackWalkHelper2_functionFragmentsForVA(This,vaFunc,cbFunc,cFragments,pVaFragment,pLenFragment) \ + ( (This)->lpVtbl -> functionFragmentsForVA(This,vaFunc,cbFunc,cFragments,pVaFragment,pLenFragment) ) + + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaStackWalkHelper2_INTERFACE_DEFINED__ */ + + +#ifndef __IDiaStackWalker2_INTERFACE_DEFINED__ +#define __IDiaStackWalker2_INTERFACE_DEFINED__ + +/* interface IDiaStackWalker2 */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDiaStackWalker2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7c185885-a015-4cac-9411-0f4fb39b1f3a") + IDiaStackWalker2 : public IDiaStackWalker + { + public: + }; + + +#else /* C style interface */ + + typedef struct IDiaStackWalker2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDiaStackWalker2 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDiaStackWalker2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDiaStackWalker2 * This); + + HRESULT ( STDMETHODCALLTYPE *getEnumFrames )( + IDiaStackWalker2 * This, + /* [in] */ IDiaStackWalkHelper *pHelper, + /* [out] */ IDiaEnumStackFrames **ppEnum); + + HRESULT ( STDMETHODCALLTYPE *getEnumFrames2 )( + IDiaStackWalker2 * This, + /* [in] */ enum CV_CPU_TYPE_e cpuid, + /* [in] */ IDiaStackWalkHelper *pHelper, + /* [out] */ IDiaEnumStackFrames **ppEnum); + + END_INTERFACE + } IDiaStackWalker2Vtbl; + + interface IDiaStackWalker2 + { + CONST_VTBL struct IDiaStackWalker2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDiaStackWalker2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDiaStackWalker2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDiaStackWalker2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDiaStackWalker2_getEnumFrames(This,pHelper,ppEnum) \ + ( (This)->lpVtbl -> getEnumFrames(This,pHelper,ppEnum) ) + +#define IDiaStackWalker2_getEnumFrames2(This,cpuid,pHelper,ppEnum) \ + ( (This)->lpVtbl -> getEnumFrames2(This,cpuid,pHelper,ppEnum) ) + + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDiaStackWalker2_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/diacreate.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/diacreate.h new file mode 100644 index 0000000..fac6668 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/diacreate.h @@ -0,0 +1,42 @@ +// diacreate.h - creation helper functions for DIA initialization +//----------------------------------------------------------------- +// +// Copyright Microsoft Corporation. All Rights Reserved. +// +//--------------------------------------------------------------- +#ifndef _DIACREATE_H_ +#define _DIACREATE_H_ + +// +// Create a dia data source object from the dia dll (by dll name - does not access the registry). +// + +HRESULT STDMETHODCALLTYPE NoRegCoCreate( const __wchar_t *dllName, + REFCLSID rclsid, + REFIID riid, + void **ppv); + +#ifndef _NATIVE_WCHAR_T_DEFINED +#ifdef __cplusplus + +HRESULT STDMETHODCALLTYPE NoRegCoCreate( const wchar_t *dllName, + REFCLSID rclsid, + REFIID riid, + void **ppv) +{ + return NoRegCoCreate( (const __wchar_t *)dllName, rclsid, riid, ppv ); +} + +#endif +#endif + + + +// +// Create a dia data source object from the dia dll (looks up the class id in the registry). +// +HRESULT STDMETHODCALLTYPE NoOleCoCreate( REFCLSID rclsid, + REFIID riid, + void **ppv); + +#endif diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/lib/amd64/diaguids.lib b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/lib/amd64/diaguids.lib new file mode 100644 index 0000000..1523422 Binary files /dev/null and b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/lib/amd64/diaguids.lib differ diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/lib/diaguids.lib b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/lib/diaguids.lib new file mode 100644 index 0000000..d9b68b5 Binary files /dev/null and b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/DIA/lib/diaguids.lib differ diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/VersionApi.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/VersionApi.h new file mode 100644 index 0000000..50bdbf5 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/VersionApi.h @@ -0,0 +1,334 @@ +#pragma once +#include + +#define VERSIONHELPERAPI inline bool + +#define _WIN32_WINNT_NT4 0x0400 +#define _WIN32_WINNT_WIN2K 0x0500 +#define _WIN32_WINNT_WINXP 0x0501 +#define _WIN32_WINNT_WS03 0x0502 +#define _WIN32_WINNT_WIN6 0x0600 +#define _WIN32_WINNT_VISTA 0x0600 +#define _WIN32_WINNT_WS08 0x0600 +#define _WIN32_WINNT_LONGHORN 0x0600 +#define _WIN32_WINNT_WIN7 0x0601 +#define _WIN32_WINNT_WIN8 0x0602 +#define _WIN32_WINNT_WINBLUE 0x0603 +#define _WIN32_WINNT_WIN10 0x0A00 + +using fnRtlGetVersion = NTSTATUS( NTAPI* )(PRTL_OSVERSIONINFOEXW lpVersionInformation); + +enum eBuildThreshold +{ + Build_RS0 = 10586, + Build_RS1 = 14393, + Build_RS2 = 15063, + Build_RS3 = 16299, + Build_RS4 = 17134, + Build_RS5 = 17763, + Build_19H1 = 18362, + Build_19H2 = 18363, + Build_20H1 = 19041, + Build_21H2 = 22000, + Build_22H2 = 22621, + Build_RS_MAX = 99999, +}; + +enum eVerShort +{ + WinUnsupported, // Unsupported OS + WinXP, // Windows XP + Win7, // Windows 7 + Win8, // Windows 8 + Win8Point1, // Windows 8.1 + Win10, // Windows 10 + Win10_RS1, // Windows 10 Anniversary update + Win10_RS2, // Windows 10 Creators update + Win10_RS3, // Windows 10 Fall Creators update + Win10_RS4, // Windows 10 Spring Creators update + Win10_RS5, // Windows 10 October 2018 update + Win10_19H1, // Windows 10 May 2019 update + Win10_19H2, // Windows 10 November 2019 update + Win10_20H1, // Windows 10 April 2020 update + Win11_21H2, // Windows 11 + Win11_22H2 // Windows 11 September 2022 update +}; + +struct WinVersion +{ + eVerShort ver = WinUnsupported; + uint32_t revision = 0; + RTL_OSVERSIONINFOEXW native = { }; +}; + +BLACKBONE_API inline WinVersion& WinVer() +{ + static WinVersion g_WinVer; + return g_WinVer; +} + +BLACKBONE_API inline uint32_t GetRevision() +{ + HKEY hKey = NULL; + + if (RegOpenKeyExW( HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_QUERY_VALUE, &hKey ) == 0) + { + wchar_t data[MAX_PATH] = {}; + DWORD dataSize = sizeof( data ); + DWORD type = REG_SZ; + + if (RegQueryValueExW( hKey, L"BuildLabEx", nullptr, &type, reinterpret_cast(data), &dataSize ) == 0) + { + std::wstring buildStr = data; + size_t first = buildStr.find( L'.' ); + size_t second = buildStr.find( L'.', first + 1 ); + + if (second > first && first != buildStr.npos) + { + RegCloseKey( hKey ); + return std::wcstol( buildStr.substr( first + 1, second - first - 1 ).c_str(), nullptr, 10 ); + } + } + + RegCloseKey( hKey ); + } + + return 0; +} + +BLACKBONE_API inline void InitVersion() +{ + auto& g_WinVer = WinVer(); + g_WinVer.native.dwOSVersionInfoSize = sizeof( g_WinVer.native ); + + auto RtlGetVersion = (fnRtlGetVersion)GetProcAddress( GetModuleHandleW( L"ntdll.dll" ), "RtlGetVersion" ); + if (RtlGetVersion) + { + RtlGetVersion( &g_WinVer.native ); + } + + if (g_WinVer.native.dwMajorVersion != 0) + { + auto fullver = (g_WinVer.native.dwMajorVersion << 8) | g_WinVer.native.dwMinorVersion; + switch (fullver) + { + case _WIN32_WINNT_WIN10: + if (g_WinVer.native.dwBuildNumber >= Build_22H2) + g_WinVer.ver = Win11_22H2; + else if (g_WinVer.native.dwBuildNumber >= Build_21H2) + g_WinVer.ver = Win11_21H2; + else if (g_WinVer.native.dwBuildNumber >= Build_20H1) + g_WinVer.ver = Win10_20H1; + else if (g_WinVer.native.dwBuildNumber >= Build_19H2) + g_WinVer.ver = Win10_19H2; + else if (g_WinVer.native.dwBuildNumber >= Build_19H1) + g_WinVer.ver = Win10_19H1; + else if (g_WinVer.native.dwBuildNumber >= Build_RS5) + g_WinVer.ver = Win10_RS5; + else if (g_WinVer.native.dwBuildNumber >= Build_RS4) + g_WinVer.ver = Win10_RS4; + else if (g_WinVer.native.dwBuildNumber >= Build_RS3) + g_WinVer.ver = Win10_RS3; + else if (g_WinVer.native.dwBuildNumber >= Build_RS2) + g_WinVer.ver = Win10_RS2; + else if (g_WinVer.native.dwBuildNumber >= Build_RS1) + g_WinVer.ver = Win10_RS1; + else if (g_WinVer.native.dwBuildNumber >= Build_RS0) + g_WinVer.ver = Win10; + break; + + case _WIN32_WINNT_WINBLUE: + g_WinVer.ver = Win8Point1; + break; + + case _WIN32_WINNT_WIN8: + g_WinVer.ver = Win8; + break; + + case _WIN32_WINNT_WIN7: + g_WinVer.ver = Win7; + break; + + case _WIN32_WINNT_WINXP: + g_WinVer.ver = WinXP; + break; + + default: + g_WinVer.ver = WinUnsupported; + } + } + + g_WinVer.revision = GetRevision(); +} + +VERSIONHELPERAPI +IsWindowsVersionOrGreater( WORD wMajorVersion, WORD wMinorVersion, WORD wServicePackMajor, DWORD dwBuild ) +{ + auto& g_WinVer = WinVer(); + if (g_WinVer.native.dwMajorVersion != 0) + { + if (g_WinVer.native.dwMajorVersion > wMajorVersion) + return true; + else if (g_WinVer.native.dwMajorVersion < wMajorVersion) + return false; + + if (g_WinVer.native.dwMinorVersion > wMinorVersion) + return true; + else if (g_WinVer.native.dwMinorVersion < wMinorVersion) + return false; + + if (g_WinVer.native.wServicePackMajor > wServicePackMajor) + return true; + else if (g_WinVer.native.wServicePackMajor < wServicePackMajor) + return false; + + if (g_WinVer.native.dwBuildNumber >= dwBuild) + return true; + } + + return false; +} + +BLACKBONE_API +VERSIONHELPERAPI +IsWindowsXPOrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WINXP ), LOBYTE( _WIN32_WINNT_WINXP ), 0, 0 ); +} + + +VERSIONHELPERAPI +IsWindowsXPSP1OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WINXP ), LOBYTE( _WIN32_WINNT_WINXP ), 1, 0 ); +} + +VERSIONHELPERAPI +IsWindowsXPSP2OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WINXP ), LOBYTE( _WIN32_WINNT_WINXP ), 2, 0 ); +} + +VERSIONHELPERAPI +IsWindowsXPSP3OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WINXP ), LOBYTE( _WIN32_WINNT_WINXP ), 3, 0 ); +} + +VERSIONHELPERAPI +IsWindowsVistaOrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_VISTA ), LOBYTE( _WIN32_WINNT_VISTA ), 0, 0 ); +} + +VERSIONHELPERAPI +IsWindowsVistaSP1OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_VISTA ), LOBYTE( _WIN32_WINNT_VISTA ), 1, 0 ); +} + +VERSIONHELPERAPI +IsWindowsVistaSP2OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_VISTA ), LOBYTE( _WIN32_WINNT_VISTA ), 2, 0 ); +} + +VERSIONHELPERAPI +IsWindows7OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WIN7 ), LOBYTE( _WIN32_WINNT_WIN7 ), 0, 0 ); +} + +VERSIONHELPERAPI +IsWindows7SP1OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WIN7 ), LOBYTE( _WIN32_WINNT_WIN7 ), 1, 0 ); +} + +VERSIONHELPERAPI +IsWindows8OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WIN8 ), LOBYTE( _WIN32_WINNT_WIN8 ), 0, 0 ); +} + +VERSIONHELPERAPI +IsWindows8Point1OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WINBLUE ), LOBYTE( _WIN32_WINNT_WINBLUE ), 0, 0 ); +} + +VERSIONHELPERAPI +IsWindows10OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WIN10 ), LOBYTE( _WIN32_WINNT_WIN10 ), 0, 0 ); +} + +VERSIONHELPERAPI +IsWindows10RS1OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WIN10 ), LOBYTE( _WIN32_WINNT_WIN10 ), 0, Build_RS1 ); +} + +VERSIONHELPERAPI +IsWindows10RS2OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WIN10 ), LOBYTE( _WIN32_WINNT_WIN10 ), 0, Build_RS2 ); +} + +VERSIONHELPERAPI +IsWindows10RS3OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WIN10 ), LOBYTE( _WIN32_WINNT_WIN10 ), 0, Build_RS3 ); +} + +VERSIONHELPERAPI +IsWindows10RS4OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WIN10 ), LOBYTE( _WIN32_WINNT_WIN10 ), 0, Build_RS4 ); +} + +VERSIONHELPERAPI +IsWindows10RS5OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WIN10 ), LOBYTE( _WIN32_WINNT_WIN10 ), 0, Build_RS5 ); +} + +VERSIONHELPERAPI +IsWindows1019H1OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WIN10 ), LOBYTE( _WIN32_WINNT_WIN10 ), 0, Build_19H1 ); +} + +VERSIONHELPERAPI +IsWindows1019H2OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WIN10 ), LOBYTE( _WIN32_WINNT_WIN10 ), 0, Build_19H2 ); +} + +VERSIONHELPERAPI +IsWindows1020H1OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WIN10 ), LOBYTE( _WIN32_WINNT_WIN10 ), 0, Build_20H1 ); +} + +VERSIONHELPERAPI +IsWindows1121H2OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WIN10 ), LOBYTE( _WIN32_WINNT_WIN10 ), 0, Build_21H2); +} + +VERSIONHELPERAPI +IsWindows1122H2OrGreater() +{ + return IsWindowsVersionOrGreater( HIBYTE( _WIN32_WINNT_WIN10 ), LOBYTE( _WIN32_WINNT_WIN10 ), 0, Build_22H2 ); +} + +VERSIONHELPERAPI +IsWindowsServer() +{ + OSVERSIONINFOEXW osvi = { sizeof( osvi ), 0, 0, 0, 0, { 0 }, 0, 0, 0, VER_NT_WORKSTATION }; + DWORDLONG const dwlConditionMask = VerSetConditionMask( 0, VER_PRODUCT_TYPE, VER_EQUAL ); + + return !VerifyVersionInfoW( &osvi, VER_PRODUCT_TYPE, dwlConditionMask ); +} + diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/cor.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/cor.h new file mode 100644 index 0000000..a0590ac --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/cor.h @@ -0,0 +1,2628 @@ +// ==++== +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// ==--== +/***************************************************************************** + ** ** + ** Cor.h - general header for the Runtime. ** + ** ** + *****************************************************************************/ + + +#ifndef _COR_H_ +#define _COR_H_ + +//***************************************************************************** +// Required includes +#include // Definitions of OLE types. +#include +#include "corerror.h" + +//***************************************************************************** + +#ifdef __cplusplus +extern "C" { +#endif + +// {BED7F4EA-1A96-11d2-8F08-00A0C9A6186D} +EXTERN_GUID(LIBID_ComPlusRuntime, 0xbed7f4ea, 0x1a96, 0x11d2, 0x8f, 0x8, 0x0, 0xa0, 0xc9, 0xa6, 0x18, 0x6d); + +// {90883F05-3D28-11D2-8F17-00A0C9A6186D} +EXTERN_GUID(GUID_ExportedFromComPlus, 0x90883f05, 0x3d28, 0x11d2, 0x8f, 0x17, 0x0, 0xa0, 0xc9, 0xa6, 0x18, 0x6d); + +// {0F21F359-AB84-41e8-9A78-36D110E6D2F9} +EXTERN_GUID(GUID_ManagedName, 0xf21f359, 0xab84, 0x41e8, 0x9a, 0x78, 0x36, 0xd1, 0x10, 0xe6, 0xd2, 0xf9); + +// {54FC8F55-38DE-4703-9C4E-250351302B1C} +EXTERN_GUID(GUID_Function2Getter, 0x54fc8f55, 0x38de, 0x4703, 0x9c, 0x4e, 0x25, 0x3, 0x51, 0x30, 0x2b, 0x1c); + +// CLSID_CorMetaDataDispenserRuntime: {1EC2DE53-75CC-11d2-9775-00A0C9B4D50C} +// Dispenser coclass for version 1.5 and 2.0 meta data. To get the "latest" bind +// to CLSID_MetaDataDispenser. +EXTERN_GUID(CLSID_CorMetaDataDispenserRuntime, 0x1ec2de53, 0x75cc, 0x11d2, 0x97, 0x75, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc); + +// {CD2BC5C9-F452-4326-B714-F9C539D4DA58} +EXTERN_GUID(GUID_DispIdOverride, 0xcd2bc5c9, 0xf452, 0x4326, 0xb7, 0x14, 0xf9, 0xc5, 0x39, 0xd4, 0xda, 0x58); + +// {B64784EB-D8D4-4d9b-9ACD-0E30806426F7} +EXTERN_GUID(GUID_ForceIEnumerable, 0xb64784eb, 0xd8d4, 0x4d9b, 0x9a, 0xcd, 0x0e, 0x30, 0x80, 0x64, 0x26, 0xf7); + +// {2941FF83-88D8-4F73-B6A9-BDF8712D000D} +EXTERN_GUID(GUID_PropGetCA, 0x2941ff83, 0x88d8, 0x4f73, 0xb6, 0xa9, 0xbd, 0xf8, 0x71, 0x2d, 0x00, 0x0d); + +// {29533527-3683-4364-ABC0-DB1ADD822FA2} +EXTERN_GUID(GUID_PropPutCA, 0x29533527, 0x3683, 0x4364, 0xab, 0xc0, 0xdb, 0x1a, 0xdd, 0x82, 0x2f, 0xa2); + +// CLSID_CLR_v1_MetaData: {005023CA-72B1-11D3-9FC4-00C04F79A0A3} +// Used to generate v1 metadata (for v1.0 and v1.1 CLR compatibility). +EXTERN_GUID(CLSID_CLR_v1_MetaData, 0x005023ca, 0x72b1, 0x11d3, 0x9f, 0xc4, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3); + +// CLSID_CLR_v2_MetaData: {EFEA471A-44FD-4862-9292-0C58D46E1F3A} +// Used to generate v1 metadata (for v1.0 and v1.1 CLR compatibility). +EXTERN_GUID(CLSID_CLR_v2_MetaData, 0xefea471a, 0x44fd, 0x4862, 0x92, 0x92, 0xc, 0x58, 0xd4, 0x6e, 0x1f, 0x3a); + + +// CLSID_CorMetaDataRuntime: +// This will can always be used to generate the "latest" metadata available. +#define CLSID_CorMetaDataRuntime CLSID_CLR_v2_MetaData + + +// {30FE7BE8-D7D9-11D2-9F80-00C04F79A0A3} +EXTERN_GUID(MetaDataCheckDuplicatesFor, 0x30fe7be8, 0xd7d9, 0x11d2, 0x9f, 0x80, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3); + +// {DE3856F8-D7D9-11D2-9F80-00C04F79A0A3} +EXTERN_GUID(MetaDataRefToDefCheck, 0xde3856f8, 0xd7d9, 0x11d2, 0x9f, 0x80, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3); + +// {E5D71A4C-D7DA-11D2-9F80-00C04F79A0A3} +EXTERN_GUID(MetaDataNotificationForTokenMovement, 0xe5d71a4c, 0xd7da, 0x11d2, 0x9f, 0x80, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3); + +// {2eee315c-d7db-11d2-9f80-00c04f79a0a3} +EXTERN_GUID(MetaDataSetUpdate, 0x2eee315c, 0xd7db, 0x11d2, 0x9f, 0x80, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3); +#define MetaDataSetENC MetaDataSetUpdate + +// Use this guid in SetOption to indicate if the import enumerator should skip over +// delete items or not. The default is yes. +// +// {79700F36-4AAC-11d3-84C3-009027868CB1} +EXTERN_GUID(MetaDataImportOption, 0x79700f36, 0x4aac, 0x11d3, 0x84, 0xc3, 0x0, 0x90, 0x27, 0x86, 0x8c, 0xb1); + +// Use this guid in the SetOption if compiler wants to have MetaData API to take reader/writer lock +// +// {F7559806-F266-42ea-8C63-0ADB45E8B234} +EXTERN_GUID(MetaDataThreadSafetyOptions, 0xf7559806, 0xf266, 0x42ea, 0x8c, 0x63, 0xa, 0xdb, 0x45, 0xe8, 0xb2, 0x34); + +// Use this guid in the SetOption if compiler wants error when some tokens are emitted out of order +// {1547872D-DC03-11d2-9420-0000F8083460} +EXTERN_GUID(MetaDataErrorIfEmitOutOfOrder, 0x1547872d, 0xdc03, 0x11d2, 0x94, 0x20, 0x0, 0x0, 0xf8, 0x8, 0x34, 0x60); + +// Use this guid in the SetOption to indicate if the tlbimporter should generate the +// TCE adapters for COM connection point containers. +// {DCC9DE90-4151-11d3-88D6-00902754C43A} +EXTERN_GUID(MetaDataGenerateTCEAdapters, 0xdcc9de90, 0x4151, 0x11d3, 0x88, 0xd6, 0x0, 0x90, 0x27, 0x54, 0xc4, 0x3a); + +// Use this guid in the SetOption to specifiy a non-default namespace for typelib import. +// {F17FF889-5A63-11d3-9FF2-00C04FF7431A} +EXTERN_GUID(MetaDataTypeLibImportNamespace, 0xf17ff889, 0x5a63, 0x11d3, 0x9f, 0xf2, 0x0, 0xc0, 0x4f, 0xf7, 0x43, 0x1a); + +// Use this guid in the SetOption to specify the behavior of UnmarkAll. See CorLinkerOptions. +// {47E099B6-AE7C-4797-8317-B48AA645B8F9} +EXTERN_GUID(MetaDataLinkerOptions, 0x47e099b6, 0xae7c, 0x4797, 0x83, 0x17, 0xb4, 0x8a, 0xa6, 0x45, 0xb8, 0xf9); + +// Use this guid in the SetOption to specify the runtime version stored in the CLR metadata. +// {47E099B7-AE7C-4797-8317-B48AA645B8F9} +EXTERN_GUID(MetaDataRuntimeVersion, 0x47e099b7, 0xae7c, 0x4797, 0x83, 0x17, 0xb4, 0x8a, 0xa6, 0x45, 0xb8, 0xf9); + +// Use this guid in the SetOption to specify the behavior of the merger. +// {132D3A6E-B35D-464e-951A-42EFB9FB6601} +EXTERN_GUID(MetaDataMergerOptions, 0x132d3a6e, 0xb35d, 0x464e, 0x95, 0x1a, 0x42, 0xef, 0xb9, 0xfb, 0x66, 0x1); + + +interface IMetaDataImport; +interface IMetaDataAssemblyEmit; +interface IMetaDataAssemblyImport; +interface IMetaDataEmit; +interface ICeeGen; + + +typedef UNALIGNED void const *UVCP_CONSTANT; + + +// Constant for connection id and task id +#define INVALID_CONNECTION_ID 0x0 +#define INVALID_TASK_ID 0x0 +#define MAX_CONNECTION_NAME MAX_PATH + +//***************************************************************************** +//***************************************************************************** +// +// D L L P U B L I C E N T R Y P O I N T D E C L A R A T I O N S +// +//***************************************************************************** +//***************************************************************************** + +BOOL STDMETHODCALLTYPE _CorDllMain(HINSTANCE hInst, DWORD dwReason, LPVOID lpReserved); +__int32 STDMETHODCALLTYPE _CorExeMain(); +__int32 STDMETHODCALLTYPE _CorExeMain2( // Executable exit code. + PBYTE pUnmappedPE, // -> memory mapped code + DWORD cUnmappedPE, // Size of memory mapped code + _In_ LPWSTR pImageNameIn, // -> Executable Name + _In_ LPWSTR pLoadersFileName, // -> Loaders Name + _In_ LPWSTR pCmdLine); // -> Command Line + +STDAPI _CorValidateImage(PVOID *ImageBase, LPCWSTR FileName); +STDAPI_(VOID) _CorImageUnloading(PVOID ImageBase); + +STDAPI CoInitializeEE(DWORD fFlags); +STDAPI_(void) CoUninitializeEE(BOOL fFlags); +STDAPI_(void) CoEEShutDownCOM(void); + +#ifndef FEATURE_PAL + +#define MSCOREE_SHIM_W L"mscoree.dll" +#define MSCOREE_SHIM_A "mscoree.dll" + +#else // !FEATURE_PAL + +#define MSCOREE_SHIM_W MAKEDLLNAME_W(L"sscoree") +#define MSCOREE_SHIM_A MAKEDLLNAME_A("sscoree") + +#endif // !FEATURE_PAL + +#define SWITCHOUT_HANDLE_VALUE ((HANDLE)(LONG_PTR)-2) + + +// +// CoInitializeCor flags. +// +typedef enum tagCOINITCOR +{ + COINITCOR_DEFAULT = 0x0 // Default initialization mode. +} COINITICOR; + +// +// CoInitializeEE flags. +// +typedef enum tagCOINITEE +{ + COINITEE_DEFAULT = 0x0, // Default initialization mode. + COINITEE_DLL = 0x1, // Initialization mode for loading DLL. + COINITEE_MAIN = 0x2 // Initialize prior to entering the main routine +} COINITIEE; + +// +// CoInitializeEE flags. +// +typedef enum tagCOUNINITEE +{ + COUNINITEE_DEFAULT = 0x0, // Default uninitialization mode. + COUNINITEE_DLL = 0x1 // Uninitialization mode for unloading DLL. +} COUNINITIEE; + +//***************************************************************************** +//***************************************************************************** +// +// I L & F I L E F O R M A T D E C L A R A T I O N S +// +//***************************************************************************** +//***************************************************************************** + + +// The following definitions will get moved into by RTM but are +// kept here for the Alpha's and Beta's. +#ifndef _WINDOWS_UPDATES_ +#include +#endif // updates + +//***************************************************************************** +//***************************************************************************** +// +// D L L P U B L I C E N T R Y P O I N T D E C L A R A T I O N S +// +//***************************************************************************** +//***************************************************************************** + +STDAPI CoInitializeCor(DWORD fFlags); +STDAPI_(void) CoUninitializeCor(void); + +typedef void (* TDestructorCallback)(EXCEPTION_RECORD*); +STDAPI_(void) AddDestructorCallback(int code, TDestructorCallback callback); + +// +//***************************************************************************** +//***************************************************************************** + +// CLSID_Cor: {bee00000-ee77-11d0-a015-00c04fbbb884} +EXTERN_GUID(CLSID_Cor, 0xbee00010, 0xee77, 0x11d0, 0xa0, 0x15, 0x00, 0xc0, 0x4f, 0xbb, 0xb8, 0x84); + +// CLSID_CorMetaDataDispenser: {E5CB7A31-7512-11d2-89CE-0080C792E5D8} +// This is the "Master Dispenser", always guaranteed to be the most recent +// dispenser on the machine. +EXTERN_GUID(CLSID_CorMetaDataDispenser, 0xe5cb7a31, 0x7512, 0x11d2, 0x89, 0xce, 0x0, 0x80, 0xc7, 0x92, 0xe5, 0xd8); + + +// CLSID_CorMetaDataDispenserReg: {435755FF-7397-11d2-9771-00A0C9B4D50C} +// Dispenser coclass for version 1.0 meta data. To get the "latest" bind +// to CLSID_CorMetaDataDispenser. +EXTERN_GUID(CLSID_CorMetaDataDispenserReg, 0x435755ff, 0x7397, 0x11d2, 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc); + + +// CLSID_CorMetaDataReg: {87F3A1F5-7397-11d2-9771-00A0C9B4D50C} +// For COM+ Meta Data, Data Driven Registration +EXTERN_GUID(CLSID_CorMetaDataReg, 0x87f3a1f5, 0x7397, 0x11d2, 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc); + +// IID_IMetaDataInternal {39EE28B3-0181-4d48-B53C-2FFAFFD5FEC1} +EXTERN_GUID(IID_IMetaDataInternal, 0x39ee28b3, 0x181, 0x4d48, 0xb5, 0x3c, 0x2f, 0xfa, 0xff, 0xd5, 0xfe, 0xc1); + + +interface IMetaDataDispenser; + +//------------------------------------- +//--- IMetaDataError +//------------------------------------- +// {B81FF171-20F3-11d2-8DCC-00A0C9B09C19} +EXTERN_GUID(IID_IMetaDataError, 0xb81ff171, 0x20f3, 0x11d2, 0x8d, 0xcc, 0x0, 0xa0, 0xc9, 0xb0, 0x9c, 0x19); + +//--- +#undef INTERFACE +#define INTERFACE IMetaDataError +DECLARE_INTERFACE_(IMetaDataError, IUnknown) +{ + STDMETHOD(OnError)(HRESULT hrError, mdToken token) PURE; +}; + +//------------------------------------- +//--- IMapToken +//------------------------------------- +// IID_IMapToken: {06A3EA8B-0225-11d1-BF72-00C04FC31E12} +EXTERN_GUID(IID_IMapToken, 0x6a3ea8b, 0x225, 0x11d1, 0xbf, 0x72, 0x0, 0xc0, 0x4f, 0xc3, 0x1e, 0x12); + +//--- +#undef INTERFACE +#define INTERFACE IMapToken +DECLARE_INTERFACE_(IMapToken, IUnknown) +{ + STDMETHOD(Map)(mdToken tkImp, mdToken tkEmit) PURE; +}; + +//------------------------------------- +//--- IMetaDataDispenser +//------------------------------------- +// {B81FF171-20F3-11d2-8DCC-00A0C9B09C19} +EXTERN_GUID(IID_IMetaDataDispenser, 0x809c652e, 0x7396, 0x11d2, 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc); + +//--- +#undef INTERFACE +#define INTERFACE IMetaDataDispenser +DECLARE_INTERFACE_(IMetaDataDispenser, IUnknown) +{ + STDMETHOD(DefineScope)( // Return code. + REFCLSID rclsid, // [in] What version to create. + DWORD dwCreateFlags, // [in] Flags on the create. + REFIID riid, // [in] The interface desired. + IUnknown **ppIUnk) PURE; // [out] Return interface on success. + + STDMETHOD(OpenScope)( // Return code. + LPCWSTR szScope, // [in] The scope to open. + DWORD dwOpenFlags, // [in] Open mode flags. + REFIID riid, // [in] The interface desired. + IUnknown **ppIUnk) PURE; // [out] Return interface on success. + + STDMETHOD(OpenScopeOnMemory)( // Return code. + LPCVOID pData, // [in] Location of scope data. + ULONG cbData, // [in] Size of the data pointed to by pData. + DWORD dwOpenFlags, // [in] Open mode flags. + REFIID riid, // [in] The interface desired. + IUnknown **ppIUnk) PURE; // [out] Return interface on success. +}; + +//------------------------------------- +//--- IMetaDataEmit +//------------------------------------- +// {BA3FEE4C-ECB9-4e41-83B7-183FA41CD859} +EXTERN_GUID(IID_IMetaDataEmit, 0xba3fee4c, 0xecb9, 0x4e41, 0x83, 0xb7, 0x18, 0x3f, 0xa4, 0x1c, 0xd8, 0x59); + +//--- +#undef INTERFACE +#define INTERFACE IMetaDataEmit +DECLARE_INTERFACE_(IMetaDataEmit, IUnknown) +{ + STDMETHOD(SetModuleProps)( // S_OK or error. + LPCWSTR szName) PURE; // [IN] If not NULL, the name of the module to set. + + STDMETHOD(Save)( // S_OK or error. + LPCWSTR szFile, // [IN] The filename to save to. + DWORD dwSaveFlags) PURE; // [IN] Flags for the save. + + STDMETHOD(SaveToStream)( // S_OK or error. + IStream *pIStream, // [IN] A writable stream to save to. + DWORD dwSaveFlags) PURE; // [IN] Flags for the save. + + STDMETHOD(GetSaveSize)( // S_OK or error. + CorSaveSize fSave, // [IN] cssAccurate or cssQuick. + DWORD *pdwSaveSize) PURE; // [OUT] Put the size here. + + STDMETHOD(DefineTypeDef)( // S_OK or error. + LPCWSTR szTypeDef, // [IN] Name of TypeDef + DWORD dwTypeDefFlags, // [IN] CustomAttribute flags + mdToken tkExtends, // [IN] extends this TypeDef or typeref + mdToken rtkImplements[], // [IN] Implements interfaces + mdTypeDef *ptd) PURE; // [OUT] Put TypeDef token here + + STDMETHOD(DefineNestedType)( // S_OK or error. + LPCWSTR szTypeDef, // [IN] Name of TypeDef + DWORD dwTypeDefFlags, // [IN] CustomAttribute flags + mdToken tkExtends, // [IN] extends this TypeDef or typeref + mdToken rtkImplements[], // [IN] Implements interfaces + mdTypeDef tdEncloser, // [IN] TypeDef token of the enclosing type. + mdTypeDef *ptd) PURE; // [OUT] Put TypeDef token here + + STDMETHOD(SetHandler)( // S_OK. + IUnknown *pUnk) PURE; // [IN] The new error handler. + + STDMETHOD(DefineMethod)( // S_OK or error. + mdTypeDef td, // Parent TypeDef + LPCWSTR szName, // Name of member + DWORD dwMethodFlags, // Member attributes + PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature + ULONG cbSigBlob, // [IN] count of bytes in the signature blob + ULONG ulCodeRVA, + DWORD dwImplFlags, + mdMethodDef *pmd) PURE; // Put member token here + + STDMETHOD(DefineMethodImpl)( // S_OK or error. + mdTypeDef td, // [IN] The class implementing the method + mdToken tkBody, // [IN] Method body - MethodDef or MethodRef + mdToken tkDecl) PURE; // [IN] Method declaration - MethodDef or MethodRef + + STDMETHOD(DefineTypeRefByName)( // S_OK or error. + mdToken tkResolutionScope, // [IN] ModuleRef, AssemblyRef or TypeRef. + LPCWSTR szName, // [IN] Name of the TypeRef. + mdTypeRef *ptr) PURE; // [OUT] Put TypeRef token here. + + STDMETHOD(DefineImportType)( // S_OK or error. + IMetaDataAssemblyImport *pAssemImport, // [IN] Assembly containing the TypeDef. + const void *pbHashValue, // [IN] Hash Blob for Assembly. + ULONG cbHashValue, // [IN] Count of bytes. + IMetaDataImport *pImport, // [IN] Scope containing the TypeDef. + mdTypeDef tdImport, // [IN] The imported TypeDef. + IMetaDataAssemblyEmit *pAssemEmit, // [IN] Assembly into which the TypeDef is imported. + mdTypeRef *ptr) PURE; // [OUT] Put TypeRef token here. + + STDMETHOD(DefineMemberRef)( // S_OK or error + mdToken tkImport, // [IN] ClassRef or ClassDef importing a member. + LPCWSTR szName, // [IN] member's name + PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature + ULONG cbSigBlob, // [IN] count of bytes in the signature blob + mdMemberRef *pmr) PURE; // [OUT] memberref token + + STDMETHOD(DefineImportMember)( // S_OK or error. + IMetaDataAssemblyImport *pAssemImport, // [IN] Assembly containing the Member. + const void *pbHashValue, // [IN] Hash Blob for Assembly. + ULONG cbHashValue, // [IN] Count of bytes. + IMetaDataImport *pImport, // [IN] Import scope, with member. + mdToken mbMember, // [IN] Member in import scope. + IMetaDataAssemblyEmit *pAssemEmit, // [IN] Assembly into which the Member is imported. + mdToken tkParent, // [IN] Classref or classdef in emit scope. + mdMemberRef *pmr) PURE; // [OUT] Put member ref here. + + STDMETHOD(DefineEvent) ( + mdTypeDef td, // [IN] the class/interface on which the event is being defined + LPCWSTR szEvent, // [IN] Name of the event + DWORD dwEventFlags, // [IN] CorEventAttr + mdToken tkEventType, // [IN] a reference (mdTypeRef or mdTypeRef) to the Event class + mdMethodDef mdAddOn, // [IN] required add method + mdMethodDef mdRemoveOn, // [IN] required remove method + mdMethodDef mdFire, // [IN] optional fire method + mdMethodDef rmdOtherMethods[], // [IN] optional array of other methods associate with the event + mdEvent *pmdEvent) PURE; // [OUT] output event token + + STDMETHOD(SetClassLayout) ( + mdTypeDef td, // [IN] typedef + DWORD dwPackSize, // [IN] packing size specified as 1, 2, 4, 8, or 16 + COR_FIELD_OFFSET rFieldOffsets[], // [IN] array of layout specification + ULONG ulClassSize) PURE; // [IN] size of the class + + STDMETHOD(DeleteClassLayout) ( + mdTypeDef td) PURE; // [IN] typedef whose layout is to be deleted. + + STDMETHOD(SetFieldMarshal) ( + mdToken tk, // [IN] given a fieldDef or paramDef token + PCCOR_SIGNATURE pvNativeType, // [IN] native type specification + ULONG cbNativeType) PURE; // [IN] count of bytes of pvNativeType + + STDMETHOD(DeleteFieldMarshal) ( + mdToken tk) PURE; // [IN] given a fieldDef or paramDef token + + STDMETHOD(DefinePermissionSet) ( + mdToken tk, // [IN] the object to be decorated. + DWORD dwAction, // [IN] CorDeclSecurity. + void const *pvPermission, // [IN] permission blob. + ULONG cbPermission, // [IN] count of bytes of pvPermission. + mdPermission *ppm) PURE; // [OUT] returned permission token. + + STDMETHOD(SetRVA)( // S_OK or error. + mdMethodDef md, // [IN] Method for which to set offset + ULONG ulRVA) PURE; // [IN] The offset + + STDMETHOD(GetTokenFromSig)( // S_OK or error. + PCCOR_SIGNATURE pvSig, // [IN] Signature to define. + ULONG cbSig, // [IN] Size of signature data. + mdSignature *pmsig) PURE; // [OUT] returned signature token. + + STDMETHOD(DefineModuleRef)( // S_OK or error. + LPCWSTR szName, // [IN] DLL name + mdModuleRef *pmur) PURE; // [OUT] returned + + // @FUTURE: This should go away once everyone starts using SetMemberRefProps. + STDMETHOD(SetParent)( // S_OK or error. + mdMemberRef mr, // [IN] Token for the ref to be fixed up. + mdToken tk) PURE; // [IN] The ref parent. + + STDMETHOD(GetTokenFromTypeSpec)( // S_OK or error. + PCCOR_SIGNATURE pvSig, // [IN] TypeSpec Signature to define. + ULONG cbSig, // [IN] Size of signature data. + mdTypeSpec *ptypespec) PURE; // [OUT] returned TypeSpec token. + + STDMETHOD(SaveToMemory)( // S_OK or error. + void *pbData, // [OUT] Location to write data. + ULONG cbData) PURE; // [IN] Max size of data buffer. + + STDMETHOD(DefineUserString)( // Return code. + LPCWSTR szString, // [IN] User literal string. + ULONG cchString, // [IN] Length of string. + mdString *pstk) PURE; // [OUT] String token. + + STDMETHOD(DeleteToken)( // Return code. + mdToken tkObj) PURE; // [IN] The token to be deleted + + STDMETHOD(SetMethodProps)( // S_OK or error. + mdMethodDef md, // [IN] The MethodDef. + DWORD dwMethodFlags, // [IN] Method attributes. + ULONG ulCodeRVA, // [IN] Code RVA. + DWORD dwImplFlags) PURE; // [IN] Impl flags. + + STDMETHOD(SetTypeDefProps)( // S_OK or error. + mdTypeDef td, // [IN] The TypeDef. + DWORD dwTypeDefFlags, // [IN] TypeDef flags. + mdToken tkExtends, // [IN] Base TypeDef or TypeRef. + mdToken rtkImplements[]) PURE; // [IN] Implemented interfaces. + + STDMETHOD(SetEventProps)( // S_OK or error. + mdEvent ev, // [IN] The event token. + DWORD dwEventFlags, // [IN] CorEventAttr. + mdToken tkEventType, // [IN] A reference (mdTypeRef or mdTypeRef) to the Event class. + mdMethodDef mdAddOn, // [IN] Add method. + mdMethodDef mdRemoveOn, // [IN] Remove method. + mdMethodDef mdFire, // [IN] Fire method. + mdMethodDef rmdOtherMethods[]) PURE;// [IN] Array of other methods associate with the event. + + STDMETHOD(SetPermissionSetProps)( // S_OK or error. + mdToken tk, // [IN] The object to be decorated. + DWORD dwAction, // [IN] CorDeclSecurity. + void const *pvPermission, // [IN] Permission blob. + ULONG cbPermission, // [IN] Count of bytes of pvPermission. + mdPermission *ppm) PURE; // [OUT] Permission token. + + STDMETHOD(DefinePinvokeMap)( // Return code. + mdToken tk, // [IN] FieldDef or MethodDef. + DWORD dwMappingFlags, // [IN] Flags used for mapping. + LPCWSTR szImportName, // [IN] Import name. + mdModuleRef mrImportDLL) PURE; // [IN] ModuleRef token for the target DLL. + + STDMETHOD(SetPinvokeMap)( // Return code. + mdToken tk, // [IN] FieldDef or MethodDef. + DWORD dwMappingFlags, // [IN] Flags used for mapping. + LPCWSTR szImportName, // [IN] Import name. + mdModuleRef mrImportDLL) PURE; // [IN] ModuleRef token for the target DLL. + + STDMETHOD(DeletePinvokeMap)( // Return code. + mdToken tk) PURE; // [IN] FieldDef or MethodDef. + + // New CustomAttribute functions. + STDMETHOD(DefineCustomAttribute)( // Return code. + mdToken tkObj, // [IN] The object to put the value on. + mdToken tkType, // [IN] Type of the CustomAttribute (TypeRef/TypeDef). + void const *pCustomAttribute, // [IN] The custom value data. + ULONG cbCustomAttribute, // [IN] The custom value data length. + mdCustomAttribute *pcv) PURE; // [OUT] The custom value token value on return. + + STDMETHOD(SetCustomAttributeValue)( // Return code. + mdCustomAttribute pcv, // [IN] The custom value token whose value to replace. + void const *pCustomAttribute, // [IN] The custom value data. + ULONG cbCustomAttribute) PURE;// [IN] The custom value data length. + + STDMETHOD(DefineField)( // S_OK or error. + mdTypeDef td, // Parent TypeDef + LPCWSTR szName, // Name of member + DWORD dwFieldFlags, // Member attributes + PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature + ULONG cbSigBlob, // [IN] count of bytes in the signature blob + DWORD dwCPlusTypeFlag, // [IN] flag for value type. selected ELEMENT_TYPE_* + void const *pValue, // [IN] constant value + ULONG cchValue, // [IN] size of constant value (string, in wide chars). + mdFieldDef *pmd) PURE; // [OUT] Put member token here + + STDMETHOD(DefineProperty)( + mdTypeDef td, // [IN] the class/interface on which the property is being defined + LPCWSTR szProperty, // [IN] Name of the property + DWORD dwPropFlags, // [IN] CorPropertyAttr + PCCOR_SIGNATURE pvSig, // [IN] the required type signature + ULONG cbSig, // [IN] the size of the type signature blob + DWORD dwCPlusTypeFlag, // [IN] flag for value type. selected ELEMENT_TYPE_* + void const *pValue, // [IN] constant value + ULONG cchValue, // [IN] size of constant value (string, in wide chars). + mdMethodDef mdSetter, // [IN] optional setter of the property + mdMethodDef mdGetter, // [IN] optional getter of the property + mdMethodDef rmdOtherMethods[], // [IN] an optional array of other methods + mdProperty *pmdProp) PURE; // [OUT] output property token + + STDMETHOD(DefineParam)( + mdMethodDef md, // [IN] Owning method + ULONG ulParamSeq, // [IN] Which param + LPCWSTR szName, // [IN] Optional param name + DWORD dwParamFlags, // [IN] Optional param flags + DWORD dwCPlusTypeFlag, // [IN] flag for value type. selected ELEMENT_TYPE_* + void const *pValue, // [IN] constant value + ULONG cchValue, // [IN] size of constant value (string, in wide chars). + mdParamDef *ppd) PURE; // [OUT] Put param token here + + STDMETHOD(SetFieldProps)( // S_OK or error. + mdFieldDef fd, // [IN] The FieldDef. + DWORD dwFieldFlags, // [IN] Field attributes. + DWORD dwCPlusTypeFlag, // [IN] Flag for the value type, selected ELEMENT_TYPE_* + void const *pValue, // [IN] Constant value. + ULONG cchValue) PURE; // [IN] size of constant value (string, in wide chars). + + STDMETHOD(SetPropertyProps)( // S_OK or error. + mdProperty pr, // [IN] Property token. + DWORD dwPropFlags, // [IN] CorPropertyAttr. + DWORD dwCPlusTypeFlag, // [IN] Flag for value type, selected ELEMENT_TYPE_* + void const *pValue, // [IN] Constant value. + ULONG cchValue, // [IN] size of constant value (string, in wide chars). + mdMethodDef mdSetter, // [IN] Setter of the property. + mdMethodDef mdGetter, // [IN] Getter of the property. + mdMethodDef rmdOtherMethods[]) PURE;// [IN] Array of other methods. + + STDMETHOD(SetParamProps)( // Return code. + mdParamDef pd, // [IN] Param token. + LPCWSTR szName, // [IN] Param name. + DWORD dwParamFlags, // [IN] Param flags. + DWORD dwCPlusTypeFlag, // [IN] Flag for value type. selected ELEMENT_TYPE_*. + void const *pValue, // [OUT] Constant value. + ULONG cchValue) PURE; // [IN] size of constant value (string, in wide chars). + + // Specialized Custom Attributes for security. + STDMETHOD(DefineSecurityAttributeSet)( // Return code. + mdToken tkObj, // [IN] Class or method requiring security attributes. + COR_SECATTR rSecAttrs[], // [IN] Array of security attribute descriptions. + ULONG cSecAttrs, // [IN] Count of elements in above array. + ULONG *pulErrorAttr) PURE; // [OUT] On error, index of attribute causing problem. + + STDMETHOD(ApplyEditAndContinue)( // S_OK or error. + IUnknown *pImport) PURE; // [IN] Metadata from the delta PE. + + STDMETHOD(TranslateSigWithScope)( + IMetaDataAssemblyImport *pAssemImport, // [IN] importing assembly interface + const void *pbHashValue, // [IN] Hash Blob for Assembly. + ULONG cbHashValue, // [IN] Count of bytes. + IMetaDataImport *import, // [IN] importing interface + PCCOR_SIGNATURE pbSigBlob, // [IN] signature in the importing scope + ULONG cbSigBlob, // [IN] count of bytes of signature + IMetaDataAssemblyEmit *pAssemEmit, // [IN] emit assembly interface + IMetaDataEmit *emit, // [IN] emit interface + PCOR_SIGNATURE pvTranslatedSig, // [OUT] buffer to hold translated signature + ULONG cbTranslatedSigMax, + ULONG *pcbTranslatedSig) PURE;// [OUT] count of bytes in the translated signature + + STDMETHOD(SetMethodImplFlags)( // [IN] S_OK or error. + mdMethodDef md, // [IN] Method for which to set ImplFlags + DWORD dwImplFlags) PURE; + + STDMETHOD(SetFieldRVA)( // [IN] S_OK or error. + mdFieldDef fd, // [IN] Field for which to set offset + ULONG ulRVA) PURE; // [IN] The offset + + STDMETHOD(Merge)( // S_OK or error. + IMetaDataImport *pImport, // [IN] The scope to be merged. + IMapToken *pHostMapToken, // [IN] Host IMapToken interface to receive token remap notification + IUnknown *pHandler) PURE; // [IN] An object to receive to receive error notification. + + STDMETHOD(MergeEnd)() PURE; // S_OK or error. + + // This interface is sealed. Do not change, add, or remove anything. Instead, derive a new iterface. + +}; // IMetaDataEmit + +//------------------------------------- +//--- IMetaDataEmit2 +//------------------------------------- +// {F5DD9950-F693-42e6-830E-7B833E8146A9} +EXTERN_GUID(IID_IMetaDataEmit2, 0xf5dd9950, 0xf693, 0x42e6, 0x83, 0xe, 0x7b, 0x83, 0x3e, 0x81, 0x46, 0xa9); + +//--- +#undef INTERFACE +#define INTERFACE IMetaDataEmit2 +DECLARE_INTERFACE_(IMetaDataEmit2, IMetaDataEmit) +{ + STDMETHOD(DefineMethodSpec)( + mdToken tkParent, // [IN] MethodDef or MemberRef + PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of COM+ signature + ULONG cbSigBlob, // [IN] count of bytes in the signature blob + mdMethodSpec *pmi) PURE; // [OUT] method instantiation token + + STDMETHOD(GetDeltaSaveSize)( // S_OK or error. + CorSaveSize fSave, // [IN] cssAccurate or cssQuick. + DWORD *pdwSaveSize) PURE; // [OUT] Put the size here. + + STDMETHOD(SaveDelta)( // S_OK or error. + LPCWSTR szFile, // [IN] The filename to save to. + DWORD dwSaveFlags) PURE; // [IN] Flags for the save. + + STDMETHOD(SaveDeltaToStream)( // S_OK or error. + IStream *pIStream, // [IN] A writable stream to save to. + DWORD dwSaveFlags) PURE; // [IN] Flags for the save. + + STDMETHOD(SaveDeltaToMemory)( // S_OK or error. + void *pbData, // [OUT] Location to write data. + ULONG cbData) PURE; // [IN] Max size of data buffer. + + STDMETHOD(DefineGenericParam)( // S_OK or error. + mdToken tk, // [IN] TypeDef or MethodDef + ULONG ulParamSeq, // [IN] Index of the type parameter + DWORD dwParamFlags, // [IN] Flags, for future use (e.g. variance) + LPCWSTR szname, // [IN] Name + DWORD reserved, // [IN] For future use (e.g. non-type parameters) + mdToken rtkConstraints[], // [IN] Array of type constraints (TypeDef,TypeRef,TypeSpec) + mdGenericParam *pgp) PURE; // [OUT] Put GenericParam token here + + STDMETHOD(SetGenericParamProps)( // S_OK or error. + mdGenericParam gp, // [IN] GenericParam + DWORD dwParamFlags, // [IN] Flags, for future use (e.g. variance) + LPCWSTR szName, // [IN] Optional name + DWORD reserved, // [IN] For future use (e.g. non-type parameters) + mdToken rtkConstraints[]) PURE;// [IN] Array of type constraints (TypeDef,TypeRef,TypeSpec) + + STDMETHOD(ResetENCLog)() PURE; // S_OK or error. + +}; + +//------------------------------------- +//--- IMetaDataImport +//------------------------------------- +// {7DAC8207-D3AE-4c75-9B67-92801A497D44} +EXTERN_GUID(IID_IMetaDataImport, 0x7dac8207, 0xd3ae, 0x4c75, 0x9b, 0x67, 0x92, 0x80, 0x1a, 0x49, 0x7d, 0x44); + +//--- +#undef INTERFACE +#define INTERFACE IMetaDataImport +DECLARE_INTERFACE_(IMetaDataImport, IUnknown) +{ + STDMETHOD_(void, CloseEnum)(HCORENUM hEnum) PURE; + STDMETHOD(CountEnum)(HCORENUM hEnum, ULONG *pulCount) PURE; + STDMETHOD(ResetEnum)(HCORENUM hEnum, ULONG ulPos) PURE; + STDMETHOD(EnumTypeDefs)(HCORENUM *phEnum, mdTypeDef rTypeDefs[], + ULONG cMax, ULONG *pcTypeDefs) PURE; + STDMETHOD(EnumInterfaceImpls)(HCORENUM *phEnum, mdTypeDef td, + mdInterfaceImpl rImpls[], ULONG cMax, + ULONG* pcImpls) PURE; + STDMETHOD(EnumTypeRefs)(HCORENUM *phEnum, mdTypeRef rTypeRefs[], + ULONG cMax, ULONG* pcTypeRefs) PURE; + + STDMETHOD(FindTypeDefByName)( // S_OK or error. + LPCWSTR szTypeDef, // [IN] Name of the Type. + mdToken tkEnclosingClass, // [IN] TypeDef/TypeRef for Enclosing class. + mdTypeDef *ptd) PURE; // [OUT] Put the TypeDef token here. + + STDMETHOD(GetScopeProps)( // S_OK or error. + _Out_writes_to_opt_(cchName, *pchName) + LPWSTR szName, // [OUT] Put the name here. + ULONG cchName, // [IN] Size of name buffer in wide chars. + ULONG *pchName, // [OUT] Put size of name (wide chars) here. + GUID *pmvid) PURE; // [OUT, OPTIONAL] Put MVID here. + + STDMETHOD(GetModuleFromScope)( // S_OK. + mdModule *pmd) PURE; // [OUT] Put mdModule token here. + + STDMETHOD(GetTypeDefProps)( // S_OK or error. + mdTypeDef td, // [IN] TypeDef token for inquiry. + _Out_writes_to_opt_(cchTypeDef, *pchTypeDef) + LPWSTR szTypeDef, // [OUT] Put name here. + ULONG cchTypeDef, // [IN] size of name buffer in wide chars. + ULONG *pchTypeDef, // [OUT] put size of name (wide chars) here. + DWORD *pdwTypeDefFlags, // [OUT] Put flags here. + mdToken *ptkExtends) PURE; // [OUT] Put base class TypeDef/TypeRef here. + + STDMETHOD(GetInterfaceImplProps)( // S_OK or error. + mdInterfaceImpl iiImpl, // [IN] InterfaceImpl token. + mdTypeDef *pClass, // [OUT] Put implementing class token here. + mdToken *ptkIface) PURE; // [OUT] Put implemented interface token here. + + STDMETHOD(GetTypeRefProps)( // S_OK or error. + mdTypeRef tr, // [IN] TypeRef token. + mdToken *ptkResolutionScope, // [OUT] Resolution scope, ModuleRef or AssemblyRef. + _Out_writes_to_opt_(cchName, *pchName) + LPWSTR szName, // [OUT] Name of the TypeRef. + ULONG cchName, // [IN] Size of buffer. + ULONG *pchName) PURE; // [OUT] Size of Name. + + STDMETHOD(ResolveTypeRef)(mdTypeRef tr, REFIID riid, IUnknown **ppIScope, mdTypeDef *ptd) PURE; + + STDMETHOD(EnumMembers)( // S_OK, S_FALSE, or error. + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdTypeDef cl, // [IN] TypeDef to scope the enumeration. + mdToken rMembers[], // [OUT] Put MemberDefs here. + ULONG cMax, // [IN] Max MemberDefs to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + STDMETHOD(EnumMembersWithName)( // S_OK, S_FALSE, or error. + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdTypeDef cl, // [IN] TypeDef to scope the enumeration. + LPCWSTR szName, // [IN] Limit results to those with this name. + mdToken rMembers[], // [OUT] Put MemberDefs here. + ULONG cMax, // [IN] Max MemberDefs to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + STDMETHOD(EnumMethods)( // S_OK, S_FALSE, or error. + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdTypeDef cl, // [IN] TypeDef to scope the enumeration. + mdMethodDef rMethods[], // [OUT] Put MethodDefs here. + ULONG cMax, // [IN] Max MethodDefs to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + STDMETHOD(EnumMethodsWithName)( // S_OK, S_FALSE, or error. + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdTypeDef cl, // [IN] TypeDef to scope the enumeration. + LPCWSTR szName, // [IN] Limit results to those with this name. + mdMethodDef rMethods[], // [OU] Put MethodDefs here. + ULONG cMax, // [IN] Max MethodDefs to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + STDMETHOD(EnumFields)( // S_OK, S_FALSE, or error. + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdTypeDef cl, // [IN] TypeDef to scope the enumeration. + mdFieldDef rFields[], // [OUT] Put FieldDefs here. + ULONG cMax, // [IN] Max FieldDefs to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + STDMETHOD(EnumFieldsWithName)( // S_OK, S_FALSE, or error. + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdTypeDef cl, // [IN] TypeDef to scope the enumeration. + LPCWSTR szName, // [IN] Limit results to those with this name. + mdFieldDef rFields[], // [OUT] Put MemberDefs here. + ULONG cMax, // [IN] Max MemberDefs to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + + STDMETHOD(EnumParams)( // S_OK, S_FALSE, or error. + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdMethodDef mb, // [IN] MethodDef to scope the enumeration. + mdParamDef rParams[], // [OUT] Put ParamDefs here. + ULONG cMax, // [IN] Max ParamDefs to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + STDMETHOD(EnumMemberRefs)( // S_OK, S_FALSE, or error. + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdToken tkParent, // [IN] Parent token to scope the enumeration. + mdMemberRef rMemberRefs[], // [OUT] Put MemberRefs here. + ULONG cMax, // [IN] Max MemberRefs to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + STDMETHOD(EnumMethodImpls)( // S_OK, S_FALSE, or error + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdTypeDef td, // [IN] TypeDef to scope the enumeration. + mdToken rMethodBody[], // [OUT] Put Method Body tokens here. + mdToken rMethodDecl[], // [OUT] Put Method Declaration tokens here. + ULONG cMax, // [IN] Max tokens to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + STDMETHOD(EnumPermissionSets)( // S_OK, S_FALSE, or error. + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdToken tk, // [IN] if !NIL, token to scope the enumeration. + DWORD dwActions, // [IN] if !0, return only these actions. + mdPermission rPermission[], // [OUT] Put Permissions here. + ULONG cMax, // [IN] Max Permissions to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + STDMETHOD(FindMember)( + mdTypeDef td, // [IN] given typedef + LPCWSTR szName, // [IN] member name + PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature + ULONG cbSigBlob, // [IN] count of bytes in the signature blob + mdToken *pmb) PURE; // [OUT] matching memberdef + + STDMETHOD(FindMethod)( + mdTypeDef td, // [IN] given typedef + LPCWSTR szName, // [IN] member name + PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature + ULONG cbSigBlob, // [IN] count of bytes in the signature blob + mdMethodDef *pmb) PURE; // [OUT] matching memberdef + + STDMETHOD(FindField)( + mdTypeDef td, // [IN] given typedef + LPCWSTR szName, // [IN] member name + PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature + ULONG cbSigBlob, // [IN] count of bytes in the signature blob + mdFieldDef *pmb) PURE; // [OUT] matching memberdef + + STDMETHOD(FindMemberRef)( + mdTypeRef td, // [IN] given typeRef + LPCWSTR szName, // [IN] member name + PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature + ULONG cbSigBlob, // [IN] count of bytes in the signature blob + mdMemberRef *pmr) PURE; // [OUT] matching memberref + + STDMETHOD (GetMethodProps)( + mdMethodDef mb, // The method for which to get props. + mdTypeDef *pClass, // Put method's class here. + _Out_writes_to_opt_(cchMethod, *pchMethod) + LPWSTR szMethod, // Put method's name here. + ULONG cchMethod, // Size of szMethod buffer in wide chars. + ULONG *pchMethod, // Put actual size here + DWORD *pdwAttr, // Put flags here. + PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to the blob value of meta data + ULONG *pcbSigBlob, // [OUT] actual size of signature blob + ULONG *pulCodeRVA, // [OUT] codeRVA + DWORD *pdwImplFlags) PURE; // [OUT] Impl. Flags + + STDMETHOD(GetMemberRefProps)( // S_OK or error. + mdMemberRef mr, // [IN] given memberref + mdToken *ptk, // [OUT] Put classref or classdef here. + _Out_writes_to_opt_(cchMember, *pchMember) + LPWSTR szMember, // [OUT] buffer to fill for member's name + ULONG cchMember, // [IN] the count of char of szMember + ULONG *pchMember, // [OUT] actual count of char in member name + PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to meta data blob value + ULONG *pbSig) PURE; // [OUT] actual size of signature blob + + STDMETHOD(EnumProperties)( // S_OK, S_FALSE, or error. + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdTypeDef td, // [IN] TypeDef to scope the enumeration. + mdProperty rProperties[], // [OUT] Put Properties here. + ULONG cMax, // [IN] Max properties to put. + ULONG *pcProperties) PURE; // [OUT] Put # put here. + + STDMETHOD(EnumEvents)( // S_OK, S_FALSE, or error. + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdTypeDef td, // [IN] TypeDef to scope the enumeration. + mdEvent rEvents[], // [OUT] Put events here. + ULONG cMax, // [IN] Max events to put. + ULONG *pcEvents) PURE; // [OUT] Put # put here. + + STDMETHOD(GetEventProps)( // S_OK, S_FALSE, or error. + mdEvent ev, // [IN] event token + mdTypeDef *pClass, // [OUT] typedef containing the event declarion. + LPCWSTR szEvent, // [OUT] Event name + ULONG cchEvent, // [IN] the count of wchar of szEvent + ULONG *pchEvent, // [OUT] actual count of wchar for event's name + DWORD *pdwEventFlags, // [OUT] Event flags. + mdToken *ptkEventType, // [OUT] EventType class + mdMethodDef *pmdAddOn, // [OUT] AddOn method of the event + mdMethodDef *pmdRemoveOn, // [OUT] RemoveOn method of the event + mdMethodDef *pmdFire, // [OUT] Fire method of the event + mdMethodDef rmdOtherMethod[], // [OUT] other method of the event + ULONG cMax, // [IN] size of rmdOtherMethod + ULONG *pcOtherMethod) PURE; // [OUT] total number of other method of this event + + STDMETHOD(EnumMethodSemantics)( // S_OK, S_FALSE, or error. + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdMethodDef mb, // [IN] MethodDef to scope the enumeration. + mdToken rEventProp[], // [OUT] Put Event/Property here. + ULONG cMax, // [IN] Max properties to put. + ULONG *pcEventProp) PURE; // [OUT] Put # put here. + + STDMETHOD(GetMethodSemantics)( // S_OK, S_FALSE, or error. + mdMethodDef mb, // [IN] method token + mdToken tkEventProp, // [IN] event/property token. + DWORD *pdwSemanticsFlags) PURE; // [OUT] the role flags for the method/propevent pair + + STDMETHOD(GetClassLayout) ( + mdTypeDef td, // [IN] give typedef + DWORD *pdwPackSize, // [OUT] 1, 2, 4, 8, or 16 + COR_FIELD_OFFSET rFieldOffset[], // [OUT] field offset array + ULONG cMax, // [IN] size of the array + ULONG *pcFieldOffset, // [OUT] needed array size + ULONG *pulClassSize) PURE; // [OUT] the size of the class + + STDMETHOD(GetFieldMarshal) ( + mdToken tk, // [IN] given a field's memberdef + PCCOR_SIGNATURE *ppvNativeType, // [OUT] native type of this field + ULONG *pcbNativeType) PURE; // [OUT] the count of bytes of *ppvNativeType + + STDMETHOD(GetRVA)( // S_OK or error. + mdToken tk, // Member for which to set offset + ULONG *pulCodeRVA, // The offset + DWORD *pdwImplFlags) PURE; // the implementation flags + + STDMETHOD(GetPermissionSetProps) ( + mdPermission pm, // [IN] the permission token. + DWORD *pdwAction, // [OUT] CorDeclSecurity. + void const **ppvPermission, // [OUT] permission blob. + ULONG *pcbPermission) PURE; // [OUT] count of bytes of pvPermission. + + STDMETHOD(GetSigFromToken)( // S_OK or error. + mdSignature mdSig, // [IN] Signature token. + PCCOR_SIGNATURE *ppvSig, // [OUT] return pointer to token. + ULONG *pcbSig) PURE; // [OUT] return size of signature. + + STDMETHOD(GetModuleRefProps)( // S_OK or error. + mdModuleRef mur, // [IN] moduleref token. + _Out_writes_to_opt_(cchName, *pchName) + LPWSTR szName, // [OUT] buffer to fill with the moduleref name. + ULONG cchName, // [IN] size of szName in wide characters. + ULONG *pchName) PURE; // [OUT] actual count of characters in the name. + + STDMETHOD(EnumModuleRefs)( // S_OK or error. + HCORENUM *phEnum, // [IN|OUT] pointer to the enum. + mdModuleRef rModuleRefs[], // [OUT] put modulerefs here. + ULONG cmax, // [IN] max memberrefs to put. + ULONG *pcModuleRefs) PURE; // [OUT] put # put here. + + STDMETHOD(GetTypeSpecFromToken)( // S_OK or error. + mdTypeSpec typespec, // [IN] TypeSpec token. + PCCOR_SIGNATURE *ppvSig, // [OUT] return pointer to TypeSpec signature + ULONG *pcbSig) PURE; // [OUT] return size of signature. + + STDMETHOD(GetNameFromToken)( // Not Recommended! May be removed! + mdToken tk, // [IN] Token to get name from. Must have a name. + MDUTF8CSTR *pszUtf8NamePtr) PURE; // [OUT] Return pointer to UTF8 name in heap. + + STDMETHOD(EnumUnresolvedMethods)( // S_OK, S_FALSE, or error. + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdToken rMethods[], // [OUT] Put MemberDefs here. + ULONG cMax, // [IN] Max MemberDefs to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + STDMETHOD(GetUserString)( // S_OK or error. + mdString stk, // [IN] String token. + _Out_writes_to_opt_(cchString, *pchString) + LPWSTR szString, // [OUT] Copy of string. + ULONG cchString, // [IN] Max chars of room in szString. + ULONG *pchString) PURE; // [OUT] How many chars in actual string. + + STDMETHOD(GetPinvokeMap)( // S_OK or error. + mdToken tk, // [IN] FieldDef or MethodDef. + DWORD *pdwMappingFlags, // [OUT] Flags used for mapping. + _Out_writes_to_opt_(cchImportName, *pchImportName) + LPWSTR szImportName, // [OUT] Import name. + ULONG cchImportName, // [IN] Size of the name buffer. + ULONG *pchImportName, // [OUT] Actual number of characters stored. + mdModuleRef *pmrImportDLL) PURE; // [OUT] ModuleRef token for the target DLL. + + STDMETHOD(EnumSignatures)( // S_OK or error. + HCORENUM *phEnum, // [IN|OUT] pointer to the enum. + mdSignature rSignatures[], // [OUT] put signatures here. + ULONG cmax, // [IN] max signatures to put. + ULONG *pcSignatures) PURE; // [OUT] put # put here. + + STDMETHOD(EnumTypeSpecs)( // S_OK or error. + HCORENUM *phEnum, // [IN|OUT] pointer to the enum. + mdTypeSpec rTypeSpecs[], // [OUT] put TypeSpecs here. + ULONG cmax, // [IN] max TypeSpecs to put. + ULONG *pcTypeSpecs) PURE; // [OUT] put # put here. + + STDMETHOD(EnumUserStrings)( // S_OK or error. + HCORENUM *phEnum, // [IN/OUT] pointer to the enum. + mdString rStrings[], // [OUT] put Strings here. + ULONG cmax, // [IN] max Strings to put. + ULONG *pcStrings) PURE; // [OUT] put # put here. + + STDMETHOD(GetParamForMethodIndex)( // S_OK or error. + mdMethodDef md, // [IN] Method token. + ULONG ulParamSeq, // [IN] Parameter sequence. + mdParamDef *ppd) PURE; // [IN] Put Param token here. + + STDMETHOD(EnumCustomAttributes)( // S_OK or error. + HCORENUM *phEnum, // [IN, OUT] COR enumerator. + mdToken tk, // [IN] Token to scope the enumeration, 0 for all. + mdToken tkType, // [IN] Type of interest, 0 for all. + mdCustomAttribute rCustomAttributes[], // [OUT] Put custom attribute tokens here. + ULONG cMax, // [IN] Size of rCustomAttributes. + ULONG *pcCustomAttributes) PURE; // [OUT, OPTIONAL] Put count of token values here. + + STDMETHOD(GetCustomAttributeProps)( // S_OK or error. + mdCustomAttribute cv, // [IN] CustomAttribute token. + mdToken *ptkObj, // [OUT, OPTIONAL] Put object token here. + mdToken *ptkType, // [OUT, OPTIONAL] Put AttrType token here. + void const **ppBlob, // [OUT, OPTIONAL] Put pointer to data here. + ULONG *pcbSize) PURE; // [OUT, OPTIONAL] Put size of date here. + + STDMETHOD(FindTypeRef)( + mdToken tkResolutionScope, // [IN] ModuleRef, AssemblyRef or TypeRef. + LPCWSTR szName, // [IN] TypeRef Name. + mdTypeRef *ptr) PURE; // [OUT] matching TypeRef. + + STDMETHOD(GetMemberProps)( + mdToken mb, // The member for which to get props. + mdTypeDef *pClass, // Put member's class here. + _Out_writes_to_opt_(cchMember, *pchMember) + LPWSTR szMember, // Put member's name here. + ULONG cchMember, // Size of szMember buffer in wide chars. + ULONG *pchMember, // Put actual size here + DWORD *pdwAttr, // Put flags here. + PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to the blob value of meta data + ULONG *pcbSigBlob, // [OUT] actual size of signature blob + ULONG *pulCodeRVA, // [OUT] codeRVA + DWORD *pdwImplFlags, // [OUT] Impl. Flags + DWORD *pdwCPlusTypeFlag, // [OUT] flag for value type. selected ELEMENT_TYPE_* + UVCP_CONSTANT *ppValue, // [OUT] constant value + ULONG *pcchValue) PURE; // [OUT] size of constant string in chars, 0 for non-strings. + + STDMETHOD(GetFieldProps)( + mdFieldDef mb, // The field for which to get props. + mdTypeDef *pClass, // Put field's class here. + _Out_writes_to_opt_(cchField, *pchField) + LPWSTR szField, // Put field's name here. + ULONG cchField, // Size of szField buffer in wide chars. + ULONG *pchField, // Put actual size here + DWORD *pdwAttr, // Put flags here. + PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to the blob value of meta data + ULONG *pcbSigBlob, // [OUT] actual size of signature blob + DWORD *pdwCPlusTypeFlag, // [OUT] flag for value type. selected ELEMENT_TYPE_* + UVCP_CONSTANT *ppValue, // [OUT] constant value + ULONG *pcchValue) PURE; // [OUT] size of constant string in chars, 0 for non-strings. + + STDMETHOD(GetPropertyProps)( // S_OK, S_FALSE, or error. + mdProperty prop, // [IN] property token + mdTypeDef *pClass, // [OUT] typedef containing the property declarion. + LPCWSTR szProperty, // [OUT] Property name + ULONG cchProperty, // [IN] the count of wchar of szProperty + ULONG *pchProperty, // [OUT] actual count of wchar for property name + DWORD *pdwPropFlags, // [OUT] property flags. + PCCOR_SIGNATURE *ppvSig, // [OUT] property type. pointing to meta data internal blob + ULONG *pbSig, // [OUT] count of bytes in *ppvSig + DWORD *pdwCPlusTypeFlag, // [OUT] flag for value type. selected ELEMENT_TYPE_* + UVCP_CONSTANT *ppDefaultValue, // [OUT] constant value + ULONG *pcchDefaultValue, // [OUT] size of constant string in chars, 0 for non-strings. + mdMethodDef *pmdSetter, // [OUT] setter method of the property + mdMethodDef *pmdGetter, // [OUT] getter method of the property + mdMethodDef rmdOtherMethod[], // [OUT] other method of the property + ULONG cMax, // [IN] size of rmdOtherMethod + ULONG *pcOtherMethod) PURE; // [OUT] total number of other method of this property + + STDMETHOD(GetParamProps)( // S_OK or error. + mdParamDef tk, // [IN]The Parameter. + mdMethodDef *pmd, // [OUT] Parent Method token. + ULONG *pulSequence, // [OUT] Parameter sequence. + _Out_writes_to_opt_(cchName, *pchName) + LPWSTR szName, // [OUT] Put name here. + ULONG cchName, // [OUT] Size of name buffer. + ULONG *pchName, // [OUT] Put actual size of name here. + DWORD *pdwAttr, // [OUT] Put flags here. + DWORD *pdwCPlusTypeFlag, // [OUT] Flag for value type. selected ELEMENT_TYPE_*. + UVCP_CONSTANT *ppValue, // [OUT] Constant value. + ULONG *pcchValue) PURE; // [OUT] size of constant string in chars, 0 for non-strings. + + STDMETHOD(GetCustomAttributeByName)( // S_OK or error. + mdToken tkObj, // [IN] Object with Custom Attribute. + LPCWSTR szName, // [IN] Name of desired Custom Attribute. + const void **ppData, // [OUT] Put pointer to data here. + ULONG *pcbData) PURE; // [OUT] Put size of data here. + + STDMETHOD_(BOOL, IsValidToken)( // True or False. + mdToken tk) PURE; // [IN] Given token. + + STDMETHOD(GetNestedClassProps)( // S_OK or error. + mdTypeDef tdNestedClass, // [IN] NestedClass token. + mdTypeDef *ptdEnclosingClass) PURE; // [OUT] EnclosingClass token. + + STDMETHOD(GetNativeCallConvFromSig)( // S_OK or error. + void const *pvSig, // [IN] Pointer to signature. + ULONG cbSig, // [IN] Count of signature bytes. + ULONG *pCallConv) PURE; // [OUT] Put calling conv here (see CorPinvokemap). + + STDMETHOD(IsGlobal)( // S_OK or error. + mdToken pd, // [IN] Type, Field, or Method token. + int *pbGlobal) PURE; // [OUT] Put 1 if global, 0 otherwise. + + // This interface is sealed. Do not change, add, or remove anything. Instead, derive a new iterface. + +}; // IMetaDataImport + +//------------------------------------- +//--- IMetaDataImport2 +//------------------------------------- +// {FCE5EFA0-8BBA-4f8e-A036-8F2022B08466} +EXTERN_GUID(IID_IMetaDataImport2, 0xfce5efa0, 0x8bba, 0x4f8e, 0xa0, 0x36, 0x8f, 0x20, 0x22, 0xb0, 0x84, 0x66); + +//--- +#undef INTERFACE +#define INTERFACE IMetaDataImport2 +DECLARE_INTERFACE_(IMetaDataImport2, IMetaDataImport) +{ + STDMETHOD(EnumGenericParams)( + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdToken tk, // [IN] TypeDef or MethodDef whose generic parameters are requested + mdGenericParam rGenericParams[], // [OUT] Put GenericParams here. + ULONG cMax, // [IN] Max GenericParams to put. + ULONG *pcGenericParams) PURE; // [OUT] Put # put here. + + STDMETHOD(GetGenericParamProps)( // S_OK or error. + mdGenericParam gp, // [IN] GenericParam + ULONG *pulParamSeq, // [OUT] Index of the type parameter + DWORD *pdwParamFlags, // [OUT] Flags, for future use (e.g. variance) + mdToken *ptOwner, // [OUT] Owner (TypeDef or MethodDef) + DWORD *reserved, // [OUT] For future use (e.g. non-type parameters) + _Out_writes_to_opt_(cchName, *pchName) + LPWSTR wzname, // [OUT] Put name here + ULONG cchName, // [IN] Size of buffer + ULONG *pchName) PURE; // [OUT] Put size of name (wide chars) here. + + STDMETHOD(GetMethodSpecProps)( + mdMethodSpec mi, // [IN] The method instantiation + mdToken *tkParent, // [OUT] MethodDef or MemberRef + PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to the blob value of meta data + ULONG *pcbSigBlob) PURE; // [OUT] actual size of signature blob + + STDMETHOD(EnumGenericParamConstraints)( + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdGenericParam tk, // [IN] GenericParam whose constraints are requested + mdGenericParamConstraint rGenericParamConstraints[], // [OUT] Put GenericParamConstraints here. + ULONG cMax, // [IN] Max GenericParamConstraints to put. + ULONG *pcGenericParamConstraints) PURE; // [OUT] Put # put here. + + STDMETHOD(GetGenericParamConstraintProps)( // S_OK or error. + mdGenericParamConstraint gpc, // [IN] GenericParamConstraint + mdGenericParam *ptGenericParam, // [OUT] GenericParam that is constrained + mdToken *ptkConstraintType) PURE; // [OUT] TypeDef/Ref/Spec constraint + + STDMETHOD(GetPEKind)( // S_OK or error. + DWORD* pdwPEKind, // [OUT] The kind of PE (0 - not a PE) + DWORD* pdwMAchine) PURE; // [OUT] Machine as defined in NT header + + STDMETHOD(GetVersionString)( // S_OK or error. + _Out_writes_to_opt_(cchBufSize, *pccBufSize) + LPWSTR pwzBuf, // [OUT[ Put version string here. + DWORD cchBufSize, // [IN] size of the buffer, in wide chars + DWORD *pccBufSize) PURE; // [OUT] Size of the version string, wide chars, including terminating nul. + + STDMETHOD(EnumMethodSpecs)( + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdToken tk, // [IN] MethodDef or MemberRef whose MethodSpecs are requested + mdMethodSpec rMethodSpecs[], // [OUT] Put MethodSpecs here. + ULONG cMax, // [IN] Max tokens to put. + ULONG *pcMethodSpecs) PURE; // [OUT] Put actual count here. + +}; // IMetaDataImport2 + +//------------------------------------- +//--- IMetaDataFilter +//------------------------------------- +// {D0E80DD1-12D4-11d3-B39D-00C04FF81795} +EXTERN_GUID(IID_IMetaDataFilter, 0xd0e80dd1, 0x12d4, 0x11d3, 0xb3, 0x9d, 0x0, 0xc0, 0x4f, 0xf8, 0x17, 0x95); + +//--- +#undef INTERFACE +#define INTERFACE IMetaDataFilter +DECLARE_INTERFACE_(IMetaDataFilter, IUnknown) +{ + STDMETHOD(UnmarkAll)() PURE; + STDMETHOD(MarkToken)(mdToken tk) PURE; + STDMETHOD(IsTokenMarked)(mdToken tk, BOOL *pIsMarked) PURE; +}; + + + +//------------------------------------- +//--- IHostFilter +//------------------------------------- +// {D0E80DD3-12D4-11d3-B39D-00C04FF81795} +EXTERN_GUID(IID_IHostFilter, 0xd0e80dd3, 0x12d4, 0x11d3, 0xb3, 0x9d, 0x0, 0xc0, 0x4f, 0xf8, 0x17, 0x95); + +//--- +#undef INTERFACE +#define INTERFACE IHostFilter +DECLARE_INTERFACE_(IHostFilter, IUnknown) +{ + STDMETHOD(MarkToken)(mdToken tk) PURE; +}; + + +//-------------------------------------- +//--- IMetaDataConverter +//-------------------------------------- +// {D9DEBD79-2992-11d3-8BC1-0000F8083A57} +EXTERN_GUID(IID_IMetaDataConverter, 0xd9debd79, 0x2992, 0x11d3, 0x8b, 0xc1, 0x0, 0x0, 0xf8, 0x8, 0x3a, 0x57); + +//--- +#undef INTERFACE +#define INTERFACE IMetaDataConverter +DECLARE_INTERFACE_(IMetaDataConverter, IUnknown) +{ + STDMETHOD(GetMetaDataFromTypeInfo)( + ITypeInfo* pITI, // [in] Type info + IMetaDataImport** ppMDI) PURE; // [out] return IMetaDataImport on success + + STDMETHOD(GetMetaDataFromTypeLib)( + ITypeLib* pITL, // [in] Type library + IMetaDataImport** ppMDI) PURE; // [out] return IMetaDataImport on success + + STDMETHOD(GetTypeLibFromMetaData)( + BSTR strModule, // [in] Module name + BSTR strTlbName, // [in] Type library name + ITypeLib** ppITL) PURE; // [out] return ITypeLib on success +}; + + +//***************************************************************************** +// Assembly Declarations +//***************************************************************************** + +typedef struct +{ + DWORD dwOSPlatformId; // Operating system platform. + DWORD dwOSMajorVersion; // OS Major version. + DWORD dwOSMinorVersion; // OS Minor version. +} OSINFO; + + +typedef struct +{ + USHORT usMajorVersion; // Major Version. + USHORT usMinorVersion; // Minor Version. + USHORT usBuildNumber; // Build Number. + USHORT usRevisionNumber; // Revision Number. + LPWSTR szLocale; // Locale. + ULONG cbLocale; // [IN/OUT] Size of the buffer in wide chars/Actual size. + DWORD *rProcessor; // Processor ID array. + ULONG ulProcessor; // [IN/OUT] Size of the Processor ID array/Actual # of entries filled in. + OSINFO *rOS; // OSINFO array. + ULONG ulOS; // [IN/OUT]Size of the OSINFO array/Actual # of entries filled in. +} ASSEMBLYMETADATA; + + +// {211EF15B-5317-4438-B196-DEC87B887693} +EXTERN_GUID(IID_IMetaDataAssemblyEmit, 0x211ef15b, 0x5317, 0x4438, 0xb1, 0x96, 0xde, 0xc8, 0x7b, 0x88, 0x76, 0x93); + +//--- +#undef INTERFACE +#define INTERFACE IMetaDataAssemblyEmit +DECLARE_INTERFACE_(IMetaDataAssemblyEmit, IUnknown) +{ + STDMETHOD(DefineAssembly)( // S_OK or error. + const void *pbPublicKey, // [IN] Public key of the assembly. + ULONG cbPublicKey, // [IN] Count of bytes in the public key. + ULONG ulHashAlgId, // [IN] Hash algorithm used to hash the files. + LPCWSTR szName, // [IN] Name of the assembly. + const ASSEMBLYMETADATA *pMetaData, // [IN] Assembly MetaData. + DWORD dwAssemblyFlags, // [IN] Flags. + mdAssembly *pma) PURE; // [OUT] Returned Assembly token. + + STDMETHOD(DefineAssemblyRef)( // S_OK or error. + const void *pbPublicKeyOrToken, // [IN] Public key or token of the assembly. + ULONG cbPublicKeyOrToken, // [IN] Count of bytes in the public key or token. + LPCWSTR szName, // [IN] Name of the assembly being referenced. + const ASSEMBLYMETADATA *pMetaData, // [IN] Assembly MetaData. + const void *pbHashValue, // [IN] Hash Blob. + ULONG cbHashValue, // [IN] Count of bytes in the Hash Blob. + DWORD dwAssemblyRefFlags, // [IN] Flags. + mdAssemblyRef *pmdar) PURE; // [OUT] Returned AssemblyRef token. + + STDMETHOD(DefineFile)( // S_OK or error. + LPCWSTR szName, // [IN] Name of the file. + const void *pbHashValue, // [IN] Hash Blob. + ULONG cbHashValue, // [IN] Count of bytes in the Hash Blob. + DWORD dwFileFlags, // [IN] Flags. + mdFile *pmdf) PURE; // [OUT] Returned File token. + + STDMETHOD(DefineExportedType)( // S_OK or error. + LPCWSTR szName, // [IN] Name of the Com Type. + mdToken tkImplementation, // [IN] mdFile or mdAssemblyRef or mdExportedType + mdTypeDef tkTypeDef, // [IN] TypeDef token within the file. + DWORD dwExportedTypeFlags, // [IN] Flags. + mdExportedType *pmdct) PURE; // [OUT] Returned ExportedType token. + + STDMETHOD(DefineManifestResource)( // S_OK or error. + LPCWSTR szName, // [IN] Name of the resource. + mdToken tkImplementation, // [IN] mdFile or mdAssemblyRef that provides the resource. + DWORD dwOffset, // [IN] Offset to the beginning of the resource within the file. + DWORD dwResourceFlags, // [IN] Flags. + mdManifestResource *pmdmr) PURE; // [OUT] Returned ManifestResource token. + + STDMETHOD(SetAssemblyProps)( // S_OK or error. + mdAssembly pma, // [IN] Assembly token. + const void *pbPublicKey, // [IN] Public key of the assembly. + ULONG cbPublicKey, // [IN] Count of bytes in the public key. + ULONG ulHashAlgId, // [IN] Hash algorithm used to hash the files. + LPCWSTR szName, // [IN] Name of the assembly. + const ASSEMBLYMETADATA *pMetaData, // [IN] Assembly MetaData. + DWORD dwAssemblyFlags) PURE; // [IN] Flags. + + STDMETHOD(SetAssemblyRefProps)( // S_OK or error. + mdAssemblyRef ar, // [IN] AssemblyRefToken. + const void *pbPublicKeyOrToken, // [IN] Public key or token of the assembly. + ULONG cbPublicKeyOrToken, // [IN] Count of bytes in the public key or token. + LPCWSTR szName, // [IN] Name of the assembly being referenced. + const ASSEMBLYMETADATA *pMetaData, // [IN] Assembly MetaData. + const void *pbHashValue, // [IN] Hash Blob. + ULONG cbHashValue, // [IN] Count of bytes in the Hash Blob. + DWORD dwAssemblyRefFlags) PURE; // [IN] Token for Execution Location. + + STDMETHOD(SetFileProps)( // S_OK or error. + mdFile file, // [IN] File token. + const void *pbHashValue, // [IN] Hash Blob. + ULONG cbHashValue, // [IN] Count of bytes in the Hash Blob. + DWORD dwFileFlags) PURE; // [IN] Flags. + + STDMETHOD(SetExportedTypeProps)( // S_OK or error. + mdExportedType ct, // [IN] ExportedType token. + mdToken tkImplementation, // [IN] mdFile or mdAssemblyRef or mdExportedType. + mdTypeDef tkTypeDef, // [IN] TypeDef token within the file. + DWORD dwExportedTypeFlags) PURE; // [IN] Flags. + + STDMETHOD(SetManifestResourceProps)( // S_OK or error. + mdManifestResource mr, // [IN] ManifestResource token. + mdToken tkImplementation, // [IN] mdFile or mdAssemblyRef that provides the resource. + DWORD dwOffset, // [IN] Offset to the beginning of the resource within the file. + DWORD dwResourceFlags) PURE; // [IN] Flags. + +}; // IMetaDataAssemblyEmit + + +// {EE62470B-E94B-424e-9B7C-2F00C9249F93} +EXTERN_GUID(IID_IMetaDataAssemblyImport, 0xee62470b, 0xe94b, 0x424e, 0x9b, 0x7c, 0x2f, 0x0, 0xc9, 0x24, 0x9f, 0x93); + +//--- +#undef INTERFACE +#define INTERFACE IMetaDataAssemblyImport +DECLARE_INTERFACE_(IMetaDataAssemblyImport, IUnknown) +{ + STDMETHOD(GetAssemblyProps)( // S_OK or error. + mdAssembly mda, // [IN] The Assembly for which to get the properties. + const void **ppbPublicKey, // [OUT] Pointer to the public key. + ULONG *pcbPublicKey, // [OUT] Count of bytes in the public key. + ULONG *pulHashAlgId, // [OUT] Hash Algorithm. + _Out_writes_to_opt_(cchName, *pchName) LPWSTR szName, // [OUT] Buffer to fill with assembly's simply name. + ULONG cchName, // [IN] Size of buffer in wide chars. + ULONG *pchName, // [OUT] Actual # of wide chars in name. + ASSEMBLYMETADATA *pMetaData, // [OUT] Assembly MetaData. + DWORD *pdwAssemblyFlags) PURE; // [OUT] Flags. + + STDMETHOD(GetAssemblyRefProps)( // S_OK or error. + mdAssemblyRef mdar, // [IN] The AssemblyRef for which to get the properties. + const void **ppbPublicKeyOrToken, // [OUT] Pointer to the public key or token. + ULONG *pcbPublicKeyOrToken, // [OUT] Count of bytes in the public key or token. + _Out_writes_to_opt_(cchName, *pchName)LPWSTR szName, // [OUT] Buffer to fill with name. + ULONG cchName, // [IN] Size of buffer in wide chars. + ULONG *pchName, // [OUT] Actual # of wide chars in name. + ASSEMBLYMETADATA *pMetaData, // [OUT] Assembly MetaData. + const void **ppbHashValue, // [OUT] Hash blob. + ULONG *pcbHashValue, // [OUT] Count of bytes in the hash blob. + DWORD *pdwAssemblyRefFlags) PURE; // [OUT] Flags. + + STDMETHOD(GetFileProps)( // S_OK or error. + mdFile mdf, // [IN] The File for which to get the properties. + _Out_writes_to_opt_(cchName, *pchName) LPWSTR szName, // [OUT] Buffer to fill with name. + ULONG cchName, // [IN] Size of buffer in wide chars. + ULONG *pchName, // [OUT] Actual # of wide chars in name. + const void **ppbHashValue, // [OUT] Pointer to the Hash Value Blob. + ULONG *pcbHashValue, // [OUT] Count of bytes in the Hash Value Blob. + DWORD *pdwFileFlags) PURE; // [OUT] Flags. + + STDMETHOD(GetExportedTypeProps)( // S_OK or error. + mdExportedType mdct, // [IN] The ExportedType for which to get the properties. + _Out_writes_to_opt_(cchName, *pchName) LPWSTR szName, // [OUT] Buffer to fill with name. + ULONG cchName, // [IN] Size of buffer in wide chars. + ULONG *pchName, // [OUT] Actual # of wide chars in name. + mdToken *ptkImplementation, // [OUT] mdFile or mdAssemblyRef or mdExportedType. + mdTypeDef *ptkTypeDef, // [OUT] TypeDef token within the file. + DWORD *pdwExportedTypeFlags) PURE; // [OUT] Flags. + + STDMETHOD(GetManifestResourceProps)( // S_OK or error. + mdManifestResource mdmr, // [IN] The ManifestResource for which to get the properties. + _Out_writes_to_opt_(cchName, *pchName)LPWSTR szName, // [OUT] Buffer to fill with name. + ULONG cchName, // [IN] Size of buffer in wide chars. + ULONG *pchName, // [OUT] Actual # of wide chars in name. + mdToken *ptkImplementation, // [OUT] mdFile or mdAssemblyRef that provides the ManifestResource. + DWORD *pdwOffset, // [OUT] Offset to the beginning of the resource within the file. + DWORD *pdwResourceFlags) PURE;// [OUT] Flags. + + STDMETHOD(EnumAssemblyRefs)( // S_OK or error + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdAssemblyRef rAssemblyRefs[], // [OUT] Put AssemblyRefs here. + ULONG cMax, // [IN] Max AssemblyRefs to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + STDMETHOD(EnumFiles)( // S_OK or error + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdFile rFiles[], // [OUT] Put Files here. + ULONG cMax, // [IN] Max Files to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + STDMETHOD(EnumExportedTypes)( // S_OK or error + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdExportedType rExportedTypes[], // [OUT] Put ExportedTypes here. + ULONG cMax, // [IN] Max ExportedTypes to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + STDMETHOD(EnumManifestResources)( // S_OK or error + HCORENUM *phEnum, // [IN|OUT] Pointer to the enum. + mdManifestResource rManifestResources[], // [OUT] Put ManifestResources here. + ULONG cMax, // [IN] Max Resources to put. + ULONG *pcTokens) PURE; // [OUT] Put # put here. + + STDMETHOD(GetAssemblyFromScope)( // S_OK or error + mdAssembly *ptkAssembly) PURE; // [OUT] Put token here. + + STDMETHOD(FindExportedTypeByName)( // S_OK or error + LPCWSTR szName, // [IN] Name of the ExportedType. + mdToken mdtExportedType, // [IN] ExportedType for the enclosing class. + mdExportedType *ptkExportedType) PURE; // [OUT] Put the ExportedType token here. + + STDMETHOD(FindManifestResourceByName)( // S_OK or error + LPCWSTR szName, // [IN] Name of the ManifestResource. + mdManifestResource *ptkManifestResource) PURE; // [OUT] Put the ManifestResource token here. + + STDMETHOD_(void, CloseEnum)( + HCORENUM hEnum) PURE; // Enum to be closed. + + STDMETHOD(FindAssembliesByName)( // S_OK or error + LPCWSTR szAppBase, // [IN] optional - can be NULL + LPCWSTR szPrivateBin, // [IN] optional - can be NULL + LPCWSTR szAssemblyName, // [IN] required - this is the assembly you are requesting + IUnknown *ppIUnk[], // [OUT] put IMetaDataAssemblyImport pointers here + ULONG cMax, // [IN] The max number to put + ULONG *pcAssemblies) PURE; // [OUT] The number of assemblies returned. +}; // IMetaDataAssemblyImport + + +//***************************************************************************** +// End Assembly Declarations +//***************************************************************************** + +//***************************************************************************** +// MetaData Validator Declarations +//***************************************************************************** + +// Specifies the type of the module, PE file vs. .obj file. +typedef enum +{ + ValidatorModuleTypeInvalid = 0x0, + ValidatorModuleTypeMin = 0x00000001, + ValidatorModuleTypePE = 0x00000001, + ValidatorModuleTypeObj = 0x00000002, + ValidatorModuleTypeEnc = 0x00000003, + ValidatorModuleTypeIncr = 0x00000004, + ValidatorModuleTypeMax = 0x00000004, +} CorValidatorModuleType; + + +// {4709C9C6-81FF-11D3-9FC7-00C04F79A0A3} +EXTERN_GUID(IID_IMetaDataValidate, 0x4709c9c6, 0x81ff, 0x11d3, 0x9f, 0xc7, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3); + +//--- +#undef INTERFACE +#define INTERFACE IMetaDataValidate +DECLARE_INTERFACE_(IMetaDataValidate, IUnknown) +{ + STDMETHOD(ValidatorInit)( // S_OK or error. + DWORD dwModuleType, // [IN] Specifies the type of the module. + IUnknown *pUnk) PURE; // [IN] Validation error handler. + + STDMETHOD(ValidateMetaData)( // S_OK or error. + ) PURE; +}; // IMetaDataValidate + +//***************************************************************************** +// End MetaData Validator Declarations +//***************************************************************************** + +//***************************************************************************** +// IMetaDataDispenserEx declarations. +//***************************************************************************** + +// {31BCFCE2-DAFB-11D2-9F81-00C04F79A0A3} +EXTERN_GUID(IID_IMetaDataDispenserEx, 0x31bcfce2, 0xdafb, 0x11d2, 0x9f, 0x81, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3); + +#undef INTERFACE +#define INTERFACE IMetaDataDispenserEx +DECLARE_INTERFACE_(IMetaDataDispenserEx, IMetaDataDispenser) +{ + STDMETHOD(SetOption)( // Return code. + REFGUID optionid, // [in] GUID for the option to be set. + const VARIANT *value) PURE; // [in] Value to which the option is to be set. + + STDMETHOD(GetOption)( // Return code. + REFGUID optionid, // [in] GUID for the option to be set. + VARIANT *pvalue) PURE; // [out] Value to which the option is currently set. + + STDMETHOD(OpenScopeOnITypeInfo)( // Return code. + ITypeInfo *pITI, // [in] ITypeInfo to open. + DWORD dwOpenFlags, // [in] Open mode flags. + REFIID riid, // [in] The interface desired. + IUnknown **ppIUnk) PURE; // [out] Return interface on success. + + STDMETHOD(GetCORSystemDirectory)( // Return code. + _Out_writes_to_opt_(cchBuffer, *pchBuffer) + LPWSTR szBuffer, // [out] Buffer for the directory name + DWORD cchBuffer, // [in] Size of the buffer + DWORD* pchBuffer) PURE; // [OUT] Number of characters returned + + STDMETHOD(FindAssembly)( // S_OK or error + LPCWSTR szAppBase, // [IN] optional - can be NULL + LPCWSTR szPrivateBin, // [IN] optional - can be NULL + LPCWSTR szGlobalBin, // [IN] optional - can be NULL + LPCWSTR szAssemblyName, // [IN] required - this is the assembly you are requesting + LPCWSTR szName, // [OUT] buffer - to hold name + ULONG cchName, // [IN] the name buffer's size + ULONG *pcName) PURE; // [OUT] the number of characters returend in the buffer + + STDMETHOD(FindAssemblyModule)( // S_OK or error + LPCWSTR szAppBase, // [IN] optional - can be NULL + LPCWSTR szPrivateBin, // [IN] optional - can be NULL + LPCWSTR szGlobalBin, // [IN] optional - can be NULL + LPCWSTR szAssemblyName, // [IN] required - this is the assembly you are requesting + LPCWSTR szModuleName, // [IN] required - the name of the module + _Out_writes_to_opt_(cchName, *pcName) + LPWSTR szName, // [OUT] buffer - to hold name + ULONG cchName, // [IN] the name buffer's size + ULONG *pcName) PURE; // [OUT] the number of characters returend in the buffer + +}; + +//***************************************************************************** +//***************************************************************************** +// +// Registration declarations. Will be replace by Services' Registration +// implementation. +// +//***************************************************************************** +//***************************************************************************** +// Various flags for use in installing a module or a composite +typedef enum +{ + regNoCopy = 0x00000001, // Don't copy files into destination + regConfig = 0x00000002, // Is a configuration + regHasRefs = 0x00000004 // Has class references +} CorRegFlags; + +typedef GUID CVID; + +typedef struct { + short Major; + short Minor; + short Sub; + short Build; +} CVStruct; + + +//***************************************************************************** +//***************************************************************************** +// +// CeeGen interfaces for generating in-memory Common Language Runtime files +// +//***************************************************************************** +//***************************************************************************** + +typedef void *HCEESECTION; + +typedef enum { + sdNone = 0, + sdReadOnly = IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA, + sdReadWrite = sdReadOnly | IMAGE_SCN_MEM_WRITE, + sdExecute = IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE +} CeeSectionAttr; + +// +// Relocation types. +// + +typedef enum { + // generate only a section-relative reloc, nothing into .reloc section + srRelocAbsolute, + + // generate a .reloc for a pointer sized location, + // This is transformed into BASED_HIGHLOW or BASED_DIR64 based on the platform + srRelocHighLow = 3, + + // generate a .reloc for the top 16-bits of a 32 bit number, where the + // bottom 16 bits are included in the next word in the .reloc table + srRelocHighAdj, // Never Used + + // generate a token map relocation, nothing into .reloc section + srRelocMapToken, + + // relative address fixup + srRelocRelative, + + // Generate only a section-relative reloc, nothing into .reloc + // section. This reloc is relative to the file position of the + // section, not the section's virtual address. + srRelocFilePos, + + // code relative address fixup + srRelocCodeRelative, + + // generate a .reloc for a 64 bit address in an ia64 movl instruction + srRelocIA64Imm64, + + // generate a .reloc for a 64 bit address + srRelocDir64, + + // generate a .reloc for a 25-bit PC relative address in an ia64 br.call instruction + srRelocIA64PcRel25, + + // generate a .reloc for a 64-bit PC relative address in an ia64 brl.call instruction + srRelocIA64PcRel64, + + // generate a 30-bit section-relative reloc, used for tagged pointer values + srRelocAbsoluteTagged, + + + // A sentinel value to help ensure any additions to this enum are reflected + // in PEWriter.cpp's RelocName array. + srRelocSentinel, + + // Flags that can be used with the above reloc types + + // do not emit base reloc + srNoBaseReloc = 0x4000, + + // pre-fixup contents of memory are ptr rather than a section offset + srRelocPtr = 0x8000, + + // legal enums which include the Ptr flag + srRelocAbsolutePtr = srRelocPtr + srRelocAbsolute, + srRelocHighLowPtr = srRelocPtr + srRelocHighLow, + srRelocRelativePtr = srRelocPtr + srRelocRelative, + srRelocIA64Imm64Ptr = srRelocPtr + srRelocIA64Imm64, + srRelocDir64Ptr = srRelocPtr + srRelocDir64, + +} CeeSectionRelocType; + +#define IMAGE_REL_BASED_REL32 7 +#define IMAGE_REL_BASED_IA64_PCREL21 11 +#define IMAGE_REL_BASED_IA64_PCREL60 12 + +typedef union { + USHORT highAdj; +} CeeSectionRelocExtra; + +//------------------------------------- +//--- ICeeGen +//------------------------------------- +// {7ED1BDFF-8E36-11d2-9C56-00A0C9B7CC45} +EXTERN_GUID(IID_ICeeGen, 0x7ed1bdff, 0x8e36, 0x11d2, 0x9c, 0x56, 0x0, 0xa0, 0xc9, 0xb7, 0xcc, 0x45); + +DECLARE_INTERFACE_(ICeeGen, IUnknown) +{ + STDMETHOD (EmitString) ( + _In_ + LPWSTR lpString, // [IN] String to emit + ULONG *RVA) PURE; // [OUT] RVA for string emitted string + + STDMETHOD (GetString) ( + ULONG RVA, // [IN] RVA for string to return + _Out_opt_ + LPWSTR *lpString) PURE; // [OUT] Returned string + + STDMETHOD (AllocateMethodBuffer) ( + ULONG cchBuffer, // [IN] Length of buffer to create + UCHAR **lpBuffer, // [OUT] Returned buffer + ULONG *RVA) PURE; // [OUT] RVA for method + + STDMETHOD (GetMethodBuffer) ( + ULONG RVA, // [IN] RVA for method to return + UCHAR **lpBuffer) PURE; // [OUT] Returned buffer + + STDMETHOD (GetIMapTokenIface) ( + IUnknown **pIMapToken) PURE; + + STDMETHOD (GenerateCeeFile) () PURE; + + STDMETHOD (GetIlSection) ( + HCEESECTION *section) PURE; + + STDMETHOD (GetStringSection) ( + HCEESECTION *section) PURE; + + STDMETHOD (AddSectionReloc) ( + HCEESECTION section, + ULONG offset, + HCEESECTION relativeTo, + CeeSectionRelocType relocType) PURE; + + // use these only if you have special section requirements not handled + // by other APIs + STDMETHOD (GetSectionCreate) ( + const char *name, + DWORD flags, + HCEESECTION *section) PURE; + + STDMETHOD (GetSectionDataLen) ( + HCEESECTION section, + ULONG *dataLen) PURE; + + STDMETHOD (GetSectionBlock) ( + HCEESECTION section, + ULONG len, + ULONG align=1, + void **ppBytes=0) PURE; + + STDMETHOD (TruncateSection) ( + HCEESECTION section, + ULONG len) PURE; + + STDMETHOD (GenerateCeeMemoryImage) ( + void **ppImage) PURE; + + STDMETHOD (ComputePointer) ( + HCEESECTION section, + ULONG RVA, // [IN] RVA for method to return + UCHAR **lpBuffer) PURE; // [OUT] Returned buffer + +}; + +//***************************************************************************** +//***************************************************************************** +// +// End of CeeGen declarations. +// +//***************************************************************************** + +//***************************************************************************** +//***************************************************************************** +// +// CorModule interfaces for generating in-memory modules +// +//***************************************************************************** +//***************************************************************************** + +typedef enum { + CORMODULE_MATCH = 0x00, // find an existing module that matches interfaces supported + CORMODULE_NEW = 0x01, // always create a new module and interfaces +} ICorModuleInitializeFlags; + +//------------------------------------- +//--- ICorModule +//------------------------------------- +// {2629F8E1-95E5-11d2-9C56-00A0C9B7CC45} +EXTERN_GUID(IID_ICorModule, 0x2629f8e1, 0x95e5, 0x11d2, 0x9c, 0x56, 0x0, 0xa0, 0xc9, 0xb7, 0xcc, 0x45); + +DECLARE_INTERFACE_(ICorModule, IUnknown) +{ + STDMETHOD (Initialize) ( + DWORD flags, // [IN] flags to control emitter returned + REFIID riidCeeGen, // [IN] type of cee generator to initialize with + REFIID riidEmitter) PURE; // [IN] type of emitter to initialize with + + STDMETHOD (GetCeeGen) ( + ICeeGen **pCeeGen) PURE; // [OUT] cee generator + + STDMETHOD (GetMetaDataEmit) ( + IMetaDataEmit **pEmitter) PURE; // [OUT] emitter +}; + +//***************************************************************************** +//***************************************************************************** +// +// End of CorModule declarations. +// +//***************************************************************************** + +//********************************************************************** +//********************************************************************** +//--- IMetaDataTables +//------------------------------------- +// This API isn't big endian friendly since it indexes directly into the memory that +// is stored in little endian format. +// {D8F579AB-402D-4b8e-82D9-5D63B1065C68} +EXTERN_GUID(IID_IMetaDataTables, 0xd8f579ab, 0x402d, 0x4b8e, 0x82, 0xd9, 0x5d, 0x63, 0xb1, 0x6, 0x5c, 0x68); + +DECLARE_INTERFACE_(IMetaDataTables, IUnknown) +{ + STDMETHOD (GetStringHeapSize) ( + ULONG *pcbStrings) PURE; // [OUT] Size of the string heap. + + STDMETHOD (GetBlobHeapSize) ( + ULONG *pcbBlobs) PURE; // [OUT] Size of the Blob heap. + + STDMETHOD (GetGuidHeapSize) ( + ULONG *pcbGuids) PURE; // [OUT] Size of the Guid heap. + + STDMETHOD (GetUserStringHeapSize) ( + ULONG *pcbBlobs) PURE; // [OUT] Size of the User String heap. + + STDMETHOD (GetNumTables) ( + ULONG *pcTables) PURE; // [OUT] Count of tables. + + STDMETHOD (GetTableIndex) ( + ULONG token, // [IN] Token for which to get table index. + ULONG *pixTbl) PURE; // [OUT] Put table index here. + + STDMETHOD (GetTableInfo) ( + ULONG ixTbl, // [IN] Which table. + ULONG *pcbRow, // [OUT] Size of a row, bytes. + ULONG *pcRows, // [OUT] Number of rows. + ULONG *pcCols, // [OUT] Number of columns in each row. + ULONG *piKey, // [OUT] Key column, or -1 if none. + const char **ppName) PURE; // [OUT] Name of the table. + + STDMETHOD (GetColumnInfo) ( + ULONG ixTbl, // [IN] Which Table + ULONG ixCol, // [IN] Which Column in the table + ULONG *poCol, // [OUT] Offset of the column in the row. + ULONG *pcbCol, // [OUT] Size of a column, bytes. + ULONG *pType, // [OUT] Type of the column. + const char **ppName) PURE; // [OUT] Name of the Column. + + STDMETHOD (GetCodedTokenInfo) ( + ULONG ixCdTkn, // [IN] Which kind of coded token. + ULONG *pcTokens, // [OUT] Count of tokens. + ULONG **ppTokens, // [OUT] List of tokens. + const char **ppName) PURE; // [OUT] Name of the CodedToken. + + STDMETHOD (GetRow) ( + ULONG ixTbl, // [IN] Which table. + ULONG rid, // [IN] Which row. + void **ppRow) PURE; // [OUT] Put pointer to row here. + + STDMETHOD (GetColumn) ( + ULONG ixTbl, // [IN] Which table. + ULONG ixCol, // [IN] Which column. + ULONG rid, // [IN] Which row. + ULONG *pVal) PURE; // [OUT] Put the column contents here. + + STDMETHOD (GetString) ( + ULONG ixString, // [IN] Value from a string column. + const char **ppString) PURE; // [OUT] Put a pointer to the string here. + + STDMETHOD (GetBlob) ( + ULONG ixBlob, // [IN] Value from a blob column. + ULONG *pcbData, // [OUT] Put size of the blob here. + const void **ppData) PURE; // [OUT] Put a pointer to the blob here. + + STDMETHOD (GetGuid) ( + ULONG ixGuid, // [IN] Value from a guid column. + const GUID **ppGUID) PURE; // [OUT] Put a pointer to the GUID here. + + STDMETHOD (GetUserString) ( + ULONG ixUserString, // [IN] Value from a UserString column. + ULONG *pcbData, // [OUT] Put size of the UserString here. + const void **ppData) PURE; // [OUT] Put a pointer to the UserString here. + + STDMETHOD (GetNextString) ( + ULONG ixString, // [IN] Value from a string column. + ULONG *pNext) PURE; // [OUT] Put the index of the next string here. + + STDMETHOD (GetNextBlob) ( + ULONG ixBlob, // [IN] Value from a blob column. + ULONG *pNext) PURE; // [OUT] Put the index of the netxt blob here. + + STDMETHOD (GetNextGuid) ( + ULONG ixGuid, // [IN] Value from a guid column. + ULONG *pNext) PURE; // [OUT] Put the index of the next guid here. + + STDMETHOD (GetNextUserString) ( + ULONG ixUserString, // [IN] Value from a UserString column. + ULONG *pNext) PURE; // [OUT] Put the index of the next user string here. + + // Interface is sealed. + +}; +// This API isn't big endian friendly since it indexes directly into the memory that +// is stored in little endian format. +// {BADB5F70-58DA-43a9-A1C6-D74819F19B15} +EXTERN_GUID(IID_IMetaDataTables2, 0xbadb5f70, 0x58da, 0x43a9, 0xa1, 0xc6, 0xd7, 0x48, 0x19, 0xf1, 0x9b, 0x15); + +DECLARE_INTERFACE_(IMetaDataTables2, IMetaDataTables) +{ + STDMETHOD (GetMetaDataStorage) ( //@todo: name? + const void **ppvMd, // [OUT] put pointer to MD section here (aka, 'BSJB'). + ULONG *pcbMd) PURE; // [OUT] put size of the stream here. + + STDMETHOD (GetMetaDataStreamInfo) ( // Get info about the MD stream. + ULONG ix, // [IN] Stream ordinal desired. + const char **ppchName, // [OUT] put pointer to stream name here. + const void **ppv, // [OUT] put pointer to MD stream here. + ULONG *pcb) PURE; // [OUT] put size of the stream here. + +}; // IMetaDataTables2 + +#ifdef _DEFINE_META_DATA_META_CONSTANTS +#ifndef _META_DATA_META_CONSTANTS_DEFINED +#define _META_DATA_META_CONSTANTS_DEFINED +const unsigned int iRidMax = 63; +const unsigned int iCodedToken = 64; // base of coded tokens. +const unsigned int iCodedTokenMax = 95; +const unsigned int iSHORT = 96; // fixed types. +const unsigned int iUSHORT = 97; +const unsigned int iLONG = 98; +const unsigned int iULONG = 99; +const unsigned int iBYTE = 100; +const unsigned int iSTRING = 101; // pool types. +const unsigned int iGUID = 102; +const unsigned int iBLOB = 103; + +inline int IsRidType(ULONG ix) { return ix <= iRidMax; } +inline int IsCodedTokenType(ULONG ix) { return (ix >= iCodedToken) && (ix <= iCodedTokenMax); } +inline int IsRidOrToken(ULONG ix) { return ix <= iCodedTokenMax; } +inline int IsHeapType(ULONG ix) { return ix >= iSTRING; } +inline int IsFixedType(ULONG ix) { return (ix < iSTRING) && (ix > iCodedTokenMax); } +#endif +#endif + +//********************************************************************** +// End of IMetaDataTables. +//********************************************************************** +// Gets the dependancies of a native image. If these change, then +// the native image cannot be used. +// +// IMetaDataImport::GetAssemblyRefProps() can be used to obtain information about +// the mdAssemblyRefs. +//***************************************************************************** + +// {814C9E35-3F3F-4975-977A-371F0A878AC7} +EXTERN_GUID(IID_INativeImageDependency, 0x814c9e35, 0x3f3f, 0x4975, 0x97, 0x7a, 0x37, 0x1f, 0xa, 0x87, 0x8a, 0xc7); + +struct CORCOMPILE_ASSEMBLY_SIGNATURE; +typedef GUID CORCOMPILE_NGEN_SIGNATURE; + +DECLARE_INTERFACE_(INativeImageDependency, IUnknown) +{ + // Get the referenced assembly + STDMETHOD (GetILAssemblyRef) ( + mdAssemblyRef * pAssemblyRef // [OUT] + ) PURE; + + // Get the post-policy assembly actually used + STDMETHOD (GetILAssemblyDef) ( + mdAssemblyRef * ppAssemblyDef, // [OUT] + CORCOMPILE_ASSEMBLY_SIGNATURE * pSign // [OUT] + ) PURE; + + // Get the native image corresponding to GetILAssemblyDef() IF + // there is a hard-bound (directly-referenced) native dependancy + // + // We do not need the configStrig because configStrings have to + // be an exact part. Any partial matches are factored out into GetConfigMask() + STDMETHOD (GetNativeAssemblyDef) ( + CORCOMPILE_NGEN_SIGNATURE * pNativeSign // [OUT] INVALID_NGEN_SIGNATURE if there is no hard-bound dependancy + ) PURE; +}; + +//***************************************************************************** +// +// Fusion uses IFusionNativeImageInfo to obtain (and cache) informaton +// about a native image being installed into the native image cache. +// This allows Fusion to bind directly to native images +// without requiring (expensively) binding to the IL assembly first. +// +// IMetaDataAssemblyImport can be queried for this interface +// +//***************************************************************************** +// {0EA273D0-B4DA-4008-A60D-8D6EFFDD6E91} +EXTERN_GUID(IID_INativeImageInstallInfo, 0xea273d0, 0xb4da, 0x4008, 0xa6, 0xd, 0x8d, 0x6e, 0xff, 0xdd, 0x6e, 0x91); + +DECLARE_INTERFACE_(INativeImageInstallInfo, IUnknown) +{ + // Signature of the ngen image + // This matches the argument type of INativeImageDependency::GetNativeAssemblyDef + + STDMETHOD (GetSignature) ( + CORCOMPILE_NGEN_SIGNATURE * pNgenSign // [OUT] + ) PURE; + + // Signature of the source IL assembly. This can be used to + // verify that the IL image matches a candidate ngen image. + // This matches the argument type of IAssemblyRuntimeSignature::CheckSignature + // + + STDMETHOD (GetILSignature) ( + CORCOMPILE_ASSEMBLY_SIGNATURE * pILSign // [OUT] + ) PURE; + + // Returns the equivalent of ISNAssemblySignature::GetSNAssemblySignature, + // except for unsigned assemblies where the GetSNAssemblySignature will fail. + // This can be used for matching the IL assembly in the GAC when the + // native-image is generated/installed. + // + // Sets *pcbSig and returns ERROR_INSUFFICIENT_BUFFER for insufficient buffer. + // Returns CORSEC_E_MISSING_STRONGNAME if the IL assembly is not strongly-named + + STDMETHOD (GetILStrongSignature) ( + BYTE *pbSig, // [IN, OUT] Buffer to write signature + DWORD *pcbSig // [IN, OUT] Size of buffer, bytes written + ) PURE; + + // Information about the contents/dependancies/assumptions of NativeImage + // All of this information has to match for the current NativeImage to + // be valid + // Sets *pdwLength and returns ERROR_INSUFFICIENT_BUFFER for + // insufficient szConfigString + + STDMETHOD (GetConfigString) ( + _Out_writes_to_opt_ (*pdwLength, *pdwLength) LPWSTR szConfigString, // [OUT] + _Inout_ DWORD * pdwLength // [IN|OUT] - Number of WCHARs written including terminating NULL + ) PURE; + + // A partial match is allowed for the current NativeImage to be valid + + STDMETHOD (GetConfigMask) ( + DWORD * pConfigMask // [OUT] + ) PURE; + + // Cache data that the CLR will need to determine if the NativeImage + // can be used (after the GetConfigString checks are satisfied) + // Sets *pdwBufferSize and returns ERROR_INSUFFICIENT_BUFFER for insufficient ppbBuffer + + STDMETHOD (GetEvaluationDataToCache) ( + BYTE * ppbBuffer, // [OUT] + DWORD * pdwBufferSize // [IN|OUT] Total number of bytes written to *ppbBuffer + ) PURE; + + // + // Dependancy assemblies. The native image is only valid + // if the dependancies have not changed. + // + + STDMETHOD (EnumDependencies) ( + HCORENUM * phEnum, // [IN/OUT] - Pointer to the enum + INativeImageDependency *rDeps[], // [OUT] + ULONG cMax, // [IN] Max dependancies to enumerate in this iteration + DWORD * pdwCount // [OUT] - Number of dependancies actually enumerated + ) PURE; +}; + +//***************************************************************************** +// +// Runtime callback made by Fusion into the CLR to determine if the NativeAssembly +// can be used. The pUnkBindSink argument of CAssemblyName::BindToObject() can +// be queried for this interface +// +//***************************************************************************** +// {065AA013-9BDC-447c-922F-FEE929908447} +EXTERN_GUID(IID_INativeImageEvaluate, 0x65aa013, 0x9bdc, 0x447c, 0x92, 0x2f, 0xfe, 0xe9, 0x29, 0x90, 0x84, 0x47); + +interface IAssembly; + +DECLARE_INTERFACE_(INativeImageEvaluate, IUnknown) +{ + // This will be called before the assemblies are actually loaded. + // + // Returns S_FALSE if the native-image cannot be used. + + STDMETHOD (Evaluate) ( + IAssembly *pILAssembly, // [IN] IL assembly in question + IAssembly *pNativeAssembly, // [IN] NGen image we are trying to use for pILAssembly + BYTE * pbCachedData, // [IN] Data cached when the native-image was generated + DWORD dwDataSize // [IN] Size of the pbCachedData buffer + ) PURE; +}; + +//********************************************************************** + +//********************************************************************** +// +// Predefined CustomAttribute and structures for these custom value +// +//********************************************************************** + +// +// Native Link method custom value definitions. This is for N-direct support. +// + +#define COR_NATIVE_LINK_CUSTOM_VALUE L"COMPLUS_NativeLink" +#define COR_NATIVE_LINK_CUSTOM_VALUE_ANSI "COMPLUS_NativeLink" + +// count of chars for COR_NATIVE_LINK_CUSTOM_VALUE(_ANSI) +#define COR_NATIVE_LINK_CUSTOM_VALUE_CC 18 + +#include +typedef struct +{ + BYTE m_linkType; // see CorNativeLinkType below + BYTE m_flags; // see CorNativeLinkFlags below + mdMemberRef m_entryPoint; // member ref token giving entry point, format is lib:entrypoint +} COR_NATIVE_LINK; +#include + +typedef enum +{ + nltNone = 1, // none of the keywords are specified + nltAnsi = 2, // ansi keyword specified + nltUnicode = 3, // unicode keyword specified + nltAuto = 4, // auto keyword specified + nltOle = 5, // ole keyword specified + nltMaxValue = 7, // used so we can assert how many bits are required for this enum +} CorNativeLinkType; + +typedef enum +{ + nlfNone = 0x00, // no flags + nlfLastError = 0x01, // setLastError keyword specified + nlfNoMangle = 0x02, // nomangle keyword specified + nlfMaxValue = 0x03, // used so we can assert how many bits are required for this enum +} CorNativeLinkFlags; + + +#define COR_DUAL_CUSTOM_VALUE L"IsDual" +#define COR_DUAL_CUSTOM_VALUE_ANSI "IsDual" + +#define COR_DISPATCH_CUSTOM_VALUE L"DISPID" +#define COR_DISPATCH_CUSTOM_VALUE_ANSI "DISPID" + +// +// Security custom value definitions (these are all deprecated). +// + +#define COR_PERM_REQUEST_REQD_CUSTOM_VALUE L"SecPermReq_Reqd" +#define COR_PERM_REQUEST_REQD_CUSTOM_VALUE_ANSI "SecPermReq_Reqd" + +#define COR_PERM_REQUEST_OPT_CUSTOM_VALUE L"SecPermReq_Opt" +#define COR_PERM_REQUEST_OPT_CUSTOM_VALUE_ANSI "SecPermReq_Opt" + +#define COR_PERM_REQUEST_REFUSE_CUSTOM_VALUE L"SecPermReq_Refuse" +#define COR_PERM_REQUEST_REFUSE_CUSTOM_VALUE_ANSI "SecPermReq_Refuse" + +// +// Base class for security custom attributes. +// + +#define COR_BASE_SECURITY_ATTRIBUTE_CLASS L"System.Security.Permissions.SecurityAttribute" +#define COR_BASE_SECURITY_ATTRIBUTE_CLASS_ANSI "System.Security.Permissions.SecurityAttribute" + +// +// Name of custom attribute used to indicate that per-call security checks should +// be disabled for P/Invoke calls. +// + +#define COR_SUPPRESS_UNMANAGED_CODE_CHECK_ATTRIBUTE L"System.Security.SuppressUnmanagedCodeSecurityAttribute" +#define COR_SUPPRESS_UNMANAGED_CODE_CHECK_ATTRIBUTE_ANSI "System.Security.SuppressUnmanagedCodeSecurityAttribute" + +// +// Name of custom attribute tagged on module to indicate it contains +// unverifiable code. +// + +#define COR_UNVER_CODE_ATTRIBUTE L"System.Security.UnverifiableCodeAttribute" +#define COR_UNVER_CODE_ATTRIBUTE_ANSI "System.Security.UnverifiableCodeAttribute" + +// +// Name of custom attribute indicating that a method requires a security object +// slot on the caller's stack. +// + +#define COR_REQUIRES_SECOBJ_ATTRIBUTE L"System.Security.DynamicSecurityMethodAttribute" +#define COR_REQUIRES_SECOBJ_ATTRIBUTE_ANSI "System.Security.DynamicSecurityMethodAttribute" + +#define COR_COMPILERSERVICE_DISCARDABLEATTRIBUTE L"System.Runtime.CompilerServices.DiscardableAttribute" +#define COR_COMPILERSERVICE_DISCARDABLEATTRIBUTE_ASNI "System.Runtime.CompilerServices.DiscardableAttribute" + + +#ifdef __cplusplus +} + +//***************************************************************************** +//***************************************************************************** +// +// C O M + s i g n a t u r e s u p p o r t +// +//***************************************************************************** +//***************************************************************************** + +#ifndef FORCEINLINE + #if _MSC_VER < 1200 + #define FORCEINLINE inline + #else + #define FORCEINLINE __forceinline + #endif +#endif + +// return true if it is a primitive type, i.e. only need to store CorElementType +FORCEINLINE int CorIsPrimitiveType(CorElementType elementtype) +{ + return (elementtype < ELEMENT_TYPE_PTR || elementtype == ELEMENT_TYPE_I || elementtype == ELEMENT_TYPE_U); +} + + +// Return true if element type is a modifier, i.e. ELEMENT_TYPE_MODIFIER bits are +// turned on. For now, it is checking for ELEMENT_TYPE_PTR and ELEMENT_TYPE_BYREF +// as well. This will be removed when we turn on ELEMENT_TYPE_MODIFIER bits for +// these two enum members. +// +FORCEINLINE int CorIsModifierElementType(CorElementType elementtype) +{ + if (elementtype == ELEMENT_TYPE_PTR || elementtype == ELEMENT_TYPE_BYREF) + return 1; + return (elementtype & ELEMENT_TYPE_MODIFIER); +} + +// Given a compress byte (*pData), return the size of the uncompressed data. +inline ULONG CorSigUncompressedDataSize( + PCCOR_SIGNATURE pData) +{ + if ((*pData & 0x80) == 0) + return 1; + else if ((*pData & 0xC0) == 0x80) + return 2; + else + return 4; +} + +///////////////////////////////////////////////////////////////////////////////////////////// +// +// Given a compressed integer(*pData), expand the compressed int to *pDataOut. +// Return value is the number of bytes that the integer occupies in the compressed format +// It is caller's responsibility to ensure pDataOut has at least 4 bytes to be written to. +// +// This function returns -1 if pass in with an incorrectly compressed data, such as +// (*pBytes & 0xE0) == 0XE0. +///////////////////////////////////////////////////////////////////////////////////////////// +inline ULONG CorSigUncompressBigData( + PCCOR_SIGNATURE &pData) // [IN,OUT] compressed data +{ + ULONG res; + + // 1 byte data is handled in CorSigUncompressData + // _ASSERTE(*pData & 0x80); + + // Medium. + if ((*pData & 0xC0) == 0x80) // 10?? ???? + { + res = (ULONG)((*pData++ & 0x3f) << 8); + res |= *pData++; + } + else // 110? ???? + { + res = (*pData++ & 0x1f) << 24; + res |= *pData++ << 16; + res |= *pData++ << 8; + res |= *pData++; + } + return res; +} +FORCEINLINE ULONG CorSigUncompressData( + PCCOR_SIGNATURE &pData) // [IN,OUT] compressed data +{ + // Handle smallest data inline. + if ((*pData & 0x80) == 0x00) // 0??? ???? + return *pData++; + return CorSigUncompressBigData(pData); +} + +inline HRESULT CorSigUncompressData( // return S_OK or E_BADIMAGEFORMAT if the signature is bad + PCCOR_SIGNATURE pData, // [IN] compressed data + DWORD len, // [IN] length of the signature + ULONG *pDataOut, // [OUT] the expanded *pData + ULONG *pDataLen) // [OUT] length of the expanded *pData +{ + HRESULT hr = S_OK; + BYTE const *pBytes = reinterpret_cast(pData); + + // Smallest. + if ((*pBytes & 0x80) == 0x00) // 0??? ???? + { + if (len < 1) + hr = META_E_BAD_SIGNATURE; + else + { + *pDataOut = *pBytes; + *pDataLen = 1; + } + } + // Medium. + else if ((*pBytes & 0xC0) == 0x80) // 10?? ???? + { + if (len < 2) + hr = META_E_BAD_SIGNATURE; + else + { + *pDataOut = (ULONG)(((*pBytes & 0x3f) << 8 | *(pBytes+1))); + *pDataLen = 2; + } + } + else if ((*pBytes & 0xE0) == 0xC0) // 110? ???? + { + if (len < 4) + hr = META_E_BAD_SIGNATURE; + else + { + *pDataOut = (ULONG)(((*pBytes & 0x1f) << 24 | *(pBytes+1) << 16 | *(pBytes+2) << 8 | *(pBytes+3))); + *pDataLen = 4; + } + } + else // We don't recognize this encoding + hr = META_E_BAD_SIGNATURE; + + return hr; + +} + +inline ULONG CorSigUncompressData( // return number of bytes of that compressed data occupied in pData + PCCOR_SIGNATURE pData, // [IN] compressed data + ULONG *pDataOut) // [OUT] the expanded *pData +{ + + ULONG dwSizeOfData = 0; + + // We don't know how big the signature is, so we'll just say that it's big enough + if (FAILED(CorSigUncompressData(pData, 0xff, pDataOut, &dwSizeOfData))) + return (ULONG)-1; + + + return dwSizeOfData; +} + + + + +const static mdToken g_tkCorEncodeToken[4] ={mdtTypeDef, mdtTypeRef, mdtTypeSpec, mdtBaseType}; + +// uncompress a token +inline mdToken CorSigUncompressToken( // return the token. + PCCOR_SIGNATURE &pData) // [IN,OUT] compressed data +{ + mdToken tk; + mdToken tkType; + + tk = CorSigUncompressData(pData); + tkType = g_tkCorEncodeToken[tk & 0x3]; + tk = TokenFromRid(tk >> 2, tkType); + return tk; +} + + +inline ULONG CorSigUncompressToken( // return number of bytes of that compressed data occupied in pData + PCCOR_SIGNATURE pData, // [IN] compressed data + mdToken *pToken) // [OUT] the expanded *pData +{ + ULONG cb; + mdToken tk; + mdToken tkType; + + cb = CorSigUncompressData(pData, (ULONG *)&tk); + tkType = g_tkCorEncodeToken[tk & 0x3]; + tk = TokenFromRid(tk >> 2, tkType); + *pToken = tk; + return cb; +} + +inline HRESULT CorSigUncompressToken( + PCCOR_SIGNATURE pData, // [IN] compressed data + DWORD dwLen, // [IN] Remaining length of sigature + mdToken *pToken, // [OUT] the expanded *pData + DWORD *dwTokenLength) // [OUT] The length of the token in the sigature +{ + mdToken tk; + mdToken tkType; + + HRESULT hr = CorSigUncompressData(pData, dwLen, (ULONG *)&tk, dwTokenLength); + + if (SUCCEEDED(hr)) + { + tkType = g_tkCorEncodeToken[tk & 0x3]; + tk = TokenFromRid(tk >> 2, tkType); + *pToken = tk; + } + return hr; +} + + + +FORCEINLINE ULONG CorSigUncompressCallingConv( + PCCOR_SIGNATURE &pData) // [IN,OUT] compressed data +{ + return *pData++; +} + +FORCEINLINE HRESULT CorSigUncompressCallingConv( + PCCOR_SIGNATURE pData, // [IN] Signature + DWORD dwLen, // [IN] Length of signature + ULONG *data) // [OUT] compressed data +{ + if (dwLen > 0) + { + *data = *pData; + return S_OK; + } + else + return META_E_BAD_SIGNATURE; +} + + +enum { + SIGN_MASK_ONEBYTE = 0xffffffc0, // Mask the same size as the missing bits. + SIGN_MASK_TWOBYTE = 0xffffe000, // Mask the same size as the missing bits. + SIGN_MASK_FOURBYTE = 0xf0000000, // Mask the same size as the missing bits. +}; + +// uncompress a signed integer +inline ULONG CorSigUncompressSignedInt( // return number of bytes of that compressed data occupied in pData + PCCOR_SIGNATURE pData, // [IN] compressed data + int *pInt) // [OUT] the expanded *pInt +{ + ULONG cb; + ULONG ulSigned; + ULONG iData; + + cb = CorSigUncompressData(pData, &iData); + if (cb == (ULONG) -1) return cb; + ulSigned = iData & 0x1; + iData = iData >> 1; + if (ulSigned) + { + if (cb == 1) + { + iData |= SIGN_MASK_ONEBYTE; + } + else if (cb == 2) + { + iData |= SIGN_MASK_TWOBYTE; + } + else + { + iData |= SIGN_MASK_FOURBYTE; + } + } + *pInt = (int)iData; + return cb; +} + + +// uncompress encoded element type +FORCEINLINE CorElementType CorSigUncompressElementType(//Element type + PCCOR_SIGNATURE &pData) // [IN,OUT] compressed data +{ + return (CorElementType)*pData++; +} + +inline ULONG CorSigUncompressElementType(// return number of bytes of that compressed data occupied in pData + PCCOR_SIGNATURE pData, // [IN] compressed data + CorElementType *pElementType) // [OUT] the expanded *pData +{ + *pElementType = (CorElementType)(*pData & 0x7f); + return 1; +} + + +///////////////////////////////////////////////////////////////////////////////////////////// +// +// Given an uncompressed unsigned integer (iLen), Store it to pDataOut in a compressed format. +// Return value is the number of bytes that the integer occupies in the compressed format. +// It is caller's responsibilityt to ensure *pDataOut has at least 4 bytes to write to. +// +// Note that this function returns -1 if iLen is too big to be compressed. We currently can +// only represent to 0x1FFFFFFF. +// +///////////////////////////////////////////////////////////////////////////////////////////// +inline ULONG CorSigCompressData( // return number of bytes that compressed form of iLen will take + ULONG iLen, // [IN] given uncompressed data + void *pDataOut) // [OUT] buffer where iLen will be compressed and stored. +{ + BYTE *pBytes = reinterpret_cast(pDataOut); + + if (iLen <= 0x7F) + { + *pBytes = BYTE(iLen); + return 1; + } + + if (iLen <= 0x3FFF) + { + *pBytes = BYTE((iLen >> 8) | 0x80); + *(pBytes+1) = BYTE(iLen & 0xff); + return 2; + } + + if (iLen <= 0x1FFFFFFF) + { + *pBytes = BYTE((iLen >> 24) | 0xC0); + *(pBytes+1) = BYTE((iLen >> 16) & 0xff); + *(pBytes+2) = BYTE((iLen >> 8) & 0xff); + *(pBytes+3) = BYTE(iLen & 0xff); + return 4; + } + return (ULONG) -1; + +} + +// compress a token +// The least significant bit of the first compress byte will indicate the token type. +// +inline ULONG CorSigCompressToken( // return number of bytes that compressed form of iLen will take + mdToken tk, // [IN] given token + void *pDataOut) // [OUT] buffer where iLen will be compressed and stored. +{ + RID rid = RidFromToken(tk); + ULONG32 ulTyp = TypeFromToken(tk); + + if (rid > 0x3FFFFFF) + // token is too big to be compressed + return (ULONG) -1; + + rid = (rid << 2); + + // TypeDef is encoded with low bits 00 + // TypeRef is encoded with low bits 01 + // TypeSpec is encoded with low bits 10 + // BaseType is encoded with low bit 11 + // + if (ulTyp == g_tkCorEncodeToken[1]) + { + // make the last two bits 01 + rid |= 0x1; + } + else if (ulTyp == g_tkCorEncodeToken[2]) + { + // make last two bits 0 + rid |= 0x2; + } + else if (ulTyp == g_tkCorEncodeToken[3]) + { + rid |= 0x3; + } + return CorSigCompressData((ULONG)rid, pDataOut); +} + +// compress a signed integer +// The least significant bit of the first compress byte will be the signed bit. +// +inline ULONG CorSigCompressSignedInt( // return number of bytes that compressed form of iData will take + int iData, // [IN] given integer + void *pDataOut) // [OUT] buffer where iLen will be compressed and stored. +{ + ULONG isSigned = 0; + + if (iData < 0) + isSigned = 0x1; + + if ((iData & SIGN_MASK_ONEBYTE) == 0 || (iData & SIGN_MASK_ONEBYTE) == SIGN_MASK_ONEBYTE) + { + iData &= ~SIGN_MASK_ONEBYTE; + } + else if ((iData & SIGN_MASK_TWOBYTE) == 0 || (iData & SIGN_MASK_TWOBYTE) == SIGN_MASK_TWOBYTE) + { + iData &= ~SIGN_MASK_TWOBYTE; + } + + else if ((iData & SIGN_MASK_FOURBYTE) == 0 || (iData & SIGN_MASK_FOURBYTE) == SIGN_MASK_FOURBYTE) + { + iData &= ~SIGN_MASK_FOURBYTE; + } + else + { + // out of compressable range + return (ULONG) -1; + } + iData = (int) (iData << 1 | isSigned); + return CorSigCompressData((ULONG)iData, pDataOut); +} + + + +// uncompress encoded element type +inline ULONG CorSigCompressElementType(// return number of bytes of that compressed data occupied in pData + CorElementType et, // [OUT] the expanded *pData + void *pData) // [IN] compressed data +{ + BYTE *pBytes = (BYTE *)(pData); + + *pBytes = BYTE(et); + return 1; + +} + +// Compress a pointer (used for internal element types only, never for persisted +// signatures). +inline ULONG CorSigCompressPointer( // return number of bytes of that compressed data occupied + void *pvPointer, // [IN] given uncompressed data + void *pData) // [OUT] buffer where iLen will be compressed and stored. +{ + *((void* UNALIGNED *)pData) = pvPointer; + return sizeof(void*); +} + +// Uncompress a pointer (see above for comments). +inline ULONG CorSigUncompressPointer( // return number of bytes of that compressed data occupied + PCCOR_SIGNATURE pData, // [IN] compressed data + void **ppvPointer) // [OUT] the expanded *pData +{ + *ppvPointer = *(void* UNALIGNED *)pData; + return sizeof(void*); +} + +#endif // __cplusplus + +#endif // _COR_H_ +// EOF ======================================================================= diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/corhdr.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/corhdr.h new file mode 100644 index 0000000..d366713 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/corhdr.h @@ -0,0 +1,1795 @@ +// ==++== +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// ==--== +/***************************************************************************** + ** ** + ** CorHdr.h - contains definitions for the Runtime structures, ** + ** needed to work with metadata. ** + ** ** + *****************************************************************************/ + + +#ifndef __CORHDR_H__ +#define __CORHDR_H__ + +#define FRAMEWORK_REGISTRY_KEY "Software\\Microsoft\\.NETFramework" +#define FRAMEWORK_REGISTRY_KEY_W L"Software\\Microsoft\\.NETFramework" + +#ifdef _MSC_VER +#pragma warning(disable:4200) // nonstandard extension used : zero-sized array in struct/union. +#endif +typedef LPVOID mdScope; // Obsolete; not used in the runtime. +typedef ULONG32 mdToken; // Generic token + + +// Token definitions + + +typedef mdToken mdModule; // Module token (roughly, a scope) +typedef mdToken mdTypeRef; // TypeRef reference (this or other scope) +typedef mdToken mdTypeDef; // TypeDef in this scope +typedef mdToken mdFieldDef; // Field in this scope +typedef mdToken mdMethodDef; // Method in this scope +typedef mdToken mdParamDef; // param token +typedef mdToken mdInterfaceImpl; // interface implementation token + +typedef mdToken mdMemberRef; // MemberRef (this or other scope) +typedef mdToken mdCustomAttribute; // attribute token +typedef mdToken mdPermission; // DeclSecurity + +typedef mdToken mdSignature; // Signature object +typedef mdToken mdEvent; // event token +typedef mdToken mdProperty; // property token + +typedef mdToken mdModuleRef; // Module reference (for the imported modules) + +// Assembly tokens. +typedef mdToken mdAssembly; // Assembly token. +typedef mdToken mdAssemblyRef; // AssemblyRef token. +typedef mdToken mdFile; // File token. +typedef mdToken mdExportedType; // ExportedType token. +typedef mdToken mdManifestResource; // ManifestResource token. + +typedef mdToken mdTypeSpec; // TypeSpec object + +typedef mdToken mdGenericParam; // formal parameter to generic type or method +typedef mdToken mdMethodSpec; // instantiation of a generic method +typedef mdToken mdGenericParamConstraint; // constraint on a formal generic parameter + +// Application string. +typedef mdToken mdString; // User literal string token. + +typedef mdToken mdCPToken; // constantpool token + +#ifndef MACROS_NOT_SUPPORTED +typedef ULONG RID; +#else +typedef unsigned RID; +#endif // MACROS_NOT_SUPPORTED + +typedef enum ReplacesGeneralNumericDefines +{ +// Directory entry macro for CLR data. +#ifndef IMAGE_DIRECTORY_ENTRY_COMHEADER + IMAGE_DIRECTORY_ENTRY_COMHEADER =14, +#endif // IMAGE_DIRECTORY_ENTRY_COMHEADER + + _NEW_FLAGS_IMPLEMENTED =1, + __NEW_FLAGS_IMPLEMENTED =1, +} ReplacesGeneralNumericDefines; + + +#ifndef __IMAGE_COR20_HEADER_DEFINED__ +#define __IMAGE_COR20_HEADER_DEFINED__ + +typedef enum ReplacesCorHdrNumericDefines +{ +// COM+ Header entry point flags. + COMIMAGE_FLAGS_ILONLY =0x00000001, + COMIMAGE_FLAGS_32BITREQUIRED =0x00000002, + COMIMAGE_FLAGS_IL_LIBRARY =0x00000004, + COMIMAGE_FLAGS_STRONGNAMESIGNED =0x00000008, +// DDBLD - Added Next Line - Still verifying general usage + COMIMAGE_FLAGS_NATIVE_ENTRYPOINT =0x00000010, +// DDBLD - End of Add + COMIMAGE_FLAGS_TRACKDEBUGDATA =0x00010000, + +// Version flags for image. + COR_VERSION_MAJOR_V2 =2, + COR_VERSION_MAJOR =COR_VERSION_MAJOR_V2, + COR_VERSION_MINOR =5, + COR_DELETED_NAME_LENGTH =8, + COR_VTABLEGAP_NAME_LENGTH =8, + +// Maximum size of a NativeType descriptor. + NATIVE_TYPE_MAX_CB =1, + COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE=0xFF, + +// #defines for the MIH FLAGS + IMAGE_COR_MIH_METHODRVA =0x01, + IMAGE_COR_MIH_EHRVA =0x02, + IMAGE_COR_MIH_BASICBLOCK =0x08, + +// V-table constants + COR_VTABLE_32BIT =0x01, // V-table slots are 32-bits in size. + COR_VTABLE_64BIT =0x02, // V-table slots are 64-bits in size. + COR_VTABLE_FROM_UNMANAGED =0x04, // If set, transition from unmanaged. + COR_VTABLE_CALL_MOST_DERIVED =0x10, // Call most derived method described by + +// EATJ constants + IMAGE_COR_EATJ_THUNK_SIZE =32, // Size of a jump thunk reserved range. + +// Max name lengths + //@todo: Change to unlimited name lengths. + MAX_CLASS_NAME =1024, + MAX_PACKAGE_NAME =1024, +} ReplacesCorHdrNumericDefines; + +// COM+ 2.0 header structure. +typedef struct IMAGE_COR20_HEADER +{ + // Header versioning + DWORD cb; + WORD MajorRuntimeVersion; + WORD MinorRuntimeVersion; + + // Symbol table and startup information + IMAGE_DATA_DIRECTORY MetaData; + DWORD Flags; +// DDBLD - Added next section to replace following lin +// DDBLD - Still verifying, since not in NT SDK +// DWORD EntryPointToken; + + // If COMIMAGE_FLAGS_NATIVE_ENTRYPOINT is not set, EntryPointToken represents a managed entrypoint. + // If COMIMAGE_FLAGS_NATIVE_ENTRYPOINT is set, EntryPointRVA represents an RVA to a native entrypoint. + union { + DWORD EntryPointToken; + DWORD EntryPointRVA; + }; +// DDBLD - End of Added Area + + // Binding information + IMAGE_DATA_DIRECTORY Resources; + IMAGE_DATA_DIRECTORY StrongNameSignature; + + // Regular fixup and binding information + IMAGE_DATA_DIRECTORY CodeManagerTable; + IMAGE_DATA_DIRECTORY VTableFixups; + IMAGE_DATA_DIRECTORY ExportAddressTableJumps; + + // Precompiled image info (internal use only - set to zero) + IMAGE_DATA_DIRECTORY ManagedNativeHeader; + +} IMAGE_COR20_HEADER, *PIMAGE_COR20_HEADER; + +#else // !__IMAGE_COR20_HEADER_DEFINED__ + +// @TODO: This hack is required because we pull in the COM+ 2.0 PE header +// definition from winnt.h, and the constant below hasn't propogated yet. +#define COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN 0x08 + +#endif // __IMAGE_COR20_HEADER_DEFINED__ + +// The most recent version. + +#define COR_CTOR_METHOD_NAME ".ctor" +#define COR_CTOR_METHOD_NAME_W L".ctor" +#define COR_CCTOR_METHOD_NAME ".cctor" +#define COR_CCTOR_METHOD_NAME_W L".cctor" + +#define COR_ENUM_FIELD_NAME "value__" +#define COR_ENUM_FIELD_NAME_W L"value__" + +// The predefined name for deleting a typeDef,MethodDef, FieldDef, Property and Event +#define COR_DELETED_NAME_A "_Deleted" +#define COR_DELETED_NAME_W L"_Deleted" +#define COR_VTABLEGAP_NAME_A "_VtblGap" +#define COR_VTABLEGAP_NAME_W L"_VtblGap" + +// We intentionally use strncmp so that we will ignore any suffix +#define IsDeletedName(strName) (strncmp(strName, COR_DELETED_NAME_A, COR_DELETED_NAME_LENGTH) == 0) +#define IsVtblGapName(strName) (strncmp(strName, COR_VTABLEGAP_NAME_A, COR_VTABLEGAP_NAME_LENGTH) == 0) + +// TypeDef/ExportedType attr bits, used by DefineTypeDef. +typedef enum CorTypeAttr +{ + // Use this mask to retrieve the type visibility information. + tdVisibilityMask = 0x00000007, + tdNotPublic = 0x00000000, // Class is not public scope. + tdPublic = 0x00000001, // Class is public scope. + tdNestedPublic = 0x00000002, // Class is nested with public visibility. + tdNestedPrivate = 0x00000003, // Class is nested with private visibility. + tdNestedFamily = 0x00000004, // Class is nested with family visibility. + tdNestedAssembly = 0x00000005, // Class is nested with assembly visibility. + tdNestedFamANDAssem = 0x00000006, // Class is nested with family and assembly visibility. + tdNestedFamORAssem = 0x00000007, // Class is nested with family or assembly visibility. + + // Use this mask to retrieve class layout information + tdLayoutMask = 0x00000018, + tdAutoLayout = 0x00000000, // Class fields are auto-laid out + tdSequentialLayout = 0x00000008, // Class fields are laid out sequentially + tdExplicitLayout = 0x00000010, // Layout is supplied explicitly + // end layout mask + + // Use this mask to retrieve class semantics information. + tdClassSemanticsMask = 0x00000060, + tdClass = 0x00000000, // Type is a class. + tdInterface = 0x00000020, // Type is an interface. + // end semantics mask + + // Special semantics in addition to class semantics. + tdAbstract = 0x00000080, // Class is abstract + tdSealed = 0x00000100, // Class is concrete and may not be extended + tdSpecialName = 0x00000400, // Class name is special. Name describes how. + + // Implementation attributes. + tdImport = 0x00001000, // Class / interface is imported + tdSerializable = 0x00002000, // The class is Serializable. + + // Use tdStringFormatMask to retrieve string information for native interop + tdStringFormatMask = 0x00030000, + tdAnsiClass = 0x00000000, // LPTSTR is interpreted as ANSI in this class + tdUnicodeClass = 0x00010000, // LPTSTR is interpreted as UNICODE + tdAutoClass = 0x00020000, // LPTSTR is interpreted automatically + tdCustomFormatClass = 0x00030000, // A non-standard encoding specified by CustomFormatMask + tdCustomFormatMask = 0x00C00000, // Use this mask to retrieve non-standard encoding information for native interop. The meaning of the values of these 2 bits is unspecified. + + // end string format mask + + tdBeforeFieldInit = 0x00100000, // Initialize the class any time before first static field access. + tdForwarder = 0x00200000, // This ExportedType is a type forwarder. + + // Flags reserved for runtime use. + tdReservedMask = 0x00040800, + tdRTSpecialName = 0x00000800, // Runtime should check name encoding. + tdHasSecurity = 0x00040000, // Class has security associate with it. +} CorTypeAttr; + + +// Macros for accessing the members of the CorTypeAttr. +#define IsTdNotPublic(x) (((x) & tdVisibilityMask) == tdNotPublic) +#define IsTdPublic(x) (((x) & tdVisibilityMask) == tdPublic) +#define IsTdNestedPublic(x) (((x) & tdVisibilityMask) == tdNestedPublic) +#define IsTdNestedPrivate(x) (((x) & tdVisibilityMask) == tdNestedPrivate) +#define IsTdNestedFamily(x) (((x) & tdVisibilityMask) == tdNestedFamily) +#define IsTdNestedAssembly(x) (((x) & tdVisibilityMask) == tdNestedAssembly) +#define IsTdNestedFamANDAssem(x) (((x) & tdVisibilityMask) == tdNestedFamANDAssem) +#define IsTdNestedFamORAssem(x) (((x) & tdVisibilityMask) == tdNestedFamORAssem) +#define IsTdNested(x) (((x) & tdVisibilityMask) >= tdNestedPublic) + +#define IsTdAutoLayout(x) (((x) & tdLayoutMask) == tdAutoLayout) +#define IsTdSequentialLayout(x) (((x) & tdLayoutMask) == tdSequentialLayout) +#define IsTdExplicitLayout(x) (((x) & tdLayoutMask) == tdExplicitLayout) + +#define IsTdClass(x) (((x) & tdClassSemanticsMask) == tdClass) +#define IsTdInterface(x) (((x) & tdClassSemanticsMask) == tdInterface) + +#define IsTdAbstract(x) ((x) & tdAbstract) +#define IsTdSealed(x) ((x) & tdSealed) +#define IsTdSpecialName(x) ((x) & tdSpecialName) + +#define IsTdImport(x) ((x) & tdImport) +#define IsTdSerializable(x) ((x) & tdSerializable) + +#define IsTdAnsiClass(x) (((x) & tdStringFormatMask) == tdAnsiClass) +#define IsTdUnicodeClass(x) (((x) & tdStringFormatMask) == tdUnicodeClass) +#define IsTdAutoClass(x) (((x) & tdStringFormatMask) == tdAutoClass) +#define IsTdCustomFormatClass(x) (((x) & tdStringFormatMask) == tdCustomFormatClass) +#define IsTdBeforeFieldInit(x) ((x) & tdBeforeFieldInit) +#define IsTdForwarder(x) ((x) & tdForwarder) + +#define IsTdRTSpecialName(x) ((x) & tdRTSpecialName) +#define IsTdHasSecurity(x) ((x) & tdHasSecurity) + +// MethodDef attr bits, Used by DefineMethod. +typedef enum CorMethodAttr +{ + // member access mask - Use this mask to retrieve accessibility information. + mdMemberAccessMask = 0x0007, + mdPrivateScope = 0x0000, // Member not referenceable. + mdPrivate = 0x0001, // Accessible only by the parent type. + mdFamANDAssem = 0x0002, // Accessible by sub-types only in this Assembly. + mdAssem = 0x0003, // Accessibly by anyone in the Assembly. + mdFamily = 0x0004, // Accessible only by type and sub-types. + mdFamORAssem = 0x0005, // Accessibly by sub-types anywhere, plus anyone in assembly. + mdPublic = 0x0006, // Accessibly by anyone who has visibility to this scope. + // end member access mask + + // method contract attributes. + mdStatic = 0x0010, // Defined on type, else per instance. + mdFinal = 0x0020, // Method may not be overridden. + mdVirtual = 0x0040, // Method virtual. + mdHideBySig = 0x0080, // Method hides by name+sig, else just by name. + + // vtable layout mask - Use this mask to retrieve vtable attributes. + mdVtableLayoutMask = 0x0100, + mdReuseSlot = 0x0000, // The default. + mdNewSlot = 0x0100, // Method always gets a new slot in the vtable. + // end vtable layout mask + + // method implementation attributes. + mdCheckAccessOnOverride = 0x0200, // Overridability is the same as the visibility. + mdAbstract = 0x0400, // Method does not provide an implementation. + mdSpecialName = 0x0800, // Method is special. Name describes how. + + // interop attributes + mdPinvokeImpl = 0x2000, // Implementation is forwarded through pinvoke. + mdUnmanagedExport = 0x0008, // Managed method exported via thunk to unmanaged code. + + // Reserved flags for runtime use only. + mdReservedMask = 0xd000, + mdRTSpecialName = 0x1000, // Runtime should check name encoding. + mdHasSecurity = 0x4000, // Method has security associate with it. + mdRequireSecObject = 0x8000, // Method calls another method containing security code. + +} CorMethodAttr; + +// Macros for accessing the members of CorMethodAttr. +#define IsMdPrivateScope(x) (((x) & mdMemberAccessMask) == mdPrivateScope) +#define IsMdPrivate(x) (((x) & mdMemberAccessMask) == mdPrivate) +#define IsMdFamANDAssem(x) (((x) & mdMemberAccessMask) == mdFamANDAssem) +#define IsMdAssem(x) (((x) & mdMemberAccessMask) == mdAssem) +#define IsMdFamily(x) (((x) & mdMemberAccessMask) == mdFamily) +#define IsMdFamORAssem(x) (((x) & mdMemberAccessMask) == mdFamORAssem) +#define IsMdPublic(x) (((x) & mdMemberAccessMask) == mdPublic) + +#define IsMdStatic(x) ((x) & mdStatic) +#define IsMdFinal(x) ((x) & mdFinal) +#define IsMdVirtual(x) ((x) & mdVirtual) +#define IsMdHideBySig(x) ((x) & mdHideBySig) + +#define IsMdReuseSlot(x) (((x) & mdVtableLayoutMask) == mdReuseSlot) +#define IsMdNewSlot(x) (((x) & mdVtableLayoutMask) == mdNewSlot) + +#define IsMdCheckAccessOnOverride(x) ((x) & mdCheckAccessOnOverride) +#define IsMdAbstract(x) ((x) & mdAbstract) +#define IsMdSpecialName(x) ((x) & mdSpecialName) + +#define IsMdPinvokeImpl(x) ((x) & mdPinvokeImpl) +#define IsMdUnmanagedExport(x) ((x) & mdUnmanagedExport) + +#define IsMdRTSpecialName(x) ((x) & mdRTSpecialName) +#define IsMdInstanceInitializer(x, str) (((x) & mdRTSpecialName) && !strcmp((str), COR_CTOR_METHOD_NAME)) +#define IsMdInstanceInitializerW(x, str) (((x) & mdRTSpecialName) && !wcscmp((str), COR_CTOR_METHOD_NAME_W)) +#define IsMdClassConstructor(x, str) (((x) & mdRTSpecialName) && !strcmp((str), COR_CCTOR_METHOD_NAME)) +#define IsMdClassConstructorW(x, str) (((x) & mdRTSpecialName) && !wcscmp((str), COR_CCTOR_METHOD_NAME_W)) +#define IsMdHasSecurity(x) ((x) & mdHasSecurity) +#define IsMdRequireSecObject(x) ((x) & mdRequireSecObject) + +// FieldDef attr bits, used by DefineField. +typedef enum CorFieldAttr +{ + // member access mask - Use this mask to retrieve accessibility information. + fdFieldAccessMask = 0x0007, + fdPrivateScope = 0x0000, // Member not referenceable. + fdPrivate = 0x0001, // Accessible only by the parent type. + fdFamANDAssem = 0x0002, // Accessible by sub-types only in this Assembly. + fdAssembly = 0x0003, // Accessibly by anyone in the Assembly. + fdFamily = 0x0004, // Accessible only by type and sub-types. + fdFamORAssem = 0x0005, // Accessibly by sub-types anywhere, plus anyone in assembly. + fdPublic = 0x0006, // Accessibly by anyone who has visibility to this scope. + // end member access mask + + // field contract attributes. + fdStatic = 0x0010, // Defined on type, else per instance. + fdInitOnly = 0x0020, // Field may only be initialized, not written to after init. + fdLiteral = 0x0040, // Value is compile time constant. + fdNotSerialized = 0x0080, // Field does not have to be serialized when type is remoted. + + fdSpecialName = 0x0200, // field is special. Name describes how. + + // interop attributes + fdPinvokeImpl = 0x2000, // Implementation is forwarded through pinvoke. + + // Reserved flags for runtime use only. + fdReservedMask = 0x9500, + fdRTSpecialName = 0x0400, // Runtime(metadata internal APIs) should check name encoding. + fdHasFieldMarshal = 0x1000, // Field has marshalling information. + fdHasDefault = 0x8000, // Field has default. + fdHasFieldRVA = 0x0100, // Field has RVA. +} CorFieldAttr; + +// Macros for accessing the members of CorFieldAttr. +#define IsFdPrivateScope(x) (((x) & fdFieldAccessMask) == fdPrivateScope) +#define IsFdPrivate(x) (((x) & fdFieldAccessMask) == fdPrivate) +#define IsFdFamANDAssem(x) (((x) & fdFieldAccessMask) == fdFamANDAssem) +#define IsFdAssembly(x) (((x) & fdFieldAccessMask) == fdAssembly) +#define IsFdFamily(x) (((x) & fdFieldAccessMask) == fdFamily) +#define IsFdFamORAssem(x) (((x) & fdFieldAccessMask) == fdFamORAssem) +#define IsFdPublic(x) (((x) & fdFieldAccessMask) == fdPublic) + +#define IsFdStatic(x) ((x) & fdStatic) +#define IsFdInitOnly(x) ((x) & fdInitOnly) +#define IsFdLiteral(x) ((x) & fdLiteral) +#define IsFdNotSerialized(x) ((x) & fdNotSerialized) + +#define IsFdPinvokeImpl(x) ((x) & fdPinvokeImpl) +#define IsFdSpecialName(x) ((x) & fdSpecialName) +#define IsFdHasFieldRVA(x) ((x) & fdHasFieldRVA) + +#define IsFdRTSpecialName(x) ((x) & fdRTSpecialName) +#define IsFdHasFieldMarshal(x) ((x) & fdHasFieldMarshal) +#define IsFdHasDefault(x) ((x) & fdHasDefault) + +// Param attr bits, used by DefineParam. +typedef enum CorParamAttr +{ + pdIn = 0x0001, // Param is [In] + pdOut = 0x0002, // Param is [out] + pdOptional = 0x0010, // Param is optional + + // Reserved flags for Runtime use only. + pdReservedMask = 0xf000, + pdHasDefault = 0x1000, // Param has default value. + pdHasFieldMarshal = 0x2000, // Param has FieldMarshal. + + pdUnused = 0xcfe0, +} CorParamAttr; + +// Macros for accessing the members of CorParamAttr. +#define IsPdIn(x) ((x) & pdIn) +#define IsPdOut(x) ((x) & pdOut) +#define IsPdOptional(x) ((x) & pdOptional) + +#define IsPdHasDefault(x) ((x) & pdHasDefault) +#define IsPdHasFieldMarshal(x) ((x) & pdHasFieldMarshal) + + +// Property attr bits, used by DefineProperty. +typedef enum CorPropertyAttr +{ + prSpecialName = 0x0200, // property is special. Name describes how. + + // Reserved flags for Runtime use only. + prReservedMask = 0xf400, + prRTSpecialName = 0x0400, // Runtime(metadata internal APIs) should check name encoding. + prHasDefault = 0x1000, // Property has default + + prUnused = 0xe9ff, +} CorPropertyAttr; + +// Macros for accessing the members of CorPropertyAttr. +#define IsPrSpecialName(x) ((x) & prSpecialName) + +#define IsPrRTSpecialName(x) ((x) & prRTSpecialName) +#define IsPrHasDefault(x) ((x) & prHasDefault) + +// Event attr bits, used by DefineEvent. +typedef enum CorEventAttr +{ + evSpecialName = 0x0200, // event is special. Name describes how. + + // Reserved flags for Runtime use only. + evReservedMask = 0x0400, + evRTSpecialName = 0x0400, // Runtime(metadata internal APIs) should check name encoding. +} CorEventAttr; + +// Macros for accessing the members of CorEventAttr. +#define IsEvSpecialName(x) ((x) & evSpecialName) + +#define IsEvRTSpecialName(x) ((x) & evRTSpecialName) + + +// MethodSemantic attr bits, used by DefineProperty, DefineEvent. +typedef enum CorMethodSemanticsAttr +{ + msSetter = 0x0001, // Setter for property + msGetter = 0x0002, // Getter for property + msOther = 0x0004, // other method for property or event + msAddOn = 0x0008, // AddOn method for event + msRemoveOn = 0x0010, // RemoveOn method for event + msFire = 0x0020, // Fire method for event +} CorMethodSemanticsAttr; + +// Macros for accessing the members of CorMethodSemanticsAttr. +#define IsMsSetter(x) ((x) & msSetter) +#define IsMsGetter(x) ((x) & msGetter) +#define IsMsOther(x) ((x) & msOther) +#define IsMsAddOn(x) ((x) & msAddOn) +#define IsMsRemoveOn(x) ((x) & msRemoveOn) +#define IsMsFire(x) ((x) & msFire) + + +// DeclSecurity attr bits, used by DefinePermissionSet. +typedef enum CorDeclSecurity +{ + dclActionMask = 0x001f, // Mask allows growth of enum. + dclActionNil = 0x0000, // + dclRequest = 0x0001, // + dclDemand = 0x0002, // + dclAssert = 0x0003, // + dclDeny = 0x0004, // + dclPermitOnly = 0x0005, // + dclLinktimeCheck = 0x0006, // + dclInheritanceCheck = 0x0007, // + dclRequestMinimum = 0x0008, // + dclRequestOptional = 0x0009, // + dclRequestRefuse = 0x000a, // + dclPrejitGrant = 0x000b, // Persisted grant set at prejit time + dclPrejitDenied = 0x000c, // Persisted denied set at prejit time + dclNonCasDemand = 0x000d, // + dclNonCasLinkDemand = 0x000e, // + dclNonCasInheritance = 0x000f, // + dclMaximumValue = 0x000f, // Maximum legal value +} CorDeclSecurity; + +// Macros for accessing the members of CorDeclSecurity. +#define IsDclActionNil(x) (((x) & dclActionMask) == dclActionNil) +// Is this a demand that can trigger a stackwalk? +#define IsDclActionAnyStackModifier(x) ((((x) & dclActionMask) == dclAssert) || \ + (((x) & dclActionMask) == dclDeny) || \ + (((x) & dclActionMask) == dclPermitOnly)) + +// MethodImpl attr bits, used by DefineMethodImpl. +typedef enum CorMethodImpl +{ + // code impl mask + miCodeTypeMask = 0x0003, // Flags about code type. + miIL = 0x0000, // Method impl is IL. + miNative = 0x0001, // Method impl is native. + miOPTIL = 0x0002, // Method impl is OPTIL + miRuntime = 0x0003, // Method impl is provided by the runtime. + // end code impl mask + + // managed mask + miManagedMask = 0x0004, // Flags specifying whether the code is managed or unmanaged. + miUnmanaged = 0x0004, // Method impl is unmanaged, otherwise managed. + miManaged = 0x0000, // Method impl is managed. + // end managed mask + + // implementation info and interop + miForwardRef = 0x0010, // Indicates method is defined; used primarily in merge scenarios. + miPreserveSig = 0x0080, // Indicates method sig is not to be mangled to do HRESULT conversion. + + miInternalCall = 0x1000, // Reserved for internal use. + + miSynchronized = 0x0020, // Method is single threaded through the body. + miNoInlining = 0x0008, // Method may not be inlined. + miMaxMethodImplVal = 0xffff, // Range check value +} CorMethodImpl; + +// Macros for accesing the members of CorMethodImpl. +#define IsMiIL(x) (((x) & miCodeTypeMask) == miIL) +#define IsMiNative(x) (((x) & miCodeTypeMask) == miNative) +#define IsMiOPTIL(x) (((x) & miCodeTypeMask) == miOPTIL) +#define IsMiRuntime(x) (((x) & miCodeTypeMask) == miRuntime) + +#define IsMiUnmanaged(x) (((x) & miManagedMask) == miUnmanaged) +#define IsMiManaged(x) (((x) & miManagedMask) == miManaged) + +#define IsMiForwardRef(x) ((x) & miForwardRef) +#define IsMiPreserveSig(x) ((x) & miPreserveSig) + +#define IsMiInternalCall(x) ((x) & miInternalCall) + +#define IsMiSynchronized(x) ((x) & miSynchronized) +#define IsMiNoInlining(x) ((x) & miNoInlining) + + +// PinvokeMap attr bits, used by DefinePinvokeMap. +typedef enum CorPinvokeMap +{ + pmNoMangle = 0x0001, // Pinvoke is to use the member name as specified. + + // Use this mask to retrieve the CharSet information. + pmCharSetMask = 0x0006, + pmCharSetNotSpec = 0x0000, + pmCharSetAnsi = 0x0002, + pmCharSetUnicode = 0x0004, + pmCharSetAuto = 0x0006, + + + pmBestFitUseAssem = 0x0000, + pmBestFitEnabled = 0x0010, + pmBestFitDisabled = 0x0020, + pmBestFitMask = 0x0030, + + pmThrowOnUnmappableCharUseAssem = 0x0000, + pmThrowOnUnmappableCharEnabled = 0x1000, + pmThrowOnUnmappableCharDisabled = 0x2000, + pmThrowOnUnmappableCharMask = 0x3000, + + pmSupportsLastError = 0x0040, // Information about target function. Not relevant for fields. + + // None of the calling convention flags is relevant for fields. + pmCallConvMask = 0x0700, + pmCallConvWinapi = 0x0100, // Pinvoke will use native callconv appropriate to target windows platform. + pmCallConvCdecl = 0x0200, + pmCallConvStdcall = 0x0300, + pmCallConvThiscall = 0x0400, // In M9, pinvoke will raise exception. + pmCallConvFastcall = 0x0500, + + pmMaxValue = 0xFFFF, +} CorPinvokeMap; + +// Macros for accessing the members of CorPinvokeMap +#define IsPmNoMangle(x) ((x) & pmNoMangle) + +#define IsPmCharSetNotSpec(x) (((x) & pmCharSetMask) == pmCharSetNotSpec) +#define IsPmCharSetAnsi(x) (((x) & pmCharSetMask) == pmCharSetAnsi) +#define IsPmCharSetUnicode(x) (((x) & pmCharSetMask) == pmCharSetUnicode) +#define IsPmCharSetAuto(x) (((x) & pmCharSetMask) == pmCharSetAuto) + +#define IsPmSupportsLastError(x) ((x) & pmSupportsLastError) + +#define IsPmCallConvWinapi(x) (((x) & pmCallConvMask) == pmCallConvWinapi) +#define IsPmCallConvCdecl(x) (((x) & pmCallConvMask) == pmCallConvCdecl) +#define IsPmCallConvStdcall(x) (((x) & pmCallConvMask) == pmCallConvStdcall) +#define IsPmCallConvThiscall(x) (((x) & pmCallConvMask) == pmCallConvThiscall) +#define IsPmCallConvFastcall(x) (((x) & pmCallConvMask) == pmCallConvFastcall) + +#define IsPmBestFitEnabled(x) (((x) & pmBestFitMask) == pmBestFitEnabled) +#define IsPmBestFitDisabled(x) (((x) & pmBestFitMask) == pmBestFitDisabled) +#define IsPmBestFitUseAssem(x) (((x) & pmBestFitMask) == pmBestFitUseAssem) + +#define IsPmThrowOnUnmappableCharEnabled(x) (((x) & pmThrowOnUnmappableCharMask) == pmThrowOnUnmappableCharEnabled) +#define IsPmThrowOnUnmappableCharDisabled(x) (((x) & pmThrowOnUnmappableCharMask) == pmThrowOnUnmappableCharDisabled) +#define IsPmThrowOnUnmappableCharUseAssem(x) (((x) & pmThrowOnUnmappableCharMask) == pmThrowOnUnmappableCharUseAssem) + +// Assembly attr bits, used by DefineAssembly. +typedef enum CorAssemblyFlags +{ + afPublicKey = 0x0001, // The assembly ref holds the full (unhashed) public key. + + afPA_None = 0x0000, // Processor Architecture unspecified + afPA_MSIL = 0x0010, // Processor Architecture: neutral (PE32) + afPA_x86 = 0x0020, // Processor Architecture: x86 (PE32) + afPA_IA64 = 0x0030, // Processor Architecture: Itanium (PE32+) + afPA_AMD64 = 0x0040, // Processor Architecture: AMD X64 (PE32+) + afPA_Specified = 0x0080, // Propagate PA flags to AssemblyRef record + afPA_Mask = 0x0070, // Bits describing the processor architecture + afPA_FullMask = 0x00F0, // Bits describing the PA incl. Specified + afPA_Shift = 0x0004, // NOT A FLAG, shift count in PA flags <--> index conversion + + afEnableJITcompileTracking = 0x8000, // From "DebuggableAttribute". + afDisableJITcompileOptimizer= 0x4000, // From "DebuggableAttribute". + + afRetargetable = 0x0100, // The assembly can be retargeted (at runtime) to an + // assembly from a different publisher. +} CorAssemblyFlags; + +// Macros for accessing the members of CorAssemblyFlags. +#define IsAfRetargetable(x) ((x) & afRetargetable) + +// Macros for accessing the Processor Architecture flags of CorAssemblyFlags. +#define IsAfPA_MSIL(x) (((x) & afPA_Mask) == afPA_MSIL) +#define IsAfPA_x86(x) (((x) & afPA_Mask) == afPA_x86) +#define IsAfPA_IA64(x) (((x) & afPA_Mask) == afPA_IA64) +#define IsAfPA_AMD64(x) (((x) & afPA_Mask) == afPA_AMD64) +#define IsAfPA_Specified(x) ((x) & afPA_Specified) +#define PAIndex(x) (((x) & afPA_Mask) >> afPA_Shift) +#define PAFlag(x) (((x) << afPA_Shift) & afPA_Mask) +#define PrepareForSaving(x) ((x) & (((x) & afPA_Specified) ? ~afPA_Specified : ~afPA_FullMask)) + +#define IsAfEnableJITcompileTracking(x) ((x) & afEnableJITcompileTracking) +#define IsAfDisableJITcompileOptimizer(x) ((x) & afDisableJITcompileOptimizer) + +// Macros for accessing the public key flags of CorAssemblyFlags. +#define IsAfPublicKey(x) ((x) & afPublicKey) +#define IsAfPublicKeyToken(x) (((x) & afPublicKey) == 0) + + +// ManifestResource attr bits, used by DefineManifestResource. +typedef enum CorManifestResourceFlags +{ + mrVisibilityMask = 0x0007, + mrPublic = 0x0001, // The Resource is exported from the Assembly. + mrPrivate = 0x0002, // The Resource is private to the Assembly. +} CorManifestResourceFlags; + +// Macros for accessing the members of CorManifestResourceFlags. +#define IsMrPublic(x) (((x) & mrVisibilityMask) == mrPublic) +#define IsMrPrivate(x) (((x) & mrVisibilityMask) == mrPrivate) + + +// File attr bits, used by DefineFile. +typedef enum CorFileFlags +{ + ffContainsMetaData = 0x0000, // This is not a resource file + ffContainsNoMetaData = 0x0001, // This is a resource file or other non-metadata-containing file +} CorFileFlags; + +// Macros for accessing the members of CorFileFlags. +#define IsFfContainsMetaData(x) (!((x) & ffContainsNoMetaData)) +#define IsFfContainsNoMetaData(x) ((x) & ffContainsNoMetaData) + +// PE file kind bits, returned by IMetaDataImport2::GetPEKind() +typedef enum CorPEKind +{ + peNot = 0x00000000, // not a PE file + peILonly = 0x00000001, // flag IL_ONLY is set in COR header + pe32BitRequired=0x00000002, // flag 32BIT_REQUIRED is set in COR header + pe32Plus = 0x00000004, // PE32+ file (64 bit) + pe32Unmanaged=0x00000008 // PE32 without COR header +} CorPEKind; + + +// GenericParam bits, used by DefineGenericParam. +typedef enum CorGenericParamAttr +{ + // Variance of type parameters, only applicable to generic parameters + // for generic interfaces and delegates + gpVarianceMask = 0x0003, + gpNonVariant = 0x0000, + gpCovariant = 0x0001, + gpContravariant = 0x0002, + + // Special constraints, applicable to any type parameters + gpSpecialConstraintMask = 0x001C, + gpNoSpecialConstraint = 0x0000, + gpReferenceTypeConstraint = 0x0004, // type argument must be a reference type + gpNotNullableValueTypeConstraint = 0x0008, // type argument must be a value type but not Nullable + gpDefaultConstructorConstraint = 0x0010, // type argument must have a public default constructor +} CorGenericParamAttr; + +// structures and enums moved from COR.H +typedef unsigned __int8 COR_SIGNATURE; + +typedef COR_SIGNATURE* PCOR_SIGNATURE; // pointer to a cor sig. Not void* so that + // the bytes can be incremented easily +typedef const COR_SIGNATURE* PCCOR_SIGNATURE; + + +typedef const char * MDUTF8CSTR; +typedef char * MDUTF8STR; + +//***************************************************************************** +// +// Element type for Cor signature +// +//***************************************************************************** + +typedef enum CorElementType +{ + ELEMENT_TYPE_END = 0x0, + ELEMENT_TYPE_VOID = 0x1, + ELEMENT_TYPE_BOOLEAN = 0x2, + ELEMENT_TYPE_CHAR = 0x3, + ELEMENT_TYPE_I1 = 0x4, + ELEMENT_TYPE_U1 = 0x5, + ELEMENT_TYPE_I2 = 0x6, + ELEMENT_TYPE_U2 = 0x7, + ELEMENT_TYPE_I4 = 0x8, + ELEMENT_TYPE_U4 = 0x9, + ELEMENT_TYPE_I8 = 0xa, + ELEMENT_TYPE_U8 = 0xb, + ELEMENT_TYPE_R4 = 0xc, + ELEMENT_TYPE_R8 = 0xd, + ELEMENT_TYPE_STRING = 0xe, + + // every type above PTR will be simple type + ELEMENT_TYPE_PTR = 0xf, // PTR + ELEMENT_TYPE_BYREF = 0x10, // BYREF + + // Please use ELEMENT_TYPE_VALUETYPE. ELEMENT_TYPE_VALUECLASS is deprecated. + ELEMENT_TYPE_VALUETYPE = 0x11, // VALUETYPE + ELEMENT_TYPE_CLASS = 0x12, // CLASS + ELEMENT_TYPE_VAR = 0x13, // a class type variable VAR + ELEMENT_TYPE_ARRAY = 0x14, // MDARRAY ... ... + ELEMENT_TYPE_GENERICINST = 0x15, // GENERICINST ... + ELEMENT_TYPE_TYPEDBYREF = 0x16, // TYPEDREF (it takes no args) a typed referece to some other type + + ELEMENT_TYPE_I = 0x18, // native integer size + ELEMENT_TYPE_U = 0x19, // native unsigned integer size + ELEMENT_TYPE_FNPTR = 0x1B, // FNPTR + ELEMENT_TYPE_OBJECT = 0x1C, // Shortcut for System.Object + ELEMENT_TYPE_SZARRAY = 0x1D, // Shortcut for single dimension zero lower bound array + // SZARRAY + ELEMENT_TYPE_MVAR = 0x1e, // a method type variable MVAR + + // This is only for binding + ELEMENT_TYPE_CMOD_REQD = 0x1F, // required C modifier : E_T_CMOD_REQD + ELEMENT_TYPE_CMOD_OPT = 0x20, // optional C modifier : E_T_CMOD_OPT + + // This is for signatures generated internally (which will not be persisted in any way). + ELEMENT_TYPE_INTERNAL = 0x21, // INTERNAL + + // Note that this is the max of base type excluding modifiers + ELEMENT_TYPE_MAX = 0x22, // first invalid element type + + + ELEMENT_TYPE_MODIFIER = 0x40, + ELEMENT_TYPE_SENTINEL = 0x01 | ELEMENT_TYPE_MODIFIER, // sentinel for varargs + ELEMENT_TYPE_PINNED = 0x05 | ELEMENT_TYPE_MODIFIER, + ELEMENT_TYPE_R4_HFA = 0x06 | ELEMENT_TYPE_MODIFIER, // used only internally for R4 HFA types + ELEMENT_TYPE_R8_HFA = 0x07 | ELEMENT_TYPE_MODIFIER, // used only internally for R8 HFA types + +} CorElementType; + + +//***************************************************************************** +// +// Serialization types for Custom attribute support +// +//***************************************************************************** + +typedef enum CorSerializationType +{ + SERIALIZATION_TYPE_UNDEFINED = 0, + SERIALIZATION_TYPE_BOOLEAN = ELEMENT_TYPE_BOOLEAN, + SERIALIZATION_TYPE_CHAR = ELEMENT_TYPE_CHAR, + SERIALIZATION_TYPE_I1 = ELEMENT_TYPE_I1, + SERIALIZATION_TYPE_U1 = ELEMENT_TYPE_U1, + SERIALIZATION_TYPE_I2 = ELEMENT_TYPE_I2, + SERIALIZATION_TYPE_U2 = ELEMENT_TYPE_U2, + SERIALIZATION_TYPE_I4 = ELEMENT_TYPE_I4, + SERIALIZATION_TYPE_U4 = ELEMENT_TYPE_U4, + SERIALIZATION_TYPE_I8 = ELEMENT_TYPE_I8, + SERIALIZATION_TYPE_U8 = ELEMENT_TYPE_U8, + SERIALIZATION_TYPE_R4 = ELEMENT_TYPE_R4, + SERIALIZATION_TYPE_R8 = ELEMENT_TYPE_R8, + SERIALIZATION_TYPE_STRING = ELEMENT_TYPE_STRING, + SERIALIZATION_TYPE_SZARRAY = ELEMENT_TYPE_SZARRAY, // Shortcut for single dimension zero lower bound array + SERIALIZATION_TYPE_TYPE = 0x50, + SERIALIZATION_TYPE_TAGGED_OBJECT= 0x51, + SERIALIZATION_TYPE_FIELD = 0x53, + SERIALIZATION_TYPE_PROPERTY = 0x54, + SERIALIZATION_TYPE_ENUM = 0x55 +} CorSerializationType; + +// +// Calling convention flags. +// + + +typedef enum CorCallingConvention +{ + IMAGE_CEE_CS_CALLCONV_DEFAULT = 0x0, + + IMAGE_CEE_CS_CALLCONV_VARARG = 0x5, + IMAGE_CEE_CS_CALLCONV_FIELD = 0x6, + IMAGE_CEE_CS_CALLCONV_LOCAL_SIG = 0x7, + IMAGE_CEE_CS_CALLCONV_PROPERTY = 0x8, + IMAGE_CEE_CS_CALLCONV_UNMGD = 0x9, + IMAGE_CEE_CS_CALLCONV_GENERICINST = 0xa, // generic method instantiation + IMAGE_CEE_CS_CALLCONV_NATIVEVARARG = 0xb, // used ONLY for 64bit vararg PInvoke calls + IMAGE_CEE_CS_CALLCONV_MAX = 0xc, // first invalid calling convention + + + // The high bits of the calling convention convey additional info + IMAGE_CEE_CS_CALLCONV_MASK = 0x0f, // Calling convention is bottom 4 bits + IMAGE_CEE_CS_CALLCONV_HASTHIS = 0x20, // Top bit indicates a 'this' parameter + IMAGE_CEE_CS_CALLCONV_EXPLICITTHIS = 0x40, // This parameter is explicitly in the signature + IMAGE_CEE_CS_CALLCONV_GENERIC = 0x10, // Generic method sig with explicit number of type arguments (precedes ordinary parameter count) +} CorCallingConvention; + +#define IMAGE_CEE_CS_CALLCONV_INSTANTIATION IMAGE_CEE_CS_CALLCONV_GENERICINST + +typedef enum CorUnmanagedCallingConvention +{ + IMAGE_CEE_UNMANAGED_CALLCONV_C = 0x1, + IMAGE_CEE_UNMANAGED_CALLCONV_STDCALL = 0x2, + IMAGE_CEE_UNMANAGED_CALLCONV_THISCALL = 0x3, + IMAGE_CEE_UNMANAGED_CALLCONV_FASTCALL = 0x4, + + IMAGE_CEE_CS_CALLCONV_C = IMAGE_CEE_UNMANAGED_CALLCONV_C, + IMAGE_CEE_CS_CALLCONV_STDCALL = IMAGE_CEE_UNMANAGED_CALLCONV_STDCALL, + IMAGE_CEE_CS_CALLCONV_THISCALL = IMAGE_CEE_UNMANAGED_CALLCONV_THISCALL, + IMAGE_CEE_CS_CALLCONV_FASTCALL = IMAGE_CEE_UNMANAGED_CALLCONV_FASTCALL, + +} CorUnmanagedCallingConvention; + + +typedef enum CorArgType +{ + IMAGE_CEE_CS_END = 0x0, + IMAGE_CEE_CS_VOID = 0x1, + IMAGE_CEE_CS_I4 = 0x2, + IMAGE_CEE_CS_I8 = 0x3, + IMAGE_CEE_CS_R4 = 0x4, + IMAGE_CEE_CS_R8 = 0x5, + IMAGE_CEE_CS_PTR = 0x6, + IMAGE_CEE_CS_OBJECT = 0x7, + IMAGE_CEE_CS_STRUCT4 = 0x8, + IMAGE_CEE_CS_STRUCT32 = 0x9, + IMAGE_CEE_CS_BYVALUE = 0xA, +} CorArgType; + + +//***************************************************************************** +// +// Native type for N-Direct +// +//***************************************************************************** + +typedef enum CorNativeType +{ + NATIVE_TYPE_END = 0x0, //DEPRECATED + NATIVE_TYPE_VOID = 0x1, //DEPRECATED + NATIVE_TYPE_BOOLEAN = 0x2, // (4 byte boolean value: TRUE = non-zero, FALSE = 0) + NATIVE_TYPE_I1 = 0x3, + NATIVE_TYPE_U1 = 0x4, + NATIVE_TYPE_I2 = 0x5, + NATIVE_TYPE_U2 = 0x6, + NATIVE_TYPE_I4 = 0x7, + NATIVE_TYPE_U4 = 0x8, + NATIVE_TYPE_I8 = 0x9, + NATIVE_TYPE_U8 = 0xa, + NATIVE_TYPE_R4 = 0xb, + NATIVE_TYPE_R8 = 0xc, + NATIVE_TYPE_SYSCHAR = 0xd, //DEPRECATED + NATIVE_TYPE_VARIANT = 0xe, //DEPRECATED + NATIVE_TYPE_CURRENCY = 0xf, + NATIVE_TYPE_PTR = 0x10, //DEPRECATED + + NATIVE_TYPE_DECIMAL = 0x11, //DEPRECATED + NATIVE_TYPE_DATE = 0x12, //DEPRECATED + NATIVE_TYPE_BSTR = 0x13, //COMINTEROP + NATIVE_TYPE_LPSTR = 0x14, + NATIVE_TYPE_LPWSTR = 0x15, + NATIVE_TYPE_LPTSTR = 0x16, + NATIVE_TYPE_FIXEDSYSSTRING = 0x17, + NATIVE_TYPE_OBJECTREF = 0x18, //DEPRECATED + NATIVE_TYPE_IUNKNOWN = 0x19, //COMINTEROP + NATIVE_TYPE_IDISPATCH = 0x1a, //COMINTEROP + NATIVE_TYPE_STRUCT = 0x1b, + NATIVE_TYPE_INTF = 0x1c, //COMINTEROP + NATIVE_TYPE_SAFEARRAY = 0x1d, //COMINTEROP + NATIVE_TYPE_FIXEDARRAY = 0x1e, + NATIVE_TYPE_INT = 0x1f, + NATIVE_TYPE_UINT = 0x20, + + NATIVE_TYPE_NESTEDSTRUCT = 0x21, //DEPRECATED (use NATIVE_TYPE_STRUCT) + + NATIVE_TYPE_BYVALSTR = 0x22, //COMINTEROP + + NATIVE_TYPE_ANSIBSTR = 0x23, //COMINTEROP + + NATIVE_TYPE_TBSTR = 0x24, // select BSTR or ANSIBSTR depending on platform + //COMINTEROP + + NATIVE_TYPE_VARIANTBOOL = 0x25, // (2-byte boolean value: TRUE = -1, FALSE = 0) + //COMINTEROP + NATIVE_TYPE_FUNC = 0x26, + + NATIVE_TYPE_ASANY = 0x28, + + NATIVE_TYPE_ARRAY = 0x2a, + NATIVE_TYPE_LPSTRUCT = 0x2b, + + NATIVE_TYPE_CUSTOMMARSHALER = 0x2c, // Custom marshaler native type. This must be followed + // by a string of the following format: + // "Native type name/0Custom marshaler type name/0Optional cookie/0" + // Or + // "{Native type GUID}/0Custom marshaler type name/0Optional cookie/0" + + NATIVE_TYPE_ERROR = 0x2d, // This native type coupled with ELEMENT_TYPE_I4 will map to VT_HRESULT + //COMINTEROP + + NATIVE_TYPE_MAX = 0x50, // first invalid element type +} CorNativeType; + + +enum +{ + DESCR_GROUP_METHODDEF = 0, // DESCR group for MethodDefs + DESCR_GROUP_METHODIMPL, // DESCR group for MethodImpls +}; + +/***********************************************************************************/ +// a COR_ILMETHOD_SECT is a generic container for attributes that are private +// to a particular method. The COR_ILMETHOD structure points to one of these +// (see GetSect()). COR_ILMETHOD_SECT can decode the Kind of attribute (but not +// its internal data layout, and can skip past the current attibute to find the +// Next one. The overhead for COR_ILMETHOD_SECT is a minimum of 2 bytes. + +typedef enum CorILMethodSect // codes that identify attributes +{ + CorILMethod_Sect_Reserved = 0, + CorILMethod_Sect_EHTable = 1, + CorILMethod_Sect_OptILTable = 2, + + CorILMethod_Sect_KindMask = 0x3F, // The mask for decoding the type code + CorILMethod_Sect_FatFormat = 0x40, // fat format + CorILMethod_Sect_MoreSects = 0x80, // there is another attribute after this one +} CorILMethodSect; + +/************************************/ +/* NOTE this structure must be DWORD aligned!! */ + +typedef struct IMAGE_COR_ILMETHOD_SECT_SMALL +{ + BYTE Kind; + BYTE DataSize; + +} IMAGE_COR_ILMETHOD_SECT_SMALL; + + + +/************************************/ +/* NOTE this structure must be DWORD aligned!! */ +typedef struct IMAGE_COR_ILMETHOD_SECT_FAT +{ + unsigned Kind : 8; + unsigned DataSize : 24; + +} IMAGE_COR_ILMETHOD_SECT_FAT; + + + +/***********************************************************************************/ +/* If COR_ILMETHOD_SECT_HEADER::Kind() = CorILMethod_Sect_EHTable then the attribute + is a list of exception handling clauses. There are two formats, fat or small +*/ +typedef enum CorExceptionFlag // defintitions for the Flags field below (for both big and small) +{ + COR_ILEXCEPTION_CLAUSE_NONE, // This is a typed handler + COR_ILEXCEPTION_CLAUSE_OFFSETLEN = 0x0000, // Deprecated + COR_ILEXCEPTION_CLAUSE_DEPRECATED = 0x0000, // Deprecated + COR_ILEXCEPTION_CLAUSE_FILTER = 0x0001, // If this bit is on, then this EH entry is for a filter + COR_ILEXCEPTION_CLAUSE_FINALLY = 0x0002, // This clause is a finally clause + COR_ILEXCEPTION_CLAUSE_FAULT = 0x0004, // Fault clause (finally that is called on exception only) + COR_ILEXCEPTION_CLAUSE_DUPLICATED = 0x0008, // duplicated clase.. this clause was duplicated down to a funclet which was pulled out of line +} CorExceptionFlag; + +/***********************************/ +// NOTE !!! NOTE +// This structure should line up with EE_ILEXCEPTION_CLAUSE, +// otherwise you'll have to adjust code in Excep.cpp, re: EHRangeTree +// NOTE !!! NOTE + +typedef struct IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT +{ + CorExceptionFlag Flags; + DWORD TryOffset; + DWORD TryLength; // relative to start of try block + DWORD HandlerOffset; + DWORD HandlerLength; // relative to start of handler + union { + DWORD ClassToken; // use for type-based exception handlers + DWORD FilterOffset; // use for filter-based exception handlers (COR_ILEXCEPTION_FILTER is set) + }; +} IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT; + +typedef struct IMAGE_COR_ILMETHOD_SECT_EH_FAT +{ + IMAGE_COR_ILMETHOD_SECT_FAT SectFat; + IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT Clauses[1]; // actually variable size +} IMAGE_COR_ILMETHOD_SECT_EH_FAT; + +/***********************************/ +typedef struct IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL +{ +#ifdef _WIN64 + unsigned Flags : 16; +#else // !_WIN64 + CorExceptionFlag Flags : 16; +#endif + unsigned TryOffset : 16; + unsigned TryLength : 8; // relative to start of try block + unsigned HandlerOffset : 16; + unsigned HandlerLength : 8; // relative to start of handler + union { + DWORD ClassToken; + DWORD FilterOffset; + }; +} IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL; + +/***********************************/ +typedef struct IMAGE_COR_ILMETHOD_SECT_EH_SMALL +{ + IMAGE_COR_ILMETHOD_SECT_SMALL SectSmall; + WORD Reserved; + IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL Clauses[1]; // actually variable size +} IMAGE_COR_ILMETHOD_SECT_EH_SMALL; + + + +typedef union IMAGE_COR_ILMETHOD_SECT_EH +{ + IMAGE_COR_ILMETHOD_SECT_EH_SMALL Small; + IMAGE_COR_ILMETHOD_SECT_EH_FAT Fat; +} IMAGE_COR_ILMETHOD_SECT_EH; + + +/***********************************************************************************/ +typedef enum CorILMethodFlags +{ + CorILMethod_InitLocals = 0x0010, // call default constructor on all local vars + CorILMethod_MoreSects = 0x0008, // there is another attribute after this one + + CorILMethod_CompressedIL = 0x0040, // FIX Remove this and do it on a per Module basis + + // Indicates the format for the COR_ILMETHOD header + CorILMethod_FormatShift = 3, + CorILMethod_FormatMask = ((1 << CorILMethod_FormatShift) - 1), + CorILMethod_TinyFormat = 0x0002, // use this code if the code size is even + CorILMethod_SmallFormat = 0x0000, + CorILMethod_FatFormat = 0x0003, + CorILMethod_TinyFormat1 = 0x0006, // use this code if the code size is odd +} CorILMethodFlags; + +/***************************************************************************/ +/* Used when the method is tiny (< 64 bytes), and there are no local vars */ +typedef struct IMAGE_COR_ILMETHOD_TINY +{ + BYTE Flags_CodeSize; +} IMAGE_COR_ILMETHOD_TINY; + +/************************************/ +// This strucuture is the 'fat' layout, where no compression is attempted. +// Note that this structure can be added on at the end, thus making it extensible +typedef struct IMAGE_COR_ILMETHOD_FAT +{ + unsigned Flags : 12; // Flags + unsigned Size : 4; // size in DWords of this structure (currently 3) + unsigned MaxStack : 16; // maximum number of items (I4, I, I8, obj ...), on the operand stack + DWORD CodeSize; // size of the code + mdSignature LocalVarSigTok; // token that indicates the signature of the local vars (0 means none) + +} IMAGE_COR_ILMETHOD_FAT; + +typedef union IMAGE_COR_ILMETHOD +{ + IMAGE_COR_ILMETHOD_TINY Tiny; + IMAGE_COR_ILMETHOD_FAT Fat; +} IMAGE_COR_ILMETHOD; + +// +// Native method descriptor. +// + +typedef struct IMAGE_COR_NATIVE_DESCRIPTOR +{ + DWORD GCInfo; + DWORD EHInfo; +} IMAGE_COR_NATIVE_DESCRIPTOR; + + +typedef struct IMAGE_COR_X86_RUNTIME_FUNCTION_ENTRY +{ + ULONG BeginAddress; // RVA of start of function + ULONG EndAddress; // RVA of end of function + ULONG MIH; // Associated MIH +} IMAGE_COR_X86_RUNTIME_FUNCTION_ENTRY; + +typedef struct IMAGE_COR_MIH_ENTRY +{ + ULONG EHRVA; + ULONG MethodRVA; + mdToken Token; + BYTE Flags; + BYTE CodeManager; + BYTE MIHData[0]; +} IMAGE_COR_MIH_ENTRY; + +//***************************************************************************** +// Non VOS v-table entries. Define an array of these pointed to by +// IMAGE_COR20_HEADER.VTableFixups. Each entry describes a contiguous array of +// v-table slots. The slots start out initialized to the meta data token value +// for the method they need to call. At image load time, the CLR Loader will +// turn each entry into a pointer to machine code for the CPU and can be +// called directly. +//***************************************************************************** + +typedef struct IMAGE_COR_VTABLEFIXUP +{ + ULONG RVA; // Offset of v-table array in image. + USHORT Count; // How many entries at location. + USHORT Type; // COR_VTABLE_xxx type of entries. +} IMAGE_COR_VTABLEFIXUP; + + + + + +//***************************************************************************** +//***************************************************************************** +// +// M E T A - D A T A D E C L A R A T I O N S +// +//***************************************************************************** +//***************************************************************************** + +//***************************************************************************** +// +// Enums for SetOption API. +// +//***************************************************************************** + +// flags for MetaDataCheckDuplicatesFor +typedef enum CorCheckDuplicatesFor +{ + MDDupAll = 0xffffffff, + MDDupENC = MDDupAll, + MDNoDupChecks = 0x00000000, + MDDupTypeDef = 0x00000001, + MDDupInterfaceImpl = 0x00000002, + MDDupMethodDef = 0x00000004, + MDDupTypeRef = 0x00000008, + MDDupMemberRef = 0x00000010, + MDDupCustomAttribute = 0x00000020, + MDDupParamDef = 0x00000040, + MDDupPermission = 0x00000080, + MDDupProperty = 0x00000100, + MDDupEvent = 0x00000200, + MDDupFieldDef = 0x00000400, + MDDupSignature = 0x00000800, + MDDupModuleRef = 0x00001000, + MDDupTypeSpec = 0x00002000, + MDDupImplMap = 0x00004000, + MDDupAssemblyRef = 0x00008000, + MDDupFile = 0x00010000, + MDDupExportedType = 0x00020000, + MDDupManifestResource = 0x00040000, + MDDupGenericParam = 0x00080000, + MDDupMethodSpec = 0x00100000, + MDDupGenericParamConstraint = 0x00200000, + // gap for debug junk + MDDupAssembly = 0x10000000, + + // This is the default behavior on metadata. It will check duplicates for TypeRef, MemberRef, Signature, TypeSpec and MethodSpec. + MDDupDefault = MDNoDupChecks | MDDupTypeRef | MDDupMemberRef | MDDupSignature | MDDupTypeSpec | MDDupMethodSpec, +} CorCheckDuplicatesFor; + +// flags for MetaDataRefToDefCheck +typedef enum CorRefToDefCheck +{ + // default behavior is to always perform TypeRef to TypeDef and MemberRef to MethodDef/FieldDef optimization + MDRefToDefDefault = 0x00000003, + MDRefToDefAll = 0xffffffff, + MDRefToDefNone = 0x00000000, + MDTypeRefToDef = 0x00000001, + MDMemberRefToDef = 0x00000002 +} CorRefToDefCheck; + + +// MetaDataNotificationForTokenMovement +typedef enum CorNotificationForTokenMovement +{ + // default behavior is to notify TypeRef, MethodDef, MemberRef, and FieldDef token remaps + MDNotifyDefault = 0x0000000f, + MDNotifyAll = 0xffffffff, + MDNotifyNone = 0x00000000, + MDNotifyMethodDef = 0x00000001, + MDNotifyMemberRef = 0x00000002, + MDNotifyFieldDef = 0x00000004, + MDNotifyTypeRef = 0x00000008, + + MDNotifyTypeDef = 0x00000010, + MDNotifyParamDef = 0x00000020, + MDNotifyInterfaceImpl = 0x00000040, + MDNotifyProperty = 0x00000080, + MDNotifyEvent = 0x00000100, + MDNotifySignature = 0x00000200, + MDNotifyTypeSpec = 0x00000400, + MDNotifyCustomAttribute = 0x00000800, + MDNotifySecurityValue = 0x00001000, + MDNotifyPermission = 0x00002000, + MDNotifyModuleRef = 0x00004000, + + MDNotifyNameSpace = 0x00008000, + + MDNotifyAssemblyRef = 0x01000000, + MDNotifyFile = 0x02000000, + MDNotifyExportedType = 0x04000000, + MDNotifyResource = 0x08000000, +} CorNotificationForTokenMovement; + + +typedef enum CorSetENC +{ + MDSetENCOn = 0x00000001, // Deprecated name. + MDSetENCOff = 0x00000002, // Deprecated name. + + MDUpdateENC = 0x00000001, // ENC mode. Tokens don't move; can be updated. + MDUpdateFull = 0x00000002, // "Normal" update mode. + MDUpdateExtension = 0x00000003, // Extension mode. Tokens don't move, adds only. + MDUpdateIncremental = 0x00000004, // Incremental compilation + MDUpdateDelta = 0x00000005, // If ENC on, save only deltas. + MDUpdateMask = 0x00000007, + + +} CorSetENC; + +#define IsENCDelta(x) (((x) & MDUpdateMask) == MDUpdateDelta) + +// flags used in SetOption when pair with MetaDataErrorIfEmitOutOfOrder guid +typedef enum CorErrorIfEmitOutOfOrder +{ + MDErrorOutOfOrderDefault = 0x00000000, // default not to generate any error + MDErrorOutOfOrderNone = 0x00000000, // do not generate error for out of order emit + MDErrorOutOfOrderAll = 0xffffffff, // generate out of order emit for method, field, param, property, and event + MDMethodOutOfOrder = 0x00000001, // generate error when methods are emitted out of order + MDFieldOutOfOrder = 0x00000002, // generate error when fields are emitted out of order + MDParamOutOfOrder = 0x00000004, // generate error when params are emitted out of order + MDPropertyOutOfOrder = 0x00000008, // generate error when properties are emitted out of order + MDEventOutOfOrder = 0x00000010, // generate error when events are emitted out of order +} CorErrorIfEmitOutOfOrder; + + +// flags used in SetOption when pair with MetaDataImportOption guid +typedef enum CorImportOptions +{ + MDImportOptionDefault = 0x00000000, // default to skip over deleted records + MDImportOptionAll = 0xFFFFFFFF, // Enumerate everything + MDImportOptionAllTypeDefs = 0x00000001, // all of the typedefs including the deleted typedef + MDImportOptionAllMethodDefs = 0x00000002, // all of the methoddefs including the deleted ones + MDImportOptionAllFieldDefs = 0x00000004, // all of the fielddefs including the deleted ones + MDImportOptionAllProperties = 0x00000008, // all of the properties including the deleted ones + MDImportOptionAllEvents = 0x00000010, // all of the events including the deleted ones + MDImportOptionAllCustomAttributes = 0x00000020, // all of the custom attributes including the deleted ones + MDImportOptionAllExportedTypes = 0x00000040, // all of the ExportedTypes including the deleted ones + +} CorImportOptions; + + +// flags for MetaDataThreadSafetyOptions +typedef enum CorThreadSafetyOptions +{ + // default behavior is to have thread safety turn off. This means that MetaData APIs will not take reader/writer + // lock. Clients is responsible to make sure the properly thread synchornization when using MetaData APIs. + MDThreadSafetyDefault = 0x00000000, + MDThreadSafetyOff = 0x00000000, + MDThreadSafetyOn = 0x00000001, +} CorThreadSafetyOptions; + + +// flags for MetaDataLinkerOptions +typedef enum CorLinkerOptions +{ + // default behavior is not to keep private types + MDAssembly = 0x00000000, + MDNetModule = 0x00000001, +} CorLinkerOptions; + +// flags for MetaDataMergeOptions +typedef enum MergeFlags +{ + MergeFlagsNone = 0, + MergeManifest = 0x00000001, + DropMemberRefCAs = 0x00000002, + NoDupCheck = 0x00000004, + MergeExportedTypes = 0x00000008 +} MergeFlags; + + +// +// struct used to retrieve field offset +// used by GetClassLayout and SetClassLayout +// + +#ifndef _COR_FIELD_OFFSET_ +#define _COR_FIELD_OFFSET_ + +typedef struct COR_FIELD_OFFSET +{ + mdFieldDef ridOfField; + ULONG ulOffset; +} COR_FIELD_OFFSET; + +#endif + +typedef struct IMAGE_COR_FIXUPENTRY +{ + ULONG ulRVA; + ULONG Count; +} IMAGE_COR_FIXUPENTRY; + + +// +// Token tags. +// +typedef enum CorTokenType +{ + mdtModule = 0x00000000, // + mdtTypeRef = 0x01000000, // + mdtTypeDef = 0x02000000, // + mdtFieldDef = 0x04000000, // + mdtMethodDef = 0x06000000, // + mdtParamDef = 0x08000000, // + mdtInterfaceImpl = 0x09000000, // + mdtMemberRef = 0x0a000000, // + mdtCustomAttribute = 0x0c000000, // + mdtPermission = 0x0e000000, // + mdtSignature = 0x11000000, // + mdtEvent = 0x14000000, // + mdtProperty = 0x17000000, // + mdtModuleRef = 0x1a000000, // + mdtTypeSpec = 0x1b000000, // + mdtAssembly = 0x20000000, // + mdtAssemblyRef = 0x23000000, // + mdtFile = 0x26000000, // + mdtExportedType = 0x27000000, // + mdtManifestResource = 0x28000000, // + mdtGenericParam = 0x2a000000, // + mdtMethodSpec = 0x2b000000, // + mdtGenericParamConstraint = 0x2c000000, + + mdtString = 0x70000000, // + mdtName = 0x71000000, // + mdtBaseType = 0x72000000, // Leave this on the high end value. This does not correspond to metadata table +} CorTokenType; + +// +// Build / decompose tokens. +// +#define RidToToken(rid,tktype) ((rid) |= (tktype)) +#define TokenFromRid(rid,tktype) ((rid) | (tktype)) +#define RidFromToken(tk) ((RID) ((tk) & 0x00ffffff)) +#define TypeFromToken(tk) ((ULONG32)((tk) & 0xff000000)) +#define IsNilToken(tk) ((RidFromToken(tk)) == 0) + +// +// Nil tokens +// +#define mdTokenNil ((mdToken)0) +#define mdModuleNil ((mdModule)mdtModule) +#define mdTypeRefNil ((mdTypeRef)mdtTypeRef) +#define mdTypeDefNil ((mdTypeDef)mdtTypeDef) +#define mdFieldDefNil ((mdFieldDef)mdtFieldDef) +#define mdMethodDefNil ((mdMethodDef)mdtMethodDef) +#define mdParamDefNil ((mdParamDef)mdtParamDef) +#define mdInterfaceImplNil ((mdInterfaceImpl)mdtInterfaceImpl) +#define mdMemberRefNil ((mdMemberRef)mdtMemberRef) +#define mdCustomAttributeNil ((mdCustomAttribute)mdtCustomAttribute) +#define mdPermissionNil ((mdPermission)mdtPermission) +#define mdSignatureNil ((mdSignature)mdtSignature) +#define mdEventNil ((mdEvent)mdtEvent) +#define mdPropertyNil ((mdProperty)mdtProperty) +#define mdModuleRefNil ((mdModuleRef)mdtModuleRef) +#define mdTypeSpecNil ((mdTypeSpec)mdtTypeSpec) +#define mdAssemblyNil ((mdAssembly)mdtAssembly) +#define mdAssemblyRefNil ((mdAssemblyRef)mdtAssemblyRef) +#define mdFileNil ((mdFile)mdtFile) +#define mdExportedTypeNil ((mdExportedType)mdtExportedType) +#define mdManifestResourceNil ((mdManifestResource)mdtManifestResource) + +#define mdGenericParamNil ((mdGenericParam)mdtGenericParam) +#define mdGenericParamConstraintNil ((mdGenericParamConstraint)mdtGenericParamConstraint) +#define mdMethodSpecNil ((mdMethodSpec)mdtMethodSpec) + +#define mdStringNil ((mdString)mdtString) + +// +// Open bits. +// +typedef enum CorOpenFlags +{ + ofRead = 0x00000000, // Open scope for read + ofWrite = 0x00000001, // Open scope for write. + ofReadWriteMask = 0x00000001, // Mask for read/write bit. + + ofCopyMemory = 0x00000002, // Open scope with memory. Ask metadata to maintain its own copy of memory. + + ofManifestMetadata = 0x00000008, // Open scope on ngen image, return the manifest metadata instead of the IL metadata + ofReadOnly = 0x00000010, // Open scope for read. Will be unable to QI for a IMetadataEmit* interface + ofTakeOwnership = 0x00000020, // The memory was allocated with CoTaskMemAlloc and will be freed by the metadata + + // These are obsolete and are ignored. + ofCacheImage = 0x00000004, // EE maps but does not do relocations or verify image + ofNoTypeLib = 0x00000080, // Don't OpenScope on a typelib. + + // Internal bits + ofReserved1 = 0x00000100, // Reserved for internal use. + ofReserved2 = 0x00000200, // Reserved for internal use. + ofReserved = 0xffffff40 // All the reserved bits. + +} CorOpenFlags; + +#define IsOfRead(x) (((x) & ofReadWriteMask) == ofRead) +#define IsOfReadWrite(x) (((x) & ofReadWriteMask) == ofWrite) + +#define IsOfCopyMemory(x) ((x) & ofCopyMemory) +#define IsOfManifestMetadata(x) ((x) & ofManifestMetadata) + +#define IsOfReadOnly(x) ((x) & ofReadOnly) +#define IsOfTakeOwnership(x) ((x) & ofTakeOwnership) + +#define IsOfReserved(x) (((x) & ofReserved) != 0) + +typedef CorTypeAttr CorRegTypeAttr; + +// +// Opaque type for an enumeration handle. +// +typedef void *HCORENUM; + + +// Note that this must be kept in sync with System.AttributeTargets. +typedef enum CorAttributeTargets +{ + catAssembly = 0x0001, + catModule = 0x0002, + catClass = 0x0004, + catStruct = 0x0008, + catEnum = 0x0010, + catConstructor = 0x0020, + catMethod = 0x0040, + catProperty = 0x0080, + catField = 0x0100, + catEvent = 0x0200, + catInterface = 0x0400, + catParameter = 0x0800, + catDelegate = 0x1000, + catGenericParameter = 0x4000, + + catAll = catAssembly | catModule | catClass | catStruct | catEnum | catConstructor | + catMethod | catProperty | catField | catEvent | catInterface | catParameter | catDelegate | catGenericParameter, + catClassMembers = catClass | catStruct | catEnum | catConstructor | catMethod | catProperty | catField | catEvent | catDelegate | catInterface, + +} CorAttributeTargets; + +#ifndef MACROS_NOT_SUPPORTED +// +// Some well-known custom attributes +// +#ifndef IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS + #define IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS (IMAGE_CEE_CS_CALLCONV_DEFAULT | IMAGE_CEE_CS_CALLCONV_HASTHIS) +#endif + +#define INTEROP_DISPID_TYPE_W L"System.Runtime.InteropServices.DispIdAttribute" +#define INTEROP_DISPID_TYPE "System.Runtime.InteropServices.DispIdAttribute" +#define INTEROP_DISPID_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I4} + +#define INTEROP_INTERFACETYPE_TYPE_W L"System.Runtime.InteropServices.InterfaceTypeAttribute" +#define INTEROP_INTERFACETYPE_TYPE "System.Runtime.InteropServices.InterfaceTypeAttribute" +#define INTEROP_INTERFACETYPE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2} + +#define INTEROP_CLASSINTERFACE_TYPE_W L"System.Runtime.InteropServices.ClassInterfaceAttribute" +#define INTEROP_CLASSINTERFACE_TYPE "System.Runtime.InteropServices.ClassInterfaceAttribute" +#define INTEROP_CLASSINTERFACE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2} + +#define INTEROP_COMVISIBLE_TYPE_W L"System.Runtime.InteropServices.ComVisibleAttribute" +#define INTEROP_COMVISIBLE_TYPE "System.Runtime.InteropServices.ComVisibleAttribute" +#define INTEROP_COMVISIBLE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_BOOLEAN} + +#define INTEROP_COMREGISTERFUNCTION_TYPE_W L"System.Runtime.InteropServices.ComRegisterFunctionAttribute" +#define INTEROP_COMREGISTERFUNCTION_TYPE "System.Runtime.InteropServices.ComRegisterFunctionAttribute" +#define INTEROP_COMREGISTERFUNCTION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} + +#define INTEROP_COMUNREGISTERFUNCTION_TYPE_W L"System.Runtime.InteropServices.ComUnregisterFunctionAttribute" +#define INTEROP_COMUNREGISTERFUNCTION_TYPE "System.Runtime.InteropServices.ComUnregisterFunctionAttribute" +#define INTEROP_COMUNREGISTERFUNCTION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} + +#define INTEROP_IMPORTEDFROMTYPELIB_TYPE_W L"System.Runtime.InteropServices.ImportedFromTypeLibAttribute" +#define INTEROP_IMPORTEDFROMTYPELIB_TYPE "System.Runtime.InteropServices.ImportedFromTypeLibAttribute" +#define INTEROP_IMPORTEDFROMTYPELIB_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING} + +#define INTEROP_IDISPATCHIMPL_TYPE_W L"System.Runtime.InteropServices.IDispatchImplAttribute" +#define INTEROP_IDISPATCHIMPL_TYPE "System.Runtime.InteropServices.IDispatchImplAttribute" +#define INTEROP_IDISPATCHIMPL_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2} + +#define INTEROP_COMSOURCEINTERFACES_TYPE_W L"System.Runtime.InteropServices.ComSourceInterfacesAttribute" +#define INTEROP_COMSOURCEINTERFACES_TYPE "System.Runtime.InteropServices.ComSourceInterfacesAttribute" +#define INTEROP_COMSOURCEINTERFACES_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING} + +#define INTEROP_COMDEFAULTINTERFACE_TYPE_W L"System.Runtime.InteropServices.ComDefaultInterfaceAttribute" +#define INTEROP_COMDEFAULTINTERFACE_TYPE "System.Runtime.InteropServices.ComDefaultInterfaceAttribute" + +#define INTEROP_COMCONVERSIONLOSS_TYPE_W L"System.Runtime.InteropServices.ComConversionLossAttribute" +#define INTEROP_COMCONVERSIONLOSS_TYPE "System.Runtime.InteropServices.ComConversionLossAttribute" +#define INTEROP_COMCONVERSIONLOSS_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} + +#define INTEROP_BESTFITMAPPING_TYPE_W L"System.Runtime.InteropServices.BestFitMappingAttribute" +#define INTEROP_BESTFITMAPPING_TYPE "System.Runtime.InteropServices.BestFitMappingAttribute" +#define INTEROP_BESTFITMAPPING_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 2, ELEMENT_TYPE_VOID, ELEMENT_TYPE_BOOLEAN, ELEMENT_TYPE_BOOLEAN} + +#define INTEROP_TYPELIBTYPE_TYPE_W L"System.Runtime.InteropServices.TypeLibTypeAttribute" +#define INTEROP_TYPELIBTYPE_TYPE "System.Runtime.InteropServices.TypeLibTypeAttribute" +#define INTEROP_TYPELIBTYPE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2} + +#define INTEROP_TYPELIBFUNC_TYPE_W L"System.Runtime.InteropServices.TypeLibFuncAttribute" +#define INTEROP_TYPELIBFUNC_TYPE "System.Runtime.InteropServices.TypeLibFuncAttribute" +#define INTEROP_TYPELIBFUNC_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2} + +#define INTEROP_TYPELIBVAR_TYPE_W L"System.Runtime.InteropServices.TypeLibVarAttribute" +#define INTEROP_TYPELIBVAR_TYPE "System.Runtime.InteropServices.TypeLibVarAttribute" +#define INTEROP_TYPELIBVAR_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2} + +#define INTEROP_MARSHALAS_TYPE_W L"System.Runtime.InteropServices.MarshalAsAttribute" +#define INTEROP_MARSHALAS_TYPE "System.Runtime.InteropServices.MarshalAsAttribute" +#define INTEROP_MARSHALAS_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2} + +#define INTEROP_COMIMPORT_TYPE_W L"System.Runtime.InteropServices.ComImportAttribute" +#define INTEROP_COMIMPORT_TYPE "System.Runtime.InteropServices.ComImportAttribute" +#define INTEROP_COMIMPORT_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} + +#define INTEROP_GUID_TYPE_W L"System.Runtime.InteropServices.GuidAttribute" +#define INTEROP_GUID_TYPE "System.Runtime.InteropServices.GuidAttribute" +#define INTEROP_GUID_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING} + +#define INTEROP_DEFAULTMEMBER_TYPE_W L"System.Reflection.DefaultMemberAttribute" +#define INTEROP_DEFAULTMEMBER_TYPE "System.Reflection.DefaultMemberAttribute" +#define INTEROP_DEFAULTMEMBER_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING} + +#define INTEROP_COMEMULATE_TYPE_W L"System.Runtime.InteropServices.ComEmulateAttribute" +#define INTEROP_COMEMULATE_TYPE "System.Runtime.InteropServices.ComEmulateAttribute" +#define INTEROP_COMEMULATE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING} + +#define INTEROP_PRESERVESIG_TYPE_W L"System.Runtime.InteropServices.PreserveSigAttribure" +#define INTEROP_PRESERVESIG_TYPE "System.Runtime.InteropServices.PreserveSigAttribure" +#define INTEROP_PRESERVESIG_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_BOOLEAN} + +#define INTEROP_IN_TYPE_W L"System.Runtime.InteropServices.InAttribute" +#define INTEROP_IN_TYPE "System.Runtime.InteropServices.InAttribute" +#define INTEROP_IN_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} + +#define INTEROP_OUT_TYPE_W L"System.Runtime.InteropServices.OutAttribute" +#define INTEROP_OUT_TYPE "System.Runtime.InteropServices.OutAttribute" +#define INTEROP_OUT_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} + +#define INTEROP_COMALIASNAME_TYPE_W L"System.Runtime.InteropServices.ComAliasNameAttribute" +#define INTEROP_COMALIASNAME_TYPE "System.Runtime.InteropServices.ComAliasNameAttribute" +#define INTEROP_COMALIASNAME_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING} + +#define INTEROP_PARAMARRAY_TYPE_W L"System.ParamArrayAttribute" +#define INTEROP_PARAMARRAY_TYPE "System.ParamArrayAttribute" +#define INTEROP_PARAMARRAY_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} + +#define INTEROP_LCIDCONVERSION_TYPE_W L"System.Runtime.InteropServices.LCIDConversionAttribute" +#define INTEROP_LCIDCONVERSION_TYPE "System.Runtime.InteropServices.LCIDConversionAttribute" +#define INTEROP_LCIDCONVERSION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I4} + +#define INTEROP_COMSUBSTITUTABLEINTERFACE_TYPE_W L"System.Runtime.InteropServices.ComSubstitutableInterfaceAttribute" +#define INTEROP_COMSUBSTITUTABLEINTERFACE_TYPE "System.Runtime.InteropServices.ComSubstitutableInterfaceAttribute" +#define INTEROP_COMSUBSTITUTABLEINTERFACE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} + +#define INTEROP_DECIMALVALUE_TYPE_W L"System.Runtime.CompilerServices.DecimalConstantAttribute" +#define INTEROP_DECIMALVALUE_TYPE "System.Runtime.CompilerServices.DecimalConstantAttribute" +#define INTEROP_DECIMALVALUE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 5, ELEMENT_TYPE_VOID, ELEMENT_TYPE_U1, ELEMENT_TYPE_U1, ELEMENT_TYPE_U4, ELEMENT_TYPE_U4, ELEMENT_TYPE_U4} + +#define INTEROP_DATETIMEVALUE_TYPE_W L"System.Runtime.CompilerServices.DateTimeConstantAttribute" +#define INTEROP_DATETIMEVALUE_TYPE "System.Runtime.CompilerServices.DateTimeConstantAttribute" +#define INTEROP_DATETIMEVALUE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I8} + +#define INTEROP_IUNKNOWNVALUE_TYPE_W L"System.Runtime.CompilerServices.IUnknownConstantAttribute" +#define INTEROP_IUNKNOWNVALUE_TYPE "System.Runtime.CompilerServices.IUnknownConstantAttribute" +#define INTEROP_IUNKNOWNVALUE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} + +#define INTEROP_IDISPATCHVALUE_TYPE_W L"System.Runtime.CompilerServices.IDispatchConstantAttribute" +#define INTEROP_IDISPATCHVALUE_TYPE "System.Runtime.CompilerServices.IDispatchConstantAttribute" +#define INTEROP_IDISPATCHVALUE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} + +#define INTEROP_AUTOPROXY_TYPE_W L"System.Runtime.InteropServices.AutomationProxyAttribute" +#define INTEROP_AUTOPROXY_TYPE "System.Runtime.InteropServices.AutomationProxyAttribute" +#define INTEROP_AUTOPROXY_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_BOOLEAN} + +#define INTEROP_TYPELIBIMPORTCLASS_TYPE_W L"System.Runtime.InteropServices.TypeLibImportClassAttribute" +#define INTEROP_TYPELIBIMPORTCLASS_TYPE "System.Runtime.InteropServices.TypeLibImportClassAttribute" + + +#define INTEROP_TYPELIBVERSION_TYPE_W L"System.Runtime.InteropServices.TypeLibVersionAttribute" +#define INTEROP_TYPELIBVERSION_TYPE "System.Runtime.InteropServices.TypeLibVersionAttribute" +#define INTEROP_TYPELIBVERSION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 2, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2, ELEMENT_TYPE_I2} + +#define INTEROP_COMCOMPATIBLEVERSION_TYPE_W L"System.Runtime.InteropServices.ComCompatibleVersionAttribute" +#define INTEROP_COMCOMPATIBLEVERSION_TYPE "System.Runtime.InteropServices.ComCompatibleVersionAttribute" +#define INTEROP_COMCOMPATIBLEVERSION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 4, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2, ELEMENT_TYPE_I2, ELEMENT_TYPE_I2, ELEMENT_TYPE_I2} + +#define INTEROP_COMEVENTINTERFACE_TYPE_W L"System.Runtime.InteropServices.ComEventInterfaceAttribute" +#define INTEROP_COMEVENTINTERFACE_TYPE "System.Runtime.InteropServices.ComEventInterfaceAttribute" + +#define INTEROP_COCLASS_TYPE_W L"System.Runtime.InteropServices.CoClassAttribute" +#define INTEROP_COCLASS_TYPE "System.Runtime.InteropServices.CoClassAttribute" + +#define INTEROP_SERIALIZABLE_TYPE_W L"System.SerializableAttribute" +#define INTEROP_SERIALIZABLE_TYPE "System.SerializableAttribute" +#define INTEROP_SERIALIZABLE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} + +#define INTEROP_SETWIN32CONTEXTINIDISPATCHATTRIBUTE_TYPE_W L"System.Runtime.InteropServices.SetWin32ContextInIDispatchAttribute" +#define INTEROP_SETWIN32CONTEXTINIDISPATCHATTRIBUTE_TYPE "System.Runtime.InteropServices.SetWin32ContextInIDispatchAttribute" +#define INTEROP_SETWIN32CONTEXTINIDISPATCHATTRIBUTE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} + +#define FRIEND_ASSEMBLY_TYPE_W L"System.Runtime.CompilerServices.InternalsVisibleToAttribute" +#define FRIEND_ASSEMBLY_TYPE "System.Runtime.CompilerServices.InternalsVisibleToAttribute" +#define FRIEND_ASSEMBLY_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING} + +#define DEFAULTDOMAIN_STA_TYPE_W L"System.STAThreadAttribute" +#define DEFAULTDOMAIN_STA_TYPE "System.STAThreadAttribute" +#define DEFAULTDOMAIN_STA_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} + +#define DEFAULTDOMAIN_MTA_TYPE_W L"System.MTAThreadAttribute" +#define DEFAULTDOMAIN_MTA_TYPE "System.MTAThreadAttribute" +#define DEFAULTDOMAIN_MTA_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID} + +#define DEFAULTDOMAIN_LOADEROPTIMIZATION_TYPE_W L"System.LoaderOptimizationAttribute" +#define DEFAULTDOMAIN_LOADEROPTIMIZATION_TYPE "System.LoaderOptimizationAttribute" +#define DEFAULTDOMAIN_LOADEROPTIMIZATION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I1} + + +// Keep in sync with CompilationRelaxations.cs +typedef enum CompilationRelaxationsEnum +{ + CompilationRelaxations_NoStringInterning = 0x0008, + +} CompilationRelaxationEnum; + +#define COMPILATIONRELAXATIONS_TYPE_W L"System.Runtime.CompilerServices.CompilationRelaxationsAttribute" +#define COMPILATIONRELAXATIONS_TYPE "System.Runtime.CompilerServices.CompilationRelaxationsAttribute" + + +// Keep in sync with RuntimeCompatibilityAttribute.cs +#define RUNTIMECOMPATIBILITY_TYPE_W L"System.Runtime.CompilerServices.RuntimeCompatibilityAttribute" +#define RUNTIMECOMPATIBILITY_TYPE "System.Runtime.CompilerServices.RuntimeCompatibilityAttribute" + + +// Keep in sync with AssemblySettingAttributes.cs + +typedef enum NGenHintEnum +{ + NGenDefault = 0x0000, // No preference specified + + NGenEager = 0x0001, // NGen at install time + NGenLazy = 0x0002, // NGen after install time + NGenNever = 0x0003 // Assembly should not be ngened +} NGenHintEnum; + +typedef enum LoadHintEnum +{ + LoadDefault = 0x0000, // No preference specified + + LoadAlways = 0x0001, // Dependency is always loaded + LoadSometimes = 0x0002, // Dependency is sometimes loaded + LoadNever = 0x0003 // Dependency is never loaded +} LoadHintEnum; + +#define NGEN_TYPE_W L"System.Runtime.CompilerServices.NGenAttribute" +#define NGEN_TYPE "System.Runtime.CompilerServices.NGenAttribute" + +#define DEFAULTDEPENDENCY_TYPE_W L"System.Runtime.CompilerServices.DefaultDependencyAttribute" +#define DEFAULTDEPENDENCY_TYPE "System.Runtime.CompilerServices.DefaultDependencyAttribute" + +#define DEPENDENCY_TYPE_W L"System.Runtime.CompilerServices.DependencyAttribute" +#define DEPENDENCY_TYPE "System.Runtime.CompilerServices.DependencyAttribute" + + +#define CMOD_CALLCONV_NAMESPACE_OLD "System.Runtime.InteropServices" +#define CMOD_CALLCONV_NAMESPACE "System.Runtime.CompilerServices" +#define CMOD_CALLCONV_NAME_CDECL "CallConvCdecl" +#define CMOD_CALLCONV_NAME_STDCALL "CallConvStdcall" +#define CMOD_CALLCONV_NAME_THISCALL "CallConvThiscall" +#define CMOD_CALLCONV_NAME_FASTCALL "CallConvFastcall" + +#endif // MACROS_NOT_SUPPORTED + +// +// GetSaveSize accuracy +// +#ifndef _CORSAVESIZE_DEFINED_ +#define _CORSAVESIZE_DEFINED_ +typedef enum CorSaveSize +{ + cssAccurate = 0x0000, // Find exact save size, accurate but slower. + cssQuick = 0x0001, // Estimate save size, may pad estimate, but faster. + cssDiscardTransientCAs = 0x0002, // remove all of the CAs of discardable types +} CorSaveSize; +#endif + +#define COR_IS_METHOD_MANAGED_IL(flags) ((flags & 0xf) == (miIL | miManaged)) +#define COR_IS_METHOD_MANAGED_OPTIL(flags) ((flags & 0xf) == (miOPTIL | miManaged)) +#define COR_IS_METHOD_MANAGED_NATIVE(flags) ((flags & 0xf) == (miNative | miManaged)) +#define COR_IS_METHOD_UNMANAGED_NATIVE(flags) ((flags & 0xf) == (miNative | miUnmanaged)) + +// +// Enum used with NATIVE_TYPE_ARRAY. +// +typedef enum NativeTypeArrayFlags +{ + ntaSizeParamIndexSpecified = 0x0001, + ntaReserved = 0xfffe // All the reserved bits. +} NativeTypeArrayFlags; + +// +// Opaque types for security properties and values. +// +typedef void * PSECURITY_PROPS ; +typedef void * PSECURITY_VALUE ; +typedef void ** PPSECURITY_PROPS ; +typedef void ** PPSECURITY_VALUE ; + +//------------------------------------- +//--- Security data structures +//------------------------------------- + +// Descriptor for a single security custom attribute. +typedef struct COR_SECATTR { + mdMemberRef tkCtor; // Ref to constructor of security attribute. + const void *pCustomAttribute; // Blob describing ctor args and field/property values. + ULONG cbCustomAttribute; // Length of the above blob. +} COR_SECATTR; + +#endif // __CORHDR_H__ + diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/gchost.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/gchost.h new file mode 100644 index 0000000..8b34b07 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/gchost.h @@ -0,0 +1,291 @@ +// +// Copyright (C) Microsoft. All rights reserved. +// + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 6.00.0366 */ +//@@MIDL_FILE_HEADING( ) + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __gchost_h__ +#define __gchost_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IGCHost_FWD_DEFINED__ +#define __IGCHost_FWD_DEFINED__ +typedef interface IGCHost IGCHost; +#endif /* __IGCHost_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_gchost_0000 */ +/* [local] */ + +typedef /* [public] */ +enum __MIDL___MIDL_itf_gchost_0000_0001 + { COR_GC_COUNTS = 0x1, + COR_GC_MEMORYUSAGE = 0x2 + } COR_GC_STAT_TYPES; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_gchost_0000_0002 + { COR_GC_THREAD_HAS_PROMOTED_BYTES = 0x1 + } COR_GC_THREAD_STATS_TYPES; + +typedef struct _COR_GC_STATS + { + ULONG Flags; + SIZE_T ExplicitGCCount; + SIZE_T GenCollectionsTaken[ 3 ]; + SIZE_T CommittedKBytes; + SIZE_T ReservedKBytes; + SIZE_T Gen0HeapSizeKBytes; + SIZE_T Gen1HeapSizeKBytes; + SIZE_T Gen2HeapSizeKBytes; + SIZE_T LargeObjectHeapSizeKBytes; + SIZE_T KBytesPromotedFromGen0; + SIZE_T KBytesPromotedFromGen1; + } COR_GC_STATS; + +typedef struct _COR_GC_THREAD_STATS + { + ULONGLONG PerThreadAllocation; + ULONG Flags; + } COR_GC_THREAD_STATS; + + + +extern RPC_IF_HANDLE __MIDL_itf_gchost_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_gchost_0000_v0_0_s_ifspec; + +#ifndef __IGCHost_INTERFACE_DEFINED__ +#define __IGCHost_INTERFACE_DEFINED__ + +/* interface IGCHost */ +/* [local][unique][uuid][object] */ + + +EXTERN_C const IID IID_IGCHost; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("FAC34F6E-0DCD-47b5-8021-531BC5ECCA63") + IGCHost : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetGCStartupLimits( + /* [in] */ DWORD SegmentSize, + /* [in] */ DWORD MaxGen0Size) = 0; + + virtual HRESULT STDMETHODCALLTYPE Collect( + /* [in] */ LONG Generation) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStats( + /* [out][in] */ COR_GC_STATS *pStats) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetThreadStats( + /* [in] */ DWORD *pFiberCookie, + /* [out][in] */ COR_GC_THREAD_STATS *pStats) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetVirtualMemLimit( + /* [in] */ SIZE_T sztMaxVirtualMemMB) = 0; + + }; + +#else /* C style interface */ + + typedef struct IGCHostVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IGCHost * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IGCHost * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IGCHost * This); + + HRESULT ( STDMETHODCALLTYPE *SetGCStartupLimits )( + IGCHost * This, + /* [in] */ DWORD SegmentSize, + /* [in] */ DWORD MaxGen0Size); + + HRESULT ( STDMETHODCALLTYPE *Collect )( + IGCHost * This, + /* [in] */ LONG Generation); + + HRESULT ( STDMETHODCALLTYPE *GetStats )( + IGCHost * This, + /* [out][in] */ COR_GC_STATS *pStats); + + HRESULT ( STDMETHODCALLTYPE *GetThreadStats )( + IGCHost * This, + /* [in] */ DWORD *pFiberCookie, + /* [out][in] */ COR_GC_THREAD_STATS *pStats); + + HRESULT ( STDMETHODCALLTYPE *SetVirtualMemLimit )( + IGCHost * This, + /* [in] */ SIZE_T sztMaxVirtualMemMB); + + END_INTERFACE + } IGCHostVtbl; + + interface IGCHost + { + CONST_VTBL struct IGCHostVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IGCHost_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IGCHost_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IGCHost_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IGCHost_SetGCStartupLimits(This,SegmentSize,MaxGen0Size) \ + (This)->lpVtbl -> SetGCStartupLimits(This,SegmentSize,MaxGen0Size) + +#define IGCHost_Collect(This,Generation) \ + (This)->lpVtbl -> Collect(This,Generation) + +#define IGCHost_GetStats(This,pStats) \ + (This)->lpVtbl -> GetStats(This,pStats) + +#define IGCHost_GetThreadStats(This,pFiberCookie,pStats) \ + (This)->lpVtbl -> GetThreadStats(This,pFiberCookie,pStats) + +#define IGCHost_SetVirtualMemLimit(This,sztMaxVirtualMemMB) \ + (This)->lpVtbl -> SetVirtualMemLimit(This,sztMaxVirtualMemMB) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IGCHost_SetGCStartupLimits_Proxy( + IGCHost * This, + /* [in] */ DWORD SegmentSize, + /* [in] */ DWORD MaxGen0Size); + + +void __RPC_STUB IGCHost_SetGCStartupLimits_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IGCHost_Collect_Proxy( + IGCHost * This, + /* [in] */ LONG Generation); + + +void __RPC_STUB IGCHost_Collect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IGCHost_GetStats_Proxy( + IGCHost * This, + /* [out][in] */ COR_GC_STATS *pStats); + + +void __RPC_STUB IGCHost_GetStats_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IGCHost_GetThreadStats_Proxy( + IGCHost * This, + /* [in] */ DWORD *pFiberCookie, + /* [out][in] */ COR_GC_THREAD_STATS *pStats); + + +void __RPC_STUB IGCHost_GetThreadStats_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IGCHost_SetVirtualMemLimit_Proxy( + IGCHost * This, + /* [in] */ SIZE_T sztMaxVirtualMemMB); + + +void __RPC_STUB IGCHost_SetVirtualMemLimit_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IGCHost_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/ivalidator.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/ivalidator.h new file mode 100644 index 0000000..466eef7 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/ivalidator.h @@ -0,0 +1,386 @@ +// +// Copyright (C) Microsoft. All rights reserved. +// + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 6.00.0366 */ +//@@MIDL_FILE_HEADING( ) + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __ivalidator_h__ +#define __ivalidator_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IValidator_FWD_DEFINED__ +#define __IValidator_FWD_DEFINED__ +typedef interface IValidator IValidator; +#endif /* __IValidator_FWD_DEFINED__ */ + + +#ifndef __ICLRValidator_FWD_DEFINED__ +#define __ICLRValidator_FWD_DEFINED__ +typedef interface ICLRValidator ICLRValidator; +#endif /* __ICLRValidator_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "ivehandler.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_ivalidator_0000 */ +/* [local] */ + + + + +enum ValidatorFlags + { VALIDATOR_EXTRA_VERBOSE = 0x1, + VALIDATOR_SHOW_SOURCE_LINES = 0x2, + VALIDATOR_CHECK_ILONLY = 0x4, + VALIDATOR_CHECK_PEFORMAT_ONLY = 0x8, + VALIDATOR_NOCHECK_PEFORMAT = 0x10 + } ; + + +extern RPC_IF_HANDLE __MIDL_itf_ivalidator_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_ivalidator_0000_v0_0_s_ifspec; + +#ifndef __IValidator_INTERFACE_DEFINED__ +#define __IValidator_INTERFACE_DEFINED__ + +/* interface IValidator */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IValidator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("63DF8730-DC81-4062-84A2-1FF943F59FAC") + IValidator : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Validate( + /* [in] */ IVEHandler *veh, + /* [in] */ IUnknown *pAppDomain, + /* [in] */ unsigned long ulFlags, + /* [in] */ unsigned long ulMaxError, + /* [in] */ unsigned long token, + /* [in] */ LPWSTR fileName, + /* [size_is][in] */ BYTE *pe, + /* [in] */ unsigned long ulSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE FormatEventInfo( + /* [in] */ HRESULT hVECode, + /* [in] */ VEContext Context, + /* [out][in] */ LPWSTR msg, + /* [in] */ unsigned long ulMaxLength, + /* [in] */ SAFEARRAY * psa) = 0; + + }; + +#else /* C style interface */ + + typedef struct IValidatorVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IValidator * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IValidator * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IValidator * This); + + HRESULT ( STDMETHODCALLTYPE *Validate )( + IValidator * This, + /* [in] */ IVEHandler *veh, + /* [in] */ IUnknown *pAppDomain, + /* [in] */ unsigned long ulFlags, + /* [in] */ unsigned long ulMaxError, + /* [in] */ unsigned long token, + /* [in] */ LPWSTR fileName, + /* [size_is][in] */ BYTE *pe, + /* [in] */ unsigned long ulSize); + + HRESULT ( STDMETHODCALLTYPE *FormatEventInfo )( + IValidator * This, + /* [in] */ HRESULT hVECode, + /* [in] */ VEContext Context, + /* [out][in] */ LPWSTR msg, + /* [in] */ unsigned long ulMaxLength, + /* [in] */ SAFEARRAY * psa); + + END_INTERFACE + } IValidatorVtbl; + + interface IValidator + { + CONST_VTBL struct IValidatorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IValidator_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IValidator_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IValidator_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IValidator_Validate(This,veh,pAppDomain,ulFlags,ulMaxError,token,fileName,pe,ulSize) \ + (This)->lpVtbl -> Validate(This,veh,pAppDomain,ulFlags,ulMaxError,token,fileName,pe,ulSize) + +#define IValidator_FormatEventInfo(This,hVECode,Context,msg,ulMaxLength,psa) \ + (This)->lpVtbl -> FormatEventInfo(This,hVECode,Context,msg,ulMaxLength,psa) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IValidator_Validate_Proxy( + IValidator * This, + /* [in] */ IVEHandler *veh, + /* [in] */ IUnknown *pAppDomain, + /* [in] */ unsigned long ulFlags, + /* [in] */ unsigned long ulMaxError, + /* [in] */ unsigned long token, + /* [in] */ LPWSTR fileName, + /* [size_is][in] */ BYTE *pe, + /* [in] */ unsigned long ulSize); + + +void __RPC_STUB IValidator_Validate_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IValidator_FormatEventInfo_Proxy( + IValidator * This, + /* [in] */ HRESULT hVECode, + /* [in] */ VEContext Context, + /* [out][in] */ LPWSTR msg, + /* [in] */ unsigned long ulMaxLength, + /* [in] */ SAFEARRAY * psa); + + +void __RPC_STUB IValidator_FormatEventInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IValidator_INTERFACE_DEFINED__ */ + + +#ifndef __ICLRValidator_INTERFACE_DEFINED__ +#define __ICLRValidator_INTERFACE_DEFINED__ + +/* interface ICLRValidator */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_ICLRValidator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("63DF8730-DC81-4062-84A2-1FF943F59FDD") + ICLRValidator : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Validate( + /* [in] */ IVEHandler *veh, + /* [in] */ unsigned long ulAppDomainId, + /* [in] */ unsigned long ulFlags, + /* [in] */ unsigned long ulMaxError, + /* [in] */ unsigned long token, + /* [in] */ LPWSTR fileName, + /* [size_is][in] */ BYTE *pe, + /* [in] */ unsigned long ulSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE FormatEventInfo( + /* [in] */ HRESULT hVECode, + /* [in] */ VEContext Context, + /* [out][in] */ LPWSTR msg, + /* [in] */ unsigned long ulMaxLength, + /* [in] */ SAFEARRAY * psa) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRValidatorVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRValidator * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRValidator * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRValidator * This); + + HRESULT ( STDMETHODCALLTYPE *Validate )( + ICLRValidator * This, + /* [in] */ IVEHandler *veh, + /* [in] */ unsigned long ulAppDomainId, + /* [in] */ unsigned long ulFlags, + /* [in] */ unsigned long ulMaxError, + /* [in] */ unsigned long token, + /* [in] */ LPWSTR fileName, + /* [size_is][in] */ BYTE *pe, + /* [in] */ unsigned long ulSize); + + HRESULT ( STDMETHODCALLTYPE *FormatEventInfo )( + ICLRValidator * This, + /* [in] */ HRESULT hVECode, + /* [in] */ VEContext Context, + /* [out][in] */ LPWSTR msg, + /* [in] */ unsigned long ulMaxLength, + /* [in] */ SAFEARRAY * psa); + + END_INTERFACE + } ICLRValidatorVtbl; + + interface ICLRValidator + { + CONST_VTBL struct ICLRValidatorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRValidator_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRValidator_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRValidator_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRValidator_Validate(This,veh,ulAppDomainId,ulFlags,ulMaxError,token,fileName,pe,ulSize) \ + (This)->lpVtbl -> Validate(This,veh,ulAppDomainId,ulFlags,ulMaxError,token,fileName,pe,ulSize) + +#define ICLRValidator_FormatEventInfo(This,hVECode,Context,msg,ulMaxLength,psa) \ + (This)->lpVtbl -> FormatEventInfo(This,hVECode,Context,msg,ulMaxLength,psa) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRValidator_Validate_Proxy( + ICLRValidator * This, + /* [in] */ IVEHandler *veh, + /* [in] */ unsigned long ulAppDomainId, + /* [in] */ unsigned long ulFlags, + /* [in] */ unsigned long ulMaxError, + /* [in] */ unsigned long token, + /* [in] */ LPWSTR fileName, + /* [size_is][in] */ BYTE *pe, + /* [in] */ unsigned long ulSize); + + +void __RPC_STUB ICLRValidator_Validate_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRValidator_FormatEventInfo_Proxy( + ICLRValidator * This, + /* [in] */ HRESULT hVECode, + /* [in] */ VEContext Context, + /* [out][in] */ LPWSTR msg, + /* [in] */ unsigned long ulMaxLength, + /* [in] */ SAFEARRAY * psa); + + +void __RPC_STUB ICLRValidator_FormatEventInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRValidator_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +unsigned long __RPC_USER LPSAFEARRAY_UserSize( unsigned long *, unsigned long , LPSAFEARRAY * ); +unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal( unsigned long *, unsigned char *, LPSAFEARRAY * ); +unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(unsigned long *, unsigned char *, LPSAFEARRAY * ); +void __RPC_USER LPSAFEARRAY_UserFree( unsigned long *, LPSAFEARRAY * ); + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/ivehandler.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/ivehandler.h new file mode 100644 index 0000000..50035a9 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/ivehandler.h @@ -0,0 +1,244 @@ +// +// Copyright (C) Microsoft. All rights reserved. +// + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 6.00.0366 */ +//@@MIDL_FILE_HEADING( ) + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __ivehandler_h__ +#define __ivehandler_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __VEHandlerClass_FWD_DEFINED__ +#define __VEHandlerClass_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class VEHandlerClass VEHandlerClass; +#else +typedef struct VEHandlerClass VEHandlerClass; +#endif /* __cplusplus */ + +#endif /* __VEHandlerClass_FWD_DEFINED__ */ + + +#ifndef __IVEHandler_FWD_DEFINED__ +#define __IVEHandler_FWD_DEFINED__ +typedef interface IVEHandler IVEHandler; +#endif /* __IVEHandler_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_ivehandler_0000 */ +/* [local] */ + +typedef struct tag_VerError + { + unsigned long flags; + unsigned long opcode; + unsigned long uOffset; + unsigned long Token; + unsigned long item1_flags; + int *item1_data; + unsigned long item2_flags; + int *item2_data; + } _VerError; + +typedef _VerError VEContext; + + + + +extern RPC_IF_HANDLE __MIDL_itf_ivehandler_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_ivehandler_0000_v0_0_s_ifspec; + + +#ifndef __VEHandlerLib_LIBRARY_DEFINED__ +#define __VEHandlerLib_LIBRARY_DEFINED__ + +/* library VEHandlerLib */ +/* [helpstring][version][uuid] */ + + +EXTERN_C const IID LIBID_VEHandlerLib; + +EXTERN_C const CLSID CLSID_VEHandlerClass; + +#ifdef __cplusplus + +class DECLSPEC_UUID("856CA1B1-7DAB-11d3-ACEC-00C04F86C309") +VEHandlerClass; +#endif +#endif /* __VEHandlerLib_LIBRARY_DEFINED__ */ + +#ifndef __IVEHandler_INTERFACE_DEFINED__ +#define __IVEHandler_INTERFACE_DEFINED__ + +/* interface IVEHandler */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IVEHandler; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("856CA1B2-7DAB-11d3-ACEC-00C04F86C309") + IVEHandler : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE VEHandler( + /* [in] */ HRESULT VECode, + /* [in] */ VEContext Context, + /* [in] */ SAFEARRAY * psa) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetReporterFtn( + /* [in] */ __int64 lFnPtr) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVEHandlerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVEHandler * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVEHandler * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVEHandler * This); + + HRESULT ( STDMETHODCALLTYPE *VEHandler )( + IVEHandler * This, + /* [in] */ HRESULT VECode, + /* [in] */ VEContext Context, + /* [in] */ SAFEARRAY * psa); + + HRESULT ( STDMETHODCALLTYPE *SetReporterFtn )( + IVEHandler * This, + /* [in] */ __int64 lFnPtr); + + END_INTERFACE + } IVEHandlerVtbl; + + interface IVEHandler + { + CONST_VTBL struct IVEHandlerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVEHandler_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVEHandler_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVEHandler_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVEHandler_VEHandler(This,VECode,Context,psa) \ + (This)->lpVtbl -> VEHandler(This,VECode,Context,psa) + +#define IVEHandler_SetReporterFtn(This,lFnPtr) \ + (This)->lpVtbl -> SetReporterFtn(This,lFnPtr) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVEHandler_VEHandler_Proxy( + IVEHandler * This, + /* [in] */ HRESULT VECode, + /* [in] */ VEContext Context, + /* [in] */ SAFEARRAY * psa); + + +void __RPC_STUB IVEHandler_VEHandler_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVEHandler_SetReporterFtn_Proxy( + IVEHandler * This, + /* [in] */ __int64 lFnPtr); + + +void __RPC_STUB IVEHandler_SetReporterFtn_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVEHandler_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +unsigned long __RPC_USER LPSAFEARRAY_UserSize( unsigned long *, unsigned long , LPSAFEARRAY * ); +unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal( unsigned long *, unsigned char *, LPSAFEARRAY * ); +unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(unsigned long *, unsigned char *, LPSAFEARRAY * ); +void __RPC_USER LPSAFEARRAY_UserFree( unsigned long *, LPSAFEARRAY * ); + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/metahost.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/metahost.h new file mode 100644 index 0000000..70792b2 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/metahost.h @@ -0,0 +1,1634 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 8.00.0601 */ +/* @@MIDL_FILE_HEADING( ) */ + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCSAL_H_VERSION__ +#define __REQUIRED_RPCSAL_H_VERSION__ 100 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __metahost_h__ +#define __metahost_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __ICLRMetaHost_FWD_DEFINED__ +#define __ICLRMetaHost_FWD_DEFINED__ +typedef interface ICLRMetaHost ICLRMetaHost; + +#endif /* __ICLRMetaHost_FWD_DEFINED__ */ + + +#ifndef __ICLRMetaHostPolicy_FWD_DEFINED__ +#define __ICLRMetaHostPolicy_FWD_DEFINED__ +typedef interface ICLRMetaHostPolicy ICLRMetaHostPolicy; + +#endif /* __ICLRMetaHostPolicy_FWD_DEFINED__ */ + + +#ifndef __ICLRProfiling_FWD_DEFINED__ +#define __ICLRProfiling_FWD_DEFINED__ +typedef interface ICLRProfiling ICLRProfiling; + +#endif /* __ICLRProfiling_FWD_DEFINED__ */ + + +#ifndef __ICLRDebuggingLibraryProvider_FWD_DEFINED__ +#define __ICLRDebuggingLibraryProvider_FWD_DEFINED__ +typedef interface ICLRDebuggingLibraryProvider ICLRDebuggingLibraryProvider; + +#endif /* __ICLRDebuggingLibraryProvider_FWD_DEFINED__ */ + + +#ifndef __ICLRDebugging_FWD_DEFINED__ +#define __ICLRDebugging_FWD_DEFINED__ +typedef interface ICLRDebugging ICLRDebugging; + +#endif /* __ICLRDebugging_FWD_DEFINED__ */ + + +#ifndef __ICLRRuntimeInfo_FWD_DEFINED__ +#define __ICLRRuntimeInfo_FWD_DEFINED__ +typedef interface ICLRRuntimeInfo ICLRRuntimeInfo; + +#endif /* __ICLRRuntimeInfo_FWD_DEFINED__ */ + + +#ifndef __ICLRStrongName_FWD_DEFINED__ +#define __ICLRStrongName_FWD_DEFINED__ +typedef interface ICLRStrongName ICLRStrongName; + +#endif /* __ICLRStrongName_FWD_DEFINED__ */ + + +#ifndef __ICLRStrongName2_FWD_DEFINED__ +#define __ICLRStrongName2_FWD_DEFINED__ +typedef interface ICLRStrongName2 ICLRStrongName2; + +#endif /* __ICLRStrongName2_FWD_DEFINED__ */ + + +#ifndef __ICLRMetaHost_FWD_DEFINED__ +#define __ICLRMetaHost_FWD_DEFINED__ +typedef interface ICLRMetaHost ICLRMetaHost; + +#endif /* __ICLRMetaHost_FWD_DEFINED__ */ + + +#ifndef __ICLRMetaHostPolicy_FWD_DEFINED__ +#define __ICLRMetaHostPolicy_FWD_DEFINED__ +typedef interface ICLRMetaHostPolicy ICLRMetaHostPolicy; + +#endif /* __ICLRMetaHostPolicy_FWD_DEFINED__ */ + + +#ifndef __ICLRProfiling_FWD_DEFINED__ +#define __ICLRProfiling_FWD_DEFINED__ +typedef interface ICLRProfiling ICLRProfiling; + +#endif /* __ICLRProfiling_FWD_DEFINED__ */ + + +#ifndef __ICLRDebuggingLibraryProvider_FWD_DEFINED__ +#define __ICLRDebuggingLibraryProvider_FWD_DEFINED__ +typedef interface ICLRDebuggingLibraryProvider ICLRDebuggingLibraryProvider; + +#endif /* __ICLRDebuggingLibraryProvider_FWD_DEFINED__ */ + + +#ifndef __ICLRDebugging_FWD_DEFINED__ +#define __ICLRDebugging_FWD_DEFINED__ +typedef interface ICLRDebugging ICLRDebugging; + +#endif /* __ICLRDebugging_FWD_DEFINED__ */ + + +#ifndef __ICLRRuntimeInfo_FWD_DEFINED__ +#define __ICLRRuntimeInfo_FWD_DEFINED__ +typedef interface ICLRRuntimeInfo ICLRRuntimeInfo; + +#endif /* __ICLRRuntimeInfo_FWD_DEFINED__ */ + + +#ifndef __ICLRStrongName_FWD_DEFINED__ +#define __ICLRStrongName_FWD_DEFINED__ +typedef interface ICLRStrongName ICLRStrongName; + +#endif /* __ICLRStrongName_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" +#include "oaidl.h" +#include "ocidl.h" +#include "mscoree.h" + +#ifdef __cplusplus +extern "C"{ +#endif + + +/* interface __MIDL_itf_metahost_0000_0000 */ +/* [local] */ + +#include +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +STDAPI CLRCreateInstance(REFCLSID clsid, REFIID riid, /*iid_is(riid)*/ LPVOID *ppInterface); +EXTERN_GUID(CLSID_CLRStrongName, 0xB79B0ACD, 0xF5CD, 0x409b, 0xB5, 0xA5, 0xA1, 0x62, 0x44, 0x61, 0x0B, 0x92); +EXTERN_GUID(IID_ICLRMetaHost, 0xD332DB9E, 0xB9B3, 0x4125, 0x82, 0x07, 0xA1, 0x48, 0x84, 0xF5, 0x32, 0x16); +EXTERN_GUID(CLSID_CLRMetaHost, 0x9280188d, 0xe8e, 0x4867, 0xb3, 0xc, 0x7f, 0xa8, 0x38, 0x84, 0xe8, 0xde); +EXTERN_GUID(IID_ICLRMetaHostPolicy, 0xE2190695, 0x77B2, 0x492e, 0x8E, 0x14, 0xC4, 0xB3, 0xA7, 0xFD, 0xD5, 0x93); +EXTERN_GUID(CLSID_CLRMetaHostPolicy, 0x2ebcd49a, 0x1b47, 0x4a61, 0xb1, 0x3a, 0x4a, 0x3, 0x70, 0x1e, 0x59, 0x4b); +EXTERN_GUID(IID_ICLRDebugging, 0xd28f3c5a, 0x9634, 0x4206, 0xa5, 0x9, 0x47, 0x75, 0x52, 0xee, 0xfb, 0x10); +EXTERN_GUID(CLSID_CLRDebugging, 0xbacc578d, 0xfbdd, 0x48a4, 0x96, 0x9f, 0x2, 0xd9, 0x32, 0xb7, 0x46, 0x34); +EXTERN_GUID(IID_ICLRRuntimeInfo, 0xBD39D1D2, 0xBA2F, 0x486a, 0x89, 0xB0, 0xB4, 0xB0, 0xCB, 0x46, 0x68, 0x91); +EXTERN_GUID(IID_ICLRStrongName, 0x9FD93CCF, 0x3280, 0x4391, 0xB3, 0xA9, 0x96, 0xE1, 0xCD, 0xE7, 0x7C, 0x8D); +EXTERN_GUID(IID_ICLRStrongName2, 0xC22ED5C5, 0x4B59, 0x4975, 0x90, 0xEB, 0x85, 0xEA, 0x55, 0xC0, 0x06, 0x9B); +EXTERN_GUID(CLSID_CLRDebuggingLegacy, 0xDF8395B5, 0xA4BA, 0x450b, 0xA7, 0x7C, 0xA9, 0xA4, 0x77, 0x62, 0xC5, 0x20); +EXTERN_GUID(CLSID_CLRProfiling, 0xbd097ed8, 0x733e, 0x43fe, 0x8e, 0xd7, 0xa9, 0x5f, 0xf9, 0xa8, 0x44, 0x8c); +EXTERN_GUID(IID_ICLRProfiling, 0xb349abe3, 0xb56f, 0x4689, 0xbf, 0xcd, 0x76, 0xbf, 0x39, 0xd8, 0x88, 0xea); +EXTERN_GUID(IID_ICLRDebuggingLibraryProvider, 0x3151c08d, 0x4d09, 0x4f9b, 0x88, 0x38, 0x28, 0x80, 0xbf, 0x18, 0xfe, 0x51); +typedef HRESULT ( __stdcall *CLRCreateInstanceFnPtr )( + REFCLSID clsid, + REFIID riid, + LPVOID *ppInterface); + +typedef HRESULT ( __stdcall *CreateInterfaceFnPtr )( + REFCLSID clsid, + REFIID riid, + LPVOID *ppInterface); + + +typedef HRESULT ( __stdcall *CallbackThreadSetFnPtr )( void); + +typedef HRESULT ( __stdcall *CallbackThreadUnsetFnPtr )( void); + +typedef void ( __stdcall *RuntimeLoadedCallbackFnPtr )( + ICLRRuntimeInfo *pRuntimeInfo, + CallbackThreadSetFnPtr pfnCallbackThreadSet, + CallbackThreadUnsetFnPtr pfnCallbackThreadUnset); + + + +extern RPC_IF_HANDLE __MIDL_itf_metahost_0000_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_metahost_0000_0000_v0_0_s_ifspec; + +#ifndef __ICLRMetaHost_INTERFACE_DEFINED__ +#define __ICLRMetaHost_INTERFACE_DEFINED__ + +/* interface ICLRMetaHost */ +/* [object][local][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRMetaHost; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("D332DB9E-B9B3-4125-8207-A14884F53216") + ICLRMetaHost : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetRuntime( + /* [in] */ LPCWSTR pwzVersion, + /* [in] */ REFIID riid, + /* [retval][iid_is][out] */ LPVOID *ppRuntime) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetVersionFromFile( + /* [in] */ LPCWSTR pwzFilePath, + /* [annotation][size_is][out] */ + _Out_writes_all_(*pcchBuffer) LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBuffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumerateInstalledRuntimes( + /* [retval][out] */ IEnumUnknown **ppEnumerator) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumerateLoadedRuntimes( + /* [in] */ HANDLE hndProcess, + /* [retval][out] */ IEnumUnknown **ppEnumerator) = 0; + + virtual HRESULT STDMETHODCALLTYPE RequestRuntimeLoadedNotification( + /* [in] */ RuntimeLoadedCallbackFnPtr pCallbackFunction) = 0; + + virtual HRESULT STDMETHODCALLTYPE QueryLegacyV2RuntimeBinding( + /* [in] */ REFIID riid, + /* [retval][iid_is][out] */ LPVOID *ppUnk) = 0; + + virtual HRESULT STDMETHODCALLTYPE ExitProcess( + /* [in] */ INT32 iExitCode) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ICLRMetaHostVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRMetaHost * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRMetaHost * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRMetaHost * This); + + HRESULT ( STDMETHODCALLTYPE *GetRuntime )( + ICLRMetaHost * This, + /* [in] */ LPCWSTR pwzVersion, + /* [in] */ REFIID riid, + /* [retval][iid_is][out] */ LPVOID *ppRuntime); + + HRESULT ( STDMETHODCALLTYPE *GetVersionFromFile )( + ICLRMetaHost * This, + /* [in] */ LPCWSTR pwzFilePath, + /* [annotation][size_is][out] */ + _Out_writes_all_(*pcchBuffer) LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBuffer); + + HRESULT ( STDMETHODCALLTYPE *EnumerateInstalledRuntimes )( + ICLRMetaHost * This, + /* [retval][out] */ IEnumUnknown **ppEnumerator); + + HRESULT ( STDMETHODCALLTYPE *EnumerateLoadedRuntimes )( + ICLRMetaHost * This, + /* [in] */ HANDLE hndProcess, + /* [retval][out] */ IEnumUnknown **ppEnumerator); + + HRESULT ( STDMETHODCALLTYPE *RequestRuntimeLoadedNotification )( + ICLRMetaHost * This, + /* [in] */ RuntimeLoadedCallbackFnPtr pCallbackFunction); + + HRESULT ( STDMETHODCALLTYPE *QueryLegacyV2RuntimeBinding )( + ICLRMetaHost * This, + /* [in] */ REFIID riid, + /* [retval][iid_is][out] */ LPVOID *ppUnk); + + HRESULT ( STDMETHODCALLTYPE *ExitProcess )( + ICLRMetaHost * This, + /* [in] */ INT32 iExitCode); + + END_INTERFACE + } ICLRMetaHostVtbl; + + interface ICLRMetaHost + { + CONST_VTBL struct ICLRMetaHostVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRMetaHost_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ICLRMetaHost_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ICLRMetaHost_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ICLRMetaHost_GetRuntime(This,pwzVersion,riid,ppRuntime) \ + ( (This)->lpVtbl -> GetRuntime(This,pwzVersion,riid,ppRuntime) ) + +#define ICLRMetaHost_GetVersionFromFile(This,pwzFilePath,pwzBuffer,pcchBuffer) \ + ( (This)->lpVtbl -> GetVersionFromFile(This,pwzFilePath,pwzBuffer,pcchBuffer) ) + +#define ICLRMetaHost_EnumerateInstalledRuntimes(This,ppEnumerator) \ + ( (This)->lpVtbl -> EnumerateInstalledRuntimes(This,ppEnumerator) ) + +#define ICLRMetaHost_EnumerateLoadedRuntimes(This,hndProcess,ppEnumerator) \ + ( (This)->lpVtbl -> EnumerateLoadedRuntimes(This,hndProcess,ppEnumerator) ) + +#define ICLRMetaHost_RequestRuntimeLoadedNotification(This,pCallbackFunction) \ + ( (This)->lpVtbl -> RequestRuntimeLoadedNotification(This,pCallbackFunction) ) + +#define ICLRMetaHost_QueryLegacyV2RuntimeBinding(This,riid,ppUnk) \ + ( (This)->lpVtbl -> QueryLegacyV2RuntimeBinding(This,riid,ppUnk) ) + +#define ICLRMetaHost_ExitProcess(This,iExitCode) \ + ( (This)->lpVtbl -> ExitProcess(This,iExitCode) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ICLRMetaHost_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_metahost_0000_0001 */ +/* [local] */ + +typedef /* [public][public] */ +enum __MIDL___MIDL_itf_metahost_0000_0001_0001 + { + METAHOST_POLICY_HIGHCOMPAT = 0, + METAHOST_POLICY_APPLY_UPGRADE_POLICY = 0x8, + METAHOST_POLICY_EMULATE_EXE_LAUNCH = 0x10, + METAHOST_POLICY_SHOW_ERROR_DIALOG = 0x20, + METAHOST_POLICY_USE_PROCESS_IMAGE_PATH = 0x40, + METAHOST_POLICY_ENSURE_SKU_SUPPORTED = 0x80, + METAHOST_POLICY_IGNORE_ERROR_MODE = 0x1000 + } METAHOST_POLICY_FLAGS; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_metahost_0000_0001_0002 + { + METAHOST_CONFIG_FLAGS_LEGACY_V2_ACTIVATION_POLICY_UNSET = 0, + METAHOST_CONFIG_FLAGS_LEGACY_V2_ACTIVATION_POLICY_TRUE = 0x1, + METAHOST_CONFIG_FLAGS_LEGACY_V2_ACTIVATION_POLICY_FALSE = 0x2, + METAHOST_CONFIG_FLAGS_LEGACY_V2_ACTIVATION_POLICY_MASK = 0x3 + } METAHOST_CONFIG_FLAGS; + + + +extern RPC_IF_HANDLE __MIDL_itf_metahost_0000_0001_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_metahost_0000_0001_v0_0_s_ifspec; + +#ifndef __ICLRMetaHostPolicy_INTERFACE_DEFINED__ +#define __ICLRMetaHostPolicy_INTERFACE_DEFINED__ + +/* interface ICLRMetaHostPolicy */ +/* [object][local][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRMetaHostPolicy; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("E2190695-77B2-492e-8E14-C4B3A7FDD593") + ICLRMetaHostPolicy : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetRequestedRuntime( + /* [in] */ METAHOST_POLICY_FLAGS dwPolicyFlags, + /* [in] */ LPCWSTR pwzBinary, + /* [in] */ IStream *pCfgStream, + /* [annotation][size_is][out][in] */ + _Inout_updates_all_opt_(*pcchVersion) LPWSTR pwzVersion, + /* [out][in] */ DWORD *pcchVersion, + /* [annotation][size_is][out] */ + _Out_writes_all_opt_(*pcchImageVersion) LPWSTR pwzImageVersion, + /* [out][in] */ DWORD *pcchImageVersion, + /* [out] */ DWORD *pdwConfigFlags, + /* [in] */ REFIID riid, + /* [retval][iid_is][out] */ LPVOID *ppRuntime) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ICLRMetaHostPolicyVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRMetaHostPolicy * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRMetaHostPolicy * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRMetaHostPolicy * This); + + HRESULT ( STDMETHODCALLTYPE *GetRequestedRuntime )( + ICLRMetaHostPolicy * This, + /* [in] */ METAHOST_POLICY_FLAGS dwPolicyFlags, + /* [in] */ LPCWSTR pwzBinary, + /* [in] */ IStream *pCfgStream, + /* [annotation][size_is][out][in] */ + _Inout_updates_all_opt_(*pcchVersion) LPWSTR pwzVersion, + /* [out][in] */ DWORD *pcchVersion, + /* [annotation][size_is][out] */ + _Out_writes_all_opt_(*pcchImageVersion) LPWSTR pwzImageVersion, + /* [out][in] */ DWORD *pcchImageVersion, + /* [out] */ DWORD *pdwConfigFlags, + /* [in] */ REFIID riid, + /* [retval][iid_is][out] */ LPVOID *ppRuntime); + + END_INTERFACE + } ICLRMetaHostPolicyVtbl; + + interface ICLRMetaHostPolicy + { + CONST_VTBL struct ICLRMetaHostPolicyVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRMetaHostPolicy_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ICLRMetaHostPolicy_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ICLRMetaHostPolicy_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ICLRMetaHostPolicy_GetRequestedRuntime(This,dwPolicyFlags,pwzBinary,pCfgStream,pwzVersion,pcchVersion,pwzImageVersion,pcchImageVersion,pdwConfigFlags,riid,ppRuntime) \ + ( (This)->lpVtbl -> GetRequestedRuntime(This,dwPolicyFlags,pwzBinary,pCfgStream,pwzVersion,pcchVersion,pwzImageVersion,pcchImageVersion,pdwConfigFlags,riid,ppRuntime) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ICLRMetaHostPolicy_INTERFACE_DEFINED__ */ + + +#ifndef __ICLRProfiling_INTERFACE_DEFINED__ +#define __ICLRProfiling_INTERFACE_DEFINED__ + +/* interface ICLRProfiling */ +/* [object][local][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRProfiling; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B349ABE3-B56F-4689-BFCD-76BF39D888EA") + ICLRProfiling : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE AttachProfiler( + /* [in] */ DWORD dwProfileeProcessID, + /* [in] */ DWORD dwMillisecondsMax, + /* [in] */ const CLSID *pClsidProfiler, + /* [in] */ LPCWSTR wszProfilerPath, + /* [size_is][in] */ void *pvClientData, + /* [in] */ UINT cbClientData) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ICLRProfilingVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRProfiling * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRProfiling * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRProfiling * This); + + HRESULT ( STDMETHODCALLTYPE *AttachProfiler )( + ICLRProfiling * This, + /* [in] */ DWORD dwProfileeProcessID, + /* [in] */ DWORD dwMillisecondsMax, + /* [in] */ const CLSID *pClsidProfiler, + /* [in] */ LPCWSTR wszProfilerPath, + /* [size_is][in] */ void *pvClientData, + /* [in] */ UINT cbClientData); + + END_INTERFACE + } ICLRProfilingVtbl; + + interface ICLRProfiling + { + CONST_VTBL struct ICLRProfilingVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRProfiling_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ICLRProfiling_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ICLRProfiling_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ICLRProfiling_AttachProfiler(This,dwProfileeProcessID,dwMillisecondsMax,pClsidProfiler,wszProfilerPath,pvClientData,cbClientData) \ + ( (This)->lpVtbl -> AttachProfiler(This,dwProfileeProcessID,dwMillisecondsMax,pClsidProfiler,wszProfilerPath,pvClientData,cbClientData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ICLRProfiling_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_metahost_0000_0003 */ +/* [local] */ + +typedef struct _CLR_DEBUGGING_VERSION + { + WORD wStructVersion; + WORD wMajor; + WORD wMinor; + WORD wBuild; + WORD wRevision; + } CLR_DEBUGGING_VERSION; + +typedef /* [public][public] */ +enum __MIDL___MIDL_itf_metahost_0000_0003_0001 + { + CLR_DEBUGGING_MANAGED_EVENT_PENDING = 1, + CLR_DEBUGGING_MANAGED_EVENT_DEBUGGER_LAUNCH = 2 + } CLR_DEBUGGING_PROCESS_FLAGS; + + + +extern RPC_IF_HANDLE __MIDL_itf_metahost_0000_0003_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_metahost_0000_0003_v0_0_s_ifspec; + +#ifndef __ICLRDebuggingLibraryProvider_INTERFACE_DEFINED__ +#define __ICLRDebuggingLibraryProvider_INTERFACE_DEFINED__ + +/* interface ICLRDebuggingLibraryProvider */ +/* [object][local][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRDebuggingLibraryProvider; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3151C08D-4D09-4f9b-8838-2880BF18FE51") + ICLRDebuggingLibraryProvider : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ProvideLibrary( + /* [in] */ const WCHAR *pwszFileName, + /* [in] */ DWORD dwTimestamp, + /* [in] */ DWORD dwSizeOfImage, + /* [out] */ HMODULE *phModule) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ICLRDebuggingLibraryProviderVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRDebuggingLibraryProvider * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRDebuggingLibraryProvider * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRDebuggingLibraryProvider * This); + + HRESULT ( STDMETHODCALLTYPE *ProvideLibrary )( + ICLRDebuggingLibraryProvider * This, + /* [in] */ const WCHAR *pwszFileName, + /* [in] */ DWORD dwTimestamp, + /* [in] */ DWORD dwSizeOfImage, + /* [out] */ HMODULE *phModule); + + END_INTERFACE + } ICLRDebuggingLibraryProviderVtbl; + + interface ICLRDebuggingLibraryProvider + { + CONST_VTBL struct ICLRDebuggingLibraryProviderVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRDebuggingLibraryProvider_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ICLRDebuggingLibraryProvider_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ICLRDebuggingLibraryProvider_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ICLRDebuggingLibraryProvider_ProvideLibrary(This,pwszFileName,dwTimestamp,dwSizeOfImage,phModule) \ + ( (This)->lpVtbl -> ProvideLibrary(This,pwszFileName,dwTimestamp,dwSizeOfImage,phModule) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ICLRDebuggingLibraryProvider_INTERFACE_DEFINED__ */ + + +#ifndef __ICLRDebugging_INTERFACE_DEFINED__ +#define __ICLRDebugging_INTERFACE_DEFINED__ + +/* interface ICLRDebugging */ +/* [object][local][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRDebugging; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("D28F3C5A-9634-4206-A509-477552EEFB10") + ICLRDebugging : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE OpenVirtualProcess( + /* [in] */ ULONG64 moduleBaseAddress, + /* [in] */ IUnknown *pDataTarget, + /* [in] */ ICLRDebuggingLibraryProvider *pLibraryProvider, + /* [in] */ CLR_DEBUGGING_VERSION *pMaxDebuggerSupportedVersion, + /* [in] */ REFIID riidProcess, + /* [iid_is][out] */ IUnknown **ppProcess, + /* [out][in] */ CLR_DEBUGGING_VERSION *pVersion, + /* [out] */ CLR_DEBUGGING_PROCESS_FLAGS *pdwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE CanUnloadNow( + HMODULE hModule) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ICLRDebuggingVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRDebugging * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRDebugging * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRDebugging * This); + + HRESULT ( STDMETHODCALLTYPE *OpenVirtualProcess )( + ICLRDebugging * This, + /* [in] */ ULONG64 moduleBaseAddress, + /* [in] */ IUnknown *pDataTarget, + /* [in] */ ICLRDebuggingLibraryProvider *pLibraryProvider, + /* [in] */ CLR_DEBUGGING_VERSION *pMaxDebuggerSupportedVersion, + /* [in] */ REFIID riidProcess, + /* [iid_is][out] */ IUnknown **ppProcess, + /* [out][in] */ CLR_DEBUGGING_VERSION *pVersion, + /* [out] */ CLR_DEBUGGING_PROCESS_FLAGS *pdwFlags); + + HRESULT ( STDMETHODCALLTYPE *CanUnloadNow )( + ICLRDebugging * This, + HMODULE hModule); + + END_INTERFACE + } ICLRDebuggingVtbl; + + interface ICLRDebugging + { + CONST_VTBL struct ICLRDebuggingVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRDebugging_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ICLRDebugging_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ICLRDebugging_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ICLRDebugging_OpenVirtualProcess(This,moduleBaseAddress,pDataTarget,pLibraryProvider,pMaxDebuggerSupportedVersion,riidProcess,ppProcess,pVersion,pdwFlags) \ + ( (This)->lpVtbl -> OpenVirtualProcess(This,moduleBaseAddress,pDataTarget,pLibraryProvider,pMaxDebuggerSupportedVersion,riidProcess,ppProcess,pVersion,pdwFlags) ) + +#define ICLRDebugging_CanUnloadNow(This,hModule) \ + ( (This)->lpVtbl -> CanUnloadNow(This,hModule) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ICLRDebugging_INTERFACE_DEFINED__ */ + + +#ifndef __ICLRRuntimeInfo_INTERFACE_DEFINED__ +#define __ICLRRuntimeInfo_INTERFACE_DEFINED__ + +/* interface ICLRRuntimeInfo */ +/* [object][local][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRRuntimeInfo; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("BD39D1D2-BA2F-486a-89B0-B4B0CB466891") + ICLRRuntimeInfo : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetVersionString( + /* [annotation][size_is][out] */ + _Out_writes_all_opt_(*pcchBuffer) LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBuffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRuntimeDirectory( + /* [annotation][size_is][out] */ + _Out_writes_all_(*pcchBuffer) LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBuffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsLoaded( + /* [in] */ HANDLE hndProcess, + /* [retval][out] */ BOOL *pbLoaded) = 0; + + virtual HRESULT STDMETHODCALLTYPE LoadErrorString( + /* [in] */ UINT iResourceID, + /* [annotation][size_is][out] */ + _Out_writes_all_(*pcchBuffer) LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBuffer, + /* [lcid][in] */ LONG iLocaleID) = 0; + + virtual HRESULT STDMETHODCALLTYPE LoadLibrary( + /* [in] */ LPCWSTR pwzDllName, + /* [retval][out] */ HMODULE *phndModule) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetProcAddress( + /* [in] */ LPCSTR pszProcName, + /* [retval][out] */ LPVOID *ppProc) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInterface( + /* [in] */ REFCLSID rclsid, + /* [in] */ REFIID riid, + /* [retval][iid_is][out] */ LPVOID *ppUnk) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsLoadable( + /* [retval][out] */ BOOL *pbLoadable) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDefaultStartupFlags( + /* [in] */ DWORD dwStartupFlags, + /* [in] */ LPCWSTR pwzHostConfigFile) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDefaultStartupFlags( + /* [out] */ DWORD *pdwStartupFlags, + /* [annotation][size_is][out] */ + _Out_writes_all_opt_(*pcchHostConfigFile) LPWSTR pwzHostConfigFile, + /* [out][in] */ DWORD *pcchHostConfigFile) = 0; + + virtual HRESULT STDMETHODCALLTYPE BindAsLegacyV2Runtime( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsStarted( + /* [out] */ BOOL *pbStarted, + /* [out] */ DWORD *pdwStartupFlags) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ICLRRuntimeInfoVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRRuntimeInfo * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRRuntimeInfo * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRRuntimeInfo * This); + + HRESULT ( STDMETHODCALLTYPE *GetVersionString )( + ICLRRuntimeInfo * This, + /* [annotation][size_is][out] */ + _Out_writes_all_opt_(*pcchBuffer) LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBuffer); + + HRESULT ( STDMETHODCALLTYPE *GetRuntimeDirectory )( + ICLRRuntimeInfo * This, + /* [annotation][size_is][out] */ + _Out_writes_all_(*pcchBuffer) LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBuffer); + + HRESULT ( STDMETHODCALLTYPE *IsLoaded )( + ICLRRuntimeInfo * This, + /* [in] */ HANDLE hndProcess, + /* [retval][out] */ BOOL *pbLoaded); + + HRESULT ( STDMETHODCALLTYPE *LoadErrorString )( + ICLRRuntimeInfo * This, + /* [in] */ UINT iResourceID, + /* [annotation][size_is][out] */ + _Out_writes_all_(*pcchBuffer) LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBuffer, + /* [lcid][in] */ LONG iLocaleID); + + HRESULT ( STDMETHODCALLTYPE *LoadLibrary )( + ICLRRuntimeInfo * This, + /* [in] */ LPCWSTR pwzDllName, + /* [retval][out] */ HMODULE *phndModule); + + HRESULT ( STDMETHODCALLTYPE *GetProcAddress )( + ICLRRuntimeInfo * This, + /* [in] */ LPCSTR pszProcName, + /* [retval][out] */ LPVOID *ppProc); + + HRESULT ( STDMETHODCALLTYPE *GetInterface )( + ICLRRuntimeInfo * This, + /* [in] */ REFCLSID rclsid, + /* [in] */ REFIID riid, + /* [retval][iid_is][out] */ LPVOID *ppUnk); + + HRESULT ( STDMETHODCALLTYPE *IsLoadable )( + ICLRRuntimeInfo * This, + /* [retval][out] */ BOOL *pbLoadable); + + HRESULT ( STDMETHODCALLTYPE *SetDefaultStartupFlags )( + ICLRRuntimeInfo * This, + /* [in] */ DWORD dwStartupFlags, + /* [in] */ LPCWSTR pwzHostConfigFile); + + HRESULT ( STDMETHODCALLTYPE *GetDefaultStartupFlags )( + ICLRRuntimeInfo * This, + /* [out] */ DWORD *pdwStartupFlags, + /* [annotation][size_is][out] */ + _Out_writes_all_opt_(*pcchHostConfigFile) LPWSTR pwzHostConfigFile, + /* [out][in] */ DWORD *pcchHostConfigFile); + + HRESULT ( STDMETHODCALLTYPE *BindAsLegacyV2Runtime )( + ICLRRuntimeInfo * This); + + HRESULT ( STDMETHODCALLTYPE *IsStarted )( + ICLRRuntimeInfo * This, + /* [out] */ BOOL *pbStarted, + /* [out] */ DWORD *pdwStartupFlags); + + END_INTERFACE + } ICLRRuntimeInfoVtbl; + + interface ICLRRuntimeInfo + { + CONST_VTBL struct ICLRRuntimeInfoVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRRuntimeInfo_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ICLRRuntimeInfo_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ICLRRuntimeInfo_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ICLRRuntimeInfo_GetVersionString(This,pwzBuffer,pcchBuffer) \ + ( (This)->lpVtbl -> GetVersionString(This,pwzBuffer,pcchBuffer) ) + +#define ICLRRuntimeInfo_GetRuntimeDirectory(This,pwzBuffer,pcchBuffer) \ + ( (This)->lpVtbl -> GetRuntimeDirectory(This,pwzBuffer,pcchBuffer) ) + +#define ICLRRuntimeInfo_IsLoaded(This,hndProcess,pbLoaded) \ + ( (This)->lpVtbl -> IsLoaded(This,hndProcess,pbLoaded) ) + +#define ICLRRuntimeInfo_LoadErrorString(This,iResourceID,pwzBuffer,pcchBuffer,iLocaleID) \ + ( (This)->lpVtbl -> LoadErrorString(This,iResourceID,pwzBuffer,pcchBuffer,iLocaleID) ) + +#define ICLRRuntimeInfo_LoadLibrary(This,pwzDllName,phndModule) \ + ( (This)->lpVtbl -> LoadLibrary(This,pwzDllName,phndModule) ) + +#define ICLRRuntimeInfo_GetProcAddress(This,pszProcName,ppProc) \ + ( (This)->lpVtbl -> GetProcAddress(This,pszProcName,ppProc) ) + +#define ICLRRuntimeInfo_GetInterface(This,rclsid,riid,ppUnk) \ + ( (This)->lpVtbl -> GetInterface(This,rclsid,riid,ppUnk) ) + +#define ICLRRuntimeInfo_IsLoadable(This,pbLoadable) \ + ( (This)->lpVtbl -> IsLoadable(This,pbLoadable) ) + +#define ICLRRuntimeInfo_SetDefaultStartupFlags(This,dwStartupFlags,pwzHostConfigFile) \ + ( (This)->lpVtbl -> SetDefaultStartupFlags(This,dwStartupFlags,pwzHostConfigFile) ) + +#define ICLRRuntimeInfo_GetDefaultStartupFlags(This,pdwStartupFlags,pwzHostConfigFile,pcchHostConfigFile) \ + ( (This)->lpVtbl -> GetDefaultStartupFlags(This,pdwStartupFlags,pwzHostConfigFile,pcchHostConfigFile) ) + +#define ICLRRuntimeInfo_BindAsLegacyV2Runtime(This) \ + ( (This)->lpVtbl -> BindAsLegacyV2Runtime(This) ) + +#define ICLRRuntimeInfo_IsStarted(This,pbStarted,pdwStartupFlags) \ + ( (This)->lpVtbl -> IsStarted(This,pbStarted,pdwStartupFlags) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ICLRRuntimeInfo_INTERFACE_DEFINED__ */ + + +#ifndef __ICLRStrongName_INTERFACE_DEFINED__ +#define __ICLRStrongName_INTERFACE_DEFINED__ + +/* interface ICLRStrongName */ +/* [object][local][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRStrongName; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9FD93CCF-3280-4391-B3A9-96E1CDE77C8D") + ICLRStrongName : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetHashFromAssemblyFile( + /* [in] */ LPCSTR pszFilePath, + /* [out][in] */ unsigned int *piHashAlg, + /* [length_is][size_is][out] */ BYTE *pbHash, + /* [in] */ DWORD cchHash, + /* [out] */ DWORD *pchHash) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHashFromAssemblyFileW( + /* [in] */ LPCWSTR pwzFilePath, + /* [out][in] */ unsigned int *piHashAlg, + /* [length_is][size_is][out] */ BYTE *pbHash, + /* [in] */ DWORD cchHash, + /* [out] */ DWORD *pchHash) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHashFromBlob( + /* [in] */ BYTE *pbBlob, + /* [in] */ DWORD cchBlob, + /* [out][in] */ unsigned int *piHashAlg, + /* [length_is][size_is][out] */ BYTE *pbHash, + /* [in] */ DWORD cchHash, + /* [out] */ DWORD *pchHash) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHashFromFile( + /* [in] */ LPCSTR pszFilePath, + /* [out][in] */ unsigned int *piHashAlg, + /* [length_is][size_is][out] */ BYTE *pbHash, + /* [in] */ DWORD cchHash, + /* [out] */ DWORD *pchHash) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHashFromFileW( + /* [in] */ LPCWSTR pwzFilePath, + /* [out][in] */ unsigned int *piHashAlg, + /* [length_is][size_is][out] */ BYTE *pbHash, + /* [in] */ DWORD cchHash, + /* [out] */ DWORD *pchHash) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHashFromHandle( + /* [in] */ HANDLE hFile, + /* [out][in] */ unsigned int *piHashAlg, + /* [length_is][size_is][out] */ BYTE *pbHash, + /* [in] */ DWORD cchHash, + /* [out] */ DWORD *pchHash) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameCompareAssemblies( + /* [in] */ LPCWSTR pwzAssembly1, + /* [in] */ LPCWSTR pwzAssembly2, + /* [retval][out] */ DWORD *pdwResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameFreeBuffer( + /* [in] */ BYTE *pbMemory) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameGetBlob( + /* [in] */ LPCWSTR pwzFilePath, + /* [length_is][size_is][out][in] */ BYTE *pbBlob, + /* [out][in] */ DWORD *pcbBlob) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameGetBlobFromImage( + /* [size_is][in] */ BYTE *pbBase, + /* [in] */ DWORD dwLength, + /* [length_is][size_is][out] */ BYTE *pbBlob, + /* [out][in] */ DWORD *pcbBlob) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameGetPublicKey( + /* [in] */ LPCWSTR pwzKeyContainer, + /* [in] */ BYTE *pbKeyBlob, + /* [in] */ ULONG cbKeyBlob, + /* [out] */ BYTE **ppbPublicKeyBlob, + /* [out] */ ULONG *pcbPublicKeyBlob) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameHashSize( + /* [in] */ ULONG ulHashAlg, + /* [retval][out] */ DWORD *pcbSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameKeyDelete( + /* [in] */ LPCWSTR pwzKeyContainer) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameKeyGen( + /* [in] */ LPCWSTR pwzKeyContainer, + /* [in] */ DWORD dwFlags, + /* [out] */ BYTE **ppbKeyBlob, + /* [out] */ ULONG *pcbKeyBlob) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameKeyGenEx( + /* [in] */ LPCWSTR pwzKeyContainer, + /* [in] */ DWORD dwFlags, + /* [in] */ DWORD dwKeySize, + /* [out] */ BYTE **ppbKeyBlob, + /* [out] */ ULONG *pcbKeyBlob) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameKeyInstall( + /* [in] */ LPCWSTR pwzKeyContainer, + /* [in] */ BYTE *pbKeyBlob, + /* [in] */ ULONG cbKeyBlob) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameSignatureGeneration( + /* [in] */ LPCWSTR pwzFilePath, + /* [in] */ LPCWSTR pwzKeyContainer, + /* [in] */ BYTE *pbKeyBlob, + /* [in] */ ULONG cbKeyBlob, + /* [out] */ BYTE **ppbSignatureBlob, + /* [out] */ ULONG *pcbSignatureBlob) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameSignatureGenerationEx( + /* [in] */ LPCWSTR wszFilePath, + /* [in] */ LPCWSTR wszKeyContainer, + /* [in] */ BYTE *pbKeyBlob, + /* [in] */ ULONG cbKeyBlob, + /* [out] */ BYTE **ppbSignatureBlob, + /* [out] */ ULONG *pcbSignatureBlob, + /* [in] */ DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameSignatureSize( + /* [in] */ BYTE *pbPublicKeyBlob, + /* [in] */ ULONG cbPublicKeyBlob, + /* [in] */ DWORD *pcbSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameSignatureVerification( + /* [in] */ LPCWSTR pwzFilePath, + /* [in] */ DWORD dwInFlags, + /* [retval][out] */ DWORD *pdwOutFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameSignatureVerificationEx( + /* [in] */ LPCWSTR pwzFilePath, + /* [in] */ BOOLEAN fForceVerification, + /* [retval][out] */ BOOLEAN *pfWasVerified) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameSignatureVerificationFromImage( + /* [in] */ BYTE *pbBase, + /* [in] */ DWORD dwLength, + /* [in] */ DWORD dwInFlags, + /* [retval][out] */ DWORD *pdwOutFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameTokenFromAssembly( + /* [in] */ LPCWSTR pwzFilePath, + /* [out] */ BYTE **ppbStrongNameToken, + /* [out] */ ULONG *pcbStrongNameToken) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameTokenFromAssemblyEx( + /* [in] */ LPCWSTR pwzFilePath, + /* [out] */ BYTE **ppbStrongNameToken, + /* [out] */ ULONG *pcbStrongNameToken, + /* [out] */ BYTE **ppbPublicKeyBlob, + /* [out] */ ULONG *pcbPublicKeyBlob) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameTokenFromPublicKey( + /* [in] */ BYTE *pbPublicKeyBlob, + /* [in] */ ULONG cbPublicKeyBlob, + /* [out] */ BYTE **ppbStrongNameToken, + /* [out] */ ULONG *pcbStrongNameToken) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ICLRStrongNameVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRStrongName * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRStrongName * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRStrongName * This); + + HRESULT ( STDMETHODCALLTYPE *GetHashFromAssemblyFile )( + ICLRStrongName * This, + /* [in] */ LPCSTR pszFilePath, + /* [out][in] */ unsigned int *piHashAlg, + /* [length_is][size_is][out] */ BYTE *pbHash, + /* [in] */ DWORD cchHash, + /* [out] */ DWORD *pchHash); + + HRESULT ( STDMETHODCALLTYPE *GetHashFromAssemblyFileW )( + ICLRStrongName * This, + /* [in] */ LPCWSTR pwzFilePath, + /* [out][in] */ unsigned int *piHashAlg, + /* [length_is][size_is][out] */ BYTE *pbHash, + /* [in] */ DWORD cchHash, + /* [out] */ DWORD *pchHash); + + HRESULT ( STDMETHODCALLTYPE *GetHashFromBlob )( + ICLRStrongName * This, + /* [in] */ BYTE *pbBlob, + /* [in] */ DWORD cchBlob, + /* [out][in] */ unsigned int *piHashAlg, + /* [length_is][size_is][out] */ BYTE *pbHash, + /* [in] */ DWORD cchHash, + /* [out] */ DWORD *pchHash); + + HRESULT ( STDMETHODCALLTYPE *GetHashFromFile )( + ICLRStrongName * This, + /* [in] */ LPCSTR pszFilePath, + /* [out][in] */ unsigned int *piHashAlg, + /* [length_is][size_is][out] */ BYTE *pbHash, + /* [in] */ DWORD cchHash, + /* [out] */ DWORD *pchHash); + + HRESULT ( STDMETHODCALLTYPE *GetHashFromFileW )( + ICLRStrongName * This, + /* [in] */ LPCWSTR pwzFilePath, + /* [out][in] */ unsigned int *piHashAlg, + /* [length_is][size_is][out] */ BYTE *pbHash, + /* [in] */ DWORD cchHash, + /* [out] */ DWORD *pchHash); + + HRESULT ( STDMETHODCALLTYPE *GetHashFromHandle )( + ICLRStrongName * This, + /* [in] */ HANDLE hFile, + /* [out][in] */ unsigned int *piHashAlg, + /* [length_is][size_is][out] */ BYTE *pbHash, + /* [in] */ DWORD cchHash, + /* [out] */ DWORD *pchHash); + + HRESULT ( STDMETHODCALLTYPE *StrongNameCompareAssemblies )( + ICLRStrongName * This, + /* [in] */ LPCWSTR pwzAssembly1, + /* [in] */ LPCWSTR pwzAssembly2, + /* [retval][out] */ DWORD *pdwResult); + + HRESULT ( STDMETHODCALLTYPE *StrongNameFreeBuffer )( + ICLRStrongName * This, + /* [in] */ BYTE *pbMemory); + + HRESULT ( STDMETHODCALLTYPE *StrongNameGetBlob )( + ICLRStrongName * This, + /* [in] */ LPCWSTR pwzFilePath, + /* [length_is][size_is][out][in] */ BYTE *pbBlob, + /* [out][in] */ DWORD *pcbBlob); + + HRESULT ( STDMETHODCALLTYPE *StrongNameGetBlobFromImage )( + ICLRStrongName * This, + /* [size_is][in] */ BYTE *pbBase, + /* [in] */ DWORD dwLength, + /* [length_is][size_is][out] */ BYTE *pbBlob, + /* [out][in] */ DWORD *pcbBlob); + + HRESULT ( STDMETHODCALLTYPE *StrongNameGetPublicKey )( + ICLRStrongName * This, + /* [in] */ LPCWSTR pwzKeyContainer, + /* [in] */ BYTE *pbKeyBlob, + /* [in] */ ULONG cbKeyBlob, + /* [out] */ BYTE **ppbPublicKeyBlob, + /* [out] */ ULONG *pcbPublicKeyBlob); + + HRESULT ( STDMETHODCALLTYPE *StrongNameHashSize )( + ICLRStrongName * This, + /* [in] */ ULONG ulHashAlg, + /* [retval][out] */ DWORD *pcbSize); + + HRESULT ( STDMETHODCALLTYPE *StrongNameKeyDelete )( + ICLRStrongName * This, + /* [in] */ LPCWSTR pwzKeyContainer); + + HRESULT ( STDMETHODCALLTYPE *StrongNameKeyGen )( + ICLRStrongName * This, + /* [in] */ LPCWSTR pwzKeyContainer, + /* [in] */ DWORD dwFlags, + /* [out] */ BYTE **ppbKeyBlob, + /* [out] */ ULONG *pcbKeyBlob); + + HRESULT ( STDMETHODCALLTYPE *StrongNameKeyGenEx )( + ICLRStrongName * This, + /* [in] */ LPCWSTR pwzKeyContainer, + /* [in] */ DWORD dwFlags, + /* [in] */ DWORD dwKeySize, + /* [out] */ BYTE **ppbKeyBlob, + /* [out] */ ULONG *pcbKeyBlob); + + HRESULT ( STDMETHODCALLTYPE *StrongNameKeyInstall )( + ICLRStrongName * This, + /* [in] */ LPCWSTR pwzKeyContainer, + /* [in] */ BYTE *pbKeyBlob, + /* [in] */ ULONG cbKeyBlob); + + HRESULT ( STDMETHODCALLTYPE *StrongNameSignatureGeneration )( + ICLRStrongName * This, + /* [in] */ LPCWSTR pwzFilePath, + /* [in] */ LPCWSTR pwzKeyContainer, + /* [in] */ BYTE *pbKeyBlob, + /* [in] */ ULONG cbKeyBlob, + /* [out] */ BYTE **ppbSignatureBlob, + /* [out] */ ULONG *pcbSignatureBlob); + + HRESULT ( STDMETHODCALLTYPE *StrongNameSignatureGenerationEx )( + ICLRStrongName * This, + /* [in] */ LPCWSTR wszFilePath, + /* [in] */ LPCWSTR wszKeyContainer, + /* [in] */ BYTE *pbKeyBlob, + /* [in] */ ULONG cbKeyBlob, + /* [out] */ BYTE **ppbSignatureBlob, + /* [out] */ ULONG *pcbSignatureBlob, + /* [in] */ DWORD dwFlags); + + HRESULT ( STDMETHODCALLTYPE *StrongNameSignatureSize )( + ICLRStrongName * This, + /* [in] */ BYTE *pbPublicKeyBlob, + /* [in] */ ULONG cbPublicKeyBlob, + /* [in] */ DWORD *pcbSize); + + HRESULT ( STDMETHODCALLTYPE *StrongNameSignatureVerification )( + ICLRStrongName * This, + /* [in] */ LPCWSTR pwzFilePath, + /* [in] */ DWORD dwInFlags, + /* [retval][out] */ DWORD *pdwOutFlags); + + HRESULT ( STDMETHODCALLTYPE *StrongNameSignatureVerificationEx )( + ICLRStrongName * This, + /* [in] */ LPCWSTR pwzFilePath, + /* [in] */ BOOLEAN fForceVerification, + /* [retval][out] */ BOOLEAN *pfWasVerified); + + HRESULT ( STDMETHODCALLTYPE *StrongNameSignatureVerificationFromImage )( + ICLRStrongName * This, + /* [in] */ BYTE *pbBase, + /* [in] */ DWORD dwLength, + /* [in] */ DWORD dwInFlags, + /* [retval][out] */ DWORD *pdwOutFlags); + + HRESULT ( STDMETHODCALLTYPE *StrongNameTokenFromAssembly )( + ICLRStrongName * This, + /* [in] */ LPCWSTR pwzFilePath, + /* [out] */ BYTE **ppbStrongNameToken, + /* [out] */ ULONG *pcbStrongNameToken); + + HRESULT ( STDMETHODCALLTYPE *StrongNameTokenFromAssemblyEx )( + ICLRStrongName * This, + /* [in] */ LPCWSTR pwzFilePath, + /* [out] */ BYTE **ppbStrongNameToken, + /* [out] */ ULONG *pcbStrongNameToken, + /* [out] */ BYTE **ppbPublicKeyBlob, + /* [out] */ ULONG *pcbPublicKeyBlob); + + HRESULT ( STDMETHODCALLTYPE *StrongNameTokenFromPublicKey )( + ICLRStrongName * This, + /* [in] */ BYTE *pbPublicKeyBlob, + /* [in] */ ULONG cbPublicKeyBlob, + /* [out] */ BYTE **ppbStrongNameToken, + /* [out] */ ULONG *pcbStrongNameToken); + + END_INTERFACE + } ICLRStrongNameVtbl; + + interface ICLRStrongName + { + CONST_VTBL struct ICLRStrongNameVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRStrongName_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ICLRStrongName_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ICLRStrongName_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ICLRStrongName_GetHashFromAssemblyFile(This,pszFilePath,piHashAlg,pbHash,cchHash,pchHash) \ + ( (This)->lpVtbl -> GetHashFromAssemblyFile(This,pszFilePath,piHashAlg,pbHash,cchHash,pchHash) ) + +#define ICLRStrongName_GetHashFromAssemblyFileW(This,pwzFilePath,piHashAlg,pbHash,cchHash,pchHash) \ + ( (This)->lpVtbl -> GetHashFromAssemblyFileW(This,pwzFilePath,piHashAlg,pbHash,cchHash,pchHash) ) + +#define ICLRStrongName_GetHashFromBlob(This,pbBlob,cchBlob,piHashAlg,pbHash,cchHash,pchHash) \ + ( (This)->lpVtbl -> GetHashFromBlob(This,pbBlob,cchBlob,piHashAlg,pbHash,cchHash,pchHash) ) + +#define ICLRStrongName_GetHashFromFile(This,pszFilePath,piHashAlg,pbHash,cchHash,pchHash) \ + ( (This)->lpVtbl -> GetHashFromFile(This,pszFilePath,piHashAlg,pbHash,cchHash,pchHash) ) + +#define ICLRStrongName_GetHashFromFileW(This,pwzFilePath,piHashAlg,pbHash,cchHash,pchHash) \ + ( (This)->lpVtbl -> GetHashFromFileW(This,pwzFilePath,piHashAlg,pbHash,cchHash,pchHash) ) + +#define ICLRStrongName_GetHashFromHandle(This,hFile,piHashAlg,pbHash,cchHash,pchHash) \ + ( (This)->lpVtbl -> GetHashFromHandle(This,hFile,piHashAlg,pbHash,cchHash,pchHash) ) + +#define ICLRStrongName_StrongNameCompareAssemblies(This,pwzAssembly1,pwzAssembly2,pdwResult) \ + ( (This)->lpVtbl -> StrongNameCompareAssemblies(This,pwzAssembly1,pwzAssembly2,pdwResult) ) + +#define ICLRStrongName_StrongNameFreeBuffer(This,pbMemory) \ + ( (This)->lpVtbl -> StrongNameFreeBuffer(This,pbMemory) ) + +#define ICLRStrongName_StrongNameGetBlob(This,pwzFilePath,pbBlob,pcbBlob) \ + ( (This)->lpVtbl -> StrongNameGetBlob(This,pwzFilePath,pbBlob,pcbBlob) ) + +#define ICLRStrongName_StrongNameGetBlobFromImage(This,pbBase,dwLength,pbBlob,pcbBlob) \ + ( (This)->lpVtbl -> StrongNameGetBlobFromImage(This,pbBase,dwLength,pbBlob,pcbBlob) ) + +#define ICLRStrongName_StrongNameGetPublicKey(This,pwzKeyContainer,pbKeyBlob,cbKeyBlob,ppbPublicKeyBlob,pcbPublicKeyBlob) \ + ( (This)->lpVtbl -> StrongNameGetPublicKey(This,pwzKeyContainer,pbKeyBlob,cbKeyBlob,ppbPublicKeyBlob,pcbPublicKeyBlob) ) + +#define ICLRStrongName_StrongNameHashSize(This,ulHashAlg,pcbSize) \ + ( (This)->lpVtbl -> StrongNameHashSize(This,ulHashAlg,pcbSize) ) + +#define ICLRStrongName_StrongNameKeyDelete(This,pwzKeyContainer) \ + ( (This)->lpVtbl -> StrongNameKeyDelete(This,pwzKeyContainer) ) + +#define ICLRStrongName_StrongNameKeyGen(This,pwzKeyContainer,dwFlags,ppbKeyBlob,pcbKeyBlob) \ + ( (This)->lpVtbl -> StrongNameKeyGen(This,pwzKeyContainer,dwFlags,ppbKeyBlob,pcbKeyBlob) ) + +#define ICLRStrongName_StrongNameKeyGenEx(This,pwzKeyContainer,dwFlags,dwKeySize,ppbKeyBlob,pcbKeyBlob) \ + ( (This)->lpVtbl -> StrongNameKeyGenEx(This,pwzKeyContainer,dwFlags,dwKeySize,ppbKeyBlob,pcbKeyBlob) ) + +#define ICLRStrongName_StrongNameKeyInstall(This,pwzKeyContainer,pbKeyBlob,cbKeyBlob) \ + ( (This)->lpVtbl -> StrongNameKeyInstall(This,pwzKeyContainer,pbKeyBlob,cbKeyBlob) ) + +#define ICLRStrongName_StrongNameSignatureGeneration(This,pwzFilePath,pwzKeyContainer,pbKeyBlob,cbKeyBlob,ppbSignatureBlob,pcbSignatureBlob) \ + ( (This)->lpVtbl -> StrongNameSignatureGeneration(This,pwzFilePath,pwzKeyContainer,pbKeyBlob,cbKeyBlob,ppbSignatureBlob,pcbSignatureBlob) ) + +#define ICLRStrongName_StrongNameSignatureGenerationEx(This,wszFilePath,wszKeyContainer,pbKeyBlob,cbKeyBlob,ppbSignatureBlob,pcbSignatureBlob,dwFlags) \ + ( (This)->lpVtbl -> StrongNameSignatureGenerationEx(This,wszFilePath,wszKeyContainer,pbKeyBlob,cbKeyBlob,ppbSignatureBlob,pcbSignatureBlob,dwFlags) ) + +#define ICLRStrongName_StrongNameSignatureSize(This,pbPublicKeyBlob,cbPublicKeyBlob,pcbSize) \ + ( (This)->lpVtbl -> StrongNameSignatureSize(This,pbPublicKeyBlob,cbPublicKeyBlob,pcbSize) ) + +#define ICLRStrongName_StrongNameSignatureVerification(This,pwzFilePath,dwInFlags,pdwOutFlags) \ + ( (This)->lpVtbl -> StrongNameSignatureVerification(This,pwzFilePath,dwInFlags,pdwOutFlags) ) + +#define ICLRStrongName_StrongNameSignatureVerificationEx(This,pwzFilePath,fForceVerification,pfWasVerified) \ + ( (This)->lpVtbl -> StrongNameSignatureVerificationEx(This,pwzFilePath,fForceVerification,pfWasVerified) ) + +#define ICLRStrongName_StrongNameSignatureVerificationFromImage(This,pbBase,dwLength,dwInFlags,pdwOutFlags) \ + ( (This)->lpVtbl -> StrongNameSignatureVerificationFromImage(This,pbBase,dwLength,dwInFlags,pdwOutFlags) ) + +#define ICLRStrongName_StrongNameTokenFromAssembly(This,pwzFilePath,ppbStrongNameToken,pcbStrongNameToken) \ + ( (This)->lpVtbl -> StrongNameTokenFromAssembly(This,pwzFilePath,ppbStrongNameToken,pcbStrongNameToken) ) + +#define ICLRStrongName_StrongNameTokenFromAssemblyEx(This,pwzFilePath,ppbStrongNameToken,pcbStrongNameToken,ppbPublicKeyBlob,pcbPublicKeyBlob) \ + ( (This)->lpVtbl -> StrongNameTokenFromAssemblyEx(This,pwzFilePath,ppbStrongNameToken,pcbStrongNameToken,ppbPublicKeyBlob,pcbPublicKeyBlob) ) + +#define ICLRStrongName_StrongNameTokenFromPublicKey(This,pbPublicKeyBlob,cbPublicKeyBlob,ppbStrongNameToken,pcbStrongNameToken) \ + ( (This)->lpVtbl -> StrongNameTokenFromPublicKey(This,pbPublicKeyBlob,cbPublicKeyBlob,ppbStrongNameToken,pcbStrongNameToken) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ICLRStrongName_INTERFACE_DEFINED__ */ + + +#ifndef __ICLRStrongName2_INTERFACE_DEFINED__ +#define __ICLRStrongName2_INTERFACE_DEFINED__ + +/* interface ICLRStrongName2 */ +/* [object][local][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRStrongName2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C22ED5C5-4B59-4975-90EB-85EA55C0069B") + ICLRStrongName2 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE StrongNameGetPublicKeyEx( + /* [in] */ LPCWSTR pwzKeyContainer, + /* [in] */ BYTE *pbKeyBlob, + /* [in] */ ULONG cbKeyBlob, + /* [out] */ BYTE **ppbPublicKeyBlob, + /* [out] */ ULONG *pcbPublicKeyBlob, + /* [in] */ ULONG uHashAlgId, + /* [in] */ ULONG uReserved) = 0; + + virtual HRESULT STDMETHODCALLTYPE StrongNameSignatureVerificationEx2( + /* [in] */ LPCWSTR wszFilePath, + /* [in] */ BOOLEAN fForceVerification, + /* [in] */ BYTE *pbEcmaPublicKey, + /* [in] */ DWORD cbEcmaPublicKey, + /* [out] */ BOOLEAN *pfWasVerified) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ICLRStrongName2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRStrongName2 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRStrongName2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRStrongName2 * This); + + HRESULT ( STDMETHODCALLTYPE *StrongNameGetPublicKeyEx )( + ICLRStrongName2 * This, + /* [in] */ LPCWSTR pwzKeyContainer, + /* [in] */ BYTE *pbKeyBlob, + /* [in] */ ULONG cbKeyBlob, + /* [out] */ BYTE **ppbPublicKeyBlob, + /* [out] */ ULONG *pcbPublicKeyBlob, + /* [in] */ ULONG uHashAlgId, + /* [in] */ ULONG uReserved); + + HRESULT ( STDMETHODCALLTYPE *StrongNameSignatureVerificationEx2 )( + ICLRStrongName2 * This, + /* [in] */ LPCWSTR wszFilePath, + /* [in] */ BOOLEAN fForceVerification, + /* [in] */ BYTE *pbEcmaPublicKey, + /* [in] */ DWORD cbEcmaPublicKey, + /* [out] */ BOOLEAN *pfWasVerified); + + END_INTERFACE + } ICLRStrongName2Vtbl; + + interface ICLRStrongName2 + { + CONST_VTBL struct ICLRStrongName2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRStrongName2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ICLRStrongName2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ICLRStrongName2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ICLRStrongName2_StrongNameGetPublicKeyEx(This,pwzKeyContainer,pbKeyBlob,cbKeyBlob,ppbPublicKeyBlob,pcbPublicKeyBlob,uHashAlgId,uReserved) \ + ( (This)->lpVtbl -> StrongNameGetPublicKeyEx(This,pwzKeyContainer,pbKeyBlob,cbKeyBlob,ppbPublicKeyBlob,pcbPublicKeyBlob,uHashAlgId,uReserved) ) + +#define ICLRStrongName2_StrongNameSignatureVerificationEx2(This,wszFilePath,fForceVerification,pbEcmaPublicKey,cbEcmaPublicKey,pfWasVerified) \ + ( (This)->lpVtbl -> StrongNameSignatureVerificationEx2(This,wszFilePath,fForceVerification,pbEcmaPublicKey,cbEcmaPublicKey,pfWasVerified) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ICLRStrongName2_INTERFACE_DEFINED__ */ + + + +#ifndef __CLRMetaHost_LIBRARY_DEFINED__ +#define __CLRMetaHost_LIBRARY_DEFINED__ + +/* library CLRMetaHost */ +/* [version][uuid] */ + + + + + + + + + +EXTERN_C const IID LIBID_CLRMetaHost; +#endif /* __CLRMetaHost_LIBRARY_DEFINED__ */ + +/* interface __MIDL_itf_metahost_0000_0009 */ +/* [local] */ + +#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + + +extern RPC_IF_HANDLE __MIDL_itf_metahost_0000_0009_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_metahost_0000_0009_v0_0_s_ifspec; + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/mscoree.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/mscoree.h new file mode 100644 index 0000000..acbc481 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/mscoree.h @@ -0,0 +1,10074 @@ +// +// Copyright (C) Microsoft. All rights reserved. +// + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 6.00.0366 */ +//@@MIDL_FILE_HEADING( ) + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __mscoree_h__ +#define __mscoree_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IObjectHandle_FWD_DEFINED__ +#define __IObjectHandle_FWD_DEFINED__ +typedef interface IObjectHandle IObjectHandle; +#endif /* __IObjectHandle_FWD_DEFINED__ */ + + +#ifndef __IAppDomainBinding_FWD_DEFINED__ +#define __IAppDomainBinding_FWD_DEFINED__ +typedef interface IAppDomainBinding IAppDomainBinding; +#endif /* __IAppDomainBinding_FWD_DEFINED__ */ + + +#ifndef __IGCThreadControl_FWD_DEFINED__ +#define __IGCThreadControl_FWD_DEFINED__ +typedef interface IGCThreadControl IGCThreadControl; +#endif /* __IGCThreadControl_FWD_DEFINED__ */ + + +#ifndef __IGCHostControl_FWD_DEFINED__ +#define __IGCHostControl_FWD_DEFINED__ +typedef interface IGCHostControl IGCHostControl; +#endif /* __IGCHostControl_FWD_DEFINED__ */ + + +#ifndef __ICorThreadpool_FWD_DEFINED__ +#define __ICorThreadpool_FWD_DEFINED__ +typedef interface ICorThreadpool ICorThreadpool; +#endif /* __ICorThreadpool_FWD_DEFINED__ */ + + +#ifndef __IDebuggerThreadControl_FWD_DEFINED__ +#define __IDebuggerThreadControl_FWD_DEFINED__ +typedef interface IDebuggerThreadControl IDebuggerThreadControl; +#endif /* __IDebuggerThreadControl_FWD_DEFINED__ */ + + +#ifndef __IDebuggerInfo_FWD_DEFINED__ +#define __IDebuggerInfo_FWD_DEFINED__ +typedef interface IDebuggerInfo IDebuggerInfo; +#endif /* __IDebuggerInfo_FWD_DEFINED__ */ + + +#ifndef __ICorConfiguration_FWD_DEFINED__ +#define __ICorConfiguration_FWD_DEFINED__ +typedef interface ICorConfiguration ICorConfiguration; +#endif /* __ICorConfiguration_FWD_DEFINED__ */ + + +#ifndef __ICorRuntimeHost_FWD_DEFINED__ +#define __ICorRuntimeHost_FWD_DEFINED__ +typedef interface ICorRuntimeHost ICorRuntimeHost; +#endif /* __ICorRuntimeHost_FWD_DEFINED__ */ + + +#ifndef __ICLRMemoryNotificationCallback_FWD_DEFINED__ +#define __ICLRMemoryNotificationCallback_FWD_DEFINED__ +typedef interface ICLRMemoryNotificationCallback ICLRMemoryNotificationCallback; +#endif /* __ICLRMemoryNotificationCallback_FWD_DEFINED__ */ + + +#ifndef __IHostMalloc_FWD_DEFINED__ +#define __IHostMalloc_FWD_DEFINED__ +typedef interface IHostMalloc IHostMalloc; +#endif /* __IHostMalloc_FWD_DEFINED__ */ + + +#ifndef __IHostMemoryManager_FWD_DEFINED__ +#define __IHostMemoryManager_FWD_DEFINED__ +typedef interface IHostMemoryManager IHostMemoryManager; +#endif /* __IHostMemoryManager_FWD_DEFINED__ */ + + +#ifndef __ICLRTask_FWD_DEFINED__ +#define __ICLRTask_FWD_DEFINED__ +typedef interface ICLRTask ICLRTask; +#endif /* __ICLRTask_FWD_DEFINED__ */ + + +#ifndef __IHostTask_FWD_DEFINED__ +#define __IHostTask_FWD_DEFINED__ +typedef interface IHostTask IHostTask; +#endif /* __IHostTask_FWD_DEFINED__ */ + + +#ifndef __ICLRTaskManager_FWD_DEFINED__ +#define __ICLRTaskManager_FWD_DEFINED__ +typedef interface ICLRTaskManager ICLRTaskManager; +#endif /* __ICLRTaskManager_FWD_DEFINED__ */ + + +#ifndef __IHostTaskManager_FWD_DEFINED__ +#define __IHostTaskManager_FWD_DEFINED__ +typedef interface IHostTaskManager IHostTaskManager; +#endif /* __IHostTaskManager_FWD_DEFINED__ */ + + +#ifndef __IHostThreadpoolManager_FWD_DEFINED__ +#define __IHostThreadpoolManager_FWD_DEFINED__ +typedef interface IHostThreadpoolManager IHostThreadpoolManager; +#endif /* __IHostThreadpoolManager_FWD_DEFINED__ */ + + +#ifndef __ICLRIoCompletionManager_FWD_DEFINED__ +#define __ICLRIoCompletionManager_FWD_DEFINED__ +typedef interface ICLRIoCompletionManager ICLRIoCompletionManager; +#endif /* __ICLRIoCompletionManager_FWD_DEFINED__ */ + + +#ifndef __IHostIoCompletionManager_FWD_DEFINED__ +#define __IHostIoCompletionManager_FWD_DEFINED__ +typedef interface IHostIoCompletionManager IHostIoCompletionManager; +#endif /* __IHostIoCompletionManager_FWD_DEFINED__ */ + + +#ifndef __ICLRDebugManager_FWD_DEFINED__ +#define __ICLRDebugManager_FWD_DEFINED__ +typedef interface ICLRDebugManager ICLRDebugManager; +#endif /* __ICLRDebugManager_FWD_DEFINED__ */ + + +#ifndef __ICLRErrorReportingManager_FWD_DEFINED__ +#define __ICLRErrorReportingManager_FWD_DEFINED__ +typedef interface ICLRErrorReportingManager ICLRErrorReportingManager; +#endif /* __ICLRErrorReportingManager_FWD_DEFINED__ */ + + +#ifndef __IHostCrst_FWD_DEFINED__ +#define __IHostCrst_FWD_DEFINED__ +typedef interface IHostCrst IHostCrst; +#endif /* __IHostCrst_FWD_DEFINED__ */ + + +#ifndef __IHostAutoEvent_FWD_DEFINED__ +#define __IHostAutoEvent_FWD_DEFINED__ +typedef interface IHostAutoEvent IHostAutoEvent; +#endif /* __IHostAutoEvent_FWD_DEFINED__ */ + + +#ifndef __IHostManualEvent_FWD_DEFINED__ +#define __IHostManualEvent_FWD_DEFINED__ +typedef interface IHostManualEvent IHostManualEvent; +#endif /* __IHostManualEvent_FWD_DEFINED__ */ + + +#ifndef __IHostSemaphore_FWD_DEFINED__ +#define __IHostSemaphore_FWD_DEFINED__ +typedef interface IHostSemaphore IHostSemaphore; +#endif /* __IHostSemaphore_FWD_DEFINED__ */ + + +#ifndef __ICLRSyncManager_FWD_DEFINED__ +#define __ICLRSyncManager_FWD_DEFINED__ +typedef interface ICLRSyncManager ICLRSyncManager; +#endif /* __ICLRSyncManager_FWD_DEFINED__ */ + + +#ifndef __IHostSyncManager_FWD_DEFINED__ +#define __IHostSyncManager_FWD_DEFINED__ +typedef interface IHostSyncManager IHostSyncManager; +#endif /* __IHostSyncManager_FWD_DEFINED__ */ + + +#ifndef __ICLRPolicyManager_FWD_DEFINED__ +#define __ICLRPolicyManager_FWD_DEFINED__ +typedef interface ICLRPolicyManager ICLRPolicyManager; +#endif /* __ICLRPolicyManager_FWD_DEFINED__ */ + + +#ifndef __IHostPolicyManager_FWD_DEFINED__ +#define __IHostPolicyManager_FWD_DEFINED__ +typedef interface IHostPolicyManager IHostPolicyManager; +#endif /* __IHostPolicyManager_FWD_DEFINED__ */ + + +#ifndef __IActionOnCLREvent_FWD_DEFINED__ +#define __IActionOnCLREvent_FWD_DEFINED__ +typedef interface IActionOnCLREvent IActionOnCLREvent; +#endif /* __IActionOnCLREvent_FWD_DEFINED__ */ + + +#ifndef __ICLROnEventManager_FWD_DEFINED__ +#define __ICLROnEventManager_FWD_DEFINED__ +typedef interface ICLROnEventManager ICLROnEventManager; +#endif /* __ICLROnEventManager_FWD_DEFINED__ */ + + +#ifndef __IHostGCManager_FWD_DEFINED__ +#define __IHostGCManager_FWD_DEFINED__ +typedef interface IHostGCManager IHostGCManager; +#endif /* __IHostGCManager_FWD_DEFINED__ */ + + +#ifndef __ICLRGCManager_FWD_DEFINED__ +#define __ICLRGCManager_FWD_DEFINED__ +typedef interface ICLRGCManager ICLRGCManager; +#endif /* __ICLRGCManager_FWD_DEFINED__ */ + + +#ifndef __ICLRAssemblyReferenceList_FWD_DEFINED__ +#define __ICLRAssemblyReferenceList_FWD_DEFINED__ +typedef interface ICLRAssemblyReferenceList ICLRAssemblyReferenceList; +#endif /* __ICLRAssemblyReferenceList_FWD_DEFINED__ */ + + +#ifndef __ICLRReferenceAssemblyEnum_FWD_DEFINED__ +#define __ICLRReferenceAssemblyEnum_FWD_DEFINED__ +typedef interface ICLRReferenceAssemblyEnum ICLRReferenceAssemblyEnum; +#endif /* __ICLRReferenceAssemblyEnum_FWD_DEFINED__ */ + + +#ifndef __ICLRProbingAssemblyEnum_FWD_DEFINED__ +#define __ICLRProbingAssemblyEnum_FWD_DEFINED__ +typedef interface ICLRProbingAssemblyEnum ICLRProbingAssemblyEnum; +#endif /* __ICLRProbingAssemblyEnum_FWD_DEFINED__ */ + + +#ifndef __ICLRAssemblyIdentityManager_FWD_DEFINED__ +#define __ICLRAssemblyIdentityManager_FWD_DEFINED__ +typedef interface ICLRAssemblyIdentityManager ICLRAssemblyIdentityManager; +#endif /* __ICLRAssemblyIdentityManager_FWD_DEFINED__ */ + + +#ifndef __ICLRHostBindingPolicyManager_FWD_DEFINED__ +#define __ICLRHostBindingPolicyManager_FWD_DEFINED__ +typedef interface ICLRHostBindingPolicyManager ICLRHostBindingPolicyManager; +#endif /* __ICLRHostBindingPolicyManager_FWD_DEFINED__ */ + + +#ifndef __IHostAssemblyStore_FWD_DEFINED__ +#define __IHostAssemblyStore_FWD_DEFINED__ +typedef interface IHostAssemblyStore IHostAssemblyStore; +#endif /* __IHostAssemblyStore_FWD_DEFINED__ */ + + +#ifndef __IHostAssemblyManager_FWD_DEFINED__ +#define __IHostAssemblyManager_FWD_DEFINED__ +typedef interface IHostAssemblyManager IHostAssemblyManager; +#endif /* __IHostAssemblyManager_FWD_DEFINED__ */ + + +#ifndef __IHostControl_FWD_DEFINED__ +#define __IHostControl_FWD_DEFINED__ +typedef interface IHostControl IHostControl; +#endif /* __IHostControl_FWD_DEFINED__ */ + + +#ifndef __ICLRControl_FWD_DEFINED__ +#define __ICLRControl_FWD_DEFINED__ +typedef interface ICLRControl ICLRControl; +#endif /* __ICLRControl_FWD_DEFINED__ */ + + +#ifndef __ICLRRuntimeHost_FWD_DEFINED__ +#define __ICLRRuntimeHost_FWD_DEFINED__ +typedef interface ICLRRuntimeHost ICLRRuntimeHost; +#endif /* __ICLRRuntimeHost_FWD_DEFINED__ */ + + +#ifndef __ICLRHostProtectionManager_FWD_DEFINED__ +#define __ICLRHostProtectionManager_FWD_DEFINED__ +typedef interface ICLRHostProtectionManager ICLRHostProtectionManager; +#endif /* __ICLRHostProtectionManager_FWD_DEFINED__ */ + + +#ifndef __ITypeName_FWD_DEFINED__ +#define __ITypeName_FWD_DEFINED__ +typedef interface ITypeName ITypeName; +#endif /* __ITypeName_FWD_DEFINED__ */ + + +#ifndef __ITypeNameBuilder_FWD_DEFINED__ +#define __ITypeNameBuilder_FWD_DEFINED__ +typedef interface ITypeNameBuilder ITypeNameBuilder; +#endif /* __ITypeNameBuilder_FWD_DEFINED__ */ + + +#ifndef __ITypeNameFactory_FWD_DEFINED__ +#define __ITypeNameFactory_FWD_DEFINED__ +typedef interface ITypeNameFactory ITypeNameFactory; +#endif /* __ITypeNameFactory_FWD_DEFINED__ */ + + +#ifndef __IApartmentCallback_FWD_DEFINED__ +#define __IApartmentCallback_FWD_DEFINED__ +typedef interface IApartmentCallback IApartmentCallback; +#endif /* __IApartmentCallback_FWD_DEFINED__ */ + + +#ifndef __IManagedObject_FWD_DEFINED__ +#define __IManagedObject_FWD_DEFINED__ +typedef interface IManagedObject IManagedObject; +#endif /* __IManagedObject_FWD_DEFINED__ */ + + +#ifndef __ICatalogServices_FWD_DEFINED__ +#define __ICatalogServices_FWD_DEFINED__ +typedef interface ICatalogServices ICatalogServices; +#endif /* __ICatalogServices_FWD_DEFINED__ */ + + +#ifndef __ComCallUnmarshal_FWD_DEFINED__ +#define __ComCallUnmarshal_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class ComCallUnmarshal ComCallUnmarshal; +#else +typedef struct ComCallUnmarshal ComCallUnmarshal; +#endif /* __cplusplus */ + +#endif /* __ComCallUnmarshal_FWD_DEFINED__ */ + + +#ifndef __CorRuntimeHost_FWD_DEFINED__ +#define __CorRuntimeHost_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CorRuntimeHost CorRuntimeHost; +#else +typedef struct CorRuntimeHost CorRuntimeHost; +#endif /* __cplusplus */ + +#endif /* __CorRuntimeHost_FWD_DEFINED__ */ + + +#ifndef __CLRRuntimeHost_FWD_DEFINED__ +#define __CLRRuntimeHost_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CLRRuntimeHost CLRRuntimeHost; +#else +typedef struct CLRRuntimeHost CLRRuntimeHost; +#endif /* __cplusplus */ + +#endif /* __CLRRuntimeHost_FWD_DEFINED__ */ + + +#ifndef __TypeNameFactory_FWD_DEFINED__ +#define __TypeNameFactory_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class TypeNameFactory TypeNameFactory; +#else +typedef struct TypeNameFactory TypeNameFactory; +#endif /* __cplusplus */ + +#endif /* __TypeNameFactory_FWD_DEFINED__ */ + + +#ifndef __IHostSecurityContext_FWD_DEFINED__ +#define __IHostSecurityContext_FWD_DEFINED__ +typedef interface IHostSecurityContext IHostSecurityContext; +#endif /* __IHostSecurityContext_FWD_DEFINED__ */ + + +#ifndef __IHostSecurityManager_FWD_DEFINED__ +#define __IHostSecurityManager_FWD_DEFINED__ +typedef interface IHostSecurityManager IHostSecurityManager; +#endif /* __IHostSecurityManager_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" +#include "gchost.h" +#include "ivalidator.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_mscoree_0000 */ +/* [local] */ + +#define CLR_MAJOR_VERSION ( 2 ) + +#define CLR_MINOR_VERSION ( 0 ) + +#define CLR_BUILD_VERSION ( 50727 ) + +#define CLR_ASSEMBLY_MAJOR_VERSION ( 2 ) + +#define CLR_ASSEMBLY_MINOR_VERSION ( 0 ) + +#define CLR_ASSEMBLY_BUILD_VERSION ( 0 ) + +EXTERN_GUID(LIBID_mscoree, 0x5477469e,0x83b1,0x11d2,0x8b,0x49,0x00,0xa0,0xc9,0xb7,0xc9,0xc4); +EXTERN_GUID(CLSID_CorRuntimeHost, 0xcb2f6723, 0xab3a, 0x11d2, 0x9c, 0x40, 0x00, 0xc0, 0x4f, 0xa3, 0x0a, 0x3e); +EXTERN_GUID(CLSID_TypeNameFactory, 0xB81FF171, 0x20F3, 0x11d2, 0x8d, 0xcc, 0x00, 0xa0, 0xc9, 0xb0, 0x05, 0x25); +EXTERN_GUID(CLSID_CLRRuntimeHost, 0x90F1A06E, 0x7712, 0x4762, 0x86, 0xB5, 0x7A, 0x5E, 0xBA, 0x6B, 0xDB, 0x02); +EXTERN_GUID(CLSID_ComCallUnmarshal, 0x3F281000,0xE95A,0x11d2,0x88,0x6B,0x00,0xC0,0x4F,0x86,0x9F,0x04); +EXTERN_GUID(IID_IObjectHandle, 0xc460e2b4, 0xe199, 0x412a, 0x84, 0x56, 0x84, 0xdc, 0x3e, 0x48, 0x38, 0xc3); +EXTERN_GUID(IID_IManagedObject, 0xc3fcc19e, 0xa970, 0x11d2, 0x8b, 0x5a, 0x00, 0xa0, 0xc9, 0xb7, 0xc9, 0xc4); +EXTERN_GUID(IID_IApartmentCallback, 0x178e5337, 0x1528, 0x4591, 0xb1, 0xc9, 0x1c, 0x6e, 0x48, 0x46, 0x86, 0xd8); +EXTERN_GUID(IID_ICatalogServices, 0x04c6be1e, 0x1db1, 0x4058, 0xab, 0x7a, 0x70, 0x0c, 0xcc, 0xfb, 0xf2, 0x54); +EXTERN_GUID(IID_ICorRuntimeHost, 0xcb2f6722, 0xab3a, 0x11d2, 0x9c, 0x40, 0x00, 0xc0, 0x4f, 0xa3, 0x0a, 0x3e); +EXTERN_GUID(IID_ICorThreadpool, 0x84680D3A, 0xB2C1, 0x46e8, 0xAC, 0xC2, 0xDB, 0xC0, 0xA3, 0x59, 0x15, 0x9A); +EXTERN_GUID(IID_ICLRDebugManager, 0xdcaec6, 0x2ac0, 0x43a9, 0xac, 0xf9, 0x1e, 0x36, 0xc1, 0x39, 0xb1, 0xd); +EXTERN_GUID(IID_ICLRErrorReportingManager, 0x980d2f1a, 0xbf79, 0x4c08, 0x81, 0x2a, 0xbb, 0x97, 0x78, 0x92, 0x8f, 0x78); +EXTERN_GUID(IID_IHostMemoryNeededCallback, 0x47EB8E57, 0x0846, 0x4546, 0xAF, 0x76, 0x6F, 0x42, 0xFC, 0xFC, 0x26, 0x49); +EXTERN_GUID(IID_IHostMalloc, 0x1831991C, 0xCC53, 0x4A31, 0xB2, 0x18, 0x04, 0xE9, 0x10, 0x44, 0x64, 0x79); +EXTERN_GUID(IID_IHostMemoryManager, 0x7BC698D1, 0xF9E3, 0x4460, 0x9C, 0xDE, 0xD0, 0x42, 0x48, 0xE9, 0xFA, 0x25); +EXTERN_GUID(IID_ICLRTask, 0x28E66A4A, 0x9906, 0x4225, 0xB2, 0x31, 0x91, 0x87, 0xc3, 0xeb, 0x86, 0x11); +EXTERN_GUID(IID_IHostTask, 0xC2275828, 0xC4B1, 0x4B55, 0x82, 0xC9, 0x92, 0x13, 0x5F, 0x74, 0xDF, 0x1A); +EXTERN_GUID(IID_ICLRTaskManager, 0x4862efbe, 0x3ae5, 0x44f8, 0x8F, 0xEB, 0x34, 0x61, 0x90, 0xeE, 0x8A, 0x34); +EXTERN_GUID(IID_IHostTaskManager, 0x997FF24C, 0x43B7, 0x4352, 0x86, 0x67, 0x0D, 0xC0, 0x4F, 0xAF, 0xD3, 0x54); +EXTERN_GUID(IID_IHostThreadpoolManager, 0x983D50E2, 0xCB15, 0x466B, 0x80, 0xFC, 0x84, 0x5D, 0xC6, 0xE8, 0xC5, 0xFD); +EXTERN_GUID(IID_ICLRIoCompletionManager, 0x2D74CE86, 0xB8D6, 0x4C84, 0xB3, 0xA7, 0x97, 0x68, 0x93, 0x3B, 0x3C, 0x12); +EXTERN_GUID(IID_ICLRGCManager, 0x54D9007E, 0xA8E2, 0x4885, 0xB7, 0xBF, 0xF9, 0x98, 0xDE, 0xEE, 0x4F, 0x2A); +EXTERN_GUID(IID_IHostIoCompletionManager, 0x8BDE9D80, 0xEC06, 0x41D6, 0x83, 0xE6, 0x22, 0x58, 0x0E, 0xFF, 0xCC, 0x20); +EXTERN_GUID(IID_IHostSyncManager, 0x234330c7, 0x5f10, 0x4f20, 0x96, 0x15, 0x51, 0x22, 0xda, 0xb7, 0xa0, 0xac); +EXTERN_GUID(IID_IHostCrst, 0x6DF710A6, 0x26A4, 0x4a65, 0x8c, 0xd5, 0x72, 0x37, 0xb8, 0xbd, 0xa8, 0xdc); +EXTERN_GUID(IID_IHostAutoEvent, 0x50B0CFCE, 0x4063, 0x4278, 0x96, 0x73, 0xe5, 0xcb, 0x4e, 0xd0, 0xbd, 0xb8); +EXTERN_GUID(IID_IHostManualEvent, 0x1BF4EC38, 0xAFFE, 0x4fb9, 0x85, 0xa6, 0x52, 0x52, 0x68, 0xf1, 0x5b, 0x54); +EXTERN_GUID(IID_IHostSemaphore, 0x855efd47, 0xcc09, 0x463a, 0xa9, 0x7d, 0x16, 0xac, 0xab, 0x88, 0x26, 0x61); +EXTERN_GUID(IID_ICLRSyncManager, 0x55FF199D, 0xAD21, 0x48f9, 0xa1, 0x6c, 0xf2, 0x4e, 0xbb, 0xb8, 0x72, 0x7d); +EXTERN_GUID(IID_ICLRPolicyManager, 0x7D290010, 0xD781, 0x45da, 0xA6, 0xF8, 0xAA, 0x5D, 0x71, 0x1A, 0x73, 0x0E); +EXTERN_GUID(IID_IHostPolicyManager, 0x7AE49844, 0xB1E3, 0x4683, 0xBA, 0x7C, 0x1E, 0x82, 0x12, 0xEA, 0x3B, 0x79); +EXTERN_GUID(IID_IHostGCManager, 0x5D4EC34E, 0xF248, 0x457B, 0xB6, 0x03, 0x25, 0x5F, 0xAA, 0xBA, 0x0D, 0x21); +EXTERN_GUID(IID_IActionOnCLREvent, 0x607BE24B, 0xD91B, 0x4E28, 0xA2, 0x42, 0x61, 0x87, 0x1C, 0xE5, 0x6E, 0x35); +EXTERN_GUID(IID_ICLROnEventManager, 0x1D0E0132, 0xE64F, 0x493D, 0x92, 0x60, 0x02, 0x5C, 0x0E, 0x32, 0xC1, 0x75); +EXTERN_GUID(IID_ICLRRuntimeHost, 0x90F1A06C, 0x7712, 0x4762, 0x86, 0xB5, 0x7A, 0x5E, 0xBA, 0x6B, 0xDB, 0x02); +EXTERN_GUID(IID_ICLRHostProtectionManager, 0x89f25f5c, 0xceef, 0x43e1, 0x9c, 0xfa, 0xa6, 0x8c, 0xe8, 0x63, 0xaa, 0xac); +EXTERN_GUID(IID_IHostAssemblyStore, 0x7b102a88, 0x3f7f, 0x496d, 0x8f, 0xa2, 0xc3, 0x53, 0x74, 0xe0, 0x1a, 0xf3); +EXTERN_GUID(IID_IHostAssemblyManager, 0x613dabd7, 0x62b2, 0x493e, 0x9e, 0x65, 0xc1, 0xe3, 0x2a, 0x1e, 0x0c, 0x5e); +EXTERN_GUID(IID_IHostSecurityManager, 0x75ad2468, 0xa349, 0x4d02, 0xa7, 0x64, 0x76, 0xa6, 0x8a, 0xee, 0x0c, 0x4f); +EXTERN_GUID(IID_IHostSecurityContext, 0x7e573ce4, 0x343, 0x4423, 0x98, 0xd7, 0x63, 0x18, 0x34, 0x8a, 0x1d, 0x3c); +EXTERN_GUID(IID_ICLRAssemblyIdentityManager, 0x15f0a9da, 0x3ff6, 0x4393, 0x9d, 0xa9, 0xfd, 0xfd, 0x28, 0x4e, 0x69, 0x72); +EXTERN_GUID(IID_ITypeName, 0xB81FF171, 0x20F3, 0x11d2, 0x8d, 0xcc, 0x00, 0xa0, 0xc9, 0xb0, 0x05, 0x22); +EXTERN_GUID(IID_ICLRAssemblyReferenceList, 0x1b2c9750, 0x2e66, 0x4bda, 0x8b, 0x44, 0x0a, 0x64, 0x2c, 0x5c, 0xd7, 0x33); +EXTERN_GUID(IID_ICLRReferenceAssemblyEnum, 0xd509cb5d, 0xcf32, 0x4876, 0xae, 0x61, 0x67, 0x77, 0x0c, 0xf9, 0x19, 0x73); +EXTERN_GUID(IID_ICLRProbingAssemblyEnum, 0xd0c5fb1f, 0x416b, 0x4f97, 0x81, 0xf4, 0x7a, 0xc7, 0xdc, 0x24, 0xdd, 0x5d); +EXTERN_GUID(IID_ICLRHostBindingPolicyManager, 0x4b3545e7, 0x1856, 0x48c9, 0xa8, 0xba, 0x24, 0xb2, 0x1a, 0x75, 0x3c, 0x09); +EXTERN_GUID(IID_ITypeNameBuilder, 0xB81FF171, 0x20F3, 0x11d2, 0x8d, 0xcc, 0x00, 0xa0, 0xc9, 0xb0, 0x05, 0x23); +EXTERN_GUID(IID_ITypeNameFactory, 0xB81FF171, 0x20F3, 0x11d2, 0x8d, 0xcc, 0x00, 0xa0, 0xc9, 0xb0, 0x05, 0x21); +STDAPI GetCORSystemDirectory(LPWSTR pbuffer, DWORD cchBuffer, DWORD* dwLength); +STDAPI GetCORVersion(LPWSTR pbBuffer, DWORD cchBuffer, DWORD* dwLength); +STDAPI GetFileVersion(LPCWSTR szFilename, LPWSTR szBuffer, DWORD cchBuffer, DWORD* dwLength); +STDAPI GetCORRequiredVersion(LPWSTR pbuffer, DWORD cchBuffer, DWORD* dwLength); +STDAPI GetRequestedRuntimeInfo(LPCWSTR pExe, LPCWSTR pwszVersion, LPCWSTR pConfigurationFile, DWORD startupFlags, DWORD runtimeInfoFlags, LPWSTR pDirectory, DWORD dwDirectory, DWORD *dwDirectoryLength, LPWSTR pVersion, DWORD cchBuffer, DWORD* dwlength); +STDAPI GetRequestedRuntimeVersion(LPWSTR pExe, LPWSTR pVersion, DWORD cchBuffer, DWORD* dwLength); +STDAPI CorBindToRuntimeHost(LPCWSTR pwszVersion, LPCWSTR pwszBuildFlavor, LPCWSTR pwszHostConfigFile, VOID* pReserved, DWORD startupFlags, REFCLSID rclsid, REFIID riid, LPVOID FAR *ppv); +STDAPI CorBindToRuntimeEx(LPCWSTR pwszVersion, LPCWSTR pwszBuildFlavor, DWORD startupFlags, REFCLSID rclsid, REFIID riid, LPVOID FAR *ppv); +STDAPI CorBindToRuntimeByCfg(IStream* pCfgStream, DWORD reserved, DWORD startupFlags, REFCLSID rclsid,REFIID riid, LPVOID FAR* ppv); +STDAPI CorBindToRuntime(LPCWSTR pwszVersion, LPCWSTR pwszBuildFlavor, REFCLSID rclsid, REFIID riid, LPVOID FAR *ppv); +STDAPI CorBindToCurrentRuntime(LPCWSTR pwszFileName, REFCLSID rclsid, REFIID riid, LPVOID FAR *ppv); +STDAPI ClrCreateManagedInstance(LPCWSTR pTypeName, REFIID riid, void **ppObject); +void STDMETHODCALLTYPE CorMarkThreadInThreadPool(); +STDAPI RunDll32ShimW(HWND hwnd, HINSTANCE hinst, LPCWSTR lpszCmdLine, int nCmdShow); +STDAPI LoadLibraryShim(LPCWSTR szDllName, LPCWSTR szVersion, LPVOID pvReserved, HMODULE *phModDll); +STDAPI CallFunctionShim(LPCWSTR szDllName, LPCSTR szFunctionName, LPVOID lpvArgument1, LPVOID lpvArgument2, LPCWSTR szVersion, LPVOID pvReserved); +STDAPI GetRealProcAddress(LPCSTR pwszProcName, VOID** ppv); +void STDMETHODCALLTYPE CorExitProcess(int exitCode); +STDAPI LoadStringRC(UINT iResouceID, LPWSTR szBuffer, int iMax, int bQuiet); +STDAPI LoadStringRCEx(LCID lcid, UINT iResouceID, LPWSTR szBuffer, int iMax, int bQuiet, int *pcwchUsed); +typedef HRESULT (__stdcall *FLockClrVersionCallback) (); +STDAPI LockClrVersion(FLockClrVersionCallback hostCallback,FLockClrVersionCallback *pBeginHostSetup,FLockClrVersionCallback *pEndHostSetup); +STDAPI CreateDebuggingInterfaceFromVersion(int iDebuggerVersion, LPCWSTR szDebuggeeVersion, IUnknown ** ppCordb); +STDAPI GetVersionFromProcess(HANDLE hProcess, LPWSTR pVersion, DWORD cchBuffer, DWORD* dwLength); +typedef /* [public] */ +enum __MIDL___MIDL_itf_mscoree_0000_0001 + { HOST_TYPE_DEFAULT = 0, + HOST_TYPE_APPLAUNCH = 0x1, + HOST_TYPE_CORFLAG = 0x2 + } HOST_TYPE; + +STDAPI CorLaunchApplication(HOST_TYPE dwClickOnceHost, LPCWSTR pwzAppFullName, DWORD dwManifestPaths, LPCWSTR* ppwzManifestPaths, DWORD dwActivationData, LPCWSTR* ppwzActivationData, LPPROCESS_INFORMATION lpProcessInformation); +typedef HRESULT ( __stdcall *FExecuteInAppDomainCallback )( + void *cookie); + +typedef /* [public] */ +enum __MIDL___MIDL_itf_mscoree_0000_0002 + { STARTUP_CONCURRENT_GC = 0x1, + STARTUP_LOADER_OPTIMIZATION_MASK = 0x3 << 1, + STARTUP_LOADER_OPTIMIZATION_SINGLE_DOMAIN = 0x1 << 1, + STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN = 0x2 << 1, + STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN_HOST = 0x3 << 1, + STARTUP_LOADER_SAFEMODE = 0x10, + STARTUP_LOADER_SETPREFERENCE = 0x100, + STARTUP_SERVER_GC = 0x1000, + STARTUP_HOARD_GC_VM = 0x2000, + STARTUP_SINGLE_VERSION_HOSTING_INTERFACE = 0x4000, + STARTUP_LEGACY_IMPERSONATION = 0x10000, + STARTUP_DISABLE_COMMITTHREADSTACK = 0x20000, + STARTUP_ALWAYSFLOW_IMPERSONATION = 0x40000 + } STARTUP_FLAGS; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_mscoree_0000_0003 + { CLSID_RESOLUTION_DEFAULT = 0, + CLSID_RESOLUTION_REGISTERED = 0x1 + } CLSID_RESOLUTION_FLAGS; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_mscoree_0000_0004 + { RUNTIME_INFO_UPGRADE_VERSION = 0x1, + RUNTIME_INFO_REQUEST_IA64 = 0x2, + RUNTIME_INFO_REQUEST_AMD64 = 0x4, + RUNTIME_INFO_REQUEST_X86 = 0x8, + RUNTIME_INFO_DONT_RETURN_DIRECTORY = 0x10, + RUNTIME_INFO_DONT_RETURN_VERSION = 0x20, + RUNTIME_INFO_DONT_SHOW_ERROR_DIALOG = 0x40 + } RUNTIME_INFO_FLAGS; + +STDAPI GetRequestedRuntimeVersionForCLSID(REFCLSID rclsid, LPWSTR pVersion, DWORD cchBuffer, DWORD* dwLength, CLSID_RESOLUTION_FLAGS dwResolutionFlags); + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0000_v0_0_s_ifspec; + +#ifndef __IObjectHandle_INTERFACE_DEFINED__ +#define __IObjectHandle_INTERFACE_DEFINED__ + +/* interface IObjectHandle */ +/* [unique][helpstring][uuid][oleautomation][object] */ + + +EXTERN_C const IID IID_IObjectHandle; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C460E2B4-E199-412a-8456-84DC3E4838C3") + IObjectHandle : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Unwrap( + /* [retval][out] */ VARIANT *ppv) = 0; + + }; + +#else /* C style interface */ + + typedef struct IObjectHandleVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IObjectHandle * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IObjectHandle * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IObjectHandle * This); + + HRESULT ( STDMETHODCALLTYPE *Unwrap )( + IObjectHandle * This, + /* [retval][out] */ VARIANT *ppv); + + END_INTERFACE + } IObjectHandleVtbl; + + interface IObjectHandle + { + CONST_VTBL struct IObjectHandleVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IObjectHandle_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IObjectHandle_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IObjectHandle_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IObjectHandle_Unwrap(This,ppv) \ + (This)->lpVtbl -> Unwrap(This,ppv) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IObjectHandle_Unwrap_Proxy( + IObjectHandle * This, + /* [retval][out] */ VARIANT *ppv); + + +void __RPC_STUB IObjectHandle_Unwrap_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IObjectHandle_INTERFACE_DEFINED__ */ + + +#ifndef __IAppDomainBinding_INTERFACE_DEFINED__ +#define __IAppDomainBinding_INTERFACE_DEFINED__ + +/* interface IAppDomainBinding */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IAppDomainBinding; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5C2B07A7-1E98-11d3-872F-00C04F79ED0D") + IAppDomainBinding : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE OnAppDomain( + /* [in] */ IUnknown *pAppdomain) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAppDomainBindingVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAppDomainBinding * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAppDomainBinding * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAppDomainBinding * This); + + HRESULT ( STDMETHODCALLTYPE *OnAppDomain )( + IAppDomainBinding * This, + /* [in] */ IUnknown *pAppdomain); + + END_INTERFACE + } IAppDomainBindingVtbl; + + interface IAppDomainBinding + { + CONST_VTBL struct IAppDomainBindingVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAppDomainBinding_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAppDomainBinding_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAppDomainBinding_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAppDomainBinding_OnAppDomain(This,pAppdomain) \ + (This)->lpVtbl -> OnAppDomain(This,pAppdomain) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IAppDomainBinding_OnAppDomain_Proxy( + IAppDomainBinding * This, + /* [in] */ IUnknown *pAppdomain); + + +void __RPC_STUB IAppDomainBinding_OnAppDomain_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAppDomainBinding_INTERFACE_DEFINED__ */ + + +#ifndef __IGCThreadControl_INTERFACE_DEFINED__ +#define __IGCThreadControl_INTERFACE_DEFINED__ + +/* interface IGCThreadControl */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IGCThreadControl; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("F31D1788-C397-4725-87A5-6AF3472C2791") + IGCThreadControl : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ThreadIsBlockingForSuspension( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SuspensionStarting( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SuspensionEnding( + DWORD Generation) = 0; + + }; + +#else /* C style interface */ + + typedef struct IGCThreadControlVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IGCThreadControl * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IGCThreadControl * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IGCThreadControl * This); + + HRESULT ( STDMETHODCALLTYPE *ThreadIsBlockingForSuspension )( + IGCThreadControl * This); + + HRESULT ( STDMETHODCALLTYPE *SuspensionStarting )( + IGCThreadControl * This); + + HRESULT ( STDMETHODCALLTYPE *SuspensionEnding )( + IGCThreadControl * This, + DWORD Generation); + + END_INTERFACE + } IGCThreadControlVtbl; + + interface IGCThreadControl + { + CONST_VTBL struct IGCThreadControlVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IGCThreadControl_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IGCThreadControl_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IGCThreadControl_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IGCThreadControl_ThreadIsBlockingForSuspension(This) \ + (This)->lpVtbl -> ThreadIsBlockingForSuspension(This) + +#define IGCThreadControl_SuspensionStarting(This) \ + (This)->lpVtbl -> SuspensionStarting(This) + +#define IGCThreadControl_SuspensionEnding(This,Generation) \ + (This)->lpVtbl -> SuspensionEnding(This,Generation) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IGCThreadControl_ThreadIsBlockingForSuspension_Proxy( + IGCThreadControl * This); + + +void __RPC_STUB IGCThreadControl_ThreadIsBlockingForSuspension_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IGCThreadControl_SuspensionStarting_Proxy( + IGCThreadControl * This); + + +void __RPC_STUB IGCThreadControl_SuspensionStarting_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IGCThreadControl_SuspensionEnding_Proxy( + IGCThreadControl * This, + DWORD Generation); + + +void __RPC_STUB IGCThreadControl_SuspensionEnding_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IGCThreadControl_INTERFACE_DEFINED__ */ + + +#ifndef __IGCHostControl_INTERFACE_DEFINED__ +#define __IGCHostControl_INTERFACE_DEFINED__ + +/* interface IGCHostControl */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IGCHostControl; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5513D564-8374-4cb9-AED9-0083F4160A1D") + IGCHostControl : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE RequestVirtualMemLimit( + /* [in] */ SIZE_T sztMaxVirtualMemMB, + /* [out][in] */ SIZE_T *psztNewMaxVirtualMemMB) = 0; + + }; + +#else /* C style interface */ + + typedef struct IGCHostControlVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IGCHostControl * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IGCHostControl * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IGCHostControl * This); + + HRESULT ( STDMETHODCALLTYPE *RequestVirtualMemLimit )( + IGCHostControl * This, + /* [in] */ SIZE_T sztMaxVirtualMemMB, + /* [out][in] */ SIZE_T *psztNewMaxVirtualMemMB); + + END_INTERFACE + } IGCHostControlVtbl; + + interface IGCHostControl + { + CONST_VTBL struct IGCHostControlVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IGCHostControl_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IGCHostControl_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IGCHostControl_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IGCHostControl_RequestVirtualMemLimit(This,sztMaxVirtualMemMB,psztNewMaxVirtualMemMB) \ + (This)->lpVtbl -> RequestVirtualMemLimit(This,sztMaxVirtualMemMB,psztNewMaxVirtualMemMB) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IGCHostControl_RequestVirtualMemLimit_Proxy( + IGCHostControl * This, + /* [in] */ SIZE_T sztMaxVirtualMemMB, + /* [out][in] */ SIZE_T *psztNewMaxVirtualMemMB); + + +void __RPC_STUB IGCHostControl_RequestVirtualMemLimit_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IGCHostControl_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0128 */ +/* [local] */ + +#if (_MSC_VER < 1300 || _WIN32_WINNT < 0x0500) +typedef VOID ( __stdcall *WAITORTIMERCALLBACK )( + PVOID __MIDL_0011, + BOOL __MIDL_0012); + +#endif // (_MSC_VER < 1300 || _WIN32_WINNT < 0x0500) +#ifdef __midl +typedef DWORD ( __stdcall *LPTHREAD_START_ROUTINE )( + LPVOID lpThreadParameter); + +typedef VOID ( *LPOVERLAPPED_COMPLETION_ROUTINE )( + DWORD dwErrorCode, + DWORD dwNumberOfBytesTransfered, + LPVOID lpOverlapped); + +#endif // __midl +typedef VOID ( __stdcall *PTLS_CALLBACK_FUNCTION )( + PVOID __MIDL_0016); + + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0128_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0128_v0_0_s_ifspec; + +#ifndef __ICorThreadpool_INTERFACE_DEFINED__ +#define __ICorThreadpool_INTERFACE_DEFINED__ + +/* interface ICorThreadpool */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICorThreadpool; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("84680D3A-B2C1-46e8-ACC2-DBC0A359159A") + ICorThreadpool : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE CorRegisterWaitForSingleObject( + /* [in] */ HANDLE *phNewWaitObject, + /* [in] */ HANDLE hWaitObject, + /* [in] */ WAITORTIMERCALLBACK Callback, + /* [in] */ PVOID Context, + /* [in] */ ULONG timeout, + /* [in] */ BOOL executeOnlyOnce, + /* [out] */ BOOL *result) = 0; + + virtual HRESULT STDMETHODCALLTYPE CorUnregisterWait( + /* [in] */ HANDLE hWaitObject, + /* [in] */ HANDLE CompletionEvent, + /* [out] */ BOOL *result) = 0; + + virtual HRESULT STDMETHODCALLTYPE CorQueueUserWorkItem( + /* [in] */ LPTHREAD_START_ROUTINE Function, + /* [in] */ PVOID Context, + /* [in] */ BOOL executeOnlyOnce, + /* [out] */ BOOL *result) = 0; + + virtual HRESULT STDMETHODCALLTYPE CorCreateTimer( + /* [in] */ HANDLE *phNewTimer, + /* [in] */ WAITORTIMERCALLBACK Callback, + /* [in] */ PVOID Parameter, + /* [in] */ DWORD DueTime, + /* [in] */ DWORD Period, + /* [out] */ BOOL *result) = 0; + + virtual HRESULT STDMETHODCALLTYPE CorChangeTimer( + /* [in] */ HANDLE Timer, + /* [in] */ ULONG DueTime, + /* [in] */ ULONG Period, + /* [out] */ BOOL *result) = 0; + + virtual HRESULT STDMETHODCALLTYPE CorDeleteTimer( + /* [in] */ HANDLE Timer, + /* [in] */ HANDLE CompletionEvent, + /* [out] */ BOOL *result) = 0; + + virtual HRESULT STDMETHODCALLTYPE CorBindIoCompletionCallback( + /* [in] */ HANDLE fileHandle, + /* [in] */ LPOVERLAPPED_COMPLETION_ROUTINE callback) = 0; + + virtual HRESULT STDMETHODCALLTYPE CorCallOrQueueUserWorkItem( + /* [in] */ LPTHREAD_START_ROUTINE Function, + /* [in] */ PVOID Context, + /* [out] */ BOOL *result) = 0; + + virtual HRESULT STDMETHODCALLTYPE CorSetMaxThreads( + /* [in] */ DWORD MaxWorkerThreads, + /* [in] */ DWORD MaxIOCompletionThreads) = 0; + + virtual HRESULT STDMETHODCALLTYPE CorGetMaxThreads( + /* [out] */ DWORD *MaxWorkerThreads, + /* [out] */ DWORD *MaxIOCompletionThreads) = 0; + + virtual HRESULT STDMETHODCALLTYPE CorGetAvailableThreads( + /* [out] */ DWORD *AvailableWorkerThreads, + /* [out] */ DWORD *AvailableIOCompletionThreads) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICorThreadpoolVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICorThreadpool * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICorThreadpool * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICorThreadpool * This); + + HRESULT ( STDMETHODCALLTYPE *CorRegisterWaitForSingleObject )( + ICorThreadpool * This, + /* [in] */ HANDLE *phNewWaitObject, + /* [in] */ HANDLE hWaitObject, + /* [in] */ WAITORTIMERCALLBACK Callback, + /* [in] */ PVOID Context, + /* [in] */ ULONG timeout, + /* [in] */ BOOL executeOnlyOnce, + /* [out] */ BOOL *result); + + HRESULT ( STDMETHODCALLTYPE *CorUnregisterWait )( + ICorThreadpool * This, + /* [in] */ HANDLE hWaitObject, + /* [in] */ HANDLE CompletionEvent, + /* [out] */ BOOL *result); + + HRESULT ( STDMETHODCALLTYPE *CorQueueUserWorkItem )( + ICorThreadpool * This, + /* [in] */ LPTHREAD_START_ROUTINE Function, + /* [in] */ PVOID Context, + /* [in] */ BOOL executeOnlyOnce, + /* [out] */ BOOL *result); + + HRESULT ( STDMETHODCALLTYPE *CorCreateTimer )( + ICorThreadpool * This, + /* [in] */ HANDLE *phNewTimer, + /* [in] */ WAITORTIMERCALLBACK Callback, + /* [in] */ PVOID Parameter, + /* [in] */ DWORD DueTime, + /* [in] */ DWORD Period, + /* [out] */ BOOL *result); + + HRESULT ( STDMETHODCALLTYPE *CorChangeTimer )( + ICorThreadpool * This, + /* [in] */ HANDLE Timer, + /* [in] */ ULONG DueTime, + /* [in] */ ULONG Period, + /* [out] */ BOOL *result); + + HRESULT ( STDMETHODCALLTYPE *CorDeleteTimer )( + ICorThreadpool * This, + /* [in] */ HANDLE Timer, + /* [in] */ HANDLE CompletionEvent, + /* [out] */ BOOL *result); + + HRESULT ( STDMETHODCALLTYPE *CorBindIoCompletionCallback )( + ICorThreadpool * This, + /* [in] */ HANDLE fileHandle, + /* [in] */ LPOVERLAPPED_COMPLETION_ROUTINE callback); + + HRESULT ( STDMETHODCALLTYPE *CorCallOrQueueUserWorkItem )( + ICorThreadpool * This, + /* [in] */ LPTHREAD_START_ROUTINE Function, + /* [in] */ PVOID Context, + /* [out] */ BOOL *result); + + HRESULT ( STDMETHODCALLTYPE *CorSetMaxThreads )( + ICorThreadpool * This, + /* [in] */ DWORD MaxWorkerThreads, + /* [in] */ DWORD MaxIOCompletionThreads); + + HRESULT ( STDMETHODCALLTYPE *CorGetMaxThreads )( + ICorThreadpool * This, + /* [out] */ DWORD *MaxWorkerThreads, + /* [out] */ DWORD *MaxIOCompletionThreads); + + HRESULT ( STDMETHODCALLTYPE *CorGetAvailableThreads )( + ICorThreadpool * This, + /* [out] */ DWORD *AvailableWorkerThreads, + /* [out] */ DWORD *AvailableIOCompletionThreads); + + END_INTERFACE + } ICorThreadpoolVtbl; + + interface ICorThreadpool + { + CONST_VTBL struct ICorThreadpoolVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICorThreadpool_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICorThreadpool_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICorThreadpool_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICorThreadpool_CorRegisterWaitForSingleObject(This,phNewWaitObject,hWaitObject,Callback,Context,timeout,executeOnlyOnce,result) \ + (This)->lpVtbl -> CorRegisterWaitForSingleObject(This,phNewWaitObject,hWaitObject,Callback,Context,timeout,executeOnlyOnce,result) + +#define ICorThreadpool_CorUnregisterWait(This,hWaitObject,CompletionEvent,result) \ + (This)->lpVtbl -> CorUnregisterWait(This,hWaitObject,CompletionEvent,result) + +#define ICorThreadpool_CorQueueUserWorkItem(This,Function,Context,executeOnlyOnce,result) \ + (This)->lpVtbl -> CorQueueUserWorkItem(This,Function,Context,executeOnlyOnce,result) + +#define ICorThreadpool_CorCreateTimer(This,phNewTimer,Callback,Parameter,DueTime,Period,result) \ + (This)->lpVtbl -> CorCreateTimer(This,phNewTimer,Callback,Parameter,DueTime,Period,result) + +#define ICorThreadpool_CorChangeTimer(This,Timer,DueTime,Period,result) \ + (This)->lpVtbl -> CorChangeTimer(This,Timer,DueTime,Period,result) + +#define ICorThreadpool_CorDeleteTimer(This,Timer,CompletionEvent,result) \ + (This)->lpVtbl -> CorDeleteTimer(This,Timer,CompletionEvent,result) + +#define ICorThreadpool_CorBindIoCompletionCallback(This,fileHandle,callback) \ + (This)->lpVtbl -> CorBindIoCompletionCallback(This,fileHandle,callback) + +#define ICorThreadpool_CorCallOrQueueUserWorkItem(This,Function,Context,result) \ + (This)->lpVtbl -> CorCallOrQueueUserWorkItem(This,Function,Context,result) + +#define ICorThreadpool_CorSetMaxThreads(This,MaxWorkerThreads,MaxIOCompletionThreads) \ + (This)->lpVtbl -> CorSetMaxThreads(This,MaxWorkerThreads,MaxIOCompletionThreads) + +#define ICorThreadpool_CorGetMaxThreads(This,MaxWorkerThreads,MaxIOCompletionThreads) \ + (This)->lpVtbl -> CorGetMaxThreads(This,MaxWorkerThreads,MaxIOCompletionThreads) + +#define ICorThreadpool_CorGetAvailableThreads(This,AvailableWorkerThreads,AvailableIOCompletionThreads) \ + (This)->lpVtbl -> CorGetAvailableThreads(This,AvailableWorkerThreads,AvailableIOCompletionThreads) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICorThreadpool_CorRegisterWaitForSingleObject_Proxy( + ICorThreadpool * This, + /* [in] */ HANDLE *phNewWaitObject, + /* [in] */ HANDLE hWaitObject, + /* [in] */ WAITORTIMERCALLBACK Callback, + /* [in] */ PVOID Context, + /* [in] */ ULONG timeout, + /* [in] */ BOOL executeOnlyOnce, + /* [out] */ BOOL *result); + + +void __RPC_STUB ICorThreadpool_CorRegisterWaitForSingleObject_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorThreadpool_CorUnregisterWait_Proxy( + ICorThreadpool * This, + /* [in] */ HANDLE hWaitObject, + /* [in] */ HANDLE CompletionEvent, + /* [out] */ BOOL *result); + + +void __RPC_STUB ICorThreadpool_CorUnregisterWait_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorThreadpool_CorQueueUserWorkItem_Proxy( + ICorThreadpool * This, + /* [in] */ LPTHREAD_START_ROUTINE Function, + /* [in] */ PVOID Context, + /* [in] */ BOOL executeOnlyOnce, + /* [out] */ BOOL *result); + + +void __RPC_STUB ICorThreadpool_CorQueueUserWorkItem_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorThreadpool_CorCreateTimer_Proxy( + ICorThreadpool * This, + /* [in] */ HANDLE *phNewTimer, + /* [in] */ WAITORTIMERCALLBACK Callback, + /* [in] */ PVOID Parameter, + /* [in] */ DWORD DueTime, + /* [in] */ DWORD Period, + /* [out] */ BOOL *result); + + +void __RPC_STUB ICorThreadpool_CorCreateTimer_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorThreadpool_CorChangeTimer_Proxy( + ICorThreadpool * This, + /* [in] */ HANDLE Timer, + /* [in] */ ULONG DueTime, + /* [in] */ ULONG Period, + /* [out] */ BOOL *result); + + +void __RPC_STUB ICorThreadpool_CorChangeTimer_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorThreadpool_CorDeleteTimer_Proxy( + ICorThreadpool * This, + /* [in] */ HANDLE Timer, + /* [in] */ HANDLE CompletionEvent, + /* [out] */ BOOL *result); + + +void __RPC_STUB ICorThreadpool_CorDeleteTimer_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorThreadpool_CorBindIoCompletionCallback_Proxy( + ICorThreadpool * This, + /* [in] */ HANDLE fileHandle, + /* [in] */ LPOVERLAPPED_COMPLETION_ROUTINE callback); + + +void __RPC_STUB ICorThreadpool_CorBindIoCompletionCallback_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorThreadpool_CorCallOrQueueUserWorkItem_Proxy( + ICorThreadpool * This, + /* [in] */ LPTHREAD_START_ROUTINE Function, + /* [in] */ PVOID Context, + /* [out] */ BOOL *result); + + +void __RPC_STUB ICorThreadpool_CorCallOrQueueUserWorkItem_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorThreadpool_CorSetMaxThreads_Proxy( + ICorThreadpool * This, + /* [in] */ DWORD MaxWorkerThreads, + /* [in] */ DWORD MaxIOCompletionThreads); + + +void __RPC_STUB ICorThreadpool_CorSetMaxThreads_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorThreadpool_CorGetMaxThreads_Proxy( + ICorThreadpool * This, + /* [out] */ DWORD *MaxWorkerThreads, + /* [out] */ DWORD *MaxIOCompletionThreads); + + +void __RPC_STUB ICorThreadpool_CorGetMaxThreads_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorThreadpool_CorGetAvailableThreads_Proxy( + ICorThreadpool * This, + /* [out] */ DWORD *AvailableWorkerThreads, + /* [out] */ DWORD *AvailableIOCompletionThreads); + + +void __RPC_STUB ICorThreadpool_CorGetAvailableThreads_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICorThreadpool_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0129 */ +/* [local] */ + +EXTERN_GUID(IID_IDebuggerThreadControl, 0x23d86786, 0x0bb5, 0x4774, 0x8f, 0xb5, 0xe3, 0x52, 0x2a, 0xdd, 0x62, 0x46); + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0129_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0129_v0_0_s_ifspec; + +#ifndef __IDebuggerThreadControl_INTERFACE_DEFINED__ +#define __IDebuggerThreadControl_INTERFACE_DEFINED__ + +/* interface IDebuggerThreadControl */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IDebuggerThreadControl; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("23D86786-0BB5-4774-8FB5-E3522ADD6246") + IDebuggerThreadControl : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ThreadIsBlockingForDebugger( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReleaseAllRuntimeThreads( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartBlockingForDebugger( + DWORD dwUnused) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDebuggerThreadControlVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDebuggerThreadControl * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDebuggerThreadControl * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDebuggerThreadControl * This); + + HRESULT ( STDMETHODCALLTYPE *ThreadIsBlockingForDebugger )( + IDebuggerThreadControl * This); + + HRESULT ( STDMETHODCALLTYPE *ReleaseAllRuntimeThreads )( + IDebuggerThreadControl * This); + + HRESULT ( STDMETHODCALLTYPE *StartBlockingForDebugger )( + IDebuggerThreadControl * This, + DWORD dwUnused); + + END_INTERFACE + } IDebuggerThreadControlVtbl; + + interface IDebuggerThreadControl + { + CONST_VTBL struct IDebuggerThreadControlVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDebuggerThreadControl_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDebuggerThreadControl_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDebuggerThreadControl_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDebuggerThreadControl_ThreadIsBlockingForDebugger(This) \ + (This)->lpVtbl -> ThreadIsBlockingForDebugger(This) + +#define IDebuggerThreadControl_ReleaseAllRuntimeThreads(This) \ + (This)->lpVtbl -> ReleaseAllRuntimeThreads(This) + +#define IDebuggerThreadControl_StartBlockingForDebugger(This,dwUnused) \ + (This)->lpVtbl -> StartBlockingForDebugger(This,dwUnused) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDebuggerThreadControl_ThreadIsBlockingForDebugger_Proxy( + IDebuggerThreadControl * This); + + +void __RPC_STUB IDebuggerThreadControl_ThreadIsBlockingForDebugger_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDebuggerThreadControl_ReleaseAllRuntimeThreads_Proxy( + IDebuggerThreadControl * This); + + +void __RPC_STUB IDebuggerThreadControl_ReleaseAllRuntimeThreads_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDebuggerThreadControl_StartBlockingForDebugger_Proxy( + IDebuggerThreadControl * This, + DWORD dwUnused); + + +void __RPC_STUB IDebuggerThreadControl_StartBlockingForDebugger_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDebuggerThreadControl_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0130 */ +/* [local] */ + +EXTERN_GUID(IID_IDebuggerInfo, 0xbf24142d, 0xa47d, 0x4d24, 0xa6, 0x6d, 0x8c, 0x21, 0x41, 0x94, 0x4e, 0x44); + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0130_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0130_v0_0_s_ifspec; + +#ifndef __IDebuggerInfo_INTERFACE_DEFINED__ +#define __IDebuggerInfo_INTERFACE_DEFINED__ + +/* interface IDebuggerInfo */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IDebuggerInfo; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("BF24142D-A47D-4d24-A66D-8C2141944E44") + IDebuggerInfo : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE IsDebuggerAttached( + /* [out] */ BOOL *pbAttached) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDebuggerInfoVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDebuggerInfo * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDebuggerInfo * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDebuggerInfo * This); + + HRESULT ( STDMETHODCALLTYPE *IsDebuggerAttached )( + IDebuggerInfo * This, + /* [out] */ BOOL *pbAttached); + + END_INTERFACE + } IDebuggerInfoVtbl; + + interface IDebuggerInfo + { + CONST_VTBL struct IDebuggerInfoVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDebuggerInfo_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDebuggerInfo_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDebuggerInfo_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDebuggerInfo_IsDebuggerAttached(This,pbAttached) \ + (This)->lpVtbl -> IsDebuggerAttached(This,pbAttached) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDebuggerInfo_IsDebuggerAttached_Proxy( + IDebuggerInfo * This, + /* [out] */ BOOL *pbAttached); + + +void __RPC_STUB IDebuggerInfo_IsDebuggerAttached_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDebuggerInfo_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0131 */ +/* [local] */ + +EXTERN_GUID(IID_ICorConfiguration, 0x5c2b07a5, 0x1e98, 0x11d3, 0x87, 0x2f, 0x00, 0xc0, 0x4f, 0x79, 0xed, 0x0d); + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0131_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0131_v0_0_s_ifspec; + +#ifndef __ICorConfiguration_INTERFACE_DEFINED__ +#define __ICorConfiguration_INTERFACE_DEFINED__ + +/* interface ICorConfiguration */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICorConfiguration; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5C2B07A5-1E98-11d3-872F-00C04F79ED0D") + ICorConfiguration : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetGCThreadControl( + /* [in] */ IGCThreadControl *pGCThreadControl) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetGCHostControl( + /* [in] */ IGCHostControl *pGCHostControl) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDebuggerThreadControl( + /* [in] */ IDebuggerThreadControl *pDebuggerThreadControl) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddDebuggerSpecialThread( + /* [in] */ DWORD dwSpecialThreadId) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICorConfigurationVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICorConfiguration * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICorConfiguration * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICorConfiguration * This); + + HRESULT ( STDMETHODCALLTYPE *SetGCThreadControl )( + ICorConfiguration * This, + /* [in] */ IGCThreadControl *pGCThreadControl); + + HRESULT ( STDMETHODCALLTYPE *SetGCHostControl )( + ICorConfiguration * This, + /* [in] */ IGCHostControl *pGCHostControl); + + HRESULT ( STDMETHODCALLTYPE *SetDebuggerThreadControl )( + ICorConfiguration * This, + /* [in] */ IDebuggerThreadControl *pDebuggerThreadControl); + + HRESULT ( STDMETHODCALLTYPE *AddDebuggerSpecialThread )( + ICorConfiguration * This, + /* [in] */ DWORD dwSpecialThreadId); + + END_INTERFACE + } ICorConfigurationVtbl; + + interface ICorConfiguration + { + CONST_VTBL struct ICorConfigurationVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICorConfiguration_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICorConfiguration_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICorConfiguration_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICorConfiguration_SetGCThreadControl(This,pGCThreadControl) \ + (This)->lpVtbl -> SetGCThreadControl(This,pGCThreadControl) + +#define ICorConfiguration_SetGCHostControl(This,pGCHostControl) \ + (This)->lpVtbl -> SetGCHostControl(This,pGCHostControl) + +#define ICorConfiguration_SetDebuggerThreadControl(This,pDebuggerThreadControl) \ + (This)->lpVtbl -> SetDebuggerThreadControl(This,pDebuggerThreadControl) + +#define ICorConfiguration_AddDebuggerSpecialThread(This,dwSpecialThreadId) \ + (This)->lpVtbl -> AddDebuggerSpecialThread(This,dwSpecialThreadId) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICorConfiguration_SetGCThreadControl_Proxy( + ICorConfiguration * This, + /* [in] */ IGCThreadControl *pGCThreadControl); + + +void __RPC_STUB ICorConfiguration_SetGCThreadControl_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorConfiguration_SetGCHostControl_Proxy( + ICorConfiguration * This, + /* [in] */ IGCHostControl *pGCHostControl); + + +void __RPC_STUB ICorConfiguration_SetGCHostControl_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorConfiguration_SetDebuggerThreadControl_Proxy( + ICorConfiguration * This, + /* [in] */ IDebuggerThreadControl *pDebuggerThreadControl); + + +void __RPC_STUB ICorConfiguration_SetDebuggerThreadControl_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorConfiguration_AddDebuggerSpecialThread_Proxy( + ICorConfiguration * This, + /* [in] */ DWORD dwSpecialThreadId); + + +void __RPC_STUB ICorConfiguration_AddDebuggerSpecialThread_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICorConfiguration_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0132 */ +/* [local] */ + +typedef void *HDOMAINENUM; + + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0132_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0132_v0_0_s_ifspec; + +#ifndef __ICorRuntimeHost_INTERFACE_DEFINED__ +#define __ICorRuntimeHost_INTERFACE_DEFINED__ + +/* interface ICorRuntimeHost */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICorRuntimeHost; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("CB2F6722-AB3A-11d2-9C40-00C04FA30A3E") + ICorRuntimeHost : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE CreateLogicalThreadState( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE DeleteLogicalThreadState( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SwitchInLogicalThreadState( + /* [in] */ DWORD *pFiberCookie) = 0; + + virtual HRESULT STDMETHODCALLTYPE SwitchOutLogicalThreadState( + /* [out] */ DWORD **pFiberCookie) = 0; + + virtual HRESULT STDMETHODCALLTYPE LocksHeldByLogicalThread( + /* [out] */ DWORD *pCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE MapFile( + /* [in] */ HANDLE hFile, + /* [out] */ HMODULE *hMapAddress) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetConfiguration( + /* [out] */ ICorConfiguration **pConfiguration) = 0; + + virtual HRESULT STDMETHODCALLTYPE Start( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateDomain( + /* [in] */ LPCWSTR pwzFriendlyName, + /* [in] */ IUnknown *pIdentityArray, + /* [out] */ IUnknown **pAppDomain) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDefaultDomain( + /* [out] */ IUnknown **pAppDomain) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumDomains( + /* [out] */ HDOMAINENUM *hEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE NextDomain( + /* [in] */ HDOMAINENUM hEnum, + /* [out] */ IUnknown **pAppDomain) = 0; + + virtual HRESULT STDMETHODCALLTYPE CloseEnum( + /* [in] */ HDOMAINENUM hEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateDomainEx( + /* [in] */ LPCWSTR pwzFriendlyName, + /* [in] */ IUnknown *pSetup, + /* [in] */ IUnknown *pEvidence, + /* [out] */ IUnknown **pAppDomain) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateDomainSetup( + /* [out] */ IUnknown **pAppDomainSetup) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateEvidence( + /* [out] */ IUnknown **pEvidence) = 0; + + virtual HRESULT STDMETHODCALLTYPE UnloadDomain( + /* [in] */ IUnknown *pAppDomain) = 0; + + virtual HRESULT STDMETHODCALLTYPE CurrentDomain( + /* [out] */ IUnknown **pAppDomain) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICorRuntimeHostVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICorRuntimeHost * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICorRuntimeHost * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICorRuntimeHost * This); + + HRESULT ( STDMETHODCALLTYPE *CreateLogicalThreadState )( + ICorRuntimeHost * This); + + HRESULT ( STDMETHODCALLTYPE *DeleteLogicalThreadState )( + ICorRuntimeHost * This); + + HRESULT ( STDMETHODCALLTYPE *SwitchInLogicalThreadState )( + ICorRuntimeHost * This, + /* [in] */ DWORD *pFiberCookie); + + HRESULT ( STDMETHODCALLTYPE *SwitchOutLogicalThreadState )( + ICorRuntimeHost * This, + /* [out] */ DWORD **pFiberCookie); + + HRESULT ( STDMETHODCALLTYPE *LocksHeldByLogicalThread )( + ICorRuntimeHost * This, + /* [out] */ DWORD *pCount); + + HRESULT ( STDMETHODCALLTYPE *MapFile )( + ICorRuntimeHost * This, + /* [in] */ HANDLE hFile, + /* [out] */ HMODULE *hMapAddress); + + HRESULT ( STDMETHODCALLTYPE *GetConfiguration )( + ICorRuntimeHost * This, + /* [out] */ ICorConfiguration **pConfiguration); + + HRESULT ( STDMETHODCALLTYPE *Start )( + ICorRuntimeHost * This); + + HRESULT ( STDMETHODCALLTYPE *Stop )( + ICorRuntimeHost * This); + + HRESULT ( STDMETHODCALLTYPE *CreateDomain )( + ICorRuntimeHost * This, + /* [in] */ LPCWSTR pwzFriendlyName, + /* [in] */ IUnknown *pIdentityArray, + /* [out] */ IUnknown **pAppDomain); + + HRESULT ( STDMETHODCALLTYPE *GetDefaultDomain )( + ICorRuntimeHost * This, + /* [out] */ IUnknown **pAppDomain); + + HRESULT ( STDMETHODCALLTYPE *EnumDomains )( + ICorRuntimeHost * This, + /* [out] */ HDOMAINENUM *hEnum); + + HRESULT ( STDMETHODCALLTYPE *NextDomain )( + ICorRuntimeHost * This, + /* [in] */ HDOMAINENUM hEnum, + /* [out] */ IUnknown **pAppDomain); + + HRESULT ( STDMETHODCALLTYPE *CloseEnum )( + ICorRuntimeHost * This, + /* [in] */ HDOMAINENUM hEnum); + + HRESULT ( STDMETHODCALLTYPE *CreateDomainEx )( + ICorRuntimeHost * This, + /* [in] */ LPCWSTR pwzFriendlyName, + /* [in] */ IUnknown *pSetup, + /* [in] */ IUnknown *pEvidence, + /* [out] */ IUnknown **pAppDomain); + + HRESULT ( STDMETHODCALLTYPE *CreateDomainSetup )( + ICorRuntimeHost * This, + /* [out] */ IUnknown **pAppDomainSetup); + + HRESULT ( STDMETHODCALLTYPE *CreateEvidence )( + ICorRuntimeHost * This, + /* [out] */ IUnknown **pEvidence); + + HRESULT ( STDMETHODCALLTYPE *UnloadDomain )( + ICorRuntimeHost * This, + /* [in] */ IUnknown *pAppDomain); + + HRESULT ( STDMETHODCALLTYPE *CurrentDomain )( + ICorRuntimeHost * This, + /* [out] */ IUnknown **pAppDomain); + + END_INTERFACE + } ICorRuntimeHostVtbl; + + interface ICorRuntimeHost + { + CONST_VTBL struct ICorRuntimeHostVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICorRuntimeHost_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICorRuntimeHost_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICorRuntimeHost_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICorRuntimeHost_CreateLogicalThreadState(This) \ + (This)->lpVtbl -> CreateLogicalThreadState(This) + +#define ICorRuntimeHost_DeleteLogicalThreadState(This) \ + (This)->lpVtbl -> DeleteLogicalThreadState(This) + +#define ICorRuntimeHost_SwitchInLogicalThreadState(This,pFiberCookie) \ + (This)->lpVtbl -> SwitchInLogicalThreadState(This,pFiberCookie) + +#define ICorRuntimeHost_SwitchOutLogicalThreadState(This,pFiberCookie) \ + (This)->lpVtbl -> SwitchOutLogicalThreadState(This,pFiberCookie) + +#define ICorRuntimeHost_LocksHeldByLogicalThread(This,pCount) \ + (This)->lpVtbl -> LocksHeldByLogicalThread(This,pCount) + +#define ICorRuntimeHost_MapFile(This,hFile,hMapAddress) \ + (This)->lpVtbl -> MapFile(This,hFile,hMapAddress) + +#define ICorRuntimeHost_GetConfiguration(This,pConfiguration) \ + (This)->lpVtbl -> GetConfiguration(This,pConfiguration) + +#define ICorRuntimeHost_Start(This) \ + (This)->lpVtbl -> Start(This) + +#define ICorRuntimeHost_Stop(This) \ + (This)->lpVtbl -> Stop(This) + +#define ICorRuntimeHost_CreateDomain(This,pwzFriendlyName,pIdentityArray,pAppDomain) \ + (This)->lpVtbl -> CreateDomain(This,pwzFriendlyName,pIdentityArray,pAppDomain) + +#define ICorRuntimeHost_GetDefaultDomain(This,pAppDomain) \ + (This)->lpVtbl -> GetDefaultDomain(This,pAppDomain) + +#define ICorRuntimeHost_EnumDomains(This,hEnum) \ + (This)->lpVtbl -> EnumDomains(This,hEnum) + +#define ICorRuntimeHost_NextDomain(This,hEnum,pAppDomain) \ + (This)->lpVtbl -> NextDomain(This,hEnum,pAppDomain) + +#define ICorRuntimeHost_CloseEnum(This,hEnum) \ + (This)->lpVtbl -> CloseEnum(This,hEnum) + +#define ICorRuntimeHost_CreateDomainEx(This,pwzFriendlyName,pSetup,pEvidence,pAppDomain) \ + (This)->lpVtbl -> CreateDomainEx(This,pwzFriendlyName,pSetup,pEvidence,pAppDomain) + +#define ICorRuntimeHost_CreateDomainSetup(This,pAppDomainSetup) \ + (This)->lpVtbl -> CreateDomainSetup(This,pAppDomainSetup) + +#define ICorRuntimeHost_CreateEvidence(This,pEvidence) \ + (This)->lpVtbl -> CreateEvidence(This,pEvidence) + +#define ICorRuntimeHost_UnloadDomain(This,pAppDomain) \ + (This)->lpVtbl -> UnloadDomain(This,pAppDomain) + +#define ICorRuntimeHost_CurrentDomain(This,pAppDomain) \ + (This)->lpVtbl -> CurrentDomain(This,pAppDomain) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_CreateLogicalThreadState_Proxy( + ICorRuntimeHost * This); + + +void __RPC_STUB ICorRuntimeHost_CreateLogicalThreadState_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_DeleteLogicalThreadState_Proxy( + ICorRuntimeHost * This); + + +void __RPC_STUB ICorRuntimeHost_DeleteLogicalThreadState_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_SwitchInLogicalThreadState_Proxy( + ICorRuntimeHost * This, + /* [in] */ DWORD *pFiberCookie); + + +void __RPC_STUB ICorRuntimeHost_SwitchInLogicalThreadState_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_SwitchOutLogicalThreadState_Proxy( + ICorRuntimeHost * This, + /* [out] */ DWORD **pFiberCookie); + + +void __RPC_STUB ICorRuntimeHost_SwitchOutLogicalThreadState_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_LocksHeldByLogicalThread_Proxy( + ICorRuntimeHost * This, + /* [out] */ DWORD *pCount); + + +void __RPC_STUB ICorRuntimeHost_LocksHeldByLogicalThread_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_MapFile_Proxy( + ICorRuntimeHost * This, + /* [in] */ HANDLE hFile, + /* [out] */ HMODULE *hMapAddress); + + +void __RPC_STUB ICorRuntimeHost_MapFile_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_GetConfiguration_Proxy( + ICorRuntimeHost * This, + /* [out] */ ICorConfiguration **pConfiguration); + + +void __RPC_STUB ICorRuntimeHost_GetConfiguration_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_Start_Proxy( + ICorRuntimeHost * This); + + +void __RPC_STUB ICorRuntimeHost_Start_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_Stop_Proxy( + ICorRuntimeHost * This); + + +void __RPC_STUB ICorRuntimeHost_Stop_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_CreateDomain_Proxy( + ICorRuntimeHost * This, + /* [in] */ LPCWSTR pwzFriendlyName, + /* [in] */ IUnknown *pIdentityArray, + /* [out] */ IUnknown **pAppDomain); + + +void __RPC_STUB ICorRuntimeHost_CreateDomain_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_GetDefaultDomain_Proxy( + ICorRuntimeHost * This, + /* [out] */ IUnknown **pAppDomain); + + +void __RPC_STUB ICorRuntimeHost_GetDefaultDomain_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_EnumDomains_Proxy( + ICorRuntimeHost * This, + /* [out] */ HDOMAINENUM *hEnum); + + +void __RPC_STUB ICorRuntimeHost_EnumDomains_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_NextDomain_Proxy( + ICorRuntimeHost * This, + /* [in] */ HDOMAINENUM hEnum, + /* [out] */ IUnknown **pAppDomain); + + +void __RPC_STUB ICorRuntimeHost_NextDomain_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_CloseEnum_Proxy( + ICorRuntimeHost * This, + /* [in] */ HDOMAINENUM hEnum); + + +void __RPC_STUB ICorRuntimeHost_CloseEnum_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_CreateDomainEx_Proxy( + ICorRuntimeHost * This, + /* [in] */ LPCWSTR pwzFriendlyName, + /* [in] */ IUnknown *pSetup, + /* [in] */ IUnknown *pEvidence, + /* [out] */ IUnknown **pAppDomain); + + +void __RPC_STUB ICorRuntimeHost_CreateDomainEx_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_CreateDomainSetup_Proxy( + ICorRuntimeHost * This, + /* [out] */ IUnknown **pAppDomainSetup); + + +void __RPC_STUB ICorRuntimeHost_CreateDomainSetup_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_CreateEvidence_Proxy( + ICorRuntimeHost * This, + /* [out] */ IUnknown **pEvidence); + + +void __RPC_STUB ICorRuntimeHost_CreateEvidence_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_UnloadDomain_Proxy( + ICorRuntimeHost * This, + /* [in] */ IUnknown *pAppDomain); + + +void __RPC_STUB ICorRuntimeHost_UnloadDomain_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICorRuntimeHost_CurrentDomain_Proxy( + ICorRuntimeHost * This, + /* [out] */ IUnknown **pAppDomain); + + +void __RPC_STUB ICorRuntimeHost_CurrentDomain_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICorRuntimeHost_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0133 */ +/* [local] */ + +typedef /* [public][public] */ +enum __MIDL___MIDL_itf_mscoree_0133_0001 + { eMemoryAvailableLow = 1, + eMemoryAvailableNeutral = 2, + eMemoryAvailableHigh = 3 + } EMemoryAvailable; + +typedef /* [public][public][public][public] */ +enum __MIDL___MIDL_itf_mscoree_0133_0002 + { eTaskCritical = 0, + eAppDomainCritical = 1, + eProcessCritical = 2 + } EMemoryCriticalLevel; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_mscoree_0133_0003 + { WAIT_MSGPUMP = 0x1, + WAIT_ALERTABLE = 0x2, + WAIT_NOTINDEADLOCK = 0x4 + } WAIT_OPTION; + +EXTERN_GUID(IID_ICLRMemoryNotificationCallback, 0x47EB8E57, 0x0846, 0x4546, 0xAF, 0x76, 0x6F, 0x42, 0xFC, 0xFC, 0x26, 0x49); + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0133_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0133_v0_0_s_ifspec; + +#ifndef __ICLRMemoryNotificationCallback_INTERFACE_DEFINED__ +#define __ICLRMemoryNotificationCallback_INTERFACE_DEFINED__ + +/* interface ICLRMemoryNotificationCallback */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRMemoryNotificationCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("47EB8E57-0846-4546-AF76-6F42FCFC2649") + ICLRMemoryNotificationCallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE OnMemoryNotification( + /* [in] */ EMemoryAvailable eMemoryAvailable) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRMemoryNotificationCallbackVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRMemoryNotificationCallback * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRMemoryNotificationCallback * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRMemoryNotificationCallback * This); + + HRESULT ( STDMETHODCALLTYPE *OnMemoryNotification )( + ICLRMemoryNotificationCallback * This, + /* [in] */ EMemoryAvailable eMemoryAvailable); + + END_INTERFACE + } ICLRMemoryNotificationCallbackVtbl; + + interface ICLRMemoryNotificationCallback + { + CONST_VTBL struct ICLRMemoryNotificationCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRMemoryNotificationCallback_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRMemoryNotificationCallback_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRMemoryNotificationCallback_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRMemoryNotificationCallback_OnMemoryNotification(This,eMemoryAvailable) \ + (This)->lpVtbl -> OnMemoryNotification(This,eMemoryAvailable) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRMemoryNotificationCallback_OnMemoryNotification_Proxy( + ICLRMemoryNotificationCallback * This, + /* [in] */ EMemoryAvailable eMemoryAvailable); + + +void __RPC_STUB ICLRMemoryNotificationCallback_OnMemoryNotification_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRMemoryNotificationCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IHostMalloc_INTERFACE_DEFINED__ +#define __IHostMalloc_INTERFACE_DEFINED__ + +/* interface IHostMalloc */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IHostMalloc; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1831991C-CC53-4A31-B218-04E910446479") + IHostMalloc : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Alloc( + /* [in] */ SIZE_T cbSize, + /* [in] */ EMemoryCriticalLevel eCriticalLevel, + /* [out] */ void **ppMem) = 0; + + virtual HRESULT STDMETHODCALLTYPE DebugAlloc( + /* [in] */ SIZE_T cbSize, + /* [in] */ EMemoryCriticalLevel eCriticalLevel, + /* [in] */ char *pszFileName, + /* [in] */ int iLineNo, + /* [out] */ void **ppMem) = 0; + + virtual HRESULT STDMETHODCALLTYPE Free( + /* [in] */ void *pMem) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostMallocVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostMalloc * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostMalloc * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostMalloc * This); + + HRESULT ( STDMETHODCALLTYPE *Alloc )( + IHostMalloc * This, + /* [in] */ SIZE_T cbSize, + /* [in] */ EMemoryCriticalLevel eCriticalLevel, + /* [out] */ void **ppMem); + + HRESULT ( STDMETHODCALLTYPE *DebugAlloc )( + IHostMalloc * This, + /* [in] */ SIZE_T cbSize, + /* [in] */ EMemoryCriticalLevel eCriticalLevel, + /* [in] */ char *pszFileName, + /* [in] */ int iLineNo, + /* [out] */ void **ppMem); + + HRESULT ( STDMETHODCALLTYPE *Free )( + IHostMalloc * This, + /* [in] */ void *pMem); + + END_INTERFACE + } IHostMallocVtbl; + + interface IHostMalloc + { + CONST_VTBL struct IHostMallocVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostMalloc_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostMalloc_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostMalloc_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostMalloc_Alloc(This,cbSize,eCriticalLevel,ppMem) \ + (This)->lpVtbl -> Alloc(This,cbSize,eCriticalLevel,ppMem) + +#define IHostMalloc_DebugAlloc(This,cbSize,eCriticalLevel,pszFileName,iLineNo,ppMem) \ + (This)->lpVtbl -> DebugAlloc(This,cbSize,eCriticalLevel,pszFileName,iLineNo,ppMem) + +#define IHostMalloc_Free(This,pMem) \ + (This)->lpVtbl -> Free(This,pMem) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostMalloc_Alloc_Proxy( + IHostMalloc * This, + /* [in] */ SIZE_T cbSize, + /* [in] */ EMemoryCriticalLevel eCriticalLevel, + /* [out] */ void **ppMem); + + +void __RPC_STUB IHostMalloc_Alloc_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostMalloc_DebugAlloc_Proxy( + IHostMalloc * This, + /* [in] */ SIZE_T cbSize, + /* [in] */ EMemoryCriticalLevel eCriticalLevel, + /* [in] */ char *pszFileName, + /* [in] */ int iLineNo, + /* [out] */ void **ppMem); + + +void __RPC_STUB IHostMalloc_DebugAlloc_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostMalloc_Free_Proxy( + IHostMalloc * This, + /* [in] */ void *pMem); + + +void __RPC_STUB IHostMalloc_Free_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostMalloc_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0135 */ +/* [local] */ + +typedef /* [public] */ +enum __MIDL___MIDL_itf_mscoree_0135_0001 + { MALLOC_THREADSAFE = 0x1, + MALLOC_EXECUTABLE = 0x2 + } MALLOC_TYPE; + + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0135_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0135_v0_0_s_ifspec; + +#ifndef __IHostMemoryManager_INTERFACE_DEFINED__ +#define __IHostMemoryManager_INTERFACE_DEFINED__ + +/* interface IHostMemoryManager */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IHostMemoryManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7BC698D1-F9E3-4460-9CDE-D04248E9FA25") + IHostMemoryManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE CreateMalloc( + /* [in] */ DWORD dwMallocType, + /* [out] */ IHostMalloc **ppMalloc) = 0; + + virtual HRESULT STDMETHODCALLTYPE VirtualAlloc( + /* [in] */ void *pAddress, + /* [in] */ SIZE_T dwSize, + /* [in] */ DWORD flAllocationType, + /* [in] */ DWORD flProtect, + /* [in] */ EMemoryCriticalLevel eCriticalLevel, + /* [out] */ void **ppMem) = 0; + + virtual HRESULT STDMETHODCALLTYPE VirtualFree( + /* [in] */ LPVOID lpAddress, + /* [in] */ SIZE_T dwSize, + /* [in] */ DWORD dwFreeType) = 0; + + virtual HRESULT STDMETHODCALLTYPE VirtualQuery( + /* [in] */ void *lpAddress, + /* [out] */ void *lpBuffer, + /* [in] */ SIZE_T dwLength, + /* [out] */ SIZE_T *pResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE VirtualProtect( + /* [in] */ void *lpAddress, + /* [in] */ SIZE_T dwSize, + /* [in] */ DWORD flNewProtect, + /* [out] */ DWORD *pflOldProtect) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMemoryLoad( + /* [out] */ DWORD *pMemoryLoad, + /* [out] */ SIZE_T *pAvailableBytes) = 0; + + virtual HRESULT STDMETHODCALLTYPE RegisterMemoryNotificationCallback( + /* [in] */ ICLRMemoryNotificationCallback *pCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE NeedsVirtualAddressSpace( + /* [in] */ LPVOID startAddress, + /* [in] */ SIZE_T size) = 0; + + virtual HRESULT STDMETHODCALLTYPE AcquiredVirtualAddressSpace( + /* [in] */ LPVOID startAddress, + /* [in] */ SIZE_T size) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReleasedVirtualAddressSpace( + /* [in] */ LPVOID startAddress) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostMemoryManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostMemoryManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostMemoryManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostMemoryManager * This); + + HRESULT ( STDMETHODCALLTYPE *CreateMalloc )( + IHostMemoryManager * This, + /* [in] */ DWORD dwMallocType, + /* [out] */ IHostMalloc **ppMalloc); + + HRESULT ( STDMETHODCALLTYPE *VirtualAlloc )( + IHostMemoryManager * This, + /* [in] */ void *pAddress, + /* [in] */ SIZE_T dwSize, + /* [in] */ DWORD flAllocationType, + /* [in] */ DWORD flProtect, + /* [in] */ EMemoryCriticalLevel eCriticalLevel, + /* [out] */ void **ppMem); + + HRESULT ( STDMETHODCALLTYPE *VirtualFree )( + IHostMemoryManager * This, + /* [in] */ LPVOID lpAddress, + /* [in] */ SIZE_T dwSize, + /* [in] */ DWORD dwFreeType); + + HRESULT ( STDMETHODCALLTYPE *VirtualQuery )( + IHostMemoryManager * This, + /* [in] */ void *lpAddress, + /* [out] */ void *lpBuffer, + /* [in] */ SIZE_T dwLength, + /* [out] */ SIZE_T *pResult); + + HRESULT ( STDMETHODCALLTYPE *VirtualProtect )( + IHostMemoryManager * This, + /* [in] */ void *lpAddress, + /* [in] */ SIZE_T dwSize, + /* [in] */ DWORD flNewProtect, + /* [out] */ DWORD *pflOldProtect); + + HRESULT ( STDMETHODCALLTYPE *GetMemoryLoad )( + IHostMemoryManager * This, + /* [out] */ DWORD *pMemoryLoad, + /* [out] */ SIZE_T *pAvailableBytes); + + HRESULT ( STDMETHODCALLTYPE *RegisterMemoryNotificationCallback )( + IHostMemoryManager * This, + /* [in] */ ICLRMemoryNotificationCallback *pCallback); + + HRESULT ( STDMETHODCALLTYPE *NeedsVirtualAddressSpace )( + IHostMemoryManager * This, + /* [in] */ LPVOID startAddress, + /* [in] */ SIZE_T size); + + HRESULT ( STDMETHODCALLTYPE *AcquiredVirtualAddressSpace )( + IHostMemoryManager * This, + /* [in] */ LPVOID startAddress, + /* [in] */ SIZE_T size); + + HRESULT ( STDMETHODCALLTYPE *ReleasedVirtualAddressSpace )( + IHostMemoryManager * This, + /* [in] */ LPVOID startAddress); + + END_INTERFACE + } IHostMemoryManagerVtbl; + + interface IHostMemoryManager + { + CONST_VTBL struct IHostMemoryManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostMemoryManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostMemoryManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostMemoryManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostMemoryManager_CreateMalloc(This,dwMallocType,ppMalloc) \ + (This)->lpVtbl -> CreateMalloc(This,dwMallocType,ppMalloc) + +#define IHostMemoryManager_VirtualAlloc(This,pAddress,dwSize,flAllocationType,flProtect,eCriticalLevel,ppMem) \ + (This)->lpVtbl -> VirtualAlloc(This,pAddress,dwSize,flAllocationType,flProtect,eCriticalLevel,ppMem) + +#define IHostMemoryManager_VirtualFree(This,lpAddress,dwSize,dwFreeType) \ + (This)->lpVtbl -> VirtualFree(This,lpAddress,dwSize,dwFreeType) + +#define IHostMemoryManager_VirtualQuery(This,lpAddress,lpBuffer,dwLength,pResult) \ + (This)->lpVtbl -> VirtualQuery(This,lpAddress,lpBuffer,dwLength,pResult) + +#define IHostMemoryManager_VirtualProtect(This,lpAddress,dwSize,flNewProtect,pflOldProtect) \ + (This)->lpVtbl -> VirtualProtect(This,lpAddress,dwSize,flNewProtect,pflOldProtect) + +#define IHostMemoryManager_GetMemoryLoad(This,pMemoryLoad,pAvailableBytes) \ + (This)->lpVtbl -> GetMemoryLoad(This,pMemoryLoad,pAvailableBytes) + +#define IHostMemoryManager_RegisterMemoryNotificationCallback(This,pCallback) \ + (This)->lpVtbl -> RegisterMemoryNotificationCallback(This,pCallback) + +#define IHostMemoryManager_NeedsVirtualAddressSpace(This,startAddress,size) \ + (This)->lpVtbl -> NeedsVirtualAddressSpace(This,startAddress,size) + +#define IHostMemoryManager_AcquiredVirtualAddressSpace(This,startAddress,size) \ + (This)->lpVtbl -> AcquiredVirtualAddressSpace(This,startAddress,size) + +#define IHostMemoryManager_ReleasedVirtualAddressSpace(This,startAddress) \ + (This)->lpVtbl -> ReleasedVirtualAddressSpace(This,startAddress) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostMemoryManager_CreateMalloc_Proxy( + IHostMemoryManager * This, + /* [in] */ DWORD dwMallocType, + /* [out] */ IHostMalloc **ppMalloc); + + +void __RPC_STUB IHostMemoryManager_CreateMalloc_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostMemoryManager_VirtualAlloc_Proxy( + IHostMemoryManager * This, + /* [in] */ void *pAddress, + /* [in] */ SIZE_T dwSize, + /* [in] */ DWORD flAllocationType, + /* [in] */ DWORD flProtect, + /* [in] */ EMemoryCriticalLevel eCriticalLevel, + /* [out] */ void **ppMem); + + +void __RPC_STUB IHostMemoryManager_VirtualAlloc_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostMemoryManager_VirtualFree_Proxy( + IHostMemoryManager * This, + /* [in] */ LPVOID lpAddress, + /* [in] */ SIZE_T dwSize, + /* [in] */ DWORD dwFreeType); + + +void __RPC_STUB IHostMemoryManager_VirtualFree_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostMemoryManager_VirtualQuery_Proxy( + IHostMemoryManager * This, + /* [in] */ void *lpAddress, + /* [out] */ void *lpBuffer, + /* [in] */ SIZE_T dwLength, + /* [out] */ SIZE_T *pResult); + + +void __RPC_STUB IHostMemoryManager_VirtualQuery_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostMemoryManager_VirtualProtect_Proxy( + IHostMemoryManager * This, + /* [in] */ void *lpAddress, + /* [in] */ SIZE_T dwSize, + /* [in] */ DWORD flNewProtect, + /* [out] */ DWORD *pflOldProtect); + + +void __RPC_STUB IHostMemoryManager_VirtualProtect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostMemoryManager_GetMemoryLoad_Proxy( + IHostMemoryManager * This, + /* [out] */ DWORD *pMemoryLoad, + /* [out] */ SIZE_T *pAvailableBytes); + + +void __RPC_STUB IHostMemoryManager_GetMemoryLoad_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostMemoryManager_RegisterMemoryNotificationCallback_Proxy( + IHostMemoryManager * This, + /* [in] */ ICLRMemoryNotificationCallback *pCallback); + + +void __RPC_STUB IHostMemoryManager_RegisterMemoryNotificationCallback_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostMemoryManager_NeedsVirtualAddressSpace_Proxy( + IHostMemoryManager * This, + /* [in] */ LPVOID startAddress, + /* [in] */ SIZE_T size); + + +void __RPC_STUB IHostMemoryManager_NeedsVirtualAddressSpace_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostMemoryManager_AcquiredVirtualAddressSpace_Proxy( + IHostMemoryManager * This, + /* [in] */ LPVOID startAddress, + /* [in] */ SIZE_T size); + + +void __RPC_STUB IHostMemoryManager_AcquiredVirtualAddressSpace_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostMemoryManager_ReleasedVirtualAddressSpace_Proxy( + IHostMemoryManager * This, + /* [in] */ LPVOID startAddress); + + +void __RPC_STUB IHostMemoryManager_ReleasedVirtualAddressSpace_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostMemoryManager_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0136 */ +/* [local] */ + +typedef UINT64 TASKID; + +typedef DWORD CONNID; + + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0136_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0136_v0_0_s_ifspec; + +#ifndef __ICLRTask_INTERFACE_DEFINED__ +#define __ICLRTask_INTERFACE_DEFINED__ + +/* interface ICLRTask */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRTask; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("28E66A4A-9906-4225-B231-9187C3EB8611") + ICLRTask : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SwitchIn( + /* [in] */ HANDLE threadHandle) = 0; + + virtual HRESULT STDMETHODCALLTYPE SwitchOut( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMemStats( + /* [out] */ COR_GC_THREAD_STATS *memUsage) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + BOOL fFull) = 0; + + virtual HRESULT STDMETHODCALLTYPE ExitTask( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE RudeAbort( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE NeedsPriorityScheduling( + /* [out] */ BOOL *pbNeedsPriorityScheduling) = 0; + + virtual HRESULT STDMETHODCALLTYPE YieldTask( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE LocksHeld( + /* [out] */ SIZE_T *pLockCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetTaskIdentifier( + /* [in] */ TASKID asked) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRTaskVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRTask * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRTask * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRTask * This); + + HRESULT ( STDMETHODCALLTYPE *SwitchIn )( + ICLRTask * This, + /* [in] */ HANDLE threadHandle); + + HRESULT ( STDMETHODCALLTYPE *SwitchOut )( + ICLRTask * This); + + HRESULT ( STDMETHODCALLTYPE *GetMemStats )( + ICLRTask * This, + /* [out] */ COR_GC_THREAD_STATS *memUsage); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + ICLRTask * This, + BOOL fFull); + + HRESULT ( STDMETHODCALLTYPE *ExitTask )( + ICLRTask * This); + + HRESULT ( STDMETHODCALLTYPE *Abort )( + ICLRTask * This); + + HRESULT ( STDMETHODCALLTYPE *RudeAbort )( + ICLRTask * This); + + HRESULT ( STDMETHODCALLTYPE *NeedsPriorityScheduling )( + ICLRTask * This, + /* [out] */ BOOL *pbNeedsPriorityScheduling); + + HRESULT ( STDMETHODCALLTYPE *YieldTask )( + ICLRTask * This); + + HRESULT ( STDMETHODCALLTYPE *LocksHeld )( + ICLRTask * This, + /* [out] */ SIZE_T *pLockCount); + + HRESULT ( STDMETHODCALLTYPE *SetTaskIdentifier )( + ICLRTask * This, + /* [in] */ TASKID asked); + + END_INTERFACE + } ICLRTaskVtbl; + + interface ICLRTask + { + CONST_VTBL struct ICLRTaskVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRTask_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRTask_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRTask_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRTask_SwitchIn(This,threadHandle) \ + (This)->lpVtbl -> SwitchIn(This,threadHandle) + +#define ICLRTask_SwitchOut(This) \ + (This)->lpVtbl -> SwitchOut(This) + +#define ICLRTask_GetMemStats(This,memUsage) \ + (This)->lpVtbl -> GetMemStats(This,memUsage) + +#define ICLRTask_Reset(This,fFull) \ + (This)->lpVtbl -> Reset(This,fFull) + +#define ICLRTask_ExitTask(This) \ + (This)->lpVtbl -> ExitTask(This) + +#define ICLRTask_Abort(This) \ + (This)->lpVtbl -> Abort(This) + +#define ICLRTask_RudeAbort(This) \ + (This)->lpVtbl -> RudeAbort(This) + +#define ICLRTask_NeedsPriorityScheduling(This,pbNeedsPriorityScheduling) \ + (This)->lpVtbl -> NeedsPriorityScheduling(This,pbNeedsPriorityScheduling) + +#define ICLRTask_YieldTask(This) \ + (This)->lpVtbl -> YieldTask(This) + +#define ICLRTask_LocksHeld(This,pLockCount) \ + (This)->lpVtbl -> LocksHeld(This,pLockCount) + +#define ICLRTask_SetTaskIdentifier(This,asked) \ + (This)->lpVtbl -> SetTaskIdentifier(This,asked) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRTask_SwitchIn_Proxy( + ICLRTask * This, + /* [in] */ HANDLE threadHandle); + + +void __RPC_STUB ICLRTask_SwitchIn_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRTask_SwitchOut_Proxy( + ICLRTask * This); + + +void __RPC_STUB ICLRTask_SwitchOut_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRTask_GetMemStats_Proxy( + ICLRTask * This, + /* [out] */ COR_GC_THREAD_STATS *memUsage); + + +void __RPC_STUB ICLRTask_GetMemStats_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRTask_Reset_Proxy( + ICLRTask * This, + BOOL fFull); + + +void __RPC_STUB ICLRTask_Reset_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRTask_ExitTask_Proxy( + ICLRTask * This); + + +void __RPC_STUB ICLRTask_ExitTask_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRTask_Abort_Proxy( + ICLRTask * This); + + +void __RPC_STUB ICLRTask_Abort_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRTask_RudeAbort_Proxy( + ICLRTask * This); + + +void __RPC_STUB ICLRTask_RudeAbort_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRTask_NeedsPriorityScheduling_Proxy( + ICLRTask * This, + /* [out] */ BOOL *pbNeedsPriorityScheduling); + + +void __RPC_STUB ICLRTask_NeedsPriorityScheduling_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRTask_YieldTask_Proxy( + ICLRTask * This); + + +void __RPC_STUB ICLRTask_YieldTask_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRTask_LocksHeld_Proxy( + ICLRTask * This, + /* [out] */ SIZE_T *pLockCount); + + +void __RPC_STUB ICLRTask_LocksHeld_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRTask_SetTaskIdentifier_Proxy( + ICLRTask * This, + /* [in] */ TASKID asked); + + +void __RPC_STUB ICLRTask_SetTaskIdentifier_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRTask_INTERFACE_DEFINED__ */ + + +#ifndef __IHostTask_INTERFACE_DEFINED__ +#define __IHostTask_INTERFACE_DEFINED__ + +/* interface IHostTask */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IHostTask; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C2275828-C4B1-4B55-82C9-92135F74DF1A") + IHostTask : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Start( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Alert( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Join( + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetPriority( + /* [in] */ int newPriority) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPriority( + /* [out] */ int *pPriority) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCLRTask( + /* [in] */ ICLRTask *pCLRTask) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostTaskVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostTask * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostTask * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostTask * This); + + HRESULT ( STDMETHODCALLTYPE *Start )( + IHostTask * This); + + HRESULT ( STDMETHODCALLTYPE *Alert )( + IHostTask * This); + + HRESULT ( STDMETHODCALLTYPE *Join )( + IHostTask * This, + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option); + + HRESULT ( STDMETHODCALLTYPE *SetPriority )( + IHostTask * This, + /* [in] */ int newPriority); + + HRESULT ( STDMETHODCALLTYPE *GetPriority )( + IHostTask * This, + /* [out] */ int *pPriority); + + HRESULT ( STDMETHODCALLTYPE *SetCLRTask )( + IHostTask * This, + /* [in] */ ICLRTask *pCLRTask); + + END_INTERFACE + } IHostTaskVtbl; + + interface IHostTask + { + CONST_VTBL struct IHostTaskVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostTask_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostTask_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostTask_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostTask_Start(This) \ + (This)->lpVtbl -> Start(This) + +#define IHostTask_Alert(This) \ + (This)->lpVtbl -> Alert(This) + +#define IHostTask_Join(This,dwMilliseconds,option) \ + (This)->lpVtbl -> Join(This,dwMilliseconds,option) + +#define IHostTask_SetPriority(This,newPriority) \ + (This)->lpVtbl -> SetPriority(This,newPriority) + +#define IHostTask_GetPriority(This,pPriority) \ + (This)->lpVtbl -> GetPriority(This,pPriority) + +#define IHostTask_SetCLRTask(This,pCLRTask) \ + (This)->lpVtbl -> SetCLRTask(This,pCLRTask) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostTask_Start_Proxy( + IHostTask * This); + + +void __RPC_STUB IHostTask_Start_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTask_Alert_Proxy( + IHostTask * This); + + +void __RPC_STUB IHostTask_Alert_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTask_Join_Proxy( + IHostTask * This, + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option); + + +void __RPC_STUB IHostTask_Join_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTask_SetPriority_Proxy( + IHostTask * This, + /* [in] */ int newPriority); + + +void __RPC_STUB IHostTask_SetPriority_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTask_GetPriority_Proxy( + IHostTask * This, + /* [out] */ int *pPriority); + + +void __RPC_STUB IHostTask_GetPriority_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTask_SetCLRTask_Proxy( + IHostTask * This, + /* [in] */ ICLRTask *pCLRTask); + + +void __RPC_STUB IHostTask_SetCLRTask_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostTask_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0138 */ +/* [local] */ + +typedef +enum ETaskType + { TT_DEBUGGERHELPER = 0x1, + TT_GC = 0x2, + TT_FINALIZER = 0x4, + TT_THREADPOOL_TIMER = 0x8, + TT_THREADPOOL_GATE = 0x10, + TT_THREADPOOL_WORKER = 0x20, + TT_THREADPOOL_IOCOMPLETION = 0x40, + TT_ADUNLOAD = 0x80, + TT_USER = 0x100, + TT_THREADPOOL_WAIT = 0x200, + TT_UNKNOWN = 0x80000000 + } ETaskType; + + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0138_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0138_v0_0_s_ifspec; + +#ifndef __ICLRTaskManager_INTERFACE_DEFINED__ +#define __ICLRTaskManager_INTERFACE_DEFINED__ + +/* interface ICLRTaskManager */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRTaskManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("4862efbe-3ae5-44f8-8feb-346190ee8a34") + ICLRTaskManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE CreateTask( + /* [out] */ ICLRTask **pTask) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentTask( + /* [out] */ ICLRTask **pTask) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetUILocale( + /* [in] */ LCID lcid) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetLocale( + /* [in] */ LCID lcid) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentTaskType( + /* [out] */ ETaskType *pTaskType) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRTaskManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRTaskManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRTaskManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRTaskManager * This); + + HRESULT ( STDMETHODCALLTYPE *CreateTask )( + ICLRTaskManager * This, + /* [out] */ ICLRTask **pTask); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentTask )( + ICLRTaskManager * This, + /* [out] */ ICLRTask **pTask); + + HRESULT ( STDMETHODCALLTYPE *SetUILocale )( + ICLRTaskManager * This, + /* [in] */ LCID lcid); + + HRESULT ( STDMETHODCALLTYPE *SetLocale )( + ICLRTaskManager * This, + /* [in] */ LCID lcid); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentTaskType )( + ICLRTaskManager * This, + /* [out] */ ETaskType *pTaskType); + + END_INTERFACE + } ICLRTaskManagerVtbl; + + interface ICLRTaskManager + { + CONST_VTBL struct ICLRTaskManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRTaskManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRTaskManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRTaskManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRTaskManager_CreateTask(This,pTask) \ + (This)->lpVtbl -> CreateTask(This,pTask) + +#define ICLRTaskManager_GetCurrentTask(This,pTask) \ + (This)->lpVtbl -> GetCurrentTask(This,pTask) + +#define ICLRTaskManager_SetUILocale(This,lcid) \ + (This)->lpVtbl -> SetUILocale(This,lcid) + +#define ICLRTaskManager_SetLocale(This,lcid) \ + (This)->lpVtbl -> SetLocale(This,lcid) + +#define ICLRTaskManager_GetCurrentTaskType(This,pTaskType) \ + (This)->lpVtbl -> GetCurrentTaskType(This,pTaskType) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRTaskManager_CreateTask_Proxy( + ICLRTaskManager * This, + /* [out] */ ICLRTask **pTask); + + +void __RPC_STUB ICLRTaskManager_CreateTask_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRTaskManager_GetCurrentTask_Proxy( + ICLRTaskManager * This, + /* [out] */ ICLRTask **pTask); + + +void __RPC_STUB ICLRTaskManager_GetCurrentTask_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRTaskManager_SetUILocale_Proxy( + ICLRTaskManager * This, + /* [in] */ LCID lcid); + + +void __RPC_STUB ICLRTaskManager_SetUILocale_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRTaskManager_SetLocale_Proxy( + ICLRTaskManager * This, + /* [in] */ LCID lcid); + + +void __RPC_STUB ICLRTaskManager_SetLocale_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRTaskManager_GetCurrentTaskType_Proxy( + ICLRTaskManager * This, + /* [out] */ ETaskType *pTaskType); + + +void __RPC_STUB ICLRTaskManager_GetCurrentTaskType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRTaskManager_INTERFACE_DEFINED__ */ + + +#ifndef __IHostTaskManager_INTERFACE_DEFINED__ +#define __IHostTaskManager_INTERFACE_DEFINED__ + +/* interface IHostTaskManager */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IHostTaskManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("997FF24C-43B7-4352-8667-0DC04FAFD354") + IHostTaskManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetCurrentTask( + /* [out] */ IHostTask **pTask) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateTask( + /* [in] */ DWORD dwStackSize, + /* [in] */ LPTHREAD_START_ROUTINE pStartAddress, + /* [in] */ PVOID pParameter, + /* [out] */ IHostTask **ppTask) = 0; + + virtual HRESULT STDMETHODCALLTYPE Sleep( + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option) = 0; + + virtual HRESULT STDMETHODCALLTYPE SwitchToTask( + /* [in] */ DWORD option) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetUILocale( + /* [in] */ LCID lcid) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetLocale( + /* [in] */ LCID lcid) = 0; + + virtual HRESULT STDMETHODCALLTYPE CallNeedsHostHook( + /* [in] */ SIZE_T target, + /* [out] */ BOOL *pbCallNeedsHostHook) = 0; + + virtual HRESULT STDMETHODCALLTYPE LeaveRuntime( + /* [in] */ SIZE_T target) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnterRuntime( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReverseLeaveRuntime( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReverseEnterRuntime( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE BeginDelayAbort( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndDelayAbort( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE BeginThreadAffinity( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndThreadAffinity( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetStackGuarantee( + /* [in] */ ULONG guarantee) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStackGuarantee( + /* [out] */ ULONG *pGuarantee) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCLRTaskManager( + /* [in] */ ICLRTaskManager *ppManager) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostTaskManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostTaskManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostTaskManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostTaskManager * This); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentTask )( + IHostTaskManager * This, + /* [out] */ IHostTask **pTask); + + HRESULT ( STDMETHODCALLTYPE *CreateTask )( + IHostTaskManager * This, + /* [in] */ DWORD dwStackSize, + /* [in] */ LPTHREAD_START_ROUTINE pStartAddress, + /* [in] */ PVOID pParameter, + /* [out] */ IHostTask **ppTask); + + HRESULT ( STDMETHODCALLTYPE *Sleep )( + IHostTaskManager * This, + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option); + + HRESULT ( STDMETHODCALLTYPE *SwitchToTask )( + IHostTaskManager * This, + /* [in] */ DWORD option); + + HRESULT ( STDMETHODCALLTYPE *SetUILocale )( + IHostTaskManager * This, + /* [in] */ LCID lcid); + + HRESULT ( STDMETHODCALLTYPE *SetLocale )( + IHostTaskManager * This, + /* [in] */ LCID lcid); + + HRESULT ( STDMETHODCALLTYPE *CallNeedsHostHook )( + IHostTaskManager * This, + /* [in] */ SIZE_T target, + /* [out] */ BOOL *pbCallNeedsHostHook); + + HRESULT ( STDMETHODCALLTYPE *LeaveRuntime )( + IHostTaskManager * This, + /* [in] */ SIZE_T target); + + HRESULT ( STDMETHODCALLTYPE *EnterRuntime )( + IHostTaskManager * This); + + HRESULT ( STDMETHODCALLTYPE *ReverseLeaveRuntime )( + IHostTaskManager * This); + + HRESULT ( STDMETHODCALLTYPE *ReverseEnterRuntime )( + IHostTaskManager * This); + + HRESULT ( STDMETHODCALLTYPE *BeginDelayAbort )( + IHostTaskManager * This); + + HRESULT ( STDMETHODCALLTYPE *EndDelayAbort )( + IHostTaskManager * This); + + HRESULT ( STDMETHODCALLTYPE *BeginThreadAffinity )( + IHostTaskManager * This); + + HRESULT ( STDMETHODCALLTYPE *EndThreadAffinity )( + IHostTaskManager * This); + + HRESULT ( STDMETHODCALLTYPE *SetStackGuarantee )( + IHostTaskManager * This, + /* [in] */ ULONG guarantee); + + HRESULT ( STDMETHODCALLTYPE *GetStackGuarantee )( + IHostTaskManager * This, + /* [out] */ ULONG *pGuarantee); + + HRESULT ( STDMETHODCALLTYPE *SetCLRTaskManager )( + IHostTaskManager * This, + /* [in] */ ICLRTaskManager *ppManager); + + END_INTERFACE + } IHostTaskManagerVtbl; + + interface IHostTaskManager + { + CONST_VTBL struct IHostTaskManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostTaskManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostTaskManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostTaskManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostTaskManager_GetCurrentTask(This,pTask) \ + (This)->lpVtbl -> GetCurrentTask(This,pTask) + +#define IHostTaskManager_CreateTask(This,dwStackSize,pStartAddress,pParameter,ppTask) \ + (This)->lpVtbl -> CreateTask(This,dwStackSize,pStartAddress,pParameter,ppTask) + +#define IHostTaskManager_Sleep(This,dwMilliseconds,option) \ + (This)->lpVtbl -> Sleep(This,dwMilliseconds,option) + +#define IHostTaskManager_SwitchToTask(This,option) \ + (This)->lpVtbl -> SwitchToTask(This,option) + +#define IHostTaskManager_SetUILocale(This,lcid) \ + (This)->lpVtbl -> SetUILocale(This,lcid) + +#define IHostTaskManager_SetLocale(This,lcid) \ + (This)->lpVtbl -> SetLocale(This,lcid) + +#define IHostTaskManager_CallNeedsHostHook(This,target,pbCallNeedsHostHook) \ + (This)->lpVtbl -> CallNeedsHostHook(This,target,pbCallNeedsHostHook) + +#define IHostTaskManager_LeaveRuntime(This,target) \ + (This)->lpVtbl -> LeaveRuntime(This,target) + +#define IHostTaskManager_EnterRuntime(This) \ + (This)->lpVtbl -> EnterRuntime(This) + +#define IHostTaskManager_ReverseLeaveRuntime(This) \ + (This)->lpVtbl -> ReverseLeaveRuntime(This) + +#define IHostTaskManager_ReverseEnterRuntime(This) \ + (This)->lpVtbl -> ReverseEnterRuntime(This) + +#define IHostTaskManager_BeginDelayAbort(This) \ + (This)->lpVtbl -> BeginDelayAbort(This) + +#define IHostTaskManager_EndDelayAbort(This) \ + (This)->lpVtbl -> EndDelayAbort(This) + +#define IHostTaskManager_BeginThreadAffinity(This) \ + (This)->lpVtbl -> BeginThreadAffinity(This) + +#define IHostTaskManager_EndThreadAffinity(This) \ + (This)->lpVtbl -> EndThreadAffinity(This) + +#define IHostTaskManager_SetStackGuarantee(This,guarantee) \ + (This)->lpVtbl -> SetStackGuarantee(This,guarantee) + +#define IHostTaskManager_GetStackGuarantee(This,pGuarantee) \ + (This)->lpVtbl -> GetStackGuarantee(This,pGuarantee) + +#define IHostTaskManager_SetCLRTaskManager(This,ppManager) \ + (This)->lpVtbl -> SetCLRTaskManager(This,ppManager) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_GetCurrentTask_Proxy( + IHostTaskManager * This, + /* [out] */ IHostTask **pTask); + + +void __RPC_STUB IHostTaskManager_GetCurrentTask_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_CreateTask_Proxy( + IHostTaskManager * This, + /* [in] */ DWORD dwStackSize, + /* [in] */ LPTHREAD_START_ROUTINE pStartAddress, + /* [in] */ PVOID pParameter, + /* [out] */ IHostTask **ppTask); + + +void __RPC_STUB IHostTaskManager_CreateTask_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_Sleep_Proxy( + IHostTaskManager * This, + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option); + + +void __RPC_STUB IHostTaskManager_Sleep_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_SwitchToTask_Proxy( + IHostTaskManager * This, + /* [in] */ DWORD option); + + +void __RPC_STUB IHostTaskManager_SwitchToTask_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_SetUILocale_Proxy( + IHostTaskManager * This, + /* [in] */ LCID lcid); + + +void __RPC_STUB IHostTaskManager_SetUILocale_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_SetLocale_Proxy( + IHostTaskManager * This, + /* [in] */ LCID lcid); + + +void __RPC_STUB IHostTaskManager_SetLocale_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_CallNeedsHostHook_Proxy( + IHostTaskManager * This, + /* [in] */ SIZE_T target, + /* [out] */ BOOL *pbCallNeedsHostHook); + + +void __RPC_STUB IHostTaskManager_CallNeedsHostHook_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_LeaveRuntime_Proxy( + IHostTaskManager * This, + /* [in] */ SIZE_T target); + + +void __RPC_STUB IHostTaskManager_LeaveRuntime_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_EnterRuntime_Proxy( + IHostTaskManager * This); + + +void __RPC_STUB IHostTaskManager_EnterRuntime_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_ReverseLeaveRuntime_Proxy( + IHostTaskManager * This); + + +void __RPC_STUB IHostTaskManager_ReverseLeaveRuntime_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_ReverseEnterRuntime_Proxy( + IHostTaskManager * This); + + +void __RPC_STUB IHostTaskManager_ReverseEnterRuntime_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_BeginDelayAbort_Proxy( + IHostTaskManager * This); + + +void __RPC_STUB IHostTaskManager_BeginDelayAbort_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_EndDelayAbort_Proxy( + IHostTaskManager * This); + + +void __RPC_STUB IHostTaskManager_EndDelayAbort_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_BeginThreadAffinity_Proxy( + IHostTaskManager * This); + + +void __RPC_STUB IHostTaskManager_BeginThreadAffinity_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_EndThreadAffinity_Proxy( + IHostTaskManager * This); + + +void __RPC_STUB IHostTaskManager_EndThreadAffinity_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_SetStackGuarantee_Proxy( + IHostTaskManager * This, + /* [in] */ ULONG guarantee); + + +void __RPC_STUB IHostTaskManager_SetStackGuarantee_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_GetStackGuarantee_Proxy( + IHostTaskManager * This, + /* [out] */ ULONG *pGuarantee); + + +void __RPC_STUB IHostTaskManager_GetStackGuarantee_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostTaskManager_SetCLRTaskManager_Proxy( + IHostTaskManager * This, + /* [in] */ ICLRTaskManager *ppManager); + + +void __RPC_STUB IHostTaskManager_SetCLRTaskManager_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostTaskManager_INTERFACE_DEFINED__ */ + + +#ifndef __IHostThreadpoolManager_INTERFACE_DEFINED__ +#define __IHostThreadpoolManager_INTERFACE_DEFINED__ + +/* interface IHostThreadpoolManager */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IHostThreadpoolManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("983D50E2-CB15-466B-80FC-845DC6E8C5FD") + IHostThreadpoolManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE QueueUserWorkItem( + /* [in] */ LPTHREAD_START_ROUTINE Function, + /* [in] */ PVOID Context, + /* [in] */ ULONG Flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMaxThreads( + /* [in] */ DWORD dwMaxWorkerThreads) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMaxThreads( + /* [out] */ DWORD *pdwMaxWorkerThreads) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableThreads( + /* [out] */ DWORD *pdwAvailableWorkerThreads) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMinThreads( + /* [in] */ DWORD dwMinIOCompletionThreads) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMinThreads( + /* [out] */ DWORD *pdwMinIOCompletionThreads) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostThreadpoolManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostThreadpoolManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostThreadpoolManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostThreadpoolManager * This); + + HRESULT ( STDMETHODCALLTYPE *QueueUserWorkItem )( + IHostThreadpoolManager * This, + /* [in] */ LPTHREAD_START_ROUTINE Function, + /* [in] */ PVOID Context, + /* [in] */ ULONG Flags); + + HRESULT ( STDMETHODCALLTYPE *SetMaxThreads )( + IHostThreadpoolManager * This, + /* [in] */ DWORD dwMaxWorkerThreads); + + HRESULT ( STDMETHODCALLTYPE *GetMaxThreads )( + IHostThreadpoolManager * This, + /* [out] */ DWORD *pdwMaxWorkerThreads); + + HRESULT ( STDMETHODCALLTYPE *GetAvailableThreads )( + IHostThreadpoolManager * This, + /* [out] */ DWORD *pdwAvailableWorkerThreads); + + HRESULT ( STDMETHODCALLTYPE *SetMinThreads )( + IHostThreadpoolManager * This, + /* [in] */ DWORD dwMinIOCompletionThreads); + + HRESULT ( STDMETHODCALLTYPE *GetMinThreads )( + IHostThreadpoolManager * This, + /* [out] */ DWORD *pdwMinIOCompletionThreads); + + END_INTERFACE + } IHostThreadpoolManagerVtbl; + + interface IHostThreadpoolManager + { + CONST_VTBL struct IHostThreadpoolManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostThreadpoolManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostThreadpoolManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostThreadpoolManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostThreadpoolManager_QueueUserWorkItem(This,Function,Context,Flags) \ + (This)->lpVtbl -> QueueUserWorkItem(This,Function,Context,Flags) + +#define IHostThreadpoolManager_SetMaxThreads(This,dwMaxWorkerThreads) \ + (This)->lpVtbl -> SetMaxThreads(This,dwMaxWorkerThreads) + +#define IHostThreadpoolManager_GetMaxThreads(This,pdwMaxWorkerThreads) \ + (This)->lpVtbl -> GetMaxThreads(This,pdwMaxWorkerThreads) + +#define IHostThreadpoolManager_GetAvailableThreads(This,pdwAvailableWorkerThreads) \ + (This)->lpVtbl -> GetAvailableThreads(This,pdwAvailableWorkerThreads) + +#define IHostThreadpoolManager_SetMinThreads(This,dwMinIOCompletionThreads) \ + (This)->lpVtbl -> SetMinThreads(This,dwMinIOCompletionThreads) + +#define IHostThreadpoolManager_GetMinThreads(This,pdwMinIOCompletionThreads) \ + (This)->lpVtbl -> GetMinThreads(This,pdwMinIOCompletionThreads) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostThreadpoolManager_QueueUserWorkItem_Proxy( + IHostThreadpoolManager * This, + /* [in] */ LPTHREAD_START_ROUTINE Function, + /* [in] */ PVOID Context, + /* [in] */ ULONG Flags); + + +void __RPC_STUB IHostThreadpoolManager_QueueUserWorkItem_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostThreadpoolManager_SetMaxThreads_Proxy( + IHostThreadpoolManager * This, + /* [in] */ DWORD dwMaxWorkerThreads); + + +void __RPC_STUB IHostThreadpoolManager_SetMaxThreads_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostThreadpoolManager_GetMaxThreads_Proxy( + IHostThreadpoolManager * This, + /* [out] */ DWORD *pdwMaxWorkerThreads); + + +void __RPC_STUB IHostThreadpoolManager_GetMaxThreads_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostThreadpoolManager_GetAvailableThreads_Proxy( + IHostThreadpoolManager * This, + /* [out] */ DWORD *pdwAvailableWorkerThreads); + + +void __RPC_STUB IHostThreadpoolManager_GetAvailableThreads_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostThreadpoolManager_SetMinThreads_Proxy( + IHostThreadpoolManager * This, + /* [in] */ DWORD dwMinIOCompletionThreads); + + +void __RPC_STUB IHostThreadpoolManager_SetMinThreads_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostThreadpoolManager_GetMinThreads_Proxy( + IHostThreadpoolManager * This, + /* [out] */ DWORD *pdwMinIOCompletionThreads); + + +void __RPC_STUB IHostThreadpoolManager_GetMinThreads_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostThreadpoolManager_INTERFACE_DEFINED__ */ + + +#ifndef __ICLRIoCompletionManager_INTERFACE_DEFINED__ +#define __ICLRIoCompletionManager_INTERFACE_DEFINED__ + +/* interface ICLRIoCompletionManager */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRIoCompletionManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2d74ce86-b8d6-4c84-b3a7-9768933b3c12") + ICLRIoCompletionManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE OnComplete( + /* [in] */ DWORD dwErrorCode, + /* [in] */ DWORD NumberOfBytesTransferred, + /* [in] */ void *pvOverlapped) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRIoCompletionManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRIoCompletionManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRIoCompletionManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRIoCompletionManager * This); + + HRESULT ( STDMETHODCALLTYPE *OnComplete )( + ICLRIoCompletionManager * This, + /* [in] */ DWORD dwErrorCode, + /* [in] */ DWORD NumberOfBytesTransferred, + /* [in] */ void *pvOverlapped); + + END_INTERFACE + } ICLRIoCompletionManagerVtbl; + + interface ICLRIoCompletionManager + { + CONST_VTBL struct ICLRIoCompletionManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRIoCompletionManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRIoCompletionManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRIoCompletionManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRIoCompletionManager_OnComplete(This,dwErrorCode,NumberOfBytesTransferred,pvOverlapped) \ + (This)->lpVtbl -> OnComplete(This,dwErrorCode,NumberOfBytesTransferred,pvOverlapped) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRIoCompletionManager_OnComplete_Proxy( + ICLRIoCompletionManager * This, + /* [in] */ DWORD dwErrorCode, + /* [in] */ DWORD NumberOfBytesTransferred, + /* [in] */ void *pvOverlapped); + + +void __RPC_STUB ICLRIoCompletionManager_OnComplete_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRIoCompletionManager_INTERFACE_DEFINED__ */ + + +#ifndef __IHostIoCompletionManager_INTERFACE_DEFINED__ +#define __IHostIoCompletionManager_INTERFACE_DEFINED__ + +/* interface IHostIoCompletionManager */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IHostIoCompletionManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8bde9d80-ec06-41d6-83e6-22580effcc20") + IHostIoCompletionManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE CreateIoCompletionPort( + /* [out] */ HANDLE *phPort) = 0; + + virtual HRESULT STDMETHODCALLTYPE CloseIoCompletionPort( + /* [in] */ HANDLE hPort) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMaxThreads( + /* [in] */ DWORD dwMaxIOCompletionThreads) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMaxThreads( + /* [out] */ DWORD *pdwMaxIOCompletionThreads) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableThreads( + /* [out] */ DWORD *pdwAvailableIOCompletionThreads) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHostOverlappedSize( + /* [out] */ DWORD *pcbSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCLRIoCompletionManager( + /* [in] */ ICLRIoCompletionManager *pManager) = 0; + + virtual HRESULT STDMETHODCALLTYPE InitializeHostOverlapped( + /* [in] */ void *pvOverlapped) = 0; + + virtual HRESULT STDMETHODCALLTYPE Bind( + /* [in] */ HANDLE hPort, + /* [in] */ HANDLE hHandle) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMinThreads( + /* [in] */ DWORD dwMinIOCompletionThreads) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMinThreads( + /* [out] */ DWORD *pdwMinIOCompletionThreads) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostIoCompletionManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostIoCompletionManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostIoCompletionManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostIoCompletionManager * This); + + HRESULT ( STDMETHODCALLTYPE *CreateIoCompletionPort )( + IHostIoCompletionManager * This, + /* [out] */ HANDLE *phPort); + + HRESULT ( STDMETHODCALLTYPE *CloseIoCompletionPort )( + IHostIoCompletionManager * This, + /* [in] */ HANDLE hPort); + + HRESULT ( STDMETHODCALLTYPE *SetMaxThreads )( + IHostIoCompletionManager * This, + /* [in] */ DWORD dwMaxIOCompletionThreads); + + HRESULT ( STDMETHODCALLTYPE *GetMaxThreads )( + IHostIoCompletionManager * This, + /* [out] */ DWORD *pdwMaxIOCompletionThreads); + + HRESULT ( STDMETHODCALLTYPE *GetAvailableThreads )( + IHostIoCompletionManager * This, + /* [out] */ DWORD *pdwAvailableIOCompletionThreads); + + HRESULT ( STDMETHODCALLTYPE *GetHostOverlappedSize )( + IHostIoCompletionManager * This, + /* [out] */ DWORD *pcbSize); + + HRESULT ( STDMETHODCALLTYPE *SetCLRIoCompletionManager )( + IHostIoCompletionManager * This, + /* [in] */ ICLRIoCompletionManager *pManager); + + HRESULT ( STDMETHODCALLTYPE *InitializeHostOverlapped )( + IHostIoCompletionManager * This, + /* [in] */ void *pvOverlapped); + + HRESULT ( STDMETHODCALLTYPE *Bind )( + IHostIoCompletionManager * This, + /* [in] */ HANDLE hPort, + /* [in] */ HANDLE hHandle); + + HRESULT ( STDMETHODCALLTYPE *SetMinThreads )( + IHostIoCompletionManager * This, + /* [in] */ DWORD dwMinIOCompletionThreads); + + HRESULT ( STDMETHODCALLTYPE *GetMinThreads )( + IHostIoCompletionManager * This, + /* [out] */ DWORD *pdwMinIOCompletionThreads); + + END_INTERFACE + } IHostIoCompletionManagerVtbl; + + interface IHostIoCompletionManager + { + CONST_VTBL struct IHostIoCompletionManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostIoCompletionManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostIoCompletionManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostIoCompletionManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostIoCompletionManager_CreateIoCompletionPort(This,phPort) \ + (This)->lpVtbl -> CreateIoCompletionPort(This,phPort) + +#define IHostIoCompletionManager_CloseIoCompletionPort(This,hPort) \ + (This)->lpVtbl -> CloseIoCompletionPort(This,hPort) + +#define IHostIoCompletionManager_SetMaxThreads(This,dwMaxIOCompletionThreads) \ + (This)->lpVtbl -> SetMaxThreads(This,dwMaxIOCompletionThreads) + +#define IHostIoCompletionManager_GetMaxThreads(This,pdwMaxIOCompletionThreads) \ + (This)->lpVtbl -> GetMaxThreads(This,pdwMaxIOCompletionThreads) + +#define IHostIoCompletionManager_GetAvailableThreads(This,pdwAvailableIOCompletionThreads) \ + (This)->lpVtbl -> GetAvailableThreads(This,pdwAvailableIOCompletionThreads) + +#define IHostIoCompletionManager_GetHostOverlappedSize(This,pcbSize) \ + (This)->lpVtbl -> GetHostOverlappedSize(This,pcbSize) + +#define IHostIoCompletionManager_SetCLRIoCompletionManager(This,pManager) \ + (This)->lpVtbl -> SetCLRIoCompletionManager(This,pManager) + +#define IHostIoCompletionManager_InitializeHostOverlapped(This,pvOverlapped) \ + (This)->lpVtbl -> InitializeHostOverlapped(This,pvOverlapped) + +#define IHostIoCompletionManager_Bind(This,hPort,hHandle) \ + (This)->lpVtbl -> Bind(This,hPort,hHandle) + +#define IHostIoCompletionManager_SetMinThreads(This,dwMinIOCompletionThreads) \ + (This)->lpVtbl -> SetMinThreads(This,dwMinIOCompletionThreads) + +#define IHostIoCompletionManager_GetMinThreads(This,pdwMinIOCompletionThreads) \ + (This)->lpVtbl -> GetMinThreads(This,pdwMinIOCompletionThreads) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostIoCompletionManager_CreateIoCompletionPort_Proxy( + IHostIoCompletionManager * This, + /* [out] */ HANDLE *phPort); + + +void __RPC_STUB IHostIoCompletionManager_CreateIoCompletionPort_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostIoCompletionManager_CloseIoCompletionPort_Proxy( + IHostIoCompletionManager * This, + /* [in] */ HANDLE hPort); + + +void __RPC_STUB IHostIoCompletionManager_CloseIoCompletionPort_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostIoCompletionManager_SetMaxThreads_Proxy( + IHostIoCompletionManager * This, + /* [in] */ DWORD dwMaxIOCompletionThreads); + + +void __RPC_STUB IHostIoCompletionManager_SetMaxThreads_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostIoCompletionManager_GetMaxThreads_Proxy( + IHostIoCompletionManager * This, + /* [out] */ DWORD *pdwMaxIOCompletionThreads); + + +void __RPC_STUB IHostIoCompletionManager_GetMaxThreads_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostIoCompletionManager_GetAvailableThreads_Proxy( + IHostIoCompletionManager * This, + /* [out] */ DWORD *pdwAvailableIOCompletionThreads); + + +void __RPC_STUB IHostIoCompletionManager_GetAvailableThreads_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostIoCompletionManager_GetHostOverlappedSize_Proxy( + IHostIoCompletionManager * This, + /* [out] */ DWORD *pcbSize); + + +void __RPC_STUB IHostIoCompletionManager_GetHostOverlappedSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostIoCompletionManager_SetCLRIoCompletionManager_Proxy( + IHostIoCompletionManager * This, + /* [in] */ ICLRIoCompletionManager *pManager); + + +void __RPC_STUB IHostIoCompletionManager_SetCLRIoCompletionManager_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostIoCompletionManager_InitializeHostOverlapped_Proxy( + IHostIoCompletionManager * This, + /* [in] */ void *pvOverlapped); + + +void __RPC_STUB IHostIoCompletionManager_InitializeHostOverlapped_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostIoCompletionManager_Bind_Proxy( + IHostIoCompletionManager * This, + /* [in] */ HANDLE hPort, + /* [in] */ HANDLE hHandle); + + +void __RPC_STUB IHostIoCompletionManager_Bind_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostIoCompletionManager_SetMinThreads_Proxy( + IHostIoCompletionManager * This, + /* [in] */ DWORD dwMinIOCompletionThreads); + + +void __RPC_STUB IHostIoCompletionManager_SetMinThreads_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostIoCompletionManager_GetMinThreads_Proxy( + IHostIoCompletionManager * This, + /* [out] */ DWORD *pdwMinIOCompletionThreads); + + +void __RPC_STUB IHostIoCompletionManager_GetMinThreads_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostIoCompletionManager_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0143 */ +/* [local] */ + +typedef /* [public][public] */ +enum __MIDL___MIDL_itf_mscoree_0143_0001 + { eSymbolReadingNever = 0, + eSymbolReadingAlways = 1, + eSymbolReadingFullTrustOnly = 2 + } ESymbolReadingPolicy; + + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0143_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0143_v0_0_s_ifspec; + +#ifndef __ICLRDebugManager_INTERFACE_DEFINED__ +#define __ICLRDebugManager_INTERFACE_DEFINED__ + +/* interface ICLRDebugManager */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRDebugManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("00DCAEC6-2AC0-43a9-ACF9-1E36C139B10D") + ICLRDebugManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE BeginConnection( + /* [in] */ CONNID dwConnectionId, + /* [string][in] */ wchar_t *szConnectionName) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetConnectionTasks( + /* [in] */ CONNID id, + /* [in] */ DWORD dwCount, + /* [size_is][in] */ ICLRTask **ppCLRTask) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndConnection( + /* [in] */ CONNID dwConnectionId) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDacl( + /* [in] */ PACL pacl) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDacl( + /* [out] */ PACL *pacl) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsDebuggerAttached( + /* [out] */ BOOL *pbAttached) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSymbolReadingPolicy( + /* [in] */ ESymbolReadingPolicy policy) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRDebugManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRDebugManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRDebugManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRDebugManager * This); + + HRESULT ( STDMETHODCALLTYPE *BeginConnection )( + ICLRDebugManager * This, + /* [in] */ CONNID dwConnectionId, + /* [string][in] */ wchar_t *szConnectionName); + + HRESULT ( STDMETHODCALLTYPE *SetConnectionTasks )( + ICLRDebugManager * This, + /* [in] */ CONNID id, + /* [in] */ DWORD dwCount, + /* [size_is][in] */ ICLRTask **ppCLRTask); + + HRESULT ( STDMETHODCALLTYPE *EndConnection )( + ICLRDebugManager * This, + /* [in] */ CONNID dwConnectionId); + + HRESULT ( STDMETHODCALLTYPE *SetDacl )( + ICLRDebugManager * This, + /* [in] */ PACL pacl); + + HRESULT ( STDMETHODCALLTYPE *GetDacl )( + ICLRDebugManager * This, + /* [out] */ PACL *pacl); + + HRESULT ( STDMETHODCALLTYPE *IsDebuggerAttached )( + ICLRDebugManager * This, + /* [out] */ BOOL *pbAttached); + + HRESULT ( STDMETHODCALLTYPE *SetSymbolReadingPolicy )( + ICLRDebugManager * This, + /* [in] */ ESymbolReadingPolicy policy); + + END_INTERFACE + } ICLRDebugManagerVtbl; + + interface ICLRDebugManager + { + CONST_VTBL struct ICLRDebugManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRDebugManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRDebugManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRDebugManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRDebugManager_BeginConnection(This,dwConnectionId,szConnectionName) \ + (This)->lpVtbl -> BeginConnection(This,dwConnectionId,szConnectionName) + +#define ICLRDebugManager_SetConnectionTasks(This,id,dwCount,ppCLRTask) \ + (This)->lpVtbl -> SetConnectionTasks(This,id,dwCount,ppCLRTask) + +#define ICLRDebugManager_EndConnection(This,dwConnectionId) \ + (This)->lpVtbl -> EndConnection(This,dwConnectionId) + +#define ICLRDebugManager_SetDacl(This,pacl) \ + (This)->lpVtbl -> SetDacl(This,pacl) + +#define ICLRDebugManager_GetDacl(This,pacl) \ + (This)->lpVtbl -> GetDacl(This,pacl) + +#define ICLRDebugManager_IsDebuggerAttached(This,pbAttached) \ + (This)->lpVtbl -> IsDebuggerAttached(This,pbAttached) + +#define ICLRDebugManager_SetSymbolReadingPolicy(This,policy) \ + (This)->lpVtbl -> SetSymbolReadingPolicy(This,policy) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRDebugManager_BeginConnection_Proxy( + ICLRDebugManager * This, + /* [in] */ CONNID dwConnectionId, + /* [string][in] */ wchar_t *szConnectionName); + + +void __RPC_STUB ICLRDebugManager_BeginConnection_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRDebugManager_SetConnectionTasks_Proxy( + ICLRDebugManager * This, + /* [in] */ CONNID id, + /* [in] */ DWORD dwCount, + /* [size_is][in] */ ICLRTask **ppCLRTask); + + +void __RPC_STUB ICLRDebugManager_SetConnectionTasks_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRDebugManager_EndConnection_Proxy( + ICLRDebugManager * This, + /* [in] */ CONNID dwConnectionId); + + +void __RPC_STUB ICLRDebugManager_EndConnection_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRDebugManager_SetDacl_Proxy( + ICLRDebugManager * This, + /* [in] */ PACL pacl); + + +void __RPC_STUB ICLRDebugManager_SetDacl_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRDebugManager_GetDacl_Proxy( + ICLRDebugManager * This, + /* [out] */ PACL *pacl); + + +void __RPC_STUB ICLRDebugManager_GetDacl_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRDebugManager_IsDebuggerAttached_Proxy( + ICLRDebugManager * This, + /* [out] */ BOOL *pbAttached); + + +void __RPC_STUB ICLRDebugManager_IsDebuggerAttached_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRDebugManager_SetSymbolReadingPolicy_Proxy( + ICLRDebugManager * This, + /* [in] */ ESymbolReadingPolicy policy); + + +void __RPC_STUB ICLRDebugManager_SetSymbolReadingPolicy_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRDebugManager_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0144 */ +/* [local] */ + +typedef /* [public][public] */ +enum __MIDL___MIDL_itf_mscoree_0144_0001 + { DUMP_FLAVOR_Mini = 0, + DUMP_FLAVOR_CriticalCLRState = 1, + DUMP_FLAVOR_NonHeapCLRState = 2, + DUMP_FLAVOR_Default = DUMP_FLAVOR_Mini + } ECustomDumpFlavor; + +typedef /* [public][public][public] */ +enum __MIDL___MIDL_itf_mscoree_0144_0002 + { DUMP_ITEM_None = 0 + } ECustomDumpItemKind; + +typedef /* [public][public] */ struct __MIDL___MIDL_itf_mscoree_0144_0003 + { + ECustomDumpItemKind itemKind; + union + { + UINT_PTR pReserved; + } ; + } CustomDumpItem; + +typedef struct _BucketParameters + { + BOOL fInited; + WCHAR pszEventTypeName[ 255 ]; + WCHAR pszParams[ 10 ][ 255 ]; + } BucketParameters; + + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0144_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0144_v0_0_s_ifspec; + +#ifndef __ICLRErrorReportingManager_INTERFACE_DEFINED__ +#define __ICLRErrorReportingManager_INTERFACE_DEFINED__ + +/* interface ICLRErrorReportingManager */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRErrorReportingManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("980D2F1A-BF79-4c08-812A-BB9778928F78") + ICLRErrorReportingManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetBucketParametersForCurrentException( + /* [out] */ BucketParameters *pParams) = 0; + + virtual HRESULT STDMETHODCALLTYPE BeginCustomDump( + /* [in] */ ECustomDumpFlavor dwFlavor, + /* [in] */ DWORD dwNumItems, + /* [length_is][size_is][in] */ CustomDumpItem *items, + DWORD dwReserved) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndCustomDump( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRErrorReportingManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRErrorReportingManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRErrorReportingManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRErrorReportingManager * This); + + HRESULT ( STDMETHODCALLTYPE *GetBucketParametersForCurrentException )( + ICLRErrorReportingManager * This, + /* [out] */ BucketParameters *pParams); + + HRESULT ( STDMETHODCALLTYPE *BeginCustomDump )( + ICLRErrorReportingManager * This, + /* [in] */ ECustomDumpFlavor dwFlavor, + /* [in] */ DWORD dwNumItems, + /* [length_is][size_is][in] */ CustomDumpItem *items, + DWORD dwReserved); + + HRESULT ( STDMETHODCALLTYPE *EndCustomDump )( + ICLRErrorReportingManager * This); + + END_INTERFACE + } ICLRErrorReportingManagerVtbl; + + interface ICLRErrorReportingManager + { + CONST_VTBL struct ICLRErrorReportingManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRErrorReportingManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRErrorReportingManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRErrorReportingManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRErrorReportingManager_GetBucketParametersForCurrentException(This,pParams) \ + (This)->lpVtbl -> GetBucketParametersForCurrentException(This,pParams) + +#define ICLRErrorReportingManager_BeginCustomDump(This,dwFlavor,dwNumItems,items,dwReserved) \ + (This)->lpVtbl -> BeginCustomDump(This,dwFlavor,dwNumItems,items,dwReserved) + +#define ICLRErrorReportingManager_EndCustomDump(This) \ + (This)->lpVtbl -> EndCustomDump(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRErrorReportingManager_GetBucketParametersForCurrentException_Proxy( + ICLRErrorReportingManager * This, + /* [out] */ BucketParameters *pParams); + + +void __RPC_STUB ICLRErrorReportingManager_GetBucketParametersForCurrentException_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRErrorReportingManager_BeginCustomDump_Proxy( + ICLRErrorReportingManager * This, + /* [in] */ ECustomDumpFlavor dwFlavor, + /* [in] */ DWORD dwNumItems, + /* [length_is][size_is][in] */ CustomDumpItem *items, + DWORD dwReserved); + + +void __RPC_STUB ICLRErrorReportingManager_BeginCustomDump_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRErrorReportingManager_EndCustomDump_Proxy( + ICLRErrorReportingManager * This); + + +void __RPC_STUB ICLRErrorReportingManager_EndCustomDump_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRErrorReportingManager_INTERFACE_DEFINED__ */ + + +#ifndef __IHostCrst_INTERFACE_DEFINED__ +#define __IHostCrst_INTERFACE_DEFINED__ + +/* interface IHostCrst */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IHostCrst; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6DF710A6-26A4-4a65-8CD5-7237B8BDA8DC") + IHostCrst : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Enter( + /* [in] */ DWORD option) = 0; + + virtual HRESULT STDMETHODCALLTYPE Leave( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE TryEnter( + /* [in] */ DWORD option, + /* [out] */ BOOL *pbSucceeded) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSpinCount( + /* [in] */ DWORD dwSpinCount) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostCrstVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostCrst * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostCrst * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostCrst * This); + + HRESULT ( STDMETHODCALLTYPE *Enter )( + IHostCrst * This, + /* [in] */ DWORD option); + + HRESULT ( STDMETHODCALLTYPE *Leave )( + IHostCrst * This); + + HRESULT ( STDMETHODCALLTYPE *TryEnter )( + IHostCrst * This, + /* [in] */ DWORD option, + /* [out] */ BOOL *pbSucceeded); + + HRESULT ( STDMETHODCALLTYPE *SetSpinCount )( + IHostCrst * This, + /* [in] */ DWORD dwSpinCount); + + END_INTERFACE + } IHostCrstVtbl; + + interface IHostCrst + { + CONST_VTBL struct IHostCrstVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostCrst_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostCrst_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostCrst_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostCrst_Enter(This,option) \ + (This)->lpVtbl -> Enter(This,option) + +#define IHostCrst_Leave(This) \ + (This)->lpVtbl -> Leave(This) + +#define IHostCrst_TryEnter(This,option,pbSucceeded) \ + (This)->lpVtbl -> TryEnter(This,option,pbSucceeded) + +#define IHostCrst_SetSpinCount(This,dwSpinCount) \ + (This)->lpVtbl -> SetSpinCount(This,dwSpinCount) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostCrst_Enter_Proxy( + IHostCrst * This, + /* [in] */ DWORD option); + + +void __RPC_STUB IHostCrst_Enter_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostCrst_Leave_Proxy( + IHostCrst * This); + + +void __RPC_STUB IHostCrst_Leave_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostCrst_TryEnter_Proxy( + IHostCrst * This, + /* [in] */ DWORD option, + /* [out] */ BOOL *pbSucceeded); + + +void __RPC_STUB IHostCrst_TryEnter_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostCrst_SetSpinCount_Proxy( + IHostCrst * This, + /* [in] */ DWORD dwSpinCount); + + +void __RPC_STUB IHostCrst_SetSpinCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostCrst_INTERFACE_DEFINED__ */ + + +#ifndef __IHostAutoEvent_INTERFACE_DEFINED__ +#define __IHostAutoEvent_INTERFACE_DEFINED__ + +/* interface IHostAutoEvent */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IHostAutoEvent; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("50B0CFCE-4063-4278-9673-E5CB4ED0BDB8") + IHostAutoEvent : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Wait( + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option) = 0; + + virtual HRESULT STDMETHODCALLTYPE Set( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostAutoEventVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostAutoEvent * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostAutoEvent * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostAutoEvent * This); + + HRESULT ( STDMETHODCALLTYPE *Wait )( + IHostAutoEvent * This, + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option); + + HRESULT ( STDMETHODCALLTYPE *Set )( + IHostAutoEvent * This); + + END_INTERFACE + } IHostAutoEventVtbl; + + interface IHostAutoEvent + { + CONST_VTBL struct IHostAutoEventVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostAutoEvent_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostAutoEvent_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostAutoEvent_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostAutoEvent_Wait(This,dwMilliseconds,option) \ + (This)->lpVtbl -> Wait(This,dwMilliseconds,option) + +#define IHostAutoEvent_Set(This) \ + (This)->lpVtbl -> Set(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostAutoEvent_Wait_Proxy( + IHostAutoEvent * This, + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option); + + +void __RPC_STUB IHostAutoEvent_Wait_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostAutoEvent_Set_Proxy( + IHostAutoEvent * This); + + +void __RPC_STUB IHostAutoEvent_Set_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostAutoEvent_INTERFACE_DEFINED__ */ + + +#ifndef __IHostManualEvent_INTERFACE_DEFINED__ +#define __IHostManualEvent_INTERFACE_DEFINED__ + +/* interface IHostManualEvent */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IHostManualEvent; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1BF4EC38-AFFE-4fb9-85A6-525268F15B54") + IHostManualEvent : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Wait( + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Set( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostManualEventVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostManualEvent * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostManualEvent * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostManualEvent * This); + + HRESULT ( STDMETHODCALLTYPE *Wait )( + IHostManualEvent * This, + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IHostManualEvent * This); + + HRESULT ( STDMETHODCALLTYPE *Set )( + IHostManualEvent * This); + + END_INTERFACE + } IHostManualEventVtbl; + + interface IHostManualEvent + { + CONST_VTBL struct IHostManualEventVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostManualEvent_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostManualEvent_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostManualEvent_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostManualEvent_Wait(This,dwMilliseconds,option) \ + (This)->lpVtbl -> Wait(This,dwMilliseconds,option) + +#define IHostManualEvent_Reset(This) \ + (This)->lpVtbl -> Reset(This) + +#define IHostManualEvent_Set(This) \ + (This)->lpVtbl -> Set(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostManualEvent_Wait_Proxy( + IHostManualEvent * This, + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option); + + +void __RPC_STUB IHostManualEvent_Wait_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostManualEvent_Reset_Proxy( + IHostManualEvent * This); + + +void __RPC_STUB IHostManualEvent_Reset_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostManualEvent_Set_Proxy( + IHostManualEvent * This); + + +void __RPC_STUB IHostManualEvent_Set_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostManualEvent_INTERFACE_DEFINED__ */ + + +#ifndef __IHostSemaphore_INTERFACE_DEFINED__ +#define __IHostSemaphore_INTERFACE_DEFINED__ + +/* interface IHostSemaphore */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IHostSemaphore; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("855efd47-cc09-463a-a97d-16acab882661") + IHostSemaphore : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Wait( + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReleaseSemaphore( + /* [in] */ LONG lReleaseCount, + /* [out] */ LONG *lpPreviousCount) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostSemaphoreVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostSemaphore * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostSemaphore * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostSemaphore * This); + + HRESULT ( STDMETHODCALLTYPE *Wait )( + IHostSemaphore * This, + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option); + + HRESULT ( STDMETHODCALLTYPE *ReleaseSemaphore )( + IHostSemaphore * This, + /* [in] */ LONG lReleaseCount, + /* [out] */ LONG *lpPreviousCount); + + END_INTERFACE + } IHostSemaphoreVtbl; + + interface IHostSemaphore + { + CONST_VTBL struct IHostSemaphoreVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostSemaphore_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostSemaphore_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostSemaphore_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostSemaphore_Wait(This,dwMilliseconds,option) \ + (This)->lpVtbl -> Wait(This,dwMilliseconds,option) + +#define IHostSemaphore_ReleaseSemaphore(This,lReleaseCount,lpPreviousCount) \ + (This)->lpVtbl -> ReleaseSemaphore(This,lReleaseCount,lpPreviousCount) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostSemaphore_Wait_Proxy( + IHostSemaphore * This, + /* [in] */ DWORD dwMilliseconds, + /* [in] */ DWORD option); + + +void __RPC_STUB IHostSemaphore_Wait_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostSemaphore_ReleaseSemaphore_Proxy( + IHostSemaphore * This, + /* [in] */ LONG lReleaseCount, + /* [out] */ LONG *lpPreviousCount); + + +void __RPC_STUB IHostSemaphore_ReleaseSemaphore_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostSemaphore_INTERFACE_DEFINED__ */ + + +#ifndef __ICLRSyncManager_INTERFACE_DEFINED__ +#define __ICLRSyncManager_INTERFACE_DEFINED__ + +/* interface ICLRSyncManager */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRSyncManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("55FF199D-AD21-48f9-A16C-F24EBBB8727D") + ICLRSyncManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetMonitorOwner( + /* [in] */ SIZE_T Cookie, + /* [out] */ IHostTask **ppOwnerHostTask) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateRWLockOwnerIterator( + /* [in] */ SIZE_T Cookie, + /* [out] */ SIZE_T *pIterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRWLockOwnerNext( + /* [in] */ SIZE_T Iterator, + /* [out] */ IHostTask **ppOwnerHostTask) = 0; + + virtual HRESULT STDMETHODCALLTYPE DeleteRWLockOwnerIterator( + /* [in] */ SIZE_T Iterator) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRSyncManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRSyncManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRSyncManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRSyncManager * This); + + HRESULT ( STDMETHODCALLTYPE *GetMonitorOwner )( + ICLRSyncManager * This, + /* [in] */ SIZE_T Cookie, + /* [out] */ IHostTask **ppOwnerHostTask); + + HRESULT ( STDMETHODCALLTYPE *CreateRWLockOwnerIterator )( + ICLRSyncManager * This, + /* [in] */ SIZE_T Cookie, + /* [out] */ SIZE_T *pIterator); + + HRESULT ( STDMETHODCALLTYPE *GetRWLockOwnerNext )( + ICLRSyncManager * This, + /* [in] */ SIZE_T Iterator, + /* [out] */ IHostTask **ppOwnerHostTask); + + HRESULT ( STDMETHODCALLTYPE *DeleteRWLockOwnerIterator )( + ICLRSyncManager * This, + /* [in] */ SIZE_T Iterator); + + END_INTERFACE + } ICLRSyncManagerVtbl; + + interface ICLRSyncManager + { + CONST_VTBL struct ICLRSyncManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRSyncManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRSyncManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRSyncManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRSyncManager_GetMonitorOwner(This,Cookie,ppOwnerHostTask) \ + (This)->lpVtbl -> GetMonitorOwner(This,Cookie,ppOwnerHostTask) + +#define ICLRSyncManager_CreateRWLockOwnerIterator(This,Cookie,pIterator) \ + (This)->lpVtbl -> CreateRWLockOwnerIterator(This,Cookie,pIterator) + +#define ICLRSyncManager_GetRWLockOwnerNext(This,Iterator,ppOwnerHostTask) \ + (This)->lpVtbl -> GetRWLockOwnerNext(This,Iterator,ppOwnerHostTask) + +#define ICLRSyncManager_DeleteRWLockOwnerIterator(This,Iterator) \ + (This)->lpVtbl -> DeleteRWLockOwnerIterator(This,Iterator) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRSyncManager_GetMonitorOwner_Proxy( + ICLRSyncManager * This, + /* [in] */ SIZE_T Cookie, + /* [out] */ IHostTask **ppOwnerHostTask); + + +void __RPC_STUB ICLRSyncManager_GetMonitorOwner_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRSyncManager_CreateRWLockOwnerIterator_Proxy( + ICLRSyncManager * This, + /* [in] */ SIZE_T Cookie, + /* [out] */ SIZE_T *pIterator); + + +void __RPC_STUB ICLRSyncManager_CreateRWLockOwnerIterator_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRSyncManager_GetRWLockOwnerNext_Proxy( + ICLRSyncManager * This, + /* [in] */ SIZE_T Iterator, + /* [out] */ IHostTask **ppOwnerHostTask); + + +void __RPC_STUB ICLRSyncManager_GetRWLockOwnerNext_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRSyncManager_DeleteRWLockOwnerIterator_Proxy( + ICLRSyncManager * This, + /* [in] */ SIZE_T Iterator); + + +void __RPC_STUB ICLRSyncManager_DeleteRWLockOwnerIterator_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRSyncManager_INTERFACE_DEFINED__ */ + + +#ifndef __IHostSyncManager_INTERFACE_DEFINED__ +#define __IHostSyncManager_INTERFACE_DEFINED__ + +/* interface IHostSyncManager */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IHostSyncManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("234330c7-5f10-4f20-9615-5122dab7a0ac") + IHostSyncManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetCLRSyncManager( + /* [in] */ ICLRSyncManager *pManager) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateCrst( + /* [out] */ IHostCrst **ppCrst) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateCrstWithSpinCount( + /* [in] */ DWORD dwSpinCount, + /* [out] */ IHostCrst **ppCrst) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateAutoEvent( + /* [out] */ IHostAutoEvent **ppEvent) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateManualEvent( + /* [in] */ BOOL bInitialState, + /* [out] */ IHostManualEvent **ppEvent) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateMonitorEvent( + /* [in] */ SIZE_T Cookie, + /* [out] */ IHostAutoEvent **ppEvent) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateRWLockWriterEvent( + /* [in] */ SIZE_T Cookie, + /* [out] */ IHostAutoEvent **ppEvent) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateRWLockReaderEvent( + /* [in] */ BOOL bInitialState, + /* [in] */ SIZE_T Cookie, + /* [out] */ IHostManualEvent **ppEvent) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateSemaphore( + /* [in] */ DWORD dwInitial, + /* [in] */ DWORD dwMax, + /* [out] */ IHostSemaphore **ppSemaphore) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostSyncManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostSyncManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostSyncManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostSyncManager * This); + + HRESULT ( STDMETHODCALLTYPE *SetCLRSyncManager )( + IHostSyncManager * This, + /* [in] */ ICLRSyncManager *pManager); + + HRESULT ( STDMETHODCALLTYPE *CreateCrst )( + IHostSyncManager * This, + /* [out] */ IHostCrst **ppCrst); + + HRESULT ( STDMETHODCALLTYPE *CreateCrstWithSpinCount )( + IHostSyncManager * This, + /* [in] */ DWORD dwSpinCount, + /* [out] */ IHostCrst **ppCrst); + + HRESULT ( STDMETHODCALLTYPE *CreateAutoEvent )( + IHostSyncManager * This, + /* [out] */ IHostAutoEvent **ppEvent); + + HRESULT ( STDMETHODCALLTYPE *CreateManualEvent )( + IHostSyncManager * This, + /* [in] */ BOOL bInitialState, + /* [out] */ IHostManualEvent **ppEvent); + + HRESULT ( STDMETHODCALLTYPE *CreateMonitorEvent )( + IHostSyncManager * This, + /* [in] */ SIZE_T Cookie, + /* [out] */ IHostAutoEvent **ppEvent); + + HRESULT ( STDMETHODCALLTYPE *CreateRWLockWriterEvent )( + IHostSyncManager * This, + /* [in] */ SIZE_T Cookie, + /* [out] */ IHostAutoEvent **ppEvent); + + HRESULT ( STDMETHODCALLTYPE *CreateRWLockReaderEvent )( + IHostSyncManager * This, + /* [in] */ BOOL bInitialState, + /* [in] */ SIZE_T Cookie, + /* [out] */ IHostManualEvent **ppEvent); + + HRESULT ( STDMETHODCALLTYPE *CreateSemaphore )( + IHostSyncManager * This, + /* [in] */ DWORD dwInitial, + /* [in] */ DWORD dwMax, + /* [out] */ IHostSemaphore **ppSemaphore); + + END_INTERFACE + } IHostSyncManagerVtbl; + + interface IHostSyncManager + { + CONST_VTBL struct IHostSyncManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostSyncManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostSyncManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostSyncManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostSyncManager_SetCLRSyncManager(This,pManager) \ + (This)->lpVtbl -> SetCLRSyncManager(This,pManager) + +#define IHostSyncManager_CreateCrst(This,ppCrst) \ + (This)->lpVtbl -> CreateCrst(This,ppCrst) + +#define IHostSyncManager_CreateCrstWithSpinCount(This,dwSpinCount,ppCrst) \ + (This)->lpVtbl -> CreateCrstWithSpinCount(This,dwSpinCount,ppCrst) + +#define IHostSyncManager_CreateAutoEvent(This,ppEvent) \ + (This)->lpVtbl -> CreateAutoEvent(This,ppEvent) + +#define IHostSyncManager_CreateManualEvent(This,bInitialState,ppEvent) \ + (This)->lpVtbl -> CreateManualEvent(This,bInitialState,ppEvent) + +#define IHostSyncManager_CreateMonitorEvent(This,Cookie,ppEvent) \ + (This)->lpVtbl -> CreateMonitorEvent(This,Cookie,ppEvent) + +#define IHostSyncManager_CreateRWLockWriterEvent(This,Cookie,ppEvent) \ + (This)->lpVtbl -> CreateRWLockWriterEvent(This,Cookie,ppEvent) + +#define IHostSyncManager_CreateRWLockReaderEvent(This,bInitialState,Cookie,ppEvent) \ + (This)->lpVtbl -> CreateRWLockReaderEvent(This,bInitialState,Cookie,ppEvent) + +#define IHostSyncManager_CreateSemaphore(This,dwInitial,dwMax,ppSemaphore) \ + (This)->lpVtbl -> CreateSemaphore(This,dwInitial,dwMax,ppSemaphore) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostSyncManager_SetCLRSyncManager_Proxy( + IHostSyncManager * This, + /* [in] */ ICLRSyncManager *pManager); + + +void __RPC_STUB IHostSyncManager_SetCLRSyncManager_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostSyncManager_CreateCrst_Proxy( + IHostSyncManager * This, + /* [out] */ IHostCrst **ppCrst); + + +void __RPC_STUB IHostSyncManager_CreateCrst_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostSyncManager_CreateCrstWithSpinCount_Proxy( + IHostSyncManager * This, + /* [in] */ DWORD dwSpinCount, + /* [out] */ IHostCrst **ppCrst); + + +void __RPC_STUB IHostSyncManager_CreateCrstWithSpinCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostSyncManager_CreateAutoEvent_Proxy( + IHostSyncManager * This, + /* [out] */ IHostAutoEvent **ppEvent); + + +void __RPC_STUB IHostSyncManager_CreateAutoEvent_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostSyncManager_CreateManualEvent_Proxy( + IHostSyncManager * This, + /* [in] */ BOOL bInitialState, + /* [out] */ IHostManualEvent **ppEvent); + + +void __RPC_STUB IHostSyncManager_CreateManualEvent_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostSyncManager_CreateMonitorEvent_Proxy( + IHostSyncManager * This, + /* [in] */ SIZE_T Cookie, + /* [out] */ IHostAutoEvent **ppEvent); + + +void __RPC_STUB IHostSyncManager_CreateMonitorEvent_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostSyncManager_CreateRWLockWriterEvent_Proxy( + IHostSyncManager * This, + /* [in] */ SIZE_T Cookie, + /* [out] */ IHostAutoEvent **ppEvent); + + +void __RPC_STUB IHostSyncManager_CreateRWLockWriterEvent_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostSyncManager_CreateRWLockReaderEvent_Proxy( + IHostSyncManager * This, + /* [in] */ BOOL bInitialState, + /* [in] */ SIZE_T Cookie, + /* [out] */ IHostManualEvent **ppEvent); + + +void __RPC_STUB IHostSyncManager_CreateRWLockReaderEvent_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostSyncManager_CreateSemaphore_Proxy( + IHostSyncManager * This, + /* [in] */ DWORD dwInitial, + /* [in] */ DWORD dwMax, + /* [out] */ IHostSemaphore **ppSemaphore); + + +void __RPC_STUB IHostSyncManager_CreateSemaphore_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostSyncManager_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0151 */ +/* [local] */ + +typedef /* [public][public][public][public][public][public][public] */ +enum __MIDL___MIDL_itf_mscoree_0151_0001 + { OPR_ThreadAbort = 0, + OPR_ThreadRudeAbortInNonCriticalRegion = OPR_ThreadAbort + 1, + OPR_ThreadRudeAbortInCriticalRegion = OPR_ThreadRudeAbortInNonCriticalRegion + 1, + OPR_AppDomainUnload = OPR_ThreadRudeAbortInCriticalRegion + 1, + OPR_AppDomainRudeUnload = OPR_AppDomainUnload + 1, + OPR_ProcessExit = OPR_AppDomainRudeUnload + 1, + OPR_FinalizerRun = OPR_ProcessExit + 1, + MaxClrOperation = OPR_FinalizerRun + 1 + } EClrOperation; + +typedef /* [public][public][public] */ +enum __MIDL___MIDL_itf_mscoree_0151_0002 + { FAIL_NonCriticalResource = 0, + FAIL_CriticalResource = FAIL_NonCriticalResource + 1, + FAIL_FatalRuntime = FAIL_CriticalResource + 1, + FAIL_OrphanedLock = FAIL_FatalRuntime + 1, + FAIL_StackOverflow = FAIL_OrphanedLock + 1, + MaxClrFailure = FAIL_StackOverflow + 1 + } EClrFailure; + +typedef /* [public][public] */ +enum __MIDL___MIDL_itf_mscoree_0151_0003 + { eRuntimeDeterminedPolicy = 0, + eHostDeterminedPolicy = eRuntimeDeterminedPolicy + 1 + } EClrUnhandledException; + +typedef /* [public][public][public][public][public][public][public][public] */ +enum __MIDL___MIDL_itf_mscoree_0151_0004 + { eNoAction = 0, + eThrowException = eNoAction + 1, + eAbortThread = eThrowException + 1, + eRudeAbortThread = eAbortThread + 1, + eUnloadAppDomain = eRudeAbortThread + 1, + eRudeUnloadAppDomain = eUnloadAppDomain + 1, + eExitProcess = eRudeUnloadAppDomain + 1, + eFastExitProcess = eExitProcess + 1, + eRudeExitProcess = eFastExitProcess + 1, + eDisableRuntime = eRudeExitProcess + 1, + MaxPolicyAction = eDisableRuntime + 1 + } EPolicyAction; + + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0151_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0151_v0_0_s_ifspec; + +#ifndef __ICLRPolicyManager_INTERFACE_DEFINED__ +#define __ICLRPolicyManager_INTERFACE_DEFINED__ + +/* interface ICLRPolicyManager */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRPolicyManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7D290010-D781-45da-A6F8-AA5D711A730E") + ICLRPolicyManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetDefaultAction( + /* [in] */ EClrOperation operation, + /* [in] */ EPolicyAction action) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetTimeout( + /* [in] */ EClrOperation operation, + /* [in] */ DWORD dwMilliseconds) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetActionOnTimeout( + /* [in] */ EClrOperation operation, + /* [in] */ EPolicyAction action) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetTimeoutAndAction( + /* [in] */ EClrOperation operation, + /* [in] */ DWORD dwMilliseconds, + /* [in] */ EPolicyAction action) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetActionOnFailure( + /* [in] */ EClrFailure failure, + /* [in] */ EPolicyAction action) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetUnhandledExceptionPolicy( + /* [in] */ EClrUnhandledException policy) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRPolicyManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRPolicyManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRPolicyManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRPolicyManager * This); + + HRESULT ( STDMETHODCALLTYPE *SetDefaultAction )( + ICLRPolicyManager * This, + /* [in] */ EClrOperation operation, + /* [in] */ EPolicyAction action); + + HRESULT ( STDMETHODCALLTYPE *SetTimeout )( + ICLRPolicyManager * This, + /* [in] */ EClrOperation operation, + /* [in] */ DWORD dwMilliseconds); + + HRESULT ( STDMETHODCALLTYPE *SetActionOnTimeout )( + ICLRPolicyManager * This, + /* [in] */ EClrOperation operation, + /* [in] */ EPolicyAction action); + + HRESULT ( STDMETHODCALLTYPE *SetTimeoutAndAction )( + ICLRPolicyManager * This, + /* [in] */ EClrOperation operation, + /* [in] */ DWORD dwMilliseconds, + /* [in] */ EPolicyAction action); + + HRESULT ( STDMETHODCALLTYPE *SetActionOnFailure )( + ICLRPolicyManager * This, + /* [in] */ EClrFailure failure, + /* [in] */ EPolicyAction action); + + HRESULT ( STDMETHODCALLTYPE *SetUnhandledExceptionPolicy )( + ICLRPolicyManager * This, + /* [in] */ EClrUnhandledException policy); + + END_INTERFACE + } ICLRPolicyManagerVtbl; + + interface ICLRPolicyManager + { + CONST_VTBL struct ICLRPolicyManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRPolicyManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRPolicyManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRPolicyManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRPolicyManager_SetDefaultAction(This,operation,action) \ + (This)->lpVtbl -> SetDefaultAction(This,operation,action) + +#define ICLRPolicyManager_SetTimeout(This,operation,dwMilliseconds) \ + (This)->lpVtbl -> SetTimeout(This,operation,dwMilliseconds) + +#define ICLRPolicyManager_SetActionOnTimeout(This,operation,action) \ + (This)->lpVtbl -> SetActionOnTimeout(This,operation,action) + +#define ICLRPolicyManager_SetTimeoutAndAction(This,operation,dwMilliseconds,action) \ + (This)->lpVtbl -> SetTimeoutAndAction(This,operation,dwMilliseconds,action) + +#define ICLRPolicyManager_SetActionOnFailure(This,failure,action) \ + (This)->lpVtbl -> SetActionOnFailure(This,failure,action) + +#define ICLRPolicyManager_SetUnhandledExceptionPolicy(This,policy) \ + (This)->lpVtbl -> SetUnhandledExceptionPolicy(This,policy) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRPolicyManager_SetDefaultAction_Proxy( + ICLRPolicyManager * This, + /* [in] */ EClrOperation operation, + /* [in] */ EPolicyAction action); + + +void __RPC_STUB ICLRPolicyManager_SetDefaultAction_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRPolicyManager_SetTimeout_Proxy( + ICLRPolicyManager * This, + /* [in] */ EClrOperation operation, + /* [in] */ DWORD dwMilliseconds); + + +void __RPC_STUB ICLRPolicyManager_SetTimeout_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRPolicyManager_SetActionOnTimeout_Proxy( + ICLRPolicyManager * This, + /* [in] */ EClrOperation operation, + /* [in] */ EPolicyAction action); + + +void __RPC_STUB ICLRPolicyManager_SetActionOnTimeout_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRPolicyManager_SetTimeoutAndAction_Proxy( + ICLRPolicyManager * This, + /* [in] */ EClrOperation operation, + /* [in] */ DWORD dwMilliseconds, + /* [in] */ EPolicyAction action); + + +void __RPC_STUB ICLRPolicyManager_SetTimeoutAndAction_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRPolicyManager_SetActionOnFailure_Proxy( + ICLRPolicyManager * This, + /* [in] */ EClrFailure failure, + /* [in] */ EPolicyAction action); + + +void __RPC_STUB ICLRPolicyManager_SetActionOnFailure_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRPolicyManager_SetUnhandledExceptionPolicy_Proxy( + ICLRPolicyManager * This, + /* [in] */ EClrUnhandledException policy); + + +void __RPC_STUB ICLRPolicyManager_SetUnhandledExceptionPolicy_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRPolicyManager_INTERFACE_DEFINED__ */ + + +#ifndef __IHostPolicyManager_INTERFACE_DEFINED__ +#define __IHostPolicyManager_INTERFACE_DEFINED__ + +/* interface IHostPolicyManager */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IHostPolicyManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7AE49844-B1E3-4683-BA7C-1E8212EA3B79") + IHostPolicyManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE OnDefaultAction( + /* [in] */ EClrOperation operation, + /* [in] */ EPolicyAction action) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnTimeout( + /* [in] */ EClrOperation operation, + /* [in] */ EPolicyAction action) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnFailure( + /* [in] */ EClrFailure failure, + /* [in] */ EPolicyAction action) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostPolicyManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostPolicyManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostPolicyManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostPolicyManager * This); + + HRESULT ( STDMETHODCALLTYPE *OnDefaultAction )( + IHostPolicyManager * This, + /* [in] */ EClrOperation operation, + /* [in] */ EPolicyAction action); + + HRESULT ( STDMETHODCALLTYPE *OnTimeout )( + IHostPolicyManager * This, + /* [in] */ EClrOperation operation, + /* [in] */ EPolicyAction action); + + HRESULT ( STDMETHODCALLTYPE *OnFailure )( + IHostPolicyManager * This, + /* [in] */ EClrFailure failure, + /* [in] */ EPolicyAction action); + + END_INTERFACE + } IHostPolicyManagerVtbl; + + interface IHostPolicyManager + { + CONST_VTBL struct IHostPolicyManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostPolicyManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostPolicyManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostPolicyManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostPolicyManager_OnDefaultAction(This,operation,action) \ + (This)->lpVtbl -> OnDefaultAction(This,operation,action) + +#define IHostPolicyManager_OnTimeout(This,operation,action) \ + (This)->lpVtbl -> OnTimeout(This,operation,action) + +#define IHostPolicyManager_OnFailure(This,failure,action) \ + (This)->lpVtbl -> OnFailure(This,failure,action) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostPolicyManager_OnDefaultAction_Proxy( + IHostPolicyManager * This, + /* [in] */ EClrOperation operation, + /* [in] */ EPolicyAction action); + + +void __RPC_STUB IHostPolicyManager_OnDefaultAction_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostPolicyManager_OnTimeout_Proxy( + IHostPolicyManager * This, + /* [in] */ EClrOperation operation, + /* [in] */ EPolicyAction action); + + +void __RPC_STUB IHostPolicyManager_OnTimeout_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostPolicyManager_OnFailure_Proxy( + IHostPolicyManager * This, + /* [in] */ EClrFailure failure, + /* [in] */ EPolicyAction action); + + +void __RPC_STUB IHostPolicyManager_OnFailure_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostPolicyManager_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0153 */ +/* [local] */ + +typedef /* [public][public][public][public] */ +enum __MIDL___MIDL_itf_mscoree_0153_0001 + { Event_DomainUnload = 0, + Event_ClrDisabled = Event_DomainUnload + 1, + Event_MDAFired = Event_ClrDisabled + 1, + Event_StackOverflow = Event_MDAFired + 1, + MaxClrEvent = Event_StackOverflow + 1 + } EClrEvent; + +typedef struct _MDAInfo + { + LPCWSTR lpMDACaption; + LPCWSTR lpMDAMessage; + LPCWSTR lpStackTrace; + } MDAInfo; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_mscoree_0153_0002 + { SO_Managed = 0, + SO_ClrEngine = SO_Managed + 1, + SO_Other = SO_ClrEngine + 1 + } StackOverflowType; + +typedef struct _StackOverflowInfo +{ + StackOverflowType soType; + EXCEPTION_POINTERS *pExceptionInfo; +} StackOverflowInfo; + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0153_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0153_v0_0_s_ifspec; + +#ifndef __IActionOnCLREvent_INTERFACE_DEFINED__ +#define __IActionOnCLREvent_INTERFACE_DEFINED__ + +/* interface IActionOnCLREvent */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IActionOnCLREvent; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("607BE24B-D91B-4E28-A242-61871CE56E35") + IActionOnCLREvent : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE OnEvent( + /* [in] */ EClrEvent event, + /* [in] */ PVOID data) = 0; + + }; + +#else /* C style interface */ + + typedef struct IActionOnCLREventVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IActionOnCLREvent * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IActionOnCLREvent * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IActionOnCLREvent * This); + + HRESULT ( STDMETHODCALLTYPE *OnEvent )( + IActionOnCLREvent * This, + /* [in] */ EClrEvent event, + /* [in] */ PVOID data); + + END_INTERFACE + } IActionOnCLREventVtbl; + + interface IActionOnCLREvent + { + CONST_VTBL struct IActionOnCLREventVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IActionOnCLREvent_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IActionOnCLREvent_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IActionOnCLREvent_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IActionOnCLREvent_OnEvent(This,event,data) \ + (This)->lpVtbl -> OnEvent(This,event,data) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IActionOnCLREvent_OnEvent_Proxy( + IActionOnCLREvent * This, + /* [in] */ EClrEvent event, + /* [in] */ PVOID data); + + +void __RPC_STUB IActionOnCLREvent_OnEvent_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IActionOnCLREvent_INTERFACE_DEFINED__ */ + + +#ifndef __ICLROnEventManager_INTERFACE_DEFINED__ +#define __ICLROnEventManager_INTERFACE_DEFINED__ + +/* interface ICLROnEventManager */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLROnEventManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1D0E0132-E64F-493D-9260-025C0E32C175") + ICLROnEventManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE RegisterActionOnEvent( + /* [in] */ EClrEvent event, + /* [in] */ IActionOnCLREvent *pAction) = 0; + + virtual HRESULT STDMETHODCALLTYPE UnregisterActionOnEvent( + /* [in] */ EClrEvent event, + /* [in] */ IActionOnCLREvent *pAction) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLROnEventManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLROnEventManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLROnEventManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLROnEventManager * This); + + HRESULT ( STDMETHODCALLTYPE *RegisterActionOnEvent )( + ICLROnEventManager * This, + /* [in] */ EClrEvent event, + /* [in] */ IActionOnCLREvent *pAction); + + HRESULT ( STDMETHODCALLTYPE *UnregisterActionOnEvent )( + ICLROnEventManager * This, + /* [in] */ EClrEvent event, + /* [in] */ IActionOnCLREvent *pAction); + + END_INTERFACE + } ICLROnEventManagerVtbl; + + interface ICLROnEventManager + { + CONST_VTBL struct ICLROnEventManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLROnEventManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLROnEventManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLROnEventManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLROnEventManager_RegisterActionOnEvent(This,event,pAction) \ + (This)->lpVtbl -> RegisterActionOnEvent(This,event,pAction) + +#define ICLROnEventManager_UnregisterActionOnEvent(This,event,pAction) \ + (This)->lpVtbl -> UnregisterActionOnEvent(This,event,pAction) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLROnEventManager_RegisterActionOnEvent_Proxy( + ICLROnEventManager * This, + /* [in] */ EClrEvent event, + /* [in] */ IActionOnCLREvent *pAction); + + +void __RPC_STUB ICLROnEventManager_RegisterActionOnEvent_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLROnEventManager_UnregisterActionOnEvent_Proxy( + ICLROnEventManager * This, + /* [in] */ EClrEvent event, + /* [in] */ IActionOnCLREvent *pAction); + + +void __RPC_STUB ICLROnEventManager_UnregisterActionOnEvent_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLROnEventManager_INTERFACE_DEFINED__ */ + + +#ifndef __IHostGCManager_INTERFACE_DEFINED__ +#define __IHostGCManager_INTERFACE_DEFINED__ + +/* interface IHostGCManager */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IHostGCManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5D4EC34E-F248-457B-B603-255FAABA0D21") + IHostGCManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ThreadIsBlockingForSuspension( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SuspensionStarting( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SuspensionEnding( + DWORD Generation) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostGCManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostGCManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostGCManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostGCManager * This); + + HRESULT ( STDMETHODCALLTYPE *ThreadIsBlockingForSuspension )( + IHostGCManager * This); + + HRESULT ( STDMETHODCALLTYPE *SuspensionStarting )( + IHostGCManager * This); + + HRESULT ( STDMETHODCALLTYPE *SuspensionEnding )( + IHostGCManager * This, + DWORD Generation); + + END_INTERFACE + } IHostGCManagerVtbl; + + interface IHostGCManager + { + CONST_VTBL struct IHostGCManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostGCManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostGCManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostGCManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostGCManager_ThreadIsBlockingForSuspension(This) \ + (This)->lpVtbl -> ThreadIsBlockingForSuspension(This) + +#define IHostGCManager_SuspensionStarting(This) \ + (This)->lpVtbl -> SuspensionStarting(This) + +#define IHostGCManager_SuspensionEnding(This,Generation) \ + (This)->lpVtbl -> SuspensionEnding(This,Generation) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostGCManager_ThreadIsBlockingForSuspension_Proxy( + IHostGCManager * This); + + +void __RPC_STUB IHostGCManager_ThreadIsBlockingForSuspension_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostGCManager_SuspensionStarting_Proxy( + IHostGCManager * This); + + +void __RPC_STUB IHostGCManager_SuspensionStarting_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostGCManager_SuspensionEnding_Proxy( + IHostGCManager * This, + DWORD Generation); + + +void __RPC_STUB IHostGCManager_SuspensionEnding_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostGCManager_INTERFACE_DEFINED__ */ + + +#ifndef __ICLRGCManager_INTERFACE_DEFINED__ +#define __ICLRGCManager_INTERFACE_DEFINED__ + +/* interface ICLRGCManager */ +/* [object][local][unique][version][uuid] */ + + +EXTERN_C const IID IID_ICLRGCManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("54D9007E-A8E2-4885-B7BF-F998DEEE4F2A") + ICLRGCManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Collect( + /* [in] */ LONG Generation) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStats( + /* [out][in] */ COR_GC_STATS *pStats) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetGCStartupLimits( + /* [in] */ DWORD SegmentSize, + /* [in] */ DWORD MaxGen0Size) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRGCManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRGCManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRGCManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRGCManager * This); + + HRESULT ( STDMETHODCALLTYPE *Collect )( + ICLRGCManager * This, + /* [in] */ LONG Generation); + + HRESULT ( STDMETHODCALLTYPE *GetStats )( + ICLRGCManager * This, + /* [out][in] */ COR_GC_STATS *pStats); + + HRESULT ( STDMETHODCALLTYPE *SetGCStartupLimits )( + ICLRGCManager * This, + /* [in] */ DWORD SegmentSize, + /* [in] */ DWORD MaxGen0Size); + + END_INTERFACE + } ICLRGCManagerVtbl; + + interface ICLRGCManager + { + CONST_VTBL struct ICLRGCManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRGCManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRGCManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRGCManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRGCManager_Collect(This,Generation) \ + (This)->lpVtbl -> Collect(This,Generation) + +#define ICLRGCManager_GetStats(This,pStats) \ + (This)->lpVtbl -> GetStats(This,pStats) + +#define ICLRGCManager_SetGCStartupLimits(This,SegmentSize,MaxGen0Size) \ + (This)->lpVtbl -> SetGCStartupLimits(This,SegmentSize,MaxGen0Size) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRGCManager_Collect_Proxy( + ICLRGCManager * This, + /* [in] */ LONG Generation); + + +void __RPC_STUB ICLRGCManager_Collect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRGCManager_GetStats_Proxy( + ICLRGCManager * This, + /* [out][in] */ COR_GC_STATS *pStats); + + +void __RPC_STUB ICLRGCManager_GetStats_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRGCManager_SetGCStartupLimits_Proxy( + ICLRGCManager * This, + /* [in] */ DWORD SegmentSize, + /* [in] */ DWORD MaxGen0Size); + + +void __RPC_STUB ICLRGCManager_SetGCStartupLimits_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRGCManager_INTERFACE_DEFINED__ */ + + +#ifndef __ICLRAssemblyReferenceList_INTERFACE_DEFINED__ +#define __ICLRAssemblyReferenceList_INTERFACE_DEFINED__ + +/* interface ICLRAssemblyReferenceList */ +/* [local][unique][helpstring][uuid][version][object] */ + + +EXTERN_C const IID IID_ICLRAssemblyReferenceList; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1b2c9750-2e66-4bda-8b44-0a642c5cd733") + ICLRAssemblyReferenceList : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE IsStringAssemblyReferenceInList( + /* [in] */ LPCWSTR pwzAssemblyName) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsAssemblyReferenceInList( + /* [in] */ IUnknown *pName) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRAssemblyReferenceListVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRAssemblyReferenceList * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRAssemblyReferenceList * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRAssemblyReferenceList * This); + + HRESULT ( STDMETHODCALLTYPE *IsStringAssemblyReferenceInList )( + ICLRAssemblyReferenceList * This, + /* [in] */ LPCWSTR pwzAssemblyName); + + HRESULT ( STDMETHODCALLTYPE *IsAssemblyReferenceInList )( + ICLRAssemblyReferenceList * This, + /* [in] */ IUnknown *pName); + + END_INTERFACE + } ICLRAssemblyReferenceListVtbl; + + interface ICLRAssemblyReferenceList + { + CONST_VTBL struct ICLRAssemblyReferenceListVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRAssemblyReferenceList_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRAssemblyReferenceList_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRAssemblyReferenceList_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRAssemblyReferenceList_IsStringAssemblyReferenceInList(This,pwzAssemblyName) \ + (This)->lpVtbl -> IsStringAssemblyReferenceInList(This,pwzAssemblyName) + +#define ICLRAssemblyReferenceList_IsAssemblyReferenceInList(This,pName) \ + (This)->lpVtbl -> IsAssemblyReferenceInList(This,pName) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRAssemblyReferenceList_IsStringAssemblyReferenceInList_Proxy( + ICLRAssemblyReferenceList * This, + /* [in] */ LPCWSTR pwzAssemblyName); + + +void __RPC_STUB ICLRAssemblyReferenceList_IsStringAssemblyReferenceInList_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRAssemblyReferenceList_IsAssemblyReferenceInList_Proxy( + ICLRAssemblyReferenceList * This, + /* [in] */ IUnknown *pName); + + +void __RPC_STUB ICLRAssemblyReferenceList_IsAssemblyReferenceInList_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRAssemblyReferenceList_INTERFACE_DEFINED__ */ + + +#ifndef __ICLRReferenceAssemblyEnum_INTERFACE_DEFINED__ +#define __ICLRReferenceAssemblyEnum_INTERFACE_DEFINED__ + +/* interface ICLRReferenceAssemblyEnum */ +/* [local][unique][helpstring][uuid][version][object] */ + + +EXTERN_C const IID IID_ICLRReferenceAssemblyEnum; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("d509cb5d-cf32-4876-ae61-67770cf91973") + ICLRReferenceAssemblyEnum : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Get( + /* [in] */ DWORD dwIndex, + /* [size_is][out] */ LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBufferSize) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRReferenceAssemblyEnumVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRReferenceAssemblyEnum * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRReferenceAssemblyEnum * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRReferenceAssemblyEnum * This); + + HRESULT ( STDMETHODCALLTYPE *Get )( + ICLRReferenceAssemblyEnum * This, + /* [in] */ DWORD dwIndex, + /* [size_is][out] */ LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBufferSize); + + END_INTERFACE + } ICLRReferenceAssemblyEnumVtbl; + + interface ICLRReferenceAssemblyEnum + { + CONST_VTBL struct ICLRReferenceAssemblyEnumVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRReferenceAssemblyEnum_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRReferenceAssemblyEnum_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRReferenceAssemblyEnum_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRReferenceAssemblyEnum_Get(This,dwIndex,pwzBuffer,pcchBufferSize) \ + (This)->lpVtbl -> Get(This,dwIndex,pwzBuffer,pcchBufferSize) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRReferenceAssemblyEnum_Get_Proxy( + ICLRReferenceAssemblyEnum * This, + /* [in] */ DWORD dwIndex, + /* [size_is][out] */ LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBufferSize); + + +void __RPC_STUB ICLRReferenceAssemblyEnum_Get_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRReferenceAssemblyEnum_INTERFACE_DEFINED__ */ + + +#ifndef __ICLRProbingAssemblyEnum_INTERFACE_DEFINED__ +#define __ICLRProbingAssemblyEnum_INTERFACE_DEFINED__ + +/* interface ICLRProbingAssemblyEnum */ +/* [local][unique][helpstring][uuid][version][object] */ + + +EXTERN_C const IID IID_ICLRProbingAssemblyEnum; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("d0c5fb1f-416b-4f97-81f4-7ac7dc24dd5d") + ICLRProbingAssemblyEnum : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Get( + /* [in] */ DWORD dwIndex, + /* [size_is][out] */ LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBufferSize) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRProbingAssemblyEnumVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRProbingAssemblyEnum * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRProbingAssemblyEnum * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRProbingAssemblyEnum * This); + + HRESULT ( STDMETHODCALLTYPE *Get )( + ICLRProbingAssemblyEnum * This, + /* [in] */ DWORD dwIndex, + /* [size_is][out] */ LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBufferSize); + + END_INTERFACE + } ICLRProbingAssemblyEnumVtbl; + + interface ICLRProbingAssemblyEnum + { + CONST_VTBL struct ICLRProbingAssemblyEnumVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRProbingAssemblyEnum_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRProbingAssemblyEnum_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRProbingAssemblyEnum_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRProbingAssemblyEnum_Get(This,dwIndex,pwzBuffer,pcchBufferSize) \ + (This)->lpVtbl -> Get(This,dwIndex,pwzBuffer,pcchBufferSize) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRProbingAssemblyEnum_Get_Proxy( + ICLRProbingAssemblyEnum * This, + /* [in] */ DWORD dwIndex, + /* [size_is][out] */ LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBufferSize); + + +void __RPC_STUB ICLRProbingAssemblyEnum_Get_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRProbingAssemblyEnum_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0160 */ +/* [local] */ + +typedef +enum _CLRAssemblyIdentityFlags + { CLR_ASSEMBLY_IDENTITY_FLAGS_DEFAULT = 0 + } ECLRAssemblyIdentityFlags; + + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0160_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0160_v0_0_s_ifspec; + +#ifndef __ICLRAssemblyIdentityManager_INTERFACE_DEFINED__ +#define __ICLRAssemblyIdentityManager_INTERFACE_DEFINED__ + +/* interface ICLRAssemblyIdentityManager */ +/* [local][unique][helpstring][uuid][version][object] */ + + +EXTERN_C const IID IID_ICLRAssemblyIdentityManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("15f0a9da-3ff6-4393-9da9-fdfd284e6972") + ICLRAssemblyIdentityManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetCLRAssemblyReferenceList( + /* [in] */ LPCWSTR *ppwzAssemblyReferences, + /* [in] */ DWORD dwNumOfReferences, + /* [out] */ ICLRAssemblyReferenceList **ppReferenceList) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBindingIdentityFromFile( + /* [in] */ LPCWSTR pwzFilePath, + /* [in] */ DWORD dwFlags, + /* [size_is][out] */ LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBufferSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBindingIdentityFromStream( + /* [in] */ IStream *pStream, + /* [in] */ DWORD dwFlags, + /* [size_is][out] */ LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBufferSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetReferencedAssembliesFromFile( + /* [in] */ LPCWSTR pwzFilePath, + /* [in] */ DWORD dwFlags, + /* [in] */ ICLRAssemblyReferenceList *pExcludeAssembliesList, + /* [out] */ ICLRReferenceAssemblyEnum **ppReferenceEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetReferencedAssembliesFromStream( + /* [in] */ IStream *pStream, + /* [in] */ DWORD dwFlags, + /* [in] */ ICLRAssemblyReferenceList *pExcludeAssembliesList, + /* [out] */ ICLRReferenceAssemblyEnum **ppReferenceEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetProbingAssembliesFromReference( + /* [in] */ DWORD dwMachineType, + /* [in] */ DWORD dwFlags, + /* [in] */ LPCWSTR pwzReferenceIdentity, + /* [out] */ ICLRProbingAssemblyEnum **ppProbingAssemblyEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsStronglyNamed( + /* [in] */ LPCWSTR pwzAssemblyIdentity, + /* [out] */ BOOL *pbIsStronglyNamed) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRAssemblyIdentityManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRAssemblyIdentityManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRAssemblyIdentityManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRAssemblyIdentityManager * This); + + HRESULT ( STDMETHODCALLTYPE *GetCLRAssemblyReferenceList )( + ICLRAssemblyIdentityManager * This, + /* [in] */ LPCWSTR *ppwzAssemblyReferences, + /* [in] */ DWORD dwNumOfReferences, + /* [out] */ ICLRAssemblyReferenceList **ppReferenceList); + + HRESULT ( STDMETHODCALLTYPE *GetBindingIdentityFromFile )( + ICLRAssemblyIdentityManager * This, + /* [in] */ LPCWSTR pwzFilePath, + /* [in] */ DWORD dwFlags, + /* [size_is][out] */ LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBufferSize); + + HRESULT ( STDMETHODCALLTYPE *GetBindingIdentityFromStream )( + ICLRAssemblyIdentityManager * This, + /* [in] */ IStream *pStream, + /* [in] */ DWORD dwFlags, + /* [size_is][out] */ LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBufferSize); + + HRESULT ( STDMETHODCALLTYPE *GetReferencedAssembliesFromFile )( + ICLRAssemblyIdentityManager * This, + /* [in] */ LPCWSTR pwzFilePath, + /* [in] */ DWORD dwFlags, + /* [in] */ ICLRAssemblyReferenceList *pExcludeAssembliesList, + /* [out] */ ICLRReferenceAssemblyEnum **ppReferenceEnum); + + HRESULT ( STDMETHODCALLTYPE *GetReferencedAssembliesFromStream )( + ICLRAssemblyIdentityManager * This, + /* [in] */ IStream *pStream, + /* [in] */ DWORD dwFlags, + /* [in] */ ICLRAssemblyReferenceList *pExcludeAssembliesList, + /* [out] */ ICLRReferenceAssemblyEnum **ppReferenceEnum); + + HRESULT ( STDMETHODCALLTYPE *GetProbingAssembliesFromReference )( + ICLRAssemblyIdentityManager * This, + /* [in] */ DWORD dwMachineType, + /* [in] */ DWORD dwFlags, + /* [in] */ LPCWSTR pwzReferenceIdentity, + /* [out] */ ICLRProbingAssemblyEnum **ppProbingAssemblyEnum); + + HRESULT ( STDMETHODCALLTYPE *IsStronglyNamed )( + ICLRAssemblyIdentityManager * This, + /* [in] */ LPCWSTR pwzAssemblyIdentity, + /* [out] */ BOOL *pbIsStronglyNamed); + + END_INTERFACE + } ICLRAssemblyIdentityManagerVtbl; + + interface ICLRAssemblyIdentityManager + { + CONST_VTBL struct ICLRAssemblyIdentityManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRAssemblyIdentityManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRAssemblyIdentityManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRAssemblyIdentityManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRAssemblyIdentityManager_GetCLRAssemblyReferenceList(This,ppwzAssemblyReferences,dwNumOfReferences,ppReferenceList) \ + (This)->lpVtbl -> GetCLRAssemblyReferenceList(This,ppwzAssemblyReferences,dwNumOfReferences,ppReferenceList) + +#define ICLRAssemblyIdentityManager_GetBindingIdentityFromFile(This,pwzFilePath,dwFlags,pwzBuffer,pcchBufferSize) \ + (This)->lpVtbl -> GetBindingIdentityFromFile(This,pwzFilePath,dwFlags,pwzBuffer,pcchBufferSize) + +#define ICLRAssemblyIdentityManager_GetBindingIdentityFromStream(This,pStream,dwFlags,pwzBuffer,pcchBufferSize) \ + (This)->lpVtbl -> GetBindingIdentityFromStream(This,pStream,dwFlags,pwzBuffer,pcchBufferSize) + +#define ICLRAssemblyIdentityManager_GetReferencedAssembliesFromFile(This,pwzFilePath,dwFlags,pExcludeAssembliesList,ppReferenceEnum) \ + (This)->lpVtbl -> GetReferencedAssembliesFromFile(This,pwzFilePath,dwFlags,pExcludeAssembliesList,ppReferenceEnum) + +#define ICLRAssemblyIdentityManager_GetReferencedAssembliesFromStream(This,pStream,dwFlags,pExcludeAssembliesList,ppReferenceEnum) \ + (This)->lpVtbl -> GetReferencedAssembliesFromStream(This,pStream,dwFlags,pExcludeAssembliesList,ppReferenceEnum) + +#define ICLRAssemblyIdentityManager_GetProbingAssembliesFromReference(This,dwMachineType,dwFlags,pwzReferenceIdentity,ppProbingAssemblyEnum) \ + (This)->lpVtbl -> GetProbingAssembliesFromReference(This,dwMachineType,dwFlags,pwzReferenceIdentity,ppProbingAssemblyEnum) + +#define ICLRAssemblyIdentityManager_IsStronglyNamed(This,pwzAssemblyIdentity,pbIsStronglyNamed) \ + (This)->lpVtbl -> IsStronglyNamed(This,pwzAssemblyIdentity,pbIsStronglyNamed) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRAssemblyIdentityManager_GetCLRAssemblyReferenceList_Proxy( + ICLRAssemblyIdentityManager * This, + /* [in] */ LPCWSTR *ppwzAssemblyReferences, + /* [in] */ DWORD dwNumOfReferences, + /* [out] */ ICLRAssemblyReferenceList **ppReferenceList); + + +void __RPC_STUB ICLRAssemblyIdentityManager_GetCLRAssemblyReferenceList_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRAssemblyIdentityManager_GetBindingIdentityFromFile_Proxy( + ICLRAssemblyIdentityManager * This, + /* [in] */ LPCWSTR pwzFilePath, + /* [in] */ DWORD dwFlags, + /* [size_is][out] */ LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBufferSize); + + +void __RPC_STUB ICLRAssemblyIdentityManager_GetBindingIdentityFromFile_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRAssemblyIdentityManager_GetBindingIdentityFromStream_Proxy( + ICLRAssemblyIdentityManager * This, + /* [in] */ IStream *pStream, + /* [in] */ DWORD dwFlags, + /* [size_is][out] */ LPWSTR pwzBuffer, + /* [out][in] */ DWORD *pcchBufferSize); + + +void __RPC_STUB ICLRAssemblyIdentityManager_GetBindingIdentityFromStream_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRAssemblyIdentityManager_GetReferencedAssembliesFromFile_Proxy( + ICLRAssemblyIdentityManager * This, + /* [in] */ LPCWSTR pwzFilePath, + /* [in] */ DWORD dwFlags, + /* [in] */ ICLRAssemblyReferenceList *pExcludeAssembliesList, + /* [out] */ ICLRReferenceAssemblyEnum **ppReferenceEnum); + + +void __RPC_STUB ICLRAssemblyIdentityManager_GetReferencedAssembliesFromFile_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRAssemblyIdentityManager_GetReferencedAssembliesFromStream_Proxy( + ICLRAssemblyIdentityManager * This, + /* [in] */ IStream *pStream, + /* [in] */ DWORD dwFlags, + /* [in] */ ICLRAssemblyReferenceList *pExcludeAssembliesList, + /* [out] */ ICLRReferenceAssemblyEnum **ppReferenceEnum); + + +void __RPC_STUB ICLRAssemblyIdentityManager_GetReferencedAssembliesFromStream_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRAssemblyIdentityManager_GetProbingAssembliesFromReference_Proxy( + ICLRAssemblyIdentityManager * This, + /* [in] */ DWORD dwMachineType, + /* [in] */ DWORD dwFlags, + /* [in] */ LPCWSTR pwzReferenceIdentity, + /* [out] */ ICLRProbingAssemblyEnum **ppProbingAssemblyEnum); + + +void __RPC_STUB ICLRAssemblyIdentityManager_GetProbingAssembliesFromReference_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRAssemblyIdentityManager_IsStronglyNamed_Proxy( + ICLRAssemblyIdentityManager * This, + /* [in] */ LPCWSTR pwzAssemblyIdentity, + /* [out] */ BOOL *pbIsStronglyNamed); + + +void __RPC_STUB ICLRAssemblyIdentityManager_IsStronglyNamed_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRAssemblyIdentityManager_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0161 */ +/* [local] */ + +typedef +enum _hostBiningPolicyModifyFlags + { HOST_BINDING_POLICY_MODIFY_DEFAULT = 0, + HOST_BINDING_POLICY_MODIFY_CHAIN = 1, + HOST_BINDING_POLICY_MODIFY_REMOVE = 2, + HOST_BINDING_POLICY_MODIFY_MAX = 3 + } EHostBindingPolicyModifyFlags; + + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0161_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0161_v0_0_s_ifspec; + +#ifndef __ICLRHostBindingPolicyManager_INTERFACE_DEFINED__ +#define __ICLRHostBindingPolicyManager_INTERFACE_DEFINED__ + +/* interface ICLRHostBindingPolicyManager */ +/* [local][unique][helpstring][uuid][version][object] */ + + +EXTERN_C const IID IID_ICLRHostBindingPolicyManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("4b3545e7-1856-48c9-a8ba-24b21a753c09") + ICLRHostBindingPolicyManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ModifyApplicationPolicy( + /* [in] */ LPCWSTR pwzSourceAssemblyIdentity, + /* [in] */ LPCWSTR pwzTargetAssemblyIdentity, + /* [in] */ BYTE *pbApplicationPolicy, + /* [in] */ DWORD cbAppPolicySize, + /* [in] */ DWORD dwPolicyModifyFlags, + /* [size_is][out] */ BYTE *pbNewApplicationPolicy, + /* [out][in] */ DWORD *pcbNewAppPolicySize) = 0; + + virtual HRESULT STDMETHODCALLTYPE EvaluatePolicy( + /* [in] */ LPCWSTR pwzReferenceIdentity, + /* [in] */ BYTE *pbApplicationPolicy, + /* [in] */ DWORD cbAppPolicySize, + /* [size_is][out] */ LPWSTR pwzPostPolicyReferenceIdentity, + /* [out][in] */ DWORD *pcchPostPolicyReferenceIdentity, + /* [out] */ DWORD *pdwPoliciesApplied) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRHostBindingPolicyManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRHostBindingPolicyManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRHostBindingPolicyManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRHostBindingPolicyManager * This); + + HRESULT ( STDMETHODCALLTYPE *ModifyApplicationPolicy )( + ICLRHostBindingPolicyManager * This, + /* [in] */ LPCWSTR pwzSourceAssemblyIdentity, + /* [in] */ LPCWSTR pwzTargetAssemblyIdentity, + /* [in] */ BYTE *pbApplicationPolicy, + /* [in] */ DWORD cbAppPolicySize, + /* [in] */ DWORD dwPolicyModifyFlags, + /* [size_is][out] */ BYTE *pbNewApplicationPolicy, + /* [out][in] */ DWORD *pcbNewAppPolicySize); + + HRESULT ( STDMETHODCALLTYPE *EvaluatePolicy )( + ICLRHostBindingPolicyManager * This, + /* [in] */ LPCWSTR pwzReferenceIdentity, + /* [in] */ BYTE *pbApplicationPolicy, + /* [in] */ DWORD cbAppPolicySize, + /* [size_is][out] */ LPWSTR pwzPostPolicyReferenceIdentity, + /* [out][in] */ DWORD *pcchPostPolicyReferenceIdentity, + /* [out] */ DWORD *pdwPoliciesApplied); + + END_INTERFACE + } ICLRHostBindingPolicyManagerVtbl; + + interface ICLRHostBindingPolicyManager + { + CONST_VTBL struct ICLRHostBindingPolicyManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRHostBindingPolicyManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRHostBindingPolicyManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRHostBindingPolicyManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRHostBindingPolicyManager_ModifyApplicationPolicy(This,pwzSourceAssemblyIdentity,pwzTargetAssemblyIdentity,pbApplicationPolicy,cbAppPolicySize,dwPolicyModifyFlags,pbNewApplicationPolicy,pcbNewAppPolicySize) \ + (This)->lpVtbl -> ModifyApplicationPolicy(This,pwzSourceAssemblyIdentity,pwzTargetAssemblyIdentity,pbApplicationPolicy,cbAppPolicySize,dwPolicyModifyFlags,pbNewApplicationPolicy,pcbNewAppPolicySize) + +#define ICLRHostBindingPolicyManager_EvaluatePolicy(This,pwzReferenceIdentity,pbApplicationPolicy,cbAppPolicySize,pwzPostPolicyReferenceIdentity,pcchPostPolicyReferenceIdentity,pdwPoliciesApplied) \ + (This)->lpVtbl -> EvaluatePolicy(This,pwzReferenceIdentity,pbApplicationPolicy,cbAppPolicySize,pwzPostPolicyReferenceIdentity,pcchPostPolicyReferenceIdentity,pdwPoliciesApplied) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRHostBindingPolicyManager_ModifyApplicationPolicy_Proxy( + ICLRHostBindingPolicyManager * This, + /* [in] */ LPCWSTR pwzSourceAssemblyIdentity, + /* [in] */ LPCWSTR pwzTargetAssemblyIdentity, + /* [in] */ BYTE *pbApplicationPolicy, + /* [in] */ DWORD cbAppPolicySize, + /* [in] */ DWORD dwPolicyModifyFlags, + /* [size_is][out] */ BYTE *pbNewApplicationPolicy, + /* [out][in] */ DWORD *pcbNewAppPolicySize); + + +void __RPC_STUB ICLRHostBindingPolicyManager_ModifyApplicationPolicy_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRHostBindingPolicyManager_EvaluatePolicy_Proxy( + ICLRHostBindingPolicyManager * This, + /* [in] */ LPCWSTR pwzReferenceIdentity, + /* [in] */ BYTE *pbApplicationPolicy, + /* [in] */ DWORD cbAppPolicySize, + /* [size_is][out] */ LPWSTR pwzPostPolicyReferenceIdentity, + /* [out][in] */ DWORD *pcchPostPolicyReferenceIdentity, + /* [out] */ DWORD *pdwPoliciesApplied); + + +void __RPC_STUB ICLRHostBindingPolicyManager_EvaluatePolicy_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRHostBindingPolicyManager_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0162 */ +/* [local] */ + +typedef /* [public] */ +enum __MIDL___MIDL_itf_mscoree_0162_0001 + { ePolicyLevelNone = 0, + ePolicyLevelRetargetable = 0x1, + ePolicyUnifiedToCLR = 0x2, + ePolicyLevelApp = 0x4, + ePolicyLevelPublisher = 0x8, + ePolicyLevelHost = 0x10, + ePolicyLevelAdmin = 0x20 + } EBindPolicyLevels; + +typedef struct _AssemblyBindInfo + { + DWORD dwAppDomainId; + LPCWSTR lpReferencedIdentity; + LPCWSTR lpPostPolicyIdentity; + DWORD ePolicyLevel; + } AssemblyBindInfo; + +typedef struct _ModuleBindInfo + { + DWORD dwAppDomainId; + LPCWSTR lpAssemblyIdentity; + LPCWSTR lpModuleName; + } ModuleBindInfo; + +typedef +enum _HostApplicationPolicy + { HOST_APPLICATION_BINDING_POLICY = 1 + } EHostApplicationPolicy; + + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0162_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0162_v0_0_s_ifspec; + +#ifndef __IHostAssemblyStore_INTERFACE_DEFINED__ +#define __IHostAssemblyStore_INTERFACE_DEFINED__ + +/* interface IHostAssemblyStore */ +/* [unique][helpstring][uuid][version][object][local] */ + + +EXTERN_C const IID IID_IHostAssemblyStore; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7b102a88-3f7f-496d-8fa2-c35374e01af3") + IHostAssemblyStore : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ProvideAssembly( + /* [in] */ AssemblyBindInfo *pBindInfo, + /* [out] */ UINT64 *pAssemblyId, + /* [out] */ UINT64 *pContext, + /* [out] */ IStream **ppStmAssemblyImage, + /* [out] */ IStream **ppStmPDB) = 0; + + virtual HRESULT STDMETHODCALLTYPE ProvideModule( + /* [in] */ ModuleBindInfo *pBindInfo, + /* [out] */ DWORD *pdwModuleId, + /* [out] */ IStream **ppStmModuleImage, + /* [out] */ IStream **ppStmPDB) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostAssemblyStoreVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostAssemblyStore * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostAssemblyStore * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostAssemblyStore * This); + + HRESULT ( STDMETHODCALLTYPE *ProvideAssembly )( + IHostAssemblyStore * This, + /* [in] */ AssemblyBindInfo *pBindInfo, + /* [out] */ UINT64 *pAssemblyId, + /* [out] */ UINT64 *pContext, + /* [out] */ IStream **ppStmAssemblyImage, + /* [out] */ IStream **ppStmPDB); + + HRESULT ( STDMETHODCALLTYPE *ProvideModule )( + IHostAssemblyStore * This, + /* [in] */ ModuleBindInfo *pBindInfo, + /* [out] */ DWORD *pdwModuleId, + /* [out] */ IStream **ppStmModuleImage, + /* [out] */ IStream **ppStmPDB); + + END_INTERFACE + } IHostAssemblyStoreVtbl; + + interface IHostAssemblyStore + { + CONST_VTBL struct IHostAssemblyStoreVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostAssemblyStore_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostAssemblyStore_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostAssemblyStore_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostAssemblyStore_ProvideAssembly(This,pBindInfo,pAssemblyId,pContext,ppStmAssemblyImage,ppStmPDB) \ + (This)->lpVtbl -> ProvideAssembly(This,pBindInfo,pAssemblyId,pContext,ppStmAssemblyImage,ppStmPDB) + +#define IHostAssemblyStore_ProvideModule(This,pBindInfo,pdwModuleId,ppStmModuleImage,ppStmPDB) \ + (This)->lpVtbl -> ProvideModule(This,pBindInfo,pdwModuleId,ppStmModuleImage,ppStmPDB) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostAssemblyStore_ProvideAssembly_Proxy( + IHostAssemblyStore * This, + /* [in] */ AssemblyBindInfo *pBindInfo, + /* [out] */ UINT64 *pAssemblyId, + /* [out] */ UINT64 *pContext, + /* [out] */ IStream **ppStmAssemblyImage, + /* [out] */ IStream **ppStmPDB); + + +void __RPC_STUB IHostAssemblyStore_ProvideAssembly_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostAssemblyStore_ProvideModule_Proxy( + IHostAssemblyStore * This, + /* [in] */ ModuleBindInfo *pBindInfo, + /* [out] */ DWORD *pdwModuleId, + /* [out] */ IStream **ppStmModuleImage, + /* [out] */ IStream **ppStmPDB); + + +void __RPC_STUB IHostAssemblyStore_ProvideModule_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostAssemblyStore_INTERFACE_DEFINED__ */ + + +#ifndef __IHostAssemblyManager_INTERFACE_DEFINED__ +#define __IHostAssemblyManager_INTERFACE_DEFINED__ + +/* interface IHostAssemblyManager */ +/* [unique][helpstring][uuid][version][object][local] */ + + +EXTERN_C const IID IID_IHostAssemblyManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("613dabd7-62b2-493e-9e65-c1e32a1e0c5e") + IHostAssemblyManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetNonHostStoreAssemblies( + /* [out] */ ICLRAssemblyReferenceList **ppReferenceList) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAssemblyStore( + /* [out] */ IHostAssemblyStore **ppAssemblyStore) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostAssemblyManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostAssemblyManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostAssemblyManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostAssemblyManager * This); + + HRESULT ( STDMETHODCALLTYPE *GetNonHostStoreAssemblies )( + IHostAssemblyManager * This, + /* [out] */ ICLRAssemblyReferenceList **ppReferenceList); + + HRESULT ( STDMETHODCALLTYPE *GetAssemblyStore )( + IHostAssemblyManager * This, + /* [out] */ IHostAssemblyStore **ppAssemblyStore); + + END_INTERFACE + } IHostAssemblyManagerVtbl; + + interface IHostAssemblyManager + { + CONST_VTBL struct IHostAssemblyManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostAssemblyManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostAssemblyManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostAssemblyManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostAssemblyManager_GetNonHostStoreAssemblies(This,ppReferenceList) \ + (This)->lpVtbl -> GetNonHostStoreAssemblies(This,ppReferenceList) + +#define IHostAssemblyManager_GetAssemblyStore(This,ppAssemblyStore) \ + (This)->lpVtbl -> GetAssemblyStore(This,ppAssemblyStore) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostAssemblyManager_GetNonHostStoreAssemblies_Proxy( + IHostAssemblyManager * This, + /* [out] */ ICLRAssemblyReferenceList **ppReferenceList); + + +void __RPC_STUB IHostAssemblyManager_GetNonHostStoreAssemblies_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostAssemblyManager_GetAssemblyStore_Proxy( + IHostAssemblyManager * This, + /* [out] */ IHostAssemblyStore **ppAssemblyStore); + + +void __RPC_STUB IHostAssemblyManager_GetAssemblyStore_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostAssemblyManager_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0164 */ +/* [local] */ + +STDAPI GetCLRIdentityManager(REFIID riid, IUnknown **ppManager); +EXTERN_GUID(IID_IHostControl, 0x02CA073C, 0x7079, 0x4860, 0x88, 0x0A, 0xC2, 0xF7, 0xA4, 0x49, 0xC9, 0x91); + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0164_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0164_v0_0_s_ifspec; + +#ifndef __IHostControl_INTERFACE_DEFINED__ +#define __IHostControl_INTERFACE_DEFINED__ + +/* interface IHostControl */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_IHostControl; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("02CA073C-7079-4860-880A-C2F7A449C991") + IHostControl : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetHostManager( + /* [in] */ REFIID riid, + /* [out] */ void **ppObject) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAppDomainManager( + /* [in] */ DWORD dwAppDomainID, + /* [in] */ IUnknown *pUnkAppDomainManager) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostControlVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostControl * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostControl * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostControl * This); + + HRESULT ( STDMETHODCALLTYPE *GetHostManager )( + IHostControl * This, + /* [in] */ REFIID riid, + /* [out] */ void **ppObject); + + HRESULT ( STDMETHODCALLTYPE *SetAppDomainManager )( + IHostControl * This, + /* [in] */ DWORD dwAppDomainID, + /* [in] */ IUnknown *pUnkAppDomainManager); + + END_INTERFACE + } IHostControlVtbl; + + interface IHostControl + { + CONST_VTBL struct IHostControlVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostControl_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostControl_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostControl_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostControl_GetHostManager(This,riid,ppObject) \ + (This)->lpVtbl -> GetHostManager(This,riid,ppObject) + +#define IHostControl_SetAppDomainManager(This,dwAppDomainID,pUnkAppDomainManager) \ + (This)->lpVtbl -> SetAppDomainManager(This,dwAppDomainID,pUnkAppDomainManager) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostControl_GetHostManager_Proxy( + IHostControl * This, + /* [in] */ REFIID riid, + /* [out] */ void **ppObject); + + +void __RPC_STUB IHostControl_GetHostManager_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostControl_SetAppDomainManager_Proxy( + IHostControl * This, + /* [in] */ DWORD dwAppDomainID, + /* [in] */ IUnknown *pUnkAppDomainManager); + + +void __RPC_STUB IHostControl_SetAppDomainManager_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostControl_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0165 */ +/* [local] */ + +EXTERN_GUID(IID_ICLRControl, 0x9065597E, 0xD1A1, 0x4fb2, 0xB6, 0xBA, 0x7E, 0x1F, 0xCE, 0x23, 0x0F, 0x61); + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0165_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0165_v0_0_s_ifspec; + +#ifndef __ICLRControl_INTERFACE_DEFINED__ +#define __ICLRControl_INTERFACE_DEFINED__ + +/* interface ICLRControl */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRControl; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9065597E-D1A1-4fb2-B6BA-7E1FCE230F61") + ICLRControl : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetCLRManager( + /* [in] */ REFIID riid, + /* [out] */ void **ppObject) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAppDomainManagerType( + /* [in] */ LPCWSTR pwzAppDomainManagerAssembly, + /* [in] */ LPCWSTR pwzAppDomainManagerType) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRControlVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRControl * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRControl * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRControl * This); + + HRESULT ( STDMETHODCALLTYPE *GetCLRManager )( + ICLRControl * This, + /* [in] */ REFIID riid, + /* [out] */ void **ppObject); + + HRESULT ( STDMETHODCALLTYPE *SetAppDomainManagerType )( + ICLRControl * This, + /* [in] */ LPCWSTR pwzAppDomainManagerAssembly, + /* [in] */ LPCWSTR pwzAppDomainManagerType); + + END_INTERFACE + } ICLRControlVtbl; + + interface ICLRControl + { + CONST_VTBL struct ICLRControlVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRControl_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRControl_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRControl_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRControl_GetCLRManager(This,riid,ppObject) \ + (This)->lpVtbl -> GetCLRManager(This,riid,ppObject) + +#define ICLRControl_SetAppDomainManagerType(This,pwzAppDomainManagerAssembly,pwzAppDomainManagerType) \ + (This)->lpVtbl -> SetAppDomainManagerType(This,pwzAppDomainManagerAssembly,pwzAppDomainManagerType) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRControl_GetCLRManager_Proxy( + ICLRControl * This, + /* [in] */ REFIID riid, + /* [out] */ void **ppObject); + + +void __RPC_STUB ICLRControl_GetCLRManager_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRControl_SetAppDomainManagerType_Proxy( + ICLRControl * This, + /* [in] */ LPCWSTR pwzAppDomainManagerAssembly, + /* [in] */ LPCWSTR pwzAppDomainManagerType); + + +void __RPC_STUB ICLRControl_SetAppDomainManagerType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRControl_INTERFACE_DEFINED__ */ + + +#ifndef __ICLRRuntimeHost_INTERFACE_DEFINED__ +#define __ICLRRuntimeHost_INTERFACE_DEFINED__ + +/* interface ICLRRuntimeHost */ +/* [object][local][unique][helpstring][version][uuid] */ + + +EXTERN_C const IID IID_ICLRRuntimeHost; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("90F1A06C-7712-4762-86B5-7A5EBA6BDB02") + ICLRRuntimeHost : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Start( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetHostControl( + /* [in] */ IHostControl *pHostControl) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCLRControl( + /* [out] */ ICLRControl **pCLRControl) = 0; + + virtual HRESULT STDMETHODCALLTYPE UnloadAppDomain( + /* [in] */ DWORD dwAppDomainId, + /* [in] */ BOOL fWaitUntilDone) = 0; + + virtual HRESULT STDMETHODCALLTYPE ExecuteInAppDomain( + /* [in] */ DWORD dwAppDomainId, + /* [in] */ FExecuteInAppDomainCallback pCallback, + /* [in] */ void *cookie) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentAppDomainId( + /* [out] */ DWORD *pdwAppDomainId) = 0; + + virtual HRESULT STDMETHODCALLTYPE ExecuteApplication( + /* [in] */ LPCWSTR pwzAppFullName, + /* [in] */ DWORD dwManifestPaths, + /* [in] */ LPCWSTR *ppwzManifestPaths, + /* [in] */ DWORD dwActivationData, + /* [in] */ LPCWSTR *ppwzActivationData, + /* [out] */ int *pReturnValue) = 0; + + virtual HRESULT STDMETHODCALLTYPE ExecuteInDefaultAppDomain( + /* [in] */ LPCWSTR pwzAssemblyPath, + /* [in] */ LPCWSTR pwzTypeName, + /* [in] */ LPCWSTR pwzMethodName, + /* [in] */ LPCWSTR pwzArgument, + /* [out] */ DWORD *pReturnValue) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRRuntimeHostVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRRuntimeHost * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRRuntimeHost * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRRuntimeHost * This); + + HRESULT ( STDMETHODCALLTYPE *Start )( + ICLRRuntimeHost * This); + + HRESULT ( STDMETHODCALLTYPE *Stop )( + ICLRRuntimeHost * This); + + HRESULT ( STDMETHODCALLTYPE *SetHostControl )( + ICLRRuntimeHost * This, + /* [in] */ IHostControl *pHostControl); + + HRESULT ( STDMETHODCALLTYPE *GetCLRControl )( + ICLRRuntimeHost * This, + /* [out] */ ICLRControl **pCLRControl); + + HRESULT ( STDMETHODCALLTYPE *UnloadAppDomain )( + ICLRRuntimeHost * This, + /* [in] */ DWORD dwAppDomainId, + /* [in] */ BOOL fWaitUntilDone); + + HRESULT ( STDMETHODCALLTYPE *ExecuteInAppDomain )( + ICLRRuntimeHost * This, + /* [in] */ DWORD dwAppDomainId, + /* [in] */ FExecuteInAppDomainCallback pCallback, + /* [in] */ void *cookie); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentAppDomainId )( + ICLRRuntimeHost * This, + /* [out] */ DWORD *pdwAppDomainId); + + HRESULT ( STDMETHODCALLTYPE *ExecuteApplication )( + ICLRRuntimeHost * This, + /* [in] */ LPCWSTR pwzAppFullName, + /* [in] */ DWORD dwManifestPaths, + /* [in] */ LPCWSTR *ppwzManifestPaths, + /* [in] */ DWORD dwActivationData, + /* [in] */ LPCWSTR *ppwzActivationData, + /* [out] */ int *pReturnValue); + + HRESULT ( STDMETHODCALLTYPE *ExecuteInDefaultAppDomain )( + ICLRRuntimeHost * This, + /* [in] */ LPCWSTR pwzAssemblyPath, + /* [in] */ LPCWSTR pwzTypeName, + /* [in] */ LPCWSTR pwzMethodName, + /* [in] */ LPCWSTR pwzArgument, + /* [out] */ DWORD *pReturnValue); + + END_INTERFACE + } ICLRRuntimeHostVtbl; + + interface ICLRRuntimeHost + { + CONST_VTBL struct ICLRRuntimeHostVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRRuntimeHost_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRRuntimeHost_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRRuntimeHost_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRRuntimeHost_Start(This) \ + (This)->lpVtbl -> Start(This) + +#define ICLRRuntimeHost_Stop(This) \ + (This)->lpVtbl -> Stop(This) + +#define ICLRRuntimeHost_SetHostControl(This,pHostControl) \ + (This)->lpVtbl -> SetHostControl(This,pHostControl) + +#define ICLRRuntimeHost_GetCLRControl(This,pCLRControl) \ + (This)->lpVtbl -> GetCLRControl(This,pCLRControl) + +#define ICLRRuntimeHost_UnloadAppDomain(This,dwAppDomainId,fWaitUntilDone) \ + (This)->lpVtbl -> UnloadAppDomain(This,dwAppDomainId,fWaitUntilDone) + +#define ICLRRuntimeHost_ExecuteInAppDomain(This,dwAppDomainId,pCallback,cookie) \ + (This)->lpVtbl -> ExecuteInAppDomain(This,dwAppDomainId,pCallback,cookie) + +#define ICLRRuntimeHost_GetCurrentAppDomainId(This,pdwAppDomainId) \ + (This)->lpVtbl -> GetCurrentAppDomainId(This,pdwAppDomainId) + +#define ICLRRuntimeHost_ExecuteApplication(This,pwzAppFullName,dwManifestPaths,ppwzManifestPaths,dwActivationData,ppwzActivationData,pReturnValue) \ + (This)->lpVtbl -> ExecuteApplication(This,pwzAppFullName,dwManifestPaths,ppwzManifestPaths,dwActivationData,ppwzActivationData,pReturnValue) + +#define ICLRRuntimeHost_ExecuteInDefaultAppDomain(This,pwzAssemblyPath,pwzTypeName,pwzMethodName,pwzArgument,pReturnValue) \ + (This)->lpVtbl -> ExecuteInDefaultAppDomain(This,pwzAssemblyPath,pwzTypeName,pwzMethodName,pwzArgument,pReturnValue) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRRuntimeHost_Start_Proxy( + ICLRRuntimeHost * This); + + +void __RPC_STUB ICLRRuntimeHost_Start_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRRuntimeHost_Stop_Proxy( + ICLRRuntimeHost * This); + + +void __RPC_STUB ICLRRuntimeHost_Stop_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRRuntimeHost_SetHostControl_Proxy( + ICLRRuntimeHost * This, + /* [in] */ IHostControl *pHostControl); + + +void __RPC_STUB ICLRRuntimeHost_SetHostControl_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRRuntimeHost_GetCLRControl_Proxy( + ICLRRuntimeHost * This, + /* [out] */ ICLRControl **pCLRControl); + + +void __RPC_STUB ICLRRuntimeHost_GetCLRControl_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRRuntimeHost_UnloadAppDomain_Proxy( + ICLRRuntimeHost * This, + /* [in] */ DWORD dwAppDomainId, + /* [in] */ BOOL fWaitUntilDone); + + +void __RPC_STUB ICLRRuntimeHost_UnloadAppDomain_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRRuntimeHost_ExecuteInAppDomain_Proxy( + ICLRRuntimeHost * This, + /* [in] */ DWORD dwAppDomainId, + /* [in] */ FExecuteInAppDomainCallback pCallback, + /* [in] */ void *cookie); + + +void __RPC_STUB ICLRRuntimeHost_ExecuteInAppDomain_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRRuntimeHost_GetCurrentAppDomainId_Proxy( + ICLRRuntimeHost * This, + /* [out] */ DWORD *pdwAppDomainId); + + +void __RPC_STUB ICLRRuntimeHost_GetCurrentAppDomainId_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRRuntimeHost_ExecuteApplication_Proxy( + ICLRRuntimeHost * This, + /* [in] */ LPCWSTR pwzAppFullName, + /* [in] */ DWORD dwManifestPaths, + /* [in] */ LPCWSTR *ppwzManifestPaths, + /* [in] */ DWORD dwActivationData, + /* [in] */ LPCWSTR *ppwzActivationData, + /* [out] */ int *pReturnValue); + + +void __RPC_STUB ICLRRuntimeHost_ExecuteApplication_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRRuntimeHost_ExecuteInDefaultAppDomain_Proxy( + ICLRRuntimeHost * This, + /* [in] */ LPCWSTR pwzAssemblyPath, + /* [in] */ LPCWSTR pwzTypeName, + /* [in] */ LPCWSTR pwzMethodName, + /* [in] */ LPCWSTR pwzArgument, + /* [out] */ DWORD *pReturnValue); + + +void __RPC_STUB ICLRRuntimeHost_ExecuteInDefaultAppDomain_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRRuntimeHost_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mscoree_0167 */ +/* [local] */ + +typedef /* [public][public] */ +enum __MIDL___MIDL_itf_mscoree_0167_0001 + { eNoChecks = 0, + eSynchronization = 0x1, + eSharedState = 0x2, + eExternalProcessMgmt = 0x4, + eSelfAffectingProcessMgmt = 0x8, + eExternalThreading = 0x10, + eSelfAffectingThreading = 0x20, + eSecurityInfrastructure = 0x40, + eUI = 0x80, + eMayLeakOnAbort = 0x100, + eAll = 0x1ff + } EApiCategories; + + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0167_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0167_v0_0_s_ifspec; + +#ifndef __ICLRHostProtectionManager_INTERFACE_DEFINED__ +#define __ICLRHostProtectionManager_INTERFACE_DEFINED__ + +/* interface ICLRHostProtectionManager */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_ICLRHostProtectionManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("89F25F5C-CEEF-43e1-9CFA-A68CE863AAAC") + ICLRHostProtectionManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetProtectedCategories( + /* [in] */ EApiCategories categories) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetEagerSerializeGrantSets( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICLRHostProtectionManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICLRHostProtectionManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICLRHostProtectionManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICLRHostProtectionManager * This); + + HRESULT ( STDMETHODCALLTYPE *SetProtectedCategories )( + ICLRHostProtectionManager * This, + /* [in] */ EApiCategories categories); + + HRESULT ( STDMETHODCALLTYPE *SetEagerSerializeGrantSets )( + ICLRHostProtectionManager * This); + + END_INTERFACE + } ICLRHostProtectionManagerVtbl; + + interface ICLRHostProtectionManager + { + CONST_VTBL struct ICLRHostProtectionManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICLRHostProtectionManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICLRHostProtectionManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICLRHostProtectionManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICLRHostProtectionManager_SetProtectedCategories(This,categories) \ + (This)->lpVtbl -> SetProtectedCategories(This,categories) + +#define ICLRHostProtectionManager_SetEagerSerializeGrantSets(This) \ + (This)->lpVtbl -> SetEagerSerializeGrantSets(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICLRHostProtectionManager_SetProtectedCategories_Proxy( + ICLRHostProtectionManager * This, + /* [in] */ EApiCategories categories); + + +void __RPC_STUB ICLRHostProtectionManager_SetProtectedCategories_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICLRHostProtectionManager_SetEagerSerializeGrantSets_Proxy( + ICLRHostProtectionManager * This); + + +void __RPC_STUB ICLRHostProtectionManager_SetEagerSerializeGrantSets_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICLRHostProtectionManager_INTERFACE_DEFINED__ */ + + + +#ifndef __mscoree_LIBRARY_DEFINED__ +#define __mscoree_LIBRARY_DEFINED__ + +/* library mscoree */ +/* [helpstring][version][uuid] */ + + +EXTERN_C const IID LIBID_mscoree; + +#ifndef __ITypeName_INTERFACE_DEFINED__ +#define __ITypeName_INTERFACE_DEFINED__ + +/* interface ITypeName */ +/* [unique][helpstring][uuid][oleautomation][object] */ + + +EXTERN_C const IID IID_ITypeName; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B81FF171-20F3-11d2-8DCC-00A0C9B00522") + ITypeName : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetNameCount( + /* [retval][out] */ DWORD *pCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNames( + /* [in] */ DWORD count, + /* [out] */ BSTR *rgbszNames, + /* [retval][out] */ DWORD *pCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTypeArgumentCount( + /* [retval][out] */ DWORD *pCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTypeArguments( + /* [in] */ DWORD count, + /* [out] */ ITypeName **rgpArguments, + /* [retval][out] */ DWORD *pCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetModifierLength( + /* [retval][out] */ DWORD *pCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetModifiers( + /* [in] */ DWORD count, + /* [out] */ DWORD *rgModifiers, + /* [retval][out] */ DWORD *pCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAssemblyName( + /* [retval][out] */ BSTR *rgbszAssemblyNames) = 0; + + }; + +#else /* C style interface */ + + typedef struct ITypeNameVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ITypeName * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ITypeName * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ITypeName * This); + + HRESULT ( STDMETHODCALLTYPE *GetNameCount )( + ITypeName * This, + /* [retval][out] */ DWORD *pCount); + + HRESULT ( STDMETHODCALLTYPE *GetNames )( + ITypeName * This, + /* [in] */ DWORD count, + /* [out] */ BSTR *rgbszNames, + /* [retval][out] */ DWORD *pCount); + + HRESULT ( STDMETHODCALLTYPE *GetTypeArgumentCount )( + ITypeName * This, + /* [retval][out] */ DWORD *pCount); + + HRESULT ( STDMETHODCALLTYPE *GetTypeArguments )( + ITypeName * This, + /* [in] */ DWORD count, + /* [out] */ ITypeName **rgpArguments, + /* [retval][out] */ DWORD *pCount); + + HRESULT ( STDMETHODCALLTYPE *GetModifierLength )( + ITypeName * This, + /* [retval][out] */ DWORD *pCount); + + HRESULT ( STDMETHODCALLTYPE *GetModifiers )( + ITypeName * This, + /* [in] */ DWORD count, + /* [out] */ DWORD *rgModifiers, + /* [retval][out] */ DWORD *pCount); + + HRESULT ( STDMETHODCALLTYPE *GetAssemblyName )( + ITypeName * This, + /* [retval][out] */ BSTR *rgbszAssemblyNames); + + END_INTERFACE + } ITypeNameVtbl; + + interface ITypeName + { + CONST_VTBL struct ITypeNameVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ITypeName_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ITypeName_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ITypeName_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ITypeName_GetNameCount(This,pCount) \ + (This)->lpVtbl -> GetNameCount(This,pCount) + +#define ITypeName_GetNames(This,count,rgbszNames,pCount) \ + (This)->lpVtbl -> GetNames(This,count,rgbszNames,pCount) + +#define ITypeName_GetTypeArgumentCount(This,pCount) \ + (This)->lpVtbl -> GetTypeArgumentCount(This,pCount) + +#define ITypeName_GetTypeArguments(This,count,rgpArguments,pCount) \ + (This)->lpVtbl -> GetTypeArguments(This,count,rgpArguments,pCount) + +#define ITypeName_GetModifierLength(This,pCount) \ + (This)->lpVtbl -> GetModifierLength(This,pCount) + +#define ITypeName_GetModifiers(This,count,rgModifiers,pCount) \ + (This)->lpVtbl -> GetModifiers(This,count,rgModifiers,pCount) + +#define ITypeName_GetAssemblyName(This,rgbszAssemblyNames) \ + (This)->lpVtbl -> GetAssemblyName(This,rgbszAssemblyNames) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ITypeName_GetNameCount_Proxy( + ITypeName * This, + /* [retval][out] */ DWORD *pCount); + + +void __RPC_STUB ITypeName_GetNameCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeName_GetNames_Proxy( + ITypeName * This, + /* [in] */ DWORD count, + /* [out] */ BSTR *rgbszNames, + /* [retval][out] */ DWORD *pCount); + + +void __RPC_STUB ITypeName_GetNames_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeName_GetTypeArgumentCount_Proxy( + ITypeName * This, + /* [retval][out] */ DWORD *pCount); + + +void __RPC_STUB ITypeName_GetTypeArgumentCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeName_GetTypeArguments_Proxy( + ITypeName * This, + /* [in] */ DWORD count, + /* [out] */ ITypeName **rgpArguments, + /* [retval][out] */ DWORD *pCount); + + +void __RPC_STUB ITypeName_GetTypeArguments_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeName_GetModifierLength_Proxy( + ITypeName * This, + /* [retval][out] */ DWORD *pCount); + + +void __RPC_STUB ITypeName_GetModifierLength_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeName_GetModifiers_Proxy( + ITypeName * This, + /* [in] */ DWORD count, + /* [out] */ DWORD *rgModifiers, + /* [retval][out] */ DWORD *pCount); + + +void __RPC_STUB ITypeName_GetModifiers_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeName_GetAssemblyName_Proxy( + ITypeName * This, + /* [retval][out] */ BSTR *rgbszAssemblyNames); + + +void __RPC_STUB ITypeName_GetAssemblyName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ITypeName_INTERFACE_DEFINED__ */ + + +#ifndef __ITypeNameBuilder_INTERFACE_DEFINED__ +#define __ITypeNameBuilder_INTERFACE_DEFINED__ + +/* interface ITypeNameBuilder */ +/* [unique][helpstring][uuid][oleautomation][object] */ + + +EXTERN_C const IID IID_ITypeNameBuilder; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B81FF171-20F3-11d2-8DCC-00A0C9B00523") + ITypeNameBuilder : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE OpenGenericArguments( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE CloseGenericArguments( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE OpenGenericArgument( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE CloseGenericArgument( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddName( + /* [in] */ LPCWSTR szName) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddPointer( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddByRef( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddSzArray( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddArray( + /* [in] */ DWORD rank) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddAssemblySpec( + /* [in] */ LPCWSTR szAssemblySpec) = 0; + + virtual HRESULT STDMETHODCALLTYPE ToString( + /* [retval][out] */ BSTR *pszStringRepresentation) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clear( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct ITypeNameBuilderVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ITypeNameBuilder * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ITypeNameBuilder * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ITypeNameBuilder * This); + + HRESULT ( STDMETHODCALLTYPE *OpenGenericArguments )( + ITypeNameBuilder * This); + + HRESULT ( STDMETHODCALLTYPE *CloseGenericArguments )( + ITypeNameBuilder * This); + + HRESULT ( STDMETHODCALLTYPE *OpenGenericArgument )( + ITypeNameBuilder * This); + + HRESULT ( STDMETHODCALLTYPE *CloseGenericArgument )( + ITypeNameBuilder * This); + + HRESULT ( STDMETHODCALLTYPE *AddName )( + ITypeNameBuilder * This, + /* [in] */ LPCWSTR szName); + + HRESULT ( STDMETHODCALLTYPE *AddPointer )( + ITypeNameBuilder * This); + + HRESULT ( STDMETHODCALLTYPE *AddByRef )( + ITypeNameBuilder * This); + + HRESULT ( STDMETHODCALLTYPE *AddSzArray )( + ITypeNameBuilder * This); + + HRESULT ( STDMETHODCALLTYPE *AddArray )( + ITypeNameBuilder * This, + /* [in] */ DWORD rank); + + HRESULT ( STDMETHODCALLTYPE *AddAssemblySpec )( + ITypeNameBuilder * This, + /* [in] */ LPCWSTR szAssemblySpec); + + HRESULT ( STDMETHODCALLTYPE *ToString )( + ITypeNameBuilder * This, + /* [retval][out] */ BSTR *pszStringRepresentation); + + HRESULT ( STDMETHODCALLTYPE *Clear )( + ITypeNameBuilder * This); + + END_INTERFACE + } ITypeNameBuilderVtbl; + + interface ITypeNameBuilder + { + CONST_VTBL struct ITypeNameBuilderVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ITypeNameBuilder_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ITypeNameBuilder_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ITypeNameBuilder_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ITypeNameBuilder_OpenGenericArguments(This) \ + (This)->lpVtbl -> OpenGenericArguments(This) + +#define ITypeNameBuilder_CloseGenericArguments(This) \ + (This)->lpVtbl -> CloseGenericArguments(This) + +#define ITypeNameBuilder_OpenGenericArgument(This) \ + (This)->lpVtbl -> OpenGenericArgument(This) + +#define ITypeNameBuilder_CloseGenericArgument(This) \ + (This)->lpVtbl -> CloseGenericArgument(This) + +#define ITypeNameBuilder_AddName(This,szName) \ + (This)->lpVtbl -> AddName(This,szName) + +#define ITypeNameBuilder_AddPointer(This) \ + (This)->lpVtbl -> AddPointer(This) + +#define ITypeNameBuilder_AddByRef(This) \ + (This)->lpVtbl -> AddByRef(This) + +#define ITypeNameBuilder_AddSzArray(This) \ + (This)->lpVtbl -> AddSzArray(This) + +#define ITypeNameBuilder_AddArray(This,rank) \ + (This)->lpVtbl -> AddArray(This,rank) + +#define ITypeNameBuilder_AddAssemblySpec(This,szAssemblySpec) \ + (This)->lpVtbl -> AddAssemblySpec(This,szAssemblySpec) + +#define ITypeNameBuilder_ToString(This,pszStringRepresentation) \ + (This)->lpVtbl -> ToString(This,pszStringRepresentation) + +#define ITypeNameBuilder_Clear(This) \ + (This)->lpVtbl -> Clear(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ITypeNameBuilder_OpenGenericArguments_Proxy( + ITypeNameBuilder * This); + + +void __RPC_STUB ITypeNameBuilder_OpenGenericArguments_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeNameBuilder_CloseGenericArguments_Proxy( + ITypeNameBuilder * This); + + +void __RPC_STUB ITypeNameBuilder_CloseGenericArguments_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeNameBuilder_OpenGenericArgument_Proxy( + ITypeNameBuilder * This); + + +void __RPC_STUB ITypeNameBuilder_OpenGenericArgument_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeNameBuilder_CloseGenericArgument_Proxy( + ITypeNameBuilder * This); + + +void __RPC_STUB ITypeNameBuilder_CloseGenericArgument_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeNameBuilder_AddName_Proxy( + ITypeNameBuilder * This, + /* [in] */ LPCWSTR szName); + + +void __RPC_STUB ITypeNameBuilder_AddName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeNameBuilder_AddPointer_Proxy( + ITypeNameBuilder * This); + + +void __RPC_STUB ITypeNameBuilder_AddPointer_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeNameBuilder_AddByRef_Proxy( + ITypeNameBuilder * This); + + +void __RPC_STUB ITypeNameBuilder_AddByRef_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeNameBuilder_AddSzArray_Proxy( + ITypeNameBuilder * This); + + +void __RPC_STUB ITypeNameBuilder_AddSzArray_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeNameBuilder_AddArray_Proxy( + ITypeNameBuilder * This, + /* [in] */ DWORD rank); + + +void __RPC_STUB ITypeNameBuilder_AddArray_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeNameBuilder_AddAssemblySpec_Proxy( + ITypeNameBuilder * This, + /* [in] */ LPCWSTR szAssemblySpec); + + +void __RPC_STUB ITypeNameBuilder_AddAssemblySpec_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeNameBuilder_ToString_Proxy( + ITypeNameBuilder * This, + /* [retval][out] */ BSTR *pszStringRepresentation); + + +void __RPC_STUB ITypeNameBuilder_ToString_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeNameBuilder_Clear_Proxy( + ITypeNameBuilder * This); + + +void __RPC_STUB ITypeNameBuilder_Clear_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ITypeNameBuilder_INTERFACE_DEFINED__ */ + + +#ifndef __ITypeNameFactory_INTERFACE_DEFINED__ +#define __ITypeNameFactory_INTERFACE_DEFINED__ + +/* interface ITypeNameFactory */ +/* [unique][helpstring][uuid][oleautomation][object] */ + + +EXTERN_C const IID IID_ITypeNameFactory; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B81FF171-20F3-11d2-8DCC-00A0C9B00521") + ITypeNameFactory : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ParseTypeName( + /* [in] */ LPCWSTR szName, + /* [out] */ DWORD *pError, + /* [retval][out] */ ITypeName **ppTypeName) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTypeNameBuilder( + /* [retval][out] */ ITypeNameBuilder **ppTypeBuilder) = 0; + + }; + +#else /* C style interface */ + + typedef struct ITypeNameFactoryVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ITypeNameFactory * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ITypeNameFactory * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ITypeNameFactory * This); + + HRESULT ( STDMETHODCALLTYPE *ParseTypeName )( + ITypeNameFactory * This, + /* [in] */ LPCWSTR szName, + /* [out] */ DWORD *pError, + /* [retval][out] */ ITypeName **ppTypeName); + + HRESULT ( STDMETHODCALLTYPE *GetTypeNameBuilder )( + ITypeNameFactory * This, + /* [retval][out] */ ITypeNameBuilder **ppTypeBuilder); + + END_INTERFACE + } ITypeNameFactoryVtbl; + + interface ITypeNameFactory + { + CONST_VTBL struct ITypeNameFactoryVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ITypeNameFactory_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ITypeNameFactory_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ITypeNameFactory_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ITypeNameFactory_ParseTypeName(This,szName,pError,ppTypeName) \ + (This)->lpVtbl -> ParseTypeName(This,szName,pError,ppTypeName) + +#define ITypeNameFactory_GetTypeNameBuilder(This,ppTypeBuilder) \ + (This)->lpVtbl -> GetTypeNameBuilder(This,ppTypeBuilder) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ITypeNameFactory_ParseTypeName_Proxy( + ITypeNameFactory * This, + /* [in] */ LPCWSTR szName, + /* [out] */ DWORD *pError, + /* [retval][out] */ ITypeName **ppTypeName); + + +void __RPC_STUB ITypeNameFactory_ParseTypeName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITypeNameFactory_GetTypeNameBuilder_Proxy( + ITypeNameFactory * This, + /* [retval][out] */ ITypeNameBuilder **ppTypeBuilder); + + +void __RPC_STUB ITypeNameFactory_GetTypeNameBuilder_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ITypeNameFactory_INTERFACE_DEFINED__ */ + + +#ifndef __IApartmentCallback_INTERFACE_DEFINED__ +#define __IApartmentCallback_INTERFACE_DEFINED__ + +/* interface IApartmentCallback */ +/* [unique][helpstring][uuid][oleautomation][object] */ + + +EXTERN_C const IID IID_IApartmentCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("178E5337-1528-4591-B1C9-1C6E484686D8") + IApartmentCallback : public IUnknown + { + public: + virtual HRESULT __stdcall DoCallback( + /* [in] */ SIZE_T pFunc, + /* [in] */ SIZE_T pData) = 0; + + }; + +#else /* C style interface */ + + typedef struct IApartmentCallbackVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IApartmentCallback * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IApartmentCallback * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IApartmentCallback * This); + + HRESULT ( __stdcall *DoCallback )( + IApartmentCallback * This, + /* [in] */ SIZE_T pFunc, + /* [in] */ SIZE_T pData); + + END_INTERFACE + } IApartmentCallbackVtbl; + + interface IApartmentCallback + { + CONST_VTBL struct IApartmentCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IApartmentCallback_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IApartmentCallback_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IApartmentCallback_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IApartmentCallback_DoCallback(This,pFunc,pData) \ + (This)->lpVtbl -> DoCallback(This,pFunc,pData) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT __stdcall IApartmentCallback_DoCallback_Proxy( + IApartmentCallback * This, + /* [in] */ SIZE_T pFunc, + /* [in] */ SIZE_T pData); + + +void __RPC_STUB IApartmentCallback_DoCallback_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IApartmentCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IManagedObject_INTERFACE_DEFINED__ +#define __IManagedObject_INTERFACE_DEFINED__ + +/* interface IManagedObject */ +/* [unique][helpstring][uuid][oleautomation][object] */ + + +EXTERN_C const IID IID_IManagedObject; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C3FCC19E-A970-11d2-8B5A-00A0C9B7C9C4") + IManagedObject : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetSerializedBuffer( + /* [out] */ BSTR *pBSTR) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetObjectIdentity( + /* [out] */ BSTR *pBSTRGUID, + /* [out] */ int *AppDomainID, + /* [out] */ int *pCCW) = 0; + + }; + +#else /* C style interface */ + + typedef struct IManagedObjectVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IManagedObject * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IManagedObject * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IManagedObject * This); + + HRESULT ( STDMETHODCALLTYPE *GetSerializedBuffer )( + IManagedObject * This, + /* [out] */ BSTR *pBSTR); + + HRESULT ( STDMETHODCALLTYPE *GetObjectIdentity )( + IManagedObject * This, + /* [out] */ BSTR *pBSTRGUID, + /* [out] */ int *AppDomainID, + /* [out] */ int *pCCW); + + END_INTERFACE + } IManagedObjectVtbl; + + interface IManagedObject + { + CONST_VTBL struct IManagedObjectVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IManagedObject_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IManagedObject_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IManagedObject_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IManagedObject_GetSerializedBuffer(This,pBSTR) \ + (This)->lpVtbl -> GetSerializedBuffer(This,pBSTR) + +#define IManagedObject_GetObjectIdentity(This,pBSTRGUID,AppDomainID,pCCW) \ + (This)->lpVtbl -> GetObjectIdentity(This,pBSTRGUID,AppDomainID,pCCW) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IManagedObject_GetSerializedBuffer_Proxy( + IManagedObject * This, + /* [out] */ BSTR *pBSTR); + + +void __RPC_STUB IManagedObject_GetSerializedBuffer_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IManagedObject_GetObjectIdentity_Proxy( + IManagedObject * This, + /* [out] */ BSTR *pBSTRGUID, + /* [out] */ int *AppDomainID, + /* [out] */ int *pCCW); + + +void __RPC_STUB IManagedObject_GetObjectIdentity_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IManagedObject_INTERFACE_DEFINED__ */ + + +#ifndef __ICatalogServices_INTERFACE_DEFINED__ +#define __ICatalogServices_INTERFACE_DEFINED__ + +/* interface ICatalogServices */ +/* [unique][helpstring][uuid][oleautomation][object] */ + + +EXTERN_C const IID IID_ICatalogServices; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("04C6BE1E-1DB1-4058-AB7A-700CCCFBF254") + ICatalogServices : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Autodone( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE NotAutodone( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICatalogServicesVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICatalogServices * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICatalogServices * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICatalogServices * This); + + HRESULT ( STDMETHODCALLTYPE *Autodone )( + ICatalogServices * This); + + HRESULT ( STDMETHODCALLTYPE *NotAutodone )( + ICatalogServices * This); + + END_INTERFACE + } ICatalogServicesVtbl; + + interface ICatalogServices + { + CONST_VTBL struct ICatalogServicesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICatalogServices_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICatalogServices_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICatalogServices_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICatalogServices_Autodone(This) \ + (This)->lpVtbl -> Autodone(This) + +#define ICatalogServices_NotAutodone(This) \ + (This)->lpVtbl -> NotAutodone(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICatalogServices_Autodone_Proxy( + ICatalogServices * This); + + +void __RPC_STUB ICatalogServices_Autodone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ICatalogServices_NotAutodone_Proxy( + ICatalogServices * This); + + +void __RPC_STUB ICatalogServices_NotAutodone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICatalogServices_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_ComCallUnmarshal; + +#ifdef __cplusplus + +class DECLSPEC_UUID("3F281000-E95A-11d2-886B-00C04F869F04") +ComCallUnmarshal; +#endif + +EXTERN_C const CLSID CLSID_CorRuntimeHost; + +#ifdef __cplusplus + +class DECLSPEC_UUID("CB2F6723-AB3A-11d2-9C40-00C04FA30A3E") +CorRuntimeHost; +#endif + +EXTERN_C const CLSID CLSID_CLRRuntimeHost; + +#ifdef __cplusplus + +class DECLSPEC_UUID("90F1A06E-7712-4762-86B5-7A5EBA6BDB02") +CLRRuntimeHost; +#endif + +EXTERN_C const CLSID CLSID_TypeNameFactory; + +#ifdef __cplusplus + +class DECLSPEC_UUID("B81FF171-20F3-11d2-8DCC-00A0C9B00525") +TypeNameFactory; +#endif +#endif /* __mscoree_LIBRARY_DEFINED__ */ + +/* interface __MIDL_itf_mscoree_0174 */ +/* [local] */ + +typedef /* [public][public][public] */ +enum __MIDL___MIDL_itf_mscoree_0174_0001 + { eCurrentContext = 0, + eRestrictedContext = 0x1 + } EContextType; + + + +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0174_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mscoree_0174_v0_0_s_ifspec; + +#ifndef __IHostSecurityContext_INTERFACE_DEFINED__ +#define __IHostSecurityContext_INTERFACE_DEFINED__ + +/* interface IHostSecurityContext */ +/* [local][unique][helpstring][uuid][version][object] */ + + +EXTERN_C const IID IID_IHostSecurityContext; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7E573CE4-0343-4423-98D7-6318348A1D3C") + IHostSecurityContext : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Capture( + /* [out] */ IHostSecurityContext **ppClonedContext) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostSecurityContextVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostSecurityContext * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostSecurityContext * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostSecurityContext * This); + + HRESULT ( STDMETHODCALLTYPE *Capture )( + IHostSecurityContext * This, + /* [out] */ IHostSecurityContext **ppClonedContext); + + END_INTERFACE + } IHostSecurityContextVtbl; + + interface IHostSecurityContext + { + CONST_VTBL struct IHostSecurityContextVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostSecurityContext_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostSecurityContext_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostSecurityContext_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostSecurityContext_Capture(This,ppClonedContext) \ + (This)->lpVtbl -> Capture(This,ppClonedContext) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostSecurityContext_Capture_Proxy( + IHostSecurityContext * This, + /* [out] */ IHostSecurityContext **ppClonedContext); + + +void __RPC_STUB IHostSecurityContext_Capture_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostSecurityContext_INTERFACE_DEFINED__ */ + + +#ifndef __IHostSecurityManager_INTERFACE_DEFINED__ +#define __IHostSecurityManager_INTERFACE_DEFINED__ + +/* interface IHostSecurityManager */ +/* [local][unique][helpstring][uuid][version][object] */ + + +EXTERN_C const IID IID_IHostSecurityManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("75ad2468-a349-4d02-a764-76a68aee0c4f") + IHostSecurityManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ImpersonateLoggedOnUser( + /* [in] */ HANDLE hToken) = 0; + + virtual HRESULT STDMETHODCALLTYPE RevertToSelf( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE OpenThreadToken( + /* [in] */ DWORD dwDesiredAccess, + /* [in] */ BOOL bOpenAsSelf, + /* [out] */ HANDLE *phThreadToken) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetThreadToken( + /* [in] */ HANDLE hToken) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSecurityContext( + /* [in] */ EContextType eContextType, + /* [out] */ IHostSecurityContext **ppSecurityContext) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSecurityContext( + /* [in] */ EContextType eContextType, + /* [in] */ IHostSecurityContext *pSecurityContext) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHostSecurityManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHostSecurityManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHostSecurityManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHostSecurityManager * This); + + HRESULT ( STDMETHODCALLTYPE *ImpersonateLoggedOnUser )( + IHostSecurityManager * This, + /* [in] */ HANDLE hToken); + + HRESULT ( STDMETHODCALLTYPE *RevertToSelf )( + IHostSecurityManager * This); + + HRESULT ( STDMETHODCALLTYPE *OpenThreadToken )( + IHostSecurityManager * This, + /* [in] */ DWORD dwDesiredAccess, + /* [in] */ BOOL bOpenAsSelf, + /* [out] */ HANDLE *phThreadToken); + + HRESULT ( STDMETHODCALLTYPE *SetThreadToken )( + IHostSecurityManager * This, + /* [in] */ HANDLE hToken); + + HRESULT ( STDMETHODCALLTYPE *GetSecurityContext )( + IHostSecurityManager * This, + /* [in] */ EContextType eContextType, + /* [out] */ IHostSecurityContext **ppSecurityContext); + + HRESULT ( STDMETHODCALLTYPE *SetSecurityContext )( + IHostSecurityManager * This, + /* [in] */ EContextType eContextType, + /* [in] */ IHostSecurityContext *pSecurityContext); + + END_INTERFACE + } IHostSecurityManagerVtbl; + + interface IHostSecurityManager + { + CONST_VTBL struct IHostSecurityManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHostSecurityManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHostSecurityManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHostSecurityManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHostSecurityManager_ImpersonateLoggedOnUser(This,hToken) \ + (This)->lpVtbl -> ImpersonateLoggedOnUser(This,hToken) + +#define IHostSecurityManager_RevertToSelf(This) \ + (This)->lpVtbl -> RevertToSelf(This) + +#define IHostSecurityManager_OpenThreadToken(This,dwDesiredAccess,bOpenAsSelf,phThreadToken) \ + (This)->lpVtbl -> OpenThreadToken(This,dwDesiredAccess,bOpenAsSelf,phThreadToken) + +#define IHostSecurityManager_SetThreadToken(This,hToken) \ + (This)->lpVtbl -> SetThreadToken(This,hToken) + +#define IHostSecurityManager_GetSecurityContext(This,eContextType,ppSecurityContext) \ + (This)->lpVtbl -> GetSecurityContext(This,eContextType,ppSecurityContext) + +#define IHostSecurityManager_SetSecurityContext(This,eContextType,pSecurityContext) \ + (This)->lpVtbl -> SetSecurityContext(This,eContextType,pSecurityContext) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHostSecurityManager_ImpersonateLoggedOnUser_Proxy( + IHostSecurityManager * This, + /* [in] */ HANDLE hToken); + + +void __RPC_STUB IHostSecurityManager_ImpersonateLoggedOnUser_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostSecurityManager_RevertToSelf_Proxy( + IHostSecurityManager * This); + + +void __RPC_STUB IHostSecurityManager_RevertToSelf_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostSecurityManager_OpenThreadToken_Proxy( + IHostSecurityManager * This, + /* [in] */ DWORD dwDesiredAccess, + /* [in] */ BOOL bOpenAsSelf, + /* [out] */ HANDLE *phThreadToken); + + +void __RPC_STUB IHostSecurityManager_OpenThreadToken_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostSecurityManager_SetThreadToken_Proxy( + IHostSecurityManager * This, + /* [in] */ HANDLE hToken); + + +void __RPC_STUB IHostSecurityManager_SetThreadToken_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostSecurityManager_GetSecurityContext_Proxy( + IHostSecurityManager * This, + /* [in] */ EContextType eContextType, + /* [out] */ IHostSecurityContext **ppSecurityContext); + + +void __RPC_STUB IHostSecurityManager_GetSecurityContext_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IHostSecurityManager_SetSecurityContext_Proxy( + IHostSecurityManager * This, + /* [in] */ EContextType eContextType, + /* [in] */ IHostSecurityContext *pSecurityContext); + + +void __RPC_STUB IHostSecurityManager_SetSecurityContext_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHostSecurityManager_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * ); +unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * ); +unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); +void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * ); + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/rewolf-wow64ext/src/CMemPtr.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/rewolf-wow64ext/src/CMemPtr.h new file mode 100644 index 0000000..fc7252f --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/rewolf-wow64ext/src/CMemPtr.h @@ -0,0 +1,49 @@ +/** + * + * WOW64Ext Library + * + * Copyright (c) 2014 ReWolf + * http://blog.rewolf.pl/ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + */ +#pragma once + +class CMemPtr +{ +private: + void** m_ptr; + bool watchActive; + +public: + CMemPtr(void** ptr) : m_ptr(ptr), watchActive(true) {} + + ~CMemPtr() + { + if (*m_ptr && watchActive) + { + free(*m_ptr); + *m_ptr = 0; + } + } + + void disableWatch() { watchActive = false; } +}; + +#define WATCH(ptr) \ + CMemPtr watch_##ptr((void**)&ptr) + +#define DISABLE_WATCH(ptr) \ + watch_##ptr.disableWatch() diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/rewolf-wow64ext/src/internal.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/rewolf-wow64ext/src/internal.h new file mode 100644 index 0000000..b439881 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/rewolf-wow64ext/src/internal.h @@ -0,0 +1,73 @@ +/** + * + * WOW64Ext Library + * + * Copyright (c) 2014 ReWolf + * http://blog.rewolf.pl/ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#define EMIT(a) __asm __emit (a) + +#define X64_Start_with_CS(_cs) \ + { \ + EMIT(0x6A) EMIT(_cs) /* push _cs */ \ + EMIT(0xE8) EMIT(0) EMIT(0) EMIT(0) EMIT(0) /* call $+5 */ \ + EMIT(0x83) EMIT(4) EMIT(0x24) EMIT(5) /* add dword [esp], 5 */ \ + EMIT(0xCB) /* retf */ \ + } + +#define X64_End_with_CS(_cs) \ + { \ + EMIT(0xE8) EMIT(0) EMIT(0) EMIT(0) EMIT(0) /* call $+5 */ \ + EMIT(0xC7) EMIT(0x44) EMIT(0x24) EMIT(4) EMIT(_cs) EMIT(0) EMIT(0) EMIT(0) /* mov dword [rsp + 4], _cs */ \ + EMIT(0x83) EMIT(4) EMIT(0x24) EMIT(0xD) /* add dword [rsp], 0xD */ \ + EMIT(0xCB) /* retf */ \ + } + +#define X64_Start() X64_Start_with_CS(0x33) +#define X64_End() X64_End_with_CS(0x23) + +#define _RAX 0 +#define _RCX 1 +#define _RDX 2 +#define _RBX 3 +#define _RSP 4 +#define _RBP 5 +#define _RSI 6 +#define _RDI 7 +#define _R8 8 +#define _R9 9 +#define _R10 10 +#define _R11 11 +#define _R12 12 +#define _R13 13 +#define _R14 14 +#define _R15 15 + +#define X64_Push(r) EMIT(0x48 | ((r) >> 3)) EMIT(0x50 | ((r) & 7)) +#define X64_Pop(r) EMIT(0x48 | ((r) >> 3)) EMIT(0x58 | ((r) & 7)) + +#define REX_W EMIT(0x48) __asm + +//to fool M$ inline asm compiler I'm using 2 DWORDs instead of DWORD64 +//use of DWORD64 will generate wrong 'pop word ptr[]' and it will break stack +union reg64 +{ + DWORD64 v; + DWORD dw[2]; +}; diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/rewolf-wow64ext/src/resource.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/rewolf-wow64ext/src/resource.h new file mode 100644 index 0000000..e27a81b --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/rewolf-wow64ext/src/resource.h @@ -0,0 +1,14 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by wow64ext.rc + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/rewolf-wow64ext/src/wow64ext.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/rewolf-wow64ext/src/wow64ext.h new file mode 100644 index 0000000..c0fd0b3 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/rewolf-wow64ext/src/wow64ext.h @@ -0,0 +1,377 @@ +/** + * + * WOW64Ext Library + * + * Copyright (c) 2014 ReWolf + * http://blog.rewolf.pl/ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + */ +#pragma once + +#include + +#ifndef STATUS_SUCCESS +# define STATUS_SUCCESS 0 +#endif + +#pragma warning(disable : 4201) +#pragma pack(push) +#pragma pack(1) +template +struct _LIST_ENTRY_T +{ + T Flink; + T Blink; +}; + +template +struct _UNICODE_STRING_T +{ + union + { + struct + { + WORD Length; + WORD MaximumLength; + }; + T dummy; + }; + T Buffer; +}; + +template +struct _NT_TIB_T +{ + T ExceptionList; + T StackBase; + T StackLimit; + T SubSystemTib; + T FiberData; + T ArbitraryUserPointer; + T Self; +}; + +template +struct _CLIENT_ID_T +{ + T UniqueProcess; + T UniqueThread; +}; + +template +struct _TEB_T_ +{ + _NT_TIB_T NtTib; + T EnvironmentPointer; + _CLIENT_ID_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 +struct _LDR_DATA_TABLE_ENTRY_T +{ + _LIST_ENTRY_T InLoadOrderLinks; + _LIST_ENTRY_T InMemoryOrderLinks; + _LIST_ENTRY_T InInitializationOrderLinks; + T DllBase; + T EntryPoint; + union + { + DWORD SizeOfImage; + T dummy01; + }; + _UNICODE_STRING_T FullDllName; + _UNICODE_STRING_T BaseDllName; + DWORD Flags; + WORD LoadCount; + WORD TlsIndex; + union + { + _LIST_ENTRY_T HashLinks; + struct + { + T SectionPointer; + T CheckSum; + }; + }; + union + { + T LoadedImports; + DWORD TimeDateStamp; + }; + T EntryPointActivationContext; + T PatchInformation; + _LIST_ENTRY_T ForwarderLinks; + _LIST_ENTRY_T ServiceTagLinks; + _LIST_ENTRY_T StaticLinks; + T ContextInformation; + T OriginalBase; + _LARGE_INTEGER LoadTime; +}; + +template +struct _PEB_LDR_DATA_T +{ + DWORD Length; + DWORD Initialized; + T SsHandle; + _LIST_ENTRY_T InLoadOrderModuleList; + _LIST_ENTRY_T InMemoryOrderModuleList; + _LIST_ENTRY_T InInitializationOrderModuleList; + T EntryInProgress; + DWORD ShutdownInProgress; + T ShutdownThreadId; + +}; + +template +struct _PEB_T +{ + union + { + struct + { + BYTE InheritedAddressSpace; + BYTE ReadImageFileExecOptions; + BYTE BeingDebugged; + BYTE BitField; + }; + T dummy01; + }; + 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 CSDVersion; + T ActivationContextData; + T ProcessAssemblyStorageMap; + T SystemDefaultActivationContextData; + T SystemAssemblyStorageMap; + T MinimumStackCommit; + T FlsCallback; + _LIST_ENTRY_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 LDR_DATA_TABLE_ENTRY32; +typedef _LDR_DATA_TABLE_ENTRY_T LDR_DATA_TABLE_ENTRY64; + +typedef _TEB_T_ TEB32; +typedef _TEB_T_ TEB64; + +typedef _PEB_LDR_DATA_T PEB_LDR_DATA32; +typedef _PEB_LDR_DATA_T PEB_LDR_DATA64; + +typedef _PEB_T PEB32; +typedef _PEB_T 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_2 +{ + 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; +}; +#pragma warning(default : 4201) + +// Below defines for .ContextFlags field are taken from WinNT.h +#ifndef CONTEXT_AMD64 +#define CONTEXT_AMD64 0x100000 +#endif + +#define CONTEXT64_CONTROL (CONTEXT_AMD64 | 0x1L) +#define CONTEXT64_INTEGER (CONTEXT_AMD64 | 0x2L) +#define CONTEXT64_SEGMENTS (CONTEXT_AMD64 | 0x4L) +#define CONTEXT64_FLOATING_POINT (CONTEXT_AMD64 | 0x8L) +#define CONTEXT64_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x10L) +#define CONTEXT64_FULL (CONTEXT64_CONTROL | CONTEXT64_INTEGER | CONTEXT64_FLOATING_POINT) +#define CONTEXT64_ALL (CONTEXT64_CONTROL | CONTEXT64_INTEGER | CONTEXT64_SEGMENTS | CONTEXT64_FLOATING_POINT | CONTEXT64_DEBUG_REGISTERS) +#define CONTEXT64_XSTATE (CONTEXT_AMD64 | 0x20L) + +#pragma pack(pop) + +#ifdef WOW64EXT_EXPORTS +# define SPEC dllexport +#else +# define SPEC dllimport +#endif + +extern "C" +{ + DWORD64 __cdecl X64Call(DWORD64 func, int argC, ...); + DWORD64 __cdecl GetModuleHandle64(const wchar_t* lpModuleName); + DWORD64 __cdecl getNTDLL64(); + DWORD64 __cdecl GetProcAddress64(DWORD64 hModule, const char* funcName); + SIZE_T __cdecl VirtualQueryEx64(HANDLE hProcess, DWORD64 lpAddress, MEMORY_BASIC_INFORMATION64* lpBuffer, SIZE_T dwLength); + DWORD64 __cdecl VirtualAllocEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); + BOOL __cdecl VirtualFreeEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD dwFreeType); + BOOL __cdecl VirtualProtectEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD flNewProtect, DWORD* lpflOldProtect); + BOOL __cdecl ReadProcessMemory64(HANDLE hProcess, DWORD64 lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead); + BOOL __cdecl WriteProcessMemory64(HANDLE hProcess, DWORD64 lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten); + BOOL __cdecl GetThreadContext64(HANDLE hThread, _CONTEXT64_2* lpContext); + BOOL __cdecl SetThreadContext64(HANDLE hThread, _CONTEXT64_2* lpContext); + VOID __cdecl SetLastErrorFromX64Call(DWORD64 status); +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/winapifamily.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/winapifamily.h new file mode 100644 index 0000000..1fac1d4 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/winapifamily.h @@ -0,0 +1,240 @@ +/* + +Copyright (c) Microsoft Corporation. All rights reserved. + +Module Name: + + winapifamily.h + +Abstract: + + Master include file for API family partitioning. + +*/ + +#ifndef _INC_WINAPIFAMILY +#define _INC_WINAPIFAMILY + +#if defined(_MSC_VER) && !defined(MOFCOMP_PASS) +#if _MSC_VER >= 1200 +#pragma warning(push) +#pragma warning(disable:4001) /* nonstandard extension 'single line comment' was used */ +#endif +#pragma once +#endif // defined(_MSC_VER) && !defined(MOFCOMP_PASS) + +#include + +/* + * When compiling C and C++ code using SDK header files, the development + * environment can specify a target platform by #define-ing the + * pre-processor symbol WINAPI_FAMILY to one of the following values. + * Each FAMILY value denotes an application family for which a different + * subset of the total set of header-file-defined APIs are available. + * Setting the WINAPI_FAMILY value will effectively hide from the + * editing and compilation environments the existence of APIs that + * are not applicable to the family of applications targeting a + * specific platform. + */ + +/* In Windows 10, WINAPI_PARTITIONs will be used to add additional + * device specific APIs to a particular WINAPI_FAMILY. + * For example, when writing Windows Universal apps, specifying + * WINAPI_FAMILY_APP will hide phone APIs from compilation. + * However, specifying WINAPI_PARTITION_PHONE_APP=1 additionally, will + * unhide any API hidden behind the partition, to the compiler. + + * The following partitions are currently defined: + * WINAPI_PARTITION_DESKTOP // usable for Desktop Win32 apps (but not store apps) + * WINAPI_PARTITION_APP // usable for Windows Universal store apps + * WINAPI_PARTITION_PC_APP // specific to Desktop-only store apps + * WINAPI_PARTITION_PHONE_APP // specific to Phone-only store apps + * WINAPI_PARTITION_SYSTEM // specific to System applications + + * The following partitions are indirect partitions and defined in + * winpackagefamily.h. These partitions are related to package based + * partitions. For example, specifying WINAPI_PARTITION_SERVER=1 will light up + * any API hidden behind the package based partitions that are bound to + * WINAPI_PARTITION_SERVER, to the compiler. + * WINAPI_PARTITION_SERVER // specific to Server applications +*/ + +/* + * The WINAPI_FAMILY values of 0 and 1 are reserved to ensure that + * an error will occur if WINAPI_FAMILY is set to any + * WINAPI_PARTITION value (which must be 0 or 1, see below). + */ +#define WINAPI_FAMILY_PC_APP 2 /* Windows Store Applications */ +#define WINAPI_FAMILY_PHONE_APP 3 /* Windows Phone Applications */ +#define WINAPI_FAMILY_SYSTEM 4 /* Windows Drivers and Tools */ +#define WINAPI_FAMILY_SERVER 5 /* Windows Server Applications */ +#define WINAPI_FAMILY_DESKTOP_APP 100 /* Windows Desktop Applications */ +/* The value of WINAPI_FAMILY_DESKTOP_APP may change in future SDKs. */ +/* Additional WINAPI_FAMILY values may be defined in future SDKs. */ + +/* + * For compatibility with Windows 8 header files, the following + * synonym for WINAPI_FAMILY_PC_APP is temporarily #define'd. + * Use of this symbol should be considered deprecated. + */ +#define WINAPI_FAMILY_APP WINAPI_FAMILY_PC_APP + +/* + * If no WINAPI_FAMILY value is specified, then all APIs available to + * Windows desktop applications are exposed. + */ +#ifndef WINAPI_FAMILY +#define WINAPI_FAMILY WINAPI_FAMILY_DESKTOP_APP +#endif + +/* + * API PARTITONs are part of an indirection mechanism for mapping between + * individual APIs and the FAMILYs to which they apply. + * Each PARTITION is a category or subset of named APIs. PARTITIONs + * are permitted to have overlapping membership -- some single API + * might be part of more than one PARTITION. PARTITIONS are each #define-ed + * to be either 1 or 0 or depending on the platform at which the app is targeted. + */ + +/* + * The mapping between families and partitions is summarized here. + * An X indicates that the given partition is active for the given + * platform/family. + * + * +-------------------+---+ + * | *Partition* | | + * +---+---+---+---+---+---+ + * | | | | | | | + * | | | | | | | + * | | | | P | | | + * | | | | H | | | + * | D | | | O | | | + * | E | | P | N | S | S | + * | S | | C | E | Y | E | + * | K | | _ | _ | S | R | + * | T | A | A | A | T | V | + * +-------------------------+----+ O | P | P | P | E | E | + * | *Platform/Family* \| P | P | P | P | M | R | + * +------------------------------+---+---+---+---+---+---+ + * | WINAPI_FAMILY_DESKTOP_APP | X | X | X | | | | + * +------------------------------+---+---+---+---+---+---+ + * | WINAPI_FAMILY_PC_APP | | X | X | | | | + * +------------------------------+---+---+---+---+---+---+ + * | WINAPI_FAMILY_PHONE_APP | | X | | X | | | + * +----------------------------- +---+---+---+---+---+---+ + * | WINAPI_FAMILY_SYSTEM | | | | | X | | + * +----------------------------- +---+---+---+---+---+---+ + * | WINAPI_FAMILY_SERVER | | | | | X | X | + * +------------------------------+---+---+---+---+---+---+ + * + * The table above is encoded in the following expressions, + * each of which evaluates to 1 or 0. + * + * Whenever a new family is added, all of these expressions + * need to be reconsidered. + */ +#if WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP && \ + WINAPI_FAMILY != WINAPI_FAMILY_PC_APP && \ + WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP && \ + WINAPI_FAMILY != WINAPI_FAMILY_SYSTEM && \ + WINAPI_FAMILY != WINAPI_FAMILY_SERVER +#error Unknown WINAPI_FAMILY value. Was it defined in terms of a WINAPI_PARTITION_* value? +#endif + +#ifndef WINAPI_PARTITION_DESKTOP +#define WINAPI_PARTITION_DESKTOP (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) +#endif + +#ifndef WINAPI_PARTITION_APP +#define WINAPI_PARTITION_APP \ + (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP || \ + WINAPI_FAMILY == WINAPI_FAMILY_PC_APP || \ + WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) +#endif + +#ifndef WINAPI_PARTITION_PC_APP +#define WINAPI_PARTITION_PC_APP \ + (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP || \ + WINAPI_FAMILY == WINAPI_FAMILY_PC_APP) +#endif + +#ifndef WINAPI_PARTITION_PHONE_APP +#define WINAPI_PARTITION_PHONE_APP (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) +#endif + +/* + * SYSTEM is the only partition defined here. + * All other System based editions are defined as packages + * on top of the System partition. + * See winpackagefamily.h for packages level partitions + */ +#ifndef WINAPI_PARTITION_SYSTEM +#define WINAPI_PARTITION_SYSTEM \ + (WINAPI_FAMILY == WINAPI_FAMILY_SYSTEM || \ + WINAPI_FAMILY == WINAPI_FAMILY_SERVER) +#endif + +/* + * For compatibility with Windows Phone 8 header files, the following + * synonym for WINAPI_PARTITION_PHONE_APP is temporarily #define'd. + * Use of this symbol should be regarded as deprecated. + */ +#define WINAPI_PARTITION_PHONE WINAPI_PARTITION_PHONE_APP + +/* + * Header files use the WINAPI_FAMILY_PARTITION macro to assign one or + * more declarations to some group of partitions. The macro chooses + * whether the preprocessor will emit or omit a sequence of declarations + * bracketed by an #if/#endif pair. All header file references to the + * WINAPI_PARTITION_* values should be in the form of occurrences of + * WINAPI_FAMILY_PARTITION(...). + * + * For example, the following usage of WINAPI_FAMILY_PARTITION identifies + * a sequence of declarations that are part of both the Windows Desktop + * Partition and the Windows-Phone-Specific Store Partition: + * + * #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PHONE_APP) + * ... + * #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PHONE_APP) + * + * The comment on the closing #endif allow tools as well as people to find the + * matching #ifdef properly. + * + * Usages of WINAPI_FAMILY_PARTITION may be combined, when the partitition definitions are + * related. In particular one might use declarations like + * + * #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + * + * or + * + * #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP) + * + * Direct references to WINAPI_PARTITION_ values (eg #if !WINAPI_FAMILY_PARTITION_...) + * should not be used. + */ +#define WINAPI_FAMILY_PARTITION(Partitions) (Partitions) + +/* + * Macro used to #define or typedef a symbol used for selective deprecation + * of individual methods of a COM interfaces that are otherwise available + * for a given set of partitions. + */ +#define _WINAPI_DEPRECATED_DECLARATION __declspec(deprecated("This API cannot be used in the context of the caller's application type.")) + +/* + * For compatibility with Windows 8 header files, the following + * symbol is temporarily conditionally #define'd. Additional symbols + * like this should be not defined in winapifamily.h, but rather should be + * introduced locally to the header files of the component that needs them. + */ +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +# define APP_DEPRECATED_HRESULT HRESULT _WINAPI_DEPRECATED_DECLARATION +#endif // WINAPIFAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + +#if defined(_MSC_VER) && !defined(MOFCOMP_PASS) +#if _MSC_VER >= 1200 +#pragma warning(pop) +#endif +#endif + +#endif /* !_INC_WINAPIFAMILY */ diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/winpackagefamily.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/winpackagefamily.h new file mode 100644 index 0000000..ee691f9 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/3rd_party/winpackagefamily.h @@ -0,0 +1,91 @@ +/* + +Copyright (c) Microsoft Corporation. All rights reserved. + +Module Name: + + winpackagefamily.h + +Abstract: + + API family partitioning based on packages. + +*/ + +#ifndef _INC_WINPACKAGEFAMILY +#define _INC_WINPACKAGEFAMILY + +#if defined(_MSC_VER) && !defined(MOFCOMP_PASS) +#if _MSC_VER >= 1200 +#pragma warning(push) +#pragma warning(disable:4001) /* nonstandard extension 'single line comment' was used */ +#endif +#pragma once +#endif // defined(_MSC_VER) && !defined(MOFCOMP_PASS) + +#ifndef WINAPI_PARTITION_SERVER +#define WINAPI_PARTITION_SERVER (WINAPI_FAMILY == WINAPI_FAMILY_SERVER) +#endif + +/* + * PARTITIONS based on packages are each #undef'ed below, and then will be #define-ed + * to be either 1 or 0 or depending on the active WINAPI_FAMILY. + */ +#undef WINAPI_PARTITION_PKG_WINTRUST +#undef WINAPI_PARTITION_PKG_WEBSERVICES +#undef WINAPI_PARTITION_PKG_EVENTLOGSERVICE +#undef WINAPI_PARTITION_PKG_VHD +#undef WINAPI_PARTITION_PKG_PERFCOUNTER +#undef WINAPI_PARTITION_PKG_SECURESTARTUP +#undef WINAPI_PARTITION_PKG_REMOTEFS +#undef WINAPI_PARTITION_PKG_BOOTABLESKU +#undef WINAPI_PARTITION_PKG_CMDTOOLS +#undef WINAPI_PARTITION_PKG_DISM +#undef WINAPI_PARTITION_PKG_CORESETUP +#undef WINAPI_PARTITION_PKG_APPRUNTIME +#undef WINAPI_PARTITION_PKG_ESENT +#undef WINAPI_PARTITION_PKG_WINMGMT +#undef WINAPI_PARTITION_PKG_WNV +#undef WINAPI_PARTITION_PKG_CLUSTER +#undef WINAPI_PARTITION_PKG_VSS +#undef WINAPI_PARTITION_PKG_TRAFFIC +#undef WINAPI_PARTITION_PKG_ISCSI +#undef WINAPI_PARTITION_PKG_STORAGE +#undef WINAPI_PARTITION_PKG_MPSSVC +#undef WINAPI_PARTITION_PKG_APPXDEPLOYMENT +#undef WINAPI_PARTITION_PKG_WER + +/* + * PARTITIONS for feature packages. Each package might be active for one or more editions + */ +#define WINAPI_PARTITION_PKG_WINTRUST (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_WEBSERVICES (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_EVENTLOGSERVICE (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_VHD (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_PERFCOUNTER (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_SECURESTARTUP (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_REMOTEFS (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_BOOTABLESKU (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_CMDTOOLS (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_DISM (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_CORESETUP (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_APPRUNTIME (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_ESENT (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_WINMGMT (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_WNV (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_CLUSTER (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_VSS (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_TRAFFIC (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_ISCSI (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_STORAGE (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_MPSSVC (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_APPXDEPLOYMENT (WINAPI_PARTITION_SERVER == 1) +#define WINAPI_PARTITION_PKG_WER (WINAPI_PARTITION_SERVER == 1) + +#if defined(_MSC_VER) && !defined(MOFCOMP_PASS) +#if _MSC_VER >= 1200 +#pragma warning(pop) +#endif +#endif + +#endif /* !_INC_WINPACKAGEFAMILY */ diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmFactory.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmFactory.h new file mode 100644 index 0000000..07dc6e7 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmFactory.h @@ -0,0 +1,89 @@ +#pragma once +#include "../Config.h" +#include "../Include/Types.h" + +#include "AsmHelper64.h" +#include "AsmHelper32.h" + +namespace blackbone +{ + +using AsmHelperPtr = std::unique_ptr; + +/// +/// Get suitable asm generator +/// +class AsmFactory +{ +public: + enum eAsmArch + { + asm32, // x86 + asm64 // x86_64 + }; + + /// + /// Get suitable asm generator + /// + /// Desired CPU architecture + /// AsmHelperBase interface + static AsmHelperPtr GetAssembler( eAsmArch arch ) + { + switch (arch) + { + case asm32: + return std::make_unique(); + case asm64: + return std::make_unique(); + default: + return nullptr; + } + } + + /// + /// Get suitable asm generator + /// + /// Desired PE module architecture + /// AsmHelperBase interface + static AsmHelperPtr GetAssembler( eModType mt ) + { + if (mt == mt_default) + mt = sizeof( intptr_t ) > sizeof( int32_t ) ? mt_mod64 : mt_mod32; + + switch (mt) + { + case mt_mod32: + return GetAssembler( asm32 ); + case mt_mod64: + return GetAssembler( asm64 ); + default: + return nullptr; + } + } + + /// + /// Get suitable asm generator + /// + /// Target process CPU architecture + /// AsmHelperBase interface + static AsmHelperPtr GetAssembler( bool wow64process ) + { + return GetAssembler( wow64process ? asm32 : asm64 ); + } + + + /// + /// Get default asm generator + /// + /// + static AsmHelperPtr GetAssembler() + { +#ifdef USE64 + return std::make_unique(); +#else + return std::make_unique(); +#endif + } +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmHelper32.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmHelper32.h new file mode 100644 index 0000000..7fcb7b7 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmHelper32.h @@ -0,0 +1,88 @@ +#pragma once + +#include "IAsmHelper.h" + +namespace blackbone +{ + +/// +/// 32 bit assembler helper +/// +class AsmHelper32 : public IAsmHelper +{ +public: + BLACKBONE_API AsmHelper32( ); + BLACKBONE_API ~AsmHelper32( void ); + + /// + /// Generate function prologue code + /// + /// Unused + virtual void GenPrologue( bool switchMode = false ); + + /// + /// Generate function epilogue code + /// + /// Unused + /// Stack change value + virtual void GenEpilogue( bool switchMode = false, int retSize = -1 ); + + /// + /// Generate function call + /// + /// Function pointer + /// Function arguments + /// Calling convention + virtual void GenCall( const AsmFunctionPtr& pFN, const std::vector& args, eCalligConvention cc = cc_stdcall ); + + /// + /// Save eax value and terminate current thread + /// + /// NtTerminateThread address + /// Memory where eax value will be saved + virtual void ExitThreadWithStatus( uint64_t pExitThread, uint64_t resultPtr ); + + /// + /// Save return value and signal thread return event + /// + /// NtSetEvent address + /// Result value memory location + /// Event memory location + /// Error code memory location + /// Return type + virtual void SaveRetValAndSignalEvent( + uint64_t pSetEvent, + uint64_t ResultPtr, + uint64_t EventPtr, + uint64_t errPtr, + eReturnType rtype = rt_int32 + ); + + /// + /// Does nothing under x86 + /// + /// Unused + virtual void EnableX64CallStack( bool ) { } + +private: + AsmHelper32( const AsmHelper32& ) = delete; + AsmHelper32& operator = (const AsmHelper32&) = delete; + + /// + /// Push function argument + /// + /// Argument. + /// Push type(register or stack) + void PushArg( const AsmVariant& arg, eArgType regidx = at_stack ); + + /// + /// Push argument into function + /// + /// Argument + /// Argument location + template + void PushArgp( _Type arg, eArgType index ); +}; + +} + diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmHelper64.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmHelper64.h new file mode 100644 index 0000000..cd8b735 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmHelper64.h @@ -0,0 +1,92 @@ +#pragma once + +#include "IAsmHelper.h" +#include "../Include/Macro.h" + +namespace blackbone +{ + +class AsmHelper64 : public IAsmHelper +{ +public: + BLACKBONE_API AsmHelper64(); + BLACKBONE_API ~AsmHelper64( void ); + + /// + /// Generate function prologue code + /// + /// true if execution must be swithed to x64 mode + virtual void GenPrologue( bool switchMode = false ); + + /// + /// Generate function epilogue code + /// + /// true if execution must be swithed to x86 mode + /// Stack change value + virtual void GenEpilogue( bool switchMode = false, int retSize = -1 ); + + /// + /// Generate function call + /// + /// Function pointer + /// Function arguments + /// Ignored + virtual void GenCall( const AsmFunctionPtr& pFN, const std::vector& args, eCalligConvention cc = cc_stdcall ); + + /// + /// Save rax value and terminate current thread + /// + /// NtTerminateThread address + /// Memory where rax value will be saved + virtual void ExitThreadWithStatus( uint64_t pExitThread, uint64_t resultPtr ); + + /// + /// Save return value and signal thread return event + /// + /// NtSetEvent address + /// Result value memory location + /// Event memory location + /// Error code memory location + /// Return type + virtual void SaveRetValAndSignalEvent( + uint64_t pSetEvent, + uint64_t ResultPtr, + uint64_t EventPtr, + uint64_t lastStatusPtr, + eReturnType rtype = rt_int32 + ); + + /// + /// Set stack reservation policy on call generation + /// + /// + /// If true - stack space will be reserved during each call generation + /// If false - no automatic stack reservation, user must allocate stack by hand + /// + virtual void EnableX64CallStack( bool state ); + +private: + AsmHelper64( const AsmHelper64& ) = delete; + AsmHelper64& operator = (const AsmHelper64&) = delete; + + /// + /// Push function argument + /// + /// Argument. + /// Push type(register or stack) + void PushArg( const AsmVariant& arg, int32_t index ); + + /// + /// Push function argument + /// + /// Argument + /// Argument index + /// true if argument is a floating point value + template + void PushArgp( const _Type& arg, int32_t index, bool fpu = false ); + +private: + bool _stackEnabled; // if true - GenCall will allocate shadow stack space +}; + +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmStack.hpp b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmStack.hpp new file mode 100644 index 0000000..d0e2dd1 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmStack.hpp @@ -0,0 +1,89 @@ +#pragma once + +#pragma warning(push) +#pragma warning(disable : 4100) +#include "../../3rd_party/AsmJit/AsmJit.h" +#pragma warning(pop) + +#include "../Include/Macro.h" + +#include + +namespace blackbone +{ + +class AsmStackAllocator +{ +public: + BLACKBONE_API AsmStackAllocator( asmjit::X86Assembler* pAsm, int32_t baseval = 0x28 ) + : _pAsm( pAsm ) + , disp_ofst( pAsm->getArch() == asmjit::kArch::kArchX64 ? baseval : sizeof( uint64_t ) ) + { + } + + /// + /// Allocate stack variable + /// + /// Variable size + /// Variable memory object + BLACKBONE_API asmjit::Mem AllocVar( int32_t size ) + { + bool x64 = _pAsm->getArch() == asmjit::kArch::kArchX64; + + // Align on word length + size = static_cast(Align( size, x64 ? sizeof( uint64_t ) : sizeof( uint32_t ) )); + + asmjit::Mem val; + if (x64) + val = asmjit::Mem( _pAsm->zsp, disp_ofst, size ); + else + val = asmjit::Mem( _pAsm->zbp, -disp_ofst - size, size ); + + disp_ofst += size; + return val; + } + + /// + /// Allocate array of stack variables + /// + /// Output array + /// Array elements count. + /// Element size. + /// true on success + BLACKBONE_API bool AllocArray( asmjit::Mem arr[], int count, int32_t size ) + { + for (int i = 0; i < count; i++) + { + if (_pAsm->getArch() == asmjit::kArch::kArchX64) + arr[i] = asmjit::Mem( _pAsm->zsp, disp_ofst, size ); + else + arr[i] = asmjit::Mem( _pAsm->zbp, -disp_ofst - size, size ); + + disp_ofst += size; + } + + return true; + } + + /// + /// Get total size of all stack variables + /// + /// + BLACKBONE_API inline intptr_t getTotalSize() const { return disp_ofst; }; + +private: + asmjit::X86Assembler* _pAsm; // Underlying assembler + int32_t disp_ofst; // Next variable stack offset +}; + +// +// Helpers +// +#define ALLOC_STACK_VAR(worker, name, type) asmjit::Mem name( worker.AllocVar( sizeof(type) ) ); +#define ALLOC_STACK_VAR_S(worker, name, size) asmjit::Mem name( worker.AllocVar( size ) ); + +#define ALLOC_STACK_ARRAY(worker, name, type, count) \ + asmjit::Mem name[count]; \ + worker.AllocArray( name, count, sizeof(type) ); + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmVariant.hpp b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmVariant.hpp new file mode 100644 index 0000000..118edb5 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/AsmVariant.hpp @@ -0,0 +1,227 @@ +#pragma once + + +#include "../Config.h" +#pragma warning(disable : 4100) +#include "../../3rd_party/AsmJit/AsmJit.h" +#pragma warning(default : 4100) + +#include + + +namespace blackbone +{ +/// +/// General purpose assembly variable +/// +struct AsmVariant +{ + template + using cleanup_t = std::remove_cv_t>; + + template + static constexpr bool is_string_ptr = (std::is_pointer_v && std::is_same_v, S>); + + template + static constexpr bool is_number = (std::is_integral_v || std::is_enum_v); + + template + static constexpr bool is_void_ptr = (std::is_pointer_v && std::is_void_v>); + + enum eType + { + noarg, // void + reg, // register + imm, // immediate value (e.g. address) + imm_double, // double or long double + imm_float, // float + dataPtr, // pointer to local data (e.g. string or pointer to structure) + dataStruct, // structure passed by value + structRet, // pointer to space into which return value is copied (used when returning structures by value) + mem, // stack variable + mem_ptr // pointer to stack variable + }; + + template + AsmVariant( T&& arg ) + { + using RAW_T = std::decay_t; + constexpr size_t argSize = sizeof( RAW_T ); + + // bool, short, int, unsigned long long, etc. + if constexpr (is_number) + { + set( imm, argSize, static_cast(arg) ); + } + // Array of elements + else if constexpr(std::is_array_v>) + { + set( dataPtr, sizeof( arg ), reinterpret_cast(arg) ); + } + // char*, const char*, etc. + else if constexpr(is_string_ptr) + { + set( dataPtr, strlen( arg ) + 1, reinterpret_cast(arg) ); + } + // wchar_t*, const wchar_t*, etc. + else if constexpr(is_string_ptr) + { + set( dataPtr, (wcslen( arg ) + 1) * sizeof( wchar_t ), reinterpret_cast(arg) ); + } + // void*, const void*, etc. + else if constexpr(is_void_ptr) + { + set( imm, argSize, reinterpret_cast(arg) ); + } + // dirty hack to threat HWND as a simple pointer + else if constexpr(std::is_same_v) + { + set( imm, argSize, reinterpret_cast(arg) ); + } + // Function pointer + else if constexpr(std::is_function_v>) + { + set( imm, argSize, reinterpret_cast(arg) ); + } + // Arbitrary pointer + else if constexpr(std::is_pointer_v) + { + set( dataPtr, sizeof( cleanup_t ), reinterpret_cast(arg) ); + } + // Arbitrary variable passed by value + // Can fit into register + else if constexpr (argSize <= sizeof( uintptr_t )) + { + type = imm; + size = argSize; + memcpy( &imm_val64, &arg, argSize ); + } + else + { + buf.resize( argSize ); + set( dataStruct, argSize, reinterpret_cast(buf.data()) ); + memcpy( buf.data(), &arg, argSize ); + } + } + + // Custom size pointer + template + explicit AsmVariant( T* ptr, size_t size_ ) + : type( dataPtr ) + , size( size_ ) + , imm_val64( reinterpret_cast(ptr) ) { } + + BLACKBONE_API AsmVariant( float _imm_fpu ) + : type( imm_float ) + , size( sizeof( float ) ) + , imm_float_val( _imm_fpu ) { } + + BLACKBONE_API AsmVariant( double _imm_fpu ) + : type( imm_double ) + , size( sizeof( double ) ) + , imm_double_val( _imm_fpu ) { } + + BLACKBONE_API AsmVariant( asmjit::GpReg _reg ) + : type( reg ) + , size( sizeof( uintptr_t ) ) + , reg_val( _reg ) { } + + // Stack variable + BLACKBONE_API AsmVariant( asmjit::Mem _mem ) + : type( mem ) + , size( sizeof( uintptr_t ) ) + , mem_val( _mem ) { } + + // Pointer to stack address + BLACKBONE_API AsmVariant( asmjit::Mem* _mem ) + : type( mem_ptr ) + , size( sizeof( uintptr_t ) ) + , mem_val( *_mem ) { } + + BLACKBONE_API AsmVariant( const asmjit::Mem* _mem ) + : AsmVariant( const_cast(_mem) ) { } + + BLACKBONE_API AsmVariant( const AsmVariant& ) = default; + BLACKBONE_API AsmVariant( AsmVariant&& ) = default; + BLACKBONE_API AsmVariant& operator =( const AsmVariant& ) = default; + + // + // Get floating point value as raw data + // + BLACKBONE_API inline uint32_t getImm_float() const { return *(reinterpret_cast(&imm_float_val)); } + BLACKBONE_API inline uint64_t getImm_double() const { return *(reinterpret_cast(&imm_double_val)); } + + /// + /// Check if argument can be passed in x86 register + /// + /// true if can + BLACKBONE_API inline bool reg86Compatible() const + { + if (type == dataStruct || type == imm_float || type == imm_double || type == structRet) + return false; + /*if (type == imm && size > sizeof( uint32_t )) + return false;*/ + + return true; + } + + inline void set( eType type_, size_t size_, uint64_t val ) + { + type = type_; + size = size_; + imm_val64 = val; + } + + eType type = noarg; // Variable type + size_t size = 0; // Variable size + asmjit::GpReg reg_val; // General purpose register + asmjit::Mem mem_val; // Memory pointer + + // Immediate values + union + { + uint64_t imm_val64 = 0; + uintptr_t imm_val; + uint32_t imm_val32; + double imm_double_val; + float imm_float_val; + }; + + uint64_t new_imm_val = 0; // Replaced immediate value for dataPtr type + std::vector buf; // Value buffer +}; + +/// +/// Remote function pointer +/// +struct AsmFunctionPtr: public AsmVariant +{ + AsmFunctionPtr( int ptr ) + : AsmVariant( ptr ) { } + + AsmFunctionPtr( unsigned int ptr ) + : AsmVariant( ptr ) { } + + AsmFunctionPtr( long ptr ) + : AsmVariant( ptr ) { } + + AsmFunctionPtr( unsigned long ptr ) + : AsmVariant( ptr ) { } + + AsmFunctionPtr( long long ptr ) + : AsmVariant( ptr ) { } + + AsmFunctionPtr( unsigned long long ptr ) + : AsmVariant( ptr ) { } + + AsmFunctionPtr( void* ptr ) + : AsmVariant( reinterpret_cast(ptr) ) { } + + AsmFunctionPtr( const void* ptr ) + : AsmVariant( reinterpret_cast(ptr) ) { } + + AsmFunctionPtr( asmjit::GpReg reg_ ) + : AsmVariant( reg_ ) { } +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/IAsmHelper.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/IAsmHelper.h new file mode 100644 index 0000000..1edf40d --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/IAsmHelper.h @@ -0,0 +1,101 @@ +#pragma once + +#include "AsmVariant.hpp" +#include "AsmStack.hpp" +#include "../Include/Macro.h" + +#include +#include + +namespace blackbone +{ + // + // Function calling convention + // + enum eCalligConvention + { + cc_cdecl, // cdecl + cc_stdcall, // stdcall + cc_thiscall, // thiscall + cc_fastcall // fastcall + }; + + // + // Function return type + // Do not change numeric values! + // + enum eReturnType + { + rt_int32 = 4, // 32bit value + rt_int64 = 8, // 64bit value + rt_float = 1, // float value + rt_double = 2, // double value + rt_struct = 3, // structure returned by value + }; + + // Argument pass method + enum eArgType + { + at_ecx = 0, // In ecx + at_edx = 1, // In edx + at_stack = 2, // On stack + }; + + + /// + /// Assembly generation helper + /// + class IAsmHelper + { + public: + BLACKBONE_API IAsmHelper( uint32_t arch = asmjit::kArchHost ) + : _assembler( &_runtime, arch ) { } + + virtual ~IAsmHelper() { } + + virtual void GenPrologue( bool switchMode = false ) = 0; + virtual void GenEpilogue( bool switchMode = false, int retSize = -1) = 0; + virtual void GenCall( const AsmFunctionPtr&, const std::vector& args, eCalligConvention cc = cc_stdcall ) = 0; + virtual void ExitThreadWithStatus( uint64_t pExitThread, uint64_t resultPtr ) = 0; + virtual void SaveRetValAndSignalEvent( uint64_t pSetEvent, uint64_t ResultPtr, uint64_t EventPtr, uint64_t errPtr, eReturnType rtype = rt_int32 ) = 0; + virtual void EnableX64CallStack( bool state ) = 0; + + /// + /// Switch processor into WOW64 emulation mode + /// + BLACKBONE_API void SwitchTo86() + { + asmjit::Label l = _assembler.newLabel(); + + _assembler.call( l ); _assembler.bind( l ); + _assembler.mov( asmjit::host::dword_ptr( asmjit::host::esp, 4 ), 0x23 ); + _assembler.add( asmjit::host::dword_ptr( asmjit::host::esp ), 0xD ); + _assembler.db( 0xCB ); // retf + } + + /// + /// Switch processor into x64 mode (long mode) + /// + BLACKBONE_API void SwitchTo64() + { + asmjit::Label l = _assembler.newLabel(); + + _assembler.push( 0x33 ); + _assembler.call( l ); _assembler.bind( l ); + //_assembler.add( asmjit::host::dword_ptr( asmjit::host::esp ), 5 ); + _assembler.dd( '\x83\x04\x24\x05' ); + _assembler.db( 0xCB ); // retf + } + + BLACKBONE_API inline asmjit::X86Assembler* assembler() { return &_assembler; } + BLACKBONE_API inline asmjit::X86Assembler* operator ->() { return &_assembler; } + + private: + IAsmHelper( const IAsmHelper& ) = delete; + IAsmHelper& operator =(const IAsmHelper&) = delete; + + protected: + asmjit::JitRuntime _runtime; + asmjit::X86Assembler _assembler; + }; +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/LDasm.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/LDasm.h new file mode 100644 index 0000000..72ad4ce --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Asm/LDasm.h @@ -0,0 +1,50 @@ +#ifndef _LDASM_ +#define _LDASM_ + +#include "../Config.h" +#include +#include + +#ifdef USE64 + #define is_x64 1 +#else + #define is_x64 0 +#endif//USE64 + +#ifdef __cplusplus +extern "C" +{ +#endif + +#define F_INVALID 0x01 +#define F_PREFIX 0x02 +#define F_REX 0x04 +#define F_MODRM 0x08 +#define F_SIB 0x10 +#define F_DISP 0x20 +#define F_IMM 0x40 +#define F_RELATIVE 0x80 + +typedef struct _ldasm_data +{ + uint8_t flags; + uint8_t rex; + uint8_t modrm; + uint8_t sib; + uint8_t opcd_offset; + uint8_t opcd_size; + uint8_t disp_offset; + uint8_t disp_size; + uint8_t imm_offset; + uint8_t imm_size; +} ldasm_data; + +BLACKBONE_API unsigned int __fastcall ldasm( void *code, ldasm_data *ld, uint32_t is64 ); +BLACKBONE_API unsigned long __fastcall SizeOfProc( void *Proc ); +BLACKBONE_API void* __fastcall ResolveJmp( void *Proc ); + +#ifdef __cplusplus +} +#endif + +#endif//_LDASM_ \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Config.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Config.h new file mode 100644 index 0000000..079ca92 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Config.h @@ -0,0 +1,38 @@ +#pragma once + +// Lib/Dll switch +#if !defined(BLACKBONE_EXPORTS) && !defined(BLACKBONE_IMPORTS) && !defined(BLACKBONE_STATIC) +#define BLACKBONE_STATIC +#endif + +#if defined(_MSC_VER) + + #ifndef COMPILER_MSVC + #define COMPILER_MSVC 1 + #endif + + #if defined(BLACKBONE_IMPORTS) + #define BLACKBONE_API __declspec(dllimport) + #elif defined(BLACKBONE_EXPORTS) + #define BLACKBONE_API __declspec(dllexport) + #else + #define BLACKBONE_API + #endif + +#elif defined(__GNUC__) + #define COMPILER_GCC + #define BLACKBONE_API +#else + #error "Unknown or unsupported compiler" +#endif + +// No IA64 support +#if defined (_M_AMD64) || defined (__x86_64__) + #define USE64 +#elif defined (_M_IX86) || defined (__i386__) + #define USE32 +#else + #error "Unknown or unsupported platform" +#endif + + diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/DriverControl/DriverControl.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/DriverControl/DriverControl.h new file mode 100644 index 0000000..fbd988f --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/DriverControl/DriverControl.h @@ -0,0 +1,322 @@ +#pragma once + +#include "../Include/Winheaders.h" +#include "../Include/Types.h" +#include "../Include/Macro.h" +#include "../Include/HandleGuard.h" +#include "../../BlackBoneDrv/BlackBoneDef.h" + +#include +#include +#include + +ENUM_OPS( KMmapFlags ); + +namespace blackbone +{ +// [Original ptr, size] <--> [Mapped ptr] +using mapMemoryMap = std::map, ptr_t>; + +struct MapMemoryResult +{ + ptr_t hostSharedPage; // Shared page address in current process + ptr_t targetSharedPage; // Shared page address in target process + HANDLE targetPipe; // Hook pipe handle in the target process + + mapMemoryMap regions; // Mapped regions info +}; + +struct MapMemoryRegionResult +{ + ptr_t originalPtr; // Address of region in the target process + ptr_t newPtr; // Address of mapped region in the current process + ptr_t removedPtr; // Address of region unmapped because of address conflict + uint32_t size; // Size of mapped region + uint32_t removedSize; // Size of unmapped region +}; + + +class DriverControl +{ +public: + BLACKBONE_API DriverControl(); + BLACKBONE_API ~DriverControl(); + + BLACKBONE_API static DriverControl& Instance(); + + /// + /// Try to load driver if it isn't loaded + /// + /// Path to the driver file + /// Status code + BLACKBONE_API NTSTATUS EnsureLoaded( const std::wstring& path = L"" ); + + /// + /// Reload driver + /// + /// Path to the driver file + /// Status code + BLACKBONE_API NTSTATUS Reload( std::wstring path = L"" ); + + /// + /// Unload driver + /// + /// Status code + BLACKBONE_API NTSTATUS Unload(); + + /// + /// Disable DEP for process + /// Has no effect on native x64 processes + /// + /// Target PID + /// Status code + BLACKBONE_API NTSTATUS DisableDEP( DWORD pid ); + + /// + /// Change process protection flag + /// + /// Target PID + /// Process protection policy + /// Prohibit dynamic code + /// Prohibit loading non-microsoft dlls + /// Status code + BLACKBONE_API NTSTATUS ProtectProcess( + DWORD pid, + PolicyOpt protection, + PolicyOpt dynamicCode = Policy_Keep, + PolicyOpt binarySignature = Policy_Keep + ); + + /// + /// Change handle access rights + /// + /// Target PID. + /// Handle + /// New access + /// Status code + BLACKBONE_API NTSTATUS PromoteHandle( DWORD pid, HANDLE handle, DWORD access ); + + /// + /// Allocate virtual memory + /// + /// Tarhet PID + /// Desired base. If 0 address is chosed by the system + /// Region size + /// Allocation type - MEM_RESERVE/MEM_COMMIT + /// Memory protection + /// Status code + BLACKBONE_API NTSTATUS AllocateMem( DWORD pid, ptr_t& base, ptr_t& size, DWORD type, DWORD protection, bool physical = false ); + + /// + /// Free virtual memory + /// + /// Tarhet PID + /// Desired base. If 0 address is chosed by the system + /// Region size + /// Free type - MEM_RELEASE/MEM_DECOMMIT + /// Status code + BLACKBONE_API NTSTATUS FreeMem( DWORD pid, ptr_t base, ptr_t size, DWORD type ); + + /// + /// Read process memory + /// + /// Target PID + /// Target base + /// Data size + /// Buffer address + /// Status code + BLACKBONE_API NTSTATUS ReadMem( DWORD pid, ptr_t base, ptr_t size, PVOID buffer ); + + /// + /// Write process memory + /// + /// Target PID + /// Target base + /// Data size + /// Buffer address + /// Status code + BLACKBONE_API NTSTATUS WriteMem( DWORD pid, ptr_t base, ptr_t size, PVOID buffer ); + + /// + /// Change memory protection + /// + /// Target PID. + /// Regiod base address + /// Region size + /// New protection + /// Status code + BLACKBONE_API NTSTATUS ProtectMem( DWORD pid, ptr_t base, ptr_t size, DWORD protection ); + + /// + /// Maps target process memory into current process + /// + /// Target PID + /// Pipe name to use for hook data transfer + /// The map sections. + /// Results + /// Status code + BLACKBONE_API NTSTATUS MapMemory( DWORD pid, const std::wstring& pipeName, bool mapSections, MapMemoryResult& result ); + + /// + /// Maps single memory region into current process + /// + /// Target PID + /// Region base address + /// Region size + /// Mapped region info + /// Status code + BLACKBONE_API NTSTATUS MapMemoryRegion( DWORD pid, ptr_t base, uint32_t size, MapMemoryRegionResult& result ); + + /// + /// Unmap memory of the target process from current + /// + /// Target PID + /// Status code + BLACKBONE_API NTSTATUS UnmapMemory( DWORD pid ); + + /// + /// Unmap single memory region + /// If unmapped region size is smaller than the size specified during map, function will return info about + /// 2 regions that emerged after unmap + /// + /// Target PID + /// Region base + /// Region size + /// Unampped region info + /// Status code + BLACKBONE_API NTSTATUS UnmapMemoryRegion( DWORD pid, ptr_t base, uint32_t size ); + + /// + /// Inject DLL into arbitrary process + /// + /// Target PID. + /// Full qualified dll path. + /// Injection type + /// Init routine RVA + /// Init routine argument + /// Unlink module after injection + /// Erase PE headers after injection + /// Wait for injection + /// Status code + BLACKBONE_API NTSTATUS InjectDll( + DWORD pid, + const std::wstring& path, + InjectType itype, + uint32_t initRVA = 0, + const std::wstring& initArg = L"", + bool unlink = false, + bool erasePE = false, + bool wait = true + ); + + /// + /// Manually map PE image + /// + /// Target PID + /// Full qualified image path + /// Mapping flags + /// Init routine RVA + /// Init routine argument + /// Status code + BLACKBONE_API NTSTATUS MmapDll( + DWORD pid, + const std::wstring& path, + KMmapFlags flags, + uint32_t initRVA = 0, + const std::wstring& initArg = L"" + ); + + /// + /// Manually map PE image + /// + /// Target PID + /// Memory location of the image to map + /// Image size + /// Memory chunk has image layout + /// Mapping flags + /// Init routine RVA + /// Init routine argument + /// Status code + BLACKBONE_API NTSTATUS MmapDll( + DWORD pid, + void* address, + uint32_t size, + bool asImage, + KMmapFlags flags, + uint32_t initRVA = 0, + const std::wstring& initArg = L"" + ); + + /// + /// Manually map another system driver into system space + /// + /// Fully quialified path to the drver + /// Status code + BLACKBONE_API NTSTATUS MMapDriver( const std::wstring& path ); + + /// + /// Make VAD region appear as PAGE_NO_ACESS to NtQueryVirtualMemory + /// + /// Target process ID + /// Region base + /// Region size + /// Status code + BLACKBONE_API NTSTATUS ConcealVAD( DWORD pid, ptr_t base, uint32_t size ); + + /// + /// Unlink process handle table from HandleListHead + /// + /// Target process ID + /// Status code + BLACKBONE_API NTSTATUS UnlinkHandleTable( DWORD pid ); + + /// + /// Enumerate committed, accessible, non-guarded memory regions + /// + /// Target process ID + /// Found regions + /// Status code + BLACKBONE_API NTSTATUS EnumMemoryRegions( DWORD pid, std::vector& regions ); + + /// + /// Check if driver is loaded + /// + /// + BLACKBONE_API inline bool loaded() const { return _hDriver.valid(); } + BLACKBONE_API inline NTSTATUS status() const { return _loadStatus; } + +private: + DriverControl( const DriverControl& ) = delete; + DriverControl& operator = (const DriverControl&) = delete; + + /// + /// Load arbitrary driver + /// + /// Driver service name + /// Driver file path + /// Status + NTSTATUS LoadDriver( const std::wstring& svcName, const std::wstring& path ); + + /// + /// Unload arbitrary driver + /// + /// Driver service name + /// Status + NTSTATUS UnloadDriver( const std::wstring& svcName ); + + /// + /// Fill minimum driver registry entry + /// + /// Driver service name + /// Driver path + /// Status code + LSTATUS PrepareDriverRegEntry( const std::wstring& svcName, const std::wstring& path ); +private: + Handle _hDriver; + NTSTATUS _loadStatus = STATUS_NOT_FOUND; +}; + +// Syntax sugar +inline DriverControl& Driver() { return DriverControl::Instance(); } + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/ApiSet.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/ApiSet.h new file mode 100644 index 0000000..0280e13 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/ApiSet.h @@ -0,0 +1,183 @@ +#pragma once + +#include "Winheaders.h" + +// +// Api schema structures +// + +// +// Win 10 +// +typedef struct _API_SET_VALUE_ENTRY_10 +{ + ULONG Flags; + ULONG NameOffset; + ULONG NameLength; + ULONG ValueOffset; + ULONG ValueLength; +} API_SET_VALUE_ENTRY_10, *PAPI_SET_VALUE_ENTRY_10; + +typedef struct _API_SET_VALUE_ARRAY_10 +{ + ULONG Flags; + ULONG NameOffset; + ULONG Unk; + ULONG NameLength; + ULONG DataOffset; + ULONG Count; + + inline PAPI_SET_VALUE_ENTRY_10 entry( void* pApiSet, DWORD i ) + { + return (PAPI_SET_VALUE_ENTRY_10)((BYTE*)pApiSet + DataOffset + i * sizeof( API_SET_VALUE_ENTRY_10 )); + } +} API_SET_VALUE_ARRAY_10, *PAPI_SET_VALUE_ARRAY_10; + +typedef struct _API_SET_NAMESPACE_ENTRY_10 +{ + ULONG Limit; + ULONG Size; +} API_SET_NAMESPACE_ENTRY_10, *PAPI_SET_NAMESPACE_ENTRY_10; + +typedef struct _API_SET_NAMESPACE_ARRAY_10 +{ + ULONG Version; + ULONG Size; + ULONG Flags; + ULONG Count; + ULONG Start; + ULONG End; + ULONG Unk[2]; + + inline PAPI_SET_NAMESPACE_ENTRY_10 entry( DWORD i ) + { + return (PAPI_SET_NAMESPACE_ENTRY_10)((BYTE*)this + End + i * sizeof( API_SET_NAMESPACE_ENTRY_10 )); + } + + inline PAPI_SET_VALUE_ARRAY_10 valArray( PAPI_SET_NAMESPACE_ENTRY_10 pEntry ) + { + return (PAPI_SET_VALUE_ARRAY_10)((BYTE*)this + Start + sizeof( API_SET_VALUE_ARRAY_10 ) * pEntry->Size); + } + + inline ULONG apiName( PAPI_SET_NAMESPACE_ENTRY_10 pEntry, wchar_t* output ) + { + auto pArray = valArray( pEntry ); + memcpy( output, (char*)this + pArray->NameOffset, pArray->NameLength ); + return pArray->NameLength; + } +} API_SET_NAMESPACE_ARRAY_10, *PAPI_SET_NAMESPACE_ARRAY_10; + + + + +// +// Win 8.1 +// +typedef struct _API_SET_VALUE_ENTRY +{ + ULONG Flags; + ULONG NameOffset; + ULONG NameLength; + ULONG ValueOffset; + ULONG ValueLength; +} API_SET_VALUE_ENTRY, *PAPI_SET_VALUE_ENTRY; + +typedef struct _API_SET_VALUE_ARRAY +{ + ULONG Flags; + ULONG Count; + API_SET_VALUE_ENTRY Array[ANYSIZE_ARRAY]; + + inline PAPI_SET_VALUE_ENTRY entry( void* /*pApiSet*/, DWORD i ) + { + return Array + i; + } +} API_SET_VALUE_ARRAY, *PAPI_SET_VALUE_ARRAY; + +typedef struct _API_SET_NAMESPACE_ENTRY +{ + ULONG Flags; + ULONG NameOffset; + ULONG NameLength; + ULONG AliasOffset; + ULONG AliasLength; + ULONG DataOffset; +} API_SET_NAMESPACE_ENTRY, *PAPI_SET_NAMESPACE_ENTRY; + +typedef struct _API_SET_NAMESPACE_ARRAY +{ + ULONG Version; + ULONG Size; + ULONG Flags; + ULONG Count; + API_SET_NAMESPACE_ENTRY Array[ANYSIZE_ARRAY]; + + inline PAPI_SET_NAMESPACE_ENTRY entry( DWORD i ) + { + return Array + i; + } + + inline PAPI_SET_VALUE_ARRAY valArray( PAPI_SET_NAMESPACE_ENTRY pEntry ) + { + return (PAPI_SET_VALUE_ARRAY)((BYTE*)this + pEntry->DataOffset); + } + + inline ULONG apiName( PAPI_SET_NAMESPACE_ENTRY pEntry, wchar_t* output ) + { + memcpy( output, (char*)this + pEntry->NameOffset, pEntry->NameLength ); + return pEntry->NameLength; + } +} API_SET_NAMESPACE_ARRAY, *PAPI_SET_NAMESPACE_ARRAY; + + +// +// Win 8 and 7 +// +typedef struct _API_SET_VALUE_ENTRY_V2 +{ + ULONG NameOffset; + ULONG NameLength; + ULONG ValueOffset; + ULONG ValueLength; +} API_SET_VALUE_ENTRY_V2, *PAPI_SET_VALUE_ENTRY_V2; + +typedef struct _API_SET_VALUE_ARRAY_V2 +{ + ULONG Count; + API_SET_VALUE_ENTRY_V2 Array[ANYSIZE_ARRAY]; + + inline PAPI_SET_VALUE_ENTRY_V2 entry( void* /*pApiSet*/, DWORD i ) + { + return Array + i; + } +} API_SET_VALUE_ARRAY_V2, *PAPI_SET_VALUE_ARRAY_V2; + +typedef struct _API_SET_NAMESPACE_ENTRY_V2 +{ + ULONG NameOffset; + ULONG NameLength; + ULONG DataOffset; // API_SET_VALUE_ARRAY +} API_SET_NAMESPACE_ENTRY_V2, *PAPI_SET_NAMESPACE_ENTRY_V2; + +typedef struct _API_SET_NAMESPACE_ARRAY_V2 +{ + ULONG Version; + ULONG Count; + API_SET_NAMESPACE_ENTRY_V2 Array[ANYSIZE_ARRAY]; + + inline PAPI_SET_NAMESPACE_ENTRY_V2 entry( DWORD i ) + { + return Array + i; + } + + inline PAPI_SET_VALUE_ARRAY_V2 valArray( PAPI_SET_NAMESPACE_ENTRY_V2 pEntry ) + { + return (PAPI_SET_VALUE_ARRAY_V2)((BYTE*)this + pEntry->DataOffset); + } + + inline ULONG apiName( PAPI_SET_NAMESPACE_ENTRY_V2 pEntry, wchar_t* output ) + { + memcpy( output, (char*)this + pEntry->NameOffset, pEntry->NameLength ); + return pEntry->NameLength; + } +} API_SET_NAMESPACE_ARRAY_V2, *PAPI_SET_NAMESPACE_ARRAY_V2; \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/CallResult.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/CallResult.h new file mode 100644 index 0000000..3a5c88e --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/CallResult.h @@ -0,0 +1,99 @@ +#pragma once +#if _MSC_VER >= 1910 + +#include +#include + +namespace blackbone +{ +/// +/// Function result or failure status +/// +template +struct call_result_t +{ + NTSTATUS status = STATUS_UNSUCCESSFUL; // Execution status + std::optional result_data = std::nullopt; // Returned value + + call_result_t() = default; + + call_result_t( T result_, NTSTATUS status_ = STATUS_SUCCESS ) + : status ( status_ ) + , result_data ( std::move( result_ ) ) + { + assert( result_data.has_value() ); + } + + call_result_t( NTSTATUS status_ ) + : status ( status_ ) + { + assert( status_ != STATUS_SUCCESS ); + } + + inline bool success() const { return NT_SUCCESS( status ); } + inline T& result() { return result_data.value(); } + inline const T& result() const { return result_data.value(); } + inline T result( const T& def_val ) const { return result_data.value_or( def_val ); } + + inline explicit operator bool() const { return NT_SUCCESS( status ); } + inline explicit operator T() const { return result_data.value(); } + + inline T* operator ->() { return &result_data.value(); } + inline T& operator *() { return result_data.value(); } +}; +} + +#else + +#include +#include + +namespace blackbone +{ + /// + /// Function result or failure status + /// + template + struct call_result_t + { + NTSTATUS status = STATUS_UNSUCCESSFUL; // Execution status + std::unique_ptr result_data; // Returned value + + call_result_t() = default; + + call_result_t(T result_, NTSTATUS status_ = STATUS_SUCCESS) + : status(status_) + , result_data(std::make_unique(std::move(result_))) + { + assert(result_data.get()); + } + + call_result_t(NTSTATUS status_) + : status(status_) + { + assert(status_ != STATUS_SUCCESS); + } + + + private: + inline T* value() { + if (!result_data) { + throw std::logic_error("bad optional access."); + } + return result_data.get(); + } + public: + + inline bool success() const { return NT_SUCCESS( status ); } + inline T& result() { return *value(); } + inline const T& result() const { return *value(); } + inline T result(const T& def_val) const { return result_data ? *result_data.get() : def_val; } + + inline explicit operator bool() const { return NT_SUCCESS( status ); } + inline explicit operator T() const { return *value(); } + + inline T* operator ->() { return value(); } + inline T& operator *() { return *value(); } + }; +} +#endif \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/FunctionTypes.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/FunctionTypes.h new file mode 100644 index 0000000..64eee56 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/FunctionTypes.h @@ -0,0 +1,297 @@ +#pragma once + +#include "../Config.h" +#include "NativeStructures.h" + +namespace blackbone +{ + +// NtCreateEvent +typedef NTSTATUS( NTAPI* fnNtCreateEvent )( + OUT PHANDLE EventHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN ULONG EventType, + IN BOOLEAN InitialState + ); + +// NtOpenEvent +typedef NTSTATUS( NTAPI* fnNtOpenEvent )( + OUT PHANDLE EventHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + +// NtQueryVirtualMemory +typedef NTSTATUS( NTAPI* fnNtQueryVirtualMemory )( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN MEMORY_INFORMATION_CLASS MemoryInformationClass, + OUT PVOID MemoryInformation, + IN SIZE_T MemoryInformationLength, + OUT PSIZE_T ReturnLength + ); + +// NtWow64QueryInformationProcess64 +typedef NTSTATUS( NTAPI *fnNtWow64QueryInformationProcess64 )( + IN HANDLE ProcessHandle, + IN ULONG ProcessInformationClass, + OUT PVOID ProcessInformation64, + IN ULONG Length, + OUT PULONG ReturnLength OPTIONAL + ); + +// NtWow64ReadVirtualMemory64 +typedef NTSTATUS( NTAPI *fnNtWow64ReadVirtualMemory64 )( + IN HANDLE ProcessHandle, + IN ULONG64 BaseAddress, + OUT PVOID Buffer, + IN ULONG64 BufferLength, + OUT PULONG64 ReturnLength OPTIONAL + ); + +// NtWow64WriteVirtualMemory64 +using fnNtWow64WriteVirtualMemory64 = fnNtWow64ReadVirtualMemory64; + +// NtWow64AllocateVirtualMemory64 +typedef NTSTATUS( NTAPI *fnNtWow64AllocateVirtualMemory64 )( + IN HANDLE ProcessHandle, + IN PULONG64 BaseAddress, + IN ULONG64 ZeroBits, + IN PULONG64 Size, + IN ULONG AllocationType, + IN ULONG Protection + ); + +// NtWow64QueryVirtualMemory64 +typedef NTSTATUS( NTAPI *fnNtWow64QueryVirtualMemory64 )( + IN HANDLE ProcessHandle, + IN ULONG64 BaseAddress, + IN DWORD MemoryInformationClass, + OUT PVOID Buffer, + IN ULONG64 Length, + OUT PULONG ResultLength OPTIONAL + ); + +// RtlDosApplyFileIsolationRedirection_Ustr +typedef NTSTATUS( NTAPI *fnRtlDosApplyFileIsolationRedirection_Ustr )( + IN ULONG Flags, + IN PUNICODE_STRING OriginalName, + IN PUNICODE_STRING Extension, + IN OUT PUNICODE_STRING StaticString, + IN OUT PUNICODE_STRING DynamicString, + IN OUT PUNICODE_STRING *NewName, + IN PULONG NewFlags, + IN PSIZE_T FileNameSize, + IN PSIZE_T RequiredLength + ); + +// RtlDosPathNameToNtPathName_U +typedef BOOLEAN( NTAPI *fnRtlDosPathNameToNtPathName_U )( + IN PCWSTR DosFileName, + OUT PUNICODE_STRING NtFileName, + OUT OPTIONAL PWSTR *FilePart, + OUT OPTIONAL PVOID RelativeName + ); + +// RtlHashUnicodeString +typedef NTSTATUS( NTAPI *fnRtlHashUnicodeString )( + IN PCUNICODE_STRING String, + IN BOOLEAN CaseInSensitive, + IN ULONG HashAlgorithm, + OUT PULONG HashValue + ); + +// RtlRemoteCall +typedef NTSTATUS( NTAPI *fnRtlRemoteCall )( + IN HANDLE Process, + IN HANDLE Thread, + IN PVOID CallSite, + IN ULONG ArgumentCount, + IN PULONG Arguments, + IN BOOLEAN PassContext, + IN BOOLEAN AlreadySuspended + ); + +// NtCreateThreadEx +typedef NTSTATUS( NTAPI* fnNtCreateThreadEx )( + OUT PHANDLE hThread, + IN ACCESS_MASK DesiredAccess, + IN LPVOID ObjectAttributes, + IN HANDLE ProcessHandle, + IN LPTHREAD_START_ROUTINE lpStartAddress, + IN LPVOID lpParameter, + IN DWORD Flags, + IN SIZE_T StackZeroBits, + IN SIZE_T SizeOfStackCommit, + IN SIZE_T SizeOfStackReserve, + OUT LPVOID lpBytesBuffer + ); + +// NtLockVirtualMemory +typedef NTSTATUS( NTAPI* fnNtLockVirtualMemory )( + IN HANDLE process, + IN OUT PVOID* baseAddress, + IN OUT ULONG* size, + IN ULONG flags + ); + +// RtlRbInsertNodeEx +typedef int (NTAPI* fnRtlRbInsertNodeEx)( + _RTL_RB_TREE* Tree, + _RTL_BALANCED_NODE* Parent, + BOOLEAN Right, + _RTL_BALANCED_NODE * Node + ); + +// NtSetInformationProcess +typedef NTSTATUS( NTAPI* fnNtSetInformationProcess )( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + IN PVOID ProcessInformation, + IN ULONG ProcessInformationLength + ); + +// NtDuplicateObject +typedef NTSTATUS( NTAPI* fnNtDuplicateObject )( + IN HANDLE SourceProcessHandle, + IN HANDLE SourceHandle, + IN HANDLE TargetProcessHandle, + IN PHANDLE TargetHandle, + IN ACCESS_MASK DesiredAccess, + IN ULONG Attributes, + IN ULONG Options + ); + +// RtlRbRemoveNode +typedef int (NTAPI* fnRtlRbRemoveNode)( + _RTL_RB_TREE* Tree, + _RTL_BALANCED_NODE* Node + ); + +// RtlUpcaseUnicodeChar +typedef WCHAR( NTAPI *fnRtlUpcaseUnicodeChar )( + WCHAR chr + ); + +// RtlEncodeSystemPointer +typedef PVOID( NTAPI *fnRtlEncodeSystemPointer )( + IN PVOID Pointer + ); + +// NtLoadDriver +typedef NTSTATUS( NTAPI* fnNtLoadDriver )( + IN PUNICODE_STRING path + ); + +// NtUnloadDriver +typedef NTSTATUS( NTAPI* fnNtUnloadDriver )( + IN PUNICODE_STRING path + ); + +// NtQuerySection +typedef DWORD( NTAPI* fnNtQuerySection )( + HANDLE hSection, + SECTION_INFORMATION_CLASS InfoClass, + PVOID Buffer, + ULONG BufferSize, + PULONG ReturnLength + ); + +// NtSuspendProcess +typedef NTSTATUS( NTAPI* fnNtSuspendProcess )( + HANDLE ProcessHandle + ); + +// NtResumeProcess +typedef NTSTATUS( NTAPI* fnNtResumeProcess )( + HANDLE ProcessHandle + ); + +// RtlCreateActivationContext +typedef NTSTATUS( NTAPI *fnRtlCreateActivationContext )( + IN ULONG Flags, + IN PACTCTXW ActivationContextData, + IN ULONG ExtraBytes, + IN PVOID NotificationRoutine, + IN PVOID NotificationContext, + OUT PVOID* ActCtx + ); + +// NtQueueApcThread +typedef NTSTATUS( NTAPI* fnNtQueueApcThread )( + IN HANDLE ThreadHandle, + IN PVOID ApcRoutine, /*PKNORMAL_ROUTINE*/ + IN PVOID NormalContext, + IN PVOID SystemArgument1, + IN PVOID SystemArgument2 + ); + +// RtlQueueApcWow64Thread +using fnRtlQueueApcWow64Thread = fnNtQueueApcThread; + +// RtlImageNtHeader +typedef PIMAGE_NT_HEADERS( NTAPI* fnRtlImageNtHeader )( + IN PVOID ModuleAddress + ); + +// RtlInitUnicodeString +using fnRtlInitUnicodeString = decltype(&RtlInitUnicodeString); + +// RtlFreeUnicodeString +using fnRtlFreeUnicodeString = decltype(&RtlFreeUnicodeString); + +// NtQuerySystemInformation +using fnNtQuerySystemInformation = decltype(&NtQuerySystemInformation); + +// NtQueryInformationProcess +using fnNtQueryInformationProcess = decltype(&NtQueryInformationProcess); + +// NtQueryInformationThread +using fnNtQueryInformationThread = decltype(&NtQueryInformationThread); + +// NtQueryObject +using fnNtQueryObject = decltype(&NtQueryObject); + +// +// GCC compatibility +// + +// Wow64GetThreadContext +typedef BOOL( __stdcall* fnWow64GetThreadContext ) + ( + HANDLE hThread, + PWOW64_CONTEXT lpContext + ); + +// Wow64SetThreadContext +typedef BOOL( __stdcall* fnWow64SetThreadContext ) + ( + HANDLE hThread, + const WOW64_CONTEXT *lpContext + ); + +// Wow64SuspendThread +typedef DWORD( __stdcall* fnWow64SuspendThread ) + ( + HANDLE hThread + ); + +// GetProcessDEPPolicy +typedef BOOL( __stdcall* fnGetProcessDEPPolicy ) + ( + HANDLE hProcess, + LPDWORD lpFlags, + PBOOL lpPermanent + ); + +// QueryFullProcessImageNameW +typedef BOOL( __stdcall* fnQueryFullProcessImageNameW) + ( + HANDLE hProcess, + DWORD dwFlags, + PWSTR lpExeName, + PDWORD lpdwSize + ); + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/HandleGuard.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/HandleGuard.h new file mode 100644 index 0000000..95b85ba --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/HandleGuard.h @@ -0,0 +1,134 @@ +#pragma once +#include "Winheaders.h" +#include + +namespace blackbone +{ + +template +struct non_zero +{ + static bool call( T handle ) noexcept + { + return intptr_t( handle ) != 0; + } +}; + +template +struct non_negative +{ + static bool call( T handle ) noexcept + { + return intptr_t( handle ) > 0; + } +}; + +template typename wrapped_t, typename T> +struct with_pseudo_t +{ + static bool call( T handle ) noexcept + { + if (wrapped_t::call( handle )) + return true; + + // Check if it's a pseudo handle + auto h = (HANDLE)(uintptr_t)handle; + return h == GetCurrentProcess() || h == GetCurrentThread(); + } +}; + +template typename wrapped_t> +struct with_pseudo +{ + template + using type = with_pseudo_t; +}; + +/// +/// Strong exception guarantee +/// +template typename is_valid = non_negative> +class HandleGuard +{ +public: + static constexpr handle_t zero_handle = handle_t( 0 ); + +public: + explicit HandleGuard( handle_t handle = zero_handle ) noexcept + : _handle( handle ) + { + } + + HandleGuard( HandleGuard&& rhs ) noexcept + : _handle( rhs._handle ) + { + rhs._handle = zero_handle; + } + + ~HandleGuard() + { + if (non_negative::call( _handle )) + close( _handle ); + } + + HandleGuard( const HandleGuard& ) = delete; + HandleGuard& operator =( const HandleGuard& ) = delete; + + HandleGuard& operator =( HandleGuard&& rhs ) noexcept + { + if (std::addressof( rhs ) == this) + return *this; + + reset( rhs._handle ); + rhs._handle = zero_handle; + + return *this; + } + + HandleGuard& operator =( handle_t handle ) noexcept + { + reset( handle ); + return *this; + } + + void reset( handle_t handle = zero_handle ) noexcept + { + if (handle == _handle) + return; + + if (non_negative::call( _handle )) + close( _handle ); + + _handle = handle; + } + + handle_t release() noexcept + { + auto tmp = _handle; + _handle = zero_handle; + return tmp; + } + + handle_t get() const noexcept { return _handle; } + bool valid() const noexcept { return is_valid::call( _handle ); } + + operator handle_t() const noexcept { return _handle; } + explicit operator bool() const noexcept { return valid(); } + + handle_t* operator &() noexcept { return &_handle; } + + bool operator ==( const HandleGuard& rhs ) const noexcept { return _handle == rhs._handle; } + bool operator <( const HandleGuard& rhs ) const noexcept { return _handle < rhs._handle; } + +private: + handle_t _handle; +}; + + +using Handle = HandleGuard; +using ProcessHandle = HandleGuard::type>; +using ACtxHandle = HandleGuard; +using RegHandle = HandleGuard; +using Mapping = HandleGuard; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Macro.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Macro.h new file mode 100644 index 0000000..5ab0cdf --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Macro.h @@ -0,0 +1,138 @@ +#pragma once +#include "../Config.h" +#include + +// Architecture-dependent pointer size +#define BlackBoneWordSize sizeof(void*) + +// Rebase address +#define MAKE_PTR(T, pRVA, base) (T)((ptr_t)pRVA + (ptr_t)base) +#define REBASE(pRVA, baseOld, baseNew) ((ptr_t)pRVA - (ptr_t)baseOld + (ptr_t)baseNew) + +// Field offset info +#define FIELD_OFFSET2(type, field) ((LONG)(LONG_PTR)&(((type)0)->field)) +#define GET_FIELD_PTR(entry, field) (uintptr_t)((uint8_t*)entry + FIELD_OFFSET2(decltype(entry), field)) + +#define CALL_64_86(b, f, ...) (b ? f(__VA_ARGS__) : f(__VA_ARGS__)) +#define FIELD_PTR_64_86(b, e, t, f) (b ? fieldPtr( e, &t::f ) : fieldPtr( e, &t::f )) + +#define LODWORD(l) ((uint32_t)(((uint64_t)(l)) & 0xffffffff)) +#define HIDWORD(l) ((uint32_t)((((uint64_t)(l)) >> 32) & 0xffffffff)) + +// Set or reset particular bit +#define SET_BIT(v, b) v |= (1ull << b) +#define RESET_BIT(v, b) v &= ~(1ull << b) + +// Register aliases +#ifdef USE64 +#define NAX Rax +#define NSP Rsp +#define NIP Rip +#define NDI Rdi + +#define BitScanForwardT _BitScanForward64 +#define BitScanReverseT _BitScanReverse64 +#define BitTestAndSetT _bittestandset64 +#define BitTestAndResetT _bittestandreset64 + +#define SET_JUMP(_src,_dst) *(uintptr_t*)(_src) = 0x25FF; *(uintptr_t*)((_src) + 6) = (uintptr_t)_dst; +#else +#define NAX Eax +#define NSP Esp +#define NIP Eip +#define NDI Edi + +#define BitScanForwardT _BitScanForward +#define BitScanReverseT _BitScanReverse +#define BitTestAndSetT _bittestandset +#define BitTestAndResetT _bittestandreset + +#define SET_JUMP(_src,_dst) *(uint8_t*)(_src) = 0xE9; *(uintptr_t*)((_src) + 1) = (uintptr_t)(_dst) - (uintptr_t)(_src) - 5 +#endif + +#define ENUM_OPS(e) \ + inline e operator |(e a1, e a2) { \ + return static_cast(static_cast(a1) | static_cast(a2)); \ + } \ + \ + inline e operator |= (e& a1, e a2) { \ + return a1 = a1 | a2; \ + } \ + \ + inline e operator &(e a1, e a2) { \ + return static_cast(static_cast(a1)& static_cast(a2)); \ + } \ + \ + inline e operator &= (e& a1, e a2) { \ + return a1 = a1 & a2; \ + } \ + \ + inline e operator ~(e a1) { \ + return static_cast(~static_cast(a1)); \ + } + + +template +struct CompileTimeSizeOf; + +// offsetof alternative +template +constexpr size_t offsetOf( U T::*member ) +{ + return reinterpret_cast(&(reinterpret_cast(nullptr)->*member)); +} + +template +constexpr uint64_t fieldPtr( uint64_t base, U T::*member ) +{ + return base + offsetOf( member ); +} + +// CONTAINING_RECORD alternative +template +constexpr uint64_t structBase( uint64_t ptr, U T::*member ) +{ + return ptr - offsetOf( member ); +} + +// Type-unsafe cast. +template +inline _Tgt brutal_cast( const _Src& src ) +{ + static_assert(sizeof( _Tgt ) == sizeof( _Src ), "Operand size mismatch"); + union _u { _Src s; _Tgt t; } u; + u.s = src; + return u.t; +} + +// Align value +inline size_t Align( size_t val, size_t alignment ) +{ + return (val % alignment == 0) ? val : (val / alignment + 1) * alignment; +} + +// Offset of 'LastStatus' field in TEB +#define LAST_STATUS_OFS (0x598 + 0x197 * BlackBoneWordSize) + +using NTSTATUS = long; + +/// +/// Get last NT status +/// +/// +inline NTSTATUS LastNtStatus() +{ + return *(NTSTATUS*)((unsigned char*)NtCurrentTeb() + LAST_STATUS_OFS); +} + +/// +/// Set last NT status +/// +/// The status. +/// +inline NTSTATUS SetLastNtStatus( NTSTATUS status ) +{ + return *(NTSTATUS*)((unsigned char*)NtCurrentTeb() + LAST_STATUS_OFS) = status; +} + +#define SharedUserData32 ((KUSER_SHARED_DATA* const)0x7FFE0000) diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/NativeEnums.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/NativeEnums.h new file mode 100644 index 0000000..c7f8f52 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/NativeEnums.h @@ -0,0 +1,65 @@ +#pragma once +namespace blackbone +{ + +enum MEMORY_INFORMATION_CLASS +{ + MemoryBasicInformation = 0, + MemoryWorkingSetList, + MemorySectionName, + MemoryBasicVlmInformation, + MemoryWorkingSetExList +}; + +enum SECTION_INFORMATION_CLASS +{ + SectionBasicInformation, + SectionImageInformation +}; + +enum POOL_TYPE +{ + NonPagedPool, + PagedPool, + NonPagedPoolMustSucceed, + DontUseThisType, + NonPagedPoolCacheAligned, + PagedPoolCacheAligned, + NonPagedPoolCacheAlignedMustS +}; + +// +// Loader related +// +enum _LDR_DDAG_STATE +{ + LdrModulesMerged = -5, + LdrModulesInitError = -4, + LdrModulesSnapError = -3, + LdrModulesUnloaded = -2, + LdrModulesUnloading = -1, + LdrModulesPlaceHolder = 0, + LdrModulesMapping = 1, + LdrModulesMapped = 2, + LdrModulesWaitingForDependencies = 3, + LdrModulesSnapping = 4, + LdrModulesSnapped = 5, + LdrModulesCondensed = 6, + LdrModulesReadyToInit = 7, + LdrModulesInitializing = 8, + LdrModulesReadyToRun = 9 +}; + +enum _LDR_DLL_LOAD_REASON +{ + LoadReasonStaticDependency = 0, + LoadReasonStaticForwarderDependency = 1, + LoadReasonDynamicForwarderDependency = 2, + LoadReasonDelayloadDependency = 3, + LoadReasonDynamicLoad = 4, + LoadReasonAsImageLoad = 5, + LoadReasonAsDataLoad = 6, + LoadReasonUnknown = -1 +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/NativeStructures.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/NativeStructures.h new file mode 100644 index 0000000..b885246 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/NativeStructures.h @@ -0,0 +1,818 @@ +#pragma once + +#include "../Config.h" +#include "NativeEnums.h" + +#include "Winheaders.h" +#include + +#include + +namespace blackbone +{ + + +template +using const_int = std::integral_constant; + +template +constexpr bool is32bit = std::is_same_v; + +template +using type_32_64 = std::conditional_t, T32, T64>; + +template +constexpr int int_32_64 = std::conditional_t, const_int, const_int>::value; + +// nonstandard extension used : nameless struct/union +#pragma warning(disable : 4201) + +template +struct _LIST_ENTRY_T +{ + T Flink; + T Blink; +}; + +template +struct _UNICODE_STRING_T +{ + using type = T; + + uint16_t Length; + uint16_t MaximumLength; + T Buffer; +}; + +template +struct _NT_TIB_T +{ + T ExceptionList; + T StackBase; + T StackLimit; + T SubSystemTib; + T FiberData; + T ArbitraryUserPointer; + T Self; +}; + +template +struct _CLIENT_ID_T +{ + T UniqueProcess; + T UniqueThread; +}; + +template +struct _GDI_TEB_BATCH_T +{ + uint32_t Offset; + T HDC; + uint32_t Buffer[310]; +}; + +template +struct _ACTIVATION_CONTEXT_STACK_T +{ + T ActiveFrame; + _LIST_ENTRY_T FrameListCache; + uint32_t Flags; + uint32_t NextCookieSequenceNumber; + uint32_t StackId; +}; + +template +struct _TEB_T +{ + struct Specific32_1 + { + uint8_t InstrumentationCallbackDisabled; + uint8_t SpareBytes[23]; + uint32_t TxFsContext; + }; + + struct Specific64_1 + { + uint32_t TxFsContext; + uint32_t InstrumentationCallbackDisabled; + }; + + struct Specific64_2 + { + T TlsExpansionSlots; + T DeallocationBStore; + T BStoreLimit; + }; + + struct Specific32_2 + { + T TlsExpansionSlots; + }; + + _NT_TIB_T NtTib; + T EnvironmentPointer; + _CLIENT_ID_T ClientId; + T ActiveRpcHandle; + T ThreadLocalStoragePointer; + T ProcessEnvironmentBlock; + uint32_t LastErrorValue; + uint32_t CountOfOwnedCriticalSections; + T CsrClientThread; + T Win32ThreadInfo; + uint32_t User32Reserved[26]; + uint32_t UserReserved[5]; + T WOW32Reserved; + uint32_t CurrentLocale; + uint32_t FpSoftwareStatusRegister; + T ReservedForDebuggerInstrumentation[16]; + T SystemReserved1[int_32_64]; + uint8_t PlaceholderCompatibilityMode; + uint8_t PlaceholderReserved[11]; + uint32_t ProxiedProcessId; + _ACTIVATION_CONTEXT_STACK_T ActivationStack; + uint8_t WorkingOnBehalfTicket[8]; + uint32_t ExceptionCode; + T ActivationContextStackPointer; + T InstrumentationCallbackSp; + T InstrumentationCallbackPreviousPc; + T InstrumentationCallbackPreviousSp; + type_32_64 spec1; + _GDI_TEB_BATCH_T GdiTebBatch; + _CLIENT_ID_T RealClientId; + T GdiCachedProcessHandle; + uint32_t GdiClientPID; + uint32_t GdiClientTID; + T GdiThreadLocalInfo; + T Win32ClientInfo[62]; + T glDispatchTable[233]; + T glReserved1[29]; + T glReserved2; + T glSectionInfo; + T glSection; + T glTable; + T glCurrentRC; + T glContext; + uint32_t LastStatusValue; + _UNICODE_STRING_T StaticUnicodeString; + wchar_t StaticUnicodeBuffer[261]; + T DeallocationStack; + T TlsSlots[64]; + _LIST_ENTRY_T TlsLinks; + T Vdm; + T ReservedForNtRpc; + T DbgSsReserved[2]; + uint32_t HardErrorMode; + T Instrumentation[int_32_64]; + GUID ActivityId; + T SubProcessTag; + T PerflibData; + T EtwTraceData; + T WinSockData; + uint32_t GdiBatchCount; // TEB64 pointer + uint32_t IdealProcessorValue; + uint32_t GuaranteedStackBytes; + T ReservedForPerf; + T ReservedForOle; + uint32_t WaitingOnLoaderLock; + T SavedPriorityState; + T ReservedForCodeCoverage; + T ThreadPoolData; + type_32_64 spec2; + uint32_t MuiGeneration; + uint32_t IsImpersonating; + T NlsCache; + T pShimData; + uint16_t HeapVirtualAffinity; + uint16_t LowFragHeapDataSlot; + T CurrentTransactionHandle; + T ActiveFrame; + T FlsData; + T PreferredLanguages; + T UserPrefLanguages; + T MergedPrefLanguages; + uint32_t MuiImpersonation; + uint16_t CrossTebFlags; + union + { + uint16_t SameTebFlags; + struct + { + uint16_t SafeThunkCall : 1; + uint16_t InDebugPrint : 1; + uint16_t HasFiberData : 1; + uint16_t SkipThreadAttach : 1; + uint16_t WerInShipAssertCode : 1; + uint16_t RanProcessInit : 1; + uint16_t ClonedThread : 1; + uint16_t SuppressDebugMsg : 1; + uint16_t DisableUserStackWalk : 1; + uint16_t RtlExceptionAttached : 1; + uint16_t InitialThread : 1; + uint16_t SessionAware : 1; + uint16_t LoadOwner : 1; + uint16_t LoaderWorker : 1; + uint16_t SkipLoaderInit : 1; + uint16_t SpareSameTebBits : 1; + }; + }; + T TxnScopeEnterCallback; + T TxnScopeExitCallback; + T TxnScopeContext; + uint32_t LockCount; + uint32_t WowTebOffset; + T ResourceRetValue; + T ReservedForWdf; + uint64_t ReservedForCrt; + GUID EffectiveContainerId; +}; + +template +struct _PEB_T +{ + static_assert( std::is_same_v || std::is_same_v, "T must be uint32_t or uint64_t" ); + + uint8_t InheritedAddressSpace; + uint8_t ReadImageFileExecOptions; + uint8_t BeingDebugged; + union + { + uint8_t BitField; + struct + { + uint8_t ImageUsesLargePages : 1; + uint8_t IsProtectedProcess : 1; + uint8_t IsImageDynamicallyRelocated : 1; + uint8_t SkipPatchingUser32Forwarders : 1; + uint8_t IsPackagedProcess : 1; + uint8_t IsAppContainer : 1; + uint8_t IsProtectedProcessLight : 1; + uint8_t SpareBits : 1; + }; + }; + T Mutant; + T ImageBaseAddress; + T Ldr; + T ProcessParameters; + T SubSystemData; + T ProcessHeap; + T FastPebLock; + T AtlThunkSListPtr; + T IFEOKey; + union + { + T CrossProcessFlags; + struct + { + uint32_t ProcessInJob : 1; + uint32_t ProcessInitializing : 1; + uint32_t ProcessUsingVEH : 1; + uint32_t ProcessUsingVCH : 1; + uint32_t ProcessUsingFTH : 1; + uint32_t ReservedBits0 : 27; + }; + }; + union + { + T KernelCallbackTable; + T UserSharedInfoPtr; + }; + uint32_t SystemReserved; + uint32_t AtlThunkSListPtr32; + T ApiSetMap; + union + { + uint32_t TlsExpansionCounter; + T Padding2; + }; + T TlsBitmap; + uint32_t TlsBitmapBits[2]; + T ReadOnlySharedMemoryBase; + T SparePvoid0; + T ReadOnlyStaticServerData; + T AnsiCodePageData; + T OemCodePageData; + T UnicodeCaseTableData; + uint32_t NumberOfProcessors; + uint32_t NtGlobalFlag; + LARGE_INTEGER CriticalSectionTimeout; + T HeapSegmentReserve; + T HeapSegmentCommit; + T HeapDeCommitTotalFreeThreshold; + T HeapDeCommitFreeBlockThreshold; + uint32_t NumberOfHeaps; + uint32_t MaximumNumberOfHeaps; + T ProcessHeaps; + T GdiSharedHandleTable; + T ProcessStarterHelper; + union + { + uint32_t GdiDCAttributeList; + T Padding3; + }; + T LoaderLock; + uint32_t OSMajorVersion; + uint32_t OSMinorVersion; + uint16_t OSBuildNumber; + uint16_t OSCSDVersion; + uint32_t OSPlatformId; + uint32_t ImageSubsystem; + uint32_t ImageSubsystemMajorVersion; + union + { + uint32_t ImageSubsystemMinorVersion; + T Padding4; + }; + T ActiveProcessAffinityMask; + uint32_t GdiHandleBuffer[int_32_64]; + T PostProcessInitRoutine; + T TlsExpansionBitmap; + uint32_t TlsExpansionBitmapBits[32]; + union + { + uint32_t SessionId; + T Padding5; + }; + ULARGE_INTEGER AppCompatFlags; + ULARGE_INTEGER AppCompatFlagsUser; + T pShimData; + T AppCompatInfo; + _UNICODE_STRING_T CSDVersion; + T ActivationContextData; + T ProcessAssemblyStorageMap; + T SystemDefaultActivationContextData; + T SystemAssemblyStorageMap; + T MinimumStackCommit; + T FlsCallback; + _LIST_ENTRY_T FlsListHead; + T FlsBitmap; + uint32_t FlsBitmapBits[4]; + uint32_t FlsHighIndex; + T WerRegistrationData; + T WerShipAssertPtr; + T pUnused; + T pImageHeaderHash; + union + { + uint64_t TracingFlags; + struct + { + uint32_t HeapTracingEnabled : 1; + uint32_t CritSecTracingEnabled : 1; + uint32_t LibLoaderTracingEnabled : 1; + uint32_t SpareTracingBits : 29; + }; + }; + T CsrServerReadOnlySharedMemoryBase; +}; + +#pragma warning(default : 4201) + +template +struct _ACTCTXW_T +{ + uint32_t cbSize; + uint32_t dwFlags; + T lpSource; + uint16_t wProcessorArchitecture; + LANGID wLangId; + T lpAssemblyDirectory; + T lpResourceName; + T lpApplicationName; + T hModule; +}; + +template +struct _PROCESS_BASIC_INFORMATION_T +{ + NTSTATUS ExitStatus; + uint32_t Reserved0; + T PebBaseAddress; + T AffinityMask; + LONG BasePriority; + ULONG Reserved1; + T uUniqueProcessId; + T uInheritedFromUniqueProcessId; +}; + +template +struct _SECTION_BASIC_INFORMATION_T +{ + T Base; + uint32_t Attributes; + LARGE_INTEGER Size; +}; + +template +struct _PROCESS_EXTENDED_BASIC_INFORMATION_T +{ + T Size; // Must be set to structure size on input + _PROCESS_BASIC_INFORMATION_T BasicInfo; + struct + { + uint32_t IsProtectedProcess : 1; + uint32_t IsWow64Process : 1; + uint32_t IsProcessDeleting : 1; + uint32_t IsCrossSessionCreate : 1; + uint32_t IsFrozen : 1; + uint32_t IsBackground : 1; + uint32_t IsStronglyNamed : 1; + uint32_t SpareBits : 25; + }Flags; +}; + +template +struct _THREAD_BASIC_INFORMATION_T +{ + NTSTATUS ExitStatus; + T TebBaseAddress; + _CLIENT_ID_T ClientID; + T AffinityMask; + LONG Priority; + LONG BasePriority; +}; + +template +struct _VM_COUNTERS_T +{ + T PeakVirtualSize; + T VirtualSize; + uint32_t PageFaultCount; + T PeakWorkingSetSize; + T WorkingSetSize; + T QuotaPeakPagedPoolUsage; + T QuotaPagedPoolUsage; + T QuotaPeakNonPagedPoolUsage; + T QuotaNonPagedPoolUsage; + T PagefileUsage; + T PeakPagefileUsage; +}; + +template +struct _SYSTEM_THREAD_INFORMATION_T +{ + LARGE_INTEGER KernelTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER CreateTime; + uint32_t WaitTime; + T StartAddress; + _CLIENT_ID_T ClientId; + LONG Priority; + LONG BasePriority; + uint32_t ContextSwitches; + uint32_t ThreadState; + uint32_t WaitReason; +}; + +template +struct _SYSTEM_EXTENDED_THREAD_INFORMATION_T +{ + _SYSTEM_THREAD_INFORMATION_T ThreadInfo; + T StackBase; + T StackLimit; + T Win32StartAddress; + T TebBase; + T Reserved[3]; +}; + +template +struct _SYSTEM_PROCESS_INFORMATION_T +{ + uint32_t NextEntryOffset; + uint32_t NumberOfThreads; + LARGE_INTEGER WorkingSetPrivateSize; + uint32_t HardFaultCount; + uint32_t NumberOfThreadsHighWatermark; + ULONGLONG CycleTime; + LARGE_INTEGER CreateTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER KernelTime; + _UNICODE_STRING_T ImageName; + LONG BasePriority; + T UniqueProcessId; + T InheritedFromUniqueProcessId; + uint32_t HandleCount; + uint32_t SessionId; + T UniqueProcessKey; + _VM_COUNTERS_T VmCounters; + T PrivatePageCount; + IO_COUNTERS IoCounters; + _SYSTEM_EXTENDED_THREAD_INFORMATION_T Threads[1]; +}; + +template +struct _SYSTEM_HANDLE_T +{ + uint32_t ProcessId; + uint8_t ObjectTypeNumber; + uint8_t Flags; + uint16_t Handle; + T Object; + ACCESS_MASK GrantedAccess; +}; + +template +struct _SYSTEM_HANDLE_INFORMATION_T +{ + uint32_t HandleCount; + _SYSTEM_HANDLE_T Handles[1]; +}; + +template +struct _OBJECT_TYPE_INFORMATION_T +{ + _UNICODE_STRING_T Name; + uint32_t TotalNumberOfObjects; + uint32_t TotalNumberOfHandles; + uint32_t TotalPagedPoolUsage; + uint32_t TotalNonPagedPoolUsage; + uint32_t TotalNamePoolUsage; + uint32_t TotalHandleTableUsage; + uint32_t HighWaterNumberOfObjects; + uint32_t HighWaterNumberOfHandles; + uint32_t HighWaterPagedPoolUsage; + uint32_t HighWaterNonPagedPoolUsage; + uint32_t HighWaterNamePoolUsage; + uint32_t HighWaterHandleTableUsage; + uint32_t InvalidAttributes; + GENERIC_MAPPING GenericMapping; + uint32_t ValidAccess; + BOOLEAN SecurityRequired; + BOOLEAN MaintainHandleCount; + uint16_t MaintainTypeList; + POOL_TYPE PoolType; + uint32_t PagedPoolUsage; + uint32_t NonPagedPoolUsage; +}; + +template +struct _OBJECT_ATTRIBUTES_T +{ + uint32_t Length; + T RootDirectory; + T ObjectName; + uint32_t Attributes; + T SecurityDescriptor; // Points to type SECURITY_DESCRIPTOR + T SecurityQualityOfService; // Points to type SECURITY_QUALITY_OF_SERVICE +}; + +struct _XSAVE_FORMAT64 +{ + uint16_t ControlWord; + uint16_t StatusWord; + uint8_t TagWord; + uint8_t Reserved1; + uint16_t ErrorOpcode; + uint32_t ErrorOffset; + uint16_t ErrorSelector; + uint16_t Reserved2; + uint32_t DataOffset; + uint16_t DataSelector; + uint16_t Reserved3; + uint32_t MxCsr; + uint32_t MxCsr_Mask; + _M128A FloatRegisters[8]; + _M128A XmmRegisters[16]; + uint8_t Reserved4[96]; +}; + +template +struct _CONTEXT_T; + +template<> +struct _CONTEXT_T +{ + uint32_t ContextFlags; + uint32_t Dr0; + uint32_t Dr1; + uint32_t Dr2; + uint32_t Dr3; + uint32_t Dr6; + uint32_t Dr7; + WOW64_FLOATING_SAVE_AREA FloatSave; + uint32_t SegGs; + uint32_t SegFs; + uint32_t SegEs; + uint32_t SegDs; + uint32_t Edi; + uint32_t Esi; + uint32_t Ebx; + uint32_t Edx; + uint32_t Ecx; + uint32_t Eax; + uint32_t Ebp; + uint32_t Eip; + uint32_t SegCs; // MUST BE SANITIZED + uint32_t EFlags; // MUST BE SANITIZED + uint32_t Esp; + uint32_t SegSs; + uint8_t ExtendedRegisters[WOW64_MAXIMUM_SUPPORTED_EXTENSION]; +}; + +template<> +struct _CONTEXT_T +{ + uint64_t P1Home; + uint64_t P2Home; + uint64_t P3Home; + uint64_t P4Home; + uint64_t P5Home; + uint64_t P6Home; + uint32_t ContextFlags; + uint32_t MxCsr; + uint16_t SegCs; + uint16_t SegDs; + uint16_t SegEs; + uint16_t SegFs; + uint16_t SegGs; + uint16_t SegSs; + uint32_t EFlags; + uint64_t Dr0; + uint64_t Dr1; + uint64_t Dr2; + uint64_t Dr3; + uint64_t Dr6; + uint64_t Dr7; + uint64_t Rax; + uint64_t Rcx; + uint64_t Rdx; + uint64_t Rbx; + uint64_t Rsp; + uint64_t Rbp; + uint64_t Rsi; + uint64_t Rdi; + uint64_t R8; + uint64_t R9; + uint64_t R10; + uint64_t R11; + uint64_t R12; + uint64_t R13; + uint64_t R14; + uint64_t R15; + uint64_t 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]; + uint64_t VectorControl; + uint64_t DebugControl; + uint64_t LastBranchToRip; + uint64_t LastBranchFromRip; + uint64_t LastExceptionToRip; + uint64_t LastExceptionFromRip; + + _CONTEXT_T& FromCtx32( const _CONTEXT_T& ctx32 ) + { + ContextFlags = ctx32.ContextFlags; + Dr0 = ctx32.Dr0; + Dr1 = ctx32.Dr1; + Dr2 = ctx32.Dr2; + Dr3 = ctx32.Dr3; + Dr6 = ctx32.Dr6; + Dr7 = ctx32.Dr7; + SegGs = static_cast(ctx32.SegGs); + SegFs = static_cast(ctx32.SegFs); + SegEs = static_cast(ctx32.SegEs); + SegDs = static_cast(ctx32.SegDs); + SegCs = static_cast(ctx32.SegCs); + SegSs = static_cast(ctx32.SegSs); + Rdi = ctx32.Edi; + Rsi = ctx32.Esi; + Rbx = ctx32.Ebx; + Rdx = ctx32.Edx; + Rcx = ctx32.Ecx; + Rax = ctx32.Eax; + Rbp = ctx32.Ebp; + Rip = ctx32.Eip; + Rsp = ctx32.Esp; + EFlags = ctx32.EFlags; + + return *this; + } +}; + +#ifndef CONTEXT_AMD64 +#define CONTEXT_AMD64 0x100000 +#endif + +#define CONTEXT64_CONTROL (CONTEXT_AMD64 | 0x1L) +#define CONTEXT64_INTEGER (CONTEXT_AMD64 | 0x2L) +#define CONTEXT64_SEGMENTS (CONTEXT_AMD64 | 0x4L) +#define CONTEXT64_FLOATING_POINT (CONTEXT_AMD64 | 0x8L) +#define CONTEXT64_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x10L) +#define CONTEXT64_FULL (CONTEXT64_CONTROL | CONTEXT64_INTEGER | CONTEXT64_FLOATING_POINT) +#define CONTEXT64_ALL (CONTEXT64_CONTROL | CONTEXT64_INTEGER | CONTEXT64_SEGMENTS | CONTEXT64_FLOATING_POINT | CONTEXT64_DEBUG_REGISTERS) +#define CONTEXT64_XSTATE (CONTEXT_AMD64 | 0x20L) + +template +struct _PEB_LDR_DATA2_T +{ + uint32_t Length; + uint8_t Initialized; + T SsHandle; + _LIST_ENTRY_T InLoadOrderModuleList; + _LIST_ENTRY_T InMemoryOrderModuleList; + _LIST_ENTRY_T InInitializationOrderModuleList; + T EntryInProgress; + uint8_t ShutdownInProgress; + T ShutdownThreadId; +}; + +template +struct _LDR_DATA_TABLE_ENTRY_BASE_T +{ + _LIST_ENTRY_T InLoadOrderLinks; + _LIST_ENTRY_T InMemoryOrderLinks; + _LIST_ENTRY_T InInitializationOrderLinks; + T DllBase; + T EntryPoint; + uint32_t SizeOfImage; + _UNICODE_STRING_T FullDllName; + _UNICODE_STRING_T BaseDllName; + uint32_t Flags; + uint16_t LoadCount; + uint16_t TlsIndex; + _LIST_ENTRY_T HashLinks; + uint32_t TimeDateStamp; + T EntryPointActivationContext; + T PatchInformation; +}; + +template +struct _RTL_INVERTED_FUNCTION_TABLE_ENTRY +{ + T ExceptionDirectory; // PIMAGE_RUNTIME_FUNCTION_ENTRY + T ImageBase; + uint32_t ImageSize; + uint32_t SizeOfTable; +}; + +using _UNICODE_STRING32 = _UNICODE_STRING_T; +using _UNICODE_STRING64 = _UNICODE_STRING_T; +using UNICODE_STRING_T = _UNICODE_STRING_T; + +using _PEB32 = _PEB_T; +using _PEB64 = _PEB_T; +using PEB_T = _PEB_T; + +using _TEB32 = _TEB_T; +using _TEB64 = _TEB_T; +using TEB_T = _TEB_T; + +using _PEB_LDR_DATA232 = _PEB_LDR_DATA2_T; +using _PEB_LDR_DATA264 = _PEB_LDR_DATA2_T; +using PEB_LDR_DATA_T = _PEB_LDR_DATA2_T; + +using _LDR_DATA_TABLE_ENTRY_BASE32 = _LDR_DATA_TABLE_ENTRY_BASE_T; +using _LDR_DATA_TABLE_ENTRY_BASE64 = _LDR_DATA_TABLE_ENTRY_BASE_T; +using LDR_DATA_TABLE_ENTRY_BASE_T = _LDR_DATA_TABLE_ENTRY_BASE_T; + +using _CONTEXT32 = _CONTEXT_T; +using _CONTEXT64 = _CONTEXT_T; +using CONTEXT_T = _CONTEXT_T; + +using _SECTION_BASIC_INFORMATION32 = _SECTION_BASIC_INFORMATION_T; +using _SECTION_BASIC_INFORMATION64 = _SECTION_BASIC_INFORMATION_T; +using SECTION_BASIC_INFORMATION_T = _SECTION_BASIC_INFORMATION_T; + +using _SYSTEM_HANDLE_INFORMATION32 = _SYSTEM_HANDLE_INFORMATION_T; +using _SYSTEM_HANDLE_INFORMATION64 = _SYSTEM_HANDLE_INFORMATION_T; +using SYSTEM_HANDLE_INFORMATION_T = _SYSTEM_HANDLE_INFORMATION_T; + +using _OBJECT_TYPE_INFORMATION32 = _OBJECT_TYPE_INFORMATION_T; +using _OBJECT_TYPE_INFORMATION64 = _OBJECT_TYPE_INFORMATION_T; +using OBJECT_TYPE_INFORMATION_T = _OBJECT_TYPE_INFORMATION_T; + +using _OBJECT_ATTRIBUTES32 = _OBJECT_ATTRIBUTES_T; +using _OBJECT_ATTRIBUTES64 = _OBJECT_ATTRIBUTES_T; +using OBJECT_ATTRIBUTES_T = _OBJECT_ATTRIBUTES_T; + +using _ACTCTXW32 = _ACTCTXW_T; +using _ACTCTXW64 = _ACTCTXW_T; +using ACTCTXW_T = _ACTCTXW_T; +} + +#include "ApiSet.h" + +// OS specific structures +#include "Win7Specific.h" +#include "Win8Specific.h" + +#ifdef XP_BUILD +#include "WinXPSpecific.h" +#endif diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Types.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Types.h new file mode 100644 index 0000000..328f683 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Types.h @@ -0,0 +1,84 @@ +#pragma once + +#include "NativeStructures.h" +#include "FunctionTypes.h" + +#include +#include +#include + +namespace blackbone +{ + +using ptr_t = uint64_t; // Generic pointer in remote process +using module_t = ptr_t; // Module base pointer + +// Type of barrier +enum eBarrier +{ + wow_32_32 = 0, // Both processes are WoW64 + wow_64_64, // Both processes are x64 + wow_32_64, // Managing x64 process from WoW64 process + wow_64_32, // Managing WOW64 process from x64 process +}; + +struct Wow64Barrier +{ + eBarrier type = wow_32_32; + bool sourceWow64 = false; + bool targetWow64 = false; + bool x86OS = false; + bool mismatch = false; +}; + +// Module type +enum eModType +{ + mt_mod32, // 32 bit module + mt_mod64, // 64 bit module + mt_default, // type is deduced from target process + mt_unknown // Failed to detect type +}; + +// Module search method +enum eModSeachType +{ + LdrList, // InLoadOrder list + Sections, // Scan for section objects + PEHeaders, // Scan for PE headers in memory +}; + +// Switch created wow64 thread to long mode +enum eThreadModeSwitch +{ + NoSwitch, // Never switch + ForceSwitch, // Always switch + AutoSwitch // Switch depending on wow64 barrier +}; + +// Module info +struct ModuleData +{ + module_t baseAddress; // Base image address + std::wstring name; // File name + std::wstring fullPath; // Full file path + uint32_t size; // Size of image + eModType type; // Module type + ptr_t ldrPtr; // LDR_DATA_TABLE_ENTRY_BASE_T address + bool manual; // Image is manually mapped + + + bool operator ==(const ModuleData& other) const + { + return (baseAddress == other.baseAddress); + } + + bool operator <(const ModuleData& other) + { + return baseAddress < other.baseAddress; + } +}; + +using ModuleDataPtr = std::shared_ptr; + +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Win7Specific.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Win7Specific.h new file mode 100644 index 0000000..6f0ad5c --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Win7Specific.h @@ -0,0 +1,27 @@ +#pragma once + +#include "Winheaders.h" + +namespace blackbone +{ +template +struct _LDR_DATA_TABLE_ENTRY_W7 : _LDR_DATA_TABLE_ENTRY_BASE_T +{ + _LIST_ENTRY_T ForwarderLinks; + _LIST_ENTRY_T ServiceTagLinks; + _LIST_ENTRY_T StaticLinks; + T ContextInformation; + uint32_t OriginalBase; + LARGE_INTEGER LoadTime; +}; + +template +struct _RTL_INVERTED_FUNCTION_TABLE7 +{ + uint32_t Count; + uint32_t MaxCount; + uint32_t Epoch; + _RTL_INVERTED_FUNCTION_TABLE_ENTRY Entries[0x200]; +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Win8Specific.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Win8Specific.h new file mode 100644 index 0000000..ca4d802 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Win8Specific.h @@ -0,0 +1,74 @@ +#pragma once + +#include "Winheaders.h" + +namespace blackbone +{ + +template +struct _RTL_RB_TREE +{ + T Root; + T Min; +}; + +template +struct _RTL_BALANCED_NODE +{ + T Left; + T Right; + T ParentValue; +}; + +template +struct _LDR_DDAG_NODE +{ + _LIST_ENTRY_T Modules; + T ServiceTagList; + uint32_t LoadCount; + uint32_t ReferenceCount; + uint32_t DependencyCount; + T RemovalLink; + T IncomingDependencies; + _LDR_DDAG_STATE State; + T CondenseLink; + uint32_t PreorderNumber; + uint32_t LowestLink; +}; + +template +struct _LDR_DATA_TABLE_ENTRY_W8 : _LDR_DATA_TABLE_ENTRY_BASE_T +{ + T DdagNode; // _LDR_DDAG_NODE* + _LIST_ENTRY_T NodeModuleLink; + T SnapContext; + T ParentDllBase; + T SwitchBackContext; + _RTL_BALANCED_NODE BaseAddressIndexNode; + _RTL_BALANCED_NODE MappingInfoIndexNode; + T OriginalBase; + LARGE_INTEGER LoadTime; + uint32_t BaseNameHashValue; + _LDR_DLL_LOAD_REASON LoadReason; + uint32_t ImplicitPathOptions; +}; + +template +struct _RTL_INVERTED_FUNCTION_TABLE8 +{ + ULONG Count; + ULONG MaxCount; + ULONG Epoch; + UCHAR Overflow; + _RTL_INVERTED_FUNCTION_TABLE_ENTRY Entries[0x200]; +}; + +using _LDR_DATA_TABLE_ENTRY_W832 = _LDR_DATA_TABLE_ENTRY_W8; +using _LDR_DATA_TABLE_ENTRY_W864 = _LDR_DATA_TABLE_ENTRY_W8; +using LDR_DATA_TABLE_ENTRY_W8T = _LDR_DATA_TABLE_ENTRY_W8; + +using _LDR_DDAG_NODE_32 = _LDR_DDAG_NODE; +using _LDR_DDAG_NODE_64 = _LDR_DDAG_NODE; +using LDR_DDAG_NODE_T = _LDR_DDAG_NODE; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/WinXPSpecific.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/WinXPSpecific.h new file mode 100644 index 0000000..82bc30a --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/WinXPSpecific.h @@ -0,0 +1,37 @@ +#pragma once + +#include "Winheaders.h" + +namespace blackbone +{ + +#pragma warning(push) +#pragma warning(disable : 4201) +typedef struct _IMAGE_DELAYLOAD_DESCRIPTOR +{ + union + { + DWORD AllAttributes; + struct { + DWORD RvaBased : 1; // Delay load version 2 + DWORD ReservedAttributes : 31; + }; + } Attributes; + + DWORD DllNameRVA; // RVA to the name of the target library (NULL-terminate ASCII string) + DWORD ModuleHandleRVA; // RVA to the HMODULE caching location (PHMODULE) + DWORD ImportAddressTableRVA; // RVA to the start of the IAT (PIMAGE_THUNK_DATA) + DWORD ImportNameTableRVA; // RVA to the start of the name table (PIMAGE_THUNK_DATA::AddressOfData) + DWORD BoundImportAddressTableRVA; // RVA to an optional bound IAT + DWORD UnloadInformationTableRVA; // RVA to an optional unload info table + DWORD TimeDateStamp; // 0 if not bound, Otherwise, date/time of the target DLL +} IMAGE_DELAYLOAD_DESCRIPTOR, *PIMAGE_DELAYLOAD_DESCRIPTOR; +#pragma warning(pop) + +typedef struct _EXCEPTION_REGISTRATION_RECORD +{ + _EXCEPTION_REGISTRATION_RECORD *Next; + PEXCEPTION_ROUTINE Handler; +} EXCEPTION_REGISTRATION_RECORD, *PEXCEPTION_REGISTRATION_RECORD; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Winheaders.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Winheaders.h new file mode 100644 index 0000000..deb0274 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Include/Winheaders.h @@ -0,0 +1,16 @@ +#pragma once + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif + +#include +#include +#include +#include +#include + +#pragma warning(push) +#pragma warning(disable : 4005) +#include +#pragma warning(pop) \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlerCdecl.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlerCdecl.h new file mode 100644 index 0000000..463f4e5 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlerCdecl.h @@ -0,0 +1,69 @@ +#pragma once + +namespace blackbone +{ + +template +struct HookHandler : public DetourBase +{ + using ReturnType = std::conditional_t, int, R>; + + using type = R( __cdecl* )(Args...); + using hktype = R( __cdecl* )(Args&...); + using hktypeC = R( C::* )(Args&...); + + // + // Workaround for void return type + // + using typeR = ReturnType( __cdecl* )(Args...); + using hktypeR = ReturnType( __cdecl* )(Args&...); + using hktypeCR = ReturnType( C::* )(Args&...); + + static __declspec(noinline) ReturnType __cdecl Handler( Args... args ) + { + HookHandler* pInst = (HookHandler*)((_NT_TIB*)NtCurrentTeb())->ArbitraryUserPointer; + return pInst->HandlerP( std::forward( args )... ); + } + + ReturnType HandlerP( Args&&... args ) + { + ReturnType val_new, val_original; + + DisableHook(); + + if (_order == CallOrder::HookFirst) + { + val_new = CallCallback( std::forward( args )... ); + val_original = CallOriginal( std::forward( args )... ); + } + else if (_order == CallOrder::HookLast) + { + val_original = CallOriginal( std::forward( args )... ); + val_new = CallCallback( std::forward( args )... ); + } + else + { + val_original = val_new = CallCallback( std::forward( args )... ); + } + + if (this->_hooked) + EnableHook(); + + return (_retType == ReturnMethod::UseOriginal ? val_original : val_new); + } + + inline ReturnType CallOriginal( Args&&... args ) + { + return (reinterpret_cast(_callOriginal))(args...); + } + + inline ReturnType CallCallback( Args&&... args ) + { + if (_callbackClass != nullptr) + return (reinterpret_cast(_callbackClass)->*brutal_cast(_callback))(args...); + else + return (reinterpret_cast(_callback))(args...); + } +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlerFastcall.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlerFastcall.h new file mode 100644 index 0000000..fc23432 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlerFastcall.h @@ -0,0 +1,69 @@ +#pragma once + +namespace blackbone +{ + +template +struct HookHandler : public DetourBase +{ + using ReturnType = std::conditional_t, int, R>; + + using type = R( __fastcall* )(Args...); + using hktype = R( __fastcall* )(Args&...); + using hktypeC = R( C::* )(Args&...); + + // + // Workaround for void return type + // + using typeR = ReturnType( __fastcall* )(Args...); + using hktypeR = ReturnType( __fastcall* )(Args&...); + using hktypeCR = ReturnType( C::* )(Args&...); + + static __declspec(noinline) ReturnType __fastcall Handler( Args... args ) + { + HookHandler* pInst = (HookHandler*)((_NT_TIB*)NtCurrentTeb())->ArbitraryUserPointer; + return pInst->HandlerP( std::forward( args )... ); + } + + ReturnType HandlerP( Args&&... args ) + { + ReturnType val_new, val_original; + + DisableHook(); + + if (_order == CallOrder::HookFirst) + { + val_new = CallCallback( std::forward( args )... ); + val_original = CallOriginal( std::forward( args )... ); + } + else if (_order == CallOrder::HookLast) + { + val_original = CallOriginal( std::forward( args )... ); + val_new = CallCallback( std::forward( args )... ); + } + else + { + val_original = val_new = CallCallback( std::forward( args )... ); + } + + if (this->_hooked) + EnableHook(); + + return (_retType == ReturnMethod::UseOriginal ? val_original : val_new); + } + + inline ReturnType CallOriginal( Args&&... args ) + { + return (reinterpret_cast(_callOriginal))(args...); + } + + inline ReturnType CallCallback( Args&&... args ) + { + if (_callbackClass != nullptr) + return ((C*)_callbackClass->*brutal_cast(_callback))(args...); + else + return (reinterpret_cast(_callback))(args...); + } +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlerStdcall.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlerStdcall.h new file mode 100644 index 0000000..323880c --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlerStdcall.h @@ -0,0 +1,69 @@ +#pragma once + +namespace blackbone +{ + +template +struct HookHandler : public DetourBase +{ + using ReturnType = std::conditional_t, int, R>; + + using type = R( __stdcall* )(Args...); + using hktype = R( __stdcall* )(Args&...); + using hktypeC = R( C::* )(Args&...); + + // + // Workaround for void return type + // + using typeR = ReturnType( __stdcall* )(Args...); + using hktypeR = ReturnType( __stdcall* )(Args&...); + using hktypeCR = ReturnType( C::* )(Args&...); + + static __declspec(noinline) ReturnType __stdcall Handler( Args... args ) + { + HookHandler* pInst = (HookHandler*)((_NT_TIB*)NtCurrentTeb())->ArbitraryUserPointer; + return pInst->HandlerP( std::forward( args )... ); + } + + ReturnType HandlerP( Args&&... args ) + { + ReturnType val_new, val_original; + + DisableHook(); + + if (_order == CallOrder::HookFirst) + { + val_new = CallCallback( std::forward( args )... ); + val_original = CallOriginal( std::forward( args )... ); + } + else if (_order == CallOrder::HookLast) + { + val_original = CallOriginal( std::forward( args )... ); + val_new = CallCallback( std::forward( args )... ); + } + else + { + val_original = val_new = CallCallback( std::forward( args )... ); + } + + if (this->_hooked) + EnableHook(); + + return (_retType == ReturnMethod::UseOriginal ? val_original : val_new); + } + + inline ReturnType CallOriginal( Args&&... args ) + { + return (reinterpret_cast(_callOriginal))(args...); + } + + inline ReturnType CallCallback( Args&&... args ) + { + if (_callbackClass != nullptr) + return ((C*)_callbackClass->*brutal_cast(_callback))(args...); + else + return (reinterpret_cast(_callback))(args...); + } +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlerThiscall.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlerThiscall.h new file mode 100644 index 0000000..3cd502e --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlerThiscall.h @@ -0,0 +1,69 @@ +#pragma once + +namespace blackbone +{ + +template +struct HookHandler : public DetourBase +{ + using ReturnType = std::conditional_t, int, R>; + + using type = R( __thiscall* )(Args...); + using hktype = R( __stdcall* )(Args&...); + using hktypeC = R( C::* )(Args&...); + + // + // Workaround for void return type + // + using typeR = ReturnType( __thiscall* )(Args...); + using hktypeR = ReturnType( __stdcall* )(Args&...); + using hktypeCR = ReturnType( C::* )(Args&...); + + static __declspec(noinline) ReturnType __thiscall Handler( Args... args ) + { + HookHandler* pInst = (HookHandler*)((_NT_TIB*)NtCurrentTeb())->ArbitraryUserPointer; + return pInst->HandlerP( std::forward( args )... ); + } + + ReturnType HandlerP( Args&&... args ) + { + ReturnType val_new, val_original; + + DisableHook(); + + if (_order == CallOrder::HookFirst) + { + val_new = CallCallback( std::forward( args )... ); + val_original = CallOriginal( std::forward( args )... ); + } + else if (_order == CallOrder::HookLast) + { + val_original = CallOriginal( std::forward( args )... ); + val_new = CallCallback( std::forward( args )... ); + } + else + { + val_original = val_new = CallCallback( std::forward( args )... ); + } + + if (this->_hooked) + EnableHook(); + + return (_retType == ReturnMethod::UseOriginal ? val_original : val_new); + } + + inline ReturnType CallOriginal( Args&&... args ) + { + return (reinterpret_cast(_callOriginal))( args...); + } + + inline ReturnType CallCallback( Args&&... args ) + { + if (_callbackClass != nullptr) + return ((C*)_callbackClass->*brutal_cast(_callback))( args...); + else + return (reinterpret_cast(_callback))( args...); + } +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlers.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlers.h new file mode 100644 index 0000000..ad90a00 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/HookHandlers.h @@ -0,0 +1,19 @@ +#pragma once + +#include "LocalHookBase.h" + +namespace blackbone +{ + class BLACKBONE_API NoClass { }; + + template + struct HookHandler; +} + +#include "HookHandlerCdecl.h" + +#ifndef USE64 +#include "HookHandlerStdcall.h" +#include "HookHandlerThiscall.h" +#include "HookHandlerFastcall.h" +#endif \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/LocalHook.hpp b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/LocalHook.hpp new file mode 100644 index 0000000..8aad722 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/LocalHook.hpp @@ -0,0 +1,252 @@ +#pragma once + +#include "HookHandlers.h" +#include "../Process/Process.h" + +namespace blackbone +{ + +template +class Detour: public HookHandler +{ +public: + using type = typename HookHandler::type; + using hktype = typename HookHandler::hktype; + using hktypeC = typename HookHandler::hktypeC; + +public: + Detour() + { + this->_internalHandler = &HookHandler::Handler; + } + + ~Detour() + { + Restore(); + } + + /// + /// Hook function + /// + /// Target function address + /// Hook function address + /// Hooking method + /// Call order. Hook before original or vice versa + /// Return value. Use origianl or value from hook + /// true on success + bool Hook( + type ptr, + hktype hkPtr, + HookType::e type, + CallOrder::e order = CallOrder::HookFirst, + ReturnMethod::e retType = ReturnMethod::UseOriginal + ) + { + if (this->_hooked) + return false; + + this->_type = type; + this->_order = order; + this->_retType = retType; + this->_callOriginal = this->_original = ptr; + this->_callback = hkPtr; + + if (!DetourBase::AllocateBuffer( reinterpret_cast(ptr) )) + return false; + + switch (this->_type) + { + case HookType::Inline: + return HookInline(); + + case HookType::Int3: + return HookInt3(); + + case HookType::HWBP: + return HookHWBP(); + + default: + return false; + } + } + + /// + /// Hook function + /// + /// Target function address + /// Hook class member address + /// Hook class address + /// Hooking method + /// Call order. Hook before original or vice versa + /// Return value. Use origianl or value from hook + /// true on success + bool Hook( + type Ptr, + hktypeC hkPtr, + C* pClass, + HookType::e type, + CallOrder::e order = CallOrder::HookFirst, + ReturnMethod::e retType = ReturnMethod::UseOriginal + ) + { + this->_callbackClass = pClass; + return Hook( Ptr, brutal_cast(hkPtr), type, order, retType ); + } + + + /// + /// Restore hooked function + /// + /// true on success, false if not hooked + bool Restore() + { + if (!this->_hooked) + return false; + + switch (this->_type) + { + case HookType::Inline: + case HookType::InternalInline: + case HookType::Int3: + { + DWORD flOld = 0; + if (!VirtualProtect(this->_original, this->_origSize, PAGE_EXECUTE_READWRITE, &flOld)) + return false; + memcpy(this->_original, this->_origCode, this->_origSize); + VirtualProtect(this->_original, this->_origSize, flOld, &flOld); + } + break; + + + case HookType::HWBP: + { + Process thisProc; + thisProc.Attach( GetCurrentProcessId() ); + + for (auto& thd : thisProc.threads().getAll()) + thd->RemoveHWBP( reinterpret_cast(this->_original) ); + + this->_hwbpIdx.clear(); + } + break; + + default: + break; + } + + this->_hooked = false; + return true; + } + +private: + + /// + /// Perform inline hook + /// + /// true on success + bool HookInline() + { + auto jmpToHook = AsmFactory::GetAssembler(); + auto jmpToThunk = AsmFactory::GetAssembler(); + + // + // Construct jump to thunk + // +#ifdef USE64 + (*jmpToThunk)->mov( asmjit::host::rax, (uint64_t)this->_buf ); + (*jmpToThunk)->jmp( asmjit::host::rax ); + + this->_origSize = (*jmpToThunk)->getCodeSize(); +#else + (*jmpToThunk)->jmp( (asmjit::Ptr)this->_buf ); + this->_origSize = (*jmpToThunk)->getCodeSize(); +#endif + + DetourBase::CopyOldCode( (uint8_t*)this->_original ); + + // Construct jump to hook handler +#ifdef USE64 + // mov gs:[0x28], this + (*jmpToHook)->mov( asmjit::host::rax, (uint64_t)this ); + (*jmpToHook)->mov( asmjit::host::qword_ptr_abs( 0x28 ).setSegment( asmjit::host::gs ), asmjit::host::rax ); +#else + // mov fs:[0x14], this + (*jmpToHook)->mov( asmjit::host::dword_ptr_abs( 0x14 ).setSegment( asmjit::host::fs ) , (uint32_t)this ); +#endif // USE64 + + (*jmpToHook)->jmp( (asmjit::Ptr)&HookHandler::Handler ); + (*jmpToHook)->relocCode( this->_buf ); + + (*jmpToThunk)->setBaseAddress( (uintptr_t)this->_original ); + auto codeSize = (*jmpToThunk)->relocCode( this->_newCode ); + + DWORD flOld = 0; + if (!VirtualProtect( this->_original, codeSize, PAGE_EXECUTE_READWRITE, &flOld )) + return false; + + memcpy( this->_original, this->_newCode, codeSize ); + + VirtualProtect( this->_original, codeSize, flOld, &flOld ); + + this->_hooked = (codeSize != 0); + return this->_hooked; + } + + /// + /// Perform int3 hook + /// + /// true on success + bool HookInt3() + { + this->_newCode[0] = 0xCC; + this->_origSize = sizeof( this->_newCode[0] ); + + // Setup handler + if (this->_vecHandler == nullptr) + this->_vecHandler = AddVectoredExceptionHandler( 1, &DetourBase::VectoredHandler ); + + if (!this->_vecHandler) + return false; + + this->_breakpoints.insert( std::make_pair( this->_original, (DetourBase*)this ) ); + + // Save original code + memcpy( this->_origCode, this->_original, this->_origSize ); + + // Write break instruction + DWORD flOld = 0; + if (!VirtualProtect(this->_original, this->_origSize, PAGE_EXECUTE_READWRITE, &flOld)) + return false; + memcpy( this->_original, this->_newCode, this->_origSize ); + VirtualProtect( this->_original, this->_origSize, flOld, &flOld ); + + return this->_hooked = TRUE; + } + + /// + /// Perform hardware breakpoint hook + /// + /// true on success + bool HookHWBP() + { + Process thisProc; + thisProc.Attach( GetCurrentProcessId() ); + + // Setup handler + if (this->_vecHandler == nullptr) + this->_vecHandler = AddVectoredExceptionHandler( 1, &DetourBase::VectoredHandler ); + + if (!this->_vecHandler) + return false; + + this->_breakpoints.insert( std::make_pair( this->_original, (DetourBase*)this ) ); + + // Add breakpoint to every thread + for (auto& thd : thisProc.threads().getAll()) + this->_hwbpIdx[thd->id()] = thd->AddHWBP( reinterpret_cast(this->_original), hwbp_execute, hwbp_1 ).result(); + + return this->_hooked = true; + } +}; + +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/LocalHookBase.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/LocalHookBase.h new file mode 100644 index 0000000..cb0ee9a --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/LocalHookBase.h @@ -0,0 +1,128 @@ +#pragma once + +#include "../Config.h" +#include "../Include/Winheaders.h" +#include "../Asm/AsmFactory.h" +#include "../Asm/LDasm.h" +#include "../Include/Macro.h" + +#include +#include + +namespace blackbone +{ + +namespace CallOrder +{ +enum e +{ + HookFirst, // Hook called before original function + HookLast, // Hook called after original function + NoOriginal, // Original function doesn't get called +}; +} + +namespace HookType +{ + enum e + { + Inline, // Patch first few bytes + Int3, // Place Int3 breakpoint + HWBP, // Set hardware breakpoint + + // Reserved for internal use + VTable, + InternalInline + }; +} + +namespace ReturnMethod +{ + enum e + { + UseNew, // Return value returned by hook + UseOriginal // Return original function value + }; +} + +class DetourBase +{ + using mapIdx = std::unordered_map; + +public: + BLACKBONE_API DetourBase(); + BLACKBONE_API ~DetourBase(); + +protected: + + /// + /// Allocate detour buffer as close to target as possible + /// + /// Target address + /// true on success + BLACKBONE_API bool AllocateBuffer( uint8_t* nearest ); + + /// + /// Temporarily disable hook + /// + /// true on success + BLACKBONE_API bool DisableHook(); + + /// + /// Enable disabled hook + /// + /// true on success + BLACKBONE_API bool EnableHook(); + + /// + /// Toggle hardware breakpoint for current thread + /// + /// Breakpoint index ( 0-4 ) + /// true to enable, false to disable + /// true on success + BLACKBONE_API bool ToggleHBP( int index, bool enable ); + + /// + /// Copy original function bytes + /// + /// Origianl function address + BLACKBONE_API void CopyOldCode( uint8_t* Ptr ); + + /// + /// Exception handlers + /// + /// Exception information + /// Exception disposition + BLACKBONE_API static LONG NTAPI VectoredHandler ( PEXCEPTION_POINTERS excpt ); + BLACKBONE_API static LONG NTAPI Int3Handler ( PEXCEPTION_POINTERS excpt ); + BLACKBONE_API static LONG NTAPI AVHandler ( PEXCEPTION_POINTERS excpt ); + BLACKBONE_API static LONG NTAPI StepHandler ( PEXCEPTION_POINTERS excpt ); + +protected: + bool _hooked = false; // Hook is installed + + void* _callback = nullptr; // User supplied hook function + void* _callbackClass = nullptr; // Class pointer for user hook + void* _original = nullptr; // Original function address + void* _internalHandler = nullptr; // Pointer to hook handler + void* _callOriginal = nullptr; // Pointer to original function + + mapIdx _hwbpIdx; // Thread HWBP index + size_t _origSize = 0; // Original code size + uint8_t* _buf = nullptr; // Trampoline buffer + uint8_t* _origCode = nullptr; // Original function bytes + uint8_t* _origThunk = nullptr; // Original bytes adjusted for relocation + uint8_t* _newCode = nullptr; // Trampoline bytes + + HookType::e _type = HookType::Inline; + CallOrder::e _order = CallOrder::HookFirst; + ReturnMethod::e _retType = ReturnMethod::UseOriginal; + + // Global hook instances relationship + BLACKBONE_API static std::unordered_map _breakpoints; + + // Exception handler + BLACKBONE_API static void* _vecHandler; +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/TraceHook.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/TraceHook.h new file mode 100644 index 0000000..5da37bb --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/TraceHook.h @@ -0,0 +1,161 @@ +#pragma once + +#include "../Include/WinHeaders.h" + +#include +#include +#include +#include + +namespace blackbone +{ + +enum TraceState +{ + TS_Start, // Initial state. Internal use only + TS_Step, // Do single-step + TS_StepOut, // Break on function return + TS_StepInto, // Step into specific function + TS_WaitReturn, // Wait for break-on-return +}; + +struct PathNode +{ + TraceState action; + uintptr_t arg; + + PathNode( TraceState _action, uintptr_t _arg = 0 ) + : action( _action ) + , arg( _arg ) { } +}; + + +/// +/// Hook-related data +/// +struct HookContext +{ + using mapHooks = std::unordered_map>; + using vecState = std::vector; + + uintptr_t lastIP = 0; // Previous EIP/RIP value + uintptr_t lastSP = 0; // Previous ESP/RSP value + uintptr_t targetPtr = 0; // Address causing exception + uintptr_t origPtrVal = 0; // Original pointer value + uintptr_t checkIP = 0; // Address of instruction that checks target pointer + uintptr_t breakValue = 0; // Value used to generate exception + uintptr_t stateIdx = 0; // Current state index in state vector + + TraceState state = TS_Start; // Current tracing state + vecState tracePath; // Function trace path + mapHooks hooks; // List of hooks associated with current pointer + + + /// + /// Reset tracing state + /// + void reset() + { + state = TS_Start; + lastIP = lastSP = 0; + stateIdx = 0; + + // Mark hooks as non-called + for (auto& item : hooks) + item.second.second = false; + } +}; + +class TraceHook +{ +public: + using mapContext = std::map; + using vecStackFrames = std::vector >; + +public: + ~TraceHook(); + BLACKBONE_API static TraceHook& Instance(); + + /// + /// Setup hook + /// + /// Target function to be hooked + /// New function + /// Address of pointer to destroy + /// Function tracing path + /// Optional. Address of instruction that checks target pointer + /// true on success, false if already hooked + BLACKBONE_API bool ApplyHook( void* targetFunc, + void* hookFunc, + void* ptrAddress, + const HookContext::vecState& tracePath = HookContext::vecState(), + void* checkIP = 0 ); + + /// + /// Remove existing hook + /// + /// Target function ptr + /// true on success, false if not found + BLACKBONE_API bool RemoveHook( void* targetFunc ); + +private: + // + // Singleton + // + TraceHook(); + TraceHook( const TraceHook& ) = delete; + TraceHook& operator =( const TraceHook& ) = delete; + + // + // Exception handlers + // + static LONG __stdcall VecHandler( PEXCEPTION_POINTERS ExceptionInfo ); + LONG VecHandlerP( PEXCEPTION_POINTERS ExceptionInfo ); + + /// + /// Capture stack frames + /// + /// Current instruction pointer + /// Current stack pointer + /// Found frames. + /// Frame depth limit + /// Number of found frames + size_t StackBacktrace( uintptr_t ip, uintptr_t sp, vecStackFrames& results, uintptr_t depth = 10 ); + + /// + /// Setup exception upon function return + /// + /// The exception information + inline void BreakOnReturn( uintptr_t sp ); + + /// + /// Check if last instruction caused branching + /// + /// Current hook info + /// Instruction pointer + /// Stack pointer + /// True if branching has occurred + bool CheckBranching( const HookContext& ctx, uintptr_t ip, uintptr_t sp ); + + /// + /// Handle branching + /// + /// Current hook context + /// Thread context + void HandleBranch( HookContext& ctx, PCONTEXT exptContex ); + + /// + /// Restore original pointer value + /// + /// The CTX. + /// The exception information + /// true on success, false if no invalid register was found + bool RestorePtr( const HookContext& ctx, PEXCEPTION_POINTERS ExceptionInfo ); + +private: + PVOID _pExptHandler = nullptr; // Exception handler + mapContext _contexts; // Hook contexts + uintptr_t _breakPtr = 0x2000; // Exception pointer generator +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/VTableHook.hpp b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/VTableHook.hpp new file mode 100644 index 0000000..fdc2f9e --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/LocalHook/VTableHook.hpp @@ -0,0 +1,182 @@ +#pragma once + +#include "LocalHook.hpp" +#include "../Misc/DynImport.h" + +namespace blackbone +{ + +template +class VTableDetour : public Detour +{ +public: + using type = typename HookHandler::type; + using hktype = typename HookHandler::hktype; + using hktypeC = typename HookHandler::hktypeC; + +public: + VTableDetour() + { + DetourBase::AllocateBuffer( nullptr ); + } + + ~VTableDetour() + { + Restore(); + } + + /// + /// Hook function in vtable + /// + /// Pointer to vtable pointer + /// Function index + /// Hook function address + /// Call order. Hook before original or vice versa + /// Return value. Use origianl or value from hook + /// if true, vtable will be copied and edited, otherwise existing vtable will be edited + /// Optional. Valid only when copyVtable is true. Number of function in vtable. + /// Used to determine number of function to copy + /// true on success + bool Hook( + void** ppVtable, + int index, + hktype hkPtr, + CallOrder::e order = CallOrder::HookFirst, + ReturnMethod::e retType = ReturnMethod::UseOriginal, + bool copyVtable = false, + int vtableLen = 0 + ) + { + auto jmpToHook = AsmFactory::GetAssembler(); + + this->_type = HookType::VTable; + this->_order = order; + this->_retType = retType; + this->_callOriginal = this->_original = (*(void***)ppVtable)[index]; + this->_callback = hkPtr; + this->_internalHandler = &HookHandler::Handler; + this->_ppVtable = ppVtable; + this->_pVtable = *ppVtable; + this->_vtIndex = index; + this->_vtCopied = copyVtable; + + // Construct jump to hook handler +#ifdef USE64 + // mov gs:[0x28], this + (*jmpToHook)->mov( asmjit::host::rax, (uint64_t)this ); + (*jmpToHook)->mov( asmjit::host::qword_ptr_abs( 0x28 ).setSegment( asmjit::host::gs ), asmjit::host::rax ); +#else + // mov fs:[0x14], this + (*jmpToHook)->mov( asmjit::host::dword_ptr_abs( 0x14 ).setSegment( asmjit::host::fs ), (uint32_t)this ); +#endif // USE64 + + (*jmpToHook)->jmp( (asmjit::Ptr)this->_internalHandler ); + (*jmpToHook)->relocCode( this->_buf ); + + // Modify VTable copy + if (copyVtable) + { + // Copy VTable + if (vtableLen != 0) + { + memcpy( this->_buf + 0x300 - sizeof( void* ), (*(void***)ppVtable) - 1, vtableLen * sizeof( void* ) ); + } + else + { + Process proc; + proc.Attach( GetCurrentProcessId() ); + auto vptr = (*(uintptr_t**)ppVtable)[index]; + auto mod = proc.modules().GetModule( vptr, false ); + uintptr_t imageBase = static_cast(mod->baseAddress); + uintptr_t imageSzie = mod->size; + + for (;; vtableLen++) + { + vptr = (*(uintptr_t**)ppVtable)[vtableLen]; + if (vptr < imageBase || vptr >= imageBase + imageSzie) + { + memcpy( this->_buf + 0x300 - sizeof( void* ), (*(void***)ppVtable) - 1, vtableLen * sizeof( void* ) ); + break; + } + } + } + + // Replace pointer to VTable + ((void**)this->_buf + 0x300 / sizeof( uintptr_t ))[index] = this->_buf; + *ppVtable = this->_buf + 0x300; + } + // Modify pointer in-place + else + { + DWORD flOld = 0; + + VirtualProtect( *(uintptr_t**)ppVtable + index, sizeof(void*), PAGE_EXECUTE_READWRITE, &flOld ); + (*(void***)ppVtable)[index] = this->_buf; + VirtualProtect( *(uintptr_t**)ppVtable + index, sizeof(void*), flOld, &flOld ); + } + + return (this->_hooked = true); + } + + /// + /// Hooks function in vtable + /// + /// Pointer to vtable pointer + /// Function index + /// Hook class member address + /// Hook class address + /// Call order. Hook before original or vice versa + /// Return value. Use origianl or value from hook + /// if true, vtable will be copied and edited, otherwise existing vtable will be edited + /// Optional. Valid only when copyVtable is true. Number of function in vtable. + /// Used to determine number of function to copy + /// true on success + bool Hook( + void** ppVtable, + int index, + hktypeC hkPtr, + C* pClass, + CallOrder::e order = CallOrder::HookFirst, + ReturnMethod::e retType = ReturnMethod::UseOriginal, + bool copyVtable = false, + int vtableLen = 0 + ) + { + this->_callbackClass = pClass; + return Hook( ppVtable, index, brutal_cast(hkPtr), order, retType, copyVtable, vtableLen ); + } + + /// + /// Restore hooked function + /// + /// true on success, false if not hooked + bool Restore() + { + if (!this->_hooked) + return false; + + if (this->_vtCopied) + { + *this->_ppVtable = this->_pVtable; + } + else + { + DWORD flOld = 0; + + VirtualProtect( *(uintptr_t**)this->_ppVtable + this->_vtIndex, sizeof( void* ), PAGE_EXECUTE_READWRITE, &flOld ); + (*(void***)this->_ppVtable)[this->_vtIndex] = this->_original; + VirtualProtect( *(uintptr_t**)this->_ppVtable + this->_vtIndex, sizeof( void* ), flOld, &flOld ); + } + + this->_hooked = false; + return true; + } + +private: + bool _vtCopied = false; // VTable was copied + void** _ppVtable = nullptr; // Pointer to VTable pointer + void* _pVtable = nullptr; // Pointer to VTable + int _vtIndex = 0; // VTable function index +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/ManualMap/MExcept.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/ManualMap/MExcept.h new file mode 100644 index 0000000..8c59c3d --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/ManualMap/MExcept.h @@ -0,0 +1,72 @@ +#pragma once + +#include "../Include/Winheaders.h" +#include "../Process/MemBlock.h" + +namespace blackbone +{ + +/// +/// x64 exception module info +/// +struct ExceptionModule +{ + ptr_t base; + ptr_t size; +}; + + +/// +/// x64 module table +/// +struct ModuleTable +{ + ptr_t count; // Number of used entries + ExceptionModule entry[250]; // Module data +}; + +/// +/// Exception handling support for arbitrary code +/// +class MExcept +{ +public: + BLACKBONE_API MExcept() = default; + BLACKBONE_API ~MExcept() = default; + + MExcept( const MExcept& ) = delete; + MExcept& operator =( const MExcept& ) = delete; + + /// + /// Inject VEH wrapper into process + /// Used to enable execution of SEH handlers out of image + /// + /// Target process + /// Target module + /// Partial exception support + /// Error code + BLACKBONE_API NTSTATUS CreateVEH( class Process& proc, ModuleData& mod, bool partial ); + + /// + /// Removes VEH from target process + /// + /// Target process + /// Partial exception support + /// Module type + /// Status code + BLACKBONE_API NTSTATUS RemoveVEH( class Process& proc, bool partial, eModType mt ); + + /// + /// Reset data + /// + BLACKBONE_API void reset() { _pModTable.Free(); } + +private: + MemBlock _pVEHCode; // VEH function codecave + MemBlock _pModTable; // x64 module address range table + uint64_t _hVEH = 0; // VEH handle + + static uint8_t _handler32[]; + static uint8_t _handler64[]; +}; +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/ManualMap/MMap.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/ManualMap/MMap.h new file mode 100644 index 0000000..df18ad0 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/ManualMap/MMap.h @@ -0,0 +1,399 @@ +#pragma once + +#include "../Config.h" +#include "../Include/Winheaders.h" +#include "../Include/Macro.h" +#include "../PE/PEImage.h" + +#include "../Process/MemBlock.h" +#include "../ManualMap/Native/NtLoader.h" +#include "MExcept.h" + +#include +#include +#include +#include + +namespace blackbone +{ + +class CustomArgs_t +{ +public: + void push_back( const void* ptr, size_t size ) + { + append( ptr, size ); + } + + template + void push_back( const T* ptr ) + { + append( ptr, sizeof( T ) ); + } + + template + void push_back( const std::basic_string& str ) + { + append( str.data(), str.size() * sizeof( T ) ); + } + + template + void push_back( const std::vector& cVec ) + { + append( cVec.data(), cVec.size() * sizeof( T ) ); + } + + template + void push_back( const std::array& arr ) + { + append( arr.data(), arr.size() * sizeof( T ) ); + } + +#if _MSC_VER >= 1900 + template + void push_back( const std::tuple& tpl ) + { + tuple_detail::copyTuple( tpl, _buffer ); + } +#endif + /// + /// Get raw data size + /// + /// + inline size_t size() const { return _buffer.size(); } + + /// + /// Get raw data + /// + /// Data ptr + inline uint8_t* data() { return _buffer.data(); } + inline const uint8_t* data() const { return _buffer.data(); } + +private: + /// + /// Append buffer from raw memory + /// + /// Raw pointer + /// Data size + void append( const void* ptr, size_t size ) + { + if (ptr) + { + const auto offset = _buffer.size(); + _buffer.resize( offset + size ); + memcpy( _buffer.data() + offset, ptr, size ); + } + } + +private: + std::vector _buffer; +}; + +// Loader flags +enum eLoadFlags +{ + NoFlags = 0x00, // No flags + ManualImports = 0x01, // Manually map import libraries + CreateLdrRef = 0x02, // Create module references for native loader + WipeHeader = 0x04, // Wipe image PE headers + HideVAD = 0x10, // Make image appear as PAGE_NOACESS region + MapInHighMem = 0x20, // Try to map image in address space beyond 4GB limit + RebaseProcess = 0x40, // If target image is an .exe file, process base address will be replaced with mapped module value + NoThreads = 0x80, // Don't create new threads, use hijacking + ForceRemap = 0x100, // Force remapping module even if it's already loaded + + NoExceptions = 0x01000, // Do not create custom exception handler + PartialExcept = 0x02000, // Only create Inverted function table, without VEH + NoDelayLoad = 0x04000, // Do not resolve delay import + NoSxS = 0x08000, // Do not apply SxS activation context + NoTLS = 0x10000, // Skip TLS initialization and don't execute TLS callbacks + IsDependency = 0x20000, // Module is a dependency +}; + +ENUM_OPS( eLoadFlags ) + +// Image mapping type +enum MappingType +{ + MT_Default, // Use eLoadFlags value + MT_Native, // Use native loader + MT_Manual, // Manually map + MT_None, // Don't load +}; + +struct LoadData +{ + MappingType mtype = MT_Default; + enum LdrRefFlags ldrFlags = static_cast(0); + + LoadData() = default; + + LoadData( MappingType mtype_, enum LdrRefFlags ldrFlags_ ) + : mtype( mtype_ ) + , ldrFlags( ldrFlags_ ) { } +}; + +// Image mapping callback +enum CallbackType +{ + PreCallback, // Called before loading. Loading type is decided here + PostCallback // Called after manual mapping, but before entry point invocation. Loader flags are decided here +}; + +using MapCallback = LoadData( *)(CallbackType type, void* context, Process& process, const ModuleData& modInfo); + + +/// +/// Image data +/// +struct ImageContext +{ + using vecPtr = std::vector; + + pe::PEImage peImage; // PE image data + MemBlock imgMem; // Target image memory region + NtLdrEntry ldrEntry; // Native loader module information + vecPtr tlsCallbacks; // TLS callback routines + ptr_t pExpTableAddr = 0; // Exception table address (amd64 only) + eLoadFlags flags = NoFlags; // Image loader flags + bool initialized = false; // Image entry point was called +}; + +using ImageContextPtr = std::shared_ptr; +using vecImageCtx = std::vector; + +/// +/// Manual image mapper +/// +class MMap +{ +public: + BLACKBONE_API MMap( class Process& proc ); + BLACKBONE_API ~MMap( void ); + + /// + /// Manually map PE image into underlying target process + /// + /// Image path + /// Image mapping flags + /// Mapping callback. Triggers for each mapped module + /// User-supplied callback context + /// Mapped image info + BLACKBONE_API call_result_t MapImage( + const std::wstring& path, + eLoadFlags flags = NoFlags, + MapCallback mapCallback = nullptr, + void* context = nullptr, + CustomArgs_t* pCustomArgs_t = nullptr + ); + + /// + ///Manually map PE image into underlying target process + /// + /// Image data buffer + /// Buffer size. + /// If set to true - buffer has image memory layout + /// Image mapping flags + /// Mapping callback. Triggers for each mapped module + /// User-supplied callback context + /// Mapped image info + BLACKBONE_API call_result_t MapImage( + size_t size, void* buffer, + bool asImage = false, + eLoadFlags flags = NoFlags, + MapCallback mapCallback = nullptr, + void* context = nullptr, + CustomArgs_t* pCustomArgs_t = nullptr + ); + + /// + /// Unmap all manually mapped modules + /// + /// Status code + BLACKBONE_API NTSTATUS UnmapAllModules(); + + /// + /// Remove any traces from remote process + /// + /// + BLACKBONE_API void Cleanup(); + + /// + /// Reset local data + /// + BLACKBONE_API inline void reset() { _images.clear(); _pAContext.Reset(); _usedBlocks.clear(); } +private: + /// + /// Manually map PE image into underlying target process + /// + /// Image path + /// Image data buffer + /// Buffer size. + /// If set to true - buffer has image memory layout + /// Image mapping flags + /// Mapping callback. Triggers for each mapped module + /// User-supplied callback context + /// Mapped image info + call_result_t MapImageInternal( + const std::wstring& path, + void* buffer, size_t size, + bool asImage = false, + eLoadFlags flags = NoFlags, + MapCallback ldrCallback = nullptr, + void* ldrContext = nullptr, + CustomArgs_t* pCustomArgs_t = nullptr + ); + + /// + /// Fix image path for pure managed mapping + /// + /// Image base + /// New image path + template + void FixManagedPath( ptr_t base, const std::wstring &path ); + + /// + /// Get existing module or map it if absent + /// + /// Image path + /// Mapping flags + /// Module info + call_result_t FindOrMapModule( + const std::wstring& path, + void* buffer, size_t size, bool asImage, + eLoadFlags flags = NoFlags + ); + + /// + /// Run module initializers(TLS and entry point). + /// + /// Image data + /// one of the following: + /// DLL_PROCESS_ATTACH + /// DLL_THREAD_ATTACH + /// DLL_PROCESS_DETACH + /// DLL_THREAD_DETTACH + /// + /// DllMain result + call_result_t RunModuleInitializers( ImageContextPtr pImage, DWORD dwReason, CustomArgs_t* pCustomArgs_t = nullptr ); + + /// + /// Copies image into target process + /// + /// Image data + /// Status code + NTSTATUS CopyImage( ImageContextPtr pImage ); + + /// + /// Adjust image memory protection + /// + /// image data + /// Status code + NTSTATUS ProtectImageMemory( ImageContextPtr pImage ); + + /// + /// Fix relocations if image wasn't loaded at base address + /// + /// image data + /// true on success + NTSTATUS RelocateImage( ImageContextPtr pImage ); + + /// + /// Resolves image import or delayed image import + /// + /// Image data + /// Resolve delayed import instead + /// Status code + NTSTATUS ResolveImport( ImageContextPtr pImage, bool useDelayed = false ); + + /// + /// Resolve static TLS storage + /// + /// image data + /// Status code + NTSTATUS InitStaticTLS( ImageContextPtr pImage ); + + /// + /// Set custom exception handler to bypass SafeSEH under DEP + /// + /// image data + /// Status code + NTSTATUS EnableExceptions( ImageContextPtr pImage ); + + /// + /// Remove custom exception handler + /// + /// image data + /// true on success + NTSTATUS DisableExceptions( ImageContextPtr pImage ); + + /// + /// Calculate and set security cookie + /// + /// image data + /// Status code + NTSTATUS InitializeCookie( ImageContextPtr pImage ); + + /// + /// Return existing or load missing dependency + /// + /// Currently mapped image data + /// Dependency path + /// + call_result_t FindOrMapDependency( ImageContextPtr pImage, std::wstring& path ); + + /// + /// Create activation context + /// Target memory layout: + /// ----------------------------- + /// | hCtx | ACTCTX | file_path | + /// ----------------------------- + /// + /// Manifest container path + /// Manifest resource id + /// if true - 'path' points to a valid PE file, otherwise - 'path' points to separate manifest file + /// true on success + NTSTATUS CreateActx( const pe::PEImage& image ); + + /// + /// Do SxS path probing in the target process + /// + /// Path to probe + /// Status code + NTSTATUS ProbeRemoteSxS( std::wstring& path ); + + /// + /// Hide memory VAD node + /// + /// Image to purge + /// Status code + NTSTATUS ConcealVad( const MemBlock& imageMem ); + + /// + /// Allocates memory region beyond 4GB limit + /// + /// Image data + /// Block size + /// Status code + NTSTATUS AllocateInHighMem( MemBlock& imageMem, size_t size ); + + /// + /// Transform section characteristics into memory protection flags + /// + /// Section characteristics + /// Memory protection value + DWORD GetSectionProt( DWORD characteristics ); + +private: + class Process& _process; // Target process manager + MExcept _expMgr; // Exception handler manager + vecImageCtx _images; // Mapped images + MemBlock _pAContext; // SxS activation context memory address + MapCallback _mapCallback = nullptr; // Loader callback for adding image into loader lists + void* _userContext = nullptr; // user context for _ldrCallback + + std::vector> _usedBlocks; // Used memory blocks +}; + +} + diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/ManualMap/Native/NtLoader.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/ManualMap/Native/NtLoader.h new file mode 100644 index 0000000..aab23a8 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/ManualMap/Native/NtLoader.h @@ -0,0 +1,233 @@ +#pragma once + +#include "../../Include/Winheaders.h" +#include "../../PE/PEImage.h" +#include "../../Include/Types.h" +#include "../../Include/NativeStructures.h" +#include "../../Include/Macro.h" +#include "../../Include/CallResult.h" + +namespace blackbone +{ +enum LdrRefFlags +{ + Ldr_None = 0x00, // Do not create any reference + Ldr_ModList = 0x01, // Add to module list - LdrpModuleIndex( win8 only ), InMemoryOrderModuleList( win7 only ) + Ldr_HashTable = 0x02, // Add to LdrpHashTable + Ldr_ThdCall = 0x04, // Add to thread callback list (dllmain will be called with THREAD_ATTACH/DETACH reasons) + Ldr_All = 0xFF, // Add to everything + Ldr_Ignore = 0xDE // Only valid in mod callback, mod callback value will be ignored +}; + +ENUM_OPS( LdrRefFlags ) + +struct NtLdrEntry : ModuleData +{ + LdrRefFlags flags = Ldr_None; + ptr_t entryPoint = 0; + ULONG hash = 0; + bool safeSEH = false; +}; + +class NtLdr +{ +public: + BLACKBONE_API NtLdr( class Process& proc ); + + /// + /// Initialize some loader stuff + /// + /// Target module type + /// true on success + BLACKBONE_API bool Init( eModType initFor = mt_default ); + + /// + /// Add module to some loader structures + /// (LdrpHashTable, LdrpModuleIndex( win8 only ), InMemoryOrderModuleList( win7 only )) + /// + /// Module data + /// true on success + BLACKBONE_API bool CreateNTReference( NtLdrEntry& mod ); + + /// + /// Create thread static TLS array + /// + /// Module data + /// TLS directory of target image + /// Status code + BLACKBONE_API NTSTATUS AddStaticTLSEntry( NtLdrEntry& mod, ptr_t tlsPtr ); + + /// + /// Create module record in LdrpInvertedFunctionTable + /// Used to create fake SAFESEH entries + /// + /// Module data + /// true on success + BLACKBONE_API bool InsertInvertedFunctionTable( NtLdrEntry& mod ); + + /// + /// Free static TLS + /// + /// Target module + /// Don't create new threads during remote call + /// Status code + BLACKBONE_API NTSTATUS UnloadTLS( const NtLdrEntry& mod, bool noThread = false ); + + /// + /// Unlink module from Ntdll loader + /// + /// Module data + /// Don't create new threads during unlink + /// true on success + BLACKBONE_API bool Unlink( const ModuleData& mod, bool noThread = false ); +private: + + /// + /// Find LdrpHashTable[] variable + /// + /// true on success + template + bool FindLdrpHashTable(); + + /// + /// Find LdrpModuleIndex variable under win8 + /// + /// true on success + template + bool FindLdrpModuleIndexBase(); + + /// + /// Find Loader heap base + /// + /// true on success + template + bool FindLdrHeap(); + + /// + /// Initialize OS-specific module entry + /// + /// Module data + /// Pointer to created entry + template + ptr_t InitBaseNode( NtLdrEntry& mod ); + + /// + /// Initialize OS-specific module entry + /// + /// Module data + /// Pointer to created entry + template + ptr_t InitW8Node( NtLdrEntry& mod ); + + /// + /// Initialize OS-specific module entry + /// + /// Module data + /// Pointer to created entry + template + ptr_t InitW7Node( NtLdrEntry& mod ); + + /// + /// Insert entry into win8 module graph + /// + /// Node to insert + /// Module data + template + void InsertTreeNode( ptr_t nodePtr, const NtLdrEntry& mod ); + + /// + /// Insert entry into LdrpHashTable[] + /// + /// Link of entry to be inserted + /// Module hash + template + void InsertHashNode( ptr_t pNodeLink, ULONG hash ); + + /// + /// Insert entry into InLoadOrderModuleList and InMemoryOrderModuleList + /// + /// InMemoryOrderModuleList link of entry to be inserted + /// InLoadOrderModuleList link of entry to be inserted + template + void InsertMemModuleNode( ptr_t pNodeMemoryOrderLink, ptr_t pNodeLoadOrderLink, ptr_t pNodeInitOrderLink ); + + /// + /// Insert entry into standard double linked list + /// + /// List head pointer + /// Entry list link to be inserted + template + void InsertTailList( ptr_t ListHead, ptr_t Entry ); + + /// + /// Hash image name + /// + /// Image name + /// Hash + ULONG HashString( const std::wstring& str ); + + /// + /// Allocate memory from heap if possible + /// + /// Module type + /// Size to allocate + /// Allocated address + call_result_t AllocateInHeap( eModType mt, size_t size ); + + /// + /// Get module native node ptr or create new + /// + /// node pointer (if nullptr - new dummy node is allocated) + /// Module base address + /// Node address + template + ptr_t SetNode( ptr_t ptr, Module pModule ); + + /// + /// Unlink module from PEB_LDR_DATA + /// + /// Module data + /// Address of removed record + template + ptr_t UnlinkFromLdr( const ModuleData& mod ); + + /// + /// Finds LDR entry for module + /// + /// Target module base + /// Found entry + /// Found LDR entry address + template + ptr_t FindLdrEntry( module_t moduleBase, _LDR_DATA_TABLE_ENTRY_BASE_T* found = nullptr ); + + /// + /// Remove record from LIST_ENTRY structure + /// + /// Entry link + template + void UnlinkListEntry( ptr_t pListLink ); + + /// + /// Unlink from module graph + /// + /// Module data + /// Module LDR entry + /// Don't create new threads during unlink + /// Address of removed record + template + ptr_t UnlinkTreeNode( const ModuleData& mod, ptr_t ldrEntry, bool noThread = false ); + + NtLdr( const NtLdr& ) = delete; + NtLdr& operator =( const NtLdr& ) = delete; + +private: + class Process& _process; // Process memory routines + + ptr_t _LdrpHashTable = 0; // LdrpHashTable address + ptr_t _LdrpModuleIndexBase = 0; // LdrpModuleIndex address + ptr_t _LdrHeapBase = 0; // Loader heap base address + + eModType _initializedFor = mt_unknown; // Loader initialization target + std::map _nodeMap; // Allocated native structures +}; +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/DynImport.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/DynImport.h new file mode 100644 index 0000000..04937ec --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/DynImport.h @@ -0,0 +1,118 @@ +#pragma once + +#include "../Include/Types.h" +#include "../Include/Winheaders.h" +#include "Utils.h" +#include "InitOnce.h" + +#include + +namespace blackbone +{ + +/// +/// Dynamic import +/// +class DynImport +{ +public: + BLACKBONE_API static DynImport& Instance() + { + static DynImport instance; + return instance; + } + + DynImport() = default; + DynImport( const DynImport& ) = delete; + + /// + /// Get dll function + /// + /// Function name + /// Function pointer + template + T get( const std::string& name ) + { + InitializeOnce(); + + CSLock lck( _mapGuard ); + + auto iter = _funcs.find( name ); + if (iter != _funcs.end()) + return reinterpret_cast(iter->second); + + return nullptr; + } + + /// + /// Safely call import + /// If import not found - return STATUS_ORDINAL_NOT_FOUND + /// + /// Import name. + /// Function args + /// Function result or STATUS_ORDINAL_NOT_FOUND if import not found + template + NTSTATUS safeNativeCall( const std::string& name, Args&&... args ) + { + auto pfn = DynImport::get( name ); + return pfn ? pfn( std::forward( args )... ) : STATUS_ORDINAL_NOT_FOUND; + } + + /// + /// Safely call import + /// If import not found - return 0 + /// + /// Import name. + /// Function args + /// Function result or 0 if import not found + template + auto safeCall( const std::string& name, Args&&... args ) + { + auto pfn = DynImport::get( name ); + return pfn ? pfn( std::forward( args )... ) : std::invoke_result_t(); + } + + /// + /// Load function into database + /// + /// Function name + /// Module name + /// true on success + BLACKBONE_API FARPROC load( const std::string& name, const std::wstring& modName ) + { + auto mod = GetModuleHandleW( modName.c_str() ); + return load( name, mod ); + } + + /// + /// Load function into database + /// + /// Function name + /// Module base + /// true on success + BLACKBONE_API FARPROC load( const std::string& name, HMODULE hMod ) + { + CSLock lck( _mapGuard ); + + auto proc = GetProcAddress( hMod, name.c_str() ); + if (proc) + { + _funcs.insert( std::make_pair( name, proc ) ); + return proc; + } + + return nullptr; + } + +private: + std::unordered_map _funcs; // function database + CriticalSection _mapGuard; // function database guard +}; + +// Syntax sugar +#define LOAD_IMPORT(name, mod) (DynImport::Instance().load( name, mod )) +#define GET_IMPORT(name) (DynImport::Instance().get( #name )) +#define SAFE_NATIVE_CALL(name, ...) (DynImport::Instance().safeNativeCall( #name, __VA_ARGS__ )) +#define SAFE_CALL(name, ...) (DynImport::Instance().safeCall( #name, __VA_ARGS__ )) + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/InitOnce.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/InitOnce.h new file mode 100644 index 0000000..78a6adc --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/InitOnce.h @@ -0,0 +1,7 @@ +#pragma once +#include "../Config.h" + +namespace blackbone +{ +BLACKBONE_API bool InitializeOnce(); +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/NameResolve.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/NameResolve.h new file mode 100644 index 0000000..8c1f058 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/NameResolve.h @@ -0,0 +1,91 @@ +#pragma once + +#include "../Include/Winheaders.h" +#include "../Include/Types.h" + +#include +#include +#include + +namespace blackbone +{ + +class NameResolve +{ + using mapApiSchema = std::unordered_map>; + +public: + enum eResolveFlag + { + Default = 0, // Full resolve + ApiSchemaOnly = 1, // Resolve only Api schema dlls + EnsureFullPath = 2, // Make sure resulting path is full-qualified + NoSearch = 4, // Don't perform file search, only resolve name + Wow64 = 8, // Redirect System32 files to SysWow64 + }; + +public: + BLACKBONE_API ~NameResolve() = default; + + BLACKBONE_API static NameResolve& Instance(); + + /// + /// Initialize api set map + /// + /// + BLACKBONE_API bool Initialize(); + + /// + /// Resolve image path. + /// + /// Image to resolve + /// Name of parent image. Used only when resolving import images + /// Directory where source image is located + /// Resolve flags + /// Process. Used to search process executable directory + /// Activation context + /// Status + BLACKBONE_API NTSTATUS ResolvePath( + std::wstring& path, + const std::wstring& baseName, + const std::wstring& searchDir, + eResolveFlag flags, + class Process& proc, + HANDLE actx = INVALID_HANDLE_VALUE + ); + + /// + /// Try SxS redirection + /// + /// Image path. + /// Process. Used to search process executable directory + /// Activation context + /// + BLACKBONE_API NTSTATUS ProbeSxSRedirect( std::wstring& path, class Process& proc, HANDLE actx = INVALID_HANDLE_VALUE ); + +private: + // Ensure singleton + NameResolve() = default; + NameResolve( const NameResolve& ) = delete; + NameResolve& operator =( const NameResolve& ) = delete; + + /// + /// Gets the process executable directory + /// + /// Process ID + /// Process executable directory + std::wstring GetProcessDirectory( DWORD pid ); + + /// + /// OS dependent api set initialization + /// + /// true on success + template + bool InitializeP(); + +private: + mapApiSchema _apiSchema; // Api schema table +}; + + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/Thunk.hpp b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/Thunk.hpp new file mode 100644 index 0000000..cb21201 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/Thunk.hpp @@ -0,0 +1,97 @@ +#include "../Config.h" +#include +#include + +// Thunk code +#pragma pack(push, 1) +struct ThunkData +{ +#ifndef USE64 + /* + mov eax, pInstance + mov fs:[0x14], eax + mov eax, pMethod + jmp eax + */ + uint8_t mov1 = 0xB8; + void* pInst = nullptr; + uint16_t fs1 = '\x64\xA3'; + uint8_t fs2 = FIELD_OFFSET( NT_TIB, ArbitraryUserPointer ); + uint8_t fs3 = 0; + uint16_t fs4 = 0; + uint8_t mov2 = 0xB8; + void* pFn = nullptr; + uint16_t jmp1 = '\xFF\xE0'; +#else + /* + mov rax, pInstance + mov gs:[0x28], rax + mov rax, pMethod + jmp rax + */ + uint16_t mov1 = '\x48\xB8'; + void* pInst = nullptr; + uint32_t fs1 = '\x65\x48\x89\x04'; + uint8_t fs2 = 0x25; + uint8_t fs3 = FIELD_OFFSET( NT_TIB, ArbitraryUserPointer ); + uint8_t fs4 = 0; + uint16_t fs5 = 0; + uint16_t mov2 = '\x48\xB8'; + void* pFn = nullptr; + uint16_t jmp1 = '\xFF\xE0'; +#endif + + void setup( void* pInstance, void* pMethod ) + { + pInst = pInstance; + pFn = pMethod; + } +}; +#pragma pack(pop) + + +template +class Win32Thunk; + +template +class Win32Thunk < R( __stdcall* )(Args...), C > +{ +public: + using TypeMember = R( C::* )(Args...); + using TypeFree = R( __stdcall* )(Args...); + +public: + Win32Thunk( TypeMember pfn, C* pInstance ) + : _pMethod( pfn ) + , _pInstance( pInstance ) + { + DWORD dwOld = 0; + VirtualProtect( &_thunk, sizeof( _thunk ), PAGE_EXECUTE_READWRITE, &dwOld ); + _thunk.setup( this, &Win32Thunk::WrapHandler ); + } + + /// + /// Redirect call + /// + /// Arguments + /// Call result + static R __stdcall WrapHandler( Args... args ) + { + auto _this = reinterpret_cast(((PNT_TIB)NtCurrentTeb())->ArbitraryUserPointer); + return (_this->_pInstance->*_this->_pMethod)(args...); + } + + /// + /// Get thunk + /// + /// + TypeFree GetThunk() + { + return reinterpret_cast(&_thunk); + } + +private: + TypeMember _pMethod = nullptr; // Member function to call + C* _pInstance = nullptr; // Bound instance + ThunkData _thunk; // Thunk code +}; \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/Trace.hpp b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/Trace.hpp new file mode 100644 index 0000000..7b6c6fc --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/Trace.hpp @@ -0,0 +1,54 @@ +#pragma once + +#include +#include + +#pragma warning(push) +#pragma warning(disable : 4091) +#include +#pragma warning(pop) + +namespace blackbone +{ +#ifndef BLACKBONE_NO_TRACE + +inline void DoTraceV( const char* fmt, va_list va_args ) +{ + char buf[2048], userbuf[1024]; + vsprintf_s( userbuf, fmt, va_args ); + sprintf_s( buf, "BlackBone: %s\r\n", userbuf ); + OutputDebugStringA( buf ); + +#ifdef CONSOLE_TRACE + printf_s( buf ); +#endif +} + +inline void DoTraceV( const wchar_t* fmt, va_list va_args ) +{ + wchar_t buf[2048], userbuf[1024]; + vswprintf_s( userbuf, fmt, va_args ); + swprintf_s( buf, L"BlackBone: %ls\r\n", userbuf ); + OutputDebugStringW( buf ); + +#ifdef CONSOLE_TRACE + wprintf_s( buf ); +#endif +} + +template +inline void DoTrace( const Ch* fmt, ... ) +{ + va_list va_args; + va_start( va_args, fmt ); + DoTraceV( fmt, va_args ); + va_end( va_args ); +} + +#define BLACKBONE_TRACE(fmt, ...) DoTrace(fmt, ##__VA_ARGS__) + +#else +#define BLACKBONE_TRACE(...) +#endif + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/Utils.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/Utils.h new file mode 100644 index 0000000..aa1c6ed --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Misc/Utils.h @@ -0,0 +1,208 @@ +#pragma once + +#include "../Include/Winheaders.h" +#include +#include +#include + +namespace blackbone +{ + +class Utils +{ +public: + /// + /// Convert UTF-8 string to wide char one + /// + /// UTF-8 string + /// wide char string + BLACKBONE_API static std::wstring UTF8ToWstring( const std::string& str ); + + /// + /// Convert wide string to UTF-8 + /// + /// UTF-8 string + /// wide char string + BLACKBONE_API static std::string WstringToUTF8( const std::wstring& str ); + + /// + /// Convert ANSI string to wide char one + /// + /// ANSI string. + /// String locale + /// wide char string + BLACKBONE_API static std::wstring AnsiToWstring( const std::string& input, DWORD locale = CP_ACP ); + + /// + /// Convert wide char string to ANSI one + /// + /// wide char string. + /// String locale + /// ANSI string + BLACKBONE_API static std::string WstringToAnsi( const std::wstring& input, DWORD locale = CP_ACP ); + + /// + /// Format string + /// + /// Format specifier + /// Arguments + /// Formatted string + BLACKBONE_API static std::wstring FormatString( const wchar_t* fmt, ... ); + + /// + /// Get filename from full-qualified path + /// + /// File path + /// Filename + BLACKBONE_API static std::wstring StripPath( const std::wstring& path ); + + /// + /// Get parent directory + /// + /// File path + /// Parent directory + BLACKBONE_API static std::wstring GetParent( const std::wstring& path ); + + /// + /// Get current process exe file directory + /// + /// Exe directory + BLACKBONE_API static std::wstring GetExeDirectory(); + + /// + /// Cast string characters to lower case + /// + /// Source string. + /// Result string + BLACKBONE_API static std::wstring ToLower( std::wstring str ); + + /// + /// Generate random alpha-numeric string + /// + /// Desired length. 0 - random length from 5 to 15 + /// Generated string + BLACKBONE_API static std::wstring RandomANString( int length = 0 ); + + /// + /// Get system error description + /// + /// The code. + /// Error message + BLACKBONE_API static std::wstring GetErrorDescription( NTSTATUS code ); + + /// + /// Check if file exists + /// + /// Full-qualified file path + /// true if exists + BLACKBONE_API static bool FileExists( const std::wstring& path ); +}; + + +/// +/// std::mutex alternative +/// +class CriticalSection +{ +public: + BLACKBONE_API CriticalSection() + { + InitializeCriticalSection( &_native ); + } + + BLACKBONE_API ~CriticalSection() + { + DeleteCriticalSection( &_native ); + } + + BLACKBONE_API void lock() + { + EnterCriticalSection( &_native ); + } + + BLACKBONE_API void unlock() + { + LeaveCriticalSection( &_native ); + } + +private: + CRITICAL_SECTION _native; +}; + + +/// +/// std::lock_guard alternative +/// +class CSLock +{ +public: + BLACKBONE_API CSLock( CriticalSection& cs ) + : _cs( cs ) + { + cs.lock(); + } + + BLACKBONE_API ~CSLock() + { + _cs.unlock(); + } + +private: + CSLock( const CSLock& ) = delete; + CSLock& operator = ( const CSLock& ) = delete; + +private: + CriticalSection& _cs; +}; + + +/// +/// System32 helper +/// +class FsRedirector +{ +public: + FsRedirector( bool wow64 ) + : _wow64( wow64 ) + { +#ifndef XP_BUILD + if (wow64) + Wow64DisableWow64FsRedirection( &_fsRedirection ); +#endif + } + + ~FsRedirector() + { +#ifndef XP_BUILD + if (_wow64) + Wow64RevertWow64FsRedirection( _fsRedirection ); +#endif + } + +private: + PVOID _fsRedirection = nullptr; + bool _wow64; +}; + +#if _MSC_VER >= 1900 +namespace tuple_detail +{ + template + void visit_each( T&& t, F f, std::index_sequence ) { auto l = { (f( std::get( t ) ), 0)... }; } + + template + void copyTuple( std::tuple const& from, std::vector& to ) + { + auto func = [&to]( auto& v ) + { + auto ptr = to.size(); + to.resize( ptr + sizeof( v ) ); + memcpy( to.data() + ptr, &v, sizeof( v ) ); + return 0; + }; + + visit_each( from, func, std::index_sequence_for() ); + } +} +#endif +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/PE/ImageNET.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/PE/ImageNET.h new file mode 100644 index 0000000..636d66e --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/PE/ImageNET.h @@ -0,0 +1,66 @@ +#pragma once +#include "../Config.h" +#ifdef COMPILER_MSVC + +#include "../Include/Winheaders.h" + +#include + +#if _MSC_VER >= 1920 + #include +#endif + +#pragma warning(push) +#pragma warning(disable : 4091) +#include "cor.h" +#include +#pragma warning(pop) + +namespace blackbone +{ + +/// +/// .NET metadata parser +/// +class ImageNET +{ +public: + using mapMethodRVA = std::map, uintptr_t>; + +public: + BLACKBONE_API ImageNET(void); + BLACKBONE_API ~ImageNET(void); + + /// + /// Initialize COM classes + /// + /// Image file path + /// true on success + BLACKBONE_API bool Init( const std::wstring& path ); + + /// + /// Extract methods from image + /// + /// Found Methods + /// true on success + BLACKBONE_API bool Parse( mapMethodRVA* methods = nullptr ); + + /// + /// Get image .NET runtime version + /// + /// runtime version, "n/a" if nothing found + BLACKBONE_API static std::wstring GetImageRuntimeVer( const wchar_t* ImagePath ); + +private: + std::wstring _path; // Image path + mapMethodRVA _methods; // Image methods + + // COM helpers + CComPtr _pMetaDisp; + CComPtr _pMetaImport; + CComPtr _pAssemblyImport; +}; + +} + +#endif diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/PE/PEImage.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/PE/PEImage.h new file mode 100644 index 0000000..59eaa53 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/PE/PEImage.h @@ -0,0 +1,348 @@ +#pragma once + +#include "../Config.h" +#include "../Include/Winheaders.h" +#include "../Include/Types.h" +#include "../Include/HandleGuard.h" +#include "../Misc/Utils.h" + +#ifdef COMPILER_MSVC +#include "ImageNET.h" +#endif // COMPILER_MSVC + +#include +#include +#include +#include +#include +#include +#include + +namespace blackbone +{ + +namespace pe +{ + +enum AddressType +{ + RVA, // Relative virtual + VA, // Absolute virtual + RPA, // Relative physical +}; + +// Relocation block information +struct RelocData +{ + ULONG PageRVA; + ULONG BlockSize; + + struct + { + WORD Offset : 12; + WORD Type : 4; + }Item[1]; +}; + +/// +/// Import information +/// +struct ImportData +{ + std::string importName; // Function name + uintptr_t ptrRVA; // Function pointer RVA in + WORD importOrdinal; // Function ordinal + bool importByOrd; // Function is imported by ordinal +}; + +/// +/// Export function info +/// +struct ExportData +{ + std::string name; + uint32_t RVA = 0; + + ExportData( const std::string& name_, uint32_t rva_ ) + : name( name_ ) + , RVA( rva_ ) { } + + bool operator == (const ExportData& other) + { + return name == other.name; + } + + bool operator < (const ExportData& other) + { + return name < other.name; + } +}; + +// Imports and sections related +using mapImports = std::unordered_map>; +using vecSections = std::vector; +using vecExports = std::vector; + +/// +/// Primitive PE parsing class +/// +class PEImage +{ + using PCHDR32 = const IMAGE_NT_HEADERS32*; + using PCHDR64 = const IMAGE_NT_HEADERS64*; + +public: + BLACKBONE_API PEImage( void ); + BLACKBONE_API ~PEImage( void ); + + BLACKBONE_API PEImage( PEImage&& other ) = default; + + /// + /// Load image from file + /// + /// File path + /// If true - do not initialize activation context + /// Status code + BLACKBONE_API NTSTATUS Load( const std::wstring& path, bool skipActx = false ); + + /// + /// Load image from memory location + /// + /// Image data + /// Data size. + /// If false - data has image layout + /// Status code + BLACKBONE_API NTSTATUS Load( void* pData, size_t size, bool plainData = true ); + + /// + /// Reload closed image + /// + /// Status code + BLACKBONE_API NTSTATUS Reload(); + + /// + /// Release mapping, if any + /// + /// Preserve file paths for file reopening + BLACKBONE_API void Release( bool temporary = false ); + + /// + /// Parses PE image + /// + /// Status code + BLACKBONE_API NTSTATUS Parse( void* pImageBase = nullptr ); + + /// + /// Processes image imports + /// + /// Process delayed import instead + /// Import data + BLACKBONE_API mapImports& GetImports( bool useDelayed = false ); + + /// + /// Retrieve all exported functions with names + /// + /// Found exports + BLACKBONE_API void GetExports( vecExports& exports ); + + /// + /// Retrieve image TLS callbacks + /// Callbacks are rebased for target image + /// + /// Target image base + /// Found callbacks + /// Number of TLS callbacks in image + BLACKBONE_API int GetTLSCallbacks( module_t targetBase, std::vector& result ) const; + + /// + /// Retrieve data directory address + /// + /// Directory index + /// Keep address relative to image base + /// Directory address + BLACKBONE_API uintptr_t DirectoryAddress( int index, AddressType type = VA ) const; + + /// + /// Get data directory size + /// + /// Data directory index + /// Data directory size + BLACKBONE_API size_t DirectorySize( int index ) const; + + /// + /// Resolve virtual memory address to physical file offset + /// + /// Memory address + /// Address type to return + /// Resolved address + BLACKBONE_API uintptr_t ResolveRVAToVA( uintptr_t Rva, AddressType type = VA ) const; + + /// + /// Get image path + /// + /// Image path + BLACKBONE_API inline const std::wstring& path() const { return _imagePath; } + + /// + /// Get image name + /// + /// Image name + BLACKBONE_API inline std::wstring name() const { return Utils::StripPath( _imagePath ); } + + /// + /// Get image load address + /// + /// Image base + BLACKBONE_API inline void* base() const { return _pFileBase; } + + /// + /// Get image base address + /// + /// Image base + BLACKBONE_API inline module_t imageBase() const { return _imgBase; } + + /// + /// Get image size in bytes + /// + /// Image size + BLACKBONE_API inline uint32_t imageSize() const { return _imgSize; } + + /// + /// Get size of image headers + /// + /// Size of image headers + BLACKBONE_API inline size_t headersSize() const { return _hdrSize; } + + /// + /// Get image entry point rebased to another image base + /// + /// New image base + /// New entry point address + BLACKBONE_API inline ptr_t entryPoint( module_t base ) const { return ((_epRVA != 0) ? (_epRVA + base) : 0); }; + + /// + /// Get image sections + /// + /// Image sections + BLACKBONE_API inline const vecSections& sections() const { return _sections; } + + /// + /// Check if image is an executable file and not a dll + /// + /// true if image is an *.exe + BLACKBONE_API inline bool isExe() const { return _isExe; } + + /// + /// Check if image is pure IL image + /// + /// true on success + BLACKBONE_API inline bool pureIL() const { return _isPureIL; } + BLACKBONE_API inline int32_t ilFlagOffset() const { return _ILFlagOffset; } + + /// + /// Get image type. 32/64 bit + /// + /// Image type + BLACKBONE_API inline eModType mType() const { return _is64 ? mt_mod64 : mt_mod32; } + + /// + /// Get activation context handle + /// + /// Actx handle + BLACKBONE_API inline HANDLE actx() const { return _hctx; } + + /// + /// true if image is mapped as plain data file + /// + /// true if mapped as plain data file, false if mapped as image + BLACKBONE_API inline bool isPlainData() const { return _isPlainData; } + + /// + /// Get manifest resource ID + /// + /// Manifest resource ID + BLACKBONE_API inline int manifestID() const { return _manifestIdx; } + + /// + /// Get image subsystem + /// + /// Image subsystem + BLACKBONE_API inline uint32_t subsystem() const { return _subsystem; } + + /// + /// Get manifest resource file + /// + /// Manifest resource file + BLACKBONE_API inline const std::wstring& manifestFile() const { return _manifestPath; } + + /// + /// If true - no actual PE file available on disk + /// + /// Flag + BLACKBONE_API inline bool noPhysFile() const { return _noFile; } + + /// + /// DllCharacteristics field of header + /// + /// DllCharacteristics + BLACKBONE_API inline uint32_t DllCharacteristics() const { return _DllCharacteristics; } + +#ifdef COMPILER_MSVC + /// + /// .NET image parser + /// + /// .NET image parser + BLACKBONE_API ImageNET& net() { return _netImage; } +#endif + +private: + /// + /// Prepare activation context + /// + /// Path to PE file. If nullptr - manifest is extracted from memory to disk + /// Status code + NTSTATUS PrepareACTX( const wchar_t* filepath = nullptr ); + + /// + /// Get manifest from image data + /// + /// Manifest size + /// Mmanifest ID + /// Manifest data + void* GetManifest( uint32_t& size, int32_t& manifestID ); + +private: + Handle _hFile; // Target file HANDLE + Handle _hMapping; // Memory mapping object + Mapping _pFileBase; // Mapping base + bool _isPlainData = false; // File mapped as plain data file + bool _is64 = false; // Image is 64 bit + bool _isExe = false; // Image is an .exe file + bool _isPureIL = false; // Pure IL image + bool _noFile = false; // Parsed from memory, no underlying PE file available + PCHDR32 _pImageHdr32 = nullptr; // PE header info + PCHDR64 _pImageHdr64 = nullptr; // PE header info + ptr_t _imgBase = 0; // Image base + uint32_t _imgSize = 0; // Image size + uint32_t _epRVA = 0; // Entry point RVA + uint32_t _hdrSize = 0; // Size of headers + ACtxHandle _hctx; // Activation context + int32_t _manifestIdx = 0; // Manifest resource ID + uint32_t _subsystem = 0; // Image subsystem + int32_t _ILFlagOffset = 0; // Offset of pure IL flag + uint32_t _DllCharacteristics = 0; // DllCharacteristics flags + + vecSections _sections; // Section info + mapImports _imports; // Import functions + mapImports _delayImports; // Import functions + + std::wstring _imagePath; // Image path + std::wstring _manifestPath; // Image manifest container + +#ifdef COMPILER_MSVC + ImageNET _netImage; // .net image info +#endif +}; + +} +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Patterns/PatternSearch.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Patterns/PatternSearch.h new file mode 100644 index 0000000..429d866 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Patterns/PatternSearch.h @@ -0,0 +1,224 @@ +#pragma once + +#include "../Include/Types.h" + +#include +#include +#include +#include + +namespace blackbone +{ + +class PatternSearch +{ +public: + /// + /// Callback to handle a matching address for the Search*WithHandler() methods. + /// If the handler returns true, the search is stopped, else the search continues. + /// + typedef std::function MatchHandler; + +public: + // logAlignment can be used to speed-up the search in some cases. For example, if you know that the start of the pattern + // is always 8-byte-aligned, you can pass logAlignment=3 (2^3 = 8) to skip searching at all addresses that aren't multiples + // of 8. Note that for smaller alignments and depending on the exact pattern, this may not always be faster (it may even be + // a tiny bit slower), so profile it if you care about performance. + BLACKBONE_API PatternSearch( const std::vector& pattern, size_t logAlignment = 0 ); + BLACKBONE_API PatternSearch( const std::initializer_list&& pattern, size_t logAlignment = 0 ); + BLACKBONE_API PatternSearch( const std::string& pattern, size_t logAlignment = 0 ); + BLACKBONE_API PatternSearch( const char* pattern, size_t len = 0, size_t logAlignment = 0 ); + BLACKBONE_API PatternSearch( const uint8_t* pattern, size_t len = 0, size_t logAlignment = 0 ); + + BLACKBONE_API ~PatternSearch() = default; + + /// + /// Default pattern matching with wildcards and a callback handler for matches. + /// std::search is approximately 2x faster than naive approach. + /// + /// Pattern wildcard + /// Starting address + /// Size of region to scan + /// Callback that is called for every match. If it returns true, the search is stopped prematurely. + /// Value that will be added to resulting addresses + /// true if the callback handler ever returned true (i.e. the search ended prematurely), false otherwise. + BLACKBONE_API bool SearchWithHandler( + uint8_t wildcard, + void* scanStart, + size_t scanSize, + MatchHandler handler, + ptr_t value_offset = 0 + ) const; + + /// + /// Full pattern match, no wildcards, with a callback handler for matches. + /// Uses Boyer–Moore–Horspool algorithm. + /// + /// Starting address + /// Size of region to scan + /// Callback that is called for every match. If it returns true, the search is stopped prematurely. + /// Value that will be added to resulting addresses + /// true if the callback handler ever returned true (i.e. the search ended prematurely), false otherwise. + BLACKBONE_API bool SearchWithHandler( + void* scanStart, + size_t scanSize, + MatchHandler handler, + ptr_t value_offset = 0 + ) const; + + /// + /// Search pattern in remote process with a callback handler for matches + /// + /// Remote process + /// Pattern wildcard + /// Starting address + /// Size of region to scan + /// Callback that is called for every match. If it returns true, the search is stopped prematurely. + /// true if the callback handler ever returned true (i.e. the search ended prematurely), false otherwise. + BLACKBONE_API bool SearchRemoteWithHandler( + class Process& remote, + uint8_t wildcard, + ptr_t scanStart, + size_t scanSize, + MatchHandler handler + ) const; + + /// + /// Search pattern in remote process with a callback handler for matches + /// + /// Remote process + /// Starting address + /// Size of region to scan + /// Callback that is called for every match. If it returns true, the search is stopped prematurely. + /// true if the callback handler ever returned true (i.e. the search ended prematurely), false otherwise. + BLACKBONE_API bool SearchRemoteWithHandler( + class Process& remote, + ptr_t scanStart, + size_t scanSize, + MatchHandler handler + ) const; + + /// + /// Search pattern in whole address space of remote process with a callback handler for matches + /// + /// Remote process + /// True if pattern contains wildcards + /// Pattern wildcard + /// Callback that is called for every match. If it returns true, the search is stopped prematurely. + /// true if the callback handler ever returned true (i.e. the search ended prematurely), false otherwise. + BLACKBONE_API bool SearchRemoteWholeWithHandler( + class Process& remote, + bool useWildcard, + uint8_t wildcard, + MatchHandler handler + ) const; + + + + + + + /// + /// Default pattern matching with wildcards. + /// std::search is approximately 2x faster than naive approach. + /// + /// Pattern wildcard + /// Starting address + /// Size of region to scan + /// Found results + /// Value that will be added to resulting addresses + /// Maximum number of matches to collect + /// Number of found addresses + BLACKBONE_API size_t Search( + uint8_t wildcard, + void* scanStart, + size_t scanSize, + std::vector& out, + ptr_t value_offset = 0, + size_t maxMatches = SIZE_MAX + ) const; + + /// + /// Full pattern match, no wildcards. + /// Uses Boyer–Moore–Horspool algorithm. + /// + /// Starting address + /// Size of region to scan + /// Found results + /// Value that will be added to resulting addresses + /// Maximum number of matches to collect + /// Number of found addresses + BLACKBONE_API size_t Search( + void* scanStart, + size_t scanSize, + std::vector& out, + ptr_t value_offset = 0, + size_t maxMatches = SIZE_MAX + ) const; + + /// + /// Search pattern in remote process + /// + /// Remote process + /// Pattern wildcard + /// Starting address + /// Size of region to scan + /// Found results + /// Maximum number of matches to collect + /// Number of found addresses + BLACKBONE_API size_t SearchRemote( + class Process& remote, + uint8_t wildcard, + ptr_t scanStart, + size_t scanSize, + std::vector& out, + size_t maxMatches = SIZE_MAX + ) const; + + /// + /// Search pattern in remote process + /// + /// Remote process + /// Starting address + /// Size of region to scan + /// Found results + /// Maximum number of matches to collect + /// Number of found addresses + BLACKBONE_API size_t SearchRemote( + class Process& remote, + ptr_t scanStart, + size_t scanSize, + std::vector& out, + size_t maxMatches = SIZE_MAX + ) const; + + /// + /// Search pattern in whole address space of remote process + /// + /// Remote process + /// True if pattern contains wildcards + /// Pattern wildcard + /// Found results + /// Maximum number of matches to collect + /// Number of found addresses + BLACKBONE_API size_t SearchRemoteWhole( + class Process& remote, + bool useWildcard, + uint8_t wildcard, + std::vector& out, + size_t maxMatches = SIZE_MAX + ) const; + +private: + static inline bool collectAllMatchHandler(ptr_t addr, std::vector& out, size_t maxMatches) + { + out.emplace_back(addr); + return out.size() >= maxMatches; + } + +private: + std::vector _pattern; // Pattern to search + size_t logAlignment; +}; + +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/MemBlock.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/MemBlock.h new file mode 100644 index 0000000..1800d01 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/MemBlock.h @@ -0,0 +1,282 @@ +#pragma once + +#include "../Include/Winheaders.h" +#include "../Include/Macro.h" +#include "../Include/Types.h" +#include "../Include/CallResult.h" + +#include +#include + +namespace blackbone +{ + +/// +/// Get rid of EXECUTABLE flag if DEP isn't enabled +/// +/// Memory protection flags +/// DEP flag +/// New protection flags +inline DWORD CastProtection( DWORD prot, bool bDEP ) +{ + if (bDEP == true) + { + return prot; + } + else + { + if (prot == PAGE_EXECUTE_READ) + return PAGE_READONLY; + else if (prot == PAGE_EXECUTE_READWRITE) + return PAGE_READWRITE; + else if (prot == PAGE_EXECUTE_WRITECOPY) + return PAGE_WRITECOPY; + else + return prot; + } +} + +class MemBlock +{ +public: + class MemBlockImpl + { + friend class MemBlock; + + public: + MemBlockImpl() = default; + + /// + /// MemBlock_p ctor + /// + /// Process memory routines + /// Memory address + /// Block size + /// Memory protection + /// true if caller will be responsible for block deallocation + MemBlockImpl( class ProcessMemory* mem, ptr_t ptr, size_t size, DWORD prot, bool own = true, bool physical = false ); + + ~MemBlockImpl() + { + if (_own) + Free(); + } + + /// + /// Free memory + /// + /// Size of memory chunk to free. If 0 - whole block is freed + NTSTATUS Free( size_t size = 0 ); + + private: + ptr_t _ptr = 0; // Raw memory pointer + size_t _size = 0; // Region size + DWORD _protection = 0; // Region protection + bool _own = true; // Memory will be freed in destructor + bool _physical = false; // Memory allocated as direct physical + class ProcessMemory* _memory; // Target process routines + }; + +public: + /// + /// MemBlock ctor + /// + BLACKBONE_API MemBlock() = default; + + /// + /// MemBlock ctor + /// + /// Process memory routines + /// Memory address + /// true if caller will be responsible for block deallocation + BLACKBONE_API MemBlock( class ProcessMemory* mem, ptr_t ptr, bool own = true ); + + /// + /// MemBlock ctor + /// + /// Process memory routines + /// Memory address + /// Block size + /// Memory protection + /// true if caller will be responsible for block deallocation + BLACKBONE_API MemBlock( class ProcessMemory* mem, ptr_t ptr, size_t size, DWORD prot, bool own = true, bool physical = false ); + + /// + /// Move ctor + /// + /// Move from + BLACKBONE_API MemBlock( MemBlock&& rhs ) { _pImpl.swap( rhs._pImpl ); } + BLACKBONE_API MemBlock& operator = ( MemBlock&& rhs ) + { + // Self assign + if (_pImpl == rhs._pImpl) + return *this; + + _pImpl.swap( rhs._pImpl ); + return *this; + } + + /// + /// Allocate new memory block + /// + /// Process memory routines + /// Block size + /// Desired base address of new block + /// Win32 Memory protection flags + /// false if caller will be responsible for block deallocation + /// Memory block. If failed - returned block will be invalid + BLACKBONE_API static call_result_t Allocate( + class ProcessMemory& process, + size_t size, + ptr_t desired = 0, + DWORD protection = PAGE_EXECUTE_READWRITE, + bool own = true + ); + + /// + /// Allocate new memory block as close to a given location as possible. + /// + /// Process memory routines + /// Block size + /// Desired base address of new block + /// Win32 Memory protection flags + /// false if caller will be responsible for block deallocation + /// Memory block. If failed - returned block will be invalid + BLACKBONE_API static call_result_t AllocateClosest( + class ProcessMemory& process, + size_t size, + ptr_t desired, + DWORD protection = PAGE_EXECUTE_READWRITE, + bool own = true + ); + + /// + /// Reallocate existing block for new size + /// + /// New block size + /// Desired base address of new block + /// Memory protection + /// New block address + BLACKBONE_API call_result_t Realloc( size_t size, ptr_t desired = 0, DWORD protection = PAGE_EXECUTE_READWRITE ); + + /// + /// Change memory protection + /// + /// New protection flags + /// Memory offset in block + /// Block size + /// Old protection flags + /// Status + BLACKBONE_API NTSTATUS Protect( DWORD protection, uintptr_t offset = 0, size_t size = 0, DWORD* pOld = nullptr ); + + /// + /// Free memory + /// + /// Size of memory chunk to free. If 0 - whole block is freed + BLACKBONE_API NTSTATUS Free( size_t size = 0 ); + + /// + /// Read data + /// + /// Data offset in block + /// Size of data to read + /// Output buffer + /// + /// If true, function will try to read all committed pages in range ignoring uncommitted. + /// Otherwise function will fail if there is at least one non-committed page in region. + /// + /// Status + BLACKBONE_API NTSTATUS Read( uintptr_t offset, size_t size, PVOID pResult, bool handleHoles = false ); + + /// + /// Write data + /// + /// Data offset in block + /// Size of data to write + /// Buffer to write + /// Status + BLACKBONE_API NTSTATUS Write( uintptr_t offset, size_t size, const void* pData ); + + /// + /// Read data + /// + /// Data offset in block + /// Defult return value if read has failed + /// Read data + template + T Read( uintptr_t offset, const T& def_val ) + { + T res = def_val; + Read( offset, sizeof( T ), &res ); + return res; + } + + /// + /// Read data + /// + /// Data offset in block + /// Read data + /// Status code + template + NTSTATUS Read( size_t offset, T& val ) + { + return Read( offset, sizeof( val ), &val ); + } + + /// + /// Write data + /// + /// Offset in block + /// Data to write + /// Status + template + NTSTATUS Write( uintptr_t offset, const T& data ) + { + return Write( offset, sizeof( data ), &data ); + } + + /// + /// Try to free memory and reset pointers + /// + BLACKBONE_API void Reset(); + + /// + /// Memory will not be deallocated upon object destruction + /// + BLACKBONE_API inline void Release() { if (_pImpl) _pImpl->_own = false; } + + /// + /// Get memory pointer + /// + /// Memory pointer + template + inline T ptr() const { return _pImpl ? (T)_pImpl->_ptr : T( 0 ); } + + /// + /// Get block size + /// + /// Block size + BLACKBONE_API inline size_t size() const { return _pImpl ? _pImpl->_size : 0; } + + /// + /// Get block memory protection + /// + /// Memory protection flags + BLACKBONE_API inline DWORD protection() const { return _pImpl ? _pImpl->_protection : 0; } + + /// + /// Validate memory block + /// true if memory pointer isn't 0 + BLACKBONE_API inline bool valid() const { return( _pImpl.get() != nullptr && _pImpl->_ptr != 0); } + + /// + /// Get memory pointer + /// + /// Memory pointer + BLACKBONE_API inline operator ptr_t() const { return _pImpl ? _pImpl->_ptr : 0; } + +private: + std::shared_ptr _pImpl; +}; + +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/MultPtr.hpp b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/MultPtr.hpp new file mode 100644 index 0000000..58f3aef --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/MultPtr.hpp @@ -0,0 +1,160 @@ +#pragma once +#include "Process.h" +#include "../Misc/Trace.hpp" + +#include +#include +#include + +namespace blackbone +{ + +/// +/// Multi-level pointer wrapper for local process +/// +template +class multi_ptr +{ +public: + using type = std::remove_pointer_t; + using type_ptr = std::add_pointer_t; + using vecOffsets = std::vector; + + constexpr static bool type_is_ptr = std::is_pointer_v; + +public: + multi_ptr() = default; + + multi_ptr( uintptr_t base, const vecOffsets& offsets = vecOffsets() ) + : _base( base ) + , _offsets( offsets ) { } + + /// + /// Object getters + /// + /// Object pointer, if valid + inline type_ptr get() { return read(); } + inline operator type_ptr() { return read(); } + inline type_ptr operator ->() { return read(); } + +protected: + /// + /// Get object pointer from base and offsets + /// + /// Object ptr, if valid + virtual type_ptr read() + { + intptr_t i = -1; + uintptr_t ptr = _base; + + __try + { + if (!ptr) + return _ptr = nullptr; + + ptr = *reinterpret_cast(ptr); + if (!_offsets.empty()) + { + for (i = 0; i < static_cast(_offsets.size()) - 1; i++) + ptr = *reinterpret_cast(ptr + _offsets[i]); + + ptr += _offsets.back(); + if (type_is_ptr) + ptr = *reinterpret_cast(ptr); + } + + return _ptr = reinterpret_cast(ptr); + } + // Invalid address + __except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION) + { + BLACKBONE_TRACE( + "Invalid pointer derefrence: base 0x%p, offset 0x%08x, target address 0x%p", + _base, (i > 0 ? _offsets[i] : -1), ptr + ); + + return _ptr = nullptr; + } + } + +protected: + uintptr_t _base = 0; + type_ptr _ptr = nullptr; + std::vector _offsets; +}; + +/// +/// Multi-level pointer wrapper for remote process +/// +template +class multi_ptr_ex : public multi_ptr +{ +public: + /// + /// Initializes a new instance of the class. + /// + /// Target process + /// Base address + /// Offsets + multi_ptr_ex( Process* proc, uintptr_t base = 0, const multi_ptr::vecOffsets& offsets = multi_ptr::vecOffsets() ) + : _proc( proc ) + , multi_ptr( base, offsets ) { } + + /// + /// Commit changed object into process + /// + /// Status code + NTSTATUS commit() + { + auto ptr = get_ptr(); + if (ptr == 0) + return STATUS_ACCESS_VIOLATION; + + return _proc->memory().Write( ptr, sizeof( _data ), &_data ); + } + +private: + /// + /// Read object from pointer + /// + /// Pointer to local copy or nullptr if invalid + virtual multi_ptr::type_ptr read() + { + auto ptr = get_ptr(); + if (ptr == 0) + return nullptr; + + return NT_SUCCESS( _proc->memory().Read( ptr, sizeof( _data ), &_data ) ) ? &_data : nullptr; + } + + /// + /// Get target pointer + /// + /// Pointer value or 0 if chain is invalid + uintptr_t get_ptr() + { + uintptr_t ptr = multi_ptr::_base; + if (!NT_SUCCESS( _proc->memory().Read( ptr, ptr ) )) + return 0; + + if (!multi_ptr::_offsets.empty()) + { + for (intptr_t i = 0; i < static_cast(multi_ptr::_offsets.size()) - 1; i++) + if (!NT_SUCCESS( _proc->memory().Read( ptr + multi_ptr::_offsets[i], ptr ) )) + return 0; + + ptr += multi_ptr::_offsets.back(); + if (multi_ptr::type_is_ptr) + if (!NT_SUCCESS( _proc->memory().Read( ptr, ptr ) )) + return 0; + } + + return ptr; + } + + +private: + Process* _proc = nullptr; // Target process + multi_ptr::type _data; // Local object copy +}; +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/Process.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/Process.h new file mode 100644 index 0000000..8bdc75b --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/Process.h @@ -0,0 +1,233 @@ +#pragma once + +#include "ProcessCore.h" +#include "ProcessMemory.h" +#include "ProcessModules.h" +#include "Threads/Threads.h" +#include "RPC/RemoteExec.h" +#include "RPC/RemoteHook.h" +#include "RPC/RemoteLocalHook.h" +#include "../ManualMap/Native/NtLoader.h" +#include "../ManualMap/MMap.h" + +#include "../Include/NativeStructures.h" +#include "../Include/CallResult.h" +#include "../Misc/InitOnce.h" + +#include +#include + +namespace blackbone +{ + +/// +/// Process thread information +/// +struct ThreadInfo +{ + uint32_t tid = 0; + uintptr_t startAddress = 0; + bool mainThread = false; +}; + +/// +/// Process information +/// +struct ProcessInfo +{ + uint32_t pid = 0; + std::wstring imageName; + std::vector threads; + + bool operator < (const ProcessInfo& other) + { + return this->pid < other.pid; + } +}; + +/// +/// Section object information +/// +struct SectionInfo +{ + ptr_t size = 0; + uint32_t attrib = 0; +}; + +/// +/// Process handle information +/// +struct HandleInfo +{ + HANDLE handle = nullptr; + uint32_t access = 0; + uint32_t flags = 0; + ptr_t pObject = 0; + + std::wstring typeName; + std::wstring name; + + // Object-specific info + std::shared_ptr section; +}; + +#define DEFAULT_ACCESS_P PROCESS_QUERY_INFORMATION | \ + PROCESS_VM_READ | \ + PROCESS_VM_WRITE | \ + PROCESS_VM_OPERATION | \ + PROCESS_CREATE_THREAD | \ + PROCESS_SET_QUOTA | \ + PROCESS_TERMINATE | \ + PROCESS_SUSPEND_RESUME | \ + PROCESS_DUP_HANDLE +class Process +{ +public: + BLACKBONE_API Process(); + BLACKBONE_API ~Process(void); + + /// + /// Attach to existing process + /// + /// Process ID + /// Access mask + /// Status code + BLACKBONE_API NTSTATUS Attach( DWORD pid, DWORD access = DEFAULT_ACCESS_P ); + + /// + /// Attach to existing process + /// + /// Process name + /// Access mask + /// Status code + BLACKBONE_API NTSTATUS Attach( const wchar_t* name, DWORD access = DEFAULT_ACCESS_P ); + + /// + /// Attach to existing process + /// + /// Process handle + /// Status code + BLACKBONE_API NTSTATUS Attach( HANDLE hProc ); + + /// + /// Create new process and attach to it + /// + /// Executable path + /// Leave process in suspended state. To resume process one should resume its main thread + /// If 'suspended' is true, this flag will enforce process initialization via second thread + /// Process command line + /// Startup directory + /// Additional startup params + /// Status code + BLACKBONE_API NTSTATUS CreateAndAttach( + const std::wstring& path, + bool suspended = false, + bool forceInit = true, + const std::wstring& cmdLine = L"", + const wchar_t* currentDir = nullptr, + STARTUPINFOW* pStartup = nullptr + ); + + /// + /// Detach form current process, if any + /// + /// Status code + BLACKBONE_API NTSTATUS Detach(); + + /// + /// Ensure LdrInitializeProcess gets called + /// + /// Status code + BLACKBONE_API NTSTATUS EnsureInit(); + + /// + /// Suspend process + /// + /// Status code + BLACKBONE_API NTSTATUS Suspend(); + + /// + /// Resume process + /// + /// Status code + BLACKBONE_API NTSTATUS Resume(); + + /// + /// Get process ID + /// + /// Process ID + BLACKBONE_API inline DWORD pid() const { return _core.pid(); } + + /// + /// Checks if process still exists + /// + /// true if process is valid and exists + BLACKBONE_API bool valid(); + + /// + /// Terminate process + /// + /// Exit code + /// Stratus code + BLACKBONE_API NTSTATUS Terminate( uint32_t code = 0 ); + + /// + /// Enumerate all open handles + /// + /// Found handles or status code + BLACKBONE_API call_result_t> EnumHandles(); + + /// + /// Search for process by executable name + /// + /// Process name. If empty - function will retrieve all existing processes + /// Found processses + BLACKBONE_API static std::vector EnumByName( const std::wstring& name ); + + /// + /// Search for process by executable name or by process ID + /// + /// Target process ID. rocess name. If empty - function will retrieve all existing processes + /// Process executable name. If empty - function will retrieve all existing processes + /// Found processses + /// If set to true, function will retrieve info ablout process threads + /// Status code + BLACKBONE_API static call_result_t> EnumByNameOrPID( + uint32_t pid, + const std::wstring& name, + bool includeThreads = false + ); + + // + // Subroutines + // + BLACKBONE_API ProcessCore& core() { return _core; } // Core routines and native + BLACKBONE_API ProcessMemory& memory() { return _memory; } // Memory manipulations + BLACKBONE_API ProcessModules& modules() { return _modules; } // Module management + BLACKBONE_API ProcessThreads& threads() { return _threads; } // Threads + BLACKBONE_API RemoteHook& hooks() { return _hooks; } // Hooking code remotely + BLACKBONE_API RemoteLocalHook& localHooks() { return _localHooks; } // Hooking code locally + BLACKBONE_API RemoteExec& remote() { return _remote; } // Remote code execution + BLACKBONE_API MMap& mmap() { return _mmap; } // Manual module mapping + BLACKBONE_API NtLdr& nativeLdr() { return _nativeLdr; } // Native loader routines + + // Sugar + BLACKBONE_API const Wow64Barrier& barrier() const { return _core._native->GetWow64Barrier(); } + +private: + Process(const Process&) = delete; + Process& operator =(const Process&) = delete; + +private: + ProcessCore _core; // Core routines and native subsystem + ProcessModules _modules; // Module management + ProcessMemory _memory; // Memory manipulations + ProcessThreads _threads; // Threads + RemoteHook _hooks; // Hooking code remotely + RemoteLocalHook _localHooks; // In-process remote hooks + RemoteExec _remote; // Remote code execution + MMap _mmap; // Manual module mapping + NtLdr _nativeLdr; // Native loader routines +}; + +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/ProcessCore.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/ProcessCore.h new file mode 100644 index 0000000..d6e2ba4 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/ProcessCore.h @@ -0,0 +1,118 @@ +#pragma once + +#include "../Include/NativeStructures.h" +#include "../Include/HandleGuard.h" +#include "../Subsystem/Wow64Subsystem.h" +#include "../Subsystem/x86Subsystem.h" + +#include +#include + +namespace blackbone +{ + +class ProcessCore +{ +public: + + /// + /// Check if target process is running in WOW64 mode + /// + /// true if process is WOW64 + BLACKBONE_API inline bool isWow64() const { return _native->GetWow64Barrier().targetWow64; } + + /// + /// Get process handle + /// + /// Process handle + BLACKBONE_API inline HANDLE handle() const { return _hProcess; } + + /// + /// Get process ID + /// + /// Process ID + BLACKBONE_API inline DWORD pid() const { return _pid; } + + /// + /// Get process data execution prevention state + /// + /// true if DEP is enabled for process + BLACKBONE_API inline bool DEP() const { return _dep; }; + + /// + /// Get system routines + /// + /// + BLACKBONE_API inline Native* native() { return _native.get(); } + + /// + /// Get WOW64 PEB + /// + /// Retrieved PEB32 + /// PEB pointer + BLACKBONE_API inline ptr_t peb32( _PEB32* ppeb = nullptr ) { return _native->getPEB( ppeb ); } + + /// + /// Get native PEB + /// + /// Retrieved PEB64 + /// PEB pointer + BLACKBONE_API inline ptr_t peb64( _PEB64* ppeb = nullptr ) { return _native->getPEB( ppeb ); } + + /// + /// Get PEB + /// + /// Retrieved PEB + /// PEB pointer + template + BLACKBONE_API inline ptr_t peb( _PEB_T* ppeb = nullptr ) { return _native->getPEB( ppeb ); } + + /// + /// Check if process is a protected process + /// + /// true if protected + BLACKBONE_API bool isProtected(); + +private: + friend class Process; + using ptrNative = std::unique_ptr; + +private: + ProcessCore(); + ProcessCore( const ProcessCore& ) = delete; + ~ProcessCore(); + + /// + /// Attach to existing process + /// + /// Process ID + /// Access mask + /// Status + NTSTATUS Open( DWORD pid, DWORD access ); + + /// + /// Attach to existing process by handle + /// + /// Process handle + /// Status + NTSTATUS Open( HANDLE handle ); + + /// + /// Initialize some internal data + /// + /// Status code + NTSTATUS Init(); + + /// + /// Close current process handle + /// + void Close(); + +private: + ProcessHandle _hProcess; // Process handle + DWORD _pid = 0; // Process ID + ptrNative _native; // Api wrapper + bool _dep = true; // DEP state for process +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/ProcessMemory.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/ProcessMemory.h new file mode 100644 index 0000000..9ce9bab --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/ProcessMemory.h @@ -0,0 +1,223 @@ +#pragma once + +#include "../Include/Winheaders.h" +#include "RPC/RemoteMemory.h" +#include "MemBlock.h" + +#include +#include + +namespace blackbone +{ + + +enum class MemProtectionCasting +{ + none, // Don't change provided memory protection flags + useDep // Strip executable flag if DEP is off +}; + +class ProcessMemory : public RemoteMemory +{ +public: + BLACKBONE_API ProcessMemory( class Process* process ); + BLACKBONE_API ~ProcessMemory(); + + /// + /// Allocate new memory block + /// + /// Block size + /// Memory protection + /// Desired base address of new block + /// false if caller will be responsible for block deallocation + /// Memory block. If failed - returned block will be invalid + BLACKBONE_API call_result_t Allocate( size_t size, DWORD protection = PAGE_EXECUTE_READWRITE, ptr_t desired = 0, bool own = true ); + + /// + /// Allocate new memory block as close to a desired location as possible + /// + /// Block size + /// Memory protection + /// Desired base address of new block + /// false if caller will be responsible for block deallocation + /// Memory block. If failed - returned block will be invalid + BLACKBONE_API call_result_t AllocateClosest( size_t size, DWORD protection = PAGE_EXECUTE_READWRITE, ptr_t desired = 0, bool own = true ); + + /// + /// Free memory + /// + /// Memory address to release. + /// Region size + /// Release/decommit + /// Status + BLACKBONE_API NTSTATUS Free( ptr_t pAddr, size_t size = 0, DWORD freeType = MEM_RELEASE ); + + /// + /// Get memory region info + /// + /// Memory address + /// Retrieved info + /// Status + BLACKBONE_API NTSTATUS Query( ptr_t pAddr, PMEMORY_BASIC_INFORMATION64 pInfo ); + + /// + /// Change memory protection + /// + /// Memory address + /// Region size + /// New memory protection flags + /// Old protection flags + /// Status + BLACKBONE_API NTSTATUS Protect( ptr_t pAddr, size_t size, DWORD flProtect, DWORD *pOld = NULL ); + + /// + /// Read data + /// + /// Memory address to read from + /// Size of data to read + /// Output buffer + /// + /// If true, function will try to read all committed pages in range ignoring uncommitted ones. + /// Otherwise function will fail if there is at least one non-committed page in region. + /// + /// Status + BLACKBONE_API NTSTATUS Read( ptr_t dwAddress, size_t dwSize, PVOID pResult, bool handleHoles = false ); + + /// + /// Read data + /// + /// Base address + list of offsets + /// Size of data to read + /// Output buffer + /// + /// If true, function will try to read all committed pages in range ignoring uncommitted ones. + /// Otherwise function will fail if there is at least one non-committed page in region. + /// + /// Status + BLACKBONE_API NTSTATUS Read( const std::vector& adrList, size_t dwSize, PVOID pResult, bool handleHoles = false ); + + /// + /// Write data + /// + /// Memory address to write to + /// Size of data to write + /// Buffer to write + /// Status + BLACKBONE_API NTSTATUS Write( ptr_t pAddress, size_t dwSize, const void* pData ); + + /// + /// Write data + /// + /// Base address + list of offsets + /// Size of data to write + /// Buffer to write + /// Status + BLACKBONE_API NTSTATUS Write( const std::vector& adrList, size_t dwSize, const void* pData ); + + /// + /// Read data + /// + /// Address to read from + /// Read data + template + inline call_result_t Read( ptr_t dwAddress ) + { + auto res = reinterpret_cast(_malloca( sizeof( T ) )); + auto status = Read( dwAddress, sizeof( T ), res ); + return call_result_t( *res, status ); + }; + + /// + /// Read data + /// + /// Base address + list of offsets + /// Read data + template + inline call_result_t Read( std::vector&& adrList ) + { + auto res = reinterpret_cast(_malloca( sizeof( T ) )); + auto status = Read( std::forward>( adrList ), sizeof( T ), res ); + return call_result_t( *res, status ); + } + + /// + /// Read data + /// + /// Address to read from + /// Read data + /// Status code + template + inline NTSTATUS Read( ptr_t dwAddress, T& result ) + { + return Read( dwAddress, sizeof( result ), &result ); + }; + + /// + /// Read data + /// + /// Base address + list of offsets + /// Read data + /// Status code + template + inline NTSTATUS Read( std::vector&& adrList, T& result ) + { + return Read( std::forward>( adrList ), sizeof( result ), &result ); + }; + + /// + /// Write data + /// + /// Size of data to write + /// Data to write + /// Status + template + inline NTSTATUS Write( ptr_t dwAddress, const T& data ) + { + return Write( dwAddress, sizeof( T ), &data ); + } + + /// + /// Write data + /// + /// Base address + list of offset + /// Data to write + /// Status + template + inline NTSTATUS Write( std::vector&& adrList, const T& data ) + { + return Write( std::forward>( adrList ), sizeof( T ), &data ); + } + + /// + /// Enumerate valid memory regions + /// + /// If true - non-allocated regions will be included in list + /// Found regions + BLACKBONE_API std::vector EnumRegions( bool includeFree = false ); + + /// + /// Get memory protection casting behavior + /// + /// current behavior + BLACKBONE_API MemProtectionCasting protectionCasting() { return _casting; } + + /// + /// Set memory protection casting behavior + /// + /// new behavior + BLACKBONE_API void protectionCasting( MemProtectionCasting casting ) { _casting = casting; } + + BLACKBONE_API inline class ProcessCore& core() { return _core; } + BLACKBONE_API inline class Process* process() { return _process; } + +private: + ProcessMemory( const ProcessMemory& ) = delete; + ProcessMemory& operator =( const ProcessMemory& ) = delete; + +private: + class Process* _process; // Owning process object + class ProcessCore& _core; // Core routines + MemProtectionCasting _casting = MemProtectionCasting::useDep; +}; + +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/ProcessModules.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/ProcessModules.h new file mode 100644 index 0000000..2d8e43e --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/ProcessModules.h @@ -0,0 +1,254 @@ +#pragma once + +#include "../Config.h" +#include "../Include/Winheaders.h" +#include "../Include/CallResult.h" +#include "../Include/Types.h" +#include "../PE/PEImage.h" +#include "../Misc/Utils.h" +#include "Threads/Thread.h" + +#include +#include +#include +#include + +namespace std +{ + template <> + struct hash < struct pair > + { + size_t operator()( const pair& value ) const + { + hash sh; + return sh( value.first ) ^ value.second; + } + }; +} + + +namespace blackbone +{ + +struct exportData +{ + ptr_t procAddress = 0; // Function address + + std::wstring forwardModule; // Name of forward module + std::string forwardName; // Forwarded function name + WORD forwardOrdinal = 0; // Forwarded function ordinal + + bool isForwarded = false; // Function is forwarded to another module + bool forwardByOrd = false; // Forward is done by ordinal +}; + +class ProcessModules +{ +public: + using mapModules = std::unordered_map, ModuleDataPtr> ; + +public: + BLACKBONE_API ProcessModules( class Process& proc ); + BLACKBONE_API ~ProcessModules(); + + /// + /// Get module by name + /// + /// Module name + /// Module type. 32 bit or 64 bit + /// Search type. + /// Module data. nullptr if not found + BLACKBONE_API ModuleDataPtr GetModule( + const std::wstring& name, + eModSeachType search = LdrList, + eModType type = mt_default + ); + + /// + /// Get module by name + /// + /// Module name. + /// Search type. + /// Module type. 32 bit or 64 bit + /// Import module name. Used only to resolve ApiSchema during manual map + /// Module data. nullptr if not found + BLACKBONE_API ModuleDataPtr GetModule( + std::wstring& name, + eModSeachType search = LdrList, + eModType type = mt_default, + const wchar_t* baseModule = L"" + ); + + /// + /// Get module by base address + /// + /// Module base address + /// If true modBase must exactly match module base address + /// Search type. + /// Module type. 32 bit or 64 bit + /// Module data. nullptr if not found + BLACKBONE_API ModuleDataPtr GetModule( + module_t modBase, + bool strict = true, + eModSeachType search = LdrList, + eModType type = mt_default + ); + + /// + /// Get process main module + /// + /// Module data. nullptr if not found + BLACKBONE_API ModuleDataPtr GetMainModule(); + + /// + /// Enumerate all process modules + /// + /// Search method + /// Module list + BLACKBONE_API const mapModules& GetAllModules( eModSeachType search = LdrList ); + + /// + /// Get list of manually mapped modules + /// + /// List of modules + BLACKBONE_API mapModules GetManualModules(); + + /// + /// Get export address. Forwarded exports will be automatically resolved if forward module is present + /// + /// Module to search in + /// Function name or ordinal + /// Import module name. Only used to resolve ApiSchema during manual map. + /// Export info. If failed procAddress field is 0 + BLACKBONE_API call_result_t GetExport( + const ModuleDataPtr& hMod, + const char* name_ord, + const wchar_t* baseModule = L"" + ); + + /// + /// Get export address. Forwarded exports will be automatically resolved if forward module is present + /// + /// Module to search in + /// Function name or ordinal + /// Import module name. Only used to resolve ApiSchema during manual map. + /// Export info. If failed procAddress field is 0 + BLACKBONE_API call_result_t GetExport( + const ModuleData& hMod, + const char* name_ord, + const wchar_t* baseModule = L"" + ); + + /// + /// Get export address. Forwarded exports will be automatically resolved if forward module is present + /// + /// Module name to search in + /// Function name or ordinal + /// Export info. If failed procAddress field is 0 + BLACKBONE_API call_result_t GetExport( const std::wstring& modName, const char* name_ord ); + + /// + /// Get export from ntdll + /// + /// Function name or ordinal + /// Module type. 32 bit or 64 bit + /// Search type. + /// Export info. If failed procAddress field is 0 + BLACKBONE_API call_result_t GetNtdllExport( + const char* name_ord, + eModType type = mt_default, + eModSeachType search = LdrList + ); + + /// + /// Inject image into target process + /// + /// Full-qualified image path + /// Module info. nullptr if failed + BLACKBONE_API call_result_t Inject( const std::wstring& path, ThreadPtr pThread = nullptr ); + +#ifdef COMPILER_MSVC + /// + /// Inject pure IL image. + /// + /// NET runtime version to use + /// Path to image + /// Method to call + /// Arguments passed into method + /// Return code + /// true on success + BLACKBONE_API bool InjectPureIL( + const std::wstring& netVersion, + const std::wstring& netAssemblyPath, + const std::wstring& netAssemblyMethod, + const std::wstring& netAssemblyArgs, + DWORD& returnCode + ); +#endif + + /// + /// Unload specific module from target process. Can't be used to unload manually mapped modules + /// + /// Module to unload + /// true on success + BLACKBONE_API NTSTATUS Unload( const ModuleDataPtr& hMod ); + + /// + /// Unlink module from most loader structures + /// + /// Module to unlink + /// true on success + BLACKBONE_API bool Unlink( const ModuleDataPtr& mod ); + BLACKBONE_API bool Unlink( const ModuleData& mod ); + + /// + /// Store manually mapped module in module list + /// + /// Module data + /// Module info + BLACKBONE_API ModuleDataPtr AddManualModule( const ModuleData& mod ); + + /// + /// Canonicalize paths and set module type to manual if requested + /// + /// Module data + /// Value to set ModuleData::manual to + /// Module data + BLACKBONE_API ModuleData Canonicalize( const ModuleData& mod, bool manual ); + + /// + /// Remove module from module list + /// + /// Module file name + /// Module type. 32 bit or 64 bit + BLACKBONE_API void RemoveManualModule( const std::wstring& filename, eModType mt ); + + /// + /// Ensure module is a valid PE image + /// + /// Module base address + /// true on success + BLACKBONE_API bool ValidateModule( module_t base ); + + /// + /// Reset local data + /// + BLACKBONE_API void reset(); + +private: + ProcessModules( const ProcessModules& ) = delete; + ProcessModules operator =(const ProcessModules&) = delete; + + void UpdateModuleCache( eModSeachType search, eModType type ); + +private: + class Process& _proc; + class ProcessMemory& _memory; + class ProcessCore& _core; + + mapModules _modules; // Fast lookup cache + CriticalSection _modGuard; // Module guard + bool _ldrPatched; // Win7 loader patch flag +}; + +}; diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteContext.hpp b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteContext.hpp new file mode 100644 index 0000000..f34f571 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteContext.hpp @@ -0,0 +1,291 @@ +#pragma once + +#include "../ProcessCore.h" +#include "../ProcessMemory.h" +#include "../Threads/Thread.h" +#include "../../Include/Macro.h" + +namespace blackbone +{ + +/// +/// Remote function context during hook breakpoint. +/// +class RemoteContext +{ +public: + BLACKBONE_API RemoteContext( + ProcessMemory& memory, + Thread& thd, + _CONTEXT64& ctx, + ptr_t frame_ptr, + BOOL x64, + int wordSize + ) + : _memory( memory ) + , _thd( thd ) + , _ctx( ctx ) + , _x64Target( x64 ) + , _wordSize( wordSize ) + , _frame_ptr( frame_ptr != 0 ? frame_ptr : ctx.Rsp ) + { + } + + BLACKBONE_API ~RemoteContext() + { + } + + // memory object + BLACKBONE_API inline ProcessMemory& memory() + { + return _memory; + } + + // Native context + BLACKBONE_API inline _CONTEXT64& native() + { + return _ctx; + } + + /// + /// Get current process thread where exception occurred + /// + /// Thread + BLACKBONE_API inline Thread& getThread() + { + return _thd; + } + + /// + /// + /// + /// Return address + BLACKBONE_API inline const ptr_t returnAddress() const + { + ptr_t val = 0; + _memory.Read( _frame_ptr, _wordSize, &val ); + + return val; + } + + /// + /// Set return address of current frame + /// + /// New return address + /// true on success + BLACKBONE_API inline bool returnAddress( ptr_t val ) const + { + return (_memory.Write( _frame_ptr, _wordSize, &val ) == STATUS_SUCCESS); + } + + /// + /// Set new integer return value. Has no effect on FPU. + /// Has effect only if called in return callback + /// + /// New return value + BLACKBONE_API inline void setReturnValue( ptr_t val ) const + { + memcpy( &_ctx.Rax, &val, _wordSize ); + } + + /// + /// Raise exception on function return + /// + /// Masked return address + BLACKBONE_API ptr_t hookReturn() + { + ptr_t val = returnAddress(); + SET_BIT( val, (_wordSize * 8 - 1) ); + if (returnAddress( val ) == false) + return 0; + + return val; + } + + /// + /// Remove exception on return + /// + /// Return address + BLACKBONE_API ptr_t unhookReturn() + { + auto val = returnAddress(); + RESET_BIT( val, (_wordSize * 8 - 1) ); + if (!returnAddress( val )) + return 0; + + return val; + } + + /// + /// Get argument value. + /// Argument index is 0 based. + /// For x86 function works only with stack arguments + /// For x64 only integer arguments can be retrieved + /// + /// 0-based argument index + /// Argument value + BLACKBONE_API DWORD64 getArg( int index ) + { + if(_x64Target) + { + switch (index) + { + case 0: + return _ctx.Rcx; + case 1: + return _ctx.Rdx; + case 2: + return _ctx.R8; + case 3: + return _ctx.R9; + + default: + return _memory.Read( _ctx.Rsp + 0x28 + (index - 4) * _wordSize ).result( 0 ); + } + } + else + { + DWORD64 val = 0; + _memory.Read( _ctx.Rsp + 4 + index * _wordSize, _wordSize, &val ); + return val; + } + } + + /// + /// Set argument value. + /// For x86 function works only with stack arguments. + /// For x64 only integer arguments can be set + /// + /// 0-based argument index + /// New argument value + /// true on success + BLACKBONE_API bool setArg( int index, DWORD64 val ) + { + if (_x64Target) + { + switch (index) + { + case 0: + _ctx.Rcx = val; + break; + case 1: + _ctx.Rdx = val; + break; + case 2: + _ctx.R8 = val; + break; + case 3: + _ctx.R9 = val; + break; + + default: + return (_memory.Write( _ctx.Rsp + 0x28 + (index - 4) * _wordSize, val ) == STATUS_SUCCESS); + } + + return true; + } + else + { + return (_memory.Write( _ctx.Rsp + 4 + index * _wordSize, _wordSize, &val ) == STATUS_SUCCESS); + } + } + + + /// + /// Get last thread error code + /// + /// Last error code, -1 if function failed + BLACKBONE_API DWORD lastError() + { + ptr_t pteb = 0; + LONG offset = 0; + + if( _x64Target ) + { + pteb = _thd.teb( (_TEB64*)nullptr ); + offset = FIELD_OFFSET( _TEB64, LastErrorValue ); + } + else + { + pteb = _thd.teb( (_TEB32*)nullptr ); + offset = FIELD_OFFSET( _TEB32, LastErrorValue ); + } + + if (pteb) + return _memory.Read( pteb + offset ).result( 0xFFFFFFFF ); + + return 0xFFFFFFFF; + } + + /// + /// Set last thread error code + /// + /// Last error code, -1 if function failed + BLACKBONE_API DWORD lastError( DWORD newError ) + { + ptr_t pteb = 0; + LONG offset = 0; + + if (_x64Target) + { + pteb = _thd.teb( (_TEB64*)nullptr ); + offset = FIELD_OFFSET( _TEB64, LastErrorValue ); + } + else + { + pteb = _thd.teb( (_TEB32*)nullptr ); + offset = FIELD_OFFSET( _TEB32, LastErrorValue ); + } + + if (!pteb) + return 0xFFFFFFFF; + + return _memory.Write( pteb + offset, newError ); + } + + + /// + /// Get arbitrary thread data + /// + /// Data value + BLACKBONE_API ptr_t getUserContext() + { + auto pteb = _thd.teb( (_TEB64*)nullptr ); + if (!pteb) + return 0; + + return _memory.Read( pteb + FIELD_OFFSET( _NT_TIB_T, ArbitraryUserPointer ) ).result( 0 ); + } + + /// + /// Set arbitrary thread data + /// + /// true on success + BLACKBONE_API bool setUserContext( ptr_t context ) + { + auto pteb = _thd.teb( (_TEB64*)nullptr ); + if(pteb) + { + if (_memory.Write( pteb + FIELD_OFFSET( _NT_TIB_T, ArbitraryUserPointer ), context ) == STATUS_SUCCESS) + return true; + } + + return false; + } + + +private: + RemoteContext( const RemoteContext& ) = delete; + RemoteContext& operator = ( const RemoteContext& ) = delete; + +private: + ProcessMemory& _memory; // Process memory routines + Thread& _thd; // Current thread + _CONTEXT64& _ctx; // Current thread context + + BOOL _x64Target = FALSE; // Target process is 64 bit + int _wordSize = 4; // 4 for x86, 8 for x64 + ptr_t _frame_ptr = 0; // Top stack frame pointer +}; + +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteExec.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteExec.h new file mode 100644 index 0000000..1c24bee --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteExec.h @@ -0,0 +1,247 @@ +#pragma once + +#include "../../Include/Winheaders.h" +#include "../../Asm/AsmFactory.h" +#include "../Threads/Threads.h" +#include "../MemBlock.h" + +// User data offsets +#define INTRET_OFFSET 0x00 +#define RET_OFFSET 0x08 +#define ERR_OFFSET 0x10 +#define EVENT_OFFSET 0x18 +#define ARGS_OFFSET 0x20 + + +namespace blackbone +{ + +enum WorkerThreadMode +{ + Worker_None, // No worker thread + Worker_CreateNew, // Create dedicated worker thread + Worker_UseExisting, // Hijack existing thread +}; + +class RemoteExec +{ + using vecArgs = std::vector; + +public: + BLACKBONE_API RemoteExec( class Process& proc ); + BLACKBONE_API ~RemoteExec(); + + /// + /// Create environment for future remote procedure calls + /// + /// _userData layout (x86/x64): + /// -------------------------------------------------------------------------------------------------------------------------- + /// | Internal return value | Return value | Last Status code | Event handle | Space for copied arguments and strings | + /// ------------------------------------------------------------------------------------------------------------------------- + /// | 8/8 bytes | 8/8 bytes | 8/8 bytes | 8/8 bytes | | + /// -------------------------------------------------------------------------------------------------------------------------- + /// + /// Worket thread mode + /// Create sync event for worker thread + /// Status + BLACKBONE_API NTSTATUS CreateRPCEnvironment( WorkerThreadMode mode = Worker_None, bool bEvent = false ); + + /// + /// Create new thread and execute code in it. Wait until execution ends + /// + /// Code to execute + /// Code size + /// Code return value + /// Switch wow64 thread to long mode upon creation + /// Status + BLACKBONE_API NTSTATUS ExecInNewThread( + PVOID pCode, size_t size, + uint64_t& callResult, + eThreadModeSwitch modeSwitch = AutoSwitch + ); + + /// + /// Execute code in context of our worker thread + /// + /// Cde to execute + /// Code size. + /// Execution result + /// Status + BLACKBONE_API NTSTATUS ExecInWorkerThread( PVOID pCode, size_t size, uint64_t& callResult ); + + /// + /// Execute code in context of any existing thread + /// + /// Cde to execute + /// Code size. + /// Execution result + /// Target thread + /// Status + BLACKBONE_API NTSTATUS ExecInAnyThread( PVOID pCode, size_t size, uint64_t& callResult, ThreadPtr& thread ); + + /// + /// Create new thread with specified entry point and argument + /// + /// Entry point + /// Thread function argument + /// Thread exit code + BLACKBONE_API DWORD ExecDirect( ptr_t pCode, ptr_t arg ); + + /// + /// Generate assembly code for remote call. + /// + /// Underlying assembler object + /// Remote function pointer + /// Function arguments + /// Calling convention + /// Return type + /// Status code + BLACKBONE_API NTSTATUS PrepareCallAssembly( + IAsmHelper& a, + ptr_t pfn, + std::vector& args, + eCalligConvention cc, + eReturnType retType + ); + + /// + /// Generate return from function with event synchronization + /// + /// Target assembly helper + /// 32/64bit loader + /// Function return type + /// Return value offset + BLACKBONE_API void AddReturnWithEvent( + IAsmHelper& a, + eModType mt = mt_default, + eReturnType retType = rt_int32, + uint32_t retOffset = RET_OFFSET + ); + + /// + /// Save value in rax to user buffer + /// + /// Target assembly helper + BLACKBONE_API void SaveCallResult( IAsmHelper& a, uint32_t retOffset = RET_OFFSET ) + { + a->mov( a->zdx, _userData[_currentBufferIdx].ptr() + retOffset ); + a->mov( asmjit::host::dword_ptr( a->zdx ), a->zax ); + } + + /// + /// Retrieve call result + /// + /// Retrieved result + /// true on success + template + NTSTATUS GetCallResult( T& result ) + { + // This method is called after an RPC call, so the ping pong buffers have already been switched, so + // we want to access the OTHER buffer here. + if constexpr (sizeof( T ) > sizeof( uint64_t )) + { + if constexpr (std::is_reference_v) + return _userData[1 - _currentBufferIdx].Read( _userData[1 - _currentBufferIdx].Read( RET_OFFSET, 0 ), sizeof( T ), reinterpret_cast(&result) ); + else + return _userData[1 - _currentBufferIdx].Read( ARGS_OFFSET, sizeof( T ), reinterpret_cast(&result) ); + } + else + return _userData[1 - _currentBufferIdx].Read( RET_OFFSET, sizeof( T ), reinterpret_cast(&result) ); + } + + /// + /// Retrieve last NTSTATUS code + /// + /// + BLACKBONE_API NTSTATUS GetLastStatus() + { + return _userData[_currentBufferIdx].Read( ERR_OFFSET, STATUS_NOT_FOUND ); + } + + /// + /// Terminate existing worker thread + /// + BLACKBONE_API void TerminateWorker(); + + /// + /// Get worker thread + /// + /// + BLACKBONE_API ThreadPtr getWorker() { return _workerThread; } + + /// + /// Get execution thread + /// + /// + BLACKBONE_API ThreadPtr getExecThread() { return _hijackThread ? _hijackThread : _workerThread; } + + /// + /// Ge memory routines + /// + /// + BLACKBONE_API class ProcessMemory& memory() { return _memory; } + + /// + /// Reset instance + /// + BLACKBONE_API void reset(); + +private: + + /// + /// Create worker RPC thread + /// + /// Thread ID + call_result_t CreateWorkerThread(); + + /// + /// Create event to synchronize APC procedures + /// + /// The thread identifier. + /// Status code + NTSTATUS CreateAPCEvent( DWORD threadID ); + + /// + /// Copy executable code into remote codecave for future execution + /// + /// Code to copy + /// Code size + /// Status + NTSTATUS CopyCode( PVOID pCode, size_t size ); + + void SwitchActiveBuffer() + { + // The ExecIn*() methods might return while the remote RPC code is still executing (it still has to + // return after signaling the event), making it possible to start another RPC call which would then + // overwrite the _userData/_userCode blocks that are still in use by the previous call. If subsequent + // RPC calls use the same buffers, this creates a race condition, very rarely resulting in crashes in + // the remote process, especially in KiUserApcDispatcher(). + // + // For this reason, we allocate two separate instances of _userCode and _userData, and switch between + // them for subsequent RPC calls (buffer ping-ponging). This should prevent the race condition without + // having to Sleep() for an arbitrary amount of time after each RPC call. + _currentBufferIdx = 1 - _currentBufferIdx; + } + + RemoteExec( const RemoteExec& ) = delete; + RemoteExec& operator =(const RemoteExec&) = delete; + +private: + // Process routines + class Process& _process; + class ProcessModules& _mods; + class ProcessMemory& _memory; + class ProcessThreads& _threads; + + ThreadPtr _workerThread; // Worker thread handle + ThreadPtr _hijackThread; // Thread to use for hijacking + HANDLE _hWaitEvent; // APC sync event handle + MemBlock _workerCode; // Worker thread address space + MemBlock _userCode[2]; // Codecave for code execution + MemBlock _userData[2]; // Region to store copied structures and strings + bool _apcPatched; // KiUserApcDispatcher was patched + int _currentBufferIdx;// Index of the currently used _userCode/_userData block. See SwitchActiveBuffer(). +}; + + +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteFunction.hpp b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteFunction.hpp new file mode 100644 index 0000000..3c092c0 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteFunction.hpp @@ -0,0 +1,268 @@ +#pragma once + +#include "../../Include/CallResult.h" +#include "../../Asm/IAsmHelper.h" +#include "../Process.h" + +#include + +// TODO: Find more elegant way to deduce calling convention +// than defining each one manually + +namespace blackbone +{ +template +class RemoteFunctionBase +{ +public: + using ReturnType = std::conditional_t, int, R>; + + struct CallArguments + { + CallArguments( const Args&... args ) + : arguments{ AsmVariant( args )... } + { + } + + template + CallArguments( const std::tuple& args, std::index_sequence ) + : arguments{ std::get( args )... } + { + } + + CallArguments( const std::initializer_list& args ) + : arguments{ args } + { + // Since initializer_list can't be moved from, dataStruct types must be fixed + for (auto& arg : arguments) + { + if (!arg.buf.empty()) + arg.imm_val = reinterpret_cast(arg.buf.data()); + } + } + + // Manually set argument to custom value + void set( int pos, const AsmVariant& newVal ) + { + if (arguments.size() > static_cast(pos)) + arguments[pos] = newVal; + } + + std::vector arguments; + }; + +public: + RemoteFunctionBase( Process& proc, ptr_t ptr, ThreadPtr boundThread = nullptr ) + : _process( proc ) + , _ptr( ptr ) + , _boundThread( boundThread ) + { + static_assert( + (... && !std::is_reference_v), + "Please replace reference type with pointer type in function type specification" + ); + } + + call_result_t Call( CallArguments& args, ThreadPtr contextThread = nullptr ) + { + ReturnType result = {}; + uint64_t tmpResult = 0; + NTSTATUS status = STATUS_SUCCESS; + auto a = AsmFactory::GetAssembler( _process.core().isWow64() ); + + if (!contextThread) + contextThread = _boundThread; + + // Ensure RPC environment exists + status = _process.remote().CreateRPCEnvironment( Worker_None, contextThread != nullptr ); + if (!NT_SUCCESS( status )) + return call_result_t( result, status ); + + // FPU check + constexpr bool isFloat = std::is_same_v; + constexpr bool isDouble = std::is_same_v || std::is_same_v; + + // Deduce return type + eReturnType retType = rt_int32; + + if constexpr (isFloat) + retType = rt_float; + else if constexpr (isDouble) + retType = rt_double; + else if constexpr (sizeof( ReturnType ) == sizeof( uint64_t )) + retType = rt_int64; + else if constexpr (!std::is_reference_v && sizeof( ReturnType ) > sizeof( uint64_t )) + retType = rt_struct; + + _process.remote().PrepareCallAssembly( *a, _ptr, args.arguments, Conv, retType ); + + // Choose execution thread + if (!contextThread) + { + status = _process.remote().ExecInNewThread( (*a)->make(), (*a)->getCodeSize(), tmpResult ); + } + else if (contextThread == _process.remote().getWorker()) + { + status = _process.remote().ExecInWorkerThread( (*a)->make(), (*a)->getCodeSize(), tmpResult ); + } + else + { + status = _process.remote().ExecInAnyThread( (*a)->make(), (*a)->getCodeSize(), tmpResult, contextThread ); + } + + // Get function return value + if (!NT_SUCCESS( status ) || !NT_SUCCESS( status = _process.remote().GetCallResult( result ) )) + return call_result_t( result, status ); + + // Update arguments + for (auto& arg : args.arguments) + if (arg.type == AsmVariant::dataPtr) + _process.memory().Read( arg.new_imm_val, arg.size, reinterpret_cast(arg.imm_val) ); + + return call_result_t( result, STATUS_SUCCESS ); + } + + call_result_t Call( const Args&... args ) + { + CallArguments a( args... ); + return Call( a, nullptr ); + } + + call_result_t Call( const std::tuple& args, ThreadPtr contextThread = nullptr ) + { + CallArguments a( args, std::index_sequence_for() ); + return Call( a, contextThread ); + } + + call_result_t Call( const std::initializer_list& args, ThreadPtr contextThread = nullptr ) + { + CallArguments a( args ); + return Call( a, contextThread ); + } + + call_result_t operator()( const Args&... args ) + { + CallArguments a( args... ); + return Call( a ); + } + + auto MakeArguments( const Args&... args ) + { + return CallArguments( args... ); + } + + auto MakeArguments( const std::initializer_list& args ) + { + return CallArguments( args ); + } + + auto MakeArguments( const std::tuple& args ) + { + return CallArguments( args, std::index_sequence_for() ); + } + + void BindToThread(ThreadPtr thread) { _boundThread = thread; } + + bool valid() const { return _ptr != 0; } + explicit operator bool() const { return valid(); } + +private: + Process& _process; + ptr_t _ptr = 0; + ThreadPtr _boundThread = nullptr; +}; + +// Remote function pointer +template +class RemoteFunction; + +// +// Calling convention specialization +// +template \ +class RemoteFunction : public RemoteFunctionBase +{ +public: + using RemoteFunctionBase::RemoteFunctionBase; + + RemoteFunction( Process& proc, R( __cdecl* ptr )(Args...), ThreadPtr boundThread = nullptr ) + : RemoteFunctionBase( proc, reinterpret_cast(ptr), boundThread ) + { + } +}; + +// Under AMD64 these will be same declarations as __cdecl, so compilation will fail. +#ifdef USE32 +template +class RemoteFunction : public RemoteFunctionBase +{ +public: + using RemoteFunctionBase::RemoteFunctionBase; + + RemoteFunction( Process& proc, R( __stdcall* ptr )(Args...), ThreadPtr boundThread = nullptr ) + : RemoteFunctionBase( proc, reinterpret_cast(ptr), boundThread ) + { + } +}; + +template +class RemoteFunction : public RemoteFunctionBase +{ +public: + using RemoteFunctionBase::RemoteFunctionBase; + + RemoteFunction( Process& proc, R( __thiscall* ptr )(Args...), ThreadPtr boundThread = nullptr ) + : RemoteFunctionBase( proc, reinterpret_cast(ptr), boundThread ) + { + } +}; + +template +class RemoteFunction : public RemoteFunctionBase +{ +public: + using RemoteFunctionBase::RemoteFunctionBase; + + RemoteFunction( Process& proc, R( __fastcall* ptr )(Args...), ThreadPtr boundThread = nullptr ) + : RemoteFunctionBase( proc, reinterpret_cast(ptr), boundThread ) + { + } +}; +#endif + +/// +/// Get remote function object +/// +/// Function address in the remote process +/// Function object +template +RemoteFunction MakeRemoteFunction( Process& process, ptr_t ptr, ThreadPtr boundThread = nullptr ) +{ + return RemoteFunction( process, ptr, boundThread ); +} + +/// +/// Get remote function object +/// +/// Function address in the remote process +/// Function object +template +RemoteFunction MakeRemoteFunction( Process& process, T ptr, ThreadPtr boundThread = nullptr ) +{ + return RemoteFunction( process, ptr, boundThread ); +} + +/// +/// Get remote function object +/// +/// Remote module name +/// Function name or ordinal +/// Function object +template +RemoteFunction MakeRemoteFunction( Process& process, const std::wstring& modName, const char* name_ord, ThreadPtr boundThread = nullptr ) +{ + auto ptr = process.modules().GetExport( modName, name_ord ); + return RemoteFunction( process, ptr ? ptr->procAddress : 0, boundThread ); +} + +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteHook.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteHook.h new file mode 100644 index 0000000..fbfd573 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteHook.h @@ -0,0 +1,258 @@ +#pragma once + +#include "../../Config.h" +#include "RemoteContext.hpp" + +#include "../../Include/Winheaders.h" +#include "../../Include/Macro.h" +#include "../../Misc/Utils.h" +#include "../Threads/Threads.h" + +#include +#include +#include + +namespace blackbone +{ + +class RemoteHook +{ +public: + + // Hook type + enum eHookType + { + int3 = 0, // Default int 3 breakpoint + hwbp // Hardware breakpoint + }; + + enum eHookFlags + { + none = 0, // No flags + returnHook = 1, // Hook function return + }; + + // Hook callback prototype + using fnCallback = void( *)(RemoteContext& context); + using fnClassCallback = void( __thiscall* )(const void* __this, RemoteContext& context); + + /// + /// Hook descriptor + /// + struct HookData + { + // Callback pointer + union callback + { + struct _classFn + { + fnClassCallback ptr; // Class member function pointer + const void* classPtr; // Class instance + }; + + fnCallback freeFn; // Free function pointer + _classFn classFn; // Class member pointer + }; + + callback onExecute; // Callback called upon address breakpoint + callback onReturn; // Callback called upon function return + eHookType type; // int 3 or HWBP + eHookFlags flags; // Some hooking flags + uint8_t oldByte; // Original byte in case of int 3 hook + DWORD threadID; // Thread id for HWBP (0 means global hook for all threads) + int hwbp_idx; // Index of HWBP if applied to one thread only + _CONTEXT64 entryCtx; // Thread context on function entry (used in function return hook) + }; + + using mapHook = std::map; + using mapAddress = std::map; + using setAddresses = std::map; + +public: + BLACKBONE_API RemoteHook( class ProcessMemory& memory ); + BLACKBONE_API ~RemoteHook(); + + /// + /// Hook specified address + /// + /// Hook type + /// Address + /// Callback + /// Thread to hook. Valid only for HWBP + /// true on success + BLACKBONE_API inline NTSTATUS Apply( eHookType type, uint64_t ptr, fnCallback newFn, ThreadPtr pThread = nullptr ) + { + return ApplyP( type, ptr, newFn, nullptr, pThread ); + } + + /// + /// Hook function return + /// This hook will only work if function is hooked normally + /// + /// Hooked function address + /// Callback + /// true on success + BLACKBONE_API inline NTSTATUS AddReturnHook( uint64_t ptr, fnCallback newFn ) + { + return AddReturnHookP( ptr, newFn, nullptr ); + } + + // FIXME: Alternative for MinGW +#ifdef COMPILER_MSVC + /// + /// Hook specified address + /// + /// + /// Hook type + /// Address + /// Callback + /// Class reference. + /// Thread to hook. Valid only for HWBP + /// true on success + template + inline NTSTATUS Apply( eHookType type, uint64_t ptr, void(C::* newFn)(RemoteContext& ctx), const C& classRef, ThreadPtr pThread = nullptr ) + { + return ApplyP( type, ptr, brutal_cast(newFn), &classRef, pThread ); + } + + /// + /// Hook function return + /// This hook will only work if function is hooked normally + /// + /// Hooked function address + /// Callback + /// Class reference. + /// true on success + template + inline NTSTATUS AddReturnHook( uint64_t ptr, void(C::* newFn)(RemoteContext& ctx), const C& classRef ) + { + return AddReturnHookP( ptr, brutal_cast(newFn), &classRef ); + } +#endif // COMPILER_MSVC + + /// + /// Remove existing hook + /// + /// Hooked address + BLACKBONE_API void Remove( uint64_t ptr ); + + /// + /// Stop debug and remove all hooks + /// + BLACKBONE_API void reset(); + +private: + + /// + /// Hook specified address + /// + /// Hook type + /// Address + /// Callback + /// Class reference. + /// Thread to hook. Valid only for HWBP + /// true on success + BLACKBONE_API NTSTATUS ApplyP( eHookType type, uint64_t ptr, fnCallback newFn, const void* pClass = nullptr, ThreadPtr pThread = nullptr ); + + /// + /// Hook function return + /// This hook will only work if function is hooked normally + /// + /// Hooked function address + /// Callback + /// Class reference. + /// true on success + BLACKBONE_API NTSTATUS AddReturnHookP( uint64_t ptr, fnCallback newFn, const void* pClass = nullptr ); + + /// + /// Restore hooked function + /// + /// Hook data + /// Hooked address + BLACKBONE_API void Restore( const HookData &hook, uint64_t ptr ); + + /// + /// Debug selected process + /// + /// true on success + NTSTATUS EnsureDebug(); + + /// + /// Stop process debug + /// + void EndDebug(); + + /// + /// Wrapper for debug event thread + /// + /// RemoteHook pointer + /// Error code + static DWORD __stdcall EventThreadWrap( LPVOID lpParam ); + + /// + /// Debug thread + /// + /// Error code + DWORD EventThread(); + + /// + /// Debug event handler + /// + /// Debug event data + /// Status + DWORD OnDebugEvent( const DEBUG_EVENT& DebugEv ); + + /// + /// Int 3 handler + /// + /// Debug event data + /// Status + DWORD OnBreakpoint( const DEBUG_EVENT& DebugEv ); + + /// + /// Trace and hardware breakpoints handler + /// + /// Debug event data + /// Status + DWORD OnSinglestep( const DEBUG_EVENT& DebugEv ); + + /// + /// Access violation handler + /// Used when hooking function return + /// + /// Debug event data + /// Status + DWORD OnAccessViolation( const DEBUG_EVENT& DebugEv ); + + /// + /// Walk stack frames + /// + /// Thread instruction pointer + /// >Thread stack pointer + /// Stack owner + /// Stack frames + /// Max frame count + /// Frame count + DWORD StackBacktrace( ptr_t ip, ptr_t sp, Thread& thd, std::vector>& results, int depth = 100 ); + + RemoteHook( const RemoteHook& ) = delete; + RemoteHook& operator =( const RemoteHook& ) = delete; + +private: + class ProcessMemory& _memory; + class ProcessCore& _core; + CriticalSection _lock; // Hook lock + + DWORD _debugPID = 0; // PID of process being debugged + HANDLE _hEventThd = NULL; // Debug Event thread + BOOL _x64Target = FALSE; // Target is x64 process + int _wordSize = 4; // 4 or 8 bytes + bool _active = false; // Event thread activity flag + mapHook _hooks; // Hooked callbacks + setAddresses _repatch; // Pending repatch addresses + mapAddress _retHooks; // Hooked return addresses +}; + +ENUM_OPS( RemoteHook::eHookFlags ) + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteLocalHook.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteLocalHook.h new file mode 100644 index 0000000..2f6f0b3 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteLocalHook.h @@ -0,0 +1,89 @@ +#pragma once + +#include "../../Config.h" +#include "../../Asm/AsmFactory.h" +#include "../../Include/Types.h" +#include "../MemBlock.h" + + + +namespace blackbone +{ + + +/// +/// In-process remote hook +/// +class RemoteLocalHook +{ +public: + // Must be large enough to hold ANY jump this code uses + static const size_t MaxHookJumpCodeLen = 14; + + // The displaced code should be at most 1 hook length + 1 instruction - 1 byte (if the hook jump overlaps with only the + // first byte of the following instruction), and x86_64 instructions can be at most 15 bytes. + static const size_t MaxOriginalCodeLen = MaxHookJumpCodeLen + 14; + + static const size_t MaxPatchedOriginalCodeLen = MaxOriginalCodeLen; + + enum eJumpStrategy + { + JumpPushMovRet, + JumpMovRegRet + }; + +private: + /// + /// Hook data + /// + #pragma pack(push, 1) + struct HookCtx + { + ptr_t address; // Hooked address in original code + ptr_t thunkAddr; + uint8_t origCodeSize; // Size of displaced original code + uint8_t origCode[MaxOriginalCodeLen]; // Copy of displaced original code + uint8_t patchedOrigCode[MaxPatchedOriginalCodeLen]; + uint8_t hookJumpCode[MaxHookJumpCodeLen]; + uint8_t hookJumpCodeSize; + }; + #pragma pack(pop) + +public: + RemoteLocalHook( class Process& process ); + ~RemoteLocalHook(); + + void SetJumpStrategy(eJumpStrategy strategy); + void SetJumpRegister(const asmjit::X86GpReg& reg); + + NTSTATUS SetHook( ptr_t address, asmjit::Assembler& hook ); + NTSTATUS Restore(); + + NTSTATUS PrepareHook( ptr_t address, size_t maxHookSize ); + + size_t GetDisplacedOriginalCode( uint8_t* code = nullptr ); + + bool isHooked() const { return _hooked; } + +private: + RemoteLocalHook( const RemoteLocalHook& ) = delete; + RemoteLocalHook& operator = (const RemoteLocalHook&) = delete; + + NTSTATUS AllocateMem( ptr_t address, size_t hookCodeSize ); + + NTSTATUS CopyOldCode( bool x64 ); + + uint8_t GenerateJump( uint8_t* code, ptr_t toAddr, ptr_t fromAddr, bool x64 ) const; + +private: + class Process& _process; + HookCtx _ctx; + MemBlock _hookData; + eJumpStrategy _jumpStrategy = JumpPushMovRet; + const asmjit::X86GpReg* _jumpRegister = &asmjit::host::rax; + + bool _prepared = false; + bool _hooked = false; +}; + +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteMemory.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteMemory.h new file mode 100644 index 0000000..894bd84 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/RPC/RemoteMemory.h @@ -0,0 +1,162 @@ +#pragma once + +#include "../../Config.h" +#include "../../DriverControl/DriverControl.h" + +#include +#include + +namespace blackbone +{ + + +class RemoteMemory +{ +public: +#ifdef USE64 + struct HookData + { + uint8_t original_code[24]; // Original 5 bytes + jmp + uint8_t jump_buf[12]; // Trampoline + uint8_t hook_code[384]; // Hook function + }; +#else + struct HookData + { + uint8_t original_code[10]; // Original 5 bytes + jmp + uint8_t jump_buf[5]; // Trampoline + uint8_t hook_code[384]; // Hook function + }; +#endif + + enum OperationType + { + MemVirtualAlloc = 0, // MemVirtualAlloc + MemVirtualFree, // MemVirtualFree + MemMapSection, // MemMapSection + MemUnmapSection, // MemUnmapSection + }; + + struct OperationData + { + ptr_t allocAddress; // Allocated region base + uint32_t allocSize; // Allocated region size + OperationType allocType; // Operation type + }; + + struct PageContext + { + HookData hkVirtualAlloc; // NtAllocateVirtualMemory context + HookData hkVirtualFree; // NtFreeVirtualMemory context + HookData hkMapSection; // NtMapViewOfSection context + HookData hkUnmapSection; // NtUnmapViewOfSection context + CRITICAL_SECTION csLock; // Lock to sync multi-threaded mappings + }; + +public: + BLACKBONE_API RemoteMemory( class Process* process ); + BLACKBONE_API ~RemoteMemory(); + + /// + /// Map entire process address space + /// + /// Set to true to map section objects. They are converted to private pages before locking + /// Status code + BLACKBONE_API NTSTATUS Map( bool mapSections ); + + /// + /// Map specific memory region + /// + /// Region base + /// Region size + /// Status code + BLACKBONE_API NTSTATUS Map( ptr_t base, uint32_t size ); + + /// + /// Unmap process address space from current process + /// + /// Status code + BLACKBONE_API NTSTATUS Unmap(); + + /// + /// Unmap specific memory region from current process + /// + /// Region base + /// Region size + /// Status code + BLACKBONE_API NTSTATUS Unmap( ptr_t base, uint32_t size ); + + /// + /// Translate target address accordingly to current address space + /// + /// Address to translate + /// If set to true, routine will try to map non-existing region upon translation failure + /// Translated address + BLACKBONE_API ptr_t TranslateAddress( ptr_t address, bool resolveFault = true ); + + /// + /// Setup one of the 4 possible memory hooks: + /// + /// + /// Type of hook to install + /// MemVirtualAlloc - hook NtAllocateVirtualMemory + /// MemVirtualFree - hook NtFreeVirtualMemory + /// MemMapSection - hook NtMapViewOfSection + /// MemUnmapSection - hook NtUnmapViewOfSection + /// + /// true on success + BLACKBONE_API NTSTATUS SetupHook( OperationType hkType ); + + /// + /// Restore previously hooked function + /// + /// Hook type. For more info see SetupHook + /// true on success + BLACKBONE_API bool RestoreHook( OperationType hkType ); + + /// + /// Unmap any mapped memory, restore hooks and free resources + /// + BLACKBONE_API void reset(); + +private: + /// + /// Hook thread wrapper + /// + /// RemoteMemory instance + /// 0 + static DWORD CALLBACK HookThreadWrap( LPVOID lpParam ); + + /// + /// Thread responsible for mapping and unmapping regions intercepted by remote hooks + /// + void HookThread(); + + /// + /// Build remote hook function + /// + /// Hooked function + void BuildGenericHookFn( OperationType opType ); + + /// + /// Build hook trampoline + /// + /// Hooked function type + /// Original function ptr + /// Original function address in local address space + void BuildTrampoline( OperationType opType, uintptr_t pOriginal, uint8_t* pOriginalLocal ); + +private: + class Process* _process = nullptr; // Target process + mapMemoryMap _mapDatabase; // Region map + std::wstring _pipeName; // Pipe name used to gather hook data + Handle _hPipe; // Hook pipe handle + HANDLE _targetPipe = NULL; // Hook pipe handle in target process + HANDLE _hThread = NULL; // Hook thread listener + PageContext* _pSharedData = nullptr; // Hook related data, shared between processes + ptr_t _targetShare = 0; // Address of shared in data in target process + bool _active = false; // Hook thread activity flag + bool _hooked[4] = { 0 }; // Hook state +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/Threads/Thread.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/Threads/Thread.h new file mode 100644 index 0000000..f82a649 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/Threads/Thread.h @@ -0,0 +1,276 @@ +#pragma once + +#include "../../Config.h" +#include "../../Include/Winheaders.h" +#include "../../Include/NativeStructures.h" +#include "../../Include/CallResult.h" +#include "../../Include/HandleGuard.h" +#include "../../Include/Types.h" +#include "../../Misc/Utils.h" + +#include + +namespace blackbone +{ + +#define DEFAULT_ACCESS_T THREAD_SUSPEND_RESUME | \ + THREAD_GET_CONTEXT | \ + THREAD_SET_CONTEXT | \ + THREAD_QUERY_INFORMATION | \ + THREAD_TERMINATE | \ + SYNCHRONIZE + +#define MAXULONG64_2 ((uint64_t)~((uint64_t)0)) +#define MAXULONG32_2 ((uint32_t)~((uint32_t)0)) + + +// Breakpoint type +enum HWBPType +{ + hwbp_access = 3, // Read or write + hwbp_write = 1, // Write only + hwbp_execute = 0, // Execute only +}; + +enum HWBPLength +{ + hwbp_1 = 0, // 1 byte + hwbp_2 = 1, // 2 bytes + hwbp_4 = 3, // 4 bytes + hwbp_8 = 2, // 8 bytes +}; + + +/// +/// DR7 register bitfield +/// +struct regDR7 +{ + // + // Local/global enabled index + // + uint32_t l0 : 1; + uint32_t g0 : 1; + uint32_t l1 : 1; + uint32_t g1 : 1; + uint32_t l2 : 1; + uint32_t g2 : 1; + uint32_t l3 : 1; + uint32_t g3 : 1; + + uint32_t l_enable : 1; // Local breakpoints, obsolete for P6+ + uint32_t g_enable : 1; // Global breakpoints, obsolete for P6+ + uint32_t one : 1; // Reserved + uint32_t rtm : 1; // Restricted transactional memory + uint32_t ice : 1; // ICE debugger + uint32_t gd : 1; // General detect table + uint32_t tr1 : 1; // Trace 1 + uint32_t tr2 : 1; // Trace2 + + // + // Breakpoint type/length + // + uint32_t rw0 : 2; + uint32_t len0 : 2; + uint32_t rw1 : 2; + uint32_t len1 : 2; + uint32_t rw2 : 2; + uint32_t len2 : 2; + uint32_t rw3 : 2; + uint32_t len3 : 2; + + inline void setLocal( int idx, int val ) { idx == 0 ? l0 = val : (idx == 1 ? l1 = val : (idx == 2 ? l2 = val : l3 = val)); } + inline void setRW ( int idx, int val ) { idx == 0 ? rw0 = val : (idx == 1 ? rw1 = val : (idx == 2 ? rw2 = val : rw3 = val)); } + inline void setLen ( int idx, int val ) { idx == 0 ? len0 = val : (idx == 1 ? len1 = val : (idx == 2 ? len2 = val : len3 = val)); } + + inline bool empty() const { return (l0 | l1 | l2 | l3) ? false : true; } + inline int getFreeIndex() const { return !l0 ? 0 : (!l1 ? 1 : (!l2 ? 2 : (!l3 ? 3 : -1))); } +}; + + +/// +/// Thread management +/// +class Thread +{ +public: + BLACKBONE_API Thread( DWORD id, class ProcessCore* hProcess, DWORD access = DEFAULT_ACCESS_T ); + BLACKBONE_API Thread( HANDLE handle, class ProcessCore* hProcess ); + BLACKBONE_API ~Thread(); + + BLACKBONE_API Thread( const Thread& ) = delete; + BLACKBONE_API Thread& operator =( const Thread& ) = delete; + + BLACKBONE_API Thread( Thread&& ) = default; + BLACKBONE_API Thread& operator =( Thread&& ) = default; + + /// + /// Get thread ID + /// + /// Thread ID + BLACKBONE_API DWORD id() const { return _id; } + + /// + /// Get thread handle + /// + /// Thread hande + BLACKBONE_API HANDLE handle() const { return _handle; } + + /// + /// Check if thread exists + /// + /// true if thread exists + BLACKBONE_API bool valid() const { return (_handle && ExitCode() == STILL_ACTIVE); } + + /// + /// Get WOW64 TEB + /// + /// Process TEB + /// TEB pointer + BLACKBONE_API ptr_t teb( _TEB32* pteb ) const; + + /// + /// Get Native TEB + /// + /// Process TEB + /// TEB pointer + BLACKBONE_API ptr_t teb( _TEB64* pteb ) const; + + /// + /// Get TEB + /// + /// TEB pointer + BLACKBONE_API ptr_t teb() const { return teb( (TEB_T*)nullptr ); } + + /// + /// Get thread creation time + /// + /// Thread creation time + BLACKBONE_API uint64_t startTime() const; + + /// + /// Get total execution time(user mode and kernel mode) + /// + /// Total execution time + BLACKBONE_API uint64_t execTime() const; + + /// + /// Suspend thread + /// + /// true on success + BLACKBONE_API bool Suspend(); + + /// + /// Resumes thread. + /// + /// true on success + BLACKBONE_API bool Resume(); + + /// + /// Check if thread is suspended + /// + /// true if suspended + BLACKBONE_API bool Suspended(); + + /// + /// Get WOW64 thread context + /// + /// Returned context + /// Context flags. + /// true if thread shouldn't be suspended before retrieving context + /// Status code + BLACKBONE_API NTSTATUS GetContext( _CONTEXT32& ctx, DWORD flags = CONTEXT_ALL, bool dontSuspend = false ); + + /// + /// Get native thread context + /// + /// Returned context + /// Context flags. + /// true if thread shouldn't be suspended before retrieving context + /// Status code + BLACKBONE_API NTSTATUS GetContext( _CONTEXT64& ctx, DWORD flags = CONTEXT64_ALL, bool dontSuspend = false ); + + /// + /// Set WOW64 thread context + /// + /// Context to set + /// true if thread shouldn't be suspended before retrieving context + /// Status code + BLACKBONE_API NTSTATUS SetContext( _CONTEXT32& ctx, bool dontSuspend = false ); + + /// + /// Set native thread context + /// + /// Context to set + /// true if thread shouldn't be suspended before retrieving context + /// Status code + BLACKBONE_API NTSTATUS SetContext( _CONTEXT64& ctx, bool dontSuspend = false ); + + /// + /// Terminate thread + /// + /// Exit code + /// Status code + BLACKBONE_API NTSTATUS Terminate( DWORD code = 0 ); + + /// + /// Join thread + /// + /// Join timeout + /// true on success + BLACKBONE_API bool Join( int timeout = INFINITE ); + + /// + /// Get thread exit code + /// + /// Thread exit code + BLACKBONE_API DWORD ExitCode() const; + + /// + /// Add hardware breakpoint to thread + /// + /// Breakpoint address + /// Breakpoint type(read/write/execute) + /// Number of bytes to include into breakpoint + /// Index of used breakpoint; -1 if failed + BLACKBONE_API call_result_t AddHWBP( ptr_t addr, HWBPType type, HWBPLength length ); + + /// + /// Remove existing hardware breakpoint + /// + /// Breakpoint index + /// Status code + BLACKBONE_API NTSTATUS RemoveHWBP( int idx ); + + /// + /// Remove existing hardware breakpoint + /// + /// Breakpoint address + /// Status code + BLACKBONE_API NTSTATUS RemoveHWBP( ptr_t ptr ); + + /// + /// Close handle + /// + BLACKBONE_API void Close(); + + BLACKBONE_API inline bool operator ==( const Thread& other ) { return (_id == other._id); } + +private: + /// + /// GetThreadId support for XP + /// + /// Thread handle + /// Thread ID + DWORD GetThreadIdT( HANDLE hThread ); + +private: + class ProcessCore* _core; // Core routines + + DWORD _id = 0; // Thread ID + ProcessHandle _handle; // Thread handle +}; + +using ThreadPtr = std::shared_ptr; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/Threads/Threads.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/Threads/Threads.h new file mode 100644 index 0000000..f34152c --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Process/Threads/Threads.h @@ -0,0 +1,75 @@ +#pragma once + +#include "../../Include/Winheaders.h" +#include "Thread.h" + +#include +#include + +namespace blackbone +{ + +class ProcessThreads +{ +public: + BLACKBONE_API ProcessThreads( class ProcessCore& core ); + BLACKBONE_API ~ProcessThreads(); + + ProcessThreads( const ProcessThreads& ) = delete; + ProcessThreads& operator =( const ProcessThreads& ) = delete; + + /// + /// Create the thread. + /// + /// Thread enty point + /// Thread argument. + /// Thread creation flags + /// New thread object + BLACKBONE_API call_result_t CreateNew( + ptr_t threadProc, + ptr_t arg, + enum CreateThreadFlags flags = static_cast(0) + ); + + /// + /// Gets all process threads + /// + /// Threads collection + BLACKBONE_API std::vector getAll() const; + + /// + /// Get main process thread + /// + /// Pointer to thread object, nullptr if failed + BLACKBONE_API ThreadPtr getMain() const; + + /// + /// Get least executed thread + /// + /// Pointer to thread object, nullptr if failed + BLACKBONE_API ThreadPtr getLeastExecuted() const; + + /// + /// Get most executed thread + /// + /// Pointer to thread object, nullptr if failed + BLACKBONE_API ThreadPtr getMostExecuted() const; + + /// + /// Get random thread + /// + /// Pointer to thread object, nullptr if failed + BLACKBONE_API ThreadPtr getRandom() const; + + /// + /// Get thread by ID + /// + /// Thread ID + /// Pointer to thread object, nullptr if failed + BLACKBONE_API ThreadPtr get( DWORD id ) const; + +private: + class ProcessCore& _core; // Core process functions +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Subsystem/NativeSubsystem.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Subsystem/NativeSubsystem.h new file mode 100644 index 0000000..f0493a6 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Subsystem/NativeSubsystem.h @@ -0,0 +1,266 @@ +#pragma once + +#include "../Include/Winheaders.h" +#include "../Include/Types.h" +#include "../Include/Macro.h" + +#include +#include +#include +#include +#include + + +namespace blackbone +{ + +enum CreateThreadFlags +{ + NoThreadFlags = 0x0000, + CreateSuspended = 0x0001, + NoDllCallbacks = 0x0002, + HideFromDebug = 0x0004, +}; + +ENUM_OPS(CreateThreadFlags) + +class Native +{ +public: + BLACKBONE_API Native( HANDLE hProcess, bool x86OS = false ); + BLACKBONE_API ~Native(); + + BLACKBONE_API inline const Wow64Barrier& GetWow64Barrier() const { return _wowBarrier; } + + /// + /// Allocate virtual memory + /// + /// Allocation address + /// Region size + /// Allocation type + /// Memory protection + /// Status code + virtual NTSTATUS VirtualAllocExT( ptr_t& lpAddress, size_t dwSize, DWORD flAllocationType, DWORD flProtect ); + + /// + /// Free virtual memory + /// + /// Memory address + /// Region size + /// Memory release type. + /// Status code + virtual NTSTATUS VirtualFreeExT( ptr_t lpAddress, size_t dwSize, DWORD dwFreeType ); + + /// + /// Change memory protection + /// + /// Memory address. + /// Region size + /// New protection. + /// Old protection + /// Status code + virtual NTSTATUS VirtualProtectExT( ptr_t lpAddress, DWORD64 dwSize, DWORD flProtect, DWORD* flOld ); + + /// + /// Read virtual memory + /// + /// Memory address + /// Output buffer + /// Number of bytes to read + /// Mumber of bytes read + /// Status code + virtual NTSTATUS ReadProcessMemoryT( ptr_t lpBaseAddress, LPVOID lpBuffer, size_t nSize, DWORD64 *lpBytes = nullptr ); + + /// + /// Write virtual memory + /// + /// Memory address + /// Buffer to write + /// Number of bytes to read + /// Mumber of bytes read + /// Status code + virtual NTSTATUS WriteProcessMemoryT( ptr_t lpBaseAddress, LPCVOID lpBuffer, size_t nSize, DWORD64 *lpBytes = nullptr ); + + /// + /// Query virtual memory + /// + /// Address to query + /// Retrieved memory info + /// Status code + virtual NTSTATUS VirtualQueryExT( ptr_t lpAddress, PMEMORY_BASIC_INFORMATION64 lpBuffer ); + + /// + /// Query virtual memory + /// + /// Address to query + /// Retrieved memory info + /// Status code + virtual NTSTATUS VirtualQueryExT( ptr_t lpAddress, MEMORY_INFORMATION_CLASS infoClass, LPVOID lpBuffer, size_t bufSize ); + + /// + /// Call NtQueryInformationProcess for underlying process + /// + /// Information class + /// Output buffer + /// Buffer size + /// Status code + virtual NTSTATUS QueryProcessInfoT( PROCESSINFOCLASS infoClass, LPVOID lpBuffer, uint32_t bufSize ); + + /// + /// Call NtSetInformationProcess for underlying process + /// + /// Information class + /// Input buffer + /// Buffer size + /// Status code + virtual NTSTATUS SetProcessInfoT( PROCESSINFOCLASS infoClass, LPVOID lpBuffer, uint32_t bufSize ); + + /// + /// Creates new thread in the remote process + /// + /// Created thread handle + /// Thread entry point + /// Thread argument + /// Creation flags + /// Access override + /// Status code + virtual NTSTATUS CreateRemoteThreadT( HANDLE& hThread, ptr_t entry, ptr_t arg, CreateThreadFlags flags, DWORD access = THREAD_ALL_ACCESS ); + + /// + /// Get native thread context + /// + /// Thread handle. + /// Thread context + /// Status code + virtual NTSTATUS GetThreadContextT( HANDLE hThread, _CONTEXT64& ctx ); + + /// + /// Get WOW64 thread context + /// + /// Thread handle. + /// Thread context + /// Status code + virtual NTSTATUS GetThreadContextT( HANDLE hThread, _CONTEXT32& ctx ); + + /// + /// Set native thread context + /// + /// Thread handle. + /// Thread context + /// Status code + virtual NTSTATUS SetThreadContextT( HANDLE hThread, _CONTEXT64& ctx ); + + /// + /// Set WOW64 thread context + /// + /// Thread handle. + /// Thread context + /// Status code + virtual NTSTATUS SetThreadContextT( HANDLE hThread, _CONTEXT32& ctx ); + + /// + /// NtQueueApcThread + /// + /// Thread handle. + /// APC function + /// APC argument + /// Status code + virtual NTSTATUS QueueApcT( HANDLE hThread, ptr_t func, ptr_t arg ); + + /// + /// Get WOW64 PEB + /// + /// Retrieved PEB + /// PEB pointer + virtual ptr_t getPEB( _PEB32* ppeb ); + + /// + /// Get native PEB + /// + /// Retrieved PEB + /// PEB pointer + virtual ptr_t getPEB( _PEB64* ppeb ); + + /// + /// Get WOW64 TEB + /// + /// Retrieved TEB + /// TEB pointer + virtual ptr_t getTEB( HANDLE hThread, _TEB32* pteb ); + + /// + /// Get native TEB + /// + /// Retrieved TEB + /// TEB pointer + virtual ptr_t getTEB( HANDLE hThread, _TEB64* pteb ); + + /// + /// Enumerate valid memory regions + /// + /// If true - non-allocated regions will be included in list + /// Found regions> + BLACKBONE_API std::vector EnumRegions( bool includeFree = false ); + + /// + /// Enumerate process modules + /// + /// Found modules + /// Module type: x86 or x64 + /// Module count + BLACKBONE_API std::vector EnumModules( eModSeachType search = LdrList, eModType mtype = mt_default ); + + /// + /// Get lowest possible valid address value + /// + /// Address value + BLACKBONE_API inline ptr_t minAddr() const { return 0x10000; } + + /// + /// Get highest possible valid address value + /// + /// Address value + BLACKBONE_API inline ptr_t maxAddr() const { return 0x7FFFFFFEFFFF; } + + /// + /// Get highest possible valid address value + /// + /// Address value + BLACKBONE_API inline ptr_t maxAddr32() const { return 0x7FFFFFFF; } + + /// + /// Get page size + /// + /// Address value + BLACKBONE_API inline uint32_t pageSize() const { return _pageSize; } +private: + + /// + /// Enumerate process modules + /// + /// Found modules + /// Module count + template + std::vector EnumModulesT(); + + /// + /// Enum process section objects + /// + /// Found modules + /// Sections count + std::vector EnumSections(); + + /// + /// Enum pages containing valid PE headers + /// + /// Found modules + /// Sections count + std::vector EnumPEHeaders(); + +protected: + HANDLE _hProcess; // Process handle + Wow64Barrier _wowBarrier; // WOW64 barrier info + uint32_t _pageSize; +}; + +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Subsystem/Wow64Subsystem.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Subsystem/Wow64Subsystem.h new file mode 100644 index 0000000..b1e23c6 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Subsystem/Wow64Subsystem.h @@ -0,0 +1,177 @@ +#pragma once + +#include "NativeSubsystem.h" + +namespace blackbone +{ + +class NativeWow64 : public Native +{ +public: + BLACKBONE_API NativeWow64( HANDLE hProcess ); + BLACKBONE_API ~NativeWow64(); + + /// + /// Allocate virtual memory + /// + /// Allocation address + /// Region size + /// Allocation type + /// Memory protection + /// Status code + virtual NTSTATUS VirtualAllocExT( ptr_t& lpAddress, size_t dwSize, DWORD flAllocationType, DWORD flProtect ); + + /// + /// Free virtual memory + /// + /// Memory address + /// Region size + /// Memory release type. + /// Status code + virtual NTSTATUS VirtualFreeExT( ptr_t lpAddress, size_t dwSize, DWORD dwFreeType ); + + /// + /// Change memory protection + /// + /// Memory address. + /// Region size + /// New protection. + /// Old protection + /// Status code + virtual NTSTATUS VirtualProtectExT( ptr_t lpAddress, DWORD64 dwSize, DWORD flProtect, DWORD* flOld ); + + /// + /// Read virtual memory + /// + /// Memory address + /// Output buffer + /// Number of bytes to read + /// Mumber of bytes read + /// Status code + virtual NTSTATUS ReadProcessMemoryT( ptr_t lpBaseAddress, LPVOID lpBuffer, size_t nSize, DWORD64 *lpBytes = nullptr ); + + /// + /// Write virtual memory + /// + /// Memory address + /// Buffer to write + /// Number of bytes to read + /// Mumber of bytes read + /// Status code + virtual NTSTATUS WriteProcessMemoryT( ptr_t lpBaseAddress, LPCVOID lpBuffer, size_t nSize, DWORD64 *lpBytes = nullptr ); + + /// + /// Query virtual memory + /// + /// Address to query + /// Retrieved memory info + /// Status code + virtual NTSTATUS VirtualQueryExT( ptr_t lpAddress, PMEMORY_BASIC_INFORMATION64 lpBuffer ); + + /// + /// Query virtual memory + /// + /// Address to query + /// Retrieved memory info + /// Status code + virtual NTSTATUS VirtualQueryExT( ptr_t lpAddress, MEMORY_INFORMATION_CLASS infoClass, LPVOID lpBuffer, size_t bufSize ); + + /// + /// Call NtQueryInformationProcess for underlying process + /// + /// Information class + /// Output buffer + /// Buffer size + /// Status code + virtual NTSTATUS QueryProcessInfoT( PROCESSINFOCLASS infoClass, LPVOID lpBuffer, uint32_t bufSize ); + + /// + /// Call NtSetInformationProcess for underlying process + /// + /// Information class + /// Input buffer + /// Buffer size + /// Status code + virtual NTSTATUS SetProcessInfoT( PROCESSINFOCLASS infoClass, LPVOID lpBuffer, uint32_t bufSize ); + + /// + /// Creates new thread in the remote process + /// + /// Created thread handle + /// Thread entry point + /// Thread argument + /// Creation flags + /// Status code + virtual NTSTATUS CreateRemoteThreadT( HANDLE& hThread, ptr_t entry, ptr_t arg, CreateThreadFlags flags, DWORD access = THREAD_ALL_ACCESS ); + + /// + /// Get native thread context + /// + /// Thread handle. + /// Thread context + /// Status code + virtual NTSTATUS GetThreadContextT( HANDLE hThread, _CONTEXT64& ctx ); + + /// + /// Get WOW64 thread context + /// + /// Thread handle. + /// Thread context + /// Status code + virtual NTSTATUS GetThreadContextT( HANDLE hThread, _CONTEXT32& ctx ); + + /// + /// Set native thread context + /// + /// Thread handle. + /// Thread context + /// Status code + virtual NTSTATUS SetThreadContextT( HANDLE hThread, _CONTEXT64& ctx ); + + /// + /// Set WOW64 thread context + /// + /// Thread handle. + /// Thread context + /// Status code + virtual NTSTATUS SetThreadContextT( HANDLE hThread, _CONTEXT32& ctx ); + + /// + /// NtQueueApcThread + /// + /// Thread handle. + /// APC function + /// APC argument + /// Status code + virtual NTSTATUS QueueApcT( HANDLE hThread, ptr_t func, ptr_t arg ); + + /// + /// Get WOW64 PEB + /// + /// Retrieved PEB + /// PEB pointer + virtual ptr_t getPEB( _PEB32* ppeb ); + + /// + /// Get native PEB + /// + /// Retrieved PEB + /// PEB pointer + virtual ptr_t getPEB( _PEB64* ppeb ); + + /// + /// Get WOW64 TEB + /// + /// Retrieved TEB + /// TEB pointer + virtual ptr_t getTEB( HANDLE hThread, _TEB32* pteb ); + + /// + /// Get native TEB + /// + /// Retrieved TEB + /// TEB pointer + virtual ptr_t getTEB( HANDLE hThread, _TEB64* pteb ); +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Subsystem/x86Subsystem.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Subsystem/x86Subsystem.h new file mode 100644 index 0000000..c5ae57b --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Subsystem/x86Subsystem.h @@ -0,0 +1,88 @@ +#pragma once + +#include "NativeSubsystem.h" + +namespace blackbone +{ + +/// +/// X86 OS subsystem. Used +/// +class x86Native : public Native +{ +public: + BLACKBONE_API x86Native( HANDLE hProcess ); + BLACKBONE_API ~x86Native(); + + /// + /// Query virtual memory + /// + /// Address to query + /// Retrieved memory info + /// Status code + virtual NTSTATUS VirtualQueryExT( ptr_t lpAddress, PMEMORY_BASIC_INFORMATION64 lpBuffer ); + + /// + /// Get WOW64 thread context + /// + /// Thread handle. + /// Thread context + /// Status code + virtual NTSTATUS GetThreadContextT( HANDLE hThread, _CONTEXT32& ctx ); + + /// + /// Get native thread context + /// + /// Thread handle. + /// Thread context + /// Status code + virtual NTSTATUS GetThreadContextT( HANDLE hThread, _CONTEXT64& ctx ); + + /// + /// Set WOW64 thread context + /// + /// Thread handle. + /// Thread context + /// Status code + virtual NTSTATUS SetThreadContextT( HANDLE hThread, _CONTEXT32& ctx ); + + /// + /// Set native thread context + /// + /// Thread handle. + /// Thread context + /// Status code + virtual NTSTATUS SetThreadContextT( HANDLE hThread, _CONTEXT64& ctx ); + + /// + /// Gets WOW64 PEB + /// + /// Retrieved PEB + /// PEB pointer + virtual ptr_t getPEB( _PEB32* ppeb ); + + /// + /// Get native PEB + /// + /// Retrieved PEB + /// PEB pointer + virtual ptr_t getPEB( _PEB64* ppeb ); + + /// + /// Get WOW64 TEB + /// + /// Retrieved TEB + /// TEB pointer + virtual ptr_t getTEB( HANDLE hThread, _TEB32* pteb ); + + /// + /// Get native TEB + /// + /// Retrieved TEB + /// TEB pointer + virtual ptr_t getTEB( HANDLE hThread, _TEB64* pteb ); + +private: +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Symbols/PDBHelper.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Symbols/PDBHelper.h new file mode 100644 index 0000000..e0ee036 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Symbols/PDBHelper.h @@ -0,0 +1,58 @@ +#pragma once +#include "../include/Types.h" +#include <3rd_party/DIA/dia2.h> +#include +#include +#include +#include + +namespace blackbone +{ + +class PDBHelper +{ +public: + PDBHelper(); + ~PDBHelper(); + + /// + /// Initialize symbols for target file + /// + /// Fully qualified path to target PE file + /// Base ptr to add to RVAs + /// Status code + HRESULT Init( const std::wstring& file, ptr_t base = 0 ); + + /// + /// Get symbol RVA + /// + /// Symbol name + /// Resulting RVA + /// Status code + HRESULT GetSymAddress( const std::wstring& symName, ptr_t& result ); + +private: + /// + /// Initialize DIA + /// + /// Status code + HRESULT CoCreateDiaDataSource(); + + /// + /// Build module symbol map + /// + /// Status code + HRESULT PopulateSymbols(); + +private: + // DIA interfaces + CComPtr _source; + CComPtr _session; + CComPtr _global; + + uint64_t _base = 0; // Base ptr to add to RVAs + std::wstring _sympath; // Symbol cache directory + std::unordered_map _cache; // Symbol name <--> RVA map +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Symbols/PatternLoader.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Symbols/PatternLoader.h new file mode 100644 index 0000000..f59727e --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Symbols/PatternLoader.h @@ -0,0 +1,17 @@ +#pragma once +#include "../Symbols/SymbolData.h" +#include "../PE/PEImage.h" + +namespace blackbone +{ + +/// +/// Scan ntdll for internal loader data +/// +/// Mapped x86 ntdll +/// Mapped x64 ntdll +/// Result +/// Status code +NTSTATUS ScanSymbolPatterns( const pe::PEImage& ntdll32, const pe::PEImage& ntdll64, SymbolData& result ); + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Symbols/SymbolData.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Symbols/SymbolData.h new file mode 100644 index 0000000..0c504aa --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Symbols/SymbolData.h @@ -0,0 +1,27 @@ +#pragma once +#include "../include/Types.h" + +namespace blackbone +{ + +/// +/// Ntdll internal pointers +/// +struct SymbolData +{ + ptr_t LdrKernel32PatchAddress = 0; // Address to patch to enable kernel32 loading under win7 + ptr_t APC64PatchAddress = 0; // Address to patch for x64->WOW64 APC dispatching under win7 + ptr_t LdrpHandleTlsData32 = 0; // LdrpHandleTlsData address + ptr_t LdrpHandleTlsData64 = 0; // LdrpHandleTlsData address + ptr_t LdrpInvertedFunctionTable32 = 0; // LdrpInvertedFunctionTable address + ptr_t LdrpInvertedFunctionTable64 = 0; // LdrpInvertedFunctionTable address + ptr_t RtlInsertInvertedFunctionTable32 = 0; // RtlInsertInvertedFunctionTable address + ptr_t RtlInsertInvertedFunctionTable64 = 0; // RtlInsertInvertedFunctionTable address + ptr_t LdrpReleaseTlsEntry32 = 0; // LdrpReleaseTlsEntry address + ptr_t LdrpReleaseTlsEntry64 = 0; // LdrpReleaseTlsEntry address + ptr_t LdrProtectMrdata = 0; // LdrProtectMrdata address +}; + +extern SymbolData g_symbols; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Symbols/SymbolLoader.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Symbols/SymbolLoader.h new file mode 100644 index 0000000..3a81580 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Symbols/SymbolLoader.h @@ -0,0 +1,53 @@ +#pragma once +#include "SymbolData.h" + +namespace blackbone +{ + +namespace pe +{ + class PEImage; +} + +class SymbolLoader +{ +public: + BLACKBONE_API SymbolLoader(); + + /// + /// Load symbol addresses from PDB or and pattern scans + /// + /// Found symbols + /// Status code + BLACKBONE_API NTSTATUS Load( SymbolData& result ); + + /// + /// Load symbol addresses from PDBs + /// + /// Loaded x86 ntdll image + /// Loaded x64 ntdll image + /// Found symbols + /// Status code + BLACKBONE_API NTSTATUS LoadFromSymbols( const pe::PEImage& ntdll32, const pe::PEImage& ntdll64, SymbolData& result ); + + /// + /// Load symbol addresses from pattern scans + /// + /// Loaded x86 ntdll image + /// Loaded x64 ntdll image + /// Found symbols + /// Status code + BLACKBONE_API NTSTATUS LoadFromPatterns( const pe::PEImage& ntdll32, const pe::PEImage& ntdll64, SymbolData& result ); + + /// + /// Load ntdll images from the disk + /// + /// Loaded x86 and x64 ntdll + BLACKBONE_API std::pair LoadImages(); + +private: + bool _x86OS; // x86 OS + bool _wow64Process; // Current process is wow64 process +}; + +} \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Syscalls/Syscall.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Syscalls/Syscall.h new file mode 100644 index 0000000..f070a4e --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Syscalls/Syscall.h @@ -0,0 +1,71 @@ +#pragma once +#include "../Config.h" +#include "../Include/Winheaders.h" +#include +#include + +extern "C" void* syscall_stub(); + +namespace blackbone +{ +namespace syscall +{ + template + using to_int64 = std::conditional_t; + +#pragma warning(push) +#pragma warning(disable : 4100) + + template + R syscall( int index, Args... args ) + { + auto error = []( NTSTATUS status ) + { + if constexpr (std::is_same_v) + return status; + else + return R(); + }; + +#ifdef USE32 + return error( STATUS_NOT_SUPPORTED ); +#else + static_assert(sizeof( R ) <= sizeof( void* ), "Return types larger than void* aren't supported"); + if (index == -1) + return error( STATUS_INVALID_PARAMETER_1 ); + + // Cast types that otherwise will be only half-initialized + auto pfn = reinterpret_cast... )>(syscall_stub); + return pfn( index, sizeof...( Args ), to_int64( args )... ); +#endif + } + + template + NTSTATUS nt_syscall( int index, Args&&... args ) + { + return syscall( index, std::forward( args )... ); + } + + inline int get_index( const wchar_t* modName, const char* func ) + { +#ifdef USE32 + // Doesn't work for x86 + return -1; +#else + const auto pfn = reinterpret_cast(GetProcAddress( + GetModuleHandleW( modName ), + func + )); + + return pfn ? *reinterpret_cast(pfn + 4) : -1; +#endif + } + + inline int get_index( const char* func ) + { + return get_index( L"ntdll.dll", func ); + } + +#pragma warning(pop) +} +} diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Syscalls/Syscall32.asm b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Syscalls/Syscall32.asm new file mode 100644 index 0000000..beb17cb --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Syscalls/Syscall32.asm @@ -0,0 +1,35 @@ +.MODEL flat +.code + +x64_enter proc + retf +x64_enter endp + +x64_exit proc + mov dword ptr [esp + 4], 23h + retf +x64_exit endp + + +_syscall_stub proc + push ebp + mov ebp, esp + sub esp, 20h + + push 33h + call x64_enter + + db 48h + mov eax, 0DEADBEEFh + + call x64_exit + + mov dx, ds + mov ss, dx + + mov esp, ebp + pop ebp + ret +_syscall_stub endp + +end \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Syscalls/Syscall64.asm b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Syscalls/Syscall64.asm new file mode 100644 index 0000000..a855386 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBone/Syscalls/Syscall64.asm @@ -0,0 +1,31 @@ +.code + +syscall_stub proc + mov eax, ecx + + ; validate number of arguments + cmp edx, 1 + jl skip + + mov r10, r8 + cmp edx, 2 + jl skip + + xchg rdx, r9 + cmp r9d, 3 + jl skip + + mov r8, [rsp + 28h] + cmp r9d, 4 + jl skip + + mov r9, [rsp + 30h] + +skip: + add rsp, 10h ; skip first 2 args + syscall + sub rsp, 10h + ret +syscall_stub endp + +end \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/BlackBoneDef.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/BlackBoneDef.h new file mode 100644 index 0000000..5d4a631 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/BlackBoneDef.h @@ -0,0 +1,527 @@ +#pragma once + +#define BLACKBONE_DEVICE_NAME L"BlackBone" +#define BLACKBONE_DEVICE_FILE L"\\\\.\\" BLACKBONE_DEVICE_NAME + +#define FILE_DEVICE_BLACKBONE 0x8005 + +#define BLACKBONE_FILE_EXT L".sys" +#define BLACKBONE_FILE_SUFFIX L"Drv" +#define BLACKBONE_FILE_NAME BLACKBONE_DEVICE_NAME BLACKBONE_FILE_SUFFIX BLACKBONE_FILE_EXT +#define BLACKBONE_FILE_NAME_7 BLACKBONE_DEVICE_NAME BLACKBONE_FILE_SUFFIX L"7" BLACKBONE_FILE_EXT +#define BLACKBONE_FILE_NAME_8 BLACKBONE_DEVICE_NAME BLACKBONE_FILE_SUFFIX L"8" BLACKBONE_FILE_EXT +#define BLACKBONE_FILE_NAME_81 BLACKBONE_DEVICE_NAME BLACKBONE_FILE_SUFFIX L"81" BLACKBONE_FILE_EXT +#define BLACKBONE_FILE_NAME_10 BLACKBONE_DEVICE_NAME BLACKBONE_FILE_SUFFIX L"10" BLACKBONE_FILE_EXT + +/* + Disable process DEP + + Input: + DISABLE_DEP + + Input size: + sizeof(DISABLE_DEP) + + Output: + void + + Output size: + 0 +*/ +#define IOCTL_BLACKBONE_DISABLE_DEP (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x800, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +/* + Change process protection state + + Input: + SET_PROC_PROTECTION + + Input size: + sizeof(SET_PROC_PROTECTION) + + Output: + void + + Output size: + 0 +*/ +#define IOCTL_BLACKBONE_SET_PROTECTION (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x801, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +/* + Change handle access rights + + Input: + GRANT_ACCESS + + Input size: + sizeof(GRANT_ACCESS) + + Output: + void + + Output size: + 0 +*/ +#define IOCTL_BLACKBONE_GRANT_ACCESS (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x802, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +/* + Read or write virtual memory of target process + + Input: + COPY_MEMORY + + Input size: + sizeof(COPY_MEMORY) + + Output: + void + + Output size: + 0 +*/ +#define IOCTL_BLACKBONE_COPY_MEMORY (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x803, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +/* + Allocate or free memory + + Input: + ALLOCATE_FREE_MEMORY + + Input size: + sizeof(ALLOCATE_FREE_MEMORY) + + Output: + ALLOCATE_FREE_MEMORY_RESULT + + Output size: + sizeof(ALLOCATE_FREE_MEMORY_RESULT) +*/ +#define IOCTL_BLACKBONE_ALLOCATE_FREE_MEMORY (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x804, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +/* + Change protection of memory region + + Input: + PROTECT_MEMORY + + Input size: + sizeof(PROTECT_MEMORY) + + Output: + void + + Output size: + 0 +*/ +#define IOCTL_BLACKBONE_PROTECT_MEMORY (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x805, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +/* + Map entire address space of target process into calling process + + Input: + MAP_MEMORY + + Input size: + sizeof(MAP_MEMORY) + + Output: + ULONG sizeRequired - if output buffer isn't large enough to hold output data + MAP_MEMORY_REGION_RESULT result - if buffer is large enough to hold output data + + Output size: + sizeof(ULONG) - if output buffer isn't large enough to hold output data + >= sizeof(MAP_MEMORY_REGION_RESULT) - if buffer is large enough to hold output data +*/ +#define IOCTL_BLACKBONE_MAP_MEMORY (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x806, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +/* + Map single memory region into calling process + + Input: + MAP_MEMORY_REGION + + Input size: + sizeof(MAP_MEMORY_REGION) + + Output: + MAP_MEMORY_REGION_RESULT + + Output size: + sizeof(MAP_MEMORY_REGION_RESULT) +*/ +#define IOCTL_BLACKBONE_MAP_REGION (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x807, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +/* + Unmap all mapped memory from calling process + + Input: + UNMAP_MEMORY + + Input size: + sizeof(UNMAP_MEMORY) + + Output: + void + + Output size: + 0 +*/ +#define IOCTL_BLACKBONE_UNMAP_MEMORY (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x808, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +/* + Unmap single memory region from calling process + + Input: + UNMAP_MEMORY_REGION + + Input size: + sizeof(UNMAP_MEMORY_REGION) + + Output: + UNMAP_MEMORY_REGION_RESULT + + Output size: + sizeof(UNMAP_MEMORY_REGION_RESULT) +*/ +#define IOCTL_BLACKBONE_UNMAP_REGION (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x809, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +/* + Unlink target VAD from process VAD tree + + Input: + HIDE_VAD + + Input size: + sizeof(HIDE_VAD) + + Output: + NULL + + Output size: + 0 +*/ +#define IOCTL_BLACKBONE_HIDE_VAD (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x80A, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +/* + Inject dll into arbitrary process + + Input: + INJECT_DLL + + Input size: + sizeof(INJECT_DLL) + + Output: + NULL + + Output size: + 0 +*/ +#define IOCTL_BLACKBONE_INJECT_DLL (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x80B, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +/* + Manually map system driver + + Input: + MMAP_DRIVER + + Input size: + sizeof(MMAP_DRIVER) + + Output: + NULL + + Output size: + 0 +*/ +#define IOCTL_BLACKBONE_MAP_DRIVER (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x80C, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +/* + Unlink process handle table from handle table list + + Input: + UNLINK_HTABLE + + Input size: + sizeof(UNLINK_HTABLE) + + Output: + NULL + + Output size: + 0 +*/ +#define IOCTL_BLACKBONE_UNLINK_HTABLE (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x80D, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +/* +Map entire address space of target process into calling process + + Input: + ENUM_REGIONS + + Input size: + sizeof(ENUM_REGIONS) + + Output: + ENUM_REGIONS_RESULT - enumerated regions + + Output size: + >= sizeof(ENUM_REGIONS_RESULT) +*/ +#define IOCTL_BLACKBONE_ENUM_REGIONS (ULONG)CTL_CODE(FILE_DEVICE_BLACKBONE, 0x80E, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + + +/// +/// Input for IOCTL_BLACKBONE_DISABLE_DEP +/// +typedef struct _DISABLE_DEP +{ + ULONG pid; // Process ID +} DISABLE_DEP, *PDISABLE_DEP; + +/// +/// Policy activation option +/// +typedef enum _PolicyOpt +{ + Policy_Disable, + Policy_Enable, + Policy_Keep, // Don't change current value +} PolicyOpt; + +/// +/// Input for IOCTL_BLACKBONE_SET_PROTECTION +/// +typedef struct _SET_PROC_PROTECTION +{ + ULONG pid; // Process ID + PolicyOpt protection; // Process protection + PolicyOpt dynamicCode; // DynamiCode policy + PolicyOpt signature; // BinarySignature policy +} SET_PROC_PROTECTION, *PSET_PROC_PROTECTION; + +/// +/// Input for IOCTL_BLACKBONE_GRANT_ACCESS +/// +typedef struct _HANDLE_GRANT_ACCESS +{ + ULONGLONG handle; // Handle to modify + ULONG pid; // Process ID + ULONG access; // Access flags to grant +} HANDLE_GRANT_ACCESS, *PHANDLE_GRANT_ACCESS; + +/// +/// Input for IOCTL_BLACKBONE_COPY_MEMORY +/// +typedef struct _COPY_MEMORY +{ + ULONGLONG localbuf; // Buffer address + ULONGLONG targetPtr; // Target address + ULONGLONG size; // Buffer size + ULONG pid; // Target process id + BOOLEAN write; // TRUE if write operation, FALSE if read +} COPY_MEMORY, *PCOPY_MEMORY; + +/// +/// Input for IOCTL_BLACKBONE_ALLOCATE_FREE_MEMORY +/// +typedef struct _ALLOCATE_FREE_MEMORY +{ + ULONGLONG base; // Region base address + ULONGLONG size; // Region size + ULONG pid; // Target process id + ULONG protection; // Memory protection for allocation + ULONG type; // MEM_RESERVE/MEM_COMMIT/MEM_DECOMMIT/MEM_RELEASE + BOOLEAN allocate; // TRUE if allocation, FALSE is freeing + BOOLEAN physical; // If set to TRUE, physical pages will be directly mapped into UM space +} ALLOCATE_FREE_MEMORY, *PALLOCATE_FREE_MEMORY; + +/// +/// Output for IOCTL_BLACKBONE_ALLOCATE_FREE_MEMORY +/// +typedef struct _ALLOCATE_FREE_MEMORY_RESULT +{ + ULONGLONG address; // Address of allocation + ULONGLONG size; // Allocated size +} ALLOCATE_FREE_MEMORY_RESULT, *PALLOCATE_FREE_MEMORY_RESULT; + +/// +/// Input for IOCTL_BLACKBONE_PROTECT_MEMORY +/// +typedef struct _PROTECT_MEMORY +{ + ULONGLONG base; // Region base address + ULONGLONG size; // Region size + ULONG pid; // Target process id + ULONG newProtection; // New protection value +} PROTECT_MEMORY, *PPROTECT_MEMORY; + +/// +/// Input for IOCTL_BLACKBONE_REMAP_MEMORY +/// +typedef struct _MAP_MEMORY +{ + ULONG pid; // Target process id + wchar_t pipeName[32]; // Hook pipe name + BOOLEAN mapSections; // Set to TRUE to map sections +} MAP_MEMORY, *PMAP_MEMORY; + +/// +/// Remapped region info +/// +typedef struct _MAP_MEMORY_RESULT_ENTRY +{ + ULONGLONG originalPtr; // Address in target process + ULONGLONG newPtr; // Mapped address in host process + ULONG size; // Region size +} MAP_MEMORY_RESULT_ENTRY, *PMAP_MEMORY_RESULT_ENTRY; + +/// +/// Output for IOCTL_BLACKBONE_REMAP_REGION +/// +typedef struct _MAP_MEMORY_RESULT +{ + ULONGLONG pipeHandle; // Pipe handle in target process + ULONGLONG targetPage; // Address of shared page in target process + ULONGLONG hostPage; // Address of shared page in host process + + ULONG count; // Number of REMAP_MEMORY_RESULT_ENTRY entries + + // List of remapped regions (variable-sized array) + MAP_MEMORY_RESULT_ENTRY entries[1]; +} MAP_MEMORY_RESULT, *PMAP_MEMORY_RESULT; + +/// +/// Input for IOCTL_BLACKBONE_REMAP_REGION +/// +typedef struct _MAP_MEMORY_REGION +{ + ULONGLONG base; // Region base address + ULONG pid; // Target process id + ULONG size; // Region size +} MAP_MEMORY_REGION, *PMAP_MEMORY_REGION; + +/// +/// Output for IOCTL_BLACKBONE_REMAP_REGION +/// +typedef struct _MAP_MEMORY_REGION_RESULT +{ + ULONGLONG originalPtr; // Address in target process + ULONGLONG newPtr; // Mapped address in host process + ULONGLONG removedPtr; // Unmapped region base, in case of conflicting region + ULONG size; // Mapped region size + ULONG removedSize; // Unmapped region size +} MAP_MEMORY_REGION_RESULT, *PMAP_MEMORY_REGION_RESULT; + +/// +/// Input for IOCTL_BLACKBONE_UNMAP_MEMORY +/// +typedef struct _UNMAP_MEMORY +{ + ULONG pid; // Target process ID +} UNMAP_MEMORY, *PUNMAP_MEMORY; + +/// +/// Input for IOCTL_BLACKBONE_UNMAP_REGION +/// +typedef struct _UNMAP_MEMORY_REGION +{ + ULONGLONG base; // Region base address + ULONG pid; // Target process ID + ULONG size; // Region size +} UNMAP_MEMORY_REGION, *PUNMAP_MEMORY_REGION; + + +/// +/// Input for IOCTL_BLACKBONE_HIDE_VAD +/// +typedef struct _HIDE_VAD +{ + ULONGLONG base; // Region base address + ULONGLONG size; // Region size + ULONG pid; // Target process ID +} HIDE_VAD, *PHIDE_VAD; + +typedef enum _InjectType +{ + IT_Thread, // CreateThread into LdrLoadDll + IT_Apc, // Force user APC into LdrLoadDll + IT_MMap, // Manual map +} InjectType; + +typedef enum _MmapFlags +{ + KNoFlags = 0x00, // No flags + KManualImports = 0x01, // Manually map import libraries + KWipeHeader = 0x04, // Wipe image PE headers + KHideVAD = 0x10, // Make image appear as PAGE_NOACESS region + KRebaseProcess = 0x40, // If target image is an .exe file, process base address will be replaced with mapped module value + KNoThreads = 0x80, // Don't create new threads, use hijacking + + KNoExceptions = 0x01000, // Do not create custom exception handler + KNoSxS = 0x08000, // Do not apply SxS activation context + KNoTLS = 0x10000, // Skip TLS initialization and don't execute TLS callbacks +} KMmapFlags; + +/// +/// Input for IOCTL_BLACKBONE_INJECT_DLL +/// +typedef struct _INJECT_DLL +{ + InjectType type; // Type of injection + wchar_t FullDllPath[512]; // Fully-qualified path to the target dll + wchar_t initArg[512]; // Init routine argument + ULONG initRVA; // Init routine RVA, if 0 - no init routine + ULONG pid; // Target process ID + BOOLEAN wait; // Wait on injection thread + BOOLEAN unlink; // Unlink module after injection + BOOLEAN erasePE; // Erase PE headers after injection + KMmapFlags flags; // Manual map flags + ULONGLONG imageBase; // Image address in memory to manually map + ULONG imageSize; // Size of memory image + BOOLEAN asImage; // Memory chunk has image layout +} INJECT_DLL, *PINJECT_DLL; + +/// +/// Input for IOCTL_BLACKBONE_MAP_DRIVER +/// +typedef struct _MMAP_DRIVER +{ + wchar_t FullPath[512]; // Fully-qualified path to the driver +} MMAP_DRIVER, *PMMAP_DRIVER; + +/// +/// Input for IOCTL_BLACKBONE_UNLINK_HTABLE +/// +typedef struct _UNLINK_HTABLE +{ + ULONG pid; // Process ID +} UNLINK_HTABLE, *PUNLINK_HTABLE; + +/// +/// Input for IOCTL_BLACKBONE_ENUM_REGIONS +/// +typedef struct _ENUM_REGIONS +{ + ULONG pid; // Process ID +} ENUM_REGIONS, *PENUM_REGIONS; + +typedef struct _MEM_REGION +{ + ULONGLONG BaseAddress; + ULONGLONG AllocationBase; + ULONG AllocationProtect; + ULONGLONG RegionSize; + ULONG State; + ULONG Protect; + ULONG Type; +} MEM_REGION, *PMEM_REGION; + +/// +/// Output for IOCTL_BLACKBONE_ENUM_REGIONS +/// +typedef struct _ENUM_REGIONS_RESULT +{ + ULONGLONG count; // Number of records + MEM_REGION regions[1]; // Found regions, variable-sized +} ENUM_REGIONS_RESULT, *PENUM_REGIONS_RESULT; \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/BlackBoneDrv.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/BlackBoneDrv.h new file mode 100644 index 0000000..23ccddd --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/BlackBoneDrv.h @@ -0,0 +1,22 @@ +#pragma once + +#ifdef _M_IX86 +#error "x86 systems are not supported" +#endif + +#include + +#include "BlackBoneDef.h" +#include "Routines.h" +#include "Remap.h" + +#define DEVICE_NAME L"\\Device\\" ## BLACKBONE_DEVICE_NAME +#define DOS_DEVICE_NAME L"\\DosDevices\\" ## BLACKBONE_DEVICE_NAME + +/// +/// CTL dispatcher +/// +/// Device object +/// IRP +/// Status code +NTSTATUS BBDispatch( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Imports.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Imports.h new file mode 100644 index 0000000..57fcd7a --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Imports.h @@ -0,0 +1,207 @@ +#pragma once + +#include "NativeEnums.h" +#include "NativeStructs.h" + +NTSYSAPI +NTSTATUS +NTAPI +ZwQuerySystemInformation( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + OUT PVOID SystemInformation, + IN ULONG SystemInformationLength, + OUT PULONG ReturnLength OPTIONAL + ); + +NTSYSAPI +NTSTATUS +NTAPI +ZwSetSystemInformation( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + IN PVOID SystemInformation, + IN ULONG SystemInformationLength + ); + +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryInformationProcess( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + OUT PVOID ProcessInformation, + IN ULONG ProcessInformationLength, + IN PULONG ReturnLength + ); + +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryInformationThread( + IN HANDLE ThreadHandle, + IN THREADINFOCLASS ThreadInformationClass, + OUT PVOID ThreadInformation, + IN ULONG ThreadInformationLength, + OUT PULONG ReturnLength OPTIONAL + ); + +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN MEMORY_INFORMATION_CLASS_EX MemoryInformationClass, + OUT PVOID Buffer, + IN SIZE_T Length, + OUT PSIZE_T ResultLength + ); + +NTSTATUS +NTAPI +ZwCreateThreadEx( + OUT PHANDLE hThread, + IN ACCESS_MASK DesiredAccess, + IN PVOID ObjectAttributes, + IN HANDLE ProcessHandle, + IN PVOID lpStartAddress, + IN PVOID lpParameter, + IN ULONG Flags, + IN SIZE_T StackZeroBits, + IN SIZE_T SizeOfStackCommit, + IN SIZE_T SizeOfStackReserve, + IN PNT_PROC_THREAD_ATTRIBUTE_LIST AttributeList + ); + +NTSTATUS +NTAPI +ZwTerminateThread( + IN HANDLE ThreadHandle, + IN NTSTATUS ExitStatus + ); + + + +NTKERNELAPI +NTSTATUS +NTAPI +MmCopyVirtualMemory( + IN PEPROCESS FromProcess, + IN PVOID FromAddress, + IN PEPROCESS ToProcess, + OUT PVOID ToAddress, + IN SIZE_T BufferSize, + IN KPROCESSOR_MODE PreviousMode, + OUT PSIZE_T NumberOfBytesCopied + ); + +NTKERNELAPI +PPEB +NTAPI +PsGetProcessPeb( IN PEPROCESS Process ); + +NTKERNELAPI +PVOID +NTAPI +PsGetThreadTeb( IN PETHREAD Thread ); + +NTKERNELAPI +PVOID +NTAPI +PsGetProcessWow64Process( IN PEPROCESS Process ); + +NTKERNELAPI +PVOID +NTAPI +PsGetCurrentProcessWow64Process( ); + +NTKERNELAPI +BOOLEAN +NTAPI +KeTestAlertThread( IN KPROCESSOR_MODE AlertMode ); + +NTKERNELAPI +BOOLEAN +NTAPI +PsIsProtectedProcess( IN PEPROCESS Process ); + +typedef VOID( NTAPI *PKNORMAL_ROUTINE )( + PVOID NormalContext, + PVOID SystemArgument1, + PVOID SystemArgument2 + ); + +typedef VOID( NTAPI* PKKERNEL_ROUTINE)( + PRKAPC Apc, + PKNORMAL_ROUTINE *NormalRoutine, + PVOID *NormalContext, + PVOID *SystemArgument1, + PVOID *SystemArgument2 + ); + +typedef VOID( NTAPI *PKRUNDOWN_ROUTINE )( PRKAPC Apc ); + +NTKERNELAPI +VOID +NTAPI +KeInitializeApc( + IN PKAPC Apc, + IN PKTHREAD Thread, + IN KAPC_ENVIRONMENT ApcStateIndex, + IN PKKERNEL_ROUTINE KernelRoutine, + IN PKRUNDOWN_ROUTINE RundownRoutine, + IN PKNORMAL_ROUTINE NormalRoutine, + IN KPROCESSOR_MODE ApcMode, + IN PVOID NormalContext + ); + +NTKERNELAPI +BOOLEAN +NTAPI +KeInsertQueueApc( + PKAPC Apc, + PVOID SystemArgument1, + PVOID SystemArgument2, + KPRIORITY Increment + ); + +NTSYSAPI +PIMAGE_NT_HEADERS +NTAPI +RtlImageNtHeader( PVOID Base ); + +NTSYSAPI +PVOID +NTAPI +RtlImageDirectoryEntryToData( + PVOID ImageBase, + BOOLEAN MappedAsImage, + USHORT DirectoryEntry, + PULONG Size + ); + + +typedef BOOLEAN ( *EX_ENUMERATE_HANDLE_ROUTINE )( +#if !defined(_WIN7_) + IN PHANDLE_TABLE HandleTable, +#endif + IN PHANDLE_TABLE_ENTRY HandleTableEntry, + IN HANDLE Handle, + IN PVOID EnumParameter + ); + +NTKERNELAPI +BOOLEAN +ExEnumHandleTable( + IN PHANDLE_TABLE HandleTable, + IN EX_ENUMERATE_HANDLE_ROUTINE EnumHandleProcedure, + IN PVOID EnumParameter, + OUT PHANDLE Handle + ); + +NTKERNELAPI +VOID +FASTCALL +ExfUnblockPushLock ( + IN OUT PEX_PUSH_LOCK PushLock, + IN OUT PVOID WaitBlock + ); \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Loader.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Loader.h new file mode 100644 index 0000000..667aa5c --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Loader.h @@ -0,0 +1,289 @@ +#pragma once + +#include "Imports.h" +#include "NativeStructs.h" + +// Module type +typedef enum _ModType +{ + mt_mod32, // 64 bit module + mt_mod64, // 32 bit module + mt_default, // type is deduced from target process + mt_unknown // Failed to detect type +} ModType; + +// Image name resolve flags +typedef enum _ResolveFlags +{ + KApiShemaOnly = 1, + KSkipSxS = 2, + KFullPath = 4, +} ResolveFlags; + +/// +/// Module info +/// +typedef struct _MODULE_DATA +{ + LIST_ENTRY link; // List link + PUCHAR baseAddress; // Base image address in target process + PUCHAR localBase; // Base image address in system space + UNICODE_STRING name; // File name + UNICODE_STRING fullPath; // Full file path + SIZE_T size; // Size of image + ModType type; // Module type + enum KMmapFlags flags; // Flags + BOOLEAN manual; // Image is manually mapped + BOOLEAN initialized; // DllMain was already called +} MODULE_DATA, *PMODULE_DATA; + + +/// +/// User-mode memory region +/// +typedef struct _USER_CONTEXT +{ + UCHAR code[0x1000]; // Code buffer + union + { + UNICODE_STRING ustr; + UNICODE_STRING32 ustr32; + }; + wchar_t buffer[0x400]; // Buffer for unicode string + + + // Activation context data + union + { + ACTCTXW actx; + ACTCTXW32 actx32; + }; + HANDLE hCTX; + ULONG hCookie; + + PVOID ptr; // Tmp data + union + { + NTSTATUS status; // Last execution status + PVOID retVal; // Function return value + ULONG retVal32; // Function return value + }; + + //UCHAR tlsBuf[0x100]; +} USER_CONTEXT, *PUSER_CONTEXT; + +/// +/// Manual map context +/// +typedef struct _MMAP_CONTEXT +{ + PEPROCESS pProcess; // Target process + PVOID pWorkerBuf; // Worker thread code buffer + HANDLE hWorker; // Worker thread handle + PETHREAD pWorker; // Worker thread object + LIST_ENTRY modules; // Manual module list + PUSER_CONTEXT userMem; // Tmp buffer in user space + HANDLE hSync; // APC sync handle + PKEVENT pSync; // APC sync object + PVOID pSetEvent; // ZwSetEvent address + PVOID pLoadImage; // LdrLoadDll address + BOOLEAN tlsInitialized; // Static TLS was initialized + BOOLEAN noThreads; // No threads should be created +} MMAP_CONTEXT, *PMMAP_CONTEXT; + +/// +/// Initialize loader stuff +/// +/// Any valid system module +/// Status code +NTSTATUS BBInitLdrData( IN PKLDR_DATA_TABLE_ENTRY pThisModule ); + +/// +/// Get address of a system module +/// Either 'pName' or 'pAddress' is required to perform search +/// +/// Base name of the image (e.g. hal.dll) +/// Address inside module +/// Found loader entry. NULL if nothing found +PKLDR_DATA_TABLE_ENTRY BBGetSystemModule( IN PUNICODE_STRING pName, IN PVOID pAddress ); + +/// +/// Get module base address by name +/// +/// Target process +/// Nodule name to search for +/// If TRUE - search in 32-bit PEB +/// Found address, NULL if not found +PVOID BBGetUserModule( IN PEPROCESS pProcess, IN PUNICODE_STRING ModuleName, IN BOOLEAN isWow64 ); + +/// +/// Unlink user-mode module from Loader lists +/// +/// Target process +/// Module base +/// If TRUE - unlink from PEB32 Loader, otherwise use PEB64 +/// Status code +NTSTATUS BBUnlinkFromLoader( IN PEPROCESS pProcess, IN PVOID pBase, IN BOOLEAN isWow64 ); + +/// +/// Get exported function address +/// +/// Module base +/// Function name or ordinal +/// Target process for user module +/// Found address, NULL if not found +PVOID BBGetModuleExport( IN PVOID pBase, IN PCCHAR name_ord, IN PEPROCESS pProcess, IN PUNICODE_STRING modName ); + +/// +/// Map new user module +/// +/// Target process +/// Image path +/// Image buffer +/// Image buffer size +/// Buffer has image memory layout +/// Mapping flags +/// Init routine RVA +/// Init argument +/// Mapped image data +/// Status code +NTSTATUS BBMapUserImage( + IN PEPROCESS pProcess, + IN PUNICODE_STRING path, + IN PVOID buffer, IN ULONG_PTR size, + IN BOOLEAN asImage, + IN enum KMmapFlags flags, + IN ULONG initRVA, + IN PWCH initArg, + OUT PMODULE_DATA pImage + ); + +/// +/// Resolve import table and load missing dependencies +/// +/// Target image base +/// If TRUE - image is driver +/// Target process +/// Iamge is 32bit image +/// Manual map context +/// Status code +NTSTATUS BBResolveImageRefs( + IN PVOID pImageBase, + IN BOOLEAN systemImage, + IN PEPROCESS pProcess, + IN BOOLEAN wow64Image, + IN PMMAP_CONTEXT pContext, + IN enum KMmapFlags flags + ); + +/// +/// Resolve image name to fully qualified path +/// +/// Loader context +/// Target process. Must be running in the context of this process +/// Flags +/// Image name to resolve +/// Base image name for API SET translation +/// Resolved image path +/// Status code +NTSTATUS BBResolveImagePath( + IN PMMAP_CONTEXT pContext, + IN PEPROCESS pProcess, + IN ResolveFlags flags, + IN PUNICODE_STRING path, + IN PUNICODE_STRING baseImage, + OUT PUNICODE_STRING resolved + ); + +/// +/// Find first thread of the target process +/// +/// Target process. +/// Found thread. Thread object reference count is increased by 1 +/// Status code +NTSTATUS BBLookupProcessThread( IN PEPROCESS pProcess, OUT PETHREAD* ppThread ); + +/// +/// Create new thread in the target process +/// +/// Thread start address +/// Thread argument +/// Thread creation flags +/// If set to TRUE - wait for thread completion +/// Thread exit status +/// Status code +NTSTATUS BBExecuteInNewThread( + IN PVOID pBaseAddress, + IN PVOID pParam, + IN ULONG flags, + IN BOOLEAN wait, + OUT PNTSTATUS pExitStatus + ); + +/// +/// Queue user-mode APC to the target thread +/// +/// Target thread +/// APC function +/// Argument 1 +/// Argument 2 +/// Argument 3 +/// If TRUE - force delivery by issuing special kernel APC +/// Status code +NTSTATUS BBQueueUserApc( + IN PETHREAD pThread, + IN PVOID pUserFunc, + IN PVOID Arg1, + IN PVOID Arg2, + IN PVOID Arg3, + BOOLEAN bForce + ); + + +/// +/// Manually map driver into system space +/// +/// Fully qualified native path to the driver +/// Status code +NTSTATUS BBMMapDriver( IN PUNICODE_STRING pPath ); + +PIMAGE_BASE_RELOCATION +LdrProcessRelocationBlockLongLong( + IN ULONG_PTR VA, + IN ULONG SizeOfBlock, + IN PUSHORT NextOffset, + IN LONGLONG Diff + ); + +NTSTATUS +LdrRelocateImage ( + IN PVOID NewBase, + IN NTSTATUS Success, + IN NTSTATUS Conflict, + IN NTSTATUS Invalid + ); + +NTSTATUS +LdrRelocateImageWithBias( + IN PVOID NewBase, + IN LONGLONG AdditionalBias, + IN NTSTATUS Success, + IN NTSTATUS Conflict, + IN NTSTATUS Invalid + ); + +PIMAGE_BASE_RELOCATION +LdrProcessRelocationBlock( + IN ULONG_PTR VA, + IN ULONG SizeOfBlock, + IN PUSHORT NextOffset, + IN LONG_PTR Diff + ); + +PIMAGE_BASE_RELOCATION +LdrProcessRelocationBlockLongLong( + IN ULONG_PTR VA, + IN ULONG SizeOfBlock, + IN PUSHORT NextOffset, + IN LONGLONG Diff + ); \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeEnums.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeEnums.h new file mode 100644 index 0000000..6dfd0da --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeEnums.h @@ -0,0 +1,218 @@ +#pragma once + +typedef enum _MEMORY_INFORMATION_CLASS_EX +{ + MemoryBasicInformationEx = 0, + MemoryWorkingSetInformation = 1, + MemoryMappedFilenameInformation = 2, + MemoryRegionInformation = 3, + MemoryWorkingSetExInformation = 4, +} MEMORY_INFORMATION_CLASS_EX; + +typedef enum _PS_PROTECTED_SIGNER +{ + PsProtectedSignerNone = 0, + PsProtectedSignerAuthenticode = 1, + PsProtectedSignerCodeGen = 2, + PsProtectedSignerAntimalware = 3, + PsProtectedSignerLsa = 4, + PsProtectedSignerWindows = 5, + PsProtectedSignerWinTcb = 6, + PsProtectedSignerMax = 7 +} PS_PROTECTED_SIGNER; + +typedef enum _PS_PROTECTED_TYPE +{ + PsProtectedTypeNone = 0, + PsProtectedTypeProtectedLight = 1, + PsProtectedTypeProtected = 2, + PsProtectedTypeMax = 3 +} PS_PROTECTED_TYPE; + +typedef enum _SYSTEM_INFORMATION_CLASS +{ + SystemBasicInformation = 0x0, + SystemProcessorInformation = 0x1, + SystemPerformanceInformation = 0x2, + SystemTimeOfDayInformation = 0x3, + SystemPathInformation = 0x4, + SystemProcessInformation = 0x5, + SystemCallCountInformation = 0x6, + SystemDeviceInformation = 0x7, + SystemProcessorPerformanceInformation = 0x8, + SystemFlagsInformation = 0x9, + SystemCallTimeInformation = 0xa, + SystemModuleInformation = 0xb, + SystemLocksInformation = 0xc, + SystemStackTraceInformation = 0xd, + SystemPagedPoolInformation = 0xe, + SystemNonPagedPoolInformation = 0xf, + SystemHandleInformation = 0x10, + SystemObjectInformation = 0x11, + SystemPageFileInformation = 0x12, + SystemVdmInstemulInformation = 0x13, + SystemVdmBopInformation = 0x14, + SystemFileCacheInformation = 0x15, + SystemPoolTagInformation = 0x16, + SystemInterruptInformation = 0x17, + SystemDpcBehaviorInformation = 0x18, + SystemFullMemoryInformation = 0x19, + SystemLoadGdiDriverInformation = 0x1a, + SystemUnloadGdiDriverInformation = 0x1b, + SystemTimeAdjustmentInformation = 0x1c, + SystemSummaryMemoryInformation = 0x1d, + SystemMirrorMemoryInformation = 0x1e, + SystemPerformanceTraceInformation = 0x1f, + SystemObsolete0 = 0x20, + SystemExceptionInformation = 0x21, + SystemCrashDumpStateInformation = 0x22, + SystemKernelDebuggerInformation = 0x23, + SystemContextSwitchInformation = 0x24, + SystemRegistryQuotaInformation = 0x25, + SystemExtendServiceTableInformation = 0x26, + SystemPrioritySeperation = 0x27, + SystemVerifierAddDriverInformation = 0x28, + SystemVerifierRemoveDriverInformation = 0x29, + SystemProcessorIdleInformation = 0x2a, + SystemLegacyDriverInformation = 0x2b, + SystemCurrentTimeZoneInformation = 0x2c, + SystemLookasideInformation = 0x2d, + SystemTimeSlipNotification = 0x2e, + SystemSessionCreate = 0x2f, + SystemSessionDetach = 0x30, + SystemSessionInformation = 0x31, + SystemRangeStartInformation = 0x32, + SystemVerifierInformation = 0x33, + SystemVerifierThunkExtend = 0x34, + SystemSessionProcessInformation = 0x35, + SystemLoadGdiDriverInSystemSpace = 0x36, + SystemNumaProcessorMap = 0x37, + SystemPrefetcherInformation = 0x38, + SystemExtendedProcessInformation = 0x39, + SystemRecommendedSharedDataAlignment = 0x3a, + SystemComPlusPackage = 0x3b, + SystemNumaAvailableMemory = 0x3c, + SystemProcessorPowerInformation = 0x3d, + SystemEmulationBasicInformation = 0x3e, + SystemEmulationProcessorInformation = 0x3f, + SystemExtendedHandleInformation = 0x40, + SystemLostDelayedWriteInformation = 0x41, + SystemBigPoolInformation = 0x42, + SystemSessionPoolTagInformation = 0x43, + SystemSessionMappedViewInformation = 0x44, + SystemHotpatchInformation = 0x45, + SystemObjectSecurityMode = 0x46, + SystemWatchdogTimerHandler = 0x47, + SystemWatchdogTimerInformation = 0x48, + SystemLogicalProcessorInformation = 0x49, + SystemWow64SharedInformationObsolete = 0x4a, + SystemRegisterFirmwareTableInformationHandler = 0x4b, + SystemFirmwareTableInformation = 0x4c, + SystemModuleInformationEx = 0x4d, + SystemVerifierTriageInformation = 0x4e, + SystemSuperfetchInformation = 0x4f, + SystemMemoryListInformation = 0x50, + SystemFileCacheInformationEx = 0x51, + SystemThreadPriorityClientIdInformation = 0x52, + SystemProcessorIdleCycleTimeInformation = 0x53, + SystemVerifierCancellationInformation = 0x54, + SystemProcessorPowerInformationEx = 0x55, + SystemRefTraceInformation = 0x56, + SystemSpecialPoolInformation = 0x57, + SystemProcessIdInformation = 0x58, + SystemErrorPortInformation = 0x59, + SystemBootEnvironmentInformation = 0x5a, + SystemHypervisorInformation = 0x5b, + SystemVerifierInformationEx = 0x5c, + SystemTimeZoneInformation = 0x5d, + SystemImageFileExecutionOptionsInformation = 0x5e, + SystemCoverageInformation = 0x5f, + SystemPrefetchPatchInformation = 0x60, + SystemVerifierFaultsInformation = 0x61, + SystemSystemPartitionInformation = 0x62, + SystemSystemDiskInformation = 0x63, + SystemProcessorPerformanceDistribution = 0x64, + SystemNumaProximityNodeInformation = 0x65, + SystemDynamicTimeZoneInformation = 0x66, + SystemCodeIntegrityInformation = 0x67, + SystemProcessorMicrocodeUpdateInformation = 0x68, + SystemProcessorBrandString = 0x69, + SystemVirtualAddressInformation = 0x6a, + SystemLogicalProcessorAndGroupInformation = 0x6b, + SystemProcessorCycleTimeInformation = 0x6c, + SystemStoreInformation = 0x6d, + SystemRegistryAppendString = 0x6e, + SystemAitSamplingValue = 0x6f, + SystemVhdBootInformation = 0x70, + SystemCpuQuotaInformation = 0x71, + SystemNativeBasicInformation = 0x72, + SystemErrorPortTimeouts = 0x73, + SystemLowPriorityIoInformation = 0x74, + SystemBootEntropyInformation = 0x75, + SystemVerifierCountersInformation = 0x76, + SystemPagedPoolInformationEx = 0x77, + SystemSystemPtesInformationEx = 0x78, + SystemNodeDistanceInformation = 0x79, + SystemAcpiAuditInformation = 0x7a, + SystemBasicPerformanceInformation = 0x7b, + SystemQueryPerformanceCounterInformation = 0x7c, + SystemSessionBigPoolInformation = 0x7d, + SystemBootGraphicsInformation = 0x7e, + SystemScrubPhysicalMemoryInformation = 0x7f, + SystemBadPageInformation = 0x80, + SystemProcessorProfileControlArea = 0x81, + SystemCombinePhysicalMemoryInformation = 0x82, + SystemEntropyInterruptTimingInformation = 0x83, + SystemConsoleInformation = 0x84, + SystemPlatformBinaryInformation = 0x85, + SystemThrottleNotificationInformation = 0x86, + SystemHypervisorProcessorCountInformation = 0x87, + SystemDeviceDataInformation = 0x88, + SystemDeviceDataEnumerationInformation = 0x89, + SystemMemoryTopologyInformation = 0x8a, + SystemMemoryChannelInformation = 0x8b, + SystemBootLogoInformation = 0x8c, + SystemProcessorPerformanceInformationEx = 0x8d, + SystemSpare0 = 0x8e, + SystemSecureBootPolicyInformation = 0x8f, + SystemPageFileInformationEx = 0x90, + SystemSecureBootInformation = 0x91, + SystemEntropyInterruptTimingRawInformation = 0x92, + SystemPortableWorkspaceEfiLauncherInformation = 0x93, + SystemFullProcessInformation = 0x94, + SystemKernelDebuggerInformationEx = 0x95, + SystemBootMetadataInformation = 0x96, + SystemSoftRebootInformation = 0x97, + SystemElamCertificateInformation = 0x98, + SystemOfflineDumpConfigInformation = 0x99, + SystemProcessorFeaturesInformation = 0x9a, + SystemRegistryReconciliationInformation = 0x9b, + MaxSystemInfoClass = 0x9c, +} SYSTEM_INFORMATION_CLASS; + +typedef enum _KAPC_ENVIRONMENT +{ + OriginalApcEnvironment, + AttachedApcEnvironment, + CurrentApcEnvironment, + InsertApcEnvironment +} KAPC_ENVIRONMENT, *PKAPC_ENVIRONMENT; + +typedef enum _MI_VAD_TYPE +{ + VadNone, + VadDevicePhysicalMemory, + VadImageMap, + VadAwe, + VadWriteWatch, + VadLargePages, + VadRotatePhysical, + VadLargePageSection +} MI_VAD_TYPE, *PMI_VAD_TYPE; + +typedef enum _MMSYSTEM_PTE_POOL_TYPE +{ + SystemPteSpace, + NonPagedPoolExpansion, + MaximumPtePoolTypes +} MMSYSTEM_PTE_POOL_TYPE; \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs.h new file mode 100644 index 0000000..f16e717 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs.h @@ -0,0 +1,965 @@ +#pragma once + +#include "PEStructs.h" + +#ifdef _WIN10_ +#include "NativeStructs10.h" +#elif _WIN81_ +#include "NativeStructs81.h" +#elif _WIN8_ +#include "NativeStructs8.h" +#elif _WIN7_ +#include "NativeStructs7.h" +#else +#error Unsupported OS build version +#endif + +#define MAKEINTRESOURCEW(i) ((PWCH)((ULONG_PTR)((USHORT)(i)))) + +typedef struct _SYSTEM_SERVICE_DESCRIPTOR_TABLE +{ + PULONG_PTR ServiceTableBase; + PULONG ServiceCounterTableBase; + ULONG_PTR NumberOfServices; + PUCHAR ParamTableBase; +} SYSTEM_SERVICE_DESCRIPTOR_TABLE, *PSYSTEM_SERVICE_DESCRIPTOR_TABLE; + +typedef union _PS_PROTECTION +{ + UCHAR Level; + struct + { + int Type : 3; + int Audit : 1; + int Signer : 4; + } Flags; +} PS_PROTECTION, *PPS_PROTECTION; + +typedef union _KEXECUTE_OPTIONS +{ + struct + { + int ExecuteDisable : 1; // 0x01 + int ExecuteEnable : 1; // 0x02 + int DisableThunkEmulation : 1; // 0x04 + int Permanent : 1; // 0x08 + int ExecuteDispatchEnable : 1; // 0x10 + int ImageDispatchEnable : 1; // 0x20 + int DisableExceptionChainValidation : 1; // 0x40 + int Spare : 1; + } Flags; + + UCHAR ExecuteOptions; +} KEXECUTE_OPTIONS, *PKEXECUTE_OPTIONS; + +typedef struct _EPROCESS_FLAGS2 +{ + unsigned int JobNotReallyActive : 1; + unsigned int AccountingFolded : 1; + unsigned int NewProcessReported : 1; + unsigned int ExitProcessReported : 1; + unsigned int ReportCommitChanges : 1; + unsigned int LastReportMemory : 1; + unsigned int ForceWakeCharge : 1; + unsigned int CrossSessionCreate : 1; + unsigned int NeedsHandleRundown : 1; + unsigned int RefTraceEnabled : 1; + unsigned int DisableDynamicCode : 1; + unsigned int EmptyJobEvaluated : 1; + unsigned int DefaultPagePriority : 3; + unsigned int PrimaryTokenFrozen : 1; + unsigned int ProcessVerifierTarget : 1; + unsigned int StackRandomizationDisabled : 1; + unsigned int AffinityPermanent : 1; + unsigned int AffinityUpdateEnable : 1; + unsigned int PropagateNode : 1; + unsigned int ExplicitAffinity : 1; + unsigned int ProcessExecutionState : 2; + unsigned int DisallowStrippedImages : 1; + unsigned int HighEntropyASLREnabled : 1; + unsigned int ExtensionPointDisable : 1; + unsigned int ForceRelocateImages : 1; + unsigned int ProcessStateChangeRequest : 2; + unsigned int ProcessStateChangeInProgress : 1; + unsigned int DisallowWin32kSystemCalls : 1; +} EPROCESS_FLAGS2, *PEPROCESS_FLAGS2; + +typedef struct _MITIGATION_FLAGS +{ + unsigned int ControlFlowGuardEnabled : 1; + unsigned int ControlFlowGuardExportSuppressionEnabled : 1; + unsigned int ControlFlowGuardStrict : 1; + unsigned int DisallowStrippedImages : 1; + unsigned int ForceRelocateImages : 1; + unsigned int HighEntropyASLREnabled : 1; + unsigned int StackRandomizationDisabled : 1; + unsigned int ExtensionPointDisable : 1; + unsigned int DisableDynamicCode : 1; + unsigned int DisableDynamicCodeAllowOptOut : 1; + unsigned int DisableDynamicCodeAllowRemoteDowngrade : 1; + unsigned int AuditDisableDynamicCode : 1; + unsigned int DisallowWin32kSystemCalls : 1; + unsigned int AuditDisallowWin32kSystemCalls : 1; + unsigned int EnableFilteredWin32kAPIs : 1; + unsigned int AuditFilteredWin32kAPIs : 1; + unsigned int DisableNonSystemFonts : 1; + unsigned int AuditNonSystemFontLoading : 1; + unsigned int PreferSystem32Images : 1; + unsigned int ProhibitRemoteImageMap : 1; + unsigned int AuditProhibitRemoteImageMap : 1; + unsigned int ProhibitLowILImageMap : 1; + unsigned int AuditProhibitLowILImageMap : 1; + unsigned int SignatureMitigationOptIn : 1; + unsigned int AuditBlockNonMicrosoftBinaries : 1; + unsigned int AuditBlockNonMicrosoftBinariesAllowStore : 1; + unsigned int LoaderIntegrityContinuityEnabled : 1; + unsigned int AuditLoaderIntegrityContinuity : 1; + unsigned int EnableModuleTamperingProtection : 1; + unsigned int EnableModuleTamperingProtectionNoInherit : 1; + unsigned int RestrictIndirectBranchPrediction; + unsigned int IsolateSecurityDomain; +} MITIGATION_FLAGS, *PMITIGATION_FLAGS; + +typedef union _EXHANDLE +{ + struct + { + int TagBits : 2; + int Index : 30; + } u; + void * GenericHandleOverlay; + ULONG_PTR Value; +} EXHANDLE, *PEXHANDLE; + +#pragma warning(disable : 4214 4201) + +#pragma pack(push, 1) +typedef struct _POOL_HEADER // Size=16 +{ + union + { + struct + { + unsigned long PreviousSize : 8; // Size=4 Offset=0 BitOffset=0 BitCount=8 + unsigned long PoolIndex : 8; // Size=4 Offset=0 BitOffset=8 BitCount=8 + unsigned long BlockSize : 8; // Size=4 Offset=0 BitOffset=16 BitCount=8 + unsigned long PoolType : 8; // Size=4 Offset=0 BitOffset=24 BitCount=8 + }; + unsigned long Ulong1; // Size=4 Offset=0 + }; + unsigned long PoolTag; // Size=4 Offset=4 + union + { + struct _EPROCESS * ProcessBilled; // Size=8 Offset=8 + struct + { + unsigned short AllocatorBackTraceIndex; // Size=2 Offset=8 + unsigned short PoolTagHash; // Size=2 Offset=10 + }; + }; +} POOL_HEADER, *PPOOL_HEADER; +#pragma pack(pop) + +typedef struct _HANDLE_TABLE_ENTRY // Size=16 +{ + union + { + ULONG_PTR VolatileLowValue; // Size=8 Offset=0 + ULONG_PTR LowValue; // Size=8 Offset=0 + struct _HANDLE_TABLE_ENTRY_INFO * InfoTable; // Size=8 Offset=0 + struct + { + ULONG_PTR Unlocked : 1; // Size=8 Offset=0 BitOffset=0 BitCount=1 + ULONG_PTR RefCnt : 16; // Size=8 Offset=0 BitOffset=1 BitCount=16 + ULONG_PTR Attributes : 3; // Size=8 Offset=0 BitOffset=17 BitCount=3 + ULONG_PTR ObjectPointerBits : 44; // Size=8 Offset=0 BitOffset=20 BitCount=44 + }; + }; + union + { + ULONG_PTR HighValue; // Size=8 Offset=8 + struct _HANDLE_TABLE_ENTRY * NextFreeHandleEntry; // Size=8 Offset=8 + union _EXHANDLE LeafHandleValue; // Size=8 Offset=8 + struct + { + ULONG GrantedAccessBits : 25; // Size=4 Offset=8 BitOffset=0 BitCount=25 + ULONG NoRightsUpgrade : 1; // Size=4 Offset=8 BitOffset=25 BitCount=1 + ULONG Spare : 6; // Size=4 Offset=8 BitOffset=26 BitCount=6 + }; + }; + ULONG TypeInfo; // Size=4 Offset=12 +} HANDLE_TABLE_ENTRY, *PHANDLE_TABLE_ENTRY; + + + +typedef struct _OBJECT_HEADER // Size=56 +{ + ULONG_PTR PointerCount; // Size=8 Offset=0 + union + { + ULONG_PTR HandleCount; // Size=8 Offset=8 + void * NextToFree; // Size=8 Offset=8 + }; + void* Lock; // Size=8 Offset=16 + UCHAR TypeIndex; // Size=1 Offset=24 + union + { + UCHAR TraceFlags; // Size=1 Offset=25 + struct + { + UCHAR DbgRefTrace : 1; // Size=1 Offset=25 BitOffset=0 BitCount=1 + UCHAR DbgTracePermanent : 1; // Size=1 Offset=25 BitOffset=1 BitCount=1 + }; + }; + UCHAR InfoMask; // Size=1 Offset=26 + union + { + UCHAR Flags; // Size=1 Offset=27 + struct + { + UCHAR NewObject : 1; // Size=1 Offset=27 BitOffset=0 BitCount=1 + UCHAR KernelObject : 1; // Size=1 Offset=27 BitOffset=1 BitCount=1 + UCHAR KernelOnlyAccess : 1; // Size=1 Offset=27 BitOffset=2 BitCount=1 + UCHAR ExclusiveObject : 1; // Size=1 Offset=27 BitOffset=3 BitCount=1 + UCHAR PermanentObject : 1; // Size=1 Offset=27 BitOffset=4 BitCount=1 + UCHAR DefaultSecurityQuota : 1; // Size=1 Offset=27 BitOffset=5 BitCount=1 + UCHAR SingleHandleEntry : 1; // Size=1 Offset=27 BitOffset=6 BitCount=1 + UCHAR DeletedInline : 1; // Size=1 Offset=27 BitOffset=7 BitCount=1 + }; + }; + ULONG Spare; // Size=4 Offset=28 + union + { + struct _OBJECT_CREATE_INFORMATION * ObjectCreateInfo; // Size=8 Offset=32 + void * QuotaBlockCharged; // Size=8 Offset=32 + }; + void * SecurityDescriptor; // Size=8 Offset=40 + struct _QUAD Body; // Size=8 Offset=48 +} OBJECT_HEADER, *POBJECT_HEADER; + +typedef union _EX_FAST_REF // Size=8 +{ + void * Object; + struct + { + unsigned __int64 RefCnt : 4; + }; + unsigned __int64 Value; +} EX_FAST_REF, *PEX_FAST_REF; + +typedef struct _CONTROL_AREA // Size=120 +{ + struct _SEGMENT * Segment; + struct _LIST_ENTRY ListHead; + unsigned __int64 NumberOfSectionReferences; + unsigned __int64 NumberOfPfnReferences; + unsigned __int64 NumberOfMappedViews; + unsigned __int64 NumberOfUserReferences; + unsigned long f1; + unsigned long f2; + EX_FAST_REF FilePointer; + // Other fields +} CONTROL_AREA, *PCONTROL_AREA; + +typedef struct _SUBSECTION // Size=56 +{ + PCONTROL_AREA ControlArea; + // Other fields +} SUBSECTION, *PSUBSECTION; + +typedef struct _MEMORY_BASIC_INFORMATION_EX +{ + PVOID BaseAddress; + PVOID AllocationBase; + ULONG AllocationProtect; + SIZE_T RegionSize; + ULONG State; + ULONG Protect; + ULONG Type; +} MEMORY_BASIC_INFORMATION_EX, *PMEMORY_BASIC_INFORMATION_EX; + +typedef struct _SYSTEM_CALL_COUNT_INFORMATION +{ + ULONG Length; + ULONG NumberOfTables; + ULONG limits[2]; + } SYSTEM_CALL_COUNT_INFORMATION, *PSYSTEM_CALL_COUNT_INFORMATION; + +typedef struct _SYSTEM_THREAD_INFORMATION +{ + LARGE_INTEGER KernelTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER CreateTime; + ULONG WaitTime; + PVOID StartAddress; + CLIENT_ID ClientId; + KPRIORITY Priority; + LONG BasePriority; + ULONG ContextSwitches; + ULONG ThreadState; + KWAIT_REASON WaitReason; +}SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION; + +typedef struct _THREAD_BASIC_INFORMATION +{ + NTSTATUS ExitStatus; + PVOID TebBaseAddress; + CLIENT_ID ClientId; + ULONG_PTR AffinityMask; + LONG Priority; + LONG BasePriority; +} THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION; + +typedef struct _SYSTEM_PROCESS_INFO +{ + ULONG NextEntryOffset; + ULONG NumberOfThreads; + LARGE_INTEGER WorkingSetPrivateSize; + ULONG HardFaultCount; + ULONG NumberOfThreadsHighWatermark; + ULONGLONG CycleTime; + LARGE_INTEGER CreateTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER KernelTime; + UNICODE_STRING ImageName; + KPRIORITY BasePriority; + HANDLE UniqueProcessId; + HANDLE InheritedFromUniqueProcessId; + ULONG HandleCount; + ULONG SessionId; + ULONG_PTR UniqueProcessKey; + SIZE_T PeakVirtualSize; + SIZE_T VirtualSize; + ULONG PageFaultCount; + SIZE_T PeakWorkingSetSize; + SIZE_T WorkingSetSize; + SIZE_T QuotaPeakPagedPoolUsage; + SIZE_T QuotaPagedPoolUsage; + SIZE_T QuotaPeakNonPagedPoolUsage; + SIZE_T QuotaNonPagedPoolUsage; + SIZE_T PagefileUsage; + SIZE_T PeakPagefileUsage; + SIZE_T PrivatePageCount; + LARGE_INTEGER ReadOperationCount; + LARGE_INTEGER WriteOperationCount; + LARGE_INTEGER OtherOperationCount; + LARGE_INTEGER ReadTransferCount; + LARGE_INTEGER WriteTransferCount; + LARGE_INTEGER OtherTransferCount; + SYSTEM_THREAD_INFORMATION Threads[1]; +}SYSTEM_PROCESS_INFO, *PSYSTEM_PROCESS_INFO; + +#pragma warning(disable : 4214) +typedef struct _MMPTE_HARDWARE64 +{ + ULONGLONG Valid : 1; + ULONGLONG Dirty1 : 1; + ULONGLONG Owner : 1; + ULONGLONG WriteThrough : 1; + ULONGLONG CacheDisable : 1; + ULONGLONG Accessed : 1; + ULONGLONG Dirty : 1; + ULONGLONG LargePage : 1; + ULONGLONG Global : 1; + ULONGLONG CopyOnWrite : 1; + ULONGLONG Unused : 1; + ULONGLONG Write : 1; + ULONGLONG PageFrameNumber : 36; + ULONGLONG reserved1 : 4; + ULONGLONG SoftwareWsIndex : 11; + ULONGLONG NoExecute : 1; +} MMPTE_HARDWARE64, *PMMPTE_HARDWARE64; + +typedef struct _MMPTE +{ + union + { + ULONG_PTR Long; + MMPTE_HARDWARE64 Hard; + } u; +} MMPTE; +typedef MMPTE *PMMPTE; + +#pragma warning(default : 4214) + +typedef struct _NT_PROC_THREAD_ATTRIBUTE_ENTRY +{ + ULONG Attribute; // PROC_THREAD_ATTRIBUTE_XXX + SIZE_T Size; + ULONG_PTR Value; + ULONG Unknown; +} NT_PROC_THREAD_ATTRIBUTE_ENTRY, *NT_PPROC_THREAD_ATTRIBUTE_ENTRY; + +typedef struct _NT_PROC_THREAD_ATTRIBUTE_LIST +{ + ULONG Length; + NT_PROC_THREAD_ATTRIBUTE_ENTRY Entry[1]; +} NT_PROC_THREAD_ATTRIBUTE_LIST, *PNT_PROC_THREAD_ATTRIBUTE_LIST; + + +typedef struct _RTL_PROCESS_MODULE_INFORMATION +{ + HANDLE Section; // Not filled in + PVOID MappedBase; + PVOID ImageBase; + ULONG ImageSize; + ULONG Flags; + USHORT LoadOrderIndex; + USHORT InitOrderIndex; + USHORT LoadCount; + USHORT OffsetToFileName; + UCHAR FullPathName[MAXIMUM_FILENAME_LENGTH]; +} RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION; + +typedef struct _RTL_PROCESS_MODULES +{ + ULONG NumberOfModules; + RTL_PROCESS_MODULE_INFORMATION Modules[1]; +} RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES; + +#pragma warning(disable : 4214) +typedef union _MEMORY_WORKING_SET_EX_BLOCK +{ + ULONG_PTR Flags; + struct + { + ULONG_PTR Valid : 1; + ULONG_PTR ShareCount : 3; + ULONG_PTR Win32Protection : 11; + ULONG_PTR Shared : 1; + ULONG_PTR Node : 6; + ULONG_PTR Locked : 1; + ULONG_PTR LargePage : 1; + ULONG_PTR Reserved : 7; + ULONG_PTR Bad : 1; + +#if defined(_WIN64) + ULONG_PTR ReservedUlong : 32; +#endif + }; +} MEMORY_WORKING_SET_EX_BLOCK, *PMEMORY_WORKING_SET_EX_BLOCK; + +typedef struct _MEMORY_WORKING_SET_EX_INFORMATION +{ + PVOID VirtualAddress; + MEMORY_WORKING_SET_EX_BLOCK VirtualAttributes; +} MEMORY_WORKING_SET_EX_INFORMATION, *PMEMORY_WORKING_SET_EX_INFORMATION; + +#pragma warning(default : 4214) + + +typedef struct _PEB_LDR_DATA +{ + ULONG Length; + UCHAR Initialized; + PVOID SsHandle; + LIST_ENTRY InLoadOrderModuleList; + LIST_ENTRY InMemoryOrderModuleList; + LIST_ENTRY InInitializationOrderModuleList; +} PEB_LDR_DATA, *PPEB_LDR_DATA; + +typedef struct _LDR_DATA_TABLE_ENTRY +{ + LIST_ENTRY InLoadOrderLinks; + LIST_ENTRY InMemoryOrderLinks; + LIST_ENTRY InInitializationOrderLinks; + PVOID DllBase; + PVOID EntryPoint; + ULONG SizeOfImage; + UNICODE_STRING FullDllName; + UNICODE_STRING BaseDllName; + ULONG Flags; + USHORT LoadCount; + USHORT TlsIndex; + LIST_ENTRY HashLinks; + ULONG TimeDateStamp; +} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY; + + +typedef struct _PEB +{ + UCHAR InheritedAddressSpace; + UCHAR ReadImageFileExecOptions; + UCHAR BeingDebugged; + UCHAR BitField; + PVOID Mutant; + PVOID ImageBaseAddress; + PPEB_LDR_DATA Ldr; + PVOID ProcessParameters; + PVOID SubSystemData; + PVOID ProcessHeap; + PVOID FastPebLock; + PVOID AtlThunkSListPtr; + PVOID IFEOKey; + PVOID CrossProcessFlags; + PVOID KernelCallbackTable; + ULONG SystemReserved; + ULONG AtlThunkSListPtr32; + PVOID ApiSetMap; +} PEB, *PPEB; + +typedef struct _PEB_LDR_DATA32 +{ + ULONG Length; + UCHAR Initialized; + ULONG SsHandle; + LIST_ENTRY32 InLoadOrderModuleList; + LIST_ENTRY32 InMemoryOrderModuleList; + LIST_ENTRY32 InInitializationOrderModuleList; +} PEB_LDR_DATA32, *PPEB_LDR_DATA32; + +typedef struct _LDR_DATA_TABLE_ENTRY32 +{ + LIST_ENTRY32 InLoadOrderLinks; + LIST_ENTRY32 InMemoryOrderLinks; + LIST_ENTRY32 InInitializationOrderLinks; + ULONG DllBase; + ULONG EntryPoint; + ULONG SizeOfImage; + UNICODE_STRING32 FullDllName; + UNICODE_STRING32 BaseDllName; + ULONG Flags; + USHORT LoadCount; + USHORT TlsIndex; + LIST_ENTRY32 HashLinks; + ULONG TimeDateStamp; +} LDR_DATA_TABLE_ENTRY32, *PLDR_DATA_TABLE_ENTRY32; + +typedef struct _PEB32 +{ + UCHAR InheritedAddressSpace; + UCHAR ReadImageFileExecOptions; + UCHAR BeingDebugged; + UCHAR BitField; + ULONG Mutant; + ULONG ImageBaseAddress; + ULONG Ldr; + ULONG ProcessParameters; + ULONG SubSystemData; + ULONG ProcessHeap; + ULONG FastPebLock; + ULONG AtlThunkSListPtr; + ULONG IFEOKey; + ULONG CrossProcessFlags; + ULONG UserSharedInfoPtr; + ULONG SystemReserved; + ULONG AtlThunkSListPtr32; + ULONG ApiSetMap; +} PEB32, *PPEB32; + +typedef struct _WOW64_PROCESS +{ + PPEB32 Wow64; +} WOW64_PROCESS, *PWOW64_PROCESS; + +typedef union _WOW64_APC_CONTEXT +{ + struct + { + ULONG Apc32BitContext; + ULONG Apc32BitRoutine; + }; + + PVOID Apc64BitContext; + +} WOW64_APC_CONTEXT, *PWOW64_APC_CONTEXT; + +typedef struct _NON_PAGED_DEBUG_INFO +{ + USHORT Signature; + USHORT Flags; + ULONG Size; + USHORT Machine; + USHORT Characteristics; + ULONG TimeDateStamp; + ULONG CheckSum; + ULONG SizeOfImage; + ULONGLONG ImageBase; +} NON_PAGED_DEBUG_INFO, *PNON_PAGED_DEBUG_INFO; + +typedef struct _KLDR_DATA_TABLE_ENTRY +{ + LIST_ENTRY InLoadOrderLinks; + PVOID ExceptionTable; + ULONG ExceptionTableSize; + // ULONG padding on IA64 + PVOID GpValue; + PNON_PAGED_DEBUG_INFO NonPagedDebugInfo; + PVOID DllBase; + PVOID EntryPoint; + ULONG SizeOfImage; + UNICODE_STRING FullDllName; + UNICODE_STRING BaseDllName; + ULONG Flags; + USHORT LoadCount; + USHORT __Unused5; + PVOID SectionPointer; + ULONG CheckSum; + // ULONG padding on IA64 + PVOID LoadedImports; + PVOID PatchInformation; +} KLDR_DATA_TABLE_ENTRY, *PKLDR_DATA_TABLE_ENTRY; + + +// +// This structure is used by the debugger for all targets +// It is the same size as DBGKD_DATA_HEADER on all systems +// +typedef struct _DBGKD_DEBUG_DATA_HEADER64 { + + // + // Link to other blocks + // + + LIST_ENTRY64 List; + + // + // This is a unique tag to identify the owner of the block. + // If your component only uses one pool tag, use it for this, too. + // + + ULONG OwnerTag; + + // + // This must be initialized to the size of the data block, + // including this structure. + // + + ULONG Size; + +} DBGKD_DEBUG_DATA_HEADER64, *PDBGKD_DEBUG_DATA_HEADER64; + + +// +// This structure is the same size on all systems. The only field +// which must be translated by the debugger is Header.List. +// + +// +// DO NOT ADD OR REMOVE FIELDS FROM THE MIDDLE OF THIS STRUCTURE!!! +// +// If you remove a field, replace it with an "unused" placeholder. +// Do not reuse fields until there has been enough time for old debuggers +// and extensions to age out. +// +typedef struct _KDDEBUGGER_DATA64 { + + DBGKD_DEBUG_DATA_HEADER64 Header; + + // + // Base address of kernel image + // + + ULONG64 KernBase; + + // + // DbgBreakPointWithStatus is a function which takes an argument + // and hits a breakpoint. This field contains the address of the + // breakpoint instruction. When the debugger sees a breakpoint + // at this address, it may retrieve the argument from the first + // argument register, or on x86 the eax register. + // + + ULONG64 BreakpointWithStatus; // address of breakpoint + + // + // Address of the saved context record during a bugcheck + // + // N.B. This is an automatic in KeBugcheckEx's frame, and + // is only valid after a bugcheck. + // + + ULONG64 SavedContext; + + // + // help for walking stacks with user callbacks: + // + + // + // The address of the thread structure is provided in the + // WAIT_STATE_CHANGE packet. This is the offset from the base of + // the thread structure to the pointer to the kernel stack frame + // for the currently active usermode callback. + // + + USHORT ThCallbackStack; // offset in thread data + + // + // these values are offsets into that frame: + // + + USHORT NextCallback; // saved pointer to next callback frame + USHORT FramePointer; // saved frame pointer + + // + // pad to a quad boundary + // + USHORT PaeEnabled; + + // + // Address of the kernel callout routine. + // + + ULONG64 KiCallUserMode; // kernel routine + + // + // Address of the usermode entry point for callbacks. + // + + ULONG64 KeUserCallbackDispatcher; // address in ntdll + + + // + // Addresses of various kernel data structures and lists + // that are of interest to the kernel debugger. + // + + ULONG64 PsLoadedModuleList; + ULONG64 PsActiveProcessHead; + ULONG64 PspCidTable; + + ULONG64 ExpSystemResourcesList; + ULONG64 ExpPagedPoolDescriptor; + ULONG64 ExpNumberOfPagedPools; + + ULONG64 KeTimeIncrement; + ULONG64 KeBugCheckCallbackListHead; + ULONG64 KiBugcheckData; + + ULONG64 IopErrorLogListHead; + + ULONG64 ObpRootDirectoryObject; + ULONG64 ObpTypeObjectType; + + ULONG64 MmSystemCacheStart; + ULONG64 MmSystemCacheEnd; + ULONG64 MmSystemCacheWs; + + ULONG64 MmPfnDatabase; + ULONG64 MmSystemPtesStart; + ULONG64 MmSystemPtesEnd; + ULONG64 MmSubsectionBase; + ULONG64 MmNumberOfPagingFiles; + + ULONG64 MmLowestPhysicalPage; + ULONG64 MmHighestPhysicalPage; + ULONG64 MmNumberOfPhysicalPages; + + ULONG64 MmMaximumNonPagedPoolInBytes; + ULONG64 MmNonPagedSystemStart; + ULONG64 MmNonPagedPoolStart; + ULONG64 MmNonPagedPoolEnd; + + ULONG64 MmPagedPoolStart; + ULONG64 MmPagedPoolEnd; + ULONG64 MmPagedPoolInformation; + ULONG64 MmPageSize; + + ULONG64 MmSizeOfPagedPoolInBytes; + + ULONG64 MmTotalCommitLimit; + ULONG64 MmTotalCommittedPages; + ULONG64 MmSharedCommit; + ULONG64 MmDriverCommit; + ULONG64 MmProcessCommit; + ULONG64 MmPagedPoolCommit; + ULONG64 MmExtendedCommit; + + ULONG64 MmZeroedPageListHead; + ULONG64 MmFreePageListHead; + ULONG64 MmStandbyPageListHead; + ULONG64 MmModifiedPageListHead; + ULONG64 MmModifiedNoWritePageListHead; + ULONG64 MmAvailablePages; + ULONG64 MmResidentAvailablePages; + + ULONG64 PoolTrackTable; + ULONG64 NonPagedPoolDescriptor; + + ULONG64 MmHighestUserAddress; + ULONG64 MmSystemRangeStart; + ULONG64 MmUserProbeAddress; + + ULONG64 KdPrintCircularBuffer; + ULONG64 KdPrintCircularBufferEnd; + ULONG64 KdPrintWritePointer; + ULONG64 KdPrintRolloverCount; + + ULONG64 MmLoadedUserImageList; + + // NT 5.1 Addition + + ULONG64 NtBuildLab; + ULONG64 KiNormalSystemCall; + + // NT 5.0 hotfix addition + + ULONG64 KiProcessorBlock; + ULONG64 MmUnloadedDrivers; + ULONG64 MmLastUnloadedDriver; + ULONG64 MmTriageActionTaken; + ULONG64 MmSpecialPoolTag; + ULONG64 KernelVerifier; + ULONG64 MmVerifierData; + ULONG64 MmAllocatedNonPagedPool; + ULONG64 MmPeakCommitment; + ULONG64 MmTotalCommitLimitMaximum; + ULONG64 CmNtCSDVersion; + + // NT 5.1 Addition + + ULONG64 MmPhysicalMemoryBlock; + ULONG64 MmSessionBase; + ULONG64 MmSessionSize; + ULONG64 MmSystemParentTablePage; + + // Server 2003 addition + + ULONG64 MmVirtualTranslationBase; + + USHORT OffsetKThreadNextProcessor; + USHORT OffsetKThreadTeb; + USHORT OffsetKThreadKernelStack; + USHORT OffsetKThreadInitialStack; + + USHORT OffsetKThreadApcProcess; + USHORT OffsetKThreadState; + USHORT OffsetKThreadBStore; + USHORT OffsetKThreadBStoreLimit; + + USHORT SizeEProcess; + USHORT OffsetEprocessPeb; + USHORT OffsetEprocessParentCID; + USHORT OffsetEprocessDirectoryTableBase; + + USHORT SizePrcb; + USHORT OffsetPrcbDpcRoutine; + USHORT OffsetPrcbCurrentThread; + USHORT OffsetPrcbMhz; + + USHORT OffsetPrcbCpuType; + USHORT OffsetPrcbVendorString; + USHORT OffsetPrcbProcStateContext; + USHORT OffsetPrcbNumber; + + USHORT SizeEThread; + + ULONG64 KdPrintCircularBufferPtr; + ULONG64 KdPrintBufferSize; + + ULONG64 KeLoaderBlock; + + USHORT SizePcr; + USHORT OffsetPcrSelfPcr; + USHORT OffsetPcrCurrentPrcb; + USHORT OffsetPcrContainedPrcb; + + USHORT OffsetPcrInitialBStore; + USHORT OffsetPcrBStoreLimit; + USHORT OffsetPcrInitialStack; + USHORT OffsetPcrStackLimit; + + USHORT OffsetPrcbPcrPage; + USHORT OffsetPrcbProcStateSpecialReg; + USHORT GdtR0Code; + USHORT GdtR0Data; + + USHORT GdtR0Pcr; + USHORT GdtR3Code; + USHORT GdtR3Data; + USHORT GdtR3Teb; + + USHORT GdtLdt; + USHORT GdtTss; + USHORT Gdt64R3CmCode; + USHORT Gdt64R3CmTeb; + + ULONG64 IopNumTriageDumpDataBlocks; + ULONG64 IopTriageDumpDataBlocks; + + // Longhorn addition + + ULONG64 VfCrashDataBlock; + ULONG64 MmBadPagesDetected; + ULONG64 MmZeroedPageSingleBitErrorsDetected; + + // Windows 7 addition + + ULONG64 EtwpDebuggerData; + USHORT OffsetPrcbContext; + + // Windows 8 addition + + USHORT OffsetPrcbMaxBreakpoints; + USHORT OffsetPrcbMaxWatchpoints; + + ULONG OffsetKThreadStackLimit; + ULONG OffsetKThreadStackBase; + ULONG OffsetKThreadQueueListEntry; + ULONG OffsetEThreadIrpList; + + USHORT OffsetPrcbIdleThread; + USHORT OffsetPrcbNormalDpcState; + USHORT OffsetPrcbDpcStack; + USHORT OffsetPrcbIsrStack; + + USHORT SizeKDPC_STACK_FRAME; + + // Windows 8.1 Addition + + USHORT OffsetKPriQueueThreadListHead; + USHORT OffsetKThreadWaitReason; + + // Windows 10 RS1 Addition + + USHORT Padding; + ULONG64 PteBase; + + // Windows 10 RS5 Addition + + ULONG64 RetpolineStubFunctionTable; + ULONG RetpolineStubFunctionTableSize; + ULONG RetpolineStubOffset; + ULONG RetpolineStubSize; + +} KDDEBUGGER_DATA64, *PKDDEBUGGER_DATA64; + + +typedef struct _DUMP_HEADER +{ + ULONG Signature; + ULONG ValidDump; + ULONG MajorVersion; + ULONG MinorVersion; + ULONG_PTR DirectoryTableBase; + ULONG_PTR PfnDataBase; + PLIST_ENTRY PsLoadedModuleList; + PLIST_ENTRY PsActiveProcessHead; + ULONG MachineImageType; + ULONG NumberProcessors; + ULONG BugCheckCode; + ULONG_PTR BugCheckParameter1; + ULONG_PTR BugCheckParameter2; + ULONG_PTR BugCheckParameter3; + ULONG_PTR BugCheckParameter4; + CHAR VersionUser[32]; + struct _KDDEBUGGER_DATA64 *KdDebuggerDataBlock; +} DUMP_HEADER, *PDUMP_HEADER; +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, Signature ) == 0 ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, ValidDump ) == 4 ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, MajorVersion ) == 8 ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, MinorVersion ) == 0xc ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, DirectoryTableBase ) == 0x10 ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, PfnDataBase ) == 0x18 ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, PsLoadedModuleList ) == 0x20 ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, PsActiveProcessHead ) == 0x28 ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, MachineImageType ) == 0x30 ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, NumberProcessors ) == 0x34 ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, BugCheckCode ) == 0x38 ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, BugCheckParameter1 ) == 0x40 ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, BugCheckParameter2 ) == 0x48 ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, BugCheckParameter3 ) == 0x50 ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, BugCheckParameter4 ) == 0x58 ); +C_ASSERT( FIELD_OFFSET( DUMP_HEADER, KdDebuggerDataBlock ) == 0x80 ); + +extern KDDEBUGGER_DATA64 g_KdBlock; \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs10.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs10.h new file mode 100644 index 0000000..9d1f3cb --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs10.h @@ -0,0 +1,193 @@ +#pragma once + +// +// Native structures W10 technical preview x64, build 9841 +// +#pragma warning(disable : 4214 4201) +#pragma pack(push, 1) + +typedef struct _MM_AVL_NODE // Size=24 +{ + struct _MM_AVL_NODE * LeftChild; // Size=8 Offset=0 + struct _MM_AVL_NODE * RightChild; // Size=8 Offset=8 + + union ___unnamed1666 // Size=8 + { + struct + { + __int64 Balance : 2; // Size=8 Offset=0 BitOffset=0 BitCount=2 + }; + struct _MM_AVL_NODE * Parent; // Size=8 Offset=0 + } u1; +} MM_AVL_NODE, *PMM_AVL_NODE, *PMMADDRESS_NODE; + +typedef struct _RTL_AVL_TREE // Size=8 +{ + PMM_AVL_NODE BalancedRoot; + void * NodeHint; + unsigned __int64 NumberGenericTableElements; +} RTL_AVL_TREE, *PRTL_AVL_TREE, MM_AVL_TABLE, *PMM_AVL_TABLE; + +union _EX_PUSH_LOCK // Size=8 +{ + struct + { + unsigned __int64 Locked : 1; // Size=8 Offset=0 BitOffset=0 BitCount=1 + unsigned __int64 Waiting : 1; // Size=8 Offset=0 BitOffset=1 BitCount=1 + unsigned __int64 Waking : 1; // Size=8 Offset=0 BitOffset=2 BitCount=1 + unsigned __int64 MultipleShared : 1; // Size=8 Offset=0 BitOffset=3 BitCount=1 + unsigned __int64 Shared : 60; // Size=8 Offset=0 BitOffset=4 BitCount=60 + }; + unsigned __int64 Value; // Size=8 Offset=0 + void * Ptr; // Size=8 Offset=0 +}; + +struct _MMVAD_FLAGS // Size=4 +{ + unsigned long VadType: 3; // Size=4 Offset=0 BitOffset=0 BitCount=3 + unsigned long Protection: 5; // Size=4 Offset=0 BitOffset=3 BitCount=5 + unsigned long PreferredNode: 6; // Size=4 Offset=0 BitOffset=8 BitCount=6 + unsigned long NoChange: 1; // Size=4 Offset=0 BitOffset=14 BitCount=1 + unsigned long PrivateMemory: 1; // Size=4 Offset=0 BitOffset=15 BitCount=1 + unsigned long Teb: 1; // Size=4 Offset=0 BitOffset=16 BitCount=1 + unsigned long PrivateFixup: 1; // Size=4 Offset=0 BitOffset=17 BitCount=1 + unsigned long ManySubsections: 1; // Size=4 Offset=0 BitOffset=18 BitCount=1 + unsigned long Spare: 12; // Size=4 Offset=0 BitOffset=19 BitCount=12 + unsigned long DeleteInProgress: 1; // Size=4 Offset=0 BitOffset=31 BitCount=1 +}; +struct _MMVAD_FLAGS1 // Size=4 +{ + unsigned long CommitCharge : 31; // Size=4 Offset=0 BitOffset=0 BitCount=31 + unsigned long MemCommit : 1; // Size=4 Offset=0 BitOffset=31 BitCount=1 +}; + +struct _MMVAD_FLAGS2 // Size=4 +{ + unsigned long FileOffset : 24; // Size=4 Offset=0 BitOffset=0 BitCount=24 + unsigned long Large : 1; // Size=4 Offset=0 BitOffset=24 BitCount=1 + unsigned long TrimBehind : 1; // Size=4 Offset=0 BitOffset=25 BitCount=1 + unsigned long Inherit : 1; // Size=4 Offset=0 BitOffset=26 BitCount=1 + unsigned long CopyOnWrite : 1; // Size=4 Offset=0 BitOffset=27 BitCount=1 + unsigned long NoValidationNeeded : 1; // Size=4 Offset=0 BitOffset=28 BitCount=1 + unsigned long Spare : 3; // Size=4 Offset=0 BitOffset=29 BitCount=3 +}; + +struct _MI_VAD_SEQUENTIAL_INFO // Size=8 +{ + unsigned __int64 Length : 12; // Size=8 Offset=0 BitOffset=0 BitCount=12 + unsigned __int64 Vpn : 52; // Size=8 Offset=0 BitOffset=12 BitCount=52 +}; + +union ___unnamed1951 // Size=4 +{ + unsigned long LongFlags; // Size=4 Offset=0 + struct _MMVAD_FLAGS VadFlags; // Size=4 Offset=0 +}; + +union ___unnamed1952 // Size=4 +{ + unsigned long LongFlags1; // Size=4 Offset=0 + struct _MMVAD_FLAGS1 VadFlags1; // Size=4 Offset=0 +}; + +union ___unnamed2047 // Size=4 +{ + unsigned long LongFlags2; // Size=4 Offset=0 + struct _MMVAD_FLAGS2 VadFlags2; // Size=4 Offset=0 +}; + +union ___unnamed2048 // Size=8 +{ + struct _MI_VAD_SEQUENTIAL_INFO SequentialVa; // Size=8 Offset=0 + struct _MMEXTEND_INFO * ExtendedInfo; // Size=8 Offset=0 +}; + +typedef struct _MMVAD_SHORT // Size=64 +{ + union + { + struct _RTL_BALANCED_NODE VadNode; // Size=24 Offset=0 + struct _MMVAD_SHORT * NextVad; // Size=8 Offset=0 + }; + unsigned long StartingVpn; // Size=4 Offset=24 + unsigned long EndingVpn; // Size=4 Offset=28 + unsigned char StartingVpnHigh; // Size=1 Offset=32 + unsigned char EndingVpnHigh; // Size=1 Offset=33 + unsigned char CommitChargeHigh; // Size=1 Offset=34 + unsigned char SpareNT64VadUChar; // Size=1 Offset=35 + long ReferenceCount; // Size=4 Offset=36 + union _EX_PUSH_LOCK PushLock; // Size=8 Offset=40 + union ___unnamed1951 u; // Size=4 Offset=48 + union ___unnamed1952 u1; // Size=4 Offset=52 + struct _MI_VAD_EVENT_BLOCK * EventList; // Size=8 Offset=56 +} MMVAD_SHORT, *PMMVAD_SHORT; + + +typedef struct _MMVAD // Size=128 +{ + struct _MMVAD_SHORT Core; // Size=64 Offset=0 + union ___unnamed2047 u2; // Size=4 Offset=64 + unsigned long pad0; // Size=4 Offset=68 + struct _SUBSECTION * Subsection; // Size=8 Offset=72 + struct _MMPTE * FirstPrototypePte; // Size=8 Offset=80 + struct _MMPTE * LastContiguousPte; // Size=8 Offset=88 + struct _LIST_ENTRY ViewLinks; // Size=16 Offset=96 + struct _EPROCESS * VadsProcess; // Size=8 Offset=112 + union ___unnamed2048 u4; // Size=8 Offset=120 + struct _FILE_OBJECT * FileObject; // Size=8 Offset=128 +} MMVAD, *PMMVAD; +#pragma pack(pop) + +typedef struct _HANDLE_TABLE +{ + ULONG NextHandleNeedingPool; + long ExtraInfoPages; + LONG_PTR TableCode; + PEPROCESS QuotaProcess; + LIST_ENTRY HandleTableList; + ULONG UniqueProcessId; + ULONG Flags; + EX_PUSH_LOCK HandleContentionEvent; + EX_PUSH_LOCK HandleTableLock; + // More fields here... +} HANDLE_TABLE, *PHANDLE_TABLE; + +typedef struct _API_SET_VALUE_ENTRY_10 +{ + ULONG Flags; + ULONG NameOffset; + ULONG NameLength; + ULONG ValueOffset; + ULONG ValueLength; +} API_SET_VALUE_ENTRY_10, *PAPI_SET_VALUE_ENTRY_10; + +typedef struct _API_SET_VALUE_ARRAY_10 +{ + ULONG Flags; + ULONG NameOffset; + ULONG Unk; + ULONG NameLength; + ULONG DataOffset; + ULONG Count; +} API_SET_VALUE_ARRAY_10, *PAPI_SET_VALUE_ARRAY_10; + +typedef struct _API_SET_NAMESPACE_ENTRY_10 +{ + ULONG Limit; + ULONG Size; +} API_SET_NAMESPACE_ENTRY_10, *PAPI_SET_NAMESPACE_ENTRY_10; + +typedef struct _API_SET_NAMESPACE_ARRAY_10 +{ + ULONG Version; + ULONG Size; + ULONG Flags; + ULONG Count; + ULONG Start; + ULONG End; + ULONG Unk[2]; +} API_SET_NAMESPACE_ARRAY_10, *PAPI_SET_NAMESPACE_ARRAY_10; + +#pragma warning(default : 4214 4201) + +#define GET_VAD_ROOT(Table) Table->BalancedRoot \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs7.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs7.h new file mode 100644 index 0000000..531e61f --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs7.h @@ -0,0 +1,176 @@ +#pragma once + +// +// Native structures W7 x64 SP1 +// +#pragma warning(disable : 4214 4201) + +struct _MMVAD_FLAGS // Size=8 +{ + unsigned __int64 CommitCharge: 51; // Size=8 Offset=0 BitOffset=0 BitCount=51 + unsigned __int64 NoChange: 1; // Size=8 Offset=0 BitOffset=51 BitCount=1 + unsigned __int64 VadType: 3; // Size=8 Offset=0 BitOffset=52 BitCount=3 + unsigned __int64 MemCommit: 1; // Size=8 Offset=0 BitOffset=55 BitCount=1 + unsigned __int64 Protection: 5; // Size=8 Offset=0 BitOffset=56 BitCount=5 + unsigned __int64 Spare: 2; // Size=8 Offset=0 BitOffset=61 BitCount=2 + unsigned __int64 PrivateMemory: 1; // Size=8 Offset=0 BitOffset=63 BitCount=1 +}; + +struct _MMVAD_FLAGS3 // Size=8 +{ + unsigned __int64 PreferredNode: 6; // Size=8 Offset=0 BitOffset=0 BitCount=6 + unsigned __int64 Teb: 1; // Size=8 Offset=0 BitOffset=6 BitCount=1 + unsigned __int64 Spare: 1; // Size=8 Offset=0 BitOffset=7 BitCount=1 + unsigned __int64 SequentialAccess: 1; // Size=8 Offset=0 BitOffset=8 BitCount=1 + unsigned __int64 LastSequentialTrim: 15; // Size=8 Offset=0 BitOffset=9 BitCount=15 + unsigned __int64 Spare2: 8; // Size=8 Offset=0 BitOffset=24 BitCount=8 + unsigned __int64 LargePageCreating: 1; // Size=8 Offset=0 BitOffset=32 BitCount=1 + unsigned __int64 Spare3: 31; // Size=8 Offset=0 BitOffset=33 BitCount=31 +}; + +struct _MMVAD_FLAGS2 // Size=4 +{ + unsigned int FileOffset: 24; // Size=4 Offset=0 BitOffset=0 BitCount=24 + unsigned int SecNoChange: 1; // Size=4 Offset=0 BitOffset=24 BitCount=1 + unsigned int OneSecured: 1; // Size=4 Offset=0 BitOffset=25 BitCount=1 + unsigned int MultipleSecured: 1; // Size=4 Offset=0 BitOffset=26 BitCount=1 + unsigned int Spare: 1; // Size=4 Offset=0 BitOffset=27 BitCount=1 + unsigned int LongVad: 1; // Size=4 Offset=0 BitOffset=28 BitCount=1 + unsigned int ExtendableFile: 1; // Size=4 Offset=0 BitOffset=29 BitCount=1 + unsigned int Inherit: 1; // Size=4 Offset=0 BitOffset=30 BitCount=1 + unsigned int CopyOnWrite: 1; // Size=4 Offset=0 BitOffset=31 BitCount=1 +}; + +struct _MMSECURE_FLAGS // Size=4 +{ + unsigned long ReadOnly: 1; // Size=4 Offset=0 BitOffset=0 BitCount=1 + unsigned long NoWrite: 1; // Size=4 Offset=0 BitOffset=1 BitCount=1 + unsigned long Spare: 10; // Size=4 Offset=0 BitOffset=2 BitCount=10 +}; + +union ___unnamed710 // Size=8 +{ + struct + { + __int64 Balance: 2; // Size=8 Offset=0 BitOffset=0 BitCount=2 + }; + struct _MMADDRESS_NODE * Parent; // Size=8 Offset=0 +}; + +union ___unnamed712 // Size=8 +{ + unsigned __int64 LongFlags; // Size=8 Offset=0 + struct _MMVAD_FLAGS VadFlags; // Size=8 Offset=0 +}; +union ___unnamed713 // Size=8 +{ + unsigned __int64 LongFlags3; // Size=8 Offset=0 + struct _MMVAD_FLAGS3 VadFlags3; // Size=8 Offset=0 +}; + +union ___unnamed715 // Size=4 +{ + unsigned long LongFlags2; // Size=4 Offset=0 + struct _MMVAD_FLAGS2 VadFlags2; // Size=4 Offset=0 +}; + +union ___unnamed1322 // Size=8 +{ + struct _MMSECURE_FLAGS Flags; // Size=4 Offset=0 + void * StartVa; // Size=8 Offset=0 +}; + +struct _MMADDRESS_LIST // Size=16 +{ + union ___unnamed1322 u1; // Size=8 Offset=0 + void * EndVa; // Size=8 Offset=8 +}; + +union ___unnamed1319 // Size=16 +{ + struct _LIST_ENTRY List; // Size=16 Offset=0 + struct _MMADDRESS_LIST Secured; // Size=16 Offset=0 +}; + +union ___unnamed1320 // Size=8 +{ + struct _MMBANKED_SECTION * Banked; // Size=8 Offset=0 + struct _MMEXTEND_INFO * ExtendedInfo; // Size=8 Offset=0 +}; + +typedef struct _MMADDRESS_NODE // Size=40 +{ + union ___unnamed710 u1; + struct _MMADDRESS_NODE * LeftChild; // Size=8 Offset=8 + struct _MMADDRESS_NODE * RightChild; // Size=8 Offset=16 + unsigned __int64 StartingVpn; // Size=8 Offset=24 + unsigned __int64 EndingVpn; // Size=8 Offset=32 + +} MMADDRESS_NODE, *PMMADDRESS_NODE, *PMM_AVL_NODE; + +typedef struct _MM_AVL_TABLE // Size=64 +{ + struct _MMADDRESS_NODE BalancedRoot; // Size=40 Offset=0 + struct + { + unsigned __int64 DepthOfTree: 5; // Size=8 Offset=40 BitOffset=0 BitCount=5 + unsigned __int64 Unused: 3; // Size=8 Offset=40 BitOffset=5 BitCount=3 + unsigned __int64 NumberGenericTableElements: 56; // Size=8 Offset=40 BitOffset=8 BitCount=56 + }; + void * NodeHint; // Size=8 Offset=48 + void * NodeFreeHint; // Size=8 Offset=56 + +} MM_AVL_TABLE, *PMM_AVL_TABLE; + +typedef struct _MMVAD_SHORT // Size=64 +{ + union ___unnamed710 u1; // Size=8 Offset=0 + struct _MMVAD * LeftChild; // Size=8 Offset=8 + struct _MMVAD * RightChild; // Size=8 Offset=16 + unsigned __int64 StartingVpn; // Size=8 Offset=24 + unsigned __int64 EndingVpn; // Size=8 Offset=32 + union ___unnamed712 u; // Size=8 Offset=40 + void * PushLock; // Size=8 Offset=48 + union ___unnamed713 u5; // Size=8 Offset=56 +} MMVAD_SHORT, *PMMVAD_SHORT; + +typedef struct _MMVAD // Size=120 +{ + MMVAD_SHORT vadShort; + union ___unnamed715 u2; // Size=4 Offset=64 + unsigned long pad0; // Size=4 Offset=68 + struct _SUBSECTION * Subsection; // Size=8 Offset=72 + struct _MMPTE * FirstPrototypePte; // Size=8 Offset=80 + struct _MMPTE * LastContiguousPte; // Size=8 Offset=88 + struct _LIST_ENTRY ViewLinks; // Size=16 Offset=96 + struct _EPROCESS * VadsProcess; // Size=8 Offset=112 +} MMVAD, *PMMVAD; + +typedef struct _MMVAD_LONG // Size=144 +{ + MMVAD vad; + union ___unnamed1319 u3; // Size=16 Offset=120 + union ___unnamed1320 u4; // Size=8 Offset=136 +} MMVAD_LONG, *PMMVAD_LONG; + +typedef struct _HANDLE_TABLE +{ + ULONG_PTR TableCode; + struct _EPROCESS *QuotaProcess; + HANDLE UniqueProcessId; + void* HandleLock; + struct _LIST_ENTRY HandleTableList; + EX_PUSH_LOCK HandleContentionEvent; + struct _HANDLE_TRACE_DEBUG_INFO *DebugInfo; + int ExtraInfoPages; + ULONG Flags; + ULONG FirstFreeHandle; + struct _HANDLE_TABLE_ENTRY *LastFreeHandleEntry; + ULONG HandleCount; + ULONG NextHandleNeedingPool; + // More fields here... +} HANDLE_TABLE, *PHANDLE_TABLE; + +#pragma warning(default : 4214 4201) + +#define GET_VAD_ROOT(Table) &Table->BalancedRoot \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs8.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs8.h new file mode 100644 index 0000000..0998fd7 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs8.h @@ -0,0 +1,155 @@ +#pragma once + +// +// Native structures W8 x64 +// +#pragma warning(disable : 4214 4201) + +struct _MMVAD_FLAGS // Size=4 +{ + unsigned long VadType: 3; // Size=4 Offset=0 BitOffset=0 BitCount=3 + unsigned long Protection: 5; // Size=4 Offset=0 BitOffset=3 BitCount=5 + unsigned long PreferredNode: 6; // Size=4 Offset=0 BitOffset=8 BitCount=6 + unsigned long NoChange: 1; // Size=4 Offset=0 BitOffset=14 BitCount=1 + unsigned long PrivateMemory: 1; // Size=4 Offset=0 BitOffset=15 BitCount=1 + unsigned long Teb: 1; // Size=4 Offset=0 BitOffset=16 BitCount=1 + unsigned long PrivateFixup: 1; // Size=4 Offset=0 BitOffset=17 BitCount=1 + unsigned long Spare: 13; // Size=4 Offset=0 BitOffset=18 BitCount=13 + unsigned long DeleteInProgress: 1; // Size=4 Offset=0 BitOffset=31 BitCount=1 +}; + +struct _MMVAD_FLAGS1 // Size=4 +{ + unsigned long CommitCharge: 31; // Size=4 Offset=0 BitOffset=0 BitCount=31 + unsigned long MemCommit: 1; // Size=4 Offset=0 BitOffset=31 BitCount=1 +}; + +struct _MMVAD_FLAGS2 // Size=4 +{ + unsigned long FileOffset: 24; // Size=4 Offset=0 BitOffset=0 BitCount=24 + unsigned long Large: 1; // Size=4 Offset=0 BitOffset=24 BitCount=1 + unsigned long TrimBehind: 1; // Size=4 Offset=0 BitOffset=25 BitCount=1 + unsigned long Inherit: 1; // Size=4 Offset=0 BitOffset=26 BitCount=1 + unsigned long CopyOnWrite: 1; // Size=4 Offset=0 BitOffset=27 BitCount=1 + unsigned long NoValidationNeeded: 1; // Size=4 Offset=0 BitOffset=28 BitCount=1 + unsigned long Spare: 3; // Size=4 Offset=0 BitOffset=29 BitCount=3 +}; + +struct _MMVAD_FLAGS3 // Size=8 +{ + unsigned __int64 PreferredNode: 6; // Size=8 Offset=0 BitOffset=0 BitCount=6 + unsigned __int64 Teb: 1; // Size=8 Offset=0 BitOffset=6 BitCount=1 + unsigned __int64 Spare: 1; // Size=8 Offset=0 BitOffset=7 BitCount=1 + unsigned __int64 SequentialAccess: 1; // Size=8 Offset=0 BitOffset=8 BitCount=1 + unsigned __int64 LastSequentialTrim: 15; // Size=8 Offset=0 BitOffset=9 BitCount=15 + unsigned __int64 Spare2: 8; // Size=8 Offset=0 BitOffset=24 BitCount=8 + unsigned __int64 LargePageCreating: 1; // Size=8 Offset=0 BitOffset=32 BitCount=1 + unsigned __int64 Spare3: 31; // Size=8 Offset=0 BitOffset=33 BitCount=31 +}; + +struct _MMSECURE_FLAGS // Size=4 +{ + unsigned long ReadOnly: 1; // Size=4 Offset=0 BitOffset=0 BitCount=1 + unsigned long NoWrite: 1; // Size=4 Offset=0 BitOffset=1 BitCount=1 + unsigned long Spare: 10; // Size=4 Offset=0 BitOffset=2 BitCount=10 +}; + +struct _MI_VAD_SEQUENTIAL_INFO // Size=8 +{ + unsigned __int64 Length: 12; // Size=8 Offset=0 BitOffset=0 BitCount=12 + unsigned __int64 Vpn: 52; // Size=8 Offset=0 BitOffset=12 BitCount=52 +}; + +union ___unnamed1666 // Size=8 +{ + struct + { + __int64 Balance: 2; // Size=8 Offset=0 BitOffset=0 BitCount=2 + }; + struct _MM_AVL_NODE * Parent; // Size=8 Offset=0 +}; + +union ___unnamed1784 // Size=4 +{ + unsigned long LongFlags; // Size=4 Offset=0 + struct _MMVAD_FLAGS VadFlags; // Size=4 Offset=0 +}; +union ___unnamed1785 // Size=4 +{ + unsigned long LongFlags1; // Size=4 Offset=0 + struct _MMVAD_FLAGS1 VadFlags1; // Size=4 Offset=0 +}; + +union ___unnamed1883 // Size=4 +{ + unsigned long LongFlags2; // Size=4 Offset=0 + struct _MMVAD_FLAGS2 VadFlags2; // Size=4 Offset=0 +}; + +union ___unnamed1885 // Size=8 +{ + struct _MI_VAD_SEQUENTIAL_INFO SequentialVa; // Size=8 Offset=0 + struct _MMEXTEND_INFO * ExtendedInfo; // Size=8 Offset=0 +}; + +typedef struct _MM_AVL_NODE // Size=24 +{ + union ___unnamed1666 u1; // Size=8 Offset=0 + struct _MM_AVL_NODE * LeftChild; // Size=8 Offset=8 + struct _MM_AVL_NODE * RightChild; // Size=8 Offset=16 +} MM_AVL_NODE, *PMM_AVL_NODE, *PMMADDRESS_NODE; + +typedef struct _MM_AVL_TABLE // Size=48 +{ + struct _MM_AVL_NODE BalancedRoot; // Size=24 Offset=0 + struct + { + unsigned __int64 DepthOfTree: 5; // Size=8 Offset=24 BitOffset=0 BitCount=5 + unsigned __int64 TableType: 3; // Size=8 Offset=24 BitOffset=5 BitCount=3 + unsigned __int64 NumberGenericTableElements: 56; // Size=8 Offset=24 BitOffset=8 BitCount=56 + }; + void * NodeHint; // Size=8 Offset=32 + void * NodeFreeHint; // Size=8 Offset=40 +} MM_AVL_TABLE, *PMM_AVL_TABLE; + +typedef struct _MMVAD_SHORT // Size=64 +{ + struct _MM_AVL_NODE VadNode; // Size=24 Offset=0 + unsigned long StartingVpn; // Size=4 Offset=24 + unsigned long EndingVpn; // Size=4 Offset=28 + void * PushLock; // Size=8 Offset=32 + union ___unnamed1784 u; // Size=4 Offset=40 + union ___unnamed1785 u1; // Size=4 Offset=44 + struct _MI_VAD_EVENT_BLOCK * EventList; // Size=8 Offset=48 + long ReferenceCount; // Size=4 Offset=56 +} MMVAD_SHORT, *PMMVAD_SHORT; + +typedef struct _MMVAD // Size=128 +{ + struct _MMVAD_SHORT Core; // Size=64 Offset=0 + union ___unnamed1883 u2; // Size=4 Offset=64 + struct _SUBSECTION * Subsection; // Size=8 Offset=72 + struct _MMPTE * FirstPrototypePte; // Size=8 Offset=80 + struct _MMPTE * LastContiguousPte; // Size=8 Offset=88 + struct _LIST_ENTRY ViewLinks; // Size=16 Offset=96 + struct _EPROCESS * VadsProcess; // Size=8 Offset=112 + union ___unnamed1885 u4; // Size=8 Offset=120 +} MMVAD, *PMMVAD; + +typedef struct _HANDLE_TABLE +{ + ULONG NextHandleNeedingPool; + long ExtraInfoPages; + ULONG_PTR TableCode; + struct _EPROCESS * QuotaProcess; + LIST_ENTRY HandleTableList; + ULONG UniqueProcessId; + ULONG Flags; + EX_PUSH_LOCK HandleContentionEvent; + EX_PUSH_LOCK HandleTableLock; + // More fields here... +} HANDLE_TABLE, *PHANDLE_TABLE; + +#pragma warning(default : 4214 4201) + +#define GET_VAD_ROOT(Table) (Table->BalancedRoot.RightChild) \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs81.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs81.h new file mode 100644 index 0000000..f8a5dbf --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/NativeStructs81.h @@ -0,0 +1,153 @@ +#pragma once + +// +// Native structures W8.1 x64 +// +#pragma warning(disable : 4214 4201) +#pragma pack(push, 1) + +typedef struct _MM_AVL_NODE // Size=24 +{ + struct _MM_AVL_NODE * LeftChild; // Size=8 Offset=0 + struct _MM_AVL_NODE * RightChild; // Size=8 Offset=8 + + union ___unnamed1666 // Size=8 + { + struct + { + __int64 Balance : 2; // Size=8 Offset=0 BitOffset=0 BitCount=2 + }; + struct _MM_AVL_NODE * Parent; // Size=8 Offset=0 + } u1; +} MM_AVL_NODE, *PMM_AVL_NODE, *PMMADDRESS_NODE; + +typedef struct _RTL_AVL_TREE // Size=8 +{ + PMM_AVL_NODE BalancedRoot; // Size=8 Offset=0 + void * NodeHint; // Size=8 Offset=1504 + unsigned __int64 NumberGenericTableElements; // Size=8 Offset=1512 +} RTL_AVL_TREE, *PRTL_AVL_TREE, *PMM_AVL_TABLE; + +union _EX_PUSH_LOCK // Size=8 +{ + struct + { + unsigned __int64 Locked : 1; // Size=8 Offset=0 BitOffset=0 BitCount=1 + unsigned __int64 Waiting : 1; // Size=8 Offset=0 BitOffset=1 BitCount=1 + unsigned __int64 Waking : 1; // Size=8 Offset=0 BitOffset=2 BitCount=1 + unsigned __int64 MultipleShared : 1; // Size=8 Offset=0 BitOffset=3 BitCount=1 + unsigned __int64 Shared : 60; // Size=8 Offset=0 BitOffset=4 BitCount=60 + }; + unsigned __int64 Value; // Size=8 Offset=0 + void * Ptr; // Size=8 Offset=0 +}; + +struct _MMVAD_FLAGS // Size=4 +{ + unsigned long VadType : 3; // Size=4 Offset=0 BitOffset=0 BitCount=3 + unsigned long Protection : 5; // Size=4 Offset=0 BitOffset=3 BitCount=5 + unsigned long PreferredNode : 6; // Size=4 Offset=0 BitOffset=8 BitCount=6 + unsigned long NoChange : 1; // Size=4 Offset=0 BitOffset=14 BitCount=1 + unsigned long PrivateMemory : 1; // Size=4 Offset=0 BitOffset=15 BitCount=1 + unsigned long Teb : 1; // Size=4 Offset=0 BitOffset=16 BitCount=1 + unsigned long PrivateFixup : 1; // Size=4 Offset=0 BitOffset=17 BitCount=1 + unsigned long Spare : 13; // Size=4 Offset=0 BitOffset=18 BitCount=13 + unsigned long DeleteInProgress : 1; // Size=4 Offset=0 BitOffset=31 BitCount=1 +}; +struct _MMVAD_FLAGS1 // Size=4 +{ + unsigned long CommitCharge : 31; // Size=4 Offset=0 BitOffset=0 BitCount=31 + unsigned long MemCommit : 1; // Size=4 Offset=0 BitOffset=31 BitCount=1 +}; + +struct _MMVAD_FLAGS2 // Size=4 +{ + unsigned long FileOffset : 24; // Size=4 Offset=0 BitOffset=0 BitCount=24 + unsigned long Large : 1; // Size=4 Offset=0 BitOffset=24 BitCount=1 + unsigned long TrimBehind : 1; // Size=4 Offset=0 BitOffset=25 BitCount=1 + unsigned long Inherit : 1; // Size=4 Offset=0 BitOffset=26 BitCount=1 + unsigned long CopyOnWrite : 1; // Size=4 Offset=0 BitOffset=27 BitCount=1 + unsigned long NoValidationNeeded : 1; // Size=4 Offset=0 BitOffset=28 BitCount=1 + unsigned long Spare : 3; // Size=4 Offset=0 BitOffset=29 BitCount=3 +}; + +struct _MI_VAD_SEQUENTIAL_INFO // Size=8 +{ + unsigned __int64 Length : 12; // Size=8 Offset=0 BitOffset=0 BitCount=12 + unsigned __int64 Vpn : 52; // Size=8 Offset=0 BitOffset=12 BitCount=52 +}; + +union ___unnamed1859 // Size=4 +{ + unsigned long LongFlags; // Size=4 Offset=0 + struct _MMVAD_FLAGS VadFlags; // Size=4 Offset=0 +}; +union ___unnamed1860 // Size=4 +{ + unsigned long LongFlags1; // Size=4 Offset=0 + struct _MMVAD_FLAGS1 VadFlags1; // Size=4 Offset=0 +}; + +union ___unnamed1956 // Size=4 +{ + unsigned long LongFlags2; // Size=4 Offset=0 + struct _MMVAD_FLAGS2 VadFlags2; // Size=4 Offset=0 +}; + +union ___unnamed1957 // Size=8 +{ + struct _MI_VAD_SEQUENTIAL_INFO SequentialVa; // Size=8 Offset=0 + struct _MMEXTEND_INFO * ExtendedInfo; // Size=8 Offset=0 +}; + +typedef struct _MMVAD_SHORT // Size=64 +{ + union + { + struct _MM_AVL_NODE VadNode; // Size=24 Offset=0 + struct _MMVAD_SHORT * NextVad; // Size=8 Offset=0 + }; + unsigned long StartingVpn; // Size=4 Offset=24 + unsigned long EndingVpn; // Size=4 Offset=28 + unsigned char StartingVpnHigh; // Size=1 Offset=32 + unsigned char EndingVpnHigh; // Size=1 Offset=33 + unsigned char CommitChargeHigh; // Size=1 Offset=34 + unsigned char LargeImageBias; // Size=1 Offset=35 + long ReferenceCount; // Size=4 Offset=36 + union _EX_PUSH_LOCK PushLock; // Size=8 Offset=40 + union ___unnamed1859 u; // Size=4 Offset=48 + union ___unnamed1860 u1; // Size=4 Offset=52 + struct _MI_VAD_EVENT_BLOCK * EventList; // Size=8 Offset=56 +} MMVAD_SHORT, *PMMVAD_SHORT; + +typedef struct _MMVAD // Size=128 +{ + struct _MMVAD_SHORT Core; // Size=64 Offset=0 + union ___unnamed1956 u2; // Size=4 Offset=64 + unsigned long pad0; // Size=4 Offset=68 + struct _SUBSECTION * Subsection; // Size=8 Offset=72 + struct _MMPTE * FirstPrototypePte; // Size=8 Offset=80 + struct _MMPTE * LastContiguousPte; // Size=8 Offset=88 + struct _LIST_ENTRY ViewLinks; // Size=16 Offset=96 + struct _EPROCESS * VadsProcess; // Size=8 Offset=112 + union ___unnamed1957 u4; // Size=8 Offset=120 +} MMVAD, *PMMVAD; +#pragma pack(pop) + +typedef struct _HANDLE_TABLE +{ + ULONG NextHandleNeedingPool; + long ExtraInfoPages; + LONG_PTR TableCode; + struct _EPROCESS * QuotaProcess; + LIST_ENTRY HandleTableList; + ULONG UniqueProcessId; + ULONG Flags; + EX_PUSH_LOCK HandleContentionEvent; + EX_PUSH_LOCK HandleTableLock; + // More fields here... +} HANDLE_TABLE, *PHANDLE_TABLE; + +#pragma warning(default : 4214 4201) + +#define GET_VAD_ROOT(Table) Table->BalancedRoot \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/PEStructs.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/PEStructs.h new file mode 100644 index 0000000..f17c7e6 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/PEStructs.h @@ -0,0 +1,551 @@ +#pragma once +#include "NativeEnums.h" +#include + + +#define IMAGE_DOS_SIGNATURE 0x5A4D // MZ +#define IMAGE_NT_SIGNATURE 0x00004550 // PE00 + +#define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b +#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b + +#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 + +#define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory +#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory +#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Resource Directory +#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 // Exception Directory +#define IMAGE_DIRECTORY_ENTRY_SECURITY 4 // Security Directory +#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 // Base Relocation Table +#define IMAGE_DIRECTORY_ENTRY_DEBUG 6 // Debug Directory +// IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // (X86 usage) +#define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 7 // Architecture Specific Data +#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 // RVA of GP +#define IMAGE_DIRECTORY_ENTRY_TLS 9 // TLS Directory +#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 // Load Configuration Directory +#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 // Bound Import Directory in headers +#define IMAGE_DIRECTORY_ENTRY_IAT 12 // Import Address Table +#define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 // Delay Load Import Descriptors +#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 // COM Runtime descriptor + +#define IMAGE_REL_BASED_ABSOLUTE 0 +#define IMAGE_REL_BASED_HIGH 1 +#define IMAGE_REL_BASED_LOW 2 +#define IMAGE_REL_BASED_HIGHLOW 3 +#define IMAGE_REL_BASED_HIGHADJ 4 +#define IMAGE_REL_BASED_MIPS_JMPADDR 5 +#define IMAGE_REL_BASED_SECTION 6 +#define IMAGE_REL_BASED_REL32 7 +#define IMAGE_REL_BASED_MIPS_JMPADDR16 9 +#define IMAGE_REL_BASED_IA64_IMM64 9 +#define IMAGE_REL_BASED_DIR64 10 + +#define IMAGE_SIZEOF_BASE_RELOCATION 8 + + +#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 // Relocation info stripped from file. +#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 // File is executable (i.e. no unresolved external references). +#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 // Line nunbers stripped from file. +#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 // Local symbols stripped from file. +#define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010 // Aggressively trim working set +#define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020 // App can handle >2gb addresses +#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 // Bytes of machine word are reversed. +#define IMAGE_FILE_32BIT_MACHINE 0x0100 // 32 bit word machine. +#define IMAGE_FILE_DEBUG_STRIPPED 0x0200 // Debugging info stripped from file in .DBG file +#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 // If Image is on removable media, copy and run from the swap file. +#define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800 // If Image is on Net, copy and run from the swap file. +#define IMAGE_FILE_SYSTEM 0x1000 // System File. +#define IMAGE_FILE_DLL 0x2000 // File is a DLL. +#define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 // File should only be run on a UP machine +#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 // Bytes of machine word are reversed. + +#define IMAGE_FILE_MACHINE_UNKNOWN 0 +#define IMAGE_FILE_MACHINE_I386 0x014c // Intel 386. +#define IMAGE_FILE_MACHINE_R3000 0x0162 // MIPS little-endian, 0x160 big-endian +#define IMAGE_FILE_MACHINE_R4000 0x0166 // MIPS little-endian +#define IMAGE_FILE_MACHINE_R10000 0x0168 // MIPS little-endian +#define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169 // MIPS little-endian WCE v2 +#define IMAGE_FILE_MACHINE_ALPHA 0x0184 // Alpha_AXP +#define IMAGE_FILE_MACHINE_SH3 0x01a2 // SH3 little-endian +#define IMAGE_FILE_MACHINE_SH3DSP 0x01a3 +#define IMAGE_FILE_MACHINE_SH3E 0x01a4 // SH3E little-endian +#define IMAGE_FILE_MACHINE_SH4 0x01a6 // SH4 little-endian +#define IMAGE_FILE_MACHINE_SH5 0x01a8 // SH5 +#define IMAGE_FILE_MACHINE_ARM 0x01c0 // ARM Little-Endian +#define IMAGE_FILE_MACHINE_THUMB 0x01c2 // ARM Thumb/Thumb-2 Little-Endian +#define IMAGE_FILE_MACHINE_ARMNT 0x01c4 // ARM Thumb-2 Little-Endian +#define IMAGE_FILE_MACHINE_AM33 0x01d3 +#define IMAGE_FILE_MACHINE_POWERPC 0x01F0 // IBM PowerPC Little-Endian +#define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1 +#define IMAGE_FILE_MACHINE_IA64 0x0200 // Intel 64 +#define IMAGE_FILE_MACHINE_MIPS16 0x0266 // MIPS +#define IMAGE_FILE_MACHINE_ALPHA64 0x0284 // ALPHA64 +#define IMAGE_FILE_MACHINE_MIPSFPU 0x0366 // MIPS +#define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466 // MIPS +#define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64 +#define IMAGE_FILE_MACHINE_TRICORE 0x0520 // Infineon +#define IMAGE_FILE_MACHINE_CEF 0x0CEF +#define IMAGE_FILE_MACHINE_EBC 0x0EBC // EFI Byte Code +#define IMAGE_FILE_MACHINE_AMD64 0x8664 // AMD64 (K8) +#define IMAGE_FILE_MACHINE_M32R 0x9041 // M32R little-endian +#define IMAGE_FILE_MACHINE_CEE 0xC0EE + +#define IMAGE_ORDINAL_FLAG64 0x8000000000000000 +#define IMAGE_ORDINAL_FLAG32 0x80000000 +#define IMAGE_ORDINAL64(Ordinal) (Ordinal & 0xffff) +#define IMAGE_ORDINAL32(Ordinal) (Ordinal & 0xffff) +#define IMAGE_SNAP_BY_ORDINAL64(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG64) != 0) +#define IMAGE_SNAP_BY_ORDINAL32(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG32) != 0) + +// +// Section characteristics. +// +// IMAGE_SCN_TYPE_REG 0x00000000 // Reserved. +// IMAGE_SCN_TYPE_DSECT 0x00000001 // Reserved. +// IMAGE_SCN_TYPE_NOLOAD 0x00000002 // Reserved. +// IMAGE_SCN_TYPE_GROUP 0x00000004 // Reserved. +#define IMAGE_SCN_TYPE_NO_PAD 0x00000008 // Reserved. +// IMAGE_SCN_TYPE_COPY 0x00000010 // Reserved. + +#define IMAGE_SCN_CNT_CODE 0x00000020 // Section contains code. +#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 // Section contains initialized data. +#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 // Section contains uninitialized data. + +#define IMAGE_SCN_LNK_OTHER 0x00000100 // Reserved. +#define IMAGE_SCN_LNK_INFO 0x00000200 // Section contains comments or some other type of information. +// IMAGE_SCN_TYPE_OVER 0x00000400 // Reserved. +#define IMAGE_SCN_LNK_REMOVE 0x00000800 // Section contents will not become part of image. +#define IMAGE_SCN_LNK_COMDAT 0x00001000 // Section contents comdat. +// 0x00002000 // Reserved. +// IMAGE_SCN_MEM_PROTECTED - Obsolete 0x00004000 +#define IMAGE_SCN_NO_DEFER_SPEC_EXC 0x00004000 // Reset speculative exceptions handling bits in the TLB entries for this section. +#define IMAGE_SCN_GPREL 0x00008000 // Section content can be accessed relative to GP +#define IMAGE_SCN_MEM_FARDATA 0x00008000 +// IMAGE_SCN_MEM_SYSHEAP - Obsolete 0x00010000 +#define IMAGE_SCN_MEM_PURGEABLE 0x00020000 +#define IMAGE_SCN_MEM_16BIT 0x00020000 +#define IMAGE_SCN_MEM_LOCKED 0x00040000 +#define IMAGE_SCN_MEM_PRELOAD 0x00080000 + +#define IMAGE_SCN_ALIGN_1BYTES 0x00100000 // +#define IMAGE_SCN_ALIGN_2BYTES 0x00200000 // +#define IMAGE_SCN_ALIGN_4BYTES 0x00300000 // +#define IMAGE_SCN_ALIGN_8BYTES 0x00400000 // +#define IMAGE_SCN_ALIGN_16BYTES 0x00500000 // Default alignment if no others are specified. +#define IMAGE_SCN_ALIGN_32BYTES 0x00600000 // +#define IMAGE_SCN_ALIGN_64BYTES 0x00700000 // +#define IMAGE_SCN_ALIGN_128BYTES 0x00800000 // +#define IMAGE_SCN_ALIGN_256BYTES 0x00900000 // +#define IMAGE_SCN_ALIGN_512BYTES 0x00A00000 // +#define IMAGE_SCN_ALIGN_1024BYTES 0x00B00000 // +#define IMAGE_SCN_ALIGN_2048BYTES 0x00C00000 // +#define IMAGE_SCN_ALIGN_4096BYTES 0x00D00000 // +#define IMAGE_SCN_ALIGN_8192BYTES 0x00E00000 // +// Unused 0x00F00000 +#define IMAGE_SCN_ALIGN_MASK 0x00F00000 + +#define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000 // Section contains extended relocations. +#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 // Section can be discarded. +#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 // Section is not cachable. +#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 // Section is not pageable. +#define IMAGE_SCN_MEM_SHARED 0x10000000 // Section is shareable. +#define IMAGE_SCN_MEM_EXECUTE 0x20000000 // Section is executable. +#define IMAGE_SCN_MEM_READ 0x40000000 // Section is readable. +#define IMAGE_SCN_MEM_WRITE 0x80000000 // Section is writeable. + +typedef struct _IMAGE_DOS_HEADER +{ + USHORT e_magic; + USHORT e_cblp; + USHORT e_cp; + USHORT e_crlc; + USHORT e_cparhdr; + USHORT e_minalloc; + USHORT e_maxalloc; + USHORT e_ss; + USHORT e_sp; + USHORT e_csum; + USHORT e_ip; + USHORT e_cs; + USHORT e_lfarlc; + USHORT e_ovno; + USHORT e_res[4]; + USHORT e_oemid; + USHORT e_oeminfo; + USHORT e_res2[10]; + LONG e_lfanew; +} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER; + +typedef struct _IMAGE_SECTION_HEADER +{ + UCHAR Name[8]; + union + { + ULONG PhysicalAddress; + ULONG VirtualSize; + } Misc; + ULONG VirtualAddress; + ULONG SizeOfRawData; + ULONG PointerToRawData; + ULONG PointerToRelocations; + ULONG PointerToLinenumbers; + USHORT NumberOfRelocations; + USHORT NumberOfLinenumbers; + ULONG Characteristics; +} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; + +typedef struct _IMAGE_FILE_HEADER // Size=20 +{ + USHORT Machine; + USHORT NumberOfSections; + ULONG TimeDateStamp; + ULONG PointerToSymbolTable; + ULONG NumberOfSymbols; + USHORT SizeOfOptionalHeader; + USHORT Characteristics; +} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; + +typedef struct _IMAGE_DATA_DIRECTORY +{ + ULONG VirtualAddress; + ULONG Size; +} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; + +typedef struct _IMAGE_OPTIONAL_HEADER64 +{ + USHORT Magic; + UCHAR MajorLinkerVersion; + UCHAR MinorLinkerVersion; + ULONG SizeOfCode; + ULONG SizeOfInitializedData; + ULONG SizeOfUninitializedData; + ULONG AddressOfEntryPoint; + ULONG BaseOfCode; + ULONGLONG ImageBase; + ULONG SectionAlignment; + ULONG FileAlignment; + USHORT MajorOperatingSystemVersion; + USHORT MinorOperatingSystemVersion; + USHORT MajorImageVersion; + USHORT MinorImageVersion; + USHORT MajorSubsystemVersion; + USHORT MinorSubsystemVersion; + ULONG Win32VersionValue; + ULONG SizeOfImage; + ULONG SizeOfHeaders; + ULONG CheckSum; + USHORT Subsystem; + USHORT DllCharacteristics; + ULONGLONG SizeOfStackReserve; + ULONGLONG SizeOfStackCommit; + ULONGLONG SizeOfHeapReserve; + ULONGLONG SizeOfHeapCommit; + ULONG LoaderFlags; + ULONG NumberOfRvaAndSizes; + struct _IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; +} IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64; + +typedef struct _IMAGE_OPTIONAL_HEADER32 +{ + // + // Standard fields. + // + + USHORT Magic; + UCHAR MajorLinkerVersion; + UCHAR MinorLinkerVersion; + ULONG SizeOfCode; + ULONG SizeOfInitializedData; + ULONG SizeOfUninitializedData; + ULONG AddressOfEntryPoint; + ULONG BaseOfCode; + ULONG BaseOfData; + + // + // NT additional fields. + // + + ULONG ImageBase; + ULONG SectionAlignment; + ULONG FileAlignment; + USHORT MajorOperatingSystemVersion; + USHORT MinorOperatingSystemVersion; + USHORT MajorImageVersion; + USHORT MinorImageVersion; + USHORT MajorSubsystemVersion; + USHORT MinorSubsystemVersion; + ULONG Win32VersionValue; + ULONG SizeOfImage; + ULONG SizeOfHeaders; + ULONG CheckSum; + USHORT Subsystem; + USHORT DllCharacteristics; + ULONG SizeOfStackReserve; + ULONG SizeOfStackCommit; + ULONG SizeOfHeapReserve; + ULONG SizeOfHeapCommit; + ULONG LoaderFlags; + ULONG NumberOfRvaAndSizes; + IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; +} IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32; + +typedef struct _IMAGE_NT_HEADERS64 +{ + ULONG Signature; + struct _IMAGE_FILE_HEADER FileHeader; + struct _IMAGE_OPTIONAL_HEADER64 OptionalHeader; +} IMAGE_NT_HEADERS64, *PIMAGE_NT_HEADERS64; + +typedef struct _IMAGE_NT_HEADERS +{ + ULONG Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER32 OptionalHeader; +} IMAGE_NT_HEADERS; + +typedef struct _IMAGE_EXPORT_DIRECTORY { + ULONG Characteristics; + ULONG TimeDateStamp; + USHORT MajorVersion; + USHORT MinorVersion; + ULONG Name; + ULONG Base; + ULONG NumberOfFunctions; + ULONG NumberOfNames; + ULONG AddressOfFunctions; // RVA from base of image + ULONG AddressOfNames; // RVA from base of image + ULONG AddressOfNameOrdinals; // RVA from base of image +} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY; + +typedef struct _IMAGE_BASE_RELOCATION { + ULONG VirtualAddress; + ULONG SizeOfBlock; + // USHORT TypeOffset[1]; +} IMAGE_BASE_RELOCATION; +typedef IMAGE_BASE_RELOCATION UNALIGNED * PIMAGE_BASE_RELOCATION; + +typedef struct _IMAGE_IMPORT_BY_NAME { + USHORT Hint; + CHAR Name[1]; +} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME; + + +// warning C4201: nonstandard extension used : nameless struct/union +#pragma warning (disable : 4201) + +typedef struct _IMAGE_IMPORT_DESCRIPTOR +{ + union { + ULONG Characteristics; // 0 for terminating null import descriptor + ULONG OriginalFirstThunk; // RVA to original unbound IAT (PIMAGE_THUNK_DATA) + }; + ULONG TimeDateStamp; // 0 if not bound, + // -1 if bound, and real date\time stamp + // in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND) + // O.W. date/time stamp of DLL bound to (Old BIND) + + ULONG ForwarderChain; // -1 if no forwarders + ULONG Name; + ULONG FirstThunk; // RVA to IAT (if bound this IAT has actual addresses) +} IMAGE_IMPORT_DESCRIPTOR; +typedef IMAGE_IMPORT_DESCRIPTOR UNALIGNED *PIMAGE_IMPORT_DESCRIPTOR; + + +typedef struct _IMAGE_THUNK_DATA64 +{ + union + { + ULONGLONG ForwarderString; // PBYTE + ULONGLONG Function; // PULONG + ULONGLONG Ordinal; + ULONGLONG AddressOfData; // PIMAGE_IMPORT_BY_NAME + } u1; +} IMAGE_THUNK_DATA64; +typedef IMAGE_THUNK_DATA64 * PIMAGE_THUNK_DATA64; + +typedef struct _IMAGE_THUNK_DATA32 +{ + union + { + ULONG ForwarderString; // PBYTE + ULONG Function; // PULONG + ULONG Ordinal; + ULONG AddressOfData; // PIMAGE_IMPORT_BY_NAME + } u1; +} IMAGE_THUNK_DATA32; +typedef IMAGE_THUNK_DATA32 * PIMAGE_THUNK_DATA32; + +typedef struct _IMAGE_RESOURCE_DIRECTORY { + ULONG Characteristics; + ULONG TimeDateStamp; + USHORT MajorVersion; + USHORT MinorVersion; + USHORT NumberOfNamedEntries; + USHORT NumberOfIdEntries; + // IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[]; +} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY; + +typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { + union { + struct { + INT NameOffset : 31; + INT NameIsString : 1; + } DUMMYSTRUCTNAME; + ULONG Name; + USHORT Id; + } DUMMYUNIONNAME; + union { + ULONG OffsetToData; + struct { + INT OffsetToDirectory : 31; + INT DataIsDirectory : 1; + } DUMMYSTRUCTNAME2; + } DUMMYUNIONNAME2; +} IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY; + +typedef struct _IMAGE_RESOURCE_DATA_ENTRY { + ULONG OffsetToData; + ULONG Size; + ULONG CodePage; + ULONG Reserved; +} IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY; + +typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY { + ULONG BeginAddress; + ULONG EndAddress; + union { + ULONG UnwindInfoAddress; + ULONG UnwindData; + } DUMMYUNIONNAME; +} _IMAGE_RUNTIME_FUNCTION_ENTRY, *_PIMAGE_RUNTIME_FUNCTION_ENTRY; + +typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY32 { + ULONG Size; + ULONG TimeDateStamp; + USHORT MajorVersion; + USHORT MinorVersion; + ULONG GlobalFlagsClear; + ULONG GlobalFlagsSet; + ULONG CriticalSectionDefaultTimeout; + ULONG DeCommitFreeBlockThreshold; + ULONG DeCommitTotalFreeThreshold; + ULONG LockPrefixTable; // VA + ULONG MaximumAllocationSize; + ULONG VirtualMemoryThreshold; + ULONG ProcessHeapFlags; + ULONG ProcessAffinityMask; + USHORT CSDVersion; + USHORT Reserved1; + ULONG EditList; // VA + ULONG SecurityCookie; // VA + ULONG SEHandlerTable; // VA + ULONG SEHandlerCount; + ULONG GuardCFCheckFunctionPointer; // VA + ULONG Reserved2; + ULONG GuardCFFunctionTable; // VA + ULONG GuardCFFunctionCount; + ULONG GuardFlags; +} IMAGE_LOAD_CONFIG_DIRECTORY32, *PIMAGE_LOAD_CONFIG_DIRECTORY32; + +typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY64 { + ULONG Size; + ULONG TimeDateStamp; + USHORT MajorVersion; + USHORT MinorVersion; + ULONG GlobalFlagsClear; + ULONG GlobalFlagsSet; + ULONG CriticalSectionDefaultTimeout; + ULONGLONG DeCommitFreeBlockThreshold; + ULONGLONG DeCommitTotalFreeThreshold; + ULONGLONG LockPrefixTable; // VA + ULONGLONG MaximumAllocationSize; + ULONGLONG VirtualMemoryThreshold; + ULONGLONG ProcessAffinityMask; + ULONG ProcessHeapFlags; + USHORT CSDVersion; + USHORT Reserved1; + ULONGLONG EditList; // VA + ULONGLONG SecurityCookie; // VA + ULONGLONG SEHandlerTable; // VA + ULONGLONG SEHandlerCount; + ULONGLONG GuardCFCheckFunctionPointer; // VA + ULONGLONG Reserved2; + ULONGLONG GuardCFFunctionTable; // VA + ULONGLONG GuardCFFunctionCount; + ULONG GuardFlags; +} IMAGE_LOAD_CONFIG_DIRECTORY64, *PIMAGE_LOAD_CONFIG_DIRECTORY64; + +typedef struct _IMAGE_TLS_DIRECTORY64 { + ULONGLONG StartAddressOfRawData; + ULONGLONG EndAddressOfRawData; + ULONGLONG AddressOfIndex; // PULONG + ULONGLONG AddressOfCallBacks; // PIMAGE_TLS_CALLBACK *; + ULONG SizeOfZeroFill; + union { + ULONG Characteristics; + struct { + INT Reserved0 : 20; + INT Alignment : 4; + INT Reserved1 : 8; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + +} IMAGE_TLS_DIRECTORY64; + +typedef IMAGE_TLS_DIRECTORY64 * PIMAGE_TLS_DIRECTORY64; + +typedef struct _IMAGE_TLS_DIRECTORY32 { + ULONG StartAddressOfRawData; + ULONG EndAddressOfRawData; + ULONG AddressOfIndex; // PULONG + ULONG AddressOfCallBacks; // PIMAGE_TLS_CALLBACK * + ULONG SizeOfZeroFill; + union { + ULONG Characteristics; + struct { + INT Reserved0 : 20; + INT Alignment : 4; + INT Reserved1 : 8; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + +} IMAGE_TLS_DIRECTORY32; +typedef IMAGE_TLS_DIRECTORY32 * PIMAGE_TLS_DIRECTORY32; + + +#define ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID (0x00000001) +#define ACTCTX_FLAG_LANGID_VALID (0x00000002) +#define ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID (0x00000004) +#define ACTCTX_FLAG_RESOURCE_NAME_VALID (0x00000008) +#define ACTCTX_FLAG_SET_PROCESS_DEFAULT (0x00000010) +#define ACTCTX_FLAG_APPLICATION_NAME_VALID (0x00000020) +#define ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF (0x00000040) +#define ACTCTX_FLAG_HMODULE_VALID (0x00000080) + +typedef struct tagACTCTXW +{ + ULONG cbSize; + ULONG dwFlags; + PWCH lpSource; + USHORT wProcessorArchitecture; + USHORT wLangId; + PWCH lpAssemblyDirectory; + PWCH lpResourceName; + PWCH lpApplicationName; + PVOID hModule; +} ACTCTXW, *PACTCTXW; + +typedef struct tagACTCTXW32 +{ + ULONG cbSize; + ULONG dwFlags; + ULONG lpSource; + USHORT wProcessorArchitecture; + USHORT wLangId; + ULONG lpAssemblyDirectory; + ULONG lpResourceName; + ULONG lpApplicationName; + ULONG hModule; +} ACTCTXW32, *PACTCTXW32; + +#pragma warning (default : 4201) \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Private.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Private.h new file mode 100644 index 0000000..82b48c2 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Private.h @@ -0,0 +1,356 @@ +#pragma once + +#include "Imports.h" + +//#ifdef DBG +#define DPRINT(format, ...) DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, format, __VA_ARGS__) +//#else +//#define DPRINT(...) +//#endif + +#define BB_POOL_TAG 'enoB' + + +#define ObpAccessProtectCloseBit 0x2000000 + +// +// PTE protection values +// +#define MM_ZERO_ACCESS 0 +#define MM_READONLY 1 +#define MM_EXECUTE 2 +#define MM_EXECUTE_READ 3 +#define MM_READWRITE 4 +#define MM_WRITECOPY 5 +#define MM_EXECUTE_READWRITE 6 +#define MM_EXECUTE_WRITECOPY 7 + +#define MM_PTE_VALID_MASK 0x1 +#define MM_PTE_WRITE_MASK 0x800 +#define MM_PTE_OWNER_MASK 0x4 +#define MM_PTE_WRITE_THROUGH_MASK 0x8 +#define MM_PTE_CACHE_DISABLE_MASK 0x10 +#define MM_PTE_ACCESS_MASK 0x20 +#define MM_PTE_DIRTY_MASK 0x42 +#define MM_PTE_LARGE_PAGE_MASK 0x80 +#define MM_PTE_GLOBAL_MASK 0x100 +#define MM_PTE_COPY_ON_WRITE_MASK 0x200 +#define MM_PTE_PROTOTYPE_MASK 0x400 +#define MM_PTE_TRANSITION_MASK 0x800 + +#define VIRTUAL_ADDRESS_BITS 48 +#define VIRTUAL_ADDRESS_MASK ((((ULONG_PTR)1) << VIRTUAL_ADDRESS_BITS) - 1) + +#define THREAD_CREATE_FLAGS_CREATE_SUSPENDED 0x00000001 +#define THREAD_CREATE_FLAGS_SKIP_THREAD_ATTACH 0x00000002 +#define THREAD_CREATE_FLAGS_HIDE_FROM_DEBUGGER 0x00000004 + +#define MI_SYSTEM_RANGE_START (ULONG_PTR)(0xFFFF080000000000) // start of system space + +#define EX_ADDITIONAL_INFO_SIGNATURE (ULONG_PTR)(-2) + +#define KI_USER_SHARED_DATA 0xFFFFF78000000000UI64 + +#define SharedUserData ((KUSER_SHARED_DATA * const)KI_USER_SHARED_DATA) + +#ifndef PTE_SHIFT +#define PTE_SHIFT 3 +#endif +#ifndef PTI_SHIFT +#define PTI_SHIFT 12 +#endif +#ifndef PDI_SHIFT +#define PDI_SHIFT 21 +#endif +#ifndef PPI_SHIFT +#define PPI_SHIFT 30 +#endif +#ifndef PXI_SHIFT +#define PXI_SHIFT 39 +#endif + +#ifndef PXE_BASE +#define PXE_BASE 0xFFFFF6FB7DBED000UI64 +#endif +#ifndef PXE_SELFMAP +#define PXE_SELFMAP 0xFFFFF6FB7DBEDF68UI64 +#endif +#ifndef PPE_BASE +#define PPE_BASE 0xFFFFF6FB7DA00000UI64 +#endif +#ifndef PDE_BASE +#define PDE_BASE 0xFFFFF6FB40000000UI64 +#endif +#ifndef PTE_BASE +#define PTE_BASE 0xFFFFF68000000000UI64 +#endif + +#ifndef _WIN64 +#define KDDEBUGGER_DATA_OFFSET 0x1068 +#else +#define KDDEBUGGER_DATA_OFFSET 0x2080 +#endif + +#ifndef _WIN64 +#define DUMP_BLOCK_SIZE 0x20000 +#else +#define DUMP_BLOCK_SIZE 0x40000 +#endif + +#define PHYSICAL_ADDRESS_BITS 40 + +#define ObpDecodeGrantedAccess( Access ) \ + ((Access)& ~ObpAccessProtectCloseBit) + +#define ObpDecodeObject( Object ) (PVOID)(((LONG_PTR)Object >> 0x10) & ~(ULONG_PTR)0xF) + +#define PTE_PER_PAGE 512 +#define PDE_PER_PAGE 512 +#define PPE_PER_PAGE 512 +#define PXE_PER_PAGE 512 + +#define PPI_MASK (PPE_PER_PAGE - 1) +#define PXI_MASK (PXE_PER_PAGE - 1) + +#define MiGetPxeOffset(va) \ + ((ULONG)(((ULONG_PTR)(va) >> PXI_SHIFT) & PXI_MASK)) + +#define MiGetPxeAddress(va) \ + ((PMMPTE)PXE_BASE + MiGetPxeOffset(va)) + +#define MiGetPpeAddress(va) \ + ((PMMPTE)(((((ULONG_PTR)(va) & VIRTUAL_ADDRESS_MASK) >> PPI_SHIFT) << PTE_SHIFT) + PPE_BASE)) + +#define MiGetPdeAddress(va) \ + ((PMMPTE)(((((ULONG_PTR)(va) & VIRTUAL_ADDRESS_MASK) >> PDI_SHIFT) << PTE_SHIFT) + PDE_BASE)) + +#define MiGetPteAddress(va) \ + ((PMMPTE)(((((ULONG_PTR)(va) & VIRTUAL_ADDRESS_MASK) >> PTI_SHIFT) << PTE_SHIFT) + PTE_BASE)) + +#define VA_SHIFT (63 - 47) // address sign extend shift count + +#define MiGetVirtualAddressMappedByPte(PTE) \ + ((PVOID)((LONG_PTR)(((LONG_PTR)(PTE) - PTE_BASE) << (PAGE_SHIFT + VA_SHIFT - PTE_SHIFT)) >> VA_SHIFT)) + +#define MI_IS_PHYSICAL_ADDRESS(Va) \ + ((MiGetPxeAddress(Va)->u.Hard.Valid == 1) && \ + (MiGetPpeAddress(Va)->u.Hard.Valid == 1) && \ + ((MiGetPdeAddress(Va)->u.Long & 0x81) == 0x81) || (MiGetPteAddress(Va)->u.Hard.Valid == 1)) + +#define ExpIsValidObjectEntry(Entry) \ + ( (Entry != NULL) && (Entry->LowValue != 0) && (Entry->HighValue != EX_ADDITIONAL_INFO_SIGNATURE) ) + +// Workaround for compiler warning +#define FN_CAST(T, p) (T)(ULONG_PTR)p +#define FN_CAST_V(p) (PVOID)(ULONG_PTR)p + +// Get SSDT index from function pointer +#define SSDTIndex(pfn) *(PULONG)((ULONG_PTR)pfn + 0x15) + +typedef ULONG WIN32_PROTECTION_MASK; +typedef PULONG PWIN32_PROTECTION_MASK; + +typedef enum _WinVer +{ + WINVER_7 = 0x0610, + WINVER_7_SP1 = 0x0611, + WINVER_8 = 0x0620, + WINVER_81 = 0x0630, + WINVER_10 = 0x0A00, + WINVER_10_RS1 = 0x0A01, // Anniversary update + WINVER_10_RS2 = 0x0A02, // Creators update + WINVER_10_RS3 = 0x0A03, // Fall creators update + WINVER_10_RS4 = 0x0A04, // Spring creators update + WINVER_10_RS5 = 0x0A05, // October 2018 update + WINVER_10_19H1 = 0x0A06, // May 2019 update 19H1 + WINVER_10_19H2 = 0x0A07, // November 2019 update 19H2 + WINVER_10_20H1 = 0x0A08, // April 2020 update 20H1 +} WinVer; + +extern PLIST_ENTRY PsLoadedModuleList; +extern MMPTE ValidKernelPte; + +/// +/// OS-dependent stuff +/// +typedef struct _DYNAMIC_DATA +{ + WinVer ver; // OS version + ULONG buildNo; // OS build revision + BOOLEAN correctBuild; // OS kernel build number is correct and supported + + ULONG KExecOpt; // KPROCESS::ExecuteOptions + ULONG Protection; // EPROCESS::Protection + ULONG EProcessFlags2; // EPROCESS::Flags2 + ULONG ObjTable; // EPROCESS::ObjectTable + ULONG VadRoot; // EPROCESS::VadRoot + ULONG NtProtectIndex; // NtProtectVirtualMemory SSDT index + ULONG NtCreateThdExIndex; // NtCreateThreadEx SSDT index + ULONG NtTermThdIndex; // NtTerminateThread SSDT index + ULONG PrevMode; // KTHREAD::PreviousMode + ULONG ExitStatus; // ETHREAD::ExitStatus + ULONG MiAllocPage; // MiAllocateDriverPage offset + ULONG ExRemoveTable; // Ex(p)RemoveHandleTable offset + + ULONG_PTR DYN_PDE_BASE; // Win10 AU+ relocated PDE base VA + ULONG_PTR DYN_PTE_BASE; // Win10 AU+ relocated PTE base VA +} DYNAMIC_DATA, *PDYNAMIC_DATA; + + +typedef struct _NOPPROCINFO +{ + KDPC DpcTraps[MAXIMUM_PROCESSORS]; + LONG ActiveCores; + LONG DPCCount; + ULONG Cores; + KIRQL SavedIrql; + KPRIORITY SavedPriority; + LONG IsCodeExecuted; +}NOPPROCINFO, *PNOPPROCINFO; + +typedef NTSTATUS( NTAPI* fnNtCreateThreadEx ) + ( + OUT PHANDLE hThread, + IN ACCESS_MASK DesiredAccess, + IN PVOID ObjectAttributes, + IN HANDLE ProcessHandle, + IN PVOID lpStartAddress, + IN PVOID lpParameter, + IN ULONG Flags, + IN SIZE_T StackZeroBits, + IN SIZE_T SizeOfStackCommit, + IN SIZE_T SizeOfStackReserve, + OUT PVOID lpBytesBuffer + ); + +typedef PFN_NUMBER( NTAPI* fnMiAllocateDriverPage )(IN PMMPTE pPTE); +typedef NTSTATUS( NTAPI* fnNtTerminateThread)( IN HANDLE ThreadHandle, IN NTSTATUS ExitStatus ); +typedef NTSTATUS( NTAPI* fnExRemoveHandleTable )(IN PHANDLE_TABLE pTable); + +#if defined(_WIN8_) || defined (_WIN7_) + +typedef NTSTATUS( NTAPI* fnNtProtectVirtualMemory ) + ( + IN HANDLE ProcessHandle, + IN PVOID* BaseAddress, + IN SIZE_T* NumberOfBytesToProtect, + IN ULONG NewAccessProtection, + OUT PULONG OldAccessProtection + ); + +NTSTATUS +NTAPI +ZwProtectVirtualMemory( + IN HANDLE ProcessHandle, + IN OUT PVOID* BaseAddress, + IN OUT SIZE_T* NumberOfBytesToProtect, + IN ULONG NewAccessProtection, + OUT PULONG OldAccessProtection + ); + + +#else +NTSYSAPI +NTSTATUS +NTAPI +ZwProtectVirtualMemory( + IN HANDLE ProcessHandle, + IN OUT PVOID* BaseAddress, + IN OUT SIZE_T* NumberOfBytesToProtect, + IN ULONG NewAccessProtection, + OUT PULONG OldAccessProtection + ); + +#endif + +#ifdef _WIN81_ + +NTSYSAPI +PVOID +NTAPI +RtlAvlRemoveNode( + IN PRTL_AVL_TREE pTree, + IN PMMADDRESS_NODE pNode + ); + +#endif + +ULONG +NTAPI +KeCapturePersistentThreadState( + IN PCONTEXT Context, + IN PKTHREAD Thread, + IN ULONG BugCheckCode, + IN ULONG BugCheckParameter1, + IN ULONG BugCheckParameter2, + IN ULONG BugCheckParameter3, + IN ULONG BugCheckParameter4, + OUT PVOID VirtualAddress +); + +/// +/// Initialize debugger block g_KdBlock +/// +VOID InitializeDebuggerBlock(); + +/// +/// Lookup handle in the process handle table +/// +/// Handle table +/// Handle to search for +/// Found entry, NULL if nothing found +PHANDLE_TABLE_ENTRY ExpLookupHandleTableEntry( IN PHANDLE_TABLE HandleTable, IN EXHANDLE tHandle ); + +/// +/// Get ntoskrnl base address +/// +/// Size of module +/// Found address, NULL if not found +PVOID GetKernelBase( OUT PULONG pSize ); + +/// +/// Gets SSDT base - KiSystemServiceTable +/// +/// SSDT base, NULL if not found +PSYSTEM_SERVICE_DESCRIPTOR_TABLE GetSSDTBase(); + +/// +/// Gets the SSDT entry address by index. +/// +/// Service index +/// Found service address, NULL if not found +PVOID GetSSDTEntry( IN ULONG index ); + +/// +/// Get page hardware PTE +/// Address must be valid, otherwise bug check is imminent +/// +/// Target address +/// Found PTE +PMMPTE GetPTEForVA( IN PVOID pAddress ); + +/// +/// Initialize structure for processor start/stop +/// +/// >Processors data +VOID InitializeStopProcessors( OUT NOPPROCINFO* Info ); + +/// +/// Stall all but current active processors +/// +/// Processors data +VOID StopProcessors( IN NOPPROCINFO* Info ); + +/// +/// Resume all stopped active processors +/// +/// Processors data +VOID StartProcessors( IN NOPPROCINFO* Info ); + +/// +/// Allocate memory in one of the ntoskrnl discarded section +/// +/// Block size to allocate +/// Allocated address +/// Status code +NTSTATUS AllocateInDiscardedMemory( IN ULONG size, OUT PVOID* ppFoundBase ); diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Remap.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Remap.h new file mode 100644 index 0000000..184625c --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Remap.h @@ -0,0 +1,138 @@ +#pragma once + +#include "Private.h" +#include "VadRoutines.h" +#include "BlackBoneDef.h" + +typedef enum _ATTACHED_CONTEXT +{ + ContextNone, // Running in system context + ContextHost, // Running in the context of host process + ContextTarget, // Running in the context of target process +} ATTACHED_CONTEXT; + +/// +/// Process-specific data +/// +typedef struct _PROCESS_CONTEXT +{ + HANDLE pid; // Process ID + PVOID sharedPage; // Address of kernel shared page +} PROCESS_CONTEXT, *PPROCESS_CONTEXT; + + +/// +/// Target - host correspondence +/// +typedef struct _PROCESS_MAP_ENTRY +{ + PROCESS_CONTEXT host; // Hosting process context + PROCESS_CONTEXT target; // Target process context + + PVOID pSharedPage; // Address of kernel-shared page allocated from non-paged pool + PMDL pMDLShared; // MDL of kernel-shared page + + HANDLE targetPipe; // Hook pipe handle in target process + + LIST_ENTRY pageList; // List of REMAP_ENTRY structures +} PROCESS_MAP_ENTRY, *PPROCESS_MAP_ENTRY; + + +/// +/// Mapped memory region info +/// +typedef struct _MAP_ENTRY +{ + LIST_ENTRY link; // Linked list link + MEMORY_BASIC_INFORMATION mem; // Original memory info + + ULONG_PTR newPtr; // Mapped memory address in host process + PMDL pMdl; // Region MDL entry + BOOLEAN locked; // MDL is locked + BOOLEAN shared; // Regions has shared pages + BOOLEAN readonly; // Region must be mapped as readonly +} MAP_ENTRY, *PMAP_ENTRY; + +extern DYNAMIC_DATA dynData; +extern RTL_AVL_TABLE g_ProcessPageTables; +extern KGUARDED_MUTEX g_globalLock; + +/// +/// Map entire address space of target process into current +/// +/// Mapping params +/// Mapped context +/// Status code +NTSTATUS BBMapMemory( IN PMAP_MEMORY pRemap, OUT PPROCESS_MAP_ENTRY* ppEntry ); + +/// +/// Map specific memory region +/// +/// Region data +/// Mapping results +/// Status code +NTSTATUS BBMapMemoryRegion( IN PMAP_MEMORY_REGION pRegion, OUT PMAP_MEMORY_REGION_RESULT pResult ); + +/// +/// Unmap any mapped memory from host and target processes +/// +/// Request params +/// Status code +NTSTATUS BBUnmapMemory( IN PUNMAP_MEMORY pUnmap ); + +/// +/// Unmap specific memory region +/// +/// Region info +/// Status ode +NTSTATUS BBUnmapMemoryRegion( IN PUNMAP_MEMORY_REGION pRegion ); + +/// +/// Calculate size required to store mapping info +/// +/// Mapped regions list +/// Resulting size +/// Status code +NTSTATUS BBGetRequiredRemapOutputSize( IN PLIST_ENTRY pList, OUT PULONG_PTR pSize ); + +/// +/// Enumerate committed, accessible, non-guarded memory regions +/// +/// Region list +/// Region start +/// Region end +/// If set to FALSE, section objects will be excluded from list +/// Status code +NTSTATUS BBBuildProcessRegionListForRange( IN PLIST_ENTRY pList, IN ULONG_PTR start, IN ULONG_PTR end, IN BOOLEAN mapSections ); + +/// +/// Search process entry in list by PID +/// +/// PID. +/// If set to TRUE, pid is treated as host PID +/// Found entry, NULL in not found +PPROCESS_MAP_ENTRY BBLookupProcessEntry( IN HANDLE pid, IN BOOLEAN asHost ); + +/// +/// Unmap all regions, delete MDLs, close handles, remove entry from table +/// +/// Process entry +VOID BBCleanupProcessEntry( IN PPROCESS_MAP_ENTRY pProcessEntry ); + +/// +/// Clear global process map table +/// +VOID BBCleanupProcessTable(); + +/// +/// Unmap any mapped pages from host process +/// +/// Process entry +VOID BBCleanupHostProcess( IN PPROCESS_MAP_ENTRY pProcessEntry ); + +// +// AVL table routines +// +RTL_GENERIC_COMPARE_RESULTS AvlCompare( IN RTL_AVL_TABLE *Table, IN PVOID FirstStruct, IN PVOID SecondStruct ); +PVOID AvlAllocate( IN RTL_AVL_TABLE *Table, IN CLONG ByteSize ); +VOID AvlFree( IN RTL_AVL_TABLE *Table, IN PVOID Buffer ); \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Routines.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Routines.h new file mode 100644 index 0000000..fb85aa9 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Routines.h @@ -0,0 +1,155 @@ +#pragma once + +#include "BlackBoneDef.h" +#include "Private.h" +#include "VadRoutines.h" + +/// +/// Allocated physical region entry +/// +typedef struct _MEM_PHYS_ENTRY +{ + LIST_ENTRY link; + ULONG_PTR size; // Region size + PVOID pMapped; // Mapped address + PMDL pMDL; // Related MDL + PVOID ptr; // Actual ptr in NonPagedPool +} MEM_PHYS_ENTRY, *PMEM_PHYS_ENTRY; + +/// +/// Per-process list of physical regions +/// +typedef struct _MEM_PHYS_PROCESS_ENTRY +{ + LIST_ENTRY link; + HANDLE pid; // Process ID + LIST_ENTRY pVadList; // List of mapped regions +} MEM_PHYS_PROCESS_ENTRY, *PMEM_PHYS_PROCESS_ENTRY; + +extern LIST_ENTRY g_PhysProcesses; + + +/// +/// Disable process DEP +/// Has no effect on native x64 process +/// +/// Request params +/// Status code +NTSTATUS BBDisableDEP( IN PDISABLE_DEP pData ); + +/// +/// Enable/disable process protection flag +/// +/// Request params +/// Status code +NTSTATUS BBSetProtection( IN PSET_PROC_PROTECTION pProtection ); + +/// +/// Change handle granted access +/// +/// Request params +/// Status code +NTSTATUS BBGrantAccess( IN PHANDLE_GRANT_ACCESS pAccess ); + +/// +/// Allocate/Free process memory +/// +/// Request params. +/// Allocated region info. +/// Status code +NTSTATUS BBAllocateFreeMemory( IN PALLOCATE_FREE_MEMORY pAllocFree, OUT PALLOCATE_FREE_MEMORY_RESULT pResult ); + +/// +/// Read/write process memory +/// +/// Request params +/// Status code +NTSTATUS BBCopyMemory( IN PCOPY_MEMORY pCopy ); + +/// +/// Change process memory protection +/// +/// Request params +/// Status code +NTSTATUS BBProtectMemory( IN PPROTECT_MEMORY pProtect ); + +/// +/// Hide VAD containing target address +/// +/// Address info +/// Status code +NTSTATUS BBHideVAD( IN PHIDE_VAD pData ); + +/// +/// Enumerate committed, accessible, non-guarded memory regions +/// +/// Target process ID +/// Result +/// Status code +NTSTATUS BBEnumMemRegions( IN PENUM_REGIONS pData, OUT PENUM_REGIONS_RESULT pResult ); + +/// +/// Inject dll into process +/// +/// Target PID +/// TFull-qualified dll path +/// Status code +NTSTATUS BBInjectDll( IN PINJECT_DLL pData ); + +/// +/// Change handle granted access +/// +/// Request params +/// Status code +NTSTATUS BBUnlinkHandleTable( IN PUNLINK_HTABLE pUnlink ); + +/// +/// Hook SSDT entry +/// +/// SSDT index to hook +/// Hook function +/// Original function pointer +/// Status code +NTSTATUS BBHookSSDT( IN ULONG index, IN PVOID newAddr, OUT PVOID *ppOldAddr ); + +/// +/// Restore SSDT hook +/// +/// SSDT index to restore +/// Original function address +/// Status code +NTSTATUS BBRestoreSSDT( IN ULONG index, IN PVOID origAddr ); + +NTSTATUS BBHookInline( IN PVOID origAddr, IN PVOID newAddr ); + +/// +/// Process termination handler +/// +/// Parent PID +/// PID +/// TRUE if process was created +VOID BBProcessNotify( IN HANDLE ParentId, IN HANDLE ProcessId, IN BOOLEAN Create ); + +/// +/// Find memory allocation process entry +/// +/// Target PID +/// Found entry, NULL if not found +PMEM_PHYS_PROCESS_ENTRY BBLookupPhysProcessEntry( IN HANDLE pid ); + +/// +/// Allocate kernel memory and map into User space. Or free previously allocated memory +/// +/// Target process object +/// Request params. +/// Allocated region info. +/// Status code +NTSTATUS BBAllocateFreePhysical( IN PEPROCESS pProcess, IN PALLOCATE_FREE_MEMORY pAllocFree, OUT PALLOCATE_FREE_MEMORY_RESULT pResult ); + + +// +// Memory allocation cleanup routines +// +void BBCleanupPhysMemEntry( IN PMEM_PHYS_ENTRY pEntry, BOOLEAN attached ); +void BBCleanupProcessPhysEntry( IN PMEM_PHYS_PROCESS_ENTRY pEntry, BOOLEAN attached ); +void BBCleanupProcessPhysList(); diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Utils.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Utils.h new file mode 100644 index 0000000..838d2af --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/Utils.h @@ -0,0 +1,99 @@ +#pragma once +#include + +/// +/// Allocate new Unicode string from Paged pool +/// +/// Resulting string +/// Buffer size in bytes to alloacate +/// Status code +NTSTATUS BBSafeAllocateString( OUT PUNICODE_STRING result, IN USHORT size ); + +/// +/// Allocate and copy string +/// +/// Resulting string +/// Source string +/// Status code +NTSTATUS BBSafeInitString( OUT PUNICODE_STRING result, IN PUNICODE_STRING source ); + +/// +/// Search for substring +/// +/// Source string +/// Target string +/// Case insensitive search +/// Found position or -1 if not found +LONG BBSafeSearchString( IN PUNICODE_STRING source, IN PUNICODE_STRING target, IN BOOLEAN CaseInSensitive ); + +/// +/// Get file name from full path +/// +/// Path. +/// Resulting name +/// Status code +NTSTATUS BBStripPath( IN PUNICODE_STRING path, OUT PUNICODE_STRING name ); + +/// +/// Get directory path name from full path +/// +/// Path +/// Resulting directory path +/// Status code +NTSTATUS BBStripFilename( IN PUNICODE_STRING path, OUT PUNICODE_STRING dir ); + +/// +/// Check if file exists +/// +/// Fully qualifid path to a file +/// Status code +NTSTATUS BBFileExists( IN PUNICODE_STRING path ); + +/// +/// Search for pattern +/// +/// Pattern to search for +/// Used wildcard +/// Pattern length +/// Base address for searching +/// Address range to search in +/// Found location +/// Status code +NTSTATUS BBSearchPattern( IN PCUCHAR pattern, IN UCHAR wildcard, IN ULONG_PTR len, IN const VOID* base, IN ULONG_PTR size, OUT PVOID* ppFound ); + +/// +/// Setup image security cookie +/// +/// Image base +/// Status code +NTSTATUS BBCreateCookie( IN PVOID imageBase ); + +/// +/// Check if process is terminating +/// +/// Process +/// If TRUE - terminating +BOOLEAN BBCheckProcessTermination( PEPROCESS pProcess ); + +// +// Machine code generation routines +// +ULONG GenPrologue32( IN PUCHAR pBuf ); +ULONG GenEpilogue32( IN PUCHAR pBuf, IN INT retSize ); +ULONG GenCall32( IN PUCHAR pBuf, IN PVOID pFn, IN INT argc, ... ); +ULONG GenCall32V( IN PUCHAR pBuf, IN PVOID pFn, IN INT argc, IN va_list vl ); +ULONG GenSync32( IN PUCHAR pBuf, IN PNTSTATUS pStatus, IN PVOID pSetEvent, IN HANDLE hEvent ); + + +ULONG GenPrologue64( IN PUCHAR pBuf ); +ULONG GenEpilogue64( IN PUCHAR pBuf, IN INT retSize ); +ULONG GenCall64( IN PUCHAR pBuf, IN PVOID pFn, IN INT argc, ... ); +ULONG GenCall64V( IN PUCHAR pBuf, IN PVOID pFn, IN INT argc, IN va_list vl ); +ULONG GenSync64( IN PUCHAR pBuf, IN PNTSTATUS pStatus, IN PVOID pSetEvent, IN HANDLE hEvent ); + + +ULONG GenPrologueT( IN BOOLEAN wow64, IN PUCHAR pBuf ); +ULONG GenEpilogueT( IN BOOLEAN wow64, IN PUCHAR pBuf, IN INT retSize ); +ULONG GenCallT( IN BOOLEAN wow64, IN PUCHAR pBuf, IN PVOID pFn, IN INT argc, ... ); +ULONG GenCallTV( IN BOOLEAN wow64, IN PUCHAR pBuf, IN PVOID pFn, IN INT argc, IN va_list vl ); +ULONG GenSyncT( IN BOOLEAN wow64, IN PUCHAR pBuf, IN PNTSTATUS pStatus, IN PVOID pSetEvent, IN HANDLE hEvent ); diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/VadHelpers.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/VadHelpers.h new file mode 100644 index 0000000..866ce8d --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/VadHelpers.h @@ -0,0 +1,65 @@ +#pragma once + +#define SANITIZE_PARENT_NODE(Parent) ((PMMADDRESS_NODE)(((ULONG_PTR)(Parent)) & ~0x3)) + +// +// Various Rtl macros that reference Parent use private versions here since +// Parent is overloaded with Balance. +// + +// +// The macro function Parent takes as input a pointer to a splay link in a +// tree and returns a pointer to the splay link of the parent of the input +// node. If the input node is the root of the tree the return value is +// equal to the input value. +// +// PRTL_SPLAY_LINKS +// MiParent ( +// PRTL_SPLAY_LINKS Links +// ); +// + +#define MiParent(Links) ( \ + (PRTL_SPLAY_LINKS)(SANITIZE_PARENT_NODE((Links)->u1.Parent)) \ + ) + +// +// The macro function IsLeftChild takes as input a pointer to a splay link +// in a tree and returns TRUE if the input node is the left child of its +// parent, otherwise it returns FALSE. +// +// BOOLEAN +// MiIsLeftChild ( +// PRTL_SPLAY_LINKS Links +// ); +// + +#define MiIsLeftChild(Links) ( \ + (RtlLeftChild(MiParent(Links)) == (PRTL_SPLAY_LINKS)(Links)) \ + ) + +// +// The macro function IsRightChild takes as input a pointer to a splay link +// in a tree and returns TRUE if the input node is the right child of its +// parent, otherwise it returns FALSE. +// +// BOOLEAN +// MiIsRightChild ( +// PRTL_SPLAY_LINKS Links +// ); +// + +#define MiIsRightChild(Links) ( \ + (RtlRightChild(MiParent(Links)) == (PRTL_SPLAY_LINKS)(Links)) \ + ) + +#define MI_MAKE_PARENT(ParentNode, ExistingBalance) \ + (PMMADDRESS_NODE)((ULONG_PTR)(ParentNode) | (((ULONG_PTR)ExistingBalance) & 0x3)) + +#define COUNT_BALANCE_MAX(a) + + +TABLE_SEARCH_RESULT MiFindNodeOrParent( IN PMM_AVL_TABLE Table, IN ULONG_PTR StartingVpn, OUT PMMADDRESS_NODE *NodeOrParent ); +VOID MiPromoteNode( IN PMMADDRESS_NODE C ); +ULONG MiRebalanceNode( IN PMMADDRESS_NODE S ); +VOID MiRemoveNode( IN PMMADDRESS_NODE NodeToDelete, IN PMM_AVL_TABLE Table ); \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/VadRoutines.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/VadRoutines.h new file mode 100644 index 0000000..b237a1f --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/VadRoutines.h @@ -0,0 +1,46 @@ +#pragma once + +#include "Private.h" + +/// +/// Change VAD protection flags +/// +/// Target process object +/// target address +/// New protection flags +/// Status code +NTSTATUS BBProtectVAD( IN PEPROCESS pProcess, IN ULONG_PTR address, IN ULONG prot ); + +/// +/// Hide memory from NtQueryVirtualMemory +/// +/// Target process object +/// Target address +/// Status code +NTSTATUS BBUnlinkVAD( IN PEPROCESS pProcess, IN ULONG_PTR address ); + +/// +/// Get region VAD type +/// +/// Target process object +/// Target address +/// Resulting VAD type +/// Status code +NTSTATUS BBGetVadType( IN PEPROCESS pProcess, IN ULONG_PTR address, OUT PMI_VAD_TYPE pType ); + +/// +/// Find VAD that describes target address +/// +/// Target process object +/// Address to find +/// Found VAD. NULL if not found +/// Status code +NTSTATUS BBFindVAD( IN PEPROCESS pProcess, IN ULONG_PTR address, OUT PMMVAD_SHORT* pResult ); + +/// +/// Convert protection flags +/// +/// Protection flags. +/// If TRUE - convert to PTE protection, if FALSE - convert to Win32 protection +/// Resulting protection flags +ULONG BBConvertProtection( IN ULONG prot, IN BOOLEAN fromPTE ); \ No newline at end of file diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/apiset.h b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/apiset.h new file mode 100644 index 0000000..4bc19f1 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Include/BlackBoneDrv/apiset.h @@ -0,0 +1,247 @@ +/*++ + +Copyright (c) 2008 Microsoft Corporation + +Module Name: + + apiset.h + +Abstract: + + This module contains definitions related to the management of API namespaces. + +Author: + + Arun Kishan (arunki) 14-Sep-2008 + +--*/ + +#ifndef _API_SET2_H_ +#define _API_SET2_H_ + +// +// API schema DLL information. +// + +#define API_SET_PREFIX_NAME_A "API-" +#define API_SET_PREFIX_NAME_A_SIZE (sizeof(API_SET_PREFIX_NAME_A) - sizeof(CHAR)) +#define API_SET_PREFIX_NAME_U TEXT(API_SET_PREFIX_NAME_A) +#define API_SET_PREFIX_NAME_U_SIZE (sizeof(API_SET_PREFIX_NAME_U) - sizeof(WCHAR)) +#define API_SET_PREFIX_NAME_LENGTH (RTL_NUMBER_OF(API_SET_PREFIX_NAME_U) - 1) + +#define API_SET_EXTENSION_NAME_A "EXT-" +#define API_SET_EXTENSION_NAME_A_SIZE (sizeof(API_SET_EXTENSION_NAME_A) - sizeof(CHAR)) +#define API_SET_EXTENSION_NAME_U TEXT(API_SET_EXTENSION_NAME_A) +#define API_SET_EXTENSION_NAME_U_SIZE (sizeof(API_SET_EXTENSION_NAME_U) - sizeof(WCHAR)) +#define API_SET_EXTENSION_NAME_LENGTH (RTL_NUMBER_OF(API_SET_EXTENSION_NAME_U) - 1) + +#define API_SET_SCHEMA_NAME ApiSetSchema +#define API_SET_SECTION_NAME ".apiset" +#define API_SET_SCHEMA_SUFFIX L".sys" + +// +// All previous schema versions are listed here. Some are supported in offline +// mode because they shipped externally. Some are not supported in offline mode +// since they were only ever released internally. +// + +#define API_SET_SCHEMA_VERSION_V2 0x00000002UL +#define API_SET_SCHEMA_VERSION_V3 0x00000003UL // No offline support. +#define API_SET_SCHEMA_VERSION_V4 0x00000004UL +#define API_SET_SCHEMA_VERSION API_SET_SCHEMA_VERSION_V4 + +#define API_SET_HELPER_NAME ApiSetHelp + +#define API_SET_LOAD_SCHEMA_ORDINAL 1 +#define API_SET_LOOKUP_ORDINAL 2 +#define API_SET_RELEASE_SCHEMA_ORDINAL 3 + +#define API_SET_STRING_X(s) #s +#define API_SET_STRING(s) API_SET_STRING_X(s) +#define API_SET_STRING_U_Y(s) L ## s +#define API_SET_STRING_U_X(s) API_SET_STRING_U_Y(s) +#define API_SET_STRING_U(s) API_SET_STRING_U_X(API_SET_STRING(s)) + +// +// API set interface definitions. +// + +#define API_SET_OVERRIDE(X) X##Implementation +#define API_SET_LEGACY_OVERRIDE_DEF(X) X = API_SET_OVERRIDE(X) +#define API_SET_OVERRIDE_DEF(X) API_SET_LEGACY_OVERRIDE_DEF(X) PRIVATE + +#ifdef _API_SET_HOST + +#undef API_SET_LIBRARY + +#define API_SET_LIBRARY(X) + +#undef API_SET +#undef API_SET_PRIVATE +#undef API_SET_BY_ORDINAL +#undef API_SET_BY_ORDINAL_PRIVATE + +#define API_SET(X) X PRIVATE +#define API_SET_PRIVATE(X) X PRIVATE +#define API_SET_BY_ORDINAL(X,O,PO) X @##O NONAME PRIVATE +#define API_SET_BY_ORDINAL_PRIVATE(X,O,PO) X @##O NONAME PRIVATE + +#else + +#ifndef _API_SET_LEGACY_TARGET + +#define API_SET(X) X +#define API_SET_PRIVATE(X) X PRIVATE +#define API_SET_BY_ORDINAL(X,O,PO) X @##O NONAME +#define API_SET_BY_ORDINAL_PRIVATE(X,O,PO) X @##O NONAME PRIVATE + +#else + +#define API_SET(X) X = _API_SET_LEGACY_TARGET##.##X +#define API_SET_PRIVATE(X) X = _API_SET_LEGACY_TARGET##.##X PRIVATE +#define API_SET_BY_ORDINAL(X,O,PO) X = _API_SET_LEGACY_TARGET##.##PO @##O NONAME +#define API_SET_BY_ORDINAL_PRIVATE(X,O,PO) X = _API_SET_LEGACY_TARGET##.##PO @##O NONAME PRIVATE + +#endif // _API_SET_LEGACY_TARGET + +#define API_SET_LIBRARY(X) LIBRARY X + +#endif // _API_SET_HOST + +#ifdef _NTDEF_ + +// +// Data structures. +// + +typedef struct _API_SET_VALUE_ENTRY { + ULONG Flags; + ULONG NameOffset; + _Field_range_(0, UNICODE_STRING_MAX_BYTES) ULONG NameLength; + ULONG ValueOffset; + _Field_range_(0, UNICODE_STRING_MAX_BYTES) ULONG ValueLength; +} API_SET_VALUE_ENTRY, *PAPI_SET_VALUE_ENTRY; + +_Struct_size_bytes_(FIELD_OFFSET(API_SET_VALUE_ARRAY, Array) + (sizeof(API_SET_VALUE_ENTRY) * Count)) +typedef struct _API_SET_VALUE_ARRAY { + ULONG Flags; + ULONG Count; + _Field_size_full_(Count) API_SET_VALUE_ENTRY Array[ANYSIZE_ARRAY]; +} API_SET_VALUE_ARRAY,*PAPI_SET_VALUE_ARRAY; + +typedef struct _API_SET_NAMESPACE_ENTRY { + ULONG Flags; + ULONG NameOffset; + _Field_range_(0, UNICODE_STRING_MAX_BYTES) ULONG NameLength; + ULONG AliasOffset; + _Field_range_(0, UNICODE_STRING_MAX_BYTES) ULONG AliasLength; + ULONG DataOffset; // API_SET_VALUE_ARRAY +} API_SET_NAMESPACE_ENTRY, *PAPI_SET_NAMESPACE_ENTRY; + +_Struct_size_bytes_(Size) +typedef struct _API_SET_NAMESPACE_ARRAY { + ULONG Version; + ULONG Size; + ULONG Flags; + ULONG Count; + _Field_size_full_(Count) API_SET_NAMESPACE_ENTRY Array[ANYSIZE_ARRAY]; +} API_SET_NAMESPACE_ARRAY, *PAPI_SET_NAMESPACE_ARRAY; + +typedef const API_SET_VALUE_ENTRY *PCAPI_SET_VALUE_ENTRY; +typedef const API_SET_VALUE_ARRAY *PCAPI_SET_VALUE_ARRAY; +typedef const API_SET_NAMESPACE_ENTRY *PCAPI_SET_NAMESPACE_ENTRY; +typedef const API_SET_NAMESPACE_ARRAY *PCAPI_SET_NAMESPACE_ARRAY; + +#define API_SET_SCHEMA_FLAGS_SEALED 0x00000001UL +#define API_SET_SCHEMA_FLAGS_HOST_EXTENSION 0x00000002UL + +#define API_SET_SCHEMA_ENTRY_FLAGS_SEALED 0x00000001UL +#define API_SET_SCHEMA_ENTRY_FLAGS_EXTENSION 0x00000002UL + +// +// Support for downlevel API set schema versions. +// + +typedef struct _API_SET_VALUE_ENTRY_V2 { + ULONG NameOffset; + ULONG NameLength; + ULONG ValueOffset; + ULONG ValueLength; +} API_SET_VALUE_ENTRY_V2, *PAPI_SET_VALUE_ENTRY_V2; + +typedef struct _API_SET_VALUE_ARRAY_V2 { + ULONG Count; + API_SET_VALUE_ENTRY_V2 Array[ANYSIZE_ARRAY]; +} API_SET_VALUE_ARRAY_V2,*PAPI_SET_VALUE_ARRAY_V2; + +typedef struct _API_SET_NAMESPACE_ENTRY_V2 { + ULONG NameOffset; + ULONG NameLength; + ULONG DataOffset; // API_SET_VALUE_ARRAY +} API_SET_NAMESPACE_ENTRY_V2, *PAPI_SET_NAMESPACE_ENTRY_V2; + +typedef struct _API_SET_NAMESPACE_ARRAY_V2 { + ULONG Version; + ULONG Count; + _Field_size_full_(Count) API_SET_NAMESPACE_ENTRY_V2 Array[ANYSIZE_ARRAY]; +} API_SET_NAMESPACE_ARRAY_V2, *PAPI_SET_NAMESPACE_ARRAY_V2; + +typedef const API_SET_VALUE_ENTRY_V2 *PCAPI_SET_VALUE_ENTRY_V2; +typedef const API_SET_VALUE_ARRAY_V2 *PCAPI_SET_VALUE_ARRAY_V2; +typedef const API_SET_NAMESPACE_ENTRY *PCAPI_SET_NAMESPACE_ENTRY_V2; +typedef const API_SET_NAMESPACE_ARRAY *PCAPI_SET_NAMESPACE_ARRAY_V2; + +// +// Offline API set resolution support. +// + +typedef +_Function_class_(API_SET_LOAD_SCHEMA_RTN) +NTSTATUS +(NTAPI API_SET_LOAD_SCHEMA_RTN) ( + _In_ PCSTR SchemaPath, + _Outptr_ PCAPI_SET_NAMESPACE_ARRAY *Schema, + _Outptr_ PVOID *Context + ); + +typedef API_SET_LOAD_SCHEMA_RTN *PAPI_SET_LOAD_SCHEMA_RTN; + +typedef +_Function_class_(API_SET_LOOKUP_HELPER_RTN) +NTSTATUS +(NTAPI API_SET_LOOKUP_HELPER_RTN) ( + _In_ PCAPI_SET_NAMESPACE_ARRAY Schema, + _In_ PCSTR FileName, + _In_ PCSTR ParentName, + _Out_ PBOOLEAN Resolved, + _Out_writes_bytes_(Length) PSTR ResolvedName, + _In_ ULONG Length + ); + +typedef API_SET_LOOKUP_HELPER_RTN *PAPI_SET_LOOKUP_HELPER_RTN; + +typedef +_Function_class_(API_SET_RELEASE_SCHEMA_RTN) +NTSTATUS +(NTAPI API_SET_RELEASE_SCHEMA_RTN) ( + _In_ PVOID Context + ); + +typedef API_SET_RELEASE_SCHEMA_RTN *PAPI_SET_RELEASE_SCHEMA_RTN; + +// +// Prototypes +// + +NTSTATUS +ApiSetResolveToHost ( + _In_ PCAPI_SET_NAMESPACE_ARRAY Schema, + _In_ PCUNICODE_STRING FileNameIn, + _In_opt_ PCUNICODE_STRING ParentName, + _Out_ PBOOLEAN Resolved, + _Out_ PUNICODE_STRING HostBinary + ); + +#endif // _NTDEF_ + +#endif // _API_SET2_H_ diff --git a/Andromeda-Injector/Andromeda-Injector/Common/Singleton.h b/Andromeda-Injector/Andromeda-Injector/Common/Singleton.h new file mode 100644 index 0000000..d5edbe5 --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Common/Singleton.h @@ -0,0 +1,16 @@ +#pragma once + +template +class Singleton +{ +public: + static auto Instance()->T* + { + static T* m_pInstance = nullptr; + + if ( m_pInstance == nullptr ) + m_pInstance = new T(); + + return m_pInstance; + } +}; diff --git a/Andromeda-Injector/Andromeda-Injector/Main.cpp b/Andromeda-Injector/Andromeda-Injector/Main.cpp new file mode 100644 index 0000000..0faa7fa --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Main.cpp @@ -0,0 +1,37 @@ +#include "Main.h" + +#include "CInjector.h" + +auto __forceinline PrintMessage( const char* fmt , ... ) -> void +{ + char buff[4096] = { 0 }; + + va_list args; + va_start( args , fmt ); + vsnprintf( buff , sizeof( buff ) - 1 , fmt , args ); + va_end( args ); + + printf( "%s" , buff ); +}; + +int main( int argm , char** argv ) +{ + if ( !GetInjector()->Init() ) + { + DEV_LOG( "[error] GetPrivileges Or Dll Not Found !\n" ); + Sleep( 5000 ); + return 0; + } + + if ( !GetInjector()->InjectManualMap( "cs2.exe" ) ) + { + DEV_LOG( "[error] Inject #1\n" ); + Sleep( 5000 ); + return 0; + } + + DEV_LOG( "[success] Injected !\n" ); + + Sleep( 5000 ); + return 0; +} diff --git a/Andromeda-Injector/Andromeda-Injector/Main.h b/Andromeda-Injector/Andromeda-Injector/Main.h new file mode 100644 index 0000000..ac395dc --- /dev/null +++ b/Andromeda-Injector/Andromeda-Injector/Main.h @@ -0,0 +1,14 @@ +#pragma once + +#include + +#include "Common/Common.h" + +#pragma comment(lib, "BlackBone") + +auto __forceinline PrintMessage( const char* fmt , ... ) -> void; + +#define DEV_LOG( fmt , ... ) \ +{\ +PrintMessage( fmt , __VA_ARGS__ );\ +} diff --git a/Andromeda-Injector/BlackBone.lib b/Andromeda-Injector/BlackBone.lib new file mode 100644 index 0000000..f9b3734 Binary files /dev/null and b/Andromeda-Injector/BlackBone.lib differ diff --git a/schema_dump.hpp b/schema_dump.hpp new file mode 100644 index 0000000..a3795ae --- /dev/null +++ b/schema_dump.hpp @@ -0,0 +1,25089 @@ +class CWorldCompositionChunkReferenceElement_t // server +{ + CUtlString m_strMapToLoad; // 0x0000 + CUtlString m_strLandmarkName; // 0x0008 +}; +class C_INIT_PositionWarpScalar : public CParticleFunctionInitializer // particles +{ + Vector m_vecWarpMin; // 0x01D8 + Vector m_vecWarpMax; // 0x01E4 + CPerParticleFloatInput m_InputValue; // 0x01F0 + float32 m_flPrevPosScale; // 0x0360 + int32 m_nScaleControlPointNumber; // 0x0364 + int32 m_nControlPointNumber; // 0x0368 +}; +class C_OP_ForceControlPointStub : public CParticleFunctionPreEmission // particles +{ + int32 m_ControlPoint; // 0x01D8 +}; +class RenderProjectedMaterial_t // particles +{ + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hMaterial; // 0x0000 +}; +class AimMatrixOpFixedSettings_t // animgraphlib +{ + CAnimAttachment m_attachment; // 0x0000 + CAnimInputDamping m_damping; // 0x0080 + CPoseHandle[10] m_poseCacheHandles; // 0x0098 + AimMatrixBlendMode m_eBlendMode; // 0x00C0 + float32 m_flMaxYawAngle; // 0x00C4 + float32 m_flMaxPitchAngle; // 0x00C8 + int32 m_nSequenceMaxFrame; // 0x00CC + int32 m_nBoneMaskIndex; // 0x00D0 + bool m_bTargetIsPosition; // 0x00D4 + bool m_bUseBiasAndClamp; // 0x00D5 + float32 m_flBiasAndClampYawOffset; // 0x00D8 + float32 m_flBiasAndClampPitchOffset; // 0x00DC + CBlendCurve m_biasAndClampBlendCurve; // 0x00E0 +}; +class InfoForResourceTypeCVoxelVisibility // resourcesystem +{ +}; +class WrappedPhysicsJoint_t // server +{ +}; +class CTakeDamageResult // server +{ + CTakeDamageInfo* m_pOriginatingInfo; // 0x0000 + int32 m_nHealthLost; // 0x0008 + int32 m_nHealthBefore; // 0x000C + int32 m_nDamageDealt; // 0x0010 + float32 m_flPreModifiedDamage; // 0x0014 + int32 m_nTotalledHealthLost; // 0x0018 + int32 m_nTotalledDamageDealt; // 0x001C + float32 m_flTotalledPreModifiedDamage; // 0x0020 + bool m_bWasDamageSuppressed; // 0x0024 + bool m_bSuppressFlinch; // 0x0025 + HitGroup_t m_nOverrideFlinchHitGroup; // 0x0028 +}; +class C_OP_RenderMaterialProxy : public CParticleFunctionRenderer // particles +{ + int32 m_nMaterialControlPoint; // 0x0220 + MaterialProxyType_t m_nProxyType; // 0x0224 + CUtlVector< MaterialVariable_t > m_MaterialVars; // 0x0228 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hOverrideMaterial; // 0x0240 + CParticleCollectionFloatInput m_flMaterialOverrideEnabled; // 0x0248 + CParticleCollectionVecInput m_vecColorScale; // 0x03B8 + CPerParticleFloatInput m_flAlpha; // 0x0A70 + ParticleColorBlendType_t m_nColorBlendType; // 0x0BE0 +}; +class CNmFloatEaseNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + float32 m_flEaseTime; // 0x0010 + float32 m_flStartValue; // 0x0014 + int16 m_nInputValueNodeIdx; // 0x0018 + NmEasingOperation_t m_easingOp; // 0x001A + bool m_bUseStartValue; // 0x001B +}; +class CAimMatrixUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + AimMatrixOpFixedSettings_t m_opFixedSettings; // 0x0070 + AnimVectorSource m_target; // 0x0168 + CAnimParamHandle m_paramIndex; // 0x016C + HSequence m_hSequence; // 0x0170 + bool m_bResetChild; // 0x0174 + bool m_bLockWhenWaning; // 0x0175 +}; +class CAnimFrameBlockAnim // animationsystem +{ + int32 m_nStartFrame; // 0x0000 + int32 m_nEndFrame; // 0x0004 + CUtlVector< int32 > m_segmentIndexArray; // 0x0008 +}; +class CSeqPoseSetting // animationsystem +{ + CBufferString m_sPoseParameter; // 0x0000 + CBufferString m_sAttachment; // 0x0010 + CBufferString m_sReferenceSequence; // 0x0020 + float32 m_flValue; // 0x0030 + bool m_bX; // 0x0034 + bool m_bY; // 0x0035 + bool m_bZ; // 0x0036 + int32 m_eType; // 0x0038 +}; +class CNmCachedFloatNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + NmCachedValueMode_t m_mode; // 0x0014 +}; +class CRagdollComponentUpdater : public CAnimComponentUpdater // animgraphlib +{ + CUtlVector< CAnimNodePath > m_ragdollNodePaths; // 0x0030 + CUtlVector< CAnimNodePath > m_followAttachmentNodePaths; // 0x0048 + CUtlVector< int32 > m_boneIndices; // 0x0060 + CUtlVector< CUtlString > m_boneNames; // 0x0078 + CUtlVector< WeightList > m_weightLists; // 0x0090 + CUtlVector< int32 > m_boneToWeightIndices; // 0x00A8 + float32 m_flSpringFrequencyMin; // 0x00C0 + float32 m_flSpringFrequencyMax; // 0x00C4 + float32 m_flMaxStretch; // 0x00C8 + bool m_bSolidCollisionAtZeroWeight; // 0x00CC +}; +class CNmRootMotionEvent : public CNmEvent // animlib +{ + float32 m_flBlendTimeSeconds; // 0x0020 +}; +class CTwistConstraint : public CBaseConstraint // modellib +{ + bool m_bInverse; // 0x0060 + Quaternion m_qParentBindRotation; // 0x0070 + Quaternion m_qChildBindRotation; // 0x0080 +}; +class MotionBlendItem // animgraphlib +{ + CSmartPtr< CMotionNode > m_pChild; // 0x0000 + float32 m_flKeyValue; // 0x0008 +}; +class CAnimEventListenerBase // server +{ +}; +class C_OP_EndCapDecay : public CParticleFunctionOperator // particles +{ +}; +class VMixPresetDSPDesc_t // soundsystem_lowlevel +{ + CUtlString m_effectName; // 0x0000 +}; +class CTurnHelperUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + AnimValueSource m_facingTarget; // 0x0074 + float32 m_turnStartTimeOffset; // 0x0078 + float32 m_turnDuration; // 0x007C + bool m_bMatchChildDuration; // 0x0080 + float32 m_manualTurnOffset; // 0x0084 + bool m_bUseManualTurnOffset; // 0x0088 +}; +class CNmParameterizedBlendNode::BlendRange_t // animlib +{ + int16 m_nInputIdx0; // 0x0000 + int16 m_nInputIdx1; // 0x0002 + Range_t m_parameterValueRange; // 0x0004 +}; +class CDecalInstance // server +{ + CGlobalSymbol m_sDecalGroup; // 0x0000 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hMaterial; // 0x0008 + CUtlStringToken m_sSequenceName; // 0x0010 + CHandle< CBaseEntity > m_hEntity; // 0x0014 + int32 m_nBoneIndex; // 0x0018 + int32 m_nTriangleIndex; // 0x001C + Vector m_vPositionLS; // 0x0020 + Vector m_vNormalLS; // 0x002C + Vector m_vSAxisLS; // 0x0038 + DecalFlags_t m_nFlags; // 0x0044 + Color m_Color; // 0x0048 + float32 m_flWidth; // 0x004C + float32 m_flHeight; // 0x0050 + float32 m_flDepth; // 0x0054 + CTransformWS m_transform; // 0x0060 + float32 m_flAnimationScale; // 0x0080 + float32 m_flAnimationStartTime; // 0x0084 + GameTime_t m_flPlaceTime; // 0x0088 + float32 m_flFadeStartTime; // 0x008C + float32 m_flFadeDuration; // 0x0090 + float32 m_flLightingOriginOffset; // 0x0094 + float32 m_flBoundingRadiusSqr; // 0x00A0 + int16 m_nSequenceIndex; // 0x00A4 + bool m_bIsAdjacent; // 0x00A6 + bool m_bDoDecalLightmapping; // 0x00A7 + DecalRtEncoding_t m_nDecalRtEncoding; // 0x00A8 + bool m_bProjectToBackfaces; // 0x00A9 +}; +class CBaseAnimGraphDestructibleParts_GraphController : public CAnimGraphControllerBase // server +{ +}; +class C_INIT_RandomColor : public CParticleFunctionInitializer // particles +{ + Color m_ColorMin; // 0x01F4 + Color m_ColorMax; // 0x01F8 + Color m_TintMin; // 0x01FC + Color m_TintMax; // 0x0200 + float32 m_flTintPerc; // 0x0204 + float32 m_flUpdateThreshold; // 0x0208 + int32 m_nTintCP; // 0x020C + ParticleAttributeIndex_t m_nFieldOutput; // 0x0210 + ParticleColorBlendMode_t m_nTintBlendMode; // 0x0214 + float32 m_flLightAmplification; // 0x0218 +}; +class SteamAudioPathSettings_t // steamaudio +{ + int32 m_nNumVisSamples; // 0x0000 + float32 m_flProbeVisRadius; // 0x0004 + float32 m_flProbeVisThreshold; // 0x0008 + float32 m_flProbePathRange; // 0x000C +}; +class CNmVirtualParameterFloatNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + int16 m_nChildNodeIdx; // 0x0010 +}; +class CNmTargetInfoNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + CNmTargetInfoNode::Info_t m_infoType; // 0x0014 + bool m_bIsWorldSpaceTarget; // 0x0018 +}; +class CSpinUpdateBase : public CParticleFunctionOperator // particles +{ +}; +class C_OP_PositionLock : public CParticleFunctionOperator // particles +{ + CParticleTransformInput m_TransformInput; // 0x01D0 + float32 m_flStartTime_min; // 0x0238 + float32 m_flStartTime_max; // 0x023C + float32 m_flStartTime_exp; // 0x0240 + float32 m_flEndTime_min; // 0x0244 + float32 m_flEndTime_max; // 0x0248 + float32 m_flEndTime_exp; // 0x024C + float32 m_flRange; // 0x0250 + CParticleCollectionFloatInput m_flRangeBias; // 0x0258 + float32 m_flJumpThreshold; // 0x03C8 + float32 m_flPrevPosScale; // 0x03CC + bool m_bLockRot; // 0x03D0 + CParticleCollectionVecInput m_vecScale; // 0x03D8 + ParticleAttributeIndex_t m_nFieldOutput; // 0x0A90 + ParticleAttributeIndex_t m_nFieldOutputPrev; // 0x0A94 +}; +class CAnimParameterBase // animgraphlib +{ + CGlobalSymbol m_name; // 0x0018 + CUtlString m_sComment; // 0x0020 + CUtlString m_group; // 0x0028 + AnimParamID m_id; // 0x0030 + CUtlString m_componentName; // 0x0048 + bool m_bNetworkingRequested; // 0x0068 + bool m_bIsReferenced; // 0x0069 +}; +class CTimeRemainingMetricEvaluator : public CMotionMetricEvaluator // animgraphlib +{ + bool m_bMatchByTimeRemaining; // 0x0050 + float32 m_flMaxTimeRemaining; // 0x0054 + bool m_bFilterByTimeRemaining; // 0x0058 + float32 m_flMinTimeRemaining; // 0x005C +}; +class CGameScriptedMoveDef_t // server +{ + Vector m_vDestOffset; // 0x0000 + CHandle< CBaseEntity > m_hDestEntity; // 0x000C + QAngle m_angDest; // 0x0010 + float32 m_flDuration; // 0x001C + float32 m_flAngRate; // 0x0020 + float32 m_flMoveSpeed; // 0x0024 + bool m_bAimDisabled; // 0x0028 + bool m_bIgnoreRotation; // 0x0029 + ForcedCrouchState_t m_nForcedCrouchState; // 0x002C +}; +class CBtNodeDecorator : public CBtNode // server +{ +}; +class dynpitchvol_t : public dynpitchvol_base_t // server +{ +}; +class C_INIT_PositionWarp : public CParticleFunctionInitializer // particles +{ + CParticleCollectionVecInput m_vecWarpMin; // 0x01D8 + CParticleCollectionVecInput m_vecWarpMax; // 0x0890 + int32 m_nScaleControlPointNumber; // 0x0F48 + int32 m_nControlPointNumber; // 0x0F4C + int32 m_nRadiusComponent; // 0x0F50 + float32 m_flWarpTime; // 0x0F54 + float32 m_flWarpStartTime; // 0x0F58 + float32 m_flPrevPosScale; // 0x0F5C + bool m_bInvertWarp; // 0x0F60 + bool m_bUseCount; // 0x0F61 +}; +class CTargetSelectorUpdateNode : public CAnimUpdateNodeBase // animgraphlib +{ + TargetSelectorAngleMode_t m_eAngleMode; // 0x0060 + CUtlVector< CAnimUpdateNodeRef > m_children; // 0x0068 + CAnimParamHandle m_hTargetPosition; // 0x0084 + CAnimParamHandle m_hTargetFacePositionParameter; // 0x0086 + CAnimParamHandle m_hMoveHeadingParameter; // 0x0088 + CAnimParamHandle m_hDesiredMoveHeadingParameter; // 0x008A + bool m_bTargetPositionIsWorldSpace; // 0x008C + bool m_bTargetFacePositionIsWorldSpace; // 0x008D + bool m_bEnablePhaseMatching; // 0x008E + float32 m_flPhaseMatchingMaxRootMotionSkip; // 0x0090 +}; +class InfoForResourceTypeCModel // resourcesystem +{ +}; +class C_OP_RemapAverageScalarValuetoCP : public CParticleFunctionPreEmission // particles +{ + SetStatisticExpressionType_t m_nExpression; // 0x01D8 + CParticleCollectionFloatInput m_flDecimalPlaces; // 0x01E0 + int32 m_nOutControlPointNumber; // 0x0350 + int32 m_nOutVectorField; // 0x0354 + ParticleAttributeIndex_t m_nField; // 0x0358 + CParticleRemapFloatInput m_flOutputRemap; // 0x0360 +}; +class C_OP_SetPerChildControlPoint : public CParticleFunctionOperator // particles +{ + int32 m_nChildGroupID; // 0x01D0 + int32 m_nFirstControlPoint; // 0x01D4 + int32 m_nNumControlPoints; // 0x01D8 + CParticleCollectionFloatInput m_nParticleIncrement; // 0x01E0 + CParticleCollectionFloatInput m_nFirstSourcePoint; // 0x0350 + bool m_bSetOrientation; // 0x04C0 + ParticleAttributeIndex_t m_nOrientationField; // 0x04C4 + bool m_bNumBasedOnParticleCount; // 0x04C8 +}; +class CSosSoundEventGroupSchema // soundsystem +{ + SosGroupType_t m_nGroupType; // 0x0008 + bool m_bBlocksEvents; // 0x000C + int32 m_nBlockMaxCount; // 0x0010 + float32 m_flMemberLifespanTime; // 0x0014 + bool m_bInvertMatch; // 0x0018 + SosGroupFieldBehavior_t m_Behavior_EventName; // 0x001C + CUtlString m_matchSoundEventName; // 0x0020 + bool m_bMatchEventSubString; // 0x0028 + CUtlString m_matchSoundEventSubString; // 0x0030 + SosGroupFieldBehavior_t m_Behavior_EntIndex; // 0x0038 + float32 m_flEntIndex; // 0x003C + SosGroupFieldBehavior_t m_Behavior_Opvar; // 0x0040 + float32 m_flOpvar; // 0x0044 + SosGroupFieldBehavior_t m_Behavior_String; // 0x0048 + CUtlString m_opvarString; // 0x0050 + CUtlVector< CSosGroupActionSchema* > m_vActions; // 0x0058 +}; +class FeTwistConstraint_t // physicslib +{ + uint16 nNodeOrient; // 0x0000 + uint16 nNodeEnd; // 0x0002 + float32 flTwistRelax; // 0x0004 + float32 flSwingRelax; // 0x0008 +}; +class CNmSyncTrack::EventMarker_t // animlib +{ + NmPercent_t m_startTime; // 0x0000 + CGlobalSymbol m_ID; // 0x0008 +}; +class CNmConstVectorNode::CDefinition : public CNmVectorValueNode::CDefinition // animlib +{ + Vector m_value; // 0x0010 +}; +class CAnimationGraphVisualizerSphere : public CAnimationGraphVisualizerPrimitiveBase // animgraphlib +{ + VectorAligned m_vWsPosition; // 0x0040 + float32 m_flRadius; // 0x0050 + Color m_Color; // 0x0054 +}; +class CBoneConstraintRbf : public CBoneConstraintBase // modellib +{ + CUtlVector< std::pair< CUtlString, uint32 > > m_inputBones; // 0x0020 + CUtlVector< std::pair< CUtlString, uint32 > > m_outputBones; // 0x0038 +}; +class VelocitySampler // server +{ + Vector m_prevSample; // 0x0000 + GameTime_t m_fPrevSampleTime; // 0x000C + float32 m_fIdealSampleRate; // 0x0010 +}; +class C_OP_RenderScreenShake : public CParticleFunctionRenderer // particles +{ + float32 m_flDurationScale; // 0x0220 + float32 m_flRadiusScale; // 0x0224 + float32 m_flFrequencyScale; // 0x0228 + float32 m_flAmplitudeScale; // 0x022C + ParticleAttributeIndex_t m_nRadiusField; // 0x0230 + ParticleAttributeIndex_t m_nDurationField; // 0x0234 + ParticleAttributeIndex_t m_nFrequencyField; // 0x0238 + ParticleAttributeIndex_t m_nAmplitudeField; // 0x023C + int32 m_nFilterCP; // 0x0240 +}; +class CAnimNodePath // animgraphlib +{ + AnimNodeID[11] m_path; // 0x0000 + int32 m_nCount; // 0x002C +}; +class CNmSkeleton // animlib +{ + CGlobalSymbol m_ID; // 0x0000 + CUtlLeanVector< CGlobalSymbol > m_boneIDs; // 0x0008 + CUtlVector< int32 > m_parentIndices; // 0x0018 + CUtlVector< CTransform > m_parentSpaceReferencePose; // 0x0030 + CUtlVector< CTransform > m_modelSpaceReferencePose; // 0x0048 + int32 m_numBonesToSampleAtLowLOD; // 0x0060 + CUtlLeanVector< NmBoneMaskSetDefinition_t > m_maskDefinitions; // 0x0088 + CUtlLeanVector< CNmSkeleton::SecondarySkeleton_t > m_secondarySkeletons; // 0x00A8 + bool m_bIsPropSkeleton; // 0x00B8 +}; +class CModelConfigElement_SetMaterialGroup : public CModelConfigElement // modellib +{ + CUtlString m_MaterialGroupName; // 0x0048 +}; +class CPhysicsBodyGameMarkup // server +{ + CUtlString m_TargetBody; // 0x0000 + CGlobalSymbol m_Tag; // 0x0008 +}; +class C_OP_ContinuousEmitter : public CParticleFunctionEmitter // particles +{ + CParticleCollectionFloatInput m_flEmissionDuration; // 0x01D8 + CParticleCollectionFloatInput m_flStartTime; // 0x0348 + CParticleCollectionFloatInput m_flEmitRate; // 0x04B8 + float32 m_flEmissionScale; // 0x0628 + float32 m_flScalePerParentParticle; // 0x062C + bool m_bInitFromKilledParentParticles; // 0x0630 + EventTypeSelection_t m_nEventType; // 0x0634 + int32 m_nSnapshotControlPoint; // 0x0638 + CUtlString m_strSnapshotSubset; // 0x0640 + int32 m_nLimitPerUpdate; // 0x0648 + bool m_bForceEmitOnFirstUpdate; // 0x064C + bool m_bForceEmitOnLastUpdate; // 0x064D +}; +class constraint_breakableparams_t // vphysics2 +{ + float32 strength; // 0x0000 + float32 forceLimit; // 0x0004 + float32 torqueLimit; // 0x0008 + float32[2] bodyMassScale; // 0x000C + bool isActive; // 0x0014 +}; +class CModelConfigElement_RandomColor : public CModelConfigElement // modellib +{ + CColorGradient m_Gradient; // 0x0048 +}; +class CNmCachedPoseWriteTask : public CNmPoseTask // animlib +{ +}; +class InfoForResourceTypeCPostProcessingResource // resourcesystem +{ +}; +class RelationshipOverride_t : public Relationship_t // server +{ + CHandle< CBaseEntity > entity; // 0x0008 + Class_T classType; // 0x000C +}; +class ParticleAttributeIndex_t // particles +{ + int32 m_Value; // 0x0000 +}; +class CVoiceContainerMultiBlender : public CVoiceContainerBase // soundsystem_voicecontainers +{ + CSoundContainerReferenceArray m_soundsToPlay; // 0x00A8 + float32 m_flBlendFactor; // 0x00E0 + float32 m_flCrossover; // 0x00E4 +}; +class FeBuildSDFRigid_t : public FeSDFRigid_t // physicslib +{ + int32 m_nPriority; // 0x0050 + uint32 m_nVertexMapHash; // 0x0054 + uint32 m_nAntitunnelGroupBits; // 0x0058 +}; +class IAnimationGraphInstance // animgraphlib +{ +}; +class CSoundContainerReferenceArray // soundsystem_voicecontainers +{ + bool m_bUseReference; // 0x0000 + CUtlVector< CStrongHandle< InfoForResourceTypeCVoiceContainerBase > > m_sounds; // 0x0008 + CUtlVector< CVoiceContainerBase* > m_pSounds; // 0x0020 +}; +class VPhysXAggregateData_t // modellib +{ + uint16 m_nFlags; // 0x0000 + uint16 m_nRefCounter; // 0x0002 + CUtlVector< uint32 > m_bonesHash; // 0x0008 + CUtlVector< CUtlString > m_boneNames; // 0x0020 + CUtlVector< uint16 > m_indexNames; // 0x0038 + CUtlVector< uint16 > m_indexHash; // 0x0050 + CUtlVector< matrix3x4a_t > m_bindPose; // 0x0068 + CUtlVector< VPhysXBodyPart_t > m_parts; // 0x0080 + CUtlVector< PhysShapeMarkup_t > m_shapeMarkups; // 0x0098 + CUtlVector< VPhysXConstraint2_t > m_constraints2; // 0x00B0 + CUtlVector< VPhysXJoint_t > m_joints; // 0x00C8 + PhysFeModelDesc_t* m_pFeModel; // 0x00E0 + CUtlVector< uint16 > m_boneParents; // 0x00E8 + CUtlVector< uint32 > m_surfacePropertyHashes; // 0x0100 + CUtlVector< VPhysXCollisionAttributes_t > m_collisionAttributes; // 0x0118 + CUtlVector< CUtlString > m_debugPartNames; // 0x0130 + CUtlString m_embeddedKeyvalues; // 0x0148 +}; +class CSolveIKChainUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + CUtlVector< CSolveIKTargetHandle_t > m_targetHandles; // 0x0070 + SolveIKChainPoseOpFixedSettings_t m_opFixedData; // 0x0088 +}; +class CNavVolumeCalculatedVector : public CNavVolume // server +{ +}; +class C_INIT_InitialSequenceFromModel : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPointNumber; // 0x01D8 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01DC + ParticleAttributeIndex_t m_nFieldOutputAnim; // 0x01E0 + float32 m_flInputMin; // 0x01E4 + float32 m_flInputMax; // 0x01E8 + float32 m_flOutputMin; // 0x01EC + float32 m_flOutputMax; // 0x01F0 + ParticleSetMethod_t m_nSetMethod; // 0x01F4 +}; +class C_OP_FadeInSimple : public CParticleFunctionOperator // particles +{ + float32 m_flFadeInTime; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 +}; +class C_INIT_OffsetVectorToVector : public CParticleFunctionInitializer // particles +{ + ParticleAttributeIndex_t m_nFieldInput; // 0x01D8 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01DC + Vector m_vecOutputMin; // 0x01E0 + Vector m_vecOutputMax; // 0x01EC + CRandomNumberGeneratorParameters m_randomnessParameters; // 0x01F8 +}; +class C_OP_ModelCull : public CParticleFunctionOperator // particles +{ + int32 m_nControlPointNumber; // 0x01D0 + bool m_bBoundBox; // 0x01D4 + bool m_bCullOutside; // 0x01D5 + bool m_bUseBones; // 0x01D6 + char[128] m_HitboxSetName; // 0x01D7 +}; +class C_OP_FadeAndKillForTracers : public CParticleFunctionOperator // particles +{ + float32 m_flStartFadeInTime; // 0x01D0 + float32 m_flEndFadeInTime; // 0x01D4 + float32 m_flStartFadeOutTime; // 0x01D8 + float32 m_flEndFadeOutTime; // 0x01DC + float32 m_flStartAlpha; // 0x01E0 + float32 m_flEndAlpha; // 0x01E4 +}; +class RnSoftbodyCapsule_t // physicslib +{ + Vector[2] m_vCenter; // 0x0000 + float32 m_flRadius; // 0x0018 + uint16[2] m_nParticle; // 0x001C +}; +class EventClientProcessGameInput_t // engine2 +{ + EngineLoopState_t m_LoopState; // 0x0000 + float32 m_flRealTime; // 0x0028 + float32 m_flFrameTime; // 0x002C +}; +class InfoForResourceTypeManifestTestResource_t // resourcesystem +{ +}; +class C_OP_CollideWithParentParticles : public CParticleFunctionConstraint // particles +{ + CPerParticleFloatInput m_flParentRadiusScale; // 0x01D0 + CPerParticleFloatInput m_flRadiusScale; // 0x0340 +}; +class C_OP_LerpToInitialPosition : public CParticleFunctionOperator // particles +{ + int32 m_nControlPointNumber; // 0x01D0 + CPerParticleFloatInput m_flInterpolation; // 0x01D8 + ParticleAttributeIndex_t m_nCacheField; // 0x0348 + CParticleCollectionFloatInput m_flScale; // 0x0350 + CParticleCollectionVecInput m_vecScale; // 0x04C0 +}; +class VMixConvolutionDesc_t // soundsystem_lowlevel +{ + float32 m_fldbGain; // 0x0000 + float32 m_flPreDelayMS; // 0x0004 + float32 m_flWetMix; // 0x0008 + float32 m_fldbLow; // 0x000C + float32 m_fldbMid; // 0x0010 + float32 m_fldbHigh; // 0x0014 + float32 m_flLowCutoffFreq; // 0x0018 + float32 m_flHighCutoffFreq; // 0x001C +}; +class CVMixSubgraphSwitchProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixSubgraphSwitchDesc_t m_desc; // 0x0020 +}; +class CVoiceContainerEnvelope : public CVoiceContainerDefault // soundsystem_voicecontainers +{ + CStrongHandle< InfoForResourceTypeCVoiceContainerBase > m_sound; // 0x00A8 + CVoiceContainerAnalysisBase* m_analysisContainer; // 0x00B0 +}; +class CFeJiggleBone // physicslib +{ + uint32 m_nFlags; // 0x0000 + float32 m_flLength; // 0x0004 + float32 m_flTipMass; // 0x0008 + float32 m_flYawStiffness; // 0x000C + float32 m_flYawDamping; // 0x0010 + float32 m_flPitchStiffness; // 0x0014 + float32 m_flPitchDamping; // 0x0018 + float32 m_flAlongStiffness; // 0x001C + float32 m_flAlongDamping; // 0x0020 + float32 m_flAngleLimit; // 0x0024 + float32 m_flMinYaw; // 0x0028 + float32 m_flMaxYaw; // 0x002C + float32 m_flYawFriction; // 0x0030 + float32 m_flYawBounce; // 0x0034 + float32 m_flMinPitch; // 0x0038 + float32 m_flMaxPitch; // 0x003C + float32 m_flPitchFriction; // 0x0040 + float32 m_flPitchBounce; // 0x0044 + float32 m_flBaseMass; // 0x0048 + float32 m_flBaseStiffness; // 0x004C + float32 m_flBaseDamping; // 0x0050 + float32 m_flBaseMinLeft; // 0x0054 + float32 m_flBaseMaxLeft; // 0x0058 + float32 m_flBaseLeftFriction; // 0x005C + float32 m_flBaseMinUp; // 0x0060 + float32 m_flBaseMaxUp; // 0x0064 + float32 m_flBaseUpFriction; // 0x0068 + float32 m_flBaseMinForward; // 0x006C + float32 m_flBaseMaxForward; // 0x0070 + float32 m_flBaseForwardFriction; // 0x0074 + float32 m_flRadius0; // 0x0078 + float32 m_flRadius1; // 0x007C + Vector m_vPoint0; // 0x0080 + Vector m_vPoint1; // 0x008C + uint16 m_nCollisionMask; // 0x0098 +}; +class AnimComponentID // modellib +{ + uint32 m_id; // 0x0000 +}; +class CFootDefinition // modellib +{ + CUtlString m_name; // 0x0000 + CUtlString m_ankleBoneName; // 0x0008 + CUtlString m_toeBoneName; // 0x0010 + Vector m_vBallOffset; // 0x0018 + Vector m_vHeelOffset; // 0x0024 + float32 m_flFootLength; // 0x0030 + float32 m_flBindPoseDirectionMS; // 0x0034 + float32 m_flTraceHeight; // 0x0038 + float32 m_flTraceRadius; // 0x003C +}; +class CSubtractUpdateNode : public CBinaryUpdateNode // animgraphlib +{ + BinaryNodeChildOption m_footMotionTiming; // 0x0094 + bool m_bApplyToFootMotion; // 0x0098 + bool m_bApplyChannelsSeparately; // 0x0099 + bool m_bUseModelSpace; // 0x009A +}; +class CMotionNodeBlend1D : public CMotionNode // animgraphlib +{ + CUtlVector< MotionBlendItem > m_blendItems; // 0x0028 + int32 m_nParamIndex; // 0x0040 +}; +class CNavVolumeSphericalShell : public CNavVolumeSphere // navlib +{ + float32 m_flRadiusInner; // 0x0088 +}; +class PulseScriptedSequenceData_t // server +{ + int32 m_nActorID; // 0x0000 + CUtlString m_szPreIdleSequence; // 0x0008 + CUtlString m_szEntrySequence; // 0x0010 + CUtlString m_szSequence; // 0x0018 + CUtlString m_szExitSequence; // 0x0020 + ScriptedMoveTo_t m_nMoveTo; // 0x0028 + SharedMovementGait_t m_nMoveToGait; // 0x002C + ScriptedHeldWeaponBehavior_t m_nHeldWeaponBehavior; // 0x0030 + bool m_bLoopPreIdleSequence; // 0x0034 + bool m_bLoopActionSequence; // 0x0035 + bool m_bLoopPostIdleSequence; // 0x0036 + bool m_bIgnoreLookAt; // 0x0037 +}; +class C_OP_NormalizeVector : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + float32 m_flScale; // 0x01D4 +}; +class C_OP_RenderClothForce : public CParticleFunctionRenderer // particles +{ +}; +class SteamAudioCustomDataOcclusionSettings_t // steamaudio +{ + bool m_bEnablePathing; // 0x0000 + bool m_bEnableReflections; // 0x0001 + int32 m_nReflectionRays; // 0x0004 + int32 m_nReflectionBounces; // 0x0008 +}; +class VMixBoxverbDesc_t // soundsystem_lowlevel +{ + float32 m_flSizeMax; // 0x0000 + float32 m_flSizeMin; // 0x0004 + float32 m_flComplexity; // 0x0008 + float32 m_flDiffusion; // 0x000C + float32 m_flModDepth; // 0x0010 + float32 m_flModRate; // 0x0014 + bool m_bParallel; // 0x0018 + VMixFilterDesc_t m_filterType; // 0x001C + float32 m_flWidth; // 0x002C + float32 m_flHeight; // 0x0030 + float32 m_flDepth; // 0x0034 + float32 m_flFeedbackScale; // 0x0038 + float32 m_flFeedbackWidth; // 0x003C + float32 m_flFeedbackHeight; // 0x0040 + float32 m_flFeedbackDepth; // 0x0044 + float32 m_flOutputGain; // 0x0048 + float32 m_flTaps; // 0x004C +}; +class FeCtrlOffset_t // physicslib +{ + Vector vOffset; // 0x0000 + uint16 nCtrlParent; // 0x000C + uint16 nCtrlChild; // 0x000E +}; +class InfoForResourceTypeCAnimData // resourcesystem +{ +}; +class CNavHullPresetVData // navlib +{ + CUtlVector< CUtlString > m_vecNavHulls; // 0x0000 +}; +class CNavVolume // navlib +{ +}; +class CAnimGraphControllerBase // server +{ + ExternalAnimGraphHandle_t m_hExternalGraph; // 0x0018 +}; +class C_OP_RemapScalarEndCap : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldInput; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + float32 m_flInputMin; // 0x01D8 + float32 m_flInputMax; // 0x01DC + float32 m_flOutputMin; // 0x01E0 + float32 m_flOutputMax; // 0x01E4 +}; +class CSoundContainerReference // soundsystem_voicecontainers +{ + bool m_bUseReference; // 0x0000 + CStrongHandle< InfoForResourceTypeCVoiceContainerBase > m_sound; // 0x0008 + CVoiceContainerBase* m_pSound; // 0x0010 +}; +class CNmReferencePoseNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ +}; +class CAnimKeyData // animationsystem +{ + CBufferString m_name; // 0x0000 + CUtlVector< CAnimBone > m_boneArray; // 0x0010 + CUtlVector< CAnimUser > m_userArray; // 0x0028 + CUtlVector< CBufferString > m_morphArray; // 0x0040 + int32 m_nChannelElements; // 0x0058 + CUtlVector< CAnimDataChannelDesc > m_dataChannelArray; // 0x0060 +}; +class MaterialParam_t // materialsystem2 +{ + CUtlString m_name; // 0x0000 +}; +class CDestructiblePart // server +{ + CGlobalSymbol m_DebugName; // 0x0000 + HitGroup_t m_nHitGroup; // 0x0008 + bool m_bDisableHitGroupWhenDestroyed; // 0x000C + CUtlVector< HitGroup_t > m_nOtherHitgroupsToDestroyWhenFullyDestructed; // 0x0010 + bool m_bOnlyDestroyWhenGibbing; // 0x0028 + CGlobalSymbol m_sBodyGroupName; // 0x0030 + CUtlVector< CDestructiblePart_DamageLevel > m_DamageLevels; // 0x0038 +}; +class CNmEventConsumer // server +{ +}; +class C_OP_RepeatedTriggerChildGroup : public CParticleFunctionPreEmission // particles +{ + int32 m_nChildGroupID; // 0x01D8 + CParticleCollectionFloatInput m_flClusterRefireTime; // 0x01E0 + CParticleCollectionFloatInput m_flClusterSize; // 0x0350 + CParticleCollectionFloatInput m_flClusterCooldown; // 0x04C0 + bool m_bLimitChildCount; // 0x0630 +}; +class C_OP_TurbulenceForce : public CParticleFunctionForce // particles +{ + float32 m_flNoiseCoordScale0; // 0x01E0 + float32 m_flNoiseCoordScale1; // 0x01E4 + float32 m_flNoiseCoordScale2; // 0x01E8 + float32 m_flNoiseCoordScale3; // 0x01EC + Vector m_vecNoiseAmount0; // 0x01F0 + Vector m_vecNoiseAmount1; // 0x01FC + Vector m_vecNoiseAmount2; // 0x0208 + Vector m_vecNoiseAmount3; // 0x0214 +}; +class SequenceWeightedList_t // particles +{ + int32 m_nSequence; // 0x0000 + float32 m_flRelativeWeight; // 0x0004 +}; +class C_OP_RemapParticleCountToScalar : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + CParticleCollectionFloatInput m_nInputMin; // 0x01D8 + CParticleCollectionFloatInput m_nInputMax; // 0x0348 + CParticleCollectionFloatInput m_flOutputMin; // 0x04B8 + CParticleCollectionFloatInput m_flOutputMax; // 0x0628 + bool m_bActiveRange; // 0x0798 + ParticleSetMethod_t m_nSetMethod; // 0x079C +}; +class constraint_hingeparams_t // vphysics2 +{ + Vector worldPosition; // 0x0000 + Vector worldAxisDirection; // 0x000C + constraint_axislimit_t hingeAxis; // 0x0018 + constraint_breakableparams_t constraint; // 0x0028 +}; +class CChoiceUpdateNode : public CAnimUpdateNodeBase // animgraphlib +{ + CUtlVector< CAnimUpdateNodeRef > m_children; // 0x0060 + CUtlVector< float32 > m_weights; // 0x0078 + CUtlVector< float32 > m_blendTimes; // 0x0090 + ChoiceMethod m_choiceMethod; // 0x00A8 + ChoiceChangeMethod m_choiceChangeMethod; // 0x00AC + ChoiceBlendMethod m_blendMethod; // 0x00B0 + float32 m_blendTime; // 0x00B4 + bool m_bCrossFade; // 0x00B8 + bool m_bResetChosen; // 0x00B9 + bool m_bDontResetSameSelection; // 0x00BA +}; +class CBoneConstraintPoseSpaceBone : public CBaseConstraint // modellib +{ + CUtlVector< CBoneConstraintPoseSpaceBone::Input_t > m_inputList; // 0x0060 +}; +class inv_image_light_fill_t // client +{ + Vector color; // 0x0000 + QAngle angle; // 0x000C + float32 brightness; // 0x0018 +}; +class C_INIT_RingWave : public CParticleFunctionInitializer // particles +{ + CParticleTransformInput m_TransformInput; // 0x01D8 + CParticleCollectionFloatInput m_flParticlesPerOrbit; // 0x0240 + CPerParticleFloatInput m_flInitialRadius; // 0x03B0 + CPerParticleFloatInput m_flThickness; // 0x0520 + CPerParticleFloatInput m_flInitialSpeedMin; // 0x0690 + CPerParticleFloatInput m_flInitialSpeedMax; // 0x0800 + CPerParticleFloatInput m_flRoll; // 0x0970 + CPerParticleFloatInput m_flPitch; // 0x0AE0 + CPerParticleFloatInput m_flYaw; // 0x0C50 + bool m_bEvenDistribution; // 0x0DC0 + bool m_bXYVelocityOnly; // 0x0DC1 +}; +class C_OP_BoxConstraint : public CParticleFunctionConstraint // particles +{ + CParticleCollectionVecInput m_vecMin; // 0x01D0 + CParticleCollectionVecInput m_vecMax; // 0x0888 + int32 m_nCP; // 0x0F40 + bool m_bLocalSpace; // 0x0F44 + bool m_bAccountForRadius; // 0x0F45 +}; +class CSSDSMsg_ViewTargetList // scenesystem +{ + SceneViewId_t m_viewId; // 0x0000 + CUtlString m_ViewName; // 0x0010 + CUtlVector< CSSDSMsg_ViewTarget > m_Targets; // 0x0018 +}; +class MaterialParamBuffer_t : public MaterialParam_t // materialsystem2 +{ + CUtlBinaryBlock m_value; // 0x0008 +}; +class InfoForResourceTypeCAnimationGroup // resourcesystem +{ +}; +class C_OP_LockToSavedSequentialPathV2 : public CParticleFunctionOperator // particles +{ + float32 m_flFadeStart; // 0x01D0 + float32 m_flFadeEnd; // 0x01D4 + bool m_bCPPairs; // 0x01D8 + CPathParameters m_PathParams; // 0x01E0 +}; +class C_OP_DistanceBetweenVecs : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + CPerParticleVecInput m_vecPoint1; // 0x01D8 + CPerParticleVecInput m_vecPoint2; // 0x0890 + CPerParticleFloatInput m_flInputMin; // 0x0F48 + CPerParticleFloatInput m_flInputMax; // 0x10B8 + CPerParticleFloatInput m_flOutputMin; // 0x1228 + CPerParticleFloatInput m_flOutputMax; // 0x1398 + ParticleSetMethod_t m_nSetMethod; // 0x1508 + bool m_bDeltaTime; // 0x150C +}; +class CMaterialDrawDescriptor // modellib +{ + float32 m_flUvDensity; // 0x0000 + Vector m_vTintColor; // 0x0004 + float32 m_flAlpha; // 0x0010 + uint16 m_nNumMeshlets; // 0x0016 + uint32 m_nFirstMeshlet; // 0x001C + uint32 m_nAppliedIndexOffset; // 0x0020 + uint8 m_nDepthVertexBufferIndex; // 0x0024 + uint8 m_nMeshletPackedIVBIndex; // 0x0025 + CUtlLeanVector< CMaterialDrawDescriptor::RigidMeshPart_t > m_rigidMeshParts; // 0x0028 + RenderPrimitiveType_t m_nPrimitiveType; // 0x0038 + int32 m_nBaseVertex; // 0x003C + int32 m_nVertexCount; // 0x0040 + int32 m_nStartIndex; // 0x0044 + int32 m_nIndexCount; // 0x0048 + CRenderBufferBinding m_indexBuffer; // 0x00B0 + CRenderBufferBinding m_meshletPackedIVB; // 0x00D0 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_material; // 0x0100 +}; +class CDecalGroupVData // server +{ + CUtlVector< DecalGroupOption_t > m_vecOptions; // 0x0000 + float32 m_flTotalProbability; // 0x0018 +}; +class CNmEventConsumerParticle : public CNmEventConsumer // server +{ +}; +class PostProcessingTonemapParameters_t // materialsystem2 +{ + float32 m_flExposureBias; // 0x0000 + float32 m_flShoulderStrength; // 0x0004 + float32 m_flLinearStrength; // 0x0008 + float32 m_flLinearAngle; // 0x000C + float32 m_flToeStrength; // 0x0010 + float32 m_flToeNum; // 0x0014 + float32 m_flToeDenom; // 0x0018 + float32 m_flWhitePoint; // 0x001C + float32 m_flLuminanceSource; // 0x0020 + float32 m_flExposureBiasShadows; // 0x0024 + float32 m_flExposureBiasHighlights; // 0x0028 + float32 m_flMinShadowLum; // 0x002C + float32 m_flMaxShadowLum; // 0x0030 + float32 m_flMinHighlightLum; // 0x0034 + float32 m_flMaxHighlightLum; // 0x0038 +}; +class DestructibleHitGroupToDestroy_t // server +{ + HitGroup_t m_nHitGroup; // 0x0000 + int32 m_nMaxDamageLevel; // 0x0004 +}; +class CSAdditionalPerRoundStats_t // server +{ + int32 m_numChickensKilled; // 0x0000 + int32 m_killsWhileBlind; // 0x0004 + int32 m_bombCarrierkills; // 0x0008 + float32 m_flBurnDamageInflicted; // 0x000C + float32 m_flBlastDamageInflicted; // 0x0010 + int32 m_iDinks; // 0x0014 + bool m_bFreshStartThisRound; // 0x0018 + bool m_bBombPlantedAndAlive; // 0x0019 + int32 m_nDefuseStarts; // 0x001C + int32 m_nHostagePickUps; // 0x0020 + int32 m_numTeammatesFlashed; // 0x0024 +}; +class FeAxialEdgeBend_t // physicslib +{ + float32 te; // 0x0000 + float32 tv; // 0x0004 + float32 flDist; // 0x0008 + float32[4] flWeight; // 0x000C + uint16[6] nNode; // 0x001C +}; +class CAnimBoneDifference // animationsystem +{ + CBufferString m_name; // 0x0000 + CBufferString m_parent; // 0x0010 + Vector m_posError; // 0x0020 + bool m_bHasRotation; // 0x002C + bool m_bHasMovement; // 0x002D +}; +class CJiggleBoneUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + JiggleBoneSettingsList_t m_opFixedData; // 0x0070 +}; +class CNmSampleTask : public CNmPoseTask // animlib +{ +}; +class IParticleEffect // particleslib +{ +}; +class CPerParticleFloatInput : public CParticleFloatInput // particleslib +{ +}; +class CAnimData // animationsystem +{ + CBufferString m_name; // 0x0010 + CUtlVector< CAnimDesc > m_animArray; // 0x0020 + CUtlVector< CAnimDecoder > m_decoderArray; // 0x0038 + int32 m_nMaxUniqueFrameIndex; // 0x0050 + CUtlVector< CAnimFrameSegment > m_segmentArray; // 0x0058 +}; +class C_OP_RenderSound : public CParticleFunctionRenderer // particles +{ + float32 m_flDurationScale; // 0x0220 + float32 m_flSndLvlScale; // 0x0224 + float32 m_flPitchScale; // 0x0228 + float32 m_flVolumeScale; // 0x022C + ParticleAttributeIndex_t m_nSndLvlField; // 0x0230 + ParticleAttributeIndex_t m_nDurationField; // 0x0234 + ParticleAttributeIndex_t m_nPitchField; // 0x0238 + ParticleAttributeIndex_t m_nVolumeField; // 0x023C + int32 m_nChannel; // 0x0240 + int32 m_nCPReference; // 0x0244 + char[256] m_pszSoundName; // 0x0248 + bool m_bSuppressStopSoundEvent; // 0x0348 +}; +class VMixDynamics3BandDesc_t // soundsystem_lowlevel +{ + float32 m_fldbGainOutput; // 0x0000 + float32 m_flRMSTimeMS; // 0x0004 + float32 m_fldbKneeWidth; // 0x0008 + float32 m_flDepth; // 0x000C + float32 m_flWetMix; // 0x0010 + float32 m_flTimeScale; // 0x0014 + float32 m_flLowCutoffFreq; // 0x0018 + float32 m_flHighCutoffFreq; // 0x001C + bool m_bPeakMode; // 0x0020 + VMixDynamicsBand_t[3] m_bandDesc; // 0x0024 +}; +class FeStiffHingeBuild_t // physicslib +{ + float32 flMaxAngle; // 0x0000 + float32 flStrength; // 0x0004 + float32[3] flMotionBias; // 0x0008 + uint16[3] nNode; // 0x0014 +}; +class CFootLockUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + FootLockPoseOpFixedSettings m_opFixedSettings; // 0x0070 + CUtlVector< FootFixedSettings > m_footSettings; // 0x00E0 + CAnimInputDamping m_hipShiftDamping; // 0x00F8 + CAnimInputDamping m_rootHeightDamping; // 0x0110 + float32 m_flStrideCurveScale; // 0x0128 + float32 m_flStrideCurveLimitScale; // 0x012C + float32 m_flStepHeightIncreaseScale; // 0x0130 + float32 m_flStepHeightDecreaseScale; // 0x0134 + float32 m_flHipShiftScale; // 0x0138 + float32 m_flBlendTime; // 0x013C + float32 m_flMaxRootHeightOffset; // 0x0140 + float32 m_flMinRootHeightOffset; // 0x0144 + float32 m_flTiltPlanePitchSpringStrength; // 0x0148 + float32 m_flTiltPlaneRollSpringStrength; // 0x014C + bool m_bApplyFootRotationLimits; // 0x0150 + bool m_bApplyHipShift; // 0x0151 + bool m_bModulateStepHeight; // 0x0152 + bool m_bResetChild; // 0x0153 + bool m_bEnableVerticalCurvedPaths; // 0x0154 + bool m_bEnableRootHeightDamping; // 0x0155 +}; +class CAnimUpdateNodeBase // animgraphlib +{ + CAnimNodePath m_nodePath; // 0x0018 + AnimNodeNetworkMode m_networkMode; // 0x0048 + CUtlString m_name; // 0x0050 +}; +class CAnimationGroup // animationsystem +{ + uint32 m_nFlags; // 0x0010 + CBufferString m_name; // 0x0018 + CUtlVector< CStrongHandle< InfoForResourceTypeCAnimData > > m_localHAnimArray_Handle; // 0x0060 + CUtlVector< CStrongHandle< InfoForResourceTypeCAnimationGroup > > m_includedGroupArray_Handle; // 0x0078 + CStrongHandle< InfoForResourceTypeCSequenceGroupData > m_directHSeqGroup_Handle; // 0x0090 + CAnimKeyData m_decodeKey; // 0x0098 + CUtlVector< CBufferString > m_szScripts; // 0x0110 + CUtlVector< CStrongHandleVoid > m_AdditionalExtRefs; // 0x0128 +}; +class ResponseParams // server +{ + int16 odds; // 0x0010 + int16 flags; // 0x0012 + ResponseFollowup* m_pFollowup; // 0x0018 +}; +class IHasAttributes // server +{ +}; +class C_OP_SetControlPointFieldToWater : public CParticleFunctionPreEmission // particles +{ + int32 m_nSourceCP; // 0x01D8 + int32 m_nDestCP; // 0x01DC + int32 m_nCPField; // 0x01E0 +}; +class CVoiceContainerStaticAdditiveSynth : public CVoiceContainerAsyncGenerator // soundsystem_voicecontainers +{ + CUtlVector< CVoiceContainerStaticAdditiveSynth::CTone > m_tones; // 0x00B8 +}; +class CVoiceContainerDecayingSineWave : public CVoiceContainerGenerator // soundsystem_voicecontainers +{ + float32 m_flFrequency; // 0x00A8 + float32 m_flDecayTime; // 0x00AC +}; +class CConcreteAnimParameter : public CAnimParameterBase // animgraphlib +{ + AnimParamButton_t m_previewButton; // 0x0070 + AnimParamNetworkSetting m_eNetworkSetting; // 0x0074 + bool m_bUseMostRecentValue; // 0x0078 + bool m_bAutoReset; // 0x0079 + bool m_bGameWritable; // 0x007A + bool m_bGraphWritable; // 0x007B +}; +class CSelectorUpdateNode : public CAnimUpdateNodeBase // animgraphlib +{ + CUtlVector< CAnimUpdateNodeRef > m_children; // 0x0060 + CUtlVector< int8 > m_tags; // 0x0078 + CBlendCurve m_blendCurve; // 0x0094 + CAnimValue< float32 > m_flBlendTime; // 0x009C + CAnimParamHandle m_hParameter; // 0x00A4 + int32 m_nTagIndex; // 0x00A8 + SelectorTagBehavior_t m_eTagBehavior; // 0x00AC + bool m_bResetOnChange; // 0x00B0 + bool m_bLockWhenWaning; // 0x00B1 + bool m_bSyncCyclesOnChange; // 0x00B2 +}; +class InfoForResourceTypeCDOTANovelsList // resourcesystem +{ +}; +class CDestructiblePartsSystemData // server +{ + CUtlOrderedMap< HitGroup_t, CDestructiblePart > m_PartsDataByHitGroup; // 0x0000 + CRangeInt m_nMinMaxNumberHitGroupsToDestroyWhenGibbing; // 0x0028 +}; +class C_OP_SetControlPointFieldToScalarExpression : public CParticleFunctionPreEmission // particles +{ + ScalarExpressionType_t m_nExpression; // 0x01D8 + CParticleCollectionFloatInput m_flInput1; // 0x01E0 + CParticleCollectionFloatInput m_flInput2; // 0x0350 + CParticleRemapFloatInput m_flOutputRemap; // 0x04C0 + int32 m_nOutputCP; // 0x0630 + int32 m_nOutVectorField; // 0x0634 + CParticleCollectionFloatInput m_flInterpolation; // 0x0638 +}; +class C_OP_ControlPointToRadialScreenSpace : public CParticleFunctionPreEmission // particles +{ + int32 m_nCPIn; // 0x01D8 + Vector m_vecCP1Pos; // 0x01DC + int32 m_nCPOut; // 0x01E8 + int32 m_nCPOutField; // 0x01EC + int32 m_nCPSSPosOut; // 0x01F0 +}; +class C_OP_RenderStatusEffectCitadel : public CParticleFunctionRenderer // particles +{ + CStrongHandle< InfoForResourceTypeCTextureBase > m_pTextureColorWarp; // 0x0220 + CStrongHandle< InfoForResourceTypeCTextureBase > m_pTextureNormal; // 0x0228 + CStrongHandle< InfoForResourceTypeCTextureBase > m_pTextureMetalness; // 0x0230 + CStrongHandle< InfoForResourceTypeCTextureBase > m_pTextureRoughness; // 0x0238 + CStrongHandle< InfoForResourceTypeCTextureBase > m_pTextureSelfIllum; // 0x0240 + CStrongHandle< InfoForResourceTypeCTextureBase > m_pTextureDetail; // 0x0248 +}; +class CStaticPoseCacheBuilder : public CStaticPoseCache // animgraphlib +{ +}; +class CTargetWarpUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + TargetWarpAngleMode_t m_eAngleMode; // 0x0074 + CAnimParamHandle m_hTargetPositionParameter; // 0x0078 + CAnimParamHandle m_hTargetUpVectorParameter; // 0x007A + CAnimParamHandle m_hTargetFacePositionParameter; // 0x007C + CAnimParamHandle m_hMoveHeadingParameter; // 0x007E + CAnimParamHandle m_hDesiredMoveHeadingParameter; // 0x0080 + TargetWarpCorrectionMethod m_eCorrectionMethod; // 0x0084 + TargetWarpTimingMethod m_eTargetWarpTimingMethod; // 0x0088 + bool m_bTargetFacePositionIsWorldSpace; // 0x008C + bool m_bTargetPositionIsWorldSpace; // 0x008D + bool m_bOnlyWarpWhenTagIsFound; // 0x008E + bool m_bWarpOrientationDuringTranslation; // 0x008F + bool m_bWarpAroundCenter; // 0x0090 + float32 m_flMaxAngle; // 0x0094 +}; +class ResourceId_t // resourcefile +{ + uint64 m_Value; // 0x0000 +}; +class ResponseContext_t // server +{ + CUtlSymbolLarge m_iszName; // 0x0000 + CUtlSymbolLarge m_iszValue; // 0x0008 + GameTime_t m_fExpirationTime; // 0x0010 +}; +class C_OP_PointVectorAtNextParticle : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + CPerParticleFloatInput m_flInterpolation; // 0x01D8 +}; +class C_INIT_LifespanFromVelocity : public CParticleFunctionInitializer // particles +{ + Vector m_vecComponentScale; // 0x01D8 + float32 m_flTraceOffset; // 0x01E4 + float32 m_flMaxTraceLength; // 0x01E8 + float32 m_flTraceTolerance; // 0x01EC + int32 m_nMaxPlanes; // 0x01F0 + char[128] m_CollisionGroupName; // 0x01F8 + ParticleTraceSet_t m_nTraceSet; // 0x0278 + bool m_bIncludeWater; // 0x0288 +}; +class VecInputMaterialVariable_t // particles +{ + CUtlString m_strVariable; // 0x0000 + CParticleCollectionVecInput m_vecInput; // 0x0008 +}; +class CVMixDynamics3BandProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixDynamics3BandDesc_t m_desc; // 0x0020 +}; +class CVoiceContainerGenerator : public CVoiceContainerBase // soundsystem_voicecontainers +{ +}; +class VMixEnvelopeDesc_t // soundsystem_lowlevel +{ + float32 m_flAttackTimeMS; // 0x0000 + float32 m_flHoldTimeMS; // 0x0004 + float32 m_flReleaseTimeMS; // 0x0008 +}; +class CBodyGroupSetting // animgraphlib +{ + CUtlString m_BodyGroupName; // 0x0000 + int32 m_nBodyGroupOption; // 0x0008 +}; +class CNmTransitionEvent : public CNmEvent // animlib +{ + NmTransitionRule_t m_rule; // 0x0020 + CGlobalSymbol m_ID; // 0x0028 +}; +class CNmFloatCurveEvent : public CNmEvent // animlib +{ + CGlobalSymbol m_ID; // 0x0020 + CPiecewiseCurve m_curve; // 0x0028 +}; +class NmFloatCurveCompressionSettings_t // animlib +{ + NmCompressionSettings_t::QuantizationRange_t m_range; // 0x0000 + bool m_bIsStatic; // 0x0008 +}; +class ExternalAnimGraphHandle_t // server +{ + uint32 m_Value; // 0x0000 +}; +class CVMixBoxverbProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixBoxverbDesc_t m_desc; // 0x0020 +}; +class VMixPannerDesc_t // soundsystem_lowlevel +{ + VMixPannerType_t m_type; // 0x0000 + float32 m_flStrength; // 0x0004 +}; +class CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + CUtlString m_name; // 0x0008 + int32 m_nChannels; // 0x0014 + float32 m_flxfade; // 0x0018 +}; +class FeTreeChildren_t // physicslib +{ + uint16[2] nChild; // 0x0000 +}; +class FollowAttachmentData // animationsystem +{ + int32 m_boneIndex; // 0x0000 + AttachmentHandle_t m_attachmentHandle; // 0x0004 +}; +class CDirectPlaybackUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + bool m_bFinishEarly; // 0x0074 + bool m_bResetOnFinish; // 0x0075 + CUtlVector< CDirectPlaybackTagData > m_allTags; // 0x0078 +}; +class CSkillFloat // server +{ + float32[4] m_pValue; // 0x0000 +}; +class FeAntiTunnelProbeBuild_t // physicslib +{ + float32 flWeight; // 0x0000 + float32 flActivationDistance; // 0x0004 + float32 flBias; // 0x0008 + float32 flCurvature; // 0x000C + uint32 nFlags; // 0x0010 + uint16 nProbeNode; // 0x0014 + CUtlVector< uint16 > targetNodes; // 0x0018 +}; +class PulseRuntimeVarIndex_t // pulse_runtime_lib +{ + int32 m_Value; // 0x0000 +}; +class CNmBitFlags // animlib +{ + uint32 m_flags; // 0x0000 +}; +class CNmTargetPointNode::CDefinition : public CNmVectorValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + bool m_bIsWorldSpaceTarget; // 0x0012 +}; +class VsInputSignature_t // rendersystemdx11 +{ + CUtlVector< VsInputSignatureElement_t > m_elems; // 0x0000 + CUtlVector< VsInputSignatureElement_t > m_depth_elems; // 0x0018 +}; +class CInventoryImageData // client +{ + InventoryNodeType_t m_nNodeType; // 0x0000 + CUtlString name; // 0x0008 + inv_image_data_t inventory_image_data; // 0x0010 +}; +class locksound_t // server +{ + CUtlSymbolLarge sLockedSound; // 0x0008 + CUtlSymbolLarge sUnlockedSound; // 0x0010 + GameTime_t flwaitSound; // 0x0018 +}; +class C_OP_QuantizeFloat : public CParticleFunctionOperator // particles +{ + CPerParticleFloatInput m_InputValue; // 0x01D0 + ParticleAttributeIndex_t m_nOutputField; // 0x0340 +}; +class C_OP_BasicMovement : public CParticleFunctionOperator // particles +{ + CParticleCollectionVecInput m_Gravity; // 0x01D0 + CParticleCollectionFloatInput m_fDrag; // 0x0888 + CParticleMassCalculationParameters m_massControls; // 0x09F8 + int32 m_nMaxConstraintPasses; // 0x0E50 + bool m_bUseNewCode; // 0x0E54 +}; +class CAudioMorphData // soundsystem_voicecontainers +{ + CUtlVector< float32 > m_times; // 0x0000 + CUtlVector< uint32 > m_nameHashCodes; // 0x0018 + CUtlVector< CUtlString > m_nameStrings; // 0x0030 + CUtlVector< CUtlVector< float32 > > m_samples; // 0x0048 + float32 m_flEaseIn; // 0x0060 + float32 m_flEaseOut; // 0x0064 +}; +class CVMixUtilityProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixUtilityDesc_t m_desc; // 0x0020 +}; +class CVMixAdditionalOutput // soundsystem_lowlevel +{ + CUtlString m_name; // 0x0000 +}; +class CSosGroupActionLimitSchema : public CSosGroupActionSchema // soundsystem +{ + int32 m_nMaxCount; // 0x0008 + SosActionStopType_t m_nStopType; // 0x000C + SosActionLimitSortType_t m_nSortType; // 0x0010 + bool m_bStopImmediate; // 0x0014 + bool m_bCountStopped; // 0x0015 +}; +class CPulse_Constant // pulse_runtime_lib +{ + CPulseValueFullType m_Type; // 0x0000 + KeyValues3 m_Value; // 0x0018 +}; +class EventServerBeginSimulate_t : public EventSimulate_t // engine2 +{ +}; +class C_INIT_CreationNoise : public CParticleFunctionInitializer // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D8 + bool m_bAbsVal; // 0x01DC + bool m_bAbsValInv; // 0x01DD + float32 m_flOffset; // 0x01E0 + float32 m_flOutputMin; // 0x01E4 + float32 m_flOutputMax; // 0x01E8 + float32 m_flNoiseScale; // 0x01EC + float32 m_flNoiseScaleLoc; // 0x01F0 + Vector m_vecOffsetLoc; // 0x01F4 + float32 m_flWorldTimeScale; // 0x0200 +}; +class C_INIT_CreateWithinBox : public CParticleFunctionInitializer // particles +{ + CPerParticleVecInput m_vecMin; // 0x01D8 + CPerParticleVecInput m_vecMax; // 0x0890 + int32 m_nControlPointNumber; // 0x0F48 + bool m_bLocalSpace; // 0x0F4C + CRandomNumberGeneratorParameters m_randomnessParameters; // 0x0F50 + bool m_bUseNewCode; // 0x0F58 +}; +class CVMixPresetDSPProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixPresetDSPDesc_t m_desc; // 0x0020 +}; +class CSosGroupActionMemberCountEnvelopeSchema : public CSosGroupActionSchema // soundsystem +{ + int32 m_nBaseCount; // 0x0008 + int32 m_nTargetCount; // 0x000C + float32 m_flBaseValue; // 0x0010 + float32 m_flTargetValue; // 0x0014 + float32 m_flAttack; // 0x0018 + float32 m_flDecay; // 0x001C + CUtlString m_resultVarName; // 0x0020 + bool m_bSaveToGroup; // 0x0028 +}; +class CNmTransitionEventConditionNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + CGlobalSymbol m_requireRuleID; // 0x0010 + CNmBitFlags m_eventConditionRules; // 0x0018 + int16 m_nSourceStateNodeIdx; // 0x001C + NmTransitionRuleCondition_t m_ruleCondition; // 0x001E +}; +class ModelSkeletonData_t // modellib +{ + CUtlVector< CUtlString > m_boneName; // 0x0000 + CUtlVector< int16 > m_nParent; // 0x0018 + CUtlVector< float32 > m_boneSphere; // 0x0030 + CUtlVector< uint32 > m_nFlag; // 0x0048 + CUtlVector< Vector > m_bonePosParent; // 0x0060 + CUtlVector< QuaternionStorage > m_boneRotParent; // 0x0078 + CUtlVector< float32 > m_boneScaleParent; // 0x0090 +}; +class CNmConstBoolNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + bool m_bValue; // 0x0010 +}; +class CNmZeroPoseNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ +}; +class EventSimpleLoopFrameUpdate_t // engine2 +{ + EngineLoopState_t m_LoopState; // 0x0000 + float32 m_flRealTime; // 0x0028 + float32 m_flFrameTime; // 0x002C +}; +class CRR_Response // server +{ + uint8 m_Type; // 0x0000 + char[192] m_szResponseName; // 0x0001 + char[128] m_szMatchingRule; // 0x00C1 + ResponseParams m_Params; // 0x0160 + float32 m_fMatchScore; // 0x0180 + bool m_bAnyMatchingRulesInCooldown; // 0x0184 + char* m_szSpeakerContext; // 0x0188 + char* m_szWorldContext; // 0x0190 + ResponseFollowup m_Followup; // 0x0198 + CUtlSymbol m_recipientFilter; // 0x01CA +}; +class C_OP_RemapScalarOnceTimed : public CParticleFunctionOperator // particles +{ + bool m_bProportional; // 0x01D0 + ParticleAttributeIndex_t m_nFieldInput; // 0x01D4 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D8 + float32 m_flInputMin; // 0x01DC + float32 m_flInputMax; // 0x01E0 + float32 m_flOutputMin; // 0x01E4 + float32 m_flOutputMax; // 0x01E8 + float32 m_flRemapTime; // 0x01EC +}; +class CNmEvent // animlib +{ + NmPercent_t m_flStartTime; // 0x0008 + NmPercent_t m_flDuration; // 0x000C + CGlobalSymbol m_syncID; // 0x0010 + bool m_bClientOnly; // 0x0018 +}; +class ModelBoneFlexDriverControl_t // modellib +{ + ModelBoneFlexComponent_t m_nBoneComponent; // 0x0000 + CUtlString m_flexController; // 0x0008 + uint32 m_flexControllerToken; // 0x0010 + float32 m_flMin; // 0x0014 + float32 m_flMax; // 0x0018 +}; +class C_OP_OrientTo2dDirection : public CParticleFunctionOperator // particles +{ + float32 m_flRotOffset; // 0x01D0 + float32 m_flSpinStrength; // 0x01D4 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D8 +}; +class C_OP_VelocityMatchingForce : public CParticleFunctionOperator // particles +{ + float32 m_flDirScale; // 0x01D0 + float32 m_flSpdScale; // 0x01D4 + float32 m_flNeighborDistance; // 0x01D8 + float32 m_flFacingStrength; // 0x01DC + bool m_bUseAABB; // 0x01E0 + int32 m_nCPBroadcast; // 0x01E4 +}; +class C_OP_LockPoints : public CParticleFunctionOperator // particles +{ + int32 m_nMinCol; // 0x01D0 + int32 m_nMaxCol; // 0x01D4 + int32 m_nMinRow; // 0x01D8 + int32 m_nMaxRow; // 0x01DC + int32 m_nControlPoint; // 0x01E0 + float32 m_flBlendValue; // 0x01E4 +}; +class CPathAnimMotorUpdater : public CPathAnimMotorUpdaterBase // animgraphlib +{ +}; +class SummaryTakeDamageInfo_t // server +{ + int32 nSummarisedCount; // 0x0000 + CTakeDamageInfo info; // 0x0008 + CTakeDamageResult result; // 0x0128 + CHandle< CBaseEntity > hTarget; // 0x0158 +}; +class C_INIT_CreateOnModel : public CParticleFunctionInitializer // particles +{ + CParticleModelInput m_modelInput; // 0x01D8 + CParticleTransformInput m_transformInput; // 0x0238 + int32 m_nForceInModel; // 0x02A0 + bool m_bScaleToVolume; // 0x02A4 + bool m_bEvenDistribution; // 0x02A5 + CParticleCollectionFloatInput m_nDesiredHitbox; // 0x02A8 + int32 m_nHitboxValueFromControlPointIndex; // 0x0418 + CParticleCollectionVecInput m_vecHitBoxScale; // 0x0420 + float32 m_flBoneVelocity; // 0x0AD8 + float32 m_flMaxBoneVelocity; // 0x0ADC + CParticleCollectionVecInput m_vecDirectionBias; // 0x0AE0 + char[128] m_HitboxSetName; // 0x1198 + bool m_bLocalCoords; // 0x1218 + bool m_bUseBones; // 0x1219 + bool m_bUseMesh; // 0x121A + CParticleCollectionFloatInput m_flShellSize; // 0x1220 +}; +class C_OP_SetControlPointOrientationToCPVelocity : public CParticleFunctionPreEmission // particles +{ + int32 m_nCPInput; // 0x01D8 + int32 m_nCPOutput; // 0x01DC +}; +class SteamAudioCustomDataDimensionsSettings_t // steamaudio +{ + int32 m_nAmbisonicsOrderOutsideField; // 0x0000 + int32 m_nAmbisonicsOrderInsideSizeField; // 0x0004 + float32 m_flOutsideThreshold; // 0x0008 + float32 m_flSizeThreshold; // 0x000C + float32 m_flInsideThreshold; // 0x0010 +}; +class CSteamAudioBakedOcclusionData // steamaudio +{ + SteamAudioCustomDataOcclusionSettings_t m_settings; // 0x0000 + CSteamAudioProbeData m_probes; // 0x0010 + CUtlVector< float32 > m_vecPathingRatio; // 0x0018 + CUtlVector< float32 > m_vecPathingDeviation; // 0x0030 + CUtlVector< float32 > m_vecReflectionRatio; // 0x0048 +}; +class CTwoBoneIKUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + TwoBoneIKSettings_t m_opFixedData; // 0x0070 +}; +class CNmTarget // animlib +{ + CTransform m_transform; // 0x0000 + CGlobalSymbol m_boneID; // 0x0020 + bool m_bIsBoneTarget; // 0x0028 + bool m_bIsUsingBoneSpaceOffsets; // 0x0029 + bool m_bHasOffsets; // 0x002A + bool m_bIsSet; // 0x002B +}; +class CScriptUniformRandomStream // server +{ + HSCRIPT m_hScriptScope; // 0x0008 + int32 m_nInitialSeed; // 0x009C +}; +class C_OP_SelectivelyEnableChildren : public CParticleFunctionPreEmission // particles +{ + CParticleCollectionFloatInput m_nChildGroupID; // 0x01D8 + CParticleCollectionFloatInput m_nFirstChild; // 0x0348 + CParticleCollectionFloatInput m_nNumChildrenToEnable; // 0x04B8 + bool m_bPlayEndcapOnStop; // 0x0628 + bool m_bDestroyImmediately; // 0x0629 +}; +class RnHalfEdge_t // physicslib +{ + uint8 m_nNext; // 0x0000 + uint8 m_nTwin; // 0x0001 + uint8 m_nOrigin; // 0x0002 + uint8 m_nFace; // 0x0003 +}; +class PulseGraphExecutionHistoryCursorDesc_t // pulse_runtime_lib +{ + CUtlVector< PulseCursorID_t > vecAncestorCursorIDs; // 0x0000 + PulseDocNodeID_t nSpawnNodeID; // 0x0018 + PulseDocNodeID_t nRetiredAtNodeID; // 0x001C + float32 flLastReferenced; // 0x0020 + int32 nLastValidEntryIdx; // 0x0024 +}; +class CCompositeMaterialEditorDoc // compositematerialslib +{ + int32 m_nVersion; // 0x0008 + CUtlVector< CompositeMaterialEditorPoint_t > m_Points; // 0x0010 + KeyValues3 m_KVthumbnail; // 0x0028 +}; +class SoundOpvarTraceResult_t // server +{ + Vector vPos; // 0x0000 + bool bDidHit; // 0x000C + float32 flDistSqrToCenter; // 0x0010 +}; +class C_OP_SetFromCPSnapshot : public CParticleFunctionOperator // particles +{ + int32 m_nControlPointNumber; // 0x01D0 + CUtlString m_strSnapshotSubset; // 0x01D8 + ParticleAttributeIndex_t m_nAttributeToRead; // 0x01E0 + ParticleAttributeIndex_t m_nAttributeToWrite; // 0x01E4 + int32 m_nLocalSpaceCP; // 0x01E8 + bool m_bRandom; // 0x01EC + bool m_bReverse; // 0x01ED + int32 m_nRandomSeed; // 0x01F0 + CParticleCollectionFloatInput m_nSnapShotStartPoint; // 0x01F8 + CParticleCollectionFloatInput m_nSnapShotIncrement; // 0x0368 + CPerParticleFloatInput m_flInterpolation; // 0x04D8 + bool m_bSubSample; // 0x0648 + bool m_bPrev; // 0x0649 +}; +class C_OP_ClampVector : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + CPerParticleVecInput m_vecOutputMin; // 0x01D8 + CPerParticleVecInput m_vecOutputMax; // 0x0890 +}; +class C_OP_RemapDensityToVector : public CParticleFunctionOperator // particles +{ + float32 m_flRadiusScale; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + float32 m_flDensityMin; // 0x01D8 + float32 m_flDensityMax; // 0x01DC + Vector m_vecOutputMin; // 0x01E0 + Vector m_vecOutputMax; // 0x01EC + bool m_bUseParentDensity; // 0x01F8 + int32 m_nVoxelGridResolution; // 0x01FC +}; +class CTakeDamageInfo // server +{ + Vector m_vecDamageForce; // 0x0008 + VectorWS m_vecDamagePosition; // 0x0014 + VectorWS m_vecReportedPosition; // 0x0020 + Vector m_vecDamageDirection; // 0x002C + CHandle< CBaseEntity > m_hInflictor; // 0x0038 + CHandle< CBaseEntity > m_hAttacker; // 0x003C + CHandle< CBaseEntity > m_hAbility; // 0x0040 + float32 m_flDamage; // 0x0044 + float32 m_flTotalledDamage; // 0x0048 + DamageTypes_t m_bitsDamageType; // 0x004C + int32 m_iDamageCustom; // 0x0050 + AmmoIndex_t m_iAmmoType; // 0x0054 + float32 m_flOriginalDamage; // 0x0060 + bool m_bShouldBleed; // 0x0064 + bool m_bShouldSpark; // 0x0065 + TakeDamageFlags_t m_nDamageFlags; // 0x0070 + HitGroup_t m_iHitGroupId; // 0x0078 + int32 m_nNumObjectsPenetrated; // 0x007C + float32 m_flFriendlyFireDamageReductionRatio; // 0x0080 + bool m_bStoppedBullet; // 0x0084 + CUtlVector< DestructibleHitGroupToDestroy_t > m_nDestructibleHitGroupsToForceDestroy; // 0x0100 + bool m_bInTakeDamageFlow; // 0x0118 +}; +class C_INIT_DistanceCull : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPoint; // 0x01D8 + CParticleCollectionFloatInput m_flDistance; // 0x01E0 + bool m_bCullInside; // 0x0350 +}; +class C_INIT_RemapTransformOrientationToRotations : public CParticleFunctionInitializer // particles +{ + CParticleTransformInput m_TransformInput; // 0x01D8 + Vector m_vecRotation; // 0x0240 + bool m_bUseQuat; // 0x024C + bool m_bWriteNormal; // 0x024D +}; +class C_INIT_CreateInEpitrochoid : public CParticleFunctionInitializer // particles +{ + int32 m_nComponent1; // 0x01D8 + int32 m_nComponent2; // 0x01DC + CParticleTransformInput m_TransformInput; // 0x01E0 + CPerParticleFloatInput m_flParticleDensity; // 0x0248 + CPerParticleFloatInput m_flOffset; // 0x03B8 + CPerParticleFloatInput m_flRadius1; // 0x0528 + CPerParticleFloatInput m_flRadius2; // 0x0698 + bool m_bUseCount; // 0x0808 + bool m_bUseLocalCoords; // 0x0809 + bool m_bOffsetExistingPos; // 0x080A +}; +class C_OP_SetControlPointPositions : public CParticleFunctionPreEmission // particles +{ + bool m_bUseWorldLocation; // 0x01D8 + bool m_bOrient; // 0x01D9 + bool m_bSetOnce; // 0x01DA + int32 m_nCP1; // 0x01DC + int32 m_nCP2; // 0x01E0 + int32 m_nCP3; // 0x01E4 + int32 m_nCP4; // 0x01E8 + Vector m_vecCP1Pos; // 0x01EC + Vector m_vecCP2Pos; // 0x01F8 + Vector m_vecCP3Pos; // 0x0204 + Vector m_vecCP4Pos; // 0x0210 + int32 m_nHeadLocation; // 0x021C +}; +class CSosGroupActionSetSoundeventParameterSchema : public CSosGroupActionSchema // soundsystem +{ + int32 m_nMaxCount; // 0x0008 + float32 m_flMinValue; // 0x000C + float32 m_flMaxValue; // 0x0010 + CUtlString m_opvarName; // 0x0018 + SosActionSetParamSortType_t m_nSortType; // 0x0020 +}; +class CVoiceContainerNull : public CVoiceContainerGenerator // soundsystem_voicecontainers +{ +}; +class AnimScriptHandle // modellib +{ + uint32 m_id; // 0x0000 +}; +class CNmOrNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + CUtlLeanVectorFixedGrowable< int16, 4 > m_conditionNodeIndices; // 0x0010 +}; +class InfoForResourceTypeCResourceManifestInternal // resourcefile +{ +}; +class CollisionDetailLayerInfo_t // physicslib +{ + CUtlString m_sDescription; // 0x0000 + CUtlString m_sFriendlyName; // 0x0008 + bool m_bIsQueryOnly; // 0x0010 + CUtlString m_sParentDetailLayer; // 0x0018 + CUtlVector< CollisionDetailLayerInfo_t::Name_t > m_vecSubtreeDetailLayers; // 0x0020 + bool m_bNotPickable; // 0x0038 +}; +class CAnimEncodedFrames // animationsystem +{ + CBufferString m_fileName; // 0x0000 + int32 m_nFrames; // 0x0010 + int32 m_nFramesPerBlock; // 0x0014 + CUtlVector< CAnimFrameBlockAnim > m_frameblockArray; // 0x0018 + CAnimEncodeDifference m_usageDifferences; // 0x0030 +}; +class VPhysXConstraint2_t // modellib +{ + uint32 m_nFlags; // 0x0000 + uint16 m_nParent; // 0x0004 + uint16 m_nChild; // 0x0006 + VPhysXConstraintParams_t m_params; // 0x0008 +}; +class CNmBlend2DNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ + CUtlVectorFixedGrowable< int16, 5 > m_sourceNodeIndices; // 0x0010 + int16 m_nInputParameterNodeIdx0; // 0x0038 + int16 m_nInputParameterNodeIdx1; // 0x003A + CUtlVectorFixedGrowable< Vector2D, 10 > m_values; // 0x0040 + CUtlVectorFixedGrowable< uint8, 30 > m_indices; // 0x00A8 + CUtlVectorFixedGrowable< uint8, 10 > m_hullIndices; // 0x00E0 + bool m_bAllowLooping; // 0x0108 +}; +class CWarpSectionAnimTagBase : public CAnimTagBase // animgraphlib +{ +}; +class EventClientSceneSystemThreadStateChange_t // engine2 +{ + bool m_bThreadsActive; // 0x0000 +}; +class CEmptyEntityInstance // entity2 +{ +}; +class C_OP_RemapDotProductToCP : public CParticleFunctionPreEmission // particles +{ + int32 m_nInputCP1; // 0x01D8 + int32 m_nInputCP2; // 0x01DC + int32 m_nOutputCP; // 0x01E0 + int32 m_nOutVectorField; // 0x01E4 + CParticleCollectionFloatInput m_flInputMin; // 0x01E8 + CParticleCollectionFloatInput m_flInputMax; // 0x0358 + CParticleCollectionFloatInput m_flOutputMin; // 0x04C8 + CParticleCollectionFloatInput m_flOutputMax; // 0x0638 +}; +class C_INIT_CreateFromParentParticles : public CParticleFunctionInitializer // particles +{ + float32 m_flVelocityScale; // 0x01D8 + float32 m_flIncrement; // 0x01DC + bool m_bRandomDistribution; // 0x01E0 + int32 m_nRandomSeed; // 0x01E4 + bool m_bSubFrame; // 0x01E8 + bool m_bSetRopeSegmentID; // 0x01E9 +}; +class C_OP_IntraParticleForce : public CParticleFunctionForce // particles +{ + float32 m_flAttractionMinDistance; // 0x01E0 + float32 m_flAttractionMaxDistance; // 0x01E4 + float32 m_flAttractionMaxStrength; // 0x01E8 + float32 m_flRepulsionMinDistance; // 0x01EC + float32 m_flRepulsionMaxDistance; // 0x01F0 + float32 m_flRepulsionMaxStrength; // 0x01F4 + bool m_bUseAABB; // 0x01F8 +}; +class CVMixFilterProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixFilterDesc_t m_desc; // 0x0020 +}; +class FeHingeLimitBuild_t // physicslib +{ + uint16[6] nNode; // 0x0000 + uint32 nFlags; // 0x000C + float32 flLimitCW; // 0x0010 + float32 flLimitCCW; // 0x0014 +}; +class CNmIDEventPercentageThroughNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_nSourceStateNodeIdx; // 0x0010 + CNmBitFlags m_eventConditionRules; // 0x0014 + CGlobalSymbol m_eventID; // 0x0018 +}; +class CNmControlParameterBoolNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ +}; +class EventPreDataUpdate_t // engine2 +{ + int32 m_nCount; // 0x0000 +}; +class CDSPPresetMixgroupModifierTable // soundsystem +{ + CUtlVector< CDspPresetModifierList > m_table; // 0x0000 +}; +class VMixEffectChainDesc_t // soundsystem_lowlevel +{ + CUtlString m_effectName; // 0x0000 +}; +class HitReactFixedSettings_t // animgraphlib +{ + int32 m_nWeightListIndex; // 0x0000 + int32 m_nEffectedBoneCount; // 0x0004 + float32 m_flMaxImpactForce; // 0x0008 + float32 m_flMinImpactForce; // 0x000C + float32 m_flWhipImpactScale; // 0x0010 + float32 m_flCounterRotationScale; // 0x0014 + float32 m_flDistanceFadeScale; // 0x0018 + float32 m_flPropagationScale; // 0x001C + float32 m_flWhipDelay; // 0x0020 + float32 m_flSpringStrength; // 0x0024 + float32 m_flWhipSpringStrength; // 0x0028 + float32 m_flMaxAngleRadians; // 0x002C + int32 m_nHipBoneIndex; // 0x0030 + float32 m_flHipBoneTranslationScale; // 0x0034 + float32 m_flHipDipSpringStrength; // 0x0038 + float32 m_flHipDipImpactScale; // 0x003C + float32 m_flHipDipDelay; // 0x0040 +}; +class CNmParameterizedBlendNode::Parameterization_t // animlib +{ + CUtlLeanVectorFixedGrowable< CNmParameterizedBlendNode::BlendRange_t, 5 > m_blendRanges; // 0x0000 + Range_t m_parameterRange; // 0x0048 +}; +class CPhysSurfacePropertiesAudio // modellib +{ + float32 m_reflectivity; // 0x0000 + float32 m_hardnessFactor; // 0x0004 + float32 m_roughnessFactor; // 0x0008 + float32 m_roughThreshold; // 0x000C + float32 m_hardThreshold; // 0x0010 + float32 m_hardVelocityThreshold; // 0x0014 + float32 m_flStaticImpactVolume; // 0x0018 + float32 m_flOcclusionFactor; // 0x001C +}; +class ParticlePreviewBodyGroup_t // particles +{ + CUtlString m_bodyGroupName; // 0x0000 + int32 m_nValue; // 0x0008 +}; +class C_OP_GlobalLight : public CParticleFunctionOperator // particles +{ + float32 m_flScale; // 0x01D0 + bool m_bClampLowerRange; // 0x01D4 + bool m_bClampUpperRange; // 0x01D5 +}; +class C_INIT_RandomSequence : public CParticleFunctionInitializer // particles +{ + int32 m_nSequenceMin; // 0x01D8 + int32 m_nSequenceMax; // 0x01DC + bool m_bShuffle; // 0x01E0 + bool m_bLinear; // 0x01E1 + CUtlVector< SequenceWeightedList_t > m_WeightedList; // 0x01E8 +}; +class C_INIT_CreateFromCPs : public CParticleFunctionInitializer // particles +{ + int32 m_nIncrement; // 0x01D8 + int32 m_nMinCP; // 0x01DC + int32 m_nMaxCP; // 0x01E0 + CParticleCollectionFloatInput m_nDynamicCPCount; // 0x01E8 +}; +class CSosGroupActionSchema // soundsystem +{ +}; +class FeFollowNode_t // physicslib +{ + uint16 nParentNode; // 0x0000 + uint16 nChildNode; // 0x0002 + float32 flWeight; // 0x0004 +}; +class CAnimParamHandle // animgraphlib +{ + AnimParamType_t m_type; // 0x0000 + uint8 m_index; // 0x0001 +}; +class CSmoothFunc // server +{ + float32 m_flSmoothAmplitude; // 0x0008 + float32 m_flSmoothBias; // 0x000C + float32 m_flSmoothDuration; // 0x0010 + float32 m_flSmoothRemainingTime; // 0x0014 + int32 m_nSmoothDir; // 0x0018 +}; +class C_OP_MovementMoveAlongSkinnedCPSnapshot : public CParticleFunctionOperator // particles +{ + int32 m_nControlPointNumber; // 0x01D0 + int32 m_nSnapshotControlPointNumber; // 0x01D4 + bool m_bSetNormal; // 0x01D8 + bool m_bSetRadius; // 0x01D9 + CPerParticleFloatInput m_flInterpolation; // 0x01E0 + CPerParticleFloatInput m_flTValue; // 0x0350 +}; +class SteamAudioReverbSettings_t // steamaudio +{ + int32 m_nNumRays; // 0x0000 + int32 m_nNumBounces; // 0x0004 + float32 m_flIRDuration; // 0x0008 + int32 m_nAmbisonicsOrder; // 0x000C +}; +class CEntityAttributeTable // entity2 +{ + CUtlOrderedMap< CUtlStringToken, Attribute_t > m_Attributes; // 0x0000 + CUtlOrderedMap< CUtlStringToken, CUtlString > m_Names; // 0x0028 +}; +class CFiringModeFloat // server +{ + float32[2] m_flValues; // 0x0000 +}; +class C_OP_RemapCPtoVector : public CParticleFunctionOperator // particles +{ + int32 m_nCPInput; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + int32 m_nLocalSpaceCP; // 0x01D8 + Vector m_vInputMin; // 0x01DC + Vector m_vInputMax; // 0x01E8 + Vector m_vOutputMin; // 0x01F4 + Vector m_vOutputMax; // 0x0200 + float32 m_flStartTime; // 0x020C + float32 m_flEndTime; // 0x0210 + float32 m_flInterpRate; // 0x0214 + ParticleSetMethod_t m_nSetMethod; // 0x0218 + bool m_bOffset; // 0x021C + bool m_bAccelerate; // 0x021D +}; +class CSeqMultiFetchFlag // animationsystem +{ + bool m_bRealtime; // 0x0000 + bool m_bCylepose; // 0x0001 + bool m_b0D; // 0x0002 + bool m_b1D; // 0x0003 + bool m_b2D; // 0x0004 + bool m_b2D_TRI; // 0x0005 +}; +class CNmParticleEvent : public CNmEvent // animlib +{ + CNmEventRelevance_t m_relevance; // 0x0020 + CNmParticleEvent::Type_t m_type; // 0x0024 + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_hParticleSystem; // 0x0028 + CUtlString m_tags; // 0x0030 + bool m_bStopImmediately; // 0x0038 + bool m_bDetachFromOwner; // 0x0039 + bool m_bPlayEndCap; // 0x003A + CUtlString m_attachmentPoint0; // 0x0040 + ParticleAttachment_t m_attachmentType0; // 0x0048 + CUtlString m_attachmentPoint1; // 0x0050 + ParticleAttachment_t m_attachmentType1; // 0x0058 + CUtlString m_config; // 0x0060 + CUtlString m_effectForConfig; // 0x0068 +}; +class CNmSyncTrack::Event_t // animlib +{ + CGlobalSymbol m_ID; // 0x0000 + NmPercent_t m_startTime; // 0x0008 + NmPercent_t m_duration; // 0x000C +}; +class InfoForResourceTypeCVSoundEventScriptList // resourcesystem +{ +}; +class lerpdata_t // server +{ + CHandle< CBaseEntity > m_hEnt; // 0x0000 + MoveType_t m_MoveType; // 0x0004 + GameTime_t m_flStartTime; // 0x0008 + Vector m_vecStartOrigin; // 0x000C + Quaternion m_qStartRot; // 0x0020 + ParticleIndex_t m_nFXIndex; // 0x0030 +}; +class C_OP_LerpScalar : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + CPerParticleFloatInput m_flOutput; // 0x01D8 + float32 m_flStartTime; // 0x0348 + float32 m_flEndTime; // 0x034C +}; +class C_OP_RenderModels : public CParticleFunctionRenderer // particles +{ + bool m_bOnlyRenderInEffectsBloomPass; // 0x0220 + bool m_bOnlyRenderInEffectsWaterPass; // 0x0221 + bool m_bUseMixedResolutionRendering; // 0x0222 + bool m_bOnlyRenderInEffecsGameOverlay; // 0x0223 + CUtlVector< ModelReference_t > m_ModelList; // 0x0228 + ParticleAttributeIndex_t m_nBodyGroupField; // 0x0240 + ParticleAttributeIndex_t m_nSubModelField; // 0x0244 + bool m_bIgnoreNormal; // 0x0248 + bool m_bOrientZ; // 0x0249 + bool m_bCenterOffset; // 0x024A + CPerParticleVecInput m_vecLocalOffset; // 0x0250 + CPerParticleVecInput m_vecLocalRotation; // 0x0908 + bool m_bIgnoreRadius; // 0x0FC0 + int32 m_nModelScaleCP; // 0x0FC4 + CPerParticleVecInput m_vecComponentScale; // 0x0FC8 + bool m_bLocalScale; // 0x1680 + int32 m_nSizeCullBloat; // 0x1684 + bool m_bAnimated; // 0x1688 + CPerParticleFloatInput m_flAnimationRate; // 0x1690 + bool m_bScaleAnimationRate; // 0x1800 + bool m_bForceLoopingAnimation; // 0x1801 + bool m_bResetAnimOnStop; // 0x1802 + bool m_bManualAnimFrame; // 0x1803 + ParticleAttributeIndex_t m_nAnimationScaleField; // 0x1804 + ParticleAttributeIndex_t m_nAnimationField; // 0x1808 + ParticleAttributeIndex_t m_nManualFrameField; // 0x180C + char[256] m_ActivityName; // 0x1810 + char[256] m_SequenceName; // 0x1910 + bool m_bEnableClothSimulation; // 0x1A10 + char[64] m_ClothEffectName; // 0x1A11 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hOverrideMaterial; // 0x1A58 + bool m_bOverrideTranslucentMaterials; // 0x1A60 + CPerParticleFloatInput m_nSkin; // 0x1A68 + CUtlVector< MaterialVariable_t > m_MaterialVars; // 0x1BD8 + CPerParticleFloatInput m_flRenderFilter; // 0x1BF0 + CPerParticleFloatInput m_flManualModelSelection; // 0x1D60 + CParticleModelInput m_modelInput; // 0x1ED0 + int32 m_nLOD; // 0x1F30 + char[256] m_EconSlotName; // 0x1F34 + bool m_bOriginalModel; // 0x2034 + bool m_bSuppressTint; // 0x2035 + RenderModelSubModelFieldType_t m_nSubModelFieldType; // 0x2038 + bool m_bDisableShadows; // 0x203C + bool m_bDisableDepthPrepass; // 0x203D + bool m_bAcceptsDecals; // 0x203E + bool m_bForceDrawInterlevedWithSiblings; // 0x203F + bool m_bDoNotDrawInParticlePass; // 0x2040 + bool m_bAllowApproximateTransforms; // 0x2041 + char[260] m_szRenderAttribute; // 0x2042 + CParticleCollectionFloatInput m_flRadiusScale; // 0x2148 + CParticleCollectionFloatInput m_flAlphaScale; // 0x22B8 + CParticleCollectionFloatInput m_flRollScale; // 0x2428 + ParticleAttributeIndex_t m_nAlpha2Field; // 0x2598 + CParticleCollectionVecInput m_vecColorScale; // 0x25A0 + ParticleColorBlendType_t m_nColorBlendType; // 0x2C58 +}; +class FeSimdSpringIntegrator_t // physicslib +{ + uint16[4][2] nNode; // 0x0000 + fltx4 flSpringRestLength; // 0x0010 + fltx4 flSpringConstant; // 0x0020 + fltx4 flSpringDamping; // 0x0030 + fltx4 flNodeWeight0; // 0x0040 +}; +class CParticleModelInput : public CParticleInput // particleslib +{ + ParticleModelType_t m_nType; // 0x0010 + CParticleNamedValueRef m_NamedValue; // 0x0018 + int32 m_nControlPoint; // 0x0058 +}; +class CHitBoxSetList // modellib +{ + CUtlVector< CHitBoxSet > m_HitBoxSets; // 0x0000 +}; +class CNmIKEffector // animlib +{ + int32 m_nBodyIndex; // 0x0000 + bool m_bEnabled; // 0x0004 + Vector m_vTargetPosition; // 0x0008 + Quaternion m_qTargetOrientation; // 0x0020 + float32 m_flWeight; // 0x0030 +}; +class CNmExternalPoseNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ + bool m_bShouldSampleRootMotion; // 0x0010 +}; +class ModelEmbeddedMesh_t // modellib +{ + CUtlString m_Name; // 0x0000 + int32 m_nMeshIndex; // 0x0010 + int32 m_nDataBlock; // 0x0014 + int32 m_nMorphBlock; // 0x0018 + CUtlVector< ModelMeshBufferData_t > m_vertexBuffers; // 0x0020 + CUtlVector< ModelMeshBufferData_t > m_indexBuffers; // 0x0038 + CUtlVector< ModelMeshBufferData_t > m_toolsBuffers; // 0x0050 + int32 m_nVBIBBlock; // 0x0068 + int32 m_nToolsVBBlock; // 0x006C +}; +class CNavVolumeSphere : public CNavVolume // navlib +{ + Vector m_vCenter; // 0x0078 + float32 m_flRadius; // 0x0084 +}; +class C_INIT_InitialRepulsionVelocity : public CParticleFunctionInitializer // particles +{ + char[128] m_CollisionGroupName; // 0x01D8 + ParticleTraceSet_t m_nTraceSet; // 0x0258 + Vector m_vecOutputMin; // 0x025C + Vector m_vecOutputMax; // 0x0268 + int32 m_nControlPointNumber; // 0x0274 + bool m_bPerParticle; // 0x0278 + bool m_bTranslate; // 0x0279 + bool m_bProportional; // 0x027A + float32 m_flTraceLength; // 0x027C + bool m_bPerParticleTR; // 0x0280 + bool m_bInherit; // 0x0281 + int32 m_nChildCP; // 0x0284 + int32 m_nChildGroupID; // 0x0288 +}; +class C_INIT_InitialVelocityFromHitbox : public CParticleFunctionInitializer // particles +{ + float32 m_flVelocityMin; // 0x01D8 + float32 m_flVelocityMax; // 0x01DC + int32 m_nControlPointNumber; // 0x01E0 + char[128] m_HitboxSetName; // 0x01E4 + bool m_bUseBones; // 0x0264 +}; +class C_INIT_RemapNamedModelBodyPartToScalar : public C_INIT_RemapNamedModelElementToScalar // particles +{ +}; +class CNmScaleTask : public CNmPoseTask // animlib +{ +}; +class CMotionGraphConfig // animgraphlib +{ + float32[4] m_paramValues; // 0x0000 + float32 m_flDuration; // 0x0010 + MotionIndex m_nMotionIndex; // 0x0014 + int32 m_nSampleStart; // 0x0018 + int32 m_nSampleCount; // 0x001C +}; +class CAnimGraphSettingsManager // animgraphlib +{ + CUtlVector< CSmartPtr< CAnimGraphSettingsGroup > > m_settingsGroups; // 0x0018 +}; +class EngineLoopState_t // engine2 +{ + int32 m_nPlatWindowWidth; // 0x0018 + int32 m_nPlatWindowHeight; // 0x001C + int32 m_nRenderWidth; // 0x0020 + int32 m_nRenderHeight; // 0x0024 +}; +class C_INIT_StatusEffect : public CParticleFunctionInitializer // particles +{ + Detail2Combo_t m_nDetail2Combo; // 0x01D8 + float32 m_flDetail2Rotation; // 0x01DC + float32 m_flDetail2Scale; // 0x01E0 + float32 m_flDetail2BlendFactor; // 0x01E4 + float32 m_flColorWarpIntensity; // 0x01E8 + float32 m_flDiffuseWarpBlendToFull; // 0x01EC + float32 m_flEnvMapIntensity; // 0x01F0 + float32 m_flAmbientScale; // 0x01F4 + Color m_specularColor; // 0x01F8 + float32 m_flSpecularScale; // 0x01FC + float32 m_flSpecularExponent; // 0x0200 + float32 m_flSpecularExponentBlendToFull; // 0x0204 + float32 m_flSpecularBlendToFull; // 0x0208 + Color m_rimLightColor; // 0x020C + float32 m_flRimLightScale; // 0x0210 + float32 m_flReflectionsTintByBaseBlendToNone; // 0x0214 + float32 m_flMetalnessBlendToFull; // 0x0218 + float32 m_flSelfIllumBlendToFull; // 0x021C +}; +class C_OP_ColorInterpolate : public CParticleFunctionOperator // particles +{ + Color m_ColorFade; // 0x01D0 + float32 m_flFadeStartTime; // 0x01E0 + float32 m_flFadeEndTime; // 0x01E4 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01E8 + bool m_bEaseInOut; // 0x01EC +}; +class C_OP_WindForce : public CParticleFunctionForce // particles +{ + Vector m_vForce; // 0x01E0 +}; +class CVoiceContainerRandomSampler : public CVoiceContainerAsyncGenerator // soundsystem_voicecontainers +{ + float32 m_flAmplitude; // 0x00B8 + float32 m_flAmplitudeJitter; // 0x00BC + float32 m_flTimeJitter; // 0x00C0 + float32 m_flMaxLength; // 0x00C4 + int32 m_nNumDelayVariations; // 0x00C8 + CUtlVector< CStrongHandle< InfoForResourceTypeCVoiceContainerBase > > m_grainResources; // 0x00D0 +}; +class CVoiceContainerRealtimeFMSineWave : public CVoiceContainerGenerator // soundsystem_voicecontainers +{ + float32 m_flCarrierFrequency; // 0x00A8 + float32 m_flModulatorFrequency; // 0x00AC + float32 m_flModulatorAmount; // 0x00B0 +}; +class VPhysXConstraintParams_t // modellib +{ + int8 m_nType; // 0x0000 + int8 m_nTranslateMotion; // 0x0001 + int8 m_nRotateMotion; // 0x0002 + int8 m_nFlags; // 0x0003 + Vector[2] m_anchor; // 0x0004 + QuaternionStorage[2] m_axes; // 0x001C + float32 m_maxForce; // 0x003C + float32 m_maxTorque; // 0x0040 + float32 m_linearLimitValue; // 0x0044 + float32 m_linearLimitRestitution; // 0x0048 + float32 m_linearLimitSpring; // 0x004C + float32 m_linearLimitDamping; // 0x0050 + float32 m_twistLowLimitValue; // 0x0054 + float32 m_twistLowLimitRestitution; // 0x0058 + float32 m_twistLowLimitSpring; // 0x005C + float32 m_twistLowLimitDamping; // 0x0060 + float32 m_twistHighLimitValue; // 0x0064 + float32 m_twistHighLimitRestitution; // 0x0068 + float32 m_twistHighLimitSpring; // 0x006C + float32 m_twistHighLimitDamping; // 0x0070 + float32 m_swing1LimitValue; // 0x0074 + float32 m_swing1LimitRestitution; // 0x0078 + float32 m_swing1LimitSpring; // 0x007C + float32 m_swing1LimitDamping; // 0x0080 + float32 m_swing2LimitValue; // 0x0084 + float32 m_swing2LimitRestitution; // 0x0088 + float32 m_swing2LimitSpring; // 0x008C + float32 m_swing2LimitDamping; // 0x0090 + Vector m_goalPosition; // 0x0094 + QuaternionStorage m_goalOrientation; // 0x00A0 + Vector m_goalAngularVelocity; // 0x00B0 + float32 m_driveSpringX; // 0x00BC + float32 m_driveSpringY; // 0x00C0 + float32 m_driveSpringZ; // 0x00C4 + float32 m_driveDampingX; // 0x00C8 + float32 m_driveDampingY; // 0x00CC + float32 m_driveDampingZ; // 0x00D0 + float32 m_driveSpringTwist; // 0x00D4 + float32 m_driveSpringSwing; // 0x00D8 + float32 m_driveSpringSlerp; // 0x00DC + float32 m_driveDampingTwist; // 0x00E0 + float32 m_driveDampingSwing; // 0x00E4 + float32 m_driveDampingSlerp; // 0x00E8 + int32 m_solverIterationCount; // 0x00EC + float32 m_projectionLinearTolerance; // 0x00F0 + float32 m_projectionAngularTolerance; // 0x00F4 +}; +class CPulseRuntimeMethodArg // pulse_runtime_lib +{ + CKV3MemberNameWithStorage m_Name; // 0x0000 + CUtlString m_Description; // 0x0038 + CPulseValueFullType m_Type; // 0x0040 +}; +class ManifestTestResource_t // resourcesystem +{ + CUtlString m_name; // 0x0000 + CStrongHandle< InfoForResourceTypeManifestTestResource_t > m_child; // 0x0008 +}; +class C_OP_DifferencePreviousParticle : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldInput; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + float32 m_flInputMin; // 0x01D8 + float32 m_flInputMax; // 0x01DC + float32 m_flOutputMin; // 0x01E0 + float32 m_flOutputMax; // 0x01E4 + ParticleSetMethod_t m_nSetMethod; // 0x01E8 + bool m_bActiveRange; // 0x01EC + bool m_bSetPreviousParticle; // 0x01ED +}; +class C_OP_RemapDirectionToCPToVector : public CParticleFunctionOperator // particles +{ + int32 m_nCP; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + float32 m_flScale; // 0x01D8 + float32 m_flOffsetRot; // 0x01DC + Vector m_vecOffsetAxis; // 0x01E0 + bool m_bNormalize; // 0x01EC + ParticleAttributeIndex_t m_nFieldStrength; // 0x01F0 +}; +class C_INIT_DistanceToCPInit : public CParticleFunctionInitializer // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D8 + CPerParticleFloatInput m_flInputMin; // 0x01E0 + CPerParticleFloatInput m_flInputMax; // 0x0350 + CPerParticleFloatInput m_flOutputMin; // 0x04C0 + CPerParticleFloatInput m_flOutputMax; // 0x0630 + int32 m_nStartCP; // 0x07A0 + bool m_bLOS; // 0x07A4 + char[128] m_CollisionGroupName; // 0x07A5 + ParticleTraceSet_t m_nTraceSet; // 0x0828 + CPerParticleFloatInput m_flMaxTraceLength; // 0x0830 + float32 m_flLOSScale; // 0x09A0 + ParticleSetMethod_t m_nSetMethod; // 0x09A4 + bool m_bActiveRange; // 0x09A8 + Vector m_vecDistanceScale; // 0x09AC + float32 m_flRemapBias; // 0x09B8 +}; +class CSteamAudioBakedDimensionsData // steamaudio +{ + SteamAudioCustomDataDimensionsSettings_t m_settings; // 0x0000 + CSteamAudioProbeData m_probes; // 0x0018 + CUtlVector< float32 > m_vecInOut; // 0x0020 + CUtlVector< float32 > m_vecSize; // 0x0038 + CUtlVector< CSteamAudioAmbisonicsField > m_vecOutsideField; // 0x0050 + CUtlVector< CSteamAudioAmbisonicsField > m_vecInsideSmallSizeField; // 0x0068 + CSteamAudioMovableBakedData< CSteamAudioBakedDimensionsData > m_movables; // 0x0080 +}; +class VMixPlateverbDesc_t // soundsystem_lowlevel +{ + float32 m_flPrefilter; // 0x0000 + float32 m_flInputDiffusion1; // 0x0004 + float32 m_flInputDiffusion2; // 0x0008 + float32 m_flDecay; // 0x000C + float32 m_flDamp; // 0x0010 + float32 m_flFeedbackDiffusion1; // 0x0014 + float32 m_flFeedbackDiffusion2; // 0x0018 +}; +class RnBlendVertex_t // physicslib +{ + uint16 m_nWeight0; // 0x0000 + uint16 m_nIndex0; // 0x0002 + uint16 m_nWeight1; // 0x0004 + uint16 m_nIndex1; // 0x0006 + uint16 m_nWeight2; // 0x0008 + uint16 m_nIndex2; // 0x000A + uint16 m_nFlags; // 0x000C + uint16 m_nTargetIndex; // 0x000E +}; +class CSequenceUpdateNodeBase : public CLeafUpdateNode // animgraphlib +{ + float32 m_playbackSpeed; // 0x006C + bool m_bLoop; // 0x0070 +}; +class PulseGraphExecutionHistoryNodeDesc_t // pulse_runtime_lib +{ + CBufferString strCellDesc; // 0x0000 + PulseSymbol_t strBindingName; // 0x0010 +}; +class InfoForResourceTypeCVDataResource // resourcesystem +{ +}; +class FloatInputMaterialVariable_t // particles +{ + CUtlString m_strVariable; // 0x0000 + CParticleCollectionFloatInput m_flInput; // 0x0008 +}; +class MaterialOverride_t : public BaseSceneObjectOverride_t // worldrenderer +{ + uint32 m_nSubSceneObject; // 0x0004 + uint32 m_nDrawCallIndex; // 0x0008 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_pMaterial; // 0x0010 + Vector m_vLinearTintColor; // 0x0018 +}; +class CNmReferencePoseTask : public CNmPoseTask // animlib +{ +}; +class CSymbolAnimParameter : public CConcreteAnimParameter // animgraphlib +{ + CGlobalSymbol m_defaultValue; // 0x0080 +}; +class PARTICLE_EHANDLE__ // particleslib +{ + int32 unused; // 0x0000 +}; +class PostProcessingResource_t // materialsystem2 +{ + bool m_bHasTonemapParams; // 0x0000 + PostProcessingTonemapParameters_t m_toneMapParams; // 0x0004 + bool m_bHasBloomParams; // 0x0040 + PostProcessingBloomParameters_t m_bloomParams; // 0x0044 + bool m_bHasVignetteParams; // 0x00CC + PostProcessingVignetteParameters_t m_vignetteParams; // 0x00D0 + bool m_bHasLocalContrastParams; // 0x00F4 + PostProcessingLocalContrastParameters_t m_localConstrastParams; // 0x00F8 + int32 m_nColorCorrectionVolumeDim; // 0x010C + CUtlBinaryBlock m_colorCorrectionVolumeData; // 0x0110 + bool m_bHasColorCorrection; // 0x0120 + bool m_bHasFogScatteringParams; // 0x0121 + PostProcessingFogScatteringParameters_t m_fogScatteringParams; // 0x0124 +}; +class C_INIT_RandomVector : public CParticleFunctionInitializer // particles +{ + Vector m_vecMin; // 0x01D8 + Vector m_vecMax; // 0x01E4 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01F0 + CRandomNumberGeneratorParameters m_randomnessParameters; // 0x01F4 +}; +class C_OP_TimeVaryingForce : public CParticleFunctionForce // particles +{ + float32 m_flStartLerpTime; // 0x01E0 + Vector m_StartingForce; // 0x01E4 + float32 m_flEndLerpTime; // 0x01F0 + Vector m_EndingForce; // 0x01F4 +}; +class C_INIT_ScaleVelocity : public CParticleFunctionInitializer // particles +{ + CParticleCollectionVecInput m_vecScale; // 0x01D8 +}; +class CVoiceContainerSetElement // soundsystem_voicecontainers +{ + CSoundContainerReference m_sound; // 0x0000 + float32 m_flVolumeDB; // 0x0018 +}; +class VMixDiffusorDesc_t // soundsystem_lowlevel +{ + float32 m_flSize; // 0x0000 + float32 m_flComplexity; // 0x0004 + float32 m_flFeedback; // 0x0008 + float32 m_flOutputGain; // 0x000C +}; +class AnimStateID // modellib +{ + uint32 m_id; // 0x0000 +}; +class CNmIDToFloatNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + float32 m_defaultValue; // 0x0014 + CUtlLeanVectorFixedGrowable< CGlobalSymbol, 5 > m_IDs; // 0x0018 + CUtlLeanVectorFixedGrowable< float32, 5 > m_values; // 0x0048 +}; +class CStateNodeStateData // animgraphlib +{ + CAnimUpdateNodeRef m_pChild; // 0x0000 + bitfield:1 m_bExclusiveRootMotion; // 0x0000 + bitfield:1 m_bExclusiveRootMotionFirstFrame; // 0x0000 +}; +class CMoodVData // animationsystem +{ + CResourceNameTyped< CWeakHandle< InfoForResourceTypeCModel > > m_sModelName; // 0x0000 + MoodType_t m_nMoodType; // 0x00E0 + CUtlVector< MoodAnimationLayer_t > m_animationLayers; // 0x00E8 +}; +class CVoiceContainerAnalysisBase // soundsystem_voicecontainers +{ + bool m_bRegenerateCurveOnCompile; // 0x0008 + CPiecewiseCurve m_curve; // 0x0010 +}; +class CSoundInfoHeader // soundsystem_voicecontainers +{ +}; +class RnSoftbodySpring_t // physicslib +{ + uint16[2] m_nParticle; // 0x0000 + float32 m_flLength; // 0x0004 +}; +class C_OP_MovementPlaceOnGround : public CParticleFunctionOperator // particles +{ + CPerParticleFloatInput m_flOffset; // 0x01D0 + float32 m_flMaxTraceLength; // 0x0340 + float32 m_flTolerance; // 0x0344 + float32 m_flTraceOffset; // 0x0348 + float32 m_flLerpRate; // 0x034C + char[128] m_CollisionGroupName; // 0x0350 + ParticleTraceSet_t m_nTraceSet; // 0x03D0 + int32 m_nRefCP1; // 0x03D4 + int32 m_nRefCP2; // 0x03D8 + int32 m_nLerpCP; // 0x03DC + ParticleTraceMissBehavior_t m_nTraceMissBehavior; // 0x03E8 + bool m_bIncludeShotHull; // 0x03EC + bool m_bIncludeWater; // 0x03ED + bool m_bSetNormal; // 0x03F0 + bool m_bScaleOffset; // 0x03F1 + int32 m_nPreserveOffsetCP; // 0x03F4 + int32 m_nIgnoreCP; // 0x03F8 +}; +class CVoiceContainerLoopTrigger : public CVoiceContainerBase // soundsystem_voicecontainers +{ + CSoundContainerReference m_sound; // 0x00A8 + float32 m_flRetriggerTimeMin; // 0x00C0 + float32 m_flRetriggerTimeMax; // 0x00C4 + float32 m_flFadeTime; // 0x00C8 + bool m_bCrossFade; // 0x00CC +}; +class RnMeshDesc_t : public RnShapeDesc_t // physicslib +{ + RnMesh_t m_Mesh; // 0x0018 +}; +class CNmStateNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ + int16 m_nChildNodeIdx; // 0x0010 + CUtlLeanVectorFixedGrowable< CGlobalSymbol, 3 > m_entryEvents; // 0x0018 + CUtlLeanVectorFixedGrowable< CGlobalSymbol, 3 > m_executeEvents; // 0x0038 + CUtlLeanVectorFixedGrowable< CGlobalSymbol, 3 > m_exitEvents; // 0x0058 + CUtlLeanVectorFixedGrowable< CNmStateNode::TimedEvent_t, 1 > m_timedRemainingEvents; // 0x0078 + CUtlLeanVectorFixedGrowable< CNmStateNode::TimedEvent_t, 1 > m_timedElapsedEvents; // 0x0090 + int16 m_nLayerWeightNodeIdx; // 0x00A8 + int16 m_nLayerRootMotionWeightNodeIdx; // 0x00AA + int16 m_nLayerBoneMaskNodeIdx; // 0x00AC + bool m_bIsOffState; // 0x00AE + bool m_bUseActualElapsedTimeInStateForTimedEvents; // 0x00AF +}; +class CPairedSequenceComponentUpdater : public CAnimComponentUpdater // animgraphlib +{ +}; +class CCycleControlClipUpdateNode : public CLeafUpdateNode // animgraphlib +{ + CUtlVector< TagSpan_t > m_tags; // 0x0060 + HSequence m_hSequence; // 0x007C + float32 m_duration; // 0x0080 + AnimValueSource m_valueSource; // 0x0084 + CAnimParamHandle m_paramIndex; // 0x0088 + bool m_bLockWhenWaning; // 0x008A +}; +class CPathMoverEntitySpawn // server +{ + CHandle< CFuncMover > hMover; // 0x0000 + CUtlVector< CHandle< CBaseEntity > > vecOtherEntities; // 0x0008 +}; +class CNetworkTransmitComponent // server +{ + uint8 m_nTransmitStateOwnedCounter; // 0x0184 +}; +class ragdollelement_t // server +{ + Vector originParentSpace; // 0x0000 + int32 parentIndex; // 0x0020 + float32 m_flRadius; // 0x0024 + int32 m_nHeight; // 0x0028 +}; +class C_OP_RenderScreenVelocityRotate : public CParticleFunctionRenderer // particles +{ + float32 m_flRotateRateDegrees; // 0x0220 + float32 m_flForwardDegrees; // 0x0224 +}; +class CNmFrameSnapEvent : public CNmEvent // animlib +{ + NmFrameSnapEventMode_t m_frameSnapMode; // 0x0020 +}; +class FootPinningPoseOpFixedData_t // animgraphlib +{ + CUtlVector< FootFixedData_t > m_footInfo; // 0x0000 + float32 m_flBlendTime; // 0x0018 + float32 m_flLockBreakDistance; // 0x001C + float32 m_flMaxLegTwist; // 0x0020 + int32 m_nHipBoneIndex; // 0x0024 + bool m_bApplyLegTwistLimits; // 0x0028 + bool m_bApplyFootRotationLimits; // 0x0029 +}; +class CollisionGroupContext_t // particles +{ + int32 m_nCollisionGroupNumber; // 0x0000 +}; +class C_OP_SetControlPointPositionToTimeOfDayValue : public CParticleFunctionPreEmission // particles +{ + int32 m_nControlPointNumber; // 0x01D8 + char[128] m_pszTimeOfDayParameter; // 0x01DC + Vector m_vecDefaultValue; // 0x025C +}; +class C_INIT_RandomNamedModelMeshGroup : public C_INIT_RandomNamedModelElement // particles +{ +}; +class CNmReferencedGraphNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ + int16 m_nReferencedGraphIdx; // 0x0010 + int16 m_nFallbackNodeIdx; // 0x0012 +}; +class CNmChainLookatNode::CDefinition : public CNmPassthroughNode::CDefinition // animlib +{ + CGlobalSymbol m_chainEndBoneID; // 0x0018 + int16 m_nLookatTargetNodeIdx; // 0x0020 + int16 m_nEnabledNodeIdx; // 0x0022 + float32 m_flBlendTimeSeconds; // 0x0024 + uint8 m_nChainLength; // 0x0028 + bool m_bIsTargetInWorldSpace; // 0x0029 + Vector m_chainForwardDir; // 0x002C +}; +class CNmGraphEventConditionNode::Condition_t // animlib +{ + CGlobalSymbol m_eventID; // 0x0000 + NmGraphEventTypeCondition_t m_eventTypeCondition; // 0x0008 +}; +class SkeletonBoneBounds_t // modellib +{ + Vector m_vecCenter; // 0x0000 + Vector m_vecSize; // 0x000C +}; +class inv_image_camera_t // client +{ + QAngle angle; // 0x0000 + float32 fov; // 0x000C + float32 znear; // 0x0010 + float32 zfar; // 0x0014 + Vector target; // 0x0018 + Vector target_nudge; // 0x0024 + float32 orbit_distance; // 0x0030 +}; +class CCopyRecipientFilter // server +{ + int32 m_Flags; // 0x0008 + CUtlVector< CPlayerSlot > m_Recipients; // 0x0010 + CPlayerSlot m_slotPlayerExcludedDueToPrediction; // 0x0030 +}; +class C_OP_ConstrainLineLength : public CParticleFunctionConstraint // particles +{ + float32 m_flMinDistance; // 0x01D0 + float32 m_flMaxDistance; // 0x01D4 +}; +class C_OP_RemapParticleCountOnScalarEndCap : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + int32 m_nInputMin; // 0x01D4 + int32 m_nInputMax; // 0x01D8 + float32 m_flOutputMin; // 0x01DC + float32 m_flOutputMax; // 0x01E0 + bool m_bBackwards; // 0x01E4 + ParticleSetMethod_t m_nSetMethod; // 0x01E8 +}; +class C_INIT_RemapTransformToVector : public CParticleFunctionInitializer // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D8 + Vector m_vInputMin; // 0x01DC + Vector m_vInputMax; // 0x01E8 + Vector m_vOutputMin; // 0x01F4 + Vector m_vOutputMax; // 0x0200 + CParticleTransformInput m_TransformInput; // 0x0210 + CParticleTransformInput m_LocalSpaceTransform; // 0x0278 + float32 m_flStartTime; // 0x02E0 + float32 m_flEndTime; // 0x02E4 + ParticleSetMethod_t m_nSetMethod; // 0x02E8 + bool m_bOffset; // 0x02EC + bool m_bAccelerate; // 0x02ED + float32 m_flRemapBias; // 0x02F0 +}; +class CBlend2DUpdateNode : public CAnimUpdateNodeBase // animgraphlib +{ + CUtlVector< BlendItem_t > m_items; // 0x0060 + CUtlVector< TagSpan_t > m_tags; // 0x0078 + CParamSpanUpdater m_paramSpans; // 0x0090 + CUtlVector< int32 > m_nodeItemIndices; // 0x00A8 + CAnimInputDamping m_damping; // 0x00C0 + AnimValueSource m_blendSourceX; // 0x00D8 + CAnimParamHandle m_paramX; // 0x00DC + AnimValueSource m_blendSourceY; // 0x00E0 + CAnimParamHandle m_paramY; // 0x00E4 + Blend2DMode m_eBlendMode; // 0x00E8 + float32 m_playbackSpeed; // 0x00EC + bool m_bLoop; // 0x00F0 + bool m_bLockBlendOnReset; // 0x00F1 + bool m_bLockWhenWaning; // 0x00F2 + bool m_bAnimEventsAndTagsOnMostWeightedOnly; // 0x00F3 +}; +class CNmSyncEventIndexConditionNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_nSourceStateNodeIdx; // 0x0010 + CNmSyncEventIndexConditionNode::TriggerMode_t m_triggerMode; // 0x0012 + int32 m_syncEventIdx; // 0x0014 +}; +class CSpeedScaleUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + CAnimParamHandle m_paramIndex; // 0x0070 +}; +class CPulse_Variable // pulse_runtime_lib +{ + PulseSymbol_t m_Name; // 0x0000 + CUtlString m_Description; // 0x0010 + CPulseValueFullType m_Type; // 0x0018 + KeyValues3 m_DefaultValue; // 0x0030 + PulseVariableKeysSource_t m_nKeysSource; // 0x0044 + bool m_bIsPublicBlackboardVariable; // 0x0048 + bool m_bIsObservable; // 0x0049 + PulseDocNodeID_t m_nEditorNodeID; // 0x004C +}; +class AnimTagID // modellib +{ + uint32 m_id; // 0x0000 +}; +class ParticleNode_t // server +{ + CHandle< CBaseEntity > m_hEntity; // 0x0000 + ParticleIndex_t m_iIndex; // 0x0004 + GameTime_t m_flStartTime; // 0x0008 + float32 m_flGrowthDuration; // 0x000C + Vector m_vecGrowthOrigin; // 0x0010 + float32 m_flEndcapTime; // 0x001C + bool m_bMarkedForDelete; // 0x0020 +}; +class CResponseCriteriaSet // server +{ + int32 m_nNumPrefixedContexts; // 0x0030 + bool m_bOverrideOnAppend; // 0x0034 +}; +class C_OP_RenderStandardLight : public CParticleFunctionRenderer // particles +{ + ParticleLightTypeChoiceList_t m_nLightType; // 0x0220 + CParticleCollectionVecInput m_vecColorScale; // 0x0228 + ParticleColorBlendType_t m_nColorBlendType; // 0x08E0 + CPerParticleFloatInput m_flIntensity; // 0x08E8 + bool m_bCastShadows; // 0x0A58 + CParticleCollectionFloatInput m_flTheta; // 0x0A60 + CParticleCollectionFloatInput m_flPhi; // 0x0BD0 + CParticleCollectionFloatInput m_flRadiusMultiplier; // 0x0D40 + StandardLightingAttenuationStyle_t m_nAttenuationStyle; // 0x0EB0 + CParticleCollectionFloatInput m_flFalloffLinearity; // 0x0EB8 + CParticleCollectionFloatInput m_flFiftyPercentFalloff; // 0x1028 + CParticleCollectionFloatInput m_flZeroPercentFalloff; // 0x1198 + bool m_bRenderDiffuse; // 0x1308 + bool m_bRenderSpecular; // 0x1309 + CUtlString m_lightCookie; // 0x1310 + int32 m_nPriority; // 0x1318 + ParticleLightFogLightingMode_t m_nFogLightingMode; // 0x131C + CParticleCollectionRendererFloatInput m_flFogContribution; // 0x1320 + ParticleLightBehaviorChoiceList_t m_nCapsuleLightBehavior; // 0x1490 + float32 m_flCapsuleLength; // 0x1494 + bool m_bReverseOrder; // 0x1498 + bool m_bClosedLoop; // 0x1499 + ParticleAttributeIndex_t m_nPrevPntSource; // 0x149C + float32 m_flMaxLength; // 0x14A0 + float32 m_flMinLength; // 0x14A4 + bool m_bIgnoreDT; // 0x14A8 + float32 m_flConstrainRadiusToLengthRatio; // 0x14AC + float32 m_flLengthScale; // 0x14B0 + float32 m_flLengthFadeInTime; // 0x14B4 +}; +class C_OP_RenderLightBeam : public CParticleFunctionRenderer // particles +{ + CParticleCollectionVecInput m_vColorBlend; // 0x0220 + ParticleColorBlendType_t m_nColorBlendType; // 0x08D8 + CParticleCollectionFloatInput m_flBrightnessLumensPerMeter; // 0x08E0 + bool m_bCastShadows; // 0x0A50 + CParticleCollectionFloatInput m_flSkirt; // 0x0A58 + CParticleCollectionFloatInput m_flRange; // 0x0BC8 + CParticleCollectionFloatInput m_flThickness; // 0x0D38 +}; +class CSeqSeqDescFlag // animationsystem +{ + bool m_bLooping; // 0x0000 + bool m_bSnap; // 0x0001 + bool m_bAutoplay; // 0x0002 + bool m_bPost; // 0x0003 + bool m_bHidden; // 0x0004 + bool m_bMulti; // 0x0005 + bool m_bLegacyDelta; // 0x0006 + bool m_bLegacyWorldspace; // 0x0007 + bool m_bLegacyCyclepose; // 0x0008 + bool m_bLegacyRealtime; // 0x0009 + bool m_bModelDoc; // 0x000A +}; +class CStateNodeTransitionData // animgraphlib +{ + CBlendCurve m_curve; // 0x0000 + CAnimValue< float32 > m_blendDuration; // 0x0008 + CAnimValue< float32 > m_resetCycleValue; // 0x0010 + bitfield:1 m_bReset; // 0x0000 + bitfield:3 m_resetCycleOption; // 0x0000 +}; +class CToggleComponentActionUpdater : public CAnimActionUpdater // animgraphlib +{ + AnimComponentID m_componentID; // 0x0018 + bool m_bSetEnabled; // 0x001C +}; +class CNmFootstepEventIDNode::CDefinition : public CNmIDValueNode::CDefinition // animlib +{ + int16 m_nSourceStateNodeIdx; // 0x0010 + CNmBitFlags m_eventConditionRules; // 0x0014 +}; +class CNmStateMachineNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ + CUtlLeanVectorFixedGrowable< CNmStateMachineNode::StateDefinition_t, 5 > m_stateDefinitions; // 0x0010 + int16 m_nDefaultStateIndex; // 0x0130 +}; +class CFuseProgram // mathlib_extended +{ + CUtlVector< uint8 > m_programBuffer; // 0x0000 + CUtlVector< FuseVariableIndex_t > m_variablesRead; // 0x0018 + CUtlVector< FuseVariableIndex_t > m_variablesWritten; // 0x0030 + int32 m_nMaxTempVarsUsed; // 0x0048 +}; +class C_CSGO_PreviewPlayer_GraphController : public CAnimGraphControllerBase // client +{ + CAnimGraphParamRef< char* > m_pszCharacterMode; // 0x0090 + CAnimGraphParamRef< char* > m_pszTeamPreviewVariant; // 0x00C0 + CAnimGraphParamRef< char* > m_pszTeamPreviewPosition; // 0x00F0 + CAnimGraphParamRef< char* > m_pszEndOfMatchCelebration; // 0x0120 + CAnimGraphParamRef< int32 > m_nTeamPreviewRandom; // 0x0150 + CAnimGraphParamRef< char* > m_pszWeaponState; // 0x0178 + CAnimGraphParamRef< char* > m_pszWeaponType; // 0x01A8 + CAnimGraphParamRef< bool > m_bCT; // 0x01D8 +}; +class CAI_Expresser // server +{ + GameTime_t m_flStopTalkTime; // 0x0060 + GameTime_t m_flStopTalkTimeWithoutDelay; // 0x0064 + GameTime_t m_flQueuedSpeechTime; // 0x0068 + GameTime_t m_flBlockedTalkTime; // 0x006C + int32 m_voicePitch; // 0x0070 + GameTime_t m_flLastTimeAcceptedSpeak; // 0x0074 + bool m_bAllowSpeakingInterrupts; // 0x0078 + bool m_bConsiderSceneInvolvementAsSpeech; // 0x0079 + bool m_bSceneEntityDisabled; // 0x007A + int32 m_nLastSpokenPriority; // 0x007C + CBaseFlex* m_pOuter; // 0x0098 +}; +class ModelConfigHandle_t // server +{ + uint32 m_Value; // 0x0000 +}; +class C_OP_DriveCPFromGlobalSoundFloat : public CParticleFunctionPreEmission // particles +{ + int32 m_nOutputControlPoint; // 0x01D8 + int32 m_nOutputField; // 0x01DC + float32 m_flInputMin; // 0x01E0 + float32 m_flInputMax; // 0x01E4 + float32 m_flOutputMin; // 0x01E8 + float32 m_flOutputMax; // 0x01EC + CUtlString m_StackName; // 0x01F0 + CUtlString m_OperatorName; // 0x01F8 + CUtlString m_FieldName; // 0x0200 +}; +class World_t // worldrenderer +{ + WorldBuilderParams_t m_builderParams; // 0x0000 + CUtlVector< NodeData_t > m_worldNodes; // 0x0060 + BakedLightingInfo_t m_worldLightingInfo; // 0x0078 + CUtlVector< CStrongHandleCopyable< InfoForResourceTypeCEntityLump > > m_entityLumps; // 0x00C0 +}; +class CCachedPose // animgraphlib +{ + CUtlVector< CTransform > m_transforms; // 0x0008 + CUtlVector< float32 > m_morphWeights; // 0x0020 + HSequence m_hSequence; // 0x0038 + float32 m_flCycle; // 0x003C +}; +class ConfigIndex // animgraphlib +{ + uint16 m_nGroup; // 0x0000 + uint16 m_nConfig; // 0x0002 +}; +class PulseGraphInstanceID_t // pulse_runtime_lib +{ + uint32 m_Value; // 0x0000 +}; +class CMaterialAttributeAnimTag : public CAnimTagBase // animgraphlib +{ + CUtlString m_AttributeName; // 0x0058 + MatterialAttributeTagType_t m_AttributeType; // 0x0060 + float32 m_flValue; // 0x0064 + Color m_Color; // 0x0068 +}; +class EventClientAdvanceNonRenderedFrame_t // engine2 +{ +}; +class CMovementStatsProperty // server +{ + int32 m_nUseCounter; // 0x0010 + CVectorExponentialMovingAverage m_emaMovementDirection; // 0x0014 +}; +class DestructiblePartDestructionRequest_t // server +{ + EDestructibleParts_DestroyParameterFlags m_nDestroyFlags; // 0x0000 + DamageTypes_t m_nDamageType; // 0x0004 + float32 m_flPartDamage; // 0x0008 + float32 m_flPartDamageRadius; // 0x000C + VectorWS m_vWsPartDamageOrigin; // 0x0010 + Vector m_vWsPartDamageForce; // 0x001C +}; +class C_OP_RemapControlPointDirectionToVector : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + float32 m_flScale; // 0x01D4 + int32 m_nControlPointNumber; // 0x01D8 +}; +class C_OP_ScreenSpacePositionOfTarget : public CParticleFunctionOperator // particles +{ + CPerParticleVecInput m_vecTargetPosition; // 0x01D0 + bool m_bOututBehindness; // 0x0888 + ParticleAttributeIndex_t m_nBehindFieldOutput; // 0x088C + CParticleRemapFloatInput m_flBehindOutputRemap; // 0x0890 + ParticleSetMethod_t m_nBehindSetMethod; // 0x0A00 +}; +class C_INIT_PositionOffset : public CParticleFunctionInitializer // particles +{ + CPerParticleVecInput m_OffsetMin; // 0x01D8 + CPerParticleVecInput m_OffsetMax; // 0x0890 + CParticleTransformInput m_TransformInput; // 0x0F48 + bool m_bLocalCoords; // 0x0FB0 + bool m_bProportional; // 0x0FB1 + CRandomNumberGeneratorParameters m_randomnessParameters; // 0x0FB4 +}; +class C_OP_ChladniWave : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + CPerParticleFloatInput m_flInputMin; // 0x01D8 + CPerParticleFloatInput m_flInputMax; // 0x0348 + CPerParticleFloatInput m_flOutputMin; // 0x04B8 + CPerParticleFloatInput m_flOutputMax; // 0x0628 + CPerParticleVecInput m_vecWaveLength; // 0x0798 + CPerParticleVecInput m_vecHarmonics; // 0x0E50 + ParticleSetMethod_t m_nSetMethod; // 0x1508 + int32 m_nLocalSpaceControlPoint; // 0x150C + bool m_b3D; // 0x1510 +}; +class AnimationSnapshotBase_t // animationsystem +{ + float32 m_flRealTime; // 0x0000 + matrix3x4a_t m_rootToWorld; // 0x0010 + bool m_bBonesInWorldSpace; // 0x0040 + CUtlVector< uint32 > m_boneSetupMask; // 0x0048 + CUtlVector< matrix3x4a_t > m_boneTransforms; // 0x0060 + CUtlVector< float32 > m_flexControllers; // 0x0078 + AnimationSnapshotType_t m_SnapshotType; // 0x0090 + bool m_bHasDecodeDump; // 0x0094 + AnimationDecodeDebugDumpElement_t m_DecodeDump; // 0x0098 +}; +class CNmTwoBoneIKNode::CDefinition : public CNmPassthroughNode::CDefinition // animlib +{ + CGlobalSymbol m_effectorBoneID; // 0x0018 + int16 m_nEffectorTargetNodeIdx; // 0x0020 + int16 m_nEnabledNodeIdx; // 0x0022 + float32 m_flBlendTimeSeconds; // 0x0024 + NmIKBlendMode_t m_blendMode; // 0x0028 + bool m_bIsTargetInWorldSpace; // 0x0029 + float32 m_flReferencePoseTwistWeight; // 0x002C +}; +class CNmSoundEvent : public CNmEvent // animlib +{ + CNmEventRelevance_t m_relevance; // 0x0020 + CUtlString m_name; // 0x0028 + CNmSoundEvent::Position_t m_position; // 0x0030 + CUtlString m_attachmentName; // 0x0038 + CUtlString m_tags; // 0x0040 + bool m_bContinuePlayingSoundAtDurationEnd; // 0x0048 + float32 m_flDurationInterruptionThreshold; // 0x004C +}; +class CBoneMaskUpdateNode : public CBinaryUpdateNode // animgraphlib +{ + int32 m_nWeightListIndex; // 0x0094 + float32 m_flRootMotionBlend; // 0x0098 + BoneMaskBlendSpace m_blendSpace; // 0x009C + BinaryNodeChildOption m_footMotionTiming; // 0x00A0 + bool m_bUseBlendScale; // 0x00A4 + AnimValueSource m_blendValueSource; // 0x00A8 + CAnimParamHandle m_hBlendParameter; // 0x00AC +}; +class CCommentarySystem // server +{ + bool m_bCommentaryConvarsChanging; // 0x0011 + bool m_bCommentaryEnabledMidGame; // 0x0012 + GameTime_t m_flNextTeleportTime; // 0x0014 + int32 m_iTeleportStage; // 0x0018 + bool m_bCheatState; // 0x001C + bool m_bIsFirstSpawnGroupToLoad; // 0x001D + CHandle< CPointCommentaryNode > m_hCurrentNode; // 0x0038 + CHandle< CPointCommentaryNode > m_hActiveCommentaryNode; // 0x003C + CHandle< CPointCommentaryNode > m_hLastCommentaryNode; // 0x0040 + CUtlVector< CHandle< CPointCommentaryNode > > m_vecNodes; // 0x0048 +}; +class FeFitMatrix_t // physicslib +{ + CTransform bone; // 0x0000 + Vector vCenter; // 0x0020 + uint16 nEnd; // 0x002C + uint16 nNode; // 0x002E + uint16 nBeginDynamic; // 0x0030 +}; +class CCPPScriptComponentUpdater : public CAnimComponentUpdater // animgraphlib +{ + CUtlVector< CGlobalSymbol > m_scriptsToRun; // 0x0030 +}; +class PostProcessingLocalContrastParameters_t // materialsystem2 +{ + float32 m_flLocalContrastStrength; // 0x0000 + float32 m_flLocalContrastEdgeStrength; // 0x0004 + float32 m_flLocalContrastVignetteStart; // 0x0008 + float32 m_flLocalContrastVignetteEnd; // 0x000C + float32 m_flLocalContrastVignetteBlur; // 0x0010 +}; +class dynpitchvol_base_t // server +{ + int32 preset; // 0x0000 + int32 pitchrun; // 0x0004 + int32 pitchstart; // 0x0008 + int32 spinup; // 0x000C + int32 spindown; // 0x0010 + int32 volrun; // 0x0014 + int32 volstart; // 0x0018 + int32 fadein; // 0x001C + int32 fadeout; // 0x0020 + int32 lfotype; // 0x0024 + int32 lforate; // 0x0028 + int32 lfomodpitch; // 0x002C + int32 lfomodvol; // 0x0030 + int32 cspinup; // 0x0034 + int32 cspincount; // 0x0038 + int32 pitch; // 0x003C + int32 spinupsav; // 0x0040 + int32 spindownsav; // 0x0044 + int32 pitchfrac; // 0x0048 + int32 vol; // 0x004C + int32 fadeinsav; // 0x0050 + int32 fadeoutsav; // 0x0054 + int32 volfrac; // 0x0058 + int32 lfofrac; // 0x005C + int32 lfomult; // 0x0060 +}; +class C_OP_DistanceBetweenTransforms : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + CParticleTransformInput m_TransformStart; // 0x01D8 + CParticleTransformInput m_TransformEnd; // 0x0240 + CPerParticleFloatInput m_flInputMin; // 0x02A8 + CPerParticleFloatInput m_flInputMax; // 0x0418 + CPerParticleFloatInput m_flOutputMin; // 0x0588 + CPerParticleFloatInput m_flOutputMax; // 0x06F8 + float32 m_flMaxTraceLength; // 0x0868 + float32 m_flLOSScale; // 0x086C + char[128] m_CollisionGroupName; // 0x0870 + ParticleTraceSet_t m_nTraceSet; // 0x08F0 + bool m_bLOS; // 0x08F4 + ParticleSetMethod_t m_nSetMethod; // 0x08F8 +}; +class C_INIT_SequenceLifeTime : public CParticleFunctionInitializer // particles +{ + float32 m_flFramerate; // 0x01D8 +}; +class C_INIT_RandomNamedModelBodyPart : public C_INIT_RandomNamedModelElement // particles +{ +}; +class C_OP_RemapModelVolumetoCP : public CParticleFunctionPreEmission // particles +{ + BBoxVolumeType_t m_nBBoxType; // 0x01D8 + int32 m_nInControlPointNumber; // 0x01DC + int32 m_nOutControlPointNumber; // 0x01E0 + int32 m_nOutControlPointMaxNumber; // 0x01E4 + int32 m_nField; // 0x01E8 + float32 m_flInputMin; // 0x01EC + float32 m_flInputMax; // 0x01F0 + float32 m_flOutputMin; // 0x01F4 + float32 m_flOutputMax; // 0x01F8 + bool m_bBBoxOnly; // 0x01FC + bool m_bCubeRoot; // 0x01FD +}; +class C_OP_LerpEndCapScalar : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + float32 m_flOutput; // 0x01D4 + float32 m_flLerpTime; // 0x01D8 +}; +class CVMixGraphDescData // soundsystem_lowlevel +{ + CUtlString m_name; // 0x0000 + int32 m_nGraphOutputChannels; // 0x0008 + bool m_bIsMainGraph; // 0x000C +}; +class FeBoxRigid_t // physicslib +{ + CTransform tmFrame2; // 0x0000 + uint16 nNode; // 0x0020 + uint16 nCollisionMask; // 0x0022 + Vector vSize; // 0x0024 + uint16 nVertexMapIndex; // 0x0030 + uint16 nFlags; // 0x0032 +}; +class PulseRuntimeBlackboardReferenceIndex_t // pulse_runtime_lib +{ + int16 m_Value; // 0x0000 +}; +class CNmVirtualParameterIDNode::CDefinition : public CNmIDValueNode::CDefinition // animlib +{ + int16 m_nChildNodeIdx; // 0x0010 +}; +class C_OP_CreateParticleSystemRenderer : public CParticleFunctionRenderer // particles +{ + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_hEffect; // 0x0220 + EventTypeSelection_t m_nEventType; // 0x0228 + CUtlLeanVector< CPAssignment_t > m_vecCPs; // 0x0230 + CUtlString m_szParticleConfig; // 0x0240 + CPerParticleVecInput m_AggregationPos; // 0x0248 +}; +class VMixVocoderDesc_t // soundsystem_lowlevel +{ + int32 m_nBandCount; // 0x0000 + float32 m_flBandwidth; // 0x0004 + float32 m_fldBModGain; // 0x0008 + float32 m_flFreqRangeStart; // 0x000C + float32 m_flFreqRangeEnd; // 0x0010 + float32 m_fldBUnvoicedGain; // 0x0014 + float32 m_flAttackTimeMS; // 0x0018 + float32 m_flReleaseTimeMS; // 0x001C + int32 m_nDebugBand; // 0x0020 + bool m_bPeakMode; // 0x0024 +}; +class RnVertex_t // physicslib +{ + uint8 m_nEdge; // 0x0000 +}; +class FollowAttachmentSettings_t // animgraphlib +{ + CAnimAttachment m_attachment; // 0x0000 + int32 m_boneIndex; // 0x0080 + AttachmentHandle_t m_attachmentHandle; // 0x0084 + bool m_bMatchTranslation; // 0x0085 + bool m_bMatchRotation; // 0x0086 +}; +class CNmSpeedScaleNode::CDefinition : public CNmSpeedScaleBaseNode::CDefinition // animlib +{ +}; +class EventPostDataUpdate_t // engine2 +{ + int32 m_nCount; // 0x0000 +}; +class C_INIT_NormalAlignToCP : public CParticleFunctionInitializer // particles +{ + CParticleTransformInput m_transformInput; // 0x01D8 + ParticleControlPointAxis_t m_nControlPointAxis; // 0x0240 +}; +class AggregateLODSetup_t // worldrenderer +{ + Vector m_vLODOrigin; // 0x0000 + float32 m_fMaxObjectScale; // 0x000C + CUtlVector< float32 > m_fSwitchDistances; // 0x0010 +}; +class CPerParticleVecInput : public CParticleVecInput // particleslib +{ +}; +class CSolveIKTargetHandle_t // animgraphlib +{ + CAnimParamHandle m_positionHandle; // 0x0000 + CAnimParamHandle m_orientationHandle; // 0x0002 +}; +class MaterialResourceData_t // materialsystem2 +{ + CUtlString m_materialName; // 0x0000 + CUtlString m_shaderName; // 0x0008 + CUtlVector< MaterialParamInt_t > m_intParams; // 0x0010 + CUtlVector< MaterialParamFloat_t > m_floatParams; // 0x0028 + CUtlVector< MaterialParamVector_t > m_vectorParams; // 0x0040 + CUtlVector< MaterialParamTexture_t > m_textureParams; // 0x0058 + CUtlVector< MaterialParamBuffer_t > m_dynamicParams; // 0x0070 + CUtlVector< MaterialParamBuffer_t > m_dynamicTextureParams; // 0x0088 + CUtlVector< MaterialParamInt_t > m_intAttributes; // 0x00A0 + CUtlVector< MaterialParamFloat_t > m_floatAttributes; // 0x00B8 + CUtlVector< MaterialParamVector_t > m_vectorAttributes; // 0x00D0 + CUtlVector< MaterialParamTexture_t > m_textureAttributes; // 0x00E8 + CUtlVector< MaterialParamString_t > m_stringAttributes; // 0x0100 + CUtlVector< CUtlString > m_renderAttributesUsed; // 0x0118 +}; +class CRandStopwatch : public CStopwatchBase // server +{ + float32 m_flMinInterval; // 0x000C + float32 m_flMaxInterval; // 0x0010 +}; +class C_OP_DragRelativeToPlane : public CParticleFunctionOperator // particles +{ + CParticleCollectionFloatInput m_flDragAtPlane; // 0x01D0 + CParticleCollectionFloatInput m_flFalloff; // 0x0340 + bool m_bDirectional; // 0x04B0 + CParticleCollectionVecInput m_vecPlaneNormal; // 0x04B8 + int32 m_nControlPointNumber; // 0x0B70 +}; +class C_OP_MaxVelocity : public CParticleFunctionOperator // particles +{ + float32 m_flMaxVelocity; // 0x01D0 + float32 m_flMinVelocity; // 0x01D4 + int32 m_nOverrideCP; // 0x01D8 + int32 m_nOverrideCPField; // 0x01DC +}; +class C_OP_RemapBoundingVolumetoCP : public CParticleFunctionPreEmission // particles +{ + int32 m_nOutControlPointNumber; // 0x01D8 + float32 m_flInputMin; // 0x01DC + float32 m_flInputMax; // 0x01E0 + float32 m_flOutputMin; // 0x01E4 + float32 m_flOutputMax; // 0x01E8 +}; +class FourCovMatrices3 // physicslib +{ + FourVectors m_vDiag; // 0x0000 + fltx4 m_flXY; // 0x0030 + fltx4 m_flXZ; // 0x0040 + fltx4 m_flYZ; // 0x0050 +}; +class CNmGraphDefinition // animlib +{ + CGlobalSymbol m_variationID; // 0x0000 + CStrongHandle< InfoForResourceTypeCNmSkeleton > m_skeleton; // 0x0008 + CNmGraphVariationUserData* m_pUserData; // 0x0010 + CUtlVector< int16 > m_persistentNodeIndices; // 0x0018 + int16 m_nRootNodeIdx; // 0x0030 + CUtlVector< CGlobalSymbol > m_controlParameterIDs; // 0x0038 + CUtlVector< CGlobalSymbol > m_virtualParameterIDs; // 0x0050 + CUtlVector< int16 > m_virtualParameterNodeIndices; // 0x0068 + CUtlVector< CNmGraphDefinition::ReferencedGraphSlot_t > m_referencedGraphSlots; // 0x0080 + CUtlVector< CNmGraphDefinition::ExternalGraphSlot_t > m_externalGraphSlots; // 0x0098 + CUtlVector< CNmGraphDefinition::ExternalPoseSlot_t > m_externalPoseSlots; // 0x00B0 + CUtlVector< CUtlString > m_nodePaths; // 0x0138 + CUtlVector< CStrongHandleVoid > m_resources; // 0x0150 +}; +class DynamicMeshDeformParams_t // modellib +{ + float32 m_flTensionCompressScale; // 0x0000 + float32 m_flTensionStretchScale; // 0x0004 + bool m_bRecomputeSmoothNormalsAfterAnimation; // 0x0008 + bool m_bComputeDynamicMeshTensionAfterAnimation; // 0x0009 + bool m_bSmoothNormalsAcrossUvSeams; // 0x000A + bool m_bEnableEyeBulgeDeformation; // 0x000B +}; +class CNmFloatRemapNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + CNmFloatRemapNode::RemapRange_t m_inputRange; // 0x0014 + CNmFloatRemapNode::RemapRange_t m_outputRange; // 0x001C +}; +class CSeqAutoLayer // animationsystem +{ + int16 m_nLocalReference; // 0x0000 + int16 m_nLocalPose; // 0x0002 + CSeqAutoLayerFlag m_flags; // 0x0004 + float32 m_start; // 0x000C + float32 m_peak; // 0x0010 + float32 m_tail; // 0x0014 + float32 m_end; // 0x0018 +}; +class InfoForResourceTypeCGcExportableExternalData // resourcesystem +{ +}; +class CNavVolumeAll : public CNavVolumeVector // navlib +{ +}; +class C_OP_RenderDeferredLight : public CParticleFunctionRenderer // particles +{ + bool m_bUseAlphaTestWindow; // 0x0220 + bool m_bUseTexture; // 0x0221 + float32 m_flRadiusScale; // 0x0224 + float32 m_flAlphaScale; // 0x0228 + ParticleAttributeIndex_t m_nAlpha2Field; // 0x022C + CParticleCollectionVecInput m_vecColorScale; // 0x0230 + ParticleColorBlendType_t m_nColorBlendType; // 0x08E8 + float32 m_flLightDistance; // 0x08EC + float32 m_flStartFalloff; // 0x08F0 + float32 m_flDistanceFalloff; // 0x08F4 + float32 m_flSpotFoV; // 0x08F8 + ParticleAttributeIndex_t m_nAlphaTestPointField; // 0x08FC + ParticleAttributeIndex_t m_nAlphaTestRangeField; // 0x0900 + ParticleAttributeIndex_t m_nAlphaTestSharpnessField; // 0x0904 + CStrongHandle< InfoForResourceTypeCTextureBase > m_hTexture; // 0x0908 + int32 m_nHSVShiftControlPoint; // 0x0910 +}; +class C_INIT_InitFloatCollection : public CParticleFunctionInitializer // particles +{ + CParticleCollectionFloatInput m_InputValue; // 0x01D8 + ParticleAttributeIndex_t m_nOutputField; // 0x0348 +}; +class C_OP_RemapDotProductToScalar : public CParticleFunctionOperator // particles +{ + int32 m_nInputCP1; // 0x01D0 + int32 m_nInputCP2; // 0x01D4 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D8 + float32 m_flInputMin; // 0x01DC + float32 m_flInputMax; // 0x01E0 + float32 m_flOutputMin; // 0x01E4 + float32 m_flOutputMax; // 0x01E8 + bool m_bUseParticleVelocity; // 0x01EC + ParticleSetMethod_t m_nSetMethod; // 0x01F0 + bool m_bActiveRange; // 0x01F4 + bool m_bUseParticleNormal; // 0x01F5 +}; +class CFeIndexedJiggleBone // physicslib +{ + uint32 m_nNode; // 0x0000 + uint32 m_nJiggleParent; // 0x0004 + CFeJiggleBone m_jiggleBone; // 0x0008 +}; +class CProductQuantizer // animgraphlib +{ + CUtlVector< CVectorQuantizer > m_subQuantizers; // 0x0000 + int32 m_nDimensions; // 0x0018 +}; +class CUnaryUpdateNode : public CAnimUpdateNodeBase // animgraphlib +{ + CAnimUpdateNodeRef m_pChildNode; // 0x0060 +}; +class CFootstepTableHandle // server +{ +}; +class SceneEventId_t // server +{ + uint32 m_Value; // 0x0000 +}; +class CNetworkOriginQuantizedVector // server +{ + CNetworkedQuantizedFloat m_vecX; // 0x0010 + CNetworkedQuantizedFloat m_vecY; // 0x0018 + CNetworkedQuantizedFloat m_vecZ; // 0x0020 +}; +class CMorphBundleData // modellib +{ + float32 m_flULeftSrc; // 0x0000 + float32 m_flVTopSrc; // 0x0004 + CUtlVector< float32 > m_offsets; // 0x0008 + CUtlVector< float32 > m_ranges; // 0x0020 +}; +class CDampedValueComponentUpdater : public CAnimComponentUpdater // animgraphlib +{ + CUtlVector< CDampedValueUpdateItem > m_items; // 0x0030 +}; +class CAnimStateMachineUpdater // animgraphlib +{ + CUtlVector< CStateUpdateData > m_states; // 0x0008 + CUtlVector< CTransitionUpdateData > m_transitions; // 0x0020 + int32 m_startStateIndex; // 0x0050 +}; +class CNmBoolValueNode::CDefinition : public CNmValueNode::CDefinition // animlib +{ +}; +class CHitBoxSet // modellib +{ + CUtlString m_name; // 0x0000 + uint32 m_nNameHash; // 0x0008 + CUtlVector< CHitBox > m_HitBoxes; // 0x0010 + CUtlString m_SourceFilename; // 0x0028 +}; +class InfoForResourceTypeCChoreoSceneResource // resourcesystem +{ +}; +class magnetted_objects_t // server +{ + CHandle< CBaseEntity > hEntity; // 0x0008 +}; +class CParticleFunctionPreEmission : public CParticleFunctionOperator // particles +{ + bool m_bRunOnce; // 0x01D0 +}; +class C_OP_SetSingleControlPointPosition : public CParticleFunctionPreEmission // particles +{ + bool m_bSetOnce; // 0x01D8 + int32 m_nCP1; // 0x01DC + CParticleCollectionVecInput m_vecCP1Pos; // 0x01E0 + CParticleTransformInput m_transformInput; // 0x0898 +}; +class CParticleMassCalculationParameters // particles +{ + ParticleMassMode_t m_nMassMode; // 0x0000 + CPerParticleFloatInput m_flRadius; // 0x0008 + CPerParticleFloatInput m_flNominalRadius; // 0x0178 + CPerParticleFloatInput m_flScale; // 0x02E8 +}; +class ISkeletonAnimationController // server +{ +}; +class C_OP_SetControlPointsToParticle : public CParticleFunctionOperator // particles +{ + int32 m_nChildGroupID; // 0x01D0 + int32 m_nFirstControlPoint; // 0x01D4 + int32 m_nNumControlPoints; // 0x01D8 + int32 m_nFirstSourcePoint; // 0x01DC + bool m_bReverse; // 0x01E0 + bool m_bSetOrientation; // 0x01E1 + ParticleOrientationSetMode_t m_nOrientationMode; // 0x01E4 + ParticleParentSetMode_t m_nSetParent; // 0x01E8 +}; +class C_OP_ExternalGameImpulseForce : public CParticleFunctionForce // particles +{ + CPerParticleFloatInput m_flForceScale; // 0x01E0 + bool m_bRopes; // 0x0350 + bool m_bRopesZOnly; // 0x0351 + bool m_bExplosions; // 0x0352 + bool m_bParticles; // 0x0353 +}; +class C_OP_Callback : public CParticleFunctionRenderer // particles +{ +}; +class CVoiceContainerSwitch : public CVoiceContainerBase // soundsystem_voicecontainers +{ + CUtlVector< CSoundContainerReference > m_soundsToPlay; // 0x00A8 +}; +class PhysFeModelDesc_t // physicslib +{ + CUtlVector< uint32 > m_CtrlHash; // 0x0000 + CUtlVector< CUtlString > m_CtrlName; // 0x0018 + uint32 m_nStaticNodeFlags; // 0x0030 + uint32 m_nDynamicNodeFlags; // 0x0034 + float32 m_flLocalForce; // 0x0038 + float32 m_flLocalRotation; // 0x003C + uint16 m_nNodeCount; // 0x0040 + uint16 m_nStaticNodes; // 0x0042 + uint16 m_nRotLockStaticNodes; // 0x0044 + uint16 m_nFirstPositionDrivenNode; // 0x0046 + uint16 m_nSimdTriCount1; // 0x0048 + uint16 m_nSimdTriCount2; // 0x004A + uint16 m_nSimdQuadCount1; // 0x004C + uint16 m_nSimdQuadCount2; // 0x004E + uint16 m_nQuadCount1; // 0x0050 + uint16 m_nQuadCount2; // 0x0052 + uint16 m_nTreeDepth; // 0x0054 + uint16 m_nNodeBaseJiggleboneDependsCount; // 0x0056 + uint16 m_nRopeCount; // 0x0058 + CUtlVector< uint16 > m_Ropes; // 0x0060 + CUtlVector< FeNodeBase_t > m_NodeBases; // 0x0078 + CUtlVector< FeSimdNodeBase_t > m_SimdNodeBases; // 0x0090 + CUtlVector< FeQuad_t > m_Quads; // 0x00A8 + CUtlVector< FeSimdQuad_t > m_SimdQuads; // 0x00C0 + CUtlVector< FeSimdTri_t > m_SimdTris; // 0x00D8 + CUtlVector< FeSimdRodConstraint_t > m_SimdRods; // 0x00F0 + CUtlVector< FeSimdRodConstraintAnim_t > m_SimdRodsAnim; // 0x0108 + CUtlVector< CTransform > m_InitPose; // 0x0120 + CUtlVector< FeRodConstraint_t > m_Rods; // 0x0138 + CUtlVector< FeTwistConstraint_t > m_Twists; // 0x0150 + CUtlVector< FeHingeLimit_t > m_HingeLimits; // 0x0168 + CUtlVector< uint32 > m_AntiTunnelBytecode; // 0x0180 + CUtlVector< FeDynKinLink_t > m_DynKinLinks; // 0x0198 + CUtlVector< FeAntiTunnelProbe_t > m_AntiTunnelProbes; // 0x01B0 + CUtlVector< uint16 > m_AntiTunnelTargetNodes; // 0x01C8 + CUtlVector< FeNodeStrayBox_t > m_NodeStrayBoxes; // 0x01E0 + CUtlVector< FeAxialEdgeBend_t > m_AxialEdges; // 0x01F8 + CUtlVector< float32 > m_NodeInvMasses; // 0x0210 + CUtlVector< FeCtrlOffset_t > m_CtrlOffsets; // 0x0228 + CUtlVector< FeCtrlOsOffset_t > m_CtrlOsOffsets; // 0x0240 + CUtlVector< FeFollowNode_t > m_FollowNodes; // 0x0258 + CUtlVector< FeCollisionPlane_t > m_CollisionPlanes; // 0x0270 + CUtlVector< FeNodeIntegrator_t > m_NodeIntegrator; // 0x0288 + CUtlVector< FeSpringIntegrator_t > m_SpringIntegrator; // 0x02A0 + CUtlVector< FeSimdSpringIntegrator_t > m_SimdSpringIntegrator; // 0x02B8 + CUtlVector< FeWorldCollisionParams_t > m_WorldCollisionParams; // 0x02D0 + CUtlVector< float32 > m_LegacyStretchForce; // 0x02E8 + CUtlVector< float32 > m_NodeCollisionRadii; // 0x0300 + CUtlVector< float32 > m_DynNodeFriction; // 0x0318 + CUtlVector< float32 > m_LocalRotation; // 0x0330 + CUtlVector< float32 > m_LocalForce; // 0x0348 + CUtlVector< FeTaperedCapsuleStretch_t > m_TaperedCapsuleStretches; // 0x0360 + CUtlVector< FeTaperedCapsuleRigid_t > m_TaperedCapsuleRigids; // 0x0378 + CUtlVector< FeSphereRigid_t > m_SphereRigids; // 0x0390 + CUtlVector< uint16 > m_WorldCollisionNodes; // 0x03A8 + CUtlVector< uint16 > m_TreeParents; // 0x03C0 + CUtlVector< uint16 > m_TreeCollisionMasks; // 0x03D8 + CUtlVector< FeTreeChildren_t > m_TreeChildren; // 0x03F0 + CUtlVector< uint16 > m_FreeNodes; // 0x0408 + CUtlVector< FeFitMatrix_t > m_FitMatrices; // 0x0420 + CUtlVector< FeFitWeight_t > m_FitWeights; // 0x0438 + CUtlVector< FeNodeReverseOffset_t > m_ReverseOffsets; // 0x0450 + CUtlVector< FeAnimStrayRadius_t > m_AnimStrayRadii; // 0x0468 + CUtlVector< FeSimdAnimStrayRadius_t > m_SimdAnimStrayRadii; // 0x0480 + CUtlVector< FeKelagerBend2_t > m_KelagerBends; // 0x0498 + CUtlVector< FeCtrlSoftOffset_t > m_CtrlSoftOffsets; // 0x04B0 + CUtlVector< CFeIndexedJiggleBone > m_JiggleBones; // 0x04C8 + CUtlVector< uint16 > m_SourceElems; // 0x04E0 + CUtlVector< uint32 > m_GoalDampedSpringIntegrators; // 0x04F8 + CUtlVector< FeTri_t > m_Tris; // 0x0510 + uint16 m_nTriCount1; // 0x0528 + uint16 m_nTriCount2; // 0x052A + uint8 m_nReservedUint8; // 0x052C + uint8 m_nExtraPressureIterations; // 0x052D + uint8 m_nExtraGoalIterations; // 0x052E + uint8 m_nExtraIterations; // 0x052F + CUtlVector< FeSDFRigid_t > m_SDFRigids; // 0x0530 + CUtlVector< FeBoxRigid_t > m_BoxRigids; // 0x0548 + CUtlVector< uint8 > m_DynNodeVertexSet; // 0x0560 + CUtlVector< uint32 > m_VertexSetNames; // 0x0578 + CUtlVector< FeRigidColliderIndices_t > m_RigidColliderPriorities; // 0x0590 + CUtlVector< FeMorphLayerDepr_t > m_MorphLayers; // 0x05A8 + CUtlVector< uint8 > m_MorphSetData; // 0x05C0 + CUtlVector< FeVertexMapDesc_t > m_VertexMaps; // 0x05D8 + CUtlVector< uint8 > m_VertexMapValues; // 0x05F0 + CUtlVector< FeEffectDesc_t > m_Effects; // 0x0608 + CUtlVector< FeCtrlOffset_t > m_LockToParent; // 0x0620 + CUtlVector< uint16 > m_LockToGoal; // 0x0638 + CUtlVector< int16 > m_SkelParents; // 0x0650 + CUtlVector< FeNodeWindBase_t > m_DynNodeWindBases; // 0x0668 + CUtlVector< FeModelSelfCollisionLayer_t > m_SelfCollisionLayers; // 0x0680 + float32 m_flInternalPressure; // 0x0698 + float32 m_flDefaultTimeDilation; // 0x069C + float32 m_flWindage; // 0x06A0 + float32 m_flWindDrag; // 0x06A4 + float32 m_flDefaultSurfaceStretch; // 0x06A8 + float32 m_flDefaultThreadStretch; // 0x06AC + float32 m_flDefaultGravityScale; // 0x06B0 + float32 m_flDefaultVelAirDrag; // 0x06B4 + float32 m_flDefaultExpAirDrag; // 0x06B8 + float32 m_flDefaultVelQuadAirDrag; // 0x06BC + float32 m_flDefaultExpQuadAirDrag; // 0x06C0 + float32 m_flRodVelocitySmoothRate; // 0x06C4 + float32 m_flQuadVelocitySmoothRate; // 0x06C8 + float32 m_flAddWorldCollisionRadius; // 0x06CC + float32 m_flDefaultVolumetricSolveAmount; // 0x06D0 + float32 m_flMotionSmoothCDT; // 0x06D4 + float32 m_flLocalDrag1; // 0x06D8 + uint16 m_nRodVelocitySmoothIterations; // 0x06DC + uint16 m_nQuadVelocitySmoothIterations; // 0x06DE +}; +class CModelConfigElement_SetMaterialGroupOnAttachedModels : public CModelConfigElement // modellib +{ + CUtlString m_MaterialGroupName; // 0x0048 +}; +class CNmConstTargetNode::CDefinition : public CNmTargetValueNode::CDefinition // animlib +{ + CNmTarget m_value; // 0x0010 +}; +class CNmConstFloatNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + float32 m_flValue; // 0x0010 +}; +class CDirectionalBlendUpdateNode : public CLeafUpdateNode // animgraphlib +{ + HSequence[8] m_hSequences; // 0x005C + CAnimInputDamping m_damping; // 0x0080 + AnimValueSource m_blendValueSource; // 0x0098 + CAnimParamHandle m_paramIndex; // 0x009C + float32 m_playbackSpeed; // 0x00A0 + float32 m_duration; // 0x00A4 + bool m_bLoop; // 0x00A8 + bool m_bLockBlendOnReset; // 0x00A9 +}; +class CStopwatch : public CStopwatchBase // server +{ + float32 m_flInterval; // 0x000C +}; +class C_OP_VelocityDecay : public CParticleFunctionOperator // particles +{ + float32 m_flMinVelocity; // 0x01D0 +}; +class C_OP_CalculateVectorAttribute : public CParticleFunctionOperator // particles +{ + Vector m_vStartValue; // 0x01D0 + ParticleAttributeIndex_t m_nFieldInput1; // 0x01DC + float32 m_flInputScale1; // 0x01E0 + ParticleAttributeIndex_t m_nFieldInput2; // 0x01E4 + float32 m_flInputScale2; // 0x01E8 + ControlPointReference_t m_nControlPointInput1; // 0x01EC + float32 m_flControlPointScale1; // 0x0200 + ControlPointReference_t m_nControlPointInput2; // 0x0204 + float32 m_flControlPointScale2; // 0x0218 + ParticleAttributeIndex_t m_nFieldOutput; // 0x021C + Vector m_vFinalOutputScale; // 0x0220 +}; +class CSSDSMsg_EndFrame // scenesystem +{ + CUtlVector< CSSDSEndFrameViewInfo > m_Views; // 0x0000 +}; +class RnMesh_t // physicslib +{ + Vector m_vMin; // 0x0000 + Vector m_vMax; // 0x000C + CUtlVector< RnNode_t > m_Nodes; // 0x0018 + CUtlVectorSIMDPaddedVector m_Vertices; // 0x0030 + CUtlVector< RnTriangle_t > m_Triangles; // 0x0048 + CUtlVector< RnWing_t > m_Wings; // 0x0060 + CUtlVector< uint8 > m_TriangleEdgeFlags; // 0x0078 + CUtlVector< uint8 > m_Materials; // 0x0090 + Vector m_vOrthographicAreas; // 0x00A8 + uint32 m_nFlags; // 0x00B4 + uint32 m_nDebugFlags; // 0x00B8 +}; +class RnPlane_t // physicslib +{ + Vector m_vNormal; // 0x0000 + float32 m_flOffset; // 0x000C +}; +class CFeVertexMapBuildArray // physicslib +{ + CUtlVector< FeVertexMapBuild_t* > m_Array; // 0x0000 +}; +class CInputStreamUpdateNode : public CLeafUpdateNode // animgraphlib +{ +}; +class CAnimScriptManager // animgraphlib +{ + CUtlVector< ScriptInfo_t > m_scriptInfo; // 0x0010 +}; +class CAnimMovement // animationsystem +{ + int32 endframe; // 0x0000 + int32 motionflags; // 0x0004 + float32 v0; // 0x0008 + float32 v1; // 0x000C + float32 angle; // 0x0010 + Vector vector; // 0x0014 + Vector position; // 0x0020 +}; +class CBlendCurve // animgraphlib +{ + float32 m_flControlPoint1; // 0x0000 + float32 m_flControlPoint2; // 0x0004 +}; +class SkeletonDemoDb_t // modellib +{ + CUtlVector< SkeletonAnimCapture_t* > m_AnimCaptures; // 0x0000 + CUtlVector< SkeletonAnimCapture_t::Camera_t > m_CameraTrack; // 0x0018 + float32 m_flRecordingTime; // 0x0030 +}; +class CNmIDSelectorNode::CDefinition : public CNmIDValueNode::CDefinition // animlib +{ + CUtlVectorFixedGrowable< int16, 5 > m_conditionNodeIndices; // 0x0010 + CUtlVectorFixedGrowable< CGlobalSymbol, 5 > m_values; // 0x0038 + CGlobalSymbol m_defaultValue; // 0x0078 +}; +class RenderInputLayoutField_t // rendersystemdx11 +{ + char[32] m_pSemanticName; // 0x0000 + int8 m_nSemanticIndex; // 0x0020 + int16 m_nOffset; // 0x0028 + int8 m_nSlot; // 0x002A + RenderSlotType_t m_nSlotType; // 0x002B + char[32] m_szShaderSemantic; // 0x002C +}; +class AABB_t // mathlib_extended +{ + Vector m_vMinBounds; // 0x0000 + Vector m_vMaxBounds; // 0x000C +}; +class C_INIT_RandomVectorComponent : public CParticleFunctionInitializer // particles +{ + float32 m_flMin; // 0x01D8 + float32 m_flMax; // 0x01DC + ParticleAttributeIndex_t m_nFieldOutput; // 0x01E0 + int32 m_nComponent; // 0x01E4 +}; +class C_OP_InheritFromParentParticles : public CParticleFunctionOperator // particles +{ + float32 m_flScale; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + int32 m_nIncrement; // 0x01D8 + bool m_bRandomDistribution; // 0x01DC +}; +class CBaseTrailRenderer : public CBaseRendererSource2 // particles +{ + ParticleOrientationChoiceList_t m_nOrientationType; // 0x2DE8 + int32 m_nOrientationControlPoint; // 0x2DEC + float32 m_flMinSize; // 0x2DF0 + float32 m_flMaxSize; // 0x2DF4 + CParticleCollectionRendererFloatInput m_flStartFadeSize; // 0x2DF8 + CParticleCollectionRendererFloatInput m_flEndFadeSize; // 0x2F68 + bool m_bClampV; // 0x30D8 +}; +class CPhysSurfacePropertiesVehicle // modellib +{ + float32 m_wheelDrag; // 0x0000 + float32 m_wheelFrictionScale; // 0x0004 +}; +class CLookComponentUpdater : public CAnimComponentUpdater // animgraphlib +{ + CAnimParamHandle m_hLookHeading; // 0x0034 + CAnimParamHandle m_hLookHeadingNormalized; // 0x0036 + CAnimParamHandle m_hLookHeadingVelocity; // 0x0038 + CAnimParamHandle m_hLookPitch; // 0x003A + CAnimParamHandle m_hLookDistance; // 0x003C + CAnimParamHandle m_hLookDirection; // 0x003E + CAnimParamHandle m_hLookTarget; // 0x0040 + CAnimParamHandle m_hLookTargetWorldSpace; // 0x0042 + bool m_bNetworkLookTarget; // 0x0044 +}; +class CSetParameterActionUpdater : public CAnimActionUpdater // animgraphlib +{ + CAnimParamHandle m_hParam; // 0x0018 + CAnimVariant m_value; // 0x001A +}; +class CConstantForceController // server +{ + Vector m_linear; // 0x000C + RotationVector m_angular; // 0x0018 + Vector m_linearSave; // 0x0024 + RotationVector m_angularSave; // 0x0030 +}; +class C_OP_ModelSurfaceSnapshotGenerator : public CParticleFunctionPreEmission // particles +{ + int32 m_nCPSnapshot; // 0x01D8 + CParticleModelInput m_modelInput; // 0x01E0 + CParticleCollectionFloatInput m_flRecalcRate; // 0x0240 + CParticleCollectionFloatInput m_flUSpacing; // 0x03B0 + CParticleCollectionFloatInput m_flVSpacing; // 0x0520 + CParticleCollectionFloatInput m_flSurfaceOffset; // 0x0690 + bool m_bSetNormal; // 0x0800 + bool m_bSetUp; // 0x0801 + bool m_bSetGravity; // 0x0802 + bool m_bSetUV; // 0x0803 +}; +class C_OP_ConstrainDistanceToUserSpecifiedPath : public CParticleFunctionConstraint // particles +{ + float32 m_fMinDistance; // 0x01D0 + float32 m_flMaxDistance; // 0x01D4 + float32 m_flTimeScale; // 0x01D8 + bool m_bLoopedPath; // 0x01DC + CUtlVector< PointDefinitionWithTimeValues_t > m_pointList; // 0x01E0 +}; +class ClutterTile_t // worldrenderer +{ + uint32 m_nFirstInstance; // 0x0000 + uint32 m_nLastInstance; // 0x0004 + AABB_t m_BoundsWs; // 0x0008 +}; +class CVoiceContainerAmpedDecayingSineWave : public CVoiceContainerDecayingSineWave // soundsystem_voicecontainers +{ + float32 m_flGainAmount; // 0x00B0 +}; +class CVMixAutoFilterProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixAutoFilterDesc_t m_desc; // 0x0020 +}; +class CNmFootEvent : public CNmEvent // animlib +{ + NmFootPhase_t m_phase; // 0x0020 +}; +class CompositeMaterialEditorPoint_t // compositematerialslib +{ + CResourceNameTyped< CWeakHandle< InfoForResourceTypeCModel > > m_ModelName; // 0x0000 + int32 m_nSequenceIndex; // 0x00E0 + float32 m_flCycle; // 0x00E4 + KeyValues3 m_KVModelStateChoices; // 0x00E8 + bool m_bEnableChildModel; // 0x00F8 + CResourceNameTyped< CWeakHandle< InfoForResourceTypeCModel > > m_ChildModelName; // 0x0100 + CUtlVector< CompositeMaterialAssemblyProcedure_t > m_vecCompositeMaterialAssemblyProcedures; // 0x01E0 + CUtlVector< CompositeMaterial_t > m_vecCompositeMaterials; // 0x01F8 +}; +class CEntitySubclassVDataBase // server +{ +}; +class C_INIT_InitFromParentKilled : public CParticleFunctionInitializer // particles +{ + ParticleAttributeIndex_t m_nAttributeToCopy; // 0x01D8 + EventTypeSelection_t m_nEventType; // 0x01DC +}; +class C_OP_RenderOmni2Light : public CParticleFunctionRenderer // particles +{ + ParticleOmni2LightTypeChoiceList_t m_nLightType; // 0x0220 + CParticleCollectionVecInput m_vColorBlend; // 0x0228 + ParticleColorBlendType_t m_nColorBlendType; // 0x08E0 + ParticleLightUnitChoiceList_t m_nBrightnessUnit; // 0x08E4 + CPerParticleFloatInput m_flBrightnessLumens; // 0x08E8 + CPerParticleFloatInput m_flBrightnessCandelas; // 0x0A58 + bool m_bCastShadows; // 0x0BC8 + bool m_bFog; // 0x0BC9 + CPerParticleFloatInput m_flFogScale; // 0x0BD0 + CPerParticleFloatInput m_flLuminaireRadius; // 0x0D40 + CPerParticleFloatInput m_flSkirt; // 0x0EB0 + CPerParticleFloatInput m_flRange; // 0x1020 + CPerParticleFloatInput m_flInnerConeAngle; // 0x1190 + CPerParticleFloatInput m_flOuterConeAngle; // 0x1300 + CStrongHandle< InfoForResourceTypeCTextureBase > m_hLightCookie; // 0x1470 + bool m_bSphericalCookie; // 0x1478 +}; +class CNmPoseTask // animlib +{ +}; +class CFootCycleDefinition // modellib +{ + Vector m_vStancePositionMS; // 0x0000 + Vector m_vMidpointPositionMS; // 0x000C + float32 m_flStanceDirectionMS; // 0x0018 + Vector m_vToStrideStartPos; // 0x001C + CAnimCycle m_stanceCycle; // 0x0028 + CFootCycle m_footLiftCycle; // 0x002C + CFootCycle m_footOffCycle; // 0x0030 + CFootCycle m_footStrikeCycle; // 0x0034 + CFootCycle m_footLandCycle; // 0x0038 +}; +class CRenderBufferBinding // modellib +{ + uint64 m_hBuffer; // 0x0000 + uint32 m_nBindOffsetBytes; // 0x0010 +}; +class CMotionNode // animgraphlib +{ + CUtlString m_name; // 0x0018 + AnimNodeID m_id; // 0x0020 +}; +class CMultiplayer_Expresser : public CAI_ExpresserWithFollowup // server +{ + bool m_bAllowMultipleScenes; // 0x00A0 +}; +class C_INIT_InitFloat : public CParticleFunctionInitializer // particles +{ + CPerParticleFloatInput m_InputValue; // 0x01D8 + ParticleAttributeIndex_t m_nOutputField; // 0x0348 + ParticleSetMethod_t m_nSetMethod; // 0x034C + CPerParticleFloatInput m_InputStrength; // 0x0350 +}; +class CollisionDetailLayerInfo_t::Name_t // physicslib +{ + CUtlStringToken m_nNameToken; // 0x0000 + CUtlString m_sNameString; // 0x0008 +}; +class CSchemaSystemInternalRegistration // schemasystem +{ + Vector2D m_Vector2D; // 0x0000 + Vector m_Vector; // 0x0008 + VectorWS m_VectorWS; // 0x0014 + VectorAligned m_VectorAligned; // 0x0020 + Quaternion m_Quaternion; // 0x0030 + QAngle m_QAngle; // 0x0040 + RotationVector m_RotationVector; // 0x004C + RadianEuler m_RadianEuler; // 0x0058 + DegreeEuler m_DegreeEuler; // 0x0064 + QuaternionStorage m_QuaternionStorage; // 0x0070 + matrix3x4_t m_matrix3x4_t; // 0x0080 + matrix3x4a_t m_matrix3x4a_t; // 0x00B0 + Color m_Color; // 0x00E0 + Vector4D m_Vector4D; // 0x00E4 + CTransform m_CTransform; // 0x0100 + KeyValues* m_pKeyValues; // 0x0120 + CUtlBinaryBlock m_CUtlBinaryBlock; // 0x0128 + CUtlString m_CUtlString; // 0x0138 + CUtlSymbol m_CUtlSymbol; // 0x0140 + CUtlStringToken m_stringToken; // 0x0144 + CUtlStringTokenWithStorage m_stringTokenWithStorage; // 0x0148 + CResourceArray< CResourcePointer< CResourceString > > m_ResourceTypes; // 0x0160 + KeyValues3 m_KV3; // 0x0168 +}; +class C_OP_SetCPtoVector : public CParticleFunctionOperator // particles +{ + int32 m_nCPInput; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 +}; +class CNmStateCompletedConditionNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_nSourceStateNodeIdx; // 0x0010 + int16 m_nTransitionDurationOverrideNodeIdx; // 0x0012 + float32 m_flTransitionDurationSeconds; // 0x0014 +}; +class CBoolAnimParameter : public CConcreteAnimParameter // animgraphlib +{ + bool m_bDefaultValue; // 0x0080 +}; +class VPhysXBodyPart_t // modellib +{ + uint32 m_nFlags; // 0x0000 + float32 m_flMass; // 0x0004 + VPhysics2ShapeDef_t m_rnShape; // 0x0008 + uint16 m_nCollisionAttributeIndex; // 0x0080 + uint16 m_nReserved; // 0x0082 + float32 m_flInertiaScale; // 0x0084 + float32 m_flLinearDamping; // 0x0088 + float32 m_flAngularDamping; // 0x008C + float32 m_flLinearDrag; // 0x0090 + float32 m_flAngularDrag; // 0x0094 + bool m_bOverrideMassCenter; // 0x0098 + Vector m_vMassCenterOverride; // 0x009C +}; +class C_INIT_InitSkinnedPositionFromCPSnapshot : public CParticleFunctionInitializer // particles +{ + int32 m_nSnapshotControlPointNumber; // 0x01D8 + int32 m_nControlPointNumber; // 0x01DC + bool m_bRandom; // 0x01E0 + int32 m_nRandomSeed; // 0x01E4 + bool m_bRigid; // 0x01E8 + bool m_bSetNormal; // 0x01E9 + bool m_bIgnoreDt; // 0x01EA + float32 m_flMinNormalVelocity; // 0x01EC + float32 m_flMaxNormalVelocity; // 0x01F0 + SnapshotIndexType_t m_nIndexType; // 0x01F4 + CPerParticleFloatInput m_flReadIndex; // 0x01F8 + float32 m_flIncrement; // 0x0368 + int32 m_nFullLoopIncrement; // 0x036C + int32 m_nSnapShotStartPoint; // 0x0370 + float32 m_flBoneVelocity; // 0x0374 + float32 m_flBoneVelocityMax; // 0x0378 + bool m_bCopyColor; // 0x037C + bool m_bCopyAlpha; // 0x037D + bool m_bSetRadius; // 0x037E +}; +class C_OP_LerpToOtherAttribute : public CParticleFunctionOperator // particles +{ + CPerParticleFloatInput m_flInterpolation; // 0x01D0 + ParticleAttributeIndex_t m_nFieldInputFrom; // 0x0340 + ParticleAttributeIndex_t m_nFieldInput; // 0x0344 + ParticleAttributeIndex_t m_nFieldOutput; // 0x0348 +}; +class InfoForResourceTypeVMapResourceData_t // worldrenderer +{ +}; +class RnTriangle_t // physicslib +{ + int32[3] m_nIndex; // 0x0000 +}; +class FourVectors2D // physicslib +{ + fltx4 x; // 0x0000 + fltx4 y; // 0x0010 +}; +class CStopAtGoalUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + float32 m_flOuterRadius; // 0x0074 + float32 m_flInnerRadius; // 0x0078 + float32 m_flMaxScale; // 0x007C + float32 m_flMinScale; // 0x0080 + CAnimInputDamping m_damping; // 0x0088 +}; +class CNmLayerBlendNode::LayerDefinition_t // animlib +{ + int16 m_nInputNodeIdx; // 0x0000 + int16 m_nWeightValueNodeIdx; // 0x0002 + int16 m_nBoneMaskValueNodeIdx; // 0x0004 + int16 m_nRootMotionWeightValueNodeIdx; // 0x0006 + bool m_bIsSynchronized; // 0x0008 + bool m_bIgnoreEvents; // 0x0009 + bool m_bIsStateMachineLayer; // 0x000A + NmPoseBlendMode_t m_blendMode; // 0x000B +}; +class CNmIKJoint // animlib +{ + int32 m_nParentIndex; // 0x0000 + int32 m_nBodyIndex; // 0x0004 + CTransform m_xLocalFrame; // 0x0010 + float32 m_flSwingLimit; // 0x0030 + float32 m_flMinTwistLimit; // 0x0034 + float32 m_flMaxTwistLimit; // 0x0038 + float32 m_flWeight; // 0x003C +}; +class CNmRootMotionOverrideNode::CDefinition : public CNmPassthroughNode::CDefinition // animlib +{ + int16 m_desiredMovingVelocityNodeIdx; // 0x0018 + int16 m_desiredFacingDirectionNodeIdx; // 0x001A + int16 m_linearVelocityLimitNodeIdx; // 0x001C + int16 m_angularVelocityLimitNodeIdx; // 0x001E + float32 m_maxLinearVelocity; // 0x0020 + float32 m_maxAngularVelocityRadians; // 0x0024 + CNmBitFlags m_overrideFlags; // 0x0028 +}; +class CFuseSymbolTable // mathlib_extended +{ + CUtlVector< ConstantInfo_t > m_constants; // 0x0000 + CUtlVector< VariableInfo_t > m_variables; // 0x0018 + CUtlVector< FunctionInfo_t > m_functions; // 0x0030 + CUtlHashtable< CUtlStringToken, int32 > m_constantMap; // 0x0048 + CUtlHashtable< CUtlStringToken, int32 > m_variableMap; // 0x0068 + CUtlHashtable< CUtlStringToken, int32 > m_functionMap; // 0x0088 +}; +class C_OP_SetControlPointOrientation : public CParticleFunctionPreEmission // particles +{ + bool m_bUseWorldLocation; // 0x01D8 + bool m_bRandomize; // 0x01DA + bool m_bSetOnce; // 0x01DB + int32 m_nCP; // 0x01DC + int32 m_nHeadLocation; // 0x01E0 + QAngle m_vecRotation; // 0x01E4 + QAngle m_vecRotationB; // 0x01F0 + CParticleCollectionFloatInput m_flInterpolation; // 0x0200 +}; +class CModelConfig // modellib +{ + CUtlString m_ConfigName; // 0x0000 + CUtlVector< CModelConfigElement* > m_Elements; // 0x0008 + bool m_bTopLevel; // 0x0020 + bool m_bActiveInEditorByDefault; // 0x0021 +}; +class PermModelDataAnimatedMaterialAttribute_t // modellib +{ + CUtlString m_AttributeName; // 0x0000 + int32 m_nNumChannels; // 0x0008 +}; +class CNewParticleEffect : public IParticleEffect // particleslib +{ + CNewParticleEffect* m_pNext; // 0x0010 + CNewParticleEffect* m_pPrev; // 0x0018 + IParticleCollection* m_pParticles; // 0x0020 + char* m_pDebugName; // 0x0028 + bitfield:1 m_bDontRemove; // 0x0000 + bitfield:1 m_bRemove; // 0x0000 + bitfield:1 m_bNeedsBBoxUpdate; // 0x0000 + bitfield:1 m_bIsFirstFrame; // 0x0000 + bitfield:1 m_bAutoUpdateBBox; // 0x0000 + bitfield:1 m_bAllocated; // 0x0000 + bitfield:1 m_bSimulate; // 0x0000 + bitfield:1 m_bShouldPerformCullCheck; // 0x0000 + bitfield:1 m_bForceNoDraw; // 0x0000 + bitfield:1 m_bSuppressScreenSpaceEffect; // 0x0000 + bitfield:1 m_bShouldSave; // 0x0000 + bitfield:1 m_bShouldSimulateDuringGamePaused; // 0x0000 + bitfield:1 m_bShouldCheckFoW; // 0x0000 + bitfield:1 m_bIsAsyncCreate; // 0x0000 + bitfield:1 m_bFreezeTransitionActive; // 0x0000 + bitfield:1 m_bFreezeTargetState; // 0x0000 + bitfield:1 m_bCanFreeze; // 0x0000 + Vector m_vSortOrigin; // 0x0040 + float32 m_flScale; // 0x004C + PARTICLE_EHANDLE__* m_hOwner; // 0x0050 + CParticleProperty* m_pOwningParticleProperty; // 0x0058 + float32 m_flFreezeTransitionStart; // 0x0070 + float32 m_flFreezeTransitionDuration; // 0x0074 + float32 m_flFreezeTransitionOverride; // 0x0078 + Vector m_LastMin; // 0x007C + Vector m_LastMax; // 0x0088 + CSplitScreenSlot m_nSplitScreenUser; // 0x0094 + Vector m_vecAggregationCenter; // 0x0098 + int32 m_RefCount; // 0x00D0 +}; +class CNmBoneMaskValueNode::CDefinition : public CNmValueNode::CDefinition // animlib +{ +}; +class CNmParameterizedClipSelectorNode::CDefinition : public CNmClipReferenceNode::CDefinition // animlib +{ + CUtlLeanVectorFixedGrowable< int16, 5 > m_optionNodeIndices; // 0x0010 + CUtlLeanVectorFixedGrowable< uint8, 5 > m_optionWeights; // 0x0028 + int16 m_parameterNodeIdx; // 0x0038 + bool m_bIgnoreInvalidOptions; // 0x003A + bool m_bHasWeightsSet; // 0x003B +}; +class InfoForResourceTypeIMaterial2 // resourcesystem +{ +}; +class CClientAlphaProperty : public IClientAlphaProperty // client +{ + uint16 m_nDistFadeStart; // 0x0010 + uint16 m_nDistFadeEnd; // 0x0012 + bitfield:14 m_nDesyncOffset; // 0x0000 + bitfield:1 m_bAlphaOverride; // 0x0000 + bitfield:1 m_bShadowAlphaOverride; // 0x0000 + bitfield:3 m_nRenderMode; // 0x0000 + bitfield:5 m_nRenderFX; // 0x0000 + uint8 m_nAlpha; // 0x0017 + float32 m_flFadeScale; // 0x0018 + GameTime_t m_flRenderFxStartTime; // 0x001C + float32 m_flRenderFxDuration; // 0x0020 +}; +class CFloatExponentialMovingAverage // server +{ +}; +class CGameChoreoServices : public IChoreoServices // server +{ + CHandle< CBaseAnimGraph > m_hOwner; // 0x0008 + CHandle< CScriptedSequence > m_hScriptedSequence; // 0x000C + IChoreoServices::ScriptState_t m_scriptState; // 0x0010 + IChoreoServices::ChoreoState_t m_choreoState; // 0x0014 + GameTime_t m_flTimeStartedState; // 0x0018 +}; +class CStateMachineUpdateNode : public CAnimUpdateNodeBase // animgraphlib +{ + CAnimStateMachineUpdater m_stateMachine; // 0x0070 + CUtlVector< CStateNodeStateData > m_stateData; // 0x00C8 + CUtlVector< CStateNodeTransitionData > m_transitionData; // 0x00E0 + bool m_bBlockWaningTags; // 0x00FC + bool m_bLockStateWhenWaning; // 0x00FD + bool m_bResetWhenActivated; // 0x00FE +}; +class InfoForResourceTypeProceduralTestResource_t // resourcesystem +{ +}; +class CSimpleSimTimer // server +{ + GameTime_t m_flNext; // 0x0000 + WorldGroupId_t m_nWorldGroupId; // 0x0004 +}; +class CNavVolumeMarkupVolume : public CNavVolume // server +{ +}; +class CVMixSteamAudioHybridReverbProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ +}; +class CVoiceContainerParameterBlender : public CVoiceContainerBase // soundsystem_voicecontainers +{ + CSoundContainerReference m_firstSound; // 0x00A8 + CSoundContainerReference m_secondSound; // 0x00C0 + bool m_bEnableOcclusionBlend; // 0x00D8 + CPiecewiseCurve m_curve1; // 0x00E0 + CPiecewiseCurve m_curve2; // 0x0120 + bool m_bEnableDistanceBlend; // 0x0160 + CPiecewiseCurve m_curve3; // 0x0168 + CPiecewiseCurve m_curve4; // 0x01A8 +}; +class CSeqBoneMaskList // animationsystem +{ + CBufferString m_sName; // 0x0000 + CUtlVector< int16 > m_nLocalBoneArray; // 0x0010 + CUtlVector< float32 > m_flBoneWeightArray; // 0x0028 + float32 m_flDefaultMorphCtrlWeight; // 0x0040 + CUtlVector< std::pair< CBufferString, float32 > > m_morphCtrlWeightArray; // 0x0048 +}; +class VPhysXRange_t // modellib +{ + float32 m_flMin; // 0x0000 + float32 m_flMax; // 0x0004 +}; +class C_OP_SetFloat : public CParticleFunctionOperator // particles +{ + CPerParticleFloatInput m_InputValue; // 0x01D0 + ParticleAttributeIndex_t m_nOutputField; // 0x0340 + ParticleSetMethod_t m_nSetMethod; // 0x0344 + CPerParticleFloatInput m_Lerp; // 0x0348 +}; +class IParticleSystemDefinition // particles +{ +}; +class TagSpan_t // animgraphlib +{ + int32 m_tagIndex; // 0x0000 + float32 m_startCycle; // 0x0004 + float32 m_endCycle; // 0x0008 +}; +class CSeqPoseParamDesc // animationsystem +{ + CBufferString m_sName; // 0x0000 + float32 m_flStart; // 0x0010 + float32 m_flEnd; // 0x0014 + float32 m_flLoop; // 0x0018 + bool m_bLooping; // 0x001C +}; +class NmCompressionSettings_t // animlib +{ + NmCompressionSettings_t::QuantizationRange_t m_translationRangeX; // 0x0000 + NmCompressionSettings_t::QuantizationRange_t m_translationRangeY; // 0x0008 + NmCompressionSettings_t::QuantizationRange_t m_translationRangeZ; // 0x0010 + NmCompressionSettings_t::QuantizationRange_t m_scaleRange; // 0x0018 + Quaternion m_constantRotation; // 0x0020 + bool m_bIsRotationStatic; // 0x0030 + bool m_bIsTranslationStatic; // 0x0031 + bool m_bIsScaleStatic; // 0x0032 +}; +class FuseFunctionIndex_t // mathlib_extended +{ + uint16 m_Value; // 0x0000 +}; +class C_INIT_RemapNamedModelElementToScalar : public CParticleFunctionInitializer // particles +{ + CStrongHandle< InfoForResourceTypeCModel > m_hModel; // 0x01D8 + CUtlVector< CUtlString > m_names; // 0x01E0 + CUtlVector< float32 > m_values; // 0x01F8 + ParticleAttributeIndex_t m_nFieldInput; // 0x0210 + ParticleAttributeIndex_t m_nFieldOutput; // 0x0214 + ParticleSetMethod_t m_nSetMethod; // 0x0218 + bool m_bModelFromRenderer; // 0x021C +}; +class CSlowDownOnSlopesUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + float32 m_flSlowDownStrength; // 0x0070 +}; +class CNmTargetWarpEvent : public CNmEvent // animlib +{ + NmTargetWarpRule_t m_rule; // 0x0020 + NmTargetWarpAlgorithm_t m_algorithm; // 0x0021 +}; +class CPathAnimMotorUpdaterBase : public CAnimMotorUpdaterBase // animgraphlib +{ + bool m_bLockToPath; // 0x0020 +}; +class MaterialParamInt_t : public MaterialParam_t // materialsystem2 +{ + int32 m_nValue; // 0x0008 +}; +class CHintMessage // server +{ + char* m_hintString; // 0x0000 + CUtlVector< char* > m_args; // 0x0008 + float32 m_duration; // 0x0020 +}; +class C_OP_FadeOutSimple : public CParticleFunctionOperator // particles +{ + float32 m_flFadeOutTime; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 +}; +class C_OP_EndCapTimedFreeze : public CParticleFunctionOperator // particles +{ + CParticleCollectionFloatInput m_flFreezeTime; // 0x01D0 +}; +class VMixFilterDesc_t // soundsystem_lowlevel +{ + VMixFilterType_t m_nFilterType; // 0x0000 + VMixFilterSlope_t m_nFilterSlope; // 0x0002 + bool m_bEnabled; // 0x0003 + float32 m_fldbGain; // 0x0004 + float32 m_flCutoffFreq; // 0x0008 + float32 m_flQ; // 0x000C +}; +class CFootCycle : public CCycleBase // modellib +{ +}; +class PulseCursorID_t // pulse_runtime_lib +{ + int32 m_Value; // 0x0000 +}; +class CAnimFoot // modellib +{ + CUtlString m_name; // 0x0000 + Vector m_vBallOffset; // 0x0008 + Vector m_vHeelOffset; // 0x0014 + int32 m_ankleBoneIndex; // 0x0020 + int32 m_toeBoneIndex; // 0x0024 +}; +class InfoForResourceTypeCEntityLump // resourcesystem +{ +}; +class EntOutput_t // entity2 +{ +}; +class C_INIT_RandomRadius : public CParticleFunctionInitializer // particles +{ + float32 m_flRadiusMin; // 0x01D8 + float32 m_flRadiusMax; // 0x01DC + float32 m_flRadiusRandExponent; // 0x01E0 +}; +class WorldBuilderParams_t // worldrenderer +{ + float32 m_flMinDrawVolumeSize; // 0x0000 + bool m_bBuildBakedLighting; // 0x0004 + bool m_bAggregateInstanceStreams; // 0x0005 + BakedLightingInfo_t m_bakedLightingInfo; // 0x0008 + uint64 m_nCompileTimestamp; // 0x0050 + uint64 m_nCompileFingerprint; // 0x0058 +}; +class InfoForResourceTypeCJavaScriptResource // resourcesystem +{ +}; +class ParticleChildrenInfo_t // particles +{ + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_ChildRef; // 0x0000 + float32 m_flDelay; // 0x0008 + bool m_bEndCap; // 0x000C + bool m_bDisableChild; // 0x000D + ParticleDetailLevel_t m_nDetailLevel; // 0x0010 +}; +class ModelReference_t // particles +{ + CStrongHandle< InfoForResourceTypeCModel > m_model; // 0x0000 + float32 m_flRelativeProbabilityOfSpawn; // 0x0008 +}; +class CAddUpdateNode : public CBinaryUpdateNode // animgraphlib +{ + BinaryNodeChildOption m_footMotionTiming; // 0x0094 + bool m_bApplyToFootMotion; // 0x0098 + bool m_bApplyChannelsSeparately; // 0x0099 + bool m_bUseModelSpace; // 0x009A + bool m_bApplyScale; // 0x009B +}; +class CNmLegacyEvent : public CNmEvent // animlib +{ + CUtlString m_animEventClassName; // 0x0020 + KeyValues3 m_KV; // 0x0028 +}; +class CEntityIOOutput // entity2 +{ +}; +class EventServerProcessNetworking_t : public EventSimulate_t // engine2 +{ +}; +class EventServerPollNetworking_t : public EventSimulate_t // engine2 +{ +}; +class C_INIT_RemapQAnglesToRotation : public CParticleFunctionInitializer // particles +{ + CParticleTransformInput m_TransformInput; // 0x01D8 +}; +class C_OP_LockToBone : public CParticleFunctionOperator // particles +{ + CParticleModelInput m_modelInput; // 0x01D0 + CParticleTransformInput m_transformInput; // 0x0230 + float32 m_flLifeTimeFadeStart; // 0x0298 + float32 m_flLifeTimeFadeEnd; // 0x029C + float32 m_flJumpThreshold; // 0x02A0 + float32 m_flPrevPosScale; // 0x02A4 + char[128] m_HitboxSetName; // 0x02A8 + bool m_bRigid; // 0x0328 + bool m_bUseBones; // 0x0329 + ParticleAttributeIndex_t m_nFieldOutput; // 0x032C + ParticleAttributeIndex_t m_nFieldOutputPrev; // 0x0330 + ParticleRotationLockType_t m_nRotationSetType; // 0x0334 + bool m_bRigidRotationLock; // 0x0338 + CPerParticleVecInput m_vecRotation; // 0x0340 + CPerParticleFloatInput m_flRotLerp; // 0x09F8 +}; +class MaterialVariable_t // particles +{ + CUtlString m_strVariable; // 0x0000 + ParticleAttributeIndex_t m_nVariableField; // 0x0008 + float32 m_flScale; // 0x000C +}; +class FeTri_t // physicslib +{ + uint16[3] nNode; // 0x0000 + float32 w1; // 0x0008 + float32 w2; // 0x000C + float32 v1x; // 0x0010 + Vector2D v2; // 0x0014 +}; +class CNmCachedBoolNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + NmCachedValueMode_t m_mode; // 0x0014 +}; +class CFootMotion // modellib +{ + CUtlVector< CFootStride > m_strides; // 0x0000 + CUtlString m_name; // 0x0018 + bool m_bAdditive; // 0x0020 +}; +class CEnumAnimParameter : public CConcreteAnimParameter // animgraphlib +{ + uint8 m_defaultValue; // 0x0088 + CUtlVector< CUtlString > m_enumOptions; // 0x0090 + CUtlVector< uint64 > m_vecEnumReferenced; // 0x00A8 +}; +class InfoForResourceTypeCTestResourceData // resourcesystem +{ +}; +class AggregateSceneObject_t // worldrenderer +{ + ObjectTypeFlags_t m_allFlags; // 0x0000 + ObjectTypeFlags_t m_anyFlags; // 0x0004 + int16 m_nLayer; // 0x0008 + int16 m_instanceStream; // 0x000A + int16 m_vertexAlbedoStream; // 0x000C + CUtlVector< AggregateMeshInfo_t > m_aggregateMeshes; // 0x0010 + CUtlVector< AggregateLODSetup_t > m_lodSetups; // 0x0028 + CUtlVector< uint16 > m_visClusterMembership; // 0x0040 + CUtlVector< matrix3x4_t > m_fragmentTransforms; // 0x0058 + CStrongHandle< InfoForResourceTypeCModel > m_renderableModel; // 0x0070 +}; +class CVMixPitchShiftProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixPitchShiftDesc_t m_desc; // 0x0020 +}; +class CSingleFrameUpdateNode : public CLeafUpdateNode // animgraphlib +{ + CUtlVector< CSmartPtr< CAnimActionUpdater > > m_actions; // 0x0058 + CPoseHandle m_hPoseCacheHandle; // 0x0070 + HSequence m_hSequence; // 0x0074 + float32 m_flCycle; // 0x0078 +}; +class CNmBoneMaskSwitchNode::CDefinition : public CNmBoneMaskValueNode::CDefinition // animlib +{ + int16 m_nSwitchValueNodeIdx; // 0x0010 + int16 m_nTrueValueNodeIdx; // 0x0012 + int16 m_nFalseValueNodeIdx; // 0x0014 + float32 m_flBlendTimeSeconds; // 0x0018 + bool m_bSwitchDynamically; // 0x001C +}; +class CHitReactUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + HitReactFixedSettings_t m_opFixedSettings; // 0x0070 + CAnimParamHandle m_triggerParam; // 0x00BC + CAnimParamHandle m_hitBoneParam; // 0x00BE + CAnimParamHandle m_hitOffsetParam; // 0x00C0 + CAnimParamHandle m_hitDirectionParam; // 0x00C2 + CAnimParamHandle m_hitStrengthParam; // 0x00C4 + float32 m_flMinDelayBetweenHits; // 0x00C8 + bool m_bResetChild; // 0x00CC +}; +class CNmEventConsumerAttributes : public CNmEventConsumer // server +{ +}; +class C_INIT_CreateAlongPath : public CParticleFunctionInitializer // particles +{ + float32 m_fMaxDistance; // 0x01D8 + CPathParameters m_PathParams; // 0x01E0 + bool m_bUseRandomCPs; // 0x0220 + Vector m_vEndOffset; // 0x0224 + bool m_bSaveOffset; // 0x0230 +}; +class FeNodeWindBase_t // physicslib +{ + uint16 nNodeX0; // 0x0000 + uint16 nNodeX1; // 0x0002 + uint16 nNodeY0; // 0x0004 + uint16 nNodeY1; // 0x0006 +}; +class MotionIndex // animgraphlib +{ + uint16 m_nGroup; // 0x0000 + uint16 m_nMotion; // 0x0002 +}; +class CLeanMatrixUpdateNode : public CLeafUpdateNode // animgraphlib +{ + int32[3][3] m_frameCorners; // 0x005C + CPoseHandle[9] m_poses; // 0x0080 + CAnimInputDamping m_damping; // 0x00A8 + AnimVectorSource m_blendSource; // 0x00C0 + CAnimParamHandle m_paramIndex; // 0x00C4 + Vector m_verticalAxis; // 0x00C8 + Vector m_horizontalAxis; // 0x00D4 + HSequence m_hSequence; // 0x00E0 + float32 m_flMaxValue; // 0x00E4 + int32 m_nSequenceMaxFrame; // 0x00E8 +}; +class PulseRuntimeCellIndex_t // pulse_runtime_lib +{ + int32 m_Value; // 0x0000 +}; +class AmmoTypeInfo_t // server +{ + int32 m_nMaxCarry; // 0x0010 + CRangeInt m_nSplashSize; // 0x001C + AmmoFlags_t m_nFlags; // 0x0024 + float32 m_flMass; // 0x0028 + CRangeFloat m_flSpeed; // 0x002C +}; +class C_OP_LocalAccelerationForce : public CParticleFunctionForce // particles +{ + int32 m_nCP; // 0x01E0 + int32 m_nScaleCP; // 0x01E4 + CParticleCollectionVecInput m_vecAccel; // 0x01E8 +}; +class C_OP_LerpEndCapVector : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + Vector m_vecOutput; // 0x01D4 + float32 m_flLerpTime; // 0x01E0 +}; +class C_INIT_InheritVelocity : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPointNumber; // 0x01D8 + float32 m_flVelocityScale; // 0x01DC +}; +class C_OP_RampScalarLinearSimple : public CParticleFunctionOperator // particles +{ + float32 m_Rate; // 0x01D0 + float32 m_flStartTime; // 0x01D4 + float32 m_flEndTime; // 0x01D8 + ParticleAttributeIndex_t m_nField; // 0x0200 +}; +class C_OP_RenderClientPhysicsImpulse : public CParticleFunctionRenderer // particles +{ + CPerParticleFloatInput m_flRadius; // 0x0220 + CPerParticleFloatInput m_flMagnitude; // 0x0390 + int32 m_nSimIdFilter; // 0x0500 +}; +class ParticleNamedValueSource_t // particleslib +{ + CUtlString m_Name; // 0x0000 + bool m_IsPublic; // 0x0008 + CPulseValueFullType m_ValueType; // 0x0010 + ParticleNamedValueConfiguration_t m_DefaultConfig; // 0x0028 +}; +class CNmTimeConditionNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_sourceStateNodeIdx; // 0x0010 + int16 m_nInputValueNodeIdx; // 0x0012 + float32 m_flComparand; // 0x0014 + CNmTimeConditionNode::ComparisonType_t m_type; // 0x0018 + CNmTimeConditionNode::Operator_t m_operator; // 0x0019 +}; +class CPulse_OutputConnection // pulse_runtime_lib +{ + PulseSymbol_t m_SourceOutput; // 0x0000 + PulseSymbol_t m_TargetEntity; // 0x0010 + PulseSymbol_t m_TargetInput; // 0x0020 + PulseSymbol_t m_Param; // 0x0030 +}; +class ChainToSolveData_t // animgraphlib +{ + int32 m_nChainIndex; // 0x0000 + IKSolverSettings_t m_SolverSettings; // 0x0004 + IKTargetSettings_t m_TargetSettings; // 0x0010 + SolveIKChainAnimNodeDebugSetting m_DebugSetting; // 0x0038 + float32 m_flDebugNormalizedValue; // 0x003C + VectorAligned m_vDebugOffset; // 0x0040 +}; +class CNmFloatCurveNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + CPiecewiseCurve m_curve; // 0x0018 +}; +class CFlexRule // modellib +{ + int32 m_nFlex; // 0x0000 + CUtlVector< CFlexOp > m_FlexOps; // 0x0008 +}; +class CParticleFloatInput : public CParticleInput // particleslib +{ + ParticleFloatType_t m_nType; // 0x0010 + ParticleFloatMapType_t m_nMapType; // 0x0014 + float32 m_flLiteralValue; // 0x0018 + CParticleNamedValueRef m_NamedValue; // 0x0020 + int32 m_nControlPoint; // 0x0060 + ParticleAttributeIndex_t m_nScalarAttribute; // 0x0064 + ParticleAttributeIndex_t m_nVectorAttribute; // 0x0068 + int32 m_nVectorComponent; // 0x006C + bool m_bReverseOrder; // 0x0070 + float32 m_flRandomMin; // 0x0074 + float32 m_flRandomMax; // 0x0078 + bool m_bHasRandomSignFlip; // 0x007C + int32 m_nRandomSeed; // 0x0080 + ParticleFloatRandomMode_t m_nRandomMode; // 0x0084 + CUtlString m_strSnapshotSubset; // 0x0090 + float32 m_flLOD0; // 0x0098 + float32 m_flLOD1; // 0x009C + float32 m_flLOD2; // 0x00A0 + float32 m_flLOD3; // 0x00A4 + ParticleAttributeIndex_t m_nNoiseInputVectorAttribute; // 0x00A8 + float32 m_flNoiseOutputMin; // 0x00AC + float32 m_flNoiseOutputMax; // 0x00B0 + float32 m_flNoiseScale; // 0x00B4 + Vector m_vecNoiseOffsetRate; // 0x00B8 + float32 m_flNoiseOffset; // 0x00C4 + int32 m_nNoiseOctaves; // 0x00C8 + PFNoiseTurbulence_t m_nNoiseTurbulence; // 0x00CC + PFNoiseType_t m_nNoiseType; // 0x00D0 + PFNoiseModifier_t m_nNoiseModifier; // 0x00D4 + float32 m_flNoiseTurbulenceScale; // 0x00D8 + float32 m_flNoiseTurbulenceMix; // 0x00DC + float32 m_flNoiseImgPreviewScale; // 0x00E0 + bool m_bNoiseImgPreviewLive; // 0x00E4 + float32 m_flNoCameraFallback; // 0x00F0 + bool m_bUseBoundsCenter; // 0x00F4 + ParticleFloatInputMode_t m_nInputMode; // 0x00F8 + float32 m_flMultFactor; // 0x00FC + float32 m_flInput0; // 0x0100 + float32 m_flInput1; // 0x0104 + float32 m_flOutput0; // 0x0108 + float32 m_flOutput1; // 0x010C + float32 m_flNotchedRangeMin; // 0x0110 + float32 m_flNotchedRangeMax; // 0x0114 + float32 m_flNotchedOutputOutside; // 0x0118 + float32 m_flNotchedOutputInside; // 0x011C + ParticleFloatRoundType_t m_nRoundType; // 0x0120 + ParticleFloatBiasType_t m_nBiasType; // 0x0124 + float32 m_flBiasParameter; // 0x0128 + CPiecewiseCurve m_Curve; // 0x0130 +}; +class AttachmentHandle_t // modellib +{ + uint8 m_Value; // 0x0000 +}; +class C_OP_RemapCPtoCP : public CParticleFunctionPreEmission // particles +{ + int32 m_nInputControlPoint; // 0x01D8 + int32 m_nOutputControlPoint; // 0x01DC + int32 m_nInputField; // 0x01E0 + int32 m_nOutputField; // 0x01E4 + float32 m_flInputMin; // 0x01E8 + float32 m_flInputMax; // 0x01EC + float32 m_flOutputMin; // 0x01F0 + float32 m_flOutputMax; // 0x01F4 + bool m_bDerivative; // 0x01F8 + float32 m_flInterpRate; // 0x01FC +}; +class CSeqIKLock // animationsystem +{ + float32 m_flPosWeight; // 0x0000 + float32 m_flAngleWeight; // 0x0004 + int16 m_nLocalBone; // 0x0008 + bool m_bBonesOrientedAlongPositiveX; // 0x000A +}; +class CAnimAttachment // modellib +{ + Quaternion[3] m_influenceRotations; // 0x0000 + VectorAligned[3] m_influenceOffsets; // 0x0030 + int32[3] m_influenceIndices; // 0x0060 + float32[3] m_influenceWeights; // 0x006C + uint8 m_numInfluences; // 0x0078 +}; +class inv_image_map_t // client +{ + CUtlString map_name; // 0x0000 + float32 map_rotation; // 0x0008 +}; +class AggregateRTProxySceneObject_t // worldrenderer +{ + int16 m_nLayer; // 0x0000 + CUtlVector< RTProxyBLAS_t > m_BLASes; // 0x0008 + CUtlVector< RTProxyInstanceInfo_t > m_Instances; // 0x0020 + CUtlBinaryBlock m_VBData; // 0x0038 + CUtlBinaryBlock m_IBData; // 0x0048 + CUtlBinaryBlock m_InstanceAlbedoData; // 0x0058 +}; +class CVoxelVisibility // worldrenderer +{ + uint32 m_nBaseClusterCount; // 0x0040 + uint32 m_nPVSBytesPerCluster; // 0x0044 + Vector m_vMinBounds; // 0x0048 + Vector m_vMaxBounds; // 0x0054 + float32 m_flGridSize; // 0x0060 + uint32 m_nSkyVisibilityCluster; // 0x0064 + uint32 m_nSunVisibilityCluster; // 0x0068 + VoxelVisBlockOffset_t m_NodeBlock; // 0x006C + VoxelVisBlockOffset_t m_RegionBlock; // 0x0074 + VoxelVisBlockOffset_t m_EnclosedClusterListBlock; // 0x007C + VoxelVisBlockOffset_t m_EnclosedClustersBlock; // 0x0084 + VoxelVisBlockOffset_t m_MasksBlock; // 0x008C + VoxelVisBlockOffset_t m_nVisBlocks; // 0x0094 +}; +class VMixModDelayDesc_t // soundsystem_lowlevel +{ + VMixFilterDesc_t m_feedbackFilter; // 0x0000 + bool m_bPhaseInvert; // 0x0010 + float32 m_flGlideTime; // 0x0014 + float32 m_flDelay; // 0x0018 + float32 m_flOutputGain; // 0x001C + float32 m_flFeedbackGain; // 0x0020 + float32 m_flModRate; // 0x0024 + float32 m_flModDepth; // 0x0028 + bool m_bApplyAntialiasing; // 0x002C +}; +class SkeletonAnimCapture_t::FrameStamp_t // modellib +{ + float32 m_flTime; // 0x0000 + float32 m_flEntitySimTime; // 0x0004 + bool m_bTeleportTick; // 0x0008 + bool m_bPredicted; // 0x0009 + float32 m_flCurTime; // 0x000C + float32 m_flRealTime; // 0x0010 + int32 m_nFrameCount; // 0x0014 + int32 m_nTickCount; // 0x0018 +}; +class NmSyncTrackTime_t // animlib +{ + int32 m_nEventIdx; // 0x0000 + NmPercent_t m_percentageThrough; // 0x0004 +}; +class CNmBoneMaskNode::CDefinition : public CNmBoneMaskValueNode::CDefinition // animlib +{ + CGlobalSymbol m_boneMaskID; // 0x0010 +}; +class CFootStepTriggerUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + CUtlVector< FootStepTrigger > m_triggers; // 0x0070 + float32 m_flTolerance; // 0x008C +}; +class C_INIT_VelocityRadialRandom : public CParticleFunctionInitializer // particles +{ + bool m_bPerParticleCenter; // 0x01D8 + int32 m_nControlPointNumber; // 0x01DC + CPerParticleVecInput m_vecPosition; // 0x01E0 + CPerParticleVecInput m_vecFwd; // 0x0898 + CPerParticleFloatInput m_fSpeedMin; // 0x0F50 + CPerParticleFloatInput m_fSpeedMax; // 0x10C0 + Vector m_vecLocalCoordinateSystemSpeedScale; // 0x1230 + bool m_bIgnoreDelta; // 0x123D +}; +class C_INIT_RemapNamedModelMeshGroupToScalar : public C_INIT_RemapNamedModelElementToScalar // particles +{ +}; +class EntityIOConnectionData_t // worldrenderer +{ + CUtlString m_outputName; // 0x0000 + uint32 m_targetType; // 0x0008 + CUtlString m_targetName; // 0x0010 + CUtlString m_inputName; // 0x0018 + CUtlString m_overrideParam; // 0x0020 + float32 m_flDelay; // 0x0028 + int32 m_nTimesToFire; // 0x002C + KeyValues3 m_paramMap; // 0x0030 +}; +class CParamSpanUpdater // animgraphlib +{ + CUtlVector< ParamSpan_t > m_spans; // 0x0000 +}; +class CParticleCollectionRendererFloatInput : public CParticleCollectionFloatInput // particleslib +{ +}; +class CNmFloatRangeComparisonNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + Range_t m_range; // 0x0010 + int16 m_nInputValueNodeIdx; // 0x0018 + bool m_bIsInclusiveCheck; // 0x001A +}; +class InfoForResourceTypeIAnimGraphModelBinding // resourcesystem +{ +}; +class InfoForResourceTypeIParticleSnapshot // resourcesystem +{ +}; +class C_OP_SetControlPointToVectorExpression : public CParticleFunctionPreEmission // particles +{ + VectorExpressionType_t m_nExpression; // 0x01D8 + int32 m_nOutputCP; // 0x01DC + CParticleCollectionVecInput m_vInput1; // 0x01E0 + CParticleCollectionVecInput m_vInput2; // 0x0898 + CPerParticleFloatInput m_flLerp; // 0x0F50 + bool m_bNormalizedOutput; // 0x10C0 +}; +class CPathParameters // particles +{ + int32 m_nStartControlPointNumber; // 0x0000 + int32 m_nEndControlPointNumber; // 0x0004 + int32 m_nBulgeControl; // 0x0008 + float32 m_flBulge; // 0x000C + float32 m_flMidPoint; // 0x0010 + Vector m_vStartPointOffset; // 0x0014 + Vector m_vMidPointOffset; // 0x0020 + Vector m_vEndOffset; // 0x002C +}; +class C_INIT_InitFromVectorFieldSnapshot : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPointNumber; // 0x01D8 + int32 m_nLocalSpaceCP; // 0x01DC + int32 m_nWeightUpdateCP; // 0x01E0 + bool m_bUseVerticalVelocity; // 0x01E4 + CPerParticleVecInput m_vecScale; // 0x01E8 +}; +class CSosGroupActionSoundeventCountSchema : public CSosGroupActionSchema // soundsystem +{ + bool m_bExcludeStoppedSounds; // 0x0008 + CUtlString m_strCountKeyName; // 0x0010 +}; +class CVoiceContainerTapePlayer : public CVoiceContainerAsyncGenerator // soundsystem_voicecontainers +{ + bool m_bShouldWraparound; // 0x00B8 + CStrongHandle< InfoForResourceTypeCVoiceContainerBase > m_sourceAudio; // 0x00C0 + float32 m_flTapeSpeedAttackTime; // 0x00C8 + float32 m_flTapeSpeedReleaseTime; // 0x00CC +}; +class CNmVirtualParameterVectorNode::CDefinition : public CNmVectorValueNode::CDefinition // animlib +{ + int16 m_nChildNodeIdx; // 0x0010 +}; +class CNmConstIDNode::CDefinition : public CNmIDValueNode::CDefinition // animlib +{ + CGlobalSymbol m_value; // 0x0010 +}; +class EventServerPostAdvanceTick_t : public EventPostAdvanceTick_t // engine2 +{ + bool m_bLastTickBeforeClientUpdate; // 0x0040 +}; +class TextureControls_t // particles +{ + CParticleCollectionRendererFloatInput m_flFinalTextureScaleU; // 0x0000 + CParticleCollectionRendererFloatInput m_flFinalTextureScaleV; // 0x0170 + CParticleCollectionRendererFloatInput m_flFinalTextureOffsetU; // 0x02E0 + CParticleCollectionRendererFloatInput m_flFinalTextureOffsetV; // 0x0450 + CParticleCollectionRendererFloatInput m_flFinalTextureUVRotation; // 0x05C0 + CParticleCollectionRendererFloatInput m_flZoomScale; // 0x0730 + CParticleCollectionRendererFloatInput m_flDistortion; // 0x08A0 + bool m_bRandomizeOffsets; // 0x0A10 + bool m_bClampUVs; // 0x0A11 + SpriteCardPerParticleScale_t m_nPerParticleBlend; // 0x0A14 + SpriteCardPerParticleScale_t m_nPerParticleScale; // 0x0A18 + SpriteCardPerParticleScale_t m_nPerParticleOffsetU; // 0x0A1C + SpriteCardPerParticleScale_t m_nPerParticleOffsetV; // 0x0A20 + SpriteCardPerParticleScale_t m_nPerParticleRotation; // 0x0A24 + SpriteCardPerParticleScale_t m_nPerParticleZoom; // 0x0A28 + SpriteCardPerParticleScale_t m_nPerParticleDistortion; // 0x0A2C +}; +class PermEntityLumpData_t // worldrenderer +{ + CUtlString m_name; // 0x0008 + CUtlVector< CStrongHandleCopyable< InfoForResourceTypeCEntityLump > > m_childLumps; // 0x0010 + CUtlLeanVector< EntityKeyValueData_t > m_entityKeyValues; // 0x0028 +}; +class VMixPitchShiftDesc_t // soundsystem_lowlevel +{ + int32 m_nGrainSampleCount; // 0x0000 + float32 m_flPitchShift; // 0x0004 + int32 m_nQuality; // 0x0008 + int32 m_nProcType; // 0x000C +}; +class CNmVectorInfoNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + CNmVectorInfoNode::Info_t m_desiredInfo; // 0x0012 +}; +class CModelConfigList // modellib +{ + bool m_bHideMaterialGroupInTools; // 0x0000 + bool m_bHideRenderColorInTools; // 0x0001 + CUtlVector< CModelConfig* > m_Configs; // 0x0008 +}; +class CNmCurrentSyncEventIDNode::CDefinition : public CNmIDValueNode::CDefinition // animlib +{ + int16 m_nSourceStateNodeIdx; // 0x0010 +}; +class CFootTrajectory // modellib +{ + Vector m_vOffset; // 0x0008 + float32 m_flRotationOffset; // 0x0014 + float32 m_flProgression; // 0x0018 +}; +class InfoForResourceTypeCResponseRulesList // resourcesystem +{ +}; +class SimpleConstraintSoundProfile // server +{ + float32 m_flKeyPointMinSoundThreshold; // 0x0008 + float32 m_flKeyPointMaxSoundThreshold; // 0x000C + float32 m_reversalSoundThresholdSmall; // 0x0010 + float32 m_reversalSoundThresholdMedium; // 0x0014 + float32 m_reversalSoundThresholdLarge; // 0x0018 +}; +class AggregateVertexAlbedoStreamOnDiskData_t // worldrenderer +{ + CUtlBinaryBlock m_BufferData; // 0x0000 +}; +class AnimationSnapshot_t : public AnimationSnapshotBase_t // animationsystem +{ + int32 m_nEntIndex; // 0x0110 + CUtlString m_modelName; // 0x0118 +}; +class LookAtBone_t // animgraphlib +{ + int32 m_index; // 0x0000 + float32 m_weight; // 0x0004 +}; +class CNmValueNode::CDefinition : public CNmGraphNode::CDefinition // animlib +{ +}; +class VMixDynamicsBand_t // soundsystem_lowlevel +{ + float32 m_fldbGainInput; // 0x0000 + float32 m_fldbGainOutput; // 0x0004 + float32 m_fldbThresholdBelow; // 0x0008 + float32 m_fldbThresholdAbove; // 0x000C + float32 m_flRatioBelow; // 0x0010 + float32 m_flRatioAbove; // 0x0014 + float32 m_flAttackTimeMS; // 0x0018 + float32 m_flReleaseTimeMS; // 0x001C + bool m_bEnable; // 0x0020 + bool m_bSolo; // 0x0021 +}; +class CPulse_RegisterInfo // pulse_runtime_lib +{ + PulseRuntimeRegisterIndex_t m_nReg; // 0x0000 + CPulseValueFullType m_Type; // 0x0008 + CKV3MemberNameWithStorage m_OriginName; // 0x0020 + int32 m_nWrittenByInstruction; // 0x0058 + int32 m_nLastReadByInstruction; // 0x005C +}; +class CNmAnimationPoseNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ + int16 m_nPoseTimeValueNodeIdx; // 0x0010 + int16 m_nDataSlotIdx; // 0x0012 + Range_t m_inputTimeRemapRange; // 0x0014 + float32 m_flUserSpecifiedTime; // 0x001C + bool m_bUseFramesAsInput; // 0x0020 +}; +class NavGravity_t // navlib +{ + Vector m_vGravity; // 0x0000 + bool m_bDefault; // 0x000C +}; +class C_INIT_CreateSequentialPath : public CParticleFunctionInitializer // particles +{ + float32 m_fMaxDistance; // 0x01D8 + float32 m_flNumToAssign; // 0x01DC + bool m_bLoop; // 0x01E0 + bool m_bCPPairs; // 0x01E1 + bool m_bSaveOffset; // 0x01E2 + CPathParameters m_PathParams; // 0x01F0 +}; +class C_OP_SetUserEvent : public CParticleFunctionOperator // particles +{ + CPerParticleFloatInput m_flInput; // 0x01D0 + CPerParticleFloatInput m_flRisingEdge; // 0x0340 + EventTypeSelection_t m_nRisingEventType; // 0x04B0 + CPerParticleFloatInput m_flFallingEdge; // 0x04B8 + EventTypeSelection_t m_nFallingEventType; // 0x0628 +}; +class VMixUtilityDesc_t // soundsystem_lowlevel +{ + VMixChannelOperation_t m_nOp; // 0x0000 + float32 m_flInputPan; // 0x0004 + float32 m_flOutputBalance; // 0x0008 + float32 m_fldbOutputGain; // 0x000C + bool m_bBassMono; // 0x0010 + float32 m_flBassFreq; // 0x0014 +}; +class FeTaperedCapsuleRigid_t // physicslib +{ + fltx4[2] vSphere; // 0x0000 + uint16 nNode; // 0x0020 + uint16 nCollisionMask; // 0x0022 + uint16 nVertexMapIndex; // 0x0024 + uint16 nFlags; // 0x0026 +}; +class CMotionGraphGroup // animgraphlib +{ + CMotionSearchDB m_searchDB; // 0x0000 + CUtlVector< CSmartPtr< CMotionGraph > > m_motionGraphs; // 0x00B8 + CUtlVector< CMotionGraphConfig > m_motionGraphConfigs; // 0x00D0 + CUtlVector< int32 > m_sampleToConfig; // 0x00E8 + AnimScriptHandle m_hIsActiveScript; // 0x0100 +}; +class CBtNode // server +{ +}; +class C_OP_ClampScalar : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + CPerParticleFloatInput m_flOutputMin; // 0x01D8 + CPerParticleFloatInput m_flOutputMax; // 0x0348 +}; +class C_OP_WorldTraceConstraint : public CParticleFunctionConstraint // particles +{ + int32 m_nCP; // 0x01D0 + Vector m_vecCpOffset; // 0x01D4 + ParticleCollisionMode_t m_nCollisionMode; // 0x01E0 + ParticleCollisionMode_t m_nCollisionModeMin; // 0x01E4 + ParticleTraceSet_t m_nTraceSet; // 0x01E8 + char[128] m_CollisionGroupName; // 0x01EC + bool m_bWorldOnly; // 0x026C + bool m_bBrushOnly; // 0x026D + bool m_bIncludeWater; // 0x026E + int32 m_nIgnoreCP; // 0x0270 + float32 m_flCpMovementTolerance; // 0x0274 + float32 m_flRetestRate; // 0x0278 + float32 m_flTraceTolerance; // 0x027C + float32 m_flCollisionConfirmationSpeed; // 0x0280 + float32 m_nMaxTracesPerFrame; // 0x0284 + CPerParticleFloatInput m_flRadiusScale; // 0x0288 + CPerParticleFloatInput m_flBounceAmount; // 0x03F8 + CPerParticleFloatInput m_flSlideAmount; // 0x0568 + CPerParticleFloatInput m_flRandomDirScale; // 0x06D8 + bool m_bDecayBounce; // 0x0848 + bool m_bKillonContact; // 0x0849 + float32 m_flMinSpeed; // 0x084C + bool m_bSetNormal; // 0x0850 + ParticleAttributeIndex_t m_nStickOnCollisionField; // 0x0854 + CPerParticleFloatInput m_flStopSpeed; // 0x0858 + ParticleAttributeIndex_t m_nEntityStickDataField; // 0x09C8 + ParticleAttributeIndex_t m_nEntityStickNormalField; // 0x09CC +}; +class C_INIT_RemapInitialVisibilityScalar : public CParticleFunctionInitializer // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01DC + float32 m_flInputMin; // 0x01E0 + float32 m_flInputMax; // 0x01E4 + float32 m_flOutputMin; // 0x01E8 + float32 m_flOutputMax; // 0x01EC +}; +class CStateMachineComponentUpdater : public CAnimComponentUpdater // animgraphlib +{ + CAnimStateMachineUpdater m_stateMachine; // 0x0030 +}; +class CAnimEnum // animationsystem +{ + uint8 m_value; // 0x0000 +}; +class CMeshletDescriptor // modellib +{ + PackedAABB_t m_PackedAABB; // 0x0000 + CDrawCullingData m_CullingData; // 0x0008 + uint32 m_nVertexOffset; // 0x000C + uint32 m_nTriangleOffset; // 0x0010 + uint8 m_nVertexCount; // 0x0014 + uint8 m_nTriangleCount; // 0x0015 +}; +class CRagdollUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + int32 m_nWeightListIndex; // 0x0070 + RagdollPoseControl m_poseControlMethod; // 0x0074 +}; +class PulseRuntimeStateOffset_t // pulse_runtime_lib +{ + uint16 m_Value; // 0x0000 +}; +class PostProcessingFogScatteringParameters_t // materialsystem2 +{ + float32 m_fRadius; // 0x0000 + float32 m_fScale; // 0x0004 + float32 m_fCubemapScale; // 0x0008 + float32 m_fVolumetricScale; // 0x000C + float32 m_fGradientScale; // 0x0010 +}; +class C_INIT_RemapParticleCountToNamedModelSequenceScalar : public C_INIT_RemapParticleCountToNamedModelElementScalar // particles +{ +}; +class CPairedSequenceUpdateNode : public CSequenceUpdateNodeBase // animgraphlib +{ + CGlobalSymbol m_sPairedSequenceRole; // 0x0078 +}; +class FootLockPoseOpFixedSettings // animgraphlib +{ + CUtlVector< FootFixedData_t > m_footInfo; // 0x0000 + CAnimInputDamping m_hipDampingSettings; // 0x0018 + int32 m_nHipBoneIndex; // 0x0030 + IKSolverType m_ikSolverType; // 0x0034 + bool m_bApplyTilt; // 0x0038 + bool m_bApplyHipDrop; // 0x0039 + bool m_bAlwaysUseFallbackHinge; // 0x003A + bool m_bApplyFootRotationLimits; // 0x003B + bool m_bApplyLegTwistLimits; // 0x003C + float32 m_flMaxFootHeight; // 0x0040 + float32 m_flExtensionScale; // 0x0044 + float32 m_flMaxLegTwist; // 0x0048 + bool m_bEnableLockBreaking; // 0x004C + float32 m_flLockBreakTolerance; // 0x0050 + float32 m_flLockBlendTime; // 0x0054 + bool m_bEnableStretching; // 0x0058 + float32 m_flMaxStretchAmount; // 0x005C + float32 m_flStretchExtensionScale; // 0x0060 +}; +class PulseCursorYieldToken_t // pulse_runtime_lib +{ + int32 m_Value; // 0x0000 +}; +class PostProcessingVignetteParameters_t // materialsystem2 +{ + float32 m_flVignetteStrength; // 0x0000 + Vector2D m_vCenter; // 0x0004 + float32 m_flRadius; // 0x000C + float32 m_flRoundness; // 0x0010 + float32 m_flFeather; // 0x0014 + Vector m_vColorTint; // 0x0018 +}; +class inv_image_light_barn_t // client +{ + Vector color; // 0x0000 + QAngle angle; // 0x000C + float32 brightness; // 0x0018 + float32 orbit_distance; // 0x001C +}; +class C_OP_VectorFieldSnapshot : public CParticleFunctionOperator // particles +{ + int32 m_nControlPointNumber; // 0x01D0 + ParticleAttributeIndex_t m_nAttributeToWrite; // 0x01D4 + int32 m_nLocalSpaceCP; // 0x01D8 + CPerParticleFloatInput m_flInterpolation; // 0x01E0 + CPerParticleVecInput m_vecScale; // 0x0350 + float32 m_flBoundaryDampening; // 0x0A08 + bool m_bSetVelocity; // 0x0A0C + bool m_bLockToSurface; // 0x0A0D + float32 m_flGridSpacing; // 0x0A10 +}; +class CSSDSMsg_PostLayer : public CSSDSMsg_LayerBase // scenesystem +{ +}; +class FeWeightedNode_t // physicslib +{ + uint16 nNode; // 0x0000 + uint16 nWeight; // 0x0002 +}; +class CNmTargetSelectorNode::CDefinition : public CNmClipReferenceNode::CDefinition // animlib +{ + CUtlLeanVectorFixedGrowable< int16, 5 > m_optionNodeIndices; // 0x0010 + float32 m_flOrientationScoreWeight; // 0x0028 + float32 m_flPositionScoreWeight; // 0x002C + int16 m_parameterNodeIdx; // 0x0030 + bool m_bIgnoreInvalidOptions; // 0x0032 + bool m_bIsWorldSpaceTarget; // 0x0033 +}; +class CCurrentRotationVelocityMetricEvaluator : public CMotionMetricEvaluator // animgraphlib +{ +}; +class QuestProgress // server +{ +}; +class C_OP_RemapVelocityToVector : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + float32 m_flScale; // 0x01D4 + bool m_bNormalize; // 0x01D8 +}; +class C_INIT_CreateOnGrid : public CParticleFunctionInitializer // particles +{ + CParticleCollectionFloatInput m_nXCount; // 0x01D8 + CParticleCollectionFloatInput m_nYCount; // 0x0348 + CParticleCollectionFloatInput m_nZCount; // 0x04B8 + CParticleCollectionFloatInput m_nXSpacing; // 0x0628 + CParticleCollectionFloatInput m_nYSpacing; // 0x0798 + CParticleCollectionFloatInput m_nZSpacing; // 0x0908 + int32 m_nControlPointNumber; // 0x0A78 + bool m_bLocalSpace; // 0x0A7C + bool m_bCenter; // 0x0A7D + bool m_bHollow; // 0x0A7E +}; +class C_OP_SetControlPointToCPVelocity : public CParticleFunctionPreEmission // particles +{ + int32 m_nCPInput; // 0x01D8 + int32 m_nCPOutputVel; // 0x01DC + bool m_bNormalize; // 0x01E0 + int32 m_nCPOutputMag; // 0x01E4 + int32 m_nCPField; // 0x01E8 + CParticleCollectionVecInput m_vecComparisonVelocity; // 0x01F0 +}; +class CDspPresetModifierList // soundsystem +{ + CUtlString m_dspName; // 0x0000 + CUtlVector< CDSPMixgroupModifier > m_modifiers; // 0x0008 +}; +class FeKelagerBend2_t // physicslib +{ + float32[3] flWeight; // 0x0000 + float32 flHeight0; // 0x000C + uint16[3] nNode; // 0x0010 + uint16 nReserved; // 0x0016 +}; +class CNmVelocityBlendNode::CDefinition : public CNmParameterizedBlendNode::CDefinition // animlib +{ +}; +class InfoForResourceTypeCSequenceGroupData // resourcesystem +{ +}; +class CFlashlightEffect // client +{ + bool m_bIsOn; // 0x0010 + bool m_bMuzzleFlashEnabled; // 0x0020 + float32 m_flMuzzleFlashBrightness; // 0x0024 + Quaternion m_quatMuzzleFlashOrientation; // 0x0030 + Vector m_vecMuzzleFlashOrigin; // 0x0040 + float32 m_flFov; // 0x004C + float32 m_flFarZ; // 0x0050 + float32 m_flLinearAtten; // 0x0054 + bool m_bCastsShadows; // 0x0058 + float32 m_flCurrentPullBackDist; // 0x005C + CStrongHandle< InfoForResourceTypeCTextureBase > m_FlashlightTexture; // 0x0060 + CStrongHandle< InfoForResourceTypeCTextureBase > m_MuzzleFlashTexture; // 0x0068 + char[64] m_textureName; // 0x0070 +}; +class C_OP_ControlpointLight : public CParticleFunctionOperator // particles +{ + float32 m_flScale; // 0x01D0 + int32 m_nControlPoint1; // 0x0660 + int32 m_nControlPoint2; // 0x0664 + int32 m_nControlPoint3; // 0x0668 + int32 m_nControlPoint4; // 0x066C + Vector m_vecCPOffset1; // 0x0670 + Vector m_vecCPOffset2; // 0x067C + Vector m_vecCPOffset3; // 0x0688 + Vector m_vecCPOffset4; // 0x0694 + float32 m_LightFiftyDist1; // 0x06A0 + float32 m_LightZeroDist1; // 0x06A4 + float32 m_LightFiftyDist2; // 0x06A8 + float32 m_LightZeroDist2; // 0x06AC + float32 m_LightFiftyDist3; // 0x06B0 + float32 m_LightZeroDist3; // 0x06B4 + float32 m_LightFiftyDist4; // 0x06B8 + float32 m_LightZeroDist4; // 0x06BC + Color m_LightColor1; // 0x06C0 + Color m_LightColor2; // 0x06C4 + Color m_LightColor3; // 0x06C8 + Color m_LightColor4; // 0x06CC + bool m_bLightType1; // 0x06D0 + bool m_bLightType2; // 0x06D1 + bool m_bLightType3; // 0x06D2 + bool m_bLightType4; // 0x06D3 + bool m_bLightDynamic1; // 0x06D4 + bool m_bLightDynamic2; // 0x06D5 + bool m_bLightDynamic3; // 0x06D6 + bool m_bLightDynamic4; // 0x06D7 + bool m_bUseNormal; // 0x06D8 + bool m_bUseHLambert; // 0x06D9 + bool m_bClampLowerRange; // 0x06DE + bool m_bClampUpperRange; // 0x06DF +}; +class ParticleControlPointConfiguration_t // particles +{ + CUtlString m_name; // 0x0000 + CUtlVector< ParticleControlPointDriver_t > m_drivers; // 0x0008 + ParticlePreviewState_t m_previewState; // 0x0020 +}; +class CVMixModDelayProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixModDelayDesc_t m_desc; // 0x0020 +}; +class CNmIDValueNode::CDefinition : public CNmValueNode::CDefinition // animlib +{ +}; +class CAnimMorphDifference // animationsystem +{ + CBufferString m_name; // 0x0000 +}; +class CBaseIssue // server +{ + char[64] m_szTypeString; // 0x0020 + char[260] m_szDetailsString; // 0x0060 + int32 m_iNumYesVotes; // 0x0164 + int32 m_iNumNoVotes; // 0x0168 + int32 m_iNumPotentialVotes; // 0x016C + CVoteController* m_pVoteController; // 0x0170 +}; +class C_OP_RemapGravityToVector : public CParticleFunctionOperator // particles +{ + CPerParticleVecInput m_vInput1; // 0x01D0 + ParticleAttributeIndex_t m_nOutputField; // 0x0888 + ParticleSetMethod_t m_nSetMethod; // 0x088C + bool m_bNormalizedOutput; // 0x0890 +}; +class C_INIT_VelocityFromNormal : public CParticleFunctionInitializer // particles +{ + float32 m_fSpeedMin; // 0x01D8 + float32 m_fSpeedMax; // 0x01DC + bool m_bIgnoreDt; // 0x01E0 +}; +class CSSDSEndFrameViewInfo // scenesystem +{ + uint64 m_nViewId; // 0x0000 + CUtlString m_ViewName; // 0x0008 +}; +class CSosGroupActionSoundeventPrioritySchema : public CSosGroupActionSchema // soundsystem +{ + CUtlString m_priorityValue; // 0x0008 + CUtlString m_priorityVolumeScalar; // 0x0010 + CUtlString m_priorityContributeButDontRead; // 0x0018 + CUtlString m_bPriorityReadButDontContribute; // 0x0020 +}; +class FeSourceEdge_t // physicslib +{ + uint16[2] nNode; // 0x0000 +}; +class CNmStateMachineNode::StateDefinition_t // animlib +{ + int16 m_nStateNodeIdx; // 0x0000 + int16 m_nEntryConditionNodeIdx; // 0x0002 + CUtlLeanVectorFixedGrowable< CNmStateMachineNode::TransitionDefinition_t, 5 > m_transitionDefinitions; // 0x0008 +}; +class CChoreoUpdateNode : public CUnaryUpdateNode // animgraphlib +{ +}; +class CStepsRemainingMetricEvaluator : public CMotionMetricEvaluator // animgraphlib +{ + CUtlVector< int32 > m_footIndices; // 0x0050 + float32 m_flMinStepsRemaining; // 0x0068 +}; +class CNmIsExternalGraphSlotFilledNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_nExternalGraphNodeIdx; // 0x0010 +}; +class CBoneConstraintPoseSpaceBone::Input_t // modellib +{ + Vector m_inputValue; // 0x0000 + CUtlVector< CTransform > m_outputTransformList; // 0x0010 +}; +class VPhysics2ShapeDef_t // modellib +{ + CUtlVector< RnSphereDesc_t > m_spheres; // 0x0000 + CUtlVector< RnCapsuleDesc_t > m_capsules; // 0x0018 + CUtlVector< RnHullDesc_t > m_hulls; // 0x0030 + CUtlVector< RnMeshDesc_t > m_meshes; // 0x0048 + CUtlVector< uint16 > m_CollisionAttributeIndices; // 0x0060 +}; +class CNmVirtualParameterBoolNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_nChildNodeIdx; // 0x0010 +}; +class RTProxyBLAS_t // worldrenderer +{ + uint32 m_nFirstIndex; // 0x0000 + uint32 m_nIndexCount; // 0x0004 + uint32 m_nVBByteOffset; // 0x0008 + uint32 m_nBaseVertex; // 0x000C + uint16 m_nVertexCount; // 0x0010 + VertexAlbedoFormat_t m_albedoFormat; // 0x0012 + AABB_t m_boundLs; // 0x0014 + Vector m_vVertexOriginLs; // 0x002C + Vector m_vVertexExtentLs; // 0x0038 +}; +class CVMixPlateReverbProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixPlateverbDesc_t m_desc; // 0x0020 +}; +class CVMixBoxverb2ProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixBoxverbDesc_t m_desc; // 0x0020 +}; +class JiggleBoneSettingsList_t // animgraphlib +{ + CUtlVector< JiggleBoneSettings_t > m_boneSettings; // 0x0000 +}; +class CNmControlParameterTargetNode::CDefinition : public CNmTargetValueNode::CDefinition // animlib +{ +}; +class FourQuaternions // mathlib_extended +{ + fltx4 x; // 0x0000 + fltx4 y; // 0x0010 + fltx4 z; // 0x0020 + fltx4 w; // 0x0030 +}; +class C_OP_ChooseRandomChildrenInGroup : public CParticleFunctionPreEmission // particles +{ + int32 m_nChildGroupID; // 0x01D8 + CParticleCollectionFloatInput m_flNumberOfChildren; // 0x01E0 +}; +class C_OP_Cull : public CParticleFunctionOperator // particles +{ + float32 m_flCullPerc; // 0x01D0 + float32 m_flCullStart; // 0x01D4 + float32 m_flCullEnd; // 0x01D8 + float32 m_flCullExp; // 0x01DC +}; +class AggregateMeshInfo_t // worldrenderer +{ + uint32 m_nVisClusterMemberOffset; // 0x0000 + uint8 m_nVisClusterMemberCount; // 0x0004 + bool m_bHasTransform; // 0x0005 + uint8 m_nLODGroupMask; // 0x0006 + int16 m_nDrawCallIndex; // 0x0008 + int16 m_nLODSetupIndex; // 0x000A + Color m_vTintColor; // 0x000C + ObjectTypeFlags_t m_objectFlags; // 0x0010 + int32 m_nLightProbeVolumePrecomputedHandshake; // 0x0014 + uint32 m_nInstanceStreamOffset; // 0x0018 + uint32 m_nVertexAlbedoStreamOffset; // 0x001C + AggregateInstanceStream_t m_instanceStreams; // 0x0020 +}; +class CVMixSteamAudioDirectProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ +}; +class FeCtrlSoftOffset_t // physicslib +{ + uint16 nCtrlParent; // 0x0000 + uint16 nCtrlChild; // 0x0002 + Vector vOffset; // 0x0004 + float32 flAlpha; // 0x0010 +}; +class CAnimActivity // animationsystem +{ + CBufferString m_name; // 0x0000 + int32 m_nActivity; // 0x0010 + int32 m_nFlags; // 0x0014 + int32 m_nWeight; // 0x0018 +}; +class CNmFloatRemapNode::RemapRange_t // animlib +{ + float32 m_flBegin; // 0x0000 + float32 m_flEnd; // 0x0004 +}; +class CDampedValueUpdateItem // animgraphlib +{ + CAnimInputDamping m_damping; // 0x0000 + CAnimParamHandle m_hParamIn; // 0x0020 + CAnimParamHandle m_hParamOut; // 0x0022 +}; +class CFutureFacingMetricEvaluator : public CMotionMetricEvaluator // animgraphlib +{ + float32 m_flDistance; // 0x0050 + float32 m_flTime; // 0x0054 +}; +class NmBoneMaskSetDefinition_t // animlib +{ + CGlobalSymbol m_ID; // 0x0000 + CNmBoneWeightList m_primaryWeightList; // 0x0008 + CUtlLeanVector< CNmBoneWeightList > m_secondaryWeightLists; // 0x0118 +}; +class C_OP_RemapControlPointOrientationToRotation : public CParticleFunctionOperator // particles +{ + int32 m_nCP; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + float32 m_flOffsetRot; // 0x01D8 + int32 m_nComponent; // 0x01DC +}; +class C_OP_RenderTreeShake : public CParticleFunctionRenderer // particles +{ + float32 m_flPeakStrength; // 0x0220 + ParticleAttributeIndex_t m_nPeakStrengthFieldOverride; // 0x0224 + float32 m_flRadius; // 0x0228 + ParticleAttributeIndex_t m_nRadiusFieldOverride; // 0x022C + float32 m_flShakeDuration; // 0x0230 + float32 m_flTransitionTime; // 0x0234 + float32 m_flTwistAmount; // 0x0238 + float32 m_flRadialAmount; // 0x023C + float32 m_flControlPointOrientationAmount; // 0x0240 + int32 m_nControlPointForLinearDirection; // 0x0244 +}; +class C_OP_RotateVector : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + Vector m_vecRotAxisMin; // 0x01D4 + Vector m_vecRotAxisMax; // 0x01E0 + float32 m_flRotRateMin; // 0x01EC + float32 m_flRotRateMax; // 0x01F0 + bool m_bNormalize; // 0x01F4 + CPerParticleFloatInput m_flScale; // 0x01F8 +}; +class CSteamAudioBakedReverbData // steamaudio +{ + int32 m_nBands; // 0x0000 + CSteamAudioProbeData m_probes; // 0x0008 + CSteamAudioProbeGrid m_grid; // 0x0010 + SteamAudioReverbSettings_t m_reverbSettings; // 0x0068 + SteamAudioReverbClusteringSettings_t m_reverbClusteringSettings; // 0x0078 + SteamAudioReverbCompressionSettings_t m_reverbCompressionSettings; // 0x0084 + CSteamAudioProbeData m_clusteredProbes; // 0x0090 + CUtlVector< int16 > m_vecClusterForProbe; // 0x0098 + CSteamAudioCompressedReverb m_compressedData; // 0x00B0 + CSteamAudioCompressedReverb m_compressedClusteredData; // 0x0110 + CSteamAudioMovableBakedData< CSteamAudioBakedReverbData > m_movables; // 0x0170 +}; +class BlendItem_t // animgraphlib +{ + CUtlVector< TagSpan_t > m_tags; // 0x0000 + CAnimUpdateNodeRef m_pChild; // 0x0018 + HSequence m_hSequence; // 0x0028 + Vector2D m_vPos; // 0x002C + float32 m_flDuration; // 0x0034 + bool m_bUseCustomDuration; // 0x0038 +}; +class CNmBoneWeightList // animlib +{ + CResourceName m_skeletonName; // 0x0000 + CUtlVector< CGlobalSymbol > m_boneIDs; // 0x00E0 + CUtlVector< float32 > m_weights; // 0x00F8 +}; +class CPulseGraphExecutionHistory // pulse_runtime_lib +{ + PulseGraphInstanceID_t m_nInstanceID; // 0x0000 + CUtlString m_strFileName; // 0x0008 + CUtlVector< PulseGraphExecutionHistoryEntry_t* > m_vecHistory; // 0x0010 + CUtlOrderedMap< PulseDocNodeID_t, PulseGraphExecutionHistoryNodeDesc_t* > m_mapCellDesc; // 0x0028 + CUtlOrderedMap< PulseCursorID_t, PulseGraphExecutionHistoryCursorDesc_t* > m_mapCursorDesc; // 0x0050 +}; +class C_OP_AttractToControlPoint : public CParticleFunctionForce // particles +{ + Vector m_vecComponentScale; // 0x01E0 + CPerParticleFloatInput m_fForceAmount; // 0x01F0 + float32 m_fFalloffPower; // 0x0360 + CParticleTransformInput m_TransformInput; // 0x0368 + CPerParticleFloatInput m_fForceAmountMin; // 0x03D0 + bool m_bApplyMinForce; // 0x0540 +}; +class VMixSubgraphSwitchDesc_t // soundsystem_lowlevel +{ + CUtlString m_name; // 0x0000 + CUtlString m_effectName; // 0x0008 + CUtlVector< CUtlString > m_subgraphs; // 0x0010 + VMixSubgraphSwitchInterpolationType_t m_interpolationMode; // 0x0028 + bool m_bOnlyTailsOnFadeOut; // 0x002C + float32 m_flInterpolationTime; // 0x0030 +}; +class SelectedEditItemInfo_t // soundsystem +{ + CUtlVector< SosEditItemInfo_t > m_EditItems; // 0x0000 +}; +class CVMixDelayProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixDelayDesc_t m_desc; // 0x0020 +}; +class CNmIDEventConditionNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_nSourceStateNodeIdx; // 0x0010 + CNmBitFlags m_eventConditionRules; // 0x0014 + CUtlVectorFixedGrowable< CGlobalSymbol, 5 > m_eventIDs; // 0x0018 +}; +class CAttachment // modellib +{ + CUtlString m_name; // 0x0000 + CUtlString[3] m_influenceNames; // 0x0008 + Quaternion[3] m_vInfluenceRotations; // 0x0020 + Vector[3] m_vInfluenceOffsets; // 0x0050 + float32[3] m_influenceWeights; // 0x0074 + bool[3] m_bInfluenceRootTransform; // 0x0080 + uint8 m_nInfluences; // 0x0083 + bool m_bIgnoreRotation; // 0x0084 +}; +class CNmStateMachineNode::TransitionDefinition_t // animlib +{ + int16 m_nTargetStateIdx; // 0x0000 + int16 m_nConditionNodeIdx; // 0x0002 + int16 m_nTransitionNodeIdx; // 0x0004 + bool m_bCanBeForced; // 0x0006 +}; +class CCompressorGroup // animationsystem +{ + int32 m_nTotalElementCount; // 0x0000 + CUtlVector< char* > m_szChannelClass; // 0x0008 + CUtlVector< char* > m_szVariableName; // 0x0020 + CUtlVector< fieldtype_t > m_nType; // 0x0038 + CUtlVector< int32 > m_nFlags; // 0x0050 + CUtlVector< CUtlString > m_szGrouping; // 0x0068 + CUtlVector< int32 > m_nCompressorIndex; // 0x0080 + CUtlVector< CUtlVector< char* > > m_szElementNames; // 0x0098 + CUtlVector< CUtlVector< int32 > > m_nElementUniqueID; // 0x00B0 + CUtlVector< uint32 > m_nElementMask; // 0x00C8 + CUtlVector< CCompressor< Vector >* > m_vectorCompressor; // 0x00F8 + CUtlVector< CCompressor< QuaternionStorage >* > m_quaternionCompressor; // 0x0110 + CUtlVector< CCompressor< int32 >* > m_intCompressor; // 0x0128 + CUtlVector< CCompressor< bool >* > m_boolCompressor; // 0x0140 + CUtlVector< CCompressor< Color >* > m_colorCompressor; // 0x0158 + CUtlVector< CCompressor< Vector2D >* > m_vector2DCompressor; // 0x0170 + CUtlVector< CCompressor< Vector4D >* > m_vector4DCompressor; // 0x0188 +}; +class EventServerPostSimulate_t : public EventSimulate_t // engine2 +{ + bool m_bLastTickBeforeClientUpdate; // 0x0030 +}; +class VsInputSignatureElement_t // rendersystemdx11 +{ + char[64] m_pName; // 0x0000 + char[64] m_pSemantic; // 0x0040 + char[64] m_pD3DSemanticName; // 0x0080 + int32 m_nD3DSemanticIndex; // 0x00C0 +}; +class C_OP_ConstrainDistance : public CParticleFunctionConstraint // particles +{ + CParticleCollectionFloatInput m_fMinDistance; // 0x01D0 + CParticleCollectionFloatInput m_fMaxDistance; // 0x0340 + int32 m_nControlPointNumber; // 0x04B0 + Vector m_CenterOffset; // 0x04B4 + bool m_bGlobalCenter; // 0x04C0 +}; +class C_OP_InstantaneousEmitter : public CParticleFunctionEmitter // particles +{ + CParticleCollectionFloatInput m_nParticlesToEmit; // 0x01D8 + CParticleCollectionFloatInput m_flStartTime; // 0x0348 + float32 m_flInitFromKilledParentParticles; // 0x04B8 + EventTypeSelection_t m_nEventType; // 0x04BC + CParticleCollectionFloatInput m_flParentParticleScale; // 0x04C0 + int32 m_nMaxEmittedPerFrame; // 0x0630 + int32 m_nSnapshotControlPoint; // 0x0634 + CUtlString m_strSnapshotSubset; // 0x0638 +}; +class C_OP_RemapNamedModelBodyPartOnceTimed : public C_OP_RemapNamedModelElementOnceTimed // particles +{ +}; +class CAudioEmphasisSample // soundsystem_voicecontainers +{ + float32 m_flTime; // 0x0000 + float32 m_flValue; // 0x0004 +}; +class CNmVirtualParameterBoneMaskNode::CDefinition : public CNmBoneMaskValueNode::CDefinition // animlib +{ + int16 m_nChildNodeIdx; // 0x0010 +}; +class CDistanceRemainingMetricEvaluator : public CMotionMetricEvaluator // animgraphlib +{ + float32 m_flMaxDistance; // 0x0050 + float32 m_flMinDistance; // 0x0054 + float32 m_flStartGoalFilterDistance; // 0x0058 + float32 m_flMaxGoalOvershootScale; // 0x005C + bool m_bFilterFixedMinDistance; // 0x0060 + bool m_bFilterGoalDistance; // 0x0061 + bool m_bFilterGoalOvershoot; // 0x0062 +}; +class CNmLayerBlendNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ + int16 m_nBaseNodeIdx; // 0x0010 + bool m_bOnlySampleBaseRootMotion; // 0x0012 + CUtlLeanVectorFixedGrowable< CNmLayerBlendNode::LayerDefinition_t, 3 > m_layerDefinition; // 0x0018 +}; +class C_OP_DecayOffscreen : public CParticleFunctionOperator // particles +{ + CParticleCollectionFloatInput m_flOffscreenTime; // 0x01D0 +}; +class C_OP_RenderGpuImplicit : public CParticleFunctionRenderer // particles +{ + bool m_bUsePerParticleRadius; // 0x0220 + uint32 m_nVertexCountKb; // 0x0224 + uint32 m_nIndexCountKb; // 0x0228 + CParticleCollectionRendererFloatInput m_fGridSize; // 0x0230 + CParticleCollectionRendererFloatInput m_fRadiusScale; // 0x03A0 + CParticleCollectionRendererFloatInput m_fIsosurfaceThreshold; // 0x0510 + int32 m_nScaleCP; // 0x0680 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hMaterial; // 0x0688 +}; +class C_OP_ForceBasedOnDistanceToPlane : public CParticleFunctionForce // particles +{ + float32 m_flMinDist; // 0x01E0 + Vector m_vecForceAtMinDist; // 0x01E4 + float32 m_flMaxDist; // 0x01F0 + Vector m_vecForceAtMaxDist; // 0x01F4 + Vector m_vecPlaneNormal; // 0x0200 + int32 m_nControlPointNumber; // 0x020C + float32 m_flExponent; // 0x0210 +}; +class FeEffectDesc_t // physicslib +{ + CUtlString sName; // 0x0000 + uint32 nNameHash; // 0x0008 + int32 nType; // 0x000C + KeyValues3 m_Params; // 0x0010 +}; +class FeSphereRigid_t // physicslib +{ + fltx4 vSphere; // 0x0000 + uint16 nNode; // 0x0010 + uint16 nCollisionMask; // 0x0012 + uint16 nVertexMapIndex; // 0x0014 + uint16 nFlags; // 0x0016 +}; +class CNmVirtualParameterTargetNode::CDefinition : public CNmTargetValueNode::CDefinition // animlib +{ + int16 m_nChildNodeIdx; // 0x0010 +}; +class CPlayerPawnComponent // server +{ + CNetworkVarChainer __m_pChainEntity; // 0x0008 +}; +class CIronSightController // server +{ + bool m_bIronSightAvailable; // 0x0008 + float32 m_flIronSightAmount; // 0x000C + float32 m_flIronSightAmountGained; // 0x0010 + float32 m_flIronSightAmountBiased; // 0x0014 +}; +class CAnimEventListener : public CAnimEventListenerBase // server +{ +}; +class C_INIT_PositionOffsetToCP : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPointNumberStart; // 0x01D8 + int32 m_nControlPointNumberEnd; // 0x01DC + bool m_bLocalCoords; // 0x01E0 +}; +class C_OP_SetCPOrientationToGroundNormal : public CParticleFunctionOperator // particles +{ + float32 m_flInterpRate; // 0x01D0 + float32 m_flMaxTraceLength; // 0x01D4 + float32 m_flTolerance; // 0x01D8 + float32 m_flTraceOffset; // 0x01DC + char[128] m_CollisionGroupName; // 0x01E0 + ParticleTraceSet_t m_nTraceSet; // 0x0260 + int32 m_nInputCP; // 0x0264 + int32 m_nOutputCP; // 0x0268 + bool m_bIncludeWater; // 0x0278 +}; +class CVMixNameInputMeter : public CVMixInputBase // soundsystem_lowlevel +{ + int32 m_nValueIndex; // 0x0010 +}; +class C_INIT_ScreenSpacePositionOfTarget : public CParticleFunctionInitializer // particles +{ + CPerParticleVecInput m_vecTargetPosition; // 0x01D8 + bool m_bOututBehindness; // 0x0890 + ParticleAttributeIndex_t m_nBehindFieldOutput; // 0x0894 + CParticleRemapFloatInput m_flBehindOutputRemap; // 0x0898 +}; +class C_INIT_RemapParticleCountToScalar : public CParticleFunctionInitializer // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D8 + int32 m_nInputMin; // 0x01DC + int32 m_nInputMax; // 0x01E0 + int32 m_nScaleControlPoint; // 0x01E4 + int32 m_nScaleControlPointField; // 0x01E8 + float32 m_flOutputMin; // 0x01EC + float32 m_flOutputMax; // 0x01F0 + ParticleSetMethod_t m_nSetMethod; // 0x01F4 + bool m_bActiveRange; // 0x01F8 + bool m_bInvert; // 0x01F9 + bool m_bWrap; // 0x01FA + float32 m_flRemapBias; // 0x01FC +}; +class CVectorAnimParameter : public CConcreteAnimParameter // animgraphlib +{ + Vector m_defaultValue; // 0x0080 + bool m_bInterpolate; // 0x008C + AnimParamVectorType_t m_vectorType; // 0x0090 +}; +class CNmParameterizedSelectorNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ + CUtlLeanVectorFixedGrowable< int16, 5 > m_optionNodeIndices; // 0x0010 + CUtlLeanVectorFixedGrowable< uint8, 5 > m_optionWeights; // 0x0028 + int16 m_parameterNodeIdx; // 0x0038 + bool m_bIgnoreInvalidOptions; // 0x003A + bool m_bHasWeightsSet; // 0x003B +}; +class CAnimUpdateNodeRef // animgraphlib +{ + int32 m_nodeIndex; // 0x0008 +}; +class CAnimBone // animationsystem +{ + CBufferString m_name; // 0x0000 + int32 m_parent; // 0x0010 + Vector m_pos; // 0x0014 + QuaternionStorage m_quat; // 0x0020 + float32 m_scale; // 0x0030 + QuaternionStorage m_qAlignment; // 0x0034 + int32 m_flags; // 0x0044 +}; +class RenderHairStrandInfo_t // modellib +{ + uint32[2] m_nGuideHairIndices_nSurfaceTriIndex; // 0x0000 + uint16[4] m_vGuideBary_vBaseBary; // 0x0008 + uint16[4] m_vRootOffset_flLengthScale; // 0x0010 + uint16[2] m_nPackedBaseUv; // 0x0018 + uint32 m_nPackedSurfaceNormalOs; // 0x001C + uint32 m_nPackedSurfaceTangentOs; // 0x0020 + uint32 m_nDataOffset_Segments; // 0x0024 +}; +class ResponseFollowup // server +{ + char* followup_concept; // 0x0000 + char* followup_contexts; // 0x0008 + float32 followup_delay; // 0x0010 + char* followup_target; // 0x0014 + char* followup_entityiotarget; // 0x001C + char* followup_entityioinput; // 0x0024 + float32 followup_entityiodelay; // 0x002C + bool bFired; // 0x0030 +}; +class C_OP_SetSimulationRate : public CParticleFunctionPreEmission // particles +{ + CParticleCollectionFloatInput m_flSimulationScale; // 0x01D8 +}; +class CNmStateNode::TimedEvent_t // animlib +{ + CGlobalSymbol m_ID; // 0x0000 + float32 m_flTimeValueSeconds; // 0x0008 + CNmStateNode::TimedEvent_t::Comparison_t m_comparisionOperator; // 0x000C +}; +class CAnimationGraphVisualizerText : public CAnimationGraphVisualizerPrimitiveBase // animgraphlib +{ + VectorAligned m_vWsPosition; // 0x0040 + Color m_Color; // 0x0050 + CUtlString m_Text; // 0x0058 +}; +class CSceneRequest // server +{ + CUtlSymbolLarge m_szPayloadTypeName; // 0x0000 + SceneRequestHandle_t m_uHandle; // 0x0008 + ESceneRequestState_t m_state; // 0x000C +}; +class CTakeDamageSummaryScopeGuard // server +{ + CUtlVector< SummaryTakeDamageInfo_t* > m_vecSummaries; // 0x0008 +}; +class CVMixVocoderProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixVocoderDesc_t m_desc; // 0x0020 +}; +class FeCtrlOsOffset_t // physicslib +{ + uint16 nCtrlParent; // 0x0000 + uint16 nCtrlChild; // 0x0002 +}; +class CMotionGraphUpdateNode : public CLeafUpdateNode // animgraphlib +{ + CSmartPtr< CMotionGraph > m_pMotionGraph; // 0x0058 +}; +class CMotionMetricEvaluator // animgraphlib +{ + CUtlVector< float32 > m_means; // 0x0018 + CUtlVector< float32 > m_standardDeviations; // 0x0030 + float32 m_flWeight; // 0x0048 + int32 m_nDimensionStartIndex; // 0x004C +}; +class GameTime_t // entity2 +{ + float32 m_Value; // 0x0000 +}; +class EntInput_t // entity2 +{ +}; +class C_OP_RemapNamedModelMeshGroupEndCap : public C_OP_RemapNamedModelElementEndCap // particles +{ +}; +class C_OP_MaintainEmitter : public CParticleFunctionEmitter // particles +{ + CParticleCollectionFloatInput m_nParticlesToMaintain; // 0x01D8 + float32 m_flStartTime; // 0x0348 + CParticleCollectionFloatInput m_flEmissionDuration; // 0x0350 + float32 m_flEmissionRate; // 0x04C0 + int32 m_nSnapshotControlPoint; // 0x04C4 + CUtlString m_strSnapshotSubset; // 0x04C8 + bool m_bEmitInstantaneously; // 0x04D0 + bool m_bFinalEmitOnStop; // 0x04D1 + CParticleCollectionFloatInput m_flScale; // 0x04D8 +}; +class CFeMorphLayer // physicslib +{ + CUtlString m_Name; // 0x0000 + uint32 m_nNameHash; // 0x0008 + CUtlVector< uint16 > m_Nodes; // 0x0010 + CUtlVector< Vector > m_InitPos; // 0x0028 + CUtlVector< float32 > m_Gravity; // 0x0040 + CUtlVector< float32 > m_GoalStrength; // 0x0058 + CUtlVector< float32 > m_GoalDamping; // 0x0070 +}; +class CMorphRectData // modellib +{ + int16 m_nXLeftDst; // 0x0000 + int16 m_nYTopDst; // 0x0002 + float32 m_flUWidthSrc; // 0x0004 + float32 m_flVHeightSrc; // 0x0008 + CUtlVector< CMorphBundleData > m_bundleDatas; // 0x0010 +}; +class CEditableMotionGraph : public CMotionGraph // animgraphlib +{ +}; +class InfoForResourceTypeCPanoramaStyle // resourcesystem +{ +}; +class CSceneEventInfo // server +{ + int32 m_iLayer; // 0x0000 + int32 m_iPriority; // 0x0004 + HSequence m_hSequence; // 0x0008 + float32 m_flWeight; // 0x000C + CStrongHandle< InfoForResourceTypeCNmClip > m_hAnimClip; // 0x0010 + CGlobalSymbol m_sAnimClipSlot; // 0x0018 + CGlobalSymbol m_sAnimClipSlotWeight; // 0x0020 + bool m_bHasArrived; // 0x0028 + int32 m_nType; // 0x002C + GameTime_t m_flNext; // 0x0030 + bool m_bIsGesture; // 0x0034 + bool m_bShouldRemove; // 0x0035 + CHandle< CBaseEntity > m_hTarget; // 0x005C + SceneEventId_t m_nSceneEventId; // 0x0060 + bool m_bClientSide; // 0x0064 + bool m_bStarted; // 0x0065 +}; +class C_OP_MovementRotateParticleAroundAxis : public CParticleFunctionOperator // particles +{ + CParticleCollectionVecInput m_vecRotAxis; // 0x01D0 + CParticleCollectionFloatInput m_flRotRate; // 0x0888 + CParticleTransformInput m_TransformInput; // 0x09F8 + bool m_bLocalSpace; // 0x0A60 +}; +class C_INIT_RadiusFromCPObject : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPoint; // 0x01D8 +}; +class CReplicationParameters // particles +{ + ParticleReplicationMode_t m_nReplicationMode; // 0x0000 + bool m_bScaleChildParticleRadii; // 0x0004 + CParticleCollectionFloatInput m_flMinRandomRadiusScale; // 0x0008 + CParticleCollectionFloatInput m_flMaxRandomRadiusScale; // 0x0178 + CParticleCollectionVecInput m_vMinRandomDisplacement; // 0x02E8 + CParticleCollectionVecInput m_vMaxRandomDisplacement; // 0x09A0 + CParticleCollectionFloatInput m_flModellingScale; // 0x1058 +}; +class C_INIT_QuantizeFloat : public CParticleFunctionInitializer // particles +{ + CPerParticleFloatInput m_InputValue; // 0x01D8 + ParticleAttributeIndex_t m_nOutputField; // 0x0348 +}; +class CVMixDiffusorProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixDiffusorDesc_t m_desc; // 0x0020 +}; +class SosEditItemInfo_t // soundsystem +{ + SosEditItemType_t itemType; // 0x0000 + CUtlString itemName; // 0x0008 + CUtlString itemTypeName; // 0x0010 + CUtlString itemKVString; // 0x0020 + Vector2D itemPos; // 0x0028 +}; +class CAnimationGraphVisualizerPie : public CAnimationGraphVisualizerPrimitiveBase // animgraphlib +{ + VectorAligned m_vWsCenter; // 0x0040 + VectorAligned m_vWsStart; // 0x0050 + VectorAligned m_vWsEnd; // 0x0060 + Color m_Color; // 0x0070 +}; +class CPulse_InstructionDebug // pulse_runtime_lib +{ + PulseDocNodeID_t m_nFlowNodeID; // 0x0000 + PulseDocNodeID_t m_nValueNodeID; // 0x0004 + CGlobalSymbol m_SequencePointName; // 0x0008 +}; +class HullFlags_t // server +{ + bool m_bHull_Human; // 0x0000 + bool m_bHull_SmallCentered; // 0x0001 + bool m_bHull_WideHuman; // 0x0002 + bool m_bHull_Tiny; // 0x0003 + bool m_bHull_Medium; // 0x0004 + bool m_bHull_TinyCentered; // 0x0005 + bool m_bHull_Large; // 0x0006 + bool m_bHull_LargeCentered; // 0x0007 + bool m_bHull_MediumTall; // 0x0008 + bool m_bHull_Small; // 0x0009 +}; +class C_OP_RemapExternalWindToCP : public CParticleFunctionPreEmission // particles +{ + int32 m_nCP; // 0x01D8 + int32 m_nCPOutput; // 0x01DC + CParticleCollectionVecInput m_vecScale; // 0x01E0 + bool m_bSetMagnitude; // 0x0898 + int32 m_nOutVectorField; // 0x089C +}; +class CMoverUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + CAnimInputDamping m_damping; // 0x0078 + AnimValueSource m_facingTarget; // 0x0090 + CAnimParamHandle m_hMoveVecParam; // 0x0094 + CAnimParamHandle m_hMoveHeadingParam; // 0x0096 + CAnimParamHandle m_hTurnToFaceParam; // 0x0098 + float32 m_flTurnToFaceOffset; // 0x009C + float32 m_flTurnToFaceLimit; // 0x00A0 + bool m_bAdditive; // 0x00A4 + bool m_bApplyMovement; // 0x00A5 + bool m_bOrientMovement; // 0x00A6 + bool m_bApplyRotation; // 0x00A7 + bool m_bLimitOnly; // 0x00A8 +}; +class CPAssignment_t // particles +{ + int32 m_nCPNumber; // 0x0000 + CPerParticleVecInput m_Pos; // 0x0008 + ParticleOrientationSetMode_t m_nOrientationMode; // 0x06C0 +}; +class C_INIT_RemapParticleCountToNamedModelMeshGroupScalar : public C_INIT_RemapParticleCountToNamedModelElementScalar // particles +{ +}; +class CVoiceContainerBase // soundsystem_voicecontainers +{ + CVSound m_vSound; // 0x0028 + CVoiceContainerAnalysisBase* m_pEnvelopeAnalyzer; // 0x00A0 +}; +class CNmVectorValueNode::CDefinition : public CNmValueNode::CDefinition // animlib +{ +}; +class PGDInstruction_t // pulse_runtime_lib +{ + PulseInstructionCode_t m_nCode; // 0x0000 + PulseRuntimeVarIndex_t m_nVar; // 0x0004 + PulseRuntimeRegisterIndex_t m_nReg0; // 0x0008 + PulseRuntimeRegisterIndex_t m_nReg1; // 0x000A + PulseRuntimeRegisterIndex_t m_nReg2; // 0x000C + PulseRuntimeInvokeIndex_t m_nInvokeBindingIndex; // 0x0010 + PulseRuntimeChunkIndex_t m_nChunk; // 0x0014 + int32 m_nDestInstruction; // 0x0018 + PulseRuntimeCallInfoIndex_t m_nCallInfoIndex; // 0x001C + PulseRuntimeConstantIndex_t m_nConstIdx; // 0x0020 + PulseRuntimeDomainValueIndex_t m_nDomainValueIdx; // 0x0022 + PulseRuntimeBlackboardReferenceIndex_t m_nBlackboardReferenceIdx; // 0x0024 +}; +class InfoForResourceTypeCDOTAPatchNotesList // resourcesystem +{ +}; +class CAnimEventQueueListener : public CAnimEventListenerBase // server +{ +}; +class C_INIT_RandomModelSequence : public CParticleFunctionInitializer // particles +{ + char[256] m_ActivityName; // 0x01D8 + char[256] m_SequenceName; // 0x02D8 + CStrongHandle< InfoForResourceTypeCModel > m_hModel; // 0x03D8 +}; +class CGeneralRandomRotation : public CParticleFunctionInitializer // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D8 + float32 m_flDegrees; // 0x01DC + float32 m_flDegreesMin; // 0x01E0 + float32 m_flDegreesMax; // 0x01E4 + float32 m_flRotationRandExponent; // 0x01E8 + bool m_bRandomlyFlipDirection; // 0x01EC +}; +class C_INIT_CreateWithinCapsuleTransform : public CParticleFunctionInitializer // particles +{ + CPerParticleFloatInput m_fRadiusMin; // 0x01D8 + CPerParticleFloatInput m_fRadiusMax; // 0x0348 + CPerParticleFloatInput m_fHeight; // 0x04B8 + CParticleTransformInput m_TransformInput; // 0x0628 + CPerParticleFloatInput m_fSpeedMin; // 0x0690 + CPerParticleFloatInput m_fSpeedMax; // 0x0800 + float32 m_fSpeedRandExp; // 0x0970 + CPerParticleVecInput m_LocalCoordinateSystemSpeedMin; // 0x0978 + CPerParticleVecInput m_LocalCoordinateSystemSpeedMax; // 0x1030 + ParticleAttributeIndex_t m_nFieldOutput; // 0x16E8 + ParticleAttributeIndex_t m_nFieldVelocity; // 0x16EC +}; +class C_OP_RemapNamedModelSequenceEndCap : public C_OP_RemapNamedModelElementEndCap // particles +{ +}; +class CClothSettingsAnimTag : public CAnimTagBase // animgraphlib +{ + float32 m_flStiffness; // 0x0058 + float32 m_flEaseIn; // 0x005C + float32 m_flEaseOut; // 0x0060 + CUtlString m_nVertexSet; // 0x0068 +}; +class VPhysXCollisionAttributes_t // modellib +{ + int32 m_nIncludeDetailLayerCount; // 0x0000 + uint32 m_CollisionGroup; // 0x0004 + CUtlVector< uint32 > m_InteractAs; // 0x0008 + CUtlVector< uint32 > m_InteractWith; // 0x0020 + CUtlVector< uint32 > m_InteractExclude; // 0x0038 + CUtlVector< uint32 > m_DetailLayers; // 0x0050 + CUtlString m_CollisionGroupString; // 0x0068 + CUtlVector< CUtlString > m_InteractAsStrings; // 0x0070 + CUtlVector< CUtlString > m_InteractWithStrings; // 0x0088 + CUtlVector< CUtlString > m_InteractExcludeStrings; // 0x00A0 + CUtlVector< CUtlString > m_DetailLayerStrings; // 0x00B8 +}; +class CSeqAutoLayerFlag // animationsystem +{ + bool m_bPost; // 0x0000 + bool m_bSpline; // 0x0001 + bool m_bXFade; // 0x0002 + bool m_bNoBlend; // 0x0003 + bool m_bLocal; // 0x0004 + bool m_bPose; // 0x0005 + bool m_bFetchFrame; // 0x0006 + bool m_bSubtract; // 0x0007 +}; +class CNmCachedIDNode::CDefinition : public CNmIDValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + NmCachedValueMode_t m_mode; // 0x0014 +}; +class EventSetTime_t // engine2 +{ + EngineLoopState_t m_LoopState; // 0x0000 + int32 m_nClientOutputFrames; // 0x0028 + float64 m_flRealTime; // 0x0030 + float64 m_flRenderTime; // 0x0038 + float64 m_flRenderFrameTime; // 0x0040 + float64 m_flRenderFrameTimeUnbounded; // 0x0048 + float64 m_flRenderFrameTimeUnscaled; // 0x0050 + float64 m_flTickRemainder; // 0x0058 +}; +class CExampleSchemaVData_PolymorphicDerivedB : public CExampleSchemaVData_PolymorphicBase // resourcefile +{ + int32 m_nDerivedB; // 0x0010 +}; +class CSkeletonAnimationController : public ISkeletonAnimationController // server +{ + CSkeletonInstance* m_pSkeletonInstance; // 0x0008 +}; +class CMotionSearchNode // animgraphlib +{ + CUtlVector< CMotionSearchNode* > m_children; // 0x0000 + CVectorQuantizer m_quantizer; // 0x0018 + CUtlVector< CUtlVector< SampleCode > > m_sampleCodes; // 0x0038 + CUtlVector< CUtlVector< int32 > > m_sampleIndices; // 0x0050 + CUtlVector< int32 > m_selectableSamples; // 0x0068 +}; +class CNmVectorCreateNode::CDefinition : public CNmVectorValueNode::CDefinition // animlib +{ + int16 m_inputVectorValueNodeIdx; // 0x0010 + int16 m_inputValueXNodeIdx; // 0x0012 + int16 m_inputValueYNodeIdx; // 0x0014 + int16 m_inputValueZNodeIdx; // 0x0016 +}; +class CConstraintSlave // modellib +{ + Quaternion m_qBaseOrientation; // 0x0000 + Vector m_vBasePosition; // 0x0010 + uint32 m_nBoneHash; // 0x001C + float32 m_flWeight; // 0x0020 + CUtlString m_sName; // 0x0028 +}; +class CSeqMultiFetch // animationsystem +{ + CSeqMultiFetchFlag m_flags; // 0x0000 + CUtlVector< int16 > m_localReferenceArray; // 0x0008 + int32[2] m_nGroupSize; // 0x0020 + int32[2] m_nLocalPose; // 0x0028 + CUtlVector< float32 > m_poseKeyArray0; // 0x0030 + CUtlVector< float32 > m_poseKeyArray1; // 0x0048 + int32 m_nLocalCyclePoseParameter; // 0x0060 + bool m_bCalculatePoseParameters; // 0x0064 + bool m_bFixedBlendWeight; // 0x0065 + float32[2] m_flFixedBlendWeightVals; // 0x0068 +}; +class EventSimulate_t // engine2 +{ + EngineLoopState_t m_LoopState; // 0x0000 + bool m_bFirstTick; // 0x0028 + bool m_bLastTick; // 0x0029 +}; +class InfoForResourceTypeCNmClip // resourcesystem +{ +}; +class C_IronSightController // client +{ + bool m_bIronSightAvailable; // 0x0010 + float32 m_flIronSightAmount; // 0x0014 + float32 m_flIronSightAmountGained; // 0x0018 + float32 m_flIronSightAmountBiased; // 0x001C + float32 m_flIronSightAmount_Interpolated; // 0x0020 + float32 m_flIronSightAmountGained_Interpolated; // 0x0024 + float32 m_flIronSightAmountBiased_Interpolated; // 0x0028 + float32 m_flInterpolationLastUpdated; // 0x002C + QAngle[8] m_angDeltaAverage; // 0x0030 + QAngle m_angViewLast; // 0x0090 + Vector2D m_vecDotCoords; // 0x009C + float32 m_flFiringInaccuracyExtraWidthMultiplier; // 0x00A4 + float32 m_flSpeedRatio; // 0x00A8 +}; +class CNetworkViewOffsetVector // server +{ + CNetworkedQuantizedFloat m_vecX; // 0x0010 + CNetworkedQuantizedFloat m_vecY; // 0x0018 + CNetworkedQuantizedFloat m_vecZ; // 0x0020 +}; +class CMotorController // server +{ + float32 m_speed; // 0x0008 + float32 m_maxTorque; // 0x000C + VectorWS m_axis; // 0x0010 + float32 m_inertiaFactor; // 0x001C +}; +class CNmFloatCurveEventNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + CGlobalSymbol m_eventID; // 0x0010 + int16 m_nDefaultNodeIdx; // 0x0018 + float32 m_flDefaultValue; // 0x001C + CNmBitFlags m_eventConditionRules; // 0x0020 +}; +class CNmFloatValueNode::CDefinition : public CNmValueNode::CDefinition // animlib +{ +}; +class inv_image_data_t // client +{ + inv_image_map_t map; // 0x0000 + inv_image_item_t item; // 0x0010 + inv_image_camera_t camera; // 0x0030 + inv_image_light_sun_t lightsun; // 0x0064 + inv_image_light_fill_t lightfill; // 0x0080 + inv_image_light_barn_t light0; // 0x009C + inv_image_light_barn_t light1; // 0x00BC + inv_image_clearcolor_t clearcolor; // 0x00DC +}; +class C_OP_ParentVortices : public CParticleFunctionForce // particles +{ + float32 m_flForceScale; // 0x01E0 + Vector m_vecTwistAxis; // 0x01E4 + bool m_bFlipBasedOnYaw; // 0x01F0 +}; +class CSosGroupActionSoundeventMinMaxValuesSchema : public CSosGroupActionSchema // soundsystem +{ + CUtlString m_strQueryPublicFieldName; // 0x0008 + CUtlString m_strDelayPublicFieldName; // 0x0010 + bool m_bExcludeStoppedSounds; // 0x0018 + bool m_bExcludeDelayedSounds; // 0x0019 + bool m_bExcludeSoundsBelowThreshold; // 0x001A + float32 m_flExcludeSoundsMinThresholdValue; // 0x001C + bool m_bExcludSoundsAboveThreshold; // 0x0020 + float32 m_flExcludeSoundsMaxThresholdValue; // 0x0024 + CUtlString m_strMinValueName; // 0x0028 + CUtlString m_strMaxValueName; // 0x0030 +}; +class ModelBoneFlexDriver_t // modellib +{ + CUtlString m_boneName; // 0x0000 + uint32 m_boneNameToken; // 0x0008 + CUtlVector< ModelBoneFlexDriverControl_t > m_controls; // 0x0010 +}; +class CMorphSetData // modellib +{ + int32 m_nWidth; // 0x0010 + int32 m_nHeight; // 0x0014 + CUtlVector< MorphBundleType_t > m_bundleTypes; // 0x0018 + CUtlVector< CMorphData > m_morphDatas; // 0x0030 + CStrongHandle< InfoForResourceTypeCTextureBase > m_pTextureAtlas; // 0x0048 + CUtlVector< CFlexDesc > m_FlexDesc; // 0x0050 + CUtlVector< CFlexController > m_FlexControllers; // 0x0068 + CUtlVector< CFlexRule > m_FlexRules; // 0x0080 +}; +class CMorphConstraint : public CBaseConstraint // modellib +{ + CUtlString m_sTargetMorph; // 0x0060 + int32 m_nSlaveChannel; // 0x0068 + float32 m_flMin; // 0x006C + float32 m_flMax; // 0x0070 +}; +class CStateActionUpdater // animgraphlib +{ + CSmartPtr< CAnimActionUpdater > m_pAction; // 0x0000 + StateActionBehavior m_eBehavior; // 0x0008 +}; +class FootFixedData_t // animgraphlib +{ + VectorAligned m_vToeOffset; // 0x0000 + VectorAligned m_vHeelOffset; // 0x0010 + int32 m_nTargetBoneIndex; // 0x0020 + int32 m_nAnkleBoneIndex; // 0x0024 + int32 m_nIKAnchorBoneIndex; // 0x0028 + int32 m_ikChainIndex; // 0x002C + float32 m_flMaxIKLength; // 0x0030 + int32 m_nFootIndex; // 0x0034 + int32 m_nTagIndex; // 0x0038 + float32 m_flMaxRotationLeft; // 0x003C + float32 m_flMaxRotationRight; // 0x0040 +}; +class C_INIT_RemapInitialDirectionToTransformToVector : public CParticleFunctionInitializer // particles +{ + CParticleTransformInput m_TransformInput; // 0x01D8 + ParticleAttributeIndex_t m_nFieldOutput; // 0x0240 + float32 m_flScale; // 0x0244 + float32 m_flOffsetRot; // 0x0248 + Vector m_vecOffsetAxis; // 0x024C + bool m_bNormalize; // 0x0258 +}; +class VMixFreeverbDesc_t // soundsystem_lowlevel +{ + float32 m_flRoomSize; // 0x0000 + float32 m_flDamp; // 0x0004 + float32 m_flWidth; // 0x0008 + float32 m_flLateReflections; // 0x000C +}; +class CVMixDynamicsProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixDynamicsDesc_t m_desc; // 0x0020 +}; +class CNmIsInactiveBranchConditionNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ +}; +class FollowTargetOpFixedSettings_t // animgraphlib +{ + int32 m_boneIndex; // 0x0000 + bool m_bBoneTarget; // 0x0004 + int32 m_boneTargetIndex; // 0x0008 + bool m_bWorldCoodinateTarget; // 0x000C + bool m_bMatchTargetOrientation; // 0x000D +}; +class CEmitTagActionUpdater : public CAnimActionUpdater // animgraphlib +{ + int32 m_nTagIndex; // 0x0018 + bool m_bIsZeroDuration; // 0x001C +}; +class CNmGraphVariationUserData // animlib +{ +}; +class CNmTwoBoneIKTask : public CNmPoseTask // animlib +{ + int32 m_nEffectorBoneIdx; // 0x0058 + int32 m_nEffectorTargetBoneIdx; // 0x005C + CTransform m_targetTransform; // 0x0060 + CNmTarget m_effectorTarget; // 0x0080 + NmIKBlendMode_t m_blendMode; // 0x00B0 + float32 m_flBlendWeight; // 0x00B4 + bool m_bIsTargetInWorldSpace; // 0x00B8 + bool m_bIsRunningFromDeserializedData; // 0x00B9 + float32 m_flReferencePoseTwistWeight; // 0x00BC + CGlobalSymbol m_debugEffectorBoneID; // 0x00C0 +}; +class CBoneConstraintPoseSpaceMorph : public CBoneConstraintBase // modellib +{ + CUtlString m_sBoneName; // 0x0020 + CUtlString m_sAttachmentName; // 0x0028 + CUtlVector< CUtlString > m_outputMorph; // 0x0030 + CUtlVector< CBoneConstraintPoseSpaceMorph::Input_t > m_inputList; // 0x0048 + bool m_bClamp; // 0x0060 +}; +class EventProfileStorageAvailable_t // engine2 +{ + CSplitScreenSlot m_nSplitScreenSlot; // 0x0000 +}; +class InfoForResourceTypeCVSoundStackScriptList // resourcesystem +{ +}; +class C_OP_CollideWithSelf : public CParticleFunctionConstraint // particles +{ + CPerParticleFloatInput m_flRadiusScale; // 0x01D0 + CPerParticleFloatInput m_flMinimumSpeed; // 0x0340 +}; +class C_INIT_PlaneCull : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPoint; // 0x01D8 + CParticleCollectionFloatInput m_flDistance; // 0x01E0 + bool m_bCullInside; // 0x0350 +}; +class C_OP_RemapDistanceToLineSegmentToVector : public C_OP_RemapDistanceToLineSegmentBase // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01E8 + Vector m_vMinOutputValue; // 0x01EC + Vector m_vMaxOutputValue; // 0x01F8 +}; +class C_OP_PercentageBetweenTransformLerpCPs : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + float32 m_flInputMin; // 0x01D4 + float32 m_flInputMax; // 0x01D8 + CParticleTransformInput m_TransformStart; // 0x01E0 + CParticleTransformInput m_TransformEnd; // 0x0248 + int32 m_nOutputStartCP; // 0x02B0 + int32 m_nOutputStartField; // 0x02B4 + int32 m_nOutputEndCP; // 0x02B8 + int32 m_nOutputEndField; // 0x02BC + ParticleSetMethod_t m_nSetMethod; // 0x02C0 + bool m_bActiveRange; // 0x02C4 + bool m_bRadialCheck; // 0x02C5 +}; +class CVMixSteamAudioHRTFProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ +}; +class CVoiceContainerGranulator : public CVoiceContainerAsyncGenerator // soundsystem_voicecontainers +{ + float32 m_flGrainLength; // 0x00B8 + float32 m_flGrainCrossfadeAmount; // 0x00BC + float32 m_flStartJitter; // 0x00C0 + float32 m_flPlaybackJitter; // 0x00C4 + bool m_bShouldWraparound; // 0x00C8 + CStrongHandle< InfoForResourceTypeCVoiceContainerBase > m_sourceAudio; // 0x00D0 +}; +class COrientationWarpUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + OrientationWarpMode_t m_eMode; // 0x0074 + CAnimParamHandle m_hTargetParam; // 0x0078 + CAnimParamHandle m_hTargetPositionParam; // 0x007A + CAnimParamHandle m_hFallbackTargetPositionParam; // 0x007C + OrientationWarpTargetOffsetMode_t m_eTargetOffsetMode; // 0x0080 + float32 m_flTargetOffset; // 0x0084 + CAnimParamHandle m_hTargetOffsetParam; // 0x0088 + CAnimInputDamping m_damping; // 0x0090 + OrientationWarpRootMotionSource_t m_eRootMotionSource; // 0x00A8 + float32 m_flMaxRootMotionScale; // 0x00AC + bool m_bEnablePreferredRotationDirection; // 0x00B0 + AnimValueSource m_ePreferredRotationDirection; // 0x00B4 + float32 m_flPreferredRotationThreshold; // 0x00B8 +}; +class CAnimGraphDebugReplay // animgraphlib +{ + CUtlString m_animGraphFileName; // 0x0040 + CUtlVector< CSmartPtr< CAnimReplayFrame > > m_frameList; // 0x0048 + int32 m_startIndex; // 0x0060 + int32 m_writeIndex; // 0x0064 + int32 m_frameCount; // 0x0068 +}; +class CAnimSkeleton // modellib +{ + CUtlVector< CTransform > m_localSpaceTransforms; // 0x0010 + CUtlVector< CTransform > m_modelSpaceTransforms; // 0x0028 + CUtlVector< CUtlString > m_boneNames; // 0x0040 + CUtlVector< CUtlVector< int32 > > m_children; // 0x0058 + CUtlVector< int32 > m_parents; // 0x0070 + CUtlVector< CAnimFoot > m_feet; // 0x0088 + CUtlVector< CUtlString > m_morphNames; // 0x00A0 + CUtlVector< int32 > m_lodBoneCounts; // 0x00B8 +}; +class CParticleCollectionFloatInput : public CParticleFloatInput // particleslib +{ +}; +class EventServerAdvanceTick_t : public EventAdvanceTick_t // engine2 +{ +}; +class CGlobalLightBase // client +{ + bool m_bSpotLight; // 0x0010 + Vector m_SpotLightOrigin; // 0x0014 + QAngle m_SpotLightAngles; // 0x0020 + Vector m_ShadowDirection; // 0x002C + Vector m_AmbientDirection; // 0x0038 + Vector m_SpecularDirection; // 0x0044 + Vector m_InspectorSpecularDirection; // 0x0050 + float32 m_flSpecularPower; // 0x005C + float32 m_flSpecularIndependence; // 0x0060 + Color m_SpecularColor; // 0x0064 + bool m_bStartDisabled; // 0x0068 + bool m_bEnabled; // 0x0069 + Color m_LightColor; // 0x006A + Color m_AmbientColor1; // 0x006E + Color m_AmbientColor2; // 0x0072 + Color m_AmbientColor3; // 0x0076 + float32 m_flSunDistance; // 0x007C + float32 m_flFOV; // 0x0080 + float32 m_flNearZ; // 0x0084 + float32 m_flFarZ; // 0x0088 + bool m_bEnableShadows; // 0x008C + bool m_bOldEnableShadows; // 0x008D + bool m_bBackgroundClearNotRequired; // 0x008E + float32 m_flCloudScale; // 0x0090 + float32 m_flCloud1Speed; // 0x0094 + float32 m_flCloud1Direction; // 0x0098 + float32 m_flCloud2Speed; // 0x009C + float32 m_flCloud2Direction; // 0x00A0 + float32 m_flAmbientScale1; // 0x00B0 + float32 m_flAmbientScale2; // 0x00B4 + float32 m_flGroundScale; // 0x00B8 + float32 m_flLightScale; // 0x00BC + float32 m_flFoWDarkness; // 0x00C0 + bool m_bEnableSeparateSkyboxFog; // 0x00C4 + Vector m_vFowColor; // 0x00C8 + Vector m_ViewOrigin; // 0x00D4 + QAngle m_ViewAngles; // 0x00E0 + float32 m_flViewFoV; // 0x00EC + Vector[8] m_WorldPoints; // 0x00F0 + Vector2D m_vFogOffsetLayer0; // 0x04A8 + Vector2D m_vFogOffsetLayer1; // 0x04B0 + CHandle< C_BaseEntity > m_hEnvWind; // 0x04B8 + CHandle< C_BaseEntity > m_hEnvSky; // 0x04BC +}; +class CParticleFunctionConstraint : public CParticleFunction // particles +{ +}; +class CVMixDualCompressorProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixDualCompressorDesc_t m_desc; // 0x0020 +}; +class CAnimationGraphVisualizerAxis : public CAnimationGraphVisualizerPrimitiveBase // animgraphlib +{ + CTransform m_xWsTransform; // 0x0040 + float32 m_flAxisSize; // 0x0060 +}; +class CJumpHelperUpdateNode : public CSequenceUpdateNode // animgraphlib +{ + CAnimParamHandle m_hTargetParam; // 0x00B0 + Vector m_flOriginalJumpMovement; // 0x00B4 + float32 m_flOriginalJumpDuration; // 0x00C0 + float32 m_flJumpStartCycle; // 0x00C4 + float32 m_flJumpEndCycle; // 0x00C8 + JumpCorrectionMethod m_eCorrectionMethod; // 0x00CC + bool[3] m_bTranslationAxis; // 0x00D0 + bool m_bScaleSpeed; // 0x00D3 +}; +class CAnimDesc_Flag // animationsystem +{ + bool m_bLooping; // 0x0000 + bool m_bAllZeros; // 0x0001 + bool m_bHidden; // 0x0002 + bool m_bDelta; // 0x0003 + bool m_bLegacyWorldspace; // 0x0004 + bool m_bModelDoc; // 0x0005 + bool m_bImplicitSeqIgnoreDelta; // 0x0006 + bool m_bAnimGraphAdditive; // 0x0007 +}; +class CRegionSVM // physicslib +{ + CUtlVector< RnPlane_t > m_Planes; // 0x0000 + CUtlVector< uint32 > m_Nodes; // 0x0018 +}; +class CCycleControlUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + AnimValueSource m_valueSource; // 0x0070 + CAnimParamHandle m_paramIndex; // 0x0074 + bool m_bLockWhenWaning; // 0x0076 +}; +class PulseGraphExecutionHistoryEntry_t // pulse_runtime_lib +{ + PulseCursorID_t nCursorID; // 0x0000 + PulseDocNodeID_t nEditorID; // 0x0004 + float32 flExecTime; // 0x0008 + uint32 unFlags; // 0x000C + PulseSymbol_t tagName; // 0x0010 +}; +class InfoForResourceTypeCCSGOEconItem // resourcesystem +{ +}; +class GeneratedTextureHandle_t // compositematerialslib +{ + CUtlString m_strBitmapName; // 0x0000 +}; +class C_OP_SetControlPointToImpactPoint : public CParticleFunctionPreEmission // particles +{ + int32 m_nCPOut; // 0x01D8 + int32 m_nCPIn; // 0x01DC + float32 m_flUpdateRate; // 0x01E0 + CParticleCollectionFloatInput m_flTraceLength; // 0x01E8 + float32 m_flStartOffset; // 0x0358 + float32 m_flOffset; // 0x035C + Vector m_vecTraceDir; // 0x0360 + char[128] m_CollisionGroupName; // 0x036C + ParticleTraceSet_t m_nTraceSet; // 0x03EC + bool m_bSetToEndpoint; // 0x03F0 + bool m_bTraceToClosestSurface; // 0x03F1 + bool m_bIncludeWater; // 0x03F2 +}; +class C_OP_RemapVisibilityScalar : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldInput; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + float32 m_flInputMin; // 0x01D8 + float32 m_flInputMax; // 0x01DC + float32 m_flOutputMin; // 0x01E0 + float32 m_flOutputMax; // 0x01E4 + float32 m_flRadiusScale; // 0x01E8 +}; +class C_OP_ScreenSpaceRotateTowardTarget : public CParticleFunctionOperator // particles +{ + CPerParticleVecInput m_vecTargetPosition; // 0x01D0 + CParticleRemapFloatInput m_flOutputRemap; // 0x0888 + ParticleSetMethod_t m_nSetMethod; // 0x09F8 + CPerParticleFloatInput m_flScreenEdgeAlignmentDistance; // 0x0A00 +}; +class C_INIT_CreateWithinSphereTransform : public CParticleFunctionInitializer // particles +{ + CPerParticleFloatInput m_fRadiusMin; // 0x01D8 + CPerParticleFloatInput m_fRadiusMax; // 0x0348 + CPerParticleVecInput m_vecDistanceBias; // 0x04B8 + Vector m_vecDistanceBiasAbs; // 0x0B70 + CParticleTransformInput m_TransformInput; // 0x0B80 + CPerParticleFloatInput m_fSpeedMin; // 0x0BE8 + CPerParticleFloatInput m_fSpeedMax; // 0x0D58 + float32 m_fSpeedRandExp; // 0x0EC8 + bool m_bLocalCoords; // 0x0ECC + CPerParticleVecInput m_LocalCoordinateSystemSpeedMin; // 0x0ED0 + CPerParticleVecInput m_LocalCoordinateSystemSpeedMax; // 0x1588 + ParticleAttributeIndex_t m_nFieldOutput; // 0x1C40 + ParticleAttributeIndex_t m_nFieldVelocity; // 0x1C44 +}; +class C_OP_SetGravityToCP : public CParticleFunctionPreEmission // particles +{ + int32 m_nCPInput; // 0x01D8 + int32 m_nCPOutput; // 0x01DC + CParticleCollectionFloatInput m_flScale; // 0x01E0 + bool m_bSetOrientation; // 0x0350 + bool m_bSetZDown; // 0x0351 +}; +class FeAnimStrayRadius_t // physicslib +{ + uint16[2] nNode; // 0x0000 + float32 flMaxDist; // 0x0004 + float32 flRelaxationFactor; // 0x0008 +}; +class FeAntiTunnelProbe_t // physicslib +{ + float32 flWeight; // 0x0000 + uint32 nFlags; // 0x0004 + uint16 nProbeNode; // 0x0008 + uint16 nCount; // 0x000A + uint32 nBegin; // 0x000C + float32 flActivationDistance; // 0x0010 + float32 flCurvatureRadius; // 0x0014 + float32 flBias; // 0x0018 +}; +class RnShapeDesc_t // physicslib +{ + uint32 m_nCollisionAttributeIndex; // 0x0000 + uint32 m_nSurfacePropertyIndex; // 0x0004 + CUtlString m_UserFriendlyName; // 0x0008 + bool m_bUserFriendlyNameSealed; // 0x0010 + bool m_bUserFriendlyNameLong; // 0x0011 + uint32 m_nToolMaterialHash; // 0x0014 +}; +class CNmFloatSelectorNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + CUtlVectorFixedGrowable< int16, 5 > m_conditionNodeIndices; // 0x0010 + CUtlVectorFixedGrowable< float32, 5 > m_values; // 0x0038 + float32 m_flDefaultValue; // 0x0068 + float32 m_flEaseTime; // 0x006C + NmEasingOperation_t m_easingOp; // 0x0070 +}; +class CModelConfigElement_SetBodygroup : public CModelConfigElement // modellib +{ + CGlobalSymbol m_GroupName; // 0x0048 + int32 m_nChoice; // 0x0050 +}; +class CModelConfigElement_Command : public CModelConfigElement // modellib +{ + CUtlString m_Command; // 0x0048 + KeyValues3 m_Args; // 0x0050 +}; +class CRenderSkeleton // modellib +{ + CUtlVector< RenderSkeletonBone_t > m_bones; // 0x0000 + CUtlVector< int32 > m_boneParents; // 0x0030 + int32 m_nBoneWeightCount; // 0x0048 +}; +class InfoForResourceTypeCVPhysXSurfacePropertiesList // resourcesystem +{ +}; +class WaterWheelFrictionScale_t // server +{ + float32 m_flFractionOfWheelSubmerged; // 0x0000 + float32 m_flFrictionScale; // 0x0004 +}; +class CSAdditionalMatchStats_t : public CSAdditionalPerRoundStats_t // server +{ + int32 m_numRoundsSurvivedStreak; // 0x00B8 + int32 m_maxNumRoundsSurvivedStreak; // 0x00BC + int32 m_numRoundsSurvivedTotal; // 0x00C0 + int32 m_iRoundsWonWithoutPurchase; // 0x00C4 + int32 m_iRoundsWonWithoutPurchaseTotal; // 0x00C8 + int32 m_numFirstKills; // 0x00CC + int32 m_numClutchKills; // 0x00D0 + int32 m_numPistolKills; // 0x00D4 + int32 m_numSniperKills; // 0x00D8 + int32 m_iNumSuicides; // 0x00DC + int32 m_iNumTeamKills; // 0x00E0 + float32 m_flTeamDamage; // 0x00E4 +}; +class C_OP_RenderCables : public CParticleFunctionRenderer // particles +{ + CParticleCollectionFloatInput m_flRadiusScale; // 0x0220 + CParticleCollectionFloatInput m_flAlphaScale; // 0x0390 + CParticleCollectionVecInput m_vecColorScale; // 0x0500 + ParticleColorBlendType_t m_nColorBlendType; // 0x0BB8 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hMaterial; // 0x0BC0 + TextureRepetitionMode_t m_nTextureRepetitionMode; // 0x0BC8 + CParticleCollectionFloatInput m_flTextureRepeatsPerSegment; // 0x0BD0 + CParticleCollectionFloatInput m_flTextureRepeatsCircumference; // 0x0D40 + CParticleCollectionFloatInput m_flColorMapOffsetV; // 0x0EB0 + CParticleCollectionFloatInput m_flColorMapOffsetU; // 0x1020 + CParticleCollectionFloatInput m_flNormalMapOffsetV; // 0x1190 + CParticleCollectionFloatInput m_flNormalMapOffsetU; // 0x1300 + bool m_bDrawCableCaps; // 0x1470 + float32 m_flCapRoundness; // 0x1474 + float32 m_flCapOffsetAmount; // 0x1478 + float32 m_flTessScale; // 0x147C + int32 m_nMinTesselation; // 0x1480 + int32 m_nMaxTesselation; // 0x1484 + int32 m_nRoundness; // 0x1488 + bool m_nForceRoundnessFixed; // 0x148C + CParticleTransformInput m_LightingTransform; // 0x1490 + CUtlLeanVector< FloatInputMaterialVariable_t > m_MaterialFloatVars; // 0x14F8 + CUtlLeanVector< VecInputMaterialVariable_t > m_MaterialVecVars; // 0x1518 +}; +class VoxelVisBlockOffset_t // worldrenderer +{ + uint32 m_nOffset; // 0x0000 + uint32 m_nElementCount; // 0x0004 +}; +class FeSimdNodeBase_t // physicslib +{ + uint16[4] nNode; // 0x0000 + uint16[4] nNodeX0; // 0x0008 + uint16[4] nNodeX1; // 0x0010 + uint16[4] nNodeY0; // 0x0018 + uint16[4] nNodeY1; // 0x0020 + uint16[4] nDummy; // 0x0028 + FourQuaternions qAdjust; // 0x0030 +}; +class NmPercent_t // animlib +{ + float32 m_flValue; // 0x0000 +}; +class CNmGraphEventConditionNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_nSourceStateNodeIdx; // 0x0010 + CNmBitFlags m_eventConditionRules; // 0x0014 + CUtlVectorFixedGrowable< CNmGraphEventConditionNode::Condition_t, 5 > m_conditions; // 0x0018 +}; +class C_OP_SetPerChildControlPointFromAttribute : public CParticleFunctionOperator // particles +{ + int32 m_nChildGroupID; // 0x01D0 + int32 m_nFirstControlPoint; // 0x01D4 + int32 m_nNumControlPoints; // 0x01D8 + int32 m_nParticleIncrement; // 0x01DC + int32 m_nFirstSourcePoint; // 0x01E0 + bool m_bNumBasedOnParticleCount; // 0x01E4 + ParticleAttributeIndex_t m_nAttributeToRead; // 0x01E8 + int32 m_nCPField; // 0x01EC +}; +class C_OP_LightningSnapshotGenerator : public CParticleFunctionPreEmission // particles +{ + int32 m_nCPSnapshot; // 0x01D8 + int32 m_nCPStartPnt; // 0x01DC + int32 m_nCPEndPnt; // 0x01E0 + CParticleCollectionFloatInput m_flSegments; // 0x01E8 + CParticleCollectionFloatInput m_flOffset; // 0x0358 + CParticleCollectionFloatInput m_flOffsetDecay; // 0x04C8 + CParticleCollectionFloatInput m_flRecalcRate; // 0x0638 + CParticleCollectionFloatInput m_flUVScale; // 0x07A8 + CParticleCollectionFloatInput m_flUVOffset; // 0x0918 + CParticleCollectionFloatInput m_flSplitRate; // 0x0A88 + CParticleCollectionFloatInput m_flBranchTwist; // 0x0BF8 + ParticleLightnintBranchBehavior_t m_nBranchBehavior; // 0x0D68 + CParticleCollectionFloatInput m_flRadiusStart; // 0x0D70 + CParticleCollectionFloatInput m_flRadiusEnd; // 0x0EE0 + CParticleCollectionFloatInput m_flDedicatedPool; // 0x1050 +}; +class C_OP_RemapSpeed : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + float32 m_flInputMin; // 0x01D4 + float32 m_flInputMax; // 0x01D8 + float32 m_flOutputMin; // 0x01DC + float32 m_flOutputMax; // 0x01E0 + ParticleSetMethod_t m_nSetMethod; // 0x01E4 + bool m_bIgnoreDelta; // 0x01E8 +}; +class CNmFloatComparisonNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + int16 m_nComparandValueNodeIdx; // 0x0012 + CNmFloatComparisonNode::Comparison_t m_comparison; // 0x0014 + float32 m_flEpsilon; // 0x0018 + float32 m_flComparisonValue; // 0x001C +}; +class EventClientOutput_t // engine2 +{ + EngineLoopState_t m_LoopState; // 0x0000 + float32 m_flRenderTime; // 0x0028 + float32 m_flRealTime; // 0x002C + float32 m_flRenderFrameTimeUnbounded; // 0x0030 + bool m_bRenderOnly; // 0x0034 +}; +class CPathQueryUtil // server +{ + CTransform m_PathToEntityTransform; // 0x0010 + CUtlVector< Vector > m_vecPathSamplePositions; // 0x0030 + CUtlVector< float32 > m_vecPathSampleParameters; // 0x0048 + CUtlVector< float32 > m_vecPathSampleDistances; // 0x0060 + bool m_bIsClosedLoop; // 0x0078 +}; +class ragdoll_t // server +{ + CUtlVector< ragdollelement_t > list; // 0x0000 + CUtlVector< ragdollhierarchyjoint_t > hierarchyJoints; // 0x0018 + CUtlVector< int32 > boneIndex; // 0x0030 + bool allowStretch; // 0x0048 + bool unused; // 0x0049 +}; +class CNavHullVData // navlib +{ + bool m_bAgentEnabled; // 0x0000 + float32 m_agentRadius; // 0x0004 + float32 m_agentHeight; // 0x0008 + bool m_agentShortHeightEnabled; // 0x000C + float32 m_agentShortHeight; // 0x0010 + bool m_agentCrawlEnabled; // 0x0014 + float32 m_agentCrawlHeight; // 0x0018 + float32 m_agentMaxClimb; // 0x001C + int32 m_agentMaxSlope; // 0x0020 + float32 m_agentMaxJumpDownDist; // 0x0024 + float32 m_agentMaxJumpHorizDistBase; // 0x0028 + float32 m_agentMaxJumpUpDist; // 0x002C + int32 m_agentBorderErosion; // 0x0030 + bool m_flowMapGenerationEnabled; // 0x0034 + float32 m_flowMapNodeMaxRadius; // 0x0038 +}; +class C_OP_SetCPOrientationToDirection : public CParticleFunctionOperator // particles +{ + int32 m_nInputControlPoint; // 0x01D0 + int32 m_nOutputControlPoint; // 0x01D4 +}; +class TextureGroup_t // particles +{ + bool m_bEnabled; // 0x0000 + bool m_bReplaceTextureWithGradient; // 0x0001 + CStrongHandle< InfoForResourceTypeCTextureBase > m_hTexture; // 0x0008 + CColorGradient m_Gradient; // 0x0010 + SpriteCardTextureType_t m_nTextureType; // 0x0028 + SpriteCardTextureChannel_t m_nTextureChannels; // 0x002C + ParticleTextureLayerBlendType_t m_nTextureBlendMode; // 0x0030 + CParticleCollectionRendererFloatInput m_flTextureBlend; // 0x0038 + TextureControls_t m_TextureControls; // 0x01A8 +}; +class CVMixOscProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixOscDesc_t m_desc; // 0x0020 +}; +class CBaseConstraint : public CBoneConstraintBase // modellib +{ + CUtlString m_name; // 0x0020 + Vector m_vUpVector; // 0x0028 + CUtlLeanVector< CConstraintSlave > m_slaves; // 0x0038 + CUtlVector< CConstraintTarget > m_targets; // 0x0048 +}; +class CPhysSurfacePropertiesSoundNames // modellib +{ + CUtlString m_impactSoft; // 0x0000 + CUtlString m_impactHard; // 0x0008 + CUtlString m_scrapeSmooth; // 0x0010 + CUtlString m_scrapeRough; // 0x0018 + CUtlString m_bulletImpact; // 0x0020 + CUtlString m_rolling; // 0x0028 + CUtlString m_break; // 0x0030 + CUtlString m_strain; // 0x0038 + CUtlString m_meleeImpact; // 0x0040 + CUtlString m_pushOff; // 0x0048 + CUtlString m_skidStop; // 0x0050 + CUtlString m_resonant; // 0x0058 +}; +class CNmIDComparisonNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + CNmIDComparisonNode::Comparison_t m_comparison; // 0x0012 + CUtlLeanVectorFixedGrowable< CGlobalSymbol, 4 > m_comparisionIDs; // 0x0018 +}; +class PulseRuntimeChunkIndex_t // pulse_runtime_lib +{ + int32 m_Value; // 0x0000 +}; +class MaterialParamString_t : public MaterialParam_t // materialsystem2 +{ + CUtlString m_value; // 0x0008 +}; +class EventClientPreSimulate_t : public EventSimulate_t // engine2 +{ +}; +class inv_image_light_sun_t // client +{ + Vector color; // 0x0000 + QAngle angle; // 0x000C + float32 brightness; // 0x0018 +}; +class C_OP_Diffusion : public CParticleFunctionOperator // particles +{ + float32 m_flRadiusScale; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + int32 m_nVoxelGridResolution; // 0x01D8 +}; +class CSosGroupActionTimeBlockLimitSchema : public CSosGroupActionSchema // soundsystem +{ + int32 m_nMaxCount; // 0x0008 + float32 m_flMaxDuration; // 0x000C +}; +class C_OP_RenderProjected : public CParticleFunctionRenderer // particles +{ + bool m_bProjectCharacter; // 0x0220 + bool m_bProjectWorld; // 0x0221 + bool m_bProjectWater; // 0x0222 + bool m_bFlipHorizontal; // 0x0223 + bool m_bEnableProjectedDepthControls; // 0x0224 + float32 m_flMinProjectionDepth; // 0x0228 + float32 m_flMaxProjectionDepth; // 0x022C + CUtlVector< RenderProjectedMaterial_t > m_vecProjectedMaterials; // 0x0230 + CPerParticleFloatInput m_flMaterialSelection; // 0x0248 + float32 m_flAnimationTimeScale; // 0x03B8 + bool m_bOrientToNormal; // 0x03BC + CUtlVector< MaterialVariable_t > m_MaterialVars; // 0x03C0 + CParticleCollectionFloatInput m_flRadiusScale; // 0x03D8 + CParticleCollectionFloatInput m_flAlphaScale; // 0x0548 + CParticleCollectionFloatInput m_flRollScale; // 0x06B8 + ParticleAttributeIndex_t m_nAlpha2Field; // 0x0828 + CParticleCollectionVecInput m_vecColorScale; // 0x0830 + ParticleColorBlendType_t m_nColorBlendType; // 0x0EE8 +}; +class CSteamAudioProbeData // steamaudio +{ + IPLProbeBatch m_pProbeBatch; // 0x0000 +}; +class VMixShaperDesc_t // soundsystem_lowlevel +{ + int32 m_nShape; // 0x0000 + float32 m_fldbDrive; // 0x0004 + float32 m_fldbOutputGain; // 0x0008 + float32 m_flWetMix; // 0x000C + int32 m_nOversampleFactor; // 0x0010 +}; +class CAudioSentence // soundsystem_voicecontainers +{ + bool m_bShouldVoiceDuck; // 0x0000 + CUtlVector< CAudioPhonemeTag > m_RunTimePhonemes; // 0x0008 + CUtlVector< CAudioEmphasisSample > m_EmphasisSamples; // 0x0020 + CAudioMorphData m_morphData; // 0x0038 +}; +class CSequenceUpdateNode : public CSequenceUpdateNodeBase // animgraphlib +{ + HSequence m_hSequence; // 0x0078 + float32 m_duration; // 0x007C + CParamSpanUpdater m_paramSpans; // 0x0080 + CUtlVector< TagSpan_t > m_tags; // 0x0098 +}; +class PermModelInfo_t // modellib +{ + uint32 m_nFlags; // 0x0000 + Vector m_vHullMin; // 0x0004 + Vector m_vHullMax; // 0x0010 + Vector m_vViewMin; // 0x001C + Vector m_vViewMax; // 0x0028 + float32 m_flMass; // 0x0034 + Vector m_vEyePosition; // 0x0038 + float32 m_flMaxEyeDeflection; // 0x0044 + CUtlString m_sSurfaceProperty; // 0x0048 + CUtlString m_keyValueText; // 0x0050 +}; +class CNmBlendTask : public CNmBlendTaskBase // animlib +{ +}; +class CRemapValueUpdateItem // animgraphlib +{ + CAnimParamHandle m_hParamIn; // 0x0000 + CAnimParamHandle m_hParamOut; // 0x0002 + float32 m_flMinInputValue; // 0x0004 + float32 m_flMaxInputValue; // 0x0008 + float32 m_flMinOutputValue; // 0x000C + float32 m_flMaxOutputValue; // 0x0010 +}; +class CWarpSectionAnimTag : public CWarpSectionAnimTagBase // animgraphlib +{ + bool m_bWarpPosition; // 0x0050 + bool m_bWarpOrientation; // 0x0051 +}; +class MoodAnimation_t // animationsystem +{ + CModelAnimNameWithDeltas m_sName; // 0x0000 + float32 m_flWeight; // 0x0008 +}; +class CVirtualAnimParameter : public CAnimParameterBase // animgraphlib +{ + CUtlString m_expressionString; // 0x0070 + AnimParamType_t m_eParamType; // 0x0078 +}; +class CVariantDefaultAllocator // entity2 +{ +}; +class CompositeMaterialInputLooseVariable_t // compositematerialslib +{ + CUtlString m_strName; // 0x0000 + bool m_bExposeExternally; // 0x0008 + CUtlString m_strExposedFriendlyName; // 0x0010 + CUtlString m_strExposedFriendlyGroupName; // 0x0018 + bool m_bExposedVariableIsFixedRange; // 0x0020 + CUtlString m_strExposedVisibleWhenTrue; // 0x0028 + CUtlString m_strExposedHiddenWhenTrue; // 0x0030 + CUtlString m_strExposedValueList; // 0x0038 + CompositeMaterialInputLooseVariableType_t m_nVariableType; // 0x0040 + bool m_bValueBoolean; // 0x0044 + int32 m_nValueIntX; // 0x0048 + int32 m_nValueIntY; // 0x004C + int32 m_nValueIntZ; // 0x0050 + int32 m_nValueIntW; // 0x0054 + bool m_bHasFloatBounds; // 0x0058 + float32 m_flValueFloatX; // 0x005C + float32 m_flValueFloatX_Min; // 0x0060 + float32 m_flValueFloatX_Max; // 0x0064 + float32 m_flValueFloatY; // 0x0068 + float32 m_flValueFloatY_Min; // 0x006C + float32 m_flValueFloatY_Max; // 0x0070 + float32 m_flValueFloatZ; // 0x0074 + float32 m_flValueFloatZ_Min; // 0x0078 + float32 m_flValueFloatZ_Max; // 0x007C + float32 m_flValueFloatW; // 0x0080 + float32 m_flValueFloatW_Min; // 0x0084 + float32 m_flValueFloatW_Max; // 0x0088 + Color m_cValueColor4; // 0x008C + CompositeMaterialVarSystemVar_t m_nValueSystemVar; // 0x0090 + CResourceNameTyped< CWeakHandle< InfoForResourceTypeIMaterial2 > > m_strResourceMaterial; // 0x0098 + CUtlString m_strTextureContentAssetPath; // 0x0178 + CResourceNameTyped< CWeakHandle< InfoForResourceTypeCTextureBase > > m_strTextureRuntimeResourcePath; // 0x0180 + CUtlString m_strTextureCompilationVtexTemplate; // 0x0260 + CompositeMaterialInputTextureType_t m_nTextureType; // 0x0268 + CUtlString m_strString; // 0x0270 + CUtlString m_strPanoramaPanelPath; // 0x0278 + int32 m_nPanoramaRenderRes; // 0x0280 +}; +class C_INIT_NormalOffset : public CParticleFunctionInitializer // particles +{ + Vector m_OffsetMin; // 0x01D8 + Vector m_OffsetMax; // 0x01E4 + int32 m_nControlPointNumber; // 0x01F0 + bool m_bLocalCoords; // 0x01F4 + bool m_bNormalize; // 0x01F5 +}; +class C_INIT_SetAttributeToScalarExpression : public CParticleFunctionInitializer // particles +{ + ScalarExpressionType_t m_nExpression; // 0x01D8 + CPerParticleFloatInput m_flInput1; // 0x01E0 + CPerParticleFloatInput m_flInput2; // 0x0350 + CParticleRemapFloatInput m_flOutputRemap; // 0x04C0 + ParticleAttributeIndex_t m_nOutputField; // 0x0630 + ParticleSetMethod_t m_nSetMethod; // 0x0634 +}; +class CVMixShaperProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixShaperDesc_t m_desc; // 0x0020 +}; +class CVMixFreeverbProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixFreeverbDesc_t m_desc; // 0x0020 +}; +class FeFitInfluence_t // physicslib +{ + uint32 nVertexNode; // 0x0000 + float32 flWeight; // 0x0004 + uint32 nMatrixNode; // 0x0008 +}; +class CParticleVecInput : public CParticleInput // particleslib +{ + ParticleVecType_t m_nType; // 0x0010 + Vector m_vLiteralValue; // 0x0014 + Color m_LiteralColor; // 0x0020 + CParticleNamedValueRef m_NamedValue; // 0x0028 + bool m_bFollowNamedValue; // 0x0068 + ParticleAttributeIndex_t m_nVectorAttribute; // 0x006C + Vector m_vVectorAttributeScale; // 0x0070 + int32 m_nControlPoint; // 0x007C + int32 m_nDeltaControlPoint; // 0x0080 + Vector m_vCPValueScale; // 0x0084 + Vector m_vCPRelativePosition; // 0x0090 + Vector m_vCPRelativeDir; // 0x009C + CParticleFloatInput m_FloatComponentX; // 0x00A8 + CParticleFloatInput m_FloatComponentY; // 0x0218 + CParticleFloatInput m_FloatComponentZ; // 0x0388 + CParticleFloatInput m_FloatInterp; // 0x04F8 + float32 m_flInterpInput0; // 0x0668 + float32 m_flInterpInput1; // 0x066C + Vector m_vInterpOutput0; // 0x0670 + Vector m_vInterpOutput1; // 0x067C + CColorGradient m_Gradient; // 0x0688 + Vector m_vRandomMin; // 0x06A0 + Vector m_vRandomMax; // 0x06AC +}; +class CAnimUserDifference // animationsystem +{ + CBufferString m_name; // 0x0000 + int32 m_nType; // 0x0010 +}; +class CExampleSchemaVData_PolymorphicBase // resourcefile +{ + int32 m_nBase; // 0x0008 +}; +class C_OP_GameLiquidSpill : public CParticleFunctionRenderer // particles +{ + CParticleCollectionFloatInput m_flLiquidContentsField; // 0x0220 + CParticleCollectionFloatInput m_flExpirationTime; // 0x0390 + ParticleAttributeIndex_t m_nAmountAttribute; // 0x0500 +}; +class CPathMetricEvaluator : public CMotionMetricEvaluator // animgraphlib +{ + CUtlVector< float32 > m_pathTimeSamples; // 0x0050 + float32 m_flDistance; // 0x0068 + bool m_bExtrapolateMovement; // 0x006C + float32 m_flMinExtrapolationSpeed; // 0x0070 +}; +class CNmCachedTargetNode::CDefinition : public CNmTargetValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + NmCachedValueMode_t m_mode; // 0x0014 +}; +class EventClientPreOutputParallelWithServer_t : public EventClientPreOutput_t // engine2 +{ +}; +class C_OP_RenderAsModels : public CParticleFunctionRenderer // particles +{ + CUtlVector< ModelReference_t > m_ModelList; // 0x0220 + float32 m_flModelScale; // 0x023C + bool m_bFitToModelSize; // 0x0240 + bool m_bNonUniformScaling; // 0x0241 + ParticleAttributeIndex_t m_nXAxisScalingAttribute; // 0x0244 + ParticleAttributeIndex_t m_nYAxisScalingAttribute; // 0x0248 + ParticleAttributeIndex_t m_nZAxisScalingAttribute; // 0x024C + int32 m_nSizeCullBloat; // 0x0250 +}; +class C_OP_SetControlPointToPlayer : public CParticleFunctionPreEmission // particles +{ + int32 m_nCP1; // 0x01D8 + Vector m_vecCP1Pos; // 0x01DC + bool m_bOrientToEyes; // 0x01E8 + ParticleEntityPos_t m_nPosition; // 0x01EC +}; +class WorldNodeOnDiskBufferData_t // worldrenderer +{ + int32 m_nElementCount; // 0x0000 + int32 m_nElementSizeInBytes; // 0x0004 + CUtlVector< RenderInputLayoutField_t > m_inputLayoutFields; // 0x0008 + CUtlVector< uint8 > m_pData; // 0x0020 +}; +class CNmClipSelectorNode::CDefinition : public CNmClipReferenceNode::CDefinition // animlib +{ + CUtlLeanVectorFixedGrowable< int16, 5 > m_optionNodeIndices; // 0x0010 + CUtlLeanVectorFixedGrowable< int16, 5 > m_conditionNodeIndices; // 0x0028 +}; +class CBlockSelectionMetricEvaluator : public CMotionMetricEvaluator // animgraphlib +{ +}; +class PulseRegisterMap_t // pulse_runtime_lib +{ + KeyValues3 m_Inparams; // 0x0000 + CKV3MemberNameSet m_InparamsWhichCanBeMoved; // 0x0010 + KeyValues3 m_Outparams; // 0x0020 +}; +class CAnimActionUpdater // animgraphlib +{ +}; +class InfoForResourceTypeCTypeScriptResource // resourcesystem +{ +}; +class CNmSnapWeaponTask : public CNmPoseTask // server +{ +}; +class C_OP_MovementLoopInsideSphere : public CParticleFunctionOperator // particles +{ + int32 m_nCP; // 0x01D0 + CParticleCollectionFloatInput m_flDistance; // 0x01D8 + CParticleCollectionVecInput m_vecScale; // 0x0348 + ParticleAttributeIndex_t m_nDistSqrAttr; // 0x0A00 +}; +class C_OP_CycleScalar : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nDestField; // 0x01D0 + float32 m_flStartValue; // 0x01D4 + float32 m_flEndValue; // 0x01D8 + float32 m_flCycleTime; // 0x01DC + bool m_bDoNotRepeatCycle; // 0x01E0 + bool m_bSynchronizeParticles; // 0x01E1 + int32 m_nCPScale; // 0x01E4 + int32 m_nCPFieldMin; // 0x01E8 + int32 m_nCPFieldMax; // 0x01EC + ParticleSetMethod_t m_nSetMethod; // 0x01F0 +}; +class CVMixNameInput : public CVMixInputBase // soundsystem_lowlevel +{ + CUtlString m_defaultValue; // 0x0010 +}; +class CSceneObjectData // modellib +{ + Vector m_vMinBounds; // 0x0000 + Vector m_vMaxBounds; // 0x000C + CUtlLeanVector< CMaterialDrawDescriptor > m_drawCalls; // 0x0018 + CUtlLeanVector< AABB_t > m_drawBounds; // 0x0028 + CUtlLeanVector< CMeshletDescriptor > m_meshlets; // 0x0038 + CUtlLeanVector< CSceneObjectData::RTProxyDrawDescriptor_t > m_rtProxyDrawCalls; // 0x0048 + Vector4D m_vTintColor; // 0x0058 +}; +class SkeletonAnimCapture_t::Bone_t // modellib +{ + CUtlString m_Name; // 0x0000 + CTransform m_BindPose; // 0x0010 + int32 m_nParent; // 0x0030 +}; +class CSlopeComponentUpdater : public CAnimComponentUpdater // animgraphlib +{ + float32 m_flTraceDistance; // 0x0034 + CAnimParamHandle m_hSlopeAngle; // 0x0038 + CAnimParamHandle m_hSlopeAngleFront; // 0x003A + CAnimParamHandle m_hSlopeAngleSide; // 0x003C + CAnimParamHandle m_hSlopeHeading; // 0x003E + CAnimParamHandle m_hSlopeNormal; // 0x0040 + CAnimParamHandle m_hSlopeNormal_WorldSpace; // 0x0042 +}; +class EventClientPostOutput_t // engine2 +{ + EngineLoopState_t m_LoopState; // 0x0000 + float64 m_flRenderTime; // 0x0028 + float32 m_flRenderFrameTime; // 0x0030 + float32 m_flRenderFrameTimeUnbounded; // 0x0034 + bool m_bRenderOnly; // 0x0038 +}; +class C_OP_RemapScalar : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldInput; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + float32 m_flInputMin; // 0x01D8 + float32 m_flInputMax; // 0x01DC + float32 m_flOutputMin; // 0x01E0 + float32 m_flOutputMax; // 0x01E4 + bool m_bOldCode; // 0x01E8 +}; +class C_OP_DirectionBetweenVecsToVec : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + CPerParticleVecInput m_vecPoint1; // 0x01D8 + CPerParticleVecInput m_vecPoint2; // 0x0890 +}; +class C_OP_ReinitializeScalarEndCap : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + float32 m_flOutputMin; // 0x01D4 + float32 m_flOutputMax; // 0x01D8 +}; +class C_OP_NoiseEmitter : public CParticleFunctionEmitter // particles +{ + float32 m_flEmissionDuration; // 0x01D8 + float32 m_flStartTime; // 0x01DC + float32 m_flEmissionScale; // 0x01E0 + int32 m_nScaleControlPoint; // 0x01E4 + int32 m_nScaleControlPointField; // 0x01E8 + int32 m_nWorldNoisePoint; // 0x01EC + bool m_bAbsVal; // 0x01F0 + bool m_bAbsValInv; // 0x01F1 + float32 m_flOffset; // 0x01F4 + float32 m_flOutputMin; // 0x01F8 + float32 m_flOutputMax; // 0x01FC + float32 m_flNoiseScale; // 0x0200 + float32 m_flWorldNoiseScale; // 0x0204 + Vector m_vecOffsetLoc; // 0x0208 + float32 m_flWorldTimeScale; // 0x0214 +}; +class CVMixDynamicsCompressorProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixDynamicsCompressorDesc_t m_desc; // 0x0020 +}; +class CVoiceContainerAsyncGenerator : public CVoiceContainerGenerator // soundsystem_voicecontainers +{ +}; +class FeNodeIntegrator_t // physicslib +{ + float32 flPointDamping; // 0x0000 + float32 flAnimationForceAttraction; // 0x0004 + float32 flAnimationVertexAttraction; // 0x0008 + float32 flGravity; // 0x000C +}; +class FeWorldCollisionParams_t // physicslib +{ + float32 flWorldFriction; // 0x0000 + float32 flGroundFriction; // 0x0004 + uint16 nListBegin; // 0x0008 + uint16 nListEnd; // 0x000A +}; +class CNmTargetOffsetNode::CDefinition : public CNmTargetValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + bool m_bIsBoneSpaceOffset; // 0x0012 + Quaternion m_rotationOffset; // 0x0020 + Vector m_translationOffset; // 0x0030 +}; +class CAnimFrameSegment // animationsystem +{ + int32 m_nUniqueFrameIndex; // 0x0000 + uint32 m_nLocalElementMasks; // 0x0004 + int32 m_nLocalChannel; // 0x0008 + CUtlBinaryBlock m_container; // 0x0010 +}; +class C_OP_QuantizeCPComponent : public CParticleFunctionPreEmission // particles +{ + CParticleCollectionFloatInput m_flInputValue; // 0x01D8 + int32 m_nCPOutput; // 0x0348 + int32 m_nOutVectorField; // 0x034C + CParticleCollectionFloatInput m_flQuantizeValue; // 0x0350 +}; +class C_OP_PerParticleForce : public CParticleFunctionForce // particles +{ + CPerParticleFloatInput m_flForceScale; // 0x01E0 + CPerParticleVecInput m_vForce; // 0x0350 + int32 m_nCP; // 0x0A08 +}; +class CNmAndNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + CUtlLeanVectorFixedGrowable< int16, 4 > m_conditionNodeIndices; // 0x0010 +}; +class ParamSpan_t // animgraphlib +{ + CUtlVector< ParamSpanSample_t > m_samples; // 0x0000 + CAnimParamHandle m_hParam; // 0x0018 + AnimParamType_t m_eParamType; // 0x001A + float32 m_flStartCycle; // 0x001C + float32 m_flEndCycle; // 0x0020 +}; +class CNmFootEventConditionNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_nSourceStateNodeIdx; // 0x0010 + NmFootPhaseCondition_t m_phaseCondition; // 0x0012 + CNmBitFlags m_eventConditionRules; // 0x0014 +}; +class CBinaryUpdateNode : public CAnimUpdateNodeBase // animgraphlib +{ + CAnimUpdateNodeRef m_pChild1; // 0x0060 + CAnimUpdateNodeRef m_pChild2; // 0x0070 + BinaryNodeTiming m_timingBehavior; // 0x0080 + float32 m_flTimingBlend; // 0x0084 + bool m_bResetChild1; // 0x0088 + bool m_bResetChild2; // 0x0089 +}; +class PointCameraSettings_t // server +{ + float32 m_flNearBlurryDistance; // 0x0000 + float32 m_flNearCrispDistance; // 0x0004 + float32 m_flFarCrispDistance; // 0x0008 + float32 m_flFarBlurryDistance; // 0x000C +}; +class FeEdgeDesc_t // physicslib +{ + uint16[2] nEdge; // 0x0000 + uint16[2][2] nSide; // 0x0004 + uint16[2] nVirtElem; // 0x000C +}; +class FeMorphLayerDepr_t // physicslib +{ + CUtlString m_Name; // 0x0000 + uint32 m_nNameHash; // 0x0008 + CUtlVector< uint16 > m_Nodes; // 0x0010 + CUtlVector< Vector > m_InitPos; // 0x0028 + CUtlVector< float32 > m_Gravity; // 0x0040 + CUtlVector< float32 > m_GoalStrength; // 0x0058 + CUtlVector< float32 > m_GoalDamping; // 0x0070 + uint32 m_nFlags; // 0x0088 +}; +class CModelConfigElement // modellib +{ + CUtlString m_ElementName; // 0x0008 + CUtlVector< CModelConfigElement* > m_NestedElements; // 0x0010 +}; +class CLookAtUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + LookAtOpFixedSettings_t m_opFixedSettings; // 0x0070 + AnimVectorSource m_target; // 0x0148 + CAnimParamHandle m_paramIndex; // 0x014C + CAnimParamHandle m_weightParamIndex; // 0x014E + bool m_bResetChild; // 0x0150 + bool m_bLockWhenWaning; // 0x0151 +}; +class CNmFootstepEventPercentageThroughNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + int16 m_nSourceStateNodeIdx; // 0x0010 + NmFootPhaseCondition_t m_phaseCondition; // 0x0012 + CNmBitFlags m_eventConditionRules; // 0x0014 +}; +class EventClientSimulate_t : public EventSimulate_t // engine2 +{ +}; +class InfoForResourceTypeIPulseGraphDef // resourcesystem +{ +}; +class CVoiceContainerSet : public CVoiceContainerBase // soundsystem_voicecontainers +{ + CUtlVector< CVoiceContainerSetElement > m_soundsToPlay; // 0x00A8 +}; +class CModelConfigElement_SetBodygroupOnAttachedModels : public CModelConfigElement // modellib +{ + CUtlString m_GroupName; // 0x0048 + int32 m_nChoice; // 0x0050 +}; +class CRenderMesh // modellib +{ + CUtlLeanVectorFixedGrowable< CSceneObjectData, 1 > m_sceneObjects; // 0x0010 + CUtlLeanVector< CBaseConstraint* > m_constraints; // 0x00B8 + CRenderSkeleton m_skeleton; // 0x00C8 + bool m_bUseUV2ForCharting; // 0x01D4 + bool m_bEmbeddedMapMesh; // 0x01D5 + DynamicMeshDeformParams_t m_meshDeformParams; // 0x01F8 + CRenderGroom* m_pGroomData; // 0x0208 +}; +class CPlayerControllerComponent // server +{ + CNetworkVarChainer __m_pChainEntity; // 0x0008 +}; +class C_OP_Decay : public CParticleFunctionOperator // particles +{ + bool m_bRopeDecay; // 0x01D0 + bool m_bForcePreserveParticleOrder; // 0x01D1 +}; +class C_OP_SnapshotSkinToBones : public CParticleFunctionOperator // particles +{ + bool m_bTransformNormals; // 0x01D0 + bool m_bTransformRadii; // 0x01D1 + int32 m_nControlPointNumber; // 0x01D4 + float32 m_flLifeTimeFadeStart; // 0x01D8 + float32 m_flLifeTimeFadeEnd; // 0x01DC + float32 m_flJumpThreshold; // 0x01E0 + float32 m_flPrevPosScale; // 0x01E4 +}; +class CSceneObjectData::RTProxyDrawDescriptor_t // modellib +{ + CMaterialDrawDescriptor m_drawDesc; // 0x0000 + matrix3x4_t m_mWorldFromLocal; // 0x0108 + VertexAlbedoFormat_t m_nVertexAlbedoFormat; // 0x0138 + int8 m_nVertexAlbedoVB; // 0x0139 + uint16 m_nVertexAlbedoOffset; // 0x013A + uint16 m_nVertexAlbedoStride; // 0x013C +}; +class CNmFloatClampNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + Range_t m_clampRange; // 0x0014 +}; +class InfoForResourceTypeCNmIKRig // resourcesystem +{ +}; +class C_INIT_DistanceToNeighborCull : public CParticleFunctionInitializer // particles +{ + CPerParticleFloatInput m_flDistance; // 0x01D8 + bool m_bIncludeRadii; // 0x0348 + CPerParticleFloatInput m_flLifespanOverlap; // 0x0350 + ParticleAttributeIndex_t m_nFieldModify; // 0x04C0 + CPerParticleFloatInput m_flModify; // 0x04C8 + ParticleSetMethod_t m_nSetMethod; // 0x0638 + bool m_bUseNeighbor; // 0x063C +}; +class CVMixAudioMeter // soundsystem_lowlevel +{ + CUtlString m_name; // 0x0000 + CUtlString m_displayName; // 0x0008 +}; +class FeRigidColliderIndices_t // physicslib +{ + uint16 m_nTaperedCapsuleRigidIndex; // 0x0000 + uint16 m_nSphereRigidIndex; // 0x0002 + uint16 m_nBoxRigidIndex; // 0x0004 + uint16 m_nSDFRigidIndex; // 0x0006 + uint16 m_nCollisionPlaneIndex; // 0x0008 +}; +class CNmVelocityBasedSpeedScaleNode::CDefinition : public CNmSpeedScaleBaseNode::CDefinition // animlib +{ +}; +class RenderSkeletonBone_t // modellib +{ + CUtlString m_boneName; // 0x0000 + CUtlString m_parentName; // 0x0008 + matrix3x4_t m_invBindPose; // 0x0010 + SkeletonBoneBounds_t m_bbox; // 0x0040 + float32 m_flSphereRadius; // 0x0058 +}; +class C_OP_RampCPLinearRandom : public CParticleFunctionPreEmission // particles +{ + int32 m_nOutControlPointNumber; // 0x01D8 + Vector m_vecRateMin; // 0x01DC + Vector m_vecRateMax; // 0x01E8 +}; +class PhysShapeMarkup_t // modellib +{ + int32 m_nBodyInAggregate; // 0x0000 + int32 m_nShapeInBody; // 0x0004 + CGlobalSymbol m_sHitGroup; // 0x0008 +}; +class C_INIT_RemapParticleCountToNamedModelElementScalar : public C_INIT_RemapParticleCountToScalar // particles +{ + CStrongHandle< InfoForResourceTypeCModel > m_hModel; // 0x0208 + CUtlString m_outputMinName; // 0x0210 + CUtlString m_outputMaxName; // 0x0218 + bool m_bModelFromRenderer; // 0x0220 +}; +class C_INIT_RandomScalar : public CParticleFunctionInitializer // particles +{ + float32 m_flMin; // 0x01D8 + float32 m_flMax; // 0x01DC + float32 m_flExponent; // 0x01E0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01E4 +}; +class C_OP_InheritFromParentParticlesV2 : public CParticleFunctionOperator // particles +{ + CPerParticleFloatInput m_flScale; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x0340 + CPerParticleFloatInput m_nIncrement; // 0x0348 + bool m_bRandomDistribution; // 0x04B8 + bool m_bReverse; // 0x04B9 + MissingParentInheritBehavior_t m_nMissingParentBehavior; // 0x04BC + CPerParticleFloatInput m_flInterpolation; // 0x04C0 +}; +class PointDefinitionWithTimeValues_t : public PointDefinition_t // particles +{ + float32 m_flTimeDuration; // 0x0014 +}; +class CNmPoseNode::CDefinition : public CNmGraphNode::CDefinition // animlib +{ +}; +class CAnimGraphNetworkSettings : public CAnimGraphSettingsGroup // animgraphlib +{ + bool m_bNetworkingEnabled; // 0x0020 +}; +class MaterialGroup_t // modellib +{ + CUtlString m_name; // 0x0000 + CUtlVector< CStrongHandle< InfoForResourceTypeIMaterial2 > > m_materials; // 0x0008 +}; +class CNmAdditiveBlendTask : public CNmBlendTaskBase // animlib +{ +}; +class CFollowTargetUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + FollowTargetOpFixedSettings_t m_opFixedData; // 0x0070 + CAnimParamHandle m_hParameterPosition; // 0x0088 + CAnimParamHandle m_hParameterOrientation; // 0x008A +}; +class FeRodConstraint_t // physicslib +{ + uint16[2] nNode; // 0x0000 + float32 flMaxDist; // 0x0004 + float32 flMinDist; // 0x0008 + float32 flWeight0; // 0x000C + float32 flRelaxationFactor; // 0x0010 +}; +class CNmRootMotionData // animlib +{ + CUtlVector< CTransform > m_transforms; // 0x0000 + int32 m_nNumFrames; // 0x0018 + float32 m_flAverageLinearVelocity; // 0x001C + float32 m_flAverageAngularVelocityRadians; // 0x0020 + CTransform m_totalDelta; // 0x0030 +}; +class CBoneConstraintPoseSpaceMorph::Input_t // modellib +{ + Vector m_inputValue; // 0x0000 + CUtlVector< float32 > m_outputWeightList; // 0x0010 +}; +class CLeafUpdateNode : public CAnimUpdateNodeBase // animgraphlib +{ +}; +class PhysSoftbodyDesc_t // modellib +{ + CUtlVector< uint32 > m_ParticleBoneHash; // 0x0000 + CUtlVector< RnSoftbodyParticle_t > m_Particles; // 0x0018 + CUtlVector< RnSoftbodySpring_t > m_Springs; // 0x0030 + CUtlVector< RnSoftbodyCapsule_t > m_Capsules; // 0x0048 + CUtlVector< CTransform > m_InitPose; // 0x0060 + CUtlVector< CUtlString > m_ParticleBoneName; // 0x0078 +}; +class EntComponentInfo_t // entity2 +{ + char* m_pName; // 0x0000 + char* m_pCPPClassname; // 0x0008 + char* m_pNetworkDataReferencedDescription; // 0x0010 + char* m_pNetworkDataReferencedPtrPropDescription; // 0x0018 + int32 m_nRuntimeIndex; // 0x0020 + uint32 m_nFlags; // 0x0024 + CEntityComponentHelper* m_pBaseClassComponentHelper; // 0x0060 +}; +class InfoForResourceTypeCPanoramaLayout // resourcesystem +{ +}; +class CRelativeLocation // server +{ + RelativeLocationType_t m_Type; // 0x0018 + Vector m_vRelativeOffset; // 0x001C + VectorWS m_vWorldSpacePos; // 0x0028 + CHandle< CBaseEntity > m_hEntity; // 0x0034 +}; +class C_OP_RemapTransformToVelocity : public CParticleFunctionOperator // particles +{ + CParticleTransformInput m_TransformInput; // 0x01D0 +}; +class C_OP_RenderSprites : public CBaseRendererSource2 // particles +{ + CParticleCollectionRendererFloatInput m_nSequenceOverride; // 0x2DE8 + bool m_bSequenceNumbersAreRawSequenceIndices; // 0x2F58 + ParticleOrientationChoiceList_t m_nOrientationType; // 0x2F5C + int32 m_nOrientationControlPoint; // 0x2F60 + bool m_bUseYawWithNormalAligned; // 0x2F64 + CParticleCollectionRendererFloatInput m_flMinSize; // 0x2F68 + CParticleCollectionRendererFloatInput m_flMaxSize; // 0x30D8 + CParticleCollectionRendererFloatInput m_flAlphaAdjustWithSizeAdjust; // 0x3248 + CParticleCollectionRendererFloatInput m_flStartFadeSize; // 0x33B8 + CParticleCollectionRendererFloatInput m_flEndFadeSize; // 0x3528 + float32 m_flStartFadeDot; // 0x3698 + float32 m_flEndFadeDot; // 0x369C + bool m_bDistanceAlpha; // 0x36A0 + bool m_bSoftEdges; // 0x36A1 + float32 m_flEdgeSoftnessStart; // 0x36A4 + float32 m_flEdgeSoftnessEnd; // 0x36A8 + bool m_bOutline; // 0x36AC + Color m_OutlineColor; // 0x36AD + int32 m_nOutlineAlpha; // 0x36B4 + float32 m_flOutlineStart0; // 0x36B8 + float32 m_flOutlineStart1; // 0x36BC + float32 m_flOutlineEnd0; // 0x36C0 + float32 m_flOutlineEnd1; // 0x36C4 + ParticleLightingQuality_t m_nLightingMode; // 0x36C8 + CParticleCollectionRendererVecInput m_vecLightingOverride; // 0x36D0 + CParticleCollectionRendererFloatInput m_flLightingTessellation; // 0x3D88 + CParticleCollectionRendererFloatInput m_flLightingDirectionality; // 0x3EF8 + bool m_bParticleShadows; // 0x4068 + float32 m_flShadowDensity; // 0x406C + CReplicationParameters m_replicationParameters; // 0x4070 +}; +class CVMixControlOutput : public CVMixInputBase // soundsystem_lowlevel +{ + float32 m_flDefaultValue; // 0x0010 +}; +class CVMixConvolutionProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixConvolutionDesc_t m_desc; // 0x0020 +}; +class SkeletonAnimCapture_t // modellib +{ + CEntityIndex m_nEntIndex; // 0x0000 + CEntityIndex m_nEntParent; // 0x0004 + CUtlVector< CEntityIndex > m_ImportedCollision; // 0x0008 + CUtlString m_ModelName; // 0x0020 + CUtlString m_CaptureName; // 0x0028 + CUtlVector< SkeletonAnimCapture_t::Bone_t > m_ModelBindPose; // 0x0030 + CUtlVector< SkeletonAnimCapture_t::Bone_t > m_FeModelInitPose; // 0x0048 + int32 m_nFlexControllers; // 0x0060 + bool m_bPredicted; // 0x0064 + CUtlVector< SkeletonAnimCapture_t::Frame_t > m_Frames; // 0x00A8 +}; +class CMotionNodeSequence : public CMotionNode // animgraphlib +{ + CUtlVector< TagSpan_t > m_tags; // 0x0028 + HSequence m_hSequence; // 0x0040 + float32 m_flPlaybackSpeed; // 0x0044 +}; +class CNmControlParameterIDNode::CDefinition : public CNmIDValueNode::CDefinition // animlib +{ +}; +class CBtNodeComposite : public CBtNode // server +{ +}; +class CParticleFunction // particles +{ + CParticleCollectionFloatInput m_flOpStrength; // 0x0008 + ParticleEndcapMode_t m_nOpEndCapState; // 0x0178 + float32 m_flOpStartFadeInTime; // 0x017C + float32 m_flOpEndFadeInTime; // 0x0180 + float32 m_flOpStartFadeOutTime; // 0x0184 + float32 m_flOpEndFadeOutTime; // 0x0188 + float32 m_flOpFadeOscillatePeriod; // 0x018C + bool m_bNormalizeToStopTime; // 0x0190 + float32 m_flOpTimeOffsetMin; // 0x0194 + float32 m_flOpTimeOffsetMax; // 0x0198 + int32 m_nOpTimeOffsetSeed; // 0x019C + int32 m_nOpTimeScaleSeed; // 0x01A0 + float32 m_flOpTimeScaleMin; // 0x01A4 + float32 m_flOpTimeScaleMax; // 0x01A8 + bool m_bDisableOperator; // 0x01AE + CUtlString m_Notes; // 0x01B0 +}; +class C_OP_MoveToHitbox : public CParticleFunctionOperator // particles +{ + CParticleModelInput m_modelInput; // 0x01D0 + CParticleTransformInput m_transformInput; // 0x0230 + float32 m_flLifeTimeLerpStart; // 0x029C + float32 m_flLifeTimeLerpEnd; // 0x02A0 + float32 m_flPrevPosScale; // 0x02A4 + char[128] m_HitboxSetName; // 0x02A8 + bool m_bUseBones; // 0x0328 + HitboxLerpType_t m_nLerpType; // 0x032C + CPerParticleFloatInput m_flInterpolation; // 0x0330 +}; +class CSteamAudioBakedMaterialsData // steamaudio +{ + CSteamAudioProbeData m_probes; // 0x0000 + CUtlVector< uint32 > m_vecMaterialTokens; // 0x0008 + CUtlVector< float32 > m_vecMaterialWeights; // 0x0020 +}; +class CNmCachedPoseReadTask : public CNmPoseTask // animlib +{ +}; +class FootFixedSettings // animgraphlib +{ + TraceSettings_t m_traceSettings; // 0x0000 + VectorAligned m_vFootBaseBindPosePositionMS; // 0x0010 + float32 m_flFootBaseLength; // 0x0020 + float32 m_flMaxRotationLeft; // 0x0024 + float32 m_flMaxRotationRight; // 0x0028 + int32 m_footstepLandedTagIndex; // 0x002C + bool m_bEnableTracing; // 0x0030 + float32 m_flTraceAngleBlend; // 0x0034 + int32 m_nDisableTagIndex; // 0x0038 + int32 m_nFootIndex; // 0x003C +}; +class CAnimSequenceParams // animationsystem +{ + float32 m_flFadeInTime; // 0x0000 + float32 m_flFadeOutTime; // 0x0004 +}; +class CParticleSystemDefinition : public IParticleSystemDefinition // particles +{ + int32 m_nBehaviorVersion; // 0x0008 + CUtlVector< CParticleFunctionPreEmission* > m_PreEmissionOperators; // 0x0010 + CUtlVector< CParticleFunctionEmitter* > m_Emitters; // 0x0028 + CUtlVector< CParticleFunctionInitializer* > m_Initializers; // 0x0040 + CUtlVector< CParticleFunctionOperator* > m_Operators; // 0x0058 + CUtlVector< CParticleFunctionForce* > m_ForceGenerators; // 0x0070 + CUtlVector< CParticleFunctionConstraint* > m_Constraints; // 0x0088 + CUtlVector< CParticleFunctionRenderer* > m_Renderers; // 0x00A0 + CUtlVector< ParticleChildrenInfo_t > m_Children; // 0x00B8 + int32 m_nFirstMultipleOverride_BackwardCompat; // 0x0178 + int32 m_nInitialParticles; // 0x0258 + int32 m_nMaxParticles; // 0x025C + int32 m_nGroupID; // 0x0260 + Vector m_BoundingBoxMin; // 0x0264 + Vector m_BoundingBoxMax; // 0x0270 + float32 m_flDepthSortBias; // 0x027C + int32 m_nSortOverridePositionCP; // 0x0280 + bool m_bInfiniteBounds; // 0x0284 + bool m_bEnableNamedValues; // 0x0285 + CUtlString m_NamedValueDomain; // 0x0288 + CUtlVector< ParticleNamedValueSource_t* > m_NamedValueLocals; // 0x0290 + Color m_ConstantColor; // 0x02A8 + Vector m_ConstantNormal; // 0x02AC + float32 m_flConstantRadius; // 0x02B8 + float32 m_flConstantRotation; // 0x02BC + float32 m_flConstantRotationSpeed; // 0x02C0 + float32 m_flConstantLifespan; // 0x02C4 + int32 m_nConstantSequenceNumber; // 0x02C8 + int32 m_nConstantSequenceNumber1; // 0x02CC + int32 m_nSnapshotControlPoint; // 0x02D0 + CStrongHandle< InfoForResourceTypeIParticleSnapshot > m_hSnapshot; // 0x02D8 + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_pszCullReplacementName; // 0x02E0 + float32 m_flCullRadius; // 0x02E8 + float32 m_flCullFillCost; // 0x02EC + int32 m_nCullControlPoint; // 0x02F0 + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_hFallback; // 0x02F8 + int32 m_nFallbackMaxCount; // 0x0300 + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_hLowViolenceDef; // 0x0308 + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_hReferenceReplacement; // 0x0310 + float32 m_flPreSimulationTime; // 0x0318 + float32 m_flStopSimulationAfterTime; // 0x031C + float32 m_flMaximumTimeStep; // 0x0320 + float32 m_flMaximumSimTime; // 0x0324 + float32 m_flMinimumSimTime; // 0x0328 + float32 m_flMinimumTimeStep; // 0x032C + int32 m_nMinimumFrames; // 0x0330 + int32 m_nMinCPULevel; // 0x0334 + int32 m_nMinGPULevel; // 0x0338 + float32 m_flNoDrawTimeToGoToSleep; // 0x033C + float32 m_flMaxDrawDistance; // 0x0340 + float32 m_flStartFadeDistance; // 0x0344 + float32 m_flMaxCreationDistance; // 0x0348 + int32 m_nAggregationMinAvailableParticles; // 0x034C + float32 m_flAggregateRadius; // 0x0350 + bool m_bShouldBatch; // 0x0354 + bool m_bShouldHitboxesFallbackToRenderBounds; // 0x0355 + bool m_bShouldHitboxesFallbackToSnapshot; // 0x0356 + bool m_bShouldHitboxesFallbackToCollisionHulls; // 0x0357 + InheritableBoolType_t m_nViewModelEffect; // 0x0358 + bool m_bScreenSpaceEffect; // 0x035C + CUtlSymbolLarge m_pszTargetLayerID; // 0x0360 + int32 m_nSkipRenderControlPoint; // 0x0368 + int32 m_nAllowRenderControlPoint; // 0x036C + bool m_bShouldSort; // 0x0370 + CUtlVector< ParticleControlPointConfiguration_t > m_controlPointConfigurations; // 0x03B8 +}; +class C_INIT_InitVecCollection : public CParticleFunctionInitializer // particles +{ + CParticleCollectionVecInput m_InputValue; // 0x01D8 + ParticleAttributeIndex_t m_nOutputField; // 0x0890 +}; +class ExtraVertexStreamOverride_t : public BaseSceneObjectOverride_t // worldrenderer +{ + uint32 m_nSubSceneObject; // 0x0004 + uint32 m_nDrawCallIndex; // 0x0008 + MeshDrawPrimitiveFlags_t m_nAdditionalMeshDrawPrimitiveFlags; // 0x000C + CRenderBufferBinding m_extraBufferBinding; // 0x0010 +}; +class VMixAutoFilterDesc_t // soundsystem_lowlevel +{ + float32 m_flEnvelopeAmount; // 0x0000 + float32 m_flAttackTimeMS; // 0x0004 + float32 m_flReleaseTimeMS; // 0x0008 + VMixFilterDesc_t m_filter; // 0x000C + float32 m_flLFOAmount; // 0x001C + float32 m_flLFORate; // 0x0020 + float32 m_flPhase; // 0x0024 + VMixLFOShape_t m_nLFOShape; // 0x0028 +}; +class VMixDynamicsDesc_t // soundsystem_lowlevel +{ + float32 m_fldbGain; // 0x0000 + float32 m_fldbNoiseGateThreshold; // 0x0004 + float32 m_fldbCompressionThreshold; // 0x0008 + float32 m_fldbLimiterThreshold; // 0x000C + float32 m_fldbKneeWidth; // 0x0010 + float32 m_flRatio; // 0x0014 + float32 m_flLimiterRatio; // 0x0018 + float32 m_flAttackTimeMS; // 0x001C + float32 m_flReleaseTimeMS; // 0x0020 + float32 m_flRMSTimeMS; // 0x0024 + float32 m_flWetMix; // 0x0028 + bool m_bPeakMode; // 0x002C +}; +class CParticleAnimTag : public CAnimTagBase // animgraphlib +{ + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_hParticleSystem; // 0x0058 + CUtlString m_particleSystemName; // 0x0060 + CUtlString m_configName; // 0x0068 + bool m_bDetachFromOwner; // 0x0070 + bool m_bAggregate; // 0x0071 + bool m_bStopWhenTagEnds; // 0x0072 + bool m_bTagEndStopIsInstant; // 0x0073 + CUtlString m_attachmentName; // 0x0078 + ParticleAttachment_t m_attachmentType; // 0x0080 + CUtlString m_attachmentCP1Name; // 0x0088 + ParticleAttachment_t m_attachmentCP1Type; // 0x0090 +}; +class CNmSkeleton::SecondarySkeleton_t // animlib +{ + CGlobalSymbol m_attachToBoneID; // 0x0000 + CStrongHandle< InfoForResourceTypeCNmSkeleton > m_skeleton; // 0x0008 +}; +class SoundeventPathCornerPairNetworked_t // server +{ + Vector vP1; // 0x0000 + Vector vP2; // 0x000C + float32 flPathLengthSqr; // 0x0018 + float32 flP1Pct; // 0x001C + float32 flP2Pct; // 0x0020 +}; +class CInButtonState // server +{ + uint64[3] m_pButtonStates; // 0x0008 +}; +class Relationship_t // server +{ + Disposition_t disposition; // 0x0000 + int32 priority; // 0x0004 +}; +class C_INIT_CreateFromPlaneCache : public CParticleFunctionInitializer // particles +{ + Vector m_vecOffsetMin; // 0x01D8 + Vector m_vecOffsetMax; // 0x01E4 + bool m_bUseNormal; // 0x01F1 +}; +class PointDefinition_t // particles +{ + int32 m_nControlPoint; // 0x0000 + bool m_bLocalCoords; // 0x0004 + Vector m_vOffset; // 0x0008 +}; +class CNmSyncTrack // animlib +{ + CUtlLeanVectorFixedGrowable< CNmSyncTrack::Event_t, 10 > m_syncEvents; // 0x0000 + int32 m_nStartEventOffset; // 0x00A8 +}; +class CAnimInputDamping // animgraphlib +{ + DampingSpeedFunction m_speedFunction; // 0x0008 + float32 m_fSpeedScale; // 0x000C + float32 m_fFallingSpeedScale; // 0x0010 +}; +class CBoneConstraintBase // modellib +{ +}; +class InfoForResourceTypeIParticleSystemDefinition // resourcesystem +{ +}; +class CNmSnapWeaponNode::CDefinition : public CNmPassthroughNode::CDefinition // server +{ + int16 m_nEnabledNodeIdx; // 0x0018 + int16 m_nLockLeftHandNodeIdx; // 0x001A + float32 m_flBlendTimeSeconds; // 0x001C +}; +class CBaseRendererSource2 : public CParticleFunctionRenderer // particles +{ + CParticleCollectionRendererFloatInput m_flRadiusScale; // 0x0220 + CParticleCollectionRendererFloatInput m_flAlphaScale; // 0x0390 + CParticleCollectionRendererFloatInput m_flRollScale; // 0x0500 + ParticleAttributeIndex_t m_nAlpha2Field; // 0x0670 + CParticleCollectionRendererVecInput m_vecColorScale; // 0x0678 + ParticleColorBlendType_t m_nColorBlendType; // 0x0D30 + SpriteCardShaderType_t m_nShaderType; // 0x0D34 + CUtlString m_strShaderOverride; // 0x0D38 + CParticleCollectionRendererFloatInput m_flCenterXOffset; // 0x0D40 + CParticleCollectionRendererFloatInput m_flCenterYOffset; // 0x0EB0 + float32 m_flBumpStrength; // 0x1020 + ParticleSequenceCropOverride_t m_nCropTextureOverride; // 0x1024 + CUtlLeanVector< TextureGroup_t > m_vecTexturesInput; // 0x1028 + float32 m_flAnimationRate; // 0x1038 + AnimationType_t m_nAnimationType; // 0x103C + bool m_bAnimateInFPS; // 0x1040 + CParticleCollectionRendererFloatInput m_flMotionVectorScaleU; // 0x1048 + CParticleCollectionRendererFloatInput m_flMotionVectorScaleV; // 0x11B8 + CParticleCollectionRendererFloatInput m_flSelfIllumAmount; // 0x1328 + CParticleCollectionRendererFloatInput m_flDiffuseAmount; // 0x1498 + CParticleCollectionRendererFloatInput m_flDiffuseClamp; // 0x1608 + int32 m_nLightingControlPoint; // 0x1778 + ParticleOutputBlendMode_t m_nOutputBlendMode; // 0x177C + bool m_bGammaCorrectVertexColors; // 0x1780 + bool m_bSaturateColorPreAlphaBlend; // 0x1781 + CParticleCollectionRendererFloatInput m_flAddSelfAmount; // 0x1788 + CParticleCollectionRendererFloatInput m_flDesaturation; // 0x18F8 + CParticleCollectionRendererFloatInput m_flOverbrightFactor; // 0x1A68 + int32 m_nHSVShiftControlPoint; // 0x1BD8 + ParticleFogType_t m_nFogType; // 0x1BDC + CParticleCollectionRendererFloatInput m_flFogAmount; // 0x1BE0 + bool m_bTintByFOW; // 0x1D50 + bool m_bTintByGlobalLight; // 0x1D51 + SpriteCardPerParticleScale_t m_nPerParticleAlphaReference; // 0x1D54 + SpriteCardPerParticleScale_t m_nPerParticleAlphaRefWindow; // 0x1D58 + ParticleAlphaReferenceType_t m_nAlphaReferenceType; // 0x1D5C + CParticleCollectionRendererFloatInput m_flAlphaReferenceSoftness; // 0x1D60 + CParticleCollectionRendererFloatInput m_flSourceAlphaValueToMapToZero; // 0x1ED0 + CParticleCollectionRendererFloatInput m_flSourceAlphaValueToMapToOne; // 0x2040 + bool m_bRefract; // 0x21B0 + bool m_bRefractSolid; // 0x21B1 + CParticleCollectionRendererFloatInput m_flRefractAmount; // 0x21B8 + int32 m_nRefractBlurRadius; // 0x2328 + BlurFilterType_t m_nRefractBlurType; // 0x232C + bool m_bOnlyRenderInEffectsBloomPass; // 0x2330 + bool m_bOnlyRenderInEffectsWaterPass; // 0x2331 + bool m_bUseMixedResolutionRendering; // 0x2332 + bool m_bOnlyRenderInEffecsGameOverlay; // 0x2333 + char[128] m_stencilTestID; // 0x2334 + bool m_bStencilTestExclude; // 0x23B4 + char[128] m_stencilWriteID; // 0x23B5 + bool m_bWriteStencilOnDepthPass; // 0x2435 + bool m_bWriteStencilOnDepthFail; // 0x2436 + bool m_bReverseZBuffering; // 0x2437 + bool m_bDisableZBuffering; // 0x2438 + ParticleDepthFeatheringMode_t m_nFeatheringMode; // 0x243C + CParticleCollectionRendererFloatInput m_flFeatheringMinDist; // 0x2440 + CParticleCollectionRendererFloatInput m_flFeatheringMaxDist; // 0x25B0 + CParticleCollectionRendererFloatInput m_flFeatheringFilter; // 0x2720 + CParticleCollectionRendererFloatInput m_flFeatheringDepthMapFilter; // 0x2890 + CParticleCollectionRendererFloatInput m_flDepthBias; // 0x2A00 + ParticleSortingChoiceList_t m_nSortMethod; // 0x2B70 + bool m_bBlendFramesSeq0; // 0x2B74 + bool m_bMaxLuminanceBlendingSequence0; // 0x2B75 +}; +class C_OP_GameDecalRenderer : public CParticleFunctionRenderer // particles +{ + CGlobalSymbol m_sDecalGroupName; // 0x0220 + EventTypeSelection_t m_nEventType; // 0x0228 + ParticleCollisionMask_t m_nInteractionMask; // 0x0230 + ParticleCollisionGroup_t m_nCollisionGroup; // 0x0238 + CPerParticleVecInput m_vecStartPos; // 0x0240 + CPerParticleVecInput m_vecEndPos; // 0x08F8 + CPerParticleFloatInput m_flTraceBloat; // 0x0FB0 + CPerParticleFloatInput m_flDecalSize; // 0x1120 + CPerParticleFloatInput m_nDecalGroupIndex; // 0x1290 + CPerParticleFloatInput m_flDecalRotation; // 0x1400 + CPerParticleVecInput m_vModulationColor; // 0x1570 + bool m_bUseGameDefaultDecalSize; // 0x1C28 + bool m_bRandomDecalRotation; // 0x1C29 + bool m_bRandomlySelectDecalInGroup; // 0x1C2A + bool m_bNoDecalsOnOwner; // 0x1C2B + bool m_bVisualizeTraces; // 0x1C2C +}; +class CExpressionActionUpdater : public CAnimActionUpdater // animgraphlib +{ + CAnimParamHandle m_hParam; // 0x0018 + AnimParamType_t m_eParamType; // 0x001A + AnimScriptHandle m_hScript; // 0x001C +}; +class CNmClipNode::CDefinition : public CNmClipReferenceNode::CDefinition // animlib +{ + int16 m_nPlayInReverseValueNodeIdx; // 0x0010 + int16 m_nResetTimeValueNodeIdx; // 0x0012 + bool m_bSampleRootMotion; // 0x0014 + bool m_bAllowLooping; // 0x0015 + int16 m_nDataSlotIdx; // 0x0016 + CUtlVectorFixedGrowable< CGlobalSymbol, 2 > m_graphEvents; // 0x0018 + float32 m_flSpeedMultiplier; // 0x0040 + int32 m_nStartSyncEventOffset; // 0x0044 +}; +class CNmSpeedScaleBaseNode::CDefinition : public CNmPassthroughNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0018 + float32 m_flDefaultInputValue; // 0x001C +}; +class CStaticPoseCache // animgraphlib +{ + CUtlVector< CCachedPose > m_poses; // 0x0010 + int32 m_nBoneCount; // 0x0028 + int32 m_nMorphCount; // 0x002C +}; +class InfoForResourceTypeCSurfaceGraph // resourcesystem +{ +}; +class C_OP_RenderBlobs : public CParticleFunctionRenderer // particles +{ + CParticleCollectionRendererFloatInput m_cubeWidth; // 0x0220 + CParticleCollectionRendererFloatInput m_cutoffRadius; // 0x0390 + CParticleCollectionRendererFloatInput m_renderRadius; // 0x0500 + uint32 m_nVertexCountKb; // 0x0670 + uint32 m_nIndexCountKb; // 0x0674 + int32 m_nScaleCP; // 0x0678 + CUtlVector< MaterialVariable_t > m_MaterialVars; // 0x0680 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hMaterial; // 0x06B0 +}; +class CVMixStereoDelayProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ +}; +class PulseRuntimeDomainValueIndex_t // pulse_runtime_lib +{ + int16 m_Value; // 0x0000 +}; +class CAnimDataChannelDesc // animationsystem +{ + CBufferString m_szChannelClass; // 0x0000 + CBufferString m_szVariableName; // 0x0010 + int32 m_nFlags; // 0x0020 + int32 m_nType; // 0x0024 + CBufferString m_szGrouping; // 0x0028 + CBufferString m_szDescription; // 0x0038 + CUtlVector< CBufferString > m_szElementNameArray; // 0x0048 + CUtlVector< int32 > m_nElementIndexArray; // 0x0060 + CUtlVector< uint32 > m_nElementMaskArray; // 0x0078 +}; +class PostProcessingBloomParameters_t // materialsystem2 +{ + BloomBlendMode_t m_blendMode; // 0x0000 + float32 m_flBloomStrength; // 0x0004 + float32 m_flScreenBloomStrength; // 0x0008 + float32 m_flBlurBloomStrength; // 0x000C + float32 m_flBloomThreshold; // 0x0010 + float32 m_flBloomThresholdWidth; // 0x0014 + float32 m_flSkyboxBloomStrength; // 0x0018 + float32 m_flBloomStartValue; // 0x001C + float32 m_flComputeBloomStrength; // 0x0020 + float32 m_flComputeBloomThreshold; // 0x0024 + float32 m_flComputeBloomRadius; // 0x0028 + float32 m_flComputeBloomEffectsScale; // 0x002C + float32 m_flComputeBloomLensDirtStrength; // 0x0030 + float32 m_flComputeBloomLensDirtBlackLevel; // 0x0034 + float32[5] m_flBlurWeight; // 0x0038 + Vector[5] m_vBlurTint; // 0x004C +}; +class CCS2ChickenGraphController : public CAnimGraphControllerBase // server +{ + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_action; // 0x0090 + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_actionSubtype; // 0x00A8 + CAnimGraph2ParamAutoResetOptionalRef m_bActionReset; // 0x00C0 + CAnimGraph2ParamOptionalRef< float32 > m_idleVariation; // 0x00E0 + CAnimGraph2ParamOptionalRef< float32 > m_runVariation; // 0x00F8 + CAnimGraph2ParamOptionalRef< float32 > m_panicVariation; // 0x0110 + CAnimGraph2ParamOptionalRef< float32 > m_squatVariation; // 0x0128 + CAnimGraph2ParamOptionalRef< bool > m_bInWater; // 0x0140 + bool m_bHasActionCompletedEvent; // 0x0158 + bool m_bWaitingForCompletedEvent; // 0x0159 +}; +class C_OP_FadeAndKill : public CParticleFunctionOperator // particles +{ + float32 m_flStartFadeInTime; // 0x01D0 + float32 m_flEndFadeInTime; // 0x01D4 + float32 m_flStartFadeOutTime; // 0x01D8 + float32 m_flEndFadeOutTime; // 0x01DC + float32 m_flStartAlpha; // 0x01E0 + float32 m_flEndAlpha; // 0x01E4 + bool m_bForcePreserveParticleOrder; // 0x01E8 +}; +class C_INIT_CreateSpiralSphere : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPointNumber; // 0x01D8 + int32 m_nOverrideCP; // 0x01DC + int32 m_nDensity; // 0x01E0 + float32 m_flInitialRadius; // 0x01E4 + float32 m_flInitialSpeedMin; // 0x01E8 + float32 m_flInitialSpeedMax; // 0x01EC + bool m_bUseParticleCount; // 0x01F0 +}; +class C_OP_EnableChildrenFromParentParticleCount : public CParticleFunctionPreEmission // particles +{ + int32 m_nChildGroupID; // 0x01D8 + int32 m_nFirstChild; // 0x01DC + CParticleCollectionFloatInput m_nNumChildrenToEnable; // 0x01E0 + bool m_bDisableChildren; // 0x0350 + bool m_bPlayEndcapOnStop; // 0x0351 + bool m_bDestroyImmediately; // 0x0352 +}; +class CEntityComponentHelper // entity2 +{ + uint32 m_flags; // 0x0008 + EntComponentInfo_t* m_pInfo; // 0x0010 + int32 m_nPriority; // 0x0018 + CEntityComponentHelper* m_pNext; // 0x0020 +}; +class C_OP_UpdateLightSource : public CParticleFunctionOperator // particles +{ + Color m_vColorTint; // 0x01D0 + float32 m_flBrightnessScale; // 0x01D4 + float32 m_flRadiusScale; // 0x01D8 + float32 m_flMinimumLightingRadius; // 0x01DC + float32 m_flMaximumLightingRadius; // 0x01E0 + float32 m_flPositionDampingConstant; // 0x01E4 +}; +class CVMixControlMeter : public CVMixInputBase // soundsystem_lowlevel +{ + int32 m_nValueIndex; // 0x0010 +}; +class CNmClipReferenceNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ +}; +class CRootUpdateNode : public CUnaryUpdateNode // animgraphlib +{ +}; +class CNmDurationScaleNode::CDefinition : public CNmSpeedScaleBaseNode::CDefinition // animlib +{ +}; +class CAnimTagManagerUpdater // animgraphlib +{ + CUtlVector< CSmartPtr< CAnimTagBase > > m_tags; // 0x0038 +}; +class CPhysicsShake // server +{ + Vector m_force; // 0x0008 +}; +class C_OP_SpinUpdate : public CSpinUpdateBase // particles +{ +}; +class C_OP_MovementSkinnedPositionFromCPSnapshot : public CParticleFunctionOperator // particles +{ + int32 m_nSnapshotControlPointNumber; // 0x01D0 + int32 m_nControlPointNumber; // 0x01D4 + bool m_bRandom; // 0x01D8 + int32 m_nRandomSeed; // 0x01DC + bool m_bSetNormal; // 0x01E0 + bool m_bSetRadius; // 0x01E1 + SnapshotIndexType_t m_nIndexType; // 0x01E4 + CPerParticleFloatInput m_flReadIndex; // 0x01E8 + CParticleCollectionFloatInput m_flIncrement; // 0x0358 + CParticleCollectionFloatInput m_nFullLoopIncrement; // 0x04C8 + CParticleCollectionFloatInput m_nSnapShotStartPoint; // 0x0638 + CPerParticleFloatInput m_flInterpolation; // 0x07A8 +}; +class C_OP_OscillateScalar : public CParticleFunctionOperator // particles +{ + float32 m_RateMin; // 0x01D0 + float32 m_RateMax; // 0x01D4 + float32 m_FrequencyMin; // 0x01D8 + float32 m_FrequencyMax; // 0x01DC + ParticleAttributeIndex_t m_nField; // 0x01E0 + bool m_bProportional; // 0x01E4 + bool m_bProportionalOp; // 0x01E5 + float32 m_flStartTime_min; // 0x01E8 + float32 m_flStartTime_max; // 0x01EC + float32 m_flEndTime_min; // 0x01F0 + float32 m_flEndTime_max; // 0x01F4 + float32 m_flOscMult; // 0x01F8 + float32 m_flOscAdd; // 0x01FC +}; +class CVoiceContainerShapedNoise : public CVoiceContainerGenerator // soundsystem_voicecontainers +{ + bool m_bUseCurveForFrequency; // 0x00A8 + float32 m_flFrequency; // 0x00AC + CPiecewiseCurve m_frequencySweep; // 0x00B0 + bool m_bUseCurveForResonance; // 0x00F0 + float32 m_flResonance; // 0x00F4 + CPiecewiseCurve m_resonanceSweep; // 0x00F8 + bool m_bUseCurveForAmplitude; // 0x0138 + float32 m_flGainInDecibels; // 0x013C + CPiecewiseCurve m_gainSweep; // 0x0140 +}; +class FeNodeStrayBox_t // physicslib +{ + Vector vMin; // 0x0000 + uint32 nFlags; // 0x000C + Vector vMax; // 0x0010 + uint16[2] nNode; // 0x001C +}; +class FeSoftParent_t // physicslib +{ + int32 nParent; // 0x0000 + float32 flAlpha; // 0x0004 +}; +class CNmMaterialAttributeEvent : public CNmEvent // animlib +{ + CUtlString m_attributeName; // 0x0020 + CUtlStringToken m_attributeNameToken; // 0x0028 + CPiecewiseCurve m_x; // 0x0030 + CPiecewiseCurve m_y; // 0x0070 + CPiecewiseCurve m_z; // 0x00B0 + CPiecewiseCurve m_w; // 0x00F0 +}; +class CHandshakeAnimTagBase : public CAnimTagBase // animgraphlib +{ + bool m_bIsDisableTag; // 0x0050 +}; +class AutoRoomDoorwayPairs_t // server +{ + Vector vP1; // 0x0000 + Vector vP2; // 0x000C +}; +class C_OP_RemapCPtoScalar : public CParticleFunctionOperator // particles +{ + int32 m_nCPInput; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + int32 m_nField; // 0x01D8 + float32 m_flInputMin; // 0x01DC + float32 m_flInputMax; // 0x01E0 + float32 m_flOutputMin; // 0x01E4 + float32 m_flOutputMax; // 0x01E8 + float32 m_flStartTime; // 0x01EC + float32 m_flEndTime; // 0x01F0 + float32 m_flInterpRate; // 0x01F4 + ParticleSetMethod_t m_nSetMethod; // 0x01F8 +}; +class C_OP_PinParticleToCP : public CParticleFunctionOperator // particles +{ + int32 m_nControlPointNumber; // 0x01D0 + CParticleCollectionVecInput m_vecOffset; // 0x01D8 + bool m_bOffsetLocal; // 0x0890 + ParticleSelection_t m_nParticleSelection; // 0x0894 + CParticleCollectionFloatInput m_nParticleNumber; // 0x0898 + ParticlePinDistance_t m_nPinBreakType; // 0x0A08 + CParticleCollectionFloatInput m_flBreakDistance; // 0x0A10 + CParticleCollectionFloatInput m_flBreakSpeed; // 0x0B80 + CParticleCollectionFloatInput m_flAge; // 0x0CF0 + int32 m_nBreakControlPointNumber; // 0x0E60 + int32 m_nBreakControlPointNumber2; // 0x0E64 + CParticleCollectionFloatInput m_flBreakValue; // 0x0E68 + CPerParticleFloatInput m_flInterpolation; // 0x0FD8 + bool m_bRetainInitialVelocity; // 0x1148 +}; +class VMixFlangerDesc_t // soundsystem_lowlevel +{ + bool m_bPhaseInvert; // 0x0000 + float32 m_flGlideTime; // 0x0004 + float32 m_flDelay; // 0x0008 + float32 m_flOutputGain; // 0x000C + float32 m_flFeedbackGain; // 0x0010 + float32 m_flFeedforwardGain; // 0x0014 + float32 m_flModRate; // 0x0018 + float32 m_flModDepth; // 0x001C + bool m_bApplyAntialiasing; // 0x0020 +}; +class CModelConfigElement_UserPick : public CModelConfigElement // modellib +{ + CUtlVector< CUtlString > m_Choices; // 0x0048 +}; +class CFootFallAnimTag : public CAnimTagBase // animgraphlib +{ + FootFallTagFoot_t m_foot; // 0x0058 +}; +class SkeletonAnimCapture_t::Frame_t // modellib +{ + float32 m_flTime; // 0x0000 + SkeletonAnimCapture_t::FrameStamp_t m_Stamp; // 0x0004 + CTransform m_Transform; // 0x0020 + bool m_bTeleport; // 0x0040 + CUtlVector< CTransform > m_CompositeBones; // 0x0048 + CUtlVector< CTransform > m_SimStateBones; // 0x0060 + CUtlVector< CTransform > m_FeModelAnims; // 0x0078 + CUtlVector< VectorAligned > m_FeModelPos; // 0x0090 + CUtlVector< float32 > m_FlexControllerWeights; // 0x00A8 +}; +class IKTargetSettings_t // animgraphlib +{ + IKTargetSource m_TargetSource; // 0x0000 + IKBoneNameAndIndex_t m_Bone; // 0x0008 + AnimParamID m_AnimgraphParameterNamePosition; // 0x0018 + AnimParamID m_AnimgraphParameterNameOrientation; // 0x001C + IKTargetCoordinateSystem m_TargetCoordSystem; // 0x0020 +}; +class C_OP_NormalLock : public CParticleFunctionOperator // particles +{ + int32 m_nControlPointNumber; // 0x01D0 +}; +class C_INIT_RemapParticleCountToNamedModelBodyPartScalar : public C_INIT_RemapParticleCountToNamedModelElementScalar // particles +{ +}; +class C_OP_SetVariable : public CParticleFunctionPreEmission // particles +{ + CParticleVariableRef m_variableReference; // 0x01D8 + CParticleTransformInput m_transformInput; // 0x0228 + Vector m_positionOffset; // 0x0290 + QAngle m_rotationOffset; // 0x029C + CParticleCollectionVecInput m_vecInput; // 0x02A8 + CParticleCollectionFloatInput m_floatInput; // 0x0960 +}; +class RnFace_t // physicslib +{ + uint8 m_nEdge; // 0x0000 +}; +class CAnimUpdateSharedData // animgraphlib +{ + CUtlVector< CSmartPtr< CAnimUpdateNodeBase > > m_nodes; // 0x0010 + CUtlHashtable< CAnimNodePath, int32 > m_nodeIndexMap; // 0x0028 + CUtlVector< CSmartPtr< CAnimComponentUpdater > > m_components; // 0x0048 + CSmartPtr< CAnimParameterManagerUpdater > m_pParamListUpdater; // 0x0060 + CSmartPtr< CAnimTagManagerUpdater > m_pTagManagerUpdater; // 0x0068 + CSmartPtr< CAnimScriptManager > m_scriptManager; // 0x0070 + CAnimGraphSettingsManager m_settings; // 0x0078 + CSmartPtr< CStaticPoseCacheBuilder > m_pStaticPoseCache; // 0x00A8 + CSmartPtr< CAnimSkeleton > m_pSkeleton; // 0x00B0 + CAnimNodePath m_rootNodePath; // 0x00B8 +}; +class CRopeOverlapHit // server +{ + CHandle< CBaseEntity > m_hEntity; // 0x0000 + CUtlVector< int32 > m_vecOverlappingLinks; // 0x0008 +}; +class CNavVolumeVector : public CNavVolume // navlib +{ + bool m_bHasBeenPreFiltered; // 0x0080 +}; +class FeBandBendLimit_t // physicslib +{ + float32 flDistMin; // 0x0000 + float32 flDistMax; // 0x0004 + uint16[6] nNode; // 0x0008 +}; +class CMovementComponentUpdater : public CAnimComponentUpdater // animgraphlib +{ + CUtlVector< CSmartPtr< CAnimMotorUpdaterBase > > m_motors; // 0x0030 + CAnimInputDamping m_facingDamping; // 0x0048 + int32 m_nDefaultMotorIndex; // 0x0068 + float32 m_flDefaultRunSpeed; // 0x006C + bool m_bMoveVarsDisabled; // 0x0070 + bool m_bNetworkPath; // 0x0071 + bool m_bNetworkFacing; // 0x0072 + CAnimParamHandle[34] m_paramHandles; // 0x0073 +}; +class ScriptInfo_t // animgraphlib +{ + CUtlString m_code; // 0x0000 + CUtlVector< CAnimParamHandle > m_paramsModified; // 0x0008 + CUtlVector< int32 > m_proxyReadParams; // 0x0020 + CUtlVector< int32 > m_proxyWriteParams; // 0x0038 + AnimScriptType m_eScriptType; // 0x0050 +}; +class AnimationDecodeDebugDump_t // animationsystem +{ + AnimationProcessingType_t m_processingType; // 0x0000 + CUtlVector< AnimationDecodeDebugDumpElement_t > m_elems; // 0x0008 +}; +class CHintMessageQueue // server +{ + float32 m_tmMessageEnd; // 0x0000 + CUtlVector< CHintMessage* > m_messages; // 0x0008 + CBasePlayerController* m_pPlayerController; // 0x0020 +}; +class WaterWheelDrag_t // server +{ + float32 m_flFractionOfWheelSubmerged; // 0x0000 + float32 m_flWheelDrag; // 0x0004 +}; +class C_OP_LazyCullCompareFloat : public CParticleFunctionOperator // particles +{ + CPerParticleFloatInput m_flComparsion1; // 0x01D0 + CPerParticleFloatInput m_flComparsion2; // 0x0340 + CPerParticleFloatInput m_flCullTime; // 0x04B0 +}; +class C_INIT_GlobalScale : public CParticleFunctionInitializer // particles +{ + float32 m_flScale; // 0x01D8 + int32 m_nScaleControlPointNumber; // 0x01DC + int32 m_nControlPointNumber; // 0x01E0 + bool m_bScaleRadius; // 0x01E4 + bool m_bScalePosition; // 0x01E5 + bool m_bScaleVelocity; // 0x01E6 +}; +class RnWing_t // physicslib +{ + int32[3] m_nIndex; // 0x0000 +}; +class FeModelSelfCollisionLayer_t // physicslib +{ + CUtlString m_Name; // 0x0000 + CUtlVector< uint16 > m_Nodes; // 0x0008 + float32 m_flParentReaction; // 0x0020 + uint32 m_nFlags; // 0x0024 + uint32[4] m_nEndIdx; // 0x0028 +}; +class CNmTransitionNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ + int16 m_nTargetStateNodeIdx; // 0x0010 + int16 m_nDurationOverrideNodeIdx; // 0x0012 + int16 m_timeOffsetOverrideNodeIdx; // 0x0014 + int16 m_startBoneMaskNodeIdx; // 0x0016 + float32 m_flDuration; // 0x0018 + NmPercent_t m_boneMaskBlendInTimePercentage; // 0x001C + float32 m_flTimeOffset; // 0x0020 + CNmBitFlags m_transitionOptions; // 0x0024 + int16 m_targetSyncIDNodeIdx; // 0x0028 + NmEasingOperation_t m_blendWeightEasing; // 0x002A + NmRootMotionBlendMode_t m_rootMotionBlend; // 0x002B +}; +class CSeqCmdLayer // animationsystem +{ + int16 m_cmd; // 0x0000 + int16 m_nLocalReference; // 0x0002 + int16 m_nLocalBonemask; // 0x0004 + int16 m_nDstResult; // 0x0006 + int16 m_nSrcResult; // 0x0008 + bool m_bSpline; // 0x000A + float32 m_flVar1; // 0x000C + float32 m_flVar2; // 0x0010 + int16 m_nLineNumber; // 0x0014 +}; +class GameTick_t // entity2 +{ + int32 m_Value; // 0x0000 +}; +class CVoiceContainerLoopXFade : public CVoiceContainerBase // soundsystem_voicecontainers +{ + CSoundContainerReference m_sound; // 0x00A8 + float32 m_flLoopEnd; // 0x00C0 + float32 m_flLoopStart; // 0x00C4 + float32 m_flFadeOut; // 0x00C8 + float32 m_flFadeIn; // 0x00CC + bool m_bPlayHead; // 0x00D0 + bool m_bPlayTail; // 0x00D1 + bool m_bEqualPow; // 0x00D2 +}; +class CastSphereSATParams_t // physicslib +{ + Vector m_vRayStart; // 0x0000 + Vector m_vRayDelta; // 0x000C + float32 m_flRadius; // 0x0018 + float32 m_flMaxFraction; // 0x001C + float32 m_flScale; // 0x0020 + RnHull_t* m_pHull; // 0x0028 +}; +class FeAntiTunnelGroupBuild_t // physicslib +{ + uint32 m_nVertexMapHash; // 0x0000 + uint32 m_nCollisionMask; // 0x0004 +}; +class CFootstepLandedAnimTag : public CAnimTagBase // animgraphlib +{ + FootstepLandedFootSoundType_t m_FootstepType; // 0x0058 + CUtlString m_OverrideSoundName; // 0x0060 + CUtlString m_DebugAnimSourceString; // 0x0068 + CUtlString m_BoneName; // 0x0070 + FootstepJumpPhase_t m_footstepJumpPhase; // 0x0078 +}; +class CNmEntityAttributeIntEvent : public CNmEntityAttributeEventBase // animlib +{ + int32 m_nIntValue; // 0x0038 +}; +class EventSplitScreenStateChanged_t // engine2 +{ +}; +class CRandSimTimer : public CSimpleSimTimer // server +{ + float32 m_flMinInterval; // 0x0008 + float32 m_flMaxInterval; // 0x000C +}; +class CSteamAudioCompressedReverb // steamaudio +{ + int32 m_nChannels; // 0x0000 + int32 m_nBands; // 0x0004 + int32 m_nBins; // 0x0008 + int32 m_nProbes; // 0x000C + CUtlVector< int32 > m_vecNumSingularValues; // 0x0010 + CUtlVector< float32 > m_vecDictionary; // 0x0028 + CUtlVector< float32 > m_vecCompressedData; // 0x0040 + IPLCompressedEnergyFields m_pCompressedData; // 0x0058 +}; +class EventClientPollInput_t // engine2 +{ + EngineLoopState_t m_LoopState; // 0x0000 + float32 m_flRealTime; // 0x0028 +}; +class C_OP_RenderPoints : public CParticleFunctionRenderer // particles +{ + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hMaterial; // 0x0220 +}; +class C_OP_SetCPOrientationToPointAtCP : public CParticleFunctionPreEmission // particles +{ + int32 m_nInputCP; // 0x01D8 + int32 m_nOutputCP; // 0x01DC + CParticleCollectionFloatInput m_flInterpolation; // 0x01E0 + bool m_b2DOrientation; // 0x0350 + bool m_bAvoidSingularity; // 0x0351 + bool m_bPointAway; // 0x0352 +}; +class CVoiceContainerDefault : public CVoiceContainerBase // soundsystem_voicecontainers +{ +}; +class RnCapsuleDesc_t : public RnShapeDesc_t // physicslib +{ + RnCapsule_t m_Capsule; // 0x0018 +}; +class RnHull_t // physicslib +{ + Vector m_vCentroid; // 0x0000 + float32 m_flMaxAngularRadius; // 0x000C + AABB_t m_Bounds; // 0x0010 + Vector m_vOrthographicAreas; // 0x0028 + matrix3x4_t m_MassProperties; // 0x0034 + float32 m_flVolume; // 0x0064 + float32 m_flSurfaceArea; // 0x0068 + CUtlVector< RnVertex_t > m_Vertices; // 0x0070 + CUtlVector< Vector > m_VertexPositions; // 0x0088 + CUtlVector< RnHalfEdge_t > m_Edges; // 0x00A0 + CUtlVector< RnFace_t > m_Faces; // 0x00B8 + CUtlVector< RnPlane_t > m_FacePlanes; // 0x00D0 + uint32 m_nFlags; // 0x00E8 + CRegionSVM* m_pRegionSVM; // 0x00F0 +}; +class CNmBoneMaskBlendNode::CDefinition : public CNmBoneMaskValueNode::CDefinition // animlib +{ + int16 m_nSourceMaskNodeIdx; // 0x0010 + int16 m_nTargetMaskNodeIdx; // 0x0012 + int16 m_nBlendWeightValueNodeIdx; // 0x0014 +}; +class CFootPinningUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + FootPinningPoseOpFixedData_t m_poseOpFixedData; // 0x0078 + FootPinningTimingSource m_eTimingSource; // 0x00A8 + CUtlVector< CAnimParamHandle > m_params; // 0x00B0 + bool m_bResetChild; // 0x00C8 +}; +class EventClientPostSimulate_t : public EventSimulate_t // engine2 +{ +}; +class CAnimLocalHierarchy // animationsystem +{ + CBufferString m_sBone; // 0x0000 + CBufferString m_sNewParent; // 0x0010 + int32 m_nStartFrame; // 0x0020 + int32 m_nPeakFrame; // 0x0024 + int32 m_nTailFrame; // 0x0028 + int32 m_nEndFrame; // 0x002C +}; +class FeNodeBase_t // physicslib +{ + uint16 nNode; // 0x0000 + uint16[3] nDummy; // 0x0002 + uint16 nNodeX0; // 0x0008 + uint16 nNodeX1; // 0x000A + uint16 nNodeY0; // 0x000C + uint16 nNodeY1; // 0x000E + QuaternionStorage qAdjust; // 0x0010 +}; +class InfoForResourceTypeIVectorGraphic // resourcesystem +{ +}; +class CompMatPropertyMutator_t // compositematerialslib +{ + bool m_bEnabled; // 0x0000 + CompMatPropertyMutatorType_t m_nMutatorCommandType; // 0x0004 + CUtlString m_strInitWith_Container; // 0x0008 + CUtlString m_strCopyProperty_InputContainerSrc; // 0x0010 + CUtlString m_strCopyProperty_InputContainerProperty; // 0x0018 + CUtlString m_strCopyProperty_TargetProperty; // 0x0020 + CUtlString m_strRandomRollInputVars_SeedInputVar; // 0x0028 + CUtlVector< CUtlString > m_vecRandomRollInputVars_InputVarsToRoll; // 0x0030 + CUtlString m_strCopyMatchingKeys_InputContainerSrc; // 0x0048 + CUtlString m_strCopyKeysWithSuffix_InputContainerSrc; // 0x0050 + CUtlString m_strCopyKeysWithSuffix_FindSuffix; // 0x0058 + CUtlString m_strCopyKeysWithSuffix_ReplaceSuffix; // 0x0060 + CompositeMaterialInputLooseVariable_t m_nSetValue_Value; // 0x0068 + CUtlString m_strGenerateTexture_TargetParam; // 0x02F0 + CUtlString m_strGenerateTexture_InitialContainer; // 0x02F8 + int32 m_nResolution; // 0x0300 + bool m_bIsScratchTarget; // 0x0304 + CUtlString m_strCompressionFormat; // 0x0308 + bool m_bSplatDebugInfo; // 0x0310 + bool m_bCaptureInRenderDoc; // 0x0311 + CUtlVector< CompMatPropertyMutator_t > m_vecTexGenInstructions; // 0x0318 + CUtlVector< CompMatPropertyMutator_t > m_vecConditionalMutators; // 0x0330 + CUtlString m_strPopInputQueue_Container; // 0x0348 + CUtlString m_strDrawText_InputContainerSrc; // 0x0350 + CUtlString m_strDrawText_InputContainerProperty; // 0x0358 + Vector2D m_vecDrawText_Position; // 0x0360 + Color m_colDrawText_Color; // 0x0368 + CUtlString m_strDrawText_Font; // 0x0370 + CUtlVector< CompMatMutatorCondition_t > m_vecConditions; // 0x0378 +}; +class C_OP_SetControlPointToHand : public CParticleFunctionPreEmission // particles +{ + int32 m_nCP1; // 0x01D8 + int32 m_nHand; // 0x01DC + Vector m_vecCP1Pos; // 0x01E0 + bool m_bOrientToHand; // 0x01EC +}; +class CVMixSteamAudioPathingProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ +}; +class VertexPositionNormal_t // physicslib +{ + Vector m_vPosition; // 0x0000 + Vector m_vNormal; // 0x000C +}; +class FeFitWeight_t // physicslib +{ + float32 flWeight; // 0x0000 + uint16 nNode; // 0x0004 + uint16 nDummy; // 0x0006 +}; +class CIntAnimParameter : public CConcreteAnimParameter // animgraphlib +{ + int32 m_defaultValue; // 0x0080 + int32 m_minValue; // 0x0084 + int32 m_maxValue; // 0x0088 +}; +class CAnimUser // animationsystem +{ + CBufferString m_name; // 0x0000 + int32 m_nType; // 0x0010 +}; +class CAnimEventDefinition // animationsystem +{ + int32 m_nFrame; // 0x0008 + int32 m_nEndFrame; // 0x000C + float32 m_flCycle; // 0x0010 + float32 m_flDuration; // 0x0014 + KeyValues3 m_EventData; // 0x0018 + CBufferString m_sLegacyOptions; // 0x0028 + CGlobalSymbol m_sEventName; // 0x0038 +}; +class NmSyncTrackTimeRange_t // animlib +{ + NmSyncTrackTime_t m_startTime; // 0x0000 + NmSyncTrackTime_t m_endTime; // 0x0008 +}; +class RsDepthStencilStateDesc_t // rendersystemdx11 +{ + bitfield:1 m_bDepthTestEnable; // 0x0000 + bitfield:1 m_bDepthWriteEnable; // 0x0000 + RsComparison_t m_depthFunc; // 0x0001 + RsStencilStateDesc_t m_stencilState; // 0x0002 +}; +class InfoForResourceTypeCPhysAggregateData // resourcesystem +{ +}; +class CAnimComponentUpdater // animgraphlib +{ + CUtlString m_name; // 0x0018 + AnimComponentID m_id; // 0x0020 + AnimNodeNetworkMode m_networkMode; // 0x0024 + bool m_bStartEnabled; // 0x0028 +}; +class C_CommandContext // client +{ + bool needsprocessing; // 0x0000 + int32 command_number; // 0x00A0 +}; +class thinkfunc_t // server +{ + HSCRIPT m_hFn; // 0x0008 + CUtlStringToken m_nContext; // 0x0010 + GameTick_t m_nNextThinkTick; // 0x0014 + GameTick_t m_nLastThinkTick; // 0x0018 +}; +class C_OP_SetVectorAttributeToVectorExpression : public CParticleFunctionOperator // particles +{ + VectorExpressionType_t m_nExpression; // 0x01D0 + CPerParticleVecInput m_vInput1; // 0x01D8 + CPerParticleVecInput m_vInput2; // 0x0890 + CPerParticleFloatInput m_flLerp; // 0x0F48 + ParticleAttributeIndex_t m_nOutputField; // 0x10B8 + ParticleSetMethod_t m_nSetMethod; // 0x10BC + bool m_bNormalizedOutput; // 0x10C0 +}; +class EntityKeyValueData_t // worldrenderer +{ + CUtlVector< EntityIOConnectionData_t > m_connections; // 0x0008 + CUtlBinaryBlock m_keyValuesData; // 0x0020 +}; +class CVoiceContainerStaticAdditiveSynth::CHarmonic // soundsystem_voicecontainers +{ + EWaveform m_nWaveform; // 0x0000 + EMidiNote m_nFundamental; // 0x0001 + int32 m_nOctave; // 0x0004 + float32 m_flCents; // 0x0008 + float32 m_flPhase; // 0x000C + CPiecewiseCurve m_curve; // 0x0010 + CVoiceContainerStaticAdditiveSynth::CGainScalePerInstance m_volumeScaling; // 0x0050 +}; +class PhysicsParticleId_t // physicslib +{ + uint32 m_Value; // 0x0000 +}; +class CNmParameterizedBlendNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ + CUtlVectorFixedGrowable< int16, 5 > m_sourceNodeIndices; // 0x0010 + int16 m_nInputParameterValueNodeIdx; // 0x0038 + bool m_bAllowLooping; // 0x003A +}; +class CAnimGraphModelBinding // animgraphlib +{ + CUtlString m_modelName; // 0x0008 + CSmartPtr< CAnimUpdateSharedData > m_pSharedData; // 0x0010 +}; +class CAI_ExpresserWithFollowup : public CAI_Expresser // server +{ +}; +class C_INIT_VelocityRandom : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPointNumber; // 0x01D8 + CPerParticleFloatInput m_fSpeedMin; // 0x01E0 + CPerParticleFloatInput m_fSpeedMax; // 0x0350 + CPerParticleVecInput m_LocalCoordinateSystemSpeedMin; // 0x04C0 + CPerParticleVecInput m_LocalCoordinateSystemSpeedMax; // 0x0B78 + bool m_bIgnoreDT; // 0x1230 + CRandomNumberGeneratorParameters m_randomnessParameters; // 0x1234 +}; +class C_OP_CylindricalDistanceToTransform : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + CPerParticleFloatInput m_flInputMin; // 0x01D8 + CPerParticleFloatInput m_flInputMax; // 0x0348 + CPerParticleFloatInput m_flOutputMin; // 0x04B8 + CPerParticleFloatInput m_flOutputMax; // 0x0628 + CParticleTransformInput m_TransformStart; // 0x0798 + CParticleTransformInput m_TransformEnd; // 0x0800 + ParticleSetMethod_t m_nSetMethod; // 0x0868 + bool m_bActiveRange; // 0x086C + bool m_bAdditive; // 0x086D + bool m_bCapsule; // 0x086E +}; +class C_OP_SetControlPointRotation : public CParticleFunctionPreEmission // particles +{ + CParticleCollectionVecInput m_vecRotAxis; // 0x01D8 + CParticleCollectionFloatInput m_flRotRate; // 0x0890 + int32 m_nCP; // 0x0A00 + int32 m_nLocalCP; // 0x0A04 +}; +class CAnimationGraphVisualizerLine : public CAnimationGraphVisualizerPrimitiveBase // animgraphlib +{ + VectorAligned m_vWsPositionStart; // 0x0040 + VectorAligned m_vWsPositionEnd; // 0x0050 + Color m_Color; // 0x0060 +}; +class CVMixPannerProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixPannerDesc_t m_desc; // 0x0020 +}; +class CTaskStatusAnimTag : public CAnimTagBase // animgraphlib +{ +}; +class CMotionMatchingUpdateNode : public CLeafUpdateNode // animgraphlib +{ + CMotionDataSet m_dataSet; // 0x0058 + CUtlVector< CSmartPtr< CMotionMetricEvaluator > > m_metrics; // 0x0078 + CUtlVector< float32 > m_weights; // 0x0090 + bool m_bSearchEveryTick; // 0x00E0 + float32 m_flSearchInterval; // 0x00E4 + bool m_bSearchWhenClipEnds; // 0x00E8 + bool m_bSearchWhenGoalChanges; // 0x00E9 + CBlendCurve m_blendCurve; // 0x00EC + float32 m_flSampleRate; // 0x00F4 + float32 m_flBlendTime; // 0x00F8 + bool m_bLockClipWhenWaning; // 0x00FC + float32 m_flSelectionThreshold; // 0x0100 + float32 m_flReselectionTimeWindow; // 0x0104 + bool m_bEnableRotationCorrection; // 0x0108 + bool m_bGoalAssist; // 0x0109 + float32 m_flGoalAssistDistance; // 0x010C + float32 m_flGoalAssistTolerance; // 0x0110 + CAnimInputDamping m_distanceScale_Damping; // 0x0118 + float32 m_flDistanceScale_OuterRadius; // 0x0130 + float32 m_flDistanceScale_InnerRadius; // 0x0134 + float32 m_flDistanceScale_MaxScale; // 0x0138 + float32 m_flDistanceScale_MinScale; // 0x013C + bool m_bEnableDistanceScaling; // 0x0140 +}; +class VMapResourceData_t // worldrenderer +{ +}; +class CNmFloatAngleMathNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + CNmFloatAngleMathNode::Operation_t m_operation; // 0x0012 +}; +class CNmBlendTaskBase : public CNmPoseTask // animlib +{ +}; +class AimCameraOpFixedSettings_t // animgraphlib +{ + int32 m_nChainIndex; // 0x0000 + int32 m_nCameraJointIndex; // 0x0004 + int32 m_nPelvisJointIndex; // 0x0008 + int32 m_nClavicleLeftJointIndex; // 0x000C + int32 m_nClavicleRightJointIndex; // 0x0010 + int32 m_nDepenetrationJointIndex; // 0x0014 + CUtlVector< int32 > m_propJoints; // 0x0018 +}; +class SheetSequenceIntegerId_t // rendersystemdx11 +{ + uint32 m_Value; // 0x0000 +}; +class CGameScriptedMoveData // server +{ + Vector m_vAccumulatedRootMotion; // 0x0000 + QAngle m_angAccumulatedRootMotionRotation; // 0x000C + VectorWS m_vSrc; // 0x0018 + QAngle m_angSrc; // 0x0024 + QAngle m_angCurrent; // 0x0030 + float32 m_flLockedSpeed; // 0x003C + float32 m_flAngRate; // 0x0040 + float32 m_flDuration; // 0x0044 + GameTime_t m_flStartTime; // 0x0048 + bool m_bActive; // 0x004C + bool m_bTeleportOnEnd; // 0x004D + bool m_bIgnoreRotation; // 0x004E + bool m_bSuccess; // 0x004F + ForcedCrouchState_t m_nForcedCrouchState; // 0x0050 + bool m_bIgnoreCollisions; // 0x0054 + Vector m_vDest; // 0x0058 + QAngle m_angDst; // 0x0064 + CHandle< CBaseEntity > m_hDestEntity; // 0x0070 +}; +class C_OP_PlaneCull : public CParticleFunctionOperator // particles +{ + int32 m_nPlaneControlPoint; // 0x01D0 + CParticleCollectionVecInput m_vecPlaneDirection; // 0x01D8 + bool m_bLocalSpace; // 0x0890 + float32 m_flPlaneOffset; // 0x0894 +}; +class C_OP_SetControlPointsToModelParticles : public CParticleFunctionOperator // particles +{ + char[128] m_HitboxSetName; // 0x01D0 + char[128] m_AttachmentName; // 0x0250 + int32 m_nFirstControlPoint; // 0x02D0 + int32 m_nNumControlPoints; // 0x02D4 + int32 m_nFirstSourcePoint; // 0x02D8 + bool m_bSkin; // 0x02DC + bool m_bAttachment; // 0x02DD +}; +class C_INIT_RemapScalarToVector : public CParticleFunctionInitializer // particles +{ + ParticleAttributeIndex_t m_nFieldInput; // 0x01D8 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01DC + float32 m_flInputMin; // 0x01E0 + float32 m_flInputMax; // 0x01E4 + Vector m_vecOutputMin; // 0x01E8 + Vector m_vecOutputMax; // 0x01F4 + float32 m_flStartTime; // 0x0200 + float32 m_flEndTime; // 0x0204 + ParticleSetMethod_t m_nSetMethod; // 0x0208 + int32 m_nControlPointNumber; // 0x020C + bool m_bLocalCoords; // 0x0210 + float32 m_flRemapBias; // 0x0214 +}; +class CNmFollowBoneNode::CDefinition : public CNmPassthroughNode::CDefinition // animlib +{ + CGlobalSymbol m_bone; // 0x0018 + CGlobalSymbol m_followTargetBone; // 0x0020 + int16 m_nEnabledNodeIdx; // 0x0028 + NmFollowBoneMode_t m_mode; // 0x002A +}; +class CNmControlParameterVectorNode::CDefinition : public CNmVectorValueNode::CDefinition // animlib +{ +}; +class CHitBox // modellib +{ + CUtlString m_name; // 0x0000 + CUtlString m_sSurfaceProperty; // 0x0008 + CUtlString m_sBoneName; // 0x0010 + Vector m_vMinBounds; // 0x0018 + Vector m_vMaxBounds; // 0x0024 + float32 m_flShapeRadius; // 0x0030 + uint32 m_nBoneNameHash; // 0x0034 + int32 m_nGroupId; // 0x0038 + uint8 m_nShapeType; // 0x003C + bool m_bTranslationOnly; // 0x003D + uint32 m_CRC; // 0x0040 + Color m_cRenderColor; // 0x0044 + uint16 m_nHitBoxIndex; // 0x0048 +}; +class CMovementHandshakeAnimTag : public CHandshakeAnimTagBase // animgraphlib +{ +}; +class RsRasterizerStateDesc_t // rendersystemdx11 +{ + RsFillMode_t m_nFillMode; // 0x0000 + RsCullMode_t m_nCullMode; // 0x0001 + bool m_bDepthClipEnable; // 0x0002 + bool m_bMultisampleEnable; // 0x0003 + int32 m_nDepthBias; // 0x0004 + float32 m_flDepthBiasClamp; // 0x0008 + float32 m_flSlopeScaledDepthBias; // 0x000C +}; +class PackedAABB_t // mathlib_extended +{ + uint32 m_nPackedMin; // 0x0000 + uint32 m_nPackedMax; // 0x0004 +}; +class InfoForResourceTypeCVoiceContainerBase // resourcesystem +{ +}; +class C_OP_RampScalarSplineSimple : public CParticleFunctionOperator // particles +{ + float32 m_Rate; // 0x01D0 + float32 m_flStartTime; // 0x01D4 + float32 m_flEndTime; // 0x01D8 + ParticleAttributeIndex_t m_nField; // 0x0200 + bool m_bEaseOut; // 0x0204 +}; +class Dop26_t // physicslib +{ + float32[26] m_flSupport; // 0x0000 +}; +class PulseRuntimeOutputIndex_t // pulse_runtime_lib +{ + int32 m_Value; // 0x0000 +}; +class CRemapValueComponentUpdater : public CAnimComponentUpdater // animgraphlib +{ + CUtlVector< CRemapValueUpdateItem > m_items; // 0x0030 +}; +class CNmBoneMaskSelectorNode::CDefinition : public CNmBoneMaskValueNode::CDefinition // animlib +{ + int16 m_defaultMaskNodeIdx; // 0x0010 + int16 m_parameterValueNodeIdx; // 0x0012 + bool m_bSwitchDynamically; // 0x0014 + CUtlVectorFixedGrowable< int16, 7 > m_maskNodeIndices; // 0x0018 + CUtlVectorFixedGrowable< CGlobalSymbol, 7 > m_parameterValues; // 0x0040 + float32 m_flBlendTimeSeconds; // 0x0090 +}; +class InfoForResourceTypeCNmGraphDefinition // resourcesystem +{ +}; +class C_INIT_CreatePhyllotaxis : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPointNumber; // 0x01D8 + int32 m_nScaleCP; // 0x01DC + int32 m_nComponent; // 0x01E0 + float32 m_fRadCentCore; // 0x01E4 + float32 m_fRadPerPoint; // 0x01E8 + float32 m_fRadPerPointTo; // 0x01EC + float32 m_fpointAngle; // 0x01F0 + float32 m_fsizeOverall; // 0x01F4 + float32 m_fRadBias; // 0x01F8 + float32 m_fMinRad; // 0x01FC + float32 m_fDistBias; // 0x0200 + bool m_bUseLocalCoords; // 0x0204 + bool m_bUseWithContEmit; // 0x0205 + bool m_bUseOrigRadius; // 0x0206 +}; +class C_INIT_AddVectorToVector : public CParticleFunctionInitializer // particles +{ + Vector m_vecScale; // 0x01D8 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01E4 + ParticleAttributeIndex_t m_nFieldInput; // 0x01E8 + Vector m_vOffsetMin; // 0x01EC + Vector m_vOffsetMax; // 0x01F8 + CRandomNumberGeneratorParameters m_randomnessParameters; // 0x0204 +}; +class C_OP_RestartAfterDuration : public CParticleFunctionOperator // particles +{ + float32 m_flDurationMin; // 0x01D0 + float32 m_flDurationMax; // 0x01D4 + int32 m_nCP; // 0x01D8 + int32 m_nCPField; // 0x01DC + int32 m_nChildGroupID; // 0x01E0 + bool m_bOnlyChildren; // 0x01E4 +}; +class C_INIT_InitVec : public CParticleFunctionInitializer // particles +{ + CPerParticleVecInput m_InputValue; // 0x01D8 + ParticleAttributeIndex_t m_nOutputField; // 0x0890 + ParticleSetMethod_t m_nSetMethod; // 0x0894 + bool m_bNormalizedOutput; // 0x0898 + bool m_bWritePreviousPosition; // 0x0899 +}; +class vphysics_save_cphysicsbody_t : public RnBodyDesc_t // vphysics2 +{ + uint64 m_nOldPointer; // 0x00E0 +}; +class CRangeFloat // tier2 +{ + float32[2] m_pValue; // 0x0000 +}; +class C_OP_RemapNamedModelMeshGroupOnceTimed : public C_OP_RemapNamedModelElementOnceTimed // particles +{ +}; +class C_OP_RemapTransformOrientationToYaw : public CParticleFunctionOperator // particles +{ + CParticleTransformInput m_TransformInput; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x0238 + float32 m_flRotOffset; // 0x023C + float32 m_flSpinStrength; // 0x0240 +}; +class RnHullDesc_t : public RnShapeDesc_t // physicslib +{ + RnHull_t m_Hull; // 0x0018 +}; +class CAnimGraphSettingsGroup // animgraphlib +{ +}; +class CActionComponentUpdater : public CAnimComponentUpdater // animgraphlib +{ + CUtlVector< CSmartPtr< CAnimActionUpdater > > m_actions; // 0x0030 +}; +class CNmBlend1DNode::CDefinition : public CNmParameterizedBlendNode::CDefinition // animlib +{ + CNmParameterizedBlendNode::Parameterization_t m_parameterization; // 0x0040 +}; +class EventClientProcessNetworking_t // engine2 +{ + int32 m_nTickCount; // 0x0000 +}; +class InfoForResourceTypeCTextureBase // resourcesystem +{ +}; +class IRagdoll // server +{ +}; +class MaterialParamFloat_t : public MaterialParam_t // materialsystem2 +{ + float32 m_flValue; // 0x0008 +}; +class IEconItemInterface // server +{ +}; +class CDSPMixgroupModifier // soundsystem +{ + CUtlString m_mixgroup; // 0x0000 + float32 m_flModifier; // 0x0008 + float32 m_flModifierMin; // 0x000C + float32 m_flSourceModifier; // 0x0010 + float32 m_flSourceModifierMin; // 0x0014 + float32 m_flListenerReverbModifierWhenSourceReverbIsActive; // 0x0018 +}; +class CVMixImpulseResponseInput : public CVMixInputBase // soundsystem_lowlevel +{ +}; +class VPhysXJoint_t // modellib +{ + uint16 m_nType; // 0x0000 + uint16 m_nBody1; // 0x0002 + uint16 m_nBody2; // 0x0004 + uint16 m_nFlags; // 0x0006 + CTransform m_Frame1; // 0x0010 + CTransform m_Frame2; // 0x0030 + bool m_bEnableCollision; // 0x0050 + bool m_bIsLinearConstraintDisabled; // 0x0051 + bool m_bIsAngularConstraintDisabled; // 0x0052 + bool m_bEnableLinearLimit; // 0x0053 + VPhysXRange_t m_LinearLimit; // 0x0054 + bool m_bEnableLinearMotor; // 0x005C + Vector m_vLinearTargetVelocity; // 0x0060 + float32 m_flMaxForce; // 0x006C + bool m_bEnableSwingLimit; // 0x0070 + VPhysXRange_t m_SwingLimit; // 0x0074 + bool m_bEnableTwistLimit; // 0x007C + VPhysXRange_t m_TwistLimit; // 0x0080 + bool m_bEnableAngularMotor; // 0x0088 + Vector m_vAngularTargetVelocity; // 0x008C + float32 m_flMaxTorque; // 0x0098 + float32 m_flLinearFrequency; // 0x009C + float32 m_flLinearDampingRatio; // 0x00A0 + float32 m_flAngularFrequency; // 0x00A4 + float32 m_flAngularDampingRatio; // 0x00A8 + float32 m_flFriction; // 0x00AC + float32 m_flElasticity; // 0x00B0 + float32 m_flElasticDamping; // 0x00B4 + float32 m_flPlasticity; // 0x00B8 + CUtlString m_Tag; // 0x00C0 +}; +class CStopwatchBase : public CSimpleSimTimer // server +{ + bool m_fIsRunning; // 0x0008 +}; +class CNmIKRig // animlib +{ + CStrongHandle< InfoForResourceTypeCNmSkeleton > m_skeleton; // 0x0000 + CUtlVector< CNmIKBody > m_vecBodies; // 0x0008 + CUtlVector< CNmIKJoint > m_vecJoints; // 0x0020 +}; +class CPlayerInputAnimMotorUpdater : public CAnimMotorUpdaterBase // animgraphlib +{ + CUtlVector< float32 > m_sampleTimes; // 0x0020 + float32 m_flSpringConstant; // 0x003C + float32 m_flAnticipationDistance; // 0x0040 + CAnimParamHandle m_hAnticipationPosParam; // 0x0044 + CAnimParamHandle m_hAnticipationHeadingParam; // 0x0046 + bool m_bUseAcceleration; // 0x0048 +}; +class CParticleProperty // particleslib +{ +}; +class ControlPointReference_t // particles +{ + int32 m_controlPointNameString; // 0x0000 + Vector m_vOffsetFromControlPoint; // 0x0004 + bool m_bOffsetInLocalSpace; // 0x0010 +}; +class C_OP_LockToPointList : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + CUtlVector< PointDefinition_t > m_pointList; // 0x01D8 + bool m_bPlaceAlongPath; // 0x01F0 + bool m_bClosedLoop; // 0x01F1 + int32 m_nNumPointsAlongPath; // 0x01F4 +}; +class CVSound // soundsystem_voicecontainers +{ + int32 m_nRate; // 0x0000 + CVSoundFormat_t m_nFormat; // 0x0004 + uint32 m_nChannels; // 0x0008 + int32 m_nLoopStart; // 0x000C + uint32 m_nSampleCount; // 0x0010 + float32 m_flDuration; // 0x0014 + CUtlVector< CAudioSentence > m_Sentences; // 0x0018 + uint32 m_nStreamingSize; // 0x0030 + CUtlVector< int32 > m_nSeekTable; // 0x0038 + int32 m_nLoopEnd; // 0x0050 + CUtlBinaryBlock m_encodedHeader; // 0x0058 +}; +class FeSimdQuad_t // physicslib +{ + uint16[4][4] nNode; // 0x0000 + fltx4 f4Slack; // 0x0020 + FourVectors[4] vShape; // 0x0030 + fltx4[4] f4Weights; // 0x00F0 +}; +class CNmSelectorNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ + CUtlLeanVectorFixedGrowable< int16, 5 > m_optionNodeIndices; // 0x0010 + CUtlLeanVectorFixedGrowable< int16, 5 > m_conditionNodeIndices; // 0x0028 +}; +class CNmFloatMathNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdxA; // 0x0010 + int16 m_nInputValueNodeIdxB; // 0x0012 + bool m_bReturnAbsoluteResult; // 0x0014 + bool m_bReturnNegatedResult; // 0x0015 + CNmFloatMathNode::Operator_t m_operator; // 0x0016 + float32 m_flValueB; // 0x0018 +}; +class CVPhysXSurfacePropertiesList // modellib +{ + CUtlVector< CPhysSurfaceProperties* > m_surfacePropertiesList; // 0x0000 +}; +class EventAdvanceTick_t : public EventSimulate_t // engine2 +{ + int32 m_nCurrentTick; // 0x0030 + int32 m_nCurrentTickThisFrame; // 0x0034 + int32 m_nTotalTicksThisFrame; // 0x0038 + int32 m_nTotalTicks; // 0x003C +}; +class CNmEventConsumerSound : public CNmEventConsumer // server +{ +}; +class C_OP_OscillateVectorSimple : public CParticleFunctionOperator // particles +{ + Vector m_Rate; // 0x01D0 + Vector m_Frequency; // 0x01DC + ParticleAttributeIndex_t m_nField; // 0x01E8 + float32 m_flOscMult; // 0x01EC + float32 m_flOscAdd; // 0x01F0 + bool m_bOffset; // 0x01F4 +}; +class C_OP_Spin : public CGeneralSpin // particles +{ +}; +class C_OP_AlphaDecay : public CParticleFunctionOperator // particles +{ + float32 m_flMinAlpha; // 0x01D0 +}; +class C_INIT_CreateParticleImpulse : public CParticleFunctionInitializer // particles +{ + CPerParticleFloatInput m_InputRadius; // 0x01D8 + CPerParticleFloatInput m_InputMagnitude; // 0x0348 + ParticleFalloffFunction_t m_nFalloffFunction; // 0x04B8 + CPerParticleFloatInput m_InputFalloffExp; // 0x04C0 + ParticleImpulseType_t m_nImpulseType; // 0x0630 +}; +class C_INIT_RemapInitialTransformDirectionToRotation : public CParticleFunctionInitializer // particles +{ + CParticleTransformInput m_TransformInput; // 0x01D8 + ParticleAttributeIndex_t m_nFieldOutput; // 0x0240 + float32 m_flOffsetRot; // 0x0244 + int32 m_nComponent; // 0x0248 +}; +class C_OP_WorldCollideConstraint : public CParticleFunctionConstraint // particles +{ +}; +class BaseSceneObjectOverride_t // worldrenderer +{ + uint32 m_nSceneObjectIndex; // 0x0000 +}; +class OldFeEdge_t // physicslib +{ + float32[3] m_flK; // 0x0000 + float32 invA; // 0x000C + float32 t; // 0x0010 + float32 flThetaRelaxed; // 0x0014 + float32 flThetaFactor; // 0x0018 + float32 c01; // 0x001C + float32 c02; // 0x0020 + float32 c03; // 0x0024 + float32 c04; // 0x0028 + float32 flAxialModelDist; // 0x002C + float32[4] flAxialModelWeights; // 0x0030 + uint16[4] m_nNode; // 0x0040 +}; +class PermModelExtPart_t // modellib +{ + CTransform m_Transform; // 0x0000 + CUtlString m_Name; // 0x0020 + int32 m_nParent; // 0x0028 + CStrongHandle< InfoForResourceTypeCModel > m_refModel; // 0x0030 +}; +class MotionDBIndex // animgraphlib +{ + uint32 m_nIndex; // 0x0000 +}; +class CExampleSchemaVData_PolymorphicDerivedA : public CExampleSchemaVData_PolymorphicBase // resourcefile +{ + int32 m_nDerivedA; // 0x0010 +}; +class EmptyTestScript : public CAnimScriptBase // host +{ + CAnimScriptParam< float32 > m_hTest; // 0x0010 +}; +class C_OP_RenderLights : public C_OP_RenderPoints // particles +{ + float32 m_flAnimationRate; // 0x0228 + AnimationType_t m_nAnimationType; // 0x022C + bool m_bAnimateInFPS; // 0x0230 + float32 m_flMinSize; // 0x0234 + float32 m_flMaxSize; // 0x0238 + float32 m_flStartFadeSize; // 0x023C + float32 m_flEndFadeSize; // 0x0240 +}; +class C_OP_StopAfterCPDuration : public CParticleFunctionPreEmission // particles +{ + CParticleCollectionFloatInput m_flDuration; // 0x01D8 + bool m_bDestroyImmediately; // 0x0348 + bool m_bPlayEndCap; // 0x0349 +}; +class C_INIT_Orient2DRelToCP : public CParticleFunctionInitializer // particles +{ + int32 m_nCP; // 0x01D8 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01DC + float32 m_flRotOffset; // 0x01E0 +}; +class CVMixControlInput : public CVMixInputBase // soundsystem_lowlevel +{ + float32 m_flDefaultValue; // 0x0010 +}; +class PulseRuntimeRegisterIndex_t // pulse_runtime_lib +{ + int16 m_Value; // 0x0000 +}; +class CNmTargetWarpNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ + int16 m_nClipReferenceNodeIdx; // 0x0010 + int16 m_nTargetValueNodeIdx; // 0x0012 + CNmRootMotionData::SamplingMode_t m_samplingMode; // 0x0014 + bool m_bAllowTargetUpdate; // 0x0015 + bool m_bAlignWithTargetAtLastWarpEvent; // 0x0016 + float32 m_flSamplingPositionErrorThresholdSq; // 0x0018 + float32 m_flMaxTangentLength; // 0x001C + float32 m_flLerpFallbackDistanceThreshold; // 0x0020 + float32 m_flTargetUpdateDistanceThreshold; // 0x0024 + float32 m_flTargetUpdateAngleThresholdRadians; // 0x0028 +}; +class C_OP_RemapCPVelocityToVector : public CParticleFunctionOperator // particles +{ + int32 m_nControlPoint; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + float32 m_flScale; // 0x01D8 + bool m_bNormalize; // 0x01DC +}; +class C_OP_RenderSimpleModelCollection : public CParticleFunctionRenderer // particles +{ + bool m_bCenterOffset; // 0x0220 + CStrongHandle< InfoForResourceTypeCModel > m_hModel; // 0x0228 + CParticleModelInput m_modelInput; // 0x0230 + CParticleCollectionFloatInput m_fSizeCullScale; // 0x0290 + bool m_bDisableShadows; // 0x0400 + bool m_bDisableMotionBlur; // 0x0401 + bool m_bAcceptsDecals; // 0x0402 + CPerParticleFloatInput m_fDrawFilter; // 0x0408 + ParticleAttributeIndex_t m_nAngularVelocityField; // 0x0578 +}; +class C_OP_HSVShiftToCP : public CParticleFunctionPreEmission // particles +{ + int32 m_nColorCP; // 0x01D8 + int32 m_nColorGemEnableCP; // 0x01DC + int32 m_nOutputCP; // 0x01E0 + Color m_DefaultHSVColor; // 0x01E4 +}; +class C_OP_SpinYaw : public CGeneralSpin // particles +{ +}; +class CSosGroupActionTimeLimitSchema : public CSosGroupActionSchema // soundsystem +{ + float32 m_flMaxDuration; // 0x0008 +}; +class CStanceOverrideUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + CUtlVector< StanceInfo_t > m_footStanceInfo; // 0x0070 + CAnimUpdateNodeRef m_pStanceSourceNode; // 0x0088 + CAnimParamHandle m_hParameter; // 0x0098 + StanceOverrideMode m_eMode; // 0x009C +}; +class CCycleBase // modellib +{ + float32 m_flCycle; // 0x0000 +}; +class InfoForResourceTypeCDotaItemDefinitionResource // resourcesystem +{ +}; +class hudtextparms_t // server +{ + Color color1; // 0x0000 + Color color2; // 0x0004 + uint8 effect; // 0x0008 + uint8 channel; // 0x0009 + float32 x; // 0x000C + float32 y; // 0x0010 +}; +class CVMixEnvelopeProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixEnvelopeDesc_t m_desc; // 0x0020 +}; +class IKBoneNameAndIndex_t // animgraphlib +{ + CUtlString m_Name; // 0x0000 +}; +class CAnimDecoder // animationsystem +{ + CBufferString m_szName; // 0x0000 + int32 m_nVersion; // 0x0010 + int32 m_nType; // 0x0014 +}; +class CFlexController // modellib +{ + CUtlString m_szName; // 0x0000 + CUtlString m_szType; // 0x0008 + float32 min; // 0x0010 + float32 max; // 0x0014 +}; +class CPointConstraint : public CBaseConstraint // modellib +{ +}; +class CParticleCollectionRendererVecInput : public CParticleCollectionVecInput // particleslib +{ +}; +class EventAppShutdown_t // engine2 +{ + int32 m_nDummy0; // 0x0000 +}; +class C_OP_RenderText : public CParticleFunctionRenderer // particles +{ + Color m_OutlineColor; // 0x0220 + CUtlString m_DefaultText; // 0x0228 +}; +class CParticleFunctionEmitter : public CParticleFunction // particles +{ + int32 m_nEmitterIndex; // 0x01D0 +}; +class RnCapsule_t // physicslib +{ + Vector[2] m_vCenter; // 0x0000 + float32 m_flRadius; // 0x0018 +}; +class AnimParamID // modellib +{ + uint32 m_id; // 0x0000 +}; +class InfoForResourceTypeCWorldNode // resourcesystem +{ +}; +class C_INIT_SetHitboxToClosest : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPointNumber; // 0x01D8 + int32 m_nDesiredHitbox; // 0x01DC + CParticleCollectionVecInput m_vecHitBoxScale; // 0x01E0 + char[128] m_HitboxSetName; // 0x0898 + bool m_bUseBones; // 0x0918 + bool m_bUseClosestPointOnHitbox; // 0x0919 + ClosestPointTestType_t m_nTestType; // 0x091C + CParticleCollectionFloatInput m_flHybridRatio; // 0x0920 + bool m_bUpdatePosition; // 0x0A90 +}; +class C_OP_RemapNamedModelElementOnceTimed : public CParticleFunctionOperator // particles +{ + CStrongHandle< InfoForResourceTypeCModel > m_hModel; // 0x01D0 + CUtlVector< CUtlString > m_inNames; // 0x01D8 + CUtlVector< CUtlString > m_outNames; // 0x01F0 + CUtlVector< CUtlString > m_fallbackNames; // 0x0208 + bool m_bModelFromRenderer; // 0x0220 + bool m_bProportional; // 0x0221 + ParticleAttributeIndex_t m_nFieldInput; // 0x0224 + ParticleAttributeIndex_t m_nFieldOutput; // 0x0228 + float32 m_flRemapTime; // 0x022C +}; +class C_INIT_RandomYaw : public CGeneralRandomRotation // particles +{ +}; +class CFutureVelocityMetricEvaluator : public CMotionMetricEvaluator // animgraphlib +{ + float32 m_flDistance; // 0x0050 + float32 m_flStoppingDistance; // 0x0054 + float32 m_flTargetSpeed; // 0x0058 + VelocityMetricMode m_eMode; // 0x005C +}; +class CTaskHandshakeAnimTag : public CHandshakeAnimTagBase // animgraphlib +{ +}; +class CExampleSchemaVData_Monomorphic // resourcefile +{ + int32 m_nExample1; // 0x0000 + int32 m_nExample2; // 0x0004 +}; +class IChoreoServices // server +{ +}; +class C_OP_SetControlPointPositionToRandomActiveCP : public CParticleFunctionPreEmission // particles +{ + int32 m_nCP1; // 0x01D8 + int32 m_nHeadLocationMin; // 0x01DC + int32 m_nHeadLocationMax; // 0x01E0 + CParticleCollectionFloatInput m_flResetRate; // 0x01E8 +}; +class CSteamAudioProbeGrid // steamaudio +{ + AABB_t m_aabb; // 0x0000 + float32 m_flSpacing; // 0x0018 + int32 m_nx; // 0x001C + int32 m_ny; // 0x0020 + int32 m_nz; // 0x0024 + CUtlVector< CSteamAudioProbeLineSegment > m_vecLineSegments; // 0x0028 + CUtlVector< Vector > m_vecProbes; // 0x0040 +}; +class CNmControlParameterFloatNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ +}; +class CFollowAttachmentUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + FollowAttachmentSettings_t m_opFixedData; // 0x0070 +}; +class COrientConstraint : public CBaseConstraint // modellib +{ +}; +class CAnimMotorUpdaterBase // animgraphlib +{ + CUtlString m_name; // 0x0010 + bool m_bDefault; // 0x0018 +}; +class C_OP_RandomForce : public CParticleFunctionForce // particles +{ + Vector m_MinForce; // 0x01E0 + Vector m_MaxForce; // 0x01EC +}; +class BakedLightingInfo_t::BakedShadowAssignment_t // worldrenderer +{ + uint32 m_nLightHash; // 0x0000 + uint32 m_nMapHash; // 0x0004 + int8 m_nShadowChannel; // 0x0008 +}; +class CSteamAudioBakedPathingData // steamaudio +{ + int32 m_nBands; // 0x0000 + CSteamAudioProbeData m_probes; // 0x0008 + CSteamAudioMovableBakedData< CSteamAudioBakedPathingData > m_movables; // 0x0010 +}; +class RnSoftbodyParticle_t // physicslib +{ + float32 m_flMassInv; // 0x0000 +}; +class CTiltTwistConstraint : public CBaseConstraint // modellib +{ + int32 m_nTargetAxis; // 0x0060 + int32 m_nSlaveAxis; // 0x0064 +}; +class EventServerEndAsyncPostTickWork_t // engine2 +{ +}; +class CParticleFunctionOperator : public CParticleFunction // particles +{ +}; +class C_OP_ShapeMatchingConstraint : public CParticleFunctionConstraint // particles +{ + float32 m_flShapeRestorationTime; // 0x01D0 +}; +class SteamAudioReverbClusteringSettings_t // steamaudio +{ + bool m_bEnableClustering; // 0x0000 + int32 m_nCubeMapResolution; // 0x0004 + float32 m_flDepthThreshold; // 0x0008 +}; +class CVMixEQ8ProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixEQ8Desc_t m_desc; // 0x0020 +}; +class CVoiceContainerSelector : public CVoiceContainerBase // soundsystem_voicecontainers +{ + PlayBackMode_t m_mode; // 0x00A8 + CSoundContainerReferenceArray m_soundsToPlay; // 0x00B0 + CUtlVector< float32 > m_fProbabilityWeights; // 0x00E8 +}; +class FeCollisionPlane_t // physicslib +{ + uint16 nCtrlParent; // 0x0000 + uint16 nChildNode; // 0x0002 + RnPlane_t m_Plane; // 0x0004 + float32 flStrength; // 0x0014 +}; +class SkeletonAnimCapture_t::Camera_t // modellib +{ + CTransform m_tmCamera; // 0x0000 + float32 m_flTime; // 0x0020 +}; +class CSeqScaleSet // animationsystem +{ + CBufferString m_sName; // 0x0000 + bool m_bRootOffset; // 0x0010 + Vector m_vRootOffset; // 0x0014 + CUtlVector< int16 > m_nLocalBoneArray; // 0x0020 + CUtlVector< float32 > m_flBoneScaleArray; // 0x0038 +}; +class FuseVariableIndex_t // mathlib_extended +{ + uint16 m_Value; // 0x0000 +}; +class C_INIT_RtEnvCull : public CParticleFunctionInitializer // particles +{ + Vector m_vecTestDir; // 0x01D8 + Vector m_vecTestNormal; // 0x01E4 + bool m_bUseVelocity; // 0x01F0 + bool m_bCullOnMiss; // 0x01F1 + bool m_bLifeAdjust; // 0x01F2 + char[128] m_RtEnvName; // 0x01F3 + int32 m_nRTEnvCP; // 0x0274 + int32 m_nComponent; // 0x0278 +}; +class C_OP_Orient2DRelToCP : public CParticleFunctionOperator // particles +{ + float32 m_flRotOffset; // 0x01D0 + float32 m_flSpinStrength; // 0x01D4 + int32 m_nCP; // 0x01D8 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01DC +}; +class RTProxyInstanceInfo_t // worldrenderer +{ + RTProxyInstanceFlags_t m_nFlags; // 0x0000 + VertexAlbedoFormat_t m_albedoFormat; // 0x0001 + uint16 m_nBLASCount; // 0x0002 + uint32 m_nBLASIndex; // 0x0004 + uint32 m_nVertexAlbedoByteOffset; // 0x0008 + matrix3x4_t m_mWorldFromLocal; // 0x000C +}; +class CShatterGlassShard // server +{ + uint32 m_hShardHandle; // 0x0008 + CUtlVector< Vector2D > m_vecPanelVertices; // 0x0010 + Vector2D m_vLocalPanelSpaceOrigin; // 0x0028 + CStrongHandle< InfoForResourceTypeCModel > m_hModel; // 0x0030 + CHandle< CShatterGlassShardPhysics > m_hPhysicsEntity; // 0x0038 + CHandle< CFuncShatterglass > m_hParentPanel; // 0x003C + uint32 m_hParentShard; // 0x0040 + ShatterGlassStressType m_ShatterStressType; // 0x0044 + Vector m_vecStressVelocity; // 0x0048 + bool m_bCreatedModel; // 0x0054 + float32 m_flLongestEdge; // 0x0058 + float32 m_flShortestEdge; // 0x005C + float32 m_flLongestAcross; // 0x0060 + float32 m_flShortestAcross; // 0x0064 + float32 m_flSumOfAllEdges; // 0x0068 + float32 m_flArea; // 0x006C + OnFrame m_nOnFrameEdge; // 0x0070 + int32 m_nSubShardGeneration; // 0x0074 + Vector2D m_vecAverageVertPosition; // 0x0078 + bool m_bAverageVertPositionIsValid; // 0x0080 + Vector2D m_vecPanelSpaceStressPositionA; // 0x0084 + Vector2D m_vecPanelSpaceStressPositionB; // 0x008C + bool m_bStressPositionAIsValid; // 0x0094 + bool m_bStressPositionBIsValid; // 0x0095 + bool m_bFlaggedForRemoval; // 0x0096 + GameTime_t m_flPhysicsEntitySpawnedAtTime; // 0x0098 + CHandle< CBaseEntity > m_hEntityHittingMe; // 0x009C + CUtlVector< uint32 > m_vecNeighbors; // 0x00A0 +}; +class sndopvarlatchdata_t // server +{ + CUtlSymbolLarge m_iszStack; // 0x0008 + CUtlSymbolLarge m_iszOperator; // 0x0010 + CUtlSymbolLarge m_iszOpvar; // 0x0018 + float32 m_flVal; // 0x0020 + Vector m_vPos; // 0x0024 +}; +class C_OP_TeleportBeam : public CParticleFunctionOperator // particles +{ + int32 m_nCPPosition; // 0x01D0 + int32 m_nCPVelocity; // 0x01D4 + int32 m_nCPMisc; // 0x01D8 + int32 m_nCPColor; // 0x01DC + int32 m_nCPInvalidColor; // 0x01E0 + int32 m_nCPExtraArcData; // 0x01E4 + Vector m_vGravity; // 0x01E8 + float32 m_flArcMaxDuration; // 0x01F4 + float32 m_flSegmentBreak; // 0x01F8 + float32 m_flArcSpeed; // 0x01FC + float32 m_flAlpha; // 0x0200 +}; +class C_OP_PercentageBetweenTransforms : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + float32 m_flInputMin; // 0x01D4 + float32 m_flInputMax; // 0x01D8 + float32 m_flOutputMin; // 0x01DC + float32 m_flOutputMax; // 0x01E0 + CParticleTransformInput m_TransformStart; // 0x01E8 + CParticleTransformInput m_TransformEnd; // 0x0250 + ParticleSetMethod_t m_nSetMethod; // 0x02B8 + bool m_bActiveRange; // 0x02BC + bool m_bRadialCheck; // 0x02BD +}; +class CVMixInputBase // soundsystem_lowlevel +{ + CUtlString m_name; // 0x0000 +}; +class AnimNodeID // modellib +{ + uint32 m_id; // 0x0000 +}; +class CRenderGroom // modellib +{ + CUtlVector< RenderHairStrandInfo_t > m_hairs; // 0x0000 + CUtlVector< uint32 > m_hairPositionOffsets; // 0x0018 + CStrongHandleCopyable< InfoForResourceTypeIMaterial2 > m_hSimParamsMat; // 0x0040 + CUtlVector< int32 > m_strandSegmentCountHist; // 0x0048 + int32 m_nMaxSegmentsPerHairStrand; // 0x0078 + int32 m_nGuideHairCount; // 0x007C + int32 m_nHairCount; // 0x0080 + int32 m_nTotalVertexCount; // 0x0084 + int32 m_nTotalSegmentCount; // 0x0088 + int32 m_nGroomGroupID; // 0x008C + int32 m_nAttachBoneIdx; // 0x0090 + int32 m_nAttachMeshIdx; // 0x0094 + int32 m_nAttachMeshDrawCallIdx; // 0x0098 + bool m_bEnableSimulation; // 0x009C +}; +class MaterialParamTexture_t : public MaterialParam_t // materialsystem2 +{ + CStrongHandle< InfoForResourceTypeCTextureBase > m_pValue; // 0x0008 +}; +class CRemapFloat // server +{ + float32[4] m_pValue; // 0x0000 +}; +class C_INIT_SetRigidAttachment : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPointNumber; // 0x01D8 + ParticleAttributeIndex_t m_nFieldInput; // 0x01DC + ParticleAttributeIndex_t m_nFieldOutput; // 0x01E0 + bool m_bLocalSpace; // 0x01E4 +}; +class VMixDynamicsCompressorDesc_t // soundsystem_lowlevel +{ + float32 m_fldbOutputGain; // 0x0000 + float32 m_fldbCompressionThreshold; // 0x0004 + float32 m_fldbKneeWidth; // 0x0008 + float32 m_flCompressionRatio; // 0x000C + float32 m_flAttackTimeMS; // 0x0010 + float32 m_flReleaseTimeMS; // 0x0014 + float32 m_flRMSTimeMS; // 0x0018 + float32 m_flWetMix; // 0x001C + bool m_bPeakMode; // 0x0020 +}; +class CMaterialDrawDescriptor::RigidMeshPart_t // modellib +{ + uint16 m_nRigidBLASIndex; // 0x0000 + int16 m_nBoneIndex; // 0x0002 + uint32 m_nStartIndexOffset; // 0x0004 + uint32 m_nPrimitiveCount; // 0x0008 +}; +class EventServerBeginAsyncPostTickWork_t // engine2 +{ + bool m_bIsOncePerFrameAsyncWorkPhase; // 0x0000 +}; +class DecalGroupOption_t // server +{ + CStrongHandleCopyable< InfoForResourceTypeIMaterial2 > m_hMaterial; // 0x0000 + CGlobalSymbol m_sSequenceName; // 0x0008 + float32 m_flProbability; // 0x0010 + bool m_bEnableAngleBetweenNormalAndGravityRange; // 0x0014 + float32 m_flMinAngleBetweenNormalAndGravity; // 0x0018 + float32 m_flMaxAngleBetweenNormalAndGravity; // 0x001C +}; +class C_OP_SetToCP : public CParticleFunctionOperator // particles +{ + int32 m_nControlPointNumber; // 0x01D0 + Vector m_vecOffset; // 0x01D4 + bool m_bOffsetLocal; // 0x01E0 +}; +class FeBuildSphereRigid_t : public FeSphereRigid_t // physicslib +{ + int32 m_nPriority; // 0x0020 + uint32 m_nVertexMapHash; // 0x0024 + uint32 m_nAntitunnelGroupBits; // 0x0028 +}; +class CDirectPlaybackTagData // animgraphlib +{ + CUtlString m_sequenceName; // 0x0000 + CUtlVector< TagSpan_t > m_tags; // 0x0008 +}; +class PermModelData_t // modellib +{ + CUtlString m_name; // 0x0000 + PermModelInfo_t m_modelInfo; // 0x0008 + CUtlVector< PermModelExtPart_t > m_ExtParts; // 0x0060 + CUtlVector< CStrongHandle< InfoForResourceTypeCRenderMesh > > m_refMeshes; // 0x0078 + CUtlVector< uint64 > m_refMeshGroupMasks; // 0x0090 + CUtlVector< uint64 > m_refPhysGroupMasks; // 0x00A8 + CUtlVector< uint8 > m_refLODGroupMasks; // 0x00C0 + CUtlVector< float32 > m_lodGroupSwitchDistances; // 0x00D8 + CUtlVector< CStrongHandle< InfoForResourceTypeCPhysAggregateData > > m_refPhysicsData; // 0x00F0 + CUtlVector< CStrongHandle< InfoForResourceTypeCPhysAggregateData > > m_refPhysicsHitboxData; // 0x0108 + CUtlVector< CStrongHandle< InfoForResourceTypeCAnimationGroup > > m_refAnimGroups; // 0x0120 + CUtlVector< CStrongHandle< InfoForResourceTypeCSequenceGroupData > > m_refSequenceGroups; // 0x0138 + CUtlVector< CUtlString > m_meshGroups; // 0x0150 + CUtlVector< MaterialGroup_t > m_materialGroups; // 0x0168 + uint64 m_nDefaultMeshGroupMask; // 0x0180 + ModelSkeletonData_t m_modelSkeleton; // 0x0188 + CUtlVector< int16 > m_remappingTable; // 0x0230 + CUtlVector< uint16 > m_remappingTableStarts; // 0x0248 + CUtlVector< ModelBoneFlexDriver_t > m_boneFlexDrivers; // 0x0260 + CModelConfigList* m_pModelConfigList; // 0x0278 + CUtlVector< CUtlString > m_BodyGroupsHiddenInTools; // 0x0280 + CUtlVector< CStrongHandle< InfoForResourceTypeCModel > > m_refAnimIncludeModels; // 0x0298 + CUtlVector< PermModelDataAnimatedMaterialAttribute_t > m_AnimatedMaterialAttributes; // 0x02B0 + CUtlVector< ModelAnimGraph2Ref_t > m_animGraph2Refs; // 0x02C8 + CUtlVector< CStrongHandle< InfoForResourceTypeCNmSkeleton > > m_vecNmSkeletonRefs; // 0x02E0 +}; +class CNmOverlayBlendTask : public CNmBlendTaskBase // animlib +{ +}; +class C_OP_RemapCrossProductOfTwoVectorsToVector : public CParticleFunctionOperator // particles +{ + CPerParticleVecInput m_InputVec1; // 0x01D0 + CPerParticleVecInput m_InputVec2; // 0x0888 + ParticleAttributeIndex_t m_nFieldOutput; // 0x0F40 + bool m_bNormalize; // 0x0F44 +}; +class C_OP_DensityForce : public CParticleFunctionForce // particles +{ + float32 m_flRadiusScale; // 0x01E0 + float32 m_flForceScale; // 0x01E4 + float32 m_flTargetDensity; // 0x01E8 +}; +class FeSimdRodConstraintAnim_t // physicslib +{ + uint16[4][2] nNode; // 0x0000 + fltx4 f4Weight0; // 0x0010 + fltx4 f4RelaxationFactor; // 0x0020 +}; +class CStanceScaleUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + CAnimParamHandle m_hParam; // 0x0070 +}; +class PulseDocNodeID_t // pulse_runtime_lib +{ + int32 m_Value; // 0x0000 +}; +class CNmModelSpaceBlendTask : public CNmBlendTaskBase // animlib +{ +}; +class CNetworkVarChainer // entity2 +{ + ChangeAccessorFieldPathIndex_t m_PathIndex; // 0x0020 +}; +class CPhysicsBodyGameMarkupData // server +{ + CUtlOrderedMap< CUtlString, CPhysicsBodyGameMarkup > m_PhysicsBodyMarkupByBoneName; // 0x0000 +}; +class C_INIT_InitFromCPSnapshot : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPointNumber; // 0x01D8 + CUtlString m_strSnapshotSubset; // 0x01E0 + ParticleAttributeIndex_t m_nAttributeToRead; // 0x01E8 + ParticleAttributeIndex_t m_nAttributeToWrite; // 0x01EC + int32 m_nLocalSpaceCP; // 0x01F0 + bool m_bRandom; // 0x01F4 + bool m_bReverse; // 0x01F5 + CParticleCollectionFloatInput m_nSnapShotIncrement; // 0x01F8 + CPerParticleFloatInput m_nManualSnapshotIndex; // 0x0368 + int32 m_nRandomSeed; // 0x04D8 + bool m_bLocalSpaceAngles; // 0x04DC +}; +class VMixOscDesc_t // soundsystem_lowlevel +{ + VMixLFOShape_t oscType; // 0x0000 + float32 m_freq; // 0x0004 + float32 m_flPhase; // 0x0008 +}; +class FeVertexMapBuild_t // physicslib +{ + CUtlString m_VertexMapName; // 0x0000 + uint32 m_nNameHash; // 0x0008 + Color m_Color; // 0x000C + float32 m_flVolumetricSolveStrength; // 0x0010 + int32 m_nScaleSourceNode; // 0x0014 + CUtlVector< float32 > m_Weights; // 0x0018 +}; +class RotatorQueueEntry_t // server +{ + Quaternion qTarget; // 0x0000 + RotatorTargetSpace_t eSpace; // 0x0010 +}; +class RotatorHistoryEntry_t // server +{ + Quaternion qInvChange; // 0x0000 + GameTime_t flTimeRotationStart; // 0x0010 +}; +class C_OP_RemapTransformVisibilityToScalar : public CParticleFunctionOperator // particles +{ + ParticleSetMethod_t m_nSetMethod; // 0x01D0 + CParticleTransformInput m_TransformInput; // 0x01D8 + ParticleAttributeIndex_t m_nFieldOutput; // 0x0240 + float32 m_flInputMin; // 0x0244 + float32 m_flInputMax; // 0x0248 + float32 m_flOutputMin; // 0x024C + float32 m_flOutputMax; // 0x0250 + float32 m_flRadius; // 0x0254 +}; +class C_OP_VectorNoise : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + Vector m_vecOutputMin; // 0x01D4 + Vector m_vecOutputMax; // 0x01E0 + float32 m_fl4NoiseScale; // 0x01EC + bool m_bAdditive; // 0x01F0 + bool m_bOffset; // 0x01F1 + float32 m_flNoiseAnimationTimeScale; // 0x01F4 +}; +class CVMixCommand // soundsystem_lowlevel +{ + VMixGraphCommandID_t m_nCommand; // 0x0000 + uint32 m_nParameterNameHash; // 0x0004 + int32 m_nOutputSubmix; // 0x0008 + int32 m_nInputSubmix0; // 0x000C + int32 m_nInputSubmix1; // 0x0010 + int32 m_nProcessor; // 0x0014 + int32 m_nInputValue0; // 0x0018 + int32 m_nInputValue1; // 0x001C +}; +class FeDynKinLink_t // physicslib +{ + uint16 m_nParent; // 0x0000 + uint16 m_nChild; // 0x0002 +}; +class CInterpolatedValue // client +{ + float32 m_flStartTime; // 0x0000 + float32 m_flEndTime; // 0x0004 + float32 m_flStartValue; // 0x0008 + float32 m_flEndValue; // 0x000C + int32 m_nInterpType; // 0x0010 +}; +class CGeneralSpin : public CParticleFunctionOperator // particles +{ + int32 m_nSpinRateDegrees; // 0x01D0 + int32 m_nSpinRateMinDegrees; // 0x01D4 + float32 m_fSpinRateStopTime; // 0x01DC +}; +class AnimationDecodeDebugDumpElement_t // animationsystem +{ + int32 m_nEntityIndex; // 0x0000 + CUtlString m_modelName; // 0x0008 + CUtlVector< CUtlString > m_poseParams; // 0x0010 + CUtlVector< CUtlString > m_decodeOps; // 0x0028 + CUtlVector< CUtlString > m_internalOps; // 0x0040 + CUtlVector< CUtlString > m_decodedAnims; // 0x0058 +}; +class CPulse_Chunk // pulse_runtime_lib +{ + CUtlLeanVector< PGDInstruction_t > m_Instructions; // 0x0000 + CUtlLeanVector< CPulse_RegisterInfo > m_Registers; // 0x0010 + CUtlLeanVector< CPulse_InstructionDebug > m_InstructionDebugInfos; // 0x0020 +}; +class ExternalAnimGraph_t // server +{ + ExternalAnimGraphHandle_t m_hExtGraphHandle; // 0x0000 + CGlobalSymbol m_sExternalGraphSlotID; // 0x0008 + CStrongHandleCopyable< InfoForResourceTypeCNmGraphDefinition > m_hGraphDefinition; // 0x0010 + CHandle< CBaseAnimGraph > m_hExternalGraphOwner; // 0x0018 + ExternalAnimGraphInactiveBehavior_t m_nInactiveBehavior; // 0x0030 +}; +class CNetworkOriginCellCoordQuantizedVector // server +{ + uint16 m_cellX; // 0x0010 + uint16 m_cellY; // 0x0012 + uint16 m_cellZ; // 0x0014 + uint16 m_nOutsideWorld; // 0x0016 + CNetworkedQuantizedFloat m_vecX; // 0x0018 + CNetworkedQuantizedFloat m_vecY; // 0x0020 + CNetworkedQuantizedFloat m_vecZ; // 0x0028 +}; +class C_OP_ModelDampenMovement : public CParticleFunctionOperator // particles +{ + int32 m_nControlPointNumber; // 0x01D0 + bool m_bBoundBox; // 0x01D4 + bool m_bOutside; // 0x01D5 + bool m_bUseBones; // 0x01D6 + char[128] m_HitboxSetName; // 0x01D7 + CPerParticleVecInput m_vecPosOffset; // 0x0258 + float32 m_fDrag; // 0x0910 +}; +class C_OP_SnapshotRigidSkinToBones : public CParticleFunctionOperator // particles +{ + bool m_bTransformNormals; // 0x01D0 + bool m_bTransformRadii; // 0x01D1 + int32 m_nControlPointNumber; // 0x01D4 +}; +class C_INIT_RandomYawFlip : public CParticleFunctionInitializer // particles +{ + float32 m_flPercent; // 0x01D8 +}; +class CAnimTagBase // animgraphlib +{ + CGlobalSymbol m_name; // 0x0018 + CUtlString m_sComment; // 0x0020 + CGlobalSymbol m_group; // 0x0028 + AnimTagID m_tagID; // 0x0030 + bool m_bIsReferenced; // 0x0048 +}; +class CMotionDataSet // animgraphlib +{ + CUtlVector< CMotionGraphGroup > m_groups; // 0x0000 + int32 m_nDimensionCount; // 0x0018 +}; +class CNmChainLookatTask : public CNmPoseTask // animlib +{ + int32 m_nChainEndBoneIdx; // 0x0058 + int32 m_nNumBonesInChain; // 0x005C + Vector m_chainForwardDir; // 0x0060 + float32 m_flBlendWeight; // 0x006C + float32 m_flHorizontalAngleLimitDegrees; // 0x0070 + float32 m_flVerticalAngleLimitDegrees; // 0x0074 + Vector m_lookatTarget; // 0x0078 + bool m_bIsTargetInWorldSpace; // 0x0084 + bool m_bIsRunningFromDeserializedData; // 0x0085 + float32 m_flHorizontalAngleDegrees; // 0x0088 + float32 m_flVerticalAngleDegrees; // 0x008C +}; +class CNmBodyGroupEvent : public CNmEvent // animlib +{ + CUtlString m_groupName; // 0x0020 + int32 m_nGroupValue; // 0x0028 +}; +class EventPostAdvanceTick_t : public EventSimulate_t // engine2 +{ + int32 m_nCurrentTick; // 0x0030 + int32 m_nCurrentTickThisFrame; // 0x0034 + int32 m_nTotalTicksThisFrame; // 0x0038 + int32 m_nTotalTicks; // 0x003C +}; +class CSimTimer : public CSimpleSimTimer // server +{ + float32 m_flInterval; // 0x0008 +}; +class C_OP_InterpolateRadius : public CParticleFunctionOperator // particles +{ + float32 m_flStartTime; // 0x01D0 + float32 m_flEndTime; // 0x01D4 + float32 m_flStartScale; // 0x01D8 + float32 m_flEndScale; // 0x01DC + bool m_bEaseInAndOut; // 0x01E0 + float32 m_flBias; // 0x01E4 +}; +class C_OP_ReadFromNeighboringParticle : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldInput; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + int32 m_nIncrement; // 0x01D8 + CPerParticleFloatInput m_DistanceCheck; // 0x01E0 + CPerParticleFloatInput m_flInterpolation; // 0x0350 +}; +class C_OP_SetControlPointToHMD : public CParticleFunctionPreEmission // particles +{ + int32 m_nCP1; // 0x01D8 + Vector m_vecCP1Pos; // 0x01DC + bool m_bOrientToHMD; // 0x01E8 +}; +class IKDemoCaptureSettings_t // animgraphlib +{ + CUtlString m_parentBoneName; // 0x0000 + IKChannelMode m_eMode; // 0x0008 + CUtlString m_ikChainName; // 0x0010 + CUtlString m_oneBoneStart; // 0x0018 + CUtlString m_oneBoneEnd; // 0x0020 +}; +class CParticleTransformInput : public CParticleInput // particleslib +{ + ParticleTransformType_t m_nType; // 0x0010 + CParticleNamedValueRef m_NamedValue; // 0x0018 + bool m_bFollowNamedValue; // 0x0058 + bool m_bSupportsDisabled; // 0x0059 + bool m_bUseOrientation; // 0x005A + int32 m_nControlPoint; // 0x005C + int32 m_nControlPointRangeMax; // 0x0060 + float32 m_flEndCPGrowthTime; // 0x0064 +}; +class CNmIKBody // animlib +{ + float32 m_flMass; // 0x0000 + Vector m_vLocalMassCenter; // 0x0004 + Vector m_vRadius; // 0x0010 + float32 m_flResistance; // 0x001C +}; +class CFloatAnimParameter : public CConcreteAnimParameter // animgraphlib +{ + float32 m_fDefaultValue; // 0x0080 + float32 m_fMinValue; // 0x0084 + float32 m_fMaxValue; // 0x0088 + bool m_bInterpolate; // 0x008C +}; +class C_OP_RemapAverageHitboxSpeedtoCP : public CParticleFunctionPreEmission // particles +{ + int32 m_nInControlPointNumber; // 0x01D8 + int32 m_nOutControlPointNumber; // 0x01DC + int32 m_nField; // 0x01E0 + ParticleHitboxDataSelection_t m_nHitboxDataType; // 0x01E4 + CParticleCollectionFloatInput m_flInputMin; // 0x01E8 + CParticleCollectionFloatInput m_flInputMax; // 0x0358 + CParticleCollectionFloatInput m_flOutputMin; // 0x04C8 + CParticleCollectionFloatInput m_flOutputMax; // 0x0638 + int32 m_nHeightControlPointNumber; // 0x07A8 + CParticleCollectionVecInput m_vecComparisonVelocity; // 0x07B0 + char[128] m_HitboxSetName; // 0x0E68 +}; +class C_INIT_SetFloatAttributeToVectorExpression : public CParticleFunctionInitializer // particles +{ + VectorFloatExpressionType_t m_nExpression; // 0x01D8 + CPerParticleVecInput m_vInput1; // 0x01E0 + CPerParticleVecInput m_vInput2; // 0x0898 + CParticleRemapFloatInput m_flOutputRemap; // 0x0F50 + ParticleAttributeIndex_t m_nOutputField; // 0x10C0 + ParticleSetMethod_t m_nSetMethod; // 0x10C4 +}; +class FeSimdTri_t // physicslib +{ + uint32[4][3] nNode; // 0x0000 + fltx4 w1; // 0x0030 + fltx4 w2; // 0x0040 + fltx4 v1x; // 0x0050 + FourVectors2D v2; // 0x0060 +}; +class CAimCameraUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + CAnimParamHandle m_hParameterPosition; // 0x0070 + CAnimParamHandle m_hParameterOrientation; // 0x0072 + CAnimParamHandle m_hParameterPelvisOffset; // 0x0074 + CAnimParamHandle m_hParameterCameraOnly; // 0x0076 + CAnimParamHandle m_hParameterWeaponDepenetrationDistance; // 0x0078 + CAnimParamHandle m_hParameterWeaponDepenetrationDelta; // 0x007A + CAnimParamHandle m_hParameterCameraClearanceDistance; // 0x007C + AimCameraOpFixedSettings_t m_opFixedSettings; // 0x0080 +}; +class CMorphData // modellib +{ + CUtlString m_name; // 0x0000 + CUtlVector< CMorphRectData > m_morphRectDatas; // 0x0008 +}; +class CDrawCullingData // modellib +{ + int8[3] m_ConeAxis; // 0x0000 + int8 m_ConeCutoff; // 0x0003 +}; +class CAnimationGraphVisualizerPrimitiveBase // animgraphlib +{ + CAnimationGraphVisualizerPrimitiveType m_Type; // 0x0008 + AnimNodeID[11] m_OwningAnimNodePaths; // 0x000C + int32 m_nOwningAnimNodePathCount; // 0x0038 +}; +class CPhysSurfacePropertiesPhysics // modellib +{ + float32 m_friction; // 0x0000 + float32 m_elasticity; // 0x0004 + float32 m_density; // 0x0008 + float32 m_thickness; // 0x000C + float32 m_softContactFrequency; // 0x0010 + float32 m_softContactDampingRatio; // 0x0014 +}; +class SceneRequestHandle_t // server +{ + int32 m_Value; // 0x0000 +}; +class CBaseAnimGraphVariationUserData : public CNmGraphVariationUserData // server +{ +}; +class CVMixControlInputArray : public CVMixInputBase // soundsystem_lowlevel +{ + int32 m_nArrayIndex; // 0x0010 +}; +class CNmIDEventNode::CDefinition : public CNmIDValueNode::CDefinition // animlib +{ + int16 m_nSourceStateNodeIdx; // 0x0010 + CNmBitFlags m_eventConditionRules; // 0x0014 + CGlobalSymbol m_defaultValue; // 0x0018 +}; +class CSeqCmdSeqDesc // animationsystem +{ + CBufferString m_sName; // 0x0000 + CSeqSeqDescFlag m_flags; // 0x0010 + CSeqTransition m_transition; // 0x001C + int16 m_nFrameRangeSequence; // 0x0024 + int16 m_nFrameCount; // 0x0026 + float32 m_flFPS; // 0x0028 + int16 m_nSubCycles; // 0x002C + int16 m_numLocalResults; // 0x002E + CUtlVector< CSeqCmdLayer > m_cmdLayerArray; // 0x0030 + CUtlVector< CAnimEventDefinition > m_eventArray; // 0x0048 + CUtlVector< CAnimActivity > m_activityArray; // 0x0060 + CUtlVector< CSeqPoseSetting > m_poseSettingArray; // 0x0078 +}; +class EventFrameBoundary_t // engine2 +{ + float32 m_flFrameTime; // 0x0000 +}; +class CResponseQueue // server +{ + CUtlVector< CAI_Expresser* > m_ExpresserTargets; // 0x0038 +}; +class ParticleIndex_t // server +{ + int32 m_Value; // 0x0000 +}; +class C_OP_ConstrainDistanceToPath : public CParticleFunctionConstraint // particles +{ + float32 m_fMinDistance; // 0x01D0 + float32 m_flMaxDistance0; // 0x01D4 + float32 m_flMaxDistanceMid; // 0x01D8 + float32 m_flMaxDistance1; // 0x01DC + CPathParameters m_PathParameters; // 0x01E0 + float32 m_flTravelTime; // 0x0220 + ParticleAttributeIndex_t m_nFieldScale; // 0x0224 + ParticleAttributeIndex_t m_nManualTField; // 0x0228 +}; +class C_OP_DecayClampCount : public CParticleFunctionOperator // particles +{ + CParticleCollectionFloatInput m_nCount; // 0x01D0 +}; +class C_INIT_RandomAlphaWindowThreshold : public CParticleFunctionInitializer // particles +{ + float32 m_flMin; // 0x01D8 + float32 m_flMax; // 0x01DC + float32 m_flExponent; // 0x01E0 +}; +class C_OP_RemapNamedModelElementEndCap : public CParticleFunctionOperator // particles +{ + CStrongHandle< InfoForResourceTypeCModel > m_hModel; // 0x01D0 + CUtlVector< CUtlString > m_inNames; // 0x01D8 + CUtlVector< CUtlString > m_outNames; // 0x01F0 + CUtlVector< CUtlString > m_fallbackNames; // 0x0208 + bool m_bModelFromRenderer; // 0x0220 + ParticleAttributeIndex_t m_nFieldInput; // 0x0224 + ParticleAttributeIndex_t m_nFieldOutput; // 0x0228 +}; +class ClutterSceneObject_t // worldrenderer +{ + AABB_t m_Bounds; // 0x0000 + ObjectTypeFlags_t m_flags; // 0x0018 + int16 m_nLayer; // 0x001C + CUtlVector< Vector > m_instancePositions; // 0x0020 + CUtlVector< float32 > m_instanceScales; // 0x0050 + CUtlVector< Color > m_instanceTintSrgb; // 0x0068 + CUtlVector< ClutterTile_t > m_tiles; // 0x0080 + CStrongHandle< InfoForResourceTypeCModel > m_renderableModel; // 0x0098 + CUtlStringToken m_materialGroup; // 0x00A0 + float32 m_flBeginCullSize; // 0x00A4 + float32 m_flEndCullSize; // 0x00A8 +}; +class WorldNode_t // worldrenderer +{ + CUtlVector< SceneObject_t > m_sceneObjects; // 0x0000 + CUtlVector< uint16 > m_visClusterMembership; // 0x0018 + CUtlVector< AggregateSceneObject_t > m_aggregateSceneObjects; // 0x0030 + CUtlVector< ClutterSceneObject_t > m_clutterSceneObjects; // 0x0048 + CUtlVector< AggregateRTProxySceneObject_t > m_rtProxies; // 0x0060 + CUtlVector< ExtraVertexStreamOverride_t > m_extraVertexStreamOverrides; // 0x0078 + CUtlVector< MaterialOverride_t > m_materialOverrides; // 0x0090 + CUtlVector< WorldNodeOnDiskBufferData_t > m_extraVertexStreams; // 0x00A8 + CUtlVector< AggregateInstanceStreamOnDiskData_t > m_aggregateInstanceStreams; // 0x00C0 + CUtlVector< AggregateVertexAlbedoStreamOnDiskData_t > m_vertexAlbedoStreams; // 0x00D8 + CUtlVector< CUtlString > m_layerNames; // 0x00F0 + CUtlVector< uint8 > m_sceneObjectLayerIndices; // 0x0108 + CUtlString m_grassFileName; // 0x0120 + BakedLightingInfo_t m_nodeLightingInfo; // 0x0128 + bool m_bHasBakedGeometryFlag; // 0x0170 +}; +class CNmCurrentSyncEventNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + int16 m_nSourceStateNodeIdx; // 0x0010 + CNmCurrentSyncEventNode::InfoType_t m_infoType; // 0x0012 +}; +class C_OP_DecayMaintainCount : public CParticleFunctionOperator // particles +{ + int32 m_nParticlesToMaintain; // 0x01D0 + float32 m_flDecayDelay; // 0x01D4 + int32 m_nSnapshotControlPoint; // 0x01D8 + CUtlString m_strSnapshotSubset; // 0x01E0 + bool m_bLifespanDecay; // 0x01E8 + CParticleCollectionFloatInput m_flScale; // 0x01F0 + bool m_bKillNewest; // 0x0360 +}; +class IPhysicsPlayerController // vphysics2 +{ +}; +class CAnimCycle : public CCycleBase // modellib +{ +}; +class ModelAnimGraph2Ref_t // modellib +{ + CUtlString m_sIdentifier; // 0x0000 + CStrongHandle< InfoForResourceTypeCNmGraphDefinition > m_hGraph; // 0x0008 +}; +class C_INIT_RandomNamedModelSequence : public C_INIT_RandomNamedModelElement // particles +{ +}; +class C_OP_PlayEndCapWhenFinished : public CParticleFunctionPreEmission // particles +{ + bool m_bFireOnEmissionEnd; // 0x01D8 + bool m_bIncludeChildren; // 0x01D9 +}; +class C_INIT_RandomSecondSequence : public CParticleFunctionInitializer // particles +{ + int32 m_nSequenceMin; // 0x01D8 + int32 m_nSequenceMax; // 0x01DC +}; +class C_OP_LagCompensation : public CParticleFunctionOperator // particles +{ + int32 m_nDesiredVelocityCP; // 0x01D0 + int32 m_nLatencyCP; // 0x01D4 + int32 m_nLatencyCPField; // 0x01D8 + int32 m_nDesiredVelocityCPField; // 0x01DC +}; +class CParticleRemapFloatInput : public CParticleFloatInput // particleslib +{ +}; +class CLODComponentUpdater : public CAnimComponentUpdater // animgraphlib +{ + int32 m_nServerLOD; // 0x0030 +}; +class PulseRuntimeCallInfoIndex_t // pulse_runtime_lib +{ + int32 m_Value; // 0x0000 +}; +class inv_image_clearcolor_t // client +{ + Vector color; // 0x0000 +}; +class C_INIT_CreateOnModelAtHeight : public CParticleFunctionInitializer // particles +{ + bool m_bUseBones; // 0x01D8 + bool m_bForceZ; // 0x01D9 + int32 m_nControlPointNumber; // 0x01DC + int32 m_nHeightCP; // 0x01E0 + bool m_bUseWaterHeight; // 0x01E4 + CParticleCollectionFloatInput m_flDesiredHeight; // 0x01E8 + CParticleCollectionVecInput m_vecHitBoxScale; // 0x0358 + CParticleCollectionVecInput m_vecDirectionBias; // 0x0A10 + ParticleHitboxBiasType_t m_nBiasType; // 0x10C8 + bool m_bLocalCoords; // 0x10CC + bool m_bPreferMovingBoxes; // 0x10CD + char[128] m_HitboxSetName; // 0x10CE + CParticleCollectionFloatInput m_flHitboxVelocityScale; // 0x1150 + CParticleCollectionFloatInput m_flMaxBoneVelocity; // 0x12C0 +}; +class CNmIDSwitchNode::CDefinition : public CNmIDValueNode::CDefinition // animlib +{ + int16 m_nSwitchValueNodeIdx; // 0x0010 + int16 m_nTrueValueNodeIdx; // 0x0012 + int16 m_nFalseValueNodeIdx; // 0x0014 + CGlobalSymbol m_falseValue; // 0x0018 + CGlobalSymbol m_trueValue; // 0x0020 +}; +class ConstantInfo_t // mathlib_extended +{ + CUtlString m_name; // 0x0000 + CUtlStringToken m_nameToken; // 0x0008 + float32 m_flValue; // 0x000C +}; +class C_INIT_MoveBetweenPoints : public CParticleFunctionInitializer // particles +{ + CPerParticleFloatInput m_flSpeedMin; // 0x01D8 + CPerParticleFloatInput m_flSpeedMax; // 0x0348 + CPerParticleFloatInput m_flEndSpread; // 0x04B8 + CPerParticleFloatInput m_flStartOffset; // 0x0628 + CPerParticleFloatInput m_flEndOffset; // 0x0798 + int32 m_nEndControlPointNumber; // 0x0908 + bool m_bTrailBias; // 0x090C +}; +class C_INIT_RandomNamedModelElement : public CParticleFunctionInitializer // particles +{ + CStrongHandle< InfoForResourceTypeCModel > m_hModel; // 0x01D8 + CUtlVector< CUtlString > m_names; // 0x01E0 + bool m_bShuffle; // 0x01F8 + bool m_bLinear; // 0x01F9 + bool m_bModelFromRenderer; // 0x01FA + ParticleAttributeIndex_t m_nFieldOutput; // 0x01FC +}; +class C_INIT_SetHitboxToModel : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPointNumber; // 0x01D8 + int32 m_nForceInModel; // 0x01DC + bool m_bEvenDistribution; // 0x01E0 + int32 m_nDesiredHitbox; // 0x01E4 + CParticleCollectionVecInput m_vecHitBoxScale; // 0x01E8 + Vector m_vecDirectionBias; // 0x08A0 + bool m_bMaintainHitbox; // 0x08AC + bool m_bUseBones; // 0x08AD + char[128] m_HitboxSetName; // 0x08AE + CParticleCollectionFloatInput m_flShellSize; // 0x0930 +}; +class CAnimGraphControllerManager // server +{ + CUtlVector< CAnimGraphControllerBase* > m_controllers; // 0x0000 + bool m_bGraphBindingsCreated; // 0x00A8 +}; +class CMotionGraph // animgraphlib +{ + CParamSpanUpdater m_paramSpans; // 0x0010 + CUtlVector< TagSpan_t > m_tags; // 0x0028 + CSmartPtr< CMotionNode > m_pRootNode; // 0x0040 + int32 m_nParameterCount; // 0x0048 + int32 m_nConfigStartIndex; // 0x004C + int32 m_nConfigCount; // 0x0050 + bool m_bLoop; // 0x0054 +}; +class CSequenceTagSpans // animgraphlib +{ + CGlobalSymbol m_sSequenceName; // 0x0000 + CUtlVector< TagSpan_t > m_tags; // 0x0008 +}; +class C_OP_DistanceBetweenCPsToCP : public CParticleFunctionPreEmission // particles +{ + int32 m_nStartCP; // 0x01D8 + int32 m_nEndCP; // 0x01DC + int32 m_nOutputCP; // 0x01E0 + int32 m_nOutputCPField; // 0x01E4 + bool m_bSetOnce; // 0x01E8 + float32 m_flInputMin; // 0x01EC + float32 m_flInputMax; // 0x01F0 + float32 m_flOutputMin; // 0x01F4 + float32 m_flOutputMax; // 0x01F8 + float32 m_flMaxTraceLength; // 0x01FC + float32 m_flLOSScale; // 0x0200 + bool m_bLOS; // 0x0204 + char[128] m_CollisionGroupName; // 0x0205 + ParticleTraceSet_t m_nTraceSet; // 0x0288 + ParticleParentSetMode_t m_nSetParent; // 0x028C +}; +class C_INIT_RandomRotation : public CGeneralRandomRotation // particles +{ +}; +class BakedLightingInfo_t // worldrenderer +{ + uint32 m_nLightmapVersionNumber; // 0x0000 + uint32 m_nLightmapGameVersionNumber; // 0x0004 + Vector2D m_vLightmapUvScale; // 0x0008 + bool m_bHasLightmaps; // 0x0010 + bool m_bBakedShadowsGamma20; // 0x0011 + bool m_bCompressionEnabled; // 0x0012 + bool m_bSHLightmaps; // 0x0013 + uint8 m_nChartPackIterations; // 0x0014 + uint8 m_nVradQuality; // 0x0015 + CUtlVector< CStrongHandle< InfoForResourceTypeCTextureBase > > m_lightMaps; // 0x0018 + CUtlVector< BakedLightingInfo_t::BakedShadowAssignment_t > m_bakedShadows; // 0x0030 +}; +class CNmIDEvent : public CNmEvent // animlib +{ + CGlobalSymbol m_ID; // 0x0020 + CGlobalSymbol m_secondaryID; // 0x0028 +}; +class C_OP_RemapDistanceToLineSegmentToScalar : public C_OP_RemapDistanceToLineSegmentBase // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01E8 + float32 m_flMinOutputValue; // 0x01EC + float32 m_flMaxOutputValue; // 0x01F0 +}; +class CAnimReplayFrame // animgraphlib +{ + CUtlVector< CUtlBinaryBlock > m_inputDataBlocks; // 0x0010 + CUtlBinaryBlock m_instanceData; // 0x0028 + CTransform m_startingLocalToWorldTransform; // 0x0040 + CTransform m_localToWorldTransform; // 0x0060 + float32 m_timeStamp; // 0x0080 +}; +class RsStencilStateDesc_t // rendersystemdx11 +{ + bitfield:1 m_bStencilEnable; // 0x0000 + bitfield:3 m_frontStencilFailOp; // 0x0000 + bitfield:3 m_frontStencilDepthFailOp; // 0x0000 + bitfield:3 m_frontStencilPassOp; // 0x0000 + bitfield:3 m_frontStencilFunc; // 0x0000 + bitfield:3 m_backStencilFailOp; // 0x0000 + bitfield:3 m_backStencilDepthFailOp; // 0x0000 + bitfield:3 m_backStencilPassOp; // 0x0000 + bitfield:3 m_backStencilFunc; // 0x0000 + uint8 m_nStencilReadMask; // 0x0004 + uint8 m_nStencilWriteMask; // 0x0005 +}; +class InfoForResourceTypeWorld_t // resourcesystem +{ +}; +class C_INIT_RemapNamedModelSequenceToScalar : public C_INIT_RemapNamedModelElementToScalar // particles +{ +}; +class PulseRuntimeEntrypointIndex_t // pulse_runtime_lib +{ + int32 m_Value; // 0x0000 +}; +class CNmGraphNode::CDefinition // animlib +{ + int16 m_nNodeIdx; // 0x0008 +}; +class CNmEventConsumerHudModelArmsAttributes : public CNmEventConsumerAttributes // client +{ +}; +class CNmEventConsumerLegacy : public CNmEventConsumer // server +{ +}; +class ParticlePreviewState_t // particles +{ + CUtlString m_previewModel; // 0x0000 + uint32 m_nModSpecificData; // 0x0008 + PetGroundType_t m_groundType; // 0x000C + CUtlString m_sequenceName; // 0x0010 + int32 m_nFireParticleOnSequenceFrame; // 0x0018 + CUtlString m_hitboxSetName; // 0x0020 + CUtlString m_materialGroupName; // 0x0028 + CUtlVector< ParticlePreviewBodyGroup_t > m_vecBodyGroups; // 0x0030 + float32 m_flPlaybackSpeed; // 0x0048 + float32 m_flParticleSimulationRate; // 0x004C + bool m_bShouldDrawHitboxes; // 0x0050 + bool m_bShouldDrawAttachments; // 0x0051 + bool m_bShouldDrawAttachmentNames; // 0x0052 + bool m_bShouldDrawControlPointAxes; // 0x0053 + bool m_bAnimationNonLooping; // 0x0054 + bool m_bSequenceNameIsAnimClipPath; // 0x0055 + Vector m_vecPreviewGravity; // 0x0058 +}; +class RnBodyDesc_t // physicslib +{ + CUtlString m_sDebugName; // 0x0000 + Vector m_vPosition; // 0x0008 + QuaternionStorage m_qOrientation; // 0x0014 + Vector m_vLinearVelocity; // 0x0024 + Vector m_vAngularVelocity; // 0x0030 + Vector m_vLocalMassCenter; // 0x003C + Vector[3] m_LocalInertiaInv; // 0x0048 + float32 m_flMassInv; // 0x006C + float32 m_flGameMass; // 0x0070 + float32 m_flMassScaleInv; // 0x0074 + float32 m_flInertiaScaleInv; // 0x0078 + float32 m_flLinearDamping; // 0x007C + float32 m_flAngularDamping; // 0x0080 + float32 m_flLinearDragScale; // 0x0084 + float32 m_flAngularDragScale; // 0x0088 + float32 m_flLinearFluidDragScale; // 0x008C + float32 m_flAngularFluidDragScale; // 0x0090 + Vector m_vLastAwakeForceAccum; // 0x0094 + Vector m_vLastAwakeTorqueAccum; // 0x00A0 + float32 m_flBuoyancyScale; // 0x00AC + float32 m_flGravityScale; // 0x00B0 + float32 m_flTimeScale; // 0x00B4 + int32 m_nBodyType; // 0x00B8 + uint32 m_nGameIndex; // 0x00BC + uint32 m_nGameFlags; // 0x00C0 + int8 m_nMinVelocityIterations; // 0x00C4 + int8 m_nMinPositionIterations; // 0x00C5 + int8 m_nMassPriority; // 0x00C6 + bool m_bEnabled; // 0x00C7 + bool m_bSleeping; // 0x00C8 + bool m_bIsContinuousEnabled; // 0x00C9 + bool m_bDragEnabled; // 0x00CA + Vector m_vGravity; // 0x00CC + bool m_bSpeculativeEnabled; // 0x00D8 + bool m_bHasShadowController; // 0x00D9 + DynamicContinuousContactBehavior_t m_nDynamicContinuousContactBehavior; // 0x00DA +}; +class CSeqS1SeqDesc // animationsystem +{ + CBufferString m_sName; // 0x0000 + CSeqSeqDescFlag m_flags; // 0x0010 + CSeqMultiFetch m_fetch; // 0x0020 + int32 m_nLocalWeightlist; // 0x0090 + CUtlVector< CSeqAutoLayer > m_autoLayerArray; // 0x0098 + CUtlVector< CSeqIKLock > m_IKLockArray; // 0x00B0 + CSeqTransition m_transition; // 0x00C8 + KeyValues3 m_SequenceKeys; // 0x00D0 + CBufferString m_LegacyKeyValueText; // 0x00E0 + CUtlVector< CAnimActivity > m_activityArray; // 0x00F0 + CUtlVector< CFootMotion > m_footMotion; // 0x0108 +}; +class CNmFollowBoneTask : public CNmPoseTask // animlib +{ +}; +class C_OP_PinRopeSegmentParticleToParent : public CParticleFunctionOperator // particles +{ + ParticleSelection_t m_nParticleSelection; // 0x01D0 + CParticleCollectionFloatInput m_nParticleNumber; // 0x01D8 + CPerParticleFloatInput m_flInterpolation; // 0x0348 +}; +class C_OP_ColorInterpolateRandom : public CParticleFunctionOperator // particles +{ + Color m_ColorFadeMin; // 0x01D0 + Color m_ColorFadeMax; // 0x01EC + float32 m_flFadeStartTime; // 0x01FC + float32 m_flFadeEndTime; // 0x0200 + ParticleAttributeIndex_t m_nFieldOutput; // 0x0204 + bool m_bEaseInOut; // 0x0208 +}; +class C_OP_RenderFlattenGrass : public CParticleFunctionRenderer // particles +{ + float32 m_flFlattenStrength; // 0x0220 + ParticleAttributeIndex_t m_nStrengthFieldOverride; // 0x0224 + float32 m_flRadiusScale; // 0x0228 +}; +class CompositeMaterialInputContainer_t // compositematerialslib +{ + bool m_bEnabled; // 0x0000 + CompositeMaterialInputContainerSourceType_t m_nCompositeMaterialInputContainerSourceType; // 0x0004 + CResourceNameTyped< CWeakHandle< InfoForResourceTypeIMaterial2 > > m_strSpecificContainerMaterial; // 0x0008 + CUtlString m_strAttrName; // 0x00E8 + CUtlString m_strAlias; // 0x00F0 + CUtlVector< CompositeMaterialInputLooseVariable_t > m_vecLooseVariables; // 0x00F8 + CUtlString m_strAttrNameForVar; // 0x0110 + bool m_bExposeExternally; // 0x0118 +}; +class C_INIT_StatusEffectCitadel : public CParticleFunctionInitializer // particles +{ + float32 m_flSFXColorWarpAmount; // 0x01D8 + float32 m_flSFXNormalAmount; // 0x01DC + float32 m_flSFXMetalnessAmount; // 0x01E0 + float32 m_flSFXRoughnessAmount; // 0x01E4 + float32 m_flSFXSelfIllumAmount; // 0x01E8 + float32 m_flSFXSScale; // 0x01EC + float32 m_flSFXSScrollX; // 0x01F0 + float32 m_flSFXSScrollY; // 0x01F4 + float32 m_flSFXSScrollZ; // 0x01F8 + float32 m_flSFXSOffsetX; // 0x01FC + float32 m_flSFXSOffsetY; // 0x0200 + float32 m_flSFXSOffsetZ; // 0x0204 + DetailCombo_t m_nDetailCombo; // 0x0208 + float32 m_flSFXSDetailAmount; // 0x020C + float32 m_flSFXSDetailScale; // 0x0210 + float32 m_flSFXSDetailScrollX; // 0x0214 + float32 m_flSFXSDetailScrollY; // 0x0218 + float32 m_flSFXSDetailScrollZ; // 0x021C + float32 m_flSFXSUseModelUVs; // 0x0220 +}; +class CSSDSMsg_LayerBase // scenesystem +{ + SceneViewId_t m_viewId; // 0x0000 + CUtlString m_ViewName; // 0x0010 + uint64 m_nLayerId; // 0x0018 + CUtlString m_LayerName; // 0x0020 + CUtlString m_displayText; // 0x0028 +}; +class CVoiceContainerEnvelopeAnalyzer : public CVoiceContainerAnalysisBase // soundsystem_voicecontainers +{ + EMode_t m_mode; // 0x0050 + float32 m_fAnalysisWindowMs; // 0x0054 + float32 m_flThreshold; // 0x0058 +}; +class CVMixFlangerProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixFlangerDesc_t m_desc; // 0x0020 +}; +class C_OP_DistanceToTransform : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + CPerParticleFloatInput m_flInputMin; // 0x01D8 + CPerParticleFloatInput m_flInputMax; // 0x0348 + CPerParticleFloatInput m_flOutputMin; // 0x04B8 + CPerParticleFloatInput m_flOutputMax; // 0x0628 + CParticleTransformInput m_TransformStart; // 0x0798 + bool m_bLOS; // 0x0800 + char[128] m_CollisionGroupName; // 0x0801 + ParticleTraceSet_t m_nTraceSet; // 0x0884 + float32 m_flMaxTraceLength; // 0x0888 + float32 m_flLOSScale; // 0x088C + ParticleSetMethod_t m_nSetMethod; // 0x0890 + bool m_bActiveRange; // 0x0894 + bool m_bAdditive; // 0x0895 + CPerParticleVecInput m_vecComponentScale; // 0x0898 +}; +class C_OP_CurlNoiseForce : public CParticleFunctionForce // particles +{ + ParticleDirectionNoiseType_t m_nNoiseType; // 0x01E0 + CPerParticleVecInput m_vecNoiseFreq; // 0x01E8 + CPerParticleVecInput m_vecNoiseScale; // 0x08A0 + CPerParticleVecInput m_vecOffset; // 0x0F58 + CPerParticleVecInput m_vecOffsetRate; // 0x1610 + CPerParticleFloatInput m_flWorleySeed; // 0x1CC8 + CPerParticleFloatInput m_flWorleyJitter; // 0x1E38 +}; +class CSteamAudioAmbisonicsField // steamaudio +{ + CUtlVector< float32 > m_field; // 0x0000 +}; +class FeHingeLimit_t // physicslib +{ + uint16[6] nNode; // 0x0000 + uint32 nFlags; // 0x000C + float32 flWeight4; // 0x0010 + float32 flWeight5; // 0x0014 + float32 flAngleCenter; // 0x0018 + float32 flAngleExtents; // 0x001C +}; +class CModelConfigElement_RandomPick : public CModelConfigElement // modellib +{ + CUtlVector< CUtlString > m_Choices; // 0x0048 + CUtlVector< float32 > m_ChoiceWeights; // 0x0060 +}; +class C_OP_PercentageBetweenTransformsVector : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + float32 m_flInputMin; // 0x01D4 + float32 m_flInputMax; // 0x01D8 + Vector m_vecOutputMin; // 0x01DC + Vector m_vecOutputMax; // 0x01E8 + CParticleTransformInput m_TransformStart; // 0x01F8 + CParticleTransformInput m_TransformEnd; // 0x0260 + ParticleSetMethod_t m_nSetMethod; // 0x02C8 + bool m_bActiveRange; // 0x02CC + bool m_bRadialCheck; // 0x02CD +}; +class CNmEntityAttributeEventBase : public CNmEvent // animlib +{ + CUtlString m_attributeName; // 0x0020 +}; +class CNmNotNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 +}; +class FunctionInfo_t // mathlib_extended +{ + CUtlString m_name; // 0x0008 + CUtlStringToken m_nameToken; // 0x0010 + int32 m_nParamCount; // 0x0014 + FuseFunctionIndex_t m_nIndex; // 0x0018 + bool m_bIsPure; // 0x001A +}; +class AmmoIndex_t // server +{ + int8 m_Value; // 0x0000 +}; +class CBreakableStageHelper // server +{ + int32 m_nCurrentStage; // 0x0008 + int32 m_nStageCount; // 0x000C +}; +class C_OP_SetControlPointToWaterSurface : public CParticleFunctionPreEmission // particles +{ + int32 m_nSourceCP; // 0x01D8 + int32 m_nDestCP; // 0x01DC + int32 m_nFlowCP; // 0x01E0 + int32 m_nActiveCP; // 0x01E4 + int32 m_nActiveCPField; // 0x01E8 + CParticleCollectionFloatInput m_flRetestRate; // 0x01F0 + bool m_bAdaptiveThreshold; // 0x0360 +}; +class C_OP_SetAttributeToScalarExpression : public CParticleFunctionOperator // particles +{ + ScalarExpressionType_t m_nExpression; // 0x01D0 + CPerParticleFloatInput m_flInput1; // 0x01D8 + CPerParticleFloatInput m_flInput2; // 0x0348 + CParticleRemapFloatInput m_flOutputRemap; // 0x04B8 + ParticleAttributeIndex_t m_nOutputField; // 0x0628 + ParticleSetMethod_t m_nSetMethod; // 0x062C +}; +class CSeqTransition // animationsystem +{ + float32 m_flFadeInTime; // 0x0000 + float32 m_flFadeOutTime; // 0x0004 +}; +class CNmFloatSwitchNode::CDefinition : public CNmFloatValueNode::CDefinition // animlib +{ + int16 m_nSwitchValueNodeIdx; // 0x0010 + int16 m_nTrueValueNodeIdx; // 0x0012 + int16 m_nFalseValueNodeIdx; // 0x0014 + float32 m_flFalseValue; // 0x0018 + float32 m_flTrueValue; // 0x001C +}; +class CNmOrientationWarpEvent : public CNmEvent // animlib +{ +}; +class CAnimParameterManagerUpdater // animgraphlib +{ + CUtlVector< CSmartPtr< CAnimParameterBase > > m_parameters; // 0x0018 + CUtlHashtable< AnimParamID, int32 > m_idToIndexMap; // 0x0030 + CUtlHashtable< CUtlString, int32 > m_nameToIndexMap; // 0x0050 + CUtlVector< CAnimParamHandle > m_indexToHandle; // 0x0070 + CUtlVector< std::pair< CAnimParamHandle, CAnimVariant > > m_autoResetParams; // 0x0088 + CUtlHashtable< CAnimParamHandle, int16 > m_autoResetMap; // 0x00A0 +}; +class CStateUpdateData // animgraphlib +{ + CUtlString m_name; // 0x0000 + AnimScriptHandle m_hScript; // 0x0008 + CUtlVector< int32 > m_transitionIndices; // 0x0010 + CUtlVector< CStateActionUpdater > m_actions; // 0x0028 + AnimStateID m_stateID; // 0x0040 + bitfield:1 m_bIsStartState; // 0x0000 + bitfield:1 m_bIsEndState; // 0x0000 + bitfield:1 m_bIsPassthrough; // 0x0000 + bitfield:1 m_bIsPassthroughRootMotion; // 0x0000 + bitfield:1 m_bPreEvaluatePassthroughTransitionPath; // 0x0000 +}; +class C_OP_WaterImpulseRenderer : public CParticleFunctionRenderer // particles +{ + CPerParticleVecInput m_vecPos; // 0x0220 + CPerParticleFloatInput m_flRadius; // 0x08D8 + CPerParticleFloatInput m_flMagnitude; // 0x0A48 + CPerParticleFloatInput m_flShape; // 0x0BB8 + CPerParticleFloatInput m_flWindSpeed; // 0x0D28 + CPerParticleFloatInput m_flWobble; // 0x0E98 + bool m_bIsRadialWind; // 0x1008 + EventTypeSelection_t m_nEventType; // 0x100C +}; +class C_OP_SetChildControlPoints : public CParticleFunctionOperator // particles +{ + int32 m_nChildGroupID; // 0x01D0 + int32 m_nFirstControlPoint; // 0x01D4 + int32 m_nNumControlPoints; // 0x01D8 + CParticleCollectionFloatInput m_nFirstSourcePoint; // 0x01E0 + bool m_bReverse; // 0x0350 + bool m_bSetOrientation; // 0x0351 + ParticleOrientationType_t m_nOrientation; // 0x0354 +}; +class FeProxyVertexMap_t // physicslib +{ + CUtlString m_Name; // 0x0000 + float32 m_flWeight; // 0x0008 +}; +class FeQuad_t // physicslib +{ + uint16[4] nNode; // 0x0000 + float32 flSlack; // 0x0008 + Vector4D[4] vShape; // 0x000C +}; +class CNmZeroPoseTask : public CNmPoseTask // animlib +{ +}; +class CSeqSynthAnimDesc // animationsystem +{ + CBufferString m_sName; // 0x0000 + CSeqSeqDescFlag m_flags; // 0x0010 + CSeqTransition m_transition; // 0x001C + int16 m_nLocalBaseReference; // 0x0024 + int16 m_nLocalBoneMask; // 0x0026 + CUtlVector< CAnimActivity > m_activityArray; // 0x0028 +}; +class CBoneVelocityMetricEvaluator : public CMotionMetricEvaluator // animgraphlib +{ + int32 m_nBoneIndex; // 0x0050 +}; +class CFlexDesc // modellib +{ + CUtlString m_szFacs; // 0x0000 +}; +class C_INIT_RandomTrailLength : public CParticleFunctionInitializer // particles +{ + float32 m_flMinLength; // 0x01D8 + float32 m_flMaxLength; // 0x01DC + float32 m_flLengthRandExponent; // 0x01E0 +}; +class C_OP_RemapDistanceToLineSegmentBase : public CParticleFunctionOperator // particles +{ + int32 m_nCP0; // 0x01D0 + int32 m_nCP1; // 0x01D4 + float32 m_flMinInputValue; // 0x01D8 + float32 m_flMaxInputValue; // 0x01DC + bool m_bInfiniteLine; // 0x01E0 +}; +class C_OP_RemapVectorComponentToScalar : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldInput; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + int32 m_nComponent; // 0x01D8 +}; +class C_OP_RtEnvCull : public CParticleFunctionOperator // particles +{ + Vector m_vecTestDir; // 0x01D0 + Vector m_vecTestNormal; // 0x01DC + bool m_bCullOnMiss; // 0x01E8 + bool m_bStickInsteadOfCull; // 0x01E9 + char[128] m_RtEnvName; // 0x01EA + int32 m_nRTEnvCP; // 0x026C + int32 m_nComponent; // 0x0270 +}; +class C_OP_RemapNamedModelBodyPartEndCap : public C_OP_RemapNamedModelElementEndCap // particles +{ +}; +class C_OP_RampScalarLinear : public CParticleFunctionOperator // particles +{ + float32 m_RateMin; // 0x01D0 + float32 m_RateMax; // 0x01D4 + float32 m_flStartTime_min; // 0x01D8 + float32 m_flStartTime_max; // 0x01DC + float32 m_flEndTime_min; // 0x01E0 + float32 m_flEndTime_max; // 0x01E4 + ParticleAttributeIndex_t m_nField; // 0x0210 + bool m_bProportionalOp; // 0x0214 +}; +class CVMixEffectChainProcessorDesc : public CVMixBaseProcessorDesc // soundsystem_lowlevel +{ + VMixEffectChainDesc_t m_desc; // 0x0020 +}; +class VertexPositionColor_t // physicslib +{ + Vector m_vPosition; // 0x0000 +}; +class CParticleCollectionVecInput : public CParticleVecInput // particleslib +{ +}; +class CParticleVariableRef // particleslib +{ + CKV3MemberNameWithStorage m_variableName; // 0x0000 + CPulseValueFullType m_variableType; // 0x0038 +}; +class TraceSettings_t // animgraphlib +{ + float32 m_flTraceHeight; // 0x0000 + float32 m_flTraceRadius; // 0x0004 +}; +class CNmOrientationWarpNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ + int16 m_nClipReferenceNodeIdx; // 0x0010 + int16 m_nTargetValueNodeIdx; // 0x0012 + bool m_bIsOffsetNode; // 0x0014 + bool m_bIsOffsetRelativeToCharacter; // 0x0015 + bool m_bWarpTranslation; // 0x0016 + CNmRootMotionData::SamplingMode_t m_samplingMode; // 0x0017 +}; +class CNmGraphDefinition::ReferencedGraphSlot_t // animlib +{ + int16 m_nNodeIdx; // 0x0000 + int16 m_dataSlotIdx; // 0x0002 +}; +class C_OP_SetControlPointFromObjectScale : public CParticleFunctionPreEmission // particles +{ + int32 m_nCPInput; // 0x01D8 + int32 m_nCPOutput; // 0x01DC +}; +class C_OP_CPOffsetToPercentageBetweenCPs : public CParticleFunctionOperator // particles +{ + float32 m_flInputMin; // 0x01D0 + float32 m_flInputMax; // 0x01D4 + float32 m_flInputBias; // 0x01D8 + int32 m_nStartCP; // 0x01DC + int32 m_nEndCP; // 0x01E0 + int32 m_nOffsetCP; // 0x01E4 + int32 m_nOuputCP; // 0x01E8 + int32 m_nInputCP; // 0x01EC + bool m_bRadialCheck; // 0x01F0 + bool m_bScaleOffset; // 0x01F1 + Vector m_vecOffset; // 0x01F4 +}; +class CQuaternionAnimParameter : public CConcreteAnimParameter // animgraphlib +{ + Quaternion m_defaultValue; // 0x0080 + bool m_bInterpolate; // 0x0090 +}; +class CNmTargetValueNode::CDefinition : public CNmValueNode::CDefinition // animlib +{ +}; +class CPoseHandle // animgraphlib +{ + uint16 m_nIndex; // 0x0000 + PoseType_t m_eType; // 0x0002 +}; +class CSoundEnvelope // server +{ + float32 m_current; // 0x0000 + float32 m_target; // 0x0004 + float32 m_rate; // 0x0008 + bool m_forceupdate; // 0x000C +}; +class Extent // navlib +{ + VectorWS lo; // 0x0000 + VectorWS hi; // 0x000C +}; +class CNmAimCSTask : public CNmPoseTask // server +{ +}; +class C_OP_FadeIn : public CParticleFunctionOperator // particles +{ + float32 m_flFadeInTimeMin; // 0x01D0 + float32 m_flFadeInTimeMax; // 0x01D4 + float32 m_flFadeInTimeExp; // 0x01D8 + bool m_bProportional; // 0x01DC +}; +class AnimNodeOutputID // modellib +{ + uint32 m_id; // 0x0000 +}; +class ModelMeshBufferData_t // modellib +{ + int32 m_nBlockIndex; // 0x0000 + uint32 m_nElementCount; // 0x0004 + uint32 m_nElementSizeInBytes; // 0x0008 + bool m_bMeshoptCompressed; // 0x000C + bool m_bMeshoptIndexSequence; // 0x000D + bool m_bCompressedZSTD; // 0x000E + bool m_bCreateBufferSRV; // 0x000F + bool m_bCreateBufferUAV; // 0x0010 + bool m_bCreateRawBuffer; // 0x0011 + bool m_bCreatePooledBuffer; // 0x0012 + uint8 m_nBufferUsage; // 0x0013 + CUtlVector< RenderInputLayoutField_t > m_inputLayoutFields; // 0x0018 +}; +class C_INIT_RandomAlpha : public CParticleFunctionInitializer // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D8 + int32 m_nAlphaMin; // 0x01DC + int32 m_nAlphaMax; // 0x01E0 + float32 m_flAlphaRandExponent; // 0x01EC +}; +class C_OP_RenderVRHapticEvent : public CParticleFunctionRenderer // particles +{ + ParticleVRHandChoiceList_t m_nHand; // 0x0220 + int32 m_nOutputHandCP; // 0x0224 + int32 m_nOutputField; // 0x0228 + CPerParticleFloatInput m_flAmplitude; // 0x0230 +}; +class C_INIT_CreateSequentialPathV2 : public CParticleFunctionInitializer // particles +{ + CPerParticleFloatInput m_fMaxDistance; // 0x01D8 + CParticleCollectionFloatInput m_flNumToAssign; // 0x0348 + bool m_bLoop; // 0x04B8 + bool m_bCPPairs; // 0x04B9 + bool m_bSaveOffset; // 0x04BA + CPathParameters m_PathParams; // 0x04C0 +}; +class CAnimScriptBase // host +{ + bool m_bIsValid; // 0x0008 +}; +class RagdollCreationParams_t // server +{ + Vector m_vForce; // 0x0000 + int32 m_nForceBone; // 0x000C + bool m_bForceCurrentWorldTransform; // 0x0010 + bool m_bUseLRURetirement; // 0x0011 + int32 m_nHealthToGrant; // 0x0014 +}; +class C_OP_RenderPostProcessing : public CParticleFunctionRenderer // particles +{ + CPerParticleFloatInput m_flPostProcessStrength; // 0x0220 + CStrongHandle< InfoForResourceTypeCPostProcessingResource > m_hPostTexture; // 0x0390 + ParticlePostProcessPriorityGroup_t m_nPriority; // 0x0398 +}; +class C_OP_LockToSavedSequentialPath : public CParticleFunctionOperator // particles +{ + float32 m_flFadeStart; // 0x01D4 + float32 m_flFadeEnd; // 0x01D8 + bool m_bCPPairs; // 0x01DC + CPathParameters m_PathParams; // 0x01E0 +}; +class VMixDualCompressorDesc_t // soundsystem_lowlevel +{ + float32 m_flRMSTimeMS; // 0x0000 + float32 m_fldbKneeWidth; // 0x0004 + float32 m_flWetMix; // 0x0008 + bool m_bPeakMode; // 0x000C + VMixDynamicsBand_t m_bandDesc; // 0x0010 +}; +class FeSimdAnimStrayRadius_t // physicslib +{ + uint16[4][2] nNode; // 0x0000 + fltx4 flMaxDist; // 0x0010 + fltx4 flRelaxationFactor; // 0x0020 +}; +class CNmIsExternalPoseSetNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_nExternalPoseNodeIdx; // 0x0010 +}; +class RsBlendStateDesc_t // rendersystemdx11 +{ + uint32 m_srcBlendBits; // 0x0000 + uint32 m_destBlendBits; // 0x0004 + uint32 m_srcBlendAlphaBits; // 0x0008 + uint32 m_destBlendAlphaBits; // 0x000C + uint32 m_renderTargetWriteMaskBits; // 0x0010 + bitfield:30 m_blendOpBits; // 0x0000 + bitfield:1 m_bAlphaToCoverageEnable; // 0x0000 + bitfield:1 m_bIndependentBlendEnable; // 0x0000 + uint32 m_blendOpAlphaBits; // 0x0018 + uint8 m_blendEnableBits; // 0x001C + uint8 m_srgbWriteEnableBits; // 0x001D +}; +class InfoForResourceTypeCSmartProp // resourcesystem +{ +}; +class C_OP_RemapNamedModelSequenceOnceTimed : public C_OP_RemapNamedModelElementOnceTimed // particles +{ +}; +class FeVertexMapDesc_t // physicslib +{ + CUtlString sName; // 0x0000 + uint32 nNameHash; // 0x0008 + uint32 nColor; // 0x000C + uint32 nFlags; // 0x0010 + uint16 nVertexBase; // 0x0014 + uint16 nVertexCount; // 0x0016 + uint32 nMapOffset; // 0x0018 + uint32 nNodeListOffset; // 0x001C + Vector vCenterOfMass; // 0x0020 + float32 flVolumetricSolveStrength; // 0x002C + int16 nScaleSourceNode; // 0x0030 + uint16 nNodeListCount; // 0x0032 +}; +class CPathHelperUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + float32 m_flStoppingRadius; // 0x0070 + float32 m_flStoppingSpeedScale; // 0x0074 +}; +class CSkillDamage // server +{ + CSkillFloat m_flDamage; // 0x0000 + float32 m_flNPCDamageScalarVsNPC; // 0x0010 + float32 m_flPhysicsForceDamage; // 0x0014 +}; +class C_INIT_ChaoticAttractor : public CParticleFunctionInitializer // particles +{ + float32 m_flAParm; // 0x01D8 + float32 m_flBParm; // 0x01DC + float32 m_flCParm; // 0x01E0 + float32 m_flDParm; // 0x01E4 + float32 m_flScale; // 0x01E8 + float32 m_flSpeedMin; // 0x01EC + float32 m_flSpeedMax; // 0x01F0 + int32 m_nBaseCP; // 0x01F4 + bool m_bUniformSpeed; // 0x01F8 +}; +class C_INIT_SequenceFromCP : public CParticleFunctionInitializer // particles +{ + bool m_bKillUnused; // 0x01D8 + bool m_bRadiusScale; // 0x01D9 + int32 m_nCP; // 0x01DC + Vector m_vecOffset; // 0x01E0 +}; +class SampleCode // animgraphlib +{ + uint8[8] m_subCode; // 0x0000 +}; +class FootStepTrigger // animgraphlib +{ + CUtlVector< int32 > m_tags; // 0x0000 + int32 m_nFootIndex; // 0x0018 + StepPhase m_triggerPhase; // 0x001C +}; +class CPulse_DomainValue // pulse_runtime_lib +{ + PulseDomainValueType_t m_nType; // 0x0000 + CGlobalSymbolCaseSensitive m_Value; // 0x0008 + CPulseValueFullType m_RequiredRuntimeType; // 0x0010 +}; +class C_OP_SpringToVectorConstraint : public CParticleFunctionConstraint // particles +{ + CPerParticleFloatInput m_flRestLength; // 0x01D0 + CPerParticleFloatInput m_flMinDistance; // 0x0340 + CPerParticleFloatInput m_flMaxDistance; // 0x04B0 + CPerParticleFloatInput m_flRestingLength; // 0x0620 + CPerParticleVecInput m_vecAnchorVector; // 0x0790 +}; +class CParentConstraint : public CBaseConstraint // modellib +{ +}; +class CFootPositionMetricEvaluator : public CMotionMetricEvaluator // animgraphlib +{ + CUtlVector< int32 > m_footIndices; // 0x0050 + bool m_bIgnoreSlope; // 0x0068 +}; +class CFootStride // modellib +{ + CFootCycleDefinition m_definition; // 0x0000 + CFootTrajectories m_trajectories; // 0x0040 +}; +class C_INIT_InitialVelocityNoise : public CParticleFunctionInitializer // particles +{ + Vector m_vecAbsVal; // 0x01D8 + Vector m_vecAbsValInv; // 0x01E4 + CPerParticleVecInput m_vecOffsetLoc; // 0x01F0 + CPerParticleFloatInput m_flOffset; // 0x08A8 + CPerParticleVecInput m_vecOutputMin; // 0x0A18 + CPerParticleVecInput m_vecOutputMax; // 0x10D0 + CPerParticleFloatInput m_flNoiseScale; // 0x1788 + CPerParticleFloatInput m_flNoiseScaleLoc; // 0x18F8 + CParticleTransformInput m_TransformInput; // 0x1A68 + bool m_bIgnoreDt; // 0x1AD0 +}; +class C_OP_EndCapTimedDecay : public CParticleFunctionOperator // particles +{ + float32 m_flDecayTime; // 0x01D0 +}; +class C_OP_MovementMaintainOffset : public CParticleFunctionOperator // particles +{ + Vector m_vecOffset; // 0x01D0 + int32 m_nCP; // 0x01DC + bool m_bRadiusScale; // 0x01E0 +}; +class CParticleInput // particleslib +{ +}; +class CNmFixedWeightBoneMaskNode::CDefinition : public CNmBoneMaskValueNode::CDefinition // animlib +{ + float32 m_flBoneWeight; // 0x0010 +}; +class CMotionSearchDB // animgraphlib +{ + CMotionSearchNode m_rootNode; // 0x0000 + CProductQuantizer m_residualQuantizer; // 0x0080 + CUtlVector< MotionDBIndex > m_codeIndices; // 0x00A0 +}; +class InfoForResourceTypeCVMixListResource // resourcesystem +{ +}; +class CFloatMovingAverage // server +{ +}; +class CFootCycleMetricEvaluator : public CMotionMetricEvaluator // animgraphlib +{ + CUtlVector< int32 > m_footIndices; // 0x0050 +}; +class NmCompressionSettings_t::QuantizationRange_t // animlib +{ + float32 m_flRangeStart; // 0x0000 + float32 m_flRangeLength; // 0x0004 +}; +class CNPCPhysicsHull // modellib +{ + CGlobalSymbol m_sName; // 0x0000 + NPCPhysicsHullType_t m_eType; // 0x0008 + float32 m_flCapsuleHeight; // 0x000C + float32 m_flCapsuleRadius; // 0x0010 + Vector m_vCapsuleCenter1; // 0x0014 + Vector m_vCapsuleCenter2; // 0x0020 + float32 m_flGroundBoxHeight; // 0x002C + float32 m_flGroundBoxWidth; // 0x0030 +}; +class VariableInfo_t // mathlib_extended +{ + CUtlString m_name; // 0x0000 + CUtlStringToken m_nameToken; // 0x0008 + FuseVariableIndex_t m_nIndex; // 0x000C + uint8 m_nNumComponents; // 0x000E + FuseVariableType_t m_eVarType; // 0x000F + FuseVariableAccess_t m_eAccess; // 0x0010 +}; +class C_OP_RadiusDecay : public CParticleFunctionOperator // particles +{ + float32 m_flMinRadius; // 0x01D0 +}; +class VMixDelayDesc_t // soundsystem_lowlevel +{ + VMixFilterDesc_t m_feedbackFilter; // 0x0000 + bool m_bEnableFilter; // 0x0010 + float32 m_flDelay; // 0x0014 + float32 m_flDirectGain; // 0x0018 + float32 m_flDelayGain; // 0x001C + float32 m_flFeedbackGain; // 0x0020 + float32 m_flWidth; // 0x0024 +}; +class FeTaperedCapsuleStretch_t // physicslib +{ + uint16[2] nNode; // 0x0000 + uint16 nCollisionMask; // 0x0004 + uint16 nDummy; // 0x0006 + float32[2] flRadius; // 0x0008 +}; +class RnNode_t // physicslib +{ + Vector m_vMin; // 0x0000 + uint32 m_nChildren; // 0x000C + Vector m_vMax; // 0x0010 + uint32 m_nTriangleOffset; // 0x001C +}; +class CTransitionUpdateData // animgraphlib +{ + uint8 m_srcStateIndex; // 0x0000 + uint8 m_destStateIndex; // 0x0001 + bitfield:7 m_nHandshakeMaskToDisableFirst; // 0x0000 + bitfield:1 m_bDisabled; // 0x0000 +}; +class CompositeMaterial_t // compositematerialslib +{ + KeyValues3 m_TargetKVs; // 0x0008 + KeyValues3 m_PreGenerationKVs; // 0x0018 + KeyValues3 m_FinalKVs; // 0x0058 + CUtlVector< GeneratedTextureHandle_t > m_vecGeneratedTextures; // 0x0080 +}; +class C_OP_SetControlPointFieldFromVectorExpression : public CParticleFunctionPreEmission // particles +{ + VectorFloatExpressionType_t m_nExpression; // 0x01D8 + CParticleCollectionVecInput m_vecInput1; // 0x01E0 + CParticleCollectionVecInput m_vecInput2; // 0x0898 + CPerParticleFloatInput m_flLerp; // 0x0F50 + CParticleRemapFloatInput m_flOutputRemap; // 0x10C0 + int32 m_nOutputCP; // 0x1230 + int32 m_nOutVectorField; // 0x1234 +}; +class C_INIT_PointList : public CParticleFunctionInitializer // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D8 + CUtlVector< PointDefinition_t > m_pointList; // 0x01E0 + bool m_bPlaceAlongPath; // 0x01F8 + bool m_bClosedLoop; // 0x01F9 + int32 m_nNumPointsAlongPath; // 0x01FC +}; +class CSSDSMsg_ViewRender // scenesystem +{ + SceneViewId_t m_viewId; // 0x0000 + CUtlString m_ViewName; // 0x0010 +}; +class FeSDFRigid_t // physicslib +{ + Vector vLocalMin; // 0x0000 + Vector vLocalMax; // 0x000C + float32 flBounciness; // 0x0018 + uint16 nNode; // 0x001C + uint16 nCollisionMask; // 0x001E + uint16 nVertexMapIndex; // 0x0020 + uint16 nFlags; // 0x0022 + CUtlVector< float32 > m_Distances; // 0x0028 + int32 m_nWidth; // 0x0040 + int32 m_nHeight; // 0x0044 + int32 m_nDepth; // 0x0048 +}; +class PulseRuntimeConstantIndex_t // pulse_runtime_lib +{ + int16 m_Value; // 0x0000 +}; +class EventClientFrameSimulate_t // engine2 +{ + EngineLoopState_t m_LoopState; // 0x0000 + float32 m_flRealTime; // 0x0028 + float32 m_flFrameTime; // 0x002C + bool m_bScheduleSendTickPacket; // 0x0030 +}; +class C_OP_DistanceCull : public CParticleFunctionOperator // particles +{ + int32 m_nControlPoint; // 0x01D0 + Vector m_vecPointOffset; // 0x01D4 + CParticleCollectionFloatInput m_flDistance; // 0x01E0 + bool m_bCullInside; // 0x0350 + ParticleAttributeIndex_t m_nAttribute; // 0x0354 +}; +class C_OP_SetVec : public CParticleFunctionOperator // particles +{ + CPerParticleVecInput m_InputValue; // 0x01D0 + ParticleAttributeIndex_t m_nOutputField; // 0x0888 + ParticleSetMethod_t m_nSetMethod; // 0x088C + CPerParticleFloatInput m_Lerp; // 0x0890 + bool m_bNormalizedOutput; // 0x0A00 +}; +class CZeroPoseUpdateNode : public CLeafUpdateNode // animgraphlib +{ +}; +class MovementGaitId_t // modellib +{ + CGlobalSymbol m_sId; // 0x0000 +}; +class CNmGraphDefinition::ExternalPoseSlot_t // animlib +{ + int16 m_nNodeIdx; // 0x0000 + CGlobalSymbol m_slotID; // 0x0008 +}; +class CAnimEncodeDifference // animationsystem +{ + CUtlVector< CAnimBoneDifference > m_boneArray; // 0x0000 + CUtlVector< CAnimMorphDifference > m_morphArray; // 0x0018 + CUtlVector< CAnimUserDifference > m_userArray; // 0x0030 + CUtlVector< uint8 > m_bHasRotationBitArray; // 0x0048 + CUtlVector< uint8 > m_bHasMovementBitArray; // 0x0060 + CUtlVector< uint8 > m_bHasMorphBitArray; // 0x0078 + CUtlVector< uint8 > m_bHasUserBitArray; // 0x0090 +}; +class CFlexOp // modellib +{ + FlexOpCode_t m_OpCode; // 0x0000 + int32 m_Data; // 0x0004 +}; +class CAnimParamHandleMap // animgraphlib +{ + CUtlHashtable< uint16, int16 > m_list; // 0x0000 +}; +class CAnimDesc // animationsystem +{ + CBufferString m_name; // 0x0000 + CAnimDesc_Flag m_flags; // 0x0010 + float32 fps; // 0x0018 + CAnimEncodedFrames m_Data; // 0x0020 + CUtlVector< CAnimMovement > m_movementArray; // 0x00F8 + CTransform m_xInitialOffset; // 0x0110 + CUtlVector< CAnimEventDefinition > m_eventArray; // 0x0130 + CUtlVector< CAnimActivity > m_activityArray; // 0x0148 + CUtlVector< CAnimLocalHierarchy > m_hierarchyArray; // 0x0160 + float32 framestalltime; // 0x0178 + Vector m_vecRootMin; // 0x017C + Vector m_vecRootMax; // 0x0188 + CUtlVector< Vector > m_vecBoneWorldMin; // 0x0198 + CUtlVector< Vector > m_vecBoneWorldMax; // 0x01B0 + CAnimSequenceParams m_sequenceParams; // 0x01C8 +}; +class CBoneConstraintDotToMorph : public CBoneConstraintBase // modellib +{ + CUtlString m_sBoneName; // 0x0020 + CUtlString m_sTargetBoneName; // 0x0028 + CUtlString m_sMorphChannelName; // 0x0030 + float32[4] m_flRemap; // 0x0038 +}; +class CompMatMutatorCondition_t // compositematerialslib +{ + CompMatPropertyMutatorConditionType_t m_nMutatorCondition; // 0x0000 + CUtlString m_strMutatorConditionContainerName; // 0x0008 + CUtlString m_strMutatorConditionContainerVarName; // 0x0010 + CUtlString m_strMutatorConditionContainerVarValue; // 0x0018 + bool m_bPassWhenTrue; // 0x0020 +}; +class C_OP_MaintainSequentialPath : public CParticleFunctionOperator // particles +{ + float32 m_fMaxDistance; // 0x01D0 + float32 m_flNumToAssign; // 0x01D4 + float32 m_flCohesionStrength; // 0x01D8 + float32 m_flTolerance; // 0x01DC + bool m_bLoop; // 0x01E0 + bool m_bUseParticleCount; // 0x01E1 + CPathParameters m_PathParams; // 0x01F0 +}; +class CSSDSMsg_ViewTarget // scenesystem +{ + CUtlString m_Name; // 0x0000 + uint64 m_TextureId; // 0x0008 + int32 m_nWidth; // 0x0010 + int32 m_nHeight; // 0x0014 + int32 m_nRequestedWidth; // 0x0018 + int32 m_nRequestedHeight; // 0x001C + int32 m_nNumMipLevels; // 0x0020 + int32 m_nDepth; // 0x0024 + int32 m_nMultisampleNumSamples; // 0x0028 + int32 m_nFormat; // 0x002C +}; +class CSSDSMsg_PreLayer : public CSSDSMsg_LayerBase // scenesystem +{ +}; +class SteamAudioReverbCompressionSettings_t // steamaudio +{ + bool m_bEnableCompression; // 0x0000 + float32 m_flQuality; // 0x0004 +}; +class WeightList // animgraphlib +{ + CUtlString m_name; // 0x0000 + CUtlVector< float32 > m_weights; // 0x0008 +}; +class MoodAnimationLayer_t // animationsystem +{ + CUtlString m_sName; // 0x0000 + bool m_bActiveListening; // 0x0008 + bool m_bActiveTalking; // 0x0009 + CUtlVector< MoodAnimation_t > m_layerAnimations; // 0x0010 + CRangeFloat m_flIntensity; // 0x0028 + CRangeFloat m_flDurationScale; // 0x0030 + bool m_bScaleWithInts; // 0x0038 + CRangeFloat m_flNextStart; // 0x003C + CRangeFloat m_flStartOffset; // 0x0044 + CRangeFloat m_flEndOffset; // 0x004C + float32 m_flFadeIn; // 0x0054 + float32 m_flFadeOut; // 0x0058 +}; +class CCurrentVelocityMetricEvaluator : public CMotionMetricEvaluator // animgraphlib +{ +}; +class C_OP_FadeOut : public CParticleFunctionOperator // particles +{ + float32 m_flFadeOutTimeMin; // 0x01D0 + float32 m_flFadeOutTimeMax; // 0x01D4 + float32 m_flFadeOutTimeExp; // 0x01D8 + float32 m_flFadeBias; // 0x01DC + bool m_bProportional; // 0x0210 + bool m_bEaseInAndOut; // 0x0211 +}; +class VMixEQ8Desc_t // soundsystem_lowlevel +{ + VMixFilterDesc_t[8] m_stages; // 0x0000 +}; +class CNmPassthroughNode::CDefinition : public CNmPoseNode::CDefinition // animlib +{ + int16 m_nChildNodeIdx; // 0x0010 +}; +class CFootAdjustmentUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + CUtlVector< HSequence > m_clips; // 0x0078 + CPoseHandle m_hBasePoseCacheHandle; // 0x0090 + CAnimParamHandle m_facingTarget; // 0x0094 + float32 m_flTurnTimeMin; // 0x0098 + float32 m_flTurnTimeMax; // 0x009C + float32 m_flStepHeightMax; // 0x00A0 + float32 m_flStepHeightMaxAngle; // 0x00A4 + bool m_bResetChild; // 0x00A8 + bool m_bAnimationDriven; // 0x00A9 +}; +class HSequence // animationsystem +{ + int32 m_Value; // 0x0000 +}; +class CAudioAnimTag : public CAnimTagBase // animgraphlib +{ + CUtlString m_clipName; // 0x0058 + CUtlString m_attachmentName; // 0x0060 + float32 m_flVolume; // 0x0068 + bool m_bStopWhenTagEnds; // 0x006C + bool m_bStopWhenGraphEnds; // 0x006D + bool m_bPlayOnServer; // 0x006E + bool m_bPlayOnClient; // 0x006F +}; +class C_OP_TwistAroundAxis : public CParticleFunctionForce // particles +{ + float32 m_fForceAmount; // 0x01E0 + Vector m_TwistAxis; // 0x01E4 + bool m_bLocalSpace; // 0x01F0 + int32 m_nControlPointNumber; // 0x01F4 +}; +class CParticleFunctionRenderer : public CParticleFunction // particles +{ + CParticleVisibilityInputs VisibilityInputs; // 0x01D0 + bool m_bCannotBeRefracted; // 0x0218 + bool m_bSkipRenderingOnMobile; // 0x0219 +}; +class C_INIT_PositionPlaceOnGround : public CParticleFunctionInitializer // particles +{ + CPerParticleFloatInput m_flOffset; // 0x01D8 + CPerParticleFloatInput m_flMaxTraceLength; // 0x0348 + char[128] m_CollisionGroupName; // 0x04B8 + ParticleTraceSet_t m_nTraceSet; // 0x0538 + ParticleTraceMissBehavior_t m_nTraceMissBehavior; // 0x0548 + bool m_bIncludeWater; // 0x054C + bool m_bSetNormal; // 0x054D + ParticleAttributeIndex_t m_nAttribute; // 0x0550 + bool m_bSetPXYZOnly; // 0x0554 + bool m_bTraceAlongNormal; // 0x0555 + ParticleAttributeIndex_t m_nTraceDirectionAttribute; // 0x0558 + bool m_bOffsetonColOnly; // 0x055C + float32 m_flOffsetByRadiusFactor; // 0x0560 + int32 m_nPreserveOffsetCP; // 0x0564 + int32 m_nIgnoreCP; // 0x0568 +}; +class C_INIT_AgeNoise : public CParticleFunctionInitializer // particles +{ + bool m_bAbsVal; // 0x01D8 + bool m_bAbsValInv; // 0x01D9 + float32 m_flOffset; // 0x01DC + float32 m_flAgeMin; // 0x01E0 + float32 m_flAgeMax; // 0x01E4 + float32 m_flNoiseScale; // 0x01E8 + float32 m_flNoiseScaleLoc; // 0x01EC + Vector m_vecOffsetLoc; // 0x01F0 +}; +class CModelConfigElement_SetRenderColor : public CModelConfigElement // modellib +{ + Color m_Color; // 0x0048 +}; +class CParticleFunctionForce : public CParticleFunction // particles +{ +}; +class C_OP_RampScalarSpline : public CParticleFunctionOperator // particles +{ + float32 m_RateMin; // 0x01D0 + float32 m_RateMax; // 0x01D4 + float32 m_flStartTime_min; // 0x01D8 + float32 m_flStartTime_max; // 0x01DC + float32 m_flEndTime_min; // 0x01E0 + float32 m_flEndTime_max; // 0x01E4 + float32 m_flBias; // 0x01E8 + ParticleAttributeIndex_t m_nField; // 0x0210 + bool m_bProportionalOp; // 0x0214 + bool m_bEaseOut; // 0x0215 +}; +class CSoundEventMetaData // soundsystem +{ + CStrongHandle< InfoForResourceTypeCVMixListResource > m_soundEventVMix; // 0x0000 +}; +class CVoiceContainerStaticAdditiveSynth::CGainScalePerInstance // soundsystem_voicecontainers +{ + float32 m_flMinVolume; // 0x0000 + int32 m_nInstancesAtMinVolume; // 0x0004 + float32 m_flMaxVolume; // 0x0008 + int32 m_nInstancesAtMaxVolume; // 0x000C +}; +class FeBuildBoxRigid_t : public FeBoxRigid_t // physicslib +{ + int32 m_nPriority; // 0x0040 + uint32 m_nVertexMapHash; // 0x0044 + uint32 m_nAntitunnelGroupBits; // 0x0048 +}; +class constraint_axislimit_t // vphysics2 +{ + float32 flMinRotation; // 0x0000 + float32 flMaxRotation; // 0x0004 + float32 flMotorTargetAngSpeed; // 0x0008 + float32 flMotorMaxTorque; // 0x000C +}; +class StanceInfo_t // animgraphlib +{ + Vector m_vPosition; // 0x0000 + float32 m_flDirection; // 0x000C +}; +class CDemoSettingsComponentUpdater : public CAnimComponentUpdater // animgraphlib +{ + CAnimDemoCaptureSettings m_settings; // 0x0030 +}; +class IClientAlphaProperty // client +{ +}; +class CNavVolumeBreadthFirstSearch : public CNavVolumeCalculatedVector // server +{ + Vector m_vStartPos; // 0x00A8 + float32 m_flSearchDist; // 0x00B4 +}; +class AggregateInstanceStreamOnDiskData_t // worldrenderer +{ + uint32 m_DecodedSize; // 0x0000 + CUtlBinaryBlock m_BufferData; // 0x0008 +}; +class CAudioPhonemeTag // soundsystem_voicecontainers +{ + float32 m_flStartTime; // 0x0000 + float32 m_flEndTime; // 0x0004 + int32 m_nPhonemeCode; // 0x0008 +}; +class CNmCachedVectorNode::CDefinition : public CNmVectorValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 + NmCachedValueMode_t m_mode; // 0x0014 +}; +class IKSolverSettings_t // animgraphlib +{ + IKSolverType m_SolverType; // 0x0000 + int32 m_nNumIterations; // 0x0004 + EIKEndEffectorRotationFixUpMode m_EndEffectorRotationFixUpMode; // 0x0008 +}; +class InfoForResourceTypeCPanoramaDynamicImages // resourcesystem +{ +}; +class ConstraintSoundInfo // server +{ + VelocitySampler m_vSampler; // 0x0008 + SimpleConstraintSoundProfile m_soundProfile; // 0x0020 + Vector m_forwardAxis; // 0x0040 + CUtlSymbolLarge m_iszTravelSoundFwd; // 0x0050 + CUtlSymbolLarge m_iszTravelSoundBack; // 0x0058 + CUtlSymbolLarge m_iszReversalSoundSmall; // 0x0078 + CUtlSymbolLarge m_iszReversalSoundMedium; // 0x0080 + CUtlSymbolLarge m_iszReversalSoundLarge; // 0x0088 + bool m_bPlayTravelSound; // 0x0090 + bool m_bPlayReversalSound; // 0x0091 +}; +class C_OP_RemapSpeedtoCP : public CParticleFunctionPreEmission // particles +{ + int32 m_nInControlPointNumber; // 0x01D8 + int32 m_nOutControlPointNumber; // 0x01DC + int32 m_nField; // 0x01E0 + float32 m_flInputMin; // 0x01E4 + float32 m_flInputMax; // 0x01E8 + float32 m_flOutputMin; // 0x01EC + float32 m_flOutputMax; // 0x01F0 + bool m_bUseDeltaV; // 0x01F4 +}; +class C_INIT_CheckParticleForWater : public CParticleFunctionInitializer // particles +{ + CPerParticleFloatInput m_flRadius; // 0x01D8 + ParticleAttributeIndex_t m_nFieldOutput; // 0x0348 + CParticleRemapFloatInput m_flOutputRemap; // 0x0350 + ParticleSetMethod_t m_nSetMethod; // 0x04C0 +}; +class CFeNamedJiggleBone // physicslib +{ + CUtlString m_strParentBone; // 0x0000 + CTransform m_transform; // 0x0010 + uint32 m_nJiggleParent; // 0x0030 + CFeJiggleBone m_jiggleBone; // 0x0034 +}; +class PulseRuntimeInvokeIndex_t // pulse_runtime_lib +{ + int32 m_Value; // 0x0000 +}; +class InfoForResourceTypeCNmSkeleton // resourcesystem +{ +}; +class CVMixVsndInput : public CVMixInputBase // soundsystem_lowlevel +{ + CUtlString m_defaultValue; // 0x0010 + int32 m_nProcessor; // 0x0018 +}; +class CNmAimCSNode::CDefinition : public CNmPassthroughNode::CDefinition // server +{ + int16 m_nVerticalAngleNodeIdx; // 0x0018 + int16 m_nHorizontalAngleNodeIdx; // 0x001A + int16 m_nWeaponCategoryNodeIdx; // 0x001C + int16 m_nWeaponTypeNodeIdx; // 0x001E + int16 m_nIsWeaponActionActiveNodeIdx; // 0x0020 + int16 m_nWeaponDropNodeIdx; // 0x0022 + int16 m_nEnabledNodeIdx; // 0x0024 + float32 m_flBlendTimeSeconds; // 0x0028 + float32 m_flReduceRangeTimeSeconds; // 0x002C +}; +class C_OP_OscillateScalarSimple : public CParticleFunctionOperator // particles +{ + float32 m_Rate; // 0x01D0 + float32 m_Frequency; // 0x01D4 + ParticleAttributeIndex_t m_nField; // 0x01D8 + float32 m_flOscMult; // 0x01DC + float32 m_flOscAdd; // 0x01E0 +}; +class C_OP_SetParentControlPointsToChildCP : public CParticleFunctionPreEmission // particles +{ + int32 m_nChildGroupID; // 0x01D8 + int32 m_nChildControlPoint; // 0x01DC + int32 m_nNumControlPoints; // 0x01E0 + int32 m_nFirstSourcePoint; // 0x01E4 + bool m_bSetOrientation; // 0x01E8 +}; +class C_INIT_RandomLifeTime : public CParticleFunctionInitializer // particles +{ + float32 m_fLifetimeMin; // 0x01D8 + float32 m_fLifetimeMax; // 0x01DC + float32 m_fLifetimeRandExponent; // 0x01E0 +}; +class C_OP_SetRandomControlPointPosition : public CParticleFunctionPreEmission // particles +{ + bool m_bUseWorldLocation; // 0x01D8 + bool m_bOrient; // 0x01D9 + int32 m_nCP1; // 0x01DC + int32 m_nHeadLocation; // 0x01E0 + CParticleCollectionFloatInput m_flReRandomRate; // 0x01E8 + Vector m_vecCPMinPos; // 0x0358 + Vector m_vecCPMaxPos; // 0x0364 + CParticleCollectionFloatInput m_flInterpolation; // 0x0370 +}; +class C_OP_ScreenSpaceDistanceToEdge : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + CPerParticleFloatInput m_flMaxDistFromEdge; // 0x01D8 + CParticleRemapFloatInput m_flOutputRemap; // 0x0348 + ParticleSetMethod_t m_nSetMethod; // 0x04B8 +}; +class C_OP_SetFloatCollection : public CParticleFunctionOperator // particles +{ + CParticleCollectionFloatInput m_InputValue; // 0x01D0 + ParticleAttributeIndex_t m_nOutputField; // 0x0340 + ParticleSetMethod_t m_nSetMethod; // 0x0344 + CParticleCollectionFloatInput m_Lerp; // 0x0348 +}; +class C_OP_ColorAdjustHSL : public CParticleFunctionOperator // particles +{ + CPerParticleFloatInput m_flHueAdjust; // 0x01D0 + CPerParticleFloatInput m_flSaturationAdjust; // 0x0340 + CPerParticleFloatInput m_flLightnessAdjust; // 0x04B0 +}; +class C_OP_SequenceFromModel : public CParticleFunctionOperator // particles +{ + int32 m_nControlPointNumber; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 + ParticleAttributeIndex_t m_nFieldOutputAnim; // 0x01D8 + float32 m_flInputMin; // 0x01DC + float32 m_flInputMax; // 0x01E0 + float32 m_flOutputMin; // 0x01E4 + float32 m_flOutputMax; // 0x01E8 + ParticleSetMethod_t m_nSetMethod; // 0x01EC +}; +class SceneViewId_t // scenesystem +{ + uint64 m_nViewId; // 0x0000 + uint64 m_nFrameCount; // 0x0008 +}; +class CSequenceGroupData // animationsystem +{ + CBufferString m_sName; // 0x0010 + uint32 m_nFlags; // 0x0020 + CUtlVector< CBufferString > m_localSequenceNameArray; // 0x0028 + CUtlVector< CSeqS1SeqDesc > m_localS1SeqDescArray; // 0x0040 + CUtlVector< CSeqS1SeqDesc > m_localMultiSeqDescArray; // 0x0058 + CUtlVector< CSeqSynthAnimDesc > m_localSynthAnimDescArray; // 0x0070 + CUtlVector< CSeqCmdSeqDesc > m_localCmdSeqDescArray; // 0x0088 + CUtlVector< CSeqBoneMaskList > m_localBoneMaskArray; // 0x00A0 + CUtlVector< CSeqScaleSet > m_localScaleSetArray; // 0x00B8 + CUtlVector< CBufferString > m_localBoneNameArray; // 0x00D0 + CBufferString m_localNodeName; // 0x00E8 + CUtlVector< CSeqPoseParamDesc > m_localPoseParamArray; // 0x00F8 + KeyValues3 m_keyValues; // 0x0110 + CUtlVector< CSeqIKLock > m_localIKAutoplayLockArray; // 0x0120 +}; +class EventClientProcessInput_t // engine2 +{ + EngineLoopState_t m_LoopState; // 0x0000 + float32 m_flRealTime; // 0x0028 + float32 m_flTickInterval; // 0x002C + float64 m_flTickStartTime; // 0x0030 +}; +class C_OP_Noise : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + float32 m_flOutputMin; // 0x01D4 + float32 m_flOutputMax; // 0x01D8 + float32 m_fl4NoiseScale; // 0x01DC + bool m_bAdditive; // 0x01E0 + float32 m_flNoiseAnimationTimeScale; // 0x01E4 +}; +class CParticleFunctionInitializer : public CParticleFunction // particles +{ + int32 m_nAssociatedEmitterIndex; // 0x01D0 +}; +class CNmVectorNegateNode::CDefinition : public CNmVectorValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 +}; +class CSoundPatch // server +{ + CSoundEnvelope m_pitch; // 0x0008 + CSoundEnvelope m_volume; // 0x0018 + float32 m_shutdownTime; // 0x003C + float32 m_flLastTime; // 0x0040 + CUtlSymbolLarge m_iszSoundScriptName; // 0x0048 + CHandle< CBaseEntity > m_hEnt; // 0x0050 + CEntityIndex m_soundEntityIndex; // 0x0054 + Vector m_soundOrigin; // 0x0058 + int32 m_isPlaying; // 0x0064 + CCopyRecipientFilter m_Filter; // 0x0068 + float32 m_flCloseCaptionDuration; // 0x00A0 + bool m_bUpdatedSoundOrigin; // 0x00A4 + CUtlSymbolLarge m_iszClassName; // 0x00A8 +}; +class C_INIT_VelocityFromCP : public CParticleFunctionInitializer // particles +{ + CParticleCollectionVecInput m_velocityInput; // 0x01D8 + CParticleTransformInput m_transformInput; // 0x0890 + float32 m_flVelocityScale; // 0x08F8 + bool m_bDirectionOnly; // 0x08FC +}; +class C_OP_RemapVectortoCP : public CParticleFunctionOperator // particles +{ + int32 m_nOutControlPointNumber; // 0x01D0 + ParticleAttributeIndex_t m_nFieldInput; // 0x01D4 + int32 m_nParticleNumber; // 0x01D8 +}; +class C_INIT_ModelCull : public CParticleFunctionInitializer // particles +{ + int32 m_nControlPointNumber; // 0x01D8 + bool m_bBoundBox; // 0x01DC + bool m_bCullOutside; // 0x01DD + bool m_bUseBones; // 0x01DE + char[128] m_HitboxSetName; // 0x01DF +}; +class SceneObject_t // worldrenderer +{ + uint32 m_nObjectID; // 0x0000 + Vector4D[3] m_vTransform; // 0x0004 + float32 m_flFadeStartDistance; // 0x0034 + float32 m_flFadeEndDistance; // 0x0038 + Vector4D m_vTintColor; // 0x003C + CUtlString m_skin; // 0x0050 + ObjectTypeFlags_t m_nObjectTypeFlags; // 0x0058 + Vector m_vLightingOrigin; // 0x005C + int16 m_nOverlayRenderOrder; // 0x0068 + int16 m_nLODOverride; // 0x006A + int32 m_nCubeMapPrecomputedHandshake; // 0x006C + int32 m_nLightProbeVolumePrecomputedHandshake; // 0x0070 + CStrongHandle< InfoForResourceTypeCModel > m_renderableModel; // 0x0078 + CStrongHandle< InfoForResourceTypeCRenderMesh > m_renderable; // 0x0080 +}; +class MaterialParamVector_t : public MaterialParam_t // materialsystem2 +{ + Vector4D m_value; // 0x0008 +}; +class InfoForResourceTypeCCompositeMaterialKit // resourcesystem +{ +}; +class CPlayerSprayDecalRenderHelper // client +{ +}; +class C_INIT_RandomRotationSpeed : public CGeneralRandomRotation // particles +{ +}; +class ParticleControlPointDriver_t // particles +{ + ParticleParamID_t m_iControlPoint; // 0x0000 + ParticleAttachment_t m_iAttachType; // 0x0010 + CUtlString m_attachmentName; // 0x0018 + Vector m_vecOffset; // 0x0020 + QAngle m_angOffset; // 0x002C + CUtlString m_entityName; // 0x0038 +}; +class C_OP_ExternalWindForce : public CParticleFunctionForce // particles +{ + CPerParticleVecInput m_vecSamplePosition; // 0x01E0 + CPerParticleVecInput m_vecScale; // 0x0898 + bool m_bSampleWind; // 0x0F50 + bool m_bSampleWater; // 0x0F51 + bool m_bDampenNearWaterPlane; // 0x0F52 + bool m_bSampleGravity; // 0x0F53 + CPerParticleVecInput m_vecGravityForce; // 0x0F58 + bool m_bUseBasicMovementGravity; // 0x1610 + CPerParticleFloatInput m_flLocalGravityScale; // 0x1618 + CPerParticleFloatInput m_flLocalBuoyancyScale; // 0x1788 + CPerParticleVecInput m_vecBuoyancyForce; // 0x18F8 +}; +class NodeData_t // worldrenderer +{ + int32 m_nParent; // 0x0000 + Vector m_vOrigin; // 0x0004 + Vector m_vMinBounds; // 0x0010 + Vector m_vMaxBounds; // 0x001C + float32 m_flMinimumDistance; // 0x0028 + CUtlVector< int32 > m_ChildNodeIndices; // 0x0030 + CUtlString m_worldNodePrefix; // 0x0048 +}; +class FeNodeReverseOffset_t // physicslib +{ + Vector vOffset; // 0x0000 + uint16 nBoneCtrl; // 0x000C + uint16 nTargetNode; // 0x000E +}; +class ParticleNamedValueConfiguration_t // particleslib +{ + CUtlString m_ConfigName; // 0x0000 + KeyValues3 m_ConfigValue; // 0x0008 + CUtlString m_BoundValuePath; // 0x0018 + ParticleAttachment_t m_iAttachType; // 0x0020 + CUtlString m_strEntityScope; // 0x0028 + CUtlString m_strAttachmentName; // 0x0030 +}; +class CSimpleStopwatch : public CStopwatchBase // server +{ +}; +class CRandomNumberGeneratorParameters // particles +{ + bool m_bDistributeEvenly; // 0x0000 + int32 m_nSeed; // 0x0004 +}; +class C_OP_MovementRigidAttachToCP : public CParticleFunctionOperator // particles +{ + int32 m_nControlPointNumber; // 0x01D0 + int32 m_nScaleControlPoint; // 0x01D4 + int32 m_nScaleCPField; // 0x01D8 + ParticleAttributeIndex_t m_nFieldInput; // 0x01DC + ParticleAttributeIndex_t m_nFieldOutput; // 0x01E0 + bool m_bOffsetLocal; // 0x01E4 +}; +class RnSphereDesc_t : public RnShapeDesc_t // physicslib +{ + SphereBase_t< float32 > m_Sphere; // 0x0018 +}; +class CConstraintTarget // modellib +{ + Quaternion m_qOffset; // 0x0020 + Vector m_vOffset; // 0x0030 + uint32 m_nBoneHash; // 0x003C + CUtlString m_sName; // 0x0040 + float32 m_flWeight; // 0x0048 + bool m_bIsAttachment; // 0x0059 +}; +class CNmChainSolverTask : public CNmPoseTask // animlib +{ + int32 m_nEffectorBoneIdx; // 0x0058 + int32 m_nEffectorTargetBoneIdx; // 0x005C + CTransform m_targetTransform; // 0x0060 + int32 m_nNumBonesInChain; // 0x0080 + CNmTarget m_effectorTarget; // 0x0090 + NmIKBlendMode_t m_blendMode; // 0x00C0 + float32 m_flBlendWeight; // 0x00C4 + bool m_bIsTargetInWorldSpace; // 0x00C8 + bool m_bIsRunningFromDeserializedData; // 0x00C9 + CGlobalSymbol m_debugEffectorBoneID; // 0x00D0 + CTransform m_chainStartTransformMS; // 0x00E0 + CTransform m_debugRequestedTargetTransformMS; // 0x0100 + float32 m_debugTotalChainLength; // 0x0120 +}; +class EventModInitialized_t // engine2 +{ +}; +class EventClientPollNetworking_t // engine2 +{ + int32 m_nTickCount; // 0x0000 +}; +class InfoForResourceTypeCRenderMesh // resourcesystem +{ +}; +class CRangeInt // tier2 +{ + int32[2] m_pValue; // 0x0000 +}; +class C_OP_ClientPhysics : public CParticleFunctionRenderer // particles +{ + CUtlString m_strPhysicsType; // 0x0220 + bool m_bStartAsleep; // 0x0228 + CParticleCollectionFloatInput m_flPlayerWakeRadius; // 0x0230 + CParticleCollectionFloatInput m_flVehicleWakeRadius; // 0x03A0 + bool m_bUseHighQualitySimulation; // 0x0510 + int32 m_nMaxParticleCount; // 0x0514 + bool m_bRespectExclusionVolumes; // 0x0518 + bool m_bKillParticles; // 0x0519 + bool m_bDeleteSim; // 0x051A + int32 m_nControlPoint; // 0x051C + int32 m_nForcedSimId; // 0x0520 + ParticleColorBlendType_t m_nColorBlendType; // 0x0524 + ParticleAttrBoxFlags_t m_nForcedStatusEffects; // 0x0528 +}; +class CNetworkVelocityVector // server +{ + CNetworkedQuantizedFloat m_vecX; // 0x0010 + CNetworkedQuantizedFloat m_vecY; // 0x0018 + CNetworkedQuantizedFloat m_vecZ; // 0x0020 +}; +class C_INIT_SetVectorAttributeToVectorExpression : public CParticleFunctionInitializer // particles +{ + VectorExpressionType_t m_nExpression; // 0x01D8 + CPerParticleVecInput m_vInput1; // 0x01E0 + CPerParticleVecInput m_vInput2; // 0x0898 + CPerParticleFloatInput m_flLerp; // 0x0F50 + ParticleAttributeIndex_t m_nOutputField; // 0x10C0 + ParticleSetMethod_t m_nSetMethod; // 0x10C4 + bool m_bNormalizedOutput; // 0x10C8 +}; +class C_OP_OscillateVector : public CParticleFunctionOperator // particles +{ + Vector m_RateMin; // 0x01D0 + Vector m_RateMax; // 0x01DC + Vector m_FrequencyMin; // 0x01E8 + Vector m_FrequencyMax; // 0x01F4 + ParticleAttributeIndex_t m_nField; // 0x0200 + bool m_bProportional; // 0x0204 + bool m_bProportionalOp; // 0x0205 + bool m_bOffset; // 0x0206 + float32 m_flStartTime_min; // 0x0208 + float32 m_flStartTime_max; // 0x020C + float32 m_flEndTime_min; // 0x0210 + float32 m_flEndTime_max; // 0x0214 + CPerParticleFloatInput m_flOscMult; // 0x0218 + CPerParticleFloatInput m_flOscAdd; // 0x0388 + CPerParticleFloatInput m_flRateScale; // 0x04F8 +}; +class C_OP_SetControlPointToCenter : public CParticleFunctionPreEmission // particles +{ + int32 m_nCP1; // 0x01D8 + Vector m_vecCP1Pos; // 0x01DC + bool m_bUseAvgParticlePos; // 0x01E8 + ParticleParentSetMode_t m_nSetParent; // 0x01EC +}; +class C_OP_PlanarConstraint : public CParticleFunctionConstraint // particles +{ + Vector m_PointOnPlane; // 0x01D0 + Vector m_PlaneNormal; // 0x01DC + int32 m_nControlPointNumber; // 0x01E8 + bool m_bGlobalOrigin; // 0x01EC + bool m_bGlobalNormal; // 0x01ED + CPerParticleFloatInput m_flRadiusScale; // 0x01F0 + CParticleCollectionFloatInput m_flMaximumDistanceToCP; // 0x0360 + bool m_bUseOldCode; // 0x04D0 +}; +class CVoiceContainerStaticAdditiveSynth::CTone // soundsystem_voicecontainers +{ + CUtlVector< CVoiceContainerStaticAdditiveSynth::CHarmonic > m_harmonics; // 0x0000 + CPiecewiseCurve m_curve; // 0x0018 + bool m_bSyncInstances; // 0x0058 +}; +class CAnimDemoCaptureSettings // animgraphlib +{ + Vector2D m_vecErrorRangeSplineRotation; // 0x0000 + Vector2D m_vecErrorRangeSplineTranslation; // 0x0008 + Vector2D m_vecErrorRangeSplineScale; // 0x0010 + float32 m_flIkRotation_MaxSplineError; // 0x0018 + float32 m_flIkTranslation_MaxSplineError; // 0x001C + Vector2D m_vecErrorRangeQuantizationRotation; // 0x0020 + Vector2D m_vecErrorRangeQuantizationTranslation; // 0x0028 + Vector2D m_vecErrorRangeQuantizationScale; // 0x0030 + float32 m_flIkRotation_MaxQuantizationError; // 0x0038 + float32 m_flIkTranslation_MaxQuantizationError; // 0x003C + CUtlString m_baseSequence; // 0x0040 + int32 m_nBaseSequenceFrame; // 0x0048 + EDemoBoneSelectionMode m_boneSelectionMode; // 0x004C + CUtlVector< BoneDemoCaptureSettings_t > m_bones; // 0x0050 + CUtlVector< IKDemoCaptureSettings_t > m_ikChains; // 0x0068 +}; +class EventClientPauseSimulate_t : public EventSimulate_t // engine2 +{ +}; +class EventClientPreOutput_t // engine2 +{ + EngineLoopState_t m_LoopState; // 0x0000 + float64 m_flRenderTime; // 0x0028 + float64 m_flRenderFrameTime; // 0x0030 + float64 m_flRenderFrameTimeUnbounded; // 0x0038 + float32 m_flRealTime; // 0x0040 + bool m_bRenderOnly; // 0x0044 +}; +class C_OP_RenderTrails : public CBaseTrailRenderer // particles +{ + bool m_bEnableFadingAndClamping; // 0x30E0 + float32 m_flStartFadeDot; // 0x30E4 + float32 m_flEndFadeDot; // 0x30E8 + ParticleAttributeIndex_t m_nPrevPntSource; // 0x30EC + float32 m_flMaxLength; // 0x30F0 + float32 m_flMinLength; // 0x30F4 + bool m_bIgnoreDT; // 0x30F8 + float32 m_flConstrainRadiusToLengthRatio; // 0x30FC + float32 m_flLengthScale; // 0x3100 + float32 m_flLengthFadeInTime; // 0x3104 + CPerParticleFloatInput m_flRadiusHeadTaper; // 0x3108 + CParticleCollectionVecInput m_vecHeadColorScale; // 0x3278 + CPerParticleFloatInput m_flHeadAlphaScale; // 0x3930 + CPerParticleFloatInput m_flRadiusTaper; // 0x3AA0 + CParticleCollectionVecInput m_vecTailColorScale; // 0x3C10 + CPerParticleFloatInput m_flTailAlphaScale; // 0x42C8 + ParticleAttributeIndex_t m_nHorizCropField; // 0x4438 + ParticleAttributeIndex_t m_nVertCropField; // 0x443C + float32 m_flForwardShift; // 0x4440 + bool m_bFlipUVBasedOnPitchYaw; // 0x4444 +}; +class CVMixAutomaticControlInput // soundsystem_lowlevel +{ + CUtlString m_name; // 0x0000 + int32 m_nControlInputIndex; // 0x0008 + bool m_bIsTrackSend; // 0x000C + bool m_bIsStackVar; // 0x000D +}; +class CNmClip // animlib +{ + CStrongHandle< InfoForResourceTypeCNmSkeleton > m_skeleton; // 0x0000 + uint32 m_nNumFrames; // 0x0008 + float32 m_flDuration; // 0x000C + CUtlBinaryBlock m_compressedPoseData; // 0x0010 + CUtlVector< NmCompressionSettings_t > m_trackCompressionSettings; // 0x0020 + CUtlVector< uint32 > m_compressedPoseOffsets; // 0x0038 + CUtlVector< CGlobalSymbol > m_floatCurveIDs; // 0x0050 + CUtlVector< NmFloatCurveCompressionSettings_t > m_floatCurveDefs; // 0x0068 + CUtlVector< uint16 > m_compressedFloatCurveData; // 0x0080 + CUtlVector< uint32 > m_compressedFloatCurveOffsets; // 0x0098 + CUtlVectorFixedGrowable< CNmClip*, 1 > m_secondaryAnimations; // 0x00D8 + CNmSyncTrack m_syncTrack; // 0x00F8 + CNmRootMotionData m_rootMotion; // 0x01B0 + bool m_bIsAdditive; // 0x0200 + CUtlVector< CNmClip::ModelSpaceSamplingChainLink_t > m_modelSpaceSamplingChain; // 0x0208 + CUtlVector< int32 > m_modelSpaceBoneSamplingIndices; // 0x0220 +}; +class CBindPoseUpdateNode : public CLeafUpdateNode // animgraphlib +{ +}; +class LookAtOpFixedSettings_t // animgraphlib +{ + CAnimAttachment m_attachment; // 0x0000 + CAnimInputDamping m_damping; // 0x0080 + CUtlVector< LookAtBone_t > m_bones; // 0x0098 + float32 m_flYawLimit; // 0x00B0 + float32 m_flPitchLimit; // 0x00B4 + float32 m_flHysteresisInnerAngle; // 0x00B8 + float32 m_flHysteresisOuterAngle; // 0x00BC + bool m_bRotateYawForward; // 0x00C0 + bool m_bMaintainUpDirection; // 0x00C1 + bool m_bTargetIsPosition; // 0x00C2 + bool m_bUseHysteresis; // 0x00C3 +}; +class CWayPointHelperUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + float32 m_flStartCycle; // 0x0074 + float32 m_flEndCycle; // 0x0078 + bool m_bOnlyGoals; // 0x007C + bool m_bPreventOvershoot; // 0x007D + bool m_bPreventUndershoot; // 0x007E +}; +class C_OP_RemapTransformOrientationToRotations : public CParticleFunctionOperator // particles +{ + CParticleTransformInput m_TransformInput; // 0x01D0 + Vector m_vecRotation; // 0x0238 + bool m_bUseQuat; // 0x0244 + bool m_bWriteNormal; // 0x0245 +}; +class C_OP_SetFloatAttributeToVectorExpression : public CParticleFunctionOperator // particles +{ + VectorFloatExpressionType_t m_nExpression; // 0x01D0 + CPerParticleVecInput m_vInput1; // 0x01D8 + CPerParticleVecInput m_vInput2; // 0x0890 + CParticleRemapFloatInput m_flOutputRemap; // 0x0F48 + ParticleAttributeIndex_t m_nOutputField; // 0x10B8 + ParticleSetMethod_t m_nSetMethod; // 0x10BC +}; +class C_OP_InheritFromPeerSystem : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + ParticleAttributeIndex_t m_nFieldInput; // 0x01D4 + int32 m_nIncrement; // 0x01D8 + int32 m_nGroupID; // 0x01DC +}; +class CovMatrix3 // physicslib +{ + Vector m_vDiag; // 0x0000 + float32 m_flXY; // 0x000C + float32 m_flXZ; // 0x0010 + float32 m_flYZ; // 0x0014 +}; +class JiggleBoneSettings_t // animgraphlib +{ + int32 m_nBoneIndex; // 0x0000 + float32 m_flSpringStrength; // 0x0004 + float32 m_flMaxTimeStep; // 0x0008 + float32 m_flDamping; // 0x000C + Vector m_vBoundsMaxLS; // 0x0010 + Vector m_vBoundsMinLS; // 0x001C + JiggleBoneSimSpace m_eSimSpace; // 0x0028 +}; +class CompositeMaterialMatchFilter_t // compositematerialslib +{ + CompositeMaterialMatchFilterType_t m_nCompositeMaterialMatchFilterType; // 0x0000 + CUtlString m_strMatchFilter; // 0x0008 + CUtlString m_strMatchValue; // 0x0010 + bool m_bPassWhenTrue; // 0x0018 +}; +class CEmptyGraphController : public CAnimGraphControllerBase // server +{ +}; +class IParticleCollection // particles +{ +}; +class C_OP_ConnectParentParticleToNearest : public CParticleFunctionOperator // particles +{ + int32 m_nFirstControlPoint; // 0x01D0 + int32 m_nSecondControlPoint; // 0x01D4 + bool m_bUseRadius; // 0x01D8 + CParticleCollectionFloatInput m_flRadiusScale; // 0x01E0 + CParticleCollectionFloatInput m_flParentRadiusScale; // 0x0350 +}; +class C_INIT_InheritFromParentParticles : public CParticleFunctionInitializer // particles +{ + float32 m_flScale; // 0x01D8 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01DC + int32 m_nIncrement; // 0x01E0 + bool m_bRandomDistribution; // 0x01E4 + int32 m_nRandomSeed; // 0x01E8 +}; +class CSequenceFinishedAnimTag : public CAnimTagBase // animgraphlib +{ + CUtlString m_sequenceName; // 0x0058 +}; +class CVectorQuantizer // animgraphlib +{ + CUtlVector< float32 > m_centroidVectors; // 0x0000 + int32 m_nCentroids; // 0x0018 + int32 m_nDimensions; // 0x001C +}; +class CNmScaleNode::CDefinition : public CNmPassthroughNode::CDefinition // animlib +{ + int16 m_nMaskNodeIdx; // 0x0018 + int16 m_nEnableNodeIdx; // 0x001A +}; +class ParamSpanSample_t // animgraphlib +{ + CAnimVariant m_value; // 0x0000 + float32 m_flCycle; // 0x0014 +}; +class EventClientPostAdvanceTick_t : public EventPostAdvanceTick_t // engine2 +{ +}; +class CodeGenAABB_t // server +{ + Vector m_vMinBounds; // 0x0000 + Vector m_vMaxBounds; // 0x000C +}; +class CSkillInt // server +{ + int32[4] m_pValue; // 0x0000 +}; +class CVectorExponentialMovingAverage // server +{ +}; +class C_OP_CPVelocityForce : public CParticleFunctionForce // particles +{ + int32 m_nControlPointNumber; // 0x01E0 + CPerParticleFloatInput m_flScale; // 0x01E8 +}; +class CNmClip::ModelSpaceSamplingChainLink_t // animlib +{ + int32 m_nBoneIdx; // 0x0000 + int32 m_nParentBoneIdx; // 0x0004 + int32 m_nParentChainLinkIdx; // 0x0008 +}; +class CAnimScriptComponentUpdater : public CAnimComponentUpdater // animgraphlib +{ + AnimScriptHandle m_hScript; // 0x0030 +}; +class CDestructiblePart_DamageLevel // server +{ + CUtlString m_sName; // 0x0000 + CGlobalSymbol m_sBreakablePieceName; // 0x0008 + int32 m_nBodyGroupValue; // 0x0010 + CSkillInt m_nHealth; // 0x0014 + float32 m_flCriticalDamagePercent; // 0x0024 + EDestructiblePartDamagePassThroughType m_nDamagePassthroughType; // 0x0028 + DestructiblePartDestructionDeathBehavior_t m_nDestructionDeathBehavior; // 0x002C + CGlobalSymbol m_sCustomDeathHandshake; // 0x0030 + bool m_bShouldDestroyOnDeath; // 0x0038 + CRangeFloat m_flDeathDestroyTime; // 0x003C +}; +class FeBuildTaperedCapsuleRigid_t : public FeTaperedCapsuleRigid_t // physicslib +{ + int32 m_nPriority; // 0x0030 + uint32 m_nVertexMapHash; // 0x0034 + uint32 m_nAntitunnelGroupBits; // 0x0038 +}; +class CDampedPathAnimMotorUpdater : public CPathAnimMotorUpdaterBase // animgraphlib +{ + float32 m_flAnticipationTime; // 0x002C + float32 m_flMinSpeedScale; // 0x0030 + CAnimParamHandle m_hAnticipationPosParam; // 0x0034 + CAnimParamHandle m_hAnticipationHeadingParam; // 0x0036 + float32 m_flSpringConstant; // 0x0038 + float32 m_flMinSpringTension; // 0x003C + float32 m_flMaxSpringTension; // 0x0040 +}; +class CPulse_PublicOutput // pulse_runtime_lib +{ + PulseSymbol_t m_Name; // 0x0000 + CUtlString m_Description; // 0x0010 + CUtlLeanVector< CPulseRuntimeMethodArg > m_Args; // 0x0018 +}; +class CPhysSurfaceProperties // modellib +{ + CUtlString m_name; // 0x0000 + uint32 m_nameHash; // 0x0008 + uint32 m_baseNameHash; // 0x000C + bool m_bHidden; // 0x0018 + CUtlString m_description; // 0x0020 + CPhysSurfacePropertiesPhysics m_physics; // 0x0028 + CPhysSurfacePropertiesVehicle m_vehicleParams; // 0x0040 + CPhysSurfacePropertiesSoundNames m_audioSounds; // 0x0048 + CPhysSurfacePropertiesAudio m_audioParams; // 0x00A8 +}; +class CBlendUpdateNode : public CAnimUpdateNodeBase // animgraphlib +{ + CUtlVector< CAnimUpdateNodeRef > m_children; // 0x0060 + CUtlVector< uint8 > m_sortedOrder; // 0x0078 + CUtlVector< float32 > m_targetValues; // 0x0090 + AnimValueSource m_blendValueSource; // 0x00AC + LinearRootMotionBlendMode_t m_eLinearRootMotionBlendMode; // 0x00B0 + CAnimParamHandle m_paramIndex; // 0x00B4 + CAnimInputDamping m_damping; // 0x00B8 + BlendKeyType m_blendKeyType; // 0x00D0 + bool m_bLockBlendOnReset; // 0x00D4 + bool m_bSyncCycles; // 0x00D5 + bool m_bLoop; // 0x00D6 + bool m_bLockWhenWaning; // 0x00D7 + bool m_bIsAngle; // 0x00D8 +}; +class EventServerEndSimulate_t // engine2 +{ + bool m_bLastTick; // 0x0000 +}; +class inv_image_item_t // client +{ + Vector position; // 0x0000 + QAngle angle; // 0x000C + CUtlString pose_sequence; // 0x0018 +}; +class C_OP_RemapTransformVisibilityToVector : public CParticleFunctionOperator // particles +{ + ParticleSetMethod_t m_nSetMethod; // 0x01D0 + CParticleTransformInput m_TransformInput; // 0x01D8 + ParticleAttributeIndex_t m_nFieldOutput; // 0x0240 + float32 m_flInputMin; // 0x0244 + float32 m_flInputMax; // 0x0248 + Vector m_vecOutputMin; // 0x024C + Vector m_vecOutputMax; // 0x0258 + float32 m_flRadius; // 0x0264 +}; +class C_OP_RenderStatusEffect : public CParticleFunctionRenderer // particles +{ + CStrongHandle< InfoForResourceTypeCTextureBase > m_pTextureColorWarp; // 0x0220 + CStrongHandle< InfoForResourceTypeCTextureBase > m_pTextureDetail2; // 0x0228 + CStrongHandle< InfoForResourceTypeCTextureBase > m_pTextureDiffuseWarp; // 0x0230 + CStrongHandle< InfoForResourceTypeCTextureBase > m_pTextureFresnelColorWarp; // 0x0238 + CStrongHandle< InfoForResourceTypeCTextureBase > m_pTextureFresnelWarp; // 0x0240 + CStrongHandle< InfoForResourceTypeCTextureBase > m_pTextureSpecularWarp; // 0x0248 + CStrongHandle< InfoForResourceTypeCTextureBase > m_pTextureEnvMap; // 0x0250 +}; +class FeSimdRodConstraint_t // physicslib +{ + uint16[4][2] nNode; // 0x0000 + fltx4 f4MaxDist; // 0x0010 + fltx4 f4MinDist; // 0x0020 + fltx4 f4Weight0; // 0x0030 + fltx4 f4RelaxationFactor; // 0x0040 +}; +class CBonePositionMetricEvaluator : public CMotionMetricEvaluator // animgraphlib +{ + int32 m_nBoneIndex; // 0x0050 +}; +class CNmEntityAttributeFloatEvent : public CNmEntityAttributeEventBase // animlib +{ + CPiecewiseCurve m_FloatValue; // 0x0038 +}; +class CFootTrajectories // modellib +{ + CUtlVector< CFootTrajectory > m_trajectories; // 0x0000 +}; +class ChangeAccessorFieldPathIndex_t // networksystem +{ + int32 m_Value; // 0x0000 +}; +class GameAmmoTypeInfo_t : public AmmoTypeInfo_t // server +{ + int32 m_nBuySize; // 0x0038 + int32 m_nCost; // 0x003C +}; +class C_INIT_ColorLitPerParticle : public CParticleFunctionInitializer // particles +{ + Color m_ColorMin; // 0x01F0 + Color m_ColorMax; // 0x01F4 + Color m_TintMin; // 0x01F8 + Color m_TintMax; // 0x01FC + float32 m_flTintPerc; // 0x0200 + ParticleColorBlendMode_t m_nTintBlendMode; // 0x0204 + float32 m_flLightAmplification; // 0x0208 +}; +class C_OP_DampenToCP : public CParticleFunctionOperator // particles +{ + int32 m_nControlPointNumber; // 0x01D0 + float32 m_flRange; // 0x01D4 + float32 m_flScale; // 0x01D8 +}; +class C_OP_LerpVector : public CParticleFunctionOperator // particles +{ + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D0 + Vector m_vecOutput; // 0x01D4 + float32 m_flStartTime; // 0x01E0 + float32 m_flEndTime; // 0x01E4 + ParticleSetMethod_t m_nSetMethod; // 0x01E8 +}; +class CNmGraphDefinition::ExternalGraphSlot_t // animlib +{ + int16 m_nNodeIdx; // 0x0000 + CGlobalSymbol m_slotID; // 0x0008 +}; +class CAimConstraint : public CBaseConstraint // modellib +{ + Quaternion m_qAimOffset; // 0x0060 + uint32 m_nUpType; // 0x0070 +}; +class CStringAnimTag : public CAnimTagBase // animgraphlib +{ +}; +class CRagdollAnimTag : public CAnimTagBase // animgraphlib +{ + CGlobalSymbol m_profileName; // 0x0058 +}; +class C_OP_RenderRopes : public CBaseRendererSource2 // particles +{ + bool m_bEnableFadingAndClamping; // 0x2DE8 + float32 m_flMinSize; // 0x2DEC + float32 m_flMaxSize; // 0x2DF0 + float32 m_flStartFadeSize; // 0x2DF4 + float32 m_flEndFadeSize; // 0x2DF8 + float32 m_flStartFadeDot; // 0x2DFC + float32 m_flEndFadeDot; // 0x2E00 + float32 m_flRadiusTaper; // 0x2E04 + int32 m_nMinTesselation; // 0x2E08 + int32 m_nMaxTesselation; // 0x2E0C + float32 m_flTessScale; // 0x2E10 + CParticleCollectionRendererFloatInput m_flTextureVWorldSize; // 0x2E18 + CParticleCollectionRendererFloatInput m_flTextureVScrollRate; // 0x2F88 + CParticleCollectionRendererFloatInput m_flTextureVOffset; // 0x30F8 + int32 m_nTextureVParamsCP; // 0x3268 + bool m_bClampV; // 0x326C + int32 m_nScaleCP1; // 0x3270 + int32 m_nScaleCP2; // 0x3274 + float32 m_flScaleVSizeByControlPointDistance; // 0x3278 + float32 m_flScaleVScrollByControlPointDistance; // 0x327C + float32 m_flScaleVOffsetByControlPointDistance; // 0x3280 + bool m_bUseScalarForTextureCoordinate; // 0x3285 + ParticleAttributeIndex_t m_nScalarFieldForTextureCoordinate; // 0x3288 + float32 m_flScalarAttributeTextureCoordScale; // 0x328C + bool m_bReverseOrder; // 0x3290 + bool m_bClosedLoop; // 0x3291 + ParticleAttributeIndex_t m_nSplitField; // 0x3294 + bool m_bSortBySegmentID; // 0x3298 + ParticleOrientationChoiceList_t m_nOrientationType; // 0x329C + ParticleAttributeIndex_t m_nVectorFieldForOrientation; // 0x32A0 + bool m_bDrawAsOpaque; // 0x32A4 + bool m_bGenerateNormals; // 0x32A5 +}; +class CParticleVisibilityInputs // particles +{ + float32 m_flCameraBias; // 0x0000 + int32 m_nCPin; // 0x0004 + float32 m_flProxyRadius; // 0x0008 + float32 m_flInputMin; // 0x000C + float32 m_flInputMax; // 0x0010 + float32 m_flInputPixelVisFade; // 0x0014 + float32 m_flNoPixelVisibilityFallback; // 0x0018 + float32 m_flDistanceInputMin; // 0x001C + float32 m_flDistanceInputMax; // 0x0020 + float32 m_flDotInputMin; // 0x0024 + float32 m_flDotInputMax; // 0x0028 + bool m_bDotCPAngles; // 0x002C + bool m_bDotCameraAngles; // 0x002D + float32 m_flAlphaScaleMin; // 0x0030 + float32 m_flAlphaScaleMax; // 0x0034 + float32 m_flRadiusScaleMin; // 0x0038 + float32 m_flRadiusScaleMax; // 0x003C + float32 m_flRadiusScaleFOVBase; // 0x0040 + bool m_bRightEye; // 0x0044 +}; +class BoneDemoCaptureSettings_t // animgraphlib +{ + CUtlString m_boneName; // 0x0000 + float32 m_flErrorSplineRotationMax; // 0x0008 + float32 m_flErrorSplineTranslationMax; // 0x000C + float32 m_flErrorSplineScaleMax; // 0x0010 + float32 m_flErrorQuantizationRotationMax; // 0x0014 + float32 m_flErrorQuantizationTranslationMax; // 0x0018 + float32 m_flErrorQuantizationScaleMax; // 0x001C +}; +class SolveIKChainPoseOpFixedSettings_t // animgraphlib +{ + CUtlVector< ChainToSolveData_t > m_ChainsToSolveData; // 0x0000 +}; +class CBodyGroupAnimTag : public CAnimTagBase // animgraphlib +{ + int32 m_nPriority; // 0x0058 + CUtlVector< CBodyGroupSetting > m_bodyGroupSettings; // 0x0060 +}; +class EventClientAdvanceTick_t : public EventAdvanceTick_t // engine2 +{ +}; +class InfoForResourceTypeCMorphSetData // resourcesystem +{ +}; +class TimedEvent // client +{ + float32 m_TimeBetweenEvents; // 0x0000 + float32 m_fNextEvent; // 0x0004 +}; +class DynamicVolumeDef_t // server +{ + CHandle< CBaseEntity > m_source; // 0x0000 + CHandle< CBaseEntity > m_target; // 0x0004 + int32 m_nHullIdx; // 0x0008 + Vector m_vSourceAnchorPos; // 0x000C + Vector m_vTargetAnchorPos; // 0x0018 + uint32 m_nAreaSrc; // 0x0024 + uint32 m_nAreaDst; // 0x0028 + bool m_bAttached; // 0x002C +}; +class ragdollhierarchyjoint_t // server +{ + int32 parentIndex; // 0x0000 + int32 childIndex; // 0x0004 +}; +class CFiringModeInt // server +{ + int32[2] m_nValues; // 0x0000 +}; +class CSteamAudioProbeLineSegment // steamaudio +{ + Vector m_vStart; // 0x0000 + Vector m_vEnd; // 0x000C + CUtlVector< float32 > m_vecIntervals; // 0x0018 + CUtlVector< int32 > m_vecProbeIndices; // 0x0030 +}; +class CVoiceContainerBlender : public CVoiceContainerBase // soundsystem_voicecontainers +{ + CSoundContainerReference m_firstSound; // 0x00A8 + CSoundContainerReference m_secondSound; // 0x00C0 + float32 m_flBlendFactor; // 0x00D8 +}; +class CSosGroupActionSoundeventClusterSchema : public CSosGroupActionSchema // soundsystem +{ + int32 m_nMinNearby; // 0x0008 + float32 m_flClusterEpsilon; // 0x000C + CUtlString m_shouldPlayOpvar; // 0x0010 + CUtlString m_shouldPlayClusterChild; // 0x0018 + CUtlString m_clusterSizeOpvar; // 0x0020 + CUtlString m_groupBoundingBoxMinsOpvar; // 0x0028 + CUtlString m_groupBoundingBoxMaxsOpvar; // 0x0030 +}; +class CVMixCurveHeader // soundsystem_lowlevel +{ + uint32 m_nControlPointCount; // 0x0000 + uint32 m_nControlPointStart; // 0x0004 +}; +class CVoiceContainerEnum : public CVoiceContainerBase // soundsystem_voicecontainers +{ + CSoundContainerReferenceArray m_soundsToPlay; // 0x00A8 + int32 m_iSelection; // 0x00E0 + float32 m_flCrossfadeTime; // 0x00E4 +}; +class CNmIsTargetSetNode::CDefinition : public CNmBoolValueNode::CDefinition // animlib +{ + int16 m_nInputValueNodeIdx; // 0x0010 +}; +class TwoBoneIKSettings_t // animgraphlib +{ + IkEndEffectorType m_endEffectorType; // 0x0000 + CAnimAttachment m_endEffectorAttachment; // 0x0010 + IkTargetType m_targetType; // 0x0090 + CAnimAttachment m_targetAttachment; // 0x00A0 + int32 m_targetBoneIndex; // 0x0120 + CAnimParamHandle m_hPositionParam; // 0x0124 + CAnimParamHandle m_hRotationParam; // 0x0126 + bool m_bAlwaysUseFallbackHinge; // 0x0128 + VectorAligned m_vLsFallbackHingeAxis; // 0x0130 + int32 m_nFixedBoneIndex; // 0x0140 + int32 m_nMiddleBoneIndex; // 0x0144 + int32 m_nEndBoneIndex; // 0x0148 + bool m_bMatchTargetOrientation; // 0x014C + bool m_bConstrainTwist; // 0x014D + float32 m_flMaxTwist; // 0x0150 +}; +class CModelConfigElement_AttachedModel : public CModelConfigElement // modellib +{ + CUtlString m_InstanceName; // 0x0048 + CUtlString m_EntityClass; // 0x0050 + CStrongHandle< InfoForResourceTypeCModel > m_hModel; // 0x0058 + Vector m_vOffset; // 0x0060 + QAngle m_aAngOffset; // 0x006C + CUtlString m_AttachmentName; // 0x0078 + CUtlString m_LocalAttachmentOffsetName; // 0x0080 + ModelConfigAttachmentType_t m_AttachmentType; // 0x0088 + bool m_bBoneMergeFlex; // 0x008C + bool m_bUserSpecifiedColor; // 0x008D + bool m_bUserSpecifiedMaterialGroup; // 0x008E + CUtlString m_BodygroupOnOtherModels; // 0x0090 + CUtlString m_MaterialGroupOnOtherModels; // 0x0098 +}; +class CompositeMaterialAssemblyProcedure_t // compositematerialslib +{ + CUtlVector< CResourceNameTyped< CWeakHandle< InfoForResourceTypeCCompositeMaterialKit > > > m_vecCompMatIncludes; // 0x0000 + CUtlVector< CompositeMaterialMatchFilter_t > m_vecMatchFilters; // 0x0018 + CUtlVector< CompositeMaterialInputContainer_t > m_vecCompositeInputContainers; // 0x0030 + CUtlVector< CompMatPropertyMutator_t > m_vecPropertyMutators; // 0x0048 +}; +class CVectorMovingAverage // server +{ +}; +class C_OP_RemapDensityGradientToVectorAttribute : public CParticleFunctionOperator // particles +{ + float32 m_flRadiusScale; // 0x01D0 + ParticleAttributeIndex_t m_nFieldOutput; // 0x01D4 +}; +class C_OP_RopeSpringConstraint : public CParticleFunctionConstraint // particles +{ + CParticleCollectionFloatInput m_flRestLength; // 0x01D0 + CParticleCollectionFloatInput m_flMinDistance; // 0x0340 + CParticleCollectionFloatInput m_flMaxDistance; // 0x04B0 + float32 m_flAdjustmentScale; // 0x0620 + CParticleCollectionFloatInput m_flInitialRestingLength; // 0x0628 +}; +class FeSpringIntegrator_t // physicslib +{ + uint16[2] nNode; // 0x0000 + float32 flSpringRestLength; // 0x0004 + float32 flSpringConstant; // 0x0008 + float32 flSpringDamping; // 0x000C + float32 flNodeWeight0; // 0x0010 +}; +class CFollowPathUpdateNode : public CUnaryUpdateNode // animgraphlib +{ + float32 m_flBlendOutTime; // 0x0074 + bool m_bBlockNonPathMovement; // 0x0078 + bool m_bStopFeetAtGoal; // 0x0079 + bool m_bScaleSpeed; // 0x007A + float32 m_flScale; // 0x007C + float32 m_flMinAngle; // 0x0080 + float32 m_flMaxAngle; // 0x0084 + float32 m_flSpeedScaleBlending; // 0x0088 + CAnimInputDamping m_turnDamping; // 0x0090 + AnimValueSource m_facingTarget; // 0x00A8 + CAnimParamHandle m_hParam; // 0x00AC + float32 m_flTurnToFaceOffset; // 0x00B0 + bool m_bTurnToFace; // 0x00B4 +}; +class CEntityInstance // entity2 +{ + CUtlSymbolLarge m_iszPrivateVScripts; // 0x0008 + CEntityIdentity* m_pEntity; // 0x0010 + CScriptComponent* m_CScriptComponent; // 0x0030 +}; +class CEntityComponent // entity2 +{ +}; +class CScriptComponent : public CEntityComponent // entity2 +{ + CUtlSymbolLarge m_scriptClassName; // 0x0030 +}; +class CEntityIdentity // entity2 +{ + int32 m_nameStringableIndex; // 0x0014 + CUtlSymbolLarge m_name; // 0x0018 + CUtlSymbolLarge m_designerName; // 0x0020 + uint32 m_flags; // 0x0030 + WorldGroupId_t m_worldGroupId; // 0x0038 + uint32 m_fDataObjectTypes; // 0x003C + ChangeAccessorFieldPathIndex_t m_PathIndex; // 0x0040 + CEntityAttributeTable* m_pAttributes; // 0x0048 + CEntityIdentity* m_pPrev; // 0x0050 + CEntityIdentity* m_pNext; // 0x0058 + CEntityIdentity* m_pPrevByClass; // 0x0060 + CEntityIdentity* m_pNextByClass; // 0x0068 +}; +class CPulseCell_WaitForCursorsWithTag : public CPulseCell_WaitForCursorsWithTagBase // pulse_runtime_lib +{ + bool m_bTagSelfWhenComplete; // 0x0098 + PulseCursorCancelPriority_t m_nDesiredKillPriority; // 0x009C +}; +class CPulseCell_Base // pulse_runtime_lib +{ + PulseDocNodeID_t m_nEditorNodeID; // 0x0008 +}; +class CPulse_ResumePoint : public CPulse_OutflowConnection // pulse_runtime_lib +{ +}; +class CPulseCell_PickBestOutflowSelector : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseBestOutflowRules_t m_nCheckType; // 0x0048 + PulseSelectorOutflowList_t m_OutflowList; // 0x0050 +}; +class CParticleBindingRealPulse : public CParticleCollectionBindingInstance // particleslib +{ +}; +class CPulseCell_WaitForObservable : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + PulseObservableBoolExpression_t m_Condition; // 0x0048 + CPulse_ResumePoint m_OnTrue; // 0x00C0 +}; +class CPulse_OutflowConnection // pulse_runtime_lib +{ + PulseSymbol_t m_SourceOutflowName; // 0x0000 + PulseRuntimeChunkIndex_t m_nDestChunk; // 0x0010 + int32 m_nInstruction; // 0x0014 + PulseRegisterMap_t m_OutflowRegisterMap; // 0x0018 +}; +class CPulseGraphDef // pulse_runtime_lib +{ + PulseSymbol_t m_DomainIdentifier; // 0x0008 + CPulseValueFullType m_DomainSubType; // 0x0018 + PulseSymbol_t m_ParentMapName; // 0x0030 + PulseSymbol_t m_ParentXmlName; // 0x0040 + CUtlVector< CPulse_Chunk* > m_Chunks; // 0x0050 + CUtlVector< CPulseCell_Base* > m_Cells; // 0x0068 + CUtlVector< CPulse_Variable > m_Vars; // 0x0080 + CUtlVector< CPulse_PublicOutput > m_PublicOutputs; // 0x0098 + CUtlVector< CPulse_InvokeBinding* > m_InvokeBindings; // 0x00B0 + CUtlVector< CPulse_CallInfo* > m_CallInfos; // 0x00C8 + CUtlVector< CPulse_Constant > m_Constants; // 0x00E0 + CUtlVector< CPulse_DomainValue > m_DomainValues; // 0x00F8 + CUtlVector< CPulse_BlackboardReference > m_BlackboardReferences; // 0x0110 + CUtlVector< CPulse_OutputConnection* > m_OutputConnections; // 0x0128 +}; +class CPulseCell_FireCursors : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outflows; // 0x0048 + bool m_bWaitForChildOutflows; // 0x0060 + CPulse_ResumePoint m_OnFinished; // 0x0068 + CPulse_ResumePoint m_OnCanceled; // 0x00B0 +}; +class CPulseCell_Timeline::TimelineEvent_t // pulse_runtime_lib +{ + float32 m_flTimeFromPrevious; // 0x0000 + CPulse_OutflowConnection m_EventOutflow; // 0x0008 +}; +class CPulseCell_IntervalTimer::CursorState_t // pulse_runtime_lib +{ + GameTime_t m_StartTime; // 0x0000 + GameTime_t m_EndTime; // 0x0004 + float32 m_flWaitInterval; // 0x0008 + float32 m_flWaitIntervalHigh; // 0x000C + bool m_bCompleteOnNextWake; // 0x0010 +}; +class CPulseCell_BaseRequirement : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class CPulseCell_BaseState : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ +}; +class OutflowWithRequirements_t // pulse_runtime_lib +{ + CPulse_OutflowConnection m_Connection; // 0x0000 + PulseDocNodeID_t m_DestinationFlowNodeID; // 0x0048 + CUtlVector< PulseDocNodeID_t > m_RequirementNodeIDs; // 0x0050 + CUtlVector< int32 > m_nCursorStateBlockIndex; // 0x0068 +}; +class CPulseCell_IsRequirementValid : public CPulseCell_BaseRequirement // pulse_runtime_lib +{ +}; +class CPulseCell_Value_Gradient : public CPulseCell_BaseValue // pulse_runtime_lib +{ + CColorGradient m_Gradient; // 0x0048 +}; +class CPulseCursorFuncs // pulse_runtime_lib +{ +}; +class PulseNodeDynamicOutflows_t::DynamicOutflow_t // pulse_runtime_lib +{ + CGlobalSymbol m_OutflowID; // 0x0000 + CPulse_OutflowConnection m_Connection; // 0x0008 +}; +class CBasePulseGraphInstance // pulse_runtime_lib +{ +}; +class CPulseCell_Inflow_GraphHook : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_HookName; // 0x0080 +}; +class SignatureOutflow_Resume : public CPulse_ResumePoint // pulse_runtime_lib +{ +}; +class CPulseCell_Inflow_BaseEntrypoint : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseRuntimeChunkIndex_t m_EntryChunk; // 0x0048 + PulseRegisterMap_t m_RegisterMap; // 0x0050 +}; +class CPulseCell_WaitForCursorsWithTagBase : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + int32 m_nCursorsAllowedToWait; // 0x0048 + CPulse_ResumePoint m_WaitComplete; // 0x0050 +}; +class CPulse_InvokeBinding // pulse_runtime_lib +{ + PulseRegisterMap_t m_RegisterMap; // 0x0000 + PulseSymbol_t m_FuncName; // 0x0030 + PulseRuntimeCellIndex_t m_nCellIndex; // 0x0040 + PulseRuntimeChunkIndex_t m_nSrcChunk; // 0x0044 + int32 m_nSrcInstruction; // 0x0048 +}; +class CPulseCell_IntervalTimer : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_Completed; // 0x0048 + SignatureOutflow_Continue m_OnInterval; // 0x0090 +}; +class CPulseTestScriptLib // pulse_runtime_lib +{ +}; +class CPulseCell_BaseLerp : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_WakeResume; // 0x0048 +}; +class CPulseCell_Value_Curve : public CPulseCell_BaseValue // pulse_runtime_lib +{ + CPiecewiseCurve m_Curve; // 0x0048 +}; +class CPulseCell_Inflow_EventHandler : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_EventName; // 0x0080 +}; +class CPulseCell_BaseFlow : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class CPulseCell_Outflow_CycleShuffled::InstanceState_t // pulse_runtime_lib +{ + CUtlVectorFixedGrowable< uint8, 8 > m_Shuffle; // 0x0000 + int32 m_nNextShuffle; // 0x0020 +}; +class CPulseCell_BaseLerp::CursorState_t // pulse_runtime_lib +{ + GameTime_t m_StartTime; // 0x0000 + GameTime_t m_EndTime; // 0x0004 +}; +class CPulseCell_WaitForCursorsWithTagBase::CursorState_t // pulse_runtime_lib +{ + PulseSymbol_t m_TagName; // 0x0000 +}; +class CPulseArraylib // pulse_runtime_lib +{ +}; +class SignatureOutflow_Continue : public CPulse_OutflowConnection // pulse_runtime_lib +{ +}; +class CPulseCell_Timeline : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CUtlVector< CPulseCell_Timeline::TimelineEvent_t > m_TimelineEvents; // 0x0048 + bool m_bWaitForChildOutflows; // 0x0060 + CPulse_ResumePoint m_OnFinished; // 0x0068 + CPulse_ResumePoint m_OnCanceled; // 0x00B0 +}; +class CPulseCell_Inflow_EntOutputHandler : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_SourceEntity; // 0x0080 + PulseSymbol_t m_SourceOutput; // 0x0090 + CPulseValueFullType m_ExpectedParamType; // 0x00A0 +}; +class CPulseCell_Outflow_CycleOrdered::InstanceState_t // pulse_runtime_lib +{ + int32 m_nNextIndex; // 0x0000 +}; +class CParticleCollectionBindingInstance : public CBasePulseGraphInstance // particleslib +{ +}; +class CPulseCell_LimitCount::InstanceState_t // pulse_runtime_lib +{ + int32 m_nCurrentCount; // 0x0000 +}; +class CPulseCell_Step_DebugLog : public CPulseCell_BaseFlow // pulse_runtime_lib +{ +}; +class CPulseCell_BaseYieldingInflow : public CPulseCell_BaseFlow // pulse_runtime_lib +{ +}; +class PulseNodeDynamicOutflows_t // pulse_runtime_lib +{ + CUtlVector< PulseNodeDynamicOutflows_t::DynamicOutflow_t > m_Outflows; // 0x0000 +}; +class CPulseCell_IsRequirementValid::Criteria_t // pulse_runtime_lib +{ + bool m_bIsValid; // 0x0000 +}; +class CPulseCell_Inflow_ObservableVariableListener : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseRuntimeBlackboardReferenceIndex_t m_nBlackboardReference; // 0x0080 + bool m_bSelfReference; // 0x0082 +}; +class CPulseCell_Outflow_CycleOrdered : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class PulseSelectorOutflowList_t // pulse_runtime_lib +{ + CUtlVector< OutflowWithRequirements_t > m_Outflows; // 0x0000 +}; +class CPulseCell_Inflow_Wait : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_WakeResume; // 0x0048 +}; +class CPulseCell_Outflow_CycleShuffled : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class CPulseCell_Inflow_Method : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_MethodName; // 0x0080 + CUtlString m_Description; // 0x0090 + bool m_bIsPublic; // 0x0098 + CPulseValueFullType m_ReturnType; // 0x00A0 + CUtlLeanVector< CPulseRuntimeMethodArg > m_Args; // 0x00B8 +}; +class CPulseCell_BaseValue : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class CPulseCell_BooleanSwitchState : public CPulseCell_BaseState // pulse_runtime_lib +{ + PulseObservableBoolExpression_t m_Condition; // 0x0048 + CPulse_OutflowConnection m_SubGraph; // 0x00C0 + CPulse_OutflowConnection m_WhenTrue; // 0x0108 + CPulse_OutflowConnection m_WhenFalse; // 0x0150 +}; +class CPulseCell_Inflow_Yield : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_UnyieldResume; // 0x0048 +}; +class CPulseMathlib // pulse_runtime_lib +{ +}; +class CPulseCell_Unknown : public CPulseCell_Base // pulse_runtime_lib +{ + KeyValues3 m_UnknownKeys; // 0x0048 +}; +class CPulseCell_Outflow_CycleRandom : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class CPulseCell_Step_PublicOutput : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseRuntimeOutputIndex_t m_OutputIndex; // 0x0048 +}; +class CPulse_BlackboardReference // pulse_runtime_lib +{ + CStrongHandle< InfoForResourceTypeIPulseGraphDef > m_hBlackboardResource; // 0x0000 + PulseSymbol_t m_BlackboardResource; // 0x0008 + PulseDocNodeID_t m_nNodeID; // 0x0018 + CGlobalSymbol m_NodeName; // 0x0020 +}; +class CPulseCell_Value_RandomInt : public CPulseCell_BaseValue // pulse_runtime_lib +{ +}; +class CPulse_CallInfo // pulse_runtime_lib +{ + PulseSymbol_t m_PortName; // 0x0000 + PulseDocNodeID_t m_nEditorNodeID; // 0x0010 + PulseRegisterMap_t m_RegisterMap; // 0x0018 + PulseDocNodeID_t m_CallMethodID; // 0x0048 + PulseRuntimeChunkIndex_t m_nSrcChunk; // 0x004C + int32 m_nSrcInstruction; // 0x0050 +}; +class CPulseCell_InlineNodeSkipSelector : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseDocNodeID_t m_nFlowNodeID; // 0x0048 + bool m_bAnd; // 0x004C + PulseSelectorOutflowList_t m_PassOutflow; // 0x0050 + CPulse_OutflowConnection m_FailOutflow; // 0x0068 +}; +class CPulseCell_LimitCount : public CPulseCell_BaseRequirement // pulse_runtime_lib +{ + int32 m_nLimitCount; // 0x0048 +}; +class CPulseCell_Step_CallExternalMethod : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + PulseSymbol_t m_MethodName; // 0x0048 + PulseSymbol_t m_GameBlackboard; // 0x0058 + CUtlLeanVector< CPulseRuntimeMethodArg > m_ExpectedArgs; // 0x0068 + PulseMethodCallMode_t m_nAsyncCallMode; // 0x0078 + CPulse_ResumePoint m_OnFinished; // 0x0080 +}; +class PulseObservableBoolExpression_t // pulse_runtime_lib +{ + CPulse_OutflowConnection m_EvaluateConnection; // 0x0000 + CUtlVector< PulseRuntimeVarIndex_t > m_DependentObservableVars; // 0x0048 + CUtlVector< PulseRuntimeBlackboardReferenceIndex_t > m_DependentObservableBlackboardReferences; // 0x0060 +}; +class CPulseCell_LimitCount::Criteria_t // pulse_runtime_lib +{ + bool m_bLimitCountPasses; // 0x0000 +}; +class CPulseCell_CursorQueue : public CPulseCell_WaitForCursorsWithTagBase // pulse_runtime_lib +{ + int32 m_nCursorsAllowedToRunParallel; // 0x0098 +}; +class CPulseCell_Value_RandomFloat : public CPulseCell_BaseValue // pulse_runtime_lib +{ +}; +class CPulseExecCursor // pulse_runtime_lib +{ +}; +class CPulseCell_Step_TestDomainDestroyFakeEntity : public CPulseCell_BaseFlow // pulse_system +{ +}; +class CPulseCell_WaitForCursorsWithTag : public CPulseCell_WaitForCursorsWithTagBase // pulse_runtime_lib +{ + bool m_bTagSelfWhenComplete; // 0x0098 + PulseCursorCancelPriority_t m_nDesiredKillPriority; // 0x009C +}; +class CPulseCell_Test_NoInflow : public CPulseCell_BaseFlow // pulse_system +{ +}; +class CPulseGraphInstance_TestDomain_FakeEntityOwner : public CBasePulseGraphInstance // pulse_system +{ +}; +class CPulseCell_Base // pulse_runtime_lib +{ + PulseDocNodeID_t m_nEditorNodeID; // 0x0008 +}; +class CPulse_ResumePoint : public CPulse_OutflowConnection // pulse_runtime_lib +{ +}; +class CTestDomainDerived_Cursor : public CPulseExecCursor // pulse_system +{ + int32 m_nCursorValueA; // 0x00D0 + int32 m_nCursorValueB; // 0x00D4 +}; +class CPulseCell_PickBestOutflowSelector : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseBestOutflowRules_t m_nCheckType; // 0x0048 + PulseSelectorOutflowList_t m_OutflowList; // 0x0050 +}; +class CPulseTestFuncs_LibraryA // pulse_system +{ +}; +class CPulseCell_WaitForObservable : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + PulseObservableBoolExpression_t m_Condition; // 0x0048 + CPulse_ResumePoint m_OnTrue; // 0x00C0 +}; +class CPulse_OutflowConnection // pulse_runtime_lib +{ + PulseSymbol_t m_SourceOutflowName; // 0x0000 + PulseRuntimeChunkIndex_t m_nDestChunk; // 0x0010 + int32 m_nInstruction; // 0x0014 + PulseRegisterMap_t m_OutflowRegisterMap; // 0x0018 +}; +class CPulseGraphDef // pulse_runtime_lib +{ + PulseSymbol_t m_DomainIdentifier; // 0x0008 + CPulseValueFullType m_DomainSubType; // 0x0018 + PulseSymbol_t m_ParentMapName; // 0x0030 + PulseSymbol_t m_ParentXmlName; // 0x0040 + CUtlVector< CPulse_Chunk* > m_Chunks; // 0x0050 + CUtlVector< CPulseCell_Base* > m_Cells; // 0x0068 + CUtlVector< CPulse_Variable > m_Vars; // 0x0080 + CUtlVector< CPulse_PublicOutput > m_PublicOutputs; // 0x0098 + CUtlVector< CPulse_InvokeBinding* > m_InvokeBindings; // 0x00B0 + CUtlVector< CPulse_CallInfo* > m_CallInfos; // 0x00C8 + CUtlVector< CPulse_Constant > m_Constants; // 0x00E0 + CUtlVector< CPulse_DomainValue > m_DomainValues; // 0x00F8 + CUtlVector< CPulse_BlackboardReference > m_BlackboardReferences; // 0x0110 + CUtlVector< CPulse_OutputConnection* > m_OutputConnections; // 0x0128 +}; +class CPulseGraphInstance_TestDomain_UseReadOnlyBlackboardView : public CPulseGraphInstance_TestDomain // pulse_system +{ +}; +class CPulseCell_FireCursors : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outflows; // 0x0048 + bool m_bWaitForChildOutflows; // 0x0060 + CPulse_ResumePoint m_OnFinished; // 0x0068 + CPulse_ResumePoint m_OnCanceled; // 0x00B0 +}; +class CPulseCell_Timeline::TimelineEvent_t // pulse_runtime_lib +{ + float32 m_flTimeFromPrevious; // 0x0000 + CPulse_OutflowConnection m_EventOutflow; // 0x0008 +}; +class CPulseCell_IntervalTimer::CursorState_t // pulse_runtime_lib +{ + GameTime_t m_StartTime; // 0x0000 + GameTime_t m_EndTime; // 0x0004 + float32 m_flWaitInterval; // 0x0008 + float32 m_flWaitIntervalHigh; // 0x000C + bool m_bCompleteOnNextWake; // 0x0010 +}; +class CPulseCell_BaseRequirement : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class CPulseCell_BaseState : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ +}; +class OutflowWithRequirements_t // pulse_runtime_lib +{ + CPulse_OutflowConnection m_Connection; // 0x0000 + PulseDocNodeID_t m_DestinationFlowNodeID; // 0x0048 + CUtlVector< PulseDocNodeID_t > m_RequirementNodeIDs; // 0x0050 + CUtlVector< int32 > m_nCursorStateBlockIndex; // 0x0068 +}; +class CPulseCell_IsRequirementValid : public CPulseCell_BaseRequirement // pulse_runtime_lib +{ +}; +class CPulseCell_Value_Gradient : public CPulseCell_BaseValue // pulse_runtime_lib +{ + CColorGradient m_Gradient; // 0x0048 +}; +class CPulseCursorFuncs // pulse_runtime_lib +{ +}; +class PulseNodeDynamicOutflows_t::DynamicOutflow_t // pulse_runtime_lib +{ + CGlobalSymbol m_OutflowID; // 0x0000 + CPulse_OutflowConnection m_Connection; // 0x0008 +}; +class CPulseCell_Test_MultiOutflow_WithParams : public CPulseCell_BaseFlow // pulse_system +{ + SignatureOutflow_Continue m_Out1; // 0x0048 + SignatureOutflow_Continue m_Out2; // 0x0090 +}; +class CBasePulseGraphInstance // pulse_runtime_lib +{ +}; +class CPulseCell_Inflow_GraphHook : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_HookName; // 0x0080 +}; +class SignatureOutflow_Resume : public CPulse_ResumePoint // pulse_runtime_lib +{ +}; +class CPulseCell_Test_MultiOutflow_WithParams_Yielding::CursorState_t // pulse_system +{ + int32 nTestStep; // 0x0000 +}; +class CPulseTurtleGraphicsCursor : public CPulseExecCursor // pulse_system +{ + Color m_Color; // 0x00D0 + Vector2D m_vPos; // 0x00D4 + float32 m_flHeadingDeg; // 0x00DC + bool m_bPenUp; // 0x00E0 +}; +class CPulseCell_TestWaitWithCursorState::CursorState_t // pulse_system +{ + float32 flWaitValue; // 0x0000 + bool bFailOnCancel; // 0x0004 +}; +class CPulseCell_Inflow_BaseEntrypoint : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseRuntimeChunkIndex_t m_EntryChunk; // 0x0048 + PulseRegisterMap_t m_RegisterMap; // 0x0050 +}; +class CPulseCell_Test_MultiInflow_NoDefault : public CPulseCell_BaseFlow // pulse_system +{ +}; +class CPulseCell_WaitForCursorsWithTagBase : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + int32 m_nCursorsAllowedToWait; // 0x0048 + CPulse_ResumePoint m_WaitComplete; // 0x0050 +}; +class CPulse_InvokeBinding // pulse_runtime_lib +{ + PulseRegisterMap_t m_RegisterMap; // 0x0000 + PulseSymbol_t m_FuncName; // 0x0030 + PulseRuntimeCellIndex_t m_nCellIndex; // 0x0040 + PulseRuntimeChunkIndex_t m_nSrcChunk; // 0x0044 + int32 m_nSrcInstruction; // 0x0048 +}; +class CPulseCell_IntervalTimer : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_Completed; // 0x0048 + SignatureOutflow_Continue m_OnInterval; // 0x0090 +}; +class CPulseTestScriptLib // pulse_runtime_lib +{ +}; +class CPulseCell_BaseLerp : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_WakeResume; // 0x0048 +}; +class CPulseCell_Value_TestValue50 : public CPulseCell_BaseValue // pulse_system +{ +}; +class CPulseCell_Test_MultiOutflow_WithParams_Yielding : public CPulseCell_BaseYieldingInflow // pulse_system +{ + SignatureOutflow_Continue m_Out1; // 0x0048 + SignatureOutflow_Continue m_AsyncChild1; // 0x0090 + SignatureOutflow_Continue m_AsyncChild2; // 0x00D8 + SignatureOutflow_Resume m_YieldResume1; // 0x0120 + SignatureOutflow_Resume m_YieldResume2; // 0x0168 +}; +class CPulseCell_Value_Curve : public CPulseCell_BaseValue // pulse_runtime_lib +{ + CPiecewiseCurve m_Curve; // 0x0048 +}; +class CPulseCell_Inflow_EventHandler : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_EventName; // 0x0080 +}; +class CPulseCell_BaseFlow : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class CPulseCell_Step_TestDomainTracepoint : public CPulseCell_BaseFlow // pulse_system +{ +}; +class CPulseCell_Outflow_CycleShuffled::InstanceState_t // pulse_runtime_lib +{ + CUtlVectorFixedGrowable< uint8, 8 > m_Shuffle; // 0x0000 + int32 m_nNextShuffle; // 0x0020 +}; +class CPulseCell_BaseLerp::CursorState_t // pulse_runtime_lib +{ + GameTime_t m_StartTime; // 0x0000 + GameTime_t m_EndTime; // 0x0004 +}; +class CPulseGraphInstance_TestDomain_Derived : public CPulseGraphInstance_TestDomain // pulse_system +{ + int32 m_nInstanceValueX; // 0x0160 +}; +class CPulseCell_WaitForCursorsWithTagBase::CursorState_t // pulse_runtime_lib +{ + PulseSymbol_t m_TagName; // 0x0000 +}; +class CPulseArraylib // pulse_runtime_lib +{ +}; +class CPulseGraphInstance_TestDomain : public CBasePulseGraphInstance // pulse_system +{ + bool m_bIsRunningUnitTests; // 0x0130 + bool m_bExplicitTimeStepping; // 0x0131 + bool m_bExpectingToDestroyWithYieldedCursors; // 0x0132 + bool m_bQuietTracepoints; // 0x0133 + bool m_bExpectingCursorTerminatedDueToMaxInstructions; // 0x0134 + int32 m_nCursorsTerminatedDueToMaxInstructions; // 0x0138 + int32 m_nNextValidateIndex; // 0x013C + CUtlVector< CUtlString > m_Tracepoints; // 0x0140 + bool m_bTestYesOrNoPath; // 0x0158 +}; +class SignatureOutflow_Continue : public CPulse_OutflowConnection // pulse_runtime_lib +{ +}; +class CPulseCell_Timeline : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CUtlVector< CPulseCell_Timeline::TimelineEvent_t > m_TimelineEvents; // 0x0048 + bool m_bWaitForChildOutflows; // 0x0060 + CPulse_ResumePoint m_OnFinished; // 0x0068 + CPulse_ResumePoint m_OnCanceled; // 0x00B0 +}; +class CPulseCell_Inflow_EntOutputHandler : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_SourceEntity; // 0x0080 + PulseSymbol_t m_SourceOutput; // 0x0090 + CPulseValueFullType m_ExpectedParamType; // 0x00A0 +}; +class CPulseCell_Outflow_TestExplicitYesNo : public CPulseCell_BaseFlow // pulse_system +{ + CPulse_OutflowConnection m_Yes; // 0x0048 + CPulse_OutflowConnection m_No; // 0x0090 +}; +class CPulseCell_Outflow_TestRandomYesNo : public CPulseCell_BaseFlow // pulse_system +{ + CPulse_OutflowConnection m_Yes; // 0x0048 + CPulse_OutflowConnection m_No; // 0x0090 +}; +class CPulseCell_Outflow_CycleOrdered::InstanceState_t // pulse_runtime_lib +{ + int32 m_nNextIndex; // 0x0000 +}; +class CPulseCell_LimitCount::InstanceState_t // pulse_runtime_lib +{ + int32 m_nCurrentCount; // 0x0000 +}; +class FakeEntity_tAPI // pulse_system +{ +}; +class CPulseCell_Test_MultiInflow_WithDefault : public CPulseCell_BaseFlow // pulse_system +{ +}; +class CPulseCell_Step_DebugLog : public CPulseCell_BaseFlow // pulse_runtime_lib +{ +}; +class CPulseCell_BaseYieldingInflow : public CPulseCell_BaseFlow // pulse_runtime_lib +{ +}; +class PulseNodeDynamicOutflows_t // pulse_runtime_lib +{ + CUtlVector< PulseNodeDynamicOutflows_t::DynamicOutflow_t > m_Outflows; // 0x0000 +}; +class CPulseCell_IsRequirementValid::Criteria_t // pulse_runtime_lib +{ + bool m_bIsValid; // 0x0000 +}; +class CPulseCell_Inflow_ObservableVariableListener : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseRuntimeBlackboardReferenceIndex_t m_nBlackboardReference; // 0x0080 + bool m_bSelfReference; // 0x0082 +}; +class CPulseCell_Outflow_CycleOrdered : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class PulseSelectorOutflowList_t // pulse_runtime_lib +{ + CUtlVector< OutflowWithRequirements_t > m_Outflows; // 0x0000 +}; +class CPulseGraphInstance_TurtleGraphics : public CBasePulseGraphInstance // pulse_system +{ +}; +class CPulseCell_Val_TestDomainGetEntityName : public CPulseCell_BaseValue // pulse_system +{ +}; +class CPulseCell_Inflow_Wait : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_WakeResume; // 0x0048 +}; +class CPulseCell_TestWaitWithCursorState : public CPulseCell_BaseYieldingInflow // pulse_system +{ + CPulse_ResumePoint m_WakeResume; // 0x0048 + CPulse_ResumePoint m_WakeCancel; // 0x0090 + CPulse_ResumePoint m_WakeFail; // 0x00D8 +}; +class CPulseCell_Outflow_CycleShuffled : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class CPulseCell_Inflow_Method : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_MethodName; // 0x0080 + CUtlString m_Description; // 0x0090 + bool m_bIsPublic; // 0x0098 + CPulseValueFullType m_ReturnType; // 0x00A0 + CUtlLeanVector< CPulseRuntimeMethodArg > m_Args; // 0x00B8 +}; +class CPulseCell_BaseValue : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class CPulseCell_BooleanSwitchState : public CPulseCell_BaseState // pulse_runtime_lib +{ + PulseObservableBoolExpression_t m_Condition; // 0x0048 + CPulse_OutflowConnection m_SubGraph; // 0x00C0 + CPulse_OutflowConnection m_WhenTrue; // 0x0108 + CPulse_OutflowConnection m_WhenFalse; // 0x0150 +}; +class FakeEntityDerivedB_tAPI // pulse_system +{ +}; +class CPulseCell_Inflow_Yield : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_UnyieldResume; // 0x0048 +}; +class CPulseMathlib // pulse_runtime_lib +{ +}; +class CPulseCell_Unknown : public CPulseCell_Base // pulse_runtime_lib +{ + KeyValues3 m_UnknownKeys; // 0x0048 +}; +class CPulseCell_Outflow_CycleRandom : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class CPulseCell_Step_PublicOutput : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseRuntimeOutputIndex_t m_OutputIndex; // 0x0048 +}; +class CPulseCell_Val_TestDomainFindEntityByName : public CPulseCell_BaseValue // pulse_system +{ +}; +class CPulse_BlackboardReference // pulse_runtime_lib +{ + CStrongHandle< InfoForResourceTypeIPulseGraphDef > m_hBlackboardResource; // 0x0000 + PulseSymbol_t m_BlackboardResource; // 0x0008 + PulseDocNodeID_t m_nNodeID; // 0x0018 + CGlobalSymbol m_NodeName; // 0x0020 +}; +class CPulseCell_Value_RandomInt : public CPulseCell_BaseValue // pulse_runtime_lib +{ +}; +class CPulseCell_Step_TestDomainEntFire : public CPulseCell_BaseFlow // pulse_system +{ + CUtlString m_Input; // 0x0048 +}; +class FakeEntityDerivedA_tAPI // pulse_system +{ +}; +class CPulseCell_ExampleSelector : public CPulseCell_BaseFlow // pulse_system +{ + PulseSelectorOutflowList_t m_OutflowList; // 0x0048 +}; +class CPulse_CallInfo // pulse_runtime_lib +{ + PulseSymbol_t m_PortName; // 0x0000 + PulseDocNodeID_t m_nEditorNodeID; // 0x0010 + PulseRegisterMap_t m_RegisterMap; // 0x0018 + PulseDocNodeID_t m_CallMethodID; // 0x0048 + PulseRuntimeChunkIndex_t m_nSrcChunk; // 0x004C + int32 m_nSrcInstruction; // 0x0050 +}; +class CPulseCell_InlineNodeSkipSelector : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseDocNodeID_t m_nFlowNodeID; // 0x0048 + bool m_bAnd; // 0x004C + PulseSelectorOutflowList_t m_PassOutflow; // 0x0050 + CPulse_OutflowConnection m_FailOutflow; // 0x0068 +}; +class CPulseCell_ExampleCriteria::Criteria_t // pulse_system +{ + float32 m_flFloatValue1; // 0x0000 + float32 m_flFloatValue2; // 0x0004 + bool m_bMyBool; // 0x0008 +}; +class CPulseCell_ExampleCriteria : public CPulseCell_BaseRequirement // pulse_system +{ +}; +class CPulseCell_LimitCount : public CPulseCell_BaseRequirement // pulse_runtime_lib +{ + int32 m_nLimitCount; // 0x0048 +}; +class CPulseCell_Step_CallExternalMethod : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + PulseSymbol_t m_MethodName; // 0x0048 + PulseSymbol_t m_GameBlackboard; // 0x0058 + CUtlLeanVector< CPulseRuntimeMethodArg > m_ExpectedArgs; // 0x0068 + PulseMethodCallMode_t m_nAsyncCallMode; // 0x0078 + CPulse_ResumePoint m_OnFinished; // 0x0080 +}; +class PulseObservableBoolExpression_t // pulse_runtime_lib +{ + CPulse_OutflowConnection m_EvaluateConnection; // 0x0000 + CUtlVector< PulseRuntimeVarIndex_t > m_DependentObservableVars; // 0x0048 + CUtlVector< PulseRuntimeBlackboardReferenceIndex_t > m_DependentObservableBlackboardReferences; // 0x0060 +}; +class CPulseCell_LimitCount::Criteria_t // pulse_runtime_lib +{ + bool m_bLimitCountPasses; // 0x0000 +}; +class CPulseCell_Step_TestDomainCreateFakeEntity : public CPulseCell_BaseFlow // pulse_system +{ +}; +class CPulseCell_CursorQueue : public CPulseCell_WaitForCursorsWithTagBase // pulse_runtime_lib +{ + int32 m_nCursorsAllowedToRunParallel; // 0x0098 +}; +class CPulseCell_Value_RandomFloat : public CPulseCell_BaseValue // pulse_runtime_lib +{ +}; +class CPulseExecCursor // pulse_runtime_lib +{ +}; +class CEntityInstance // entity2 +{ + CUtlSymbolLarge m_iszPrivateVScripts; // 0x0008 + CEntityIdentity* m_pEntity; // 0x0010 + CScriptComponent* m_CScriptComponent; // 0x0030 +}; +class CEntityComponent // entity2 +{ +}; +class CScriptComponent : public CEntityComponent // entity2 +{ + CUtlSymbolLarge m_scriptClassName; // 0x0030 +}; +class CEntityIdentity // entity2 +{ + int32 m_nameStringableIndex; // 0x0014 + CUtlSymbolLarge m_name; // 0x0018 + CUtlSymbolLarge m_designerName; // 0x0020 + uint32 m_flags; // 0x0030 + WorldGroupId_t m_worldGroupId; // 0x0038 + uint32 m_fDataObjectTypes; // 0x003C + ChangeAccessorFieldPathIndex_t m_PathIndex; // 0x0040 + CEntityAttributeTable* m_pAttributes; // 0x0048 + CEntityIdentity* m_pPrev; // 0x0050 + CEntityIdentity* m_pNext; // 0x0058 + CEntityIdentity* m_pPrevByClass; // 0x0060 + CEntityIdentity* m_pNextByClass; // 0x0068 +}; +class CPulseCell_WaitForCursorsWithTag : public CPulseCell_WaitForCursorsWithTagBase // pulse_runtime_lib +{ + bool m_bTagSelfWhenComplete; // 0x0098 + PulseCursorCancelPriority_t m_nDesiredKillPriority; // 0x009C +}; +class CPulseCell_Base // pulse_runtime_lib +{ + PulseDocNodeID_t m_nEditorNodeID; // 0x0008 +}; +class CPulse_ResumePoint : public CPulse_OutflowConnection // pulse_runtime_lib +{ +}; +class CPulseCell_PickBestOutflowSelector : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseBestOutflowRules_t m_nCheckType; // 0x0048 + PulseSelectorOutflowList_t m_OutflowList; // 0x0050 +}; +class CParticleBindingRealPulse : public CParticleCollectionBindingInstance // particleslib +{ +}; +class CPulseCell_WaitForObservable : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + PulseObservableBoolExpression_t m_Condition; // 0x0048 + CPulse_ResumePoint m_OnTrue; // 0x00C0 +}; +class CPulse_OutflowConnection // pulse_runtime_lib +{ + PulseSymbol_t m_SourceOutflowName; // 0x0000 + PulseRuntimeChunkIndex_t m_nDestChunk; // 0x0010 + int32 m_nInstruction; // 0x0014 + PulseRegisterMap_t m_OutflowRegisterMap; // 0x0018 +}; +class CPulseGraphDef // pulse_runtime_lib +{ + PulseSymbol_t m_DomainIdentifier; // 0x0008 + CPulseValueFullType m_DomainSubType; // 0x0018 + PulseSymbol_t m_ParentMapName; // 0x0030 + PulseSymbol_t m_ParentXmlName; // 0x0040 + CUtlVector< CPulse_Chunk* > m_Chunks; // 0x0050 + CUtlVector< CPulseCell_Base* > m_Cells; // 0x0068 + CUtlVector< CPulse_Variable > m_Vars; // 0x0080 + CUtlVector< CPulse_PublicOutput > m_PublicOutputs; // 0x0098 + CUtlVector< CPulse_InvokeBinding* > m_InvokeBindings; // 0x00B0 + CUtlVector< CPulse_CallInfo* > m_CallInfos; // 0x00C8 + CUtlVector< CPulse_Constant > m_Constants; // 0x00E0 + CUtlVector< CPulse_DomainValue > m_DomainValues; // 0x00F8 + CUtlVector< CPulse_BlackboardReference > m_BlackboardReferences; // 0x0110 + CUtlVector< CPulse_OutputConnection* > m_OutputConnections; // 0x0128 +}; +class CPulseCell_FireCursors : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outflows; // 0x0048 + bool m_bWaitForChildOutflows; // 0x0060 + CPulse_ResumePoint m_OnFinished; // 0x0068 + CPulse_ResumePoint m_OnCanceled; // 0x00B0 +}; +class CPulseCell_Timeline::TimelineEvent_t // pulse_runtime_lib +{ + float32 m_flTimeFromPrevious; // 0x0000 + CPulse_OutflowConnection m_EventOutflow; // 0x0008 +}; +class CPulseCell_IntervalTimer::CursorState_t // pulse_runtime_lib +{ + GameTime_t m_StartTime; // 0x0000 + GameTime_t m_EndTime; // 0x0004 + float32 m_flWaitInterval; // 0x0008 + float32 m_flWaitIntervalHigh; // 0x000C + bool m_bCompleteOnNextWake; // 0x0010 +}; +class CPulseCell_BaseRequirement : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class CPulseCell_BaseState : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ +}; +class OutflowWithRequirements_t // pulse_runtime_lib +{ + CPulse_OutflowConnection m_Connection; // 0x0000 + PulseDocNodeID_t m_DestinationFlowNodeID; // 0x0048 + CUtlVector< PulseDocNodeID_t > m_RequirementNodeIDs; // 0x0050 + CUtlVector< int32 > m_nCursorStateBlockIndex; // 0x0068 +}; +class CPulseCell_IsRequirementValid : public CPulseCell_BaseRequirement // pulse_runtime_lib +{ +}; +class CPulseCell_Value_Gradient : public CPulseCell_BaseValue // pulse_runtime_lib +{ + CColorGradient m_Gradient; // 0x0048 +}; +class CPulseCursorFuncs // pulse_runtime_lib +{ +}; +class PulseNodeDynamicOutflows_t::DynamicOutflow_t // pulse_runtime_lib +{ + CGlobalSymbol m_OutflowID; // 0x0000 + CPulse_OutflowConnection m_Connection; // 0x0008 +}; +class CBasePulseGraphInstance // pulse_runtime_lib +{ +}; +class CPulseCell_Inflow_GraphHook : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_HookName; // 0x0080 +}; +class SignatureOutflow_Resume : public CPulse_ResumePoint // pulse_runtime_lib +{ +}; +class CPulseCell_Inflow_BaseEntrypoint : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseRuntimeChunkIndex_t m_EntryChunk; // 0x0048 + PulseRegisterMap_t m_RegisterMap; // 0x0050 +}; +class CPulseCell_WaitForCursorsWithTagBase : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + int32 m_nCursorsAllowedToWait; // 0x0048 + CPulse_ResumePoint m_WaitComplete; // 0x0050 +}; +class CPulse_InvokeBinding // pulse_runtime_lib +{ + PulseRegisterMap_t m_RegisterMap; // 0x0000 + PulseSymbol_t m_FuncName; // 0x0030 + PulseRuntimeCellIndex_t m_nCellIndex; // 0x0040 + PulseRuntimeChunkIndex_t m_nSrcChunk; // 0x0044 + int32 m_nSrcInstruction; // 0x0048 +}; +class CPulseCell_IntervalTimer : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_Completed; // 0x0048 + SignatureOutflow_Continue m_OnInterval; // 0x0090 +}; +class CPulseTestScriptLib // pulse_runtime_lib +{ +}; +class CPulseCell_BaseLerp : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_WakeResume; // 0x0048 +}; +class CPulseCell_Value_Curve : public CPulseCell_BaseValue // pulse_runtime_lib +{ + CPiecewiseCurve m_Curve; // 0x0048 +}; +class CPulseCell_Inflow_EventHandler : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_EventName; // 0x0080 +}; +class CPulseCell_BaseFlow : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class CPulseCell_Outflow_CycleShuffled::InstanceState_t // pulse_runtime_lib +{ + CUtlVectorFixedGrowable< uint8, 8 > m_Shuffle; // 0x0000 + int32 m_nNextShuffle; // 0x0020 +}; +class CPulseCell_BaseLerp::CursorState_t // pulse_runtime_lib +{ + GameTime_t m_StartTime; // 0x0000 + GameTime_t m_EndTime; // 0x0004 +}; +class CPulseCell_WaitForCursorsWithTagBase::CursorState_t // pulse_runtime_lib +{ + PulseSymbol_t m_TagName; // 0x0000 +}; +class CPulseArraylib // pulse_runtime_lib +{ +}; +class SignatureOutflow_Continue : public CPulse_OutflowConnection // pulse_runtime_lib +{ +}; +class CPulseCell_Timeline : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CUtlVector< CPulseCell_Timeline::TimelineEvent_t > m_TimelineEvents; // 0x0048 + bool m_bWaitForChildOutflows; // 0x0060 + CPulse_ResumePoint m_OnFinished; // 0x0068 + CPulse_ResumePoint m_OnCanceled; // 0x00B0 +}; +class CPulseCell_Inflow_EntOutputHandler : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_SourceEntity; // 0x0080 + PulseSymbol_t m_SourceOutput; // 0x0090 + CPulseValueFullType m_ExpectedParamType; // 0x00A0 +}; +class CPulseCell_Outflow_CycleOrdered::InstanceState_t // pulse_runtime_lib +{ + int32 m_nNextIndex; // 0x0000 +}; +class CParticleCollectionBindingInstance : public CBasePulseGraphInstance // particleslib +{ +}; +class CPulseCell_LimitCount::InstanceState_t // pulse_runtime_lib +{ + int32 m_nCurrentCount; // 0x0000 +}; +class CPulseCell_Step_DebugLog : public CPulseCell_BaseFlow // pulse_runtime_lib +{ +}; +class CPulseCell_BaseYieldingInflow : public CPulseCell_BaseFlow // pulse_runtime_lib +{ +}; +class PulseNodeDynamicOutflows_t // pulse_runtime_lib +{ + CUtlVector< PulseNodeDynamicOutflows_t::DynamicOutflow_t > m_Outflows; // 0x0000 +}; +class CPulseCell_IsRequirementValid::Criteria_t // pulse_runtime_lib +{ + bool m_bIsValid; // 0x0000 +}; +class CPulseCell_Inflow_ObservableVariableListener : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseRuntimeBlackboardReferenceIndex_t m_nBlackboardReference; // 0x0080 + bool m_bSelfReference; // 0x0082 +}; +class CPulseCell_Outflow_CycleOrdered : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class PulseSelectorOutflowList_t // pulse_runtime_lib +{ + CUtlVector< OutflowWithRequirements_t > m_Outflows; // 0x0000 +}; +class CPulseCell_Inflow_Wait : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_WakeResume; // 0x0048 +}; +class CPulseCell_Outflow_CycleShuffled : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class CPulseCell_Inflow_Method : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_MethodName; // 0x0080 + CUtlString m_Description; // 0x0090 + bool m_bIsPublic; // 0x0098 + CPulseValueFullType m_ReturnType; // 0x00A0 + CUtlLeanVector< CPulseRuntimeMethodArg > m_Args; // 0x00B8 +}; +class CPulseCell_BaseValue : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class CPulseCell_BooleanSwitchState : public CPulseCell_BaseState // pulse_runtime_lib +{ + PulseObservableBoolExpression_t m_Condition; // 0x0048 + CPulse_OutflowConnection m_SubGraph; // 0x00C0 + CPulse_OutflowConnection m_WhenTrue; // 0x0108 + CPulse_OutflowConnection m_WhenFalse; // 0x0150 +}; +class CPulseCell_Inflow_Yield : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_UnyieldResume; // 0x0048 +}; +class CPulseMathlib // pulse_runtime_lib +{ +}; +class CPulseCell_Unknown : public CPulseCell_Base // pulse_runtime_lib +{ + KeyValues3 m_UnknownKeys; // 0x0048 +}; +class CPulseCell_Outflow_CycleRandom : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class CPulseCell_Step_PublicOutput : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseRuntimeOutputIndex_t m_OutputIndex; // 0x0048 +}; +class CPulse_BlackboardReference // pulse_runtime_lib +{ + CStrongHandle< InfoForResourceTypeIPulseGraphDef > m_hBlackboardResource; // 0x0000 + PulseSymbol_t m_BlackboardResource; // 0x0008 + PulseDocNodeID_t m_nNodeID; // 0x0018 + CGlobalSymbol m_NodeName; // 0x0020 +}; +class CPulseCell_Value_RandomInt : public CPulseCell_BaseValue // pulse_runtime_lib +{ +}; +class CPulse_CallInfo // pulse_runtime_lib +{ + PulseSymbol_t m_PortName; // 0x0000 + PulseDocNodeID_t m_nEditorNodeID; // 0x0010 + PulseRegisterMap_t m_RegisterMap; // 0x0018 + PulseDocNodeID_t m_CallMethodID; // 0x0048 + PulseRuntimeChunkIndex_t m_nSrcChunk; // 0x004C + int32 m_nSrcInstruction; // 0x0050 +}; +class CPulseCell_InlineNodeSkipSelector : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseDocNodeID_t m_nFlowNodeID; // 0x0048 + bool m_bAnd; // 0x004C + PulseSelectorOutflowList_t m_PassOutflow; // 0x0050 + CPulse_OutflowConnection m_FailOutflow; // 0x0068 +}; +class CPulseCell_LimitCount : public CPulseCell_BaseRequirement // pulse_runtime_lib +{ + int32 m_nLimitCount; // 0x0048 +}; +class CPulseCell_Step_CallExternalMethod : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + PulseSymbol_t m_MethodName; // 0x0048 + PulseSymbol_t m_GameBlackboard; // 0x0058 + CUtlLeanVector< CPulseRuntimeMethodArg > m_ExpectedArgs; // 0x0068 + PulseMethodCallMode_t m_nAsyncCallMode; // 0x0078 + CPulse_ResumePoint m_OnFinished; // 0x0080 +}; +class PulseObservableBoolExpression_t // pulse_runtime_lib +{ + CPulse_OutflowConnection m_EvaluateConnection; // 0x0000 + CUtlVector< PulseRuntimeVarIndex_t > m_DependentObservableVars; // 0x0048 + CUtlVector< PulseRuntimeBlackboardReferenceIndex_t > m_DependentObservableBlackboardReferences; // 0x0060 +}; +class CPulseCell_LimitCount::Criteria_t // pulse_runtime_lib +{ + bool m_bLimitCountPasses; // 0x0000 +}; +class CPulseCell_CursorQueue : public CPulseCell_WaitForCursorsWithTagBase // pulse_runtime_lib +{ + int32 m_nCursorsAllowedToRunParallel; // 0x0098 +}; +class CPulseCell_Value_RandomFloat : public CPulseCell_BaseValue // pulse_runtime_lib +{ +}; +class CPulseExecCursor // pulse_runtime_lib +{ +}; +class CWeaponNOVA : public CCSWeaponBaseShotgun // server +{ +}; +class CPointWorldText : public CModelPointEntity // server +{ + char[512] m_messageText; // 0x0730 + char[64] m_FontName; // 0x0930 + char[64] m_BackgroundMaterialName; // 0x0970 + bool m_bEnabled; // 0x09B0 + bool m_bFullbright; // 0x09B1 + float32 m_flWorldUnitsPerPx; // 0x09B4 + float32 m_flFontSize; // 0x09B8 + float32 m_flDepthOffset; // 0x09BC + bool m_bDrawBackground; // 0x09C0 + float32 m_flBackgroundBorderWidth; // 0x09C4 + float32 m_flBackgroundBorderHeight; // 0x09C8 + float32 m_flBackgroundWorldToUV; // 0x09CC + Color m_Color; // 0x09D0 + PointWorldTextJustifyHorizontal_t m_nJustifyHorizontal; // 0x09D4 + PointWorldTextJustifyVertical_t m_nJustifyVertical; // 0x09D8 + PointWorldTextReorientMode_t m_nReorientMode; // 0x09DC +}; +class CAmbientGeneric : public CPointEntity // server +{ + float32 m_radius; // 0x04A8 + float32 m_flMaxRadius; // 0x04AC + soundlevel_t m_iSoundLevel; // 0x04B0 + dynpitchvol_t m_dpv; // 0x04B4 + bool m_fActive; // 0x0518 + bool m_fLooping; // 0x0519 + CUtlSymbolLarge m_iszSound; // 0x0520 + CUtlSymbolLarge m_sSourceEntName; // 0x0528 + CHandle< CBaseEntity > m_hSoundSource; // 0x0530 + CEntityIndex m_nSoundSourceEntIndex; // 0x0534 +}; +class CEnvEntityMaker : public CPointEntity // server +{ + Vector m_vecEntityMins; // 0x04A8 + Vector m_vecEntityMaxs; // 0x04B4 + CHandle< CBaseEntity > m_hCurrentInstance; // 0x04C0 + CHandle< CBaseEntity > m_hCurrentBlocker; // 0x04C4 + Vector m_vecBlockerOrigin; // 0x04C8 + QAngle m_angPostSpawnDirection; // 0x04D4 + float32 m_flPostSpawnDirectionVariance; // 0x04E0 + float32 m_flPostSpawnSpeed; // 0x04E4 + bool m_bPostSpawnUseAngles; // 0x04E8 + CUtlSymbolLarge m_iszTemplate; // 0x04F0 + CEntityIOOutput m_pOutputOnSpawned; // 0x04F8 + CEntityIOOutput m_pOutputOnFailedSpawn; // 0x0510 +}; +class CPulseGraphInstance_GameBlackboard : public CPulseGraphInstance_ServerEntity // server +{ +}; +class CPointEntity : public CBaseEntity // server +{ +}; +class CFilterEnemy : public CBaseFilter // server +{ + CUtlSymbolLarge m_iszEnemyName; // 0x04E0 + float32 m_flRadius; // 0x04E8 + float32 m_flOuterRadius; // 0x04EC + int32 m_nMaxSquadmatesPerEnemy; // 0x04F0 + CUtlSymbolLarge m_iszPlayerName; // 0x04F8 +}; +class CCSGO_WingmanIntroCounterTerroristPosition : public CCSGO_WingmanIntroCharacterPosition // server +{ +}; +class CPulseCell_WaitForCursorsWithTag : public CPulseCell_WaitForCursorsWithTagBase // pulse_runtime_lib +{ + bool m_bTagSelfWhenComplete; // 0x0098 + PulseCursorCancelPriority_t m_nDesiredKillPriority; // 0x009C +}; +class CFuncTrackAuto : public CFuncTrackChange // server +{ +}; +class CScriptedSequence : public CBaseEntity // server +{ + CUtlSymbolLarge m_iszEntry; // 0x04A8 + CUtlSymbolLarge m_iszPreIdle; // 0x04B0 + CUtlSymbolLarge m_iszPlay; // 0x04B8 + CUtlSymbolLarge m_iszPostIdle; // 0x04C0 + CUtlSymbolLarge m_iszModifierToAddOnPlay; // 0x04C8 + CUtlSymbolLarge m_iszNextScript; // 0x04D0 + CUtlSymbolLarge m_iszEntity; // 0x04D8 + CUtlSymbolLarge m_iszSyncGroup; // 0x04E0 + ScriptedMoveTo_t m_nMoveTo; // 0x04E8 + SharedMovementGait_t m_nMoveToGait; // 0x04EC + ScriptedHeldWeaponBehavior_t m_nHeldWeaponBehavior; // 0x04F0 + ForcedCrouchState_t m_nForcedCrouchState; // 0x04F4 + bool m_bIsPlayingPreIdle; // 0x04F8 + bool m_bIsPlayingEntry; // 0x04F9 + bool m_bIsPlayingAction; // 0x04FA + bool m_bIsPlayingPostIdle; // 0x04FB + bool m_bDontRotateOther; // 0x04FC + bool m_bIsRepeatable; // 0x04FD + bool m_bShouldLeaveCorpse; // 0x04FE + bool m_bStartOnSpawn; // 0x04FF + bool m_bDisallowInterrupts; // 0x0500 + bool m_bCanOverrideNPCState; // 0x0501 + bool m_bDontTeleportAtEnd; // 0x0502 + bool m_bHighPriority; // 0x0503 + bool m_bHideDebugComplaints; // 0x0504 + bool m_bContinueOnDeath; // 0x0505 + bool m_bLoopPreIdleSequence; // 0x0506 + bool m_bLoopActionSequence; // 0x0507 + bool m_bLoopPostIdleSequence; // 0x0508 + bool m_bSynchPostIdles; // 0x0509 + bool m_bIgnoreLookAt; // 0x050A + bool m_bIgnoreGravity; // 0x050B + bool m_bDisableNPCCollisions; // 0x050C + bool m_bKeepAnimgraphLockedPost; // 0x050D + bool m_bDontAddModifiers; // 0x050E + bool m_bDisableAimingWhileMoving; // 0x050F + bool m_bIgnoreRotation; // 0x0510 + float32 m_flRadius; // 0x0514 + float32 m_flRepeat; // 0x0518 + float32 m_flPlayAnimFadeInTime; // 0x051C + float32 m_flMoveInterpTime; // 0x0520 + float32 m_flAngRate; // 0x0524 + float32 m_flMoveSpeed; // 0x0528 + bool m_bWaitUntilMoveCompletesToStartAnimation; // 0x052C + int32 m_nNotReadySequenceCount; // 0x0530 + GameTime_t m_startTime; // 0x0534 + bool m_bWaitForBeginSequence; // 0x0538 + int32 m_saved_effects; // 0x053C + int32 m_savedFlags; // 0x0540 + int32 m_savedCollisionGroup; // 0x0544 + bool m_bInterruptable; // 0x0548 + bool m_sequenceStarted; // 0x0549 + bool m_bPositionRelativeToOtherEntity; // 0x054A + CHandle< CBaseEntity > m_hTargetEnt; // 0x054C + CHandle< CScriptedSequence > m_hNextCine; // 0x0550 + bool m_bThinking; // 0x0554 + bool m_bInitiatedSelfDelete; // 0x0555 + bool m_bIsTeleportingDueToMoveTo; // 0x0556 + bool m_bAllowCustomInterruptConditions; // 0x0557 + CHandle< CBaseAnimGraph > m_hForcedTarget; // 0x0558 + bool m_bDontCancelOtherSequences; // 0x055C + bool m_bForceSynch; // 0x055D + bool m_bPreventUpdateYawOnFinish; // 0x055E + bool m_bEnsureOnNavmeshOnFinish; // 0x055F + ScriptedOnDeath_t m_onDeathBehavior; // 0x0560 + ScriptedConflictResponse_t m_ConflictResponse; // 0x0564 + CEntityIOOutput m_OnBeginSequence; // 0x0568 + CEntityIOOutput m_OnActionStartOrLoop; // 0x0580 + CEntityIOOutput m_OnEndSequence; // 0x0598 + CEntityIOOutput m_OnPostIdleEndSequence; // 0x05B0 + CEntityIOOutput m_OnCancelSequence; // 0x05C8 + CEntityIOOutput m_OnCancelFailedSequence; // 0x05E0 + CEntityIOOutput[8] m_OnScriptEvent; // 0x05F8 + CTransform m_matOtherToMain; // 0x06C0 + CHandle< CBaseEntity > m_hInteractionMainEntity; // 0x06E0 + int32 m_iPlayerDeathBehavior; // 0x06E4 + bool m_bSkipFadeIn; // 0x06E8 +}; +class CFogTrigger : public CBaseTrigger // server +{ + fogparams_t m_fog; // 0x0890 +}; +class CInfoTeleportDestination : public CPointEntity // server +{ +}; +class CPointBroadcastClientCommand : public CPointEntity // server +{ +}; +class CCSPlayer_PingServices : public CPlayerPawnComponent // server +{ + GameTime_t[5] m_flPlayerPingTokens; // 0x0048 + CHandle< CPlayerPing > m_hPlayerPing; // 0x005C +}; +class CHEGrenade : public CBaseCSGrenade // server +{ +}; +class CPhysicsSpring : public CBaseEntity // server +{ + float32 m_flFrequency; // 0x04B0 + float32 m_flDampingRatio; // 0x04B4 + float32 m_flRestLength; // 0x04B8 + CUtlSymbolLarge m_nameAttachStart; // 0x04C0 + CUtlSymbolLarge m_nameAttachEnd; // 0x04C8 + VectorWS m_start; // 0x04D0 + VectorWS m_end; // 0x04DC + uint32 m_teleportTick; // 0x04E8 +}; +class CEnvMuzzleFlash : public CPointEntity // server +{ + float32 m_flScale; // 0x04A8 + CUtlSymbolLarge m_iszParentAttachment; // 0x04B0 +}; +class CEconItemAttribute // server +{ + uint16 m_iAttributeDefinitionIndex; // 0x0030 + float32 m_flValue; // 0x0034 + float32 m_flInitialValue; // 0x0038 + int32 m_nRefundableCurrency; // 0x003C + bool m_bSetBonus; // 0x0040 +}; +class CBaseTriggerAPI // server +{ +}; +class CWeaponRevolver : public CCSWeaponBaseGun // server +{ +}; +class CFuncTrainControls : public CBaseModelEntity // server +{ +}; +class CBtActionCombatPositioning : public CBtNode // server +{ + CUtlString m_szSensorInputKey; // 0x0068 + CUtlString m_szIsAttackingKey; // 0x0080 + CountdownTimer m_ActionTimer; // 0x0088 + bool m_bCrouching; // 0x00A0 +}; +class PredictedDamageTag_t // server +{ + GameTick_t nTagTick; // 0x0030 + float32 flFlinchModSmall; // 0x0034 + float32 flFlinchModLarge; // 0x0038 + float32 flFriendlyFireDamageReductionRatio; // 0x003C +}; +class CFuncRetakeBarrier : public CDynamicProp // server +{ +}; +class CTriggerBuoyancy : public CBaseTrigger // server +{ + CBuoyancyHelper m_BuoyancyHelper; // 0x0890 + float32 m_flFluidDensity; // 0x09A8 +}; +class CTonemapController2Alias_env_tonemap_controller2 : public CTonemapController2 // server +{ +}; +class CPathTrack : public CPointEntity // server +{ + CPathTrack* m_pnext; // 0x04A8 + CPathTrack* m_pprevious; // 0x04B0 + CPathTrack* m_paltpath; // 0x04B8 + float32 m_flRadius; // 0x04C0 + float32 m_length; // 0x04C4 + CUtlSymbolLarge m_altName; // 0x04C8 + int32 m_nIterVal; // 0x04D0 + TrackOrientationType_t m_eOrientationType; // 0x04D4 + CEntityIOOutput m_OnPass; // 0x04D8 +}; +class CPulseCell_Base // pulse_runtime_lib +{ + PulseDocNodeID_t m_nEditorNodeID; // 0x0008 +}; +class CTriggerProximity : public CBaseTrigger // server +{ + CHandle< CBaseEntity > m_hMeasureTarget; // 0x0890 + CUtlSymbolLarge m_iszMeasureTarget; // 0x0898 + float32 m_fRadius; // 0x08A0 + int32 m_nTouchers; // 0x08A4 + CEntityOutputTemplate< float32, float32 > m_NearestEntityDistance; // 0x08A8 +}; +class CTankTrainAI : public CPointEntity // server +{ + CHandle< CFuncTrackTrain > m_hTrain; // 0x04A8 + CHandle< CBaseEntity > m_hTargetEntity; // 0x04AC + int32 m_soundPlaying; // 0x04B0 + CUtlSymbolLarge m_startSoundName; // 0x04C8 + CUtlSymbolLarge m_engineSoundName; // 0x04D0 + CUtlSymbolLarge m_movementSoundName; // 0x04D8 + CUtlSymbolLarge m_targetEntityName; // 0x04E0 +}; +class CGameText : public CRulePointEntity // server +{ + CUtlSymbolLarge m_iszMessage; // 0x0740 + hudtextparms_t m_textParms; // 0x0748 +}; +class CGameEnd : public CRulePointEntity // server +{ +}; +class CInfoDeathmatchSpawn : public SpawnPoint // server +{ +}; +class CCSPlayerController_InventoryServices : public CPlayerControllerComponent // server +{ + uint16 m_unMusicID; // 0x0040 + MedalRank_t[6] m_rank; // 0x0044 + int32 m_nPersonaDataPublicLevel; // 0x005C + int32 m_nPersonaDataPublicCommendsLeader; // 0x0060 + int32 m_nPersonaDataPublicCommendsTeacher; // 0x0064 + int32 m_nPersonaDataPublicCommendsFriendly; // 0x0068 + int32 m_nPersonaDataXpTrailLevel; // 0x006C + uint32[1] m_unEquippedPlayerSprayIDs; // 0x0F48 + uint64 m_unCurrentLoadoutHash; // 0x0F50 + CUtlVectorEmbeddedNetworkVar< ServerAuthoritativeWeaponSlot_t > m_vecServerAuthoritativeWeaponSlots; // 0x0F58 +}; +class CCSPlayerModernJump // server +{ + GameTick_t m_nLastActualJumpPressTick; // 0x0010 + float32 m_flLastActualJumpPressFrac; // 0x0014 + GameTick_t m_nLastUsableJumpPressTick; // 0x0018 + float32 m_flLastUsableJumpPressFrac; // 0x001C + GameTick_t m_nLastLandedTick; // 0x0020 + float32 m_flLastLandedFrac; // 0x0024 + float32 m_flLastLandedVelocityX; // 0x0028 + float32 m_flLastLandedVelocityY; // 0x002C +}; +class CPulse_ResumePoint : public CPulse_OutflowConnection // pulse_runtime_lib +{ +}; +class CBaseFlex : public CBaseAnimGraph // server +{ + CNetworkUtlVectorBase< float32 > m_flexWeight; // 0x0A20 + VectorWS m_vLookTargetPosition; // 0x0A38 + GameTime_t m_flAllowResponsesEndTime; // 0x0A98 + GameTime_t m_flLastFlexAnimationTime; // 0x0A9C + SceneEventId_t m_nNextSceneEventId; // 0x0AA0 + bool m_bUpdateLayerPriorities; // 0x0AA4 +}; +class CTriggerFan : public CBaseTrigger // server +{ + Vector m_vFanOriginOffset; // 0x0890 + Vector m_vDirection; // 0x089C + bool m_bPushTowardsInfoTarget; // 0x08A8 + bool m_bPushAwayFromInfoTarget; // 0x08A9 + Quaternion m_qNoiseDelta; // 0x08B0 + CHandle< CInfoFan > m_hInfoFan; // 0x08C0 + float32 m_flForce; // 0x08C4 + bool m_bFalloff; // 0x08C8 + CountdownTimer m_RampTimer; // 0x08D0 + VectorWS m_vFanOriginWS; // 0x08E8 + Vector m_vFanOriginLS; // 0x08F4 + Vector m_vFanEndLS; // 0x0900 + Vector m_vNoiseDirectionTarget; // 0x090C + CUtlSymbolLarge m_iszInfoFan; // 0x0918 + float32 m_flRopeForceScale; // 0x0920 + float32 m_flParticleForceScale; // 0x0924 + float32 m_flPlayerForce; // 0x0928 + bool m_bPlayerWindblock; // 0x092C + float32 m_flNPCForce; // 0x0930 + float32 m_flRampTime; // 0x0934 + float32 m_fNoiseDegrees; // 0x0938 + float32 m_fNoiseSpeed; // 0x093C + bool m_bPushPlayer; // 0x0940 + bool m_bRampDown; // 0x0941 + int32 m_nManagerFanIdx; // 0x0944 +}; +class CPhysHingeAlias_phys_hinge_local : public CPhysHinge // server +{ +}; +class CLogicCase : public CLogicalEntity // server +{ + CUtlSymbolLarge[32] m_nCase; // 0x04A8 + int32 m_nShuffleCases; // 0x05A8 + int32 m_nLastShuffleCase; // 0x05AC + uint8[32] m_uchShuffleCaseMap; // 0x05B0 + CEntityIOOutput[32] m_OnCase; // 0x05D0 + CEntityOutputTemplate< CUtlString, char* > m_OnDefault; // 0x08D0 +}; +class CInfoGameEventProxy : public CPointEntity // server +{ + CUtlSymbolLarge m_iszEventName; // 0x04A8 + float32 m_flRange; // 0x04B0 +}; +class CWeaponBizon : public CCSWeaponBaseGun // server +{ +}; +class CGamePlayerZone : public CRuleBrushEntity // server +{ + CEntityIOOutput m_OnPlayerInZone; // 0x0738 + CEntityIOOutput m_OnPlayerOutZone; // 0x0750 + CEntityOutputTemplate< int32, int32 > m_PlayersInCount; // 0x0768 + CEntityOutputTemplate< int32, int32 > m_PlayersOutCount; // 0x0788 +}; +class CBaseToggle : public CBaseModelEntity // server +{ + TOGGLE_STATE m_toggle_state; // 0x0730 + float32 m_flMoveDistance; // 0x0734 + float32 m_flWait; // 0x0738 + float32 m_flLip; // 0x073C + bool m_bAlwaysFireBlockedOutputs; // 0x0740 + Vector m_vecPosition1; // 0x0744 + Vector m_vecPosition2; // 0x0750 + QAngle m_vecMoveAng; // 0x075C + QAngle m_vecAngle1; // 0x0768 + QAngle m_vecAngle2; // 0x0774 + float32 m_flHeight; // 0x0780 + CHandle< CBaseEntity > m_hActivator; // 0x0784 + Vector m_vecFinalDest; // 0x0788 + QAngle m_vecFinalAngle; // 0x0794 + int32 m_movementType; // 0x07A0 + CUtlSymbolLarge m_sMaster; // 0x07A8 +}; +class CPulseServerCursor : public CPulseExecCursor // server +{ + CHandle< CBaseEntity > m_hActivator; // 0x00D8 + CHandle< CBaseEntity > m_hCaller; // 0x00DC +}; +class CPulseCell_PlaySequence : public CPulseCell_BaseYieldingInflow // server +{ + CUtlString m_SequenceName; // 0x0048 + PulseNodeDynamicOutflows_t m_PulseAnimEvents; // 0x0050 + CPulse_ResumePoint m_OnFinished; // 0x0068 + CPulse_ResumePoint m_OnCanceled; // 0x00B0 +}; +class CInferno : public CBaseModelEntity // server +{ + Vector[64] m_firePositions; // 0x0738 + Vector[64] m_fireParentPositions; // 0x0A38 + bool[64] m_bFireIsBurning; // 0x0D38 + Vector[64] m_BurnNormal; // 0x0D78 + int32 m_fireCount; // 0x1078 + int32 m_nInfernoType; // 0x107C + int32 m_nFireEffectTickBegin; // 0x1080 + float32 m_nFireLifetime; // 0x1084 + bool m_bInPostEffectTime; // 0x1088 + bool m_bWasCreatedInSmoke; // 0x1089 + Extent m_extent; // 0x1290 + CountdownTimer m_damageTimer; // 0x12A8 + CountdownTimer m_damageRampTimer; // 0x12C0 + Vector m_splashVelocity; // 0x12D8 + Vector m_InitialSplashVelocity; // 0x12E4 + Vector m_startPos; // 0x12F0 + Vector m_vecOriginalSpawnLocation; // 0x12FC + IntervalTimer m_activeTimer; // 0x1308 + int32 m_fireSpawnOffset; // 0x1318 + int32 m_nMaxFlames; // 0x131C + int32 m_nSpreadCount; // 0x1320 + CountdownTimer m_BookkeepingTimer; // 0x1328 + CountdownTimer m_NextSpreadTimer; // 0x1340 + uint16 m_nSourceItemDefIndex; // 0x1358 +}; +class CTouchExpansionComponent : public CEntityComponent // server +{ +}; +class CPulseCell_Outflow_PlaySceneBase : public CPulseCell_BaseYieldingInflow // server +{ + CPulse_ResumePoint m_OnFinished; // 0x0048 + CPulse_ResumePoint m_OnCanceled; // 0x0090 + CUtlVector< CPulse_OutflowConnection > m_Triggers; // 0x00D8 +}; +class CPulseCell_LerpCameraSettings : public CPulseCell_BaseLerp // server +{ + float32 m_flSeconds; // 0x0090 + PointCameraSettings_t m_Start; // 0x0094 + PointCameraSettings_t m_End; // 0x00A4 +}; +class CWeaponSCAR20 : public CCSWeaponBaseGun // server +{ +}; +class CFuncInteractionLayerClip : public CBaseModelEntity // server +{ + bool m_bDisabled; // 0x0730 + CUtlSymbolLarge m_iszInteractsAs; // 0x0738 + CUtlSymbolLarge m_iszInteractsWith; // 0x0740 +}; +class CCSObserver_UseServices : public CPlayer_UseServices // server +{ +}; +class CTriggerDetectBulletFire : public CBaseTrigger // server +{ + bool m_bPlayerFireOnly; // 0x0890 + CEntityIOOutput m_OnDetectedBulletFire; // 0x0898 +}; +class CCSPlayer_UseServices : public CPlayer_UseServices // server +{ + CHandle< CBaseEntity > m_hLastKnownUseEntity; // 0x0048 + GameTime_t m_flLastUseTimeStamp; // 0x004C + GameTime_t m_flTimeLastUsedWindow; // 0x0050 +}; +class CWeaponAWP : public CCSWeaponBaseGun // server +{ +}; +class CPulseCell_PickBestOutflowSelector : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseBestOutflowRules_t m_nCheckType; // 0x0048 + PulseSelectorOutflowList_t m_OutflowList; // 0x0050 +}; +class CInfoFan : public CPointEntity // server +{ + float32 m_fFanForceMaxRadius; // 0x04E8 + float32 m_fFanForceMinRadius; // 0x04EC + float32 m_flCurveDistRange; // 0x04F0 + CUtlSymbolLarge m_FanForceCurveString; // 0x04F8 +}; +class CGameRules // server +{ + CNetworkVarChainer __m_pChainEntity; // 0x0008 + char[128] m_szQuestName; // 0x0030 + int32 m_nQuestPhase; // 0x00B0 + int32 m_nTotalPausedTicks; // 0x00B4 + int32 m_nPauseStartTick; // 0x00B8 + bool m_bGamePaused; // 0x00BC +}; +class CFish : public CBaseAnimGraph // server +{ + CHandle< CFishPool > m_pool; // 0x0A20 + uint32 m_id; // 0x0A24 + float32 m_x; // 0x0A28 + float32 m_y; // 0x0A2C + float32 m_z; // 0x0A30 + float32 m_angle; // 0x0A34 + float32 m_angleChange; // 0x0A38 + Vector m_forward; // 0x0A3C + Vector m_perp; // 0x0A48 + Vector m_poolOrigin; // 0x0A54 + float32 m_waterLevel; // 0x0A60 + float32 m_speed; // 0x0A64 + float32 m_desiredSpeed; // 0x0A68 + float32 m_calmSpeed; // 0x0A6C + float32 m_panicSpeed; // 0x0A70 + float32 m_avoidRange; // 0x0A74 + CountdownTimer m_turnTimer; // 0x0A78 + bool m_turnClockwise; // 0x0A90 + CountdownTimer m_goTimer; // 0x0A98 + CountdownTimer m_moveTimer; // 0x0AB0 + CountdownTimer m_panicTimer; // 0x0AC8 + CountdownTimer m_disperseTimer; // 0x0AE0 + CountdownTimer m_proximityTimer; // 0x0AF8 + CUtlVector< CFish* > m_visible; // 0x0B10 +}; +class CCSBot : public CBot // server +{ + VectorWS m_eyePosition; // 0x0108 + char[64] m_name; // 0x0114 + float32 m_combatRange; // 0x0154 + bool m_isRogue; // 0x0158 + CountdownTimer m_rogueTimer; // 0x0160 + bool m_diedLastRound; // 0x017C + float32 m_safeTime; // 0x0180 + bool m_wasSafe; // 0x0184 + bool m_blindFire; // 0x018C + CountdownTimer m_surpriseTimer; // 0x0190 + bool m_bAllowActive; // 0x01A8 + bool m_isFollowing; // 0x01A9 + CHandle< CCSPlayerPawn > m_leader; // 0x01AC + float32 m_followTimestamp; // 0x01B0 + float32 m_allowAutoFollowTime; // 0x01B4 + CountdownTimer m_hurryTimer; // 0x01B8 + CountdownTimer m_alertTimer; // 0x01D0 + CountdownTimer m_sneakTimer; // 0x01E8 + CountdownTimer m_panicTimer; // 0x0200 + float32 m_stateTimestamp; // 0x0578 + bool m_isAttacking; // 0x057C + bool m_isOpeningDoor; // 0x057D + CHandle< CBaseEntity > m_taskEntity; // 0x0584 + VectorWS m_goalPosition; // 0x0594 + CHandle< CBaseEntity > m_goalEntity; // 0x05A0 + CHandle< CBaseEntity > m_avoid; // 0x05A4 + float32 m_avoidTimestamp; // 0x05A8 + bool m_isStopping; // 0x05AC + bool m_hasVisitedEnemySpawn; // 0x05AD + IntervalTimer m_stillTimer; // 0x05B0 + bool m_bEyeAnglesUnderPathFinderControl; // 0x05C0 + int32 m_pathIndex; // 0x5EC0 + GameTime_t m_areaEnteredTimestamp; // 0x5EC4 + CountdownTimer m_repathTimer; // 0x5EC8 + CountdownTimer m_avoidFriendTimer; // 0x5EE0 + bool m_isFriendInTheWay; // 0x5EF8 + CountdownTimer m_politeTimer; // 0x5F00 + bool m_isWaitingBehindFriend; // 0x5F18 + float32 m_pathLadderEnd; // 0x5F44 + CountdownTimer m_mustRunTimer; // 0x5F90 + CountdownTimer m_waitTimer; // 0x5FA8 + CountdownTimer m_updateTravelDistanceTimer; // 0x5FC0 + float32[64] m_playerTravelDistance; // 0x5FD8 + uint8 m_travelDistancePhase; // 0x60D8 + uint8 m_hostageEscortCount; // 0x6270 + float32 m_hostageEscortCountTimestamp; // 0x6274 + int32 m_desiredTeam; // 0x6278 + bool m_hasJoined; // 0x627C + bool m_isWaitingForHostage; // 0x627D + CountdownTimer m_inhibitWaitingForHostageTimer; // 0x6280 + CountdownTimer m_waitForHostageTimer; // 0x6298 + Vector m_noisePosition; // 0x62B0 + float32 m_noiseTravelDistance; // 0x62BC + float32 m_noiseTimestamp; // 0x62C0 + CCSPlayerPawn* m_noiseSource; // 0x62C8 + CountdownTimer m_noiseBendTimer; // 0x62E0 + Vector m_bentNoisePosition; // 0x62F8 + bool m_bendNoisePositionValid; // 0x6304 + float32 m_lookAroundStateTimestamp; // 0x6308 + float32 m_lookAheadAngle; // 0x630C + float32 m_forwardAngle; // 0x6310 + float32 m_inhibitLookAroundTimestamp; // 0x6314 + Vector m_lookAtSpot; // 0x631C + float32 m_lookAtSpotDuration; // 0x632C + float32 m_lookAtSpotTimestamp; // 0x6330 + float32 m_lookAtSpotAngleTolerance; // 0x6334 + bool m_lookAtSpotClearIfClose; // 0x6338 + bool m_lookAtSpotAttack; // 0x6339 + char* m_lookAtDesc; // 0x6340 + float32 m_peripheralTimestamp; // 0x6348 + uint8 m_approachPointCount; // 0x64D0 + Vector m_approachPointViewPosition; // 0x64D4 + IntervalTimer m_viewSteadyTimer; // 0x64E0 + CountdownTimer m_tossGrenadeTimer; // 0x64F8 + CountdownTimer m_isAvoidingGrenade; // 0x6518 + float32 m_spotCheckTimestamp; // 0x6538 + int32 m_checkedHidingSpotCount; // 0x6940 + float32 m_lookPitch; // 0x6944 + float32 m_lookPitchVel; // 0x6948 + float32 m_lookYaw; // 0x694C + float32 m_lookYawVel; // 0x6950 + Vector m_targetSpot; // 0x6954 + Vector m_targetSpotVelocity; // 0x6960 + Vector m_targetSpotPredicted; // 0x696C + QAngle m_aimError; // 0x6978 + QAngle m_aimGoal; // 0x6984 + GameTime_t m_targetSpotTime; // 0x6990 + float32 m_aimFocus; // 0x6994 + float32 m_aimFocusInterval; // 0x6998 + GameTime_t m_aimFocusNextUpdate; // 0x699C + CountdownTimer m_ignoreEnemiesTimer; // 0x69A8 + CHandle< CCSPlayerPawn > m_enemy; // 0x69C0 + bool m_isEnemyVisible; // 0x69C4 + uint8 m_visibleEnemyParts; // 0x69C5 + Vector m_lastEnemyPosition; // 0x69C8 + float32 m_lastSawEnemyTimestamp; // 0x69D4 + float32 m_firstSawEnemyTimestamp; // 0x69D8 + float32 m_currentEnemyAcquireTimestamp; // 0x69DC + float32 m_enemyDeathTimestamp; // 0x69E0 + float32 m_friendDeathTimestamp; // 0x69E4 + bool m_isLastEnemyDead; // 0x69E8 + int32 m_nearbyEnemyCount; // 0x69EC + CHandle< CCSPlayerPawn > m_bomber; // 0x6BF8 + int32 m_nearbyFriendCount; // 0x6BFC + CHandle< CCSPlayerPawn > m_closestVisibleFriend; // 0x6C00 + CHandle< CCSPlayerPawn > m_closestVisibleHumanFriend; // 0x6C04 + IntervalTimer m_attentionInterval; // 0x6C08 + CHandle< CCSPlayerPawn > m_attacker; // 0x6C18 + float32 m_attackedTimestamp; // 0x6C1C + IntervalTimer m_burnedByFlamesTimer; // 0x6C20 + int32 m_lastVictimID; // 0x6C30 + bool m_isAimingAtEnemy; // 0x6C34 + bool m_isRapidFiring; // 0x6C35 + IntervalTimer m_equipTimer; // 0x6C38 + CountdownTimer m_zoomTimer; // 0x6C48 + GameTime_t m_fireWeaponTimestamp; // 0x6C60 + CountdownTimer m_lookForWeaponsOnGroundTimer; // 0x6C68 + bool m_bIsSleeping; // 0x6C80 + bool m_isEnemySniperVisible; // 0x6C81 + CountdownTimer m_sawEnemySniperTimer; // 0x6C88 + uint8 m_enemyQueueIndex; // 0x6D40 + uint8 m_enemyQueueCount; // 0x6D41 + uint8 m_enemyQueueAttendIndex; // 0x6D42 + bool m_isStuck; // 0x6D43 + GameTime_t m_stuckTimestamp; // 0x6D44 + Vector m_stuckSpot; // 0x6D48 + CountdownTimer m_wiggleTimer; // 0x6D58 + CountdownTimer m_stuckJumpTimer; // 0x6D70 + GameTime_t m_nextCleanupCheckTimestamp; // 0x6D88 + float32[10] m_avgVel; // 0x6D8C + int32 m_avgVelIndex; // 0x6DB4 + int32 m_avgVelCount; // 0x6DB8 + Vector m_lastOrigin; // 0x6DBC + float32 m_lastRadioRecievedTimestamp; // 0x6DCC + float32 m_lastRadioSentTimestamp; // 0x6DD0 + CHandle< CCSPlayerPawn > m_radioSubject; // 0x6DD4 + Vector m_radioPosition; // 0x6DD8 + float32 m_voiceEndTimestamp; // 0x6DE4 + int32 m_lastValidReactionQueueFrame; // 0x6DF0 +}; +class CHandleTest : public CBaseEntity // server +{ + CHandle< CBaseEntity > m_Handle; // 0x04A8 + bool m_bSendHandle; // 0x04AC +}; +class CLogicNPCCounter : public CBaseEntity // server +{ + CEntityIOOutput m_OnMinCountAll; // 0x04A8 + CEntityIOOutput m_OnMaxCountAll; // 0x04C0 + CEntityOutputTemplate< float32, float32 > m_OnFactorAll; // 0x04D8 + CEntityOutputTemplate< float32, float32 > m_OnMinPlayerDistAll; // 0x04F8 + CEntityIOOutput m_OnMinCount_1; // 0x0518 + CEntityIOOutput m_OnMaxCount_1; // 0x0530 + CEntityOutputTemplate< float32, float32 > m_OnFactor_1; // 0x0548 + CEntityOutputTemplate< float32, float32 > m_OnMinPlayerDist_1; // 0x0568 + CEntityIOOutput m_OnMinCount_2; // 0x0588 + CEntityIOOutput m_OnMaxCount_2; // 0x05A0 + CEntityOutputTemplate< float32, float32 > m_OnFactor_2; // 0x05B8 + CEntityOutputTemplate< float32, float32 > m_OnMinPlayerDist_2; // 0x05D8 + CEntityIOOutput m_OnMinCount_3; // 0x05F8 + CEntityIOOutput m_OnMaxCount_3; // 0x0610 + CEntityOutputTemplate< float32, float32 > m_OnFactor_3; // 0x0628 + CEntityOutputTemplate< float32, float32 > m_OnMinPlayerDist_3; // 0x0648 + CEntityHandle m_hSource; // 0x0668 + CUtlSymbolLarge m_iszSourceEntityName; // 0x0670 + float32 m_flDistanceMax; // 0x0678 + bool m_bDisabled; // 0x067C + int32 m_nMinCountAll; // 0x0680 + int32 m_nMaxCountAll; // 0x0684 + int32 m_nMinFactorAll; // 0x0688 + int32 m_nMaxFactorAll; // 0x068C + CUtlSymbolLarge m_iszNPCClassname_1; // 0x0698 + int32 m_nNPCState_1; // 0x06A0 + bool m_bInvertState_1; // 0x06A4 + int32 m_nMinCount_1; // 0x06A8 + int32 m_nMaxCount_1; // 0x06AC + int32 m_nMinFactor_1; // 0x06B0 + int32 m_nMaxFactor_1; // 0x06B4 + float32 m_flDefaultDist_1; // 0x06BC + CUtlSymbolLarge m_iszNPCClassname_2; // 0x06C0 + int32 m_nNPCState_2; // 0x06C8 + bool m_bInvertState_2; // 0x06CC + int32 m_nMinCount_2; // 0x06D0 + int32 m_nMaxCount_2; // 0x06D4 + int32 m_nMinFactor_2; // 0x06D8 + int32 m_nMaxFactor_2; // 0x06DC + float32 m_flDefaultDist_2; // 0x06E4 + CUtlSymbolLarge m_iszNPCClassname_3; // 0x06E8 + int32 m_nNPCState_3; // 0x06F0 + bool m_bInvertState_3; // 0x06F4 + int32 m_nMinCount_3; // 0x06F8 + int32 m_nMaxCount_3; // 0x06FC + int32 m_nMinFactor_3; // 0x0700 + int32 m_nMaxFactor_3; // 0x0704 + float32 m_flDefaultDist_3; // 0x070C +}; +class CCSPlayer_RadioServices : public CPlayerPawnComponent // server +{ + GameTime_t m_flGotHostageTalkTimer; // 0x0048 + GameTime_t m_flDefusingTalkTimer; // 0x004C + GameTime_t m_flC4PlantTalkTimer; // 0x0050 + GameTime_t[3] m_flRadioTokenSlots; // 0x0054 + bool m_bIgnoreRadio; // 0x0060 +}; +class CWeaponSG556 : public CCSWeaponBaseGun // server +{ +}; +class CRagdollConstraint : public CPhysConstraint // server +{ + float32 m_xmin; // 0x0508 + float32 m_xmax; // 0x050C + float32 m_ymin; // 0x0510 + float32 m_ymax; // 0x0514 + float32 m_zmin; // 0x0518 + float32 m_zmax; // 0x051C + float32 m_xfriction; // 0x0520 + float32 m_yfriction; // 0x0524 + float32 m_zfriction; // 0x0528 +}; +class CFuncVehicleClip : public CBaseModelEntity // server +{ +}; +class CDEagle : public CCSWeaponBaseGun // server +{ +}; +class CWeaponFamas : public CCSWeaponBaseGun // server +{ +}; +class CEnvSplash : public CPointEntity // server +{ + float32 m_flScale; // 0x04A8 +}; +class CPointCameraVFOV : public CPointCamera // server +{ + float32 m_flVerticalFOV; // 0x0508 +}; +class CCSGO_WingmanIntroTerroristPosition : public CCSGO_WingmanIntroCharacterPosition // server +{ +}; +class CTestPulseIOAPI // server +{ +}; +class CCSWeaponBaseShotgun : public CCSWeaponBase // server +{ +}; +class CPrecipitationVData : public CEntitySubclassVDataBase // server +{ + CResourceNameTyped< CWeakHandle< InfoForResourceTypeIParticleSystemDefinition > > m_szParticlePrecipitationEffect; // 0x0028 + float32 m_flInnerDistance; // 0x0108 + ParticleAttachment_t m_nAttachType; // 0x010C + bool m_bBatchSameVolumeType; // 0x0110 + int32 m_nRTEnvCP; // 0x0114 + int32 m_nRTEnvCPComponent; // 0x0118 + CUtlString m_szModifier; // 0x0120 +}; +class CFuncMoveLinear : public CBaseToggle // server +{ + MoveLinearAuthoredPos_t m_authoredPosition; // 0x07B0 + QAngle m_angMoveEntitySpace; // 0x07B4 + Vector m_vecMoveDirParentSpace; // 0x07C0 + CUtlSymbolLarge m_soundStart; // 0x07D0 + CUtlSymbolLarge m_soundStop; // 0x07D8 + CUtlSymbolLarge m_currentSound; // 0x07E0 + float32 m_flBlockDamage; // 0x07E8 + float32 m_flStartPosition; // 0x07EC + CEntityIOOutput m_OnFullyOpen; // 0x07F8 + CEntityIOOutput m_OnFullyClosed; // 0x0810 + bool m_bCreateMovableNavMesh; // 0x0828 + bool m_bAllowMovableNavMeshDockingOnEntireEntity; // 0x0829 + bool m_bCreateNavObstacle; // 0x082A +}; +class CPhysMotorAPI // server +{ +}; +class CPulseCell_WaitForObservable : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + PulseObservableBoolExpression_t m_Condition; // 0x0048 + CPulse_ResumePoint m_OnTrue; // 0x00C0 +}; +class CScriptItem : public CItem // server +{ + MoveType_t m_MoveTypeOverride; // 0x0AC0 +}; +class CDynamicPropAlias_prop_dynamic_override : public CDynamicProp // server +{ +}; +class CBaseTrigger : public CBaseToggle // server +{ + CEntityIOOutput m_OnStartTouch; // 0x07B0 + CEntityIOOutput m_OnStartTouchAll; // 0x07C8 + CEntityIOOutput m_OnEndTouch; // 0x07E0 + CEntityIOOutput m_OnEndTouchAll; // 0x07F8 + CEntityIOOutput m_OnTouching; // 0x0810 + CEntityIOOutput m_OnTouchingEachEntity; // 0x0828 + CEntityIOOutput m_OnNotTouching; // 0x0840 + CUtlVector< CHandle< CBaseEntity > > m_hTouchingEntities; // 0x0858 + CUtlSymbolLarge m_iFilterName; // 0x0870 + CHandle< CBaseFilter > m_hFilter; // 0x0878 + bool m_bDisabled; // 0x087C + bool m_bUseAsyncQueries; // 0x0888 +}; +class CPointPush : public CPointEntity // server +{ + bool m_bEnabled; // 0x04A8 + float32 m_flMagnitude; // 0x04AC + float32 m_flRadius; // 0x04B0 + float32 m_flInnerRadius; // 0x04B4 + float32 m_flConeOfInfluence; // 0x04B8 + CUtlSymbolLarge m_iszFilterName; // 0x04C0 + CHandle< CBaseFilter > m_hFilter; // 0x04C8 +}; +class CPulseCell_Step_EntFire : public CPulseCell_BaseFlow // server +{ + CUtlString m_Input; // 0x0048 +}; +class CCSObserver_ObserverServices : public CPlayer_ObserverServices // server +{ +}; +class CPlayerPing : public CBaseEntity // server +{ + CHandle< CCSPlayerPawn > m_hPlayer; // 0x04B0 + CHandle< CBaseEntity > m_hPingedEntity; // 0x04B4 + int32 m_iType; // 0x04B8 + bool m_bUrgent; // 0x04BC + char[18] m_szPlaceName; // 0x04BD +}; +class CHitboxComponent : public CEntityComponent // server +{ + float32 m_flBoundsExpandRadius; // 0x0014 +}; +class CRopeKeyframe : public CBaseModelEntity // server +{ + uint16 m_RopeFlags; // 0x0738 + CUtlSymbolLarge m_iNextLinkName; // 0x0740 + int16 m_Slack; // 0x0748 + float32 m_Width; // 0x074C + float32 m_TextureScale; // 0x0750 + uint8 m_nSegments; // 0x0754 + bool m_bConstrainBetweenEndpoints; // 0x0755 + CUtlSymbolLarge m_strRopeMaterialModel; // 0x0758 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_iRopeMaterialModelIndex; // 0x0760 + uint8 m_Subdiv; // 0x0768 + uint8 m_nChangeCount; // 0x0769 + int16 m_RopeLength; // 0x076A + uint8 m_fLockedPoints; // 0x076C + bool m_bCreatedFromMapFile; // 0x076D + float32 m_flScrollSpeed; // 0x0770 + bool m_bStartPointValid; // 0x0774 + bool m_bEndPointValid; // 0x0775 + CHandle< CBaseEntity > m_hStartPoint; // 0x0778 + CHandle< CBaseEntity > m_hEndPoint; // 0x077C + AttachmentHandle_t m_iStartAttachment; // 0x0780 + AttachmentHandle_t m_iEndAttachment; // 0x0781 +}; +class CSmokeGrenade : public CBaseCSGrenade // server +{ +}; +class CBaseCombatCharacter : public CBaseFlex // server +{ + bool m_bForceServerRagdoll; // 0x0AB0 + CNetworkUtlVectorBase< CHandle< CEconWearable > > m_hMyWearables; // 0x0AB8 + float32 m_impactEnergyScale; // 0x0AD0 + bool m_bApplyStressDamage; // 0x0AD4 + bool m_bDeathEventsDispatched; // 0x0AD5 + CUtlVector< RelationshipOverride_t >* m_pVecRelationships; // 0x0B18 + CUtlSymbolLarge m_strRelationships; // 0x0B20 + Hull_t m_eHull; // 0x0B28 + uint32 m_nNavHullIdx; // 0x0B2C + CMovementStatsProperty m_movementStats; // 0x0B30 +}; +class ServerAuthoritativeWeaponSlot_t // server +{ + uint16 unClass; // 0x0030 + uint16 unSlot; // 0x0032 + uint16 unItemDefIdx; // 0x0034 +}; +class CPathQueryComponent : public CEntityComponent // server +{ +}; +class CLogicRelay : public CLogicalEntity // server +{ + bool m_bDisabled; // 0x04A8 + bool m_bWaitForRefire; // 0x04A9 + bool m_bTriggerOnce; // 0x04AA + bool m_bFastRetrigger; // 0x04AB + bool m_bPassthoughCaller; // 0x04AC +}; +class SequenceHistory_t // server +{ + HSequence m_hSequence; // 0x0000 + GameTime_t m_flSeqStartTime; // 0x0004 + float32 m_flSeqFixedCycle; // 0x0008 + AnimLoopMode_t m_nSeqLoopMode; // 0x000C + float32 m_flPlaybackRate; // 0x0010 + float32 m_flCyclesPerSecond; // 0x0014 +}; +class CPlayer_ItemServices : public CPlayerPawnComponent // server +{ +}; +class CPulse_OutflowConnection // pulse_runtime_lib +{ + PulseSymbol_t m_SourceOutflowName; // 0x0000 + PulseRuntimeChunkIndex_t m_nDestChunk; // 0x0010 + int32 m_nInstruction; // 0x0014 + PulseRegisterMap_t m_OutflowRegisterMap; // 0x0018 +}; +class CTestPulseIO : public CLogicalEntity // server +{ + CEntityIOOutput m_OnVariantVoid; // 0x04A8 + CEntityOutputTemplate< bool, bool > m_OnVariantBool; // 0x04C0 + CEntityOutputTemplate< int32, int32 > m_OnVariantInt; // 0x04E0 + CEntityOutputTemplate< float32, float32 > m_OnVariantFloat; // 0x0500 + CEntityOutputTemplate< CUtlSymbolLarge, CUtlSymbolLarge > m_OnVariantString; // 0x0520 + CEntityOutputTemplate< Color, Color > m_OnVariantColor; // 0x0540 + CEntityOutputTemplate< Vector, Vector > m_OnVariantVector; // 0x0560 + bool m_bAllowEmptyInputs; // 0x0588 +}; +class CWeaponUMP45 : public CCSWeaponBaseGun // server +{ +}; +class CGamePlayerEquip : public CRulePointEntity // server +{ +}; +class CPointEntityFinder : public CBaseEntity // server +{ + CHandle< CBaseEntity > m_hEntity; // 0x04A8 + CUtlSymbolLarge m_iFilterName; // 0x04B0 + CHandle< CBaseFilter > m_hFilter; // 0x04B8 + CUtlSymbolLarge m_iRefName; // 0x04C0 + CHandle< CBaseEntity > m_hReference; // 0x04C8 + EntFinderMethod_t m_FindMethod; // 0x04CC + CEntityIOOutput m_OnFoundEntity; // 0x04D0 +}; +class CPulseGraphDef // pulse_runtime_lib +{ + PulseSymbol_t m_DomainIdentifier; // 0x0008 + CPulseValueFullType m_DomainSubType; // 0x0018 + PulseSymbol_t m_ParentMapName; // 0x0030 + PulseSymbol_t m_ParentXmlName; // 0x0040 + CUtlVector< CPulse_Chunk* > m_Chunks; // 0x0050 + CUtlVector< CPulseCell_Base* > m_Cells; // 0x0068 + CUtlVector< CPulse_Variable > m_Vars; // 0x0080 + CUtlVector< CPulse_PublicOutput > m_PublicOutputs; // 0x0098 + CUtlVector< CPulse_InvokeBinding* > m_InvokeBindings; // 0x00B0 + CUtlVector< CPulse_CallInfo* > m_CallInfos; // 0x00C8 + CUtlVector< CPulse_Constant > m_Constants; // 0x00E0 + CUtlVector< CPulse_DomainValue > m_DomainValues; // 0x00F8 + CUtlVector< CPulse_BlackboardReference > m_BlackboardReferences; // 0x0110 + CUtlVector< CPulse_OutputConnection* > m_OutputConnections; // 0x0128 +}; +class CKnife : public CCSWeaponBase // server +{ + bool m_bFirstAttack; // 0x1130 +}; +class CLogicPlayerProxy : public CLogicalEntity // server +{ + CEntityIOOutput m_PlayerHasAmmo; // 0x04A8 + CEntityIOOutput m_PlayerHasNoAmmo; // 0x04C0 + CEntityIOOutput m_PlayerDied; // 0x04D8 + CEntityOutputTemplate< int32, int32 > m_RequestedPlayerHealth; // 0x04F0 + CHandle< CBaseEntity > m_hPlayer; // 0x0510 +}; +class CCSGO_TeamIntroCharacterPosition : public CCSGO_TeamPreviewCharacterPosition // server +{ +}; +class CBasePlayerControllerAPI // server +{ +}; +class CHostageRescueZoneShim : public CBaseTrigger // server +{ +}; +class CSimpleMarkupVolumeTagged : public CMarkupVolumeTagged // server +{ +}; +class CEnvSoundscapeAlias_snd_soundscape : public CEnvSoundscape // server +{ +}; +class CCSPlayer_HostageServices : public CPlayerPawnComponent // server +{ + CHandle< CBaseEntity > m_hCarriedHostage; // 0x0048 + CHandle< CBaseEntity > m_hCarriedHostageProp; // 0x004C +}; +class CRenderComponent : public CEntityComponent // server +{ + CNetworkVarChainer __m_pChainEntity; // 0x0010 + bool m_bIsRenderingWithViewModels; // 0x0050 + uint32 m_nSplitscreenFlags; // 0x0054 + bool m_bEnableRendering; // 0x0058 + bool m_bInterpolationReadyToDraw; // 0x00A8 +}; +class CWaterBullet : public CBaseAnimGraph // server +{ +}; +class CTriggerSoundscape : public CBaseTrigger // server +{ + CHandle< CEnvSoundscapeTriggerable > m_hSoundscape; // 0x0890 + CUtlSymbolLarge m_SoundscapeName; // 0x0898 + CUtlVector< CHandle< CBasePlayerPawn > > m_spectators; // 0x08A0 +}; +class CPointTeleportAPI // server +{ +}; +class CHostageExpresserShim : public CBaseCombatCharacter // server +{ + CAI_Expresser* m_pExpresser; // 0x0B70 +}; +class CPointChildModifier : public CPointEntity // server +{ + bool m_bOrphanInsteadOfDeletingChildrenOnRemove; // 0x04A8 +}; +class CCSPlayerLegacyJump // server +{ + bool m_bOldJumpPressed; // 0x0010 + float32 m_flJumpPressedTime; // 0x0014 +}; +class CWeaponHKP2000 : public CCSWeaponBaseGun // server +{ +}; +class CShatterGlassShardPhysics : public CPhysicsProp // server +{ + bool m_bDebris; // 0x0CE0 + uint32 m_hParentShard; // 0x0CE4 + shard_model_desc_t m_ShardDesc; // 0x0CE8 +}; +class CPathParticleRope : public CBaseEntity // server +{ + bool m_bStartActive; // 0x04B0 + float32 m_flMaxSimulationTime; // 0x04B4 + CUtlSymbolLarge m_iszEffectName; // 0x04B8 + CUtlVector< CUtlSymbolLarge > m_PathNodes_Name; // 0x04C0 + float32 m_flParticleSpacing; // 0x04D8 + float32 m_flSlack; // 0x04DC + float32 m_flRadius; // 0x04E0 + Color m_ColorTint; // 0x04E4 + int32 m_nEffectState; // 0x04E8 + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_iEffectIndex; // 0x04F0 + CNetworkUtlVectorBase< Vector > m_PathNodes_Position; // 0x04F8 + CNetworkUtlVectorBase< Vector > m_PathNodes_TangentIn; // 0x0510 + CNetworkUtlVectorBase< Vector > m_PathNodes_TangentOut; // 0x0528 + CNetworkUtlVectorBase< Vector > m_PathNodes_Color; // 0x0540 + CNetworkUtlVectorBase< bool > m_PathNodes_PinEnabled; // 0x0558 + CNetworkUtlVectorBase< float32 > m_PathNodes_RadiusScale; // 0x0570 +}; +class CCredits : public CPointEntity // server +{ + CEntityIOOutput m_OnCreditsDone; // 0x04A8 + bool m_bRolledOutroCredits; // 0x04C0 + float32 m_flLogoLength; // 0x04C4 +}; +class CWeaponFiveSeven : public CCSWeaponBaseGun // server +{ +}; +class CFishPool : public CBaseEntity // server +{ + int32 m_fishCount; // 0x04B8 + float32 m_maxRange; // 0x04BC + float32 m_swimDepth; // 0x04C0 + float32 m_waterLevel; // 0x04C4 + bool m_isDormant; // 0x04C8 + CUtlVector< CHandle< CFish > > m_fishes; // 0x04D0 + CountdownTimer m_visTimer; // 0x04E8 +}; +class CPlayer_MovementServices : public CPlayerPawnComponent // server +{ + int32 m_nImpulse; // 0x0048 + CInButtonState m_nButtons; // 0x0050 + uint64 m_nQueuedButtonDownMask; // 0x0070 + uint64 m_nQueuedButtonChangeMask; // 0x0078 + uint64 m_nButtonDoublePressed; // 0x0080 + uint32[64] m_pButtonPressedCmdNumber; // 0x0088 + uint32 m_nLastCommandNumberProcessed; // 0x0188 + uint64 m_nToggleButtonDownMask; // 0x0190 + float32 m_flMaxspeed; // 0x01A0 + float32[4] m_arrForceSubtickMoveWhen; // 0x01A4 + float32 m_flForwardMove; // 0x01B4 + float32 m_flLeftMove; // 0x01B8 + float32 m_flUpMove; // 0x01BC + Vector m_vecLastMovementImpulses; // 0x01C0 + QAngle m_vecOldViewAngles; // 0x0228 +}; +class CRagdollPropAlias_physics_prop_ragdoll : public CRagdollProp // server +{ +}; +class CBreakableProp : public CBaseProp // server +{ + CPropDataComponent m_CPropDataComponent; // 0x0A58 + CEntityIOOutput m_OnStartDeath; // 0x0A98 + CEntityIOOutput m_OnBreak; // 0x0AB0 + CEntityOutputTemplate< float32, float32 > m_OnHealthChanged; // 0x0AC8 + CEntityIOOutput m_OnTakeDamage; // 0x0AE8 + float32 m_impactEnergyScale; // 0x0B00 + int32 m_iMinHealthDmg; // 0x0B04 + QAngle m_preferredCarryAngles; // 0x0B08 + float32 m_flPressureDelay; // 0x0B14 + float32 m_flDefBurstScale; // 0x0B18 + Vector m_vDefBurstOffset; // 0x0B1C + CHandle< CBaseEntity > m_hBreaker; // 0x0B28 + PerformanceMode_t m_PerformanceMode; // 0x0B2C + GameTime_t m_flPreventDamageBeforeTime; // 0x0B30 + BreakableContentsType_t m_BreakableContentsType; // 0x0B34 + CUtlString m_strBreakableContentsPropGroupOverride; // 0x0B38 + CUtlString m_strBreakableContentsParticleOverride; // 0x0B40 + bool m_bHasBreakPiecesOrCommands; // 0x0B48 + float32 m_explodeDamage; // 0x0B4C + float32 m_explodeRadius; // 0x0B50 + BaseExplosionTypes_t m_nExplosionType; // 0x0B54 + float32 m_explosionDelay; // 0x0B58 + CUtlSymbolLarge m_explosionBuildupSound; // 0x0B60 + CUtlSymbolLarge m_explosionCustomEffect; // 0x0B68 + CUtlSymbolLarge m_explosionCustomSound; // 0x0B70 + CUtlSymbolLarge m_explosionModifier; // 0x0B78 + CHandle< CBasePlayerPawn > m_hPhysicsAttacker; // 0x0B80 + GameTime_t m_flLastPhysicsInfluenceTime; // 0x0B84 + float32 m_flDefaultFadeScale; // 0x0B88 + CHandle< CBaseEntity > m_hLastAttacker; // 0x0B8C + CUtlSymbolLarge m_iszPuntSound; // 0x0B90 + bool m_bUsePuntSound; // 0x0B98 + bool m_bOriginalBlockLOS; // 0x0B99 +}; +class CLightEntity : public CBaseModelEntity // server +{ + CLightComponent* m_CLightComponent; // 0x0730 +}; +class CInfoDynamicShadowHintBox : public CInfoDynamicShadowHint // server +{ + Vector m_vBoxMins; // 0x04C0 + Vector m_vBoxMaxs; // 0x04CC +}; +class CBaseAnimGraphController : public CSkeletonAnimationController // server +{ + AnimationAlgorithm_t m_nAnimationAlgorithm; // 0x0018 + CAnimGraphNetworkedVariables m_animGraphNetworkedVars; // 0x0020 + CSmartPtr< IAnimationGraphInstance > m_pAnimGraphInstance; // 0x0228 + ExternalAnimGraphHandle_t m_nNextExternalGraphHandle; // 0x0288 + CUtlVector< CGlobalSymbol > m_vecSecondarySkeletonNames; // 0x0290 + CNetworkUtlVectorBase< CHandle< CBaseAnimGraph > > m_vecSecondarySkeletons; // 0x02A8 + int32 m_nSecondarySkeletonMasterCount; // 0x02C0 + float32 m_flSoundSyncTime; // 0x02C4 + uint32 m_nActiveIKChainMask; // 0x02C8 + HSequence m_hSequence; // 0x02CC + GameTime_t m_flSeqStartTime; // 0x02D0 + float32 m_flSeqFixedCycle; // 0x02D4 + AnimLoopMode_t m_nAnimLoopMode; // 0x02D8 + CNetworkedQuantizedFloat m_flPlaybackRate; // 0x02DC + SequenceFinishNotifyState_t m_nNotifyState; // 0x02E8 + bool m_bNetworkedAnimationInputsChanged; // 0x02E9 + bool m_bNetworkedSequenceChanged; // 0x02EA + bool m_bLastUpdateSkipped; // 0x02EB + bool m_bSequenceFinished; // 0x02EC + GameTick_t m_nPrevAnimUpdateTick; // 0x02F0 + CStrongHandle< InfoForResourceTypeCNmGraphDefinition > m_hGraphDefinitionAG2; // 0x0590 + CNetworkUtlVectorBase< uint8 > m_serializedPoseRecipeAG2; // 0x0598 + int32 m_nSerializePoseRecipeSizeAG2; // 0x05B0 + int32 m_nSerializePoseRecipeVersionAG2; // 0x05B4 + int32 m_nServerGraphInstanceIteration; // 0x05B8 + int32 m_nServerSerializationContextIteration; // 0x05BC + ResourceId_t m_primaryGraphId; // 0x05C0 + CNetworkUtlVectorBase< ResourceId_t > m_vecExternalGraphIds; // 0x05C8 + CNetworkUtlVectorBase< ResourceId_t > m_vecExternalClipIds; // 0x05E0 + CGlobalSymbol m_sAnimGraph2Identifier; // 0x05F8 + CUtlVector< ExternalAnimGraph_t > m_vecExternalGraphs; // 0x0820 +}; +class CBuoyancyHelper // server +{ + CUtlStringToken m_nFluidType; // 0x0018 + float32 m_flFluidDensity; // 0x001C + float32 m_flNeutrallyBuoyantGravity; // 0x0020 + float32 m_flNeutrallyBuoyantLinearDamping; // 0x0024 + float32 m_flNeutrallyBuoyantAngularDamping; // 0x0028 + bool m_bNeutrallyBuoyant; // 0x002C + CUtlVector< float32 > m_vecFractionOfWheelSubmergedForWheelFriction; // 0x0030 + CUtlVector< float32 > m_vecWheelFrictionScales; // 0x0048 + CUtlVector< float32 > m_vecFractionOfWheelSubmergedForWheelDrag; // 0x0060 + CUtlVector< float32 > m_vecWheelDrag; // 0x0078 +}; +class COrnamentProp : public CDynamicProp // server +{ + CUtlSymbolLarge m_initialOwner; // 0x0C50 +}; +class CCSPlayer_CameraServices : public CCSPlayerBase_CameraServices // server +{ +}; +class CModelPointEntity : public CBaseModelEntity // server +{ +}; +class CRectLight : public CBarnLight // server +{ + bool m_bShowLight; // 0x0A20 +}; +class CFilterMultiple : public CBaseFilter // server +{ + filter_t m_nFilterType; // 0x04E0 + CUtlSymbolLarge[10] m_iFilterName; // 0x04E8 + CHandle< CBaseEntity >[10] m_hFilter; // 0x0538 +}; +class CCSPlayerResource : public CBaseEntity // server +{ + bool[12] m_bHostageAlive; // 0x04A8 + bool[12] m_isHostageFollowingSomeone; // 0x04B4 + CEntityIndex[12] m_iHostageEntityIDs; // 0x04C0 + Vector m_bombsiteCenterA; // 0x04F0 + Vector m_bombsiteCenterB; // 0x04FC + int32[4] m_hostageRescueX; // 0x0508 + int32[4] m_hostageRescueY; // 0x0518 + int32[4] m_hostageRescueZ; // 0x0528 + bool m_bEndMatchNextMapAllVoted; // 0x0538 + bool m_foundGoalPositions; // 0x0539 +}; +class CPulseCell_FireCursors : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outflows; // 0x0048 + bool m_bWaitForChildOutflows; // 0x0060 + CPulse_ResumePoint m_OnFinished; // 0x0068 + CPulse_ResumePoint m_OnCanceled; // 0x00B0 +}; +class CFuncNavBlocker : public CBaseModelEntity // server +{ + bool m_bDisabled; // 0x0738 + int32 m_nBlockedTeamNumber; // 0x073C +}; +class CMoverPathNode : public CPathNode // server +{ + CEntityOutputTemplate< CUtlString, char* > m_OnStartFromOrInSegment; // 0x0500 + CEntityOutputTemplate< CUtlString, char* > m_OnStoppedAtOrInSegment; // 0x0520 + CEntityOutputTemplate< CUtlString, char* > m_OnPassThrough; // 0x0540 + CEntityOutputTemplate< CUtlString, char* > m_OnPassThroughForward; // 0x0560 + CEntityOutputTemplate< CUtlString, char* > m_OnPassThroughReverse; // 0x0580 +}; +class CEnvSoundscape : public CBaseEntity // server +{ + CEntityIOOutput m_OnPlay; // 0x04A8 + float32 m_flRadius; // 0x04C0 + CUtlSymbolLarge m_soundEventName; // 0x04C8 + bool m_bOverrideWithEvent; // 0x04D0 + int32 m_soundscapeIndex; // 0x04D4 + int32 m_soundscapeEntityListId; // 0x04D8 + CUtlSymbolLarge[8] m_positionNames; // 0x04E0 + CHandle< CEnvSoundscape > m_hProxySoundscape; // 0x0520 + bool m_bDisabled; // 0x0524 + CUtlSymbolLarge m_soundscapeName; // 0x0528 + uint32 m_soundEventHash; // 0x0530 +}; +class CFuncBrush : public CBaseModelEntity // server +{ + BrushSolidities_e m_iSolidity; // 0x0730 + int32 m_iDisabled; // 0x0734 + bool m_bSolidBsp; // 0x0738 + CUtlSymbolLarge m_iszExcludedClass; // 0x0740 + bool m_bInvertExclusion; // 0x0748 + bool m_bScriptedMovement; // 0x0749 +}; +class CBodyComponentPoint : public CBodyComponent // server +{ + CGameSceneNode m_sceneNode; // 0x0080 +}; +class CPhysBox : public CBreakable // server +{ + int32 m_damageType; // 0x0808 + int32 m_damageToEnableMotion; // 0x080C + float32 m_flForceToEnableMotion; // 0x0810 + Vector m_vHoverPosePosition; // 0x0814 + QAngle m_angHoverPoseAngles; // 0x0820 + bool m_bNotSolidToWorld; // 0x082C + bool m_bEnableUseOutput; // 0x082D + HoverPoseFlags_t m_nHoverPoseFlags; // 0x082E + float32 m_flTouchOutputPerEntityDelay; // 0x0830 + CEntityIOOutput m_OnDamaged; // 0x0838 + CEntityIOOutput m_OnAwakened; // 0x0850 + CEntityIOOutput m_OnMotionEnabled; // 0x0868 + CEntityIOOutput m_OnPlayerUse; // 0x0880 + CEntityIOOutput m_OnStartTouch; // 0x0898 + CHandle< CBasePlayerPawn > m_hCarryingPlayer; // 0x08B0 +}; +class CSoundEventAABBEntity : public CSoundEventEntity // server +{ + Vector m_vMins; // 0x0558 + Vector m_vMaxs; // 0x0564 +}; +class CItemSoda : public CBaseAnimGraph // server +{ +}; +class CPulseCell_Timeline::TimelineEvent_t // pulse_runtime_lib +{ + float32 m_flTimeFromPrevious; // 0x0000 + CPulse_OutflowConnection m_EventOutflow; // 0x0008 +}; +class COmniLight : public CBarnLight // server +{ + float32 m_flInnerAngle; // 0x0A20 + float32 m_flOuterAngle; // 0x0A24 + bool m_bShowLight; // 0x0A28 +}; +class CTriggerVolume : public CBaseModelEntity // server +{ + CUtlSymbolLarge m_iFilterName; // 0x0730 + CHandle< CBaseFilter > m_hFilter; // 0x0738 +}; +class CBtNodeCondition : public CBtNodeDecorator // server +{ + bool m_bNegated; // 0x0058 +}; +class CPulseCell_IntervalTimer::CursorState_t // pulse_runtime_lib +{ + GameTime_t m_StartTime; // 0x0000 + GameTime_t m_EndTime; // 0x0004 + float32 m_flWaitInterval; // 0x0008 + float32 m_flWaitIntervalHigh; // 0x000C + bool m_bCompleteOnNextWake; // 0x0010 +}; +class CPulseCell_BaseRequirement : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class CEnvExplosion : public CModelPointEntity // server +{ + int32 m_iMagnitude; // 0x0730 + float32 m_flPlayerDamage; // 0x0734 + int32 m_iRadiusOverride; // 0x0738 + float32 m_flInnerRadius; // 0x073C + float32 m_flDamageForce; // 0x0740 + CHandle< CBaseEntity > m_hInflictor; // 0x0744 + DamageTypes_t m_iCustomDamageType; // 0x0748 + bool m_bCreateDebris; // 0x074C + CUtlSymbolLarge m_iszCustomEffectName; // 0x0758 + CUtlSymbolLarge m_iszCustomSoundName; // 0x0760 + bool m_bSuppressParticleImpulse; // 0x0768 + Class_T m_iClassIgnore; // 0x076C + Class_T m_iClassIgnore2; // 0x0770 + CUtlSymbolLarge m_iszEntityIgnoreName; // 0x0778 + CHandle< CBaseEntity > m_hEntityIgnore; // 0x0780 +}; +class CPulseCell_BaseState : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ +}; +class OutflowWithRequirements_t // pulse_runtime_lib +{ + CPulse_OutflowConnection m_Connection; // 0x0000 + PulseDocNodeID_t m_DestinationFlowNodeID; // 0x0048 + CUtlVector< PulseDocNodeID_t > m_RequirementNodeIDs; // 0x0050 + CUtlVector< int32 > m_nCursorStateBlockIndex; // 0x0068 +}; +class CPulseCell_IsRequirementValid : public CPulseCell_BaseRequirement // pulse_runtime_lib +{ +}; +class CFootstepControl : public CBaseTrigger // server +{ + CUtlSymbolLarge m_source; // 0x0890 + CUtlSymbolLarge m_destination; // 0x0898 +}; +class CCSPlayer_ItemServices : public CPlayer_ItemServices // server +{ + bool m_bHasDefuser; // 0x0048 + bool m_bHasHelmet; // 0x0049 +}; +class CPulseCell_Value_Gradient : public CPulseCell_BaseValue // pulse_runtime_lib +{ + CColorGradient m_Gradient; // 0x0048 +}; +class CParticleSystem : public CBaseModelEntity // server +{ + char[512] m_szSnapshotFileName; // 0x0730 + bool m_bActive; // 0x0930 + bool m_bFrozen; // 0x0931 + float32 m_flFreezeTransitionDuration; // 0x0934 + int32 m_nStopType; // 0x0938 + bool m_bAnimateDuringGameplayPause; // 0x093C + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_iEffectIndex; // 0x0940 + GameTime_t m_flStartTime; // 0x0948 + float32 m_flPreSimTime; // 0x094C + Vector[4] m_vServerControlPoints; // 0x0950 + uint8[4] m_iServerControlPointAssignments; // 0x0980 + CHandle< CBaseEntity >[64] m_hControlPointEnts; // 0x0984 + bool m_bNoSave; // 0x0A84 + bool m_bNoFreeze; // 0x0A85 + bool m_bNoRamp; // 0x0A86 + bool m_bStartActive; // 0x0A87 + CUtlSymbolLarge m_iszEffectName; // 0x0A88 + CUtlSymbolLarge[64] m_iszControlPointNames; // 0x0A90 + int32 m_nDataCP; // 0x0C90 + Vector m_vecDataCPValue; // 0x0C94 + int32 m_nTintCP; // 0x0CA0 + Color m_clrTint; // 0x0CA4 +}; +class CTriggerBrush : public CBaseModelEntity // server +{ + CEntityIOOutput m_OnStartTouch; // 0x0730 + CEntityIOOutput m_OnEndTouch; // 0x0748 + CEntityIOOutput m_OnUse; // 0x0760 + int32 m_iInputFilter; // 0x0778 + int32 m_iDontMessageParent; // 0x077C +}; +class IntervalTimer // server +{ + GameTime_t m_timestamp; // 0x0008 + WorldGroupId_t m_nWorldGroupId; // 0x000C +}; +class audioparams_t // server +{ + Vector[8] localSound; // 0x0008 + int32 soundscapeIndex; // 0x0068 + uint8 localBits; // 0x006C + int32 soundscapeEntityListIndex; // 0x0070 + uint32 soundEventHash; // 0x0074 +}; +class CSoundAreaEntityBase : public CBaseEntity // server +{ + bool m_bDisabled; // 0x04A8 + CUtlSymbolLarge m_iszSoundAreaType; // 0x04B0 + Vector m_vPos; // 0x04B8 +}; +class CWeaponM4A1Silencer : public CCSWeaponBaseGun // server +{ +}; +class CTimeline : public IntervalTimer // server +{ + float32[64] m_flValues; // 0x0010 + int32[64] m_nValueCounts; // 0x0110 + int32 m_nBucketCount; // 0x0210 + float32 m_flInterval; // 0x0214 + float32 m_flFinalValue; // 0x0218 + TimelineCompression_t m_nCompressionType; // 0x021C + bool m_bStopped; // 0x0220 +}; +class CPulseCursorFuncs // pulse_runtime_lib +{ +}; +class CountdownTimer // server +{ + float32 m_duration; // 0x0008 + GameTime_t m_timestamp; // 0x000C + float32 m_timescale; // 0x0010 + WorldGroupId_t m_nWorldGroupId; // 0x0014 +}; +class PulseNodeDynamicOutflows_t::DynamicOutflow_t // pulse_runtime_lib +{ + CGlobalSymbol m_OutflowID; // 0x0000 + CPulse_OutflowConnection m_Connection; // 0x0008 +}; +class CItemAssaultSuit : public CItem // server +{ +}; +class CBeam : public CBaseModelEntity // server +{ + float32 m_flFrameRate; // 0x0730 + float32 m_flHDRColorScale; // 0x0734 + GameTime_t m_flFireTime; // 0x0738 + float32 m_flDamage; // 0x073C + uint8 m_nNumBeamEnts; // 0x0740 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hBaseMaterial; // 0x0748 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_nHaloIndex; // 0x0750 + BeamType_t m_nBeamType; // 0x0758 + uint32 m_nBeamFlags; // 0x075C + CHandle< CBaseEntity >[10] m_hAttachEntity; // 0x0760 + AttachmentHandle_t[10] m_nAttachIndex; // 0x0788 + float32 m_fWidth; // 0x0794 + float32 m_fEndWidth; // 0x0798 + float32 m_fFadeLength; // 0x079C + float32 m_fHaloScale; // 0x07A0 + float32 m_fAmplitude; // 0x07A4 + float32 m_fStartFrame; // 0x07A8 + float32 m_fSpeed; // 0x07AC + float32 m_flFrame; // 0x07B0 + BeamClipStyle_t m_nClipStyle; // 0x07B4 + bool m_bTurnedOff; // 0x07B8 + VectorWS m_vecEndPos; // 0x07BC + CHandle< CBaseEntity > m_hEndEntity; // 0x07C8 + int32 m_nDissolveType; // 0x07CC +}; +class CLogicEventListener : public CLogicalEntity // server +{ + CUtlString m_strEventName; // 0x04B8 + bool m_bIsEnabled; // 0x04C0 + int32 m_nTeam; // 0x04C4 + CEntityOutputTemplate< CUtlString, char* > m_OnEventFired; // 0x04C8 +}; +class CCSGO_TeamSelectTerroristPosition : public CCSGO_TeamSelectCharacterPosition // server +{ +}; +class CInfoData : public CServerOnlyEntity // server +{ +}; +class CWeaponNegev : public CCSWeaponBaseGun // server +{ +}; +class CWeaponElite : public CCSWeaponBaseGun // server +{ +}; +class CBasePlayerPawn : public CBaseCombatCharacter // server +{ + CPlayer_WeaponServices* m_pWeaponServices; // 0x0B70 + CPlayer_ItemServices* m_pItemServices; // 0x0B78 + CPlayer_AutoaimServices* m_pAutoaimServices; // 0x0B80 + CPlayer_ObserverServices* m_pObserverServices; // 0x0B88 + CPlayer_WaterServices* m_pWaterServices; // 0x0B90 + CPlayer_UseServices* m_pUseServices; // 0x0B98 + CPlayer_FlashlightServices* m_pFlashlightServices; // 0x0BA0 + CPlayer_CameraServices* m_pCameraServices; // 0x0BA8 + CPlayer_MovementServices* m_pMovementServices; // 0x0BB0 + CUtlVectorEmbeddedNetworkVar< ViewAngleServerChange_t > m_ServerViewAngleChanges; // 0x0BC0 + QAngle v_angle; // 0x0C28 + QAngle v_anglePrevious; // 0x0C34 + uint32 m_iHideHUD; // 0x0C40 + sky3dparams_t m_skybox3d; // 0x0C48 + GameTime_t m_fTimeLastHurt; // 0x0CD8 + GameTime_t m_flDeathTime; // 0x0CDC + GameTime_t m_fNextSuicideTime; // 0x0CE0 + bool m_fInitHUD; // 0x0CE4 + CAI_Expresser* m_pExpresser; // 0x0CE8 + CHandle< CBasePlayerController > m_hController; // 0x0CF0 + CHandle< CBasePlayerController > m_hDefaultController; // 0x0CF4 + float32 m_fHltvReplayDelay; // 0x0CFC + float32 m_fHltvReplayEnd; // 0x0D00 + CEntityIndex m_iHltvReplayEntity; // 0x0D04 + CUtlVector< sndopvarlatchdata_t > m_sndOpvarLatchData; // 0x0D08 +}; +class WeaponPurchaseCount_t // server +{ + uint16 m_nItemDefIndex; // 0x0030 + uint16 m_nCount; // 0x0032 +}; +class CBasePulseGraphInstance // pulse_runtime_lib +{ +}; +class FilterHealth : public CBaseFilter // server +{ + bool m_bAdrenalineActive; // 0x04E0 + int32 m_iHealthMin; // 0x04E4 + int32 m_iHealthMax; // 0x04E8 +}; +class CCSSprite : public CSprite // server +{ +}; +class CMathColorBlend : public CLogicalEntity // server +{ + float32 m_flInMin; // 0x04A8 + float32 m_flInMax; // 0x04AC + Color m_OutColor1; // 0x04B0 + Color m_OutColor2; // 0x04B4 + CEntityOutputTemplate< Color, Color > m_OutValue; // 0x04B8 +}; +class CShower : public CModelPointEntity // server +{ +}; +class CPulseCell_Inflow_GraphHook : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_HookName; // 0x0080 +}; +class CScriptNavBlocker : public CFuncNavBlocker // server +{ + Vector m_vExtent; // 0x0748 +}; +class CEntityBlocker : public CBaseModelEntity // server +{ +}; +class SignatureOutflow_Resume : public CPulse_ResumePoint // pulse_runtime_lib +{ +}; +class CPathSimpleAPI // server +{ +}; +class CCSObserverPawn : public CCSPlayerPawnBase // server +{ +}; +class CTriggerActiveWeaponDetect : public CBaseTrigger // server +{ + CEntityIOOutput m_OnTouchedActiveWeapon; // 0x0890 + CUtlSymbolLarge m_iszWeaponClassName; // 0x08A8 +}; +class CFuncLadderAlias_func_useableladder : public CFuncLadder // server +{ +}; +class CSpriteOriented : public CSprite // server +{ +}; +class CPointServerCommand : public CPointEntity // server +{ +}; +class shard_model_desc_t // server +{ + int32 m_nModelID; // 0x0008 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hMaterialBase; // 0x0010 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hMaterialDamageOverlay; // 0x0018 + ShardSolid_t m_solid; // 0x0020 + Vector2D m_vecPanelSize; // 0x0024 + Vector2D m_vecStressPositionA; // 0x002C + Vector2D m_vecStressPositionB; // 0x0034 + CNetworkUtlVectorBase< Vector2D > m_vecPanelVertices; // 0x0040 + CNetworkUtlVectorBase< Vector4D > m_vInitialPanelVertices; // 0x0058 + float32 m_flGlassHalfThickness; // 0x0070 + bool m_bHasParent; // 0x0074 + bool m_bParentFrozen; // 0x0075 + CUtlStringToken m_SurfacePropStringToken; // 0x0078 +}; +class CPlayerSprayDecal : public CModelPointEntity // server +{ + int32 m_nUniqueID; // 0x0730 + uint32 m_unAccountID; // 0x0734 + uint32 m_unTraceID; // 0x0738 + uint32 m_rtGcTime; // 0x073C + Vector m_vecEndPos; // 0x0740 + Vector m_vecStart; // 0x074C + Vector m_vecLeft; // 0x0758 + Vector m_vecNormal; // 0x0764 + int32 m_nPlayer; // 0x0770 + int32 m_nEntity; // 0x0774 + int32 m_nHitbox; // 0x0778 + float32 m_flCreationTime; // 0x077C + int32 m_nTintID; // 0x0780 + uint8 m_nVersion; // 0x0784 + uint8[128] m_ubSignature; // 0x0785 +}; +class CFuncWater : public CBaseModelEntity // server +{ + CBuoyancyHelper m_BuoyancyHelper; // 0x0730 +}; +class CCSGameModeRules // server +{ + CNetworkVarChainer __m_pChainEntity; // 0x0008 +}; +class CEconEntity : public CBaseFlex // server +{ + CAttributeContainer m_AttributeManager; // 0x0AC0 + uint32 m_OriginalOwnerXuidLow; // 0x0DB8 + uint32 m_OriginalOwnerXuidHigh; // 0x0DBC + int32 m_nFallbackPaintKit; // 0x0DC0 + int32 m_nFallbackSeed; // 0x0DC4 + float32 m_flFallbackWear; // 0x0DC8 + int32 m_nFallbackStatTrak; // 0x0DCC + CHandle< CBaseEntity > m_hOldProvidee; // 0x0DD0 + int32 m_iOldOwnerClass; // 0x0DD4 +}; +class CTankTargetChange : public CPointEntity // server +{ + CVariantBase< CVariantDefaultAllocator > m_newTarget; // 0x04A8 + CUtlSymbolLarge m_newTargetName; // 0x04B8 +}; +class CCSPlayer_WaterServices : public CPlayer_WaterServices // server +{ + GameTime_t m_NextDrownDamageTime; // 0x0048 + int32 m_nDrownDmgRate; // 0x004C + GameTime_t m_AirFinishedTime; // 0x0050 + float32 m_flWaterJumpTime; // 0x0054 + Vector m_vecWaterJumpVel; // 0x0058 + float32 m_flSwimSoundTime; // 0x0064 +}; +class CLogicDistanceCheck : public CLogicalEntity // server +{ + CUtlSymbolLarge m_iszEntityA; // 0x04A8 + CUtlSymbolLarge m_iszEntityB; // 0x04B0 + float32 m_flZone1Distance; // 0x04B8 + float32 m_flZone2Distance; // 0x04BC + CEntityIOOutput m_InZone1; // 0x04C0 + CEntityIOOutput m_InZone2; // 0x04D8 + CEntityIOOutput m_InZone3; // 0x04F0 +}; +class CEnvCombinedLightProbeVolume : public CBaseEntity // server +{ + Color m_Entity_Color; // 0x1520 + float32 m_Entity_flBrightness; // 0x1524 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hCubemapTexture; // 0x1528 + bool m_Entity_bCustomCubemapTexture; // 0x1530 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_AmbientCube; // 0x1538 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SDF; // 0x1540 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_DC; // 0x1548 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_R; // 0x1550 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_G; // 0x1558 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_B; // 0x1560 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeDirectLightIndicesTexture; // 0x1568 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeDirectLightScalarsTexture; // 0x1570 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeDirectLightShadowsTexture; // 0x1578 + Vector m_Entity_vBoxMins; // 0x1580 + Vector m_Entity_vBoxMaxs; // 0x158C + bool m_Entity_bMoveable; // 0x1598 + int32 m_Entity_nHandshake; // 0x159C + int32 m_Entity_nEnvCubeMapArrayIndex; // 0x15A0 + int32 m_Entity_nPriority; // 0x15A4 + bool m_Entity_bStartDisabled; // 0x15A8 + float32 m_Entity_flEdgeFadeDist; // 0x15AC + Vector m_Entity_vEdgeFadeDists; // 0x15B0 + int32 m_Entity_nLightProbeSizeX; // 0x15BC + int32 m_Entity_nLightProbeSizeY; // 0x15C0 + int32 m_Entity_nLightProbeSizeZ; // 0x15C4 + int32 m_Entity_nLightProbeAtlasX; // 0x15C8 + int32 m_Entity_nLightProbeAtlasY; // 0x15CC + int32 m_Entity_nLightProbeAtlasZ; // 0x15D0 + bool m_Entity_bEnabled; // 0x15E9 +}; +class ViewAngleServerChange_t // server +{ + FixAngleSet_t nType; // 0x0030 + QAngle qAngle; // 0x0034 + uint32 nIndex; // 0x0040 +}; +class CLogicDistanceAutosave : public CLogicalEntity // server +{ + CUtlSymbolLarge m_iszTargetEntity; // 0x04A8 + float32 m_flDistanceToPlayer; // 0x04B0 + bool m_bForceNewLevelUnit; // 0x04B4 + bool m_bCheckCough; // 0x04B5 + bool m_bThinkDangerous; // 0x04B6 + float32 m_flDangerousTime; // 0x04B8 +}; +class CLogicBranch : public CLogicalEntity // server +{ + bool m_bInValue; // 0x04A8 + CUtlVector< CHandle< CBaseEntity > > m_Listeners; // 0x04B0 + CEntityIOOutput m_OnTrue; // 0x04C8 + CEntityIOOutput m_OnFalse; // 0x04E0 +}; +class CPulseCell_Outflow_ScriptedSequence : public CPulseCell_BaseYieldingInflow // server +{ + CUtlString m_szSyncGroup; // 0x0048 + int32 m_nExpectedNumSequencesInSyncGroup; // 0x0050 + bool m_bEnsureOnNavmeshOnFinish; // 0x0054 + bool m_bDontTeleportAtEnd; // 0x0055 + bool m_bDisallowInterrupts; // 0x0056 + PulseScriptedSequenceData_t m_scriptedSequenceDataMain; // 0x0058 + CUtlVector< PulseScriptedSequenceData_t > m_vecAdditionalActors; // 0x0090 + CPulse_ResumePoint m_OnFinished; // 0x00A8 + CPulse_ResumePoint m_OnCanceled; // 0x00F0 + CUtlVector< CPulse_OutflowConnection > m_Triggers; // 0x0138 +}; +class CFuncTrackChange : public CFuncPlatRot // server +{ + CPathTrack* m_trackTop; // 0x07F8 + CPathTrack* m_trackBottom; // 0x0800 + CFuncTrackTrain* m_train; // 0x0808 + CUtlSymbolLarge m_trackTopName; // 0x0810 + CUtlSymbolLarge m_trackBottomName; // 0x0818 + CUtlSymbolLarge m_trainName; // 0x0820 + TRAIN_CODE m_code; // 0x0828 + int32 m_targetState; // 0x082C + int32 m_use; // 0x0830 +}; +class CFuncTrackTrain : public CBaseModelEntity // server +{ + CHandle< CPathTrack > m_ppath; // 0x0730 + float32 m_length; // 0x0734 + Vector m_vPosPrev; // 0x0738 + QAngle m_angPrev; // 0x0744 + Vector m_controlMins; // 0x0750 + Vector m_controlMaxs; // 0x075C + Vector m_lastBlockPos; // 0x0768 + int32 m_lastBlockTick; // 0x0774 + float32 m_flVolume; // 0x0778 + float32 m_flBank; // 0x077C + float32 m_oldSpeed; // 0x0780 + float32 m_flBlockDamage; // 0x0784 + float32 m_height; // 0x0788 + float32 m_maxSpeed; // 0x078C + float32 m_dir; // 0x0790 + CUtlSymbolLarge m_iszSoundMove; // 0x0798 + CUtlSymbolLarge m_iszSoundMovePing; // 0x07A0 + CUtlSymbolLarge m_iszSoundStart; // 0x07A8 + CUtlSymbolLarge m_iszSoundStop; // 0x07B0 + CUtlSymbolLarge m_strPathTarget; // 0x07B8 + float32 m_flMoveSoundMinDuration; // 0x07C0 + float32 m_flMoveSoundMaxDuration; // 0x07C4 + GameTime_t m_flNextMoveSoundTime; // 0x07C8 + float32 m_flMoveSoundMinPitch; // 0x07CC + float32 m_flMoveSoundMaxPitch; // 0x07D0 + TrainOrientationType_t m_eOrientationType; // 0x07D4 + TrainVelocityType_t m_eVelocityType; // 0x07D8 + CEntityIOOutput m_OnStart; // 0x07F0 + CEntityIOOutput m_OnNext; // 0x0808 + CEntityIOOutput m_OnArrivedAtDestinationNode; // 0x0820 + bool m_bManualSpeedChanges; // 0x0838 + float32 m_flDesiredSpeed; // 0x083C + GameTime_t m_flSpeedChangeTime; // 0x0840 + float32 m_flAccelSpeed; // 0x0844 + float32 m_flDecelSpeed; // 0x0848 + bool m_bAccelToSpeed; // 0x084C + GameTime_t m_flNextMPSoundTime; // 0x0850 +}; +class CEnvInstructorHint : public CPointEntity // server +{ + CUtlSymbolLarge m_iszName; // 0x04A8 + CUtlSymbolLarge m_iszReplace_Key; // 0x04B0 + CUtlSymbolLarge m_iszHintTargetEntity; // 0x04B8 + int32 m_iTimeout; // 0x04C0 + int32 m_iDisplayLimit; // 0x04C4 + CUtlSymbolLarge m_iszIcon_Onscreen; // 0x04C8 + CUtlSymbolLarge m_iszIcon_Offscreen; // 0x04D0 + CUtlSymbolLarge m_iszCaption; // 0x04D8 + CUtlSymbolLarge m_iszActivatorCaption; // 0x04E0 + Color m_Color; // 0x04E8 + float32 m_fIconOffset; // 0x04EC + float32 m_fRange; // 0x04F0 + uint8 m_iPulseOption; // 0x04F4 + uint8 m_iAlphaOption; // 0x04F5 + uint8 m_iShakeOption; // 0x04F6 + bool m_bStatic; // 0x04F7 + bool m_bNoOffscreen; // 0x04F8 + bool m_bForceCaption; // 0x04F9 + int32 m_iInstanceType; // 0x04FC + bool m_bSuppressRest; // 0x0500 + CUtlSymbolLarge m_iszBinding; // 0x0508 + bool m_bAllowNoDrawTarget; // 0x0510 + bool m_bAutoStart; // 0x0511 + bool m_bLocalPlayerOnly; // 0x0512 +}; +class CEnvWind : public CBaseEntity // server +{ + CEnvWindShared m_EnvWindShared; // 0x04A8 +}; +class CSoundEventPathCornerEntity : public CSoundEventEntity // server +{ + CUtlSymbolLarge m_iszPathCorner; // 0x0558 + int32 m_iCountMax; // 0x0560 + float32 m_flDistanceMax; // 0x0564 + float32 m_flDistMaxSqr; // 0x0568 + float32 m_flDotProductMax; // 0x056C + bool m_bPlaying; // 0x0570 + CNetworkUtlVectorBase< SoundeventPathCornerPairNetworked_t > m_vecCornerPairsNetworked; // 0x0598 +}; +class CCSPlayerBase_CameraServices : public CPlayer_CameraServices // server +{ + uint32 m_iFOV; // 0x0178 + uint32 m_iFOVStart; // 0x017C + GameTime_t m_flFOVTime; // 0x0180 + float32 m_flFOVRate; // 0x0184 + CHandle< CBaseEntity > m_hZoomOwner; // 0x0188 + CUtlVector< CHandle< CBaseEntity > > m_hTriggerFogList; // 0x0190 + CHandle< CBaseEntity > m_hLastFogTrigger; // 0x01A8 +}; +class CPulseCell_Inflow_BaseEntrypoint : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseRuntimeChunkIndex_t m_EntryChunk; // 0x0048 + PulseRegisterMap_t m_RegisterMap; // 0x0050 +}; +class CDynamicNavConnectionsVolume : public CTriggerMultiple // server +{ + CUtlSymbolLarge m_iszConnectionTarget; // 0x08A8 + CUtlVector< DynamicVolumeDef_t > m_vecConnections; // 0x08B0 + CGlobalSymbol m_sTransitionType; // 0x08C8 + bool m_bConnectionsEnabled; // 0x08D0 + float32 m_flTargetAreaSearchRadius; // 0x08D4 + float32 m_flUpdateDistance; // 0x08D8 + float32 m_flMaxConnectionDistance; // 0x08DC +}; +class CConstraintAnchor : public CBaseAnimGraph // server +{ + float32 m_massScale; // 0x0A20 +}; +class CPulseCell_WaitForCursorsWithTagBase : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + int32 m_nCursorsAllowedToWait; // 0x0048 + CPulse_ResumePoint m_WaitComplete; // 0x0050 +}; +class CCSPlayerPawn : public CCSPlayerPawnBase // server +{ + CCSPlayer_BulletServices* m_pBulletServices; // 0x0E78 + CCSPlayer_HostageServices* m_pHostageServices; // 0x0E80 + CCSPlayer_BuyServices* m_pBuyServices; // 0x0E88 + CCSPlayer_ActionTrackingServices* m_pActionTrackingServices; // 0x0E90 + CCSPlayer_RadioServices* m_pRadioServices; // 0x0E98 + CCSPlayer_DamageReactServices* m_pDamageReactServices; // 0x0EA0 + uint16 m_nCharacterDefIndex; // 0x0EA8 + bool m_bHasFemaleVoice; // 0x0EAA + CUtlString m_strVOPrefix; // 0x0EB0 + char[18] m_szLastPlaceName; // 0x0EB8 + bool m_bInHostageResetZone; // 0x0FA8 + bool m_bInBuyZone; // 0x0FA9 + CUtlVector< CHandle< CBaseEntity > > m_TouchingBuyZones; // 0x0FB0 + bool m_bWasInBuyZone; // 0x0FC8 + bool m_bInHostageRescueZone; // 0x0FC9 + bool m_bInBombZone; // 0x0FCA + bool m_bWasInHostageRescueZone; // 0x0FCB + int32 m_iRetakesOffering; // 0x0FCC + int32 m_iRetakesOfferingCard; // 0x0FD0 + bool m_bRetakesHasDefuseKit; // 0x0FD4 + bool m_bRetakesMVPLastRound; // 0x0FD5 + int32 m_iRetakesMVPBoostItem; // 0x0FD8 + loadout_slot_t m_RetakesMVPBoostExtraUtility; // 0x0FDC + GameTime_t m_flHealthShotBoostExpirationTime; // 0x0FE0 + float32 m_flLandingTimeSeconds; // 0x0FE4 + QAngle m_aimPunchAngle; // 0x0FE8 + QAngle m_aimPunchAngleVel; // 0x0FF4 + GameTick_t m_aimPunchTickBase; // 0x1000 + float32 m_aimPunchTickFraction; // 0x1004 + CUtlVector< QAngle > m_aimPunchCache; // 0x1008 + bool m_bIsBuyMenuOpen; // 0x1020 + GameTime_t m_lastLandTime; // 0x16C0 + bool m_bOnGroundLastTick; // 0x16C4 + int32 m_iPlayerLocked; // 0x16C8 + GameTime_t m_flTimeOfLastInjury; // 0x16D0 + GameTime_t m_flNextSprayDecalTime; // 0x16D4 + bool m_bNextSprayDecalTimeExpedited; // 0x16D8 + int32 m_nRagdollDamageBone; // 0x16DC + Vector m_vRagdollDamageForce; // 0x16E0 + Vector m_vRagdollDamagePosition; // 0x16EC + char[64] m_szRagdollDamageWeaponName; // 0x16F8 + bool m_bRagdollDamageHeadshot; // 0x1738 + Vector m_vRagdollServerOrigin; // 0x173C + CEconItemView m_EconGloves; // 0x1748 + uint8 m_nEconGlovesChanged; // 0x19F0 + QAngle m_qDeathEyeAngles; // 0x19F4 + bool m_bSkipOneHeadConstraintUpdate; // 0x1A00 + bool m_bLeftHanded; // 0x1A01 + GameTime_t m_fSwitchedHandednessTime; // 0x1A04 + float32 m_flViewmodelOffsetX; // 0x1A08 + float32 m_flViewmodelOffsetY; // 0x1A0C + float32 m_flViewmodelOffsetZ; // 0x1A10 + float32 m_flViewmodelFOV; // 0x1A14 + bool m_bIsWalking; // 0x1A18 + float32 m_fLastGivenDefuserTime; // 0x1A1C + float32 m_fLastGivenBombTime; // 0x1A20 + float32 m_flDealtDamageToEnemyMostRecentTimestamp; // 0x1A24 + uint32 m_iDisplayHistoryBits; // 0x1A28 + float32 m_flLastAttackedTeammate; // 0x1A2C + GameTime_t m_allowAutoFollowTime; // 0x1A30 + bool m_bResetArmorNextSpawn; // 0x1A34 + CEntityIndex m_nLastKillerIndex; // 0x1A38 + EntitySpottedState_t m_entitySpottedState; // 0x1A40 + int32 m_nSpotRules; // 0x1A58 + bool m_bIsScoped; // 0x1A5C + bool m_bResumeZoom; // 0x1A5D + bool m_bIsDefusing; // 0x1A5E + bool m_bIsGrabbingHostage; // 0x1A5F + CSPlayerBlockingUseAction_t m_iBlockingUseActionInProgress; // 0x1A60 + GameTime_t m_flEmitSoundTime; // 0x1A64 + bool m_bInNoDefuseArea; // 0x1A68 + CEntityIndex m_iBombSiteIndex; // 0x1A6C + int32 m_nWhichBombZone; // 0x1A70 + bool m_bInBombZoneTrigger; // 0x1A74 + bool m_bWasInBombZoneTrigger; // 0x1A75 + int32 m_iShotsFired; // 0x1A78 + float32 m_flFlinchStack; // 0x1A7C + float32 m_flVelocityModifier; // 0x1A80 + float32 m_flHitHeading; // 0x1A84 + int32 m_nHitBodyPart; // 0x1A88 + Vector m_vecTotalBulletForce; // 0x1A8C + bool m_bWaitForNoAttack; // 0x1A98 + float32 m_ignoreLadderJumpTime; // 0x1A9C + bool m_bKilledByHeadshot; // 0x1AA0 + int32 m_LastHitBox; // 0x1AA4 + CCSBot* m_pBot; // 0x1AA8 + bool m_bBotAllowActive; // 0x1AB0 + QAngle m_thirdPersonHeading; // 0x1AB4 + float32 m_flSlopeDropOffset; // 0x1AC0 + float32 m_flSlopeDropHeight; // 0x1AC4 + Vector m_vHeadConstraintOffset; // 0x1AC8 + int32 m_nLastPickupPriority; // 0x1AD4 + float32 m_flLastPickupPriorityTime; // 0x1AD8 + int32 m_ArmorValue; // 0x1ADC + uint16 m_unCurrentEquipmentValue; // 0x1AE0 + uint16 m_unRoundStartEquipmentValue; // 0x1AE2 + uint16 m_unFreezetimeEndEquipmentValue; // 0x1AE4 + int32 m_iLastWeaponFireUsercmd; // 0x1AE8 + bool m_bIsSpawning; // 0x1AEC + int32 m_iDeathFlags; // 0x1AF8 + bool m_bHasDeathInfo; // 0x1AFC + float32 m_flDeathInfoTime; // 0x1B00 + Vector m_vecDeathInfoOrigin; // 0x1B04 + uint32[5] m_vecPlayerPatchEconIndices; // 0x1B10 + Color m_GunGameImmunityColor; // 0x1B24 + GameTime_t m_grenadeParameterStashTime; // 0x1B28 + bool m_bGrenadeParametersStashed; // 0x1B2C + QAngle m_angStashedShootAngles; // 0x1B30 + Vector m_vecStashedGrenadeThrowPosition; // 0x1B3C + Vector m_vecStashedVelocity; // 0x1B48 + QAngle[2] m_angShootAngleHistory; // 0x1B54 + Vector[2] m_vecThrowPositionHistory; // 0x1B6C + Vector[2] m_vecVelocityHistory; // 0x1B84 + CUtlVectorEmbeddedNetworkVar< PredictedDamageTag_t > m_PredictedDamageTags; // 0x1BA0 + int32 m_nHighestAppliedDamageTagTick; // 0x1C08 + bool m_bCommittingSuicideOnTeamChange; // 0x1C0C + bool m_wasNotKilledNaturally; // 0x1C0D + GameTime_t m_fImmuneToGunGameDamageTime; // 0x1C10 + bool m_bGunGameImmunity; // 0x1C14 + float32 m_fMolotovDamageTime; // 0x1C18 + QAngle m_angEyeAngles; // 0x1C1C +}; +class CEnvLightProbeVolume : public CBaseEntity // server +{ + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_AmbientCube; // 0x14A0 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SDF; // 0x14A8 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_DC; // 0x14B0 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_R; // 0x14B8 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_G; // 0x14C0 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_B; // 0x14C8 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeDirectLightIndicesTexture; // 0x14D0 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeDirectLightScalarsTexture; // 0x14D8 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeDirectLightShadowsTexture; // 0x14E0 + Vector m_Entity_vBoxMins; // 0x14E8 + Vector m_Entity_vBoxMaxs; // 0x14F4 + bool m_Entity_bMoveable; // 0x1500 + int32 m_Entity_nHandshake; // 0x1504 + int32 m_Entity_nPriority; // 0x1508 + bool m_Entity_bStartDisabled; // 0x150C + int32 m_Entity_nLightProbeSizeX; // 0x1510 + int32 m_Entity_nLightProbeSizeY; // 0x1514 + int32 m_Entity_nLightProbeSizeZ; // 0x1518 + int32 m_Entity_nLightProbeAtlasX; // 0x151C + int32 m_Entity_nLightProbeAtlasY; // 0x1520 + int32 m_Entity_nLightProbeAtlasZ; // 0x1524 + bool m_Entity_bEnabled; // 0x1531 +}; +class SpawnPoint : public CServerOnlyPointEntity // server +{ + int32 m_iPriority; // 0x04A8 + bool m_bEnabled; // 0x04AC + int32 m_nType; // 0x04B0 +}; +class CFuncMoverAPI // server +{ +}; +class CGameSceneNode // server +{ + CTransformWS m_nodeToWorld; // 0x0010 + CEntityInstance* m_pOwner; // 0x0030 + CGameSceneNode* m_pParent; // 0x0038 + CGameSceneNode* m_pChild; // 0x0040 + CGameSceneNode* m_pNextSibling; // 0x0048 + CGameSceneNodeHandle m_hParent; // 0x0078 + CNetworkOriginCellCoordQuantizedVector m_vecOrigin; // 0x0088 + QAngle m_angRotation; // 0x00C0 + float32 m_flScale; // 0x00CC + VectorWS m_vecAbsOrigin; // 0x00D0 + QAngle m_angAbsRotation; // 0x00DC + float32 m_flAbsScale; // 0x00E8 + int16 m_nParentAttachmentOrBone; // 0x00EC + bool m_bDebugAbsOriginChanges; // 0x00EE + bool m_bDormant; // 0x00EF + bool m_bForceParentToBeNetworked; // 0x00F0 + bitfield:1 m_bDirtyHierarchy; // 0x0000 + bitfield:1 m_bDirtyBoneMergeInfo; // 0x0000 + bitfield:1 m_bNetworkedPositionChanged; // 0x0000 + bitfield:1 m_bNetworkedAnglesChanged; // 0x0000 + bitfield:1 m_bNetworkedScaleChanged; // 0x0000 + bitfield:1 m_bWillBeCallingPostDataUpdate; // 0x0000 + bitfield:1 m_bBoneMergeFlex; // 0x0000 + bitfield:2 m_nLatchAbsOrigin; // 0x0000 + bitfield:1 m_bDirtyBoneMergeBoneToRoot; // 0x0000 + uint8 m_nHierarchicalDepth; // 0x00F3 + uint8 m_nHierarchyType; // 0x00F4 + uint8 m_nDoNotSetAnimTimeInInvalidatePhysicsCount; // 0x00F5 + CUtlStringToken m_name; // 0x00F8 + CUtlStringToken m_hierarchyAttachName; // 0x010C + float32 m_flZOffset; // 0x0110 + float32 m_flClientLocalScale; // 0x0114 + Vector m_vRenderOrigin; // 0x0118 +}; +class CWeaponM249 : public CCSWeaponBaseGun // server +{ +}; +class CRopeKeyframeAlias_move_rope : public CRopeKeyframe // server +{ +}; +class CPulseServerFuncs_Sounds // server +{ +}; +class CPulsePhysicsConstraintsFuncs // server +{ +}; +class CPlayer_ObserverServices : public CPlayerPawnComponent // server +{ + uint8 m_iObserverMode; // 0x0048 + CHandle< CBaseEntity > m_hObserverTarget; // 0x004C + ObserverMode_t m_iObserverLastMode; // 0x0050 + bool m_bForcedObserverMode; // 0x0054 +}; +class CLogicScript : public CPointEntity // server +{ +}; +class CAttributeManager::cached_attribute_float_t // server +{ + float32 flIn; // 0x0000 + CUtlSymbolLarge iAttribHook; // 0x0008 + float32 flOut; // 0x0010 +}; +class CPulseGraphInstance_ServerEntity : public CBasePulseGraphInstance // server +{ + CHandle< CBaseEntity > m_hOwner; // 0x0190 + bool m_bActivated; // 0x0194 + CUtlSymbolLarge m_sNameFixupStaticPrefix; // 0x0198 + CUtlSymbolLarge m_sNameFixupParent; // 0x01A0 + CUtlSymbolLarge m_sNameFixupLocal; // 0x01A8 + CUtlSymbolLarge m_sProceduralWorldNameForRelays; // 0x01B0 +}; +class CSceneEntityAlias_logic_choreographed_scene : public CSceneEntity // server +{ +}; +class CRagdollManager : public CBaseEntity // server +{ + int8 m_iCurrentMaxRagdollCount; // 0x04A8 + int32 m_iMaxRagdollCount; // 0x04AC + bool m_bSaveImportant; // 0x04B0 + bool m_bCanTakeDamage; // 0x04B1 +}; +class CPostProcessingVolume : public CBaseTrigger // server +{ + CStrongHandle< InfoForResourceTypeCPostProcessingResource > m_hPostSettings; // 0x08A0 + float32 m_flFadeDuration; // 0x08A8 + float32 m_flMinLogExposure; // 0x08AC + float32 m_flMaxLogExposure; // 0x08B0 + float32 m_flMinExposure; // 0x08B4 + float32 m_flMaxExposure; // 0x08B8 + float32 m_flExposureCompensation; // 0x08BC + float32 m_flExposureFadeSpeedUp; // 0x08C0 + float32 m_flExposureFadeSpeedDown; // 0x08C4 + float32 m_flTonemapEVSmoothingRange; // 0x08C8 + bool m_bMaster; // 0x08CC + bool m_bExposureControl; // 0x08CD +}; +class CPointProximitySensor : public CPointEntity // server +{ + bool m_bDisabled; // 0x04A8 + CHandle< CBaseEntity > m_hTargetEntity; // 0x04AC + CEntityOutputTemplate< float32, float32 > m_Distance; // 0x04B0 +}; +class CPulse_InvokeBinding // pulse_runtime_lib +{ + PulseRegisterMap_t m_RegisterMap; // 0x0000 + PulseSymbol_t m_FuncName; // 0x0030 + PulseRuntimeCellIndex_t m_nCellIndex; // 0x0040 + PulseRuntimeChunkIndex_t m_nSrcChunk; // 0x0044 + int32 m_nSrcInstruction; // 0x0048 +}; +class CTriggerLook : public CTriggerOnce // server +{ + CHandle< CBaseEntity > m_hLookTarget; // 0x08A8 + float32 m_flFieldOfView; // 0x08AC + float32 m_flLookTime; // 0x08B0 + float32 m_flLookTimeTotal; // 0x08B4 + GameTime_t m_flLookTimeLast; // 0x08B8 + float32 m_flTimeoutDuration; // 0x08BC + bool m_bTimeoutFired; // 0x08C0 + bool m_bIsLooking; // 0x08C1 + bool m_b2DFOV; // 0x08C2 + bool m_bUseVelocity; // 0x08C3 + bool m_bTestOcclusion; // 0x08C4 + bool m_bTestAllVisibleOcclusion; // 0x08C5 + CEntityIOOutput m_OnTimeout; // 0x08C8 + CEntityIOOutput m_OnStartLook; // 0x08E0 + CEntityIOOutput m_OnEndLook; // 0x08F8 +}; +class CPulseCell_Outflow_PlayVCD : public CPulseCell_Outflow_PlaySceneBase // server +{ + CStrongHandle< InfoForResourceTypeCChoreoSceneResource > m_hChoreoScene; // 0x00F0 + CPulse_OutflowConnection m_OnPaused; // 0x00F8 + CPulse_OutflowConnection m_OnResumed; // 0x0140 +}; +class CMultiplayRules : public CGameRules // server +{ +}; +class CMolotovGrenade : public CBaseCSGrenade // server +{ +}; +class CPhysTorque : public CPhysForce // server +{ + VectorWS m_axis; // 0x0508 +}; +class CMultiSource : public CLogicalEntity // server +{ + CHandle< CBaseEntity >[32] m_rgEntities; // 0x04A8 + int32[32] m_rgTriggered; // 0x0528 + CEntityIOOutput m_OnTrigger; // 0x05A8 + int32 m_iTotal; // 0x05C0 + CUtlSymbolLarge m_globalstate; // 0x05C8 +}; +class CBaseCSGrenade : public CCSWeaponBase // server +{ + bool m_bRedraw; // 0x1130 + bool m_bIsHeldByPlayer; // 0x1131 + bool m_bPinPulled; // 0x1132 + bool m_bJumpThrow; // 0x1133 + bool m_bThrowAnimating; // 0x1134 + GameTime_t m_fThrowTime; // 0x1138 + float32 m_flThrowStrength; // 0x113C + GameTime_t m_fDropTime; // 0x1140 + GameTime_t m_fPinPullTime; // 0x1144 + bool m_bJustPulledPin; // 0x1148 + GameTick_t m_nNextHoldTick; // 0x114C + float32 m_flNextHoldFrac; // 0x1150 + CHandle< CCSWeaponBase > m_hSwitchToWeaponAfterThrow; // 0x1154 +}; +class CLogicAuto : public CBaseEntity // server +{ + CEntityIOOutput m_OnMapSpawn; // 0x04A8 + CEntityIOOutput m_OnDemoMapSpawn; // 0x04C0 + CEntityIOOutput m_OnNewGame; // 0x04D8 + CEntityIOOutput m_OnLoadGame; // 0x04F0 + CEntityIOOutput m_OnMapTransition; // 0x0508 + CEntityIOOutput m_OnBackgroundMap; // 0x0520 + CEntityIOOutput m_OnMultiNewMap; // 0x0538 + CEntityIOOutput m_OnMultiNewRound; // 0x0550 + CEntityIOOutput m_OnVREnabled; // 0x0568 + CEntityIOOutput m_OnVRNotEnabled; // 0x0580 + CUtlSymbolLarge m_globalstate; // 0x0598 +}; +class CPhysicsWire : public CBaseEntity // server +{ + int32 m_nDensity; // 0x04A8 +}; +class CFuncIllusionary : public CBaseModelEntity // server +{ +}; +class CInfoDynamicShadowHint : public CPointEntity // server +{ + bool m_bDisabled; // 0x04A8 + float32 m_flRange; // 0x04AC + int32 m_nImportance; // 0x04B0 + int32 m_nLightChoice; // 0x04B4 + CHandle< CBaseEntity > m_hLight; // 0x04B8 +}; +class CMarkupVolume : public CBaseModelEntity // server +{ + bool m_bDisabled; // 0x0730 +}; +class CPathNode : public CPointEntity // server +{ + Vector m_vInTangentLocal; // 0x04A8 + Vector m_vOutTangentLocal; // 0x04B4 + CUtlString m_strParentPathUniqueID; // 0x04C0 + CUtlString m_strPathNodeParameter; // 0x04C8 + CTransform m_xWSPrevParent; // 0x04D0 + CHandle< CPathWithDynamicNodes > m_hPath; // 0x04F0 +}; +class CCSGO_TeamSelectCounterTerroristPosition : public CCSGO_TeamSelectCharacterPosition // server +{ +}; +class CTriggerRemove : public CBaseTrigger // server +{ + CEntityIOOutput m_OnRemove; // 0x0890 +}; +class CLogicGameEventListener : public CLogicalEntity // server +{ + CEntityIOOutput m_OnEventFired; // 0x04B8 + CUtlSymbolLarge m_iszGameEventName; // 0x04D0 + CUtlSymbolLarge m_iszGameEventItem; // 0x04D8 + bool m_bEnabled; // 0x04E0 + bool m_bStartDisabled; // 0x04E1 +}; +class CServerOnlyModelEntity : public CBaseModelEntity // server +{ +}; +class CPulseCell_IntervalTimer : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_Completed; // 0x0048 + SignatureOutflow_Continue m_OnInterval; // 0x0090 +}; +class CMarkupVolumeTagged_Nav : public CMarkupVolumeTagged // server +{ + NavScopeFlags_t m_nScopes; // 0x0770 +}; +class CInfoPlayerTerrorist : public SpawnPoint // server +{ +}; +class CLogicAutosave : public CLogicalEntity // server +{ + bool m_bForceNewLevelUnit; // 0x04A8 + int32 m_minHitPoints; // 0x04AC + int32 m_minHitPointsToCommit; // 0x04B0 +}; +class CCSGO_TeamIntroTerroristPosition : public CCSGO_TeamIntroCharacterPosition // server +{ +}; +class CPulseTestScriptLib // pulse_runtime_lib +{ +}; +class CSingleplayRules : public CGameRules // server +{ + bool m_bSinglePlayerGameEnding; // 0x00C0 +}; +class CEnvWindShared // server +{ + GameTime_t m_flStartTime; // 0x0008 + uint32 m_iWindSeed; // 0x000C + uint16 m_iMinWind; // 0x0010 + uint16 m_iMaxWind; // 0x0012 + int32 m_windRadius; // 0x0014 + uint16 m_iMinGust; // 0x0018 + uint16 m_iMaxGust; // 0x001A + float32 m_flMinGustDelay; // 0x001C + float32 m_flMaxGustDelay; // 0x0020 + float32 m_flGustDuration; // 0x0024 + uint16 m_iGustDirChange; // 0x0028 + uint16 m_iInitialWindDir; // 0x002A + float32 m_flInitialWindSpeed; // 0x002C + Vector m_location; // 0x0030 + CEntityIOOutput m_OnGustStart; // 0x0040 + CEntityIOOutput m_OnGustEnd; // 0x0058 + CHandle< CBaseEntity > m_hEntOwner; // 0x0070 +}; +class CPointPrefab : public CServerOnlyPointEntity // server +{ + CUtlSymbolLarge m_targetMapName; // 0x04A8 + CUtlSymbolLarge m_forceWorldGroupID; // 0x04B0 + CUtlSymbolLarge m_associatedRelayTargetName; // 0x04B8 + bool m_fixupNames; // 0x04C0 + bool m_bLoadDynamic; // 0x04C1 + CHandle< CPointPrefab > m_associatedRelayEntity; // 0x04C4 +}; +class CPulseCell_BaseLerp : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_WakeResume; // 0x0048 +}; +class CEnvInstructorVRHint : public CPointEntity // server +{ + CUtlSymbolLarge m_iszName; // 0x04A8 + CUtlSymbolLarge m_iszHintTargetEntity; // 0x04B0 + int32 m_iTimeout; // 0x04B8 + CUtlSymbolLarge m_iszCaption; // 0x04C0 + CUtlSymbolLarge m_iszStartSound; // 0x04C8 + int32 m_iLayoutFileType; // 0x04D0 + CUtlSymbolLarge m_iszCustomLayoutFile; // 0x04D8 + int32 m_iAttachType; // 0x04E0 + float32 m_flHeightOffset; // 0x04E4 +}; +class CCSGameRulesProxy : public CGameRulesProxy // server +{ + CCSGameRules* m_pGameRules; // 0x04A8 +}; +class CPrecipitation : public CBaseTrigger // server +{ +}; +class CCommentaryViewPosition : public CSprite // server +{ +}; +class CEnvGlobal : public CLogicalEntity // server +{ + CEntityOutputTemplate< int32, int32 > m_outCounter; // 0x04A8 + CUtlSymbolLarge m_globalstate; // 0x04C8 + int32 m_triggermode; // 0x04D0 + int32 m_initialstate; // 0x04D4 + int32 m_counter; // 0x04D8 +}; +class CLogicNPCCounterOBB : public CLogicNPCCounterAABB // server +{ +}; +class CPlatTrigger : public CBaseModelEntity // server +{ + CHandle< CFuncPlat > m_pPlatform; // 0x0730 +}; +class CSceneEntity : public CPointEntity // server +{ + CUtlSymbolLarge m_iszSceneFile; // 0x04B0 + CUtlSymbolLarge m_iszTarget1; // 0x04B8 + CUtlSymbolLarge m_iszTarget2; // 0x04C0 + CUtlSymbolLarge m_iszTarget3; // 0x04C8 + CUtlSymbolLarge m_iszTarget4; // 0x04D0 + CUtlSymbolLarge m_iszTarget5; // 0x04D8 + CUtlSymbolLarge m_iszTarget6; // 0x04E0 + CUtlSymbolLarge m_iszTarget7; // 0x04E8 + CUtlSymbolLarge m_iszTarget8; // 0x04F0 + CHandle< CBaseEntity > m_hTarget1; // 0x04F8 + CHandle< CBaseEntity > m_hTarget2; // 0x04FC + CHandle< CBaseEntity > m_hTarget3; // 0x0500 + CHandle< CBaseEntity > m_hTarget4; // 0x0504 + CHandle< CBaseEntity > m_hTarget5; // 0x0508 + CHandle< CBaseEntity > m_hTarget6; // 0x050C + CHandle< CBaseEntity > m_hTarget7; // 0x0510 + CHandle< CBaseEntity > m_hTarget8; // 0x0514 + CUtlSymbolLarge m_sTargetAttachment; // 0x0518 + bool m_bIsPlayingBack; // 0x0520 + bool m_bPaused; // 0x0521 + bool m_bMultiplayer; // 0x0522 + bool m_bAutogenerated; // 0x0523 + float32 m_flForceClientTime; // 0x0524 + float32 m_flCurrentTime; // 0x0528 + float32 m_flFrameTime; // 0x052C + bool m_bCancelAtNextInterrupt; // 0x0530 + float32 m_fPitch; // 0x0534 + bool m_bAutomated; // 0x0538 + int32 m_nAutomatedAction; // 0x053C + float32 m_flAutomationDelay; // 0x0540 + float32 m_flAutomationTime; // 0x0544 + int32 m_nSpeechPriority; // 0x0548 + bool m_bPausedViaInput; // 0x054C + bool m_bPauseAtNextInterrupt; // 0x054D + bool m_bWaitingForActor; // 0x054E + bool m_bWaitingForInterrupt; // 0x054F + bool m_bInterruptedActorsScenes; // 0x0550 + bool m_bBreakOnNonIdle; // 0x0551 + bool m_bSceneFinished; // 0x0552 + CNetworkUtlVectorBase< CHandle< CBaseFlex > > m_hActorList; // 0x0558 + CUtlVector< CHandle< CBaseEntity > > m_hRemoveActorList; // 0x0570 + uint16 m_nSceneStringIndex; // 0x05B8 + CEntityIOOutput m_OnStart; // 0x05C0 + CEntityIOOutput m_OnCompletion; // 0x05D8 + CEntityIOOutput m_OnCanceled; // 0x05F0 + CEntityIOOutput m_OnPaused; // 0x0608 + CEntityIOOutput m_OnResumed; // 0x0620 + CHandle< CSceneEntity > m_hInterruptScene; // 0x06C8 + int32 m_nInterruptCount; // 0x06CC + bool m_bSceneMissing; // 0x06D0 + bool m_bInterrupted; // 0x06D1 + bool m_bCompletedEarly; // 0x06D2 + bool m_bInterruptSceneFinished; // 0x06D3 + bool m_bRestoring; // 0x06D4 + CUtlVector< CHandle< CSceneEntity > > m_hNotifySceneCompletion; // 0x06D8 + CUtlVector< CHandle< CSceneListManager > > m_hListManagers; // 0x06F0 + CUtlSymbolLarge m_iszSoundName; // 0x0708 + CUtlSymbolLarge m_iszSequenceName; // 0x0710 + CHandle< CBaseFlex > m_hActor; // 0x0718 + CHandle< CBaseEntity > m_hActivator; // 0x071C + int32 m_BusyActor; // 0x0720 + SceneOnPlayerDeath_t m_iPlayerDeathBehavior; // 0x0724 +}; +class CChoreoInfoTarget : public CPointEntity // server +{ +}; +class CTonemapController2 : public CBaseEntity // server +{ + float32 m_flAutoExposureMin; // 0x04A8 + float32 m_flAutoExposureMax; // 0x04AC + float32 m_flExposureAdaptationSpeedUp; // 0x04B0 + float32 m_flExposureAdaptationSpeedDown; // 0x04B4 + float32 m_flTonemapEVSmoothingRange; // 0x04B8 +}; +class CMapSharedEnvironment : public CLogicalEntity // server +{ + CUtlSymbolLarge m_targetMapName; // 0x04A8 +}; +class CNetworkedSequenceOperation // server +{ + HSequence m_hSequence; // 0x0008 + float32 m_flPrevCycle; // 0x000C + float32 m_flCycle; // 0x0010 + CNetworkedQuantizedFloat m_flWeight; // 0x0014 + bool m_bSequenceChangeNetworked; // 0x001C + bool m_bDiscontinuity; // 0x001D + float32 m_flPrevCycleFromDiscontinuity; // 0x0020 + float32 m_flPrevCycleForAnimEventDetection; // 0x0024 +}; +class CPhysMagnet : public CBaseAnimGraph // server +{ + CEntityIOOutput m_OnMagnetAttach; // 0x0A20 + CEntityIOOutput m_OnMagnetDetach; // 0x0A38 + float32 m_massScale; // 0x0A50 + float32 m_forceLimit; // 0x0A54 + float32 m_torqueLimit; // 0x0A58 + CUtlVector< magnetted_objects_t > m_MagnettedEntities; // 0x0A60 + bool m_bActive; // 0x0A78 + bool m_bHasHitSomething; // 0x0A79 + float32 m_flTotalMass; // 0x0A7C + float32 m_flRadius; // 0x0A80 + GameTime_t m_flNextSuckTime; // 0x0A84 + int32 m_iMaxObjectsAttached; // 0x0A88 +}; +class CEntityInstance // entity2 +{ + CUtlSymbolLarge m_iszPrivateVScripts; // 0x0008 + CEntityIdentity* m_pEntity; // 0x0010 + CScriptComponent* m_CScriptComponent; // 0x0030 +}; +class CGameGibManager : public CBaseEntity // server +{ + bool m_bAllowNewGibs; // 0x04C0 + int32 m_iCurrentMaxPieces; // 0x04C4 + int32 m_iMaxPieces; // 0x04C8 + int32 m_iLastFrame; // 0x04CC +}; +class CHandleDummy : public CBaseEntity // server +{ +}; +class CFuncWallToggle : public CFuncWall // server +{ +}; +class CCSPlayer_BulletServices : public CPlayerPawnComponent // server +{ + int32 m_totalHitsOnServer; // 0x0048 +}; +class CSkyCamera : public CBaseEntity // server +{ + sky3dparams_t m_skyboxData; // 0x04A8 + CUtlStringToken m_skyboxSlotToken; // 0x0538 + bool m_bUseAngles; // 0x053C + CSkyCamera* m_pNext; // 0x0540 +}; +class CPlayer_AutoaimServices : public CPlayerPawnComponent // server +{ +}; +class CItemDefuserAlias_item_defuser : public CItemDefuser // server +{ +}; +class CPathCornerCrash : public CPathCorner // server +{ +}; +class CPhysPulley : public CPhysConstraint // server +{ + VectorWS m_position2; // 0x0508 + Vector[2] m_offset; // 0x0514 + float32 m_addLength; // 0x052C + float32 m_gearRatio; // 0x0530 +}; +class CCSPetPlacement : public CBaseEntity // server +{ +}; +class CWeaponMP5SD : public CCSWeaponBaseGun // server +{ +}; +class CWeaponBaseItem : public CCSWeaponBase // server +{ + bool m_bSequenceInProgress; // 0x1130 + bool m_bRedraw; // 0x1131 +}; +class CCommentaryAuto : public CBaseEntity // server +{ + CEntityIOOutput m_OnCommentaryNewGame; // 0x04A8 + CEntityIOOutput m_OnCommentaryMidGame; // 0x04C0 + CEntityIOOutput m_OnCommentaryMultiplayerSpawn; // 0x04D8 +}; +class CPulseCell_Outflow_ListenForEntityOutput::CursorState_t // server +{ + CHandle< CBaseEntity > m_entity; // 0x0000 +}; +class ActiveModelConfig_t // server +{ + ModelConfigHandle_t m_Handle; // 0x0030 + CUtlSymbolLarge m_Name; // 0x0038 + CNetworkUtlVectorBase< CHandle< CBaseModelEntity > > m_AssociatedEntities; // 0x0040 + CNetworkUtlVectorBase< CUtlSymbolLarge > m_AssociatedEntityNames; // 0x0058 +}; +class CWeaponUSPSilencer : public CCSWeaponBaseGun // server +{ +}; +class CSoundStackSave : public CLogicalEntity // server +{ + CUtlSymbolLarge m_iszStackName; // 0x04A8 +}; +class CPulseCell_Value_Curve : public CPulseCell_BaseValue // pulse_runtime_lib +{ + CPiecewiseCurve m_Curve; // 0x0048 +}; +class CWeaponMag7 : public CCSWeaponBaseGun // server +{ +}; +class CLogicMeasureMovement : public CLogicalEntity // server +{ + CUtlSymbolLarge m_strMeasureTarget; // 0x04A8 + CUtlSymbolLarge m_strMeasureReference; // 0x04B0 + CUtlSymbolLarge m_strTargetReference; // 0x04B8 + CHandle< CBaseEntity > m_hMeasureTarget; // 0x04C0 + CHandle< CBaseEntity > m_hMeasureReference; // 0x04C4 + CHandle< CBaseEntity > m_hTarget; // 0x04C8 + CHandle< CBaseEntity > m_hTargetReference; // 0x04CC + float32 m_flScale; // 0x04D0 + int32 m_nMeasureType; // 0x04D4 +}; +class CC4 : public CCSWeaponBase // server +{ + Vector m_vecLastValidPlayerHeldPosition; // 0x1160 + Vector m_vecLastValidDroppedPosition; // 0x116C + bool m_bDoValidDroppedPositionCheck; // 0x1178 + bool m_bStartedArming; // 0x1179 + GameTime_t m_fArmedTime; // 0x117C + bool m_bBombPlacedAnimation; // 0x1180 + bool m_bIsPlantingViaUse; // 0x1181 + EntitySpottedState_t m_entitySpottedState; // 0x1188 + int32 m_nSpotRules; // 0x11A0 + bool[7] m_bPlayedArmingBeeps; // 0x11A4 + bool m_bBombPlanted; // 0x11AB +}; +class CHostageCarriableProp : public CBaseAnimGraph // server +{ +}; +class CDynamicPropAlias_cable_dynamic : public CDynamicProp // server +{ +}; +class CBaseFlexAlias_funCBaseFlex : public CBaseFlex // server +{ +}; +class CCSObserver_CameraServices : public CCSPlayerBase_CameraServices // server +{ +}; +class CEnvDetailController : public CBaseEntity // server +{ + float32 m_flFadeStartDist; // 0x04A8 + float32 m_flFadeEndDist; // 0x04AC +}; +class CTakeDamageInfoAPI // server +{ +}; +class CCSPlayerPawnBase : public CBasePlayerPawn // server +{ + CTouchExpansionComponent m_CTouchExpansionComponent; // 0x0D30 + CCSPlayer_PingServices* m_pPingServices; // 0x0D80 + GameTime_t m_blindUntilTime; // 0x0D88 + GameTime_t m_blindStartTime; // 0x0D8C + CSPlayerState m_iPlayerState; // 0x0D90 + bool m_bRespawning; // 0x0E40 + bool m_bHasMovedSinceSpawn; // 0x0E41 + int32 m_iNumSpawns; // 0x0E44 + float32 m_flIdleTimeSinceLastAction; // 0x0E4C + float32 m_fNextRadarUpdateTime; // 0x0E50 + float32 m_flFlashDuration; // 0x0E54 + float32 m_flFlashMaxAlpha; // 0x0E58 + float32 m_flProgressBarStartTime; // 0x0E5C + int32 m_iProgressBarDuration; // 0x0E60 + CHandle< CCSPlayerController > m_hOriginalController; // 0x0E64 +}; +class CEnvSoundscapeProxy : public CEnvSoundscape // server +{ + CUtlSymbolLarge m_MainSoundscapeName; // 0x0538 +}; +class CPulseCell_Inflow_EventHandler : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_EventName; // 0x0080 +}; +class CCSPointScriptEntity : public CBaseEntity // server +{ +}; +class CPulseCell_BaseFlow : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class CBombTarget : public CBaseTrigger // server +{ + CEntityIOOutput m_OnBombExplode; // 0x0890 + CEntityIOOutput m_OnBombPlanted; // 0x08A8 + CEntityIOOutput m_OnBombDefused; // 0x08C0 + bool m_bIsBombSiteB; // 0x08D8 + bool m_bIsHeistBombTarget; // 0x08D9 + bool m_bBombPlantedHere; // 0x08DA + CUtlSymbolLarge m_szMountTarget; // 0x08E0 + CHandle< CBaseEntity > m_hInstructorHint; // 0x08E8 + int32 m_nBombSiteDesignation; // 0x08EC +}; +class CRuleEntity : public CBaseModelEntity // server +{ + CUtlSymbolLarge m_iszMaster; // 0x0730 +}; +class CPhysThruster : public CPhysForce // server +{ + Vector m_localOrigin; // 0x0508 +}; +class CInfoPlayerStart : public CPointEntity // server +{ + bool m_bDisabled; // 0x04A8 + bool m_bIsMaster; // 0x04A9 + CGlobalSymbol m_pPawnSubclass; // 0x04B0 +}; +class CEntityFlame : public CBaseEntity // server +{ + CHandle< CBaseEntity > m_hEntAttached; // 0x04A8 + bool m_bCheapEffect; // 0x04AC + float32 m_flSize; // 0x04B0 + bool m_bUseHitboxes; // 0x04B4 + int32 m_iNumHitboxFires; // 0x04B8 + float32 m_flHitboxFireScale; // 0x04BC + GameTime_t m_flLifetime; // 0x04C0 + CHandle< CBaseEntity > m_hAttacker; // 0x04C4 + float32 m_flDirectDamagePerSecond; // 0x04C8 + int32 m_iCustomDamageType; // 0x04CC +}; +class CSkeletonInstance : public CGameSceneNode // server +{ + CModelState m_modelState; // 0x0140 + bool m_bIsAnimationEnabled; // 0x0390 + bool m_bUseParentRenderBounds; // 0x0391 + bool m_bDisableSolidCollisionsForHierarchy; // 0x0392 + bitfield:1 m_bDirtyMotionType; // 0x0000 + bitfield:1 m_bIsGeneratingLatchedParentSpaceState; // 0x0000 + CUtlStringToken m_materialGroup; // 0x0394 + uint8 m_nHitboxSet; // 0x0398 + bool m_bForceServerConstraintsEnabled; // 0x03F4 +}; +class CEntityComponent // entity2 +{ +}; +class CBasePlatTrain : public CBaseToggle // server +{ + CUtlSymbolLarge m_NoiseMoving; // 0x07B0 + CUtlSymbolLarge m_NoiseArrived; // 0x07B8 + float32 m_volume; // 0x07C8 + float32 m_flTWidth; // 0x07CC + float32 m_flTLength; // 0x07D0 +}; +class CPointTeleport : public CServerOnlyPointEntity // server +{ + Vector m_vSaveOrigin; // 0x04A8 + QAngle m_vSaveAngles; // 0x04B4 + bool m_bTeleportParentedEntities; // 0x04C0 + bool m_bTeleportUseCurrentAngle; // 0x04C1 +}; +class CTriggerGameEvent : public CBaseTrigger // server +{ + CUtlString m_strStartTouchEventName; // 0x0890 + CUtlString m_strEndTouchEventName; // 0x0898 + CUtlString m_strTriggerID; // 0x08A0 +}; +class CMessageEntity : public CPointEntity // server +{ + int32 m_radius; // 0x04A8 + CUtlSymbolLarge m_messageText; // 0x04B0 + bool m_drawText; // 0x04B8 + bool m_bDeveloperOnly; // 0x04B9 + bool m_bEnabled; // 0x04BA +}; +class CEnvEntityIgniter : public CBaseEntity // server +{ + float32 m_flLifetime; // 0x04A8 +}; +class CPulseCell_Outflow_CycleShuffled::InstanceState_t // pulse_runtime_lib +{ + CUtlVectorFixedGrowable< uint8, 8 > m_Shuffle; // 0x0000 + int32 m_nNextShuffle; // 0x0020 +}; +class CPulseCell_BaseLerp::CursorState_t // pulse_runtime_lib +{ + GameTime_t m_StartTime; // 0x0000 + GameTime_t m_EndTime; // 0x0004 +}; +class CMarkupVolumeTagged_NavGame : public CMarkupVolumeWithRef // server +{ + NavScopeFlags_t m_nScopes; // 0x0798 + bool m_bFloodFillAttribute; // 0x0799 + bool m_bSplitNavSpace; // 0x079A +}; +class CMultiLightProxy : public CLogicalEntity // server +{ + CUtlSymbolLarge m_iszLightNameFilter; // 0x04A8 + CUtlSymbolLarge m_iszLightClassFilter; // 0x04B0 + float32 m_flLightRadiusFilter; // 0x04B8 + float32 m_flBrightnessDelta; // 0x04BC + bool m_bPerformScreenFade; // 0x04C0 + float32 m_flTargetBrightnessMultiplier; // 0x04C4 + float32 m_flCurrentBrightnessMultiplier; // 0x04C8 + CUtlVector< CHandle< CLightEntity > > m_vecLights; // 0x04D0 +}; +class CWeaponM4A1 : public CCSWeaponBaseGun // server +{ +}; +class CTriggerHostageReset : public CBaseTrigger // server +{ +}; +class CPulseAnimFuncs // server +{ +}; +class CEconWearable : public CEconEntity // server +{ + int32 m_nForceSkin; // 0x0DE0 + bool m_bAlwaysAllow; // 0x0DE4 +}; +class CPulseCell_WaitForCursorsWithTagBase::CursorState_t // pulse_runtime_lib +{ + PulseSymbol_t m_TagName; // 0x0000 +}; +class CPulseArraylib // pulse_runtime_lib +{ +}; +class CWeaponMAC10 : public CCSWeaponBaseGun // server +{ +}; +class CFuncLadder : public CBaseModelEntity // server +{ + Vector m_vecLadderDir; // 0x0730 + CUtlVector< CHandle< CInfoLadderDismount > > m_Dismounts; // 0x0740 + Vector m_vecLocalTop; // 0x0758 + VectorWS m_vecPlayerMountPositionTop; // 0x0764 + VectorWS m_vecPlayerMountPositionBottom; // 0x0770 + float32 m_flAutoRideSpeed; // 0x077C + bool m_bDisabled; // 0x0780 + bool m_bFakeLadder; // 0x0781 + bool m_bHasSlack; // 0x0782 + CUtlSymbolLarge m_surfacePropName; // 0x0788 + CEntityIOOutput m_OnPlayerGotOnLadder; // 0x0790 + CEntityIOOutput m_OnPlayerGotOffLadder; // 0x07A8 +}; +class CFogController : public CBaseEntity // server +{ + fogparams_t m_fog; // 0x04A8 + bool m_bUseAngles; // 0x0510 + int32 m_iChangedVariables; // 0x0514 +}; +class CPointTemplateAPI // server +{ +}; +class CItem : public CBaseAnimGraph // server +{ + CEntityIOOutput m_OnPlayerTouch; // 0x0A28 + CEntityIOOutput m_OnPlayerPickup; // 0x0A40 + bool m_bActivateWhenAtRest; // 0x0A58 + CEntityIOOutput m_OnCacheInteraction; // 0x0A60 + CEntityIOOutput m_OnGlovePulled; // 0x0A78 + VectorWS m_vOriginalSpawnOrigin; // 0x0A90 + QAngle m_vOriginalSpawnAngles; // 0x0A9C + bool m_bPhysStartAsleep; // 0x0AA8 +}; +class CTriggerPush : public CBaseTrigger // server +{ + QAngle m_angPushEntitySpace; // 0x0890 + Vector m_vecPushDirEntitySpace; // 0x089C + bool m_bTriggerOnStartTouch; // 0x08A8 + bool m_bUsePathSimple; // 0x08A9 + CUtlSymbolLarge m_iszPathSimpleName; // 0x08B0 + CPathSimple* m_PathSimple; // 0x08B8 + uint32 m_splinePushType; // 0x08C0 +}; +class CBaseProp : public CBaseAnimGraph // server +{ + bool m_bModelOverrodeBlockLOS; // 0x0A20 + int32 m_iShapeType; // 0x0A24 + bool m_bConformToCollisionBounds; // 0x0A28 + CTransform m_mPreferredCatchTransform; // 0x0A30 +}; +class CInfoOffscreenPanoramaTexture : public CPointEntity // server +{ + bool m_bDisabled; // 0x04A8 + int32 m_nResolutionX; // 0x04AC + int32 m_nResolutionY; // 0x04B0 + CUtlSymbolLarge m_szPanelType; // 0x04B8 + CUtlSymbolLarge m_szLayoutFileName; // 0x04C0 + CUtlSymbolLarge m_RenderAttrName; // 0x04C8 + CNetworkUtlVectorBase< CHandle< CBaseModelEntity > > m_TargetEntities; // 0x04D0 + int32 m_nTargetChangeCount; // 0x04E8 + CNetworkUtlVectorBase< CUtlSymbolLarge > m_vecCSSClasses; // 0x04F0 + CUtlSymbolLarge m_szTargetsName; // 0x0508 + CUtlVector< CHandle< CBaseModelEntity > > m_AdditionalTargetEntities; // 0x0510 +}; +class CPointAngularVelocitySensor : public CPointEntity // server +{ + CHandle< CBaseEntity > m_hTargetEntity; // 0x04A8 + float32 m_flThreshold; // 0x04AC + int32 m_nLastCompareResult; // 0x04B0 + int32 m_nLastFireResult; // 0x04B4 + GameTime_t m_flFireTime; // 0x04B8 + float32 m_flFireInterval; // 0x04BC + float32 m_flLastAngVelocity; // 0x04C0 + QAngle m_lastOrientation; // 0x04C4 + VectorWS m_vecAxis; // 0x04D0 + bool m_bUseHelper; // 0x04DC + CEntityOutputTemplate< float32, float32 > m_AngularVelocity; // 0x04E0 + CEntityIOOutput m_OnLessThan; // 0x0500 + CEntityIOOutput m_OnLessThanOrEqualTo; // 0x0518 + CEntityIOOutput m_OnGreaterThan; // 0x0530 + CEntityIOOutput m_OnGreaterThanOrEqualTo; // 0x0548 + CEntityIOOutput m_OnEqualTo; // 0x0560 +}; +class CPlayerVisibility : public CBaseEntity // server +{ + float32 m_flVisibilityStrength; // 0x04A8 + float32 m_flFogDistanceMultiplier; // 0x04AC + float32 m_flFogMaxDensityMultiplier; // 0x04B0 + float32 m_flFadeTime; // 0x04B4 + bool m_bStartDisabled; // 0x04B8 + bool m_bIsEnabled; // 0x04B9 +}; +class CPulseCell_Step_FollowEntity : public CPulseCell_BaseFlow // server +{ + CUtlString m_ParamBoneOrAttachName; // 0x0048 + CUtlString m_ParamBoneOrAttachNameChild; // 0x0050 +}; +class CFlashbang : public CBaseCSGrenade // server +{ +}; +class CBasePlayerWeapon : public CEconEntity // server +{ + GameTick_t m_nNextPrimaryAttackTick; // 0x0DE0 + float32 m_flNextPrimaryAttackTickRatio; // 0x0DE4 + GameTick_t m_nNextSecondaryAttackTick; // 0x0DE8 + float32 m_flNextSecondaryAttackTickRatio; // 0x0DEC + int32 m_iClip1; // 0x0DF0 + int32 m_iClip2; // 0x0DF4 + int32[2] m_pReserveAmmo; // 0x0DF8 + CEntityIOOutput m_OnPlayerUse; // 0x0E00 +}; +class CCSWeaponBaseVData : public CBasePlayerWeaponVData // server +{ + CSWeaponType m_WeaponType; // 0x0440 + CSWeaponCategory m_WeaponCategory; // 0x0444 + CResourceNameTyped< CWeakHandle< InfoForResourceTypeCNmSkeleton > > m_szAnimSkeleton; // 0x0448 + Vector m_vecMuzzlePos0; // 0x0528 + Vector m_vecMuzzlePos1; // 0x0534 + CResourceNameTyped< CWeakHandle< InfoForResourceTypeIParticleSystemDefinition > > m_szTracerParticle; // 0x0540 + gear_slot_t m_GearSlot; // 0x0620 + int32 m_GearSlotPosition; // 0x0624 + loadout_slot_t m_DefaultLoadoutSlot; // 0x0628 + int32 m_nPrice; // 0x062C + int32 m_nKillAward; // 0x0630 + int32 m_nPrimaryReserveAmmoMax; // 0x0634 + int32 m_nSecondaryReserveAmmoMax; // 0x0638 + bool m_bMeleeWeapon; // 0x063C + bool m_bHasBurstMode; // 0x063D + bool m_bIsRevolver; // 0x063E + bool m_bCannotShootUnderwater; // 0x063F + CGlobalSymbol m_szName; // 0x0640 + CSWeaponSilencerType m_eSilencerType; // 0x0648 + int32 m_nCrosshairMinDistance; // 0x064C + int32 m_nCrosshairDeltaDistance; // 0x0650 + bool m_bIsFullAuto; // 0x0654 + int32 m_nNumBullets; // 0x0658 + bool m_bReloadsSingleShells; // 0x065C + CFiringModeFloat m_flCycleTime; // 0x0660 + CFiringModeFloat m_flMaxSpeed; // 0x0668 + CFiringModeFloat m_flSpread; // 0x0670 + CFiringModeFloat m_flInaccuracyCrouch; // 0x0678 + CFiringModeFloat m_flInaccuracyStand; // 0x0680 + CFiringModeFloat m_flInaccuracyJump; // 0x0688 + CFiringModeFloat m_flInaccuracyLand; // 0x0690 + CFiringModeFloat m_flInaccuracyLadder; // 0x0698 + CFiringModeFloat m_flInaccuracyFire; // 0x06A0 + CFiringModeFloat m_flInaccuracyMove; // 0x06A8 + CFiringModeFloat m_flRecoilAngle; // 0x06B0 + CFiringModeFloat m_flRecoilAngleVariance; // 0x06B8 + CFiringModeFloat m_flRecoilMagnitude; // 0x06C0 + CFiringModeFloat m_flRecoilMagnitudeVariance; // 0x06C8 + CFiringModeInt m_nTracerFrequency; // 0x06D0 + float32 m_flInaccuracyJumpInitial; // 0x06D8 + float32 m_flInaccuracyJumpApex; // 0x06DC + float32 m_flInaccuracyReload; // 0x06E0 + float32 m_flDeployDuration; // 0x06E4 + float32 m_flDisallowAttackAfterReloadStartDuration; // 0x06E8 + int32 m_nBurstShotCount; // 0x06EC + bool m_bAllowBurstHolster; // 0x06F0 + int32 m_nRecoilSeed; // 0x06F4 + int32 m_nSpreadSeed; // 0x06F8 + float32 m_flAttackMovespeedFactor; // 0x06FC + float32 m_flInaccuracyPitchShift; // 0x0700 + float32 m_flInaccuracyAltSoundThreshold; // 0x0704 + CUtlString m_szUseRadioSubtitle; // 0x0708 + bool m_bUnzoomsAfterShot; // 0x0710 + bool m_bHideViewModelWhenZoomed; // 0x0711 + int32 m_nZoomLevels; // 0x0714 + int32 m_nZoomFOV1; // 0x0718 + int32 m_nZoomFOV2; // 0x071C + float32 m_flZoomTime0; // 0x0720 + float32 m_flZoomTime1; // 0x0724 + float32 m_flZoomTime2; // 0x0728 + float32 m_flIronSightPullUpSpeed; // 0x072C + float32 m_flIronSightPutDownSpeed; // 0x0730 + float32 m_flIronSightFOV; // 0x0734 + float32 m_flIronSightPivotForward; // 0x0738 + float32 m_flIronSightLooseness; // 0x073C + int32 m_nDamage; // 0x0740 + float32 m_flHeadshotMultiplier; // 0x0744 + float32 m_flArmorRatio; // 0x0748 + float32 m_flPenetration; // 0x074C + float32 m_flRange; // 0x0750 + float32 m_flRangeModifier; // 0x0754 + float32 m_flFlinchVelocityModifierLarge; // 0x0758 + float32 m_flFlinchVelocityModifierSmall; // 0x075C + float32 m_flRecoveryTimeCrouch; // 0x0760 + float32 m_flRecoveryTimeStand; // 0x0764 + float32 m_flRecoveryTimeCrouchFinal; // 0x0768 + float32 m_flRecoveryTimeStandFinal; // 0x076C + int32 m_nRecoveryTransitionStartBullet; // 0x0770 + int32 m_nRecoveryTransitionEndBullet; // 0x0774 + float32 m_flThrowVelocity; // 0x0778 + Vector m_vSmokeColor; // 0x077C + CGlobalSymbol m_szAnimClass; // 0x0788 +}; +class CPhysForce : public CPointEntity // server +{ + CUtlSymbolLarge m_nameAttach; // 0x04B0 + float32 m_force; // 0x04B8 + float32 m_forceTime; // 0x04BC + CHandle< CBaseEntity > m_attachedObject; // 0x04C0 + bool m_wasRestored; // 0x04C4 + CConstantForceController m_integrator; // 0x04C8 +}; +class CAttributeManager // server +{ + CUtlVector< CHandle< CBaseEntity > > m_Providers; // 0x0008 + int32 m_iReapplyProvisionParity; // 0x0020 + CHandle< CBaseEntity > m_hOuter; // 0x0024 + bool m_bPreventLoopback; // 0x0028 + attributeprovidertypes_t m_ProviderType; // 0x002C + CUtlVector< CAttributeManager::cached_attribute_float_t > m_CachedResults; // 0x0030 +}; +class SignatureOutflow_Continue : public CPulse_OutflowConnection // pulse_runtime_lib +{ +}; +class CInfoTarget : public CPointEntity // server +{ +}; +class CPlayer_CameraServices : public CPlayerPawnComponent // server +{ + QAngle m_vecCsViewPunchAngle; // 0x0048 + GameTick_t m_nCsViewPunchAngleTick; // 0x0054 + float32 m_flCsViewPunchAngleTickRatio; // 0x0058 + fogplayerparams_t m_PlayerFog; // 0x0060 + CHandle< CColorCorrection > m_hColorCorrectionCtrl; // 0x00A0 + CHandle< CBaseEntity > m_hViewEntity; // 0x00A4 + CHandle< CTonemapController2 > m_hTonemapController; // 0x00A8 + audioparams_t m_audio; // 0x00B0 + CNetworkUtlVectorBase< CHandle< CPostProcessingVolume > > m_PostProcessingVolumes; // 0x0128 + float32 m_flOldPlayerZ; // 0x0140 + float32 m_flOldPlayerViewOffsetZ; // 0x0144 + CUtlVector< CHandle< CEnvSoundscapeTriggerable > > m_hTriggerSoundscapeList; // 0x0160 +}; +class CPulseCell_Timeline : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CUtlVector< CPulseCell_Timeline::TimelineEvent_t > m_TimelineEvents; // 0x0048 + bool m_bWaitForChildOutflows; // 0x0060 + CPulse_ResumePoint m_OnFinished; // 0x0068 + CPulse_ResumePoint m_OnCanceled; // 0x00B0 +}; +class CPulseCell_Inflow_EntOutputHandler : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_SourceEntity; // 0x0080 + PulseSymbol_t m_SourceOutput; // 0x0090 + CPulseValueFullType m_ExpectedParamType; // 0x00A0 +}; +class CScenePayloadVData // server +{ + CResourceNameTyped< CWeakHandle< InfoForResourceTypeCChoreoSceneResource > > m_sSceneFile; // 0x0000 +}; +class CPulseFuncs_GameParticleManager // server +{ +}; +class CFilterAttributeInt : public CBaseFilter // server +{ + CUtlSymbolLarge m_sAttributeName; // 0x04E0 +}; +class CKeepUpright : public CPointEntity // server +{ + Vector m_worldGoalAxis; // 0x04B0 + Vector m_localTestAxis; // 0x04BC + CUtlSymbolLarge m_nameAttach; // 0x04D0 + CHandle< CBaseEntity > m_attachedObject; // 0x04D8 + float32 m_angularLimit; // 0x04DC + bool m_bActive; // 0x04E0 + bool m_bDampAllRotation; // 0x04E1 +}; +class CPointTemplate : public CLogicalEntity // server +{ + CUtlSymbolLarge m_iszWorldName; // 0x04A8 + CUtlSymbolLarge m_iszSource2EntityLumpName; // 0x04B0 + CUtlSymbolLarge m_iszEntityFilterName; // 0x04B8 + float32 m_flTimeoutInterval; // 0x04C0 + bool m_bAsynchronouslySpawnEntities; // 0x04C4 + PointTemplateClientOnlyEntityBehavior_t m_clientOnlyEntityBehavior; // 0x04C8 + PointTemplateOwnerSpawnGroupType_t m_ownerSpawnGroupType; // 0x04CC + CUtlVector< uint32 > m_createdSpawnGroupHandles; // 0x04D0 + CUtlVector< CEntityHandle > m_SpawnedEntityHandles; // 0x04E8 + HSCRIPT m_ScriptSpawnCallback; // 0x0500 + HSCRIPT m_ScriptCallbackScope; // 0x0508 +}; +class CEnvVolumetricFogController : public CBaseEntity // server +{ + float32 m_flScattering; // 0x04A8 + Color m_TintColor; // 0x04AC + float32 m_flAnisotropy; // 0x04B0 + float32 m_flFadeSpeed; // 0x04B4 + float32 m_flDrawDistance; // 0x04B8 + float32 m_flFadeInStart; // 0x04BC + float32 m_flFadeInEnd; // 0x04C0 + float32 m_flIndirectStrength; // 0x04C4 + int32 m_nVolumeDepth; // 0x04C8 + float32 m_fFirstVolumeSliceThickness; // 0x04CC + int32 m_nIndirectTextureDimX; // 0x04D0 + int32 m_nIndirectTextureDimY; // 0x04D4 + int32 m_nIndirectTextureDimZ; // 0x04D8 + Vector m_vBoxMins; // 0x04DC + Vector m_vBoxMaxs; // 0x04E8 + bool m_bActive; // 0x04F4 + GameTime_t m_flStartAnisoTime; // 0x04F8 + GameTime_t m_flStartScatterTime; // 0x04FC + GameTime_t m_flStartDrawDistanceTime; // 0x0500 + float32 m_flStartAnisotropy; // 0x0504 + float32 m_flStartScattering; // 0x0508 + float32 m_flStartDrawDistance; // 0x050C + float32 m_flDefaultAnisotropy; // 0x0510 + float32 m_flDefaultScattering; // 0x0514 + float32 m_flDefaultDrawDistance; // 0x0518 + bool m_bStartDisabled; // 0x051C + bool m_bEnableIndirect; // 0x051D + bool m_bIsMaster; // 0x051E + CStrongHandle< InfoForResourceTypeCTextureBase > m_hFogIndirectTexture; // 0x0520 + int32 m_nForceRefreshCount; // 0x0528 + float32 m_fNoiseSpeed; // 0x052C + float32 m_fNoiseStrength; // 0x0530 + Vector m_vNoiseScale; // 0x0534 + float32 m_fWindSpeed; // 0x0540 + Vector m_vWindDirection; // 0x0544 + bool m_bFirstTime; // 0x0550 +}; +class CBot // server +{ + CCSPlayerController* m_pController; // 0x0010 + CCSPlayerPawn* m_pPlayer; // 0x0018 + bool m_bHasSpawned; // 0x0020 + uint32 m_id; // 0x0024 + bool m_isRunning; // 0x00C0 + bool m_isCrouching; // 0x00C1 + float32 m_forwardSpeed; // 0x00C4 + float32 m_leftSpeed; // 0x00C8 + float32 m_verticalSpeed; // 0x00CC + uint64 m_buttonFlags; // 0x00D0 + float32 m_jumpTimestamp; // 0x00D8 + Vector m_viewForward; // 0x00DC + int32 m_postureStackIndex; // 0x00F8 +}; +class CPulseCell_Step_SetAnimGraphParam : public CPulseCell_BaseFlow // server +{ + CUtlString m_ParamName; // 0x0048 +}; +class CPlayer_FlashlightServices : public CPlayerPawnComponent // server +{ +}; +class CCSPlayerController : public CBasePlayerController // server +{ + CCSPlayerController_InGameMoneyServices* m_pInGameMoneyServices; // 0x07D8 + CCSPlayerController_InventoryServices* m_pInventoryServices; // 0x07E0 + CCSPlayerController_ActionTrackingServices* m_pActionTrackingServices; // 0x07E8 + CCSPlayerController_DamageServices* m_pDamageServices; // 0x07F0 + uint32 m_iPing; // 0x07F8 + bool m_bHasCommunicationAbuseMute; // 0x07FC + uint32 m_uiCommunicationMuteFlags; // 0x0800 + CUtlSymbolLarge m_szCrosshairCodes; // 0x0808 + uint8 m_iPendingTeamNum; // 0x0810 + GameTime_t m_flForceTeamTime; // 0x0814 + int32 m_iCompTeammateColor; // 0x0818 + bool m_bEverPlayedOnTeam; // 0x081C + bool m_bAttemptedToGetColor; // 0x081D + int32 m_iTeammatePreferredColor; // 0x0820 + bool m_bTeamChanged; // 0x0824 + bool m_bInSwitchTeam; // 0x0825 + bool m_bHasSeenJoinGame; // 0x0826 + bool m_bJustBecameSpectator; // 0x0827 + bool m_bSwitchTeamsOnNextRoundReset; // 0x0828 + bool m_bRemoveAllItemsOnNextRoundReset; // 0x0829 + GameTime_t m_flLastJoinTeamTime; // 0x082C + CUtlSymbolLarge m_szClan; // 0x0830 + int32 m_iCoachingTeam; // 0x0838 + uint64 m_nPlayerDominated; // 0x0840 + uint64 m_nPlayerDominatingMe; // 0x0848 + int32 m_iCompetitiveRanking; // 0x0850 + int32 m_iCompetitiveWins; // 0x0854 + int8 m_iCompetitiveRankType; // 0x0858 + int32 m_iCompetitiveRankingPredicted_Win; // 0x085C + int32 m_iCompetitiveRankingPredicted_Loss; // 0x0860 + int32 m_iCompetitiveRankingPredicted_Tie; // 0x0864 + int32 m_nEndMatchNextMapVote; // 0x0868 + uint16 m_unActiveQuestId; // 0x086C + uint32 m_rtActiveMissionPeriod; // 0x0870 + QuestProgress::Reason m_nQuestProgressReason; // 0x0874 + uint32 m_unPlayerTvControlFlags; // 0x0878 + int32 m_iDraftIndex; // 0x08A8 + uint32 m_msQueuedModeDisconnectionTimestamp; // 0x08AC + uint32 m_uiAbandonRecordedReason; // 0x08B0 + uint32 m_eNetworkDisconnectionReason; // 0x08B4 + bool m_bCannotBeKicked; // 0x08B8 + bool m_bEverFullyConnected; // 0x08B9 + bool m_bAbandonAllowsSurrender; // 0x08BA + bool m_bAbandonOffersInstantSurrender; // 0x08BB + bool m_bDisconnection1MinWarningPrinted; // 0x08BC + bool m_bScoreReported; // 0x08BD + int32 m_nDisconnectionTick; // 0x08C0 + bool m_bControllingBot; // 0x08D0 + bool m_bHasControlledBotThisRound; // 0x08D1 + bool m_bHasBeenControlledByPlayerThisRound; // 0x08D2 + int32 m_nBotsControlledThisRound; // 0x08D4 + bool m_bCanControlObservedBot; // 0x08D8 + CHandle< CCSPlayerPawn > m_hPlayerPawn; // 0x08DC + CHandle< CCSObserverPawn > m_hObserverPawn; // 0x08E0 + int32 m_DesiredObserverMode; // 0x08E4 + CEntityHandle m_hDesiredObserverTarget; // 0x08E8 + bool m_bPawnIsAlive; // 0x08EC + uint32 m_iPawnHealth; // 0x08F0 + int32 m_iPawnArmor; // 0x08F4 + bool m_bPawnHasDefuser; // 0x08F8 + bool m_bPawnHasHelmet; // 0x08F9 + uint16 m_nPawnCharacterDefIndex; // 0x08FA + int32 m_iPawnLifetimeStart; // 0x08FC + int32 m_iPawnLifetimeEnd; // 0x0900 + int32 m_iPawnBotDifficulty; // 0x0904 + CHandle< CCSPlayerController > m_hOriginalControllerOfCurrentPawn; // 0x0908 + int32 m_iScore; // 0x090C + int32 m_iRoundScore; // 0x0910 + int32 m_iRoundsWon; // 0x0914 + uint8[8] m_recentKillQueue; // 0x0918 + uint8 m_nFirstKill; // 0x0920 + uint8 m_nKillCount; // 0x0921 + bool m_bMvpNoMusic; // 0x0922 + int32 m_eMvpReason; // 0x0924 + int32 m_iMusicKitID; // 0x0928 + int32 m_iMusicKitMVPs; // 0x092C + int32 m_iMVPs; // 0x0930 + int32 m_nUpdateCounter; // 0x0934 + float32 m_flSmoothedPing; // 0x0938 + IntervalTimer m_lastHeldVoteTimer; // 0x0940 + bool m_bShowHints; // 0x0958 + int32 m_iNextTimeCheck; // 0x095C + bool m_bJustDidTeamKill; // 0x0960 + bool m_bPunishForTeamKill; // 0x0961 + bool m_bGaveTeamDamageWarning; // 0x0962 + bool m_bGaveTeamDamageWarningThisRound; // 0x0963 + float64 m_dblLastReceivedPacketPlatFloatTime; // 0x0968 + GameTime_t m_LastTeamDamageWarningTime; // 0x0970 + GameTime_t m_LastTimePlayerWasDisconnectedForPawnsRemove; // 0x0974 + uint32 m_nSuspiciousHitCount; // 0x0978 + uint32 m_nNonSuspiciousHitStreak; // 0x097C + bool m_bFireBulletsSeedSynchronized; // 0x0A21 +}; +class CPhysLength : public CPhysConstraint // server +{ + Vector[2] m_offset; // 0x0508 + VectorWS m_vecAttach; // 0x0520 + float32 m_addLength; // 0x052C + float32 m_minLength; // 0x0530 + float32 m_totalLength; // 0x0534 +}; +class CTeam : public CBaseEntity // server +{ + CNetworkUtlVectorBase< CHandle< CBasePlayerController > > m_aPlayerControllers; // 0x04A8 + CNetworkUtlVectorBase< CHandle< CBasePlayerPawn > > m_aPlayers; // 0x04C0 + int32 m_iScore; // 0x04D8 + char[129] m_szTeamname; // 0x04DC +}; +class CLogicNPCCounterAABB : public CLogicNPCCounter // server +{ + Vector m_vDistanceOuterMins; // 0x0728 + Vector m_vDistanceOuterMaxs; // 0x0734 + Vector m_vOuterMins; // 0x0740 + Vector m_vOuterMaxs; // 0x074C +}; +class CPulseCell_Outflow_CycleOrdered::InstanceState_t // pulse_runtime_lib +{ + int32 m_nNextIndex; // 0x0000 +}; +class CChicken : public CDynamicProp // server +{ + CAttributeContainer m_AttributeManager; // 0x0C70 + CountdownTimer m_updateTimer; // 0x0F68 + Vector m_stuckAnchor; // 0x0F80 + CountdownTimer m_stuckTimer; // 0x0F90 + CountdownTimer m_collisionStuckTimer; // 0x0FA8 + bool m_isOnGround; // 0x0FC0 + Vector m_vFallVelocity; // 0x0FC4 + ChickenActivity m_desiredActivity; // 0x0FD0 + ChickenActivity m_currentActivity; // 0x0FD4 + CountdownTimer m_activityTimer; // 0x0FD8 + float32 m_turnRate; // 0x0FF0 + CHandle< CBaseEntity > m_fleeFrom; // 0x0FF4 + CountdownTimer m_moveRateThrottleTimer; // 0x0FF8 + CountdownTimer m_startleTimer; // 0x1010 + CountdownTimer m_vocalizeTimer; // 0x1028 + GameTime_t m_flWhenZombified; // 0x1040 + bool m_jumpedThisFrame; // 0x1044 + CHandle< CCSPlayerPawn > m_leader; // 0x1048 + CountdownTimer m_reuseTimer; // 0x1060 + bool m_hasBeenUsed; // 0x1078 + CountdownTimer m_jumpTimer; // 0x1080 + float32 m_flLastJumpTime; // 0x1098 + bool m_bInJump; // 0x109C + CountdownTimer m_repathTimer; // 0x30A8 + Vector m_vecPathGoal; // 0x3140 + GameTime_t m_flActiveFollowStartTime; // 0x314C + CountdownTimer m_followMinuteTimer; // 0x3150 + CountdownTimer m_BlockDirectionTimer; // 0x3170 +}; +class CPhysicsPropRespawnable : public CPhysicsProp // server +{ + VectorWS m_vOriginalSpawnOrigin; // 0x0CE0 + QAngle m_vOriginalSpawnAngles; // 0x0CEC + Vector m_vOriginalMins; // 0x0CF8 + Vector m_vOriginalMaxs; // 0x0D04 + float32 m_flRespawnDuration; // 0x0D10 +}; +class CEnvBeam : public CBeam // server +{ + int32 m_active; // 0x07D0 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_spriteTexture; // 0x07D8 + CUtlSymbolLarge m_iszStartEntity; // 0x07E0 + CUtlSymbolLarge m_iszEndEntity; // 0x07E8 + float32 m_life; // 0x07F0 + float32 m_boltWidth; // 0x07F4 + float32 m_noiseAmplitude; // 0x07F8 + int32 m_speed; // 0x07FC + float32 m_restrike; // 0x0800 + CUtlSymbolLarge m_iszSpriteName; // 0x0808 + int32 m_frameStart; // 0x0810 + VectorWS m_vEndPointWorld; // 0x0814 + Vector m_vEndPointRelative; // 0x0820 + float32 m_radius; // 0x082C + Touch_t m_TouchType; // 0x0830 + CUtlSymbolLarge m_iFilterName; // 0x0838 + CHandle< CBaseEntity > m_hFilter; // 0x0840 + CUtlSymbolLarge m_iszDecal; // 0x0848 + CEntityIOOutput m_OnTouchedByEntity; // 0x0850 +}; +class CLightSpotEntity : public CLightEntity // server +{ +}; +class CWeaponSawedoff : public CCSWeaponBaseShotgun // server +{ +}; +class CTonemapTrigger : public CBaseTrigger // server +{ + CUtlSymbolLarge m_tonemapControllerName; // 0x0890 + CEntityHandle m_hTonemapController; // 0x0898 +}; +class CEnvShake : public CPointEntity // server +{ + CUtlSymbolLarge m_limitToEntity; // 0x04A8 + float32 m_Amplitude; // 0x04B0 + float32 m_Frequency; // 0x04B4 + float32 m_Duration; // 0x04B8 + float32 m_Radius; // 0x04BC + GameTime_t m_stopTime; // 0x04C0 + GameTime_t m_nextShake; // 0x04C4 + float32 m_currentAmp; // 0x04C8 + Vector m_maxForce; // 0x04CC + CPhysicsShake m_shakeCallback; // 0x04E0 +}; +class CCSPlayer_MovementServices : public CPlayer_MovementServices_Humanoid // server +{ + Vector m_vecLadderNormal; // 0x0278 + int32 m_nLadderSurfacePropIndex; // 0x0284 + bool m_bDucked; // 0x0288 + float32 m_flDuckAmount; // 0x028C + float32 m_flDuckSpeed; // 0x0290 + bool m_bDuckOverride; // 0x0294 + bool m_bDesiresDuck; // 0x0295 + bool m_bDucking; // 0x0296 + float32 m_flDuckOffset; // 0x0298 + uint32 m_nDuckTimeMsecs; // 0x029C + uint32 m_nDuckJumpTimeMsecs; // 0x02A0 + uint32 m_nJumpTimeMsecs; // 0x02A4 + float32 m_flLastDuckTime; // 0x02A8 + Vector2D m_vecLastPositionAtFullCrouchSpeed; // 0x02B8 + bool m_duckUntilOnGround; // 0x02C0 + bool m_bHasWalkMovedSinceLastJump; // 0x02C1 + bool m_bInStuckTest; // 0x02C2 + int32 m_nTraceCount; // 0x04D0 + int32 m_StuckLast; // 0x04D4 + bool m_bSpeedCropped; // 0x04D8 + int32 m_nOldWaterLevel; // 0x04DC + float32 m_flWaterEntryTime; // 0x04E0 + Vector m_vecForward; // 0x04E4 + Vector m_vecLeft; // 0x04F0 + Vector m_vecUp; // 0x04FC + int32 m_nGameCodeHasMovedPlayerAfterCommand; // 0x0508 + bool m_bMadeFootstepNoise; // 0x050C + int32 m_iFootsteps; // 0x0510 + GameTime_t m_fStashGrenadeParameterWhen; // 0x0514 + uint64 m_nButtonDownMaskPrev; // 0x0518 + float32 m_flOffsetTickCompleteTime; // 0x0520 + float32 m_flOffsetTickStashedSpeed; // 0x0524 + float32 m_flStamina; // 0x0528 + float32 m_flHeightAtJumpStart; // 0x052C + float32 m_flMaxJumpHeightThisJump; // 0x0530 + float32 m_flMaxJumpHeightLastJump; // 0x0534 + float32 m_flStaminaAtJumpStart; // 0x0538 + float32 m_flVelMulAtJumpStart; // 0x053C + float32 m_flAccumulatedJumpError; // 0x0540 + CCSPlayerLegacyJump m_LegacyJump; // 0x0548 + CCSPlayerModernJump m_ModernJump; // 0x0560 + GameTick_t m_nLastJumpTick; // 0x0590 + float32 m_flLastJumpFrac; // 0x0594 + float32 m_flLastJumpVelocityZ; // 0x0598 + bool m_bJumpApexPending; // 0x059C + float32 m_flTicksSinceLastSurfingDetected; // 0x05A0 + bool m_bWasSurfing; // 0x05A4 + Vector m_vecInputRotated; // 0x0634 +}; +class SellbackPurchaseEntry_t // server +{ + uint16 m_unDefIdx; // 0x0030 + int32 m_nCost; // 0x0034 + int32 m_nPrevArmor; // 0x0038 + bool m_bPrevHelmet; // 0x003C + CEntityHandle m_hItem; // 0x0040 +}; +class CTriggerCallback : public CBaseTrigger // server +{ +}; +class CSoundOpvarSetAutoRoomEntity : public CSoundOpvarSetPointEntity // server +{ + CUtlVector< SoundOpvarTraceResult_t > m_traceResults; // 0x0640 + CUtlVector< AutoRoomDoorwayPairs_t > m_doorwayPairs; // 0x0658 + float32 m_flSize; // 0x0670 + float32 m_flHeightTolerance; // 0x0674 + float32 m_flSizeSqr; // 0x0678 +}; +class CPulseCell_Outflow_ListenForEntityOutput : public CPulseCell_BaseYieldingInflow // server +{ + SignatureOutflow_Resume m_OnFired; // 0x0048 + CPulse_ResumePoint m_OnCanceled; // 0x0090 + CGlobalSymbol m_strEntityOutput; // 0x00D8 + CUtlString m_strEntityOutputParam; // 0x00E0 + bool m_bListenUntilCanceled; // 0x00E8 +}; +class CPushable : public CBreakable // server +{ +}; +class CRotatorTarget : public CPointEntity // server +{ + CEntityIOOutput m_OnArrivedAt; // 0x04A8 + RotatorTargetSpace_t m_eSpace; // 0x04C0 +}; +class CPhysicsEntitySolver : public CLogicalEntity // server +{ + CHandle< CBaseEntity > m_hMovingEntity; // 0x04C0 + CHandle< CBaseEntity > m_hPhysicsBlocker; // 0x04C4 + float32 m_separationDuration; // 0x04C8 + GameTime_t m_cancelTime; // 0x04CC +}; +class CLogicCollisionPair : public CLogicalEntity // server +{ + CUtlSymbolLarge m_nameAttach1; // 0x04A8 + CUtlSymbolLarge m_nameAttach2; // 0x04B0 + bool m_includeHierarchy; // 0x04B8 + bool m_supportMultipleEntitiesWithSameName; // 0x04B9 + bool m_disabled; // 0x04BA + bool m_succeeded; // 0x04BB +}; +class CTestEffect : public CBaseEntity // server +{ + int32 m_iLoop; // 0x04A8 + int32 m_iBeam; // 0x04AC + CHandle< CBeam >[24] m_pBeam; // 0x04B0 + GameTime_t[24] m_flBeamTime; // 0x0510 + GameTime_t m_flStartTime; // 0x0570 +}; +class CPulseCell_Outflow_ScriptedSequence::CursorState_t // server +{ + CHandle< CBaseEntity > m_scriptedSequence; // 0x0000 +}; +class CPropDoorRotating : public CBasePropDoor // server +{ + Vector m_vecAxis; // 0x0E50 + float32 m_flDistance; // 0x0E5C + PropDoorRotatingSpawnPos_t m_eSpawnPosition; // 0x0E60 + PropDoorRotatingOpenDirection_e m_eOpenDirection; // 0x0E64 + PropDoorRotatingOpenDirection_e m_eCurrentOpenDirection; // 0x0E68 + doorCheck_e m_eDefaultCheckDirection; // 0x0E6C + float32 m_flAjarAngle; // 0x0E70 + QAngle m_angRotationAjarDeprecated; // 0x0E74 + QAngle m_angRotationClosed; // 0x0E80 + QAngle m_angRotationOpenForward; // 0x0E8C + QAngle m_angRotationOpenBack; // 0x0E98 + QAngle m_angGoal; // 0x0EA4 + Vector m_vecForwardBoundsMin; // 0x0EB0 + Vector m_vecForwardBoundsMax; // 0x0EBC + Vector m_vecBackBoundsMin; // 0x0EC8 + Vector m_vecBackBoundsMax; // 0x0ED4 + bool m_bAjarDoorShouldntAlwaysOpen; // 0x0EE0 + CHandle< CEntityBlocker > m_hEntityBlocker; // 0x0EE4 +}; +class CEnvParticleGlow : public CParticleSystem // server +{ + float32 m_flAlphaScale; // 0x0CA8 + float32 m_flRadiusScale; // 0x0CAC + float32 m_flSelfIllumScale; // 0x0CB0 + Color m_ColorTint; // 0x0CB4 + CStrongHandle< InfoForResourceTypeCTextureBase > m_hTextureOverride; // 0x0CB8 +}; +class CMathRemap : public CLogicalEntity // server +{ + float32 m_flInMin; // 0x04A8 + float32 m_flInMax; // 0x04AC + float32 m_flOut1; // 0x04B0 + float32 m_flOut2; // 0x04B4 + float32 m_flOldInValue; // 0x04B8 + bool m_bEnabled; // 0x04BC + CEntityOutputTemplate< float32, float32 > m_OutValue; // 0x04C0 + CEntityIOOutput m_OnRoseAboveMin; // 0x04E0 + CEntityIOOutput m_OnRoseAboveMax; // 0x04F8 + CEntityIOOutput m_OnFellBelowMin; // 0x0510 + CEntityIOOutput m_OnFellBelowMax; // 0x0528 +}; +class CSoundOpvarSetOBBWindEntity : public CSoundOpvarSetPointBase // server +{ + Vector m_vMins; // 0x0550 + Vector m_vMaxs; // 0x055C + Vector m_vDistanceMins; // 0x0568 + Vector m_vDistanceMaxs; // 0x0574 + float32 m_flWindMin; // 0x0580 + float32 m_flWindMax; // 0x0584 + float32 m_flWindMapMin; // 0x0588 + float32 m_flWindMapMax; // 0x058C +}; +class PhysicsRagdollPose_t // server +{ + CNetworkUtlVectorBase< CTransform > m_Transforms; // 0x0008 + CHandle< CBaseEntity > m_hOwner; // 0x0020 + bool m_bSetFromDebugHistory; // 0x0024 +}; +class CPropDataComponent : public CEntityComponent // server +{ + float32 m_flDmgModBullet; // 0x0010 + float32 m_flDmgModClub; // 0x0014 + float32 m_flDmgModExplosive; // 0x0018 + float32 m_flDmgModFire; // 0x001C + CUtlSymbolLarge m_iszPhysicsDamageTableName; // 0x0020 + CUtlSymbolLarge m_iszBasePropData; // 0x0028 + int32 m_nInteractions; // 0x0030 + bool m_bSpawnMotionDisabled; // 0x0034 + int32 m_nDisableTakePhysicsDamageSpawnFlag; // 0x0038 + int32 m_nMotionDisabledSpawnFlag; // 0x003C +}; +class CScriptTriggerOnce : public CTriggerOnce // server +{ + Vector m_vExtent; // 0x08A8 +}; +class CLightOrthoEntity : public CLightEntity // server +{ +}; +class CInfoInstructorHintHostageRescueZone : public CPointEntity // server +{ +}; +class CPulseCell_LimitCount::InstanceState_t // pulse_runtime_lib +{ + int32 m_nCurrentCount; // 0x0000 +}; +class CTriggerTeleport : public CBaseTrigger // server +{ + CUtlSymbolLarge m_iLandmark; // 0x0890 + bool m_bUseLandmarkAngles; // 0x0898 + bool m_bMirrorPlayer; // 0x0899 + bool m_bCheckDestIfClearForPlayer; // 0x089A +}; +class CFuncWall : public CBaseModelEntity // server +{ + int32 m_nState; // 0x0730 +}; +class CBtActionAim : public CBtNode // server +{ + CUtlString m_szSensorInputKey; // 0x0068 + CUtlString m_szAimReadyKey; // 0x0080 + float32 m_flZoomCooldownTimestamp; // 0x0088 + bool m_bDoneAiming; // 0x008C + float32 m_flLerpStartTime; // 0x0090 + float32 m_flNextLookTargetLerpTime; // 0x0094 + float32 m_flPenaltyReductionRatio; // 0x0098 + QAngle m_NextLookTarget; // 0x009C + CountdownTimer m_AimTimer; // 0x00A8 + CountdownTimer m_SniperHoldTimer; // 0x00C0 + CountdownTimer m_FocusIntervalTimer; // 0x00D8 + bool m_bAcquired; // 0x00F0 +}; +class CCSGO_TeamPreviewCharacterPosition : public CBaseEntity // server +{ + int32 m_nVariant; // 0x04A8 + int32 m_nRandom; // 0x04AC + int32 m_nOrdinal; // 0x04B0 + CUtlString m_sWeaponName; // 0x04B8 + uint64 m_xuid; // 0x04C0 + CEconItemView m_agentItem; // 0x04C8 + CEconItemView m_glovesItem; // 0x0770 + CEconItemView m_weaponItem; // 0x0A18 +}; +class CGameRulesProxy : public CBaseEntity // server +{ +}; +class CInfoLadderDismount : public CBaseEntity // server +{ +}; +class CPulseServerFuncs // server +{ +}; +class CMessage : public CPointEntity // server +{ + CUtlSymbolLarge m_iszMessage; // 0x04A8 + float32 m_MessageVolume; // 0x04B0 + int32 m_MessageAttenuation; // 0x04B4 + float32 m_Radius; // 0x04B8 + CUtlSymbolLarge m_sNoise; // 0x04C0 + CEntityIOOutput m_OnShowMessage; // 0x04C8 +}; +class CPointVelocitySensor : public CPointEntity // server +{ + CHandle< CBaseEntity > m_hTargetEntity; // 0x04A8 + Vector m_vecAxis; // 0x04AC + bool m_bEnabled; // 0x04B8 + float32 m_fPrevVelocity; // 0x04BC + float32 m_flAvgInterval; // 0x04C0 + CEntityOutputTemplate< float32, float32 > m_Velocity; // 0x04C8 +}; +class EngineCountdownTimer // server +{ + float32 m_duration; // 0x0008 + float32 m_timestamp; // 0x000C + float32 m_timescale; // 0x0010 +}; +class CBaseModelEntityAPI // server +{ +}; +class CHostage : public CHostageExpresserShim // server +{ + CEntityIOOutput m_OnHostageBeginGrab; // 0x0B98 + CEntityIOOutput m_OnFirstPickedUp; // 0x0BB0 + CEntityIOOutput m_OnDroppedNotRescued; // 0x0BC8 + CEntityIOOutput m_OnRescued; // 0x0BE0 + EntitySpottedState_t m_entitySpottedState; // 0x0BF8 + int32 m_nSpotRules; // 0x0C10 + uint32 m_uiHostageSpawnExclusionGroupMask; // 0x0C14 + uint32 m_nHostageSpawnRandomFactor; // 0x0C18 + bool m_bRemove; // 0x0C1C + Vector m_vel; // 0x0C20 + bool m_isRescued; // 0x0C2C + bool m_jumpedThisFrame; // 0x0C2D + int32 m_nHostageState; // 0x0C30 + CHandle< CBaseEntity > m_leader; // 0x0C34 + CHandle< CCSPlayerPawnBase > m_lastLeader; // 0x0C38 + CountdownTimer m_reuseTimer; // 0x0C40 + bool m_hasBeenUsed; // 0x0C58 + Vector m_accel; // 0x0C5C + bool m_isRunning; // 0x0C68 + bool m_isCrouching; // 0x0C69 + CountdownTimer m_jumpTimer; // 0x0C70 + bool m_isWaitingForLeader; // 0x0C88 + CountdownTimer m_repathTimer; // 0x2C98 + CountdownTimer m_inhibitDoorTimer; // 0x2CB0 + CountdownTimer m_inhibitObstacleAvoidanceTimer; // 0x2D40 + CountdownTimer m_wiggleTimer; // 0x2D60 + bool m_isAdjusted; // 0x2D7C + bool m_bHandsHaveBeenCut; // 0x2D7D + CHandle< CCSPlayerPawn > m_hHostageGrabber; // 0x2D80 + GameTime_t m_fLastGrabTime; // 0x2D84 + Vector m_vecPositionWhenStartedDroppingToGround; // 0x2D88 + Vector m_vecGrabbedPos; // 0x2D94 + GameTime_t m_flRescueStartTime; // 0x2DA0 + GameTime_t m_flGrabSuccessTime; // 0x2DA4 + GameTime_t m_flDropStartTime; // 0x2DA8 + int32 m_nApproachRewardPayouts; // 0x2DAC + int32 m_nPickupEventCount; // 0x2DB0 + Vector m_vecSpawnGroundPos; // 0x2DB4 + VectorWS m_vecHostageResetPosition; // 0x2DEC +}; +class CScriptTriggerMultiple : public CTriggerMultiple // server +{ + Vector m_vExtent; // 0x08A8 +}; +class CEnvSpark : public CPointEntity // server +{ + float32 m_flDelay; // 0x04A8 + int32 m_nMagnitude; // 0x04AC + int32 m_nTrailLength; // 0x04B0 + int32 m_nType; // 0x04B4 + CEntityIOOutput m_OnSpark; // 0x04B8 +}; +class CCSPlayerController_DamageServices : public CPlayerControllerComponent // server +{ + int32 m_nSendUpdate; // 0x0040 + CUtlVectorEmbeddedNetworkVar< CDamageRecord > m_DamageList; // 0x0048 +}; +class CFilterLOS : public CBaseFilter // server +{ +}; +class CPointOrient : public CBaseEntity // server +{ + CUtlSymbolLarge m_iszSpawnTargetName; // 0x04A8 + CHandle< CBaseEntity > m_hTarget; // 0x04B0 + bool m_bActive; // 0x04B4 + PointOrientGoalDirectionType_t m_nGoalDirection; // 0x04B8 + PointOrientConstraint_t m_nConstraint; // 0x04BC + float32 m_flMaxTurnRate; // 0x04C0 + GameTime_t m_flLastGameTime; // 0x04C4 +}; +class sky3dparams_t // server +{ + int16 scale; // 0x0008 + Vector origin; // 0x000C + bool bClip3DSkyBoxNearToWorldFar; // 0x0018 + float32 flClip3DSkyBoxNearToWorldFarOffset; // 0x001C + fogparams_t fog; // 0x0020 + WorldGroupId_t m_nWorldGroupID; // 0x0088 +}; +class CWeaponP250 : public CCSWeaponBaseGun // server +{ +}; +class CDestructiblePartsComponent // server +{ + CNetworkVarChainer __m_pChainEntity; // 0x0000 + CUtlVector< uint16 > m_vecDamageTakenByHitGroup; // 0x0048 + CHandle< CBaseModelEntity > m_hOwner; // 0x0060 +}; +class CChangeLevel : public CBaseTrigger // server +{ + CUtlString m_sMapName; // 0x0890 + CUtlString m_sLandmarkName; // 0x0898 + CEntityIOOutput m_OnChangeLevel; // 0x08A0 + bool m_bTouched; // 0x08B8 + bool m_bNoTouch; // 0x08B9 + bool m_bNewChapter; // 0x08BA + bool m_bOnChangeLevelFired; // 0x08BB +}; +class CBaseButton : public CBaseToggle // server +{ + QAngle m_angMoveEntitySpace; // 0x07B0 + bool m_fStayPushed; // 0x07BC + bool m_fRotating; // 0x07BD + locksound_t m_ls; // 0x07C0 + CUtlSymbolLarge m_sUseSound; // 0x07E0 + CUtlSymbolLarge m_sLockedSound; // 0x07E8 + CUtlSymbolLarge m_sUnlockedSound; // 0x07F0 + CUtlSymbolLarge m_sOverrideAnticipationName; // 0x07F8 + bool m_bLocked; // 0x0800 + bool m_bDisabled; // 0x0801 + GameTime_t m_flUseLockedTime; // 0x0804 + bool m_bSolidBsp; // 0x0808 + CEntityIOOutput m_OnDamaged; // 0x0810 + CEntityIOOutput m_OnPressed; // 0x0828 + CEntityIOOutput m_OnUseLocked; // 0x0840 + CEntityIOOutput m_OnIn; // 0x0858 + CEntityIOOutput m_OnOut; // 0x0870 + int32 m_nState; // 0x0888 + CEntityHandle m_hConstraint; // 0x088C + CEntityHandle m_hConstraintParent; // 0x0890 + bool m_bForceNpcExclude; // 0x0894 + CUtlSymbolLarge m_sGlowEntity; // 0x0898 + CHandle< CBaseModelEntity > m_glowEntity; // 0x08A0 + bool m_usable; // 0x08A4 + CUtlSymbolLarge m_szDisplayText; // 0x08A8 +}; +class CPulseCell_SoundEventStart : public CPulseCell_BaseFlow // server +{ + SoundEventStartType_t m_Type; // 0x0048 +}; +class CPulseCell_Step_DebugLog : public CPulseCell_BaseFlow // pulse_runtime_lib +{ +}; +class CItem_Healthshot : public CWeaponBaseItem // server +{ +}; +class CBaseGrenade : public CBaseFlex // server +{ + CEntityIOOutput m_OnPlayerPickup; // 0x0AB8 + CEntityIOOutput m_OnExplode; // 0x0AD0 + bool m_bHasWarnedAI; // 0x0AE8 + bool m_bIsSmokeGrenade; // 0x0AE9 + bool m_bIsLive; // 0x0AEA + float32 m_DmgRadius; // 0x0AEC + GameTime_t m_flDetonateTime; // 0x0AF0 + float32 m_flWarnAITime; // 0x0AF4 + float32 m_flDamage; // 0x0AF8 + CUtlSymbolLarge m_iszBounceSound; // 0x0B00 + CUtlString m_ExplosionSound; // 0x0B08 + CHandle< CCSPlayerPawn > m_hThrower; // 0x0B14 + GameTime_t m_flNextAttack; // 0x0B2C + CHandle< CCSPlayerPawn > m_hOriginalThrower; // 0x0B30 +}; +class CColorCorrectionVolume : public CBaseTrigger // server +{ + float32 m_MaxWeight; // 0x0890 + float32 m_FadeDuration; // 0x0894 + float32 m_Weight; // 0x0898 + char[512] m_lookupFilename; // 0x089C + float32 m_LastEnterWeight; // 0x0A9C + GameTime_t m_LastEnterTime; // 0x0AA0 + float32 m_LastExitWeight; // 0x0AA4 + GameTime_t m_LastExitTime; // 0x0AA8 +}; +class CCSPlayerController_ActionTrackingServices : public CPlayerControllerComponent // server +{ + CUtlVectorEmbeddedNetworkVar< CSPerRoundStats_t > m_perRoundStats; // 0x0040 + CSMatchStats_t m_matchStats; // 0x00C8 + int32 m_iNumRoundKills; // 0x0188 + int32 m_iNumRoundKillsHeadshots; // 0x018C + float32 m_flTotalRoundDamageDealt; // 0x0190 +}; +class CBodyComponentBaseAnimGraph : public CBodyComponentSkeletonInstance // server +{ + CBaseAnimGraphController m_animationController; // 0x04B0 +}; +class CPulseCell_BaseYieldingInflow : public CPulseCell_BaseFlow // pulse_runtime_lib +{ +}; +class PulseNodeDynamicOutflows_t // pulse_runtime_lib +{ + CUtlVector< PulseNodeDynamicOutflows_t::DynamicOutflow_t > m_Outflows; // 0x0000 +}; +class CFogVolume : public CServerOnlyModelEntity // server +{ + CUtlSymbolLarge m_fogName; // 0x0730 + CUtlSymbolLarge m_postProcessName; // 0x0738 + CUtlSymbolLarge m_colorCorrectionName; // 0x0740 + bool m_bDisabled; // 0x0750 + bool m_bInFogVolumesList; // 0x0751 +}; +class CFuncRotating : public CBaseModelEntity // server +{ + CEntityIOOutput m_OnStopped; // 0x0730 + CEntityIOOutput m_OnStarted; // 0x0748 + CEntityIOOutput m_OnReachedStart; // 0x0760 + RotationVector m_localRotationVector; // 0x0778 + float32 m_flFanFriction; // 0x0784 + float32 m_flAttenuation; // 0x0788 + float32 m_flVolume; // 0x078C + float32 m_flTargetSpeed; // 0x0790 + float32 m_flMaxSpeed; // 0x0794 + float32 m_flBlockDamage; // 0x0798 + CUtlSymbolLarge m_NoiseRunning; // 0x07A0 + bool m_bReversed; // 0x07A8 + bool m_bAccelDecel; // 0x07A9 + QAngle m_prevLocalAngles; // 0x07C0 + QAngle m_angStart; // 0x07CC + bool m_bStopAtStartPos; // 0x07D8 + Vector m_vecClientOrigin; // 0x07DC + QAngle m_vecClientAngles; // 0x07E8 +}; +class CTimerEntity : public CLogicalEntity // server +{ + CEntityIOOutput m_OnTimer; // 0x04A8 + CEntityIOOutput m_OnTimerHigh; // 0x04C0 + CEntityIOOutput m_OnTimerLow; // 0x04D8 + int32 m_iDisabled; // 0x04F0 + float32 m_flInitialDelay; // 0x04F4 + float32 m_flRefireTime; // 0x04F8 + bool m_bUpDownState; // 0x04FC + int32 m_iUseRandomTime; // 0x0500 + bool m_bPauseAfterFiring; // 0x0504 + float32 m_flLowerRandomBound; // 0x0508 + float32 m_flUpperRandomBound; // 0x050C + float32 m_flRemainingTime; // 0x0510 + bool m_bPaused; // 0x0514 +}; +class CBtActionMoveTo : public CBtNode // server +{ + CUtlString m_szDestinationInputKey; // 0x0060 + CUtlString m_szHidingSpotInputKey; // 0x0068 + CUtlString m_szThreatInputKey; // 0x0070 + Vector m_vecDestination; // 0x0078 + bool m_bAutoLookAdjust; // 0x0084 + bool m_bComputePath; // 0x0085 + float32 m_flDamagingAreasPenaltyCost; // 0x0088 + CountdownTimer m_CheckApproximateCornersTimer; // 0x0090 + CountdownTimer m_CheckHighPriorityItem; // 0x00A8 + CountdownTimer m_RepathTimer; // 0x00C0 + float32 m_flArrivalEpsilon; // 0x00D8 + float32 m_flAdditionalArrivalEpsilon2D; // 0x00DC + float32 m_flHidingSpotCheckDistanceThreshold; // 0x00E0 + float32 m_flNearestAreaDistanceThreshold; // 0x00E4 +}; +class CPlayer_MovementServices_Humanoid : public CPlayer_MovementServices // server +{ + float32 m_flStepSoundTime; // 0x0240 + float32 m_flFallVelocity; // 0x0244 + Vector m_groundNormal; // 0x0248 + float32 m_flSurfaceFriction; // 0x0254 + CUtlStringToken m_surfaceProps; // 0x0258 + int32 m_nStepside; // 0x0268 + Vector m_vecSmoothedVelocity; // 0x026C +}; +class CBaseEntityAPI // server +{ +}; +class CPulseCell_IsRequirementValid::Criteria_t // pulse_runtime_lib +{ + bool m_bIsValid; // 0x0000 +}; +class CWeaponG3SG1 : public CCSWeaponBaseGun // server +{ +}; +class CTriggerOnce : public CTriggerMultiple // server +{ +}; +class CSMatchStats_t : public CSPerRoundStats_t // server +{ + int32 m_iEnemy5Ks; // 0x0068 + int32 m_iEnemy4Ks; // 0x006C + int32 m_iEnemy3Ks; // 0x0070 + int32 m_iEnemyKnifeKills; // 0x0074 + int32 m_iEnemyTaserKills; // 0x0078 + int32 m_iEnemy2Ks; // 0x007C + int32 m_iUtility_Count; // 0x0080 + int32 m_iUtility_Successes; // 0x0084 + int32 m_iUtility_Enemies; // 0x0088 + int32 m_iFlash_Count; // 0x008C + int32 m_iFlash_Successes; // 0x0090 + float32 m_flHealthPointsRemovedTotal; // 0x0094 + float32 m_flHealthPointsDealtTotal; // 0x0098 + int32 m_nShotsFiredTotal; // 0x009C + int32 m_nShotsOnTargetTotal; // 0x00A0 + int32 m_i1v1Count; // 0x00A4 + int32 m_i1v1Wins; // 0x00A8 + int32 m_i1v2Count; // 0x00AC + int32 m_i1v2Wins; // 0x00B0 + int32 m_iEntryCount; // 0x00B4 + int32 m_iEntryWins; // 0x00B8 +}; +class EntityRenderAttribute_t // server +{ + CUtlStringToken m_ID; // 0x0030 + Vector4D m_Values; // 0x0034 +}; +class CPulseCell_Inflow_ObservableVariableListener : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseRuntimeBlackboardReferenceIndex_t m_nBlackboardReference; // 0x0080 + bool m_bSelfReference; // 0x0082 +}; +class CFuncMonitor : public CFuncBrush // server +{ + CUtlString m_targetCamera; // 0x0750 + int32 m_nResolutionEnum; // 0x0758 + bool m_bRenderShadows; // 0x075C + bool m_bUseUniqueColorTarget; // 0x075D + CUtlString m_brushModelName; // 0x0760 + CHandle< CBaseEntity > m_hTargetCamera; // 0x0768 + bool m_bEnabled; // 0x076C + bool m_bDraw3DSkybox; // 0x076D + bool m_bStartEnabled; // 0x076E +}; +class CInfoVisibilityBox : public CBaseEntity // server +{ + int32 m_nMode; // 0x04AC + Vector m_vBoxSize; // 0x04B0 + bool m_bEnabled; // 0x04BC +}; +class CGunTarget : public CBaseToggle // server +{ + bool m_on; // 0x07B0 + CHandle< CBaseEntity > m_hTargetEnt; // 0x07B4 + CEntityIOOutput m_OnDeath; // 0x07B8 +}; +class CSoundEventConeEntity : public CSoundEventEntity // server +{ + float32 m_flEmitterAngle; // 0x0558 + float32 m_flSweetSpotAngle; // 0x055C + float32 m_flAttenMin; // 0x0560 + float32 m_flAttenMax; // 0x0564 + CUtlSymbolLarge m_iszParameterName; // 0x0568 +}; +class CSoundOpvarSetOBBEntity : public CSoundOpvarSetAABBEntity // server +{ +}; +class CFilterMultipleAPI // server +{ +}; +class CDecoyProjectile : public CBaseCSGrenadeProjectile // server +{ + int32 m_nDecoyShotTick; // 0x0BC8 + int32 m_shotsRemaining; // 0x0BCC + GameTime_t m_fExpireTime; // 0x0BD0 + uint16 m_decoyWeaponDefIndex; // 0x0BE0 +}; +class CPrecipitationBlocker : public CBaseModelEntity // server +{ +}; +class CSoundOpvarSetPathCornerEntity : public CSoundOpvarSetPointEntity // server +{ + bool m_bUseParentedPath; // 0x0658 + float32 m_flDistMinSqr; // 0x065C + float32 m_flDistMaxSqr; // 0x0660 + CUtlSymbolLarge m_iszPathCornerEntityName; // 0x0668 +}; +class CPointClientCommand : public CPointEntity // server +{ +}; +class CHostageRescueZone : public CHostageRescueZoneShim // server +{ +}; +class CWorld : public CBaseModelEntity // server +{ +}; +class CPathMoverEntitySpawner : public CLogicalEntity // server +{ + CUtlSymbolLarge[4] m_szSpawnTemplates; // 0x04A8 + int32 m_nSpawnIndex; // 0x04C8 + CHandle< CPathMover > m_hPathMover; // 0x04CC + float32 m_flSpawnFrequencySeconds; // 0x04D0 + float32 m_flSpawnFrequencyDistToNearestMover; // 0x04D4 + CUtlHashtable< CHandle< CFuncMover >, CPathMoverEntitySpawn > m_mapSpawnedMoverTemplates; // 0x04D8 + int32 m_nMaxActive; // 0x04F8 + GameTime_t m_flLastSpawnTime; // 0x04FC + bool m_bEnabled; // 0x0500 +}; +class CModelState // server +{ + CStrongHandle< InfoForResourceTypeCModel > m_hModel; // 0x00A0 + CUtlSymbolLarge m_ModelName; // 0x00A8 + bool m_bClientClothCreationSuppressed; // 0x00F5 + uint64 m_MeshGroupMask; // 0x01A0 + CNetworkUtlVectorBase< int32 > m_nBodyGroupChoices; // 0x01F0 + int8 m_nIdealMotionType; // 0x023A + int8 m_nForceLOD; // 0x023B + int8 m_nClothUpdateFlags; // 0x023C +}; +class CPulseCell_LerpCameraSettings::CursorState_t : public CPulseCell_BaseLerp::CursorState_t // server +{ + CHandle< CPointCamera > m_hCamera; // 0x0008 + PointCameraSettings_t m_OverlaidStart; // 0x000C + PointCameraSettings_t m_OverlaidEnd; // 0x001C +}; +class CPulseCell_Outflow_CycleOrdered : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class CWeaponGlock : public CCSWeaponBaseGun // server +{ +}; +class CHEGrenadeProjectile : public CBaseCSGrenadeProjectile // server +{ +}; +class CTriggerGravity : public CBaseTrigger // server +{ +}; +class CCollisionProperty // server +{ + VPhysicsCollisionAttribute_t m_collisionAttribute; // 0x0010 + Vector m_vecMins; // 0x0040 + Vector m_vecMaxs; // 0x004C + uint8 m_usSolidFlags; // 0x005A + SolidType_t m_nSolidType; // 0x005B + uint8 m_triggerBloat; // 0x005C + SurroundingBoundsType_t m_nSurroundType; // 0x005D + uint8 m_CollisionGroup; // 0x005E + uint8 m_nEnablePhysics; // 0x005F + float32 m_flBoundingRadius; // 0x0060 + Vector m_vecSpecifiedSurroundingMins; // 0x0064 + Vector m_vecSpecifiedSurroundingMaxs; // 0x0070 + Vector m_vecSurroundingMaxs; // 0x007C + Vector m_vecSurroundingMins; // 0x0088 + Vector m_vCapsuleCenter1; // 0x0094 + Vector m_vCapsuleCenter2; // 0x00A0 + float32 m_flCapsuleRadius; // 0x00AC +}; +class CWeaponGalilAR : public CCSWeaponBaseGun // server +{ +}; +class CFilterMassGreater : public CBaseFilter // server +{ + float32 m_fFilterMass; // 0x04E0 +}; +class CWeaponMP7 : public CCSWeaponBaseGun // server +{ +}; +class CCSWeaponBaseGun : public CCSWeaponBase // server +{ + int32 m_zoomLevel; // 0x1130 + int32 m_iBurstShotsRemaining; // 0x1134 + int32 m_silencedModelIndex; // 0x1140 + bool m_inPrecache; // 0x1144 + bool m_bNeedsBoltAction; // 0x1145 + int32 m_nRevolverCylinderIdx; // 0x1148 + bool m_bSkillReloadAvailable; // 0x114C + bool m_bSkillReloadLiftedReloadKey; // 0x114D + bool m_bSkillBoltInterruptAvailable; // 0x114E + bool m_bSkillBoltLiftedFireKey; // 0x114F +}; +class CEnableMotionFixup : public CBaseEntity // server +{ +}; +class CLogicActiveAutosave : public CLogicAutosave // server +{ + int32 m_TriggerHitPoints; // 0x04B8 + float32 m_flTimeToTrigger; // 0x04BC + GameTime_t m_flStartTime; // 0x04C0 + float32 m_flDangerousTime; // 0x04C4 +}; +class CMathCounter : public CLogicalEntity // server +{ + float32 m_flMin; // 0x04A8 + float32 m_flMax; // 0x04AC + bool m_bHitMin; // 0x04B0 + bool m_bHitMax; // 0x04B1 + bool m_bDisabled; // 0x04B2 + CEntityOutputTemplate< float32, float32 > m_OutValue; // 0x04B8 + CEntityOutputTemplate< float32, float32 > m_OnGetValue; // 0x04D8 + CEntityIOOutput m_OnHitMin; // 0x04F8 + CEntityIOOutput m_OnHitMax; // 0x0510 + CEntityIOOutput m_OnChangedFromMin; // 0x0528 + CEntityIOOutput m_OnChangedFromMax; // 0x0540 +}; +class CCSGameModeRules_ArmsRace : public CCSGameModeRules // server +{ + CNetworkUtlVectorBase< CUtlString > m_WeaponSequence; // 0x0030 +}; +class CAttributeContainer : public CAttributeManager // server +{ + CEconItemView m_Item; // 0x0050 +}; +class CCSPlace : public CServerOnlyModelEntity // server +{ + CUtlSymbolLarge m_name; // 0x0748 +}; +class PulseSelectorOutflowList_t // pulse_runtime_lib +{ + CUtlVector< OutflowWithRequirements_t > m_Outflows; // 0x0000 +}; +class CFilterContext : public CBaseFilter // server +{ + CUtlSymbolLarge m_iFilterContext; // 0x04E0 +}; +class CLightEnvironmentEntity : public CLightDirectionalEntity // server +{ +}; +class CEnvDecal : public CBaseModelEntity // server +{ + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hDecalMaterial; // 0x0730 + float32 m_flWidth; // 0x0738 + float32 m_flHeight; // 0x073C + float32 m_flDepth; // 0x0740 + uint32 m_nRenderOrder; // 0x0744 + bool m_bProjectOnWorld; // 0x0748 + bool m_bProjectOnCharacters; // 0x0749 + bool m_bProjectOnWater; // 0x074A + float32 m_flDepthSortBias; // 0x074C +}; +class CEnvVolumetricFogVolume : public CBaseEntity // server +{ + bool m_bActive; // 0x04A8 + Vector m_vBoxMins; // 0x04AC + Vector m_vBoxMaxs; // 0x04B8 + bool m_bStartDisabled; // 0x04C4 + bool m_bIndirectUseLPVs; // 0x04C5 + float32 m_flStrength; // 0x04C8 + int32 m_nFalloffShape; // 0x04CC + float32 m_flFalloffExponent; // 0x04D0 + float32 m_flHeightFogDepth; // 0x04D4 + float32 m_fHeightFogEdgeWidth; // 0x04D8 + float32 m_fIndirectLightStrength; // 0x04DC + float32 m_fSunLightStrength; // 0x04E0 + float32 m_fNoiseStrength; // 0x04E4 + Color m_TintColor; // 0x04E8 + bool m_bOverrideTintColor; // 0x04EC + bool m_bOverrideIndirectLightStrength; // 0x04ED + bool m_bOverrideSunLightStrength; // 0x04EE + bool m_bOverrideNoiseStrength; // 0x04EF +}; +class CServerOnlyEntity : public CBaseEntity // server +{ +}; +class CPulseCell_PlaySequence::CursorState_t // server +{ + CHandle< CBaseAnimGraph > m_hTarget; // 0x0000 +}; +class CBodyComponentSkeletonInstance : public CBodyComponent // server +{ + CSkeletonInstance m_skeletonInstance; // 0x0080 +}; +class CItemGeneric : public CItem // server +{ + bool m_bHasTriggerRadius; // 0x0AD4 + bool m_bHasPickupRadius; // 0x0AD5 + float32 m_flPickupRadiusSqr; // 0x0AD8 + float32 m_flTriggerRadiusSqr; // 0x0ADC + GameTime_t m_flLastPickupCheck; // 0x0AE0 + bool m_bPlayerCounterListenerAdded; // 0x0AE4 + bool m_bPlayerInTriggerRadius; // 0x0AE5 + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_hSpawnParticleEffect; // 0x0AE8 + CUtlSymbolLarge m_pAmbientSoundEffect; // 0x0AF0 + bool m_bAutoStartAmbientSound; // 0x0AF8 + CUtlSymbolLarge m_pSpawnScriptFunction; // 0x0B00 + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_hPickupParticleEffect; // 0x0B08 + CUtlSymbolLarge m_pPickupSoundEffect; // 0x0B10 + CUtlSymbolLarge m_pPickupScriptFunction; // 0x0B18 + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_hTimeoutParticleEffect; // 0x0B20 + CUtlSymbolLarge m_pTimeoutSoundEffect; // 0x0B28 + CUtlSymbolLarge m_pTimeoutScriptFunction; // 0x0B30 + CUtlSymbolLarge m_pPickupFilterName; // 0x0B38 + CHandle< CBaseFilter > m_hPickupFilter; // 0x0B40 + CEntityIOOutput m_OnPickup; // 0x0B48 + CEntityIOOutput m_OnTimeout; // 0x0B60 + CEntityIOOutput m_OnTriggerStartTouch; // 0x0B78 + CEntityIOOutput m_OnTriggerTouch; // 0x0B90 + CEntityIOOutput m_OnTriggerEndTouch; // 0x0BA8 + CUtlSymbolLarge m_pAllowPickupScriptFunction; // 0x0BC0 + float32 m_flPickupRadius; // 0x0BC8 + float32 m_flTriggerRadius; // 0x0BCC + CUtlSymbolLarge m_pTriggerSoundEffect; // 0x0BD0 + bool m_bGlowWhenInTrigger; // 0x0BD8 + Color m_glowColor; // 0x0BD9 + bool m_bUseable; // 0x0BDD + CHandle< CItemGenericTriggerHelper > m_hTriggerHelper; // 0x0BE0 +}; +class CPointValueRemapper : public CBaseEntity // server +{ + bool m_bDisabled; // 0x04A8 + bool m_bUpdateOnClient; // 0x04A9 + ValueRemapperInputType_t m_nInputType; // 0x04AC + CUtlSymbolLarge m_iszRemapLineStartName; // 0x04B0 + CUtlSymbolLarge m_iszRemapLineEndName; // 0x04B8 + CHandle< CBaseEntity > m_hRemapLineStart; // 0x04C0 + CHandle< CBaseEntity > m_hRemapLineEnd; // 0x04C4 + float32 m_flMaximumChangePerSecond; // 0x04C8 + float32 m_flDisengageDistance; // 0x04CC + float32 m_flEngageDistance; // 0x04D0 + bool m_bRequiresUseKey; // 0x04D4 + ValueRemapperOutputType_t m_nOutputType; // 0x04D8 + CUtlSymbolLarge m_iszOutputEntityName; // 0x04E0 + CUtlSymbolLarge m_iszOutputEntity2Name; // 0x04E8 + CUtlSymbolLarge m_iszOutputEntity3Name; // 0x04F0 + CUtlSymbolLarge m_iszOutputEntity4Name; // 0x04F8 + CNetworkUtlVectorBase< CHandle< CBaseEntity > > m_hOutputEntities; // 0x0500 + ValueRemapperHapticsType_t m_nHapticsType; // 0x0518 + ValueRemapperMomentumType_t m_nMomentumType; // 0x051C + float32 m_flMomentumModifier; // 0x0520 + float32 m_flSnapValue; // 0x0524 + float32 m_flCurrentMomentum; // 0x0528 + ValueRemapperRatchetType_t m_nRatchetType; // 0x052C + float32 m_flRatchetOffset; // 0x0530 + float32 m_flInputOffset; // 0x0534 + bool m_bEngaged; // 0x0538 + bool m_bFirstUpdate; // 0x0539 + float32 m_flPreviousValue; // 0x053C + GameTime_t m_flPreviousUpdateTickTime; // 0x0540 + Vector m_vecPreviousTestPoint; // 0x0544 + CHandle< CBasePlayerPawn > m_hUsingPlayer; // 0x0550 + float32 m_flCustomOutputValue; // 0x0554 + CUtlSymbolLarge m_iszSoundEngage; // 0x0558 + CUtlSymbolLarge m_iszSoundDisengage; // 0x0560 + CUtlSymbolLarge m_iszSoundReachedValueZero; // 0x0568 + CUtlSymbolLarge m_iszSoundReachedValueOne; // 0x0570 + CUtlSymbolLarge m_iszSoundMovingLoop; // 0x0578 + CEntityOutputTemplate< float32, float32 > m_Position; // 0x0598 + CEntityOutputTemplate< float32, float32 > m_PositionDelta; // 0x05B8 + CEntityIOOutput m_OnReachedValueZero; // 0x05D8 + CEntityIOOutput m_OnReachedValueOne; // 0x05F0 + CEntityIOOutput m_OnReachedValueCustom; // 0x0608 + CEntityIOOutput m_OnEngage; // 0x0620 + CEntityIOOutput m_OnDisengage; // 0x0638 +}; +class CBtNodeConditionInactive : public CBtNodeCondition // server +{ + float32 m_flRoundStartThresholdSeconds; // 0x0078 + float32 m_flSensorInactivityThresholdSeconds; // 0x007C + CountdownTimer m_SensorInactivityTimer; // 0x0080 +}; +class CCSGO_TeamIntroCounterTerroristPosition : public CCSGO_TeamIntroCharacterPosition // server +{ +}; +class CRagdollProp : public CBaseAnimGraph // server +{ + ragdoll_t m_ragdoll; // 0x0A30 + bool m_bStartDisabled; // 0x0A80 + CNetworkUtlVectorBase< bool > m_ragEnabled; // 0x0A88 + CNetworkUtlVectorBase< Vector > m_ragPos; // 0x0AA0 + CNetworkUtlVectorBase< QAngle > m_ragAngles; // 0x0AB8 + uint32 m_lastUpdateTickCount; // 0x0AD0 + bool m_allAsleep; // 0x0AD4 + bool m_bFirstCollisionAfterLaunch; // 0x0AD5 + CHandle< CBaseEntity > m_hDamageEntity; // 0x0AD8 + CHandle< CBaseEntity > m_hKiller; // 0x0ADC + CHandle< CBasePlayerPawn > m_hPhysicsAttacker; // 0x0AE0 + GameTime_t m_flLastPhysicsInfluenceTime; // 0x0AE4 + GameTime_t m_flFadeOutStartTime; // 0x0AE8 + float32 m_flFadeTime; // 0x0AEC + VectorWS m_vecLastOrigin; // 0x0AF0 + GameTime_t m_flAwakeTime; // 0x0AFC + GameTime_t m_flLastOriginChangeTime; // 0x0B00 + CUtlSymbolLarge m_strOriginClassName; // 0x0B08 + CUtlSymbolLarge m_strSourceClassName; // 0x0B10 + bool m_bHasBeenPhysgunned; // 0x0B18 + bool m_bAllowStretch; // 0x0B19 + float32 m_flBlendWeight; // 0x0B1C + float32 m_flDefaultFadeScale; // 0x0B20 + CUtlVector< Vector > m_ragdollMins; // 0x0B28 + CUtlVector< Vector > m_ragdollMaxs; // 0x0B40 + bool m_bShouldDeleteActivationRecord; // 0x0B58 +}; +class CScriptComponent : public CEntityComponent // entity2 +{ + CUtlSymbolLarge m_scriptClassName; // 0x0030 +}; +class CFuncTrain : public CBasePlatTrain // server +{ + CHandle< CBaseEntity > m_hCurrentTarget; // 0x07D8 + bool m_activated; // 0x07DC + CHandle< CBaseEntity > m_hEnemy; // 0x07E0 + float32 m_flBlockDamage; // 0x07E4 + GameTime_t m_flNextBlockTime; // 0x07E8 + CUtlSymbolLarge m_iszLastTarget; // 0x07F0 +}; +class CAI_ChangeHintGroup : public CBaseEntity // server +{ + int32 m_iSearchType; // 0x04A8 + CUtlSymbolLarge m_strSearchName; // 0x04B0 + CUtlSymbolLarge m_strNewHintGroup; // 0x04B8 + float32 m_flRadius; // 0x04C0 +}; +class CCSPlayer_BuyServices : public CPlayerPawnComponent // server +{ + CUtlVectorEmbeddedNetworkVar< SellbackPurchaseEntry_t > m_vecSellbackPurchaseEntries; // 0x00D0 +}; +class CWeaponAug : public CCSWeaponBaseGun // server +{ +}; +class CPhysHinge : public CPhysConstraint // server +{ + ConstraintSoundInfo m_soundInfo; // 0x0510 + CEntityIOOutput m_NotifyMinLimitReached; // 0x05A8 + CEntityIOOutput m_NotifyMaxLimitReached; // 0x05C0 + bool m_bAtMinLimit; // 0x05D8 + bool m_bAtMaxLimit; // 0x05D9 + constraint_hingeparams_t m_hinge; // 0x05DC + float32 m_hingeFriction; // 0x061C + float32 m_systemLoadScale; // 0x0620 + bool m_bIsAxisLocal; // 0x0624 + float32 m_flMinRotation; // 0x0628 + float32 m_flMaxRotation; // 0x062C + float32 m_flInitialRotation; // 0x0630 + float32 m_flMotorFrequency; // 0x0634 + float32 m_flMotorDampingRatio; // 0x0638 + float32 m_flAngleSpeed; // 0x063C + float32 m_flAngleSpeedThreshold; // 0x0640 + float32 m_flLimitsDebugVisRotation; // 0x0644 + CEntityIOOutput m_OnStartMoving; // 0x0648 + CEntityIOOutput m_OnStopMoving; // 0x0660 +}; +class CBuyZone : public CBaseTrigger // server +{ + int32 m_LegacyTeamNum; // 0x0890 +}; +class CWeaponSSG08 : public CCSWeaponBaseGun // server +{ +}; +class CLogicRelayAPI // server +{ +}; +class CInfoWorldLayer : public CBaseEntity // server +{ + CEntityIOOutput m_pOutputOnEntitiesSpawned; // 0x04A8 + CUtlSymbolLarge m_worldName; // 0x04C0 + CUtlSymbolLarge m_layerName; // 0x04C8 + bool m_bWorldLayerVisible; // 0x04D0 + bool m_bEntitiesSpawned; // 0x04D1 + bool m_bCreateAsChildSpawnGroup; // 0x04D2 + uint32 m_hLayerSpawnGroup; // 0x04D4 +}; +class CBodyComponentBaseModelEntity : public CBodyComponentSkeletonInstance // server +{ +}; +class CLogicProximity : public CPointEntity // server +{ +}; +class CPointGiveAmmo : public CPointEntity // server +{ + CHandle< CBaseEntity > m_pActivator; // 0x04A8 +}; +class FilterDamageType : public CBaseFilter // server +{ + int32 m_iDamageType; // 0x04E0 +}; +class CPointCamera : public CBaseEntity // server +{ + float32 m_FOV; // 0x04A8 + float32 m_Resolution; // 0x04AC + bool m_bFogEnable; // 0x04B0 + Color m_FogColor; // 0x04B1 + float32 m_flFogStart; // 0x04B8 + float32 m_flFogEnd; // 0x04BC + float32 m_flFogMaxDensity; // 0x04C0 + bool m_bActive; // 0x04C4 + bool m_bUseScreenAspectRatio; // 0x04C5 + float32 m_flAspectRatio; // 0x04C8 + bool m_bNoSky; // 0x04CC + float32 m_fBrightness; // 0x04D0 + float32 m_flZFar; // 0x04D4 + float32 m_flZNear; // 0x04D8 + bool m_bCanHLTVUse; // 0x04DC + bool m_bAlignWithParent; // 0x04DD + bool m_bDofEnabled; // 0x04DE + float32 m_flDofNearBlurry; // 0x04E0 + float32 m_flDofNearCrisp; // 0x04E4 + float32 m_flDofFarCrisp; // 0x04E8 + float32 m_flDofFarBlurry; // 0x04EC + float32 m_flDofTiltToGround; // 0x04F0 + float32 m_TargetFOV; // 0x04F4 + float32 m_DegreesPerSecond; // 0x04F8 + bool m_bIsOn; // 0x04FC + CPointCamera* m_pNext; // 0x0500 +}; +class CAttributeList // server +{ + CUtlVectorEmbeddedNetworkVar< CEconItemAttribute > m_Attributes; // 0x0008 + CAttributeManager* m_pManager; // 0x0070 +}; +class CPulseCell_Inflow_Wait : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_WakeResume; // 0x0048 +}; +class CFilterProximity : public CBaseFilter // server +{ + float32 m_flRadius; // 0x04E0 +}; +class CCS2WeaponGraphController : public CAnimGraphControllerBase // server +{ + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_action; // 0x0090 + CAnimGraph2ParamOptionalRef< bool > m_bActionReset; // 0x00A8 + CAnimGraph2ParamOptionalRef< float32 > m_flWeaponActionSpeedScale; // 0x00C0 + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_weaponCategory; // 0x00D8 + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_weaponType; // 0x00F0 + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_weaponExtraInfo; // 0x0108 + CAnimGraph2ParamOptionalRef< float32 > m_flWeaponAmmo; // 0x0120 + CAnimGraph2ParamOptionalRef< float32 > m_flWeaponAmmoMax; // 0x0138 + CAnimGraph2ParamOptionalRef< float32 > m_flWeaponAmmoReserve; // 0x0150 + CAnimGraph2ParamOptionalRef< bool > m_bWeaponIsSilenced; // 0x0168 + CAnimGraph2ParamOptionalRef< float32 > m_flWeaponIronsightAmount; // 0x0180 + CAnimGraph2ParamOptionalRef< bool > m_bIsUsingLegacyModel; // 0x0198 + CAnimGraph2ParamOptionalRef< float32 > m_idleVariation; // 0x01B0 + CAnimGraph2ParamOptionalRef< float32 > m_deployVariation; // 0x01C8 + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_attackType; // 0x01E0 + CAnimGraph2ParamOptionalRef< float32 > m_attackThrowStrength; // 0x01F8 + CAnimGraph2ParamOptionalRef< float32 > m_flAttackVariation; // 0x0210 + CAnimGraph2ParamOptionalRef< float32 > m_inspectVariation; // 0x0228 + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_inspectExtraInfo; // 0x0240 + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_reloadStage; // 0x0258 +}; +class CEffectData // server +{ + VectorWS m_vOrigin; // 0x0008 + VectorWS m_vStart; // 0x0014 + Vector m_vNormal; // 0x0020 + QAngle m_vAngles; // 0x002C + CEntityHandle m_hEntity; // 0x0038 + CEntityHandle m_hOtherEntity; // 0x003C + float32 m_flScale; // 0x0040 + float32 m_flMagnitude; // 0x0044 + float32 m_flRadius; // 0x0048 + CUtlStringToken m_nSurfaceProp; // 0x004C + CWeakHandle< InfoForResourceTypeIParticleSystemDefinition > m_nEffectIndex; // 0x0050 + uint32 m_nDamageType; // 0x0058 + uint8 m_nPenetrate; // 0x005C + uint16 m_nMaterial; // 0x005E + int16 m_nHitBox; // 0x0060 + uint8 m_nColor; // 0x0062 + uint8 m_fFlags; // 0x0063 + AttachmentHandle_t m_nAttachmentIndex; // 0x0064 + CUtlStringToken m_nAttachmentName; // 0x0068 + uint16 m_iEffectName; // 0x006C + uint8 m_nExplosionType; // 0x006E +}; +class CEntityDissolve : public CBaseModelEntity // server +{ + float32 m_flFadeInStart; // 0x0730 + float32 m_flFadeInLength; // 0x0734 + float32 m_flFadeOutModelStart; // 0x0738 + float32 m_flFadeOutModelLength; // 0x073C + float32 m_flFadeOutStart; // 0x0740 + float32 m_flFadeOutLength; // 0x0744 + GameTime_t m_flStartTime; // 0x0748 + EntityDisolveType_t m_nDissolveType; // 0x074C + Vector m_vDissolverOrigin; // 0x0750 + uint32 m_nMagnitude; // 0x075C +}; +class CCSGameRules : public CTeamplayRules // server +{ + bool m_bFreezePeriod; // 0x00C8 + bool m_bWarmupPeriod; // 0x00C9 + GameTime_t m_fWarmupPeriodEnd; // 0x00CC + GameTime_t m_fWarmupPeriodStart; // 0x00D0 + bool m_bTerroristTimeOutActive; // 0x00D4 + bool m_bCTTimeOutActive; // 0x00D5 + float32 m_flTerroristTimeOutRemaining; // 0x00D8 + float32 m_flCTTimeOutRemaining; // 0x00DC + int32 m_nTerroristTimeOuts; // 0x00E0 + int32 m_nCTTimeOuts; // 0x00E4 + bool m_bTechnicalTimeOut; // 0x00E8 + bool m_bMatchWaitingForResume; // 0x00E9 + int32 m_iFreezeTime; // 0x00EC + int32 m_iRoundTime; // 0x00F0 + float32 m_fMatchStartTime; // 0x00F4 + GameTime_t m_fRoundStartTime; // 0x00F8 + GameTime_t m_flRestartRoundTime; // 0x00FC + bool m_bGameRestart; // 0x0100 + float32 m_flGameStartTime; // 0x0104 + float32 m_timeUntilNextPhaseStarts; // 0x0108 + int32 m_gamePhase; // 0x010C + int32 m_totalRoundsPlayed; // 0x0110 + int32 m_nRoundsPlayedThisPhase; // 0x0114 + int32 m_nOvertimePlaying; // 0x0118 + int32 m_iHostagesRemaining; // 0x011C + bool m_bAnyHostageReached; // 0x0120 + bool m_bMapHasBombTarget; // 0x0121 + bool m_bMapHasRescueZone; // 0x0122 + bool m_bMapHasBuyZone; // 0x0123 + bool m_bIsQueuedMatchmaking; // 0x0124 + int32 m_nQueuedMatchmakingMode; // 0x0128 + bool m_bIsValveDS; // 0x012C + bool m_bLogoMap; // 0x012D + bool m_bPlayAllStepSoundsOnServer; // 0x012E + int32 m_iSpectatorSlotCount; // 0x0130 + int32 m_MatchDevice; // 0x0134 + bool m_bHasMatchStarted; // 0x0138 + int32 m_nNextMapInMapgroup; // 0x013C + char[512] m_szTournamentEventName; // 0x0140 + char[512] m_szTournamentEventStage; // 0x0340 + char[512] m_szMatchStatTxt; // 0x0540 + char[512] m_szTournamentPredictionsTxt; // 0x0740 + int32 m_nTournamentPredictionsPct; // 0x0940 + GameTime_t m_flCMMItemDropRevealStartTime; // 0x0944 + GameTime_t m_flCMMItemDropRevealEndTime; // 0x0948 + bool m_bIsDroppingItems; // 0x094C + bool m_bIsQuestEligible; // 0x094D + bool m_bIsHltvActive; // 0x094E + bool m_bBombPlanted; // 0x094F + uint16[100] m_arrProhibitedItemIndices; // 0x0950 + uint32[4] m_arrTournamentActiveCasterAccounts; // 0x0A18 + int32 m_numBestOfMaps; // 0x0A28 + int32 m_nHalloweenMaskListSeed; // 0x0A2C + bool m_bBombDropped; // 0x0A30 + int32 m_iRoundWinStatus; // 0x0A34 + int32 m_eRoundWinReason; // 0x0A38 + bool m_bTCantBuy; // 0x0A3C + bool m_bCTCantBuy; // 0x0A3D + int32[30] m_iMatchStats_RoundResults; // 0x0A40 + int32[30] m_iMatchStats_PlayersAlive_CT; // 0x0AB8 + int32[30] m_iMatchStats_PlayersAlive_T; // 0x0B30 + float32[32] m_TeamRespawnWaveTimes; // 0x0BA8 + GameTime_t[32] m_flNextRespawnWave; // 0x0C28 + Vector m_vMinimapMins; // 0x0CA8 + Vector m_vMinimapMaxs; // 0x0CB4 + float32[8] m_MinimapVerticalSectionHeights; // 0x0CC0 + uint64 m_ullLocalMatchID; // 0x0CE0 + int32[10] m_nEndMatchMapGroupVoteTypes; // 0x0CE8 + int32[10] m_nEndMatchMapGroupVoteOptions; // 0x0D10 + int32 m_nEndMatchMapVoteWinner; // 0x0D38 + int32 m_iNumConsecutiveCTLoses; // 0x0D3C + int32 m_iNumConsecutiveTerroristLoses; // 0x0D40 + bool m_bHasHostageBeenTouched; // 0x0D60 + GameTime_t m_flIntermissionStartTime; // 0x0D64 + GameTime_t m_flIntermissionEndTime; // 0x0D68 + bool m_bLevelInitialized; // 0x0D6C + int32 m_iTotalRoundsPlayed; // 0x0D70 + int32 m_iUnBalancedRounds; // 0x0D74 + bool m_endMatchOnRoundReset; // 0x0D78 + bool m_endMatchOnThink; // 0x0D79 + int32 m_iNumTerrorist; // 0x0D7C + int32 m_iNumCT; // 0x0D80 + int32 m_iNumSpawnableTerrorist; // 0x0D84 + int32 m_iNumSpawnableCT; // 0x0D88 + CUtlVector< int32 > m_arrSelectedHostageSpawnIndices; // 0x0D90 + int32 m_nSpawnPointsRandomSeed; // 0x0DA8 + bool m_bFirstConnected; // 0x0DAC + bool m_bCompleteReset; // 0x0DAD + bool m_bPickNewTeamsOnReset; // 0x0DAE + bool m_bScrambleTeamsOnRestart; // 0x0DAF + bool m_bSwapTeamsOnRestart; // 0x0DB0 + CUtlVector< int32 > m_nEndMatchTiedVotes; // 0x0DB8 + bool m_bNeedToAskPlayersForContinueVote; // 0x0DD4 + uint32 m_numQueuedMatchmakingAccounts; // 0x0DD8 + float32 m_fAvgPlayerRank; // 0x0DDC + char* m_pQueuedMatchmakingReservationString; // 0x0DE0 + uint32 m_numTotalTournamentDrops; // 0x0DE8 + uint32 m_numSpectatorsCountMax; // 0x0DEC + uint32 m_numSpectatorsCountMaxTV; // 0x0DF0 + uint32 m_numSpectatorsCountMaxLnk; // 0x0DF4 + int32 m_nCTsAliveAtFreezetimeEnd; // 0x0E00 + int32 m_nTerroristsAliveAtFreezetimeEnd; // 0x0E04 + bool m_bForceTeamChangeSilent; // 0x0E08 + bool m_bLoadingRoundBackupData; // 0x0E09 + int32 m_nMatchInfoShowType; // 0x0E40 + float32 m_flMatchInfoDecidedTime; // 0x0E44 + int32 mTeamDMLastWinningTeamNumber; // 0x0E60 + float32 mTeamDMLastThinkTime; // 0x0E64 + float32 m_flTeamDMLastAnnouncementTime; // 0x0E68 + int32 m_iAccountTerrorist; // 0x0E6C + int32 m_iAccountCT; // 0x0E70 + int32 m_iSpawnPointCount_Terrorist; // 0x0E74 + int32 m_iSpawnPointCount_CT; // 0x0E78 + int32 m_iMaxNumTerrorists; // 0x0E7C + int32 m_iMaxNumCTs; // 0x0E80 + int32 m_iLoserBonusMostRecentTeam; // 0x0E84 + float32 m_tmNextPeriodicThink; // 0x0E88 + bool m_bVoiceWonMatchBragFired; // 0x0E8C + float32 m_fWarmupNextChatNoticeTime; // 0x0E90 + int32 m_iHostagesRescued; // 0x0E98 + int32 m_iHostagesTouched; // 0x0E9C + float32 m_flNextHostageAnnouncement; // 0x0EA0 + bool m_bNoTerroristsKilled; // 0x0EA4 + bool m_bNoCTsKilled; // 0x0EA5 + bool m_bNoEnemiesKilled; // 0x0EA6 + bool m_bCanDonateWeapons; // 0x0EA7 + float32 m_firstKillTime; // 0x0EAC + float32 m_firstBloodTime; // 0x0EB4 + bool m_hostageWasInjured; // 0x0ED0 + bool m_hostageWasKilled; // 0x0ED1 + bool m_bVoteCalled; // 0x0EE0 + bool m_bServerVoteOnReset; // 0x0EE1 + float32 m_flVoteCheckThrottle; // 0x0EE4 + bool m_bBuyTimeEnded; // 0x0EE8 + int32 m_nLastFreezeEndBeep; // 0x0EEC + bool m_bTargetBombed; // 0x0EF0 + bool m_bBombDefused; // 0x0EF1 + bool m_bMapHasBombZone; // 0x0EF2 + Vector m_vecMainCTSpawnPos; // 0x0F40 + CUtlVector< SpawnPoint* > m_CTSpawnPointsMasterList; // 0x0F50 + CUtlVector< SpawnPoint* > m_TerroristSpawnPointsMasterList; // 0x0F68 + bool m_bRespawningAllRespawnablePlayers; // 0x0F80 + int32 m_iNextCTSpawnPoint; // 0x0F84 + float32 m_flCTSpawnPointUsedTime; // 0x0F88 + int32 m_iNextTerroristSpawnPoint; // 0x0F8C + float32 m_flTerroristSpawnPointUsedTime; // 0x0F90 + CUtlVector< SpawnPoint* > m_CTSpawnPoints; // 0x0F98 + CUtlVector< SpawnPoint* > m_TerroristSpawnPoints; // 0x0FB0 + bool m_bIsUnreservedGameServer; // 0x0FC8 + float32 m_fAutobalanceDisplayTime; // 0x0FCC + bool m_bAllowWeaponSwitch; // 0x1008 + bool m_bRoundTimeWarningTriggered; // 0x1009 + GameTime_t m_phaseChangeAnnouncementTime; // 0x100C + float32 m_fNextUpdateTeamClanNamesTime; // 0x1010 + GameTime_t m_flLastThinkTime; // 0x1014 + float32 m_fAccumulatedRoundOffDamage; // 0x1018 + int32 m_nShorthandedBonusLastEvalRound; // 0x101C + int32 m_nMatchAbortedEarlyReason; // 0x1068 + bool m_bHasTriggeredRoundStartMusic; // 0x106C + bool m_bSwitchingTeamsAtRoundReset; // 0x106D + CCSGameModeRules* m_pGameModeRules; // 0x1088 + KeyValues3 m_BtGlobalBlackboard; // 0x1090 + CHandle< CBaseEntity > m_hPlayerResource; // 0x1128 + CRetakeGameRules m_RetakeRules; // 0x1130 + CUtlVector< int32 >[4] m_arrTeamUniqueKillWeaponsMatch; // 0x1320 + bool[4] m_bTeamLastKillUsedUniqueWeaponMatch; // 0x1380 + uint8 m_nMatchEndCount; // 0x13A8 + int32 m_nTTeamIntroVariant; // 0x13AC + int32 m_nCTTeamIntroVariant; // 0x13B0 + bool m_bTeamIntroPeriod; // 0x13B4 + GameTime_t m_fTeamIntroPeriodEnd; // 0x13B8 + bool m_bPlayedTeamIntroVO; // 0x13BC + int32 m_iRoundEndWinnerTeam; // 0x13C0 + int32 m_eRoundEndReason; // 0x13C4 + bool m_bRoundEndShowTimerDefend; // 0x13C8 + int32 m_iRoundEndTimerTime; // 0x13CC + CUtlString m_sRoundEndFunFactToken; // 0x13D0 + CPlayerSlot m_iRoundEndFunFactPlayerSlot; // 0x13D8 + int32 m_iRoundEndFunFactData1; // 0x13DC + int32 m_iRoundEndFunFactData2; // 0x13E0 + int32 m_iRoundEndFunFactData3; // 0x13E4 + CUtlString m_sRoundEndMessage; // 0x13E8 + int32 m_iRoundEndPlayerCount; // 0x13F0 + bool m_bRoundEndNoMusic; // 0x13F4 + int32 m_iRoundEndLegacy; // 0x13F8 + uint8 m_nRoundEndCount; // 0x13FC + int32 m_iRoundStartRoundNumber; // 0x1400 + uint8 m_nRoundStartCount; // 0x1404 + float64 m_flLastPerfSampleTime; // 0x5410 +}; +class CPulseCell_Outflow_CycleShuffled : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class CBaseCSGrenadeProjectile : public CBaseGrenade // server +{ + Vector m_vInitialPosition; // 0x0B40 + Vector m_vInitialVelocity; // 0x0B4C + int32 m_nBounces; // 0x0B58 + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_nExplodeEffectIndex; // 0x0B60 + int32 m_nExplodeEffectTickBegin; // 0x0B68 + Vector m_vecExplodeEffectOrigin; // 0x0B6C + GameTime_t m_flSpawnTime; // 0x0B78 + uint8 m_unOGSExtraFlags; // 0x0B7C + bool m_bDetonationRecorded; // 0x0B7D + uint16 m_nItemIndex; // 0x0B7E + Vector m_vecOriginalSpawnLocation; // 0x0B80 + GameTime_t m_flLastBounceSoundTime; // 0x0B8C + RotationVector m_vecGrenadeSpin; // 0x0B90 + Vector m_vecLastHitSurfaceNormal; // 0x0B9C + int32 m_nTicksAtZeroVelocity; // 0x0BA8 + bool m_bHasEverHitEnemy; // 0x0BAC +}; +class CPhysConstraint : public CLogicalEntity // server +{ + CUtlSymbolLarge m_nameAttach1; // 0x04B0 + CUtlSymbolLarge m_nameAttach2; // 0x04B8 + CHandle< CBaseEntity > m_hAttach1; // 0x04C0 + CHandle< CBaseEntity > m_hAttach2; // 0x04C4 + CUtlSymbolLarge m_nameAttachment1; // 0x04C8 + CUtlSymbolLarge m_nameAttachment2; // 0x04D0 + CUtlSymbolLarge m_breakSound; // 0x04D8 + float32 m_forceLimit; // 0x04E0 + float32 m_torqueLimit; // 0x04E4 + float32 m_minTeleportDistance; // 0x04E8 + bool m_bSnapObjectPositions; // 0x04EC + bool m_bTreatEntity1AsInfiniteMass; // 0x04ED + CEntityIOOutput m_OnBreak; // 0x04F0 +}; +class CLogicAchievement : public CLogicalEntity // server +{ + bool m_bDisabled; // 0x04A8 + CUtlSymbolLarge m_iszAchievementEventID; // 0x04B0 + CEntityIOOutput m_OnFired; // 0x04B8 +}; +class CCSPlayerController_InventoryServices::NetworkedLoadoutSlot_t // server +{ + CEconItemView* pItem; // 0x0000 + uint16 team; // 0x0008 + uint16 slot; // 0x000A +}; +class CLightComponent : public CEntityComponent // server +{ + CNetworkVarChainer __m_pChainEntity; // 0x0038 + Color m_Color; // 0x0075 + Color m_SecondaryColor; // 0x0079 + float32 m_flBrightness; // 0x0080 + float32 m_flBrightnessScale; // 0x0084 + float32 m_flBrightnessMult; // 0x0088 + float32 m_flRange; // 0x008C + float32 m_flFalloff; // 0x0090 + float32 m_flAttenuation0; // 0x0094 + float32 m_flAttenuation1; // 0x0098 + float32 m_flAttenuation2; // 0x009C + float32 m_flTheta; // 0x00A0 + float32 m_flPhi; // 0x00A4 + CStrongHandle< InfoForResourceTypeCTextureBase > m_hLightCookie; // 0x00A8 + int32 m_nCascades; // 0x00B0 + int32 m_nCastShadows; // 0x00B4 + int32 m_nShadowWidth; // 0x00B8 + int32 m_nShadowHeight; // 0x00BC + bool m_bRenderDiffuse; // 0x00C0 + int32 m_nRenderSpecular; // 0x00C4 + bool m_bRenderTransmissive; // 0x00C8 + float32 m_flOrthoLightWidth; // 0x00CC + float32 m_flOrthoLightHeight; // 0x00D0 + int32 m_nStyle; // 0x00D4 + CUtlString m_Pattern; // 0x00D8 + int32 m_nCascadeRenderStaticObjects; // 0x00E0 + float32 m_flShadowCascadeCrossFade; // 0x00E4 + float32 m_flShadowCascadeDistanceFade; // 0x00E8 + float32 m_flShadowCascadeDistance0; // 0x00EC + float32 m_flShadowCascadeDistance1; // 0x00F0 + float32 m_flShadowCascadeDistance2; // 0x00F4 + float32 m_flShadowCascadeDistance3; // 0x00F8 + int32 m_nShadowCascadeResolution0; // 0x00FC + int32 m_nShadowCascadeResolution1; // 0x0100 + int32 m_nShadowCascadeResolution2; // 0x0104 + int32 m_nShadowCascadeResolution3; // 0x0108 + bool m_bUsesBakedShadowing; // 0x010C + int32 m_nShadowPriority; // 0x0110 + int32 m_nBakedShadowIndex; // 0x0114 + int32 m_nLightPathUniqueId; // 0x0118 + int32 m_nLightMapUniqueId; // 0x011C + bool m_bRenderToCubemaps; // 0x0120 + bool m_bAllowSSTGeneration; // 0x0121 + int32 m_nDirectLight; // 0x0124 + int32 m_nIndirectLight; // 0x0128 + bool m_bDynamicBounce; // 0x012C + float32 m_flFadeMinDist; // 0x0130 + float32 m_flFadeMaxDist; // 0x0134 + float32 m_flShadowFadeMinDist; // 0x0138 + float32 m_flShadowFadeMaxDist; // 0x013C + bool m_bEnabled; // 0x0140 + bool m_bFlicker; // 0x0141 + bool m_bPrecomputedFieldsValid; // 0x0142 + Vector m_vPrecomputedBoundsMins; // 0x0144 + Vector m_vPrecomputedBoundsMaxs; // 0x0150 + Vector m_vPrecomputedOBBOrigin; // 0x015C + QAngle m_vPrecomputedOBBAngles; // 0x0168 + Vector m_vPrecomputedOBBExtent; // 0x0174 + float32 m_flPrecomputedMaxRange; // 0x0180 + int32 m_nFogLightingMode; // 0x0184 + float32 m_flFogContributionStength; // 0x0188 + float32 m_flNearClipPlane; // 0x018C + Color m_SkyColor; // 0x0190 + float32 m_flSkyIntensity; // 0x0194 + Color m_SkyAmbientBounce; // 0x0198 + bool m_bUseSecondaryColor; // 0x019C + bool m_bMixedShadows; // 0x019D + GameTime_t m_flLightStyleStartTime; // 0x01A0 + float32 m_flCapsuleLength; // 0x01A4 + float32 m_flMinRoughness; // 0x01A8 + bool m_bPvsModifyEntity; // 0x01B8 +}; +class CCSWeaponBase : public CBasePlayerWeapon // server +{ + bool m_bRemoveable; // 0x0E20 + bool m_bPlayerAmmoStockOnPickup; // 0x0E21 + bool m_bRequireUseToTouch; // 0x0E22 + WeaponGameplayAnimState m_iWeaponGameplayAnimState; // 0x0E24 + GameTime_t m_flWeaponGameplayAnimStateTimestamp; // 0x0E28 + GameTime_t m_flInspectCancelCompleteTime; // 0x0E2C + bool m_bInspectPending; // 0x0E30 + bool m_bInspectShouldLoop; // 0x0E31 + int32 m_nLastEmptySoundCmdNum; // 0x0E5C + bool m_bFireOnEmpty; // 0x0E78 + CEntityIOOutput m_OnPlayerPickup; // 0x0E80 + CSWeaponMode m_weaponMode; // 0x0E98 + float32 m_flTurningInaccuracyDelta; // 0x0E9C + Vector m_vecTurningInaccuracyEyeDirLast; // 0x0EA0 + float32 m_flTurningInaccuracy; // 0x0EAC + float32 m_fAccuracyPenalty; // 0x0EB0 + GameTime_t m_flLastAccuracyUpdateTime; // 0x0EB4 + float32 m_fAccuracySmoothedForZoom; // 0x0EB8 + int32 m_iRecoilIndex; // 0x0EBC + float32 m_flRecoilIndex; // 0x0EC0 + bool m_bBurstMode; // 0x0EC4 + GameTick_t m_nPostponeFireReadyTicks; // 0x0EC8 + float32 m_flPostponeFireReadyFrac; // 0x0ECC + bool m_bInReload; // 0x0ED0 + GameTime_t m_flDroppedAtTime; // 0x0ED4 + bool m_bIsHauledBack; // 0x0ED8 + bool m_bSilencerOn; // 0x0ED9 + GameTime_t m_flTimeSilencerSwitchComplete; // 0x0EDC + float32 m_flWeaponActionPlaybackRate; // 0x0EE0 + int32 m_iOriginalTeamNumber; // 0x0EE4 + int32 m_iMostRecentTeamNumber; // 0x0EE8 + bool m_bDroppedNearBuyZone; // 0x0EEC + float32 m_flNextAttackRenderTimeOffset; // 0x0EF0 + bool m_bCanBePickedUp; // 0x0F08 + bool m_bUseCanOverrideNextOwnerTouchTime; // 0x0F09 + GameTime_t m_nextOwnerTouchTime; // 0x0F0C + GameTime_t m_nextPrevOwnerTouchTime; // 0x0F10 + GameTime_t m_nextPrevOwnerUseTime; // 0x0F18 + CHandle< CCSPlayerPawn > m_hPrevOwner; // 0x0F1C + GameTick_t m_nDropTick; // 0x0F20 + bool m_bWasActiveWeaponWhenDropped; // 0x0F24 + bool m_donated; // 0x0F44 + GameTime_t m_fLastShotTime; // 0x0F48 + bool m_bWasOwnedByCT; // 0x0F4C + bool m_bWasOwnedByTerrorist; // 0x0F4D + int32 m_numRemoveUnownedWeaponThink; // 0x0F50 + CIronSightController m_IronSightController; // 0x0F58 + int32 m_iIronSightMode; // 0x0F70 + GameTime_t m_flLastLOSTraceFailureTime; // 0x0F74 + float32 m_flWatTickOffset; // 0x0F78 + GameTime_t m_flLastShakeTime; // 0x0F88 +}; +class CPointClientUIDialog : public CBaseClientUIEntity // server +{ + CHandle< CBaseEntity > m_hActivator; // 0x0890 + bool m_bStartEnabled; // 0x0894 +}; +class CLogicLineToEntity : public CLogicalEntity // server +{ + CEntityOutputTemplate< Vector, Vector > m_Line; // 0x04A8 + CUtlSymbolLarge m_SourceName; // 0x04D0 + CHandle< CBaseEntity > m_StartEntity; // 0x04D8 + CHandle< CBaseEntity > m_EndEntity; // 0x04DC +}; +class CSoundAreaEntitySphere : public CSoundAreaEntityBase // server +{ + float32 m_flRadius; // 0x04C8 +}; +class CCSPlayer_ActionTrackingServices : public CPlayerPawnComponent // server +{ + CHandle< CBasePlayerWeapon > m_hLastWeaponBeforeC4AutoSwitch; // 0x01F8 + bool m_bIsRescuing; // 0x0224 + WeaponPurchaseTracker_t m_weaponPurchasesThisMatch; // 0x0228 + WeaponPurchaseTracker_t m_weaponPurchasesThisRound; // 0x0298 +}; +class CPhysicalButton : public CBaseButton // server +{ +}; +class CInfoSpawnGroupLoadUnload : public CLogicalEntity // server +{ + CEntityIOOutput m_OnSpawnGroupLoadStarted; // 0x04A8 + CEntityIOOutput m_OnSpawnGroupLoadFinished; // 0x04C0 + CEntityIOOutput m_OnSpawnGroupUnloadStarted; // 0x04D8 + CEntityIOOutput m_OnSpawnGroupUnloadFinished; // 0x04F0 + CUtlSymbolLarge m_iszSpawnGroupName; // 0x0508 + CUtlSymbolLarge m_iszSpawnGroupFilterName; // 0x0510 + CUtlSymbolLarge m_iszLandmarkName; // 0x0518 + CUtlString m_sFixedSpawnGroupName; // 0x0520 + float32 m_flTimeoutInterval; // 0x0528 + bool m_bAutoActivate; // 0x052C + bool m_bUnloadingStarted; // 0x052D + bool m_bQueueActiveSpawnGroupChange; // 0x052E + bool m_bQueueFinishLoading; // 0x052F +}; +class CSoundAreaEntityOrientedBox : public CSoundAreaEntityBase // server +{ + Vector m_vMin; // 0x04C8 + Vector m_vMax; // 0x04D4 +}; +class CCSObserver_MovementServices : public CPlayer_MovementServices // server +{ +}; +class CPulseCell_Outflow_ListenForAnimgraphTag : public CPulseCell_BaseYieldingInflow // server +{ + CPulse_ResumePoint m_OnStart; // 0x0048 + CPulse_ResumePoint m_OnEnd; // 0x0090 + CPulse_ResumePoint m_OnCanceled; // 0x00D8 + CGlobalSymbol m_TagName; // 0x0120 +}; +class CBodyComponent : public CEntityComponent // server +{ + CGameSceneNode* m_pSceneNode; // 0x0008 + CNetworkVarChainer __m_pChainEntity; // 0x0048 +}; +class CPulseCell_Inflow_Method : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_MethodName; // 0x0080 + CUtlString m_Description; // 0x0090 + bool m_bIsPublic; // 0x0098 + CPulseValueFullType m_ReturnType; // 0x00A0 + CUtlLeanVector< CPulseRuntimeMethodArg > m_Args; // 0x00B8 +}; +class CDecoyGrenade : public CBaseCSGrenade // server +{ +}; +class CEconItemView : public IEconItemInterface // server +{ + uint16 m_iItemDefinitionIndex; // 0x0038 + int32 m_iEntityQuality; // 0x003C + uint32 m_iEntityLevel; // 0x0040 + uint64 m_iItemID; // 0x0048 + uint32 m_iItemIDHigh; // 0x0050 + uint32 m_iItemIDLow; // 0x0054 + uint32 m_iAccountID; // 0x0058 + uint32 m_iInventoryPosition; // 0x005C + bool m_bInitialized; // 0x0068 + CAttributeList m_AttributeList; // 0x0070 + CAttributeList m_NetworkedDynamicAttributes; // 0x00E8 + char[161] m_szCustomName; // 0x0160 + char[161] m_szCustomNameOverride; // 0x0201 +}; +class CIncendiaryGrenade : public CMolotovGrenade // server +{ +}; +class CBaseDMStart : public CPointEntity // server +{ + CUtlSymbolLarge m_Master; // 0x04A8 +}; +class CBaseModelEntity : public CBaseEntity // server +{ + CRenderComponent* m_CRenderComponent; // 0x04A8 + CHitboxComponent m_CHitboxComponent; // 0x04B0 + HitGroup_t m_nDestructiblePartInitialStateDestructed0; // 0x04C8 + HitGroup_t m_nDestructiblePartInitialStateDestructed1; // 0x04CC + HitGroup_t m_nDestructiblePartInitialStateDestructed2; // 0x04D0 + HitGroup_t m_nDestructiblePartInitialStateDestructed3; // 0x04D4 + HitGroup_t m_nDestructiblePartInitialStateDestructed4; // 0x04D8 + int32 m_nDestructiblePartInitialStateDestructed0_PartIndex; // 0x04DC + int32 m_nDestructiblePartInitialStateDestructed1_PartIndex; // 0x04E0 + int32 m_nDestructiblePartInitialStateDestructed2_PartIndex; // 0x04E4 + int32 m_nDestructiblePartInitialStateDestructed3_PartIndex; // 0x04E8 + int32 m_nDestructiblePartInitialStateDestructed4_PartIndex; // 0x04EC + CDestructiblePartsComponent* m_pDestructiblePartsSystemComponent; // 0x04F0 + GameTime_t m_flDissolveStartTime; // 0x04F8 + CEntityIOOutput m_OnIgnite; // 0x0500 + RenderMode_t m_nRenderMode; // 0x0518 + RenderFx_t m_nRenderFX; // 0x0519 + bool m_bAllowFadeInView; // 0x051A + Color m_clrRender; // 0x0538 + CUtlVectorEmbeddedNetworkVar< EntityRenderAttribute_t > m_vecRenderAttributes; // 0x0540 + bool m_bRenderToCubemaps; // 0x05A8 + bool m_bNoInterpolate; // 0x05A9 + CCollisionProperty m_Collision; // 0x05B0 + CGlowProperty m_Glow; // 0x0660 + float32 m_flGlowBackfaceMult; // 0x06B8 + float32 m_fadeMinDist; // 0x06BC + float32 m_fadeMaxDist; // 0x06C0 + float32 m_flFadeScale; // 0x06C4 + float32 m_flShadowStrength; // 0x06C8 + uint8 m_nObjectCulling; // 0x06CC + CNetworkViewOffsetVector m_vecViewOffset; // 0x06F8 + uint32[1] m_bvDisabledHitGroups; // 0x0728 +}; +class fogplayerparams_t // server +{ + CHandle< CFogController > m_hCtrl; // 0x0008 + float32 m_flTransitionTime; // 0x000C + Color m_OldColor; // 0x0010 + float32 m_flOldStart; // 0x0014 + float32 m_flOldEnd; // 0x0018 + float32 m_flOldMaxDensity; // 0x001C + float32 m_flOldHDRColorScale; // 0x0020 + float32 m_flOldFarZ; // 0x0024 + Color m_NewColor; // 0x0028 + float32 m_flNewStart; // 0x002C + float32 m_flNewEnd; // 0x0030 + float32 m_flNewMaxDensity; // 0x0034 + float32 m_flNewHDRColorScale; // 0x0038 + float32 m_flNewFarZ; // 0x003C +}; +class CGlowProperty // server +{ + Vector m_fGlowColor; // 0x0008 + int32 m_iGlowType; // 0x0030 + int32 m_iGlowTeam; // 0x0034 + int32 m_nGlowRange; // 0x0038 + int32 m_nGlowRangeMin; // 0x003C + Color m_glowColorOverride; // 0x0040 + bool m_bFlashing; // 0x0044 + float32 m_flGlowTime; // 0x0048 + float32 m_flGlowStartTime; // 0x004C + bool m_bEligibleForScreenHighlight; // 0x0050 + bool m_bGlowing; // 0x0051 +}; +class CInstancedSceneEntity : public CSceneEntity // server +{ + CHandle< CBaseEntity > m_hOwner; // 0x0730 + bool m_bHadOwner; // 0x0734 + float32 m_flPostSpeakDelay; // 0x0738 + float32 m_flPreDelay; // 0x073C + bool m_bIsBackground; // 0x0740 + bool m_bRemoveOnCompletion; // 0x0741 + CHandle< CBaseEntity > m_hTarget; // 0x0744 +}; +class CPulseCell_BaseValue : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class CCitadelSoundOpvarSetOBB : public CBaseEntity // server +{ + CUtlSymbolLarge m_iszStackName; // 0x04A8 + CUtlSymbolLarge m_iszOperatorName; // 0x04B0 + CUtlSymbolLarge m_iszOpvarName; // 0x04B8 + Vector m_vDistanceInnerMins; // 0x04C0 + Vector m_vDistanceInnerMaxs; // 0x04CC + Vector m_vDistanceOuterMins; // 0x04D8 + Vector m_vDistanceOuterMaxs; // 0x04E4 + int32 m_nAABBDirection; // 0x04F0 +}; +class CSoundEventParameter : public CBaseEntity // server +{ + CUtlSymbolLarge m_iszParamName; // 0x04C0 + float32 m_flFloatValue; // 0x04C8 +}; +class CPlayer_WaterServices : public CPlayerPawnComponent // server +{ +}; +class CPulseCell_BooleanSwitchState : public CPulseCell_BaseState // pulse_runtime_lib +{ + PulseObservableBoolExpression_t m_Condition; // 0x0048 + CPulse_OutflowConnection m_SubGraph; // 0x00C0 + CPulse_OutflowConnection m_WhenTrue; // 0x0108 + CPulse_OutflowConnection m_WhenFalse; // 0x0150 +}; +class CRotButton : public CBaseButton // server +{ +}; +class CEnvViewPunch : public CPointEntity // server +{ + float32 m_flRadius; // 0x04A8 + QAngle m_angViewPunch; // 0x04AC +}; +class CDamageRecord // server +{ + CHandle< CCSPlayerPawn > m_PlayerDamager; // 0x0030 + CHandle< CCSPlayerPawn > m_PlayerRecipient; // 0x0034 + CHandle< CCSPlayerController > m_hPlayerControllerDamager; // 0x0038 + CHandle< CCSPlayerController > m_hPlayerControllerRecipient; // 0x003C + CUtlString m_szPlayerDamagerName; // 0x0040 + CUtlString m_szPlayerRecipientName; // 0x0048 + uint64 m_DamagerXuid; // 0x0050 + uint64 m_RecipientXuid; // 0x0058 + float32 m_flBulletsDamage; // 0x0060 + float32 m_flDamage; // 0x0064 + float32 m_flActualHealthRemoved; // 0x0068 + int32 m_iNumHits; // 0x006C + int32 m_iLastBulletUpdate; // 0x0070 + bool m_bIsOtherEnemy; // 0x0074 + EKillTypes_t m_killType; // 0x0075 +}; +class VPhysicsCollisionAttribute_t // server +{ + uint64 m_nInteractsAs; // 0x0008 + uint64 m_nInteractsWith; // 0x0010 + uint64 m_nInteractsExclude; // 0x0018 + uint32 m_nEntityId; // 0x0020 + uint32 m_nOwnerId; // 0x0024 + uint16 m_nHierarchyId; // 0x0028 + uint16 m_nDetailLayerMask; // 0x002A + uint8 m_nDetailLayerMaskType; // 0x002C + uint8 m_nTargetDetailLayer; // 0x002D + uint8 m_nCollisionGroup; // 0x002E + uint8 m_nCollisionFunctionMask; // 0x002F +}; +class CItemKevlar : public CItem // server +{ +}; +class CFuncShatterglass : public CBaseModelEntity // server +{ + matrix3x4_t m_matPanelTransform; // 0x0730 + matrix3x4_t m_matPanelTransformWsTemp; // 0x0760 + CUtlVector< uint32 > m_vecShatterGlassShards; // 0x0790 + Vector2D m_PanelSize; // 0x07A8 + GameTime_t m_flLastShatterSoundEmitTime; // 0x07B0 + GameTime_t m_flLastCleanupTime; // 0x07B4 + GameTime_t m_flInitAtTime; // 0x07B8 + float32 m_flGlassThickness; // 0x07BC + float32 m_flSpawnInvulnerability; // 0x07C0 + bool m_bBreakSilent; // 0x07C4 + bool m_bBreakShardless; // 0x07C5 + bool m_bBroken; // 0x07C6 + bool m_bGlassNavIgnore; // 0x07C7 + bool m_bGlassInFrame; // 0x07C8 + bool m_bStartBroken; // 0x07C9 + uint8 m_iInitialDamageType; // 0x07CA + CUtlSymbolLarge m_szDamagePositioningEntityName01; // 0x07D0 + CUtlSymbolLarge m_szDamagePositioningEntityName02; // 0x07D8 + CUtlSymbolLarge m_szDamagePositioningEntityName03; // 0x07E0 + CUtlSymbolLarge m_szDamagePositioningEntityName04; // 0x07E8 + CUtlVector< Vector > m_vInitialDamagePositions; // 0x07F0 + CUtlVector< Vector > m_vExtraDamagePositions; // 0x0808 + CUtlVector< Vector4D > m_vInitialPanelVertices; // 0x0820 + CEntityIOOutput m_OnBroken; // 0x0838 + uint8 m_iSurfaceType; // 0x0850 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hMaterialDamageBase; // 0x0858 +}; +class CNavWalkable : public CPointEntity // server +{ +}; +class CPlantedC4 : public CBaseAnimGraph // server +{ + bool m_bBombTicking; // 0x0A28 + GameTime_t m_flC4Blow; // 0x0A2C + int32 m_nBombSite; // 0x0A30 + int32 m_nSourceSoundscapeHash; // 0x0A34 + bool m_bAbortDetonationBecauseWorldIsFrozen; // 0x0A38 + CAttributeContainer m_AttributeManager; // 0x0A40 + CEntityIOOutput m_OnBombDefused; // 0x0D38 + CEntityIOOutput m_OnBombBeginDefuse; // 0x0D50 + CEntityIOOutput m_OnBombDefuseAborted; // 0x0D68 + bool m_bCannotBeDefused; // 0x0D80 + EntitySpottedState_t m_entitySpottedState; // 0x0D88 + int32 m_nSpotRules; // 0x0DA0 + bool m_bHasExploded; // 0x0DA4 + bool m_bBombDefused; // 0x0DA5 + bool m_bTrainingPlacedByPlayer; // 0x0DA6 + float32 m_flTimerLength; // 0x0DA8 + bool m_bBeingDefused; // 0x0DAC + GameTime_t m_fLastDefuseTime; // 0x0DB4 + float32 m_flDefuseLength; // 0x0DBC + GameTime_t m_flDefuseCountDown; // 0x0DC0 + CHandle< CCSPlayerPawn > m_hBombDefuser; // 0x0DC4 + int32 m_iProgressBarTime; // 0x0DC8 + bool m_bVoiceAlertFired; // 0x0DCC + bool[4] m_bVoiceAlertPlayed; // 0x0DCD + GameTime_t m_flNextBotBeepTime; // 0x0DD4 + QAngle m_angCatchUpToPlayerEye; // 0x0DDC + GameTime_t m_flLastSpinDetectionTime; // 0x0DE8 +}; +class CEnvSoundscapeProxyAlias_snd_soundscape_proxy : public CEnvSoundscapeProxy // server +{ +}; +class CVoteController : public CBaseEntity // server +{ + int32 m_iActiveIssueIndex; // 0x04A8 + int32 m_iOnlyTeamToVote; // 0x04AC + int32[5] m_nVoteOptionCount; // 0x04B0 + int32 m_nPotentialVotes; // 0x04C4 + bool m_bIsYesNoVote; // 0x04C8 + CountdownTimer m_acceptingVotesTimer; // 0x04D0 + CountdownTimer m_executeCommandTimer; // 0x04E8 + CountdownTimer m_resetVoteTimer; // 0x0500 + int32[64] m_nVotesCast; // 0x0518 + CPlayerSlot m_playerHoldingVote; // 0x0618 + CPlayerSlot m_playerOverrideForVote; // 0x061C + int32 m_nHighestCountIndex; // 0x0620 + CUtlVector< CBaseIssue* > m_potentialIssues; // 0x0628 + CUtlVector< char* > m_VoteOptions; // 0x0640 +}; +class CPulseCell_Inflow_Yield : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_UnyieldResume; // 0x0048 +}; +class CPulseMathlib // pulse_runtime_lib +{ +}; +class CPhysImpact : public CPointEntity // server +{ + float32 m_damage; // 0x04A8 + float32 m_distance; // 0x04AC + CUtlSymbolLarge m_directionEntityName; // 0x04B0 +}; +class CBaseEntity : public CEntityInstance // server +{ + CBodyComponent* m_CBodyComponent; // 0x0038 + CNetworkTransmitComponent m_NetworkTransmitComponent; // 0x0040 + CUtlVector< thinkfunc_t > m_aThinkFunctions; // 0x0250 + int32 m_iCurrentThinkContext; // 0x0268 + GameTick_t m_nLastThinkTick; // 0x026C + bool m_bDisabledContextThinks; // 0x0270 + CTypedBitVec< 64 > m_isSteadyState; // 0x0280 + float32 m_lastNetworkChange; // 0x0288 + CUtlVector< ResponseContext_t > m_ResponseContexts; // 0x0298 + CUtlSymbolLarge m_iszResponseContext; // 0x02B0 + int32 m_iHealth; // 0x02D8 + int32 m_iMaxHealth; // 0x02DC + uint8 m_lifeState; // 0x02E0 + float32 m_flDamageAccumulator; // 0x02E4 + bool m_bTakesDamage; // 0x02E8 + TakeDamageFlags_t m_nTakeDamageFlags; // 0x02F0 + EntityPlatformTypes_t m_nPlatformType; // 0x02F8 + MoveCollide_t m_MoveCollide; // 0x02FA + MoveType_t m_MoveType; // 0x02FB + MoveType_t m_nActualMoveType; // 0x02FC + uint8 m_nWaterTouch; // 0x02FD + uint8 m_nSlimeTouch; // 0x02FE + bool m_bRestoreInHierarchy; // 0x02FF + CUtlSymbolLarge m_target; // 0x0300 + CHandle< CBaseFilter > m_hDamageFilter; // 0x0308 + CUtlSymbolLarge m_iszDamageFilterName; // 0x0310 + float32 m_flMoveDoneTime; // 0x0318 + CUtlStringToken m_nSubclassID; // 0x031C + float32 m_flAnimTime; // 0x0328 + float32 m_flSimulationTime; // 0x032C + GameTime_t m_flCreateTime; // 0x0330 + bool m_bClientSideRagdoll; // 0x0334 + uint8 m_ubInterpolationFrame; // 0x0335 + Vector m_vPrevVPhysicsUpdatePos; // 0x0338 + uint8 m_iTeamNum; // 0x0344 + CUtlSymbolLarge m_iGlobalname; // 0x0348 + int32 m_iSentToClients; // 0x0350 + float32 m_flSpeed; // 0x0354 + CUtlString m_sUniqueHammerID; // 0x0358 + uint32 m_spawnflags; // 0x0360 + GameTick_t m_nNextThinkTick; // 0x0364 + int32 m_nSimulationTick; // 0x0368 + CEntityIOOutput m_OnKilled; // 0x0370 + uint32 m_fFlags; // 0x0388 + Vector m_vecAbsVelocity; // 0x038C + CNetworkVelocityVector m_vecVelocity; // 0x0398 + Vector m_vecBaseVelocity; // 0x03C8 + int32 m_nPushEnumCount; // 0x03D4 + CCollisionProperty* m_pCollision; // 0x03D8 + CHandle< CBaseEntity > m_hEffectEntity; // 0x03E0 + CHandle< CBaseEntity > m_hOwnerEntity; // 0x03E4 + uint32 m_fEffects; // 0x03E8 + CHandle< CBaseEntity > m_hGroundEntity; // 0x03EC + int32 m_nGroundBodyIndex; // 0x03F0 + float32 m_flFriction; // 0x03F4 + float32 m_flElasticity; // 0x03F8 + float32 m_flGravityScale; // 0x03FC + float32 m_flTimeScale; // 0x0400 + float32 m_flWaterLevel; // 0x0404 + bool m_bGravityDisabled; // 0x0408 + bool m_bAnimatedEveryTick; // 0x0409 + float32 m_flActualGravityScale; // 0x040C + bool m_bGravityActuallyDisabled; // 0x0410 + bool m_bDisableLowViolence; // 0x0411 + uint8 m_nWaterType; // 0x0412 + int32 m_iEFlags; // 0x0414 + CEntityIOOutput m_OnUser1; // 0x0418 + CEntityIOOutput m_OnUser2; // 0x0430 + CEntityIOOutput m_OnUser3; // 0x0448 + CEntityIOOutput m_OnUser4; // 0x0460 + int32 m_iInitialTeamNum; // 0x0478 + GameTime_t m_flNavIgnoreUntilTime; // 0x047C + QAngle m_vecAngVelocity; // 0x0480 + bool m_bNetworkQuantizeOriginAndAngles; // 0x048C + bool m_bLagCompensate; // 0x048D + CHandle< CBaseEntity > m_pBlocker; // 0x0490 + float32 m_flLocalTime; // 0x0494 + float32 m_flVPhysicsUpdateLocalTime; // 0x0498 + BloodType m_nBloodType; // 0x049C + CPulseGraphInstance_ServerEntity* m_pPulseGraphInstance; // 0x04A0 +}; +class CPlayer_UseServices : public CPlayerPawnComponent // server +{ +}; +class CGameSceneNodeHandle // server +{ + CEntityHandle m_hOwner; // 0x0008 + CUtlStringToken m_name; // 0x000C +}; +class CMarkupVolumeWithRef : public CMarkupVolumeTagged // server +{ + bool m_bUseRef; // 0x0778 + Vector m_vRefPosEntitySpace; // 0x077C + VectorWS m_vRefPosWorldSpace; // 0x0788 + float32 m_flRefDot; // 0x0794 +}; +class CCSGO_TeamSelectCharacterPosition : public CCSGO_TeamPreviewCharacterPosition // server +{ +}; +class CPulseCell_Unknown : public CPulseCell_Base // pulse_runtime_lib +{ + KeyValues3 m_UnknownKeys; // 0x0048 +}; +class CFuncPlatRot : public CFuncPlat // server +{ + QAngle m_end; // 0x07E0 + QAngle m_start; // 0x07EC +}; +class CRagdollMagnet : public CPointEntity // server +{ + bool m_bDisabled; // 0x04A8 + float32 m_radius; // 0x04AC + float32 m_force; // 0x04B0 + VectorWS m_axis; // 0x04B4 +}; +class CInfoInstructorHintTarget : public CPointEntity // server +{ +}; +class CSpriteAlias_env_glow : public CSprite // server +{ +}; +class CFireCrackerBlast : public CInferno // server +{ +}; +class CSpotlightEnd : public CBaseModelEntity // server +{ + float32 m_flLightScale; // 0x0730 + float32 m_Radius; // 0x0734 + Vector m_vSpotlightDir; // 0x0738 + VectorWS m_vSpotlightOrg; // 0x0744 +}; +class CEnvSky : public CBaseModelEntity // server +{ + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hSkyMaterial; // 0x0730 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hSkyMaterialLightingOnly; // 0x0738 + bool m_bStartDisabled; // 0x0740 + Color m_vTintColor; // 0x0741 + Color m_vTintColorLightingOnly; // 0x0745 + float32 m_flBrightnessScale; // 0x074C + int32 m_nFogType; // 0x0750 + float32 m_flFogMinStart; // 0x0754 + float32 m_flFogMinEnd; // 0x0758 + float32 m_flFogMaxStart; // 0x075C + float32 m_flFogMaxEnd; // 0x0760 + bool m_bEnabled; // 0x0764 +}; +class CInfoSpawnGroupLandmark : public CPointEntity // server +{ +}; +class CPointAngleSensor : public CPointEntity // server +{ + bool m_bDisabled; // 0x04A8 + CUtlSymbolLarge m_nLookAtName; // 0x04B0 + CHandle< CBaseEntity > m_hTargetEntity; // 0x04B8 + CHandle< CBaseEntity > m_hLookAtEntity; // 0x04BC + float32 m_flDuration; // 0x04C0 + float32 m_flDotTolerance; // 0x04C4 + GameTime_t m_flFacingTime; // 0x04C8 + bool m_bFired; // 0x04CC + CEntityIOOutput m_OnFacingLookat; // 0x04D0 + CEntityIOOutput m_OnNotFacingLookat; // 0x04E8 + CEntityOutputTemplate< Vector, Vector > m_TargetDir; // 0x0500 + CEntityOutputTemplate< float32, float32 > m_FacingPercentage; // 0x0528 +}; +class CEnvWindController : public CBaseEntity // server +{ + CEnvWindShared m_EnvWindShared; // 0x04A8 + float32 m_fDirectionVariation; // 0x05D8 + float32 m_fSpeedVariation; // 0x05DC + float32 m_fTurbulence; // 0x05E0 + float32 m_fVolumeHalfExtentXY; // 0x05E4 + float32 m_fVolumeHalfExtentZ; // 0x05E8 + int32 m_nVolumeResolutionXY; // 0x05EC + int32 m_nVolumeResolutionZ; // 0x05F0 + int32 m_nClipmapLevels; // 0x05F4 + bool m_bIsMaster; // 0x05F8 + bool m_bFirstTime; // 0x05F9 +}; +class CSPerRoundStats_t // server +{ + int32 m_iKills; // 0x0030 + int32 m_iDeaths; // 0x0034 + int32 m_iAssists; // 0x0038 + int32 m_iDamage; // 0x003C + int32 m_iEquipmentValue; // 0x0040 + int32 m_iMoneySaved; // 0x0044 + int32 m_iKillReward; // 0x0048 + int32 m_iLiveTime; // 0x004C + int32 m_iHeadShotKills; // 0x0050 + int32 m_iObjective; // 0x0054 + int32 m_iCashEarned; // 0x0058 + int32 m_iUtilityDamage; // 0x005C + int32 m_iEnemiesFlashed; // 0x0060 +}; +class CGenericConstraint : public CPhysConstraint // server +{ + JointMotion_t m_nLinearMotionX; // 0x0510 + JointMotion_t m_nLinearMotionY; // 0x0514 + JointMotion_t m_nLinearMotionZ; // 0x0518 + float32 m_flLinearFrequencyX; // 0x051C + float32 m_flLinearFrequencyY; // 0x0520 + float32 m_flLinearFrequencyZ; // 0x0524 + float32 m_flLinearDampingRatioX; // 0x0528 + float32 m_flLinearDampingRatioY; // 0x052C + float32 m_flLinearDampingRatioZ; // 0x0530 + float32 m_flMaxLinearImpulseX; // 0x0534 + float32 m_flMaxLinearImpulseY; // 0x0538 + float32 m_flMaxLinearImpulseZ; // 0x053C + float32 m_flBreakAfterTimeX; // 0x0540 + float32 m_flBreakAfterTimeY; // 0x0544 + float32 m_flBreakAfterTimeZ; // 0x0548 + GameTime_t m_flBreakAfterTimeStartTimeX; // 0x054C + GameTime_t m_flBreakAfterTimeStartTimeY; // 0x0550 + GameTime_t m_flBreakAfterTimeStartTimeZ; // 0x0554 + float32 m_flBreakAfterTimeThresholdX; // 0x0558 + float32 m_flBreakAfterTimeThresholdY; // 0x055C + float32 m_flBreakAfterTimeThresholdZ; // 0x0560 + float32 m_flNotifyForceX; // 0x0564 + float32 m_flNotifyForceY; // 0x0568 + float32 m_flNotifyForceZ; // 0x056C + float32 m_flNotifyForceMinTimeX; // 0x0570 + float32 m_flNotifyForceMinTimeY; // 0x0574 + float32 m_flNotifyForceMinTimeZ; // 0x0578 + GameTime_t m_flNotifyForceLastTimeX; // 0x057C + GameTime_t m_flNotifyForceLastTimeY; // 0x0580 + GameTime_t m_flNotifyForceLastTimeZ; // 0x0584 + bool m_bAxisNotifiedX; // 0x0588 + bool m_bAxisNotifiedY; // 0x0589 + bool m_bAxisNotifiedZ; // 0x058A + JointMotion_t m_nAngularMotionX; // 0x058C + JointMotion_t m_nAngularMotionY; // 0x0590 + JointMotion_t m_nAngularMotionZ; // 0x0594 + float32 m_flAngularFrequencyX; // 0x0598 + float32 m_flAngularFrequencyY; // 0x059C + float32 m_flAngularFrequencyZ; // 0x05A0 + float32 m_flAngularDampingRatioX; // 0x05A4 + float32 m_flAngularDampingRatioY; // 0x05A8 + float32 m_flAngularDampingRatioZ; // 0x05AC + float32 m_flMaxAngularImpulseX; // 0x05B0 + float32 m_flMaxAngularImpulseY; // 0x05B4 + float32 m_flMaxAngularImpulseZ; // 0x05B8 + CEntityIOOutput m_NotifyForceReachedX; // 0x05C0 + CEntityIOOutput m_NotifyForceReachedY; // 0x05D8 + CEntityIOOutput m_NotifyForceReachedZ; // 0x05F0 +}; +class CPulseCell_Outflow_CycleRandom : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class CPulseCell_Step_PublicOutput : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseRuntimeOutputIndex_t m_OutputIndex; // 0x0048 +}; +class CEnvLaser : public CBeam // server +{ + CUtlSymbolLarge m_iszLaserTarget; // 0x07D0 + CSprite* m_pSprite; // 0x07D8 + CUtlSymbolLarge m_iszSpriteName; // 0x07E0 + Vector m_firePosition; // 0x07E8 + float32 m_flStartFrame; // 0x07F4 +}; +class CSoundOpvarSetEntity : public CBaseEntity // server +{ + CUtlSymbolLarge m_iszStackName; // 0x04C0 + CUtlSymbolLarge m_iszOperatorName; // 0x04C8 + CUtlSymbolLarge m_iszOpvarName; // 0x04D0 + int32 m_nOpvarType; // 0x04D8 + int32 m_nOpvarIndex; // 0x04DC + float32 m_flOpvarValue; // 0x04E0 + CUtlSymbolLarge m_OpvarValueString; // 0x04E8 + bool m_bSetOnSpawn; // 0x04F0 +}; +class CEnvBeverage : public CBaseEntity // server +{ + bool m_CanInDispenser; // 0x04A8 + int32 m_nBeverageType; // 0x04AC +}; +class CPhysMotor : public CLogicalEntity // server +{ + CUtlSymbolLarge m_nameAttach; // 0x04A8 + CUtlSymbolLarge m_nameAnchor; // 0x04B0 + CHandle< CBaseEntity > m_hAttachedObject; // 0x04B8 + CHandle< CBaseEntity > m_hAnchorObject; // 0x04BC + float32 m_spinUp; // 0x04C0 + float32 m_spinDown; // 0x04C4 + float32 m_flMotorFriction; // 0x04C8 + float32 m_additionalAcceleration; // 0x04CC + float32 m_angularAcceleration; // 0x04D0 + float32 m_flTorqueScale; // 0x04D4 + float32 m_flTargetSpeed; // 0x04D8 + float32 m_flSpeedWhenSpinUpOrSpinDownStarted; // 0x04DC + CMotorController m_motor; // 0x04F0 +}; +class CLogicGameEvent : public CLogicalEntity // server +{ + CUtlSymbolLarge m_iszEventName; // 0x04A8 +}; +class CPhysicsPropMultiplayer : public CPhysicsProp // server +{ +}; +class CPhysExplosion : public CPointEntity // server +{ + bool m_bExplodeOnSpawn; // 0x04A8 + float32 m_flMagnitude; // 0x04AC + float32 m_flDamage; // 0x04B0 + float32 m_radius; // 0x04B4 + CUtlSymbolLarge m_targetEntityName; // 0x04B8 + float32 m_flInnerRadius; // 0x04C0 + float32 m_flPushScale; // 0x04C4 + bool m_bConvertToDebrisWhenPossible; // 0x04C8 + bool m_bAffectInvulnerableEnts; // 0x04C9 + CEntityIOOutput m_OnPushedPlayer; // 0x04D0 +}; +class CSplineConstraint : public CPhysConstraint // server +{ + Vector m_vAnchorOffsetRestore; // 0x0558 + CHandle< CBaseEntity > m_hSplineEntity; // 0x0564 + bool m_bEnableLateralConstraint; // 0x0570 + bool m_bEnableVerticalConstraint; // 0x0571 + bool m_bEnableAngularConstraint; // 0x0572 + bool m_bEnableLimit; // 0x0573 + bool m_bFireEventsOnPath; // 0x0574 + float32 m_flLinearFrequency; // 0x0578 + float32 m_flLinarDampingRatio; // 0x057C + float32 m_flJointFriction; // 0x0580 + float32 m_flTransitionTime; // 0x0584 + VectorWS m_vPreSolveAnchorPos; // 0x0598 + GameTime_t m_StartTransitionTime; // 0x05A4 + Vector m_vTangentSpaceAnchorAtTransitionStart; // 0x05A8 +}; +class CLogicCompare : public CLogicalEntity // server +{ + float32 m_flInValue; // 0x04A8 + float32 m_flCompareValue; // 0x04AC + CEntityOutputTemplate< float32, float32 > m_OnLessThan; // 0x04B0 + CEntityOutputTemplate< float32, float32 > m_OnEqualTo; // 0x04D0 + CEntityOutputTemplate< float32, float32 > m_OnNotEqualTo; // 0x04F0 + CEntityOutputTemplate< float32, float32 > m_OnGreaterThan; // 0x0510 +}; +class CCSGameModeRules_Noop : public CCSGameModeRules // server +{ +}; +class CPulse_BlackboardReference // pulse_runtime_lib +{ + CStrongHandle< InfoForResourceTypeIPulseGraphDef > m_hBlackboardResource; // 0x0000 + PulseSymbol_t m_BlackboardResource; // 0x0008 + PulseDocNodeID_t m_nNodeID; // 0x0018 + CGlobalSymbol m_NodeName; // 0x0020 +}; +class CFuncTankTrain : public CFuncTrackTrain // server +{ + CEntityIOOutput m_OnDeath; // 0x0858 +}; +class CPointClientUIWorldPanel : public CBaseClientUIEntity // server +{ + bool m_bIgnoreInput; // 0x0890 + bool m_bLit; // 0x0891 + bool m_bFollowPlayerAcrossTeleport; // 0x0892 + float32 m_flWidth; // 0x0894 + float32 m_flHeight; // 0x0898 + float32 m_flDPI; // 0x089C + float32 m_flInteractDistance; // 0x08A0 + float32 m_flDepthOffset; // 0x08A4 + uint32 m_unOwnerContext; // 0x08A8 + uint32 m_unHorizontalAlign; // 0x08AC + uint32 m_unVerticalAlign; // 0x08B0 + uint32 m_unOrientation; // 0x08B4 + bool m_bAllowInteractionFromAllSceneWorlds; // 0x08B8 + CNetworkUtlVectorBase< CUtlSymbolLarge > m_vecCSSClasses; // 0x08C0 + bool m_bOpaque; // 0x08D8 + bool m_bNoDepth; // 0x08D9 + bool m_bVisibleWhenParentNoDraw; // 0x08DA + bool m_bRenderBackface; // 0x08DB + bool m_bUseOffScreenIndicator; // 0x08DC + bool m_bExcludeFromSaveGames; // 0x08DD + bool m_bGrabbable; // 0x08DE + bool m_bOnlyRenderToTexture; // 0x08DF + bool m_bDisableMipGen; // 0x08E0 + int32 m_nExplicitImageLayout; // 0x08E4 +}; +class CSoundEventSphereEntity : public CSoundEventEntity // server +{ + float32 m_flRadius; // 0x0558 +}; +class CCSPlayerController_InGameMoneyServices : public CPlayerControllerComponent // server +{ + bool m_bReceivesMoneyNextRound; // 0x0040 + int32 m_iMoneyEarnedForNextRound; // 0x0044 + int32 m_iAccount; // 0x0048 + int32 m_iStartAccount; // 0x004C + int32 m_iTotalCashSpent; // 0x0050 + int32 m_iCashSpentThisRound; // 0x0054 +}; +class CRuleBrushEntity : public CRuleEntity // server +{ +}; +class CMapVetoPickController : public CBaseEntity // server +{ + bool m_bPlayedIntroVcd; // 0x04A8 + bool m_bNeedToPlayFiveSecondsRemaining; // 0x04A9 + float64 m_dblPreMatchDraftSequenceTime; // 0x04C8 + bool m_bPreMatchDraftStateChanged; // 0x04D0 + int32 m_nDraftType; // 0x04D4 + int32 m_nTeamWinningCoinToss; // 0x04D8 + int32[64] m_nTeamWithFirstChoice; // 0x04DC + int32[7] m_nVoteMapIdsList; // 0x05DC + int32[64] m_nAccountIDs; // 0x05F8 + int32[64] m_nMapId0; // 0x06F8 + int32[64] m_nMapId1; // 0x07F8 + int32[64] m_nMapId2; // 0x08F8 + int32[64] m_nMapId3; // 0x09F8 + int32[64] m_nMapId4; // 0x0AF8 + int32[64] m_nMapId5; // 0x0BF8 + int32[64] m_nStartingSide0; // 0x0CF8 + int32 m_nCurrentPhase; // 0x0DF8 + int32 m_nPhaseStartTick; // 0x0DFC + int32 m_nPhaseDurationTicks; // 0x0E00 + CEntityOutputTemplate< CUtlSymbolLarge, CUtlSymbolLarge > m_OnMapVetoed; // 0x0E08 + CEntityOutputTemplate< CUtlSymbolLarge, CUtlSymbolLarge > m_OnMapPicked; // 0x0E28 + CEntityOutputTemplate< int32, int32 > m_OnSidesPicked; // 0x0E48 + CEntityOutputTemplate< int32, int32 > m_OnNewPhaseStarted; // 0x0E68 + CEntityOutputTemplate< int32, int32 > m_OnLevelTransition; // 0x0E88 +}; +class CAnimGraphNetworkedVariables // server +{ + CNetworkUtlVectorBase< uint32 > m_PredNetBoolVariables; // 0x0008 + CNetworkUtlVectorBase< uint8 > m_PredNetByteVariables; // 0x0020 + CNetworkUtlVectorBase< uint16 > m_PredNetUInt16Variables; // 0x0038 + CNetworkUtlVectorBase< int32 > m_PredNetIntVariables; // 0x0050 + CNetworkUtlVectorBase< uint32 > m_PredNetUInt32Variables; // 0x0068 + CNetworkUtlVectorBase< uint64 > m_PredNetUInt64Variables; // 0x0080 + CNetworkUtlVectorBase< float32 > m_PredNetFloatVariables; // 0x0098 + CNetworkUtlVectorBase< Vector > m_PredNetVectorVariables; // 0x00B0 + CNetworkUtlVectorBase< Quaternion > m_PredNetQuaternionVariables; // 0x00C8 + CNetworkUtlVectorBase< CGlobalSymbol > m_PredNetGlobalSymbolVariables; // 0x00E0 + CNetworkUtlVectorBase< uint32 > m_OwnerOnlyPredNetBoolVariables; // 0x00F8 + CNetworkUtlVectorBase< uint8 > m_OwnerOnlyPredNetByteVariables; // 0x0110 + CNetworkUtlVectorBase< uint16 > m_OwnerOnlyPredNetUInt16Variables; // 0x0128 + CNetworkUtlVectorBase< int32 > m_OwnerOnlyPredNetIntVariables; // 0x0140 + CNetworkUtlVectorBase< uint32 > m_OwnerOnlyPredNetUInt32Variables; // 0x0158 + CNetworkUtlVectorBase< uint64 > m_OwnerOnlyPredNetUInt64Variables; // 0x0170 + CNetworkUtlVectorBase< float32 > m_OwnerOnlyPredNetFloatVariables; // 0x0188 + CNetworkUtlVectorBase< Vector > m_OwnerOnlyPredNetVectorVariables; // 0x01A0 + CNetworkUtlVectorBase< Quaternion > m_OwnerOnlyPredNetQuaternionVariables; // 0x01B8 + CNetworkUtlVectorBase< CGlobalSymbol > m_OwnerOnlyPredNetGlobalSymbolVariables; // 0x01D0 + int32 m_nBoolVariablesCount; // 0x01E8 + int32 m_nOwnerOnlyBoolVariablesCount; // 0x01EC + int32 m_nRandomSeedOffset; // 0x01F0 + float32 m_flLastTeleportTime; // 0x01F4 +}; +class CFuncPropRespawnZone : public CBaseEntity // server +{ +}; +class CFilterModel : public CBaseFilter // server +{ + CUtlSymbolLarge m_iFilterModel; // 0x04E0 +}; +class CWeaponP90 : public CCSWeaponBaseGun // server +{ +}; +class CNavSpaceInfo : public CPointEntity // server +{ +}; +class CPhysSlideConstraint : public CPhysConstraint // server +{ + VectorWS m_axisEnd; // 0x0510 + float32 m_slideFriction; // 0x051C + float32 m_systemLoadScale; // 0x0520 + float32 m_initialOffset; // 0x0524 + bool m_bEnableLinearConstraint; // 0x0528 + bool m_bEnableAngularConstraint; // 0x0529 + float32 m_flMotorFrequency; // 0x052C + float32 m_flMotorDampingRatio; // 0x0530 + bool m_bUseEntityPivot; // 0x0534 + ConstraintSoundInfo m_soundInfo; // 0x0538 +}; +class CPulseGameBlackboard : public CBaseEntity // server +{ + CUtlString m_strGraphName; // 0x04B0 + CUtlString m_strStateBlob; // 0x04B8 +}; +class CSoundEventEntityAlias_snd_event_point : public CSoundEventEntity // server +{ +}; +class CPulseCell_Value_RandomInt : public CPulseCell_BaseValue // pulse_runtime_lib +{ +}; +class CPointGamestatsCounter : public CPointEntity // server +{ + CUtlSymbolLarge m_strStatisticName; // 0x04A8 + bool m_bDisabled; // 0x04B0 +}; +class CTextureBasedAnimatable : public CBaseModelEntity // server +{ + bool m_bLoop; // 0x0730 + float32 m_flFPS; // 0x0734 + CStrongHandle< InfoForResourceTypeCTextureBase > m_hPositionKeys; // 0x0738 + CStrongHandle< InfoForResourceTypeCTextureBase > m_hRotationKeys; // 0x0740 + Vector m_vAnimationBoundsMin; // 0x0748 + Vector m_vAnimationBoundsMax; // 0x0754 + float32 m_flStartTime; // 0x0760 + float32 m_flStartFrame; // 0x0764 +}; +class CSprite : public CBaseModelEntity // server +{ + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hSpriteMaterial; // 0x0730 + CHandle< CBaseEntity > m_hAttachedToEntity; // 0x0738 + AttachmentHandle_t m_nAttachment; // 0x073C + float32 m_flSpriteFramerate; // 0x0740 + float32 m_flFrame; // 0x0744 + GameTime_t m_flDieTime; // 0x0748 + uint32 m_nBrightness; // 0x0758 + float32 m_flBrightnessDuration; // 0x075C + float32 m_flSpriteScale; // 0x0760 + float32 m_flScaleDuration; // 0x0764 + bool m_bWorldSpaceScale; // 0x0768 + float32 m_flGlowProxySize; // 0x076C + float32 m_flHDRColorScale; // 0x0770 + GameTime_t m_flLastTime; // 0x0774 + float32 m_flMaxFrame; // 0x0778 + float32 m_flStartScale; // 0x077C + float32 m_flDestScale; // 0x0780 + GameTime_t m_flScaleTimeStart; // 0x0784 + int32 m_nStartBrightness; // 0x0788 + int32 m_nDestBrightness; // 0x078C + GameTime_t m_flBrightnessTimeStart; // 0x0790 + int32 m_nSpriteWidth; // 0x0794 + int32 m_nSpriteHeight; // 0x0798 +}; +class CBaseMoveBehavior : public CPathKeyFrame // server +{ + int32 m_iPositionInterpolator; // 0x0500 + int32 m_iRotationInterpolator; // 0x0504 + float32 m_flAnimStartTime; // 0x0508 + float32 m_flAnimEndTime; // 0x050C + float32 m_flAverageSpeedAcrossFrame; // 0x0510 + CPathKeyFrame* m_pCurrentKeyFrame; // 0x0518 + CPathKeyFrame* m_pTargetKeyFrame; // 0x0520 + CPathKeyFrame* m_pPreKeyFrame; // 0x0528 + CPathKeyFrame* m_pPostKeyFrame; // 0x0530 + float32 m_flTimeIntoFrame; // 0x0538 + int32 m_iDirection; // 0x053C +}; +class CDynamicLight : public CBaseModelEntity // server +{ + uint8 m_ActualFlags; // 0x0730 + uint8 m_Flags; // 0x0731 + uint8 m_LightStyle; // 0x0732 + bool m_On; // 0x0733 + float32 m_Radius; // 0x0734 + int32 m_Exponent; // 0x0738 + float32 m_InnerAngle; // 0x073C + float32 m_OuterAngle; // 0x0740 + float32 m_SpotRadius; // 0x0744 +}; +class CWeaponTaser : public CCSWeaponBaseGun // server +{ + GameTime_t m_fFireTime; // 0x1150 + int32 m_nLastAttackTick; // 0x1154 +}; +class CEnvCubemapBox : public CEnvCubemap // server +{ +}; +class CRotDoor : public CBaseDoor // server +{ + bool m_bSolidBsp; // 0x0930 +}; +class CPathMover : public CPathWithDynamicNodes // server +{ + CUtlVector< CHandle< CFuncMover > > m_vecMovers; // 0x05F0 + CHandle< CPathMoverEntitySpawner > m_hMoverSpawner; // 0x0608 + CUtlSymbolLarge m_iszMoverSpawnerName; // 0x0610 +}; +class CFuncVPhysicsClip : public CBaseModelEntity // server +{ + bool m_bDisabled; // 0x0730 +}; +class CPhysFixed : public CPhysConstraint // server +{ + float32 m_flLinearFrequency; // 0x0508 + float32 m_flLinearDampingRatio; // 0x050C + float32 m_flAngularFrequency; // 0x0510 + float32 m_flAngularDampingRatio; // 0x0514 + bool m_bEnableLinearConstraint; // 0x0518 + bool m_bEnableAngularConstraint; // 0x0519 + CUtlSymbolLarge m_sBoneName1; // 0x0520 + CUtlSymbolLarge m_sBoneName2; // 0x0528 +}; +class CLogicNavigation : public CLogicalEntity // server +{ + bool m_isOn; // 0x04B0 + navproperties_t m_navProperty; // 0x04B4 +}; +class CPathSimple : public CBaseEntity // server +{ + CPathQueryComponent m_CPathQueryComponent; // 0x04B0 + CUtlString m_pathString; // 0x05A0 + bool m_bClosedLoop; // 0x05A8 +}; +class CPathParticleRopeAlias_path_particle_rope_clientside : public CPathParticleRope // server +{ +}; +class CCSPointPulseAPI // server +{ +}; +class CEnvWindVolume : public CBaseEntity // server +{ + bool m_bActive; // 0x04A8 + Vector m_vBoxMins; // 0x04AC + Vector m_vBoxMaxs; // 0x04B8 + bool m_bStartDisabled; // 0x04C4 + int32 m_nShape; // 0x04C8 + float32 m_fWindSpeedMultiplier; // 0x04CC + float32 m_fWindTurbulenceMultiplier; // 0x04D0 + float32 m_fWindSpeedVariationMultiplier; // 0x04D4 + float32 m_fWindDirectionVariationMultiplier; // 0x04D8 +}; +class CFuncElectrifiedVolume : public CFuncBrush // server +{ + CUtlSymbolLarge m_EffectName; // 0x0750 + CUtlSymbolLarge m_EffectInterpenetrateName; // 0x0758 + CUtlSymbolLarge m_EffectZapName; // 0x0760 + CUtlSymbolLarge m_iszEffectSource; // 0x0768 +}; +class CCSMinimapBoundary : public CBaseEntity // server +{ +}; +class EntitySpottedState_t // server +{ + bool m_bSpotted; // 0x0008 + uint32[2] m_bSpottedByMask; // 0x000C +}; +class fogparams_t // server +{ + Vector dirPrimary; // 0x0008 + Color colorPrimary; // 0x0014 + Color colorSecondary; // 0x0018 + Color colorPrimaryLerpTo; // 0x001C + Color colorSecondaryLerpTo; // 0x0020 + float32 start; // 0x0024 + float32 end; // 0x0028 + float32 farz; // 0x002C + float32 maxdensity; // 0x0030 + float32 exponent; // 0x0034 + float32 HDRColorScale; // 0x0038 + float32 skyboxFogFactor; // 0x003C + float32 skyboxFogFactorLerpTo; // 0x0040 + float32 startLerpTo; // 0x0044 + float32 endLerpTo; // 0x0048 + float32 maxdensityLerpTo; // 0x004C + GameTime_t lerptime; // 0x0050 + float32 duration; // 0x0054 + float32 blendtobackground; // 0x0058 + float32 scattering; // 0x005C + float32 locallightscale; // 0x0060 + bool enable; // 0x0064 + bool blend; // 0x0065 + bool m_bPadding2; // 0x0066 + bool m_bPadding; // 0x0067 +}; +class CSoundEventOBBEntity : public CSoundEventEntity // server +{ + Vector m_vMins; // 0x0558 + Vector m_vMaxs; // 0x0564 +}; +class CFlashbangProjectile : public CBaseCSGrenadeProjectile // server +{ + float32 m_flTimeToDetonate; // 0x0BB0 + uint8 m_numOpponentsHit; // 0x0BB4 + uint8 m_numTeammatesHit; // 0x0BB5 +}; +class CTriggerMultiple : public CBaseTrigger // server +{ + CEntityIOOutput m_OnTrigger; // 0x0890 +}; +class CPhysBallSocket : public CPhysConstraint // server +{ + float32 m_flJointFriction; // 0x0508 + bool m_bEnableSwingLimit; // 0x050C + float32 m_flSwingLimit; // 0x0510 + bool m_bEnableTwistLimit; // 0x0514 + float32 m_flMinTwistAngle; // 0x0518 + float32 m_flMaxTwistAngle; // 0x051C +}; +class CDebugHistory : public CBaseEntity // server +{ + int32 m_nNpcEvents; // 0x3E84E8 +}; +class CSoundOpvarSetPointBase : public CBaseEntity // server +{ + bool m_bDisabled; // 0x04A8 + CEntityHandle m_hSource; // 0x04AC + CUtlSymbolLarge m_iszSourceEntityName; // 0x04C8 + Vector m_vLastPosition; // 0x0520 + float32 m_flRefreshTime; // 0x052C + CUtlSymbolLarge m_iszStackName; // 0x0530 + CUtlSymbolLarge m_iszOperatorName; // 0x0538 + CUtlSymbolLarge m_iszOpvarName; // 0x0540 + int32 m_iOpvarIndex; // 0x0548 + bool m_bUseAutoCompare; // 0x054C + bool m_bFastRefresh; // 0x054D +}; +class CPathKeyFrame : public CLogicalEntity // server +{ + Vector m_Origin; // 0x04A8 + QAngle m_Angles; // 0x04B4 + Quaternion m_qAngle; // 0x04C0 + CUtlSymbolLarge m_iNextKey; // 0x04D0 + float32 m_flNextTime; // 0x04D8 + CPathKeyFrame* m_pNextKey; // 0x04E0 + CPathKeyFrame* m_pPrevKey; // 0x04E8 + float32 m_flMoveSpeed; // 0x04F0 +}; +class CWeaponCZ75a : public CCSWeaponBaseGun // server +{ + bool m_bMagazineRemoved; // 0x1150 +}; +class CScriptTriggerPush : public CTriggerPush // server +{ + Vector m_vExtent; // 0x08C8 +}; +class CRevertSaved : public CModelPointEntity // server +{ + float32 m_loadTime; // 0x0730 + float32 m_Duration; // 0x0734 + float32 m_HoldTime; // 0x0738 +}; +class CTriggerBombReset : public CBaseTrigger // server +{ +}; +class CTriggerHurt : public CBaseTrigger // server +{ + float32 m_flOriginalDamage; // 0x0890 + float32 m_flDamage; // 0x0894 + float32 m_flDamageCap; // 0x0898 + GameTime_t m_flLastDmgTime; // 0x089C + float32 m_flForgivenessDelay; // 0x08A0 + DamageTypes_t m_bitsDamageInflict; // 0x08A4 + int32 m_damageModel; // 0x08A8 + bool m_bNoDmgForce; // 0x08AC + Vector m_vDamageForce; // 0x08B0 + bool m_thinkAlways; // 0x08BC + float32 m_hurtThinkPeriod; // 0x08C0 + CEntityIOOutput m_OnHurt; // 0x08C8 + CEntityIOOutput m_OnHurtPlayer; // 0x08E0 + CUtlVector< CHandle< CBaseEntity > > m_hurtEntities; // 0x08F8 +}; +class CCSPlayer_WeaponServices : public CPlayer_WeaponServices // server +{ + GameTime_t m_flNextAttack; // 0x00C0 + bool m_bIsLookingAtWeapon; // 0x00C4 + bool m_bIsHoldingLookAtWeapon; // 0x00C5 + CHandle< CBasePlayerWeapon > m_hSavedWeapon; // 0x00C8 + int32 m_nTimeToMelee; // 0x00CC + int32 m_nTimeToSecondary; // 0x00D0 + int32 m_nTimeToPrimary; // 0x00D4 + int32 m_nTimeToSniperRifle; // 0x00D8 + bool m_bIsBeingGivenItem; // 0x00DC + bool m_bIsPickingUpItemWithUse; // 0x00DD + bool m_bPickedUpWeapon; // 0x00DE + bool m_bDisableAutoDeploy; // 0x00DF + bool m_bIsPickingUpGroundWeapon; // 0x00E0 + CNetworkUtlVectorBase< uint8 > m_networkAnimTiming; // 0x18B8 + bool m_bBlockInspectUntilNextGraphUpdate; // 0x18D0 +}; +class CRetakeGameRules // server +{ + int32 m_nMatchSeed; // 0x0138 + bool m_bBlockersPresent; // 0x013C + bool m_bRoundInProgress; // 0x013D + int32 m_iFirstSecondHalfRound; // 0x0140 + int32 m_iBombSite; // 0x0144 + CHandle< CCSPlayerPawn > m_hBombPlanter; // 0x0148 +}; +class CEnvSoundscapeTriggerableAlias_snd_soundscape_triggerable : public CEnvSoundscapeTriggerable // server +{ +}; +class CInfoInstructorHintBombTargetA : public CPointEntity // server +{ +}; +class CTeamplayRules : public CMultiplayRules // server +{ +}; +class CScriptTriggerHurt : public CTriggerHurt // server +{ + Vector m_vExtent; // 0x0910 +}; +class CCSGO_WingmanIntroCharacterPosition : public CCSGO_TeamIntroCharacterPosition // server +{ +}; +class CWeaponMP9 : public CCSWeaponBaseGun // server +{ +}; +class CTriggerDetectExplosion : public CBaseTrigger // server +{ + CEntityIOOutput m_OnDetectedExplosion; // 0x08B8 +}; +class CFilterName : public CBaseFilter // server +{ + CUtlSymbolLarge m_iFilterName; // 0x04E0 +}; +class CSmokeGrenadeProjectile : public CBaseCSGrenadeProjectile // server +{ + int32 m_nSmokeEffectTickBegin; // 0x0BD8 + bool m_bDidSmokeEffect; // 0x0BDC + int32 m_nRandomSeed; // 0x0BE0 + Vector m_vSmokeColor; // 0x0BE4 + Vector m_vSmokeDetonationPos; // 0x0BF0 + CNetworkUtlVectorBase< uint8 > m_VoxelFrameData; // 0x0C00 + int32 m_nVoxelFrameDataSize; // 0x0C18 + int32 m_nVoxelUpdate; // 0x0C1C + GameTime_t m_flLastBounce; // 0x0C20 + GameTime_t m_fllastSimulationTime; // 0x0C24 + bool m_bExplodeFromInferno; // 0x2EA8 + bool m_bDidGroundScorch; // 0x2EA9 +}; +class CBlood : public CPointEntity // server +{ + QAngle m_vecSprayAngles; // 0x04A8 + Vector m_vecSprayDir; // 0x04B4 + float32 m_flAmount; // 0x04C0 + BloodType m_Color; // 0x04C4 +}; +class CCSTeam : public CTeam // server +{ + int32 m_nLastRecievedShorthandedRoundBonus; // 0x0560 + int32 m_nShorthandedRoundBonusStartRound; // 0x0564 + bool m_bSurrendered; // 0x0568 + char[512] m_szTeamMatchStat; // 0x0569 + int32 m_numMapVictories; // 0x076C + int32 m_scoreFirstHalf; // 0x0770 + int32 m_scoreSecondHalf; // 0x0774 + int32 m_scoreOvertime; // 0x0778 + char[129] m_szClanTeamname; // 0x077C + uint32 m_iClanID; // 0x0800 + char[8] m_szTeamFlagImage; // 0x0804 + char[8] m_szTeamLogoImage; // 0x080C + float32 m_flNextResourceTime; // 0x0814 + int32 m_iLastUpdateSentAt; // 0x0818 +}; +class CRulePointEntity : public CRuleEntity // server +{ + int32 m_Score; // 0x0738 +}; +class CPulse_CallInfo // pulse_runtime_lib +{ + PulseSymbol_t m_PortName; // 0x0000 + PulseDocNodeID_t m_nEditorNodeID; // 0x0010 + PulseRegisterMap_t m_RegisterMap; // 0x0018 + PulseDocNodeID_t m_CallMethodID; // 0x0048 + PulseRuntimeChunkIndex_t m_nSrcChunk; // 0x004C + int32 m_nSrcInstruction; // 0x0050 +}; +class CFuncMoveLinearAlias_momentary_door : public CFuncMoveLinear // server +{ +}; +class CBaseAnimGraph : public CBaseModelEntity // server +{ + CAnimGraphControllerManager m_graphControllerManager; // 0x0730 + CAnimGraphControllerBase* m_pMainGraphController; // 0x07E0 + bool m_bInitiallyPopulateInterpHistory; // 0x07E8 + IChoreoServices* m_pChoreoServices; // 0x07F0 + bool m_bAnimGraphUpdateEnabled; // 0x07F8 + float32 m_flMaxSlopeDistance; // 0x07FC + VectorWS m_vLastSlopeCheckPos; // 0x0800 + uint32 m_nAnimGraphUpdateId; // 0x080C + bool m_bAnimationUpdateScheduled; // 0x0810 + Vector m_vecForce; // 0x0814 + int32 m_nForceBone; // 0x0820 + PhysicsRagdollPose_t m_RagdollPose; // 0x0838 + bool m_bRagdollEnabled; // 0x0860 + bool m_bRagdollClientSide; // 0x0861 + CTransform m_xParentedRagdollRootInEntitySpace; // 0x0870 +}; +class CEnvCubemapFog : public CBaseEntity // server +{ + float32 m_flEndDistance; // 0x04A8 + float32 m_flStartDistance; // 0x04AC + float32 m_flFogFalloffExponent; // 0x04B0 + bool m_bHeightFogEnabled; // 0x04B4 + float32 m_flFogHeightWidth; // 0x04B8 + float32 m_flFogHeightEnd; // 0x04BC + float32 m_flFogHeightStart; // 0x04C0 + float32 m_flFogHeightExponent; // 0x04C4 + float32 m_flLODBias; // 0x04C8 + bool m_bActive; // 0x04CC + bool m_bStartDisabled; // 0x04CD + float32 m_flFogMaxOpacity; // 0x04D0 + int32 m_nCubemapSourceType; // 0x04D4 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hSkyMaterial; // 0x04D8 + CUtlSymbolLarge m_iszSkyEntity; // 0x04E0 + CStrongHandle< InfoForResourceTypeCTextureBase > m_hFogCubemapTexture; // 0x04E8 + bool m_bHasHeightFogEnd; // 0x04F0 + bool m_bFirstTime; // 0x04F1 +}; +class CPulseCell_InlineNodeSkipSelector : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseDocNodeID_t m_nFlowNodeID; // 0x0048 + bool m_bAnd; // 0x004C + PulseSelectorOutflowList_t m_PassOutflow; // 0x0050 + CPulse_OutflowConnection m_FailOutflow; // 0x0068 +}; +class CBaseDoor : public CBaseToggle // server +{ + QAngle m_angMoveEntitySpace; // 0x07C0 + Vector m_vecMoveDirParentSpace; // 0x07CC + locksound_t m_ls; // 0x07D8 + bool m_bForceClosed; // 0x07F8 + bool m_bDoorGroup; // 0x07F9 + bool m_bLocked; // 0x07FA + bool m_bIgnoreDebris; // 0x07FB + bool m_bNoNPCs; // 0x07FC + FuncDoorSpawnPos_t m_eSpawnPosition; // 0x0800 + float32 m_flBlockDamage; // 0x0804 + CUtlSymbolLarge m_NoiseMoving; // 0x0808 + CUtlSymbolLarge m_NoiseArrived; // 0x0810 + CUtlSymbolLarge m_NoiseMovingClosed; // 0x0818 + CUtlSymbolLarge m_NoiseArrivedClosed; // 0x0820 + CUtlSymbolLarge m_ChainTarget; // 0x0828 + CEntityIOOutput m_OnBlockedClosing; // 0x0830 + CEntityIOOutput m_OnBlockedOpening; // 0x0848 + CEntityIOOutput m_OnUnblockedClosing; // 0x0860 + CEntityIOOutput m_OnUnblockedOpening; // 0x0878 + CEntityIOOutput m_OnFullyClosed; // 0x0890 + CEntityIOOutput m_OnFullyOpen; // 0x08A8 + CEntityIOOutput m_OnClose; // 0x08C0 + CEntityIOOutput m_OnOpen; // 0x08D8 + CEntityIOOutput m_OnLockedUse; // 0x08F0 + bool m_bLoopMoveSound; // 0x0908 + bool m_bCreateNavObstacle; // 0x0928 + bool m_isChaining; // 0x0929 + bool m_bIsUsable; // 0x092A +}; +class CServerOnlyPointEntity : public CServerOnlyEntity // server +{ +}; +class CGameMoney : public CRulePointEntity // server +{ + CEntityIOOutput m_OnMoneySpent; // 0x0740 + CEntityIOOutput m_OnMoneySpentFail; // 0x0758 + int32 m_nMoney; // 0x0770 + CUtlString m_strAwardText; // 0x0778 +}; +class CEnvHudHint : public CPointEntity // server +{ + CUtlSymbolLarge m_iszMessage; // 0x04A8 +}; +class CNullEntity : public CBaseEntity // server +{ +}; +class CLogicalEntity : public CServerOnlyEntity // server +{ +}; +class CItemDefuser : public CItem // server +{ + EntitySpottedState_t m_entitySpottedState; // 0x0AC0 + int32 m_nSpotRules; // 0x0AD8 +}; +class CItemGenericTriggerHelper : public CBaseModelEntity // server +{ + CHandle< CItemGeneric > m_hParentItem; // 0x0730 +}; +class CPlayer_WeaponServices : public CPlayerPawnComponent // server +{ + CNetworkUtlVectorBase< CHandle< CBasePlayerWeapon > > m_hMyWeapons; // 0x0048 + CHandle< CBasePlayerWeapon > m_hActiveWeapon; // 0x0060 + CHandle< CBasePlayerWeapon > m_hLastWeapon; // 0x0064 + uint16[32] m_iAmmo; // 0x0068 + bool m_bPreventWeaponPickup; // 0x00A8 +}; +class CRagdollPropAttached : public CRagdollProp // server +{ + uint32 m_boneIndexAttached; // 0x0B70 + uint32 m_ragdollAttachedObjectIndex; // 0x0B74 + Vector m_attachmentPointBoneSpace; // 0x0B78 + Vector m_attachmentPointRagdollSpace; // 0x0B84 + bool m_bShouldDetach; // 0x0B90 + bool m_bShouldDeleteAttachedActivationRecord; // 0x0BA0 +}; +class CItemDogtags : public CItem // server +{ + CHandle< CCSPlayerPawn > m_OwningPlayer; // 0x0AC0 + CHandle< CCSPlayerPawn > m_KillingPlayer; // 0x0AC4 +}; +class CFuncPlat : public CBasePlatTrain // server +{ + CUtlSymbolLarge m_sNoise; // 0x07D8 +}; +class CBarnLight : public CBaseModelEntity // server +{ + bool m_bEnabled; // 0x0730 + int32 m_nColorMode; // 0x0734 + Color m_Color; // 0x0738 + float32 m_flColorTemperature; // 0x073C + float32 m_flBrightness; // 0x0740 + float32 m_flBrightnessScale; // 0x0744 + int32 m_nDirectLight; // 0x0748 + int32 m_nBakedShadowIndex; // 0x074C + int32 m_nLightPathUniqueId; // 0x0750 + int32 m_nLightMapUniqueId; // 0x0754 + int32 m_nLuminaireShape; // 0x0758 + float32 m_flLuminaireSize; // 0x075C + float32 m_flLuminaireAnisotropy; // 0x0760 + CUtlString m_LightStyleString; // 0x0768 + GameTime_t m_flLightStyleStartTime; // 0x0770 + CNetworkUtlVectorBase< CUtlString > m_QueuedLightStyleStrings; // 0x0778 + CNetworkUtlVectorBase< CUtlString > m_LightStyleEvents; // 0x0790 + CNetworkUtlVectorBase< CHandle< CBaseModelEntity > > m_LightStyleTargets; // 0x07A8 + CEntityIOOutput[4] m_StyleEvent; // 0x07C0 + CStrongHandle< InfoForResourceTypeCTextureBase > m_hLightCookie; // 0x0840 + float32 m_flShape; // 0x0848 + float32 m_flSoftX; // 0x084C + float32 m_flSoftY; // 0x0850 + float32 m_flSkirt; // 0x0854 + float32 m_flSkirtNear; // 0x0858 + Vector m_vSizeParams; // 0x085C + float32 m_flRange; // 0x0868 + Vector m_vShear; // 0x086C + int32 m_nBakeSpecularToCubemaps; // 0x0878 + Vector m_vBakeSpecularToCubemapsSize; // 0x087C + int32 m_nCastShadows; // 0x0888 + int32 m_nShadowMapSize; // 0x088C + int32 m_nShadowPriority; // 0x0890 + bool m_bContactShadow; // 0x0894 + bool m_bForceShadowsEnabled; // 0x0895 + int32 m_nBounceLight; // 0x0898 + float32 m_flBounceScale; // 0x089C + bool m_bDynamicBounce; // 0x08A0 + float32 m_flMinRoughness; // 0x08A4 + Vector m_vAlternateColor; // 0x08A8 + float32 m_fAlternateColorBrightness; // 0x08B4 + int32 m_nFog; // 0x08B8 + float32 m_flFogStrength; // 0x08BC + int32 m_nFogShadows; // 0x08C0 + float32 m_flFogScale; // 0x08C4 + bool m_bFogMixedShadows; // 0x08C8 + float32 m_flFadeSizeStart; // 0x08CC + float32 m_flFadeSizeEnd; // 0x08D0 + float32 m_flShadowFadeSizeStart; // 0x08D4 + float32 m_flShadowFadeSizeEnd; // 0x08D8 + bool m_bPrecomputedFieldsValid; // 0x08DC + Vector m_vPrecomputedBoundsMins; // 0x08E0 + Vector m_vPrecomputedBoundsMaxs; // 0x08EC + Vector m_vPrecomputedOBBOrigin; // 0x08F8 + QAngle m_vPrecomputedOBBAngles; // 0x0904 + Vector m_vPrecomputedOBBExtent; // 0x0910 + int32 m_nPrecomputedSubFrusta; // 0x091C + Vector m_vPrecomputedOBBOrigin0; // 0x0920 + QAngle m_vPrecomputedOBBAngles0; // 0x092C + Vector m_vPrecomputedOBBExtent0; // 0x0938 + Vector m_vPrecomputedOBBOrigin1; // 0x0944 + QAngle m_vPrecomputedOBBAngles1; // 0x0950 + Vector m_vPrecomputedOBBExtent1; // 0x095C + Vector m_vPrecomputedOBBOrigin2; // 0x0968 + QAngle m_vPrecomputedOBBAngles2; // 0x0974 + Vector m_vPrecomputedOBBExtent2; // 0x0980 + Vector m_vPrecomputedOBBOrigin3; // 0x098C + QAngle m_vPrecomputedOBBAngles3; // 0x0998 + Vector m_vPrecomputedOBBExtent3; // 0x09A4 + Vector m_vPrecomputedOBBOrigin4; // 0x09B0 + QAngle m_vPrecomputedOBBAngles4; // 0x09BC + Vector m_vPrecomputedOBBExtent4; // 0x09C8 + Vector m_vPrecomputedOBBOrigin5; // 0x09D4 + QAngle m_vPrecomputedOBBAngles5; // 0x09E0 + Vector m_vPrecomputedOBBExtent5; // 0x09EC + bool m_bPvsModifyEntity; // 0x09F8 + CNetworkUtlVectorBase< uint16 > m_VisClusters; // 0x0A00 +}; +class CInstructorEventEntity : public CPointEntity // server +{ + CUtlSymbolLarge m_iszName; // 0x04A8 + CUtlSymbolLarge m_iszHintTargetEntity; // 0x04B0 + CHandle< CBasePlayerPawn > m_hTargetPlayer; // 0x04B8 +}; +class CWeaponTec9 : public CCSWeaponBaseGun // server +{ +}; +class CPathCorner : public CPointEntity // server +{ + float32 m_flWait; // 0x04A8 + float32 m_flRadius; // 0x04AC + CEntityIOOutput m_OnPass; // 0x04B0 +}; +class CTriggerSndSosOpvar : public CBaseTrigger // server +{ + CUtlVector< CHandle< CBaseEntity > > m_hTouchingPlayers; // 0x0890 + Vector m_flPosition; // 0x08A8 + float32 m_flCenterSize; // 0x08B4 + float32 m_flMinVal; // 0x08B8 + float32 m_flMaxVal; // 0x08BC + CUtlSymbolLarge m_opvarName; // 0x08C0 + CUtlSymbolLarge m_stackName; // 0x08C8 + CUtlSymbolLarge m_operatorName; // 0x08D0 + bool m_bVolIs2D; // 0x08D8 + char[256] m_opvarNameChar; // 0x08D9 + char[256] m_stackNameChar; // 0x09D9 + char[256] m_operatorNameChar; // 0x0AD9 + Vector m_VecNormPos; // 0x0BDC + float32 m_flNormCenterSize; // 0x0BE8 +}; +class CPulseCell_LimitCount : public CPulseCell_BaseRequirement // pulse_runtime_lib +{ + int32 m_nLimitCount; // 0x0048 +}; +class CPulseCell_Step_CallExternalMethod : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + PulseSymbol_t m_MethodName; // 0x0048 + PulseSymbol_t m_GameBlackboard; // 0x0058 + CUtlLeanVector< CPulseRuntimeMethodArg > m_ExpectedArgs; // 0x0068 + PulseMethodCallMode_t m_nAsyncCallMode; // 0x0078 + CPulse_ResumePoint m_OnFinished; // 0x0080 +}; +class CPointCommentaryNode : public CBaseAnimGraph // server +{ + CUtlSymbolLarge m_iszPreCommands; // 0x0A20 + CUtlSymbolLarge m_iszPostCommands; // 0x0A28 + CUtlSymbolLarge m_iszCommentaryFile; // 0x0A30 + CUtlSymbolLarge m_iszViewTarget; // 0x0A38 + CHandle< CBaseEntity > m_hViewTarget; // 0x0A40 + CHandle< CBaseEntity > m_hViewTargetAngles; // 0x0A44 + CUtlSymbolLarge m_iszViewPosition; // 0x0A48 + CHandle< CBaseEntity > m_hViewPosition; // 0x0A50 + CHandle< CBaseEntity > m_hViewPositionMover; // 0x0A54 + bool m_bPreventMovement; // 0x0A58 + bool m_bUnderCrosshair; // 0x0A59 + bool m_bUnstoppable; // 0x0A5A + GameTime_t m_flFinishedTime; // 0x0A5C + Vector m_vecFinishOrigin; // 0x0A60 + QAngle m_vecOriginalAngles; // 0x0A6C + QAngle m_vecFinishAngles; // 0x0A78 + bool m_bPreventChangesWhileMoving; // 0x0A84 + bool m_bDisabled; // 0x0A85 + VectorWS m_vecTeleportOrigin; // 0x0A88 + GameTime_t m_flAbortedPlaybackAt; // 0x0A94 + CEntityIOOutput m_pOnCommentaryStarted; // 0x0A98 + CEntityIOOutput m_pOnCommentaryStopped; // 0x0AB0 + bool m_bActive; // 0x0AC8 + GameTime_t m_flStartTime; // 0x0ACC + float32 m_flStartTimeInCommentary; // 0x0AD0 + CUtlSymbolLarge m_iszTitle; // 0x0AD8 + CUtlSymbolLarge m_iszSpeakers; // 0x0AE0 + int32 m_iNodeNumber; // 0x0AE8 + int32 m_iNodeNumberMax; // 0x0AEC + bool m_bListenedTo; // 0x0AF0 +}; +class CMomentaryRotButton : public CRotButton // server +{ + CEntityOutputTemplate< float32, float32 > m_Position; // 0x08B0 + CEntityIOOutput m_OnUnpressed; // 0x08D0 + CEntityIOOutput m_OnFullyOpen; // 0x08E8 + CEntityIOOutput m_OnFullyClosed; // 0x0900 + CEntityIOOutput m_OnReachedPosition; // 0x0918 + int32 m_lastUsed; // 0x0930 + QAngle m_start; // 0x0934 + QAngle m_end; // 0x0940 + float32 m_IdealYaw; // 0x094C + CUtlSymbolLarge m_sNoise; // 0x0950 + bool m_bUpdateTarget; // 0x0958 + int32 m_direction; // 0x095C + float32 m_returnSpeed; // 0x0960 + float32 m_flStartPosition; // 0x0964 +}; +class CSceneListManager : public CLogicalEntity // server +{ + CUtlVector< CHandle< CSceneListManager > > m_hListManagers; // 0x04A8 + CUtlSymbolLarge[16] m_iszScenes; // 0x04C0 + CHandle< CBaseEntity >[16] m_hScenes; // 0x0540 +}; +class CEnvTilt : public CPointEntity // server +{ + float32 m_Duration; // 0x04A8 + float32 m_Radius; // 0x04AC + float32 m_TiltTime; // 0x04B0 + GameTime_t m_stopTime; // 0x04B4 +}; +class CEnvSoundscapeTriggerable : public CEnvSoundscape // server +{ +}; +class CFuncMover : public CBaseModelEntity // server +{ + CUtlSymbolLarge m_iszPathName; // 0x0730 + CHandle< CPathMover > m_hPathMover; // 0x0738 + CHandle< CPathMover > m_hPrevPathMover; // 0x073C + CUtlSymbolLarge m_iszPathNodeStart; // 0x0740 + CUtlSymbolLarge m_iszPathNodeEnd; // 0x0748 + CFuncMover::Move_t m_eMoveType; // 0x0750 + bool m_bIsReversing; // 0x0754 + float32 m_flStartSpeed; // 0x0758 + float32 m_flPathLocation; // 0x075C + float32 m_flT; // 0x0760 + int32 m_nCurrentNodeIndex; // 0x0764 + int32 m_nPreviousNodeIndex; // 0x0768 + SolidType_t m_eSolidType; // 0x076C + bool m_bIsMoving; // 0x076D + float32 m_flTimeToReachMaxSpeed; // 0x0770 + float32 m_flDistanceToReachMaxSpeed; // 0x0774 + float32 m_flTimeToReachZeroSpeed; // 0x0778 + float32 m_flComputedDistanceToReachMaxSpeed; // 0x077C + float32 m_flComputedDistanceToReachZeroSpeed; // 0x0780 + float32 m_flStartCurveScale; // 0x0784 + float32 m_flStopCurveScale; // 0x0788 + float32 m_flDistanceToReachZeroSpeed; // 0x078C + GameTime_t m_flTimeMovementStart; // 0x0790 + GameTime_t m_flTimeMovementStop; // 0x0794 + CHandle< CMoverPathNode > m_hStopAtNode; // 0x0798 + float32 m_flPathLocationToBeginStop; // 0x079C + float32 m_flPathLocationStart; // 0x07A0 + float32 m_flBeginStopT; // 0x07A4 + CUtlSymbolLarge m_iszStartForwardSound; // 0x07A8 + CUtlSymbolLarge m_iszLoopForwardSound; // 0x07B0 + CUtlSymbolLarge m_iszStopForwardSound; // 0x07B8 + CUtlSymbolLarge m_iszStartReverseSound; // 0x07C0 + CUtlSymbolLarge m_iszLoopReverseSound; // 0x07C8 + CUtlSymbolLarge m_iszStopReverseSound; // 0x07D0 + CUtlSymbolLarge m_iszArriveAtDestinationSound; // 0x07D8 + CEntityIOOutput m_OnMovementEnd; // 0x07F8 + bool m_bStartAtClosestPoint; // 0x0810 + bool m_bStartAtEnd; // 0x0811 + bool m_bStartFollowingClosestMover; // 0x0812 + CFuncMover::OrientationUpdate_t m_eOrientationUpdate; // 0x0814 + GameTime_t m_flTimeStartOrientationChange; // 0x0818 + float32 m_flTimeToBlendToNewOrientation; // 0x081C + float32 m_flDurationBlendToNewOrientationRan; // 0x0820 + int32 m_nOriginalOrientationIndex; // 0x0824 + bool m_bCreateMovableNavMesh; // 0x0828 + bool m_bAllowMovableNavMeshDockingOnEntireEntity; // 0x0829 + CEntityOutputTemplate< CUtlString, char* > m_OnNodePassed; // 0x0830 + CUtlSymbolLarge m_iszOrientationMatchEntityName; // 0x0850 + CHandle< CBaseEntity > m_hOrientationMatchEntity; // 0x0858 + float32 m_flTimeToTraverseToNextNode; // 0x085C + Vector m_vLerpToNewPosStartInPathEntitySpace; // 0x0860 + Vector m_vLerpToNewPosEndInPathEntitySpace; // 0x086C + float32 m_flLerpToPositionT; // 0x0878 + float32 m_flLerpToPositionDeltaT; // 0x087C + CEntityIOOutput m_OnLerpToPositionComplete; // 0x0880 + bool m_bIsPaused; // 0x0898 + CFuncMover::TransitionToPathNodeAction_t m_eTransitionedToPathNodeAction; // 0x089C + int32 m_nDelayedTeleportToNode; // 0x08A0 + bool m_bIsVerboseLogging; // 0x08A4 + CHandle< CBaseEntity > m_hFollowEntity; // 0x08A8 + float32 m_flFollowDistance; // 0x08AC + float32 m_flFollowMinimumSpeed; // 0x08B0 + float32 m_flCurFollowEntityT; // 0x08B4 + float32 m_flCurFollowSpeed; // 0x08B8 + CUtlSymbolLarge m_strOrientationFaceEntityName; // 0x08C0 + CHandle< CBaseEntity > m_hOrientationFaceEntity; // 0x08C8 + CEntityIOOutput m_OnStart; // 0x08D0 + CEntityIOOutput m_OnStartForward; // 0x08E8 + CEntityIOOutput m_OnStartReverse; // 0x0900 + CEntityIOOutput m_OnStop; // 0x0918 + CEntityIOOutput m_OnStopped; // 0x0930 + bool m_bNextNodeReturnsCurrent; // 0x0948 + bool m_bStartedMoving; // 0x0949 + CFuncMover::FollowEntityDirection_t m_eFollowEntityDirection; // 0x0968 + CHandle< CFuncMover > m_hFollowMover; // 0x096C + CUtlSymbolLarge m_iszFollowMoverEntityName; // 0x0970 + float32 m_flFollowMoverDistance; // 0x0978 + float32 m_flFollowMoverCalculatedDistance; // 0x097C + float32 m_flFollowMoverSpringStrength; // 0x0980 + bool m_bFollowConstraintsInitialized; // 0x0984 + CFuncMover::FollowConstraint_t m_eFollowConstraint; // 0x0988 + float32 m_flFollowMoverSpeed; // 0x098C + float32 m_flFollowMoverVelocity; // 0x0990 + GameTick_t m_nTickMovementRan; // 0x0994 +}; +class CPhysicsProp : public CBreakableProp // server +{ + CEntityIOOutput m_MotionEnabled; // 0x0BB0 + CEntityIOOutput m_OnAwakened; // 0x0BC8 + CEntityIOOutput m_OnAwake; // 0x0BE0 + CEntityIOOutput m_OnAsleep; // 0x0BF8 + CEntityIOOutput m_OnPlayerUse; // 0x0C10 + CEntityIOOutput m_OnOutOfWorld; // 0x0C28 + CEntityIOOutput m_OnPlayerPickup; // 0x0C40 + bool m_bForceNavIgnore; // 0x0C58 + bool m_bNoNavmeshBlocker; // 0x0C59 + bool m_bForceNpcExclude; // 0x0C5A + float32 m_massScale; // 0x0C5C + float32 m_buoyancyScale; // 0x0C60 + int32 m_damageType; // 0x0C64 + int32 m_damageToEnableMotion; // 0x0C68 + float32 m_flForceToEnableMotion; // 0x0C6C + bool m_bThrownByPlayer; // 0x0C70 + bool m_bDroppedByPlayer; // 0x0C71 + bool m_bTouchedByPlayer; // 0x0C72 + bool m_bFirstCollisionAfterLaunch; // 0x0C73 + bool m_bHasBeenAwakened; // 0x0C74 + bool m_bIsOverrideProp; // 0x0C75 + GameTime_t m_flLastBurn; // 0x0C78 + DynamicContinuousContactBehavior_t m_nDynamicContinuousContactBehavior; // 0x0C7C + GameTime_t m_fNextCheckDisableMotionContactsTime; // 0x0C80 + int32 m_iInitialGlowState; // 0x0C84 + int32 m_nGlowRange; // 0x0C88 + int32 m_nGlowRangeMin; // 0x0C8C + Color m_glowColor; // 0x0C90 + bool m_bShouldAutoConvertBackFromDebris; // 0x0C94 + bool m_bMuteImpactEffects; // 0x0C95 + bool m_bUpdateNavWhenMoving; // 0x0C9C + bool m_bForceNavObstacleCut; // 0x0C9D + bool m_bAllowObstacleConvexHullMerging; // 0x0C9E + bool m_bAcceptDamageFromHeldObjects; // 0x0C9F + bool m_bEnableUseOutput; // 0x0CA0 + CPhysicsProp::CrateType_t m_CrateType; // 0x0CA4 + CUtlSymbolLarge[4] m_strItemClass; // 0x0CA8 + int32[4] m_nItemCount; // 0x0CC8 + bool m_bRemovableForAmmoBalancing; // 0x0CD8 + bool m_bAwake; // 0x0CD9 + bool m_bAttachedToReferenceFrame; // 0x0CDA +}; +class CFuncNavObstruction : public CBaseModelEntity // server +{ + bool m_bDisabled; // 0x0748 + bool m_bUseAsyncObstacleUpdate; // 0x0749 +}; +class CPhysWheelConstraint : public CPhysConstraint // server +{ + float32 m_flSuspensionFrequency; // 0x0508 + float32 m_flSuspensionDampingRatio; // 0x050C + float32 m_flSuspensionHeightOffset; // 0x0510 + bool m_bEnableSuspensionLimit; // 0x0514 + float32 m_flMinSuspensionOffset; // 0x0518 + float32 m_flMaxSuspensionOffset; // 0x051C + bool m_bEnableSteeringLimit; // 0x0520 + float32 m_flMinSteeringAngle; // 0x0524 + float32 m_flMaxSteeringAngle; // 0x0528 + float32 m_flSteeringAxisFriction; // 0x052C + float32 m_flSpinAxisFriction; // 0x0530 + CHandle< CBaseEntity > m_hSteeringMimicsEntity; // 0x0534 +}; +class CSkyboxReference : public CBaseEntity // server +{ + WorldGroupId_t m_worldGroupId; // 0x04A8 + CHandle< CSkyCamera > m_hSkyCamera; // 0x04AC +}; +class CPointPulse : public CBaseEntity // server +{ +}; +class CMolotovProjectile : public CBaseCSGrenadeProjectile // server +{ + bool m_bIsIncGrenade; // 0x0BB0 + bool m_bDetonated; // 0x0BC8 + IntervalTimer m_stillTimer; // 0x0BD0 + bool m_bHasBouncedOffPlayer; // 0x0CB0 +}; +class CFilterClass : public CBaseFilter // server +{ + CUtlSymbolLarge m_iFilterClass; // 0x04E0 +}; +class CTriggerToggleSave : public CBaseTrigger // server +{ +}; +class CPathWithDynamicNodes : public CPathSimple // server +{ + CNetworkUtlVectorBase< CHandle< CPathNode > > m_vecPathNodes; // 0x05B0 + CTransform m_xInitialPathWorldToLocal; // 0x05D0 +}; +class CColorCorrection : public CBaseEntity // server +{ + float32 m_flFadeInDuration; // 0x04A8 + float32 m_flFadeOutDuration; // 0x04AC + float32 m_flStartFadeInWeight; // 0x04B0 + float32 m_flStartFadeOutWeight; // 0x04B4 + GameTime_t m_flTimeStartFadeIn; // 0x04B8 + GameTime_t m_flTimeStartFadeOut; // 0x04BC + float32 m_flMaxWeight; // 0x04C0 + bool m_bStartDisabled; // 0x04C4 + bool m_bEnabled; // 0x04C5 + bool m_bMaster; // 0x04C6 + bool m_bClientSide; // 0x04C7 + bool m_bExclusive; // 0x04C8 + float32 m_MinFalloff; // 0x04CC + float32 m_MaxFalloff; // 0x04D0 + float32 m_flCurWeight; // 0x04D4 + char[512] m_netlookupFilename; // 0x04D8 + CUtlSymbolLarge m_lookupFilename; // 0x06D8 +}; +class CPropDoorRotatingBreakable : public CPropDoorRotating // server +{ + bool m_bBreakable; // 0x0EF0 + bool m_isAbleToCloseAreaPortals; // 0x0EF1 + int32 m_currentDamageState; // 0x0EF4 + CUtlVector< CUtlSymbolLarge > m_damageStates; // 0x0EF8 +}; +class CLightDirectionalEntity : public CLightEntity // server +{ +}; +class CBaseClientUIEntity : public CBaseModelEntity // server +{ + bool m_bEnabled; // 0x0730 + CUtlSymbolLarge m_DialogXMLName; // 0x0738 + CUtlSymbolLarge m_PanelClassName; // 0x0740 + CUtlSymbolLarge m_PanelID; // 0x0748 + CEntityOutputTemplate< CUtlString, char* > m_CustomOutput0; // 0x0750 + CEntityOutputTemplate< CUtlString, char* > m_CustomOutput1; // 0x0770 + CEntityOutputTemplate< CUtlString, char* > m_CustomOutput2; // 0x0790 + CEntityOutputTemplate< CUtlString, char* > m_CustomOutput3; // 0x07B0 + CEntityOutputTemplate< CUtlString, char* > m_CustomOutput4; // 0x07D0 + CEntityOutputTemplate< CUtlString, char* > m_CustomOutput5; // 0x07F0 + CEntityOutputTemplate< CUtlString, char* > m_CustomOutput6; // 0x0810 + CEntityOutputTemplate< CUtlString, char* > m_CustomOutput7; // 0x0830 + CEntityOutputTemplate< CUtlString, char* > m_CustomOutput8; // 0x0850 + CEntityOutputTemplate< CUtlString, char* > m_CustomOutput9; // 0x0870 +}; +class CBreakable : public CBaseModelEntity // server +{ + CPropDataComponent m_CPropDataComponent; // 0x0738 + Materials m_Material; // 0x0778 + CHandle< CBaseEntity > m_hBreaker; // 0x077C + Explosions m_Explosion; // 0x0780 + CUtlSymbolLarge m_iszSpawnObject; // 0x0788 + float32 m_flPressureDelay; // 0x0790 + int32 m_iMinHealthDmg; // 0x0794 + CUtlSymbolLarge m_iszPropData; // 0x0798 + float32 m_impactEnergyScale; // 0x07A0 + EOverrideBlockLOS_t m_nOverrideBlockLOS; // 0x07A4 + CEntityIOOutput m_OnStartDeath; // 0x07A8 + CEntityIOOutput m_OnBreak; // 0x07C0 + CEntityOutputTemplate< float32, float32 > m_OnHealthChanged; // 0x07D8 + PerformanceMode_t m_PerformanceMode; // 0x07F8 + CHandle< CBasePlayerPawn > m_hPhysicsAttacker; // 0x07FC + GameTime_t m_flLastPhysicsInfluenceTime; // 0x0800 +}; +class CInfoLandmark : public CPointEntity // server +{ +}; +class CBaseFilter : public CLogicalEntity // server +{ + bool m_bNegated; // 0x04A8 + CEntityIOOutput m_OnPass; // 0x04B0 + CEntityIOOutput m_OnFail; // 0x04C8 +}; +class WeaponPurchaseTracker_t // server +{ + CUtlVectorEmbeddedNetworkVar< WeaponPurchaseCount_t > m_weaponPurchases; // 0x0008 +}; +class CPulseCell_Outflow_PlaySceneBase::CursorState_t // server +{ + CHandle< CBaseEntity > m_sceneInstance; // 0x0000 + CHandle< CBaseEntity > m_mainActor; // 0x0004 +}; +class PulseObservableBoolExpression_t // pulse_runtime_lib +{ + CPulse_OutflowConnection m_EvaluateConnection; // 0x0000 + CUtlVector< PulseRuntimeVarIndex_t > m_DependentObservableVars; // 0x0048 + CUtlVector< PulseRuntimeBlackboardReferenceIndex_t > m_DependentObservableBlackboardReferences; // 0x0060 +}; +class CMapInfo : public CPointEntity // server +{ + int32 m_iBuyingStatus; // 0x04A8 + float32 m_flBombRadius; // 0x04AC + int32 m_iPetPopulation; // 0x04B0 + bool m_bUseNormalSpawnsForDM; // 0x04B4 + bool m_bDisableAutoGeneratedDMSpawns; // 0x04B5 + float32 m_flBotMaxVisionDistance; // 0x04B8 + int32 m_iHostageCount; // 0x04BC + bool m_bFadePlayerVisibilityFarZ; // 0x04C0 + bool m_bRainTraceToSkyEnabled; // 0x04C1 + float32 m_flEnvRainStrength; // 0x04C4 + float32 m_flEnvPuddleRippleStrength; // 0x04C8 + float32 m_flEnvPuddleRippleDirection; // 0x04CC + float32 m_flEnvWetnessCoverage; // 0x04D0 + float32 m_flEnvWetnessDryingAmount; // 0x04D4 +}; +class CGradientFog : public CBaseEntity // server +{ + CStrongHandle< InfoForResourceTypeCTextureBase > m_hGradientFogTexture; // 0x04A8 + float32 m_flFogStartDistance; // 0x04B0 + float32 m_flFogEndDistance; // 0x04B4 + bool m_bHeightFogEnabled; // 0x04B8 + float32 m_flFogStartHeight; // 0x04BC + float32 m_flFogEndHeight; // 0x04C0 + float32 m_flFarZ; // 0x04C4 + float32 m_flFogMaxOpacity; // 0x04C8 + float32 m_flFogFalloffExponent; // 0x04CC + float32 m_flFogVerticalExponent; // 0x04D0 + Color m_fogColor; // 0x04D4 + float32 m_flFogStrength; // 0x04D8 + float32 m_flFadeTime; // 0x04DC + bool m_bStartDisabled; // 0x04E0 + bool m_bIsEnabled; // 0x04E1 + bool m_bGradientFogNeedsTextures; // 0x04E2 +}; +class CSoundOpvarSetAABBEntity : public CSoundOpvarSetPointEntity // server +{ + Vector m_vDistanceInnerMins; // 0x0640 + Vector m_vDistanceInnerMaxs; // 0x064C + Vector m_vDistanceOuterMins; // 0x0658 + Vector m_vDistanceOuterMaxs; // 0x0664 + int32 m_nAABBDirection; // 0x0670 + Vector m_vInnerMins; // 0x0674 + Vector m_vInnerMaxs; // 0x0680 + Vector m_vOuterMins; // 0x068C + Vector m_vOuterMaxs; // 0x0698 +}; +class CPulseCell_Outflow_PlaySequence : public CPulseCell_Outflow_PlaySceneBase // server +{ + CUtlString m_ParamSequenceName; // 0x00F0 +}; +class CPointClientUIWorldTextPanel : public CPointClientUIWorldPanel // server +{ + char[512] m_messageText; // 0x08E8 +}; +class CEntityIdentity // entity2 +{ + int32 m_nameStringableIndex; // 0x0014 + CUtlSymbolLarge m_name; // 0x0018 + CUtlSymbolLarge m_designerName; // 0x0020 + uint32 m_flags; // 0x0030 + WorldGroupId_t m_worldGroupId; // 0x0038 + uint32 m_fDataObjectTypes; // 0x003C + ChangeAccessorFieldPathIndex_t m_PathIndex; // 0x0040 + CEntityAttributeTable* m_pAttributes; // 0x0048 + CEntityIdentity* m_pPrev; // 0x0050 + CEntityIdentity* m_pNext; // 0x0058 + CEntityIdentity* m_pPrevByClass; // 0x0060 + CEntityIdentity* m_pNextByClass; // 0x0068 +}; +class CPulseCell_LimitCount::Criteria_t // pulse_runtime_lib +{ + bool m_bLimitCountPasses; // 0x0000 +}; +class CFuncRotator : public CBaseModelEntity // server +{ + CHandle< CBaseEntity > m_hRotatorTarget; // 0x0730 + bool m_bIsRotating; // 0x0734 + bool m_bIsReversing; // 0x0735 + float32 m_flTimeToReachMaxSpeed; // 0x0738 + float32 m_flTimeToReachZeroSpeed; // 0x073C + float32 m_flDistanceAlongArcTraveled; // 0x0740 + float32 m_flTimeToWaitOscillate; // 0x0744 + GameTime_t m_flTimeRotationStart; // 0x0748 + Quaternion m_qLSPrevChange; // 0x0750 + Quaternion m_qWSPrev; // 0x0760 + Quaternion m_qWSInit; // 0x0770 + Quaternion m_qLSInit; // 0x0780 + Quaternion m_qLSOrientation; // 0x0790 + CEntityIOOutput m_OnRotationStarted; // 0x07A0 + CEntityIOOutput m_OnRotationCompleted; // 0x07B8 + CEntityIOOutput m_OnOscillate; // 0x07D0 + CEntityIOOutput m_OnOscillateStartArrive; // 0x07E8 + CEntityIOOutput m_OnOscillateStartDepart; // 0x0800 + CEntityIOOutput m_OnOscillateEndArrive; // 0x0818 + CEntityIOOutput m_OnOscillateEndDepart; // 0x0830 + bool m_bOscillateDepart; // 0x0848 + int32 m_nOscillateCount; // 0x084C + CFuncRotator::Rotate_t m_eRotateType; // 0x0850 + CFuncRotator::Rotate_t m_ePrevRotateType; // 0x0854 + bool m_bHasTargetOverride; // 0x0858 + Quaternion m_qOrientationOverride; // 0x0860 + RotatorTargetSpace_t m_eSpaceOverride; // 0x0870 + QAngle m_qAngularVelocity; // 0x0874 + Vector m_vLookAtForcedUp; // 0x0880 + CUtlSymbolLarge m_strRotatorTarget; // 0x0890 + bool m_bRecordHistory; // 0x0898 + CUtlVector< RotatorHistoryEntry_t > m_vecRotatorHistory; // 0x08A0 + bool m_bReturningToPreviousOrientation; // 0x08B8 + CUtlVector< RotatorQueueEntry_t > m_vecRotatorQueue; // 0x08C0 + CUtlVector< RotatorHistoryEntry_t > m_vecRotatorQueueHistory; // 0x08D8 + SolidType_t m_eSolidType; // 0x08F0 + CHandle< CFuncMover > m_hSpeedFromMover; // 0x08F4 + CUtlSymbolLarge m_iszSpeedFromMover; // 0x08F8 + float32 m_flSpeedScale; // 0x0900 + float32 m_flMinYawRotation; // 0x0904 + float32 m_flMaxYawRotation; // 0x0908 +}; +class CSoundEventEntity : public CBaseEntity // server +{ + bool m_bStartOnSpawn; // 0x04A8 + bool m_bToLocalPlayer; // 0x04A9 + bool m_bStopOnNew; // 0x04AA + bool m_bSaveRestore; // 0x04AB + bool m_bSavedIsPlaying; // 0x04AC + float32 m_flSavedElapsedTime; // 0x04B0 + CUtlSymbolLarge m_iszSourceEntityName; // 0x04B8 + CUtlSymbolLarge m_iszAttachmentName; // 0x04C0 + CEntityOutputTemplate< uint64, uint64 > m_onGUIDChanged; // 0x04C8 + CEntityIOOutput m_onSoundFinished; // 0x04E8 + float32 m_flClientCullRadius; // 0x0500 + CUtlSymbolLarge m_iszSoundName; // 0x0530 + CEntityHandle m_hSource; // 0x054C + int32 m_nEntityIndexSelection; // 0x0550 +}; +class CInfoPlayerCounterterrorist : public SpawnPoint // server +{ +}; +class CEnvFade : public CLogicalEntity // server +{ + Color m_fadeColor; // 0x04A8 + float32 m_Duration; // 0x04AC + float32 m_HoldDuration; // 0x04B0 + CEntityIOOutput m_OnBeginFade; // 0x04B8 +}; +class CBasePlayerVData : public CEntitySubclassVDataBase // server +{ + CResourceNameTyped< CWeakHandle< InfoForResourceTypeCModel > > m_sModelName; // 0x0028 + CSkillFloat m_flHeadDamageMultiplier; // 0x0108 + CSkillFloat m_flChestDamageMultiplier; // 0x0118 + CSkillFloat m_flStomachDamageMultiplier; // 0x0128 + CSkillFloat m_flArmDamageMultiplier; // 0x0138 + CSkillFloat m_flLegDamageMultiplier; // 0x0148 + float32 m_flHoldBreathTime; // 0x0158 + float32 m_flDrowningDamageInterval; // 0x015C + int32 m_nDrowningDamageInitial; // 0x0160 + int32 m_nDrowningDamageMax; // 0x0164 + int32 m_nWaterSpeed; // 0x0168 + float32 m_flUseRange; // 0x016C + float32 m_flUseAngleTolerance; // 0x0170 + float32 m_flCrouchTime; // 0x0174 +}; +class CTriggerImpact : public CTriggerMultiple // server +{ + float32 m_flMagnitude; // 0x08A8 + float32 m_flNoise; // 0x08AC + float32 m_flViewkick; // 0x08B0 + CEntityOutputTemplate< Vector, Vector > m_pOutputForce; // 0x08B8 +}; +class CCSGameModeRules_Deathmatch : public CCSGameModeRules // server +{ + GameTime_t m_flDMBonusStartTime; // 0x0030 + float32 m_flDMBonusTimeLength; // 0x0034 + CUtlString m_sDMBonusWeapon; // 0x0038 +}; +class CPulseCell_CursorQueue : public CPulseCell_WaitForCursorsWithTagBase // pulse_runtime_lib +{ + int32 m_nCursorsAllowedToRunParallel; // 0x0098 +}; +class CPulseCell_Value_RandomFloat : public CPulseCell_BaseValue // pulse_runtime_lib +{ +}; +class CPulseExecCursor // pulse_runtime_lib +{ +}; +class CBasePropDoor : public CDynamicProp // server +{ + float32 m_flAutoReturnDelay; // 0x0C60 + CUtlVector< CHandle< CBasePropDoor > > m_hDoorList; // 0x0C68 + int32 m_nHardwareType; // 0x0C80 + bool m_bNeedsHardware; // 0x0C84 + DoorState_t m_eDoorState; // 0x0C88 + bool m_bLocked; // 0x0C8C + bool m_bNoNPCs; // 0x0C8D + Vector m_closedPosition; // 0x0C90 + QAngle m_closedAngles; // 0x0C9C + CHandle< CBaseEntity > m_hBlocker; // 0x0CA8 + bool m_bFirstBlocked; // 0x0CAC + locksound_t m_ls; // 0x0CB0 + bool m_bForceClosed; // 0x0CD0 + VectorWS m_vecLatchWorldPosition; // 0x0CD4 + CHandle< CBaseEntity > m_hActivator; // 0x0CE0 + CUtlSymbolLarge m_SoundMoving; // 0x0CF8 + CUtlSymbolLarge m_SoundOpen; // 0x0D00 + CUtlSymbolLarge m_SoundClose; // 0x0D08 + CUtlSymbolLarge m_SoundLock; // 0x0D10 + CUtlSymbolLarge m_SoundUnlock; // 0x0D18 + CUtlSymbolLarge m_SoundLatch; // 0x0D20 + CUtlSymbolLarge m_SoundPound; // 0x0D28 + CUtlSymbolLarge m_SoundJiggle; // 0x0D30 + CUtlSymbolLarge m_SoundLockedAnim; // 0x0D38 + int32 m_numCloseAttempts; // 0x0D40 + CUtlStringToken m_nPhysicsMaterial; // 0x0D44 + CUtlSymbolLarge m_SlaveName; // 0x0D48 + CHandle< CBasePropDoor > m_hMaster; // 0x0D50 + CEntityIOOutput m_OnBlockedClosing; // 0x0D58 + CEntityIOOutput m_OnBlockedOpening; // 0x0D70 + CEntityIOOutput m_OnUnblockedClosing; // 0x0D88 + CEntityIOOutput m_OnUnblockedOpening; // 0x0DA0 + CEntityIOOutput m_OnFullyClosed; // 0x0DB8 + CEntityIOOutput m_OnFullyOpen; // 0x0DD0 + CEntityIOOutput m_OnClose; // 0x0DE8 + CEntityIOOutput m_OnOpen; // 0x0E00 + CEntityIOOutput m_OnLockedUse; // 0x0E18 + CEntityIOOutput m_OnAjarOpen; // 0x0E30 +}; +class CLogicBranchList : public CLogicalEntity // server +{ + CUtlSymbolLarge[16] m_nLogicBranchNames; // 0x04A8 + CUtlVector< CHandle< CBaseEntity > > m_LogicBranchList; // 0x0528 + CLogicBranchList::LogicBranchListenerLastState_t m_eLastState; // 0x0540 + CEntityIOOutput m_OnAllTrue; // 0x0548 + CEntityIOOutput m_OnAllFalse; // 0x0560 + CEntityIOOutput m_OnMixed; // 0x0578 +}; +class CBtActionParachutePositioning : public CBtNode // server +{ + CountdownTimer m_ActionTimer; // 0x0058 +}; +class CAK47 : public CCSWeaponBaseGun // server +{ +}; +class CDynamicProp : public CBreakableProp // server +{ + bool m_bCreateNavObstacle; // 0x0BA8 + bool m_bNavObstacleUpdatesOverridden; // 0x0BA9 + bool m_bUseHitboxesForRenderBox; // 0x0BAA + bool m_bUseAnimGraph; // 0x0BAB + CEntityIOOutput m_pOutputAnimBegun; // 0x0BB0 + CEntityIOOutput m_pOutputAnimOver; // 0x0BC8 + CEntityIOOutput m_pOutputAnimLoopCycleOver; // 0x0BE0 + CEntityIOOutput m_OnAnimReachedStart; // 0x0BF8 + CEntityIOOutput m_OnAnimReachedEnd; // 0x0C10 + CUtlSymbolLarge m_iszIdleAnim; // 0x0C28 + AnimLoopMode_t m_nIdleAnimLoopMode; // 0x0C30 + bool m_bRandomizeCycle; // 0x0C34 + bool m_bStartDisabled; // 0x0C35 + bool m_bFiredStartEndOutput; // 0x0C36 + bool m_bForceNpcExclude; // 0x0C37 + bool m_bCreateNonSolid; // 0x0C38 + bool m_bIsOverrideProp; // 0x0C39 + int32 m_iInitialGlowState; // 0x0C3C + int32 m_nGlowRange; // 0x0C40 + int32 m_nGlowRangeMin; // 0x0C44 + Color m_glowColor; // 0x0C48 + int32 m_nGlowTeam; // 0x0C4C +}; +class CHostageAlias_info_hostage_spawn : public CHostage // server +{ +}; +class CFilterTeam : public CBaseFilter // server +{ + int32 m_iFilterTeam; // 0x04E0 +}; +class CFuncConveyor : public CBaseModelEntity // server +{ + CUtlSymbolLarge m_szConveyorModels; // 0x0730 + float32 m_flTransitionDurationSeconds; // 0x0738 + QAngle m_angMoveEntitySpace; // 0x073C + Vector m_vecMoveDirEntitySpace; // 0x0748 + float32 m_flTargetSpeed; // 0x0754 + GameTick_t m_nTransitionStartTick; // 0x0758 + int32 m_nTransitionDurationTicks; // 0x075C + float32 m_flTransitionStartSpeed; // 0x0760 + CNetworkUtlVectorBase< CHandle< CBaseEntity > > m_hConveyorModels; // 0x0768 +}; +class CTriggerPhysics : public CBaseTrigger // server +{ + float32 m_gravityScale; // 0x08A0 + float32 m_linearLimit; // 0x08A4 + float32 m_linearDamping; // 0x08A8 + float32 m_angularLimit; // 0x08AC + float32 m_angularDamping; // 0x08B0 + float32 m_linearForce; // 0x08B4 + float32 m_flFrequency; // 0x08B8 + float32 m_flDampingRatio; // 0x08BC + Vector m_vecLinearForcePointAt; // 0x08C0 + bool m_bCollapseToForcePoint; // 0x08CC + Vector m_vecLinearForcePointAtWorld; // 0x08D0 + Vector m_vecLinearForceDirection; // 0x08DC + bool m_bConvertToDebrisWhenPossible; // 0x08E8 +}; +class CInfoInstructorHintBombTargetB : public CPointEntity // server +{ +}; +class CFuncTimescale : public CBaseEntity // server +{ + float32 m_flDesiredTimescale; // 0x04A8 + float32 m_flAcceleration; // 0x04AC + float32 m_flMinBlendRate; // 0x04B0 + float32 m_flBlendDeltaMultiplier; // 0x04B4 + bool m_isStarted; // 0x04B8 +}; +class CInfoInteraction : public CPointEntity // server +{ + CUtlSymbolLarge[8] m_strSlotEntityName; // 0x04A8 + CUtlSymbolLarge m_strInteractVData; // 0x04E8 + float32 m_flInteractRadius; // 0x04F0 +}; +class CBasePlayerWeaponVData : public CEntitySubclassVDataBase // server +{ + CResourceNameTyped< CWeakHandle< InfoForResourceTypeCModel > > m_szWorldModel; // 0x0028 + CResourceNameTyped< CWeakHandle< InfoForResourceTypeCModel > > m_sToolsOnlyOwnerModelName; // 0x0108 + bool m_bBuiltRightHanded; // 0x01E8 + bool m_bAllowFlipping; // 0x01E9 + CAttachmentNameSymbolWithStorage m_sMuzzleAttachment; // 0x01F0 + CResourceNameTyped< CWeakHandle< InfoForResourceTypeIParticleSystemDefinition > > m_szMuzzleFlashParticle; // 0x0210 + CUtlString m_szMuzzleFlashParticleConfig; // 0x02F0 + CResourceNameTyped< CWeakHandle< InfoForResourceTypeIParticleSystemDefinition > > m_szBarrelSmokeParticle; // 0x02F8 + uint8 m_nMuzzleSmokeShotThreshold; // 0x03D8 + float32 m_flMuzzleSmokeTimeout; // 0x03DC + float32 m_flMuzzleSmokeDecrementRate; // 0x03E0 + bool m_bGenerateMuzzleLight; // 0x03E4 + bool m_bLinkedCooldowns; // 0x03E5 + ItemFlagTypes_t m_iFlags; // 0x03E6 + int32 m_iWeight; // 0x03E8 + bool m_bAutoSwitchTo; // 0x03EC + bool m_bAutoSwitchFrom; // 0x03ED + AmmoIndex_t m_nPrimaryAmmoType; // 0x03EE + AmmoIndex_t m_nSecondaryAmmoType; // 0x03EF + int32 m_iMaxClip1; // 0x03F0 + int32 m_iMaxClip2; // 0x03F4 + int32 m_iDefaultClip1; // 0x03F8 + int32 m_iDefaultClip2; // 0x03FC + bool m_bReserveAmmoAsClips; // 0x0400 + bool m_bTreatAsSingleClip; // 0x0401 + bool m_bKeepLoadedAmmo; // 0x0402 + RumbleEffect_t m_iRumbleEffect; // 0x0404 + float32 m_flDropSpeed; // 0x0408 + int32 m_iSlot; // 0x040C + int32 m_iPosition; // 0x0410 + CUtlOrderedMap< WeaponSound_t, CSoundEventName > m_aShootSounds; // 0x0418 +}; +class CSoundOpvarSetPointEntity : public CSoundOpvarSetPointBase // server +{ + CEntityIOOutput m_OnEnter; // 0x0550 + CEntityIOOutput m_OnExit; // 0x0568 + bool m_bAutoDisable; // 0x0580 + float32 m_flDistanceMin; // 0x05C4 + float32 m_flDistanceMax; // 0x05C8 + float32 m_flDistanceMapMin; // 0x05CC + float32 m_flDistanceMapMax; // 0x05D0 + float32 m_flOcclusionRadius; // 0x05D4 + float32 m_flOcclusionMin; // 0x05D8 + float32 m_flOcclusionMax; // 0x05DC + float32 m_flValSetOnDisable; // 0x05E0 + bool m_bSetValueOnDisable; // 0x05E4 + bool m_bReloading; // 0x05E5 + int32 m_nSimulationMode; // 0x05E8 + int32 m_nVisibilitySamples; // 0x05EC + Vector m_vDynamicProxyPoint; // 0x05F0 + float32 m_flDynamicMaximumOcclusion; // 0x05FC + CEntityHandle m_hDynamicEntity; // 0x0600 + CUtlSymbolLarge m_iszDynamicEntityName; // 0x0608 + float32 m_flPathingDistanceNormFactor; // 0x0610 + Vector m_vPathingSourcePos; // 0x0614 + Vector m_vPathingListenerPos; // 0x0620 + Vector m_vPathingDirection; // 0x062C + int32 m_nPathingSourceIndex; // 0x0638 +}; +class CInfoTargetServerOnly : public CServerOnlyPointEntity // server +{ +}; +class CServerRagdollTrigger : public CBaseTrigger // server +{ +}; +class CDynamicPropAlias_dynamic_prop : public CDynamicProp // server +{ +}; +class CMarkupVolumeTagged : public CMarkupVolume // server +{ + CUtlVector< CGlobalSymbol > m_GroupNames; // 0x0738 + CUtlVector< CGlobalSymbol > m_Tags; // 0x0750 + bool m_bIsGroup; // 0x0768 + bool m_bGroupByPrefab; // 0x0769 + bool m_bGroupByVolume; // 0x076A + bool m_bGroupOtherGroups; // 0x076B + bool m_bIsInGroup; // 0x076C +}; +class CInfoParticleTarget : public CPointEntity // server +{ +}; +class CEnvCubemap : public CBaseEntity // server +{ + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hCubemapTexture; // 0x0528 + bool m_Entity_bCustomCubemapTexture; // 0x0530 + float32 m_Entity_flInfluenceRadius; // 0x0534 + Vector m_Entity_vBoxProjectMins; // 0x0538 + Vector m_Entity_vBoxProjectMaxs; // 0x0544 + bool m_Entity_bMoveable; // 0x0550 + int32 m_Entity_nHandshake; // 0x0554 + int32 m_Entity_nEnvCubeMapArrayIndex; // 0x0558 + int32 m_Entity_nPriority; // 0x055C + float32 m_Entity_flEdgeFadeDist; // 0x0560 + Vector m_Entity_vEdgeFadeDists; // 0x0564 + float32 m_Entity_flDiffuseScale; // 0x0570 + bool m_Entity_bStartDisabled; // 0x0574 + bool m_Entity_bDefaultEnvMap; // 0x0575 + bool m_Entity_bDefaultSpecEnvMap; // 0x0576 + bool m_Entity_bIndoorCubeMap; // 0x0577 + bool m_Entity_bCopyDiffuseFromDefaultCubemap; // 0x0578 + bool m_Entity_bEnabled; // 0x0588 +}; +class CCSPlayer_DamageReactServices : public CPlayerPawnComponent // server +{ +}; +class CWeaponXM1014 : public CCSWeaponBaseShotgun // server +{ +}; +class CTriggerLerpObject : public CBaseTrigger // server +{ + CUtlSymbolLarge m_iszLerpTarget; // 0x0890 + CHandle< CBaseEntity > m_hLerpTarget; // 0x0898 + CUtlSymbolLarge m_iszLerpTargetAttachment; // 0x08A0 + AttachmentHandle_t m_hLerpTargetAttachment; // 0x08A8 + float32 m_flLerpDuration; // 0x08AC + bool m_bAttachedEntityWasParented; // 0x08B0 + bool m_bLerpRestoreMoveType; // 0x08B1 + bool m_bSingleLerpObject; // 0x08B2 + CUtlVector< lerpdata_t > m_vecLerpingObjects; // 0x08B8 + CUtlSymbolLarge m_iszLerpEffect; // 0x08D0 + CUtlSymbolLarge m_iszLerpSound; // 0x08D8 + bool m_bAttachTouchingObject; // 0x08E0 + CHandle< CBaseEntity > m_hEntityToWaitForDisconnect; // 0x08E4 + CEntityIOOutput m_OnLerpStarted; // 0x08E8 + CEntityIOOutput m_OnLerpFinished; // 0x0900 + CEntityIOOutput m_OnDetached; // 0x0918 +}; +class CPhysicsPropOverride : public CPhysicsProp // server +{ +}; +class CTriggerSave : public CBaseTrigger // server +{ + bool m_bForceNewLevelUnit; // 0x0890 + float32 m_fDangerousTimer; // 0x0894 + int32 m_minHitPoints; // 0x0898 +}; +class CPointHurt : public CPointEntity // server +{ + int32 m_nDamage; // 0x04A8 + DamageTypes_t m_bitsDamageType; // 0x04AC + float32 m_flRadius; // 0x04B0 + float32 m_flDelay; // 0x04B4 + CUtlSymbolLarge m_strTarget; // 0x04B8 + CHandle< CBaseEntity > m_pActivator; // 0x04C0 +}; +class CBasePlayerController : public CBaseEntity // server +{ + uint64 m_nInButtonsWhichAreToggles; // 0x04B0 + uint32 m_nTickBase; // 0x04B8 + CHandle< CBasePlayerPawn > m_hPawn; // 0x04E0 + bool m_bKnownTeamMismatch; // 0x04E4 + CSplitScreenSlot m_nSplitScreenSlot; // 0x04E8 + CHandle< CBasePlayerController > m_hSplitOwner; // 0x04EC + CUtlVector< CHandle< CBasePlayerController > > m_hSplitScreenPlayers; // 0x04F0 + bool m_bIsHLTV; // 0x0508 + PlayerConnectedState m_iConnected; // 0x050C + char[128] m_iszPlayerName; // 0x0510 + CUtlString m_szNetworkIDString; // 0x0590 + float32 m_fLerpTime; // 0x0598 + bool m_bLagCompensation; // 0x059C + bool m_bPredict; // 0x059D + bool m_bIsLowViolence; // 0x05A4 + bool m_bGamePaused; // 0x05A5 + ChatIgnoreType_t m_iIgnoreGlobalChat; // 0x06E0 + float32 m_flLastPlayerTalkTime; // 0x06E4 + float32 m_flLastEntitySteadyState; // 0x06E8 + int32 m_nAvailableEntitySteadyState; // 0x06EC + bool m_bHasAnySteadyStateEnts; // 0x06F0 + uint64 m_steamID; // 0x0700 + bool m_bNoClipEnabled; // 0x0708 + uint32 m_iDesiredFOV; // 0x070C +}; +class C_CSGO_TeamIntroCharacterPosition : public C_CSGO_TeamPreviewCharacterPosition // client +{ +}; +class C_FireCrackerBlast : public C_Inferno // client +{ +}; +class CCSGO_WingmanIntroCounterTerroristPosition : public CCSGO_WingmanIntroCharacterPosition // client +{ +}; +class CPulseCell_WaitForCursorsWithTag : public CPulseCell_WaitForCursorsWithTagBase // pulse_runtime_lib +{ + bool m_bTagSelfWhenComplete; // 0x0098 + PulseCursorCancelPriority_t m_nDesiredKillPriority; // 0x009C +}; +class C_SceneEntity::QueuedEvents_t // client +{ + float32 starttime; // 0x0000 +}; +class CCSPlayer_PingServices : public CPlayerPawnComponent // client +{ + CHandle< C_PlayerPing > m_hPlayerPing; // 0x0048 +}; +class CEconItemAttribute // client +{ + uint16 m_iAttributeDefinitionIndex; // 0x0030 + float32 m_flValue; // 0x0034 + float32 m_flInitialValue; // 0x0038 + int32 m_nRefundableCurrency; // 0x003C + bool m_bSetBonus; // 0x0040 +}; +class CBaseTriggerAPI // client +{ +}; +class PredictedDamageTag_t // client +{ + GameTick_t nTagTick; // 0x0030 + float32 flFlinchModSmall; // 0x0034 + float32 flFlinchModLarge; // 0x0038 + float32 flFriendlyFireDamageReductionRatio; // 0x003C +}; +class CFuncRetakeBarrier : public C_DynamicProp // client +{ +}; +class C_EnvWindShared // client +{ + GameTime_t m_flStartTime; // 0x0008 + uint32 m_iWindSeed; // 0x000C + uint16 m_iMinWind; // 0x0010 + uint16 m_iMaxWind; // 0x0012 + int32 m_windRadius; // 0x0014 + uint16 m_iMinGust; // 0x0018 + uint16 m_iMaxGust; // 0x001A + float32 m_flMinGustDelay; // 0x001C + float32 m_flMaxGustDelay; // 0x0020 + float32 m_flGustDuration; // 0x0024 + uint16 m_iGustDirChange; // 0x0028 + uint16 m_iInitialWindDir; // 0x002A + float32 m_flInitialWindSpeed; // 0x002C + Vector m_location; // 0x0030 + CHandle< C_BaseEntity > m_hEntOwner; // 0x003C +}; +class C_SkyCamera : public C_BaseEntity // client +{ + sky3dparams_t m_skyboxData; // 0x0608 + CUtlStringToken m_skyboxSlotToken; // 0x0698 + bool m_bUseAngles; // 0x069C + C_SkyCamera* m_pNext; // 0x06A0 +}; +class CPulseCell_Base // pulse_runtime_lib +{ + PulseDocNodeID_t m_nEditorNodeID; // 0x0008 +}; +class C_FuncRotating : public C_BaseModelEntity // client +{ +}; +class C_SoundOpvarSetPointBase : public C_BaseEntity // client +{ + CUtlSymbolLarge m_iszStackName; // 0x0608 + CUtlSymbolLarge m_iszOperatorName; // 0x0610 + CUtlSymbolLarge m_iszOpvarName; // 0x0618 + int32 m_iOpvarIndex; // 0x0620 + bool m_bUseAutoCompare; // 0x0624 + bool m_bFastRefresh; // 0x0625 +}; +class C_EnvCubemapFog : public C_BaseEntity // client +{ + float32 m_flEndDistance; // 0x0608 + float32 m_flStartDistance; // 0x060C + float32 m_flFogFalloffExponent; // 0x0610 + bool m_bHeightFogEnabled; // 0x0614 + float32 m_flFogHeightWidth; // 0x0618 + float32 m_flFogHeightEnd; // 0x061C + float32 m_flFogHeightStart; // 0x0620 + float32 m_flFogHeightExponent; // 0x0624 + float32 m_flLODBias; // 0x0628 + bool m_bActive; // 0x062C + bool m_bStartDisabled; // 0x062D + float32 m_flFogMaxOpacity; // 0x0630 + int32 m_nCubemapSourceType; // 0x0634 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hSkyMaterial; // 0x0638 + CUtlSymbolLarge m_iszSkyEntity; // 0x0640 + CStrongHandle< InfoForResourceTypeCTextureBase > m_hFogCubemapTexture; // 0x0648 + bool m_bHasHeightFogEnd; // 0x0650 + bool m_bFirstTime; // 0x0651 +}; +class C_CSGO_TeamSelectTerroristPosition : public C_CSGO_TeamSelectCharacterPosition // client +{ +}; +class C_BaseFlex::Emphasized_Phoneme // client +{ + CUtlString m_sClassName; // 0x0000 + float32 m_flAmount; // 0x0018 + bool m_bRequired; // 0x001C + bool m_bBasechecked; // 0x001D + bool m_bValid; // 0x001E +}; +class C_EnvParticleGlow : public C_ParticleSystem // client +{ + float32 m_flAlphaScale; // 0x1438 + float32 m_flRadiusScale; // 0x143C + float32 m_flSelfIllumScale; // 0x1440 + Color m_ColorTint; // 0x1444 + CStrongHandle< InfoForResourceTypeCTextureBase > m_hTextureOverride; // 0x1448 +}; +class CCS_PortraitWorldCallbackHandler : public C_BaseEntity // client +{ +}; +class CCSPlayerController_InventoryServices : public CPlayerControllerComponent // client +{ + CUtlVector< CCSPlayerController_InventoryServices::NetworkedLoadoutSlot_t > m_vecNetworkableLoadout; // 0x0040 + uint16 m_unMusicID; // 0x0058 + MedalRank_t[6] m_rank; // 0x005C + int32 m_nPersonaDataPublicLevel; // 0x0074 + int32 m_nPersonaDataPublicCommendsLeader; // 0x0078 + int32 m_nPersonaDataPublicCommendsTeacher; // 0x007C + int32 m_nPersonaDataPublicCommendsFriendly; // 0x0080 + int32 m_nPersonaDataXpTrailLevel; // 0x0084 + C_UtlVectorEmbeddedNetworkVar< ServerAuthoritativeWeaponSlot_t > m_vecServerAuthoritativeWeaponSlots; // 0x0088 +}; +class CCSPlayerModernJump // client +{ + GameTick_t m_nLastActualJumpPressTick; // 0x0010 + float32 m_flLastActualJumpPressFrac; // 0x0014 + GameTick_t m_nLastUsableJumpPressTick; // 0x0018 + float32 m_flLastUsableJumpPressFrac; // 0x001C + GameTick_t m_nLastLandedTick; // 0x0020 + float32 m_flLastLandedFrac; // 0x0024 + float32 m_flLastLandedVelocityX; // 0x0028 + float32 m_flLastLandedVelocityY; // 0x002C +}; +class C_EconEntity::AttachedModelData_t // client +{ + int32 m_iModelDisplayFlags; // 0x0000 +}; +class CPulse_ResumePoint : public CPulse_OutflowConnection // pulse_runtime_lib +{ +}; +class CTriggerFan : public C_BaseTrigger // client +{ + Vector m_vFanOriginOffset; // 0x0F58 + Vector m_vDirection; // 0x0F64 + bool m_bPushTowardsInfoTarget; // 0x0F70 + bool m_bPushAwayFromInfoTarget; // 0x0F71 + Quaternion m_qNoiseDelta; // 0x0F80 + CHandle< CInfoFan > m_hInfoFan; // 0x0F90 + float32 m_flForce; // 0x0F94 + bool m_bFalloff; // 0x0F98 + CountdownTimer m_RampTimer; // 0x0FA0 +}; +class C_HostageCarriableProp : public CBaseAnimGraph // client +{ +}; +class C_BulletHitModel : public CBaseAnimGraph // client +{ + matrix3x4_t m_matLocal; // 0x1168 + int32 m_iBoneIndex; // 0x1198 + CHandle< C_BaseEntity > m_hPlayerParent; // 0x119C + bool m_bIsHit; // 0x11A0 + float32 m_flTimeCreated; // 0x11A4 + Vector m_vecStartPos; // 0x11A8 +}; +class C_FuncElectrifiedVolume : public C_FuncBrush // client +{ + ParticleIndex_t m_nAmbientEffect; // 0x0E88 + CUtlSymbolLarge m_EffectName; // 0x0E90 + bool m_bState; // 0x0E98 +}; +class C_MapVetoPickController : public C_BaseEntity // client +{ + int32 m_nDraftType; // 0x0618 + int32 m_nTeamWinningCoinToss; // 0x061C + int32[64] m_nTeamWithFirstChoice; // 0x0620 + int32[7] m_nVoteMapIdsList; // 0x0720 + int32[64] m_nAccountIDs; // 0x073C + int32[64] m_nMapId0; // 0x083C + int32[64] m_nMapId1; // 0x093C + int32[64] m_nMapId2; // 0x0A3C + int32[64] m_nMapId3; // 0x0B3C + int32[64] m_nMapId4; // 0x0C3C + int32[64] m_nMapId5; // 0x0D3C + int32[64] m_nStartingSide0; // 0x0E3C + int32 m_nCurrentPhase; // 0x0F3C + int32 m_nPhaseStartTick; // 0x0F40 + int32 m_nPhaseDurationTicks; // 0x0F44 + int32 m_nPostDataUpdateTick; // 0x0F48 + bool m_bDisabledHud; // 0x0F4C +}; +class C_EnvVolumetricFogVolume : public C_BaseEntity // client +{ + bool m_bActive; // 0x0608 + Vector m_vBoxMins; // 0x060C + Vector m_vBoxMaxs; // 0x0618 + bool m_bStartDisabled; // 0x0624 + bool m_bIndirectUseLPVs; // 0x0625 + float32 m_flStrength; // 0x0628 + int32 m_nFalloffShape; // 0x062C + float32 m_flFalloffExponent; // 0x0630 + float32 m_flHeightFogDepth; // 0x0634 + float32 m_fHeightFogEdgeWidth; // 0x0638 + float32 m_fIndirectLightStrength; // 0x063C + float32 m_fSunLightStrength; // 0x0640 + float32 m_fNoiseStrength; // 0x0644 + Color m_TintColor; // 0x0648 + bool m_bOverrideTintColor; // 0x064C + bool m_bOverrideIndirectLightStrength; // 0x064D + bool m_bOverrideSunLightStrength; // 0x064E + bool m_bOverrideNoiseStrength; // 0x064F +}; +class C_CSGO_EndOfMatchCharacterPosition : public C_CSGO_TeamPreviewCharacterPosition // client +{ +}; +class CPulseCell_PlaySequence : public CPulseCell_BaseYieldingInflow // client +{ + CUtlString m_SequenceName; // 0x0048 + PulseNodeDynamicOutflows_t m_PulseAnimEvents; // 0x0050 + CPulse_ResumePoint m_OnFinished; // 0x0068 + CPulse_ResumePoint m_OnCanceled; // 0x00B0 +}; +class C_BaseEntityAPI // client +{ +}; +class C_BarnLight : public C_BaseModelEntity // client +{ + bool m_bEnabled; // 0x0E88 + int32 m_nColorMode; // 0x0E8C + Color m_Color; // 0x0E90 + float32 m_flColorTemperature; // 0x0E94 + float32 m_flBrightness; // 0x0E98 + float32 m_flBrightnessScale; // 0x0E9C + int32 m_nDirectLight; // 0x0EA0 + int32 m_nBakedShadowIndex; // 0x0EA4 + int32 m_nLightPathUniqueId; // 0x0EA8 + int32 m_nLightMapUniqueId; // 0x0EAC + int32 m_nLuminaireShape; // 0x0EB0 + float32 m_flLuminaireSize; // 0x0EB4 + float32 m_flLuminaireAnisotropy; // 0x0EB8 + CUtlString m_LightStyleString; // 0x0EC0 + GameTime_t m_flLightStyleStartTime; // 0x0EC8 + C_NetworkUtlVectorBase< CUtlString > m_QueuedLightStyleStrings; // 0x0ED0 + C_NetworkUtlVectorBase< CUtlString > m_LightStyleEvents; // 0x0EE8 + C_NetworkUtlVectorBase< CHandle< C_BaseModelEntity > > m_LightStyleTargets; // 0x0F00 + CEntityIOOutput[4] m_StyleEvent; // 0x0F18 + CStrongHandle< InfoForResourceTypeCTextureBase > m_hLightCookie; // 0x0F78 + float32 m_flShape; // 0x0F80 + float32 m_flSoftX; // 0x0F84 + float32 m_flSoftY; // 0x0F88 + float32 m_flSkirt; // 0x0F8C + float32 m_flSkirtNear; // 0x0F90 + Vector m_vSizeParams; // 0x0F94 + float32 m_flRange; // 0x0FA0 + Vector m_vShear; // 0x0FA4 + int32 m_nBakeSpecularToCubemaps; // 0x0FB0 + Vector m_vBakeSpecularToCubemapsSize; // 0x0FB4 + int32 m_nCastShadows; // 0x0FC0 + int32 m_nShadowMapSize; // 0x0FC4 + int32 m_nShadowPriority; // 0x0FC8 + bool m_bContactShadow; // 0x0FCC + bool m_bForceShadowsEnabled; // 0x0FCD + int32 m_nBounceLight; // 0x0FD0 + float32 m_flBounceScale; // 0x0FD4 + bool m_bDynamicBounce; // 0x0FD8 + float32 m_flMinRoughness; // 0x0FDC + Vector m_vAlternateColor; // 0x0FE0 + float32 m_fAlternateColorBrightness; // 0x0FEC + int32 m_nFog; // 0x0FF0 + float32 m_flFogStrength; // 0x0FF4 + int32 m_nFogShadows; // 0x0FF8 + float32 m_flFogScale; // 0x0FFC + bool m_bFogMixedShadows; // 0x1000 + float32 m_flFadeSizeStart; // 0x1004 + float32 m_flFadeSizeEnd; // 0x1008 + float32 m_flShadowFadeSizeStart; // 0x100C + float32 m_flShadowFadeSizeEnd; // 0x1010 + bool m_bPrecomputedFieldsValid; // 0x1014 + Vector m_vPrecomputedBoundsMins; // 0x1018 + Vector m_vPrecomputedBoundsMaxs; // 0x1024 + Vector m_vPrecomputedOBBOrigin; // 0x1030 + QAngle m_vPrecomputedOBBAngles; // 0x103C + Vector m_vPrecomputedOBBExtent; // 0x1048 + int32 m_nPrecomputedSubFrusta; // 0x1054 + Vector m_vPrecomputedOBBOrigin0; // 0x1058 + QAngle m_vPrecomputedOBBAngles0; // 0x1064 + Vector m_vPrecomputedOBBExtent0; // 0x1070 + Vector m_vPrecomputedOBBOrigin1; // 0x107C + QAngle m_vPrecomputedOBBAngles1; // 0x1088 + Vector m_vPrecomputedOBBExtent1; // 0x1094 + Vector m_vPrecomputedOBBOrigin2; // 0x10A0 + QAngle m_vPrecomputedOBBAngles2; // 0x10AC + Vector m_vPrecomputedOBBExtent2; // 0x10B8 + Vector m_vPrecomputedOBBOrigin3; // 0x10C4 + QAngle m_vPrecomputedOBBAngles3; // 0x10D0 + Vector m_vPrecomputedOBBExtent3; // 0x10DC + Vector m_vPrecomputedOBBOrigin4; // 0x10E8 + QAngle m_vPrecomputedOBBAngles4; // 0x10F4 + Vector m_vPrecomputedOBBExtent4; // 0x1100 + Vector m_vPrecomputedOBBOrigin5; // 0x110C + QAngle m_vPrecomputedOBBAngles5; // 0x1118 + Vector m_vPrecomputedOBBExtent5; // 0x1124 + bool m_bInitialBoneSetup; // 0x1170 + C_NetworkUtlVectorBase< uint16 > m_VisClusters; // 0x1178 +}; +class CPulseCell_LerpCameraSettings : public CPulseCell_BaseLerp // client +{ + float32 m_flSeconds; // 0x0090 + PointCameraSettings_t m_Start; // 0x0094 + PointCameraSettings_t m_End; // 0x00A4 +}; +class CPointOffScreenIndicatorUi : public C_PointClientUIWorldPanel // client +{ + bool m_bBeenEnabled; // 0x10E0 + bool m_bHide; // 0x10E1 + float32 m_flSeenTargetTime; // 0x10E4 + C_PointClientUIWorldPanel* m_pTargetPanel; // 0x10E8 +}; +class CCSObserver_UseServices : public CPlayer_UseServices // client +{ +}; +class C_PostProcessingVolume : public C_BaseTrigger // client +{ + CStrongHandle< InfoForResourceTypeCPostProcessingResource > m_hPostSettings; // 0x0F68 + float32 m_flFadeDuration; // 0x0F70 + float32 m_flMinLogExposure; // 0x0F74 + float32 m_flMaxLogExposure; // 0x0F78 + float32 m_flMinExposure; // 0x0F7C + float32 m_flMaxExposure; // 0x0F80 + float32 m_flExposureCompensation; // 0x0F84 + float32 m_flExposureFadeSpeedUp; // 0x0F88 + float32 m_flExposureFadeSpeedDown; // 0x0F8C + float32 m_flTonemapEVSmoothingRange; // 0x0F90 + bool m_bMaster; // 0x0F94 + bool m_bExposureControl; // 0x0F95 +}; +class CCSPlayer_UseServices : public CPlayer_UseServices // client +{ +}; +class C_CSGO_CounterTerroristWingmanIntroCamera : public C_CSGO_TeamPreviewCamera // client +{ +}; +class CPulseCell_PickBestOutflowSelector : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseBestOutflowRules_t m_nCheckType; // 0x0048 + PulseSelectorOutflowList_t m_OutflowList; // 0x0050 +}; +class CInfoFan : public C_PointEntity // client +{ + float32 m_fFanForceMaxRadius; // 0x0648 + float32 m_fFanForceMinRadius; // 0x064C + float32 m_flCurveDistRange; // 0x0650 + CUtlSymbolLarge m_FanForceCurveString; // 0x0658 +}; +class C_VoteController : public C_BaseEntity // client +{ + int32 m_iActiveIssueIndex; // 0x0618 + int32 m_iOnlyTeamToVote; // 0x061C + int32[5] m_nVoteOptionCount; // 0x0620 + int32 m_nPotentialVotes; // 0x0634 + bool m_bVotesDirty; // 0x0638 + bool m_bTypeDirty; // 0x0639 + bool m_bIsYesNoVote; // 0x063A +}; +class C_CSPlayerPawnBase : public C_BasePlayerPawn // client +{ + CCSPlayer_PingServices* m_pPingServices; // 0x15C0 + CSPlayerState m_previousPlayerState; // 0x15C8 + CSPlayerState m_iPlayerState; // 0x15CC + bool m_bHasMovedSinceSpawn; // 0x15D0 + GameTime_t m_flLastSpawnTimeIndex; // 0x15D4 + int32 m_iProgressBarDuration; // 0x15D8 + float32 m_flProgressBarStartTime; // 0x15DC + GameTime_t m_flClientDeathTime; // 0x15E0 + float32 m_flFlashBangTime; // 0x15E4 + float32 m_flFlashScreenshotAlpha; // 0x15E8 + float32 m_flFlashOverlayAlpha; // 0x15EC + bool m_bFlashBuildUp; // 0x15F0 + bool m_bFlashDspHasBeenCleared; // 0x15F1 + bool m_bFlashScreenshotHasBeenGrabbed; // 0x15F2 + float32 m_flFlashMaxAlpha; // 0x15F4 + float32 m_flFlashDuration; // 0x15F8 + GameTime_t m_flClientHealthFadeChangeTimestamp; // 0x15FC + int32 m_nClientHealthFadeParityValue; // 0x1600 + float32 m_fNextThinkPushAway; // 0x1604 + float32 m_flCurrentMusicStartTime; // 0x160C + float32 m_flMusicRoundStartTime; // 0x1610 + bool m_bDeferStartMusicOnWarmup; // 0x1614 + float32 m_flLastSmokeOverlayAlpha; // 0x1618 + float32 m_flLastSmokeAge; // 0x161C + Vector m_vLastSmokeOverlayColor; // 0x1620 + CHandle< CCSPlayerController > m_hOriginalController; // 0x1648 +}; +class C_C4 : public C_CSWeaponBase // client +{ + ParticleIndex_t m_activeLightParticleIndex; // 0x1F40 + C4LightEffect_t m_eActiveLightEffect; // 0x1F44 + bool m_bStartedArming; // 0x1F48 + GameTime_t m_fArmedTime; // 0x1F4C + bool m_bBombPlacedAnimation; // 0x1F50 + bool m_bIsPlantingViaUse; // 0x1F51 + EntitySpottedState_t m_entitySpottedState; // 0x1F58 + int32 m_nSpotRules; // 0x1F70 + bool[7] m_bPlayedArmingBeeps; // 0x1F74 + bool m_bBombPlanted; // 0x1F7B +}; +class C_BreakableProp : public CBaseProp // client +{ + CPropDataComponent m_CPropDataComponent; // 0x11A0 + CEntityIOOutput m_OnStartDeath; // 0x11E0 + CEntityIOOutput m_OnBreak; // 0x11F8 + CEntityOutputTemplate< float32, float32 > m_OnHealthChanged; // 0x1210 + CEntityIOOutput m_OnTakeDamage; // 0x1230 + float32 m_impactEnergyScale; // 0x1248 + int32 m_iMinHealthDmg; // 0x124C + float32 m_flPressureDelay; // 0x1250 + float32 m_flDefBurstScale; // 0x1254 + Vector m_vDefBurstOffset; // 0x1258 + CHandle< C_BaseEntity > m_hBreaker; // 0x1264 + PerformanceMode_t m_PerformanceMode; // 0x1268 + GameTime_t m_flPreventDamageBeforeTime; // 0x126C + BreakableContentsType_t m_BreakableContentsType; // 0x1270 + CUtlString m_strBreakableContentsPropGroupOverride; // 0x1278 + CUtlString m_strBreakableContentsParticleOverride; // 0x1280 + bool m_bHasBreakPiecesOrCommands; // 0x1288 + float32 m_explodeDamage; // 0x128C + float32 m_explodeRadius; // 0x1290 + BaseExplosionTypes_t m_nExplosionType; // 0x1294 + float32 m_explosionDelay; // 0x1298 + CUtlSymbolLarge m_explosionBuildupSound; // 0x12A0 + CUtlSymbolLarge m_explosionCustomEffect; // 0x12A8 + CUtlSymbolLarge m_explosionCustomSound; // 0x12B0 + CUtlSymbolLarge m_explosionModifier; // 0x12B8 + CHandle< C_BasePlayerPawn > m_hPhysicsAttacker; // 0x12C0 + GameTime_t m_flLastPhysicsInfluenceTime; // 0x12C4 + float32 m_flDefaultFadeScale; // 0x12C8 + CHandle< C_BaseEntity > m_hLastAttacker; // 0x12CC +}; +class CCSGO_WingmanIntroTerroristPosition : public CCSGO_WingmanIntroCharacterPosition // client +{ +}; +class CPrecipitationVData : public CEntitySubclassVDataBase // client +{ + CResourceNameTyped< CWeakHandle< InfoForResourceTypeIParticleSystemDefinition > > m_szParticlePrecipitationEffect; // 0x0028 + float32 m_flInnerDistance; // 0x0108 + ParticleAttachment_t m_nAttachType; // 0x010C + bool m_bBatchSameVolumeType; // 0x0110 + int32 m_nRTEnvCP; // 0x0114 + int32 m_nRTEnvCPComponent; // 0x0118 + CUtlString m_szModifier; // 0x0120 +}; +class C_RetakeGameRules // client +{ + int32 m_nMatchSeed; // 0x0138 + bool m_bBlockersPresent; // 0x013C + bool m_bRoundInProgress; // 0x013D + int32 m_iFirstSecondHalfRound; // 0x0140 + int32 m_iBombSite; // 0x0144 + CHandle< C_CSPlayerPawn > m_hBombPlanter; // 0x0148 +}; +class CPulseCell_WaitForObservable : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + PulseObservableBoolExpression_t m_Condition; // 0x0048 + CPulse_ResumePoint m_OnTrue; // 0x00C0 +}; +class C_SoundAreaEntitySphere : public C_SoundAreaEntityBase // client +{ + float32 m_flRadius; // 0x0630 +}; +class CPulseCell_Step_EntFire : public CPulseCell_BaseFlow // client +{ + CUtlString m_Input; // 0x0048 +}; +class C_WeaponAWP : public C_CSWeaponBaseGun // client +{ +}; +class C_BaseButton : public C_BaseToggle // client +{ + CHandle< C_BaseModelEntity > m_glowEntity; // 0x0E88 + bool m_usable; // 0x0E8C + CUtlSymbolLarge m_szDisplayText; // 0x0E90 +}; +class CCSObserver_ObserverServices : public CPlayer_ObserverServices // client +{ + ObserverInterpState_t m_obsInterpState; // 0x0064 +}; +class CHitboxComponent : public CEntityComponent // client +{ + float32 m_flBoundsExpandRadius; // 0x0014 +}; +class ServerAuthoritativeWeaponSlot_t // client +{ + uint16 unClass; // 0x0030 + uint16 unSlot; // 0x0032 + uint16 unItemDefIdx; // 0x0034 +}; +class C_CSMinimapBoundary : public C_BaseEntity // client +{ +}; +class CPathQueryComponent : public CEntityComponent // client +{ +}; +class C_Precipitation : public C_BaseTrigger // client +{ + float32 m_flDensity; // 0x0F58 + float32 m_flParticleInnerDist; // 0x0F68 + char* m_pParticleDef; // 0x0F70 + TimedEvent[1] m_tParticlePrecipTraceTimer; // 0x0F98 + bool[1] m_bActiveParticlePrecipEmitter; // 0x0FA0 + bool m_bParticlePrecipInitialized; // 0x0FA1 + bool m_bHasSimulatedSinceLastSceneObjectUpdate; // 0x0FA2 + int32 m_nAvailableSheetSequencesMaxIndex; // 0x0FA4 +}; +class CLogicRelay : public CLogicalEntity // client +{ + bool m_bDisabled; // 0x0608 + bool m_bWaitForRefire; // 0x0609 + bool m_bTriggerOnce; // 0x060A + bool m_bFastRetrigger; // 0x060B + bool m_bPassthoughCaller; // 0x060C +}; +class SequenceHistory_t // client +{ + HSequence m_hSequence; // 0x0000 + GameTime_t m_flSeqStartTime; // 0x0004 + float32 m_flSeqFixedCycle; // 0x0008 + AnimLoopMode_t m_nSeqLoopMode; // 0x000C + float32 m_flPlaybackRate; // 0x0010 + float32 m_flCyclesPerSecond; // 0x0014 +}; +class CPlayer_ItemServices : public CPlayerPawnComponent // client +{ +}; +class CPulse_OutflowConnection // pulse_runtime_lib +{ + PulseSymbol_t m_SourceOutflowName; // 0x0000 + PulseRuntimeChunkIndex_t m_nDestChunk; // 0x0010 + int32 m_nInstruction; // 0x0014 + PulseRegisterMap_t m_OutflowRegisterMap; // 0x0018 +}; +class C_WeaponUMP45 : public C_CSWeaponBaseGun // client +{ +}; +class C_WeaponG3SG1 : public C_CSWeaponBaseGun // client +{ +}; +class C_SpotlightEnd : public C_BaseModelEntity // client +{ + float32 m_flLightScale; // 0x0E88 + float32 m_Radius; // 0x0E8C +}; +class C_Fish : public CBaseAnimGraph // client +{ + Vector m_pos; // 0x1168 + Vector m_vel; // 0x1174 + QAngle m_angles; // 0x1180 + int32 m_localLifeState; // 0x118C + float32 m_deathDepth; // 0x1190 + float32 m_deathAngle; // 0x1194 + float32 m_buoyancy; // 0x1198 + CountdownTimer m_wiggleTimer; // 0x11A0 + float32 m_wigglePhase; // 0x11B8 + float32 m_wiggleRate; // 0x11BC + Vector m_actualPos; // 0x11C0 + QAngle m_actualAngles; // 0x11CC + Vector m_poolOrigin; // 0x11D8 + float32 m_waterLevel; // 0x11E4 + bool m_gotUpdate; // 0x11E8 + float32 m_x; // 0x11EC + float32 m_y; // 0x11F0 + float32 m_z; // 0x11F4 + float32 m_angle; // 0x11F8 + float32[20] m_errorHistory; // 0x11FC + int32 m_errorHistoryIndex; // 0x124C + int32 m_errorHistoryCount; // 0x1250 + float32 m_averageError; // 0x1254 +}; +class C_WeaponFamas : public C_CSWeaponBaseGun // client +{ +}; +class C_EnvVolumetricFogController : public C_BaseEntity // client +{ + float32 m_flScattering; // 0x0608 + Color m_TintColor; // 0x060C + float32 m_flAnisotropy; // 0x0610 + float32 m_flFadeSpeed; // 0x0614 + float32 m_flDrawDistance; // 0x0618 + float32 m_flFadeInStart; // 0x061C + float32 m_flFadeInEnd; // 0x0620 + float32 m_flIndirectStrength; // 0x0624 + int32 m_nVolumeDepth; // 0x0628 + float32 m_fFirstVolumeSliceThickness; // 0x062C + int32 m_nIndirectTextureDimX; // 0x0630 + int32 m_nIndirectTextureDimY; // 0x0634 + int32 m_nIndirectTextureDimZ; // 0x0638 + Vector m_vBoxMins; // 0x063C + Vector m_vBoxMaxs; // 0x0648 + bool m_bActive; // 0x0654 + GameTime_t m_flStartAnisoTime; // 0x0658 + GameTime_t m_flStartScatterTime; // 0x065C + GameTime_t m_flStartDrawDistanceTime; // 0x0660 + float32 m_flStartAnisotropy; // 0x0664 + float32 m_flStartScattering; // 0x0668 + float32 m_flStartDrawDistance; // 0x066C + float32 m_flDefaultAnisotropy; // 0x0670 + float32 m_flDefaultScattering; // 0x0674 + float32 m_flDefaultDrawDistance; // 0x0678 + bool m_bStartDisabled; // 0x067C + bool m_bEnableIndirect; // 0x067D + bool m_bIsMaster; // 0x067E + CStrongHandle< InfoForResourceTypeCTextureBase > m_hFogIndirectTexture; // 0x0680 + int32 m_nForceRefreshCount; // 0x0688 + float32 m_fNoiseSpeed; // 0x068C + float32 m_fNoiseStrength; // 0x0690 + Vector m_vNoiseScale; // 0x0694 + float32 m_fWindSpeed; // 0x06A0 + Vector m_vWindDirection; // 0x06A4 + bool m_bFirstTime; // 0x06B0 +}; +class CPulseGraphDef // pulse_runtime_lib +{ + PulseSymbol_t m_DomainIdentifier; // 0x0008 + CPulseValueFullType m_DomainSubType; // 0x0018 + PulseSymbol_t m_ParentMapName; // 0x0030 + PulseSymbol_t m_ParentXmlName; // 0x0040 + CUtlVector< CPulse_Chunk* > m_Chunks; // 0x0050 + CUtlVector< CPulseCell_Base* > m_Cells; // 0x0068 + CUtlVector< CPulse_Variable > m_Vars; // 0x0080 + CUtlVector< CPulse_PublicOutput > m_PublicOutputs; // 0x0098 + CUtlVector< CPulse_InvokeBinding* > m_InvokeBindings; // 0x00B0 + CUtlVector< CPulse_CallInfo* > m_CallInfos; // 0x00C8 + CUtlVector< CPulse_Constant > m_Constants; // 0x00E0 + CUtlVector< CPulse_DomainValue > m_DomainValues; // 0x00F8 + CUtlVector< CPulse_BlackboardReference > m_BlackboardReferences; // 0x0110 + CUtlVector< CPulse_OutputConnection* > m_OutputConnections; // 0x0128 +}; +class C_EnvDetailController : public C_BaseEntity // client +{ + float32 m_flFadeStartDist; // 0x0608 + float32 m_flFadeEndDist; // 0x060C +}; +class C_EnvWindVolume : public C_BaseEntity // client +{ + bool m_bActive; // 0x0608 + Vector m_vBoxMins; // 0x060C + Vector m_vBoxMaxs; // 0x0618 + bool m_bStartDisabled; // 0x0624 + int32 m_nShape; // 0x0628 + float32 m_fWindSpeedMultiplier; // 0x062C + float32 m_fWindTurbulenceMultiplier; // 0x0630 + float32 m_fWindSpeedVariationMultiplier; // 0x0634 + float32 m_fWindDirectionVariationMultiplier; // 0x0638 +}; +class CBasePlayerControllerAPI // client +{ +}; +class CHostageRescueZoneShim : public C_BaseTrigger // client +{ +}; +class CEnvSoundscapeAlias_snd_soundscape : public CEnvSoundscape // client +{ +}; +class CCSPlayer_HostageServices : public CPlayerPawnComponent // client +{ + CHandle< C_BaseEntity > m_hCarriedHostage; // 0x0048 + CHandle< C_BaseEntity > m_hCarriedHostageProp; // 0x004C +}; +class C_GameRulesProxy : public C_BaseEntity // client +{ +}; +class CRenderComponent : public CEntityComponent // client +{ + CNetworkVarChainer __m_pChainEntity; // 0x0010 + bool m_bIsRenderingWithViewModels; // 0x0050 + uint32 m_nSplitscreenFlags; // 0x0054 + bool m_bEnableRendering; // 0x0058 + bool m_bInterpolationReadyToDraw; // 0x00A8 +}; +class C_Team : public C_BaseEntity // client +{ + C_NetworkUtlVectorBase< CHandle< CBasePlayerController > > m_aPlayerControllers; // 0x0608 + C_NetworkUtlVectorBase< CHandle< C_BasePlayerPawn > > m_aPlayers; // 0x0620 + int32 m_iScore; // 0x0638 + char[129] m_szTeamname; // 0x063C +}; +class C_PathParticleRopeAlias_path_particle_rope_clientside : public C_PathParticleRope // client +{ +}; +class CPointChildModifier : public C_PointEntity // client +{ + bool m_bOrphanInsteadOfDeletingChildrenOnRemove; // 0x0608 +}; +class CCSPlayerLegacyJump // client +{ + bool m_bOldJumpPressed; // 0x0010 + float32 m_flJumpPressedTime; // 0x0014 +}; +class C_WeaponNOVA : public C_CSWeaponBaseShotgun // client +{ +}; +class C_DEagle : public C_CSWeaponBaseGun // client +{ +}; +class C_CS2HudModelAddon : public C_LateUpdatedAnimating // client +{ +}; +class C_TriggerMultiple : public C_BaseTrigger // client +{ +}; +class C_CSGO_TeamPreviewCamera : public C_CSGO_MapPreviewCameraPath // client +{ + int32 m_nVariant; // 0x0690 +}; +class C_ColorCorrectionVolume : public C_BaseTrigger // client +{ + float32 m_LastEnterWeight; // 0x0F58 + GameTime_t m_LastEnterTime; // 0x0F5C + float32 m_LastExitWeight; // 0x0F60 + GameTime_t m_LastExitTime; // 0x0F64 + bool m_bEnabled; // 0x0F68 + float32 m_MaxWeight; // 0x0F6C + float32 m_FadeDuration; // 0x0F70 + float32 m_Weight; // 0x0F74 + char[512] m_lookupFilename; // 0x0F78 +}; +class CPlayer_MovementServices : public CPlayerPawnComponent // client +{ + int32 m_nImpulse; // 0x0048 + CInButtonState m_nButtons; // 0x0050 + uint64 m_nQueuedButtonDownMask; // 0x0070 + uint64 m_nQueuedButtonChangeMask; // 0x0078 + uint64 m_nButtonDoublePressed; // 0x0080 + uint32[64] m_pButtonPressedCmdNumber; // 0x0088 + uint32 m_nLastCommandNumberProcessed; // 0x0188 + uint64 m_nToggleButtonDownMask; // 0x0190 + float32 m_flMaxspeed; // 0x01A0 + float32[4] m_arrForceSubtickMoveWhen; // 0x01A4 + float32 m_flForwardMove; // 0x01B4 + float32 m_flLeftMove; // 0x01B8 + float32 m_flUpMove; // 0x01BC + Vector m_vecLastMovementImpulses; // 0x01C0 + QAngle m_vecOldViewAngles; // 0x0228 +}; +class CInfoDynamicShadowHintBox : public CInfoDynamicShadowHint // client +{ + Vector m_vBoxMins; // 0x0620 + Vector m_vBoxMaxs; // 0x062C +}; +class CBaseAnimGraphController : public CSkeletonAnimationController // client +{ + AnimationAlgorithm_t m_nAnimationAlgorithm; // 0x0018 + CAnimGraphNetworkedVariables m_animGraphNetworkedVars; // 0x0020 + CSmartPtr< IAnimationGraphInstance > m_pAnimGraphInstance; // 0x14B0 + ExternalAnimGraphHandle_t m_nNextExternalGraphHandle; // 0x1510 + CUtlVector< CGlobalSymbol > m_vecSecondarySkeletonNames; // 0x1518 + C_NetworkUtlVectorBase< CHandle< CBaseAnimGraph > > m_vecSecondarySkeletons; // 0x1530 + int32 m_nSecondarySkeletonMasterCount; // 0x1548 + float32 m_flSoundSyncTime; // 0x1550 + uint32 m_nActiveIKChainMask; // 0x1554 + HSequence m_hSequence; // 0x15A8 + GameTime_t m_flSeqStartTime; // 0x15AC + float32 m_flSeqFixedCycle; // 0x15B0 + AnimLoopMode_t m_nAnimLoopMode; // 0x15B4 + CNetworkedQuantizedFloat m_flPlaybackRate; // 0x15B8 + SequenceFinishNotifyState_t m_nNotifyState; // 0x15C4 + bool m_bNetworkedAnimationInputsChanged; // 0x15C5 + bool m_bNetworkedSequenceChanged; // 0x15C6 + bool m_bLastUpdateSkipped; // 0x15C7 + bool m_bSequenceFinished; // 0x15C8 + GameTick_t m_nPrevAnimUpdateTick; // 0x15CC + CStrongHandle< InfoForResourceTypeCNmGraphDefinition > m_hGraphDefinitionAG2; // 0x1868 + C_NetworkUtlVectorBase< uint8 > m_serializedPoseRecipeAG2; // 0x1870 + int32 m_nSerializePoseRecipeSizeAG2; // 0x1888 + int32 m_nSerializePoseRecipeVersionAG2; // 0x188C + int32 m_nServerGraphInstanceIteration; // 0x1890 + int32 m_nServerSerializationContextIteration; // 0x1894 + ResourceId_t m_primaryGraphId; // 0x1898 + C_NetworkUtlVectorBase< ResourceId_t > m_vecExternalGraphIds; // 0x18A0 + C_NetworkUtlVectorBase< ResourceId_t > m_vecExternalClipIds; // 0x18B8 + CGlobalSymbol m_sAnimGraph2Identifier; // 0x18D0 + CUtlVector< ExternalAnimGraph_t > m_vecExternalGraphs; // 0x1AF8 + AnimationAlgorithm_t m_nPrevAnimationAlgorithm; // 0x1B31 +}; +class C_ColorCorrection : public C_BaseEntity // client +{ + Vector m_vecOrigin; // 0x0608 + float32 m_MinFalloff; // 0x0614 + float32 m_MaxFalloff; // 0x0618 + float32 m_flFadeInDuration; // 0x061C + float32 m_flFadeOutDuration; // 0x0620 + float32 m_flMaxWeight; // 0x0624 + float32 m_flCurWeight; // 0x0628 + char[512] m_netlookupFilename; // 0x062C + bool m_bEnabled; // 0x082C + bool m_bMaster; // 0x082D + bool m_bClientSide; // 0x082E + bool m_bExclusive; // 0x082F + bool[1] m_bEnabledOnClient; // 0x0830 + float32[1] m_flCurWeightOnClient; // 0x0834 + bool[1] m_bFadingIn; // 0x0838 + float32[1] m_flFadeStartWeight; // 0x083C + float32[1] m_flFadeStartTime; // 0x0840 + float32[1] m_flFadeDuration; // 0x0844 +}; +class CBuoyancyHelper // client +{ + CUtlStringToken m_nFluidType; // 0x0018 + float32 m_flFluidDensity; // 0x001C + float32 m_flNeutrallyBuoyantGravity; // 0x0020 + float32 m_flNeutrallyBuoyantLinearDamping; // 0x0024 + float32 m_flNeutrallyBuoyantAngularDamping; // 0x0028 + bool m_bNeutrallyBuoyant; // 0x002C + CUtlVector< float32 > m_vecFractionOfWheelSubmergedForWheelFriction; // 0x0030 + CUtlVector< float32 > m_vecWheelFrictionScales; // 0x0048 + CUtlVector< float32 > m_vecFractionOfWheelSubmergedForWheelDrag; // 0x0060 + CUtlVector< float32 > m_vecWheelDrag; // 0x0078 +}; +class C_PhysBox : public C_Breakable // client +{ +}; +class CCSPlayer_CameraServices : public CCSPlayerBase_CameraServices // client +{ + float32 m_flDeathCamTilt; // 0x02A8 + Vector m_vClientScopeInaccuracy; // 0x02B0 +}; +class CFilterMultiple : public CBaseFilter // client +{ + filter_t m_nFilterType; // 0x0640 + CUtlSymbolLarge[10] m_iFilterName; // 0x0648 + CHandle< C_BaseEntity >[10] m_hFilter; // 0x0698 +}; +class CPulseCell_FireCursors : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outflows; // 0x0048 + bool m_bWaitForChildOutflows; // 0x0060 + CPulse_ResumePoint m_OnFinished; // 0x0068 + CPulse_ResumePoint m_OnCanceled; // 0x00B0 +}; +class CEnvSoundscape : public C_BaseEntity // client +{ + CEntityIOOutput m_OnPlay; // 0x0608 + float32 m_flRadius; // 0x0620 + CUtlSymbolLarge m_soundEventName; // 0x0628 + bool m_bOverrideWithEvent; // 0x0630 + int32 m_soundscapeIndex; // 0x0634 + int32 m_soundscapeEntityListId; // 0x0638 + CUtlSymbolLarge[8] m_positionNames; // 0x0640 + CHandle< CEnvSoundscape > m_hProxySoundscape; // 0x0680 + bool m_bDisabled; // 0x0684 + CUtlSymbolLarge m_soundscapeName; // 0x0688 + uint32 m_soundEventHash; // 0x0690 +}; +class C_SoundEventEntityAlias_snd_event_point : public C_SoundEventEntity // client +{ +}; +class C_FogController : public C_BaseEntity // client +{ + fogparams_t m_fog; // 0x0608 + bool m_bUseAngles; // 0x0670 + int32 m_iChangedVariables; // 0x0674 +}; +class C_SoundOpvarSetOBBWindEntity : public C_SoundOpvarSetPointBase // client +{ +}; +class C_MolotovGrenade : public C_BaseCSGrenade // client +{ +}; +class C_NetTestBaseCombatCharacter : public C_BaseCombatCharacter // client +{ +}; +class CBodyComponentPoint : public CBodyComponent // client +{ + CGameSceneNode m_sceneNode; // 0x0080 +}; +class C_WeaponM4A1Silencer : public C_CSWeaponBaseGun // client +{ +}; +class C_EconItemView : public IEconItemInterface // client +{ + bool m_bInventoryImageRgbaRequested; // 0x0060 + bool m_bInventoryImageTriedCache; // 0x0061 + int32 m_nInventoryImageRgbaWidth; // 0x0080 + int32 m_nInventoryImageRgbaHeight; // 0x0084 + char[260] m_szCurrentLoadCachedFileName; // 0x0088 + bool m_bRestoreCustomMaterialAfterPrecache; // 0x01B8 + uint16 m_iItemDefinitionIndex; // 0x01BA + int32 m_iEntityQuality; // 0x01BC + uint32 m_iEntityLevel; // 0x01C0 + uint64 m_iItemID; // 0x01C8 + uint32 m_iItemIDHigh; // 0x01D0 + uint32 m_iItemIDLow; // 0x01D4 + uint32 m_iAccountID; // 0x01D8 + uint32 m_iInventoryPosition; // 0x01DC + bool m_bInitialized; // 0x01E8 + bool m_bDisallowSOC; // 0x01E9 + bool m_bIsStoreItem; // 0x01EA + bool m_bIsTradeItem; // 0x01EB + int32 m_iEntityQuantity; // 0x01EC + int32 m_iRarityOverride; // 0x01F0 + int32 m_iQualityOverride; // 0x01F4 + int32 m_iOriginOverride; // 0x01F8 + uint8 m_ubStyleOverride; // 0x01FC + uint8 m_unClientFlags; // 0x01FD + CAttributeList m_AttributeList; // 0x0208 + CAttributeList m_NetworkedDynamicAttributes; // 0x0280 + char[161] m_szCustomName; // 0x02F8 + char[161] m_szCustomNameOverride; // 0x0399 + bool m_bInitializedTags; // 0x0468 +}; +class CPulseCell_Timeline::TimelineEvent_t // pulse_runtime_lib +{ + float32 m_flTimeFromPrevious; // 0x0000 + CPulse_OutflowConnection m_EventOutflow; // 0x0008 +}; +class CPulseCell_IntervalTimer::CursorState_t // pulse_runtime_lib +{ + GameTime_t m_StartTime; // 0x0000 + GameTime_t m_EndTime; // 0x0004 + float32 m_flWaitInterval; // 0x0008 + float32 m_flWaitIntervalHigh; // 0x000C + bool m_bCompleteOnNextWake; // 0x0010 +}; +class CPulseCell_BaseRequirement : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class CPulseCell_BaseState : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ +}; +class OutflowWithRequirements_t // pulse_runtime_lib +{ + CPulse_OutflowConnection m_Connection; // 0x0000 + PulseDocNodeID_t m_DestinationFlowNodeID; // 0x0048 + CUtlVector< PulseDocNodeID_t > m_RequirementNodeIDs; // 0x0050 + CUtlVector< int32 > m_nCursorStateBlockIndex; // 0x0068 +}; +class CPulseCell_IsRequirementValid : public CPulseCell_BaseRequirement // pulse_runtime_lib +{ +}; +class C_SoundEventPathCornerEntity : public C_SoundEventEntity // client +{ + C_NetworkUtlVectorBase< SoundeventPathCornerPairNetworked_t > m_vecCornerPairsNetworked; // 0x06B8 +}; +class C_InfoVisibilityBox : public C_BaseEntity // client +{ + int32 m_nMode; // 0x060C + Vector m_vBoxSize; // 0x0610 + bool m_bEnabled; // 0x061C +}; +class CCSPlayer_ItemServices : public CPlayer_ItemServices // client +{ + bool m_bHasDefuser; // 0x0048 + bool m_bHasHelmet; // 0x0049 +}; +class CPulseCell_Value_Gradient : public CPulseCell_BaseValue // pulse_runtime_lib +{ + CColorGradient m_Gradient; // 0x0048 +}; +class IntervalTimer // client +{ + GameTime_t m_timestamp; // 0x0008 + WorldGroupId_t m_nWorldGroupId; // 0x000C +}; +class audioparams_t // client +{ + Vector[8] localSound; // 0x0008 + int32 soundscapeIndex; // 0x0068 + uint8 localBits; // 0x006C + int32 soundscapeEntityListIndex; // 0x0070 + uint32 soundEventHash; // 0x0074 +}; +class C_PathParticleRope : public C_BaseEntity // client +{ + bool m_bStartActive; // 0x0610 + float32 m_flMaxSimulationTime; // 0x0614 + CUtlSymbolLarge m_iszEffectName; // 0x0618 + CUtlVector< CUtlSymbolLarge > m_PathNodes_Name; // 0x0620 + float32 m_flParticleSpacing; // 0x0638 + float32 m_flSlack; // 0x063C + float32 m_flRadius; // 0x0640 + Color m_ColorTint; // 0x0644 + int32 m_nEffectState; // 0x0648 + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_iEffectIndex; // 0x0650 + C_NetworkUtlVectorBase< Vector > m_PathNodes_Position; // 0x0658 + C_NetworkUtlVectorBase< Vector > m_PathNodes_TangentIn; // 0x0670 + C_NetworkUtlVectorBase< Vector > m_PathNodes_TangentOut; // 0x0688 + C_NetworkUtlVectorBase< Vector > m_PathNodes_Color; // 0x06A0 + C_NetworkUtlVectorBase< bool > m_PathNodes_PinEnabled; // 0x06B8 + C_NetworkUtlVectorBase< float32 > m_PathNodes_RadiusScale; // 0x06D0 +}; +class C_DecoyProjectile : public C_BaseCSGrenadeProjectile // client +{ + int32 m_nDecoyShotTick; // 0x1438 + int32 m_nClientLastKnownDecoyShotTick; // 0x143C + GameTime_t m_flTimeParticleEffectSpawn; // 0x1460 +}; +class C_AttributeContainer : public CAttributeManager // client +{ + C_EconItemView m_Item; // 0x0050 + int32 m_iExternalItemProviderRegisteredToken; // 0x04C0 + uint64 m_ullRegisteredAsItemID; // 0x04C8 +}; +class C_CSWeaponBase : public C_BasePlayerWeapon // client +{ + WeaponGameplayAnimState m_iWeaponGameplayAnimState; // 0x1948 + GameTime_t m_flWeaponGameplayAnimStateTimestamp; // 0x194C + GameTime_t m_flInspectCancelCompleteTime; // 0x1950 + bool m_bInspectPending; // 0x1954 + bool m_bInspectShouldLoop; // 0x1955 + float32 m_flCrosshairDistance; // 0x1980 + int32 m_iAmmoLastCheck; // 0x1984 + int32 m_nLastEmptySoundCmdNum; // 0x1988 + bool m_bFireOnEmpty; // 0x198C + CEntityIOOutput m_OnPlayerPickup; // 0x1990 + CSWeaponMode m_weaponMode; // 0x19A8 + float32 m_flTurningInaccuracyDelta; // 0x19AC + Vector m_vecTurningInaccuracyEyeDirLast; // 0x19B0 + float32 m_flTurningInaccuracy; // 0x19BC + float32 m_fAccuracyPenalty; // 0x19C0 + GameTime_t m_flLastAccuracyUpdateTime; // 0x19C4 + float32 m_fAccuracySmoothedForZoom; // 0x19C8 + int32 m_iRecoilIndex; // 0x19CC + float32 m_flRecoilIndex; // 0x19D0 + bool m_bBurstMode; // 0x19D4 + GameTime_t m_flLastBurstModeChangeTime; // 0x19D8 + GameTick_t m_nPostponeFireReadyTicks; // 0x19DC + float32 m_flPostponeFireReadyFrac; // 0x19E0 + bool m_bInReload; // 0x19E4 + GameTime_t m_flDroppedAtTime; // 0x19E8 + bool m_bIsHauledBack; // 0x19EC + bool m_bSilencerOn; // 0x19ED + GameTime_t m_flTimeSilencerSwitchComplete; // 0x19F0 + float32 m_flWeaponActionPlaybackRate; // 0x19F4 + int32 m_iOriginalTeamNumber; // 0x19F8 + int32 m_iMostRecentTeamNumber; // 0x19FC + bool m_bDroppedNearBuyZone; // 0x1A00 + float32 m_flNextAttackRenderTimeOffset; // 0x1A04 + bool m_bClearWeaponIdentifyingUGC; // 0x1AA0 + bool m_bVisualsDataSet; // 0x1AA1 + bool m_bUIWeapon; // 0x1AA2 + int32 m_nCustomEconReloadEventId; // 0x1AA4 + GameTime_t m_nextPrevOwnerUseTime; // 0x1AB0 + CHandle< C_CSPlayerPawn > m_hPrevOwner; // 0x1AB4 + GameTick_t m_nDropTick; // 0x1AB8 + bool m_bWasActiveWeaponWhenDropped; // 0x1ABC + bool m_donated; // 0x1ADC + GameTime_t m_fLastShotTime; // 0x1AE0 + bool m_bWasOwnedByCT; // 0x1AE4 + bool m_bWasOwnedByTerrorist; // 0x1AE5 + float32 m_flNextClientFireBulletTime; // 0x1AE8 + float32 m_flNextClientFireBulletTime_Repredict; // 0x1AEC + C_IronSightController m_IronSightController; // 0x1C50 + int32 m_iIronSightMode; // 0x1D00 + GameTime_t m_flLastLOSTraceFailureTime; // 0x1D18 + float32 m_flWatTickOffset; // 0x1D78 + GameTime_t m_flLastShakeTime; // 0x1D8C +}; +class CTimeline : public IntervalTimer // client +{ + float32[64] m_flValues; // 0x0010 + int32[64] m_nValueCounts; // 0x0110 + int32 m_nBucketCount; // 0x0210 + float32 m_flInterval; // 0x0214 + float32 m_flFinalValue; // 0x0218 + TimelineCompression_t m_nCompressionType; // 0x021C + bool m_bStopped; // 0x0220 +}; +class CPulseCursorFuncs // pulse_runtime_lib +{ +}; +class C_TonemapController2 : public C_BaseEntity // client +{ + float32 m_flAutoExposureMin; // 0x0608 + float32 m_flAutoExposureMax; // 0x060C + float32 m_flExposureAdaptationSpeedUp; // 0x0610 + float32 m_flExposureAdaptationSpeedDown; // 0x0614 + float32 m_flTonemapEVSmoothingRange; // 0x0618 +}; +class CountdownTimer // client +{ + float32 m_duration; // 0x0008 + GameTime_t m_timestamp; // 0x000C + float32 m_timescale; // 0x0010 + WorldGroupId_t m_nWorldGroupId; // 0x0014 +}; +class PulseNodeDynamicOutflows_t::DynamicOutflow_t // pulse_runtime_lib +{ + CGlobalSymbol m_OutflowID; // 0x0000 + CPulse_OutflowConnection m_Connection; // 0x0008 +}; +class C_WeaponMag7 : public C_CSWeaponBaseGun // client +{ +}; +class WeaponPurchaseCount_t // client +{ + uint16 m_nItemDefIndex; // 0x0030 + uint16 m_nCount; // 0x0032 +}; +class CBasePulseGraphInstance // pulse_runtime_lib +{ +}; +class FilterHealth : public CBaseFilter // client +{ + bool m_bAdrenalineActive; // 0x0640 + int32 m_iHealthMin; // 0x0644 + int32 m_iHealthMax; // 0x0648 +}; +class C_PointClientUIHUD : public C_BaseClientUIEntity // client +{ + bool m_bCheckCSSClasses; // 0x0EC0 + bool m_bIgnoreInput; // 0x1038 + float32 m_flWidth; // 0x103C + float32 m_flHeight; // 0x1040 + float32 m_flDPI; // 0x1044 + float32 m_flInteractDistance; // 0x1048 + float32 m_flDepthOffset; // 0x104C + uint32 m_unOwnerContext; // 0x1050 + uint32 m_unHorizontalAlign; // 0x1054 + uint32 m_unVerticalAlign; // 0x1058 + uint32 m_unOrientation; // 0x105C + bool m_bAllowInteractionFromAllSceneWorlds; // 0x1060 + C_NetworkUtlVectorBase< CUtlSymbolLarge > m_vecCSSClasses; // 0x1068 +}; +class CPulseCell_Inflow_GraphHook : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_HookName; // 0x0080 +}; +class SignatureOutflow_Resume : public CPulse_ResumePoint // pulse_runtime_lib +{ +}; +class CPathSimpleAPI // client +{ +}; +class C_InfoLadderDismount : public C_BaseEntity // client +{ +}; +class C_PointCommentaryNode : public CBaseAnimGraph // client +{ + bool m_bActive; // 0x1180 + bool m_bWasActive; // 0x1181 + GameTime_t m_flEndTime; // 0x1184 + GameTime_t m_flStartTime; // 0x1188 + float32 m_flStartTimeInCommentary; // 0x118C + CUtlSymbolLarge m_iszCommentaryFile; // 0x1190 + CUtlSymbolLarge m_iszTitle; // 0x1198 + CUtlSymbolLarge m_iszSpeakers; // 0x11A0 + int32 m_iNodeNumber; // 0x11A8 + int32 m_iNodeNumberMax; // 0x11AC + bool m_bListenedTo; // 0x11B0 + CSoundPatch* m_sndCommentary; // 0x11B8 + CHandle< C_BaseEntity > m_hViewPosition; // 0x11C0 + bool m_bRestartAfterRestore; // 0x11C4 +}; +class CSpriteOriented : public C_Sprite // client +{ +}; +class shard_model_desc_t // client +{ + int32 m_nModelID; // 0x0008 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hMaterialBase; // 0x0010 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hMaterialDamageOverlay; // 0x0018 + ShardSolid_t m_solid; // 0x0020 + Vector2D m_vecPanelSize; // 0x0024 + Vector2D m_vecStressPositionA; // 0x002C + Vector2D m_vecStressPositionB; // 0x0034 + C_NetworkUtlVectorBase< Vector2D > m_vecPanelVertices; // 0x0040 + C_NetworkUtlVectorBase< Vector4D > m_vInitialPanelVertices; // 0x0058 + float32 m_flGlassHalfThickness; // 0x0070 + bool m_bHasParent; // 0x0074 + bool m_bParentFrozen; // 0x0075 + CUtlStringToken m_SurfacePropStringToken; // 0x0078 +}; +class C_KeychainModule : public C_CS2WeaponModuleBase // client +{ + uint32 m_nKeychainDefID; // 0x1170 + uint32 m_nKeychainSeed; // 0x1174 +}; +class CFuncWater : public C_BaseModelEntity // client +{ + CBuoyancyHelper m_BuoyancyHelper; // 0x0E88 +}; +class CCSPlayer_GlowServices : public CPlayerPawnComponent // client +{ +}; +class CCSGameModeRules // client +{ + CNetworkVarChainer __m_pChainEntity; // 0x0008 +}; +class C_Flashbang : public C_BaseCSGrenade // client +{ +}; +class C_PointClientUIWorldTextPanel : public C_PointClientUIWorldPanel // client +{ + char[512] m_messageText; // 0x10E0 +}; +class CCSPlayer_WaterServices : public CPlayer_WaterServices // client +{ + float32 m_flWaterJumpTime; // 0x0048 + Vector m_vecWaterJumpVel; // 0x004C + float32 m_flSwimSoundTime; // 0x0058 +}; +class C_CSObserverPawn : public C_CSPlayerPawnBase // client +{ + CEntityHandle m_hDetectParentChange; // 0x1650 +}; +class ViewAngleServerChange_t // client +{ + FixAngleSet_t nType; // 0x0030 + QAngle qAngle; // 0x0034 + uint32 nIndex; // 0x0040 +}; +class C_FuncLadder : public C_BaseModelEntity // client +{ + Vector m_vecLadderDir; // 0x0E88 + CUtlVector< CHandle< C_InfoLadderDismount > > m_Dismounts; // 0x0E98 + Vector m_vecLocalTop; // 0x0EB0 + VectorWS m_vecPlayerMountPositionTop; // 0x0EBC + VectorWS m_vecPlayerMountPositionBottom; // 0x0EC8 + float32 m_flAutoRideSpeed; // 0x0ED4 + bool m_bDisabled; // 0x0ED8 + bool m_bFakeLadder; // 0x0ED9 + bool m_bHasSlack; // 0x0EDA +}; +class C_WeaponMP5SD : public C_CSWeaponBaseGun // client +{ +}; +class C_World : public C_BaseModelEntity // client +{ +}; +class C_CSGO_TeamSelectCounterTerroristPosition : public C_CSGO_TeamSelectCharacterPosition // client +{ +}; +class C_WeaponGalilAR : public C_CSWeaponBaseGun // client +{ +}; +class CCSPlayerBase_CameraServices : public CPlayer_CameraServices // client +{ + uint32 m_iFOV; // 0x0290 + uint32 m_iFOVStart; // 0x0294 + GameTime_t m_flFOVTime; // 0x0298 + float32 m_flFOVRate; // 0x029C + CHandle< C_BaseEntity > m_hZoomOwner; // 0x02A0 + float32 m_flLastShotFOV; // 0x02A4 +}; +class C_TeamplayRules : public C_MultiplayRules // client +{ +}; +class CPulseCell_Inflow_BaseEntrypoint : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseRuntimeChunkIndex_t m_EntryChunk; // 0x0048 + PulseRegisterMap_t m_RegisterMap; // 0x0050 +}; +class C_WeaponSG556 : public C_CSWeaponBaseGun // client +{ +}; +class C_CSPlayerPawn : public C_CSPlayerPawnBase // client +{ + CCSPlayer_BulletServices* m_pBulletServices; // 0x1660 + CCSPlayer_HostageServices* m_pHostageServices; // 0x1668 + CCSPlayer_BuyServices* m_pBuyServices; // 0x1670 + CCSPlayer_GlowServices* m_pGlowServices; // 0x1678 + CCSPlayer_ActionTrackingServices* m_pActionTrackingServices; // 0x1680 + CCSPlayer_DamageReactServices* m_pDamageReactServices; // 0x1688 + GameTime_t m_flHealthShotBoostExpirationTime; // 0x1690 + GameTime_t m_flLastFiredWeaponTime; // 0x1694 + bool m_bHasFemaleVoice; // 0x1698 + float32 m_flLandingTimeSeconds; // 0x169C + float32 m_flOldFallVelocity; // 0x16A0 + char[18] m_szLastPlaceName; // 0x16A4 + bool m_bPrevDefuser; // 0x16B6 + bool m_bPrevHelmet; // 0x16B7 + int32 m_nPrevArmorVal; // 0x16B8 + int32 m_nPrevGrenadeAmmoCount; // 0x16BC + uint32 m_unPreviousWeaponHash; // 0x16C0 + uint32 m_unWeaponHash; // 0x16C4 + bool m_bInBuyZone; // 0x16C8 + bool m_bPreviouslyInBuyZone; // 0x16C9 + QAngle m_aimPunchAngle; // 0x16CC + QAngle m_aimPunchAngleVel; // 0x16D8 + GameTick_t m_aimPunchTickBase; // 0x16E4 + float32 m_aimPunchTickFraction; // 0x16E8 + bool m_bInLanding; // 0x1710 + float32 m_flLandingStartTime; // 0x1714 + bool m_bInHostageRescueZone; // 0x1718 + bool m_bInBombZone; // 0x1719 + bool m_bIsBuyMenuOpen; // 0x171A + GameTime_t m_flTimeOfLastInjury; // 0x171C + GameTime_t m_flNextSprayDecalTime; // 0x1720 + int32 m_iRetakesOffering; // 0x1878 + int32 m_iRetakesOfferingCard; // 0x187C + bool m_bRetakesHasDefuseKit; // 0x1880 + bool m_bRetakesMVPLastRound; // 0x1881 + int32 m_iRetakesMVPBoostItem; // 0x1884 + loadout_slot_t m_RetakesMVPBoostExtraUtility; // 0x1888 + bool m_bNeedToReApplyGloves; // 0x188D + C_EconItemView m_EconGloves; // 0x1890 + uint8 m_nEconGlovesChanged; // 0x1D00 + bool m_bMustSyncRagdollState; // 0x1D01 + int32 m_nRagdollDamageBone; // 0x1D04 + Vector m_vRagdollDamageForce; // 0x1D08 + Vector m_vRagdollDamagePosition; // 0x1D14 + char[64] m_szRagdollDamageWeaponName; // 0x1D20 + bool m_bRagdollDamageHeadshot; // 0x1D60 + Vector m_vRagdollServerOrigin; // 0x1D64 + GameTime_t m_lastLandTime; // 0x23E0 + bool m_bOnGroundLastTick; // 0x23E4 + CHandle< C_CS2HudModelArms > m_hHudModelArms; // 0x2400 + QAngle m_qDeathEyeAngles; // 0x2404 + bool m_bSkipOneHeadConstraintUpdate; // 0x2410 + bool m_bLeftHanded; // 0x2411 + GameTime_t m_fSwitchedHandednessTime; // 0x2414 + float32 m_flViewmodelOffsetX; // 0x2418 + float32 m_flViewmodelOffsetY; // 0x241C + float32 m_flViewmodelOffsetZ; // 0x2420 + float32 m_flViewmodelFOV; // 0x2424 + uint32[5] m_vecPlayerPatchEconIndices; // 0x2428 + Color m_GunGameImmunityColor; // 0x2460 + CUtlVector< C_BulletHitModel* > m_vecBulletHitModels; // 0x24B0 + bool m_bIsWalking; // 0x24C8 + QAngle m_thirdPersonHeading; // 0x24D0 + float32 m_flSlopeDropOffset; // 0x2560 + float32 m_flSlopeDropHeight; // 0x25D8 + Vector m_vHeadConstraintOffset; // 0x2650 + EntitySpottedState_t m_entitySpottedState; // 0x26E0 + bool m_bIsScoped; // 0x26F8 + bool m_bResumeZoom; // 0x26F9 + bool m_bIsDefusing; // 0x26FA + bool m_bIsGrabbingHostage; // 0x26FB + CSPlayerBlockingUseAction_t m_iBlockingUseActionInProgress; // 0x26FC + GameTime_t m_flEmitSoundTime; // 0x2700 + bool m_bInNoDefuseArea; // 0x2704 + int32 m_nWhichBombZone; // 0x2708 + int32 m_iShotsFired; // 0x270C + float32 m_flFlinchStack; // 0x2710 + float32 m_flVelocityModifier; // 0x2714 + float32 m_flHitHeading; // 0x2718 + int32 m_nHitBodyPart; // 0x271C + bool m_bWaitForNoAttack; // 0x2720 + float32 m_ignoreLadderJumpTime; // 0x2724 + bool m_bKilledByHeadshot; // 0x2729 + int32 m_ArmorValue; // 0x272C + uint16 m_unCurrentEquipmentValue; // 0x2730 + uint16 m_unRoundStartEquipmentValue; // 0x2732 + uint16 m_unFreezetimeEndEquipmentValue; // 0x2734 + CEntityIndex m_nLastKillerIndex; // 0x2738 + bool m_bOldIsScoped; // 0x273C + bool m_bHasDeathInfo; // 0x273D + float32 m_flDeathInfoTime; // 0x2740 + Vector m_vecDeathInfoOrigin; // 0x2744 + GameTime_t m_grenadeParameterStashTime; // 0x2754 + bool m_bGrenadeParametersStashed; // 0x2758 + QAngle m_angStashedShootAngles; // 0x275C + Vector m_vecStashedGrenadeThrowPosition; // 0x2768 + Vector m_vecStashedVelocity; // 0x2774 + QAngle[2] m_angShootAngleHistory; // 0x2780 + Vector[2] m_vecThrowPositionHistory; // 0x2798 + Vector[2] m_vecVelocityHistory; // 0x27B0 + C_UtlVectorEmbeddedNetworkVar< PredictedDamageTag_t > m_PredictedDamageTags; // 0x27C8 + GameTick_t m_nPrevHighestReceivedDamageTagTick; // 0x2830 + int32 m_nHighestAppliedDamageTagTick; // 0x2834 + bool m_bShouldAutobuyDMWeapons; // 0x3D6C + GameTime_t m_fImmuneToGunGameDamageTime; // 0x3D70 + bool m_bGunGameImmunity; // 0x3D74 + GameTime_t m_fImmuneToGunGameDamageTimeLast; // 0x3D78 + float32 m_fMolotovDamageTime; // 0x3D7C + Vector m_vecLastAliveLocalVelocity; // 0x3D84 + float32[4] m_fRenderingClipPlane; // 0x3D90 + int32 m_nLastClipPlaneSetupFrame; // 0x3DA0 + Vector m_vecLastClipCameraPos; // 0x3DA4 + Vector m_vecLastClipCameraForward; // 0x3DB0 + bool m_bClipHitStaticWorld; // 0x3DBC + bool m_bCachedPlaneIsValid; // 0x3DBD + C_CSWeaponBase* m_pClippingWeapon; // 0x3DC0 + ParticleIndex_t m_nPlayerInfernoBodyFx; // 0x3DC8 + QAngle m_angEyeAngles; // 0x3DD0 + GameTime_t[4] m_arrOldEyeAnglesTimes; // 0x3E60 + QAngle[4] m_arrOldEyeAngles; // 0x3E70 + QAngle m_angEyeAnglesVelocity; // 0x3EA0 + CEntityIndex m_iIDEntIndex; // 0x3EAC + CountdownTimer m_delayTargetIDTimer; // 0x3EB0 + CEntityIndex m_iTargetItemEntIdx; // 0x3EC8 + CEntityIndex m_iOldIDEntIndex; // 0x3ECC + CountdownTimer m_holdTargetIDTimer; // 0x3ED0 +}; +class C_CSGO_TeamIntroTerroristPosition : public C_CSGO_TeamIntroCharacterPosition // client +{ +}; +class CPulseCell_WaitForCursorsWithTagBase : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + int32 m_nCursorsAllowedToWait; // 0x0048 + CPulse_ResumePoint m_WaitComplete; // 0x0050 +}; +class C_Hostage : public C_BaseCombatCharacter // client +{ + EntitySpottedState_t m_entitySpottedState; // 0x13D8 + CHandle< C_BaseEntity > m_leader; // 0x13F0 + CountdownTimer m_reuseTimer; // 0x13F8 + Vector m_vel; // 0x1410 + bool m_isRescued; // 0x141C + bool m_jumpedThisFrame; // 0x141D + int32 m_nHostageState; // 0x1420 + bool m_bHandsHaveBeenCut; // 0x1424 + CHandle< C_CSPlayerPawn > m_hHostageGrabber; // 0x1428 + GameTime_t m_fLastGrabTime; // 0x142C + Vector m_vecGrabbedPos; // 0x1430 + GameTime_t m_flRescueStartTime; // 0x143C + GameTime_t m_flGrabSuccessTime; // 0x1440 + GameTime_t m_flDropStartTime; // 0x1444 + GameTime_t m_flDeadOrRescuedTime; // 0x1448 + CountdownTimer m_blinkTimer; // 0x1450 + Vector m_lookAt; // 0x1468 + CountdownTimer m_lookAroundTimer; // 0x1478 + bool m_isInit; // 0x1490 + AttachmentHandle_t m_eyeAttachment; // 0x1491 + AttachmentHandle_t m_chestAttachment; // 0x1492 + CBasePlayerController* m_pPredictionOwner; // 0x1498 + GameTime_t m_fNewestAlphaThinkTime; // 0x14A0 +}; +class C_fogplayerparams_t // client +{ + CHandle< C_FogController > m_hCtrl; // 0x0008 + float32 m_flTransitionTime; // 0x000C + Color m_OldColor; // 0x0010 + float32 m_flOldStart; // 0x0014 + float32 m_flOldEnd; // 0x0018 + float32 m_flOldMaxDensity; // 0x001C + float32 m_flOldHDRColorScale; // 0x0020 + float32 m_flOldFarZ; // 0x0024 + Color m_NewColor; // 0x0028 + float32 m_flNewStart; // 0x002C + float32 m_flNewEnd; // 0x0030 + float32 m_flNewMaxDensity; // 0x0034 + float32 m_flNewHDRColorScale; // 0x0038 + float32 m_flNewFarZ; // 0x003C +}; +class CGameSceneNode // client +{ + CTransformWS m_nodeToWorld; // 0x0010 + CEntityInstance* m_pOwner; // 0x0030 + CGameSceneNode* m_pParent; // 0x0038 + CGameSceneNode* m_pChild; // 0x0040 + CGameSceneNode* m_pNextSibling; // 0x0048 + CGameSceneNodeHandle m_hParent; // 0x0078 + CNetworkOriginCellCoordQuantizedVector m_vecOrigin; // 0x0088 + QAngle m_angRotation; // 0x00C0 + float32 m_flScale; // 0x00CC + VectorWS m_vecAbsOrigin; // 0x00D0 + QAngle m_angAbsRotation; // 0x00DC + float32 m_flAbsScale; // 0x00E8 + Vector m_vecWrappedLocalOrigin; // 0x00EC + QAngle m_angWrappedLocalRotation; // 0x00F8 + float32 m_flWrappedScale; // 0x0104 + int16 m_nParentAttachmentOrBone; // 0x0108 + bool m_bDebugAbsOriginChanges; // 0x010A + bool m_bDormant; // 0x010B + bool m_bForceParentToBeNetworked; // 0x010C + bitfield:1 m_bDirtyHierarchy; // 0x0000 + bitfield:1 m_bDirtyBoneMergeInfo; // 0x0000 + bitfield:1 m_bNetworkedPositionChanged; // 0x0000 + bitfield:1 m_bNetworkedAnglesChanged; // 0x0000 + bitfield:1 m_bNetworkedScaleChanged; // 0x0000 + bitfield:1 m_bWillBeCallingPostDataUpdate; // 0x0000 + bitfield:1 m_bBoneMergeFlex; // 0x0000 + bitfield:2 m_nLatchAbsOrigin; // 0x0000 + bitfield:1 m_bDirtyBoneMergeBoneToRoot; // 0x0000 + uint8 m_nHierarchicalDepth; // 0x010F + uint8 m_nHierarchyType; // 0x0110 + uint8 m_nDoNotSetAnimTimeInInvalidatePhysicsCount; // 0x0111 + CUtlStringToken m_name; // 0x0114 + CUtlStringToken m_hierarchyAttachName; // 0x0128 + float32 m_flZOffset; // 0x012C + float32 m_flClientLocalScale; // 0x0130 + Vector m_vRenderOrigin; // 0x0134 +}; +class CPlayer_ObserverServices : public CPlayerPawnComponent // client +{ + uint8 m_iObserverMode; // 0x0048 + CHandle< C_BaseEntity > m_hObserverTarget; // 0x004C + ObserverMode_t m_iObserverLastMode; // 0x0050 + bool m_bForcedObserverMode; // 0x0054 + float32 m_flObserverChaseDistance; // 0x0058 + GameTime_t m_flObserverChaseDistanceCalcTime; // 0x005C +}; +class C_SoundAreaEntityBase : public C_BaseEntity // client +{ + bool m_bDisabled; // 0x0608 + bool m_bWasEnabled; // 0x0610 + CUtlSymbolLarge m_iszSoundAreaType; // 0x0618 + Vector m_vPos; // 0x0620 +}; +class C_PlayerVisibility : public C_BaseEntity // client +{ + float32 m_flVisibilityStrength; // 0x0608 + float32 m_flFogDistanceMultiplier; // 0x060C + float32 m_flFogMaxDensityMultiplier; // 0x0610 + float32 m_flFadeTime; // 0x0614 + bool m_bStartDisabled; // 0x0618 + bool m_bIsEnabled; // 0x0619 +}; +class CAttributeManager::cached_attribute_float_t // client +{ + float32 flIn; // 0x0000 + CUtlSymbolLarge iAttribHook; // 0x0008 + float32 flOut; // 0x0010 +}; +class C_BasePlayerWeapon : public C_EconEntity // client +{ + GameTick_t m_nNextPrimaryAttackTick; // 0x18C0 + float32 m_flNextPrimaryAttackTickRatio; // 0x18C4 + GameTick_t m_nNextSecondaryAttackTick; // 0x18C8 + float32 m_flNextSecondaryAttackTickRatio; // 0x18CC + int32 m_iClip1; // 0x18D0 + int32 m_iClip2; // 0x18D4 + int32[2] m_pReserveAmmo; // 0x18D8 +}; +class CRagdollManager : public C_BaseEntity // client +{ + int8 m_iCurrentMaxRagdollCount; // 0x0608 +}; +class C_HEGrenade : public C_BaseCSGrenade // client +{ +}; +class C_EnvSky : public C_BaseModelEntity // client +{ + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hSkyMaterial; // 0x0E88 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hSkyMaterialLightingOnly; // 0x0E90 + bool m_bStartDisabled; // 0x0E98 + Color m_vTintColor; // 0x0E99 + Color m_vTintColorLightingOnly; // 0x0E9D + float32 m_flBrightnessScale; // 0x0EA4 + int32 m_nFogType; // 0x0EA8 + float32 m_flFogMinStart; // 0x0EAC + float32 m_flFogMinEnd; // 0x0EB0 + float32 m_flFogMaxStart; // 0x0EB4 + float32 m_flFogMaxEnd; // 0x0EB8 + bool m_bEnabled; // 0x0EBC +}; +class CPulse_InvokeBinding // pulse_runtime_lib +{ + PulseRegisterMap_t m_RegisterMap; // 0x0000 + PulseSymbol_t m_FuncName; // 0x0030 + PulseRuntimeCellIndex_t m_nCellIndex; // 0x0040 + PulseRuntimeChunkIndex_t m_nSrcChunk; // 0x0044 + int32 m_nSrcInstruction; // 0x0048 +}; +class C_EnvWindController : public C_BaseEntity // client +{ + C_EnvWindShared m_EnvWindShared; // 0x0608 + float32 m_fDirectionVariation; // 0x0700 + float32 m_fSpeedVariation; // 0x0704 + float32 m_fTurbulence; // 0x0708 + float32 m_fVolumeHalfExtentXY; // 0x070C + float32 m_fVolumeHalfExtentZ; // 0x0710 + int32 m_nVolumeResolutionXY; // 0x0714 + int32 m_nVolumeResolutionZ; // 0x0718 + int32 m_nClipmapLevels; // 0x071C + bool m_bIsMaster; // 0x0720 + bool m_bFirstTime; // 0x0721 +}; +class C_GameRules // client +{ + CNetworkVarChainer __m_pChainEntity; // 0x0008 + int32 m_nTotalPausedTicks; // 0x0030 + int32 m_nPauseStartTick; // 0x0034 + bool m_bGamePaused; // 0x0038 +}; +class C_WeaponMAC10 : public C_CSWeaponBaseGun // client +{ +}; +class C_CSGO_MapPreviewCameraPath : public C_BaseEntity // client +{ + float32 m_flZFar; // 0x0608 + float32 m_flZNear; // 0x060C + bool m_bLoop; // 0x0610 + bool m_bVerticalFOV; // 0x0611 + bool m_bConstantSpeed; // 0x0612 + float32 m_flDuration; // 0x0614 + float32 m_flPathLength; // 0x0658 + float32 m_flPathDuration; // 0x065C + bool m_bDofEnabled; // 0x0674 + float32 m_flDofNearBlurry; // 0x0678 + float32 m_flDofNearCrisp; // 0x067C + float32 m_flDofFarCrisp; // 0x0680 + float32 m_flDofFarBlurry; // 0x0684 + float32 m_flDofTiltToGround; // 0x0688 +}; +class C_PointWorldText : public C_ModelPointEntity // client +{ + bool m_bForceRecreateNextUpdate; // 0x0E90 + int32 m_nTextWidthPx; // 0x0EA8 + int32 m_nTextHeightPx; // 0x0EAC + char[512] m_messageText; // 0x0EB0 + char[64] m_FontName; // 0x10B0 + char[64] m_BackgroundMaterialName; // 0x10F0 + bool m_bEnabled; // 0x1130 + bool m_bFullbright; // 0x1131 + float32 m_flWorldUnitsPerPx; // 0x1134 + float32 m_flFontSize; // 0x1138 + float32 m_flDepthOffset; // 0x113C + bool m_bDrawBackground; // 0x1140 + float32 m_flBackgroundBorderWidth; // 0x1144 + float32 m_flBackgroundBorderHeight; // 0x1148 + float32 m_flBackgroundWorldToUV; // 0x114C + Color m_Color; // 0x1150 + PointWorldTextJustifyHorizontal_t m_nJustifyHorizontal; // 0x1154 + PointWorldTextJustifyVertical_t m_nJustifyVertical; // 0x1158 + PointWorldTextReorientMode_t m_nReorientMode; // 0x115C +}; +class C_RopeKeyframe : public C_BaseModelEntity // client +{ + CBitVec< 10 > m_LinksTouchingSomething; // 0x0E90 + int32 m_nLinksTouchingSomething; // 0x0E94 + bool m_bApplyWind; // 0x0E98 + int32 m_fPrevLockedPoints; // 0x0E9C + int32 m_iForcePointMoveCounter; // 0x0EA0 + bool[2] m_bPrevEndPointPos; // 0x0EA4 + Vector[2] m_vPrevEndPointPos; // 0x0EA8 + float32 m_flCurScroll; // 0x0EC0 + float32 m_flScrollSpeed; // 0x0EC4 + uint16 m_RopeFlags; // 0x0EC8 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_iRopeMaterialModelIndex; // 0x0ED0 + uint8 m_nSegments; // 0x1148 + CHandle< C_BaseEntity > m_hStartPoint; // 0x114C + CHandle< C_BaseEntity > m_hEndPoint; // 0x1150 + AttachmentHandle_t m_iStartAttachment; // 0x1154 + AttachmentHandle_t m_iEndAttachment; // 0x1155 + uint8 m_Subdiv; // 0x1156 + int16 m_RopeLength; // 0x1158 + int16 m_Slack; // 0x115A + float32 m_TextureScale; // 0x115C + uint8 m_fLockedPoints; // 0x1160 + uint8 m_nChangeCount; // 0x1161 + float32 m_Width; // 0x1164 + C_RopeKeyframe::CPhysicsDelegate m_PhysicsDelegate; // 0x1168 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hMaterial; // 0x1178 + int32 m_TextureHeight; // 0x1180 + Vector m_vecImpulse; // 0x1184 + Vector m_vecPreviousImpulse; // 0x1190 + float32 m_flCurrentGustTimer; // 0x119C + float32 m_flCurrentGustLifetime; // 0x11A0 + float32 m_flTimeToNextGust; // 0x11A4 + Vector m_vWindDir; // 0x11A8 + Vector m_vColorMod; // 0x11B4 + Vector[2] m_vCachedEndPointAttachmentPos; // 0x11C0 + QAngle[2] m_vCachedEndPointAttachmentAngle; // 0x11D8 + bool m_bConstrainBetweenEndpoints; // 0x11F0 + bitfield:1 m_bEndPointAttachmentPositionsDirty; // 0x0000 + bitfield:1 m_bEndPointAttachmentAnglesDirty; // 0x0000 + bitfield:1 m_bNewDataThisFrame; // 0x0000 + bitfield:1 m_bPhysicsInitted; // 0x0000 +}; +class C_BaseToggle : public C_BaseModelEntity // client +{ +}; +class C_EnvCubemapBox : public C_EnvCubemap // client +{ +}; +class C_RopeKeyframe::CPhysicsDelegate // client +{ + C_RopeKeyframe* m_pKeyframe; // 0x0008 +}; +class CInfoDynamicShadowHint : public C_PointEntity // client +{ + bool m_bDisabled; // 0x0608 + float32 m_flRange; // 0x060C + int32 m_nImportance; // 0x0610 + int32 m_nLightChoice; // 0x0614 + CHandle< C_BaseEntity > m_hLight; // 0x0618 +}; +class CPathNode : public C_PointEntity // client +{ + Vector m_vInTangentLocal; // 0x0608 + Vector m_vOutTangentLocal; // 0x0614 + CUtlString m_strParentPathUniqueID; // 0x0620 + CUtlString m_strPathNodeParameter; // 0x0628 + CTransform m_xWSPrevParent; // 0x0630 + CHandle< CPathWithDynamicNodes > m_hPath; // 0x0650 +}; +class C_FuncMoveLinear : public C_BaseToggle // client +{ +}; +class CServerOnlyModelEntity : public C_BaseModelEntity // client +{ +}; +class C_CSGO_TeamSelectCamera : public C_CSGO_TeamPreviewCamera // client +{ +}; +class CPulseCell_IntervalTimer : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_Completed; // 0x0048 + SignatureOutflow_Continue m_OnInterval; // 0x0090 +}; +class C_WeaponXM1014 : public C_CSWeaponBaseShotgun // client +{ +}; +class C_WorldModelGloves : public CBaseAnimGraph // client +{ +}; +class C_PhysicsPropMultiplayer : public C_PhysicsProp // client +{ +}; +class C_SoundEventOBBEntity : public C_SoundEventEntity // client +{ + Vector m_vMins; // 0x06B8 + Vector m_vMaxs; // 0x06C4 +}; +class CPulseTestScriptLib // pulse_runtime_lib +{ +}; +class CPulseCell_BaseLerp : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_WakeResume; // 0x0048 +}; +class C_WeaponAug : public C_CSWeaponBaseGun // client +{ +}; +class C_BasePropDoor : public C_DynamicProp // client +{ + DoorState_t m_eDoorState; // 0x13B0 + bool m_modelChanged; // 0x13B4 + bool m_bLocked; // 0x13B5 + bool m_bNoNPCs; // 0x13B6 + Vector m_closedPosition; // 0x13B8 + QAngle m_closedAngles; // 0x13C4 + CHandle< C_BasePropDoor > m_hMaster; // 0x13D0 + Vector m_vWhereToSetLightingOrigin; // 0x13D4 +}; +class CChoreoInfoTarget : public C_PointEntity // client +{ +}; +class CNetworkedSequenceOperation // client +{ + HSequence m_hSequence; // 0x0008 + float32 m_flPrevCycle; // 0x000C + float32 m_flCycle; // 0x0010 + CNetworkedQuantizedFloat m_flWeight; // 0x0014 + bool m_bSequenceChangeNetworked; // 0x001C + bool m_bDiscontinuity; // 0x001D + float32 m_flPrevCycleFromDiscontinuity; // 0x0020 + float32 m_flPrevCycleForAnimEventDetection; // 0x0024 +}; +class C_Item_Healthshot : public C_WeaponBaseItem // client +{ +}; +class CEntityInstance // entity2 +{ + CUtlSymbolLarge m_iszPrivateVScripts; // 0x0008 + CEntityIdentity* m_pEntity; // 0x0010 + CScriptComponent* m_CScriptComponent; // 0x0030 +}; +class C_BaseModelEntity : public C_BaseEntity // client +{ + CRenderComponent* m_CRenderComponent; // 0x0AF0 + CHitboxComponent m_CHitboxComponent; // 0x0AF8 + HitGroup_t m_nDestructiblePartInitialStateDestructed0; // 0x0B10 + HitGroup_t m_nDestructiblePartInitialStateDestructed1; // 0x0B14 + HitGroup_t m_nDestructiblePartInitialStateDestructed2; // 0x0B18 + HitGroup_t m_nDestructiblePartInitialStateDestructed3; // 0x0B1C + HitGroup_t m_nDestructiblePartInitialStateDestructed4; // 0x0B20 + int32 m_nDestructiblePartInitialStateDestructed0_PartIndex; // 0x0B24 + int32 m_nDestructiblePartInitialStateDestructed1_PartIndex; // 0x0B28 + int32 m_nDestructiblePartInitialStateDestructed2_PartIndex; // 0x0B2C + int32 m_nDestructiblePartInitialStateDestructed3_PartIndex; // 0x0B30 + int32 m_nDestructiblePartInitialStateDestructed4_PartIndex; // 0x0B34 + CDestructiblePartsComponent* m_pDestructiblePartsSystemComponent; // 0x0B38 + bool m_bInitModelEffects; // 0x0B58 + bool m_bDoingModelEffects; // 0x0B59 + bool m_bIsStaticProp; // 0x0B5A + int32 m_iOldHealth; // 0x0B5C + RenderMode_t m_nRenderMode; // 0x0B60 + RenderFx_t m_nRenderFX; // 0x0B61 + bool m_bAllowFadeInView; // 0x0B62 + Color m_clrRender; // 0x0B80 + C_UtlVectorEmbeddedNetworkVar< EntityRenderAttribute_t > m_vecRenderAttributes; // 0x0B88 + bool m_bRenderToCubemaps; // 0x0C08 + bool m_bNoInterpolate; // 0x0C09 + CCollisionProperty m_Collision; // 0x0C10 + CGlowProperty m_Glow; // 0x0CC0 + float32 m_flGlowBackfaceMult; // 0x0D18 + float32 m_fadeMinDist; // 0x0D1C + float32 m_fadeMaxDist; // 0x0D20 + float32 m_flFadeScale; // 0x0D24 + float32 m_flShadowStrength; // 0x0D28 + uint8 m_nObjectCulling; // 0x0D2C + DecalRtEncoding_t m_nRequiredDecalRtEncoding; // 0x0D2D + CNetworkViewOffsetVector m_vecViewOffset; // 0x0D58 + CClientAlphaProperty* m_pClientAlphaProperty; // 0x0E38 + Color m_ClientOverrideTint; // 0x0E40 + bool m_bUseClientOverrideTint; // 0x0E44 + uint32[1] m_bvDisabledHitGroups; // 0x0E80 +}; +class CCSPlayer_BulletServices : public CPlayerPawnComponent // client +{ + int32 m_totalHitsOnServer; // 0x0048 +}; +class C_SoundOpvarSetAutoRoomEntity : public C_SoundOpvarSetPointEntity // client +{ +}; +class C_EnvCombinedLightProbeVolume : public C_BaseEntity // client +{ + Color m_Entity_Color; // 0x1680 + float32 m_Entity_flBrightness; // 0x1684 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hCubemapTexture; // 0x1688 + bool m_Entity_bCustomCubemapTexture; // 0x1690 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_AmbientCube; // 0x1698 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SDF; // 0x16A0 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_DC; // 0x16A8 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_R; // 0x16B0 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_G; // 0x16B8 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_B; // 0x16C0 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeDirectLightIndicesTexture; // 0x16C8 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeDirectLightScalarsTexture; // 0x16D0 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeDirectLightShadowsTexture; // 0x16D8 + Vector m_Entity_vBoxMins; // 0x16E0 + Vector m_Entity_vBoxMaxs; // 0x16EC + bool m_Entity_bMoveable; // 0x16F8 + int32 m_Entity_nHandshake; // 0x16FC + int32 m_Entity_nEnvCubeMapArrayIndex; // 0x1700 + int32 m_Entity_nPriority; // 0x1704 + bool m_Entity_bStartDisabled; // 0x1708 + float32 m_Entity_flEdgeFadeDist; // 0x170C + Vector m_Entity_vEdgeFadeDists; // 0x1710 + int32 m_Entity_nLightProbeSizeX; // 0x171C + int32 m_Entity_nLightProbeSizeY; // 0x1720 + int32 m_Entity_nLightProbeSizeZ; // 0x1724 + int32 m_Entity_nLightProbeAtlasX; // 0x1728 + int32 m_Entity_nLightProbeAtlasY; // 0x172C + int32 m_Entity_nLightProbeAtlasZ; // 0x1730 + bool m_Entity_bEnabled; // 0x1749 +}; +class C_MultiplayRules : public C_GameRules // client +{ +}; +class CPlayer_AutoaimServices : public CPlayerPawnComponent // client +{ +}; +class C_LightDirectionalEntity : public C_LightEntity // client +{ +}; +class C_BaseEntity : public CEntityInstance // client +{ + CBodyComponent* m_CBodyComponent; // 0x0038 + CNetworkTransmitComponent m_NetworkTransmitComponent; // 0x0040 + GameTick_t m_nLastThinkTick; // 0x0330 + CGameSceneNode* m_pGameSceneNode; // 0x0338 + CRenderComponent* m_pRenderComponent; // 0x0340 + CCollisionProperty* m_pCollision; // 0x0348 + int32 m_iMaxHealth; // 0x0350 + int32 m_iHealth; // 0x0354 + float32 m_flDamageAccumulator; // 0x0358 + uint8 m_lifeState; // 0x035C + bool m_bTakesDamage; // 0x035D + TakeDamageFlags_t m_nTakeDamageFlags; // 0x0360 + EntityPlatformTypes_t m_nPlatformType; // 0x0368 + uint8 m_ubInterpolationFrame; // 0x0369 + CHandle< C_BaseEntity > m_hSceneObjectController; // 0x036C + int32 m_nNoInterpolationTick; // 0x0370 + int32 m_nVisibilityNoInterpolationTick; // 0x0374 + float32 m_flProxyRandomValue; // 0x0378 + int32 m_iEFlags; // 0x037C + uint8 m_nWaterType; // 0x0380 + bool m_bInterpolateEvenWithNoModel; // 0x0381 + bool m_bPredictionEligible; // 0x0382 + bool m_bApplyLayerMatchIDToModel; // 0x0383 + CUtlStringToken m_tokLayerMatchID; // 0x0384 + CUtlStringToken m_nSubclassID; // 0x0388 + int32 m_nSimulationTick; // 0x0398 + int32 m_iCurrentThinkContext; // 0x039C + CUtlVector< thinkfunc_t > m_aThinkFunctions; // 0x03A0 + bool m_bDisabledContextThinks; // 0x03B8 + float32 m_flAnimTime; // 0x03BC + float32 m_flSimulationTime; // 0x03C0 + uint8 m_nSceneObjectOverrideFlags; // 0x03C4 + bool m_bHasSuccessfullyInterpolated; // 0x03C5 + bool m_bHasAddedVarsToInterpolation; // 0x03C6 + bool m_bRenderEvenWhenNotSuccessfullyInterpolated; // 0x03C7 + int32[2] m_nInterpolationLatchDirtyFlags; // 0x03C8 + uint16[11] m_ListEntry; // 0x03D0 + GameTime_t m_flCreateTime; // 0x03E8 + float32 m_flSpeed; // 0x03EC + uint16 m_EntClientFlags; // 0x03F0 + bool m_bClientSideRagdoll; // 0x03F2 + uint8 m_iTeamNum; // 0x03F3 + uint32 m_spawnflags; // 0x03F4 + GameTick_t m_nNextThinkTick; // 0x03F8 + uint32 m_fFlags; // 0x0400 + Vector m_vecAbsVelocity; // 0x0404 + CNetworkVelocityVector m_vecServerVelocity; // 0x0410 + CNetworkVelocityVector m_vecVelocity; // 0x0438 + Vector m_vecBaseVelocity; // 0x0518 + CHandle< C_BaseEntity > m_hEffectEntity; // 0x0524 + CHandle< C_BaseEntity > m_hOwnerEntity; // 0x0528 + MoveCollide_t m_MoveCollide; // 0x052C + MoveType_t m_MoveType; // 0x052D + MoveType_t m_nActualMoveType; // 0x052E + float32 m_flWaterLevel; // 0x0530 + uint32 m_fEffects; // 0x0534 + CHandle< C_BaseEntity > m_hGroundEntity; // 0x0538 + int32 m_nGroundBodyIndex; // 0x053C + float32 m_flFriction; // 0x0540 + float32 m_flElasticity; // 0x0544 + float32 m_flGravityScale; // 0x0548 + float32 m_flTimeScale; // 0x054C + bool m_bAnimatedEveryTick; // 0x0550 + bool m_bGravityDisabled; // 0x0551 + GameTime_t m_flNavIgnoreUntilTime; // 0x0554 + uint16 m_hThink; // 0x0558 + uint8 m_fBBoxVisFlags; // 0x0568 + float32 m_flActualGravityScale; // 0x056C + bool m_bGravityActuallyDisabled; // 0x0570 + bool m_bPredictable; // 0x0571 + bool m_bRenderWithViewModels; // 0x0572 + int32 m_nFirstPredictableCommand; // 0x0574 + int32 m_nLastPredictableCommand; // 0x0578 + CHandle< C_BaseEntity > m_hOldMoveParent; // 0x057C + CParticleProperty m_Particles; // 0x0580 + QAngle m_vecAngVelocity; // 0x05B0 + int32 m_DataChangeEventRef; // 0x05BC + CUtlVector< CEntityHandle > m_dependencies; // 0x05C0 + int32 m_nCreationTick; // 0x05D8 + bool m_bAnimTimeChanged; // 0x05E9 + bool m_bSimulationTimeChanged; // 0x05EA + CUtlString m_sUniqueHammerID; // 0x05F8 + BloodType m_nBloodType; // 0x0600 +}; +class ActiveModelConfig_t // client +{ + ModelConfigHandle_t m_Handle; // 0x0030 + CUtlSymbolLarge m_Name; // 0x0038 + C_NetworkUtlVectorBase< CHandle< C_BaseModelEntity > > m_AssociatedEntities; // 0x0040 + C_NetworkUtlVectorBase< CUtlSymbolLarge > m_AssociatedEntityNames; // 0x0058 +}; +class C_WeaponSSG08 : public C_CSWeaponBaseGun // client +{ +}; +class CPulseCell_Value_Curve : public CPulseCell_BaseValue // pulse_runtime_lib +{ + CPiecewiseCurve m_Curve; // 0x0048 +}; +class C_BasePlayerPawn : public C_BaseCombatCharacter // client +{ + CPlayer_WeaponServices* m_pWeaponServices; // 0x13D8 + CPlayer_ItemServices* m_pItemServices; // 0x13E0 + CPlayer_AutoaimServices* m_pAutoaimServices; // 0x13E8 + CPlayer_ObserverServices* m_pObserverServices; // 0x13F0 + CPlayer_WaterServices* m_pWaterServices; // 0x13F8 + CPlayer_UseServices* m_pUseServices; // 0x1400 + CPlayer_FlashlightServices* m_pFlashlightServices; // 0x1408 + CPlayer_CameraServices* m_pCameraServices; // 0x1410 + CPlayer_MovementServices* m_pMovementServices; // 0x1418 + C_UtlVectorEmbeddedNetworkVar< ViewAngleServerChange_t > m_ServerViewAngleChanges; // 0x1428 + QAngle v_angle; // 0x1490 + QAngle v_anglePrevious; // 0x149C + uint32 m_iHideHUD; // 0x14A8 + sky3dparams_t m_skybox3d; // 0x14B0 + GameTime_t m_flDeathTime; // 0x1540 + Vector m_vecPredictionError; // 0x1544 + GameTime_t m_flPredictionErrorTime; // 0x1550 + Vector m_vecLastCameraSetupLocalOrigin; // 0x1570 + GameTime_t m_flLastCameraSetupTime; // 0x157C + float32 m_flFOVSensitivityAdjust; // 0x1580 + float32 m_flMouseSensitivity; // 0x1584 + Vector m_vOldOrigin; // 0x1588 + float32 m_flOldSimulationTime; // 0x1594 + int32 m_nLastExecutedCommandNumber; // 0x1598 + int32 m_nLastExecutedCommandTick; // 0x159C + CHandle< CBasePlayerController > m_hController; // 0x15A0 + CHandle< CBasePlayerController > m_hDefaultController; // 0x15A4 + bool m_bIsSwappingToPredictableController; // 0x15A8 +}; +class C_Chicken : public C_DynamicProp // client +{ + CHandle< CBaseAnimGraph > m_hHolidayHatAddon; // 0x13A8 + bool m_jumpedThisFrame; // 0x13AC + CHandle< C_CSPlayerPawn > m_leader; // 0x13B0 + C_AttributeContainer m_AttributeManager; // 0x13B8 + bool m_bAttributesInitialized; // 0x1888 + ParticleIndex_t m_hWaterWakeParticles; // 0x188C + bool m_bIsPreviewModel; // 0x1890 +}; +class C_SoundOpvarSetAABBEntity : public C_SoundOpvarSetPointEntity // client +{ +}; +class C_WeaponBizon : public C_CSWeaponBaseGun // client +{ +}; +class C_StattrakModule : public C_CS2WeaponModuleBase // client +{ + bool m_bKnife; // 0x1170 +}; +class CCSObserver_CameraServices : public CCSPlayerBase_CameraServices // client +{ +}; +class CTakeDamageInfoAPI // client +{ +}; +class CEnvSoundscapeProxy : public CEnvSoundscape // client +{ + CUtlSymbolLarge m_MainSoundscapeName; // 0x0698 +}; +class C_SoundEventEntity : public C_BaseEntity // client +{ + bool m_bStartOnSpawn; // 0x0608 + bool m_bToLocalPlayer; // 0x0609 + bool m_bStopOnNew; // 0x060A + bool m_bSaveRestore; // 0x060B + bool m_bSavedIsPlaying; // 0x060C + float32 m_flSavedElapsedTime; // 0x0610 + CUtlSymbolLarge m_iszSourceEntityName; // 0x0618 + CUtlSymbolLarge m_iszAttachmentName; // 0x0620 + CEntityOutputTemplate< uint64, uint64 > m_onGUIDChanged; // 0x0628 + CEntityIOOutput m_onSoundFinished; // 0x0648 + float32 m_flClientCullRadius; // 0x0660 + CUtlSymbolLarge m_iszSoundName; // 0x0690 + CEntityHandle m_hSource; // 0x06AC + int32 m_nEntityIndexSelection; // 0x06B0 + bitfield:1 m_bClientSideOnly; // 0x0000 +}; +class CPulseCell_Inflow_EventHandler : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_EventName; // 0x0080 +}; +class C_LightOrthoEntity : public C_LightEntity // client +{ +}; +class CPulseCell_BaseFlow : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class CBombTarget : public C_BaseTrigger // client +{ + bool m_bBombPlantedHere; // 0x0F58 +}; +class C_Knife : public C_CSWeaponBase // client +{ + bool m_bFirstAttack; // 0x1F40 +}; +class C_CSGO_TerroristWingmanIntroCamera : public C_CSGO_TeamPreviewCamera // client +{ +}; +class CSkeletonInstance : public CGameSceneNode // client +{ + CModelState m_modelState; // 0x0160 + bool m_bIsAnimationEnabled; // 0x0430 + bool m_bUseParentRenderBounds; // 0x0431 + bool m_bDisableSolidCollisionsForHierarchy; // 0x0432 + bitfield:1 m_bDirtyMotionType; // 0x0000 + bitfield:1 m_bIsGeneratingLatchedParentSpaceState; // 0x0000 + CUtlStringToken m_materialGroup; // 0x0434 + uint8 m_nHitboxSet; // 0x0438 +}; +class CEntityComponent // entity2 +{ +}; +class C_ItemDogtags : public C_Item // client +{ + CHandle< C_CSPlayerPawn > m_OwningPlayer; // 0x19C0 + CHandle< C_CSPlayerPawn > m_KillingPlayer; // 0x19C4 +}; +class C_LateUpdatedAnimating : public CBaseAnimGraph // client +{ +}; +class CPulseCell_Outflow_CycleShuffled::InstanceState_t // pulse_runtime_lib +{ + CUtlVectorFixedGrowable< uint8, 8 > m_Shuffle; // 0x0000 + int32 m_nNextShuffle; // 0x0020 +}; +class CPulseCell_BaseLerp::CursorState_t // pulse_runtime_lib +{ + GameTime_t m_StartTime; // 0x0000 + GameTime_t m_EndTime; // 0x0004 +}; +class CPulseAnimFuncs // client +{ +}; +class C_BaseClientUIEntity : public C_BaseModelEntity // client +{ + bool m_bEnabled; // 0x0E90 + CUtlSymbolLarge m_DialogXMLName; // 0x0E98 + CUtlSymbolLarge m_PanelClassName; // 0x0EA0 + CUtlSymbolLarge m_PanelID; // 0x0EA8 +}; +class CPulseCell_WaitForCursorsWithTagBase::CursorState_t // pulse_runtime_lib +{ + PulseSymbol_t m_TagName; // 0x0000 +}; +class CPulseArraylib // pulse_runtime_lib +{ +}; +class C_WeaponUSPSilencer : public C_CSWeaponBaseGun // client +{ +}; +class C_MolotovProjectile : public C_BaseCSGrenadeProjectile // client +{ + bool m_bIsIncGrenade; // 0x1438 +}; +class C_TriggerLerpObject : public C_BaseTrigger // client +{ +}; +class CPointTemplateAPI // client +{ +}; +class C_WeaponRevolver : public C_CSWeaponBaseGun // client +{ +}; +class C_WeaponElite : public C_CSWeaponBaseGun // client +{ +}; +class C_DynamicPropAlias_cable_dynamic : public C_DynamicProp // client +{ +}; +class CBaseProp : public CBaseAnimGraph // client +{ + bool m_bModelOverrodeBlockLOS; // 0x1168 + int32 m_iShapeType; // 0x116C + bool m_bConformToCollisionBounds; // 0x1170 + CTransform m_mPreferredCatchTransform; // 0x1180 +}; +class CInfoOffscreenPanoramaTexture : public C_PointEntity // client +{ + bool m_bDisabled; // 0x0608 + int32 m_nResolutionX; // 0x060C + int32 m_nResolutionY; // 0x0610 + CUtlSymbolLarge m_szPanelType; // 0x0618 + CUtlSymbolLarge m_szLayoutFileName; // 0x0620 + CUtlSymbolLarge m_RenderAttrName; // 0x0628 + C_NetworkUtlVectorBase< CHandle< C_BaseModelEntity > > m_TargetEntities; // 0x0630 + int32 m_nTargetChangeCount; // 0x0648 + C_NetworkUtlVectorBase< CUtlSymbolLarge > m_vecCSSClasses; // 0x0650 + CUtlSymbolLarge m_szTargetsName; // 0x0668 + CUtlVector< CHandle< C_BaseModelEntity > > m_AdditionalTargetEntities; // 0x0670 + bool m_bCheckCSSClasses; // 0x07E8 +}; +class CCSWeaponBaseVData : public CBasePlayerWeaponVData // client +{ + CSWeaponType m_WeaponType; // 0x0440 + CSWeaponCategory m_WeaponCategory; // 0x0444 + CResourceNameTyped< CWeakHandle< InfoForResourceTypeCNmSkeleton > > m_szAnimSkeleton; // 0x0448 + Vector m_vecMuzzlePos0; // 0x0528 + Vector m_vecMuzzlePos1; // 0x0534 + CResourceNameTyped< CWeakHandle< InfoForResourceTypeIParticleSystemDefinition > > m_szTracerParticle; // 0x0540 + gear_slot_t m_GearSlot; // 0x0620 + int32 m_GearSlotPosition; // 0x0624 + loadout_slot_t m_DefaultLoadoutSlot; // 0x0628 + int32 m_nPrice; // 0x062C + int32 m_nKillAward; // 0x0630 + int32 m_nPrimaryReserveAmmoMax; // 0x0634 + int32 m_nSecondaryReserveAmmoMax; // 0x0638 + bool m_bMeleeWeapon; // 0x063C + bool m_bHasBurstMode; // 0x063D + bool m_bIsRevolver; // 0x063E + bool m_bCannotShootUnderwater; // 0x063F + CGlobalSymbol m_szName; // 0x0640 + CSWeaponSilencerType m_eSilencerType; // 0x0648 + int32 m_nCrosshairMinDistance; // 0x064C + int32 m_nCrosshairDeltaDistance; // 0x0650 + bool m_bIsFullAuto; // 0x0654 + int32 m_nNumBullets; // 0x0658 + bool m_bReloadsSingleShells; // 0x065C + CFiringModeFloat m_flCycleTime; // 0x0660 + CFiringModeFloat m_flMaxSpeed; // 0x0668 + CFiringModeFloat m_flSpread; // 0x0670 + CFiringModeFloat m_flInaccuracyCrouch; // 0x0678 + CFiringModeFloat m_flInaccuracyStand; // 0x0680 + CFiringModeFloat m_flInaccuracyJump; // 0x0688 + CFiringModeFloat m_flInaccuracyLand; // 0x0690 + CFiringModeFloat m_flInaccuracyLadder; // 0x0698 + CFiringModeFloat m_flInaccuracyFire; // 0x06A0 + CFiringModeFloat m_flInaccuracyMove; // 0x06A8 + CFiringModeFloat m_flRecoilAngle; // 0x06B0 + CFiringModeFloat m_flRecoilAngleVariance; // 0x06B8 + CFiringModeFloat m_flRecoilMagnitude; // 0x06C0 + CFiringModeFloat m_flRecoilMagnitudeVariance; // 0x06C8 + CFiringModeInt m_nTracerFrequency; // 0x06D0 + float32 m_flInaccuracyJumpInitial; // 0x06D8 + float32 m_flInaccuracyJumpApex; // 0x06DC + float32 m_flInaccuracyReload; // 0x06E0 + float32 m_flDeployDuration; // 0x06E4 + float32 m_flDisallowAttackAfterReloadStartDuration; // 0x06E8 + int32 m_nBurstShotCount; // 0x06EC + bool m_bAllowBurstHolster; // 0x06F0 + int32 m_nRecoilSeed; // 0x06F4 + int32 m_nSpreadSeed; // 0x06F8 + float32 m_flAttackMovespeedFactor; // 0x06FC + float32 m_flInaccuracyPitchShift; // 0x0700 + float32 m_flInaccuracyAltSoundThreshold; // 0x0704 + CUtlString m_szUseRadioSubtitle; // 0x0708 + bool m_bUnzoomsAfterShot; // 0x0710 + bool m_bHideViewModelWhenZoomed; // 0x0711 + int32 m_nZoomLevels; // 0x0714 + int32 m_nZoomFOV1; // 0x0718 + int32 m_nZoomFOV2; // 0x071C + float32 m_flZoomTime0; // 0x0720 + float32 m_flZoomTime1; // 0x0724 + float32 m_flZoomTime2; // 0x0728 + float32 m_flIronSightPullUpSpeed; // 0x072C + float32 m_flIronSightPutDownSpeed; // 0x0730 + float32 m_flIronSightFOV; // 0x0734 + float32 m_flIronSightPivotForward; // 0x0738 + float32 m_flIronSightLooseness; // 0x073C + int32 m_nDamage; // 0x0740 + float32 m_flHeadshotMultiplier; // 0x0744 + float32 m_flArmorRatio; // 0x0748 + float32 m_flPenetration; // 0x074C + float32 m_flRange; // 0x0750 + float32 m_flRangeModifier; // 0x0754 + float32 m_flFlinchVelocityModifierLarge; // 0x0758 + float32 m_flFlinchVelocityModifierSmall; // 0x075C + float32 m_flRecoveryTimeCrouch; // 0x0760 + float32 m_flRecoveryTimeStand; // 0x0764 + float32 m_flRecoveryTimeCrouchFinal; // 0x0768 + float32 m_flRecoveryTimeStandFinal; // 0x076C + int32 m_nRecoveryTransitionStartBullet; // 0x0770 + int32 m_nRecoveryTransitionEndBullet; // 0x0774 + float32 m_flThrowVelocity; // 0x0778 + Vector m_vSmokeColor; // 0x077C + CGlobalSymbol m_szAnimClass; // 0x0788 +}; +class CAttributeManager // client +{ + CUtlVector< CHandle< C_BaseEntity > > m_Providers; // 0x0008 + int32 m_iReapplyProvisionParity; // 0x0020 + CHandle< C_BaseEntity > m_hOuter; // 0x0024 + bool m_bPreventLoopback; // 0x0028 + attributeprovidertypes_t m_ProviderType; // 0x002C + CUtlVector< CAttributeManager::cached_attribute_float_t > m_CachedResults; // 0x0030 +}; +class SignatureOutflow_Continue : public CPulse_OutflowConnection // pulse_runtime_lib +{ +}; +class CInfoTarget : public C_PointEntity // client +{ +}; +class CPlayer_CameraServices : public CPlayerPawnComponent // client +{ + QAngle m_vecCsViewPunchAngle; // 0x0048 + GameTick_t m_nCsViewPunchAngleTick; // 0x0054 + float32 m_flCsViewPunchAngleTickRatio; // 0x0058 + C_fogplayerparams_t m_PlayerFog; // 0x0060 + CHandle< C_ColorCorrection > m_hColorCorrectionCtrl; // 0x00A0 + CHandle< C_BaseEntity > m_hViewEntity; // 0x00A4 + CHandle< C_TonemapController2 > m_hTonemapController; // 0x00A8 + audioparams_t m_audio; // 0x00B0 + C_NetworkUtlVectorBase< CHandle< C_PostProcessingVolume > > m_PostProcessingVolumes; // 0x0128 + float32 m_flOldPlayerZ; // 0x0140 + float32 m_flOldPlayerViewOffsetZ; // 0x0144 + fogparams_t m_CurrentFog; // 0x0148 + CHandle< C_FogController > m_hOldFogController; // 0x01B0 + bool[5] m_bOverrideFogColor; // 0x01B4 + Color[5] m_OverrideFogColor; // 0x01B9 + bool[5] m_bOverrideFogStartEnd; // 0x01CD + float32[5] m_fOverrideFogStart; // 0x01D4 + float32[5] m_fOverrideFogEnd; // 0x01E8 + CHandle< C_PostProcessingVolume > m_hActivePostProcessingVolume; // 0x01FC + QAngle m_angDemoViewAngles; // 0x0200 +}; +class CPulseCell_Timeline : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CUtlVector< CPulseCell_Timeline::TimelineEvent_t > m_TimelineEvents; // 0x0048 + bool m_bWaitForChildOutflows; // 0x0060 + CPulse_ResumePoint m_OnFinished; // 0x0068 + CPulse_ResumePoint m_OnCanceled; // 0x00B0 +}; +class CPulseCell_Inflow_EntOutputHandler : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_SourceEntity; // 0x0080 + PulseSymbol_t m_SourceOutput; // 0x0090 + CPulseValueFullType m_ExpectedParamType; // 0x00A0 +}; +class C_BaseCSGrenade : public C_CSWeaponBase // client +{ + bool m_bClientPredictDelete; // 0x1F40 + bool m_bRedraw; // 0x1F41 + bool m_bIsHeldByPlayer; // 0x1F42 + bool m_bPinPulled; // 0x1F43 + bool m_bJumpThrow; // 0x1F44 + bool m_bThrowAnimating; // 0x1F45 + GameTime_t m_fThrowTime; // 0x1F48 + float32 m_flThrowStrength; // 0x1F50 + GameTime_t m_fDropTime; // 0x1FC8 + GameTime_t m_fPinPullTime; // 0x1FCC + bool m_bJustPulledPin; // 0x1FD0 + GameTick_t m_nNextHoldTick; // 0x1FD4 + float32 m_flNextHoldFrac; // 0x1FD8 + CHandle< C_CSWeaponBase > m_hSwitchToWeaponAfterThrow; // 0x1FDC +}; +class CFilterAttributeInt : public CBaseFilter // client +{ + CUtlSymbolLarge m_sAttributeName; // 0x0640 +}; +class CPointTemplate : public CLogicalEntity // client +{ + CUtlSymbolLarge m_iszWorldName; // 0x0608 + CUtlSymbolLarge m_iszSource2EntityLumpName; // 0x0610 + CUtlSymbolLarge m_iszEntityFilterName; // 0x0618 + float32 m_flTimeoutInterval; // 0x0620 + bool m_bAsynchronouslySpawnEntities; // 0x0624 + PointTemplateClientOnlyEntityBehavior_t m_clientOnlyEntityBehavior; // 0x0628 + PointTemplateOwnerSpawnGroupType_t m_ownerSpawnGroupType; // 0x062C + CUtlVector< uint32 > m_createdSpawnGroupHandles; // 0x0630 + CUtlVector< CEntityHandle > m_SpawnedEntityHandles; // 0x0648 + HSCRIPT m_ScriptSpawnCallback; // 0x0660 + HSCRIPT m_ScriptCallbackScope; // 0x0668 +}; +class CPlayer_FlashlightServices : public CPlayerPawnComponent // client +{ +}; +class CCSPlayerController : public CBasePlayerController // client +{ + CCSPlayerController_InGameMoneyServices* m_pInGameMoneyServices; // 0x0808 + CCSPlayerController_InventoryServices* m_pInventoryServices; // 0x0810 + CCSPlayerController_ActionTrackingServices* m_pActionTrackingServices; // 0x0818 + CCSPlayerController_DamageServices* m_pDamageServices; // 0x0820 + uint32 m_iPing; // 0x0828 + bool m_bHasCommunicationAbuseMute; // 0x082C + uint32 m_uiCommunicationMuteFlags; // 0x0830 + CUtlSymbolLarge m_szCrosshairCodes; // 0x0838 + uint8 m_iPendingTeamNum; // 0x0840 + GameTime_t m_flForceTeamTime; // 0x0844 + int32 m_iCompTeammateColor; // 0x0848 + bool m_bEverPlayedOnTeam; // 0x084C + GameTime_t m_flPreviousForceJoinTeamTime; // 0x0850 + CUtlSymbolLarge m_szClan; // 0x0858 + CUtlString m_sSanitizedPlayerName; // 0x0860 + int32 m_iCoachingTeam; // 0x0868 + uint64 m_nPlayerDominated; // 0x0870 + uint64 m_nPlayerDominatingMe; // 0x0878 + int32 m_iCompetitiveRanking; // 0x0880 + int32 m_iCompetitiveWins; // 0x0884 + int8 m_iCompetitiveRankType; // 0x0888 + int32 m_iCompetitiveRankingPredicted_Win; // 0x088C + int32 m_iCompetitiveRankingPredicted_Loss; // 0x0890 + int32 m_iCompetitiveRankingPredicted_Tie; // 0x0894 + int32 m_nEndMatchNextMapVote; // 0x0898 + uint16 m_unActiveQuestId; // 0x089C + uint32 m_rtActiveMissionPeriod; // 0x08A0 + QuestProgress::Reason m_nQuestProgressReason; // 0x08A4 + uint32 m_unPlayerTvControlFlags; // 0x08A8 + int32 m_iDraftIndex; // 0x08D8 + uint32 m_msQueuedModeDisconnectionTimestamp; // 0x08DC + uint32 m_uiAbandonRecordedReason; // 0x08E0 + uint32 m_eNetworkDisconnectionReason; // 0x08E4 + bool m_bCannotBeKicked; // 0x08E8 + bool m_bEverFullyConnected; // 0x08E9 + bool m_bAbandonAllowsSurrender; // 0x08EA + bool m_bAbandonOffersInstantSurrender; // 0x08EB + bool m_bDisconnection1MinWarningPrinted; // 0x08EC + bool m_bScoreReported; // 0x08ED + int32 m_nDisconnectionTick; // 0x08F0 + bool m_bControllingBot; // 0x0900 + bool m_bHasControlledBotThisRound; // 0x0901 + bool m_bHasBeenControlledByPlayerThisRound; // 0x0902 + int32 m_nBotsControlledThisRound; // 0x0904 + bool m_bCanControlObservedBot; // 0x0908 + CHandle< C_CSPlayerPawn > m_hPlayerPawn; // 0x090C + CHandle< C_CSObserverPawn > m_hObserverPawn; // 0x0910 + bool m_bPawnIsAlive; // 0x0914 + uint32 m_iPawnHealth; // 0x0918 + int32 m_iPawnArmor; // 0x091C + bool m_bPawnHasDefuser; // 0x0920 + bool m_bPawnHasHelmet; // 0x0921 + uint16 m_nPawnCharacterDefIndex; // 0x0922 + int32 m_iPawnLifetimeStart; // 0x0924 + int32 m_iPawnLifetimeEnd; // 0x0928 + int32 m_iPawnBotDifficulty; // 0x092C + CHandle< CCSPlayerController > m_hOriginalControllerOfCurrentPawn; // 0x0930 + int32 m_iScore; // 0x0934 + uint8[8] m_recentKillQueue; // 0x0938 + uint8 m_nFirstKill; // 0x0940 + uint8 m_nKillCount; // 0x0941 + bool m_bMvpNoMusic; // 0x0942 + int32 m_eMvpReason; // 0x0944 + int32 m_iMusicKitID; // 0x0948 + int32 m_iMusicKitMVPs; // 0x094C + int32 m_iMVPs; // 0x0950 + bool m_bIsPlayerNameDirty; // 0x0954 + bool m_bFireBulletsSeedSynchronized; // 0x0955 +}; +class C_CSGO_TeamIntroCounterTerroristPosition : public C_CSGO_TeamIntroCharacterPosition // client +{ +}; +class C_CSGO_PreviewModel : public C_BaseFlex // client +{ + CUtlString m_defaultAnim; // 0x1350 + AnimLoopMode_t m_nDefaultAnimLoopMode; // 0x1358 + float32 m_flInitialModelScale; // 0x135C + CUtlString m_sInitialWeaponState; // 0x1360 +}; +class C_CSGO_TeamSelectCharacterPosition : public C_CSGO_TeamPreviewCharacterPosition // client +{ +}; +class CPulseCell_Outflow_CycleOrdered::InstanceState_t // pulse_runtime_lib +{ + int32 m_nNextIndex; // 0x0000 +}; +class C_SoundEventAABBEntity : public C_SoundEventEntity // client +{ + Vector m_vMins; // 0x06B8 + Vector m_vMaxs; // 0x06C4 +}; +class CCSPlayer_MovementServices : public CPlayer_MovementServices_Humanoid // client +{ + Vector m_vecLadderNormal; // 0x0270 + int32 m_nLadderSurfacePropIndex; // 0x027C + bool m_bDucked; // 0x0280 + float32 m_flDuckAmount; // 0x0284 + float32 m_flDuckSpeed; // 0x0288 + bool m_bDuckOverride; // 0x028C + bool m_bDesiresDuck; // 0x028D + bool m_bDucking; // 0x028E + float32 m_flDuckOffset; // 0x0290 + uint32 m_nDuckTimeMsecs; // 0x0294 + uint32 m_nDuckJumpTimeMsecs; // 0x0298 + uint32 m_nJumpTimeMsecs; // 0x029C + float32 m_flLastDuckTime; // 0x02A0 + Vector2D m_vecLastPositionAtFullCrouchSpeed; // 0x02B0 + bool m_duckUntilOnGround; // 0x02B8 + bool m_bHasWalkMovedSinceLastJump; // 0x02B9 + bool m_bInStuckTest; // 0x02BA + int32 m_nTraceCount; // 0x04C8 + int32 m_StuckLast; // 0x04CC + bool m_bSpeedCropped; // 0x04D0 + int32 m_nOldWaterLevel; // 0x04D4 + float32 m_flWaterEntryTime; // 0x04D8 + Vector m_vecForward; // 0x04DC + Vector m_vecLeft; // 0x04E8 + Vector m_vecUp; // 0x04F4 + int32 m_nGameCodeHasMovedPlayerAfterCommand; // 0x0500 + GameTime_t m_fStashGrenadeParameterWhen; // 0x0504 + uint64 m_nButtonDownMaskPrev; // 0x0508 + float32 m_flOffsetTickCompleteTime; // 0x0510 + float32 m_flOffsetTickStashedSpeed; // 0x0514 + float32 m_flStamina; // 0x0518 + float32 m_flHeightAtJumpStart; // 0x051C + float32 m_flMaxJumpHeightThisJump; // 0x0520 + float32 m_flMaxJumpHeightLastJump; // 0x0524 + float32 m_flStaminaAtJumpStart; // 0x0528 + float32 m_flVelMulAtJumpStart; // 0x052C + float32 m_flAccumulatedJumpError; // 0x0530 + CCSPlayerLegacyJump m_LegacyJump; // 0x0538 + CCSPlayerModernJump m_ModernJump; // 0x0550 + GameTick_t m_nLastJumpTick; // 0x0580 + float32 m_flLastJumpFrac; // 0x0584 + float32 m_flLastJumpVelocityZ; // 0x0588 + bool m_bJumpApexPending; // 0x058C + float32 m_flTicksSinceLastSurfingDetected; // 0x0590 + bool m_bWasSurfing; // 0x0594 + Vector m_vecInputRotated; // 0x0624 +}; +class SellbackPurchaseEntry_t // client +{ + uint16 m_unDefIdx; // 0x0030 + int32 m_nCost; // 0x0034 + int32 m_nPrevArmor; // 0x0038 + bool m_bPrevHelmet; // 0x003C + CEntityHandle m_hItem; // 0x0040 +}; +class C_TintController : public C_BaseEntity // client +{ +}; +class C_WeaponBaseItem : public C_CSWeaponBase // client +{ + bool m_bSequenceInProgress; // 0x1F40 + bool m_bRedraw; // 0x1F41 +}; +class CWaterSplasher : public C_BaseModelEntity // client +{ +}; +class C_FuncBrush : public C_BaseModelEntity // client +{ +}; +class PhysicsRagdollPose_t // client +{ + C_NetworkUtlVectorBase< CTransform > m_Transforms; // 0x0008 + CHandle< C_BaseEntity > m_hOwner; // 0x0020 + bool m_bSetFromDebugHistory; // 0x0024 +}; +class CPropDataComponent : public CEntityComponent // client +{ + float32 m_flDmgModBullet; // 0x0010 + float32 m_flDmgModClub; // 0x0014 + float32 m_flDmgModExplosive; // 0x0018 + float32 m_flDmgModFire; // 0x001C + CUtlSymbolLarge m_iszPhysicsDamageTableName; // 0x0020 + CUtlSymbolLarge m_iszBasePropData; // 0x0028 + int32 m_nInteractions; // 0x0030 + bool m_bSpawnMotionDisabled; // 0x0034 + int32 m_nDisableTakePhysicsDamageSpawnFlag; // 0x0038 + int32 m_nMotionDisabledSpawnFlag; // 0x003C +}; +class CPulseCell_LimitCount::InstanceState_t // pulse_runtime_lib +{ + int32 m_nCurrentCount; // 0x0000 +}; +class C_WeaponCZ75a : public C_CSWeaponBaseGun // client +{ + bool m_bMagazineRemoved; // 0x1F70 +}; +class C_DynamicLight : public C_BaseModelEntity // client +{ + uint8 m_Flags; // 0x0E88 + uint8 m_LightStyle; // 0x0E89 + float32 m_Radius; // 0x0E8C + int32 m_Exponent; // 0x0E90 + float32 m_InnerAngle; // 0x0E94 + float32 m_OuterAngle; // 0x0E98 + float32 m_SpotRadius; // 0x0E9C +}; +class EngineCountdownTimer // client +{ + float32 m_duration; // 0x0008 + float32 m_timestamp; // 0x000C + float32 m_timescale; // 0x0010 +}; +class C_SoundEventSphereEntity : public C_SoundEventEntity // client +{ + float32 m_flRadius; // 0x06B8 +}; +class CCSPlayerController_DamageServices : public CPlayerControllerComponent // client +{ + int32 m_nSendUpdate; // 0x0040 + C_UtlVectorEmbeddedNetworkVar< CDamageRecord > m_DamageList; // 0x0048 +}; +class C_CSGO_TeamPreviewModel : public C_CSGO_PreviewPlayer // client +{ +}; +class C_TonemapController2Alias_env_tonemap_controller2 : public C_TonemapController2 // client +{ +}; +class C_Inferno : public C_BaseModelEntity // client +{ + ParticleIndex_t m_nfxFireDamageEffect; // 0x0EC8 + CStrongHandle< InfoForResourceTypeIParticleSnapshot > m_hInfernoPointsSnapshot; // 0x0ED0 + CStrongHandle< InfoForResourceTypeIParticleSnapshot > m_hInfernoFillerPointsSnapshot; // 0x0ED8 + CStrongHandle< InfoForResourceTypeIParticleSnapshot > m_hInfernoOutlinePointsSnapshot; // 0x0EE0 + CStrongHandle< InfoForResourceTypeIParticleSnapshot > m_hInfernoClimbingOutlinePointsSnapshot; // 0x0EE8 + CStrongHandle< InfoForResourceTypeIParticleSnapshot > m_hInfernoDecalsSnapshot; // 0x0EF0 + Vector[64] m_firePositions; // 0x0EF8 + Vector[64] m_fireParentPositions; // 0x11F8 + bool[64] m_bFireIsBurning; // 0x14F8 + Vector[64] m_BurnNormal; // 0x1538 + int32 m_fireCount; // 0x1838 + int32 m_nInfernoType; // 0x183C + float32 m_nFireLifetime; // 0x1840 + bool m_bInPostEffectTime; // 0x1844 + int32 m_lastFireCount; // 0x1848 + int32 m_nFireEffectTickBegin; // 0x184C + int32 m_drawableCount; // 0x8450 + bool m_blosCheck; // 0x8454 + int32 m_nlosperiod; // 0x8458 + float32 m_maxFireHalfWidth; // 0x845C + float32 m_maxFireHeight; // 0x8460 + Vector m_minBounds; // 0x8464 + Vector m_maxBounds; // 0x8470 + float32 m_flLastGrassBurnThink; // 0x847C +}; +class CFilterLOS : public CBaseFilter // client +{ +}; +class CPointOrient : public C_BaseEntity // client +{ + CUtlSymbolLarge m_iszSpawnTargetName; // 0x0608 + CHandle< C_BaseEntity > m_hTarget; // 0x0610 + bool m_bActive; // 0x0614 + PointOrientGoalDirectionType_t m_nGoalDirection; // 0x0618 + PointOrientConstraint_t m_nConstraint; // 0x061C + float32 m_flMaxTurnRate; // 0x0620 + GameTime_t m_flLastGameTime; // 0x0624 +}; +class C_GlobalLight : public C_BaseEntity // client +{ + uint16 m_WindClothForceHandle; // 0x0AD0 +}; +class C_EnvWindClientside : public C_BaseEntity // client +{ + C_EnvWindShared m_EnvWindShared; // 0x0608 +}; +class sky3dparams_t // client +{ + int16 scale; // 0x0008 + Vector origin; // 0x000C + bool bClip3DSkyBoxNearToWorldFar; // 0x0018 + float32 flClip3DSkyBoxNearToWorldFarOffset; // 0x001C + fogparams_t fog; // 0x0020 + WorldGroupId_t m_nWorldGroupID; // 0x0088 +}; +class C_FlashbangProjectile : public C_BaseCSGrenadeProjectile // client +{ +}; +class C_SoundEventConeEntity : public C_SoundEventEntity // client +{ + float32 m_flEmitterAngle; // 0x06B8 + float32 m_flSweetSpotAngle; // 0x06BC + float32 m_flAttenMin; // 0x06C0 + float32 m_flAttenMax; // 0x06C4 + CUtlSymbolLarge m_iszParameterName; // 0x06C8 +}; +class CDestructiblePartsComponent // client +{ + CNetworkVarChainer __m_pChainEntity; // 0x0000 + CUtlVector< uint16 > m_vecDamageTakenByHitGroup; // 0x0048 + CHandle< C_BaseModelEntity > m_hOwner; // 0x0060 +}; +class C_WeaponP90 : public C_CSWeaponBaseGun // client +{ +}; +class C_EnvWind : public C_BaseEntity // client +{ + C_EnvWindShared m_EnvWindShared; // 0x0608 +}; +class C_CSGO_TerroristTeamIntroCamera : public C_CSGO_TeamPreviewCamera // client +{ +}; +class CPulseCell_Step_DebugLog : public CPulseCell_BaseFlow // pulse_runtime_lib +{ +}; +class CCSPlayerController_ActionTrackingServices : public CPlayerControllerComponent // client +{ + C_UtlVectorEmbeddedNetworkVar< CSPerRoundStats_t > m_perRoundStats; // 0x0040 + CSMatchStats_t m_matchStats; // 0x00A8 + int32 m_iNumRoundKills; // 0x0128 + int32 m_iNumRoundKillsHeadshots; // 0x012C + float32 m_flTotalRoundDamageDealt; // 0x0130 +}; +class CBodyComponentBaseAnimGraph : public CBodyComponentSkeletonInstance // client +{ + CBaseAnimGraphController m_animationController; // 0x0550 +}; +class C_CSGO_PreviewModelAlias_csgo_item_previewmodel : public C_CSGO_PreviewModel // client +{ +}; +class C_InfoInstructorHintHostageRescueZone : public C_PointEntity // client +{ +}; +class CPulseCell_BaseYieldingInflow : public CPulseCell_BaseFlow // pulse_runtime_lib +{ +}; +class PulseNodeDynamicOutflows_t // pulse_runtime_lib +{ + CUtlVector< PulseNodeDynamicOutflows_t::DynamicOutflow_t > m_Outflows; // 0x0000 +}; +class C_TriggerBuoyancy : public C_BaseTrigger // client +{ + CBuoyancyHelper m_BuoyancyHelper; // 0x0F58 + float32 m_flFluidDensity; // 0x1070 +}; +class CPlayer_MovementServices_Humanoid : public CPlayer_MovementServices // client +{ + float32 m_flStepSoundTime; // 0x0240 + float32 m_flFallVelocity; // 0x0244 + Vector m_groundNormal; // 0x0248 + float32 m_flSurfaceFriction; // 0x0254 + CUtlStringToken m_surfaceProps; // 0x0258 + int32 m_nStepside; // 0x0268 +}; +class CPulseCell_IsRequirementValid::Criteria_t // pulse_runtime_lib +{ + bool m_bIsValid; // 0x0000 +}; +class C_WeaponTec9 : public C_CSWeaponBaseGun // client +{ +}; +class C_PhysPropClientside : public C_BreakableProp // client +{ + GameTime_t m_flTouchDelta; // 0x12D0 + GameTime_t m_fDeathTime; // 0x12D4 + Vector m_vecDamagePosition; // 0x12D8 + Vector m_vecDamageDirection; // 0x12E4 + DamageTypes_t m_nDamageType; // 0x12F0 +}; +class C_BaseDoor : public C_BaseToggle // client +{ + bool m_bIsUsable; // 0x0E88 +}; +class CSMatchStats_t : public CSPerRoundStats_t // client +{ + int32 m_iEnemy5Ks; // 0x0068 + int32 m_iEnemy4Ks; // 0x006C + int32 m_iEnemy3Ks; // 0x0070 + int32 m_iEnemyKnifeKills; // 0x0074 + int32 m_iEnemyTaserKills; // 0x0078 +}; +class EntityRenderAttribute_t // client +{ + CUtlStringToken m_ID; // 0x0030 + Vector4D m_Values; // 0x0034 +}; +class CPulseCell_Inflow_ObservableVariableListener : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseRuntimeBlackboardReferenceIndex_t m_nBlackboardReference; // 0x0080 + bool m_bSelfReference; // 0x0082 +}; +class CFilterMultipleAPI // client +{ +}; +class CHostageRescueZone : public CHostageRescueZoneShim // client +{ +}; +class CModelState // client +{ + CStrongHandle< InfoForResourceTypeCModel > m_hModel; // 0x00A0 + CUtlSymbolLarge m_ModelName; // 0x00A8 + bool m_bClientClothCreationSuppressed; // 0x0179 + uint64 m_MeshGroupMask; // 0x0220 + C_NetworkUtlVectorBase< int32 > m_nBodyGroupChoices; // 0x0270 + int8 m_nIdealMotionType; // 0x02BA + int8 m_nForceLOD; // 0x02BB + int8 m_nClothUpdateFlags; // 0x02BC +}; +class CPulseCell_LerpCameraSettings::CursorState_t : public CPulseCell_BaseLerp::CursorState_t // client +{ + CHandle< C_PointCamera > m_hCamera; // 0x0008 + PointCameraSettings_t m_OverlaidStart; // 0x000C + PointCameraSettings_t m_OverlaidEnd; // 0x001C +}; +class CPulseCell_Outflow_CycleOrdered : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class C_CSWeaponBaseGun : public C_CSWeaponBase // client +{ + int32 m_zoomLevel; // 0x1F40 + int32 m_iBurstShotsRemaining; // 0x1F44 + int32 m_iSilencerBodygroup; // 0x1F48 + int32 m_silencedModelIndex; // 0x1F58 + bool m_inPrecache; // 0x1F5C + bool m_bNeedsBoltAction; // 0x1F5D + int32 m_nRevolverCylinderIdx; // 0x1F60 +}; +class C_CSGameRulesProxy : public C_GameRulesProxy // client +{ + C_CSGameRules* m_pGameRules; // 0x0608 +}; +class CCollisionProperty // client +{ + VPhysicsCollisionAttribute_t m_collisionAttribute; // 0x0010 + Vector m_vecMins; // 0x0040 + Vector m_vecMaxs; // 0x004C + uint8 m_usSolidFlags; // 0x005A + SolidType_t m_nSolidType; // 0x005B + uint8 m_triggerBloat; // 0x005C + SurroundingBoundsType_t m_nSurroundType; // 0x005D + uint8 m_CollisionGroup; // 0x005E + uint8 m_nEnablePhysics; // 0x005F + float32 m_flBoundingRadius; // 0x0060 + Vector m_vecSpecifiedSurroundingMins; // 0x0064 + Vector m_vecSpecifiedSurroundingMaxs; // 0x0070 + Vector m_vecSurroundingMaxs; // 0x007C + Vector m_vecSurroundingMins; // 0x0088 + Vector m_vCapsuleCenter1; // 0x0094 + Vector m_vCapsuleCenter2; // 0x00A0 + float32 m_flCapsuleRadius; // 0x00AC +}; +class C_WeaponP250 : public C_CSWeaponBaseGun // client +{ +}; +class C_ShatterGlassShardPhysics : public C_PhysicsProp // client +{ + shard_model_desc_t m_ShardDesc; // 0x12E8 +}; +class CFilterMassGreater : public CBaseFilter // client +{ + float32 m_fFilterMass; // 0x0640 +}; +class C_EntityDissolve : public C_BaseModelEntity // client +{ + GameTime_t m_flStartTime; // 0x0E90 + float32 m_flFadeInStart; // 0x0E94 + float32 m_flFadeInLength; // 0x0E98 + float32 m_flFadeOutModelStart; // 0x0E9C + float32 m_flFadeOutModelLength; // 0x0EA0 + float32 m_flFadeOutStart; // 0x0EA4 + float32 m_flFadeOutLength; // 0x0EA8 + GameTime_t m_flNextSparkTime; // 0x0EAC + EntityDisolveType_t m_nDissolveType; // 0x0EB0 + Vector m_vDissolverOrigin; // 0x0EB4 + uint32 m_nMagnitude; // 0x0EC0 + bool m_bCoreExplode; // 0x0EC4 + bool m_bLinkedToServerEnt; // 0x0EC5 +}; +class C_SoundOpvarSetOBBEntity : public C_SoundOpvarSetAABBEntity // client +{ +}; +class CCSGameModeRules_ArmsRace : public CCSGameModeRules // client +{ + C_NetworkUtlVectorBase< CUtlString > m_WeaponSequence; // 0x0030 +}; +class C_FuncMonitor : public C_FuncBrush // client +{ + CUtlString m_targetCamera; // 0x0E88 + int32 m_nResolutionEnum; // 0x0E90 + bool m_bRenderShadows; // 0x0E94 + bool m_bUseUniqueColorTarget; // 0x0E95 + CUtlString m_brushModelName; // 0x0E98 + CHandle< C_BaseEntity > m_hTargetCamera; // 0x0EA0 + bool m_bEnabled; // 0x0EA4 + bool m_bDraw3DSkybox; // 0x0EA5 +}; +class C_ClientRagdoll : public CBaseAnimGraph // client +{ + bool m_bFadeOut; // 0x1168 + bool m_bImportant; // 0x1169 + GameTime_t m_flEffectTime; // 0x116C + GameTime_t m_gibDespawnTime; // 0x1170 + int32 m_iCurrentFriction; // 0x1174 + int32 m_iMinFriction; // 0x1178 + int32 m_iMaxFriction; // 0x117C + int32 m_iFrictionAnimState; // 0x1180 + bool m_bReleaseRagdoll; // 0x1184 + AttachmentHandle_t m_iEyeAttachment; // 0x1185 + bool m_bFadingOut; // 0x1186 + float32[10] m_flScaleEnd; // 0x1188 + GameTime_t[10] m_flScaleTimeStart; // 0x11B0 + GameTime_t[10] m_flScaleTimeEnd; // 0x11D8 +}; +class PulseSelectorOutflowList_t // pulse_runtime_lib +{ + CUtlVector< OutflowWithRequirements_t > m_Outflows; // 0x0000 +}; +class CPulseCell_PlaySequence::CursorState_t // client +{ + CHandle< CBaseAnimGraph > m_hTarget; // 0x0000 +}; +class CBodyComponentSkeletonInstance : public CBodyComponent // client +{ + CSkeletonInstance m_skeletonInstance; // 0x0080 +}; +class C_CS2WeaponModuleBase : public CBaseAnimGraph // client +{ +}; +class C_CSGO_TeamPreviewCharacterPosition : public C_BaseEntity // client +{ + int32 m_nVariant; // 0x0608 + int32 m_nRandom; // 0x060C + int32 m_nOrdinal; // 0x0610 + CUtlString m_sWeaponName; // 0x0618 + uint64 m_xuid; // 0x0620 + C_EconItemView m_agentItem; // 0x0628 + C_EconItemView m_glovesItem; // 0x0A98 + C_EconItemView m_weaponItem; // 0x0F08 +}; +class C_SmokeGrenadeProjectile : public C_BaseCSGrenadeProjectile // client +{ + int32 m_nSmokeEffectTickBegin; // 0x1450 + bool m_bDidSmokeEffect; // 0x1454 + int32 m_nRandomSeed; // 0x1458 + Vector m_vSmokeColor; // 0x145C + Vector m_vSmokeDetonationPos; // 0x1468 + C_NetworkUtlVectorBase< uint8 > m_VoxelFrameData; // 0x1478 + int32 m_nVoxelFrameDataSize; // 0x1490 + int32 m_nVoxelUpdate; // 0x1494 + bool m_bSmokeVolumeDataReceived; // 0x1498 + bool m_bSmokeEffectSpawned; // 0x1499 +}; +class CScriptComponent : public CEntityComponent // entity2 +{ + CUtlSymbolLarge m_scriptClassName; // 0x0030 +}; +class CCSPlayer_BuyServices : public CPlayerPawnComponent // client +{ + C_UtlVectorEmbeddedNetworkVar< SellbackPurchaseEntry_t > m_vecSellbackPurchaseEntries; // 0x0048 +}; +class C_PortraitWorldCallbackHandler : public C_BaseEntity // client +{ +}; +class C_DynamicProp : public C_BreakableProp // client +{ + bool m_bUseHitboxesForRenderBox; // 0x12D0 + bool m_bUseAnimGraph; // 0x12D1 + CEntityIOOutput m_pOutputAnimBegun; // 0x12D8 + CEntityIOOutput m_pOutputAnimOver; // 0x12F0 + CEntityIOOutput m_pOutputAnimLoopCycleOver; // 0x1308 + CEntityIOOutput m_OnAnimReachedStart; // 0x1320 + CEntityIOOutput m_OnAnimReachedEnd; // 0x1338 + CUtlSymbolLarge m_iszIdleAnim; // 0x1350 + AnimLoopMode_t m_nIdleAnimLoopMode; // 0x1358 + bool m_bRandomizeCycle; // 0x135C + bool m_bStartDisabled; // 0x135D + bool m_bFiredStartEndOutput; // 0x135E + bool m_bForceNpcExclude; // 0x135F + bool m_bCreateNonSolid; // 0x1360 + bool m_bIsOverrideProp; // 0x1361 + int32 m_iInitialGlowState; // 0x1364 + int32 m_nGlowRange; // 0x1368 + int32 m_nGlowRangeMin; // 0x136C + Color m_glowColor; // 0x1370 + int32 m_nGlowTeam; // 0x1374 + int32 m_iCachedFrameCount; // 0x1378 + Vector m_vecCachedRenderMins; // 0x137C + Vector m_vecCachedRenderMaxs; // 0x1388 +}; +class C_CSTeam : public C_Team // client +{ + char[512] m_szTeamMatchStat; // 0x06C0 + int32 m_numMapVictories; // 0x08C0 + bool m_bSurrendered; // 0x08C4 + int32 m_scoreFirstHalf; // 0x08C8 + int32 m_scoreSecondHalf; // 0x08CC + int32 m_scoreOvertime; // 0x08D0 + char[129] m_szClanTeamname; // 0x08D4 + uint32 m_iClanID; // 0x0958 + char[8] m_szTeamFlagImage; // 0x095C + char[8] m_szTeamLogoImage; // 0x0964 +}; +class C_CS2HudModelWeapon : public C_CS2HudModelBase // client +{ +}; +class C_TextureBasedAnimatable : public C_BaseModelEntity // client +{ + bool m_bLoop; // 0x0E88 + float32 m_flFPS; // 0x0E8C + CStrongHandle< InfoForResourceTypeCTextureBase > m_hPositionKeys; // 0x0E90 + CStrongHandle< InfoForResourceTypeCTextureBase > m_hRotationKeys; // 0x0E98 + Vector m_vAnimationBoundsMin; // 0x0EA0 + Vector m_vAnimationBoundsMax; // 0x0EAC + float32 m_flStartTime; // 0x0EB8 + float32 m_flStartFrame; // 0x0EBC +}; +class C_LightEnvironmentEntity : public C_LightDirectionalEntity // client +{ +}; +class CLogicRelayAPI // client +{ +}; +class C_TriggerPhysics : public C_BaseTrigger // client +{ + float32 m_gravityScale; // 0x0F58 + float32 m_linearLimit; // 0x0F5C + float32 m_linearDamping; // 0x0F60 + float32 m_angularLimit; // 0x0F64 + float32 m_angularDamping; // 0x0F68 + float32 m_linearForce; // 0x0F6C + float32 m_flFrequency; // 0x0F70 + float32 m_flDampingRatio; // 0x0F74 + Vector m_vecLinearForcePointAt; // 0x0F78 + bool m_bCollapseToForcePoint; // 0x0F84 + Vector m_vecLinearForcePointAtWorld; // 0x0F88 + Vector m_vecLinearForceDirection; // 0x0F94 + bool m_bConvertToDebrisWhenPossible; // 0x0FA0 +}; +class C_PropDoorRotating : public C_BasePropDoor // client +{ +}; +class C_HandleTest : public C_BaseEntity // client +{ + CHandle< C_BaseEntity > m_Handle; // 0x0608 + bool m_bSendHandle; // 0x060C +}; +class CInfoWorldLayer : public C_BaseEntity // client +{ + CEntityIOOutput m_pOutputOnEntitiesSpawned; // 0x0608 + CUtlSymbolLarge m_worldName; // 0x0620 + CUtlSymbolLarge m_layerName; // 0x0628 + bool m_bWorldLayerVisible; // 0x0630 + bool m_bEntitiesSpawned; // 0x0631 + bool m_bCreateAsChildSpawnGroup; // 0x0632 + uint32 m_hLayerSpawnGroup; // 0x0634 + bool m_bWorldLayerActuallyVisible; // 0x0638 +}; +class CBodyComponentBaseModelEntity : public CBodyComponentSkeletonInstance // client +{ +}; +class C_Multimeter : public CBaseAnimGraph // client +{ + CHandle< C_PlantedC4 > m_hTargetC4; // 0x1170 +}; +class C_BaseTrigger : public C_BaseToggle // client +{ + CEntityIOOutput m_OnStartTouch; // 0x0E88 + CEntityIOOutput m_OnStartTouchAll; // 0x0EA0 + CEntityIOOutput m_OnEndTouch; // 0x0EB8 + CEntityIOOutput m_OnEndTouchAll; // 0x0ED0 + CEntityIOOutput m_OnTouching; // 0x0EE8 + CEntityIOOutput m_OnTouchingEachEntity; // 0x0F00 + CEntityIOOutput m_OnNotTouching; // 0x0F18 + CUtlVector< CHandle< C_BaseEntity > > m_hTouchingEntities; // 0x0F30 + CUtlSymbolLarge m_iFilterName; // 0x0F48 + CHandle< CBaseFilter > m_hFilter; // 0x0F50 + bool m_bDisabled; // 0x0F54 +}; +class FilterDamageType : public CBaseFilter // client +{ + int32 m_iDamageType; // 0x0640 +}; +class CAttributeList // client +{ + C_UtlVectorEmbeddedNetworkVar< CEconItemAttribute > m_Attributes; // 0x0008 + CAttributeManager* m_pManager; // 0x0070 +}; +class CPulseCell_Inflow_Wait : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_WakeResume; // 0x0048 +}; +class CFilterProximity : public CBaseFilter // client +{ + float32 m_flRadius; // 0x0640 +}; +class CCS2WeaponGraphController : public CAnimGraphControllerBase // client +{ + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_action; // 0x0090 + CAnimGraph2ParamOptionalRef< bool > m_bActionReset; // 0x00A8 + CAnimGraph2ParamOptionalRef< float32 > m_flWeaponActionSpeedScale; // 0x00C0 + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_weaponCategory; // 0x00D8 + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_weaponType; // 0x00F0 + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_weaponExtraInfo; // 0x0108 + CAnimGraph2ParamOptionalRef< float32 > m_flWeaponAmmo; // 0x0120 + CAnimGraph2ParamOptionalRef< float32 > m_flWeaponAmmoMax; // 0x0138 + CAnimGraph2ParamOptionalRef< float32 > m_flWeaponAmmoReserve; // 0x0150 + CAnimGraph2ParamOptionalRef< bool > m_bWeaponIsSilenced; // 0x0168 + CAnimGraph2ParamOptionalRef< float32 > m_flWeaponIronsightAmount; // 0x0180 + CAnimGraph2ParamOptionalRef< bool > m_bIsUsingLegacyModel; // 0x0198 + CAnimGraph2ParamOptionalRef< float32 > m_idleVariation; // 0x01B0 + CAnimGraph2ParamOptionalRef< float32 > m_deployVariation; // 0x01C8 + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_attackType; // 0x01E0 + CAnimGraph2ParamOptionalRef< float32 > m_attackThrowStrength; // 0x01F8 + CAnimGraph2ParamOptionalRef< float32 > m_flAttackVariation; // 0x0210 + CAnimGraph2ParamOptionalRef< float32 > m_inspectVariation; // 0x0228 + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_inspectExtraInfo; // 0x0240 + CAnimGraph2ParamOptionalRef< CGlobalSymbol > m_reloadStage; // 0x0258 +}; +class CEffectData // client +{ + VectorWS m_vOrigin; // 0x0008 + VectorWS m_vStart; // 0x0014 + Vector m_vNormal; // 0x0020 + QAngle m_vAngles; // 0x002C + CEntityHandle m_hEntity; // 0x0038 + CEntityHandle m_hOtherEntity; // 0x003C + float32 m_flScale; // 0x0040 + float32 m_flMagnitude; // 0x0044 + float32 m_flRadius; // 0x0048 + CUtlStringToken m_nSurfaceProp; // 0x004C + CWeakHandle< InfoForResourceTypeIParticleSystemDefinition > m_nEffectIndex; // 0x0050 + uint32 m_nDamageType; // 0x0058 + uint8 m_nPenetrate; // 0x005C + uint16 m_nMaterial; // 0x005E + int16 m_nHitBox; // 0x0060 + uint8 m_nColor; // 0x0062 + uint8 m_fFlags; // 0x0063 + AttachmentHandle_t m_nAttachmentIndex; // 0x0064 + CUtlStringToken m_nAttachmentName; // 0x0068 + uint16 m_iEffectName; // 0x006C + uint8 m_nExplosionType; // 0x006E +}; +class C_ParticleSystem : public C_BaseModelEntity // client +{ + char[512] m_szSnapshotFileName; // 0x0E88 + bool m_bActive; // 0x1088 + bool m_bFrozen; // 0x1089 + float32 m_flFreezeTransitionDuration; // 0x108C + int32 m_nStopType; // 0x1090 + bool m_bAnimateDuringGameplayPause; // 0x1094 + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_iEffectIndex; // 0x1098 + GameTime_t m_flStartTime; // 0x10A0 + float32 m_flPreSimTime; // 0x10A4 + Vector[4] m_vServerControlPoints; // 0x10A8 + uint8[4] m_iServerControlPointAssignments; // 0x10D8 + CHandle< C_BaseEntity >[64] m_hControlPointEnts; // 0x10DC + bool m_bNoSave; // 0x11DC + bool m_bNoFreeze; // 0x11DD + bool m_bNoRamp; // 0x11DE + bool m_bStartActive; // 0x11DF + CUtlSymbolLarge m_iszEffectName; // 0x11E0 + CUtlSymbolLarge[64] m_iszControlPointNames; // 0x11E8 + int32 m_nDataCP; // 0x13E8 + Vector m_vecDataCPValue; // 0x13EC + int32 m_nTintCP; // 0x13F8 + Color m_clrTint; // 0x13FC + bool m_bOldActive; // 0x1420 + bool m_bOldFrozen; // 0x1421 +}; +class CPulseCell_Outflow_CycleShuffled : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class C_WeaponSCAR20 : public C_CSWeaponBaseGun // client +{ +}; +class C_BaseFlex : public CBaseAnimGraph // client +{ + C_NetworkUtlVectorBase< float32 > m_flexWeight; // 0x1170 + VectorWS m_vLookTargetPosition; // 0x1188 + int32 m_nLastFlexUpdateFrameCount; // 0x1270 + Vector m_CachedViewTarget; // 0x1274 + SceneEventId_t m_nNextSceneEventId; // 0x1280 + AttachmentHandle_t m_iMouthAttachment; // 0x1284 + AttachmentHandle_t m_iEyeAttachment; // 0x1285 + bool m_bResetFlexWeightsOnModelChange; // 0x1286 + int32 m_nEyeOcclusionRendererBone; // 0x12A0 + matrix3x4_t m_mEyeOcclusionRendererCameraToBoneTransform; // 0x12A4 + Vector m_vEyeOcclusionRendererHalfExtent; // 0x12D4 + C_BaseFlex::Emphasized_Phoneme[3] m_PhonemeClasses; // 0x12F0 +}; +class C_FuncMover : public C_BaseToggle // client +{ +}; +class CCSPlayerController_InventoryServices::NetworkedLoadoutSlot_t // client +{ + C_EconItemView* pItem; // 0x0000 + uint16 team; // 0x0008 + uint16 slot; // 0x000A +}; +class CLightComponent : public CEntityComponent // client +{ + CNetworkVarChainer __m_pChainEntity; // 0x0038 + Color m_Color; // 0x0075 + Color m_SecondaryColor; // 0x0079 + float32 m_flBrightness; // 0x0080 + float32 m_flBrightnessScale; // 0x0084 + float32 m_flBrightnessMult; // 0x0088 + float32 m_flRange; // 0x008C + float32 m_flFalloff; // 0x0090 + float32 m_flAttenuation0; // 0x0094 + float32 m_flAttenuation1; // 0x0098 + float32 m_flAttenuation2; // 0x009C + float32 m_flTheta; // 0x00A0 + float32 m_flPhi; // 0x00A4 + CStrongHandle< InfoForResourceTypeCTextureBase > m_hLightCookie; // 0x00A8 + int32 m_nCascades; // 0x00B0 + int32 m_nCastShadows; // 0x00B4 + int32 m_nShadowWidth; // 0x00B8 + int32 m_nShadowHeight; // 0x00BC + bool m_bRenderDiffuse; // 0x00C0 + int32 m_nRenderSpecular; // 0x00C4 + bool m_bRenderTransmissive; // 0x00C8 + float32 m_flOrthoLightWidth; // 0x00CC + float32 m_flOrthoLightHeight; // 0x00D0 + int32 m_nStyle; // 0x00D4 + CUtlString m_Pattern; // 0x00D8 + int32 m_nCascadeRenderStaticObjects; // 0x00E0 + float32 m_flShadowCascadeCrossFade; // 0x00E4 + float32 m_flShadowCascadeDistanceFade; // 0x00E8 + float32 m_flShadowCascadeDistance0; // 0x00EC + float32 m_flShadowCascadeDistance1; // 0x00F0 + float32 m_flShadowCascadeDistance2; // 0x00F4 + float32 m_flShadowCascadeDistance3; // 0x00F8 + int32 m_nShadowCascadeResolution0; // 0x00FC + int32 m_nShadowCascadeResolution1; // 0x0100 + int32 m_nShadowCascadeResolution2; // 0x0104 + int32 m_nShadowCascadeResolution3; // 0x0108 + bool m_bUsesBakedShadowing; // 0x010C + int32 m_nShadowPriority; // 0x0110 + int32 m_nBakedShadowIndex; // 0x0114 + int32 m_nLightPathUniqueId; // 0x0118 + int32 m_nLightMapUniqueId; // 0x011C + bool m_bRenderToCubemaps; // 0x0120 + bool m_bAllowSSTGeneration; // 0x0121 + int32 m_nDirectLight; // 0x0124 + int32 m_nIndirectLight; // 0x0128 + bool m_bDynamicBounce; // 0x012C + float32 m_flFadeMinDist; // 0x0130 + float32 m_flFadeMaxDist; // 0x0134 + float32 m_flShadowFadeMinDist; // 0x0138 + float32 m_flShadowFadeMaxDist; // 0x013C + bool m_bEnabled; // 0x0140 + bool m_bFlicker; // 0x0141 + bool m_bPrecomputedFieldsValid; // 0x0142 + Vector m_vPrecomputedBoundsMins; // 0x0144 + Vector m_vPrecomputedBoundsMaxs; // 0x0150 + Vector m_vPrecomputedOBBOrigin; // 0x015C + QAngle m_vPrecomputedOBBAngles; // 0x0168 + Vector m_vPrecomputedOBBExtent; // 0x0174 + float32 m_flPrecomputedMaxRange; // 0x0180 + int32 m_nFogLightingMode; // 0x0184 + float32 m_flFogContributionStength; // 0x0188 + float32 m_flNearClipPlane; // 0x018C + Color m_SkyColor; // 0x0190 + float32 m_flSkyIntensity; // 0x0194 + Color m_SkyAmbientBounce; // 0x0198 + bool m_bUseSecondaryColor; // 0x019C + bool m_bMixedShadows; // 0x019D + GameTime_t m_flLightStyleStartTime; // 0x01A0 + float32 m_flCapsuleLength; // 0x01A4 + float32 m_flMinRoughness; // 0x01A8 +}; +class C_DecoyGrenade : public C_BaseCSGrenade // client +{ +}; +class C_WaterBullet : public CBaseAnimGraph // client +{ +}; +class CCSPlayer_ActionTrackingServices : public CPlayerPawnComponent // client +{ + CHandle< C_BasePlayerWeapon > m_hLastWeaponBeforeC4AutoSwitch; // 0x0048 + bool m_bIsRescuing; // 0x004C + WeaponPurchaseTracker_t m_weaponPurchasesThisMatch; // 0x0050 + WeaponPurchaseTracker_t m_weaponPurchasesThisRound; // 0x00C0 +}; +class C_EnvCubemap : public C_BaseEntity // client +{ + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hCubemapTexture; // 0x0688 + bool m_Entity_bCustomCubemapTexture; // 0x0690 + float32 m_Entity_flInfluenceRadius; // 0x0694 + Vector m_Entity_vBoxProjectMins; // 0x0698 + Vector m_Entity_vBoxProjectMaxs; // 0x06A4 + bool m_Entity_bMoveable; // 0x06B0 + int32 m_Entity_nHandshake; // 0x06B4 + int32 m_Entity_nEnvCubeMapArrayIndex; // 0x06B8 + int32 m_Entity_nPriority; // 0x06BC + float32 m_Entity_flEdgeFadeDist; // 0x06C0 + Vector m_Entity_vEdgeFadeDists; // 0x06C4 + float32 m_Entity_flDiffuseScale; // 0x06D0 + bool m_Entity_bStartDisabled; // 0x06D4 + bool m_Entity_bDefaultEnvMap; // 0x06D5 + bool m_Entity_bDefaultSpecEnvMap; // 0x06D6 + bool m_Entity_bIndoorCubeMap; // 0x06D7 + bool m_Entity_bCopyDiffuseFromDefaultCubemap; // 0x06D8 + bool m_Entity_bEnabled; // 0x06E8 +}; +class CCSObserver_MovementServices : public CPlayer_MovementServices // client +{ +}; +class CBodyComponent : public CEntityComponent // client +{ + CGameSceneNode* m_pSceneNode; // 0x0008 + CNetworkVarChainer __m_pChainEntity; // 0x0048 +}; +class CPulseCell_Inflow_Method : public CPulseCell_Inflow_BaseEntrypoint // pulse_runtime_lib +{ + PulseSymbol_t m_MethodName; // 0x0080 + CUtlString m_Description; // 0x0090 + bool m_bIsPublic; // 0x0098 + CPulseValueFullType m_ReturnType; // 0x00A0 + CUtlLeanVector< CPulseRuntimeMethodArg > m_Args; // 0x00B8 +}; +class C_BaseCombatCharacter : public C_BaseFlex // client +{ + C_NetworkUtlVectorBase< CHandle< C_EconWearable > > m_hMyWearables; // 0x1350 + AttachmentHandle_t m_leftFootAttachment; // 0x1368 + AttachmentHandle_t m_rightFootAttachment; // 0x1369 + C_BaseCombatCharacter::WaterWakeMode_t m_nWaterWakeMode; // 0x136C + float32 m_flWaterWorldZ; // 0x1370 + float32 m_flWaterNextTraceTime; // 0x1374 +}; +class CGlowProperty // client +{ + Vector m_fGlowColor; // 0x0008 + int32 m_iGlowType; // 0x0030 + int32 m_iGlowTeam; // 0x0034 + int32 m_nGlowRange; // 0x0038 + int32 m_nGlowRangeMin; // 0x003C + Color m_glowColorOverride; // 0x0040 + bool m_bFlashing; // 0x0044 + float32 m_flGlowTime; // 0x0048 + float32 m_flGlowStartTime; // 0x004C + bool m_bEligibleForScreenHighlight; // 0x0050 + bool m_bGlowing; // 0x0051 +}; +class C_PointClientUIDialog : public C_BaseClientUIEntity // client +{ + CHandle< C_BaseEntity > m_hActivator; // 0x0EB8 + bool m_bStartEnabled; // 0x0EBC +}; +class CPulseCell_BaseValue : public CPulseCell_Base // pulse_runtime_lib +{ +}; +class C_WeaponHKP2000 : public C_CSWeaponBaseGun // client +{ +}; +class C_FootstepControl : public C_BaseTrigger // client +{ + CUtlSymbolLarge m_source; // 0x0F58 + CUtlSymbolLarge m_destination; // 0x0F60 +}; +class CCitadelSoundOpvarSetOBB : public C_BaseEntity // client +{ + CUtlSymbolLarge m_iszStackName; // 0x0620 + CUtlSymbolLarge m_iszOperatorName; // 0x0628 + CUtlSymbolLarge m_iszOpvarName; // 0x0630 + Vector m_vDistanceInnerMins; // 0x0638 + Vector m_vDistanceInnerMaxs; // 0x0644 + Vector m_vDistanceOuterMins; // 0x0650 + Vector m_vDistanceOuterMaxs; // 0x065C + int32 m_nAABBDirection; // 0x0668 +}; +class C_CSGO_EndOfMatchLineupStart : public C_CSGO_EndOfMatchLineupEndpoint // client +{ +}; +class CPlayer_WaterServices : public CPlayerPawnComponent // client +{ +}; +class CPulseCell_BooleanSwitchState : public CPulseCell_BaseState // pulse_runtime_lib +{ + PulseObservableBoolExpression_t m_Condition; // 0x0048 + CPulse_OutflowConnection m_SubGraph; // 0x00C0 + CPulse_OutflowConnection m_WhenTrue; // 0x0108 + CPulse_OutflowConnection m_WhenFalse; // 0x0150 +}; +class CDamageRecord // client +{ + CHandle< C_CSPlayerPawn > m_PlayerDamager; // 0x0030 + CHandle< C_CSPlayerPawn > m_PlayerRecipient; // 0x0034 + CHandle< CCSPlayerController > m_hPlayerControllerDamager; // 0x0038 + CHandle< CCSPlayerController > m_hPlayerControllerRecipient; // 0x003C + CUtlString m_szPlayerDamagerName; // 0x0040 + CUtlString m_szPlayerRecipientName; // 0x0048 + uint64 m_DamagerXuid; // 0x0050 + uint64 m_RecipientXuid; // 0x0058 + float32 m_flBulletsDamage; // 0x0060 + float32 m_flDamage; // 0x0064 + float32 m_flActualHealthRemoved; // 0x0068 + int32 m_iNumHits; // 0x006C + int32 m_iLastBulletUpdate; // 0x0070 + bool m_bIsOtherEnemy; // 0x0074 + EKillTypes_t m_killType; // 0x0075 +}; +class VPhysicsCollisionAttribute_t // client +{ + uint64 m_nInteractsAs; // 0x0008 + uint64 m_nInteractsWith; // 0x0010 + uint64 m_nInteractsExclude; // 0x0018 + uint32 m_nEntityId; // 0x0020 + uint32 m_nOwnerId; // 0x0024 + uint16 m_nHierarchyId; // 0x0028 + uint16 m_nDetailLayerMask; // 0x002A + uint8 m_nDetailLayerMaskType; // 0x002C + uint8 m_nTargetDetailLayer; // 0x002D + uint8 m_nCollisionGroup; // 0x002E + uint8 m_nCollisionFunctionMask; // 0x002F +}; +class C_DynamicPropAlias_dynamic_prop : public C_DynamicProp // client +{ +}; +class CEnvSoundscapeProxyAlias_snd_soundscape_proxy : public CEnvSoundscapeProxy // client +{ +}; +class C_OmniLight : public C_BarnLight // client +{ + float32 m_flInnerAngle; // 0x1198 + float32 m_flOuterAngle; // 0x119C + bool m_bShowLight; // 0x11A0 +}; +class C_SceneEntity : public C_PointEntity // client +{ + bool m_bIsPlayingBack; // 0x0610 + bool m_bPaused; // 0x0611 + bool m_bMultiplayer; // 0x0612 + bool m_bAutogenerated; // 0x0613 + float32 m_flForceClientTime; // 0x0614 + uint16 m_nSceneStringIndex; // 0x0618 + bool m_bClientOnly; // 0x061A + CHandle< C_BaseFlex > m_hOwner; // 0x061C + C_NetworkUtlVectorBase< CHandle< C_BaseFlex > > m_hActorList; // 0x0620 + bool m_bWasPlaying; // 0x0638 + CUtlVector< C_SceneEntity::QueuedEvents_t > m_QueuedEvents; // 0x0648 + float32 m_flCurrentTime; // 0x0660 +}; +class CPulseCell_Inflow_Yield : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + CPulse_ResumePoint m_UnyieldResume; // 0x0048 +}; +class CPulseMathlib // pulse_runtime_lib +{ +}; +class C_NametagModule : public C_CS2WeaponModuleBase // client +{ + CUtlString m_strNametagString; // 0x1170 +}; +class C_EconEntity : public C_BaseFlex // client +{ + float32 m_flFlexDelayTime; // 0x1360 + float32* m_flFlexDelayedWeight; // 0x1368 + bool m_bAttributesInitialized; // 0x1370 + C_AttributeContainer m_AttributeManager; // 0x1378 + uint32 m_OriginalOwnerXuidLow; // 0x1848 + uint32 m_OriginalOwnerXuidHigh; // 0x184C + int32 m_nFallbackPaintKit; // 0x1850 + int32 m_nFallbackSeed; // 0x1854 + float32 m_flFallbackWear; // 0x1858 + int32 m_nFallbackStatTrak; // 0x185C + bool m_bClientside; // 0x1860 + bool m_bParticleSystemsCreated; // 0x1861 + CUtlVector< int32 > m_vecAttachedParticles; // 0x1868 + CHandle< CBaseAnimGraph > m_hViewmodelAttachment; // 0x1880 + int32 m_iOldTeam; // 0x1884 + bool m_bAttachmentDirty; // 0x1888 + int32 m_nUnloadedModelIndex; // 0x188C + int32 m_iNumOwnerValidationRetries; // 0x1890 + CHandle< C_BaseEntity > m_hOldProvidee; // 0x18A0 + CUtlVector< C_EconEntity::AttachedModelData_t > m_vecAttachedModels; // 0x18A8 +}; +class CPlayer_UseServices : public CPlayerPawnComponent // client +{ +}; +class C_PointValueRemapper : public C_BaseEntity // client +{ + bool m_bDisabled; // 0x0608 + bool m_bDisabledOld; // 0x0609 + bool m_bUpdateOnClient; // 0x060A + ValueRemapperInputType_t m_nInputType; // 0x060C + CHandle< C_BaseEntity > m_hRemapLineStart; // 0x0610 + CHandle< C_BaseEntity > m_hRemapLineEnd; // 0x0614 + float32 m_flMaximumChangePerSecond; // 0x0618 + float32 m_flDisengageDistance; // 0x061C + float32 m_flEngageDistance; // 0x0620 + bool m_bRequiresUseKey; // 0x0624 + ValueRemapperOutputType_t m_nOutputType; // 0x0628 + C_NetworkUtlVectorBase< CHandle< C_BaseEntity > > m_hOutputEntities; // 0x0630 + ValueRemapperHapticsType_t m_nHapticsType; // 0x0648 + ValueRemapperMomentumType_t m_nMomentumType; // 0x064C + float32 m_flMomentumModifier; // 0x0650 + float32 m_flSnapValue; // 0x0654 + float32 m_flCurrentMomentum; // 0x0658 + ValueRemapperRatchetType_t m_nRatchetType; // 0x065C + float32 m_flRatchetOffset; // 0x0660 + float32 m_flInputOffset; // 0x0664 + bool m_bEngaged; // 0x0668 + bool m_bFirstUpdate; // 0x0669 + float32 m_flPreviousValue; // 0x066C + GameTime_t m_flPreviousUpdateTickTime; // 0x0670 + Vector m_vecPreviousTestPoint; // 0x0674 +}; +class CGameSceneNodeHandle // client +{ + CEntityHandle m_hOwner; // 0x0008 + CUtlStringToken m_name; // 0x000C +}; +class CPulseCell_Unknown : public CPulseCell_Base // pulse_runtime_lib +{ + KeyValues3 m_UnknownKeys; // 0x0048 +}; +class C_WeaponMP7 : public C_CSWeaponBaseGun // client +{ +}; +class CSPerRoundStats_t // client +{ + int32 m_iKills; // 0x0030 + int32 m_iDeaths; // 0x0034 + int32 m_iAssists; // 0x0038 + int32 m_iDamage; // 0x003C + int32 m_iEquipmentValue; // 0x0040 + int32 m_iMoneySaved; // 0x0044 + int32 m_iKillReward; // 0x0048 + int32 m_iLiveTime; // 0x004C + int32 m_iHeadShotKills; // 0x0050 + int32 m_iObjective; // 0x0054 + int32 m_iCashEarned; // 0x0058 + int32 m_iUtilityDamage; // 0x005C + int32 m_iEnemiesFlashed; // 0x0060 +}; +class CPulseCell_Outflow_CycleRandom : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + CUtlVector< CPulse_OutflowConnection > m_Outputs; // 0x0048 +}; +class CPulseCell_Step_PublicOutput : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseRuntimeOutputIndex_t m_OutputIndex; // 0x0048 +}; +class C_CS2HudModelBase : public C_LateUpdatedAnimating // client +{ +}; +class C_CSGameRules : public C_TeamplayRules // client +{ + bool m_bFreezePeriod; // 0x0040 + bool m_bWarmupPeriod; // 0x0041 + GameTime_t m_fWarmupPeriodEnd; // 0x0044 + GameTime_t m_fWarmupPeriodStart; // 0x0048 + bool m_bTerroristTimeOutActive; // 0x004C + bool m_bCTTimeOutActive; // 0x004D + float32 m_flTerroristTimeOutRemaining; // 0x0050 + float32 m_flCTTimeOutRemaining; // 0x0054 + int32 m_nTerroristTimeOuts; // 0x0058 + int32 m_nCTTimeOuts; // 0x005C + bool m_bTechnicalTimeOut; // 0x0060 + bool m_bMatchWaitingForResume; // 0x0061 + int32 m_iFreezeTime; // 0x0064 + int32 m_iRoundTime; // 0x0068 + float32 m_fMatchStartTime; // 0x006C + GameTime_t m_fRoundStartTime; // 0x0070 + GameTime_t m_flRestartRoundTime; // 0x0074 + bool m_bGameRestart; // 0x0078 + float32 m_flGameStartTime; // 0x007C + float32 m_timeUntilNextPhaseStarts; // 0x0080 + int32 m_gamePhase; // 0x0084 + int32 m_totalRoundsPlayed; // 0x0088 + int32 m_nRoundsPlayedThisPhase; // 0x008C + int32 m_nOvertimePlaying; // 0x0090 + int32 m_iHostagesRemaining; // 0x0094 + bool m_bAnyHostageReached; // 0x0098 + bool m_bMapHasBombTarget; // 0x0099 + bool m_bMapHasRescueZone; // 0x009A + bool m_bMapHasBuyZone; // 0x009B + bool m_bIsQueuedMatchmaking; // 0x009C + int32 m_nQueuedMatchmakingMode; // 0x00A0 + bool m_bIsValveDS; // 0x00A4 + bool m_bLogoMap; // 0x00A5 + bool m_bPlayAllStepSoundsOnServer; // 0x00A6 + int32 m_iSpectatorSlotCount; // 0x00A8 + int32 m_MatchDevice; // 0x00AC + bool m_bHasMatchStarted; // 0x00B0 + int32 m_nNextMapInMapgroup; // 0x00B4 + char[512] m_szTournamentEventName; // 0x00B8 + char[512] m_szTournamentEventStage; // 0x02B8 + char[512] m_szMatchStatTxt; // 0x04B8 + char[512] m_szTournamentPredictionsTxt; // 0x06B8 + int32 m_nTournamentPredictionsPct; // 0x08B8 + GameTime_t m_flCMMItemDropRevealStartTime; // 0x08BC + GameTime_t m_flCMMItemDropRevealEndTime; // 0x08C0 + bool m_bIsDroppingItems; // 0x08C4 + bool m_bIsQuestEligible; // 0x08C5 + bool m_bIsHltvActive; // 0x08C6 + bool m_bBombPlanted; // 0x08C7 + uint16[100] m_arrProhibitedItemIndices; // 0x08C8 + uint32[4] m_arrTournamentActiveCasterAccounts; // 0x0990 + int32 m_numBestOfMaps; // 0x09A0 + int32 m_nHalloweenMaskListSeed; // 0x09A4 + bool m_bBombDropped; // 0x09A8 + int32 m_iRoundWinStatus; // 0x09AC + int32 m_eRoundWinReason; // 0x09B0 + bool m_bTCantBuy; // 0x09B4 + bool m_bCTCantBuy; // 0x09B5 + int32[30] m_iMatchStats_RoundResults; // 0x09B8 + int32[30] m_iMatchStats_PlayersAlive_CT; // 0x0A30 + int32[30] m_iMatchStats_PlayersAlive_T; // 0x0AA8 + float32[32] m_TeamRespawnWaveTimes; // 0x0B20 + GameTime_t[32] m_flNextRespawnWave; // 0x0BA0 + Vector m_vMinimapMins; // 0x0C20 + Vector m_vMinimapMaxs; // 0x0C2C + float32[8] m_MinimapVerticalSectionHeights; // 0x0C38 + uint64 m_ullLocalMatchID; // 0x0C58 + int32[10] m_nEndMatchMapGroupVoteTypes; // 0x0C60 + int32[10] m_nEndMatchMapGroupVoteOptions; // 0x0C88 + int32 m_nEndMatchMapVoteWinner; // 0x0CB0 + int32 m_iNumConsecutiveCTLoses; // 0x0CB4 + int32 m_iNumConsecutiveTerroristLoses; // 0x0CB8 + int32 m_nMatchAbortedEarlyReason; // 0x0D78 + bool m_bHasTriggeredRoundStartMusic; // 0x0D7C + bool m_bSwitchingTeamsAtRoundReset; // 0x0D7D + CCSGameModeRules* m_pGameModeRules; // 0x0D98 + C_RetakeGameRules m_RetakeRules; // 0x0DA0 + uint8 m_nMatchEndCount; // 0x0EF8 + int32 m_nTTeamIntroVariant; // 0x0EFC + int32 m_nCTTeamIntroVariant; // 0x0F00 + bool m_bTeamIntroPeriod; // 0x0F04 + int32 m_iRoundEndWinnerTeam; // 0x0F08 + int32 m_eRoundEndReason; // 0x0F0C + bool m_bRoundEndShowTimerDefend; // 0x0F10 + int32 m_iRoundEndTimerTime; // 0x0F14 + CUtlString m_sRoundEndFunFactToken; // 0x0F18 + CPlayerSlot m_iRoundEndFunFactPlayerSlot; // 0x0F20 + int32 m_iRoundEndFunFactData1; // 0x0F24 + int32 m_iRoundEndFunFactData2; // 0x0F28 + int32 m_iRoundEndFunFactData3; // 0x0F2C + CUtlString m_sRoundEndMessage; // 0x0F30 + int32 m_iRoundEndPlayerCount; // 0x0F38 + bool m_bRoundEndNoMusic; // 0x0F3C + int32 m_iRoundEndLegacy; // 0x0F40 + uint8 m_nRoundEndCount; // 0x0F44 + int32 m_iRoundStartRoundNumber; // 0x0F48 + uint8 m_nRoundStartCount; // 0x0F4C + float64 m_flLastPerfSampleTime; // 0x4F58 +}; +class CGrenadeTracer : public C_BaseModelEntity // client +{ + float32 m_flTracerDuration; // 0x0EA0 + GrenadeType_t m_nType; // 0x0EA4 +}; +class CCSGameModeRules_Noop : public CCSGameModeRules // client +{ +}; +class CPulse_BlackboardReference // pulse_runtime_lib +{ + CStrongHandle< InfoForResourceTypeIPulseGraphDef > m_hBlackboardResource; // 0x0000 + PulseSymbol_t m_BlackboardResource; // 0x0008 + PulseDocNodeID_t m_nNodeID; // 0x0018 + CGlobalSymbol m_NodeName; // 0x0020 +}; +class C_BaseCSGrenadeProjectile : public C_BaseGrenade // client +{ + Vector m_vInitialPosition; // 0x13A0 + Vector m_vInitialVelocity; // 0x13AC + int32 m_nBounces; // 0x13B8 + CStrongHandle< InfoForResourceTypeIParticleSystemDefinition > m_nExplodeEffectIndex; // 0x13C0 + int32 m_nExplodeEffectTickBegin; // 0x13C8 + Vector m_vecExplodeEffectOrigin; // 0x13CC + GameTime_t m_flSpawnTime; // 0x13D8 + Vector vecLastTrailLinePos; // 0x13DC + GameTime_t flNextTrailLineTime; // 0x13E8 + bool m_bExplodeEffectBegan; // 0x13EC + bool m_bCanCreateGrenadeTrail; // 0x13ED + ParticleIndex_t m_nSnapshotTrajectoryEffectIndex; // 0x13F0 + CStrongHandle< InfoForResourceTypeIParticleSnapshot > m_hSnapshotTrajectoryParticleSnapshot; // 0x13F8 + CUtlVector< Vector > m_arrTrajectoryTrailPoints; // 0x1400 + CUtlVector< float32 > m_arrTrajectoryTrailPointCreationTimes; // 0x1418 + float32 m_flTrajectoryTrailEffectCreationTime; // 0x1430 +}; +class C_GradientFog : public C_BaseEntity // client +{ + CStrongHandle< InfoForResourceTypeCTextureBase > m_hGradientFogTexture; // 0x0608 + float32 m_flFogStartDistance; // 0x0610 + float32 m_flFogEndDistance; // 0x0614 + bool m_bHeightFogEnabled; // 0x0618 + float32 m_flFogStartHeight; // 0x061C + float32 m_flFogEndHeight; // 0x0620 + float32 m_flFarZ; // 0x0624 + float32 m_flFogMaxOpacity; // 0x0628 + float32 m_flFogFalloffExponent; // 0x062C + float32 m_flFogVerticalExponent; // 0x0630 + Color m_fogColor; // 0x0634 + float32 m_flFogStrength; // 0x0638 + float32 m_flFadeTime; // 0x063C + bool m_bStartDisabled; // 0x0640 + bool m_bIsEnabled; // 0x0641 + bool m_bGradientFogNeedsTextures; // 0x0642 +}; +class CCSPlayerController_InGameMoneyServices : public CPlayerControllerComponent // client +{ + int32 m_iAccount; // 0x0040 + int32 m_iStartAccount; // 0x0044 + int32 m_iTotalCashSpent; // 0x0048 + int32 m_iCashSpentThisRound; // 0x004C +}; +class C_HEGrenadeProjectile : public C_BaseCSGrenadeProjectile // client +{ +}; +class CAnimGraphNetworkedVariables // client +{ + C_NetworkUtlVectorBase< uint32 > m_PredNetBoolVariables; // 0x0008 + C_NetworkUtlVectorBase< uint8 > m_PredNetByteVariables; // 0x0020 + C_NetworkUtlVectorBase< uint16 > m_PredNetUInt16Variables; // 0x0038 + C_NetworkUtlVectorBase< int32 > m_PredNetIntVariables; // 0x0050 + C_NetworkUtlVectorBase< uint32 > m_PredNetUInt32Variables; // 0x0068 + C_NetworkUtlVectorBase< uint64 > m_PredNetUInt64Variables; // 0x0080 + C_NetworkUtlVectorBase< float32 > m_PredNetFloatVariables; // 0x0098 + C_NetworkUtlVectorBase< Vector > m_PredNetVectorVariables; // 0x00B0 + C_NetworkUtlVectorBase< Quaternion > m_PredNetQuaternionVariables; // 0x00C8 + C_NetworkUtlVectorBase< CGlobalSymbol > m_PredNetGlobalSymbolVariables; // 0x00E0 + C_NetworkUtlVectorBase< uint32 > m_OwnerOnlyPredNetBoolVariables; // 0x00F8 + C_NetworkUtlVectorBase< uint8 > m_OwnerOnlyPredNetByteVariables; // 0x0110 + C_NetworkUtlVectorBase< uint16 > m_OwnerOnlyPredNetUInt16Variables; // 0x0128 + C_NetworkUtlVectorBase< int32 > m_OwnerOnlyPredNetIntVariables; // 0x0140 + C_NetworkUtlVectorBase< uint32 > m_OwnerOnlyPredNetUInt32Variables; // 0x0158 + C_NetworkUtlVectorBase< uint64 > m_OwnerOnlyPredNetUInt64Variables; // 0x0170 + C_NetworkUtlVectorBase< float32 > m_OwnerOnlyPredNetFloatVariables; // 0x0188 + C_NetworkUtlVectorBase< Vector > m_OwnerOnlyPredNetVectorVariables; // 0x01A0 + C_NetworkUtlVectorBase< Quaternion > m_OwnerOnlyPredNetQuaternionVariables; // 0x01B8 + C_NetworkUtlVectorBase< CGlobalSymbol > m_OwnerOnlyPredNetGlobalSymbolVariables; // 0x01D0 + int32 m_nBoolVariablesCount; // 0x01E8 + int32 m_nOwnerOnlyBoolVariablesCount; // 0x01EC + int32 m_nRandomSeedOffset; // 0x01F0 + float32 m_flLastTeleportTime; // 0x01F4 +}; +class CFilterModel : public CBaseFilter // client +{ + CUtlSymbolLarge m_iFilterModel; // 0x0640 +}; +class C_SoundAreaEntityOrientedBox : public C_SoundAreaEntityBase // client +{ + Vector m_vMin; // 0x0630 + Vector m_vMax; // 0x063C +}; +class C_SoundOpvarSetPointEntity : public C_SoundOpvarSetPointBase // client +{ +}; +class CPulseGameBlackboard : public C_BaseEntity // client +{ + CUtlString m_strGraphName; // 0x0610 + CUtlString m_strStateBlob; // 0x0618 +}; +class CPulseCell_Value_RandomInt : public CPulseCell_BaseValue // pulse_runtime_lib +{ +}; +class C_CSWeaponBaseShotgun : public C_CSWeaponBase // client +{ +}; +class C_RagdollPropAttached : public C_RagdollProp // client +{ + uint32 m_boneIndexAttached; // 0x11F8 + uint32 m_ragdollAttachedObjectIndex; // 0x11FC + Vector m_attachmentPointBoneSpace; // 0x1200 + Vector m_attachmentPointRagdollSpace; // 0x120C + Vector m_vecOffset; // 0x1218 + float32 m_parentTime; // 0x1224 + bool m_bHasParent; // 0x1228 +}; +class C_ModelPointEntity : public C_BaseModelEntity // client +{ +}; +class C_CSGO_PreviewPlayer : public C_CSPlayerPawn // client +{ + CGlobalSymbol m_animgraphCharacterModeString; // 0x3EF0 + float32 m_flInitialModelScale; // 0x3EF8 +}; +class C_RectLight : public C_BarnLight // client +{ + bool m_bShowLight; // 0x1198 +}; +class CPathSimple : public C_BaseEntity // client +{ + CPathQueryComponent m_CPathQueryComponent; // 0x0610 + CUtlString m_pathString; // 0x0700 + bool m_bClosedLoop; // 0x0708 +}; +class C_FuncTrackTrain : public C_BaseModelEntity // client +{ + int32 m_nLongAxis; // 0x0E88 + float32 m_flRadius; // 0x0E8C + float32 m_flLineLength; // 0x0E90 +}; +class C_EconWearable : public C_EconEntity // client +{ + int32 m_nForceSkin; // 0x18C0 + bool m_bAlwaysAllow; // 0x18C4 +}; +class C_EnvDecal : public C_BaseModelEntity // client +{ + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hDecalMaterial; // 0x0E88 + float32 m_flWidth; // 0x0E90 + float32 m_flHeight; // 0x0E94 + float32 m_flDepth; // 0x0E98 + uint32 m_nRenderOrder; // 0x0E9C + bool m_bProjectOnWorld; // 0x0EA0 + bool m_bProjectOnCharacters; // 0x0EA1 + bool m_bProjectOnWater; // 0x0EA2 + float32 m_flDepthSortBias; // 0x0EA4 +}; +class EntitySpottedState_t // client +{ + bool m_bSpotted; // 0x0008 + uint32[2] m_bSpottedByMask; // 0x000C +}; +class fogparams_t // client +{ + Vector dirPrimary; // 0x0008 + Color colorPrimary; // 0x0014 + Color colorSecondary; // 0x0018 + Color colorPrimaryLerpTo; // 0x001C + Color colorSecondaryLerpTo; // 0x0020 + float32 start; // 0x0024 + float32 end; // 0x0028 + float32 farz; // 0x002C + float32 maxdensity; // 0x0030 + float32 exponent; // 0x0034 + float32 HDRColorScale; // 0x0038 + float32 skyboxFogFactor; // 0x003C + float32 skyboxFogFactorLerpTo; // 0x0040 + float32 startLerpTo; // 0x0044 + float32 endLerpTo; // 0x0048 + float32 maxdensityLerpTo; // 0x004C + GameTime_t lerptime; // 0x0050 + float32 duration; // 0x0054 + float32 blendtobackground; // 0x0058 + float32 scattering; // 0x005C + float32 locallightscale; // 0x0060 + bool enable; // 0x0064 + bool blend; // 0x0065 + bool m_bPadding2; // 0x0066 + bool m_bPadding; // 0x0067 +}; +class C_WeaponM4A1 : public C_CSWeaponBaseGun // client +{ +}; +class C_Item : public C_EconEntity // client +{ + char[256] m_pReticleHintTextName; // 0x18C0 +}; +class C_CSPetPlacement : public C_BaseEntity // client +{ +}; +class C_Beam : public C_BaseModelEntity // client +{ + float32 m_flFrameRate; // 0x0E88 + float32 m_flHDRColorScale; // 0x0E8C + GameTime_t m_flFireTime; // 0x0E90 + float32 m_flDamage; // 0x0E94 + uint8 m_nNumBeamEnts; // 0x0E98 + int32 m_queryHandleHalo; // 0x0E9C + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hBaseMaterial; // 0x0EC0 + CStrongHandle< InfoForResourceTypeIMaterial2 > m_nHaloIndex; // 0x0EC8 + BeamType_t m_nBeamType; // 0x0ED0 + uint32 m_nBeamFlags; // 0x0ED4 + CHandle< C_BaseEntity >[10] m_hAttachEntity; // 0x0ED8 + AttachmentHandle_t[10] m_nAttachIndex; // 0x0F00 + float32 m_fWidth; // 0x0F0C + float32 m_fEndWidth; // 0x0F10 + float32 m_fFadeLength; // 0x0F14 + float32 m_fHaloScale; // 0x0F18 + float32 m_fAmplitude; // 0x0F1C + float32 m_fStartFrame; // 0x0F20 + float32 m_fSpeed; // 0x0F24 + float32 m_flFrame; // 0x0F28 + BeamClipStyle_t m_nClipStyle; // 0x0F2C + bool m_bTurnedOff; // 0x0F30 + VectorWS m_vecEndPos; // 0x0F34 + CHandle< C_BaseEntity > m_hEndEntity; // 0x0F40 +}; +class C_EnvLightProbeVolume : public C_BaseEntity // client +{ + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_AmbientCube; // 0x1600 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SDF; // 0x1608 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_DC; // 0x1610 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_R; // 0x1618 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_G; // 0x1620 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeTexture_SH2_B; // 0x1628 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeDirectLightIndicesTexture; // 0x1630 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeDirectLightScalarsTexture; // 0x1638 + CStrongHandle< InfoForResourceTypeCTextureBase > m_Entity_hLightProbeDirectLightShadowsTexture; // 0x1640 + Vector m_Entity_vBoxMins; // 0x1648 + Vector m_Entity_vBoxMaxs; // 0x1654 + bool m_Entity_bMoveable; // 0x1660 + int32 m_Entity_nHandshake; // 0x1664 + int32 m_Entity_nPriority; // 0x1668 + bool m_Entity_bStartDisabled; // 0x166C + int32 m_Entity_nLightProbeSizeX; // 0x1670 + int32 m_Entity_nLightProbeSizeY; // 0x1674 + int32 m_Entity_nLightProbeSizeZ; // 0x1678 + int32 m_Entity_nLightProbeAtlasX; // 0x167C + int32 m_Entity_nLightProbeAtlasY; // 0x1680 + int32 m_Entity_nLightProbeAtlasZ; // 0x1684 + bool m_Entity_bEnabled; // 0x1691 +}; +class C_FuncConveyor : public C_BaseModelEntity // client +{ + Vector m_vecMoveDirEntitySpace; // 0x0E90 + float32 m_flTargetSpeed; // 0x0E9C + GameTick_t m_nTransitionStartTick; // 0x0EA0 + int32 m_nTransitionDurationTicks; // 0x0EA4 + float32 m_flTransitionStartSpeed; // 0x0EA8 + C_NetworkUtlVectorBase< CHandle< C_BaseEntity > > m_hConveyorModels; // 0x0EB0 + float32 m_flCurrentConveyorOffset; // 0x0EC8 + float32 m_flCurrentConveyorSpeed; // 0x0ECC +}; +class CCSPlayer_WeaponServices : public CPlayer_WeaponServices // client +{ + GameTime_t m_flNextAttack; // 0x00D0 + bool m_bIsLookingAtWeapon; // 0x00D4 + bool m_bIsHoldingLookAtWeapon; // 0x00D5 + uint32 m_nOldTotalShootPositionHistoryCount; // 0x00D8 + uint32 m_nOldTotalInputHistoryCount; // 0x0370 + C_NetworkUtlVectorBase< uint8 > m_networkAnimTiming; // 0x1588 + bool m_bBlockInspectUntilNextGraphUpdate; // 0x15A0 +}; +class C_PhysMagnet : public CBaseAnimGraph // client +{ + CUtlVector< int32 > m_aAttachedObjectsFromServer; // 0x1168 + CUtlVector< CHandle< C_BaseEntity > > m_aAttachedObjects; // 0x1180 +}; +class CEnvSoundscapeTriggerableAlias_snd_soundscape_triggerable : public CEnvSoundscapeTriggerable // client +{ +}; +class C_Breakable : public C_BaseModelEntity // client +{ +}; +class C_PlantedC4 : public CBaseAnimGraph // client +{ + bool m_bBombTicking; // 0x1170 + int32 m_nBombSite; // 0x1174 + int32 m_nSourceSoundscapeHash; // 0x1178 + EntitySpottedState_t m_entitySpottedState; // 0x1180 + GameTime_t m_flNextGlow; // 0x1198 + GameTime_t m_flNextBeep; // 0x119C + GameTime_t m_flC4Blow; // 0x11A0 + bool m_bCannotBeDefused; // 0x11A4 + bool m_bHasExploded; // 0x11A5 + float32 m_flTimerLength; // 0x11A8 + bool m_bBeingDefused; // 0x11AC + float32 m_bTriggerWarning; // 0x11B0 + float32 m_bExplodeWarning; // 0x11B4 + bool m_bC4Activated; // 0x11B8 + bool m_bTenSecWarning; // 0x11B9 + float32 m_flDefuseLength; // 0x11BC + GameTime_t m_flDefuseCountDown; // 0x11C0 + bool m_bBombDefused; // 0x11C4 + CHandle< C_CSPlayerPawn > m_hBombDefuser; // 0x11C8 + C_AttributeContainer m_AttributeManager; // 0x11D0 + CHandle< C_Multimeter > m_hDefuserMultimeter; // 0x16A0 + GameTime_t m_flNextRadarFlashTime; // 0x16A4 + bool m_bRadarFlash; // 0x16A8 + CHandle< C_CSPlayerPawn > m_pBombDefuser; // 0x16AC + GameTime_t m_fLastDefuseTime; // 0x16B0 + CBasePlayerController* m_pPredictionOwner; // 0x16B8 + Vector m_vecC4ExplodeSpectatePos; // 0x16C0 + QAngle m_vecC4ExplodeSpectateAng; // 0x16CC + float32 m_flC4ExplodeSpectateDuration; // 0x16D8 +}; +class CCSGO_WingmanIntroCharacterPosition : public C_CSGO_TeamIntroCharacterPosition // client +{ +}; +class CFilterName : public CBaseFilter // client +{ + CUtlSymbolLarge m_iFilterName; // 0x0640 +}; +class C_RagdollProp : public CBaseAnimGraph // client +{ + C_NetworkUtlVectorBase< bool > m_ragEnabled; // 0x1170 + C_NetworkUtlVectorBase< Vector > m_ragPos; // 0x1188 + C_NetworkUtlVectorBase< QAngle > m_ragAngles; // 0x11A0 + float32 m_flBlendWeight; // 0x11B8 + CHandle< C_BaseEntity > m_hRagdollSource; // 0x11BC + AttachmentHandle_t m_iEyeAttachment; // 0x11C0 + float32 m_flBlendWeightCurrent; // 0x11C4 + CUtlVector< int32 > m_parentPhysicsBoneIndices; // 0x11C8 + CUtlVector< int32 > m_worldSpaceBoneComputationOrder; // 0x11E0 +}; +class CPulse_CallInfo // pulse_runtime_lib +{ + PulseSymbol_t m_PortName; // 0x0000 + PulseDocNodeID_t m_nEditorNodeID; // 0x0010 + PulseRegisterMap_t m_RegisterMap; // 0x0018 + PulseDocNodeID_t m_CallMethodID; // 0x0048 + PulseRuntimeChunkIndex_t m_nSrcChunk; // 0x004C + int32 m_nSrcInstruction; // 0x0050 +}; +class C_MapPreviewParticleSystem : public C_ParticleSystem // client +{ +}; +class CBaseAnimGraph : public C_BaseModelEntity // client +{ + CAnimGraphControllerManager m_graphControllerManager; // 0x0E88 + CAnimGraphControllerBase* m_pMainGraphController; // 0x0F38 + bool m_bInitiallyPopulateInterpHistory; // 0x0F40 + bool m_bSuppressAnimEventSounds; // 0x0F42 + bool m_bAnimGraphUpdateEnabled; // 0x0F50 + float32 m_flMaxSlopeDistance; // 0x0F54 + VectorWS m_vLastSlopeCheckPos; // 0x0F58 + uint32 m_nAnimGraphUpdateId; // 0x0F64 + bool m_bAnimationUpdateScheduled; // 0x0F68 + Vector m_vecForce; // 0x0F6C + int32 m_nForceBone; // 0x0F78 + CBaseAnimGraph* m_pClientsideRagdoll; // 0x0F80 + bool m_bBuiltRagdoll; // 0x0F88 + PhysicsRagdollPose_t m_RagdollPose; // 0x0FA0 + bool m_bRagdollEnabled; // 0x0FE8 + bool m_bRagdollClientSide; // 0x0FE9 + bool m_bHasAnimatedMaterialAttributes; // 0x0FF8 +}; +class CPulseCell_InlineNodeSkipSelector : public CPulseCell_BaseFlow // pulse_runtime_lib +{ + PulseDocNodeID_t m_nFlowNodeID; // 0x0048 + bool m_bAnd; // 0x004C + PulseSelectorOutflowList_t m_PassOutflow; // 0x0050 + CPulse_OutflowConnection m_FailOutflow; // 0x0068 +}; +class C_LightEntity : public C_BaseModelEntity // client +{ + CLightComponent* m_CLightComponent; // 0x0E88 +}; +class C_WeaponM249 : public C_CSWeaponBaseGun // client +{ +}; +class C_LocalTempEntity : public CBaseAnimGraph // client +{ + int32 flags; // 0x1168 + GameTime_t die; // 0x116C + float32 m_flFrameMax; // 0x1170 + float32 x; // 0x1174 + float32 y; // 0x1178 + float32 fadeSpeed; // 0x117C + float32 bounceFactor; // 0x1180 + int32 hitSound; // 0x1184 + int32 priority; // 0x1188 + Vector tentOffset; // 0x118C + QAngle m_vecTempEntAngVelocity; // 0x1198 + int32 tempent_renderamt; // 0x11A4 + Vector m_vecNormal; // 0x11A8 + float32 m_flSpriteScale; // 0x11B4 + int32 m_nFlickerFrame; // 0x11B8 + float32 m_flFrameRate; // 0x11BC + float32 m_flFrame; // 0x11C0 + char* m_pszImpactEffect; // 0x11C8 + char* m_pszParticleEffect; // 0x11D0 + bool m_bParticleCollision; // 0x11D8 + int32 m_iLastCollisionFrame; // 0x11DC + Vector m_vLastCollisionOrigin; // 0x11E0 + Vector m_vecTempEntVelocity; // 0x11EC + Vector m_vecPrevAbsOrigin; // 0x11F8 + Vector m_vecTempEntAcceleration; // 0x1204 +}; +class C_WeaponTaser : public C_CSWeaponBaseGun // client +{ + GameTime_t m_fFireTime; // 0x1F70 + int32 m_nLastAttackTick; // 0x1F74 +}; +class C_PointEntity : public C_BaseEntity // client +{ +}; +class C_SingleplayRules : public C_GameRules // client +{ +}; +class CLogicalEntity : public C_BaseEntity // client +{ +}; +class C_PrecipitationBlocker : public C_BaseModelEntity // client +{ +}; +class C_CSGO_CounterTerroristTeamIntroCamera : public C_CSGO_TeamPreviewCamera // client +{ +}; +class C_SoundOpvarSetPathCornerEntity : public C_SoundOpvarSetPointEntity // client +{ +}; +class CPlayer_WeaponServices : public CPlayerPawnComponent // client +{ + C_NetworkUtlVectorBase< CHandle< C_BasePlayerWeapon > > m_hMyWeapons; // 0x0048 + CHandle< C_BasePlayerWeapon > m_hActiveWeapon; // 0x0060 + CHandle< C_BasePlayerWeapon > m_hLastWeapon; // 0x0064 + uint16[32] m_iAmmo; // 0x0068 +}; +class C_WeaponNegev : public C_CSWeaponBaseGun // client +{ +}; +class C_WeaponFiveSeven : public C_CSWeaponBaseGun // client +{ +}; +class C_WeaponSawedoff : public C_CSWeaponBaseShotgun // client +{ +}; +class C_TriggerVolume : public C_BaseModelEntity // client +{ +}; +class CPulseCell_LimitCount : public CPulseCell_BaseRequirement // pulse_runtime_lib +{ + int32 m_nLimitCount; // 0x0048 +}; +class CPulseCell_Step_CallExternalMethod : public CPulseCell_BaseYieldingInflow // pulse_runtime_lib +{ + PulseSymbol_t m_MethodName; // 0x0048 + PulseSymbol_t m_GameBlackboard; // 0x0058 + CUtlLeanVector< CPulseRuntimeMethodArg > m_ExpectedArgs; // 0x0068 + PulseMethodCallMode_t m_nAsyncCallMode; // 0x0078 + CPulse_ResumePoint m_OnFinished; // 0x0080 +}; +class C_WeaponMP9 : public C_CSWeaponBaseGun // client +{ +}; +class C_DynamicPropAlias_prop_dynamic_override : public C_DynamicProp // client +{ +}; +class CEnvSoundscapeTriggerable : public CEnvSoundscape // client +{ +}; +class C_PlayerPing : public C_BaseEntity // client +{ + CHandle< C_CSPlayerPawn > m_hPlayer; // 0x0638 + CHandle< C_BaseEntity > m_hPingedEntity; // 0x063C + int32 m_iType; // 0x0640 + bool m_bUrgent; // 0x0644 + char[18] m_szPlaceName; // 0x0645 +}; +class C_AK47 : public C_CSWeaponBaseGun // client +{ +}; +class C_CSGO_MapPreviewCameraPathNode : public C_BaseEntity // client +{ + CUtlSymbolLarge m_szParentPathUniqueID; // 0x0608 + int32 m_nPathIndex; // 0x0610 + Vector m_vInTangentLocal; // 0x0614 + Vector m_vOutTangentLocal; // 0x0620 + float32 m_flFOV; // 0x062C + float32 m_flCameraSpeed; // 0x0630 + float32 m_flEaseIn; // 0x0634 + float32 m_flEaseOut; // 0x0638 + Vector m_vInTangentWorld; // 0x063C + Vector m_vOutTangentWorld; // 0x0648 +}; +class C_CSPlayerResource : public C_BaseEntity // client +{ + bool[12] m_bHostageAlive; // 0x0608 + bool[12] m_isHostageFollowingSomeone; // 0x0614 + CEntityIndex[12] m_iHostageEntityIDs; // 0x0620 + Vector m_bombsiteCenterA; // 0x0650 + Vector m_bombsiteCenterB; // 0x065C + int32[4] m_hostageRescueX; // 0x0668 + int32[4] m_hostageRescueY; // 0x0678 + int32[4] m_hostageRescueZ; // 0x0688 + bool m_bEndMatchNextMapAllVoted; // 0x0698 + bool m_foundGoalPositions; // 0x0699 +}; +class CSkyboxReference : public C_BaseEntity // client +{ + WorldGroupId_t m_worldGroupId; // 0x0608 + CHandle< C_SkyCamera > m_hSkyCamera; // 0x060C +}; +class C_IncendiaryGrenade : public C_MolotovGrenade // client +{ +}; +class CFilterClass : public CBaseFilter // client +{ + CUtlSymbolLarge m_iFilterClass; // 0x0640 +}; +class C_PointCameraVFOV : public C_PointCamera // client +{ + float32 m_flVerticalFOV; // 0x0668 +}; +class C_PointCamera : public C_BaseEntity // client +{ + float32 m_FOV; // 0x0608 + float32 m_Resolution; // 0x060C + bool m_bFogEnable; // 0x0610 + Color m_FogColor; // 0x0611 + float32 m_flFogStart; // 0x0618 + float32 m_flFogEnd; // 0x061C + float32 m_flFogMaxDensity; // 0x0620 + bool m_bActive; // 0x0624 + bool m_bUseScreenAspectRatio; // 0x0625 + float32 m_flAspectRatio; // 0x0628 + bool m_bNoSky; // 0x062C + float32 m_fBrightness; // 0x0630 + float32 m_flZFar; // 0x0634 + float32 m_flZNear; // 0x0638 + bool m_bCanHLTVUse; // 0x063C + bool m_bAlignWithParent; // 0x063D + bool m_bDofEnabled; // 0x063E + float32 m_flDofNearBlurry; // 0x0640 + float32 m_flDofNearCrisp; // 0x0644 + float32 m_flDofFarCrisp; // 0x0648 + float32 m_flDofFarBlurry; // 0x064C + float32 m_flDofTiltToGround; // 0x0650 + float32 m_TargetFOV; // 0x0654 + float32 m_DegreesPerSecond; // 0x0658 + bool m_bIsOn; // 0x065C + C_PointCamera* m_pNext; // 0x0660 +}; +class CPathWithDynamicNodes : public CPathSimple // client +{ + C_NetworkUtlVectorBase< CHandle< CPathNode > > m_vecPathNodes; // 0x0710 + CTransform m_xInitialPathWorldToLocal; // 0x0730 +}; +class CBaseFilter : public CLogicalEntity // client +{ + bool m_bNegated; // 0x0608 + CEntityIOOutput m_OnPass; // 0x0610 + CEntityIOOutput m_OnFail; // 0x0628 +}; +class WeaponPurchaseTracker_t // client +{ + C_UtlVectorEmbeddedNetworkVar< WeaponPurchaseCount_t > m_weaponPurchases; // 0x0008 +}; +class PulseObservableBoolExpression_t // pulse_runtime_lib +{ + CPulse_OutflowConnection m_EvaluateConnection; // 0x0000 + CUtlVector< PulseRuntimeVarIndex_t > m_DependentObservableVars; // 0x0048 + CUtlVector< PulseRuntimeBlackboardReferenceIndex_t > m_DependentObservableBlackboardReferences; // 0x0060 +}; +class CMapInfo : public C_PointEntity // client +{ + int32 m_iBuyingStatus; // 0x0608 + float32 m_flBombRadius; // 0x060C + int32 m_iPetPopulation; // 0x0610 + bool m_bUseNormalSpawnsForDM; // 0x0614 + bool m_bDisableAutoGeneratedDMSpawns; // 0x0615 + float32 m_flBotMaxVisionDistance; // 0x0618 + int32 m_iHostageCount; // 0x061C + bool m_bFadePlayerVisibilityFarZ; // 0x0620 + bool m_bRainTraceToSkyEnabled; // 0x0621 + float32 m_flEnvRainStrength; // 0x0624 + float32 m_flEnvPuddleRippleStrength; // 0x0628 + float32 m_flEnvPuddleRippleDirection; // 0x062C + float32 m_flEnvWetnessCoverage; // 0x0630 + float32 m_flEnvWetnessDryingAmount; // 0x0634 +}; +class C_CSGO_EndOfMatchCamera : public C_CSGO_TeamPreviewCamera // client +{ +}; +class C_BaseGrenade : public C_BaseFlex // client +{ + bool m_bHasWarnedAI; // 0x1350 + bool m_bIsSmokeGrenade; // 0x1351 + bool m_bIsLive; // 0x1352 + float32 m_DmgRadius; // 0x1354 + GameTime_t m_flDetonateTime; // 0x1358 + float32 m_flWarnAITime; // 0x135C + float32 m_flDamage; // 0x1360 + CUtlSymbolLarge m_iszBounceSound; // 0x1368 + CUtlString m_ExplosionSound; // 0x1370 + CHandle< C_CSPlayerPawn > m_hThrower; // 0x137C + GameTime_t m_flNextAttack; // 0x1394 + CHandle< C_CSPlayerPawn > m_hOriginalThrower; // 0x1398 +}; +class C_PlayerSprayDecal : public C_ModelPointEntity // client +{ + int32 m_nUniqueID; // 0x0E88 + uint32 m_unAccountID; // 0x0E8C + uint32 m_unTraceID; // 0x0E90 + uint32 m_rtGcTime; // 0x0E94 + Vector m_vecEndPos; // 0x0E98 + Vector m_vecStart; // 0x0EA4 + Vector m_vecLeft; // 0x0EB0 + Vector m_vecNormal; // 0x0EBC + int32 m_nPlayer; // 0x0EC8 + int32 m_nEntity; // 0x0ECC + int32 m_nHitbox; // 0x0ED0 + float32 m_flCreationTime; // 0x0ED4 + int32 m_nTintID; // 0x0ED8 + uint8 m_nVersion; // 0x0EDC + uint8[128] m_ubSignature; // 0x0EDD + CPlayerSprayDecalRenderHelper m_SprayRenderHelper; // 0x0F68 +}; +class CEntityIdentity // entity2 +{ + int32 m_nameStringableIndex; // 0x0014 + CUtlSymbolLarge m_name; // 0x0018 + CUtlSymbolLarge m_designerName; // 0x0020 + uint32 m_flags; // 0x0030 + WorldGroupId_t m_worldGroupId; // 0x0038 + uint32 m_fDataObjectTypes; // 0x003C + ChangeAccessorFieldPathIndex_t m_PathIndex; // 0x0040 + CEntityAttributeTable* m_pAttributes; // 0x0048 + CEntityIdentity* m_pPrev; // 0x0050 + CEntityIdentity* m_pNext; // 0x0058 + CEntityIdentity* m_pPrevByClass; // 0x0060 + CEntityIdentity* m_pNextByClass; // 0x0068 +}; +class CPulseCell_LimitCount::Criteria_t // pulse_runtime_lib +{ + bool m_bLimitCountPasses; // 0x0000 +}; +class C_CS2HudModelArms : public C_CS2HudModelBase // client +{ +}; +class CBasePlayerVData : public CEntitySubclassVDataBase // client +{ + CResourceNameTyped< CWeakHandle< InfoForResourceTypeCModel > > m_sModelName; // 0x0028 + CSkillFloat m_flHeadDamageMultiplier; // 0x0108 + CSkillFloat m_flChestDamageMultiplier; // 0x0118 + CSkillFloat m_flStomachDamageMultiplier; // 0x0128 + CSkillFloat m_flArmDamageMultiplier; // 0x0138 + CSkillFloat m_flLegDamageMultiplier; // 0x0148 + float32 m_flHoldBreathTime; // 0x0158 + float32 m_flDrowningDamageInterval; // 0x015C + int32 m_nDrowningDamageInitial; // 0x0160 + int32 m_nDrowningDamageMax; // 0x0164 + int32 m_nWaterSpeed; // 0x0168 + float32 m_flUseRange; // 0x016C + float32 m_flUseAngleTolerance; // 0x0170 + float32 m_flCrouchTime; // 0x0174 +}; +class C_LightSpotEntity : public C_LightEntity // client +{ +}; +class CCSGameModeRules_Deathmatch : public CCSGameModeRules // client +{ + GameTime_t m_flDMBonusStartTime; // 0x0030 + float32 m_flDMBonusTimeLength; // 0x0034 + CUtlString m_sDMBonusWeapon; // 0x0038 +}; +class CPulseCell_CursorQueue : public CPulseCell_WaitForCursorsWithTagBase // pulse_runtime_lib +{ + int32 m_nCursorsAllowedToRunParallel; // 0x0098 +}; +class CPulseCell_Value_RandomFloat : public CPulseCell_BaseValue // pulse_runtime_lib +{ +}; +class CPulseExecCursor // pulse_runtime_lib +{ +}; +class C_Sprite : public C_BaseModelEntity // client +{ + CStrongHandle< InfoForResourceTypeIMaterial2 > m_hSpriteMaterial; // 0x0E88 + CHandle< C_BaseEntity > m_hAttachedToEntity; // 0x0E90 + AttachmentHandle_t m_nAttachment; // 0x0E94 + float32 m_flSpriteFramerate; // 0x0E98 + float32 m_flFrame; // 0x0E9C + GameTime_t m_flDieTime; // 0x0EA0 + uint32 m_nBrightness; // 0x0EB0 + float32 m_flBrightnessDuration; // 0x0EB4 + float32 m_flSpriteScale; // 0x0EB8 + float32 m_flScaleDuration; // 0x0EBC + bool m_bWorldSpaceScale; // 0x0EC0 + float32 m_flGlowProxySize; // 0x0EC4 + float32 m_flHDRColorScale; // 0x0EC8 + GameTime_t m_flLastTime; // 0x0ECC + float32 m_flMaxFrame; // 0x0ED0 + float32 m_flStartScale; // 0x0ED4 + float32 m_flDestScale; // 0x0ED8 + GameTime_t m_flScaleTimeStart; // 0x0EDC + int32 m_nStartBrightness; // 0x0EE0 + int32 m_nDestBrightness; // 0x0EE4 + GameTime_t m_flBrightnessTimeStart; // 0x0EE8 + int32 m_nSpriteWidth; // 0x0EF8 + int32 m_nSpriteHeight; // 0x0EFC +}; +class C_CsmFovOverride : public C_BaseEntity // client +{ + CUtlString m_cameraName; // 0x0608 + float32 m_flCsmFovOverrideValue; // 0x0610 +}; +class C_WeaponGlock : public C_CSWeaponBaseGun // client +{ +}; +class C_PhysicsProp : public C_BreakableProp // client +{ + bool m_bAwake; // 0x12D0 +}; +class CFilterTeam : public CBaseFilter // client +{ + int32 m_iFilterTeam; // 0x0640 +}; +class CInfoInteraction : public C_PointEntity // client +{ + CUtlSymbolLarge[8] m_strSlotEntityName; // 0x0608 + CUtlSymbolLarge m_strInteractVData; // 0x0648 + float32 m_flInteractRadius; // 0x0650 +}; +class CBasePlayerWeaponVData : public CEntitySubclassVDataBase // client +{ + CResourceNameTyped< CWeakHandle< InfoForResourceTypeCModel > > m_szWorldModel; // 0x0028 + CResourceNameTyped< CWeakHandle< InfoForResourceTypeCModel > > m_sToolsOnlyOwnerModelName; // 0x0108 + bool m_bBuiltRightHanded; // 0x01E8 + bool m_bAllowFlipping; // 0x01E9 + CAttachmentNameSymbolWithStorage m_sMuzzleAttachment; // 0x01F0 + CResourceNameTyped< CWeakHandle< InfoForResourceTypeIParticleSystemDefinition > > m_szMuzzleFlashParticle; // 0x0210 + CUtlString m_szMuzzleFlashParticleConfig; // 0x02F0 + CResourceNameTyped< CWeakHandle< InfoForResourceTypeIParticleSystemDefinition > > m_szBarrelSmokeParticle; // 0x02F8 + uint8 m_nMuzzleSmokeShotThreshold; // 0x03D8 + float32 m_flMuzzleSmokeTimeout; // 0x03DC + float32 m_flMuzzleSmokeDecrementRate; // 0x03E0 + bool m_bGenerateMuzzleLight; // 0x03E4 + bool m_bLinkedCooldowns; // 0x03E5 + ItemFlagTypes_t m_iFlags; // 0x03E6 + int32 m_iWeight; // 0x03E8 + bool m_bAutoSwitchTo; // 0x03EC + bool m_bAutoSwitchFrom; // 0x03ED + AmmoIndex_t m_nPrimaryAmmoType; // 0x03EE + AmmoIndex_t m_nSecondaryAmmoType; // 0x03EF + int32 m_iMaxClip1; // 0x03F0 + int32 m_iMaxClip2; // 0x03F4 + int32 m_iDefaultClip1; // 0x03F8 + int32 m_iDefaultClip2; // 0x03FC + bool m_bReserveAmmoAsClips; // 0x0400 + bool m_bTreatAsSingleClip; // 0x0401 + bool m_bKeepLoadedAmmo; // 0x0402 + RumbleEffect_t m_iRumbleEffect; // 0x0404 + float32 m_flDropSpeed; // 0x0408 + int32 m_iSlot; // 0x040C + int32 m_iPosition; // 0x0410 + CUtlOrderedMap< WeaponSound_t, CSoundEventName > m_aShootSounds; // 0x0418 +}; +class C_CSGO_EndOfMatchLineupEnd : public C_CSGO_EndOfMatchLineupEndpoint // client +{ +}; +class C_CSGO_PreviewPlayerAlias_csgo_player_previewmodel : public C_CSGO_PreviewPlayer // client +{ +}; +class C_SmokeGrenade : public C_BaseCSGrenade // client +{ +}; +class CInfoParticleTarget : public C_PointEntity // client +{ +}; +class CCSPlayer_DamageReactServices : public CPlayerPawnComponent // client +{ +}; +class C_PointClientUIWorldPanel : public C_BaseClientUIEntity // client +{ + bool m_bForceRecreateNextUpdate; // 0x0EC0 + bool m_bMoveViewToPlayerNextThink; // 0x0EC1 + bool m_bCheckCSSClasses; // 0x0EC2 + CTransform m_anchorDeltaTransform; // 0x0ED0 + CPointOffScreenIndicatorUi* m_pOffScreenIndicator; // 0x1060 + bool m_bIgnoreInput; // 0x1088 + bool m_bLit; // 0x1089 + bool m_bFollowPlayerAcrossTeleport; // 0x108A + float32 m_flWidth; // 0x108C + float32 m_flHeight; // 0x1090 + float32 m_flDPI; // 0x1094 + float32 m_flInteractDistance; // 0x1098 + float32 m_flDepthOffset; // 0x109C + uint32 m_unOwnerContext; // 0x10A0 + uint32 m_unHorizontalAlign; // 0x10A4 + uint32 m_unVerticalAlign; // 0x10A8 + uint32 m_unOrientation; // 0x10AC + bool m_bAllowInteractionFromAllSceneWorlds; // 0x10B0 + C_NetworkUtlVectorBase< CUtlSymbolLarge > m_vecCSSClasses; // 0x10B8 + bool m_bOpaque; // 0x10D0 + bool m_bNoDepth; // 0x10D1 + bool m_bVisibleWhenParentNoDraw; // 0x10D2 + bool m_bRenderBackface; // 0x10D3 + bool m_bUseOffScreenIndicator; // 0x10D4 + bool m_bExcludeFromSaveGames; // 0x10D5 + bool m_bGrabbable; // 0x10D6 + bool m_bOnlyRenderToTexture; // 0x10D7 + bool m_bDisableMipGen; // 0x10D8 + int32 m_nExplicitImageLayout; // 0x10DC +}; +class C_EntityFlame : public C_BaseEntity // client +{ + CHandle< C_BaseEntity > m_hEntAttached; // 0x0608 + CHandle< C_BaseEntity > m_hOldAttached; // 0x0630 + bool m_bCheapEffect; // 0x0634 +}; +class CBasePlayerController : public C_BaseEntity // client +{ + C_CommandContext m_CommandContext; // 0x0610 + uint64 m_nInButtonsWhichAreToggles; // 0x06B8 + uint32 m_nTickBase; // 0x06C0 + CHandle< C_BasePlayerPawn > m_hPawn; // 0x06C4 + bool m_bKnownTeamMismatch; // 0x06C8 + CHandle< C_BasePlayerPawn > m_hPredictedPawn; // 0x06CC + CSplitScreenSlot m_nSplitScreenSlot; // 0x06D0 + CHandle< CBasePlayerController > m_hSplitOwner; // 0x06D4 + CUtlVector< CHandle< CBasePlayerController > > m_hSplitScreenPlayers; // 0x06D8 + bool m_bIsHLTV; // 0x06F0 + PlayerConnectedState m_iConnected; // 0x06F4 + char[128] m_iszPlayerName; // 0x06F8 + uint64 m_steamID; // 0x0780 + bool m_bIsLocalPlayerController; // 0x0788 + bool m_bNoClipEnabled; // 0x0789 + uint32 m_iDesiredFOV; // 0x078C +}; +class C_CSGO_EndOfMatchLineupEndpoint : public C_BaseEntity // client +{ +};