mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 19:01:48 +00:00
Added imagehlp.dll ported from WINE.
svn path=/trunk/; revision=6595
This commit is contained in:
parent
22997fee18
commit
8516382e25
12 changed files with 1794 additions and 0 deletions
11
reactos/lib/imagehlp/.cvsignore
Normal file
11
reactos/lib/imagehlp/.cvsignore
Normal file
|
@ -0,0 +1,11 @@
|
|||
*.coff
|
||||
*.dll
|
||||
*.d
|
||||
*.o
|
||||
*.sym
|
||||
*.dsp
|
||||
*.dsw
|
||||
*.ncb
|
||||
*.opt
|
||||
*.txt
|
||||
*.map
|
343
reactos/lib/imagehlp/access.c
Normal file
343
reactos/lib/imagehlp/access.c
Normal file
|
@ -0,0 +1,343 @@
|
|||
/*
|
||||
* IMAGEHLP library
|
||||
*
|
||||
* Copyright 1998 Patrik Stridvall
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winnt.h"
|
||||
#include "winerror.h"
|
||||
#include "wine/debug.h"
|
||||
#include "imagehlp.h"
|
||||
|
||||
/* Couple of Hacks */
|
||||
extern inline DWORD WINAPI GetLastError(void)
|
||||
{
|
||||
DWORD ret;
|
||||
__asm__ __volatile__( ".byte 0x64\n\tmovl 0x60,%0" : "=r" (ret) );
|
||||
return ret;
|
||||
}
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(imagehlp);
|
||||
|
||||
/***********************************************************************
|
||||
* Data
|
||||
*/
|
||||
|
||||
static PLOADED_IMAGE IMAGEHLP_pFirstLoadedImage=NULL;
|
||||
static PLOADED_IMAGE IMAGEHLP_pLastLoadedImage=NULL;
|
||||
|
||||
static LOADED_IMAGE IMAGEHLP_EmptyLoadedImage = {
|
||||
NULL, /* ModuleName */
|
||||
0, /* hFile */
|
||||
NULL, /* MappedAddress */
|
||||
NULL, /* FileHeader */
|
||||
NULL, /* LastRvaSection */
|
||||
0, /* NumberOfSections */
|
||||
NULL, /* Sections */
|
||||
1, /* Characteristics */
|
||||
FALSE, /* fSystemImage */
|
||||
FALSE, /* fDOSImage */
|
||||
{ &IMAGEHLP_EmptyLoadedImage.Links, &IMAGEHLP_EmptyLoadedImage.Links }, /* Links */
|
||||
148, /* SizeOfImage; */
|
||||
};
|
||||
|
||||
extern HANDLE IMAGEHLP_hHeap;
|
||||
|
||||
/***********************************************************************
|
||||
* EnumerateLoadedModules (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI EnumerateLoadedModules(
|
||||
HANDLE hProcess,
|
||||
PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,
|
||||
PVOID UserContext)
|
||||
{
|
||||
FIXME("(%p, %p, %p): stub\n",
|
||||
hProcess, EnumLoadedModulesCallback, UserContext
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* GetTimestampForLoadedLibrary (IMAGEHLP.@)
|
||||
*/
|
||||
DWORD WINAPI GetTimestampForLoadedLibrary(HMODULE Module)
|
||||
{
|
||||
FIXME("(%p): stub\n", Module);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* GetImageConfigInformation (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI GetImageConfigInformation(
|
||||
PLOADED_IMAGE LoadedImage,
|
||||
PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation)
|
||||
{
|
||||
FIXME("(%p, %p): stub\n",
|
||||
LoadedImage, ImageConfigInformation
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* GetImageUnusedHeaderBytes (IMAGEHLP.@)
|
||||
*/
|
||||
DWORD WINAPI GetImageUnusedHeaderBytes(
|
||||
PLOADED_IMAGE LoadedImage,
|
||||
LPDWORD SizeUnusedHeaderBytes)
|
||||
{
|
||||
FIXME("(%p, %p): stub\n",
|
||||
LoadedImage, SizeUnusedHeaderBytes
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImageDirectoryEntryToData (IMAGEHLP.@)
|
||||
*/
|
||||
PVOID WINAPI ImageDirectoryEntryToData(
|
||||
PVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size)
|
||||
{
|
||||
FIXME("(%p, %d, %hd, %p): stub\n",
|
||||
Base, MappedAsImage, DirectoryEntry, Size
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImageLoad (IMAGEHLP.@)
|
||||
*/
|
||||
PLOADED_IMAGE WINAPI ImageLoad(LPSTR DllName, LPSTR DllPath)
|
||||
{
|
||||
PLOADED_IMAGE pLoadedImage;
|
||||
|
||||
FIXME("(%s, %s): stub\n", DllName, DllPath);
|
||||
|
||||
pLoadedImage = HeapAlloc(IMAGEHLP_hHeap, 0, sizeof(LOADED_IMAGE));
|
||||
if (pLoadedImage)
|
||||
pLoadedImage->FileHeader = HeapAlloc(IMAGEHLP_hHeap, 0, sizeof(IMAGE_NT_HEADERS));
|
||||
|
||||
return pLoadedImage;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImageRvaToSection (IMAGEHLP.@)
|
||||
*/
|
||||
PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(
|
||||
PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva)
|
||||
{
|
||||
FIXME("(%p, %p, %ld): stub\n", NtHeaders, Base, Rva);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImageNtHeader (IMAGEHLP.@)
|
||||
*/
|
||||
PIMAGE_NT_HEADERS WINAPI ImageNtHeader(PVOID Base)
|
||||
{
|
||||
TRACE("(%p)\n", Base);
|
||||
return (PIMAGE_NT_HEADERS)
|
||||
((LPBYTE) Base + ((PIMAGE_DOS_HEADER) Base)->e_lfanew);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImageRvaToVa (IMAGEHLP.@)
|
||||
*/
|
||||
PVOID WINAPI ImageRvaToVa(
|
||||
PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva,
|
||||
PIMAGE_SECTION_HEADER *LastRvaSection)
|
||||
{
|
||||
FIXME("(%p, %p, %ld, %p): stub\n",
|
||||
NtHeaders, Base, Rva, LastRvaSection
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImageUnload (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI ImageUnload(PLOADED_IMAGE pLoadedImage)
|
||||
{
|
||||
LIST_ENTRY *pCurrent, *pFind;
|
||||
|
||||
TRACE("(%p)\n", pLoadedImage);
|
||||
|
||||
if(!IMAGEHLP_pFirstLoadedImage || !pLoadedImage)
|
||||
{
|
||||
/* No image loaded or null pointer */
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
pFind=&pLoadedImage->Links;
|
||||
pCurrent=&IMAGEHLP_pFirstLoadedImage->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_pFirstLoadedImage = pCurrent->Flink?CONTAINING_RECORD(
|
||||
pCurrent->Flink, LOADED_IMAGE, Links):NULL;
|
||||
|
||||
if(pCurrent->Flink)
|
||||
pCurrent->Flink->Blink = pCurrent->Blink;
|
||||
else
|
||||
IMAGEHLP_pLastLoadedImage = pCurrent->Blink?CONTAINING_RECORD(
|
||||
pCurrent->Blink, LOADED_IMAGE, Links):NULL;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* MapAndLoad (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI MapAndLoad(
|
||||
LPSTR pszImageName, LPSTR pszDllPath, PLOADED_IMAGE pLoadedImage,
|
||||
BOOL bDotDll, BOOL bReadOnly)
|
||||
{
|
||||
CHAR szFileName[MAX_PATH];
|
||||
HANDLE hFile = NULL;
|
||||
HANDLE hFileMapping = NULL;
|
||||
HMODULE hModule = NULL;
|
||||
PIMAGE_NT_HEADERS pNtHeader = NULL;
|
||||
|
||||
TRACE("(%s, %s, %p, %d, %d)\n", pszImageName, pszDllPath, pLoadedImage,
|
||||
bDotDll, bReadOnly);
|
||||
|
||||
/* PathCombine(&szFileName, pszDllPath, pszImageName); */
|
||||
/* PathRenameExtension(&szFileName, bDotDll?:"dll":"exe"); */
|
||||
|
||||
/* FIXME: Check if the file already loaded (use IMAGEHLP_pFirstLoadedImage) */
|
||||
if(!(hFile = CreateFileA(
|
||||
szFileName, GENERIC_READ, 1, /* FIXME: FILE_SHARE_READ not defined */
|
||||
NULL, OPEN_EXISTING, 0, NULL)))
|
||||
{
|
||||
SetLastError(ERROR_FILE_NOT_FOUND);
|
||||
goto Error;
|
||||
}
|
||||
|
||||
if(!(hFileMapping = CreateFileMappingA(
|
||||
hFile, NULL, PAGE_READONLY | SEC_COMMIT, 0, 0, NULL)))
|
||||
{
|
||||
DWORD dwLastError = GetLastError();
|
||||
WARN("CreateFileMapping: Error = %ld\n", dwLastError);
|
||||
SetLastError(dwLastError);
|
||||
goto Error;
|
||||
}
|
||||
CloseHandle(hFile);
|
||||
hFile = NULL;
|
||||
|
||||
if(!(hModule = (HMODULE) MapViewOfFile(
|
||||
hFileMapping, FILE_MAP_READ, 0, 0, 0)))
|
||||
{
|
||||
DWORD dwLastError = GetLastError();
|
||||
WARN("MapViewOfFile: Error = %ld\n", dwLastError);
|
||||
SetLastError(dwLastError);
|
||||
goto Error;
|
||||
}
|
||||
|
||||
CloseHandle(hFileMapping);
|
||||
hFileMapping=NULL;
|
||||
|
||||
pLoadedImage = (PLOADED_IMAGE) HeapAlloc(
|
||||
IMAGEHLP_hHeap, 0, sizeof(LOADED_IMAGE)
|
||||
);
|
||||
|
||||
pNtHeader = ImageNtHeader((PVOID) hModule);
|
||||
|
||||
pLoadedImage->ModuleName = HeapAlloc(IMAGEHLP_hHeap, 0, strlen(pszDllPath)+1); /* FIXME: Correct? */
|
||||
strcpy( pLoadedImage->ModuleName, pszDllPath );
|
||||
pLoadedImage->hFile = hFile;
|
||||
pLoadedImage->MappedAddress = (PUCHAR) hModule;
|
||||
pLoadedImage->FileHeader = pNtHeader;
|
||||
pLoadedImage->Sections = (PIMAGE_SECTION_HEADER)
|
||||
((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_pLastLoadedImage->Links;
|
||||
if(IMAGEHLP_pLastLoadedImage)
|
||||
IMAGEHLP_pLastLoadedImage->Links.Flink = &pLoadedImage->Links;
|
||||
IMAGEHLP_pLastLoadedImage = pLoadedImage;
|
||||
if(!IMAGEHLP_pFirstLoadedImage)
|
||||
IMAGEHLP_pFirstLoadedImage = pLoadedImage;
|
||||
|
||||
return TRUE;
|
||||
|
||||
Error:
|
||||
if(hModule)
|
||||
UnmapViewOfFile((PVOID) hModule);
|
||||
if(hFileMapping)
|
||||
CloseHandle(hFileMapping);
|
||||
if(hFile)
|
||||
CloseHandle(hFile);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SetImageConfigInformation (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SetImageConfigInformation(
|
||||
PLOADED_IMAGE LoadedImage,
|
||||
PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation)
|
||||
{
|
||||
FIXME("(%p, %p): stub\n",
|
||||
LoadedImage, ImageConfigInformation
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* UnMapAndLoad (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI UnMapAndLoad(PLOADED_IMAGE LoadedImage)
|
||||
{
|
||||
FIXME("(%p): stub\n", LoadedImage);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
118
reactos/lib/imagehlp/debug.c
Normal file
118
reactos/lib/imagehlp/debug.c
Normal file
|
@ -0,0 +1,118 @@
|
|||
/*
|
||||
* IMAGEHLP library
|
||||
*
|
||||
* Copyright 1998 Patrik Stridvall
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "winerror.h"
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "wine/debug.h"
|
||||
#include "imagehlp.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(imagehlp);
|
||||
|
||||
/***********************************************************************
|
||||
* FindDebugInfoFile (IMAGEHLP.@)
|
||||
*/
|
||||
HANDLE WINAPI FindDebugInfoFile(
|
||||
LPSTR FileName, LPSTR SymbolPath, LPSTR DebugFilePath)
|
||||
{
|
||||
FIXME("(%s, %s, %s): stub\n",
|
||||
debugstr_a(FileName), debugstr_a(SymbolPath),
|
||||
debugstr_a(DebugFilePath)
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* FindExecutableImage (IMAGEHLP.@)
|
||||
*/
|
||||
HANDLE WINAPI FindExecutableImage(
|
||||
LPSTR FileName, LPSTR SymbolPath, LPSTR ImageFilePath)
|
||||
{
|
||||
FIXME("(%s, %s, %s): stub\n",
|
||||
debugstr_a(FileName), debugstr_a(SymbolPath),
|
||||
debugstr_a(ImageFilePath)
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* MapDebugInformation (IMAGEHLP.@)
|
||||
*/
|
||||
PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(
|
||||
HANDLE FileHandle, LPSTR FileName,
|
||||
LPSTR SymbolPath, DWORD ImageBase)
|
||||
{
|
||||
FIXME("(%p, %s, %s, 0x%08lx): stub\n",
|
||||
FileHandle, FileName, SymbolPath, ImageBase
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* StackWalk (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI StackWalk(
|
||||
DWORD MachineType, HANDLE hProcess, HANDLE hThread,
|
||||
LPSTACKFRAME StackFrame, LPVOID ContextRecord,
|
||||
PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
|
||||
PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
|
||||
PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
|
||||
PTRANSLATE_ADDRESS_ROUTINE TranslateAddress)
|
||||
{
|
||||
FIXME(
|
||||
"(%ld, %p, %p, %p, %p, %p, %p, %p, %p): stub\n",
|
||||
MachineType, hProcess, hThread, StackFrame, ContextRecord,
|
||||
ReadMemoryRoutine, FunctionTableAccessRoutine,
|
||||
GetModuleBaseRoutine, TranslateAddress
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* UnDecorateSymbolName (IMAGEHLP.@)
|
||||
*/
|
||||
DWORD WINAPI UnDecorateSymbolName(
|
||||
LPCSTR DecoratedName, LPSTR UnDecoratedName,
|
||||
DWORD UndecoratedLength, DWORD Flags)
|
||||
{
|
||||
FIXME("(%s, %s, %ld, 0x%08lx): stub\n",
|
||||
debugstr_a(DecoratedName), debugstr_a(UnDecoratedName),
|
||||
UndecoratedLength, Flags
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* UnmapDebugInformation (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI UnmapDebugInformation(
|
||||
PIMAGE_DEBUG_INFORMATION DebugInfo)
|
||||
{
|
||||
FIXME("(%p): stub\n", DebugInfo);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
63
reactos/lib/imagehlp/imagehlp.def
Normal file
63
reactos/lib/imagehlp/imagehlp.def
Normal file
|
@ -0,0 +1,63 @@
|
|||
LIBRARY imagehlp.dll
|
||||
|
||||
EXPORTS
|
||||
BindImage@12 @1
|
||||
BindImageEx@20 @2
|
||||
CheckSumMappedFile@16 @3
|
||||
EnumerateLoadedModules@12 @4
|
||||
FindDebugInfoFile@12 @5
|
||||
FindExecutableImage@12 @6
|
||||
GetImageConfigInformation@8 @7
|
||||
GetImageUnusedHeaderBytes@8 @8
|
||||
GetTimestampForLoadedLibrary@4 @9
|
||||
ImageAddCertificate@12 @10
|
||||
ImageDirectoryEntryToData@16 @11
|
||||
ImageEnumerateCertificates@20 @12
|
||||
ImageGetCertificateData@16 @13
|
||||
ImageGetCertificateHeader@12 @14
|
||||
ImageGetDigestStream@16 @15
|
||||
ImageLoad@8 @16
|
||||
ImageNtHeader@4 @17
|
||||
ImageRemoveCertificate@8 @18
|
||||
ImageRvaToSection@12 @19
|
||||
ImageRvaToVa@16 @20
|
||||
ImageUnload@4 @21
|
||||
ImagehlpApiVersion@0 @22
|
||||
ImagehlpApiVersionEx@4 @23
|
||||
MakeSureDirectoryPathExists@4 @24
|
||||
MapAndLoad@20 @25
|
||||
MapDebugInformation@16 @26
|
||||
MapFileAndCheckSumA@12 @27
|
||||
MapFileAndCheckSumW@12 @28
|
||||
ReBaseImage@44 @30
|
||||
RemovePrivateCvSymbolic@12 @31
|
||||
RemoveRelocations@4 @32
|
||||
SearchTreeForFile@12 @33
|
||||
SetImageConfigInformation@8 @34
|
||||
SplitSymbols@16 @35
|
||||
StackWalk@36 @36
|
||||
SymCleanup@4 @37
|
||||
SymEnumerateModules@12 @38
|
||||
SymEnumerateSymbols@16 @39
|
||||
SymFunctionTableAccess@8 @40
|
||||
SymGetModuleBase@8 @41
|
||||
SymGetModuleInfo@12 @42
|
||||
SymGetOptions@0 @43
|
||||
SymGetSearchPath@12 @44
|
||||
SymGetSymFromAddr@16 @45
|
||||
SymGetSymFromName@12 @46
|
||||
SymGetSymNext@8 @47
|
||||
SymGetSymPrev@8 @48
|
||||
SymInitialize@12 @49
|
||||
SymLoadModule@24 @50
|
||||
SymRegisterCallback@12 @51
|
||||
SymSetOptions@4 @52
|
||||
SymSetSearchPath@8 @53
|
||||
SymUnDName@12 @54
|
||||
SymUnloadModule@8 @55
|
||||
TouchFileTimes@8 @56
|
||||
UnDecorateSymbolName@16 @57
|
||||
UnMapAndLoad@4 @58
|
||||
UnmapDebugInformation@4 @59
|
||||
UpdateDebugInfoFile@16 @60
|
||||
UpdateDebugInfoFileEx@20 @61
|
63
reactos/lib/imagehlp/imagehlp.edf
Normal file
63
reactos/lib/imagehlp/imagehlp.edf
Normal file
|
@ -0,0 +1,63 @@
|
|||
LIBRARY imagehlp.dll
|
||||
|
||||
EXPORTS
|
||||
BindImage=BindImage@12 @1
|
||||
BindImageEx=BindImageEx@20 @2
|
||||
CheckSumMappedFile=CheckSumMappedFile@16 @3
|
||||
EnumerateLoadedModules=EnumerateLoadedModules@12 @4
|
||||
FindDebugInfoFile=FindDebugInfoFile@12 @5
|
||||
FindExecutableImage=FindExecutableImage@12 @6
|
||||
GetImageConfigInformation=GetImageConfigInformation@8 @7
|
||||
GetImageUnusedHeaderBytes=GetImageUnusedHeaderBytes@8 @8
|
||||
GetTimestampForLoadedLibrary=GetTimestampForLoadedLibrary@4 @9
|
||||
ImageAddCertificate=ImageAddCertificate@12 @10
|
||||
ImageDirectoryEntryToData=ImageDirectoryEntryToData@16 @11
|
||||
ImageEnumerateCertificates=ImageEnumerateCertificates@20 @12
|
||||
ImageGetCertificateData=ImageGetCertificateData@16 @13
|
||||
ImageGetCertificateHeader=ImageGetCertificateHeader@12 @14
|
||||
ImageGetDigestStream=ImageGetDigestStream@16 @15
|
||||
ImageLoad=ImageLoad@8 @16
|
||||
ImageNtHeader=ImageNtHeader@4 @17
|
||||
ImageRemoveCertificate=ImageRemoveCertificate@8 @18
|
||||
ImageRvaToSection=ImageRvaToSection@12 @19
|
||||
ImageRvaToVa=ImageRvaToVa@16 @20
|
||||
ImageUnload=ImageUnload@4 @21
|
||||
ImagehlpApiVersion=ImagehlpApiVersion@0 @22
|
||||
ImagehlpApiVersionEx=ImagehlpApiVersionEx@4 @23
|
||||
MakeSureDirectoryPathExists=MakeSureDirectoryPathExists@4 @24
|
||||
MapAndLoad=MapAndLoad@20 @25
|
||||
MapDebugInformation=MapDebugInformation@16 @26
|
||||
MapFileAndCheckSumA=MapFileAndCheckSumA@12 @27
|
||||
MapFileAndCheckSumW=MapFileAndCheckSumW@12 @28
|
||||
ReBaseImage=ReBaseImage@44 @30
|
||||
RemovePrivateCvSymbolic=RemovePrivateCvSymbolic@12 @31
|
||||
RemoveRelocations=RemoveRelocations@4 @32
|
||||
SearchTreeForFile=SearchTreeForFile@12 @33
|
||||
SetImageConfigInformation=SetImageConfigInformation@8 @34
|
||||
SplitSymbols=SplitSymbols@16 @35
|
||||
StackWalk=StackWalk@36 @36
|
||||
SymCleanup=SymCleanup@4 @37
|
||||
SymEnumerateModules=SymEnumerateModules@12 @38
|
||||
SymEnumerateSymbols=SymEnumerateSymbols@16 @39
|
||||
SymFunctionTableAccess=SymFunctionTableAccess@8 @40
|
||||
SymGetModuleBase=SymGetModuleBase@8 @41
|
||||
SymGetModuleInfo=SymGetModuleInfo@12 @42
|
||||
SymGetOptions=SymGetOptions@0 @43
|
||||
SymGetSearchPath=SymGetSearchPath@12 @44
|
||||
SymGetSymFromAddr=SymGetSymFromAddr@16 @45
|
||||
SymGetSymFromName=SymGetSymFromName@12 @46
|
||||
SymGetSymNext=SymGetSymNext@8 @47
|
||||
SymGetSymPrev=SymGetSymPrev@8 @48
|
||||
SymInitialize=SymInitialize@12 @49
|
||||
SymLoadModule=SymLoadModule@24 @50
|
||||
SymRegisterCallback=SymRegisterCallback@12 @51
|
||||
SymSetOptions=SymSetOptions@4 @52
|
||||
SymSetSearchPath=SymSetSearchPath@8 @53
|
||||
SymUnDName=SymUnDName@12 @54
|
||||
SymUnloadModule=SymUnloadModule@8 @55
|
||||
TouchFileTimes=TouchFileTimes@8 @56
|
||||
UnDecorateSymbolName=UnDecorateSymbolName@16 @57
|
||||
UnMapAndLoad=UnMapAndLoad@4 @58
|
||||
UnmapDebugInformation=UnmapDebugInformation@4 @59
|
||||
UpdateDebugInfoFile=UpdateDebugInfoFile@16 @60
|
||||
UpdateDebugInfoFileEx=UpdateDebugInfoFileEx@20 @61
|
37
reactos/lib/imagehlp/imagehlp.rc
Normal file
37
reactos/lib/imagehlp/imagehlp.rc
Normal file
|
@ -0,0 +1,37 @@
|
|||
#include <defines.h>
|
||||
#include <reactos/resource.h>
|
||||
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD
|
||||
PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x40004L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", RES_STR_COMPANY_NAME
|
||||
VALUE "FileDescription", "IMAGEHLP.DLL Debug Library\0"
|
||||
VALUE "FileVersion", RES_STR_FILE_VERSION
|
||||
VALUE "InternalName", "imagehlp\0"
|
||||
VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT
|
||||
VALUE "OriginalFilename", "imagehlp.dll\0"
|
||||
VALUE "ProductName", RES_STR_PRODUCT_NAME
|
||||
VALUE "ProductVersion", RES_STR_PRODUCT_VERSION
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
128
reactos/lib/imagehlp/imagehlp_main.c
Normal file
128
reactos/lib/imagehlp/imagehlp_main.c
Normal file
|
@ -0,0 +1,128 @@
|
|||
/*
|
||||
* IMAGEHLP library
|
||||
*
|
||||
* Copyright 1998 Patrik Stridvall
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "imagehlp.h"
|
||||
#include "winerror.h"
|
||||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(imagehlp);
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
HANDLE IMAGEHLP_hHeap = NULL;
|
||||
|
||||
static API_VERSION IMAGEHLP_ApiVersion = { 4, 0, 0, 5 };
|
||||
|
||||
/***********************************************************************
|
||||
* DllMain (IMAGEHLP.init)
|
||||
*/
|
||||
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
||||
{
|
||||
switch(fdwReason)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
DisableThreadLibraryCalls(hinstDLL);
|
||||
IMAGEHLP_hHeap = HeapCreate(0, 0x10000, 0);
|
||||
break;
|
||||
case DLL_PROCESS_DETACH:
|
||||
HeapDestroy(IMAGEHLP_hHeap);
|
||||
IMAGEHLP_hHeap = NULL;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImagehlpApiVersion (IMAGEHLP.@)
|
||||
*/
|
||||
LPAPI_VERSION WINAPI ImagehlpApiVersion(VOID)
|
||||
{
|
||||
return &IMAGEHLP_ApiVersion;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImagehlpApiVersionEx (IMAGEHLP.@)
|
||||
*/
|
||||
LPAPI_VERSION WINAPI ImagehlpApiVersionEx(LPAPI_VERSION 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;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* MakeSureDirectoryPathExists (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI MakeSureDirectoryPathExists(LPCSTR DirPath)
|
||||
{
|
||||
if (CreateDirectoryA(DirPath,NULL))
|
||||
return TRUE;
|
||||
if (GetLastError() == ERROR_ALREADY_EXISTS)
|
||||
{
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* MarkImageAsRunFromSwap (IMAGEHLP.@)
|
||||
* FIXME
|
||||
* No documentation available.
|
||||
*/
|
||||
|
||||
/***********************************************************************
|
||||
* SearchTreeForFile (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SearchTreeForFile(
|
||||
LPSTR RootPath, LPSTR InputPathName, LPSTR OutputPathBuffer)
|
||||
{
|
||||
FIXME("(%s, %s, %s): stub\n",
|
||||
debugstr_a(RootPath), debugstr_a(InputPathName),
|
||||
debugstr_a(OutputPathBuffer)
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* TouchFileTimes (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI TouchFileTimes(
|
||||
HANDLE FileHandle, LPSYSTEMTIME lpSystemTime)
|
||||
{
|
||||
FIXME("(%p, %p): stub\n",
|
||||
FileHandle, lpSystemTime
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
237
reactos/lib/imagehlp/integrity.c
Normal file
237
reactos/lib/imagehlp/integrity.c
Normal file
|
@ -0,0 +1,237 @@
|
|||
/*
|
||||
* IMAGEHLP library
|
||||
*
|
||||
* Copyright 1998 Patrik Stridvall
|
||||
* Copyright 2003 Mike McCormack
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winerror.h"
|
||||
#include "winreg.h"
|
||||
#include "winternl.h"
|
||||
#include "winnt.h"
|
||||
//#include "ntstatus.h"
|
||||
#include "imagehlp.h"
|
||||
#include "wine/debug.h"
|
||||
|
||||
#define IMAGE_FILE_SECURITY_DIRECTORY 4 /* winnt.h */
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(imagehlp);
|
||||
|
||||
/*
|
||||
* These functions are partially documented at:
|
||||
* http://www.cs.auckland.ac.nz/~pgut001/pubs/authenticode.txt
|
||||
*/
|
||||
|
||||
/***********************************************************************
|
||||
* IMAGEHLP_GetSecurityDirOffset (INTERNAL)
|
||||
*
|
||||
* Read a file's PE header, and return the offset and size of the
|
||||
* security directory.
|
||||
*/
|
||||
static BOOL IMAGEHLP_GetSecurityDirOffset( HANDLE handle, DWORD num,
|
||||
DWORD *pdwOfs, DWORD *pdwSize )
|
||||
{
|
||||
IMAGE_DOS_HEADER dos_hdr;
|
||||
IMAGE_NT_HEADERS nt_hdr;
|
||||
DWORD size, count, offset, len;
|
||||
BOOL r;
|
||||
IMAGE_DATA_DIRECTORY *sd;
|
||||
|
||||
TRACE("handle %p\n", handle );
|
||||
|
||||
/* read the DOS header */
|
||||
count = SetFilePointer( handle, 0, NULL, FILE_BEGIN );
|
||||
if( count == INVALID_SET_FILE_POINTER )
|
||||
return FALSE;
|
||||
count = 0;
|
||||
r = ReadFile( handle, &dos_hdr, sizeof dos_hdr, &count, NULL );
|
||||
if( !r )
|
||||
return FALSE;
|
||||
if( count != sizeof dos_hdr )
|
||||
return FALSE;
|
||||
|
||||
/* read the PE header */
|
||||
count = SetFilePointer( handle, dos_hdr.e_lfanew, NULL, FILE_BEGIN );
|
||||
if( count == INVALID_SET_FILE_POINTER )
|
||||
return FALSE;
|
||||
count = 0;
|
||||
r = ReadFile( handle, &nt_hdr, sizeof nt_hdr, &count, NULL );
|
||||
if( !r )
|
||||
return FALSE;
|
||||
if( count != sizeof nt_hdr )
|
||||
return FALSE;
|
||||
|
||||
sd = &nt_hdr.OptionalHeader.
|
||||
DataDirectory[IMAGE_FILE_SECURITY_DIRECTORY];
|
||||
|
||||
TRACE("len = %lx addr = %lx\n", sd->Size, sd->VirtualAddress);
|
||||
|
||||
offset = 0;
|
||||
size = sd->Size;
|
||||
|
||||
/* take the n'th certificate */
|
||||
while( 1 )
|
||||
{
|
||||
/* read the length of the current certificate */
|
||||
count = SetFilePointer( handle, sd->VirtualAddress + offset,
|
||||
NULL, FILE_BEGIN );
|
||||
if( count == INVALID_SET_FILE_POINTER )
|
||||
return FALSE;
|
||||
r = ReadFile( handle, &len, sizeof len, &count, NULL );
|
||||
if( !r )
|
||||
return FALSE;
|
||||
if( count != sizeof len )
|
||||
return FALSE;
|
||||
|
||||
/* check the certificate is not too big or too small */
|
||||
if( len < sizeof len )
|
||||
return FALSE;
|
||||
if( len > (size-offset) )
|
||||
return FALSE;
|
||||
if( !num-- )
|
||||
break;
|
||||
|
||||
/* calculate the offset of the next certificate */
|
||||
offset += len;
|
||||
if( offset >= size )
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*pdwOfs = sd->VirtualAddress + offset;
|
||||
*pdwSize = len;
|
||||
|
||||
TRACE("len = %lx addr = %lx\n", len, sd->VirtualAddress + offset);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* ImageAddCertificate (IMAGEHLP.@)
|
||||
*/
|
||||
|
||||
BOOL WINAPI ImageAddCertificate(
|
||||
HANDLE FileHandle, LPWIN_CERTIFICATE Certificate, PDWORD Index)
|
||||
{
|
||||
FIXME("(%p, %p, %p): stub\n",
|
||||
FileHandle, Certificate, Index
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImageEnumerateCertificates (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI ImageEnumerateCertificates(
|
||||
HANDLE FileHandle, WORD TypeFilter, PDWORD CertificateCount,
|
||||
PDWORD Indices, DWORD IndexCount)
|
||||
{
|
||||
FIXME("(%p, %hd, %p, %p, %ld): stub\n",
|
||||
FileHandle, TypeFilter, CertificateCount, Indices, IndexCount
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImageGetCertificateData (IMAGEHLP.@)
|
||||
*
|
||||
* FIXME: not sure that I'm dealing with the Index the right way
|
||||
*/
|
||||
BOOL WINAPI ImageGetCertificateData(
|
||||
HANDLE handle, DWORD Index,
|
||||
LPWIN_CERTIFICATE Certificate, PDWORD RequiredLength)
|
||||
{
|
||||
DWORD r, offset, ofs, size, count;
|
||||
|
||||
TRACE("%p %ld %p %p\n", handle, Index, Certificate, RequiredLength);
|
||||
|
||||
if( !IMAGEHLP_GetSecurityDirOffset( handle, Index, &ofs, &size ) )
|
||||
return FALSE;
|
||||
|
||||
if( !Certificate )
|
||||
{
|
||||
*RequiredLength = size;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if( *RequiredLength < size )
|
||||
{
|
||||
*RequiredLength = size;
|
||||
SetLastError( ERROR_INSUFFICIENT_BUFFER );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*RequiredLength = size;
|
||||
|
||||
offset = SetFilePointer( handle, ofs, NULL, FILE_BEGIN );
|
||||
if( offset == INVALID_SET_FILE_POINTER )
|
||||
return FALSE;
|
||||
|
||||
r = ReadFile( handle, Certificate, size, &count, NULL );
|
||||
if( !r )
|
||||
return FALSE;
|
||||
if( count != size )
|
||||
return FALSE;
|
||||
|
||||
TRACE("OK\n");
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImageGetCertificateHeader (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI ImageGetCertificateHeader(
|
||||
HANDLE FileHandle, DWORD CertificateIndex,
|
||||
LPWIN_CERTIFICATE Certificateheader)
|
||||
{
|
||||
FIXME("(%p, %ld, %p): stub\n",
|
||||
FileHandle, CertificateIndex, Certificateheader
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImageGetDigestStream (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI ImageGetDigestStream(
|
||||
HANDLE FileHandle, DWORD DigestLevel,
|
||||
DIGEST_FUNCTION DigestFunction, DIGEST_HANDLE DigestHandle)
|
||||
{
|
||||
FIXME("(%p, %ld, %p, %p): stub\n",
|
||||
FileHandle, DigestLevel, DigestFunction, DigestHandle
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ImageRemoveCertificate (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI ImageRemoveCertificate(HANDLE FileHandle, DWORD Index)
|
||||
{
|
||||
FIXME("(%p, %ld): stub\n", FileHandle, Index);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
125
reactos/lib/imagehlp/internal.c
Normal file
125
reactos/lib/imagehlp/internal.c
Normal file
|
@ -0,0 +1,125 @@
|
|||
/*
|
||||
* IMAGEHLP library
|
||||
*
|
||||
* Copyright 1998 Patrik Stridvall
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winerror.h"
|
||||
#include "wine/debug.h"
|
||||
#include "imagehlp.h"
|
||||
|
||||
/***********************************************************************
|
||||
* InitializeListHead
|
||||
*/
|
||||
VOID InitializeListHead(PLIST_ENTRY pListHead)
|
||||
{
|
||||
pListHead->Flink = pListHead;
|
||||
pListHead->Blink = pListHead;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* InsertHeadList
|
||||
*/
|
||||
VOID InsertHeadList(PLIST_ENTRY pListHead, PLIST_ENTRY pEntry)
|
||||
{
|
||||
pEntry->Blink = pListHead;
|
||||
pEntry->Flink = pListHead->Flink;
|
||||
pListHead->Flink = pEntry;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* InsertTailList
|
||||
*/
|
||||
VOID InsertTailList(PLIST_ENTRY pListHead, PLIST_ENTRY pEntry)
|
||||
{
|
||||
pEntry->Flink = pListHead;
|
||||
pEntry->Blink = pListHead->Blink;
|
||||
pListHead->Blink = pEntry;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* IsListEmpty
|
||||
*/
|
||||
BOOLEAN IsListEmpty(PLIST_ENTRY pListHead)
|
||||
{
|
||||
return !pListHead;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* PopEntryList
|
||||
*/
|
||||
PSINGLE_LIST_ENTRY PopEntryList(PSINGLE_LIST_ENTRY pListHead)
|
||||
{
|
||||
pListHead->Next = NULL;
|
||||
return pListHead;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* PushEntryList
|
||||
*/
|
||||
VOID PushEntryList(
|
||||
PSINGLE_LIST_ENTRY pListHead, PSINGLE_LIST_ENTRY pEntry)
|
||||
{
|
||||
pEntry->Next=pListHead;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* RemoveEntryList
|
||||
*/
|
||||
VOID RemoveEntryList(PLIST_ENTRY pEntry)
|
||||
{
|
||||
pEntry->Flink->Blink = pEntry->Blink;
|
||||
pEntry->Blink->Flink = pEntry->Flink;
|
||||
pEntry->Flink = NULL;
|
||||
pEntry->Blink = NULL;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* RemoveHeadList
|
||||
*/
|
||||
PLIST_ENTRY RemoveHeadList(PLIST_ENTRY pListHead)
|
||||
{
|
||||
PLIST_ENTRY p = pListHead->Flink;
|
||||
|
||||
if(p != pListHead)
|
||||
{
|
||||
RemoveEntryList(pListHead);
|
||||
return p;
|
||||
}
|
||||
else
|
||||
{
|
||||
pListHead->Flink = NULL;
|
||||
pListHead->Blink = NULL;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* RemoveTailList
|
||||
*/
|
||||
PLIST_ENTRY RemoveTailList(PLIST_ENTRY pListHead)
|
||||
{
|
||||
RemoveHeadList(pListHead->Blink);
|
||||
if(pListHead != pListHead->Blink)
|
||||
return pListHead;
|
||||
else
|
||||
return NULL;
|
||||
}
|
55
reactos/lib/imagehlp/makefile
Normal file
55
reactos/lib/imagehlp/makefile
Normal file
|
@ -0,0 +1,55 @@
|
|||
PATH_TO_TOP = ../..
|
||||
|
||||
TARGET_TYPE = dynlink
|
||||
|
||||
TARGET_NAME = imagehlp
|
||||
|
||||
TARGET_CFLAGS = \
|
||||
-Wall \
|
||||
-fno-builtin
|
||||
|
||||
# Compile definitions usage:
|
||||
# __USE_W32API - Compilation with w32api headers
|
||||
# __REACTOS__ - Compilation of Wine sources for ReactOS
|
||||
# _WIN32_IE=0x600 - Internet Explorer 6 compatible defintions
|
||||
# WINVER=0x501 - Windows XP definitions
|
||||
# __need_offsetof - Force definition of macro offsetof in stddef.h
|
||||
#
|
||||
DEFINES = \
|
||||
-D_DISABLE_TIDENTS \
|
||||
-D__USE_W32API \
|
||||
-D__REACTOS__ \
|
||||
-D_WIN32_IE=0x600 \
|
||||
-D_WIN32_WINNT=0x501 \
|
||||
-DWINVER=0x501 \
|
||||
-DCOBJMACROS \
|
||||
-D__need_offsetof
|
||||
|
||||
TARGET_CFLAGS += \
|
||||
$(DEFINES) \
|
||||
-DDCX_USESTYLE=0x10000L \
|
||||
-I$(PATH_TO_TOP)/include/wine
|
||||
|
||||
TARGET_RCFLAGS += -D__REACTOS__ -D_WIN32_IE=0x600 -D_WIN32_WINNT=0x501
|
||||
|
||||
TARGET_LFLAGS = -nostartfiles -nostdlib
|
||||
|
||||
TARGET_SDKLIBS = ntdll.a kernel32.a winedbgc.a
|
||||
|
||||
TARGET_BASE = 0x76160000
|
||||
|
||||
TARGET_OBJECTS = \
|
||||
debug.o \
|
||||
imagehlp_main.o \
|
||||
integrity.o \
|
||||
modify.o \
|
||||
symbol.o \
|
||||
access.o
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# include $(TOOLS_PATH)/depend.mk
|
352
reactos/lib/imagehlp/modify.c
Normal file
352
reactos/lib/imagehlp/modify.c
Normal file
|
@ -0,0 +1,352 @@
|
|||
/*
|
||||
* IMAGEHLP library
|
||||
*
|
||||
* Copyright 1998 Patrik Stridvall
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winerror.h"
|
||||
#include "wine/debug.h"
|
||||
#include "imagehlp.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(imagehlp);
|
||||
|
||||
static WORD CalcCheckSum(DWORD StartValue, LPVOID BaseAddress, DWORD WordCount);
|
||||
extern PIMAGE_NT_HEADERS WINAPI ImageNtHeader(PVOID Base);
|
||||
|
||||
/***********************************************************************
|
||||
* BindImageEx (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI BindImageEx(
|
||||
DWORD Flags, LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath,
|
||||
PIMAGEHLP_STATUS_ROUTINE StatusRoutine)
|
||||
{
|
||||
FIXME("(%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;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* BindImage (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI BindImage(
|
||||
LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath)
|
||||
{
|
||||
return BindImageEx(0, ImageName, DllPath, SymbolPath, NULL);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* CheckSum (internal)
|
||||
*/
|
||||
static WORD CalcCheckSum(
|
||||
DWORD StartValue, LPVOID BaseAddress, DWORD WordCount)
|
||||
{
|
||||
LPWORD Ptr;
|
||||
DWORD Sum;
|
||||
DWORD i;
|
||||
|
||||
Sum = StartValue;
|
||||
Ptr = (LPWORD)BaseAddress;
|
||||
for (i = 0; i < WordCount; i++)
|
||||
{
|
||||
Sum += *Ptr;
|
||||
if (HIWORD(Sum) != 0)
|
||||
{
|
||||
Sum = LOWORD(Sum) + HIWORD(Sum);
|
||||
}
|
||||
Ptr++;
|
||||
}
|
||||
|
||||
return (WORD)(LOWORD(Sum) + HIWORD(Sum));
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CheckSumMappedFile (IMAGEHLP.@)
|
||||
*/
|
||||
PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile(
|
||||
LPVOID BaseAddress, DWORD FileLength,
|
||||
LPDWORD HeaderSum, LPDWORD CheckSum)
|
||||
{
|
||||
PIMAGE_NT_HEADERS Header;
|
||||
DWORD CalcSum;
|
||||
DWORD HdrSum;
|
||||
|
||||
FIXME("(%p, %ld, %p, %p): stub\n",
|
||||
BaseAddress, FileLength, HeaderSum, CheckSum
|
||||
);
|
||||
|
||||
CalcSum = (DWORD)CalcCheckSum(0,
|
||||
BaseAddress,
|
||||
(FileLength + 1) / sizeof(WORD));
|
||||
|
||||
Header = ImageNtHeader(BaseAddress);
|
||||
HdrSum = Header->OptionalHeader.CheckSum;
|
||||
|
||||
/* Subtract image checksum from calculated checksum. */
|
||||
/* fix low word of checksum */
|
||||
if (LOWORD(CalcSum) >= LOWORD(HdrSum))
|
||||
{
|
||||
CalcSum -= LOWORD(HdrSum);
|
||||
}
|
||||
else
|
||||
{
|
||||
CalcSum = ((LOWORD(CalcSum) - LOWORD(HdrSum)) & 0xFFFF) - 1;
|
||||
}
|
||||
|
||||
/* fix high word of checksum */
|
||||
if (LOWORD(CalcSum) >= HIWORD(HdrSum))
|
||||
{
|
||||
CalcSum -= HIWORD(HdrSum);
|
||||
}
|
||||
else
|
||||
{
|
||||
CalcSum = ((LOWORD(CalcSum) - HIWORD(HdrSum)) & 0xFFFF) - 1;
|
||||
}
|
||||
|
||||
/* add file length */
|
||||
CalcSum += FileLength;
|
||||
|
||||
*CheckSum = CalcSum;
|
||||
*HeaderSum = Header->OptionalHeader.CheckSum;
|
||||
|
||||
return Header;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* MapFileAndCheckSumA (IMAGEHLP.@)
|
||||
*/
|
||||
DWORD WINAPI MapFileAndCheckSumA(
|
||||
LPSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum)
|
||||
{
|
||||
HANDLE hFile;
|
||||
HANDLE hMapping;
|
||||
LPVOID BaseAddress;
|
||||
DWORD FileLength;
|
||||
|
||||
TRACE("(%s, %p, %p): stub\n",
|
||||
debugstr_a(Filename), HeaderSum, CheckSum
|
||||
);
|
||||
|
||||
hFile = CreateFileA(Filename,
|
||||
GENERIC_READ,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
NULL,
|
||||
OPEN_EXISTING,
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
0);
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
return CHECKSUM_OPEN_FAILURE;
|
||||
}
|
||||
|
||||
hMapping = CreateFileMappingW(hFile,
|
||||
NULL,
|
||||
PAGE_READONLY,
|
||||
0,
|
||||
0,
|
||||
NULL);
|
||||
if (hMapping == 0)
|
||||
{
|
||||
CloseHandle(hFile);
|
||||
return CHECKSUM_MAP_FAILURE;
|
||||
}
|
||||
|
||||
BaseAddress = MapViewOfFile(hMapping,
|
||||
FILE_MAP_READ,
|
||||
0,
|
||||
0,
|
||||
0);
|
||||
if (hMapping == 0)
|
||||
{
|
||||
CloseHandle(hMapping);
|
||||
CloseHandle(hFile);
|
||||
return CHECKSUM_MAPVIEW_FAILURE;
|
||||
}
|
||||
|
||||
FileLength = GetFileSize(hFile,
|
||||
NULL);
|
||||
|
||||
CheckSumMappedFile(BaseAddress,
|
||||
FileLength,
|
||||
HeaderSum,
|
||||
CheckSum);
|
||||
|
||||
UnmapViewOfFile(BaseAddress);
|
||||
CloseHandle(hMapping);
|
||||
CloseHandle(hFile);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* MapFileAndCheckSumW (IMAGEHLP.@)
|
||||
*/
|
||||
DWORD WINAPI MapFileAndCheckSumW(
|
||||
LPWSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum)
|
||||
{
|
||||
HANDLE hFile;
|
||||
HANDLE hMapping;
|
||||
LPVOID BaseAddress;
|
||||
DWORD FileLength;
|
||||
|
||||
TRACE("(%s, %p, %p): stub\n",
|
||||
debugstr_w(Filename), HeaderSum, CheckSum
|
||||
);
|
||||
|
||||
hFile = CreateFileW(Filename,
|
||||
GENERIC_READ,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
NULL,
|
||||
OPEN_EXISTING,
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
0);
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
return CHECKSUM_OPEN_FAILURE;
|
||||
}
|
||||
|
||||
hMapping = CreateFileMappingW(hFile,
|
||||
NULL,
|
||||
PAGE_READONLY,
|
||||
0,
|
||||
0,
|
||||
NULL);
|
||||
if (hMapping == 0)
|
||||
{
|
||||
CloseHandle(hFile);
|
||||
return CHECKSUM_MAP_FAILURE;
|
||||
}
|
||||
|
||||
BaseAddress = MapViewOfFile(hMapping,
|
||||
FILE_MAP_READ,
|
||||
0,
|
||||
0,
|
||||
0);
|
||||
if (hMapping == 0)
|
||||
{
|
||||
CloseHandle(hMapping);
|
||||
CloseHandle(hFile);
|
||||
return CHECKSUM_MAPVIEW_FAILURE;
|
||||
}
|
||||
|
||||
FileLength = GetFileSize(hFile,
|
||||
NULL);
|
||||
|
||||
CheckSumMappedFile(BaseAddress,
|
||||
FileLength,
|
||||
HeaderSum,
|
||||
CheckSum);
|
||||
|
||||
UnmapViewOfFile(BaseAddress);
|
||||
CloseHandle(hMapping);
|
||||
CloseHandle(hFile);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* ReBaseImage (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI ReBaseImage(
|
||||
LPSTR CurrentImageName, LPSTR SymbolPath, BOOL fReBase,
|
||||
BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize,
|
||||
ULONG *OldImageSize, ULONG *OldImageBase, ULONG *NewImageSize,
|
||||
ULONG *NewImageBase, ULONG TimeStamp)
|
||||
{
|
||||
FIXME(
|
||||
"(%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;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* RemovePrivateCvSymbolic (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI RemovePrivateCvSymbolic(
|
||||
PCHAR DebugData, PCHAR *NewDebugData, ULONG *NewDebugSize)
|
||||
{
|
||||
FIXME("(%p, %p, %p): stub\n",
|
||||
DebugData, NewDebugData, NewDebugSize
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* RemoveRelocations (IMAGEHLP.@)
|
||||
*/
|
||||
VOID WINAPI RemoveRelocations(PCHAR ImageName)
|
||||
{
|
||||
FIXME("(%p): stub\n", ImageName);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SplitSymbols (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SplitSymbols(
|
||||
LPSTR ImageName, LPSTR SymbolsPath,
|
||||
LPSTR SymbolFilePath, DWORD Flags)
|
||||
{
|
||||
FIXME("(%s, %s, %s, %ld): stub\n",
|
||||
debugstr_a(ImageName), debugstr_a(SymbolsPath),
|
||||
debugstr_a(SymbolFilePath), Flags
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* UpdateDebugInfoFile (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI UpdateDebugInfoFile(
|
||||
LPSTR ImageFileName, LPSTR SymbolPath,
|
||||
LPSTR DebugFilePath, PIMAGE_NT_HEADERS NtHeaders)
|
||||
{
|
||||
FIXME("(%s, %s, %s, %p): stub\n",
|
||||
debugstr_a(ImageFileName), debugstr_a(SymbolPath),
|
||||
debugstr_a(DebugFilePath), NtHeaders
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* UpdateDebugInfoFileEx (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI UpdateDebugInfoFileEx(
|
||||
LPSTR ImageFileName, LPSTR SymbolPath, LPSTR DebugFilePath,
|
||||
PIMAGE_NT_HEADERS NtHeaders, DWORD OldChecksum)
|
||||
{
|
||||
FIXME("(%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;
|
||||
}
|
262
reactos/lib/imagehlp/symbol.c
Normal file
262
reactos/lib/imagehlp/symbol.c
Normal file
|
@ -0,0 +1,262 @@
|
|||
/*
|
||||
* IMAGEHLP library
|
||||
*
|
||||
* Copyright 1998 Patrik Stridvall
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winerror.h"
|
||||
#include "wine/debug.h"
|
||||
#include "imagehlp.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(imagehlp);
|
||||
|
||||
/***********************************************************************
|
||||
* SymCleanup (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SymCleanup(HANDLE hProcess)
|
||||
{
|
||||
FIXME("(%p): stub\n", hProcess);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymEnumerateModules (IMAGEHLP.@)
|
||||
*/
|
||||
|
||||
BOOL WINAPI SymEnumerateModules(
|
||||
HANDLE hProcess, PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
|
||||
PVOID UserContext)
|
||||
{
|
||||
FIXME("(%p, %p, %p): stub\n",
|
||||
hProcess, EnumModulesCallback, UserContext
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymEnumerateSymbols (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SymEnumerateSymbols(
|
||||
HANDLE hProcess, DWORD BaseOfDll,
|
||||
PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext)
|
||||
{
|
||||
FIXME("(%p, 0x%08lx, %p, %p): stub\n",
|
||||
hProcess, BaseOfDll, EnumSymbolsCallback, UserContext
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymFunctionTableAccess (IMAGEHLP.@)
|
||||
*/
|
||||
PVOID WINAPI SymFunctionTableAccess(HANDLE hProcess, DWORD AddrBase)
|
||||
{
|
||||
FIXME("(%p, 0x%08lx): stub\n", hProcess, AddrBase);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymGetModuleBase (IMAGEHLP.@)
|
||||
*/
|
||||
DWORD WINAPI SymGetModuleBase(HANDLE hProcess, DWORD dwAddr)
|
||||
{
|
||||
FIXME("(%p, 0x%08lx): stub\n", hProcess, dwAddr);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymGetModuleInfo (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SymGetModuleInfo(
|
||||
HANDLE hProcess, DWORD dwAddr,
|
||||
PIMAGEHLP_MODULE ModuleInfo)
|
||||
{
|
||||
FIXME("(%p, 0x%08lx, %p): stub\n",
|
||||
hProcess, dwAddr, ModuleInfo
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymGetOptions (IMAGEHLP.@)
|
||||
*/
|
||||
DWORD WINAPI SymGetOptions()
|
||||
{
|
||||
FIXME("(): stub\n");
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymGetSearchPath (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SymGetSearchPath(
|
||||
HANDLE hProcess, LPSTR szSearchPath, DWORD SearchPathLength)
|
||||
{
|
||||
FIXME("(%p, %s, %ld): stub\n",
|
||||
hProcess, debugstr_an(szSearchPath,SearchPathLength), SearchPathLength
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymGetSymFromAddr (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SymGetSymFromAddr(
|
||||
HANDLE hProcess, DWORD dwAddr,
|
||||
PDWORD pdwDisplacement, PIMAGEHLP_SYMBOL Symbol)
|
||||
{
|
||||
FIXME("(%p, 0x%08lx, %p, %p): stub\n",
|
||||
hProcess, dwAddr, pdwDisplacement, Symbol
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymGetSymFromName (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SymGetSymFromName(
|
||||
HANDLE hProcess, LPSTR Name, PIMAGEHLP_SYMBOL Symbol)
|
||||
{
|
||||
FIXME("(%p, %s, %p): stub\n", hProcess, Name, Symbol);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymGetSymNext (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SymGetSymNext(
|
||||
HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol)
|
||||
{
|
||||
FIXME("(%p, %p): stub\n", hProcess, Symbol);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymGetSymPrev (IMAGEHLP.@)
|
||||
*/
|
||||
|
||||
BOOL WINAPI SymGetSymPrev(
|
||||
HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol)
|
||||
{
|
||||
FIXME("(%p, %p): stub\n", hProcess, Symbol);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymInitialize (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SymInitialize(
|
||||
HANDLE hProcess, LPSTR UserSearchPath, BOOL fInvadeProcess)
|
||||
{
|
||||
FIXME("(%p, %s, %d): stub\n",
|
||||
hProcess, debugstr_a(UserSearchPath), fInvadeProcess
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymLoadModule (IMAGEHLP.@)
|
||||
*/
|
||||
|
||||
BOOL WINAPI SymLoadModule(
|
||||
HANDLE hProcess, HANDLE hFile, LPSTR ImageName, LPSTR ModuleName,
|
||||
DWORD BaseOfDll, DWORD SizeOfDll)
|
||||
{
|
||||
FIXME("(%p, %p, %s, %s, %ld, %ld): stub\n",
|
||||
hProcess, hFile, debugstr_a(ImageName), debugstr_a(ModuleName),
|
||||
BaseOfDll, SizeOfDll
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymRegisterCallback (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SymRegisterCallback(
|
||||
HANDLE hProcess, PSYMBOL_REGISTERED_CALLBACK CallbackFunction,
|
||||
PVOID UserContext)
|
||||
{
|
||||
FIXME("(%p, %p, %p): stub\n",
|
||||
hProcess, CallbackFunction, UserContext
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymSetOptions (IMAGEHLP.@)
|
||||
*/
|
||||
DWORD WINAPI SymSetOptions(DWORD SymOptions)
|
||||
{
|
||||
FIXME("(0x%08lx): stub\n", SymOptions);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymSetSearchPath (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SymSetSearchPath(HANDLE hProcess, LPSTR szSearchPath)
|
||||
{
|
||||
FIXME("(%p, %s): stub\n",
|
||||
hProcess, debugstr_a(szSearchPath)
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymUnDName (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SymUnDName(
|
||||
PIMAGEHLP_SYMBOL sym, LPSTR UnDecName, DWORD UnDecNameLength)
|
||||
{
|
||||
FIXME("(%p, %s, %ld): stub\n",
|
||||
sym, UnDecName, UnDecNameLength
|
||||
);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SymUnloadModule (IMAGEHLP.@)
|
||||
*/
|
||||
BOOL WINAPI SymUnloadModule(
|
||||
HANDLE hProcess, DWORD BaseOfDll)
|
||||
{
|
||||
FIXME("(%p, 0x%08lx): stub\n", hProcess, BaseOfDll);
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue