18 using tinyxml2::XMLHandle
;
20 typedef std::basic_string
<WCHAR
> sdbstring
;
26 InExclude() : Include(false) { ; }
27 bool fromXml(XMLHandle dbNode
);
28 bool toSdb(PDB pdb
, Database
& db
);
36 ShimRef() : ShimTagid(0) { ; }
38 bool fromXml(XMLHandle dbNode
);
39 bool toSdb(PDB pdb
, Database
& db
);
42 std::string CommandLine
;
44 std::list
<InExclude
> InExcludes
;
49 Shim() : Tagid(0) { ; }
51 bool fromXml(XMLHandle dbNode
);
52 bool toSdb(PDB pdb
, Database
& db
);
58 std::list
<InExclude
> InExcludes
;
63 Layer() : Tagid(0) { ; }
65 bool fromXml(XMLHandle dbNode
);
66 bool toSdb(PDB pdb
, Database
& db
);
70 std::list
<ShimRef
> ShimRefs
;
75 MatchingFile() : Size(0), Checksum(0) {;}
77 bool fromXml(XMLHandle dbNode
);
78 bool toSdb(PDB pdb
, Database
& db
);
83 std::string CompanyName
;
84 std::string InternalName
;
85 std::string ProductName
;
86 std::string ProductVersion
;
87 std::string FileVersion
;
88 std::string BinFileVersion
;
90 std::string VerLanguage
;
91 std::string FileDescription
;
92 std::string OriginalFilename
;
93 std::string UptoBinFileVersion
;
94 std::string LinkerVersion
;
99 Exe() : Tagid(0) { ; }
101 bool fromXml(XMLHandle dbNode
);
102 bool toSdb(PDB pdb
, Database
& db
);
109 std::list
<MatchingFile
> MatchingFiles
;
110 std::list
<ShimRef
> ShimRefs
;
115 std::list
<InExclude
> InExcludes
;
116 std::list
<Shim
> Shims
;
122 bool fromXml(const char* fileName
);
123 bool fromXml(XMLHandle dbNode
);
124 bool toSdb(LPCWSTR path
);
126 void WriteString(PDB pdb
, TAG tag
, const sdbstring
& str
, bool always
= false);
127 void WriteString(PDB pdb
, TAG tag
, const std::string
& str
, bool always
= false);
128 void WriteBinary(PDB pdb
, TAG tag
, const GUID
& guid
, bool always
= false);
129 void WriteBinary(PDB pdb
, TAG tag
, const std::vector
<BYTE
>& data
, bool always
= false);
130 void WriteDWord(PDB pdb
, TAG tag
, DWORD value
, bool always
= false);
131 TAGID
BeginWriteListTag(PDB pdb
, TAG tag
);
132 BOOL
EndWriteListTag(PDB pdb
, TAGID tagid
);
134 void InsertShimTagid(const sdbstring
& name
, TAGID tagid
);
135 inline void InsertShimTagid(const std::string
& name
, TAGID tagid
)
137 InsertShimTagid(sdbstring(name
.begin(), name
.end()), tagid
);
139 TAGID
FindShimTagid(const sdbstring
& name
);
140 inline TAGID
FindShimTagid(const std::string
& name
)
142 return FindShimTagid(sdbstring(name
.begin(), name
.end()));
146 void InsertPatchTagid(const sdbstring
& name
, TAGID tagid
);
147 inline void InsertPatchTagid(const std::string
& name
, TAGID tagid
)
149 InsertPatchTagid(sdbstring(name
.begin(), name
.end()), tagid
);
151 TAGID
FindPatchTagid(const sdbstring
& name
);
152 inline TAGID
FindPatchTagid(const std::string
& name
)
154 return FindPatchTagid(sdbstring(name
.begin(), name
.end()));
160 struct Library Library
;
161 std::list
<Layer
> Layers
;
165 std::map
<sdbstring
, TAGID
> KnownShims
;
166 std::map
<sdbstring
, TAGID
> KnownPatches
;