imagehlp.h

来自「这是VCF框架的代码」· C头文件 代码 · 共 2,420 行 · 第 1/5 页

H
2,420
字号
/*++ BUILD Version: 0001     Increment this if a change has global effectsCopyright (c) Microsoft Corporation. All rights reserved.Module Name:    imagehlp.hAbstract:    This module defines the prototypes and constants required for the image    help routines.Revision History:--*/#ifndef _IMAGEHLP_#define _IMAGEHLP_#if _MSC_VER > 1020#pragma once#endif// As a general principal always call the 64 bit version// of every API, if a choice exists.  The 64 bit version// works great on 32 bit platforms, and is forward// compatible to 64 bit platforms.#ifdef _WIN64#ifndef _IMAGEHLP64#define _IMAGEHLP64#endif#endif#ifndef WINTRUST_H#include <wintrust.h>#endif#ifdef __cplusplusextern "C" {#endif#ifdef _IMAGEHLP_SOURCE_#define IMAGEAPI __stdcall#define DBHLP_DEPRECIATED#else#define IMAGEAPI DECLSPEC_IMPORT __stdcall#define DBHLP_DEPRECIATED DECLSPEC_DEPRECATED#endif#define DBHLPAPI IMAGEAPI#define IMAGE_SEPARATION (64*1024)typedef struct _LOADED_IMAGE {    PSTR                  ModuleName;    HANDLE                hFile;    PUCHAR                MappedAddress;#ifdef _IMAGEHLP64    PIMAGE_NT_HEADERS64   FileHeader;#else    PIMAGE_NT_HEADERS32   FileHeader;#endif    PIMAGE_SECTION_HEADER LastRvaSection;    ULONG                 NumberOfSections;    PIMAGE_SECTION_HEADER Sections;    ULONG                 Characteristics;    BOOLEAN               fSystemImage;    BOOLEAN               fDOSImage;    LIST_ENTRY            Links;    ULONG                 SizeOfImage;} LOADED_IMAGE, *PLOADED_IMAGE;BOOLIMAGEAPIBindImage(    IN PSTR ImageName,    IN PSTR DllPath,    IN PSTR SymbolPath    );typedef enum _IMAGEHLP_STATUS_REASON {    BindOutOfMemory,    BindRvaToVaFailed,    BindNoRoomInImage,    BindImportModuleFailed,    BindImportProcedureFailed,    BindImportModule,    BindImportProcedure,    BindForwarder,    BindForwarderNOT,    BindImageModified,    BindExpandFileHeaders,    BindImageComplete,    BindMismatchedSymbols,    BindSymbolsNotUpdated} IMAGEHLP_STATUS_REASON;typedefBOOL(__stdcall *PIMAGEHLP_STATUS_ROUTINE)(    IMAGEHLP_STATUS_REASON Reason,    PSTR ImageName,    PSTR DllName,    ULONG_PTR Va,    ULONG_PTR Parameter    );BOOLIMAGEAPIBindImageEx(    IN DWORD Flags,    IN PSTR ImageName,    IN PSTR DllPath,    IN PSTR SymbolPath,    IN PIMAGEHLP_STATUS_ROUTINE StatusRoutine    );#define BIND_NO_BOUND_IMPORTS  0x00000001#define BIND_NO_UPDATE         0x00000002#define BIND_ALL_IMAGES        0x00000004#define BIND_CACHE_IMPORT_DLLS 0x00000008       // Cache dll's across                                                //  calls to BindImageEx                                                //  (same as NT 3.1->NT 4.0)BOOLIMAGEAPIReBaseImage(    IN     PSTR CurrentImageName,    IN     PSTR SymbolPath,    IN     BOOL  fReBase,           // TRUE if actually rebasing, false if only summing    IN     BOOL  fRebaseSysfileOk,  // TRUE is system images s/b rebased    IN     BOOL  fGoingDown,        // TRUE if the image s/b rebased below the given base    IN     ULONG CheckImageSize,    // Max size allowed  (0 if don't care)    OUT    ULONG *OldImageSize,     // Returned from the header    OUT    ULONG_PTR *OldImageBase, // Returned from the header    OUT    ULONG *NewImageSize,     // Image size rounded to next separation boundary    IN OUT ULONG_PTR *NewImageBase, // (in) Desired new address.                                    // (out) Next address (actual if going down)    IN     ULONG TimeStamp          // new timestamp for image, if non-zero    );BOOLIMAGEAPIReBaseImage64(    IN     PSTR CurrentImageName,    IN     PSTR SymbolPath,    IN     BOOL  fReBase,          // TRUE if actually rebasing, false if only summing    IN     BOOL  fRebaseSysfileOk, // TRUE is system images s/b rebased    IN     BOOL  fGoingDown,       // TRUE if the image s/b rebased below the given base    IN     ULONG CheckImageSize,   // Max size allowed  (0 if don't care)    OUT    ULONG *OldImageSize,    // Returned from the header    OUT    ULONG64 *OldImageBase,  // Returned from the header    OUT    ULONG *NewImageSize,    // Image size rounded to next separation boundary    IN OUT ULONG64 *NewImageBase,  // (in) Desired new address.                                   // (out) Next address (actual if going down)    IN     ULONG TimeStamp         // new timestamp for image, if non-zero    );#define MAX_SYM_NAME            2000//// Define checksum return codes.//#define CHECKSUM_SUCCESS            0#define CHECKSUM_OPEN_FAILURE       1#define CHECKSUM_MAP_FAILURE        2#define CHECKSUM_MAPVIEW_FAILURE    3#define CHECKSUM_UNICODE_FAILURE    4// Define Splitsym flags.#define SPLITSYM_REMOVE_PRIVATE     0x00000001      // Remove CV types/symbols and Fixup debug                                                    //  Used for creating .dbg files that ship                                                    //  as part of the product.#define SPLITSYM_EXTRACT_ALL        0x00000002      // Extract all debug info from image.                                                    //  Normally, FPO is left in the image                                                    //  to allow stack traces through the code.                                                    //  Using this switch is similar to linking                                                    //  with -debug:none except the .dbg file                                                    //  exists...#define SPLITSYM_SYMBOLPATH_IS_SRC  0x00000004      // The SymbolFilePath contains an alternate                                                    //  path to locate the pdb.//// Define checksum function prototypes.//PIMAGE_NT_HEADERSIMAGEAPICheckSumMappedFile (    PVOID BaseAddress,    DWORD FileLength,    PDWORD HeaderSum,    PDWORD CheckSum    );DWORDIMAGEAPIMapFileAndCheckSumA (    PSTR Filename,    PDWORD HeaderSum,    PDWORD CheckSum    );DWORDIMAGEAPIMapFileAndCheckSumW (    PWSTR Filename,    PDWORD HeaderSum,    PDWORD CheckSum    );#ifdef UNICODE#define MapFileAndCheckSum  MapFileAndCheckSumW#else#define MapFileAndCheckSum  MapFileAndCheckSumA#endif // !UNICODEBOOLIMAGEAPIGetImageConfigInformation(    PLOADED_IMAGE LoadedImage,    PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation    );DWORDIMAGEAPIGetImageUnusedHeaderBytes(    PLOADED_IMAGE LoadedImage,    PDWORD SizeUnusedHeaderBytes    );BOOLIMAGEAPISetImageConfigInformation(    PLOADED_IMAGE LoadedImage,    PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation    );// Image Integrity API's#define CERT_PE_IMAGE_DIGEST_DEBUG_INFO         0x01#define CERT_PE_IMAGE_DIGEST_RESOURCES          0x02#define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO    0x04#define CERT_PE_IMAGE_DIGEST_NON_PE_INFO        0x08      // include data outside the PE image#define CERT_SECTION_TYPE_ANY                   0xFF      // Any Certificate typetypedef PVOID DIGEST_HANDLE;typedef BOOL (WINAPI *DIGEST_FUNCTION) (DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength);BOOLIMAGEAPIImageGetDigestStream(    IN      HANDLE  FileHandle,    IN      DWORD   DigestLevel,    IN      DIGEST_FUNCTION DigestFunction,    IN      DIGEST_HANDLE   DigestHandle    );BOOLIMAGEAPIImageAddCertificate(    IN      HANDLE  FileHandle,    IN      LPWIN_CERTIFICATE   Certificate,    OUT     PDWORD  Index    );BOOLIMAGEAPIImageRemoveCertificate(    IN      HANDLE   FileHandle,    IN      DWORD    Index    );BOOLIMAGEAPIImageEnumerateCertificates(    IN      HANDLE  FileHandle,    IN      WORD    TypeFilter,    OUT     PDWORD  CertificateCount,    IN OUT  PDWORD  Indices OPTIONAL,    IN OUT  DWORD   IndexCount  OPTIONAL    );BOOLIMAGEAPIImageGetCertificateData(    IN      HANDLE  FileHandle,    IN      DWORD   CertificateIndex,    OUT     LPWIN_CERTIFICATE Certificate,    IN OUT  PDWORD  RequiredLength    );BOOLIMAGEAPIImageGetCertificateHeader(    IN      HANDLE  FileHandle,    IN      DWORD   CertificateIndex,    IN OUT  LPWIN_CERTIFICATE Certificateheader    );PLOADED_IMAGEIMAGEAPIImageLoad(    PSTR DllName,    PSTR DllPath    );BOOLIMAGEAPIImageUnload(    PLOADED_IMAGE LoadedImage    );BOOLIMAGEAPIMapAndLoad(    PSTR ImageName,    PSTR DllPath,    PLOADED_IMAGE LoadedImage,    BOOL DotDll,    BOOL ReadOnly    );BOOLIMAGEAPIUnMapAndLoad(    PLOADED_IMAGE LoadedImage    );BOOLIMAGEAPITouchFileTimes (    HANDLE FileHandle,    PSYSTEMTIME pSystemTime    );BOOLIMAGEAPISplitSymbols (    PSTR ImageName,    PSTR SymbolsPath,    PSTR SymbolFilePath,    DWORD Flags                 // Combination of flags above    );BOOLIMAGEAPIUpdateDebugInfoFile(    PSTR ImageFileName,    PSTR SymbolPath,    PSTR DebugFilePath,    PIMAGE_NT_HEADERS32 NtHeaders    );BOOLIMAGEAPIUpdateDebugInfoFileEx(    PSTR ImageFileName,    PSTR SymbolPath,    PSTR DebugFilePath,    PIMAGE_NT_HEADERS32 NtHeaders,    DWORD OldChecksum    );HANDLEIMAGEAPIFindDebugInfoFile (    PSTR FileName,    PSTR SymbolPath,    PSTR DebugFilePath    );typedef BOOL(CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(    HANDLE FileHandle,    PSTR FileName,    PVOID CallerData    );HANDLEIMAGEAPIFindDebugInfoFileEx (    PSTR FileName,    PSTR SymbolPath,    PSTR DebugFilePath,    PFIND_DEBUG_FILE_CALLBACK Callback,    PVOID CallerData    );typedef BOOL(CALLBACK *PFINDFILEINPATHCALLBACK)(    PSTR  filename,    PVOID context    );BOOLIMAGEAPISymFindFileInPath(    HANDLE hprocess,    LPSTR  SearchPath,    LPSTR  FileName,    PVOID  id,    DWORD  two,    DWORD  three,    DWORD  flags,    LPSTR  FilePath,    PFINDFILEINPATHCALLBACK callback,    PVOID  context    );HANDLEIMAGEAPIFindExecutableImage(    PSTR FileName,    PSTR SymbolPath,    PSTR ImageFilePath    );typedef BOOL(CALLBACK *PFIND_EXE_FILE_CALLBACK)(    HANDLE FileHandle,    PSTR FileName,    PVOID CallerData    );HANDLEIMAGEAPIFindExecutableImageEx(    PSTR FileName,    PSTR SymbolPath,    PSTR ImageFilePath,    PFIND_EXE_FILE_CALLBACK Callback,    PVOID CallerData    );PIMAGE_NT_HEADERSIMAGEAPIImageNtHeader (    IN PVOID Base    );PVOIDIMAGEAPIImageDirectoryEntryToDataEx (    IN PVOID Base,    IN BOOLEAN MappedAsImage,    IN USHORT DirectoryEntry,    OUT PULONG Size,    OUT PIMAGE_SECTION_HEADER *FoundHeader OPTIONAL    );PVOIDIMAGEAPIImageDirectoryEntryToData (    IN PVOID Base,    IN BOOLEAN MappedAsImage,    IN USHORT DirectoryEntry,    OUT PULONG Size    );PIMAGE_SECTION_HEADERIMAGEAPIImageRvaToSection(    IN PIMAGE_NT_HEADERS NtHeaders,    IN PVOID Base,    IN ULONG Rva    );PVOID

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?