6 #include <wine/unicode.h>
15 #define min(x, y) (((x) < (y)) ? (x) : (y))
16 #define max(x, y) (((x) > (y)) ? (x) : (y))
23 typedef PVOID IUnknown
, IDispatch
, IRecordInfo
;
28 typedef int (*FARPROC
)();
35 #define DECLSPEC_HIDDEN
36 #define WINE_DEFAULT_DEBUG_CHANNEL(x)
37 #define WINE_DECLARE_DEBUG_CHANNEL(x)
38 extern const char *wine_dbgstr_an( const char * s
, int n
);
39 extern const char *wine_dbgstr_wn( const WCHAR
*s
, int n
);
40 extern const char *wine_dbg_sprintf( const char *format
, ... );
41 static __inline
const char *wine_dbgstr_longlong( ULONGLONG ll
)
43 if (/*sizeof(ll) > sizeof(unsigned long) &&*/ ll
>> 32) /* ULONGLONG is always > long in ReactOS */
44 return wine_dbg_sprintf( "%lx%08lx", (unsigned long)(ll
>> 32), (unsigned long)ll
);
45 else return wine_dbg_sprintf( "%lx", (unsigned long)ll
);
47 static __inline
const char *debugstr_an( const char * s
, int n
) { return wine_dbgstr_an( s
, n
); }
48 static __inline
const char *debugstr_wn( const WCHAR
*s
, int n
) { return wine_dbgstr_wn( s
, n
); }
49 static __inline
const char *debugstr_a( const char *s
) { return wine_dbgstr_an( s
, -1 ); }
50 static __inline
const char *debugstr_w( const WCHAR
*s
) { return wine_dbgstr_wn( s
, -1 ); }
51 static __inline
const char *wine_dbgstr_w( const WCHAR
*s
){return wine_dbgstr_wn( s
, -1 );}
54 #define WARN(fmt, ...) fprintf(stderr, "WARN %s: " fmt, __FUNCTION__, ##__VA_ARGS__)
55 #define FIXME(fmt, ...) fprintf(stderr, "FIXME %s: " fmt, __FUNCTION__, ##__VA_ARGS__)
56 #define TRACE(fmt, ...) fprintf(stderr, "TRACE %s: " fmt, __FUNCTION__, ##__VA_ARGS__)
57 #define ERR(fmt, ...) fprintf(stderr, "ERR %s: " fmt, __FUNCTION__, ##__VA_ARGS__)
59 #define WARN(fmt, ...)
60 #define FIXME(fmt, ...)
61 #define TRACE(fmt, ...)
65 #define TRACE_ON(x) FALSE
66 #define TRACE_(x) TRACE
67 #define FIXME_(x) FIXME
68 const char *wine_dbg_sprintf( const char *format
, ... );
69 #define CP_UNIXCP CP_ACP
71 #define __EXCEPT_PAGE_FAULT else
75 typedef ULONG_PTR KAFFINITY
;
78 typedef enum _EXCEPTION_DISPOSITION
80 ExceptionContinueExecution
,
81 ExceptionContinueSearch
,
82 ExceptionNestedException
,
83 ExceptionCollidedUnwind
,
84 } EXCEPTION_DISPOSITION
;
87 #define ERROR_ACCESS_DENIED 5
88 #define ERROR_INVALID_HANDLE 6
89 #define ERROR_OUTOFMEMORY 14
90 #define ERROR_NOT_SUPPORTED 50
91 #define ERROR_INVALID_PARAMETER 87
92 #define ERROR_CALL_NOT_IMPLEMENTED 120
93 #define ERROR_INVALID_NAME 123
94 #define ERROR_MOD_NOT_FOUND 126
95 #define ERROR_NO_MORE_ITEMS 259
96 #define ERROR_INVALID_ADDRESS 487
100 #define MultiByteToWideChar __MultiByteToWideChar
101 #define WideCharToMultiByte __WideCharToMultiByte
102 INT
__MultiByteToWideChar( UINT page
, DWORD flags
, LPCSTR src
, INT srclen
, LPWSTR dst
, INT dstlen
);
103 INT
__WideCharToMultiByte( UINT page
, DWORD flags
, LPCWSTR src
, INT srclen
, LPSTR dst
, INT dstlen
, LPCSTR defchar
, BOOL
*used
);
105 // #define strlenW(s) wcslen((s))
106 // #define strcpyW(d,s) wcscpy((d),(s))
107 // #define strchrW(s,c) wcschr((s),(c))
108 // #define strcatW(d,s) wcscat((d),(s))
109 // #define strncmpiW(s1,s2,n) _wcsnicmp((s1),(s2),(n))
110 // #define strcmpW(s1,s2) wcscmp((s1),(s2))
111 // #define strcmpiW(s1,s2) _wcsicmp((s1),(s2))
112 // #define tolowerW(n) towlower((n))
113 // #define toupperW(n) towupper((n))
116 #define IMAGE_FILE_MACHINE_ARMNT 0x1c4
117 #define IMAGE_FILE_MACHINE_POWERPC 0x1f0
118 #define IMAGE_FILE_MACHINE_ARM64 0x1c5
119 #define DLL_PROCESS_DETACH 0
120 #define DLL_PROCESS_ATTACH 1
121 #define DLL_THREAD_ATTACH 2
122 #define DLL_THREAD_DETACH 3
123 #define HEAP_ZERO_MEMORY 8
124 #define GENERIC_READ 0x80000000
125 #define FILE_SHARE_READ 0x00000001
126 #define FILE_ATTRIBUTE_NORMAL 0x00000080
127 #define PAGE_READONLY 0x0002
128 #define SECTION_MAP_READ 4
129 #define IMAGE_DEBUG_TYPE_UNKNOWN 0
130 #define IMAGE_DEBUG_TYPE_COFF 1
131 #define IMAGE_DEBUG_TYPE_CODEVIEW 2
132 #define IMAGE_DEBUG_TYPE_FPO 3
133 #define IMAGE_DEBUG_TYPE_MISC 4
134 #define IMAGE_DEBUG_TYPE_EXCEPTION 5
135 #define IMAGE_DEBUG_TYPE_FIXUP 6
136 #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7
137 #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8
138 #define IMAGE_SYM_CLASS_EXTERNAL 2
139 #define IMAGE_SYM_CLASS_FILE 103
140 #define IMAGE_DIRECTORY_ENTRY_EXPORT 0
141 #define IMAGE_DIRECTORY_ENTRY_DEBUG 6
142 #define IMAGE_DEBUG_MISC_EXENAME 1
143 #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944
144 typedef struct _IMAGE_EXPORT_DIRECTORY
{
145 DWORD Characteristics
;
151 DWORD NumberOfFunctions
;
153 DWORD AddressOfFunctions
;
154 DWORD AddressOfNames
;
155 DWORD AddressOfNameOrdinals
;
156 } IMAGE_EXPORT_DIRECTORY
, *PIMAGE_EXPORT_DIRECTORY
;
157 typedef struct _IMAGE_DEBUG_MISC
{
163 } IMAGE_DEBUG_MISC
, *PIMAGE_DEBUG_MISC
;
164 typedef struct _IMAGE_SEPARATE_DEBUG_HEADER
{
168 WORD Characteristics
;
173 DWORD NumberOfSections
;
174 DWORD ExportedNamesSize
;
175 DWORD DebugDirectorySize
;
176 DWORD SectionAlignment
;
178 } IMAGE_SEPARATE_DEBUG_HEADER
, *PIMAGE_SEPARATE_DEBUG_HEADER
;
179 typedef struct _SECURITY_ATTRIBUTES
{
181 LPVOID lpSecurityDescriptor
;
183 } SECURITY_ATTRIBUTES
,*PSECURITY_ATTRIBUTES
,*LPSECURITY_ATTRIBUTES
;
184 typedef struct _IMAGE_DEBUG_DIRECTORY
{
185 DWORD Characteristics
;
191 DWORD AddressOfRawData
;
192 DWORD PointerToRawData
;
193 } IMAGE_DEBUG_DIRECTORY
, *PIMAGE_DEBUG_DIRECTORY
;
194 #define EXCEPTION_MAXIMUM_PARAMETERS 15
195 typedef struct _EXCEPTION_RECORD
{
197 DWORD ExceptionFlags
;
198 struct _EXCEPTION_RECORD
*ExceptionRecord
;
199 PVOID ExceptionAddress
;
200 DWORD NumberParameters
;
201 ULONG_PTR ExceptionInformation
[EXCEPTION_MAXIMUM_PARAMETERS
];
202 } EXCEPTION_RECORD
, *PEXCEPTION_RECORD
;
204 #define SIZE_OF_80387_REGISTERS 80
205 #define CONTEXT_i386 0x10000
206 #define CONTEXT_i486 0x10000
207 #define CONTEXT_CONTROL (CONTEXT_i386|0x00000001L)
208 #define CONTEXT_INTEGER (CONTEXT_i386|0x00000002L)
209 #define CONTEXT_SEGMENTS (CONTEXT_i386|0x00000004L)
210 #define CONTEXT_FLOATING_POINT (CONTEXT_i386|0x00000008L)
211 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L)
212 #define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L)
213 #define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS)
214 #define MAXIMUM_SUPPORTED_EXTENSION 512
216 #define EXCEPTION_READ_FAULT 0
217 #define EXCEPTION_WRITE_FAULT 1
218 #define EXCEPTION_EXECUTE_FAULT 8
220 typedef struct _FLOATING_SAVE_AREA
{
228 BYTE RegisterArea
[80];
230 } FLOATING_SAVE_AREA
, *PFLOATING_SAVE_AREA
;
232 typedef struct _CONTEXT
{
240 FLOATING_SAVE_AREA FloatSave
;
257 BYTE ExtendedRegisters
[MAXIMUM_SUPPORTED_EXTENSION
];
258 } CONTEXT
, *PCONTEXT
;
262 /* The following flags control the contents of the CONTEXT structure. */
264 #define CONTEXT_ARM 0x0200000
265 #define CONTEXT_CONTROL (CONTEXT_ARM | 0x00000001)
266 #define CONTEXT_INTEGER (CONTEXT_ARM | 0x00000002)
267 #define CONTEXT_FLOATING_POINT (CONTEXT_ARM | 0x00000004)
268 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_ARM | 0x00000008)
270 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER)
272 #define EXCEPTION_READ_FAULT 0
273 #define EXCEPTION_WRITE_FAULT 1
274 #define EXCEPTION_EXECUTE_FAULT 8
276 typedef struct _RUNTIME_FUNCTION
283 DWORD FunctionLength
: 11;
290 DWORD StackAdjust
: 10;
293 } RUNTIME_FUNCTION
, *PRUNTIME_FUNCTION
;
295 #define UNWIND_HISTORY_TABLE_SIZE 12
296 typedef struct _UNWIND_HISTORY_TABLE_ENTRY
299 PRUNTIME_FUNCTION FunctionEntry
;
300 } UNWIND_HISTORY_TABLE_ENTRY
, *PUNWIND_HISTORY_TABLE_ENTRY
;
302 typedef struct _UNWIND_HISTORY_TABLE
311 UNWIND_HISTORY_TABLE_ENTRY Entry
[UNWIND_HISTORY_TABLE_SIZE
];
312 } UNWIND_HISTORY_TABLE
, *PUNWIND_HISTORY_TABLE
;
314 typedef struct _CONTEXT
{
315 /* The flags values within this flag control the contents of
318 If the context record is used as an input parameter, then
319 for each portion of the context record controlled by a flag
320 whose value is set, it is assumed that that portion of the
321 context record contains valid context. If the context record
322 is being used to modify a thread's context, then only that
323 portion of the threads context will be modified.
325 If the context record is used as an IN OUT parameter to capture
326 the context of a thread, then only those portions of the thread's
327 context corresponding to set flags will be returned.
329 The context record is never used as an OUT only parameter. */
333 /* This section is specified/returned if the ContextFlags word contains
334 the flag CONTEXT_INTEGER. */
349 /* These are selected by CONTEXT_CONTROL */
356 BOOLEAN CDECL
RtlAddFunctionTable(RUNTIME_FUNCTION
*,DWORD
,DWORD
);
357 BOOLEAN CDECL
RtlDeleteFunctionTable(RUNTIME_FUNCTION
*);
358 PRUNTIME_FUNCTION WINAPI
RtlLookupFunctionEntry(ULONG_PTR
,DWORD
*,UNWIND_HISTORY_TABLE
*);
362 EXCEPTION_DISPOSITION
365 struct _EXCEPTION_RECORD
*ExceptionRecord
,
366 PVOID EstablisherFrame
,
367 struct _CONTEXT
*ContextRecord
,
368 PVOID DispatcherContext
);
369 typedef EXCEPTION_ROUTINE
*PEXCEPTION_ROUTINE
;
370 typedef struct _NT_TIB
{
371 struct _EXCEPTION_REGISTRATION_RECORD
*ExceptionList
;
379 PVOID ArbitraryUserPointer
;
380 struct _NT_TIB
*Self
;
384 typedef struct _EXCEPTION_REGISTRATION_RECORD
386 struct _EXCEPTION_REGISTRATION_RECORD
*Next
;
387 PEXCEPTION_ROUTINE Handler
;
388 } EXCEPTION_REGISTRATION_RECORD
, *PEXCEPTION_REGISTRATION_RECORD
;
391 #define INVALID_HANDLE_VALUE (HANDLE)(-1)
392 #define HeapAlloc __HeapAlloc
393 #define HeapReAlloc __HeapReAlloc
394 #define HeapFree(x,y,z) free(z)
395 #define GetProcessHeap() 1
396 #define GetProcessId(x) 8
397 #define lstrcpynW __lstrcpynW
398 #define CloseHandle __CloseHandle
399 #define CreateFileA(a,b,c,d,e,f,g) fopen(a, "rb")
400 #define CreateFileW __CreateFileW
401 #define CreateFileMappingW(a,b,c,d,e,f) a
402 #define MapViewOfFile __MapViewOfFile
403 #define UnmapViewOfFile __UnmapViewOfFile
404 #define LoadLibraryW(x) 0
405 #define FreeLibrary(x) 0
406 #define lstrcpyW strcpyW // Forward this to wine unicode inline function
407 #define lstrlenW strlenW // ditto
408 #define lstrcpynA __lstrcpynA
409 #define SetLastError(x)
410 #define GetProcAddress(x,y) 0
411 #define GetEnvironmentVariableA(x, y, z) 0
412 #define GetEnvironmentVariableW(x, y, z) 0
413 #define GetCurrentDirectoryW(x, y) 0
414 #define GetFileSizeEx __GetFileSizeEx
415 #define ReadProcessMemory(a,b,c,d,e) 0
417 void* __HeapAlloc(int heap
, int flags
, size_t size
);
418 void* __HeapReAlloc(int heap
, DWORD d2
, void *slab
, SIZE_T newsize
);
419 WCHAR
* __lstrcpynW(WCHAR
* lpString1
, const WCHAR
* lpString2
, int iMaxLength
);
420 BOOL
__CloseHandle(HANDLE handle
);
421 HANDLE
__CreateFileW(LPCWSTR lpFileName
, DWORD dwDesiredAccess
, DWORD dwShareMode
, LPSECURITY_ATTRIBUTES lpSecurityAttributes
, DWORD dwCreationDisposition
, DWORD dwFlagsAndAttributes
, HANDLE hTemplateFile
);
422 void* __MapViewOfFile(HANDLE file
,DWORD d1
,DWORD d2
,DWORD d3
,SIZE_T s
);
423 BOOL
__UnmapViewOfFile(const void*);
424 LPSTR
__lstrcpynA(LPSTR
,LPCSTR
,int);
425 BOOL
__GetFileSizeEx(HANDLE
,PLARGE_INTEGER
);
426 #define OPEN_EXISTING 3
427 #define FILE_MAP_READ SECTION_MAP_READ
428 typedef struct _LDT_ENTRY
{
451 } LDT_ENTRY
,*PLDT_ENTRY
,*LPLDT_ENTRY
;
454 typedef LONG KPRIORITY
;
457 #define RtlImageNtHeader __RtlImageNtHeader
458 #define RtlImageRvaToVa __RtlImageRvaToVa
459 #define RtlImageRvaToSection __RtlImageRvaToSection
460 #define RtlImageDirectoryEntryToData __RtlImageDirectoryEntryToData
463 #define RtlUlongByteSwap(_x) _byteswap_ulong((_x))
465 #define RtlUlongByteSwap(_x) __builtin_bswap32((_x))
468 PIMAGE_NT_HEADERS
__RtlImageNtHeader(void *data
);
469 PVOID
__RtlImageRvaToVa (const IMAGE_NT_HEADERS
* NtHeader
, PVOID BaseAddress
, ULONG Rva
, PIMAGE_SECTION_HEADER
*SectionHeader
);
470 PVOID
__RtlImageDirectoryEntryToData(PVOID BaseAddress
, BOOLEAN MappedAsImage
, USHORT Directory
, PULONG Size
);
472 typedef struct _CLIENT_ID
474 HANDLE UniqueProcess
;
476 } CLIENT_ID
, *PCLIENT_ID
;
477 #define GDI_BATCH_BUFFER_SIZE 0x136
478 typedef struct _GDI_TEB_BATCH
482 ULONG Buffer
[GDI_BATCH_BUFFER_SIZE
];
483 } GDI_TEB_BATCH
, *PGDI_TEB_BATCH
;
486 NT_TIB Tib
; /* 000 */
487 PVOID EnvironmentPointer
; /* 01c */
488 CLIENT_ID ClientId
; /* 020 */
489 PVOID ActiveRpcHandle
; /* 028 */
490 PVOID ThreadLocalStoragePointer
; /* 02c */
492 ULONG LastErrorValue
; /* 034 */
493 ULONG CountOfOwnedCriticalSections
;/* 038 */
494 PVOID CsrClientThread
; /* 03c */
495 PVOID Win32ThreadInfo
; /* 040 */
496 ULONG Win32ClientInfo
[31]; /* 044 used for user32 private data in Wine */
497 PVOID WOW32Reserved
; /* 0c0 */
498 ULONG CurrentLocale
; /* 0c4 */
499 ULONG FpSoftwareStatusRegister
; /* 0c8 */
500 PVOID SystemReserved1
[54]; /* 0cc used for kernel32 private data in Wine */
501 PVOID Spare1
; /* 1a4 */
502 LONG ExceptionCode
; /* 1a8 */
503 PVOID ActivationContextStackPointer
; /* 1a8/02c8 */
504 BYTE SpareBytes1
[36]; /* 1ac */
505 PVOID SystemReserved2
[10]; /* 1d4 used for ntdll private data in Wine */
506 GDI_TEB_BATCH GdiTebBatch
; /* 1fc */
507 ULONG gdiRgn
; /* 6dc */
508 ULONG gdiPen
; /* 6e0 */
509 ULONG gdiBrush
; /* 6e4 */
510 CLIENT_ID RealClientId
; /* 6e8 */
511 HANDLE GdiCachedProcessHandle
; /* 6f0 */
512 ULONG GdiClientPID
; /* 6f4 */
513 ULONG GdiClientTID
; /* 6f8 */
514 PVOID GdiThreadLocaleInfo
; /* 6fc */
515 PVOID UserReserved
[5]; /* 700 */
516 PVOID glDispatchTable
[280]; /* 714 */
517 ULONG glReserved1
[26]; /* b74 */
518 PVOID glReserved2
; /* bdc */
519 PVOID glSectionInfo
; /* be0 */
520 PVOID glSection
; /* be4 */
521 PVOID glTable
; /* be8 */
522 PVOID glCurrentRC
; /* bec */
523 PVOID glContext
; /* bf0 */
524 ULONG LastStatusValue
; /* bf4 */
525 UNICODE_STRING StaticUnicodeString
; /* bf8 used by advapi32 */
526 WCHAR StaticUnicodeBuffer
[261]; /* c00 used by advapi32 */
527 PVOID DeallocationStack
; /* e0c */
528 PVOID TlsSlots
[64]; /* e10 */
529 LIST_ENTRY TlsLinks
; /* f10 */
531 PVOID ReservedForNtRpc
; /* f1c */
532 PVOID DbgSsReserved
[2]; /* f20 */
533 ULONG HardErrorDisabled
; /* f28 */
534 PVOID Instrumentation
[16]; /* f2c */
535 PVOID WinSockData
; /* f6c */
536 ULONG GdiBatchCount
; /* f70 */
537 ULONG Spare2
; /* f74 */
538 ULONG Spare3
; /* f78 */
539 ULONG Spare4
; /* f7c */
540 PVOID ReservedForOle
; /* f80 */
541 ULONG WaitingOnLoaderLock
; /* f84 */
542 PVOID Reserved5
[3]; /* f88 */
543 PVOID
*TlsExpansionSlots
; /* f94 */
548 typedef struct tagVS_FIXEDFILEINFO
{
550 DWORD dwStrucVersion
;
551 DWORD dwFileVersionMS
;
552 DWORD dwFileVersionLS
;
553 DWORD dwProductVersionMS
;
554 DWORD dwProductVersionLS
;
555 DWORD dwFileFlagsMask
;
566 typedef struct _MODULEINFO
{
570 } MODULEINFO
,*LPMODULEINFO
;
571 #define GetModuleFileNameExW(w, x, y, z) 0
574 typedef struct _THREAD_BASIC_INFORMATION
577 PVOID TebBaseAddress
;
579 KAFFINITY AffinityMask
;
581 KPRIORITY BasePriority
;
582 } THREAD_BASIC_INFORMATION
, *PTHREAD_BASIC_INFORMATION
;
583 typedef enum _THREADINFOCLASS
{
584 ThreadBasicInformation
,
589 ThreadImpersonationToken
,
590 ThreadDescriptorTableEntry
,
591 ThreadEnableAlignmentFaultFixup
,
592 ThreadEventPair_Reusable
,
593 ThreadQuerySetWin32StartAddress
,
595 ThreadPerformanceCount
,
597 ThreadIdealProcessor
,
599 ThreadSetTlsArrayAddress
,
601 ThreadHideFromDebugger
,
602 ThreadBreakOnTermination
,
603 ThreadSwitchLegacyState
,
605 ThreadLastSystemCall
,
609 ThreadActualBasePriority
,
610 ThreadTebInformation
,
614 ThreadGroupInformation
,
615 ThreadUmsInformation
,
616 ThreadCounterProfiling
,
617 ThreadIdealProcessorEx
,
623 typedef VOID IMAGEHLP_CONTEXT
, *PIMAGEHLP_CONTEXT
;
624 #define MAX_SYM_NAME 2000
625 #define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001
626 #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002
627 #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003
628 #define CBA_SYMBOLS_UNLOADED 0x00000004
629 #define CBA_DUPLICATE_SYMBOL 0x00000005
630 #define CBA_READ_MEMORY 0x00000006
631 #define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007
632 #define CBA_SET_OPTIONS 0x00000008
633 #define CBA_EVENT 0x00000010
634 #define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x00000020
635 #define CBA_DEBUG_INFO 0x10000000
636 #define SYMOPT_CASE_INSENSITIVE 0x00000001
637 #define SYMOPT_UNDNAME 0x00000002
638 #define SYMOPT_DEFERRED_LOADS 0x00000004
639 #define SYMOPT_LOAD_LINES 0x00000010
640 #define SYMOPT_LOAD_ANYTHING 0x00000040
641 #define SYMOPT_PUBLICS_ONLY 0x00004000
642 #define SYMOPT_NO_PUBLICS 0x00008000
643 #define SYMOPT_AUTO_PUBLICS 0x00010000
644 #define SYMFLAG_VALUEPRESENT 0x00000001
645 #define SYMFLAG_REGISTER 0x00000008
646 #define SYMFLAG_REGREL 0x00000010
647 #define SYMFLAG_FRAMEREL 0x00000020
648 #define SYMFLAG_PARAMETER 0x00000040
649 #define SYMFLAG_LOCAL 0x00000080
650 #define SYMFLAG_CONSTANT 0x00000100
651 #define SYMFLAG_EXPORT 0x00000200
652 #define SYMFLAG_FORWARDER 0x00000400
653 #define SYMFLAG_FUNCTION 0x00000800
654 #define SYMFLAG_VIRTUAL 0x00001000
655 #define SYMFLAG_THUNK 0x00002000
656 #define SYMFLAG_TLSREL 0x00004000
657 #define SYMFLAG_SLOT 0x00008000
658 #define UNDNAME_COMPLETE (0x0000)
659 #define UNDNAME_NAME_ONLY (0x1000)
660 typedef struct _TI_FINDCHILDREN_PARAMS
665 } TI_FINDCHILDREN_PARAMS
;
666 #define SYMSEARCH_GLOBALSONLY 0x04
667 /* flags for SymLoadModuleEx */
668 #define SLMFLAG_VIRTUAL 0x1
669 #define SLMFLAG_NO_SYMBOLS 0x4
670 typedef struct _DBGHELP_MODLOAD_DATA
677 } MODLOAD_DATA
, *PMODLOAD_DATA
;
678 typedef struct _SYMBOL_INFO
695 } SYMBOL_INFO
, *PSYMBOL_INFO
;
709 typedef struct _IMAGEHLP_MODULEW64
718 WCHAR ModuleName
[32];
719 WCHAR ImageName
[256];
720 WCHAR LoadedImageName
[256];
721 WCHAR LoadedPdbName
[256];
723 WCHAR CVData
[MAX_PATH
*3];
734 } IMAGEHLP_MODULEW64
, *PIMAGEHLP_MODULEW64
;
735 typedef struct _IMAGEHLP_LINE64
742 } IMAGEHLP_LINE64
, *PIMAGEHLP_LINE64
;
743 typedef struct _SRCCODEINFO
748 CHAR Obj
[MAX_PATH
+1];
749 CHAR FileName
[MAX_PATH
+1];
752 } SRCCODEINFO
, *PSRCCODEINFO
;
753 typedef BOOL (CALLBACK
* PSYM_ENUMLINES_CALLBACK
)(PSRCCODEINFO
, PVOID
);
754 typedef BOOL (CALLBACK
*PSYM_ENUMERATESYMBOLS_CALLBACK
)(PSYMBOL_INFO
, ULONG
, PVOID
);
755 BOOL WINAPI
SymInitialize(HANDLE hProcess
, PCSTR UserSearchPath
, BOOL fInvadeProcess
);
756 BOOL WINAPI
SymCleanup(HANDLE hProcess
);
757 BOOL WINAPI
SymAddSymbolW(HANDLE hProcess
, ULONG64 BaseOfDll
, PCWSTR name
, DWORD64 addr
, DWORD size
, DWORD flags
);
758 BOOL WINAPI
SymGetModuleInfoW64(HANDLE hProcess
, DWORD64 dwAddr
, PIMAGEHLP_MODULEW64 ModuleInfo
);
759 BOOL WINAPI
SymMatchStringW(PCWSTR string
, PCWSTR re
, BOOL _case
);
760 DWORD WINAPI
SymLoadModule(HANDLE hProcess
, HANDLE hFile
, PCSTR ImageName
,
761 PCSTR ModuleName
, DWORD BaseOfDll
, DWORD SizeOfDll
);
762 DWORD64 WINAPI
SymLoadModuleEx(HANDLE
, HANDLE
, PCSTR
, PCSTR
, DWORD64
, DWORD
,
763 PMODLOAD_DATA
, DWORD
);
764 DWORD64 WINAPI
SymLoadModuleExW(HANDLE
, HANDLE
, PCWSTR
, PCWSTR
, DWORD64
, DWORD
,
765 PMODLOAD_DATA
, DWORD
);
766 DWORD64 WINAPI
SymGetModuleBase64(HANDLE
, DWORD64
);
767 BOOL WINAPI
SymUnloadModule(HANDLE hProcess
, DWORD BaseOfDll
);
768 PVOID WINAPI
SymFunctionTableAccess(HANDLE
, DWORD
);
769 PVOID WINAPI
SymFunctionTableAccess64(HANDLE
, DWORD64
);
770 BOOL WINAPI
SymFromAddr(HANDLE hProcess
, DWORD64 Address
, DWORD64
* Displacement
, PSYMBOL_INFO Symbol
);
771 BOOL WINAPI
SymEnumLines(HANDLE hProcess
, ULONG64 base
, PCSTR compiland
, PCSTR srcfile
, PSYM_ENUMLINES_CALLBACK cb
, PVOID user
);
772 DWORD WINAPI
SymSetOptions(DWORD opts
);
773 BOOL WINAPI
SymGetLineFromAddr64(HANDLE hProcess
, DWORD64 dwAddr
, PDWORD pdwDisplacement
, PIMAGEHLP_LINE64 Line
);
774 typedef BOOL (CALLBACK
*PFIND_EXE_FILE_CALLBACKW
)(HANDLE
, PCWSTR
, PVOID
);
775 #define FindExecutableImageExW __FindExecutableImageExW
776 HANDLE
__FindExecutableImageExW(PCWSTR
, PCWSTR
, PWSTR
, PFIND_EXE_FILE_CALLBACKW
, PVOID
);
777 DWORD WINAPI
UnDecorateSymbolName(PCSTR
, PSTR
, DWORD
, DWORD
);
778 typedef enum _THREAD_WRITE_FLAGS
780 ThreadWriteThread
= 0x0001,
781 ThreadWriteStack
= 0x0002,
782 ThreadWriteContext
= 0x0004,
783 ThreadWriteBackingStore
= 0x0008,
784 ThreadWriteInstructionWindow
= 0x0010,
785 ThreadWriteThreadData
= 0x0020,
786 ThreadWriteThreadInfo
= 0x0040
787 } THREAD_WRITE_FLAGS
;
795 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOADW64
801 WCHAR FileName
[MAX_PATH
+ 1];
805 } IMAGEHLP_DEFERRED_SYMBOL_LOADW64
, *PIMAGEHLP_DEFERRED_SYMBOL_LOADW64
;
806 typedef struct _tagADDRESS64
811 } ADDRESS64
, *LPADDRESS64
;
812 typedef BOOL (CALLBACK
*PENUMDIRTREE_CALLBACKW
)(PCWSTR
, PVOID
);
813 typedef PVOID (CALLBACK
*PFUNCTION_TABLE_ACCESS_ROUTINE64
)(HANDLE
, DWORD64
);
814 typedef DWORD64 (CALLBACK
*PGET_MODULE_BASE_ROUTINE64
)(HANDLE
, DWORD64
);
815 typedef DWORD64 (CALLBACK
*PTRANSLATE_ADDRESS_ROUTINE64
)(HANDLE
, HANDLE
, LPADDRESS64
);
816 typedef BOOL (CALLBACK
*PSYMBOL_REGISTERED_CALLBACK64
)(HANDLE
, ULONG
, ULONG64
, ULONG64
);
817 typedef BOOL (CALLBACK
*PREAD_PROCESS_MEMORY_ROUTINE64
)(HANDLE
, DWORD64
, PVOID
, DWORD
, PDWORD
);
818 typedef BOOL (CALLBACK
*PSYM_ENUMMODULES_CALLBACK64
)(PCSTR
, DWORD64
, PVOID
);
819 typedef BOOL (CALLBACK
*PSYM_ENUMMODULES_CALLBACKW64
)(PCWSTR
, DWORD64
, PVOID
);
820 typedef BOOL (CALLBACK
*PENUMLOADED_MODULES_CALLBACK64
)(PCSTR
, DWORD64
, ULONG
, PVOID
);
821 typedef BOOL (CALLBACK
*PENUMLOADED_MODULES_CALLBACKW64
)(PCWSTR
, DWORD64
, ULONG
, PVOID
);
822 typedef BOOL (CALLBACK
*PSYM_ENUMSYMBOLS_CALLBACK64
)(PCSTR
, DWORD64
, ULONG
, PVOID
);
823 typedef BOOL (CALLBACK
*PSYM_ENUMSYMBOLS_CALLBACK64W
)(PCWSTR
, DWORD64
, ULONG
, PVOID
);
825 BOOL WINAPI
SymEnumerateModulesW64(HANDLE hProcess
, PSYM_ENUMMODULES_CALLBACKW64 EnumModulesCallback
, PVOID UserContext
);
827 typedef struct _tagADDRESS
832 } ADDRESS
, *LPADDRESS
;
834 typedef struct _IMAGEHLP_MODULE
845 CHAR LoadedImageName
[256];
846 } IMAGEHLP_MODULE
, *PIMAGEHLP_MODULE
;
847 typedef struct _IMAGEHLP_MODULEW
856 WCHAR ModuleName
[32];
857 WCHAR ImageName
[256];
858 WCHAR LoadedImageName
[256];
859 } IMAGEHLP_MODULEW
, *PIMAGEHLP_MODULEW
;
860 typedef BOOL (CALLBACK
*PENUMLOADED_MODULES_CALLBACK
)(PCSTR
, ULONG
, ULONG
, PVOID
);
861 typedef BOOL (CALLBACK
*PSYMBOL_REGISTERED_CALLBACK
)(HANDLE
, ULONG
, PVOID
, PVOID
);
862 typedef BOOL (CALLBACK
*PREAD_PROCESS_MEMORY_ROUTINE
)(HANDLE
, DWORD
, PVOID
, DWORD
, PDWORD
);
863 typedef DWORD (CALLBACK
*PTRANSLATE_ADDRESS_ROUTINE
)(HANDLE
, HANDLE
, LPADDRESS
);
864 typedef PVOID (CALLBACK
*PFUNCTION_TABLE_ACCESS_ROUTINE
)(HANDLE
, DWORD
);
865 typedef DWORD (CALLBACK
*PGET_MODULE_BASE_ROUTINE
)(HANDLE
, DWORD
);
866 typedef BOOL (CALLBACK
*PSYM_ENUMMODULES_CALLBACK
)(PCSTR
, ULONG
, PVOID
);
867 typedef BOOL (CALLBACK
*PSYM_ENUMSYMBOLS_CALLBACK
)(PCSTR
, ULONG
, ULONG
, PVOID
);
868 typedef BOOL (CALLBACK
*PSYM_ENUMSYMBOLS_CALLBACKW
)(PCWSTR
, ULONG
, ULONG
, PVOID
);
870 typedef struct _IMAGEHLP_MODULE64
881 CHAR LoadedImageName
[256];
882 CHAR LoadedPdbName
[256];
884 CHAR CVData
[MAX_PATH
*3];
895 } IMAGEHLP_MODULE64
, *PIMAGEHLP_MODULE64
;
897 typedef ULONG64 RVA64
;
898 typedef enum _MINIDUMP_TYPE
900 MiniDumpNormal
= 0x0000,
901 MiniDumpWithDataSegs
= 0x0001,
902 MiniDumpWithFullMemory
= 0x0002,
903 MiniDumpWithHandleData
= 0x0004,
904 MiniDumpFilterMemory
= 0x0008,
905 MiniDumpScanMemory
= 0x0010,
906 MiniDumpWithUnloadedModules
= 0x0020,
907 MiniDumpWithIndirectlyReferencedMemory
= 0x0040,
908 MiniDumpFilterModulePaths
= 0x0080,
909 MiniDumpWithProcessThreadData
= 0x0100,
910 MiniDumpWithPrivateReadWriteMemory
= 0x0200,
911 MiniDumpWithoutOptionalData
= 0x0400,
912 MiniDumpWithFullMemoryInfo
= 0x0800,
913 MiniDumpWithThreadInfo
= 0x1000,
914 MiniDumpWithCodeSegs
= 0x2000
916 typedef struct _MINIDUMP_THREAD_CALLBACK
924 } MINIDUMP_THREAD_CALLBACK
, *PMINIDUMP_THREAD_CALLBACK
;
925 typedef struct _MINIDUMP_THREAD_EX_CALLBACK
933 ULONG64 BackingStoreBase
;
934 ULONG64 BackingStoreEnd
;
935 } MINIDUMP_THREAD_EX_CALLBACK
, *PMINIDUMP_THREAD_EX_CALLBACK
;
936 typedef struct _MINIDUMP_MODULE_CALLBACK
943 VS_FIXEDFILEINFO VersionInfo
;
945 ULONG SizeOfCvRecord
;
947 ULONG SizeOfMiscRecord
;
948 } MINIDUMP_MODULE_CALLBACK
, *PMINIDUMP_MODULE_CALLBACK
;
949 typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK
952 } MINIDUMP_INCLUDE_THREAD_CALLBACK
, *PMINIDUMP_INCLUDE_THREAD_CALLBACK
;
953 typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK
956 } MINIDUMP_INCLUDE_MODULE_CALLBACK
, *PMINIDUMP_INCLUDE_MODULE_CALLBACK
;
957 typedef struct _MINIDUMP_CALLBACK_INPUT
960 HANDLE ProcessHandle
;
964 MINIDUMP_THREAD_CALLBACK Thread
;
965 MINIDUMP_THREAD_EX_CALLBACK ThreadEx
;
966 MINIDUMP_MODULE_CALLBACK Module
;
967 MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread
;
968 MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule
;
970 } MINIDUMP_CALLBACK_INPUT
, *PMINIDUMP_CALLBACK_INPUT
;
971 typedef struct _MINIDUMP_CALLBACK_OUTPUT
975 ULONG ModuleWriteFlags
;
976 ULONG ThreadWriteFlags
;
983 } MINIDUMP_CALLBACK_OUTPUT
, *PMINIDUMP_CALLBACK_OUTPUT
;
984 typedef BOOL (WINAPI
* MINIDUMP_CALLBACK_ROUTINE
)(PVOID
, const PMINIDUMP_CALLBACK_INPUT
, PMINIDUMP_CALLBACK_OUTPUT
);
985 typedef struct _MINIDUMP_CALLBACK_INFORMATION
987 MINIDUMP_CALLBACK_ROUTINE CallbackRoutine
;
989 } MINIDUMP_CALLBACK_INFORMATION
, *PMINIDUMP_CALLBACK_INFORMATION
;
990 typedef struct _SYMBOL_INFOW
1007 } SYMBOL_INFOW
, *PSYMBOL_INFOW
;
1008 typedef struct _IMAGEHLP_STACK_FRAME
1010 ULONG64 InstructionOffset
;
1011 ULONG64 ReturnOffset
;
1012 ULONG64 FrameOffset
;
1013 ULONG64 StackOffset
;
1014 ULONG64 BackingStoreOffset
;
1015 ULONG64 FuncTableEntry
;
1017 ULONG64 Reserved
[5];
1020 } IMAGEHLP_STACK_FRAME
, *PIMAGEHLP_STACK_FRAME
;
1021 typedef struct _KDHELP64
1024 DWORD ThCallbackStack
;
1025 DWORD ThCallbackBStore
;
1028 DWORD64 KiCallUserMode
;
1029 DWORD64 KeUserCallbackDispatcher
;
1030 DWORD64 SystemRangeStart
;
1031 DWORD64 Reserved
[8];
1032 } KDHELP64
, *PKDHELP64
;
1033 typedef struct _STACKFRAME64
1036 ADDRESS64 AddrReturn
;
1037 ADDRESS64 AddrFrame
;
1038 ADDRESS64 AddrStack
;
1039 ADDRESS64 AddrBStore
;
1040 PVOID FuncTableEntry
;
1044 DWORD64 Reserved
[3];
1046 } STACKFRAME64
, *LPSTACKFRAME64
;
1047 typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO
1055 TI_GET_ARRAYINDEXTYPEID
,
1058 TI_GET_ADDRESSOFFSET
,
1062 TI_GET_CHILDRENCOUNT
,
1064 TI_GET_VIRTUALBASECLASS
,
1065 TI_GET_VIRTUALTABLESHAPEID
,
1066 TI_GET_VIRTUALBASEPOINTEROFFSET
,
1067 TI_GET_CLASSPARENTID
,
1070 TI_GET_LEXICALPARENT
,
1075 TI_GET_CALLING_CONVENTION
,
1076 } IMAGEHLP_SYMBOL_TYPE_INFO
;
1077 typedef struct _SOURCEFILE
1081 } SOURCEFILE
, *PSOURCEFILE
;
1082 typedef struct _SOURCEFILEW
1086 } SOURCEFILEW
, *PSOURCEFILEW
;
1087 typedef BOOL (CALLBACK
*PSYM_ENUMSOURCEFILES_CALLBACK
)(PSOURCEFILE
, PVOID
);
1088 typedef BOOL (CALLBACK
*PSYM_ENUMSOURCEFILES_CALLBACKW
)(PSOURCEFILEW
, PVOID
);
1089 typedef struct _SRCCODEINFOW
1094 WCHAR Obj
[MAX_PATH
+1];
1095 WCHAR FileName
[MAX_PATH
+1];
1098 } SRCCODEINFOW
, *PSRCCODEINFOW
;
1099 typedef BOOL (CALLBACK
* PSYM_ENUMLINES_CALLBACKW
)(PSRCCODEINFOW
, PVOID
);
1100 typedef BOOL (CALLBACK
*PSYM_ENUMERATESYMBOLS_CALLBACKW
)(PSYMBOL_INFOW
, ULONG
, PVOID
);
1101 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
1102 #define IMAGEHLP_SYMBOL IMAGEHLP_SYMBOL64
1103 #define IMAGEHLP_SYMBOLW IMAGEHLP_SYMBOLW64
1104 #define PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64
1105 #define PIMAGEHLP_SYMBOLW PIMAGEHLP_SYMBOLW64
1107 typedef struct _IMAGEHLP_SYMBOL
1113 DWORD MaxNameLength
;
1115 } IMAGEHLP_SYMBOL
, *PIMAGEHLP_SYMBOL
;
1117 typedef struct _IMAGEHLP_SYMBOLW
1123 DWORD MaxNameLength
;
1125 } IMAGEHLP_SYMBOLW
, *PIMAGEHLP_SYMBOLW
;
1127 typedef struct _IMAGEHLP_SYMBOL64
1133 DWORD MaxNameLength
;
1135 } IMAGEHLP_SYMBOL64
, *PIMAGEHLP_SYMBOL64
;
1136 typedef struct _IMAGEHLP_SYMBOLW64
1142 DWORD MaxNameLength
;
1144 } IMAGEHLP_SYMBOLW64
, *PIMAGEHLP_SYMBOLW64
;
1145 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
1146 #define IMAGEHLP_LINE IMAGEHLP_LINE64
1147 #define PIMAGEHLP_LINE PIMAGEHLP_LINE64
1148 #define IMAGEHLP_LINEW IMAGEHLP_LINEW64
1149 #define PIMAGEHLP_LINEW PIMAGEHLP_LINEW64
1151 typedef struct _IMAGEHLP_LINE
1158 } IMAGEHLP_LINE
, *PIMAGEHLP_LINE
;
1160 typedef struct _IMAGEHLP_LINEW
1167 } IMAGEHLP_LINEW
, *PIMAGEHLP_LINEW
;
1169 typedef struct _IMAGEHLP_LINEW64
1176 } IMAGEHLP_LINEW64
, *PIMAGEHLP_LINEW64
;
1177 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
1178 #define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64
1179 #define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64
1181 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD
1186 DWORD TimeDateStamp
;
1187 CHAR FileName
[MAX_PATH
];
1190 } IMAGEHLP_DEFERRED_SYMBOL_LOAD
, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD
;
1192 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64
1195 DWORD64 BaseOfImage
;
1197 DWORD TimeDateStamp
;
1198 CHAR FileName
[MAX_PATH
];
1202 } IMAGEHLP_DEFERRED_SYMBOL_LOAD64
, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD64
;
1203 typedef struct API_VERSION
1205 USHORT MajorVersion
;
1206 USHORT MinorVersion
;
1209 } API_VERSION
, *LPAPI_VERSION
;
1212 /* symbols & types enumeration */
1218 SymTagCompilandDetails
,
1235 SymTagFunctionArgType
,
1236 SymTagFuncDebugStart
,
1238 SymTagUsingNamespace
,
1279 /* kind of SymTagData */
1294 /* values for registers (on different CPUs) */
1297 /* those values are common to all supported CPUs (and CPU independent) */
1298 CV_ALLREG_ERR
= 30000,
1299 CV_ALLREG_TEB
= 30001,
1300 CV_ALLREG_TIMER
= 30002,
1301 CV_ALLREG_EFAD1
= 30003,
1302 CV_ALLREG_EFAD2
= 30004,
1303 CV_ALLREG_EFAD3
= 30005,
1304 CV_ALLREG_VFRAME
= 30006,
1305 CV_ALLREG_HANDLE
= 30007,
1306 CV_ALLREG_PARAMS
= 30008,
1307 CV_ALLREG_LOCALS
= 30009,
1308 CV_ALLREG_TID
= 30010,
1309 CV_ALLREG_ENV
= 30011,
1310 CV_ALLREG_CMDLN
= 30012,
1353 CV_REG_PCDR3
= 43, /* this includes PCDR4 to PCDR7 */
1354 CV_REG_CR0
= 80, /* this includes CR1 to CR4 */
1355 CV_REG_DR0
= 90, /* this includes DR1 to DR7 */
1365 CV_REG_PSEUDO1
= 116, /* this includes Pseudo02 to Pseudo09 */
1366 CV_REG_ST0
= 128, /* this includes ST1 to ST7 */
1377 CV_REG_MM0
= 146, /* this includes MM1 to MM7 */
1378 CV_REG_XMM0
= 154, /* this includes XMM1 to XMM7 */
1380 CV_REG_XMM0L
= 194, /* this includes XMM1L to XMM7L */
1381 CV_REG_XMM0H
= 202, /* this includes XMM1H to XMM7H */
1383 CV_REG_EDXEAX
= 212,
1403 CV_REG_YMM0
= 252, /* this includes YMM1 to YMM7 */
1404 CV_REG_YMM0H
= 260, /* this includes YMM1H to YMM7H */
1405 CV_REG_YMM0I0
= 268, /* this includes YMM0I1 to YMM0I3 */
1406 CV_REG_YMM1I0
= 272, /* this includes YMM1I1 to YMM1I3 */
1407 CV_REG_YMM2I0
= 276, /* this includes YMM2I1 to YMM2I3 */
1408 CV_REG_YMM3I0
= 280, /* this includes YMM3I1 to YMM3I3 */
1409 CV_REG_YMM4I0
= 284, /* this includes YMM4I1 to YMM4I3 */
1410 CV_REG_YMM5I0
= 288, /* this includes YMM5I1 to YMM5I3 */
1411 CV_REG_YMM6I0
= 292, /* this includes YMM6I1 to YMM6I3 */
1412 CV_REG_YMM7I0
= 296, /* this includes YMM7I1 to YMM7I3 */
1413 CV_REG_YMM0F0
= 300, /* this includes YMM0F1 to YMM0F7 */
1414 CV_REG_YMM1F0
= 308, /* this includes YMM1F1 to YMM1F7 */
1415 CV_REG_YMM2F0
= 316, /* this includes YMM2F1 to YMM2F7 */
1416 CV_REG_YMM3F0
= 324, /* this includes YMM3F1 to YMM3F7 */
1417 CV_REG_YMM4F0
= 332, /* this includes YMM4F1 to YMM4F7 */
1418 CV_REG_YMM5F0
= 340, /* this includes YMM5F1 to YMM5F7 */
1419 CV_REG_YMM6F0
= 348, /* this includes YMM6F1 to YMM6F7 */
1420 CV_REG_YMM7F0
= 356, /* this includes YMM7F1 to YMM7F7 */
1421 CV_REG_YMM0D0
= 364, /* this includes YMM0D1 to YMM0D3 */
1422 CV_REG_YMM1D0
= 368, /* this includes YMM1D1 to YMM1D3 */
1423 CV_REG_YMM2D0
= 372, /* this includes YMM2D1 to YMM2D3 */
1424 CV_REG_YMM3D0
= 376, /* this includes YMM3D1 to YMM3D3 */
1425 CV_REG_YMM4D0
= 380, /* this includes YMM4D1 to YMM4D3 */
1426 CV_REG_YMM5D0
= 384, /* this includes YMM5D1 to YMM5D3 */
1427 CV_REG_YMM6D0
= 388, /* this includes YMM6D1 to YMM6D3 */
1428 CV_REG_YMM7D0
= 392, /* this includes YMM7D1 to YMM7D3 */
1430 /* Motorola 68K CPU */
1431 CV_R68_D0
= 0, /* this includes D1 to D7 too */
1432 CV_R68_A0
= 8, /* this includes A1 to A7 too */
1447 CV_R68_FP0
= 32, /* this includes FP1 to FP7 */
1448 CV_R68_MMUSR030
= 41,
1467 CV_R68_BAD0
= 64, /* this includes BAD1 to BAD7 */
1468 CV_R68_BAC0
= 72, /* this includes BAC1 to BAC7 */
1471 CV_M4_NOREG
= CV_REG_NONE
,
1476 CV_M4_IntA0
= 14, /* this includes IntA1 to IntA3 */
1477 CV_M4_IntT0
= 18, /* this includes IntT1 to IntT7 */
1478 CV_M4_IntS0
= 26, /* this includes IntS1 to IntS7 */
1491 CV_M4_FltF0
= 60, /* this includes FltF1 to Flt31 */
1495 CV_ALPHA_NOREG
= CV_REG_NONE
,
1496 CV_ALPHA_FltF0
= 10, /* this includes FltF1 to FltF31 */
1497 CV_ALPHA_IntV0
= 42,
1498 CV_ALPHA_IntT0
= 43, /* this includes T1 to T7 */
1499 CV_ALPHA_IntS0
= 51, /* this includes S1 to S5 */
1500 CV_ALPHA_IntFP
= 57,
1501 CV_ALPHA_IntA0
= 58, /* this includes A1 to A5 */
1502 CV_ALPHA_IntT8
= 64,
1503 CV_ALPHA_IntT9
= 65,
1504 CV_ALPHA_IntT10
= 66,
1505 CV_ALPHA_IntT11
= 67,
1506 CV_ALPHA_IntRA
= 68,
1507 CV_ALPHA_IntT12
= 69,
1508 CV_ALPHA_IntAT
= 70,
1509 CV_ALPHA_IntGP
= 71,
1510 CV_ALPHA_IntSP
= 72,
1511 CV_ALPHA_IntZERO
= 73,
1515 CV_ALPHA_FltFsr
= 77,
1516 CV_ALPHA_SoftFpcr
= 78,
1518 /* Motorola & IBM PowerPC CPU */
1519 CV_PPC_GPR0
= 1, /* this includes GPR1 to GPR31 */
1521 CV_PPC_CR0
= 34, /* this includes CR1 to CR7 */
1522 CV_PPC_FPR0
= 42, /* this includes FPR1 to FPR31 */
1526 CV_PPC_SR0
= 76, /* this includes SR1 to SR15 */
1534 CV_PPC_COMPARE
= 110,
1542 CV_PPC_SPRG0
= 372, /* this includes SPRG1 to SPRG3 */
1554 CV_PPC_DBAT0U
= 636,
1555 CV_PPC_DBAT0L
= 637,
1556 CV_PPC_DBAT1U
= 638,
1557 CV_PPC_DBAT1L
= 639,
1558 CV_PPC_DBAT2U
= 640,
1559 CV_PPC_DBAT2L
= 641,
1560 CV_PPC_DBAT3U
= 642,
1561 CV_PPC_DBAT3L
= 643,
1562 CV_PPC_PMR0
= 1044, /* this includes PMR1 to PMR15 */
1563 CV_PPC_DMISS
= 1076,
1565 CV_PPC_HASH1
= 1078,
1566 CV_PPC_HASH2
= 1079,
1567 CV_PPC_IMISS
= 1080,
1570 CV_PPC_HID0
= 1108, /* this includes HID1 to HID15 */
1575 /* Hitachi SH3 CPU */
1576 CV_SH3_NOREG
= CV_REG_NONE
,
1577 CV_SH3_IntR0
= 10, /* this include R1 to R13 */
1599 CV_SH_FpR0
= 80, /* this includes FpR1 to FpR15 */
1600 CV_SH_XFpR0
= 96, /* this includes XFpR1 to XXFpR15 */
1603 CV_ARM_NOREG
= CV_REG_NONE
,
1604 CV_ARM_R0
= 10, /* this includes R1 to R12 */
1612 CV_ARM_FS0
= 50, /* this includes FS1 to FS31 */
1613 CV_ARM_FPEXTRA0
= 90, /* this includes FPEXTRA1 to FPEXTRA7 */
1614 CV_ARM_WR0
= 128, /* this includes WR1 to WR15 */
1623 CV_ARM_WCGR0
= 152, /* this includes WCGR1 to WCGR3 */
1628 CV_ARM_FS32
= 200, /* this includes FS33 to FS63 */
1629 CV_ARM_ND0
= 300, /* this includes ND1 to ND31 */
1630 CV_ARM_NQ0
= 400, /* this includes NQ1 to NQ15 */
1632 /* Intel IA64 CPU */
1633 CV_IA64_NOREG
= CV_REG_NONE
,
1634 CV_IA64_Br0
= 512, /* this includes Br1 to Br7 */
1635 CV_IA64_P0
= 704, /* this includes P1 to P63 */
1636 CV_IA64_Preds
= 768,
1637 CV_IA64_IntH0
= 832, /* this includes H1 to H15 */
1639 CV_IA64_Umask
= 1017,
1642 CV_IA64_Nats
= 1020,
1643 CV_IA64_Nats2
= 1021,
1644 CV_IA64_Nats3
= 1022,
1645 CV_IA64_IntR0
= 1024, /* this includes R1 to R127 */
1646 CV_IA64_FltF0
= 2048, /* this includes FltF1 to FltF127 */
1647 /* some IA64 registers missing */
1650 CV_TRI_NOREG
= CV_REG_NONE
,
1651 CV_TRI_D0
= 10, /* includes D1 to D15 */
1652 CV_TRI_A0
= 26, /* includes A1 to A15 */
1679 CV_TRI_DPRx_0
= 68, /* includes DPRx_1 to DPRx_3 */
1680 CV_TRI_CPRx_0
= 68, /* includes CPRx_1 to CPRx_3 */
1681 CV_TRI_DPMx_0
= 68, /* includes DPMx_1 to DPMx_3 */
1682 CV_TRI_CPMx_0
= 68, /* includes CPMx_1 to CPMx_3 */
1695 /* AM33 (and the likes) CPU */
1696 CV_AM33_NOREG
= CV_REG_NONE
,
1697 CV_AM33_E0
= 10, /* this includes E1 to E7 */
1698 CV_AM33_A0
= 20, /* this includes A1 to A3 */
1699 CV_AM33_D0
= 30, /* this includes D1 to D3 */
1700 CV_AM33_FS0
= 40, /* this includes FS1 to FS31 */
1713 /* Mitsubishi M32R CPU */
1714 CV_M32R_NOREG
= CV_REG_NONE
,
1715 CV_M32R_R0
= 10, /* this includes R1 to R11 */
1730 /* AMD/Intel x86_64 CPU */
1731 CV_AMD64_NONE
= CV_REG_NONE
,
1732 CV_AMD64_AL
= CV_REG_AL
,
1733 CV_AMD64_CL
= CV_REG_CL
,
1734 CV_AMD64_DL
= CV_REG_DL
,
1735 CV_AMD64_BL
= CV_REG_BL
,
1736 CV_AMD64_AH
= CV_REG_AH
,
1737 CV_AMD64_CH
= CV_REG_CH
,
1738 CV_AMD64_DH
= CV_REG_DH
,
1739 CV_AMD64_BH
= CV_REG_BH
,
1740 CV_AMD64_AX
= CV_REG_AX
,
1741 CV_AMD64_CX
= CV_REG_CX
,
1742 CV_AMD64_DX
= CV_REG_DX
,
1743 CV_AMD64_BX
= CV_REG_BX
,
1744 CV_AMD64_SP
= CV_REG_SP
,
1745 CV_AMD64_BP
= CV_REG_BP
,
1746 CV_AMD64_SI
= CV_REG_SI
,
1747 CV_AMD64_DI
= CV_REG_DI
,
1748 CV_AMD64_EAX
= CV_REG_EAX
,
1749 CV_AMD64_ECX
= CV_REG_ECX
,
1750 CV_AMD64_EDX
= CV_REG_EDX
,
1751 CV_AMD64_EBX
= CV_REG_EBX
,
1752 CV_AMD64_ESP
= CV_REG_ESP
,
1753 CV_AMD64_EBP
= CV_REG_EBP
,
1754 CV_AMD64_ESI
= CV_REG_ESI
,
1755 CV_AMD64_EDI
= CV_REG_EDI
,
1756 CV_AMD64_ES
= CV_REG_ES
,
1757 CV_AMD64_CS
= CV_REG_CS
,
1758 CV_AMD64_SS
= CV_REG_SS
,
1759 CV_AMD64_DS
= CV_REG_DS
,
1760 CV_AMD64_FS
= CV_REG_FS
,
1761 CV_AMD64_GS
= CV_REG_GS
,
1762 CV_AMD64_FLAGS
= CV_REG_FLAGS
,
1763 CV_AMD64_RIP
= CV_REG_EIP
,
1764 CV_AMD64_EFLAGS
= CV_REG_EFLAGS
,
1767 CV_AMD64_TEMP
= CV_REG_TEMP
,
1768 CV_AMD64_TEMPH
= CV_REG_TEMPH
,
1769 CV_AMD64_QUOTE
= CV_REG_QUOTE
,
1770 CV_AMD64_PCDR3
= CV_REG_PCDR3
, /* this includes PCDR4 to PCDR7 */
1771 CV_AMD64_CR0
= CV_REG_CR0
, /* this includes CR1 to CR4 */
1772 CV_AMD64_DR0
= CV_REG_DR0
, /* this includes DR1 to DR7 */
1775 CV_AMD64_GDTR
= CV_REG_GDTR
,
1776 CV_AMD64_GDTL
= CV_REG_GDTL
,
1777 CV_AMD64_IDTR
= CV_REG_IDTR
,
1778 CV_AMD64_IDTL
= CV_REG_IDTL
,
1779 CV_AMD64_LDTR
= CV_REG_LDTR
,
1780 CV_AMD64_TR
= CV_REG_TR
,
1782 CV_AMD64_PSEUDO1
= CV_REG_PSEUDO1
, /* this includes Pseudo02 to Pseudo09 */
1783 CV_AMD64_ST0
= CV_REG_ST0
, /* this includes ST1 to ST7 */
1784 CV_AMD64_CTRL
= CV_REG_CTRL
,
1785 CV_AMD64_STAT
= CV_REG_STAT
,
1786 CV_AMD64_TAG
= CV_REG_TAG
,
1787 CV_AMD64_FPIP
= CV_REG_FPIP
,
1788 CV_AMD64_FPCS
= CV_REG_FPCS
,
1789 CV_AMD64_FPDO
= CV_REG_FPDO
,
1790 CV_AMD64_FPDS
= CV_REG_FPDS
,
1791 CV_AMD64_ISEM
= CV_REG_ISEM
,
1792 CV_AMD64_FPEIP
= CV_REG_FPEIP
,
1793 CV_AMD64_FPEDO
= CV_REG_FPEDO
,
1794 CV_AMD64_MM0
= CV_REG_MM0
, /* this includes MM1 to MM7 */
1795 CV_AMD64_XMM0
= CV_REG_XMM0
, /* this includes XMM1 to XMM7 */
1796 CV_AMD64_XMM00
= CV_REG_XMM00
,
1797 CV_AMD64_XMM0L
= CV_REG_XMM0L
, /* this includes XMM1L to XMM7L */
1798 CV_AMD64_XMM0H
= CV_REG_XMM0H
, /* this includes XMM1H to XMM7H */
1799 CV_AMD64_MXCSR
= CV_REG_MXCSR
,
1800 CV_AMD64_EDXEAX
= CV_REG_EDXEAX
,
1801 CV_AMD64_EMM0L
= CV_REG_EMM0L
,
1802 CV_AMD64_EMM0H
= CV_REG_EMM0H
,
1803 CV_AMD64_MM00
= CV_REG_MM00
,
1804 CV_AMD64_MM01
= CV_REG_MM01
,
1805 CV_AMD64_MM10
= CV_REG_MM10
,
1806 CV_AMD64_MM11
= CV_REG_MM11
,
1807 CV_AMD64_MM20
= CV_REG_MM20
,
1808 CV_AMD64_MM21
= CV_REG_MM21
,
1809 CV_AMD64_MM30
= CV_REG_MM30
,
1810 CV_AMD64_MM31
= CV_REG_MM31
,
1811 CV_AMD64_MM40
= CV_REG_MM40
,
1812 CV_AMD64_MM41
= CV_REG_MM41
,
1813 CV_AMD64_MM50
= CV_REG_MM50
,
1814 CV_AMD64_MM51
= CV_REG_MM51
,
1815 CV_AMD64_MM60
= CV_REG_MM60
,
1816 CV_AMD64_MM61
= CV_REG_MM61
,
1817 CV_AMD64_MM70
= CV_REG_MM70
,
1818 CV_AMD64_MM71
= CV_REG_MM71
,
1820 CV_AMD64_XMM8
= 252, /* this includes XMM9 to XMM15 */
1840 /* Wine extension */
1841 CV_ARM64_NOREG
= CV_REG_NONE
,
1842 CV_ARM64_X0
= 10, /* this includes X0 to X30 */
1845 CV_ARM64_PSTATE
= 43,
1850 THUNK_ORDINAL_NOTYPE
,
1851 THUNK_ORDINAL_ADJUSTOR
,
1852 THUNK_ORDINAL_VCALL
,
1853 THUNK_ORDINAL_PCODE
,
1857 typedef enum CV_call_e
1861 CV_CALL_NEAR_PASCAL
,
1887 typedef double DATE
;
1888 typedef unsigned short VARTYPE
;
1889 typedef union tagCY
{
1891 #ifdef WORDS_BIGENDIAN
1901 typedef struct tagDEC
{
1913 #ifdef WORDS_BIGENDIAN
1924 typedef short VARIANT_BOOL
;
1925 typedef VARIANT_BOOL _VARIANT_BOOL
;
1926 typedef WCHAR OLECHAR
;
1927 typedef OLECHAR
*BSTR
;
1957 VT_USERDEFINED
= 29,
1967 VT_STREAMED_OBJECT
= 68,
1968 VT_STORED_OBJECT
= 69,
1969 VT_BLOB_OBJECT
= 70,
1972 VT_VERSIONED_STREAM
= 73,
1973 VT_BSTR_BLOB
= 0xfff,
1977 VT_RESERVED
= 0x8000,
1978 VT_ILLEGAL
= 0xffff,
1979 VT_ILLEGALMASKED
= 0xfff,
1984 typedef struct tagSAFEARRAYBOUND
{
1988 typedef struct tagSAFEARRAY
{
1994 SAFEARRAYBOUND rgsabound
[1];
1996 typedef SAFEARRAY
*LPSAFEARRAY
;
1998 #if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)
1999 #define __VARIANT_NAME_1 n1
2000 #define __VARIANT_NAME_2 n2
2001 #define __VARIANT_NAME_3 n3
2002 #define __VARIANT_NAME_4 brecVal
2004 #define __tagVARIANT
2005 #define __VARIANT_NAME_1
2006 #define __VARIANT_NAME_2
2007 #define __VARIANT_NAME_3
2008 #define __tagBRECORD
2009 #define __VARIANT_NAME_4
2011 typedef struct tagVARIANT VARIANT
;
2014 struct __tagVARIANT
{
2030 VARIANT_BOOL boolVal
;
2036 IDispatch
*pdispVal
;
2050 VARIANT_BOOL
*pboolVal
;
2058 IUnknown
**ppunkVal
;
2059 IDispatch
**ppdispVal
;
2060 SAFEARRAY
**pparray
;
2063 struct __tagBRECORD
{
2065 IRecordInfo
*pRecInfo
;
2073 typedef VARIANT
*LPVARIANT
;
2074 typedef VARIANT VARIANTARG
;
2075 typedef VARIANTARG
*LPVARIANTARG
;
2078 typedef DWORD SEGPTR
;
2081 typedef struct _STACK32FRAME
2083 DWORD restore_addr
; /* 00 return address for restoring code selector */
2084 DWORD codeselector
; /* 04 code selector to restore */
2085 EXCEPTION_REGISTRATION_RECORD frame
; /* 08 Exception frame */
2086 SEGPTR frame16
; /* 10 16-bit frame from last CallFrom16() */
2087 DWORD edi
; /* 14 saved registers */
2090 DWORD ebp
; /* 20 saved 32-bit frame pointer */
2091 DWORD retaddr
; /* 24 return address */
2092 DWORD target
; /* 28 target address / CONTEXT86 pointer */
2093 DWORD nb_args
; /* 2c number of 16-bit argument bytes */
2096 /* 16-bit stack layout after __wine_call_from_16() */
2097 typedef struct _STACK16FRAME
2099 STACK32FRAME
*frame32
; /* 00 32-bit frame from last CallTo16() */
2100 DWORD edx
; /* 04 saved registers */
2107 DWORD callfrom_ip
; /* 18 callfrom tail IP */
2108 DWORD module_cs
; /* 1c module code segment */
2109 DWORD relay
; /* 20 relay function address */
2110 WORD entry_ip
; /* 22 entry point IP */
2111 DWORD entry_point
; /* 26 API entry point to call, reused as mutex count */
2112 WORD bp
; /* 2a 16-bit stack frame chain */
2113 WORD ip
; /* 2c return address */