19 #if !defined(C_ASSERT) 20 #define C_ASSERT(expr) extern char (*c_assert(void)) [(expr) ? 1 : -1] 54 for (
size_t n = 0;
n <
sizeof(
GUID); ++
n)
62 const char* txt = txtNode ? txtNode->
Value() :
NULL;
72 const char* txt = raw ? raw->
Value() :
NULL;
84 const char* rawVal =
elem->Attribute(nodeName);
125 const char *lpszGUID =
str.c_str();
128 bool expectBrace =
true;
134 if (*lpszGUID !=
'{')
146 if (*lpszGUID !=
'-')
151 return expectBrace == (*lpszGUID ==
'}');
155 CHAR ch = *lpszGUID, ch2 = lpszGUID[1];
157 bool converted =
true;
165 #ifndef WORDS_BIGENDIAN 270 while (
node.ToNode())
273 if (
object.fromXml(
node))
276 node =
node.NextSiblingElement(nodeName);
285 if (!it->toSdb(
pdb, db))
302 return !
Name.empty();
326 return !
Name.empty();
384 return !
Name.empty();
421 return !
Name.empty();
427 return !
Name.empty();
433 return !
Name.empty();
436 SHIM_ERR(
"Data node (%s) without value!\n",
Name.c_str());
528 SHIM_ERR(
"TAG_BIN_FILE_VERSION Unimplemented\n");
531 SHIM_ERR(
"TAG_VER_LANGUAGE Unimplemented\n");
535 SHIM_ERR(
"TAG_UPTO_BIN_FILE_VERSION Unimplemented\n");
558 return !
Name.empty();
597 if (always || !
data.empty())
603 if (always || !
str.empty())
643 if (NodeName ==
"SHIM")
649 else if (NodeName ==
"FLAG")
652 if (
flag.fromXml(libChild))
655 else if (NodeName ==
"INCLUDE" || NodeName ==
"EXCLUDE")
721 lookup[nameLower] = tagid;
728 std::map<sdbstring, TAGID>::const_iterator it =
lookup.find(nameLower);
std::map< sdbstring, TAGID > KnownShims
#define TAG_INTERNAL_NAME
bool WriteGeneric(PDB pdb, std::list< T > &data, Database &db)
VOID NTAPI RtlSecondsSince1970ToTime(IN ULONG SecondsSince1970, OUT PLARGE_INTEGER Time)
UINT32 strtoul(const char *String, char **Terminator, UINT32 Base)
TAGID FindShimTagid(const sdbstring &name)
std::string ToNodeName(XMLHandle node)
std::list< InExclude > InExcludes
std::list< InExclude > InExcludes
DWORD ReadDWordNode(XMLHandle dbNode, const char *nodeName)
TAGID BeginWriteListTag(PDB pdb, TAG tag)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
coclass MSXML2::XSLTemplate40 object
std::list< FlagRef > FlagRefs
TAGID FindPatchTagid(const sdbstring &name)
XMLError LoadFile(const char *filename)
BOOL WINAPI SdbWriteBinaryTag(PDB pdb, TAG tag, const BYTE *data, DWORD size)
void WriteQWord(PDB pdb, TAG tag, QWORD value, bool always=false)
std::basic_string< WCHAR > sdbstring
std::list< MatchingFile > MatchingFiles
std::list< ShimRef > ShimRefs
IN PVOID IN PVOID IN USHORT IN USHORT Size
BOOL WINAPI SdbWriteDWORDTag(PDB pdb, TAG tag, DWORD data)
#define TAG_FLAG_PROCESSPARAM
#define TAG_DATA_VALUETYPE
bool fromXml(XMLHandle dbNode)
void InsertPatchTagid(const sdbstring &name, TAGID tagid)
#define TAG_MATCHING_FILE
void WriteString(PDB pdb, TAG tag, const sdbstring &str, bool always=false)
std::list< ShimRef > ShimRefs
static void InsertTagid(const sdbstring &name, TAGID tagid, std::map< sdbstring, TAGID > &lookup, const char *type)
bool IsEmptyGuid(const GUID &g)
std::string ReadStringNode(XMLHandle dbNode, const char *nodeName)
std::map< sdbstring, TAGID > KnownPatches
BOOL WINAPI SdbWriteNULLTag(PDB pdb, TAG tag)
#define TAG_PRODUCT_VERSION
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
std::string ProductVersion
std::map< sdbstring, TAGID > KnownFlags
_Check_return_ int __cdecl rand(void)
#define TAG_FLAG_MASK_KERNEL
BOOL EndWriteListTag(PDB pdb, TAGID tagid)
GLenum GLuint GLenum GLsizei length
bool toSdb(PDB pdb, Database &db)
static TAGID FindTagid(const sdbstring &name, const std::map< sdbstring, TAGID > &lookup)
void InsertFlagTagid(const sdbstring &name, TAGID tagid)
XMLHandle FirstChildElement(const char *name=0)
Get the first child element of this handle.
bool fromXml(XMLHandle dbNode)
bool ReadGuidNode(XMLHandle dbNode, const char *nodeName, GUID &guid)
std::list< InExclude > InExcludes
#define TAG_FILE_DESCRIPTION
bool toSdb(PDB pdb, Database &db)
std::string FileDescription
static bool StringToGuid(const std::string &str, GUID &guid)
bool fromXml(XMLHandle dbNode)
std::string UptoBinFileVersion
bool fromXml(XMLHandle dbNode)
bool fromXml(const char *fileName)
void WINAPI SdbCloseDatabaseWrite(PDB pdb)
#define success(from, fromstr, to, tostr)
bool fromXml(XMLHandle dbNode)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
_STLP_INLINE_LOOP _ForwardIter remove_if(_ForwardIter __first, _ForwardIter __last, _Predicate __pred)
bool fromXml(XMLHandle dbNode)
std::list< FlagRef > FlagRefs
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
#define TAG_ORIGINAL_FILENAME
void InsertShimTagid(const sdbstring &name, TAGID tagid)
bool fromXml(XMLHandle dbNode)
WDF_CHILD_LIST_ITERATOR iterator
TAGID WINAPI SdbBeginWriteListTag(PDB pdb, TAG tag)
BOOL WINAPI SdbWriteQWORDTag(PDB pdb, TAG tag, QWORD data)
bool toSdb(PDB pdb, Database &db)
void WriteBinary(PDB pdb, TAG tag, const GUID &guid, bool always=false)
bool ReadBinaryNode(XMLHandle dbNode, const char *nodeName, std::vector< BYTE > &data)
bool toSdb(PDB pdb, Database &db)
XMLNode * ToNode()
Safe cast to XMLNode. This can return null.
std::string OriginalFilename
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
XMLHandle NextSibling()
Get the next sibling of this handle.
TAGID FindFlagTagid(const sdbstring &name)
bool xml_2_db(const char *xml, const WCHAR *sdb)
void WriteDWord(PDB pdb, TAG tag, DWORD value, bool always=false)
bool fromXml(XMLHandle dbNode)
#define TAG_COMPILER_VERSION
static const char szCompilerVersion[]
bool toSdb(PDB pdb, Database &db)
bool toSdb(PDB pdb, Database &db)
bool fromXml(XMLHandle dbNode)
const char * Value() const
void ReadGeneric(XMLHandle dbNode, std::list< T > &result, const char *nodeName)
BOOL WINAPI SdbWriteStringTag(PDB pdb, TAG tag, LPCWSTR string)
XMLHandle FirstChild()
Get the first child of this handle.
GLuint GLenum GLenum transform
bool toSdb(PDB pdb, Database &db)
XMLElement * ToElement()
Safe cast to XMLElement. This can return null.
GLuint GLuint GLsizei GLenum type
#define TAG_FLAG_MASK_USER
bool toSdb(PDB pdb, Database &db)
std::string BinFileVersion
DWORD ReadQWordNode(XMLHandle dbNode, const char *nodeName)
std::string ToString(XMLHandle node)
unsigned char char2byte(char hexChar, bool *success=NULL)
BOOL WINAPI SdbEndWriteListTag(PDB pdb, TAGID tagid)
#define TAG_LINKER_VERSION
static PLARGE_INTEGER Time
bool toSdb(PDB pdb, Database &db)
static const GUID GUID_NULL
std::list< Layer > Layers
PDB WINAPI SdbCreateDatabase(LPCWSTR path, PATH_TYPE type)
GLuint const GLchar * name