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
<Shim
> Shims
;
121 bool fromXml(const char* fileName
);
122 bool fromXml(XMLHandle dbNode
);
123 bool toSdb(LPCWSTR path
);
125 void WriteString(PDB pdb
, TAG tag
, const sdbstring
& str
, bool always
= false);
126 void WriteString(PDB pdb
, TAG tag
, const std::string
& str
, bool always
= false);
127 void WriteBinary(PDB pdb
, TAG tag
, const GUID
& guid
, bool always
= false);
128 void WriteBinary(PDB pdb
, TAG tag
, const std::vector
<BYTE
>& data
, bool always
= false);
129 void WriteDWord(PDB pdb
, TAG tag
, DWORD value
, bool always
= false);
130 TAGID
BeginWriteListTag(PDB db
, TAG tag
);
131 BOOL
EndWriteListTag(PDB db
, TAGID tagid
);
133 void InsertShimTagid(const sdbstring
& name
, TAGID tagid
);
134 inline void InsertShimTagid(const std::string
& name
, TAGID tagid
)
136 InsertShimTagid(sdbstring(name
.begin(), name
.end()), tagid
);
138 TAGID
FindShimTagid(const sdbstring
& name
);
139 inline TAGID
FindShimTagid(const std::string
& name
)
141 return FindShimTagid(sdbstring(name
.begin(), name
.end()));
147 struct Library Library
;
148 std::list
<Layer
> Layers
;
152 std::map
<sdbstring
, TAGID
> KnownShims
;
153 std::map
<sdbstring
, TAGID
> KnownPatches
;