Misha Koshelev : msi: automation: Implement Record::FieldCount.

Alexandre Julliard julliard at wine.codeweavers.com
Mon May 14 10:52:47 CDT 2007


Module: wine
Branch: master
Commit: c0c6fe63418b64970ba1393a0129dc699e123a24
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c0c6fe63418b64970ba1393a0129dc699e123a24

Author: Misha Koshelev <mk144210 at bcm.edu>
Date:   Fri May 11 14:08:14 2007 -0500

msi: automation: Implement Record::FieldCount.

---

 dlls/msi/automation.c        |    8 ++++++++
 dlls/msi/msiserver.idl       |    2 ++
 dlls/msi/msiserver_dispids.h |    1 +
 dlls/msi/tests/automation.c  |    9 +++------
 4 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/dlls/msi/automation.c b/dlls/msi/automation.c
index ec0706a..e314be0 100644
--- a/dlls/msi/automation.c
+++ b/dlls/msi/automation.c
@@ -566,6 +566,14 @@ static HRESULT WINAPI RecordImpl_Invoke(
 
     switch (dispIdMember)
     {
+	case DISPID_RECORD_FIELDCOUNT:
+	    if (wFlags & DISPATCH_PROPERTYGET) {
+                V_VT(pVarResult) = VT_I4;
+                V_I4(pVarResult) = MsiRecordGetFieldCount(This->msiHandle);
+	    }
+            else return DISP_E_MEMBERNOTFOUND;
+	    break;
+
 	case DISPID_RECORD_STRINGDATA:
 	    if (wFlags & DISPATCH_PROPERTYGET) {
                 hr = DispGetParam(pDispParams, 0, VT_I4, &varg0, puArgErr);
diff --git a/dlls/msi/msiserver.idl b/dlls/msi/msiserver.idl
index e02f194..f47b691 100644
--- a/dlls/msi/msiserver.idl
+++ b/dlls/msi/msiserver.idl
@@ -88,6 +88,8 @@ library WindowsInstaller
             void StringData(
                 [in] long Field,
                 [in] BSTR rhs);
+        [id(DISPID_RECORD_FIELDCOUNT), propget]
+            long FieldCount();
     }
 
     [ uuid(000C1095-0000-0000-C000-000000000046) ]
diff --git a/dlls/msi/msiserver_dispids.h b/dlls/msi/msiserver_dispids.h
index b65726e..88d6d53 100644
--- a/dlls/msi/msiserver_dispids.h
+++ b/dlls/msi/msiserver_dispids.h
@@ -22,6 +22,7 @@
 #define DISPID_INSTALLER_PRODUCTSTATE 17
 #define DISPID_INSTALLER_PRODUCTS 35
 
+#define DISPID_RECORD_FIELDCOUNT 0
 #define DISPID_RECORD_STRINGDATA 1
 
 #define DISPID_STRINGLIST_ITEM 0
diff --git a/dlls/msi/tests/automation.c b/dlls/msi/tests/automation.c
index c197c87..ab2cc12 100644
--- a/dlls/msi/tests/automation.c
+++ b/dlls/msi/tests/automation.c
@@ -1388,12 +1388,9 @@ static void test_Installer(void)
         int iFieldCount = 0;
 
         /* Record::FieldCountGet */
-        todo_wine
-        {
-            hr = Record_FieldCountGet(pRecord, &iFieldCount);
-            ok(SUCCEEDED(hr), "Record_FiledCountGet failed, hresult 0x%08x\n", hr);
-            ok(iFieldCount == 1, "Record_FieldCountGet result was %d but expected 1\n", iFieldCount);
-        }
+        hr = Record_FieldCountGet(pRecord, &iFieldCount);
+        ok(SUCCEEDED(hr), "Record_FiledCountGet failed, hresult 0x%08x\n", hr);
+        ok(iFieldCount == 1, "Record_FieldCountGet result was %d but expected 1\n", iFieldCount);
 
         IDispatch_Release(pRecord);
     }




More information about the wine-cvs mailing list