-- v3: msado15: Support all Connection interfaces msado15: Support all Field interfaces msado15: Support all Fields interfaces
From: Alistair Leslie-Hughes leslie_alistair@hotmail.com
--- dlls/msado15/recordset.c | 10 +++++++++- dlls/msado15/tests/msado15.c | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/dlls/msado15/recordset.c b/dlls/msado15/recordset.c index 84084bee5a7..c3b44e4df97 100644 --- a/dlls/msado15/recordset.c +++ b/dlls/msado15/recordset.c @@ -865,11 +865,19 @@ static HRESULT WINAPI fields_QueryInterface( Fields *iface, REFIID riid, void ** struct fields *fields = impl_from_Fields( iface ); TRACE( "%p, %s, %p\n", iface, debugstr_guid(riid), obj );
- if (IsEqualGUID( riid, &IID_Fields ) || IsEqualGUID( riid, &IID_IDispatch ) || + if (IsEqualGUID( riid, &IID_Fields ) || + IsEqualGUID( riid, &IID_Fields20 ) || + IsEqualGUID( riid, &IID_Fields15 ) || + IsEqualGUID( riid, &IID_IDispatch ) || IsEqualGUID( riid, &IID_IUnknown )) { *obj = iface; } + else if (IsEqualGUID( riid, &IID__Collection )) + { + TRACE( "interface _Collection cannot be queried returning NULL\n" ); + return E_NOINTERFACE; + } else if (IsEqualGUID( riid, &IID_ISupportErrorInfo )) { *obj = &fields->ISupportErrorInfo_iface; diff --git a/dlls/msado15/tests/msado15.c b/dlls/msado15/tests/msado15.c index 5264cf710bc..7588dd3db3f 100644 --- a/dlls/msado15/tests/msado15.c +++ b/dlls/msado15/tests/msado15.c @@ -789,6 +789,9 @@ static void test_Fields(void) { _Recordset *recordset; ISupportErrorInfo *errorinfo; + Fields20 *fields20; + Fields15 *fields15; + _Collection *collection; unsigned char prec, scale; Fields *fields; Field *field, *field2; @@ -809,6 +812,17 @@ static void test_Fields(void) hr = _Recordset_get_Fields( recordset, &fields ); ok( hr == S_OK, "got %08lx\n", hr );
+ hr = Fields_QueryInterface( fields, &IID_Fields20, (void **)&fields20 ); + ok( hr == S_OK, "got %08lx\n", hr ); + Fields20_Release( fields20 ); + + hr = Fields_QueryInterface( fields, &IID_Fields15, (void **)&fields15 ); + ok( hr == S_OK, "got %08lx\n", hr ); + Fields15_Release( fields15 ); + + hr = Fields_QueryInterface( fields, &IID__Collection, (void **)&collection ); + ok( hr == E_NOINTERFACE, "got %08lx\n", hr ); + /* Fields object supports ISupportErrorInfo */ errorinfo = NULL; hr = Fields_QueryInterface( fields, &IID_ISupportErrorInfo, (void **)&errorinfo );
From: Alistair Leslie-Hughes leslie_alistair@hotmail.com
--- dlls/msado15/recordset.c | 5 ++++- dlls/msado15/tests/msado15.c | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/dlls/msado15/recordset.c b/dlls/msado15/recordset.c index c3b44e4df97..bb1102b1be7 100644 --- a/dlls/msado15/recordset.c +++ b/dlls/msado15/recordset.c @@ -123,7 +123,10 @@ static HRESULT WINAPI field_QueryInterface( Field *iface, REFIID riid, void **ob struct field *field = impl_from_Field( iface ); TRACE( "%p, %s, %p\n", iface, debugstr_guid(riid), obj );
- if (IsEqualGUID( riid, &IID_Field ) || IsEqualGUID( riid, &IID_IDispatch ) || + if (IsEqualGUID( riid, &IID_Field ) || + IsEqualGUID( riid, &IID_Field20 ) || + IsEqualGUID( riid, &IID__ADO ) || + IsEqualGUID( riid, &IID_IDispatch ) || IsEqualGUID( riid, &IID_IUnknown )) { *obj = iface; diff --git a/dlls/msado15/tests/msado15.c b/dlls/msado15/tests/msado15.c index 7588dd3db3f..70606427866 100644 --- a/dlls/msado15/tests/msado15.c +++ b/dlls/msado15/tests/msado15.c @@ -789,6 +789,8 @@ static void test_Fields(void) { _Recordset *recordset; ISupportErrorInfo *errorinfo; + Field20 *field20; + _ADO *ado; Fields20 *fields20; Fields15 *fields15; _Collection *collection; @@ -873,6 +875,14 @@ static void test_Fields(void) ok( hr == S_OK, "got %08lx\n", hr ); if (errorinfo) ISupportErrorInfo_Release( errorinfo );
+ hr = Field_QueryInterface( field, &IID_Field20, (void **)&field20 ); + ok( hr == S_OK, "got %08lx\n", hr ); + Field20_Release( field20 ); + + hr = Field_QueryInterface( field, &IID__ADO, (void **)&ado ); + ok( hr == S_OK, "got %08lx\n", hr ); + _ADO_Release( ado ); + /* verify values set with _Append */ hr = Field_get_Name( field, &name ); ok( hr == S_OK, "got %08lx\n", hr );
From: Alistair Leslie-Hughes leslie_alistair@hotmail.com
--- dlls/msado15/connection.c | 5 ++++- dlls/msado15/tests/msado15.c | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/dlls/msado15/connection.c b/dlls/msado15/connection.c index 278ef1e76f4..bc74cb98e02 100644 --- a/dlls/msado15/connection.c +++ b/dlls/msado15/connection.c @@ -122,7 +122,10 @@ static HRESULT WINAPI connection_QueryInterface( _Connection *iface, REFIID riid
*obj = NULL;
- if (IsEqualGUID( riid, &IID__Connection ) || IsEqualGUID( riid, &IID_IDispatch ) || + if (IsEqualGUID( riid, &IID__Connection ) || + IsEqualGUID( riid, &IID_Connection15) || + IsEqualGUID( riid, &IID__ADO) || + IsEqualGUID( riid, &IID_IDispatch ) || IsEqualGUID( riid, &IID_IUnknown )) { *obj = iface; diff --git a/dlls/msado15/tests/msado15.c b/dlls/msado15/tests/msado15.c index 70606427866..5d7e832d354 100644 --- a/dlls/msado15/tests/msado15.c +++ b/dlls/msado15/tests/msado15.c @@ -1201,6 +1201,8 @@ static void test_Connection(void) ISupportErrorInfo *errorinfo; IConnectionPointContainer *pointcontainer; ADOConnectionConstruction15 *construct; + Connection15 *conn15; + _ADO *ado; LONG state, timeout; BSTR str, str2, str3; ConnectModeEnum mode; @@ -1209,6 +1211,14 @@ static void test_Connection(void) hr = CoCreateInstance(&CLSID_Connection, NULL, CLSCTX_INPROC_SERVER, &IID__Connection, (void**)&connection); ok( hr == S_OK, "got %08lx\n", hr );
+ hr = _Connection_QueryInterface(connection, &IID_Connection15, (void**)&conn15); + ok(hr == S_OK, "Unexpected IRunnableObject interface\n"); + Connection15_Release(conn15); + + hr = _Connection_QueryInterface(connection, &IID__ADO, (void**)&ado); + ok(hr == S_OK, "Unexpected IRunnableObject interface\n"); + _ADO_Release(ado); + hr = _Connection_QueryInterface(connection, &IID_IRunnableObject, (void**)&runtime); ok(hr == E_NOINTERFACE, "Unexpected IRunnableObject interface\n"); ok(runtime == NULL, "expected NULL\n");