[PATCH 7/11] apphelp: Implement SdbReadDWORDTag.
Mislav Blazevic
krofnica996 at gmail.com
Wed Jul 31 17:58:55 CDT 2013
---
dlls/apphelp/apphelp.c | 40 ++++++++++++++++++++++++++++++++++++++++
dlls/apphelp/apphelp.spec | 1 +
include/appcompatapi.h | 1 +
3 files changed, 42 insertions(+)
diff --git a/dlls/apphelp/apphelp.c b/dlls/apphelp/apphelp.c
index 241e2b5..364cd0e 100644
--- a/dlls/apphelp/apphelp.c
+++ b/dlls/apphelp/apphelp.c
@@ -539,3 +539,43 @@ TAGID WINAPI SdbGetFirstChild(PDB db, TAGID parent)
/* first child is sizeof(TAG) + sizeof(DWORD) bytes after beginning */
return parent + 6;
}
+
+/**************************************************************************
+ * SdbReadDWORDTag [APPHELP.@]
+ *
+ * Reads DWORD value at specified tagid
+ *
+ * PARAMS
+ * db [I] Handle to the shim database
+ * tagid [I] TAGID of DWORD value
+ * ret [I] Default return value in case function fails
+ *
+ * RETURNS
+ * Success: DWORD value at specified tagid
+ * Failure: ret
+ */
+DWORD WINAPI SdbReadDWORDTag(PDB db, TAGID tagid, DWORD 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_DWORD)
+ {
+ TRACE("Tag associated with tagid %u is not a DWORD\n", tagid);
+ return ret;
+ }
+
+ if (!SdbReadData(db, &ret, tagid + 2, sizeof(DWORD)))
+ {
+ TRACE("Failed to read DWORD 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 6a96a7d..17794ca 100644
--- a/dlls/apphelp/apphelp.spec
+++ b/dlls/apphelp/apphelp.spec
@@ -113,6 +113,7 @@
@ stub SdbReadApphelpDetailsData
@ stub SdbReadBinaryTag
@ stub SdbReadBYTETag
+@ stdcall SdbReadDWORDTag(ptr long long)
@ stub SdbReadDWORDTagRef
@ stub SdbReadEntryInformation
@ stub SdbReadMsiTransformInfo
diff --git a/include/appcompatapi.h b/include/appcompatapi.h
index 185bd33..8daccaf 100644
--- a/include/appcompatapi.h
+++ b/include/appcompatapi.h
@@ -30,6 +30,7 @@ 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);
typedef enum _PATH_TYPE {
DOS_PATH,
--
1.8.3.4
More information about the wine-patches
mailing list