[PATCH 8/11] apphelp: Implement SdbReadQWORDTag.

Mislav Blazevic krofnica996 at gmail.com
Wed Jul 31 17:59:03 CDT 2013


---
 dlls/apphelp/apphelp.c    | 40 ++++++++++++++++++++++++++++++++++++++++
 dlls/apphelp/apphelp.spec |  2 +-
 include/appcompatapi.h    |  3 ++-
 3 files changed, 43 insertions(+), 2 deletions(-)

diff --git a/dlls/apphelp/apphelp.c b/dlls/apphelp/apphelp.c
index 364cd0e..5822266 100644
--- a/dlls/apphelp/apphelp.c
+++ b/dlls/apphelp/apphelp.c
@@ -579,3 +579,43 @@ DWORD WINAPI SdbReadDWORDTag(PDB db, TAGID tagid,
DWORD ret)

     return ret;
 }
+
+/**************************************************************************
+ *        SdbReadQWORDTag                [APPHELP.@]
+ *
+ * Reads QWORD value at specified tagid
+ *
+ * PARAMS
+ *  db          [I] Handle to the shim database
+ *  tagid       [I] TAGID of QWORD value
+ *  ret         [I] Default return value in case function fails
+ *
+ * RETURNS
+ *  Success: QWORD value at specified tagid
+ *  Failure: ret
+ */
+QWORD WINAPI SdbReadQWORDTag(PDB db, TAGID tagid, QWORD ret)
+{
+    TAG tag;
+
+    tag = SdbGetTagFromTagID(db, tagid);
+    if (tag == TAG_NULL)
+    {
+        TRACE("Failed to find tag for tagid %u\n", tagid);
+        return ret;
+    }
+
+    if ((tag & TAG_TYPE_MASK) != TAG_TYPE_QWORD)
+    {
+        TRACE("Tag associated with tagid %u is not a QWORD\n", tagid);
+        return ret;
+    }
+
+    if (!SdbReadData(db, &ret, tagid + 2, sizeof(QWORD)))
+    {
+        TRACE("Failed to read QWORD tag %s at tagid %u\n",
debugstr_w(SdbTagToString(tag)), tagid);
+        return ret;
+    }
+
+    return ret;
+}
diff --git a/dlls/apphelp/apphelp.spec b/dlls/apphelp/apphelp.spec
index 17794ca..4308d80 100644
--- a/dlls/apphelp/apphelp.spec
+++ b/dlls/apphelp/apphelp.spec
@@ -118,7 +118,7 @@
 @ stub SdbReadEntryInformation
 @ stub SdbReadMsiTransformInfo
 @ stub SdbReadPatchBits
-@ stub SdbReadQWORDTag
+@ stdcall SdbReadQWORDTag(ptr long int64)
 @ stub SdbReadQWORDTagRef
 @ stub SdbReadStringTag
 @ stub SdbReadStringTagRef
diff --git a/include/appcompatapi.h b/include/appcompatapi.h
index 8daccaf..87768b8 100644
--- a/include/appcompatapi.h
+++ b/include/appcompatapi.h
@@ -30,7 +30,8 @@ void WINAPI SdbCloseDatabase(PDB);
 PDB WINAPI SdbOpenDatabase(LPCWSTR, PATH_TYPE);
 TAG WINAPI SdbGetTagFromTagID(PDB, TAGID);
 TAGID WINAPI SdbGetFirstChild(PDB, TAGID);
-DWORD WINAPI SdbReadDWORDTag(PDB db, TAGID tagid, DWORD ret);
+DWORD WINAPI SdbReadDWORDTag(PDB, TAGID, DWORD);
+QWORD WINAPI SdbReadQWORDTag(PDB, TAGID, QWORD);

 typedef enum _PATH_TYPE {
     DOS_PATH,
-- 
1.8.3.4



More information about the wine-patches mailing list