source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/patchapi.h@ 1167

Last change on this file since 1167 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 9.5 KB
RevLine 
[1166]1/**
2 * This file is part of the mingw-w64 runtime package.
3 * No warranty is given; refer to the file DISCLAIMER within this package.
4 */
5#ifndef _PATCHAPI_H_
6#define _PATCHAPI_H_
7
8#include <_mingw_unicode.h>
9#include <winapifamily.h>
10
11#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17#ifdef IMPORTING_PATCHAPI_DLL
18#define PATCHAPI WINAPI __declspec(dllimport)
19#else
20#define PATCHAPI WINAPI
21#endif
22
23#define PATCH_OPTION_USE_BEST 0x0
24#define PATCH_OPTION_USE_LZX_A 0x1
25#define PATCH_OPTION_USE_LZX_B 0x2
26#define PATCH_OPTION_USE_LZX_BEST 0x3
27#define PATCH_OPTION_USE_LZX_LARGE 0x4
28
29#define PATCH_OPTION_NO_BINDFIX 0x00010000
30#define PATCH_OPTION_NO_LOCKFIX 0x00020000
31#define PATCH_OPTION_NO_REBASE 0x00040000
32#define PATCH_OPTION_FAIL_IF_SAME_FILE 0x00080000
33#define PATCH_OPTION_FAIL_IF_BIGGER 0x00100000
34#define PATCH_OPTION_NO_CHECKSUM 0x00200000
35#define PATCH_OPTION_NO_RESTIMEFIX 0x00400000
36#define PATCH_OPTION_NO_TIMESTAMP 0x00800000
37#define PATCH_OPTION_SIGNATURE_MD5 0x01000000
38#define PATCH_OPTION_INTERLEAVE_FILES 0x40000000
39#define PATCH_OPTION_RESERVED1 0x80000000
40
41#define PATCH_OPTION_VALID_FLAGS 0xc0ff0007
42
43#define PATCH_SYMBOL_NO_IMAGEHLP 0x00000001
44#define PATCH_SYMBOL_NO_FAILURES 0x00000002
45#define PATCH_SYMBOL_UNDECORATED_TOO 0x00000004
46#define PATCH_SYMBOL_RESERVED1 0x80000000
47
48#define PATCH_TRANSFORM_PE_RESOURCE_2 0x00000100
49#define PATCH_TRANSFORM_PE_IRELOC_2 0x00000200
50
51#define APPLY_OPTION_FAIL_IF_EXACT 0x00000001
52#define APPLY_OPTION_FAIL_IF_CLOSE 0x00000002
53#define APPLY_OPTION_TEST_ONLY 0x00000004
54#define APPLY_OPTION_VALID_FLAGS 0x00000007
55
56#define ERROR_PATCH_ENCODE_FAILURE 0xC00E3101
57#define ERROR_PATCH_INVALID_OPTIONS 0xC00E3102
58#define ERROR_PATCH_SAME_FILE 0xC00E3103
59#define ERROR_PATCH_RETAIN_RANGES_DIFFER 0xC00E3104
60#define ERROR_PATCH_BIGGER_THAN_COMPRESSED 0xC00E3105
61#define ERROR_PATCH_IMAGEHLP_FAILURE 0xC00E3106
62
63#define ERROR_PATCH_DECODE_FAILURE 0xC00E4101
64#define ERROR_PATCH_CORRUPT 0xC00E4102
65#define ERROR_PATCH_NEWER_FORMAT 0xC00E4103
66#define ERROR_PATCH_WRONG_FILE 0xC00E4104
67#define ERROR_PATCH_NOT_NECESSARY 0xC00E4105
68#define ERROR_PATCH_NOT_AVAILABLE 0xC00E4106
69
70 typedef WINBOOL (CALLBACK PATCH_PROGRESS_CALLBACK)(PVOID CallbackContext,ULONG CurrentPosition,ULONG MaximumPosition);
71 typedef PATCH_PROGRESS_CALLBACK *PPATCH_PROGRESS_CALLBACK;
72 typedef WINBOOL (CALLBACK PATCH_SYMLOAD_CALLBACK)(ULONG WhichFile,LPCSTR SymbolFileName,ULONG SymType,ULONG SymbolFileCheckSum,ULONG SymbolFileTimeDate,ULONG ImageFileCheckSum,ULONG ImageFileTimeDate,PVOID CallbackContext);
73 typedef PATCH_SYMLOAD_CALLBACK *PPATCH_SYMLOAD_CALLBACK;
74
75 typedef struct _PATCH_IGNORE_RANGE {
76 ULONG OffsetInOldFile;
77 ULONG LengthInBytes;
78 } PATCH_IGNORE_RANGE,*PPATCH_IGNORE_RANGE;
79
80 typedef struct _PATCH_RETAIN_RANGE {
81 ULONG OffsetInOldFile;
82 ULONG LengthInBytes;
83 ULONG OffsetInNewFile;
84 } PATCH_RETAIN_RANGE,*PPATCH_RETAIN_RANGE;
85
86 typedef struct _PATCH_OLD_FILE_INFO_A {
87 ULONG SizeOfThisStruct;
88 LPCSTR OldFileName;
89 ULONG IgnoreRangeCount;
90 PPATCH_IGNORE_RANGE IgnoreRangeArray;
91 ULONG RetainRangeCount;
92 PPATCH_RETAIN_RANGE RetainRangeArray;
93 } PATCH_OLD_FILE_INFO_A,*PPATCH_OLD_FILE_INFO_A;
94
95 typedef struct _PATCH_OLD_FILE_INFO_W {
96 ULONG SizeOfThisStruct;
97 LPCWSTR OldFileName;
98 ULONG IgnoreRangeCount;
99 PPATCH_IGNORE_RANGE IgnoreRangeArray;
100 ULONG RetainRangeCount;
101 PPATCH_RETAIN_RANGE RetainRangeArray;
102 } PATCH_OLD_FILE_INFO_W,*PPATCH_OLD_FILE_INFO_W;
103
104 typedef struct _PATCH_OLD_FILE_INFO_H {
105 ULONG SizeOfThisStruct;
106 HANDLE OldFileHandle;
107 ULONG IgnoreRangeCount;
108 PPATCH_IGNORE_RANGE IgnoreRangeArray;
109 ULONG RetainRangeCount;
110 PPATCH_RETAIN_RANGE RetainRangeArray;
111 } PATCH_OLD_FILE_INFO_H,*PPATCH_OLD_FILE_INFO_H;
112
113 typedef struct _PATCH_OLD_FILE_INFO {
114 ULONG SizeOfThisStruct;
115 __C89_NAMELESS union {
116 LPCSTR OldFileNameA;
117 LPCWSTR OldFileNameW;
118 HANDLE OldFileHandle;
119 };
120 ULONG IgnoreRangeCount;
121 PPATCH_IGNORE_RANGE IgnoreRangeArray;
122 ULONG RetainRangeCount;
123 PPATCH_RETAIN_RANGE RetainRangeArray;
124 } PATCH_OLD_FILE_INFO,*PPATCH_OLD_FILE_INFO;
125
126 typedef struct _PATCH_INTERLEAVE_MAP {
127 ULONG CountRanges;
128 struct {
129 ULONG OldOffset;
130 ULONG OldLength;
131 ULONG NewLength;
132 } Range[1];
133 } PATCH_INTERLEAVE_MAP, *PPATCH_INTERLEAVE_MAP;
134
135 typedef struct _PATCH_OPTION_DATA {
136 ULONG SizeOfThisStruct;
137 ULONG SymbolOptionFlags;
138 LPCSTR NewFileSymbolPath;
139 LPCSTR *OldFileSymbolPathArray;
140 ULONG ExtendedOptionFlags;
141 PPATCH_SYMLOAD_CALLBACK SymLoadCallback;
142 PVOID SymLoadContext;
143 PPATCH_INTERLEAVE_MAP *InterleaveMapArray;
144 ULONG MaxLzxWindowSize;
145 } PATCH_OPTION_DATA,*PPATCH_OPTION_DATA;
146
147 WINBOOL PATCHAPI CreatePatchFileA(LPCSTR OldFileName,LPCSTR NewFileName,LPCSTR PatchFileName,ULONG OptionFlags,PPATCH_OPTION_DATA OptionData);
148 WINBOOL PATCHAPI CreatePatchFileW(LPCWSTR OldFileName,LPCWSTR NewFileName,LPCWSTR PatchFileName,ULONG OptionFlags,PPATCH_OPTION_DATA OptionData);
149#define CreatePatchFile __MINGW_NAME_AW(CreatePatchFile)
150
151 WINBOOL PATCHAPI CreatePatchFileExA(ULONG OldFileCount,PPATCH_OLD_FILE_INFO_A OldFileInfoArray,LPCSTR NewFileName,LPCSTR PatchFileName,ULONG OptionFlags,PPATCH_OPTION_DATA OptionData,PPATCH_PROGRESS_CALLBACK ProgressCallback,PVOID CallbackContext);
152 WINBOOL PATCHAPI CreatePatchFileExW(ULONG OldFileCount,PPATCH_OLD_FILE_INFO_W OldFileInfoArray,LPCWSTR NewFileName,LPCWSTR PatchFileName,ULONG OptionFlags,PPATCH_OPTION_DATA OptionData,PPATCH_PROGRESS_CALLBACK ProgressCallback,PVOID CallbackContext);
153#define CreatePatchFileEx __MINGW_NAME_AW(CreatePatchFileEx)
154
155 WINBOOL PATCHAPI ExtractPatchHeaderToFileA(LPCSTR PatchFileName,LPCSTR PatchHeaderFileName);
156 WINBOOL PATCHAPI ExtractPatchHeaderToFileW(LPCWSTR PatchFileName,LPCWSTR PatchHeaderFileName);
157#define ExtractPatchHeaderToFile __MINGW_NAME_AW(ExtractPatchHeaderToFile)
158
159 WINBOOL PATCHAPI TestApplyPatchToFileA(LPCSTR PatchFileName,LPCSTR OldFileName,ULONG ApplyOptionFlags);
160 WINBOOL PATCHAPI TestApplyPatchToFileW(LPCWSTR PatchFileName,LPCWSTR OldFileName,ULONG ApplyOptionFlags);
161#define TestApplyPatchToFile __MINGW_NAME_AW(TestApplyPatchToFile)
162
163 WINBOOL PATCHAPI ApplyPatchToFileA(LPCSTR PatchFileName,LPCSTR OldFileName,LPCSTR NewFileName,ULONG ApplyOptionFlags);
164 WINBOOL PATCHAPI ApplyPatchToFileW(LPCWSTR PatchFileName,LPCWSTR OldFileName,LPCWSTR NewFileName,ULONG ApplyOptionFlags);
165#define ApplyPatchToFile __MINGW_NAME_AW(ApplyPatchToFile)
166
167 WINBOOL PATCHAPI ApplyPatchToFileExA(LPCSTR PatchFileName,LPCSTR OldFileName,LPCSTR NewFileName,ULONG ApplyOptionFlags,PPATCH_PROGRESS_CALLBACK ProgressCallback,PVOID CallbackContext);
168 WINBOOL PATCHAPI ApplyPatchToFileExW(LPCWSTR PatchFileName,LPCWSTR OldFileName,LPCWSTR NewFileName,ULONG ApplyOptionFlags,PPATCH_PROGRESS_CALLBACK ProgressCallback,PVOID CallbackContext);
169#define ApplyPatchToFileEx __MINGW_NAME_AW(ApplyPatchToFileEx)
170
171 WINBOOL PATCHAPI GetFilePatchSignatureA(LPCSTR FileName,ULONG OptionFlags,PVOID OptionData,ULONG IgnoreRangeCount,PPATCH_IGNORE_RANGE IgnoreRangeArray,ULONG RetainRangeCount,PPATCH_RETAIN_RANGE RetainRangeArray,ULONG SignatureBufferSize,PVOID SignatureBuffer);
172 WINBOOL PATCHAPI GetFilePatchSignatureW(LPCWSTR FileName,ULONG OptionFlags,PVOID OptionData,ULONG IgnoreRangeCount,PPATCH_IGNORE_RANGE IgnoreRangeArray,ULONG RetainRangeCount,PPATCH_RETAIN_RANGE RetainRangeArray,ULONG SignatureBufferSizeInBytes,PVOID SignatureBuffer);
173#define GetFilePatchSignature __MINGW_NAME_AW(GetFilePatchSignature)
174
175 WINBOOL PATCHAPI GetFilePatchSignatureByHandle(HANDLE FileHandle,ULONG OptionFlags,PVOID OptionData,ULONG IgnoreRangeCount,PPATCH_IGNORE_RANGE IgnoreRangeArray,ULONG RetainRangeCount,PPATCH_RETAIN_RANGE RetainRangeArray,ULONG SignatureBufferSize,PVOID SignatureBuffer);
176 WINBOOL PATCHAPI CreatePatchFileByHandles(HANDLE OldFileHandle,HANDLE NewFileHandle,HANDLE PatchFileHandle,ULONG OptionFlags,PPATCH_OPTION_DATA OptionData);
177 WINBOOL PATCHAPI CreatePatchFileByHandlesEx(ULONG OldFileCount,PPATCH_OLD_FILE_INFO_H OldFileInfoArray,HANDLE NewFileHandle,HANDLE PatchFileHandle,ULONG OptionFlags,PPATCH_OPTION_DATA OptionData,PPATCH_PROGRESS_CALLBACK ProgressCallback,PVOID CallbackContext);
178 WINBOOL PATCHAPI ExtractPatchHeaderToFileByHandles(HANDLE PatchFileHandle,HANDLE PatchHeaderFileHandle);
179 WINBOOL PATCHAPI TestApplyPatchToFileByHandles(HANDLE PatchFileHandle,HANDLE OldFileHandle,ULONG ApplyOptionFlags);
180 WINBOOL PATCHAPI ApplyPatchToFileByHandles(HANDLE PatchFileHandle,HANDLE OldFileHandle,HANDLE NewFileHandle,ULONG ApplyOptionFlags);
181 WINBOOL PATCHAPI ApplyPatchToFileByHandlesEx(HANDLE PatchFileHandle,HANDLE OldFileHandle,HANDLE NewFileHandle,ULONG ApplyOptionFlags,PPATCH_PROGRESS_CALLBACK ProgressCallback,PVOID CallbackContext);
182
183WINBOOL PATCHAPI GetFilePatchSignatureByBuffer(PBYTE FileBufferWritable, ULONG FileSize, ULONG OptionFlags, PVOID OptionData, ULONG IgnoreRangeCount, PPATCH_IGNORE_RANGE IgnoreRangeArray, ULONG RetainRangeCount, PPATCH_RETAIN_RANGE RetainRangeArray, ULONG SignatureBufferSize, LPSTR SignatureBuffer);
184WINBOOL PATCHAPI ApplyPatchToFileByBuffers(PBYTE PatchFileMapped, ULONG PatchFileSize, PBYTE OldFileMapped, ULONG OldFileSize, PBYTE *NewFileBuffer, ULONG NewFileBufferSize, ULONG *NewFileActualSize, FILETIME *NewFileTime, ULONG ApplyOptionFlags, PPATCH_PROGRESS_CALLBACK ProgressCallback, PVOID CallbackContext);
185WINBOOL PATCHAPI TestApplyPatchToFileByBuffers(PBYTE PatchFileBuffer, ULONG PatchFileSize, PBYTE OldFileBuffer, ULONG OldFileSize, ULONG *NewFileSize, ULONG ApplyOptionFlags);
186
187#ifdef __cplusplus
188}
189#endif
190
191#endif
192#endif
Note: See TracBrowser for help on using the repository browser.