Started the implementation of IMAGEHLP.DLL.
This commit is contained in:
parent
29c08dd4df
commit
091e78564d
|
@ -0,0 +1 @@
|
||||||
|
Makefile
|
|
@ -0,0 +1,22 @@
|
||||||
|
DEFS = @DLLFLAGS@ -D__WINE__
|
||||||
|
TOPSRCDIR = @top_srcdir@
|
||||||
|
TOPOBJDIR = ../..
|
||||||
|
SRCDIR = @srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
MODULE = imagehlp
|
||||||
|
|
||||||
|
C_SRCS = \
|
||||||
|
access.c \
|
||||||
|
debug.c \
|
||||||
|
imagehlp_main.c \
|
||||||
|
integrity.c \
|
||||||
|
internal.c \
|
||||||
|
modify.c \
|
||||||
|
symbol.c
|
||||||
|
|
||||||
|
all: $(MODULE).o
|
||||||
|
|
||||||
|
@MAKE_RULES@
|
||||||
|
|
||||||
|
### Dependencies:
|
||||||
|
|
|
@ -0,0 +1,306 @@
|
||||||
|
/*
|
||||||
|
* IMAGEHLP library
|
||||||
|
*
|
||||||
|
* Copyright 1998 Patrik Stridvall
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "windows.h"
|
||||||
|
#include "winbase.h"
|
||||||
|
#include "winnt.h"
|
||||||
|
#include "winerror.h"
|
||||||
|
#include "wintypes.h"
|
||||||
|
#include "heap.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "imagehlp.h"
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* Data
|
||||||
|
*/
|
||||||
|
|
||||||
|
static PLOADED_IMAGE32 IMAGEHLP_pFirstLoadedImage32=NULL;
|
||||||
|
static PLOADED_IMAGE32 IMAGEHLP_pLastLoadedImage32=NULL;
|
||||||
|
|
||||||
|
static LOADED_IMAGE32 IMAGEHLP_EmptyLoadedImage32 = {
|
||||||
|
NULL, /* ModuleName */
|
||||||
|
0xffffffff, /* hFile */
|
||||||
|
NULL, /* MappedAddress */
|
||||||
|
NULL, /* FileHeader */
|
||||||
|
NULL, /* LastRvaSection */
|
||||||
|
0, /* NumberOfSections */
|
||||||
|
NULL, /* Sections */
|
||||||
|
1, /* Characteristics */
|
||||||
|
FALSE, /* fSystemImage */
|
||||||
|
FALSE, /* fDOSImage */
|
||||||
|
{ &IMAGEHLP_EmptyLoadedImage32.Links, &IMAGEHLP_EmptyLoadedImage32.Links }, /* Links */
|
||||||
|
148, /* SizeOfImage; */
|
||||||
|
};
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* EnumerateLoadedModules32 (IMAGEHLP.4)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI EnumerateLoadedModules32(
|
||||||
|
HANDLE32 hProcess,
|
||||||
|
PENUMLOADED_MODULES_CALLBACK32 EnumLoadedModulesCallback,
|
||||||
|
PVOID UserContext)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %p, %p): stub\n",
|
||||||
|
hProcess, EnumLoadedModulesCallback, UserContext
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* GetTimestampForLoadedLibrary32 (IMAGEHLP.9)
|
||||||
|
*/
|
||||||
|
DWORD WINAPI GetTimestampForLoadedLibrary32(HMODULE32 Module)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x): stub\n", Module);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* GetImageConfigInformation32 (IMAGEHLP.7)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI GetImageConfigInformation32(
|
||||||
|
PLOADED_IMAGE32 LoadedImage,
|
||||||
|
PIMAGE_LOAD_CONFIG_DIRECTORY32 ImageConfigInformation)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%p, %p): stub\n",
|
||||||
|
LoadedImage, ImageConfigInformation
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* GetImageUnusedHeaderBytes32 (IMAGEHLP.8)
|
||||||
|
*/
|
||||||
|
DWORD WINAPI GetImageUnusedHeaderBytes32(
|
||||||
|
PLOADED_IMAGE32 LoadedImage,
|
||||||
|
LPDWORD SizeUnusedHeaderBytes)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%p, %p): stub\n",
|
||||||
|
LoadedImage, SizeUnusedHeaderBytes
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImageDirectoryEntryToData32 (IMAGEHLP.11)
|
||||||
|
*/
|
||||||
|
PVOID WINAPI ImageDirectoryEntryToData32(
|
||||||
|
PVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%p, %d, %d, %p): stub\n",
|
||||||
|
Base, MappedAsImage, DirectoryEntry, Size
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImageLoad32 (IMAGEHLP.16)
|
||||||
|
*/
|
||||||
|
PLOADED_IMAGE32 WINAPI ImageLoad32(LPSTR DllName, LPSTR DllPath)
|
||||||
|
{
|
||||||
|
PLOADED_IMAGE32 pLoadedImage =
|
||||||
|
HeapAlloc(IMAGEHLP_hHeap32, 0, sizeof(LOADED_IMAGE32));
|
||||||
|
return pLoadedImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImageNtHeader32 (IMAGEHLP.17)
|
||||||
|
*/
|
||||||
|
PIMAGE_NT_HEADERS32 WINAPI ImageNtHeader32(PVOID Base)
|
||||||
|
{
|
||||||
|
return (PIMAGE_NT_HEADERS32)
|
||||||
|
((LPBYTE) Base + ((PIMAGE_DOS_HEADER32) Base)->e_lfanew);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImageRvaToSection32 (IMAGEHLP.19)
|
||||||
|
*/
|
||||||
|
PIMAGE_SECTION_HEADER32 WINAPI ImageRvaToSection32(
|
||||||
|
PIMAGE_NT_HEADERS32 NtHeaders, PVOID Base, ULONG Rva)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%p, %p, %ld): stub\n", NtHeaders, Base, Rva);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImageRvaToVa32 (IMAGEHLP.20)
|
||||||
|
*/
|
||||||
|
PVOID WINAPI ImageRvaToVa32(
|
||||||
|
PIMAGE_NT_HEADERS32 NtHeaders, PVOID Base, ULONG Rva,
|
||||||
|
PIMAGE_SECTION_HEADER32 *LastRvaSection)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%p, %p, %ld, %p): stub\n",
|
||||||
|
NtHeaders, Base, Rva, LastRvaSection
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImageUnload32 (IMAGEHLP.21)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI ImageUnload32(PLOADED_IMAGE32 pLoadedImage)
|
||||||
|
{
|
||||||
|
LIST_ENTRY32 *pCurrent, *pFind;
|
||||||
|
if(!IMAGEHLP_pFirstLoadedImage32 || !pLoadedImage)
|
||||||
|
{
|
||||||
|
/* No image loaded or null pointer */
|
||||||
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
pFind=&pLoadedImage->Links;
|
||||||
|
pCurrent=&IMAGEHLP_pFirstLoadedImage32->Links;
|
||||||
|
while((pCurrent != pFind) &&
|
||||||
|
(pCurrent != NULL))
|
||||||
|
pCurrent = pCurrent->Flink;
|
||||||
|
if(!pCurrent)
|
||||||
|
{
|
||||||
|
/* Not found */
|
||||||
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pCurrent->Blink)
|
||||||
|
pCurrent->Blink->Flink = pCurrent->Flink;
|
||||||
|
else
|
||||||
|
IMAGEHLP_pFirstLoadedImage32 = pCurrent->Flink?CONTAINING_RECORD(
|
||||||
|
pCurrent->Flink, LOADED_IMAGE32, Links):NULL;
|
||||||
|
|
||||||
|
if(pCurrent->Flink)
|
||||||
|
pCurrent->Flink->Blink = pCurrent->Blink;
|
||||||
|
else
|
||||||
|
IMAGEHLP_pLastLoadedImage32 = pCurrent->Blink?CONTAINING_RECORD(
|
||||||
|
pCurrent->Blink, LOADED_IMAGE32, Links):NULL;
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* MapAndLoad32 (IMAGEHLP.25)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI MapAndLoad32(
|
||||||
|
LPSTR pszImageName, LPSTR pszDllPath, PLOADED_IMAGE32 pLoadedImage,
|
||||||
|
BOOL32 bDotDll, BOOL32 bReadOnly)
|
||||||
|
{
|
||||||
|
CHAR szFileName[MAX_PATH];
|
||||||
|
HANDLE32 hFile = (HANDLE32) NULL;
|
||||||
|
HANDLE32 hFileMapping = (HANDLE32) NULL;
|
||||||
|
HMODULE32 hModule = (HMODULE32) NULL;
|
||||||
|
PIMAGE_NT_HEADERS32 pNtHeader = NULL;
|
||||||
|
|
||||||
|
/* PathCombine(&szFileName, pszDllPath, pszImageName); */
|
||||||
|
/* PathRenameExtension(&szFileName, bDotDll?:"dll":"exe"); */
|
||||||
|
|
||||||
|
/* FIXME: Check if the file already loaded (use IMAGEHLP_pFirstLoadedImage32) */
|
||||||
|
if(!(hFile = CreateFile32A(
|
||||||
|
szFileName, GENERIC_READ, 1, /* FIXME: FILE_SHARE_READ not defined */
|
||||||
|
NULL, OPEN_EXISTING, 0, (HANDLE32) NULL)))
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_FILE_NOT_FOUND);
|
||||||
|
goto Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!(hFileMapping = CreateFileMapping32A(
|
||||||
|
hFile, NULL, PAGE_READONLY | SEC_COMMIT, 0, 0, NULL)))
|
||||||
|
{
|
||||||
|
DWORD dwLastError = GetLastError();
|
||||||
|
WARN(imagehlp, "CreateFileMapping: Error = %ld\n", dwLastError);
|
||||||
|
SetLastError(dwLastError);
|
||||||
|
goto Error;
|
||||||
|
}
|
||||||
|
CloseHandle(hFile);
|
||||||
|
hFile = (HANDLE32) NULL;
|
||||||
|
|
||||||
|
if(!(hModule = (HMODULE32) MapViewOfFile(
|
||||||
|
hFileMapping, FILE_MAP_READ, 0, 0, 0)))
|
||||||
|
{
|
||||||
|
DWORD dwLastError = GetLastError();
|
||||||
|
WARN(imagehlp, "MapViewOfFile: Error = %ld\n", dwLastError);
|
||||||
|
SetLastError(dwLastError);
|
||||||
|
goto Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
CloseHandle(hFileMapping);
|
||||||
|
hFileMapping=(HANDLE32) NULL;
|
||||||
|
|
||||||
|
pLoadedImage = (PLOADED_IMAGE32) HeapAlloc(
|
||||||
|
IMAGEHLP_hHeap32, 0, sizeof(LOADED_IMAGE32)
|
||||||
|
);
|
||||||
|
|
||||||
|
pNtHeader = ImageNtHeader32((PVOID) hModule);
|
||||||
|
|
||||||
|
pLoadedImage->ModuleName =
|
||||||
|
HEAP_strdupA(IMAGEHLP_hHeap32, 0, pszDllPath); /* FIXME: Correct? */
|
||||||
|
pLoadedImage->hFile = hFile;
|
||||||
|
pLoadedImage->MappedAddress = (PUCHAR) hModule;
|
||||||
|
pLoadedImage->FileHeader = pNtHeader;
|
||||||
|
pLoadedImage->Sections = (PIMAGE_SECTION_HEADER32)
|
||||||
|
((LPBYTE) &pNtHeader->OptionalHeader +
|
||||||
|
pNtHeader->FileHeader.SizeOfOptionalHeader);
|
||||||
|
pLoadedImage->NumberOfSections =
|
||||||
|
pNtHeader->FileHeader.NumberOfSections;
|
||||||
|
pLoadedImage->SizeOfImage =
|
||||||
|
pNtHeader->OptionalHeader.SizeOfImage;
|
||||||
|
pLoadedImage->Characteristics =
|
||||||
|
pNtHeader->FileHeader.Characteristics;
|
||||||
|
pLoadedImage->LastRvaSection = pLoadedImage->Sections;
|
||||||
|
|
||||||
|
pLoadedImage->fSystemImage = FALSE; /* FIXME */
|
||||||
|
pLoadedImage->fDOSImage = FALSE; /* FIXME */
|
||||||
|
|
||||||
|
/* FIXME: Make thread safe */
|
||||||
|
pLoadedImage->Links.Flink = NULL;
|
||||||
|
pLoadedImage->Links.Blink = &IMAGEHLP_pLastLoadedImage32->Links;
|
||||||
|
if(IMAGEHLP_pLastLoadedImage32)
|
||||||
|
IMAGEHLP_pLastLoadedImage32->Links.Flink = &pLoadedImage->Links;
|
||||||
|
IMAGEHLP_pLastLoadedImage32 = pLoadedImage;
|
||||||
|
if(!IMAGEHLP_pFirstLoadedImage32)
|
||||||
|
IMAGEHLP_pFirstLoadedImage32 = pLoadedImage;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
Error:
|
||||||
|
if(hModule)
|
||||||
|
UnmapViewOfFile((PVOID) hModule);
|
||||||
|
if(hFileMapping)
|
||||||
|
CloseHandle(hFileMapping);
|
||||||
|
if(hFile)
|
||||||
|
CloseHandle(hFile);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SetImageConfigInformation32 (IMAGEHLP.34)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SetImageConfigInformation32(
|
||||||
|
PLOADED_IMAGE32 LoadedImage,
|
||||||
|
PIMAGE_LOAD_CONFIG_DIRECTORY32 ImageConfigInformation)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%p, %p): stub\n",
|
||||||
|
LoadedImage, ImageConfigInformation
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* UnMapAndLoad32 (IMAGEHLP.58)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI UnMapAndLoad32(PLOADED_IMAGE32 LoadedImage)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%p): stub\n", LoadedImage);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,101 @@
|
||||||
|
/*
|
||||||
|
* IMAGEHLP library
|
||||||
|
*
|
||||||
|
* Copyright 1998 Patrik Stridvall
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "windows.h"
|
||||||
|
#include "winerror.h"
|
||||||
|
#include "wintypes.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "imagehlp.h"
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* FindDebugInfoFile32 (IMAGEHLP.5)
|
||||||
|
*/
|
||||||
|
HANDLE32 WINAPI FindDebugInfoFile32(
|
||||||
|
LPSTR FileName, LPSTR SymbolPath, LPSTR DebugFilePath)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%s, %s, %s): stub\n",
|
||||||
|
debugstr_a(FileName), debugstr_a(SymbolPath),
|
||||||
|
debugstr_a(DebugFilePath)
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return (HANDLE32) NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* FindExecutableImage32 (IMAGEHLP.6)
|
||||||
|
*/
|
||||||
|
HANDLE32 WINAPI FindExecutableImage32(
|
||||||
|
LPSTR FileName, LPSTR SymbolPath, LPSTR ImageFilePath)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%s, %s, %s): stub\n",
|
||||||
|
debugstr_a(FileName), debugstr_a(SymbolPath),
|
||||||
|
debugstr_a(ImageFilePath)
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return (HANDLE32) NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* MapDebugInformation32 (IMAGEHLP.26)
|
||||||
|
*/
|
||||||
|
PIMAGE_DEBUG_INFORMATION32 WINAPI MapDebugInformation32(
|
||||||
|
HANDLE32 FileHandle, LPSTR FileName,
|
||||||
|
LPSTR SymbolPath, DWORD ImageBase)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %s, %s, 0x%08lx): stub\n",
|
||||||
|
FileHandle, FileName, SymbolPath, ImageBase
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* StackWalk32 (IMAGEHLP.36)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI StackWalk32(
|
||||||
|
DWORD MachineType, HANDLE32 hProcess, HANDLE32 hThread,
|
||||||
|
PSTACKFRAME32 StackFrame, PVOID ContextRecord,
|
||||||
|
PREAD_PROCESS_MEMORY_ROUTINE32 ReadMemoryRoutine,
|
||||||
|
PFUNCTION_TABLE_ACCESS_ROUTINE32 FunctionTableAccessRoutine,
|
||||||
|
PGET_MODULE_BASE_ROUTINE32 GetModuleBaseRoutine,
|
||||||
|
PTRANSLATE_ADDRESS_ROUTINE32 TranslateAddress)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp,
|
||||||
|
"(%ld, 0x%08x, 0x%08x, %p, %p, %p, %p, %p, %p): stub\n",
|
||||||
|
MachineType, hProcess, hThread, StackFrame, ContextRecord,
|
||||||
|
ReadMemoryRoutine, FunctionTableAccessRoutine,
|
||||||
|
GetModuleBaseRoutine, TranslateAddress
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* UnDecorateSymbolName32 (IMAGEHLP.57)
|
||||||
|
*/
|
||||||
|
DWORD WINAPI UnDecorateSymbolName32(
|
||||||
|
LPCSTR DecoratedName, LPSTR UnDecoratedName,
|
||||||
|
DWORD UndecoratedLength, DWORD Flags)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%s, %s, %ld, 0x%08lx): stub\n",
|
||||||
|
debugstr_a(DecoratedName), debugstr_a(UnDecoratedName),
|
||||||
|
UndecoratedLength, Flags
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* UnmapDebugInformation32 (IMAGEHLP.59)
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL32 WINAPI UnmapDebugInformation32(
|
||||||
|
PIMAGE_DEBUG_INFORMATION32 DebugInfo)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%p): stub\n", DebugInfo);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
|
@ -0,0 +1,112 @@
|
||||||
|
/*
|
||||||
|
* IMAGEHLP library
|
||||||
|
*
|
||||||
|
* Copyright 1998 Patrik Stridvall
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "windows.h"
|
||||||
|
#include "winerror.h"
|
||||||
|
#include "wintypes.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "imagehlp.h"
|
||||||
|
|
||||||
|
/**********************************************************************/
|
||||||
|
|
||||||
|
HANDLE32 IMAGEHLP_hHeap32 = (HANDLE32) NULL;
|
||||||
|
|
||||||
|
static API_VERSION32 IMAGEHLP_ApiVersion = { 4, 0, 0, 5 };
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* IMAGEHLP_LibMain (IMAGEHLP.init)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI IMAGEHLP_LibMain(
|
||||||
|
HINSTANCE32 hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
||||||
|
{
|
||||||
|
switch(fdwReason)
|
||||||
|
{
|
||||||
|
case DLL_PROCESS_ATTACH:
|
||||||
|
IMAGEHLP_hHeap32 = HeapCreate(0, 0x10000, 0);
|
||||||
|
break;
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
HeapDestroy(IMAGEHLP_hHeap32);
|
||||||
|
IMAGEHLP_hHeap32 = (HANDLE32) NULL;
|
||||||
|
break;
|
||||||
|
case DLL_THREAD_ATTACH:
|
||||||
|
break;
|
||||||
|
case DLL_THREAD_DETACH:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImagehlpApiVersion32 (IMAGEHLP.22)
|
||||||
|
*/
|
||||||
|
PAPI_VERSION32 WINAPI ImagehlpApiVersion32()
|
||||||
|
{
|
||||||
|
return &IMAGEHLP_ApiVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImagehlpApiVersionEx32 (IMAGEHLP.23)
|
||||||
|
*/
|
||||||
|
PAPI_VERSION32 WINAPI ImagehlpApiVersionEx32(PAPI_VERSION32 AppVersion)
|
||||||
|
{
|
||||||
|
if(!AppVersion)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
AppVersion->MajorVersion = IMAGEHLP_ApiVersion.MajorVersion;
|
||||||
|
AppVersion->MinorVersion = IMAGEHLP_ApiVersion.MinorVersion;
|
||||||
|
AppVersion->Revision = IMAGEHLP_ApiVersion.Revision;
|
||||||
|
AppVersion->Reserved = IMAGEHLP_ApiVersion.Reserved;
|
||||||
|
|
||||||
|
return AppVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* MakeSureDirectoryPathExists32 (IMAGEHLP.24)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI MakeSureDirectoryPathExists32(LPCSTR DirPath)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%s): stub\n", debugstr_a(DirPath));
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* MarkImageAsRunFromSwap (IMAGEHLP.29)
|
||||||
|
* FIXME
|
||||||
|
* No documentation available.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SearchTreeForFile32 (IMAGEHLP.33)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SearchTreeForFile32(
|
||||||
|
LPSTR RootPath, LPSTR InputPathName, LPSTR OutputPathBuffer)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%s, %s, %s): stub\n",
|
||||||
|
debugstr_a(RootPath), debugstr_a(InputPathName),
|
||||||
|
debugstr_a(OutputPathBuffer)
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* TouchFileTimes32 (IMAGEHLP.56)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI TouchFileTimes32(
|
||||||
|
HANDLE32 FileHandle, LPSYSTEMTIME lpSystemTime)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %p): stub\n",
|
||||||
|
FileHandle, lpSystemTime
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,91 @@
|
||||||
|
/*
|
||||||
|
* IMAGEHLP library
|
||||||
|
*
|
||||||
|
* Copyright 1998 Patrik Stridvall
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "windows.h"
|
||||||
|
#include "winerror.h"
|
||||||
|
#include "wintypes.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "imagehlp.h"
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImageAddCertificate32 (IMAGEHLP.10)
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL32 WINAPI ImageAddCertificate32(
|
||||||
|
HANDLE32 FileHandle, PWIN_CERTIFICATE32 Certificate, PDWORD Index)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %p, %p): stub\n",
|
||||||
|
FileHandle, Certificate, Index
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImageEnumerateCertificates32 (IMAGEHLP.12)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI ImageEnumerateCertificates32(
|
||||||
|
HANDLE32 FileHandle, WORD TypeFilter, PDWORD CertificateCount,
|
||||||
|
PDWORD Indices, DWORD IndexCount)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %hd, %p, %p, %ld): stub\n",
|
||||||
|
FileHandle, TypeFilter, CertificateCount, Indices, IndexCount
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImageGetCertificateData32 (IMAGEHLP.13)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI ImageGetCertificateData32(
|
||||||
|
HANDLE32 FileHandle, DWORD CertificateIndex,
|
||||||
|
PWIN_CERTIFICATE32 Certificate, PDWORD RequiredLength)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %ld, %p, %p): stub\n",
|
||||||
|
FileHandle, CertificateIndex, Certificate, RequiredLength
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImageGetCertificateHeader32 (IMAGEHLP.14)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI ImageGetCertificateHeader32(
|
||||||
|
HANDLE32 FileHandle, DWORD CertificateIndex,
|
||||||
|
PWIN_CERTIFICATE32 Certificateheader)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %ld, %p): stub\n",
|
||||||
|
FileHandle, CertificateIndex, Certificateheader
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImageGetDigestStream32 (IMAGEHLP.15)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI ImageGetDigestStream32(
|
||||||
|
HANDLE32 FileHandle, DWORD DigestLevel,
|
||||||
|
DIGEST_FUNCTION32 DigestFunction, DIGEST_HANDLE32 DigestHandle)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%0x08x, %ld, %p, %p): stub\n",
|
||||||
|
FileHandle, DigestLevel, DigestFunction, DigestHandle
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImageRemoveCertificate32 (IMAGEHLP.18)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI ImageRemoveCertificate32(HANDLE32 FileHandle, DWORD Index)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %ld): stub\n", FileHandle, Index);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
|
@ -0,0 +1,113 @@
|
||||||
|
/*
|
||||||
|
* IMAGEHLP library
|
||||||
|
*
|
||||||
|
* Copyright 1998 Patrik Stridvall
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "windows.h"
|
||||||
|
#include "winerror.h"
|
||||||
|
#include "wintypes.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "imagehlp.h"
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* InitializeListHead32
|
||||||
|
*/
|
||||||
|
VOID InitializeListHead32(PLIST_ENTRY32 pListHead)
|
||||||
|
{
|
||||||
|
pListHead->Flink = pListHead;
|
||||||
|
pListHead->Blink = pListHead;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* InsertHeadList32
|
||||||
|
*/
|
||||||
|
VOID InsertHeadList32(PLIST_ENTRY32 pListHead, PLIST_ENTRY32 pEntry)
|
||||||
|
{
|
||||||
|
pEntry->Blink = pListHead;
|
||||||
|
pEntry->Flink = pListHead->Flink;
|
||||||
|
pListHead->Flink = pEntry;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* InsertTailList32
|
||||||
|
*/
|
||||||
|
VOID InsertTailList32(PLIST_ENTRY32 pListHead, PLIST_ENTRY32 pEntry)
|
||||||
|
{
|
||||||
|
pEntry->Flink = pListHead;
|
||||||
|
pEntry->Blink = pListHead->Blink;
|
||||||
|
pListHead->Blink = pEntry;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* IsListEmpty32
|
||||||
|
*/
|
||||||
|
BOOLEAN IsListEmpty32(PLIST_ENTRY32 pListHead)
|
||||||
|
{
|
||||||
|
return !pListHead;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* PopEntryList32
|
||||||
|
*/
|
||||||
|
PSINGLE_LIST_ENTRY32 PopEntryList32(PSINGLE_LIST_ENTRY32 pListHead)
|
||||||
|
{
|
||||||
|
pListHead->Next = NULL;
|
||||||
|
return pListHead;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* PushEntryList32
|
||||||
|
*/
|
||||||
|
VOID PushEntryList32(
|
||||||
|
PSINGLE_LIST_ENTRY32 pListHead, PSINGLE_LIST_ENTRY32 pEntry)
|
||||||
|
{
|
||||||
|
pEntry->Next=pListHead;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* RemoveEntryList32
|
||||||
|
*/
|
||||||
|
VOID RemoveEntryList32(PLIST_ENTRY32 pEntry)
|
||||||
|
{
|
||||||
|
pEntry->Flink->Blink = pEntry->Blink;
|
||||||
|
pEntry->Blink->Flink = pEntry->Flink;
|
||||||
|
pEntry->Flink = NULL;
|
||||||
|
pEntry->Blink = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* RemoveHeadList32
|
||||||
|
*/
|
||||||
|
PLIST_ENTRY32 RemoveHeadList32(PLIST_ENTRY32 pListHead)
|
||||||
|
{
|
||||||
|
PLIST_ENTRY32 p = pListHead->Flink;
|
||||||
|
|
||||||
|
if(p != pListHead)
|
||||||
|
{
|
||||||
|
RemoveEntryList32(pListHead);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pListHead->Flink = NULL;
|
||||||
|
pListHead->Blink = NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* RemoveTailList32
|
||||||
|
*/
|
||||||
|
PLIST_ENTRY32 RemoveTailList32(PLIST_ENTRY32 pListHead)
|
||||||
|
{
|
||||||
|
RemoveHeadList32(pListHead->Blink);
|
||||||
|
if(pListHead != pListHead->Blink)
|
||||||
|
return pListHead;
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,163 @@
|
||||||
|
/*
|
||||||
|
* IMAGEHLP library
|
||||||
|
*
|
||||||
|
* Copyright 1998 Patrik Stridvall
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "windows.h"
|
||||||
|
#include "winerror.h"
|
||||||
|
#include "wintypes.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "imagehlp.h"
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* BindImage32 (IMAGEHLP.1)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI BindImage32(
|
||||||
|
LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath)
|
||||||
|
{
|
||||||
|
return BindImageEx32(0, ImageName, DllPath, SymbolPath, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* BindImageEx32 (IMAGEHLP.2)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI BindImageEx32(
|
||||||
|
DWORD Flags, LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath,
|
||||||
|
PIMAGEHLP_STATUS_ROUTINE32 StatusRoutine)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%ld, %s, %s, %s, %p): stub\n",
|
||||||
|
Flags, debugstr_a(ImageName), debugstr_a(DllPath),
|
||||||
|
debugstr_a(SymbolPath), StatusRoutine
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* CheckSumMappedFile32 (IMAGEHLP.3)
|
||||||
|
*/
|
||||||
|
PIMAGE_NT_HEADERS32 WINAPI CheckSumMappedFile32(
|
||||||
|
LPVOID BaseAddress, DWORD FileLength,
|
||||||
|
LPDWORD HeaderSum, LPDWORD CheckSum)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%p, %ld, %p, %p): stub\n",
|
||||||
|
BaseAddress, FileLength, HeaderSum, CheckSum
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* MapFileAndCheckSum32A (IMAGEHLP.27)
|
||||||
|
*/
|
||||||
|
DWORD WINAPI MapFileAndCheckSum32A(
|
||||||
|
LPSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%s, %p, %p): stub\n",
|
||||||
|
debugstr_a(Filename), HeaderSum, CheckSum
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return CHECKSUM_OPEN_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* MapFileAndCheckSum32W (IMAGEHLP.28)
|
||||||
|
*/
|
||||||
|
DWORD WINAPI MapFileAndCheckSum32W(
|
||||||
|
LPWSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%s, %p, %p): stub\n",
|
||||||
|
debugstr_w(Filename), HeaderSum, CheckSum
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return CHECKSUM_OPEN_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ReBaseImage32 (IMAGEHLP.30)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI ReBaseImage32(
|
||||||
|
LPSTR CurrentImageName, LPSTR SymbolPath, BOOL32 fReBase,
|
||||||
|
BOOL32 fRebaseSysfileOk, BOOL32 fGoingDown, ULONG CheckImageSize,
|
||||||
|
ULONG *OldImageSize, ULONG *OldImageBase, ULONG *NewImageSize,
|
||||||
|
ULONG *NewImageBase, ULONG TimeStamp)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp,
|
||||||
|
"(%s, %s, %d, %d, %d, %ld, %p, %p, %p, %p, %ld): stub\n",
|
||||||
|
debugstr_a(CurrentImageName),debugstr_a(SymbolPath), fReBase,
|
||||||
|
fRebaseSysfileOk, fGoingDown, CheckImageSize, OldImageSize,
|
||||||
|
OldImageBase, NewImageSize, NewImageBase, TimeStamp
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* RemovePrivateCvSymbolic32 (IMAGEHLP.31)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI RemovePrivateCvSymbolic32(
|
||||||
|
PCHAR DebugData, PCHAR *NewDebugData, ULONG *NewDebugSize)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%p, %p, %p): stub\n",
|
||||||
|
DebugData, NewDebugData, NewDebugSize
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* RemoveRelocations32 (IMAGEHLP.32)
|
||||||
|
*/
|
||||||
|
VOID WINAPI RemoveRelocations32(PCHAR ImageName)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%p): stub\n", ImageName);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SplitSymbols32 (IMAGEHLP.35)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SplitSymbols32(
|
||||||
|
LPSTR ImageName, LPSTR SymbolsPath,
|
||||||
|
LPSTR SymbolFilePath, DWORD Flags)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%s, %s, %s, %ld): stub\n",
|
||||||
|
debugstr_a(ImageName), debugstr_a(SymbolsPath),
|
||||||
|
debugstr_a(SymbolFilePath), Flags
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* UpdateDebugInfoFile32 (IMAGEHLP.60)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI UpdateDebugInfoFile32(
|
||||||
|
LPSTR ImageFileName, LPSTR SymbolPath,
|
||||||
|
LPSTR DebugFilePath, PIMAGE_NT_HEADERS32 NtHeaders)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%s, %s, %s, %p): stub\n",
|
||||||
|
debugstr_a(ImageFileName), debugstr_a(SymbolPath),
|
||||||
|
debugstr_a(DebugFilePath), NtHeaders
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* UpdateDebugInfoFileEx32 (IMAGEHLP.?)
|
||||||
|
* FIXME
|
||||||
|
* Function has no ordinal.
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI UpdateDebugInfoFileEx32(
|
||||||
|
LPSTR ImageFileName, LPSTR SymbolPath, LPSTR DebugFilePath,
|
||||||
|
PIMAGE_NT_HEADERS32 NtHeaders, DWORD OldChecksum)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%s, %s, %s, %p, %ld): stub\n",
|
||||||
|
debugstr_a(ImageFileName), debugstr_a(SymbolPath),
|
||||||
|
debugstr_a(DebugFilePath), NtHeaders, OldChecksum
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
|
@ -0,0 +1,244 @@
|
||||||
|
/*
|
||||||
|
* IMAGEHLP library
|
||||||
|
*
|
||||||
|
* Copyright 1998 Patrik Stridvall
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "windows.h"
|
||||||
|
#include "winerror.h"
|
||||||
|
#include "wintypes.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "imagehlp.h"
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymCleanup32 (IMAGEHLP.37)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SymCleanup32(HANDLE32 hProcess)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x): stub\n", hProcess);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymEnumerateModules32 (IMAGEHLP.38)
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL32 WINAPI SymEnumerateModules32(
|
||||||
|
HANDLE32 hProcess, PSYM_ENUMMODULES_CALLBACK32 EnumModulesCallback,
|
||||||
|
PVOID UserContext)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %p, %p): stub\n",
|
||||||
|
hProcess, EnumModulesCallback, UserContext
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymEnumerateSymbols32 (IMAGEHLP.39)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SymEnumerateSymbols32(
|
||||||
|
HANDLE32 hProcess, DWORD BaseOfDll,
|
||||||
|
PSYM_ENUMSYMBOLS_CALLBACK32 EnumSymbolsCallback, PVOID UserContext)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %p, %p): stub\n",
|
||||||
|
hProcess, EnumSymbolsCallback, UserContext
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymFunctionTableAccess32 (IMAGEHLP.40)
|
||||||
|
*/
|
||||||
|
PVOID WINAPI SymFunctionTableAccess32(HANDLE32 hProcess, DWORD AddrBase)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, 0x%08lx): stub\n", hProcess, AddrBase);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymGetModuleBase32 (IMAGEHLP.41)
|
||||||
|
*/
|
||||||
|
DWORD WINAPI SymGetModuleBase32(HANDLE32 hProcess, DWORD dwAddr)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, 0x%08lx): stub\n", hProcess, dwAddr);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymGetModuleInfo32 (IMAGEHLP.42)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SymGetModuleInfo32(
|
||||||
|
HANDLE32 hProcess, DWORD dwAddr,
|
||||||
|
PIMAGEHLP_MODULE32 ModuleInfo)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, 0x%08lx, %p): stub\n",
|
||||||
|
hProcess, dwAddr, ModuleInfo
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymGetOptions32 (IMAGEHLP.43)
|
||||||
|
*/
|
||||||
|
DWORD WINAPI SymGetOptions32()
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(): stub\n");
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymGetSearchPath32 (IMAGEHLP.44)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SymGetSearchPath32(
|
||||||
|
HANDLE32 hProcess, LPSTR szSearchPath, DWORD SearchPathLength)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %s, %ld): stub\n",
|
||||||
|
hProcess, debugstr_an(szSearchPath,SearchPathLength), SearchPathLength
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymGetSymFromAddr32 (IMAGEHLP.45)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SymGetSymFromAddr32(
|
||||||
|
HANDLE32 hProcess, DWORD dwAddr,
|
||||||
|
PDWORD pdwDisplacement, PIMAGEHLP_SYMBOL32 Symbol)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, 0x%08lx, %p, %p): stub\n",
|
||||||
|
hProcess, dwAddr, pdwDisplacement, Symbol
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymGetSymFromName32 (IMAGEHLP.46)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SymGetSymFromName32(
|
||||||
|
HANDLE32 hProcess, LPSTR Name, PIMAGEHLP_SYMBOL32 Symbol)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %s, %p): stub\n", hProcess, Name, Symbol);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymGetSymNext32 (IMAGEHLP.47)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SymGetSymNext32(
|
||||||
|
HANDLE32 hProcess, PIMAGEHLP_SYMBOL32 Symbol)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %p): stub\n", hProcess, Symbol);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymGetSymPrev32 (IMAGEHLP.48)
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL32 WINAPI SymGetSymPrev32(
|
||||||
|
HANDLE32 hProcess, PIMAGEHLP_SYMBOL32 Symbol)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %p): stub\n", hProcess, Symbol);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymInitialize32 (IMAGEHLP.49)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SymInitialize32(
|
||||||
|
HANDLE32 hProcess, LPSTR UserSearchPath, BOOL32 fInvadeProcess)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %s, %d): stub\n",
|
||||||
|
hProcess, debugstr_a(UserSearchPath), fInvadeProcess
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymLoadModule32 (IMAGEHLP.50)
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL32 WINAPI SymLoadModule32(
|
||||||
|
HANDLE32 hProcess, HANDLE32 hFile, LPSTR ImageName, LPSTR ModuleName,
|
||||||
|
DWORD BaseOfDll, DWORD SizeOfDll)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, 0x%08x, %s, %s, %ld, %ld): stub\n",
|
||||||
|
hProcess, hFile, debugstr_a(ImageName), debugstr_a(ModuleName),
|
||||||
|
BaseOfDll, SizeOfDll
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymRegisterCallback32 (IMAGEHLP.51)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SymRegisterCallback32(
|
||||||
|
HANDLE32 hProcess, PSYMBOL_REGISTERED_CALLBACK32 CallbackFunction,
|
||||||
|
PVOID UserContext)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %p, %p): stub\n",
|
||||||
|
hProcess, CallbackFunction, UserContext
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymSetOptions32 (IMAGEHLP.52)
|
||||||
|
*/
|
||||||
|
DWORD WINAPI SymSetOptions32(DWORD SymOptions)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%lx): stub\n", SymOptions);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymSetSearchPath32 (IMAGEHLP.53)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SymSetSearchPath32(HANDLE32 hProcess, LPSTR szSearchPath)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, %s): stub\n",
|
||||||
|
hProcess, debugstr_a(szSearchPath)
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymUnDName32 (IMAGEHLP.54)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SymUnDName32(
|
||||||
|
PIMAGEHLP_SYMBOL32 sym, LPSTR UnDecName, DWORD UnDecNameLength)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(%p, %s, %ld): stub\n",
|
||||||
|
sym, UnDecName, UnDecNameLength
|
||||||
|
);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SymUnloadModule32 (IMAGEHLP.55)
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SymUnloadModule32(
|
||||||
|
HANDLE32 hProcess, DWORD BaseOfDll)
|
||||||
|
{
|
||||||
|
FIXME(imagehlp, "(0x%08x, 0x%08lx): stub\n", hProcess, BaseOfDll);
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
|
@ -0,0 +1,848 @@
|
||||||
|
/*
|
||||||
|
* imagehlp.h - Declarations for IMAGEHLP
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __WINE_IMAGEHLP_H
|
||||||
|
#define __WINE_IMAGEHLP_H
|
||||||
|
|
||||||
|
#include "toolhelp.h"
|
||||||
|
#include "wintypes.h"
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* Types
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define ANYSIZE_ARRAY 1 /* FIXME: Move to wintypes.h */
|
||||||
|
|
||||||
|
typedef unsigned char UCHAR; /* FIXME: Move to wintypes.h */
|
||||||
|
typedef UCHAR *PUCHAR; /* FIXME: Move to wintypes.h */
|
||||||
|
typedef CHAR *PCHAR; /* FIXME: Move to wintypes.h */
|
||||||
|
typedef unsigned char boolean; /* FIXME: Move to wintypes.h */
|
||||||
|
typedef boolean BOOLEAN; /* FIXME: Move to wintypes.h */
|
||||||
|
typedef void *PVOID; /* FIXME: Move to wintypes.h */
|
||||||
|
typedef DWORD *PDWORD; /* FIXME: Move to wintypes.h */
|
||||||
|
typedef BYTE *PBYTE; /* FIXME: Move to wintypes.h */
|
||||||
|
typedef ULONG *PULONG; /* FIXME: Move to wintypes.h */
|
||||||
|
typedef unsigned short USHORT; /* FIXME: Move to wintypes.h */
|
||||||
|
typedef const void *PCVOID; /* FIXME: Move to wintypes.h */
|
||||||
|
typedef UINT32 *PUINT32; /* FIXME: Move to wintypes.h */
|
||||||
|
|
||||||
|
typedef struct _LIST_ENTRY32 {
|
||||||
|
struct _LIST_ENTRY32 *Flink;
|
||||||
|
struct _LIST_ENTRY32 *Blink;
|
||||||
|
} LIST_ENTRY32, *PLIST_ENTRY32; /* FIXME: Move to wintypes.h */
|
||||||
|
|
||||||
|
typedef struct _SINGLE_LIST_ENTRY32 {
|
||||||
|
struct _SINGLE_LIST_ENTRY32 *Next;
|
||||||
|
} SINGLE_LIST_ENTRY32, *PSINGLE_LIST_ENTRY32; /* FIXME: Move to wintypes.h */
|
||||||
|
|
||||||
|
/* FIXME: Move to wintypes.h */
|
||||||
|
#define FIELD_OFFSET(type, field) \
|
||||||
|
((LONG)(INT32)&(((type *)0)->field))
|
||||||
|
|
||||||
|
/* FIXME: Move to wintypes.h */
|
||||||
|
#define CONTAINING_RECORD(address, type, field) \
|
||||||
|
((type *)((PCHAR)(address) - (PCHAR)(&((type *)0)->field)))
|
||||||
|
|
||||||
|
typedef PVOID DIGEST_HANDLE32;
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* Enums/Defines
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef enum _IMAGEHLP_STATUS_REASON32 {
|
||||||
|
BindOutOfMemory,
|
||||||
|
BindRvaToVaFailed,
|
||||||
|
BindNoRoomInImage,
|
||||||
|
BindImportModuleFailed,
|
||||||
|
BindImportProcedureFailed,
|
||||||
|
BindImportModule,
|
||||||
|
BindImportProcedure,
|
||||||
|
BindForwarder,
|
||||||
|
BindForwarderNOT,
|
||||||
|
BindImageModified,
|
||||||
|
BindExpandFileHeaders,
|
||||||
|
BindImageComplete,
|
||||||
|
BindMismatchedSymbols,
|
||||||
|
BindSymbolsNotUpdated
|
||||||
|
} IMAGEHLP_STATUS_REASON32;
|
||||||
|
|
||||||
|
#define BIND_NO_BOUND_IMPORTS 0x00000001
|
||||||
|
#define BIND_NO_UPDATE 0x00000002
|
||||||
|
#define BIND_ALL_IMAGES 0x00000004
|
||||||
|
#define BIND_CACHE_IMPORT_DLLS 0x00000008
|
||||||
|
|
||||||
|
#define CERT_PE_IMAGE_DIGEST_DEBUG_INFO 0x01
|
||||||
|
#define CERT_PE_IMAGE_DIGEST_RESOURCES 0x02
|
||||||
|
#define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 0x04
|
||||||
|
#define CERT_PE_IMAGE_DIGEST_NON_PE_INFO 0x08
|
||||||
|
|
||||||
|
#define CERT_SECTION_TYPE_ANY 0xFF
|
||||||
|
|
||||||
|
#define WIN_CERT_REVISION_1_0 0x0100
|
||||||
|
#define WIN_CERT_REVISION_2_0 0x0200
|
||||||
|
|
||||||
|
#define WIN_CERT_TYPE_X509 0x0001 /* X.509 Certificate */
|
||||||
|
#define WIN_CERT_TYPE_PKCS_SIGNED_DATA 0x0002 /* PKCS SignedData */
|
||||||
|
#define WIN_CERT_TYPE_RESERVED_1 0x0003 /* Reserved */
|
||||||
|
|
||||||
|
#define SPLITSYM_REMOVE_PRIVATE 0x00000001
|
||||||
|
#define SPLITSYM_EXTRACT_ALL 0x00000002
|
||||||
|
#define SPLITSYM_SYMBOLPATH_IS_SRC 0x00000004
|
||||||
|
|
||||||
|
#define IMAGE_DEBUG_TYPE_UNKNOWN 0
|
||||||
|
#define IMAGE_DEBUG_TYPE_COFF 1
|
||||||
|
#define IMAGE_DEBUG_TYPE_CODEVIEW 2
|
||||||
|
#define IMAGE_DEBUG_TYPE_FPO 3
|
||||||
|
#define IMAGE_DEBUG_TYPE_MISC 4
|
||||||
|
#define IMAGE_DEBUG_TYPE_EXCEPTION 5
|
||||||
|
#define IMAGE_DEBUG_TYPE_FIXUP 6
|
||||||
|
#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7
|
||||||
|
#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8
|
||||||
|
#define IMAGE_DEBUG_TYPE_BORLAND 9
|
||||||
|
#define IMAGE_DEBUG_TYPE_RESERVED10 10
|
||||||
|
|
||||||
|
#define FRAME_FPO 0
|
||||||
|
#define FRAME_TRAP 1
|
||||||
|
#define FRAME_TSS 2
|
||||||
|
#define FRAME_NONFPO 3
|
||||||
|
|
||||||
|
#define CHECKSUM_SUCCESS 0
|
||||||
|
#define CHECKSUM_OPEN_FAILURE 1
|
||||||
|
#define CHECKSUM_MAP_FAILURE 2
|
||||||
|
#define CHECKSUM_MAPVIEW_FAILURE 3
|
||||||
|
#define CHECKSUM_UNICODE_FAILURE 4
|
||||||
|
|
||||||
|
typedef enum _ADRESS_MODE32 {
|
||||||
|
AddrMode1616,
|
||||||
|
AddrMode1632,
|
||||||
|
AddrModeReal,
|
||||||
|
AddrModeFlat
|
||||||
|
} ADDRESS_MODE32;
|
||||||
|
|
||||||
|
#define SYMOPT_CASE_INSENSITIVE 0x00000001
|
||||||
|
#define SYMOPT_UNDNAME 0x00000002
|
||||||
|
#define SYMOPT_DEFERRED_LOADS 0x00000004
|
||||||
|
#define SYMOPT_NO_CPP 0x00000008
|
||||||
|
#define SYMOPT_LOAD_LINES 0x00000010
|
||||||
|
#define SYMOPT_OMAP_FIND_NEAREST 0x00000020
|
||||||
|
|
||||||
|
#define SYMF_OMAP_GENERATED 0x00000001
|
||||||
|
#define SYMF_OMAP_MODIFIED 0x00000002
|
||||||
|
|
||||||
|
typedef enum _SYM_TYPE32 {
|
||||||
|
SymNone,
|
||||||
|
SymCoff,
|
||||||
|
SymCv,
|
||||||
|
SymPdb,
|
||||||
|
SymExport,
|
||||||
|
SymDeferred,
|
||||||
|
SymSym /* .sym file */
|
||||||
|
} SYM_TYPE32;
|
||||||
|
|
||||||
|
#define UNDNAME_COMPLETE 0x0000
|
||||||
|
#define UNDNAME_NO_LEADING_UNDERSCORES 0x0001
|
||||||
|
#define UNDNAME_NO_MS_KEYWORDS 0x0002
|
||||||
|
#define UNDNAME_NO_FUNCTION_RETURNS 0x0004
|
||||||
|
#define UNDNAME_NO_ALLOCATION_MODEL 0x0008
|
||||||
|
#define UNDNAME_NO_ALLOCATION_LANGUAGE 0x0010
|
||||||
|
#define UNDNAME_NO_MS_THISTYPE 0x0020
|
||||||
|
#define UNDNAME_NO_CV_THISTYPE 0x0040
|
||||||
|
#define UNDNAME_NO_THISTYPE 0x0060
|
||||||
|
#define UNDNAME_NO_ACCESS_SPECIFIERS 0x0080
|
||||||
|
#define UNDNAME_NO_THROW_SIGNATURES 0x0100
|
||||||
|
#define UNDNAME_NO_MEMBER_TYPE 0x0200
|
||||||
|
#define UNDNAME_NO_RETURN_UDT_MODEL 0x0400
|
||||||
|
#define UNDNAME_32_BIT_DECODE 0x0800
|
||||||
|
#define UNDNAME_NAME_ONLY 0x1000
|
||||||
|
#define UNDNAME_NO_ARGUMENTS 0x2000
|
||||||
|
#define UNDNAME_NO_SPECIAL_SYMS 0x4000
|
||||||
|
|
||||||
|
#define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001
|
||||||
|
#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002
|
||||||
|
#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003
|
||||||
|
#define CBA_SYMBOLS_UNLOADED 0x00000004
|
||||||
|
#define CBA_DUPLICATE_SYMBOL 0x00000005
|
||||||
|
|
||||||
|
#define IMAGE_DOS_SIGNATURE 0x5A4D /* MZ */
|
||||||
|
#define IMAGE_OS2_SIGNATURE 0x454E /* NE */
|
||||||
|
#define IMAGE_OS2_SIGNATURE_LE 0x454C /* LE */
|
||||||
|
#define IMAGE_VXD_SIGNATURE 0x454C /* LE */
|
||||||
|
#define IMAGE_NT_SIGNATURE 0x00004550 /* PE00 */
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* Structures
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct _IMAGE_DATA_DIRECTORY32 {
|
||||||
|
DWORD VirtualAddress;
|
||||||
|
DWORD Size;
|
||||||
|
} IMAGE_DATA_DIRECTORY32, *PIMAGE_DATA_DIRECTORY32;
|
||||||
|
|
||||||
|
#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
|
||||||
|
|
||||||
|
typedef struct _IMAGE_OPTIONAL_HEADER32 {
|
||||||
|
|
||||||
|
/* Standard fields */
|
||||||
|
|
||||||
|
WORD Magic;
|
||||||
|
BYTE MajorLinkerVersion;
|
||||||
|
BYTE MinorLinkerVersion;
|
||||||
|
DWORD SizeOfCode;
|
||||||
|
DWORD SizeOfInitializedData;
|
||||||
|
DWORD SizeOfUninitializedData;
|
||||||
|
DWORD AddressOfEntryPoint;
|
||||||
|
DWORD BaseOfCode;
|
||||||
|
DWORD BaseOfData;
|
||||||
|
|
||||||
|
/* NT additional fields */
|
||||||
|
|
||||||
|
DWORD ImageBase;
|
||||||
|
DWORD SectionAlignment;
|
||||||
|
DWORD FileAlignment;
|
||||||
|
WORD MajorOperatingSystemVersion;
|
||||||
|
WORD MinorOperatingSystemVersion;
|
||||||
|
WORD MajorImageVersion;
|
||||||
|
WORD MinorImageVersion;
|
||||||
|
WORD MajorSubsystemVersion;
|
||||||
|
WORD MinorSubsystemVersion;
|
||||||
|
DWORD Win32VersionValue;
|
||||||
|
DWORD SizeOfImage;
|
||||||
|
DWORD SizeOfHeaders;
|
||||||
|
DWORD CheckSum;
|
||||||
|
WORD Subsystem;
|
||||||
|
WORD DllCharacteristics;
|
||||||
|
DWORD SizeOfStackReserve;
|
||||||
|
DWORD SizeOfStackCommit;
|
||||||
|
DWORD SizeOfHeapReserve;
|
||||||
|
DWORD SizeOfHeapCommit;
|
||||||
|
DWORD LoaderFlags;
|
||||||
|
DWORD NumberOfRvaAndSizes;
|
||||||
|
IMAGE_DATA_DIRECTORY32 DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
|
||||||
|
} IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;
|
||||||
|
|
||||||
|
typedef struct _IMAGE_FILE_HEADER32 {
|
||||||
|
WORD Machine;
|
||||||
|
WORD NumberOfSections;
|
||||||
|
DWORD TimeDateStamp;
|
||||||
|
DWORD PointerToSymbolTable;
|
||||||
|
DWORD NumberOfSymbols;
|
||||||
|
WORD SizeOfOptionalHeader;
|
||||||
|
WORD Characteristics;
|
||||||
|
} IMAGE_FILE_HEADER32, *PIMAGE_FILE_HEADER32;
|
||||||
|
|
||||||
|
typedef struct _IMAGE_NT_HEADERS32 {
|
||||||
|
DWORD Signature;
|
||||||
|
IMAGE_FILE_HEADER32 FileHeader;
|
||||||
|
IMAGE_OPTIONAL_HEADER32 OptionalHeader;
|
||||||
|
} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
|
||||||
|
|
||||||
|
#define IMAGE_SIZEOF_SHORT_NAME 8
|
||||||
|
|
||||||
|
typedef struct _IMAGE_SECTION_HEADER32 {
|
||||||
|
BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
|
||||||
|
union {
|
||||||
|
DWORD PhysicalAddress;
|
||||||
|
DWORD VirtualSize;
|
||||||
|
} Misc;
|
||||||
|
DWORD VirtualAddress;
|
||||||
|
DWORD SizeOfRawData;
|
||||||
|
DWORD PointerToRawData;
|
||||||
|
DWORD PointerToRelocations;
|
||||||
|
DWORD PointerToLinenumbers;
|
||||||
|
WORD NumberOfRelocations;
|
||||||
|
WORD NumberOfLinenumbers;
|
||||||
|
DWORD Characteristics;
|
||||||
|
} IMAGE_SECTION_HEADER32, *PIMAGE_SECTION_HEADER32;
|
||||||
|
|
||||||
|
typedef struct _LOADED_IMAGE32 {
|
||||||
|
LPSTR ModuleName;
|
||||||
|
HANDLE32 hFile;
|
||||||
|
PUCHAR MappedAddress;
|
||||||
|
PIMAGE_NT_HEADERS32 FileHeader;
|
||||||
|
PIMAGE_SECTION_HEADER32 LastRvaSection;
|
||||||
|
ULONG NumberOfSections;
|
||||||
|
PIMAGE_SECTION_HEADER32 Sections;
|
||||||
|
ULONG Characteristics;
|
||||||
|
BOOLEAN fSystemImage;
|
||||||
|
BOOLEAN fDOSImage;
|
||||||
|
LIST_ENTRY32 Links;
|
||||||
|
ULONG SizeOfImage;
|
||||||
|
} LOADED_IMAGE32, *PLOADED_IMAGE32;
|
||||||
|
|
||||||
|
typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY32 {
|
||||||
|
DWORD Characteristics;
|
||||||
|
DWORD TimeDateStamp;
|
||||||
|
WORD MajorVersion;
|
||||||
|
WORD MinorVersion;
|
||||||
|
DWORD GlobalFlagsClear;
|
||||||
|
DWORD GlobalFlagsSet;
|
||||||
|
DWORD CriticalSectionDefaultTimeout;
|
||||||
|
DWORD DeCommitFreeBlockThreshold;
|
||||||
|
DWORD DeCommitTotalFreeThreshold;
|
||||||
|
PVOID LockPrefixTable;
|
||||||
|
DWORD MaximumAllocationSize;
|
||||||
|
DWORD VirtualMemoryThreshold;
|
||||||
|
DWORD ProcessHeapFlags;
|
||||||
|
DWORD ProcessAffinityMask;
|
||||||
|
WORD CSDVersion;
|
||||||
|
WORD Reserved1;
|
||||||
|
PVOID EditList;
|
||||||
|
DWORD Reserved[1];
|
||||||
|
} IMAGE_LOAD_CONFIG_DIRECTORY32, *PIMAGE_LOAD_CONFIG_DIRECTORY32;
|
||||||
|
|
||||||
|
typedef struct _WIN_CERTIFICATE32 {
|
||||||
|
DWORD dwLength;
|
||||||
|
WORD wRevision; /* WIN_CERT_REVISON_xxx */
|
||||||
|
WORD wCertificateType; /* WIN_CERT_TYPE_xxx */
|
||||||
|
BYTE bCertificate[ANYSIZE_ARRAY];
|
||||||
|
} WIN_CERTIFICATE32, *PWIN_CERTIFICATE32;
|
||||||
|
|
||||||
|
typedef struct _API_VERSION32 {
|
||||||
|
USHORT MajorVersion;
|
||||||
|
USHORT MinorVersion;
|
||||||
|
USHORT Revision;
|
||||||
|
USHORT Reserved;
|
||||||
|
} API_VERSION32, *PAPI_VERSION32;
|
||||||
|
|
||||||
|
typedef struct _IMAGE_FUNCTION_ENTRY32 {
|
||||||
|
DWORD StartingAddress;
|
||||||
|
DWORD EndingAddress;
|
||||||
|
DWORD EndOfPrologue;
|
||||||
|
} IMAGE_FUNCTION_ENTRY32, *PIMAGE_FUNCTION_ENTRY32;
|
||||||
|
|
||||||
|
typedef struct _IMAGE_DEBUG_DIRECTORY32 {
|
||||||
|
DWORD Characteristics;
|
||||||
|
DWORD TimeDateStamp;
|
||||||
|
WORD MajorVersion;
|
||||||
|
WORD MinorVersion;
|
||||||
|
DWORD Type;
|
||||||
|
DWORD SizeOfData;
|
||||||
|
DWORD AddressOfRawData;
|
||||||
|
DWORD PointerToRawData;
|
||||||
|
} IMAGE_DEBUG_DIRECTORY32, *PIMAGE_DEBUG_DIRECTORY32;
|
||||||
|
|
||||||
|
typedef struct _IMAGE_COFF_SYMBOLS_HEADER32 {
|
||||||
|
DWORD NumberOfSymbols;
|
||||||
|
DWORD LvaToFirstSymbol;
|
||||||
|
DWORD NumberOfLinenumbers;
|
||||||
|
DWORD LvaToFirstLinenumber;
|
||||||
|
DWORD RvaToFirstByteOfCode;
|
||||||
|
DWORD RvaToLastByteOfCode;
|
||||||
|
DWORD RvaToFirstByteOfData;
|
||||||
|
DWORD RvaToLastByteOfData;
|
||||||
|
} IMAGE_COFF_SYMBOLS_HEADER32, *PIMAGE_COFF_SYMBOLS_HEADER32;
|
||||||
|
|
||||||
|
typedef struct _FPO_DATA32 {
|
||||||
|
DWORD ulOffStart;
|
||||||
|
DWORD cbProcSize;
|
||||||
|
DWORD cdwLocals;
|
||||||
|
WORD cdwParams;
|
||||||
|
WORD cbProlog : 8;
|
||||||
|
WORD cbRegs : 3;
|
||||||
|
WORD fHasSEH : 1;
|
||||||
|
WORD fUseBP : 1;
|
||||||
|
WORD reserved : 1;
|
||||||
|
WORD cbFrame : 2;
|
||||||
|
} FPO_DATA32, *PFPO_DATA32;
|
||||||
|
|
||||||
|
typedef struct _IMAGE_DEBUG_INFORMATION32 {
|
||||||
|
LIST_ENTRY32 List;
|
||||||
|
DWORD Size;
|
||||||
|
PVOID MappedBase;
|
||||||
|
USHORT Machine;
|
||||||
|
USHORT Characteristics;
|
||||||
|
DWORD CheckSum;
|
||||||
|
DWORD ImageBase;
|
||||||
|
DWORD SizeOfImage;
|
||||||
|
|
||||||
|
DWORD NumberOfSections;
|
||||||
|
PIMAGE_SECTION_HEADER32 Sections;
|
||||||
|
|
||||||
|
DWORD ExportedNamesSize;
|
||||||
|
LPSTR ExportedNames;
|
||||||
|
|
||||||
|
DWORD NumberOfFunctionTableEntries;
|
||||||
|
PIMAGE_FUNCTION_ENTRY32 FunctionTableEntries;
|
||||||
|
DWORD LowestFunctionStartingAddress;
|
||||||
|
DWORD HighestFunctionEndingAddress;
|
||||||
|
|
||||||
|
DWORD NumberOfFpoTableEntries;
|
||||||
|
PFPO_DATA32 FpoTableEntries;
|
||||||
|
|
||||||
|
DWORD SizeOfCoffSymbols;
|
||||||
|
PIMAGE_COFF_SYMBOLS_HEADER32 CoffSymbols;
|
||||||
|
|
||||||
|
DWORD SizeOfCodeViewSymbols;
|
||||||
|
PVOID CodeViewSymbols;
|
||||||
|
|
||||||
|
LPSTR ImageFilePath;
|
||||||
|
LPSTR ImageFileName;
|
||||||
|
LPSTR DebugFilePath;
|
||||||
|
|
||||||
|
DWORD TimeDateStamp;
|
||||||
|
|
||||||
|
BOOL32 RomImage;
|
||||||
|
PIMAGE_DEBUG_DIRECTORY32 DebugDirectory;
|
||||||
|
DWORD NumberOfDebugDirectories;
|
||||||
|
|
||||||
|
DWORD Reserved[3];
|
||||||
|
} IMAGE_DEBUG_INFORMATION32, *PIMAGE_DEBUG_INFORMATION32;
|
||||||
|
|
||||||
|
typedef struct _ADDRESS32 {
|
||||||
|
DWORD Offset;
|
||||||
|
WORD Segment;
|
||||||
|
ADDRESS_MODE32 Mode;
|
||||||
|
} ADDRESS32, *PADDRESS32;
|
||||||
|
|
||||||
|
typedef struct _KDHELP32 {
|
||||||
|
DWORD Thread;
|
||||||
|
DWORD ThCallbackStack;
|
||||||
|
DWORD NextCallback;
|
||||||
|
DWORD FramePointer;
|
||||||
|
DWORD KiCallUserMode;
|
||||||
|
DWORD KeUserCallbackDispatcher;
|
||||||
|
DWORD SystemRangeStart;
|
||||||
|
} KDHELP32, *PKDHELP32;
|
||||||
|
|
||||||
|
typedef struct _STACKFRAME32 {
|
||||||
|
ADDRESS32 AddrPC;
|
||||||
|
ADDRESS32 AddrReturn;
|
||||||
|
ADDRESS32 AddrFrame;
|
||||||
|
ADDRESS32 AddrStack;
|
||||||
|
PVOID FuncTableEntry;
|
||||||
|
DWORD Params[4];
|
||||||
|
BOOL32 Far;
|
||||||
|
BOOL32 Virtual;
|
||||||
|
DWORD Reserved[3];
|
||||||
|
KDHELP32 KdHelp;
|
||||||
|
} STACKFRAME32, *PSTACKFRAME32;
|
||||||
|
|
||||||
|
typedef struct _IMAGEHLP_SYMBOL32 {
|
||||||
|
DWORD SizeOfStruct;
|
||||||
|
DWORD Address;
|
||||||
|
DWORD Size;
|
||||||
|
DWORD Flags;
|
||||||
|
DWORD MaxNameLength;
|
||||||
|
CHAR Name[ANYSIZE_ARRAY];
|
||||||
|
} IMAGEHLP_SYMBOL32, *PIMAGEHLP_SYMBOL32;
|
||||||
|
|
||||||
|
typedef struct _IMAGEHLP_MODULE32 {
|
||||||
|
DWORD SizeOfStruct;
|
||||||
|
DWORD BaseOfImage;
|
||||||
|
DWORD ImageSize;
|
||||||
|
DWORD TimeDateStamp;
|
||||||
|
DWORD CheckSum;
|
||||||
|
DWORD NumSyms;
|
||||||
|
SYM_TYPE32 SymType;
|
||||||
|
CHAR ModuleName[32];
|
||||||
|
CHAR ImageName[256];
|
||||||
|
CHAR LoadedImageName[256];
|
||||||
|
} IMAGEHLP_MODULE32, *PIMAGEHLP_MODULE32;
|
||||||
|
|
||||||
|
typedef struct _IMAGEHLP_LINE32 {
|
||||||
|
DWORD SizeOfStruct;
|
||||||
|
DWORD Key;
|
||||||
|
DWORD LineNumber;
|
||||||
|
PCHAR FileName;
|
||||||
|
DWORD Address;
|
||||||
|
} IMAGEHLP_LINE32, *PIMAGEHLP_LINE32;
|
||||||
|
|
||||||
|
typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD32 {
|
||||||
|
DWORD SizeOfStruct;
|
||||||
|
DWORD BaseOfImage;
|
||||||
|
DWORD CheckSum;
|
||||||
|
DWORD TimeDateStamp;
|
||||||
|
CHAR FileName[MAX_PATH];
|
||||||
|
BOOLEAN Reparse;
|
||||||
|
} IMAGEHLP_DEFERRED_SYMBOL_LOAD32, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD32;
|
||||||
|
|
||||||
|
typedef struct _IMAGEHLP_DUPLICATE_SYMBOL32 {
|
||||||
|
DWORD SizeOfStruct;
|
||||||
|
DWORD NumberOfDups;
|
||||||
|
PIMAGEHLP_SYMBOL32 Symbol;
|
||||||
|
ULONG SelectedSymbol;
|
||||||
|
} IMAGEHLP_DUPLICATE_SYMBOL32, *PIMAGEHLP_DUPLICATE_SYMBOL32;
|
||||||
|
|
||||||
|
typedef struct _IMAGE_DOS_HEADER32 {
|
||||||
|
WORD e_magic;
|
||||||
|
WORD e_cblp;
|
||||||
|
WORD e_cp;
|
||||||
|
WORD e_crlc;
|
||||||
|
WORD e_cparhdr;
|
||||||
|
WORD e_minalloc;
|
||||||
|
WORD e_maxalloc;
|
||||||
|
WORD e_ss;
|
||||||
|
WORD e_sp;
|
||||||
|
WORD e_csum;
|
||||||
|
WORD e_ip;
|
||||||
|
WORD e_cs;
|
||||||
|
WORD e_lfarlc;
|
||||||
|
WORD e_ovno;
|
||||||
|
WORD e_res[4];
|
||||||
|
WORD e_oemid;
|
||||||
|
WORD e_oeminfo;
|
||||||
|
WORD e_res2[10];
|
||||||
|
LONG e_lfanew;
|
||||||
|
} IMAGE_DOS_HEADER32, *PIMAGE_DOS_HEADER32;
|
||||||
|
|
||||||
|
typedef struct _IMAGE_OS2_HEADER32 {
|
||||||
|
WORD ne_magic;
|
||||||
|
CHAR ne_ver;
|
||||||
|
CHAR ne_rev;
|
||||||
|
WORD ne_enttab;
|
||||||
|
WORD ne_cbenttab;
|
||||||
|
LONG ne_crc;
|
||||||
|
WORD ne_flags;
|
||||||
|
WORD ne_autodata;
|
||||||
|
WORD ne_heap;
|
||||||
|
WORD ne_stack;
|
||||||
|
LONG ne_csip;
|
||||||
|
LONG ne_sssp;
|
||||||
|
WORD ne_cseg;
|
||||||
|
WORD ne_cmod;
|
||||||
|
WORD ne_cbnrestab;
|
||||||
|
WORD ne_segtab;
|
||||||
|
WORD ne_rsrctab;
|
||||||
|
WORD ne_restab;
|
||||||
|
WORD ne_modtab;
|
||||||
|
WORD ne_imptab;
|
||||||
|
LONG ne_nrestab;
|
||||||
|
WORD ne_cmovent;
|
||||||
|
WORD ne_align;
|
||||||
|
WORD ne_cres;
|
||||||
|
BYTE ne_exetyp;
|
||||||
|
BYTE ne_flagsothers;
|
||||||
|
WORD ne_pretthunks;
|
||||||
|
WORD ne_psegrefbytes;
|
||||||
|
WORD ne_swaparea;
|
||||||
|
WORD ne_expver;
|
||||||
|
} IMAGE_OS2_HEADER32, *PIMAGE_OS2_HEADER32;
|
||||||
|
|
||||||
|
typedef struct _IMAGE_VXD_HEADER32 {
|
||||||
|
WORD e32_magic;
|
||||||
|
BYTE e32_border;
|
||||||
|
BYTE e32_worder;
|
||||||
|
DWORD e32_level;
|
||||||
|
WORD e32_cpu;
|
||||||
|
WORD e32_os;
|
||||||
|
DWORD e32_ver;
|
||||||
|
DWORD e32_mflags;
|
||||||
|
DWORD e32_mpages;
|
||||||
|
DWORD e32_startobj;
|
||||||
|
DWORD e32_eip;
|
||||||
|
DWORD e32_stackobj;
|
||||||
|
DWORD e32_esp;
|
||||||
|
DWORD e32_pagesize;
|
||||||
|
DWORD e32_lastpagesize;
|
||||||
|
DWORD e32_fixupsize;
|
||||||
|
DWORD e32_fixupsum;
|
||||||
|
DWORD e32_ldrsize;
|
||||||
|
DWORD e32_ldrsum;
|
||||||
|
DWORD e32_objtab;
|
||||||
|
DWORD e32_objcnt;
|
||||||
|
DWORD e32_objmap;
|
||||||
|
DWORD e32_itermap;
|
||||||
|
DWORD e32_rsrctab;
|
||||||
|
DWORD e32_rsrccnt;
|
||||||
|
DWORD e32_restab;
|
||||||
|
DWORD e32_enttab;
|
||||||
|
DWORD e32_dirtab;
|
||||||
|
DWORD e32_dircnt;
|
||||||
|
DWORD e32_fpagetab;
|
||||||
|
DWORD e32_frectab;
|
||||||
|
DWORD e32_impmod;
|
||||||
|
DWORD e32_impmodcnt;
|
||||||
|
DWORD e32_impproc;
|
||||||
|
DWORD e32_pagesum;
|
||||||
|
DWORD e32_datapage;
|
||||||
|
DWORD e32_preload;
|
||||||
|
DWORD e32_nrestab;
|
||||||
|
DWORD e32_cbnrestab;
|
||||||
|
DWORD e32_nressum;
|
||||||
|
DWORD e32_autodata;
|
||||||
|
DWORD e32_debuginfo;
|
||||||
|
DWORD e32_debuglen;
|
||||||
|
DWORD e32_instpreload;
|
||||||
|
DWORD e32_instdemand;
|
||||||
|
DWORD e32_heapsize;
|
||||||
|
BYTE e32_res3[12];
|
||||||
|
DWORD e32_winresoff;
|
||||||
|
DWORD e32_winreslen;
|
||||||
|
WORD e32_devid;
|
||||||
|
WORD e32_ddkver;
|
||||||
|
} IMAGE_VXD_HEADER32, *PIMAGE_VXD_HEADER32;
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* Callbacks
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef BOOL32 (CALLBACK *PIMAGEHLP_STATUS_ROUTINE32)(
|
||||||
|
IMAGEHLP_STATUS_REASON32 Reason, LPSTR ImageName, LPSTR DllName,
|
||||||
|
ULONG Va, ULONG Parameter
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef BOOL32 (CALLBACK *PSYM_ENUMMODULES_CALLBACK32)(
|
||||||
|
LPSTR ModuleName, ULONG BaseOfDll, PVOID UserContext
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef BOOL32 (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK32)(
|
||||||
|
LPSTR SymbolName, ULONG SymbolAddress, ULONG SymbolSize,
|
||||||
|
PVOID UserContext
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef BOOL32 (CALLBACK *PENUMLOADED_MODULES_CALLBACK32)(
|
||||||
|
LPSTR ModuleName, ULONG ModuleBase, ULONG ModuleSize,
|
||||||
|
PVOID UserContext
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef BOOL32 (CALLBACK *PSYMBOL_REGISTERED_CALLBACK32)(
|
||||||
|
HANDLE32 hProcess, ULONG ActionCode, PVOID CallbackData,
|
||||||
|
PVOID UserContext
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef BOOL32 (CALLBACK *DIGEST_FUNCTION32)(
|
||||||
|
DIGEST_HANDLE32 refdata, PBYTE pData, DWORD dwLength
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef BOOL32 (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE32)(
|
||||||
|
HANDLE32 hProcess, PCVOID lpBaseAddress, PVOID lpBuffer,
|
||||||
|
DWORD nSize, PDWORD lpNumberOfBytesRead
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE32)(
|
||||||
|
HANDLE32 hProcess, DWORD AddrBase
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE32)(
|
||||||
|
HANDLE32 hProcess, DWORD ReturnAddress);
|
||||||
|
|
||||||
|
typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE32)(
|
||||||
|
HANDLE32 hProcess, HANDLE32 hThread, PADDRESS32 lpaddr
|
||||||
|
);
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* Functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL32 WINAPI BindImage32(
|
||||||
|
LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI BindImageEx32(
|
||||||
|
DWORD Flags, LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath,
|
||||||
|
PIMAGEHLP_STATUS_ROUTINE32 StatusRoutine
|
||||||
|
);
|
||||||
|
PIMAGE_NT_HEADERS32 WINAPI CheckSumMappedFile32(
|
||||||
|
LPVOID BaseAddress, DWORD FileLength,
|
||||||
|
LPDWORD HeaderSum, LPDWORD CheckSum
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI EnumerateLoadedModules32(
|
||||||
|
HANDLE32 hProcess,
|
||||||
|
PENUMLOADED_MODULES_CALLBACK32 EnumLoadedModulesCallback,
|
||||||
|
PVOID UserContext
|
||||||
|
);
|
||||||
|
HANDLE32 WINAPI FindDebugInfoFile32(
|
||||||
|
LPSTR FileName, LPSTR SymbolPath, LPSTR DebugFilePath
|
||||||
|
);
|
||||||
|
HANDLE32 WINAPI FindExecutableImage32(
|
||||||
|
LPSTR FileName, LPSTR SymbolPath, LPSTR ImageFilePath
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI GetImageConfigInformation32(
|
||||||
|
PLOADED_IMAGE32 LoadedImage,
|
||||||
|
PIMAGE_LOAD_CONFIG_DIRECTORY32 ImageConfigInformation
|
||||||
|
);
|
||||||
|
DWORD WINAPI GetImageUnusedHeaderBytes32(
|
||||||
|
PLOADED_IMAGE32 LoadedImage,
|
||||||
|
LPDWORD SizeUnusedHeaderBytes
|
||||||
|
);
|
||||||
|
DWORD WINAPI GetTimestampForLoadedLibrary32(
|
||||||
|
HMODULE32 Module
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI ImageAddCertificate32(
|
||||||
|
HANDLE32 FileHandle, PWIN_CERTIFICATE32 Certificate, PDWORD Index
|
||||||
|
);
|
||||||
|
PVOID WINAPI ImageDirectoryEntryToData32(
|
||||||
|
PVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI ImageEnumerateCertificates32(
|
||||||
|
HANDLE32 FileHandle, WORD TypeFilter, PDWORD CertificateCount,
|
||||||
|
PDWORD Indices, DWORD IndexCount
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI ImageGetCertificateData32(
|
||||||
|
HANDLE32 FileHandle, DWORD CertificateIndex,
|
||||||
|
PWIN_CERTIFICATE32 Certificate, PDWORD RequiredLength
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI ImageGetCertificateHeader32(
|
||||||
|
HANDLE32 FileHandle, DWORD CertificateIndex,
|
||||||
|
PWIN_CERTIFICATE32 Certificateheader
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI ImageGetDigestStream32(
|
||||||
|
HANDLE32 FileHandle, DWORD DigestLevel,
|
||||||
|
DIGEST_FUNCTION32 DigestFunction, DIGEST_HANDLE32 DigestHandle
|
||||||
|
);
|
||||||
|
PLOADED_IMAGE32 WINAPI ImageLoad32(
|
||||||
|
LPSTR DllName, LPSTR DllPath
|
||||||
|
);
|
||||||
|
PIMAGE_NT_HEADERS32 WINAPI ImageNtHeader32(
|
||||||
|
PVOID Base
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI ImageRemoveCertificate32(
|
||||||
|
HANDLE32 FileHandle, DWORD Index
|
||||||
|
);
|
||||||
|
PIMAGE_SECTION_HEADER32 WINAPI ImageRvaToSection32(
|
||||||
|
PIMAGE_NT_HEADERS32 NtHeaders, PVOID Base, ULONG Rva
|
||||||
|
);
|
||||||
|
PVOID WINAPI ImageRvaToVa32(
|
||||||
|
PIMAGE_NT_HEADERS32 NtHeaders, PVOID Base, ULONG Rva,
|
||||||
|
PIMAGE_SECTION_HEADER32 *LastRvaSection
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI ImageUnload32(
|
||||||
|
PLOADED_IMAGE32 LoadedImage
|
||||||
|
);
|
||||||
|
PAPI_VERSION32 WINAPI ImagehlpApiVersion32(
|
||||||
|
);
|
||||||
|
PAPI_VERSION32 WINAPI ImagehlpApiVersionEx32(
|
||||||
|
PAPI_VERSION32 AppVersion
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI MakeSureDirectoryPathExists32(
|
||||||
|
LPCSTR DirPath
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI MapAndLoad32(
|
||||||
|
LPSTR ImageName, LPSTR DllPath, PLOADED_IMAGE32 LoadedImage,
|
||||||
|
BOOL32 DotDll, BOOL32 ReadOnly
|
||||||
|
);
|
||||||
|
PIMAGE_DEBUG_INFORMATION32 WINAPI MapDebugInformation32(
|
||||||
|
HANDLE32 FileHandle, LPSTR FileName,
|
||||||
|
LPSTR SymbolPath, DWORD ImageBase
|
||||||
|
);
|
||||||
|
DWORD WINAPI MapFileAndCheckSum32A(
|
||||||
|
LPSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum
|
||||||
|
);
|
||||||
|
DWORD WINAPI MapFileAndCheckSum32W(
|
||||||
|
LPWSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI ReBaseImage32(
|
||||||
|
LPSTR CurrentImageName, LPSTR SymbolPath, BOOL32 fReBase,
|
||||||
|
BOOL32 fRebaseSysfileOk, BOOL32 fGoingDown, ULONG CheckImageSize,
|
||||||
|
ULONG *OldImageSize, ULONG *OldImageBase, ULONG *NewImageSize,
|
||||||
|
ULONG *NewImageBase, ULONG TimeStamp
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI RemovePrivateCvSymbolic32(
|
||||||
|
PCHAR DebugData, PCHAR *NewDebugData, ULONG *NewDebugSize
|
||||||
|
);
|
||||||
|
VOID WINAPI RemoveRelocations32(
|
||||||
|
PCHAR ImageName
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SearchTreeForFile32(
|
||||||
|
LPSTR RootPath, LPSTR InputPathName, LPSTR OutputPathBuffer
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SetImageConfigInformation32(
|
||||||
|
PLOADED_IMAGE32 LoadedImage,
|
||||||
|
PIMAGE_LOAD_CONFIG_DIRECTORY32 ImageConfigInformation
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SplitSymbols32(
|
||||||
|
LPSTR ImageName, LPSTR SymbolsPath,
|
||||||
|
LPSTR SymbolFilePath, DWORD Flags
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI StackWalk32(
|
||||||
|
DWORD MachineType, HANDLE32 hProcess, HANDLE32 hThread,
|
||||||
|
PSTACKFRAME32 StackFrame, PVOID ContextRecord,
|
||||||
|
PREAD_PROCESS_MEMORY_ROUTINE32 ReadMemoryRoutine,
|
||||||
|
PFUNCTION_TABLE_ACCESS_ROUTINE32 FunctionTableAccessRoutine,
|
||||||
|
PGET_MODULE_BASE_ROUTINE32 GetModuleBaseRoutine,
|
||||||
|
PTRANSLATE_ADDRESS_ROUTINE32 TranslateAddress
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymCleanup32(
|
||||||
|
HANDLE32 hProcess
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymEnumerateModules32(
|
||||||
|
HANDLE32 hProcess, PSYM_ENUMMODULES_CALLBACK32 EnumModulesCallback,
|
||||||
|
PVOID UserContext
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymEnumerateSymbols32(
|
||||||
|
HANDLE32 hProcess, DWORD BaseOfDll,
|
||||||
|
PSYM_ENUMSYMBOLS_CALLBACK32 EnumSymbolsCallback, PVOID UserContext
|
||||||
|
);
|
||||||
|
PVOID WINAPI SymFunctionTableAccess32(
|
||||||
|
HANDLE32 hProcess, DWORD AddrBase
|
||||||
|
);
|
||||||
|
DWORD WINAPI SymGetModuleBase32(
|
||||||
|
HANDLE32 hProcess, DWORD dwAddr
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymGetModuleInfo32(
|
||||||
|
HANDLE32 hProcess, DWORD dwAddr,
|
||||||
|
PIMAGEHLP_MODULE32 ModuleInfo
|
||||||
|
);
|
||||||
|
DWORD WINAPI SymGetOptions32(
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymGetSearchPath32(
|
||||||
|
HANDLE32 hProcess, LPSTR szSearchPath, DWORD SearchPathLength
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymGetSymFromAddr32(
|
||||||
|
HANDLE32 hProcess, DWORD dwAddr,
|
||||||
|
PDWORD pdwDisplacement, PIMAGEHLP_SYMBOL32 Symbol
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymGetSymFromName32(
|
||||||
|
HANDLE32 hProcess, LPSTR Name, PIMAGEHLP_SYMBOL32 Symbol
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymGetSymNext32(
|
||||||
|
HANDLE32 hProcess, PIMAGEHLP_SYMBOL32 Symbol
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymGetSymPrev32(
|
||||||
|
HANDLE32 hProcess, PIMAGEHLP_SYMBOL32 Symbol
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymInitialize32(
|
||||||
|
HANDLE32 hProcess, LPSTR UserSearchPath, BOOL32 fInvadeProcess
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymLoadModule32(
|
||||||
|
HANDLE32 hProcess, HANDLE32 hFile, LPSTR ImageName, LPSTR ModuleName,
|
||||||
|
DWORD BaseOfDll, DWORD SizeOfDll
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymRegisterCallback32(
|
||||||
|
HANDLE32 hProcess, PSYMBOL_REGISTERED_CALLBACK32 CallbackFunction,
|
||||||
|
PVOID UserContext
|
||||||
|
);
|
||||||
|
DWORD WINAPI SymSetOptions32(
|
||||||
|
DWORD SymOptions
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymSetSearchPath32(
|
||||||
|
HANDLE32 hProcess, LPSTR szSearchPath
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymUnDName32(
|
||||||
|
PIMAGEHLP_SYMBOL32 sym, LPSTR UnDecName, DWORD UnDecNameLength
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI SymUnloadModule32(
|
||||||
|
HANDLE32 hProcess, DWORD BaseOfDll
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI TouchFileTimes32(
|
||||||
|
HANDLE32 FileHandle, LPSYSTEMTIME lpSystemTime
|
||||||
|
);
|
||||||
|
DWORD WINAPI UnDecorateSymbolName32(
|
||||||
|
LPCSTR DecoratedName, LPSTR UnDecoratedName,
|
||||||
|
DWORD UndecoratedLength, DWORD Flags
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI UnMapAndLoad32(
|
||||||
|
PLOADED_IMAGE32 LoadedImage
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI UnmapDebugInformation32(
|
||||||
|
PIMAGE_DEBUG_INFORMATION32 DebugInfo
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI UpdateDebugInfoFile32(
|
||||||
|
LPSTR ImageFileName, LPSTR SymbolPath,
|
||||||
|
LPSTR DebugFilePath, PIMAGE_NT_HEADERS32 NtHeaders
|
||||||
|
);
|
||||||
|
BOOL32 WINAPI UpdateDebugInfoFileEx32(
|
||||||
|
LPSTR ImageFileName, LPSTR SymbolPath, LPSTR DebugFilePath,
|
||||||
|
PIMAGE_NT_HEADERS32 NtHeaders, DWORD OldChecksum
|
||||||
|
);
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* Wine specific
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern HANDLE32 IMAGEHLP_hHeap32;
|
||||||
|
|
||||||
|
#endif /* __WINE_IMAGEHLP_H */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
name imagehlp
|
||||||
|
type win32
|
||||||
|
init IMAGEHLP_LibMain
|
||||||
|
|
||||||
|
1 stdcall BindImage(str str str) BindImage32
|
||||||
|
2 stdcall BindImageEx(long str str str ptr) BindImageEx32
|
||||||
|
3 stdcall CheckSumMappedFile(ptr long ptr ptr) CheckSumMappedFile32
|
||||||
|
4 stdcall EnumerateLoadedModules(long ptr ptr) EnumerateLoadedModules32
|
||||||
|
5 stdcall FindDebugInfoFile(str str str) FindDebugInfoFile32
|
||||||
|
6 stdcall FindExecutableImage(str str str) FindExecutableImage32
|
||||||
|
7 stdcall GetImageConfigInformation(ptr ptr) GetImageConfigInformation32
|
||||||
|
8 stdcall GetImageUnusedHeaderBytes(ptr ptr) GetImageUnusedHeaderBytes32
|
||||||
|
9 stdcall GetTimestampForLoadedLibrary(long) GetTimestampForLoadedLibrary32
|
||||||
|
10 stdcall ImageAddCertificate(long ptr ptr) ImageAddCertificate32
|
||||||
|
11 stdcall ImageDirectoryEntryToData(ptr long long ptr) ImageDirectoryEntryToData32
|
||||||
|
12 stdcall ImageEnumerateCertificates(long long ptr ptr long) ImageEnumerateCertificates32
|
||||||
|
13 stdcall ImageGetCertificateData(long long ptr ptr) ImageGetCertificateData32
|
||||||
|
14 stdcall ImageGetCertificateHeader(long long ptr) ImageGetCertificateHeader32
|
||||||
|
15 stdcall ImageGetDigestStream(long long ptr long) ImageGetDigestStream32
|
||||||
|
16 stdcall ImageLoad(str str) ImageLoad32
|
||||||
|
17 stdcall ImageNtHeader(ptr) ImageNtHeader32
|
||||||
|
18 stdcall ImageRemoveCertificate(long long) ImageRemoveCertificate32
|
||||||
|
19 stdcall ImageRvaToSection(ptr ptr long) ImageRvaToSection32
|
||||||
|
20 stdcall ImageRvaToVa(ptr ptr long ptr) ImageRvaToVa32
|
||||||
|
21 stdcall ImageUnload(ptr) ImageUnload32
|
||||||
|
22 stdcall ImagehlpApiVersion() ImagehlpApiVersion32
|
||||||
|
23 stdcall ImagehlpApiVersionEx(ptr) ImagehlpApiVersionEx32
|
||||||
|
24 stdcall MakeSureDirectoryPathExists(str) MakeSureDirectoryPathExists32
|
||||||
|
25 stdcall MapAndLoad(str str ptr long long) MapAndLoad32
|
||||||
|
26 stdcall MapDebugInformation(long str str long) MapDebugInformation32
|
||||||
|
27 stdcall MapFileAndCheckSumA(str ptr ptr) MapFileAndCheckSum32A
|
||||||
|
28 stdcall MapFileAndCheckSumW(wstr ptr ptr) MapFileAndCheckSum32W
|
||||||
|
29 stub MarkImageAsRunFromSwap
|
||||||
|
30 stdcall ReBaseImage(str str long long long long ptr ptr ptr ptr long) ReBaseImage32
|
||||||
|
31 stdcall RemovePrivateCvSymbolic(ptr ptr ptr) RemovePrivateCvSymbolic32
|
||||||
|
32 stdcall RemoveRelocations(ptr) RemoveRelocations32
|
||||||
|
33 stdcall SearchTreeForFile(str str str) SearchTreeForFile32
|
||||||
|
34 stdcall SetImageConfigInformation(ptr ptr) SetImageConfigInformation32
|
||||||
|
35 stdcall SplitSymbols(str str str long) SplitSymbols32
|
||||||
|
36 stdcall StackWalk(long long long ptr ptr ptr ptr ptr ptr) StackWalk32
|
||||||
|
37 stdcall SymCleanup(long) SymCleanup32
|
||||||
|
38 stdcall SymEnumerateModules(long ptr ptr) SymEnumerateModules32
|
||||||
|
39 stdcall SymEnumerateSymbols(long long ptr ptr) SymEnumerateSymbols32
|
||||||
|
40 stdcall SymFunctionTableAccess(long long) SymFunctionTableAccess32
|
||||||
|
41 stdcall SymGetModuleBase(long long) SymGetModuleBase32
|
||||||
|
42 stdcall SymGetModuleInfo(long long ptr) SymGetModuleInfo32
|
||||||
|
43 stdcall SymGetOptions() SymGetOptions32
|
||||||
|
44 stdcall SymGetSearchPath(long str long) SymGetSearchPath32
|
||||||
|
45 stdcall SymGetSymFromAddr(long long ptr ptr) SymGetSymFromAddr32
|
||||||
|
46 stdcall SymGetSymFromName(long str ptr) SymGetSymFromName32
|
||||||
|
47 stdcall SymGetSymNext(long ptr) SymGetSymNext32
|
||||||
|
48 stdcall SymGetSymPrev(long ptr) SymGetSymPrev32
|
||||||
|
49 stdcall SymInitialize(long str long) SymInitialize32
|
||||||
|
50 stdcall SymLoadModule(long long str str long long) SymLoadModule32
|
||||||
|
51 stdcall SymRegisterCallback(long ptr ptr) SymRegisterCallback32
|
||||||
|
52 stdcall SymSetOptions(long) SymSetOptions32
|
||||||
|
53 stdcall SymSetSearchPath(long str) SymSetSearchPath32
|
||||||
|
54 stdcall SymUnDName(ptr str long) SymUnDName32
|
||||||
|
55 stdcall SymUnloadModule(long long) SymUnloadModule32
|
||||||
|
56 stdcall TouchFileTimes(long ptr) TouchFileTimes32
|
||||||
|
57 stdcall UnDecorateSymbolName(str str long long) UnDecorateSymbolName32
|
||||||
|
58 stdcall UnMapAndLoad(ptr) UnMapAndLoad32
|
||||||
|
59 stdcall UnmapDebugInformation(ptr) UnmapDebugInformation32
|
||||||
|
60 stdcall UpdateDebugInfoFile(str str str ptr) UpdateDebugInfoFile32
|
Loading…
Reference in New Issue