Misha Koshelev : msi: automation: Implement Record::IntegerData.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue May 15 14:02:08 CDT 2007
Module: wine
Branch: master
Commit: 18cab64b42c0f5c8d61fbd3772a2d7da15b2dea7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=18cab64b42c0f5c8d61fbd3772a2d7da15b2dea7
Author: Misha Koshelev <mk144210 at bcm.edu>
Date: Mon May 14 12:14:00 2007 -0500
msi: automation: Implement Record::IntegerData.
---
dlls/msi/automation.c | 20 +++++++++++++++++
dlls/msi/msiserver.idl | 6 +++++
dlls/msi/msiserver_dispids.h | 1 +
dlls/msi/tests/automation.c | 49 +++++++++++++++++++----------------------
4 files changed, 50 insertions(+), 26 deletions(-)
diff --git a/dlls/msi/automation.c b/dlls/msi/automation.c
index b9dcb5a..c7b8181 100644
--- a/dlls/msi/automation.c
+++ b/dlls/msi/automation.c
@@ -608,6 +608,26 @@ static HRESULT WINAPI RecordImpl_Invoke(
else return DISP_E_MEMBERNOTFOUND;
break;
+ case DISPID_RECORD_INTEGERDATA:
+ if (wFlags & DISPATCH_PROPERTYGET) {
+ hr = DispGetParam(pDispParams, 0, VT_I4, &varg0, puArgErr);
+ if (FAILED(hr)) return hr;
+ V_VT(pVarResult) = VT_I4;
+ V_I4(pVarResult) = MsiRecordGetInteger(This->msiHandle, V_I4(&varg0));
+ } else if (wFlags & DISPATCH_PROPERTYPUT) {
+ hr = DispGetParam(pDispParams, 0, VT_I4, &varg0, puArgErr);
+ if (FAILED(hr)) return hr;
+ hr = DispGetParam(pDispParams, DISPID_PROPERTYPUT, VT_I4, &varg1, puArgErr);
+ if (FAILED(hr)) return hr;
+ if ((ret = MsiRecordSetInteger(This->msiHandle, V_I4(&varg0), V_I4(&varg1))) != ERROR_SUCCESS)
+ {
+ ERR("MsiRecordSetInteger returned %d\n", ret);
+ return DISP_E_EXCEPTION;
+ }
+ }
+ else return DISP_E_MEMBERNOTFOUND;
+ break;
+
default:
return DISP_E_MEMBERNOTFOUND;
}
diff --git a/dlls/msi/msiserver.idl b/dlls/msi/msiserver.idl
index 560b572..25008dd 100644
--- a/dlls/msi/msiserver.idl
+++ b/dlls/msi/msiserver.idl
@@ -88,6 +88,12 @@ library WindowsInstaller
void StringData(
[in] long Field,
[in] BSTR rhs);
+ [id(DISPID_RECORD_INTEGERDATA), propget]
+ long IntegerData([in] long Field);
+ [id(DISPID_RECORD_INTEGERDATA), propput]
+ void IntegerData(
+ [in] long Field,
+ [in] long rhs);
[id(DISPID_RECORD_FIELDCOUNT), propget]
long FieldCount();
}
diff --git a/dlls/msi/msiserver_dispids.h b/dlls/msi/msiserver_dispids.h
index ebcab7d..c9906b4 100644
--- a/dlls/msi/msiserver_dispids.h
+++ b/dlls/msi/msiserver_dispids.h
@@ -24,6 +24,7 @@
#define DISPID_RECORD_FIELDCOUNT 0
#define DISPID_RECORD_STRINGDATA 1
+#define DISPID_RECORD_INTEGERDATA 2
#define DISPID_STRINGLIST_ITEM 0
#define DISPID_STRINGLIST_COUNT 1
diff --git a/dlls/msi/tests/automation.c b/dlls/msi/tests/automation.c
index 4aaa671..5eb0bc2 100644
--- a/dlls/msi/tests/automation.c
+++ b/dlls/msi/tests/automation.c
@@ -1478,32 +1478,29 @@ static void test_Installer(void)
ok(SUCCEEDED(hr), "Record_FiledCountGet failed, hresult 0x%08x\n", hr);
ok(iValue == 1, "Record_FieldCountGet result was %d but expected 1\n", iValue);
- todo_wine
- {
- /* Record::IntegerDataGet */
- hr = Record_IntegerDataGet(pRecord, 1, &iValue);
- ok(SUCCEEDED(hr), "Record_IntegerDataGet failed, hresult 0x%08x\n", hr);
- ok(iValue == MSI_NULL_INTEGER, "Record_IntegerDataGet result was %d but expected %d\n", iValue, MSI_NULL_INTEGER);
-
- /* Record::IntegerDataGet, bad index */
- hr = Record_IntegerDataGet(pRecord, 10, &iValue);
- ok(SUCCEEDED(hr), "Record_IntegerDataGet failed, hresult 0x%08x\n", hr);
- ok(iValue == MSI_NULL_INTEGER, "Record_IntegerDataGet result was %d but expected %d\n", iValue, MSI_NULL_INTEGER);
-
- /* Record::IntegerDataPut */
- hr = Record_IntegerDataPut(pRecord, 1, 100);
- ok(SUCCEEDED(hr), "Record_IntegerDataPut failed, hresult 0x%08x\n", hr);
-
- /* Record::IntegerDataPut, bad index */
- hr = Record_IntegerDataPut(pRecord, 10, 100);
- ok(hr == DISP_E_EXCEPTION, "Record_IntegerDataPut failed, hresult 0x%08x\n", hr);
- ok_exception(hr, szIntegerDataException);
-
- /* Record::IntegerDataGet */
- hr = Record_IntegerDataGet(pRecord, 1, &iValue);
- ok(SUCCEEDED(hr), "Record_IntegerDataGet failed, hresult 0x%08x\n", hr);
- ok(iValue == 100, "Record_IntegerDataGet result was %d but expected 100\n", iValue);
- }
+ /* Record::IntegerDataGet */
+ hr = Record_IntegerDataGet(pRecord, 1, &iValue);
+ ok(SUCCEEDED(hr), "Record_IntegerDataGet failed, hresult 0x%08x\n", hr);
+ ok(iValue == MSI_NULL_INTEGER, "Record_IntegerDataGet result was %d but expected %d\n", iValue, MSI_NULL_INTEGER);
+
+ /* Record::IntegerDataGet, bad index */
+ hr = Record_IntegerDataGet(pRecord, 10, &iValue);
+ ok(SUCCEEDED(hr), "Record_IntegerDataGet failed, hresult 0x%08x\n", hr);
+ ok(iValue == MSI_NULL_INTEGER, "Record_IntegerDataGet result was %d but expected %d\n", iValue, MSI_NULL_INTEGER);
+
+ /* Record::IntegerDataPut */
+ hr = Record_IntegerDataPut(pRecord, 1, 100);
+ ok(SUCCEEDED(hr), "Record_IntegerDataPut failed, hresult 0x%08x\n", hr);
+
+ /* Record::IntegerDataPut, bad index */
+ hr = Record_IntegerDataPut(pRecord, 10, 100);
+ ok(hr == DISP_E_EXCEPTION, "Record_IntegerDataPut failed, hresult 0x%08x\n", hr);
+ ok_exception(hr, szIntegerDataException);
+
+ /* Record::IntegerDataGet */
+ hr = Record_IntegerDataGet(pRecord, 1, &iValue);
+ ok(SUCCEEDED(hr), "Record_IntegerDataGet failed, hresult 0x%08x\n", hr);
+ ok(iValue == 100, "Record_IntegerDataGet result was %d but expected 100\n", iValue);
IDispatch_Release(pRecord);
}
More information about the wine-cvs
mailing list