Commit 091e7856 authored by Patrik Stridvall's avatar Patrik Stridvall Committed by Alexandre Julliard

Started the implementation of IMAGEHLP.DLL.

parent 29c08dd4
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:
/*
* 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;
}
/*
* 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;
}
/*
* 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;
}
/*
* 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;
}
/*
* 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;
}
/*
* 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;
}
/*
* 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;
}
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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment