Hans Leidekker : wbemprox: Add a stub implementation of IWbemQualifierSet.
Alexandre Julliard
julliard at winehq.org
Tue Jan 22 14:52:23 CST 2013
Module: wine
Branch: master
Commit: 2797cd8ec1b2af0f96c4c58d155aa20b482eca42
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2797cd8ec1b2af0f96c4c58d155aa20b482eca42
Author: Hans Leidekker <hans at codeweavers.com>
Date: Tue Jan 22 16:28:36 2013 +0100
wbemprox: Add a stub implementation of IWbemQualifierSet.
---
dlls/wbemprox/Makefile.in | 1 +
dlls/wbemprox/class.c | 2 +-
dlls/wbemprox/qualifier.c | 183 ++++++++++++++++++++++++++++++++++++++
dlls/wbemprox/wbemprox_private.h | 1 +
include/wbemcli.idl | 38 ++++++++
5 files changed, 224 insertions(+), 1 deletions(-)
diff --git a/dlls/wbemprox/Makefile.in b/dlls/wbemprox/Makefile.in
index 31d83cf..613f3ff 100644
--- a/dlls/wbemprox/Makefile.in
+++ b/dlls/wbemprox/Makefile.in
@@ -6,6 +6,7 @@ C_SRCS = \
class.c \
main.c \
process.c \
+ qualifier.c \
query.c \
reg.c \
service.c \
diff --git a/dlls/wbemprox/class.c b/dlls/wbemprox/class.c
index 4e27c5c..616c521 100644
--- a/dlls/wbemprox/class.c
+++ b/dlls/wbemprox/class.c
@@ -547,7 +547,7 @@ static HRESULT WINAPI class_object_GetPropertyQualifierSet(
IWbemQualifierSet **ppQualSet )
{
FIXME("%p, %s, %p\n", iface, debugstr_w(wszProperty), ppQualSet);
- return E_NOTIMPL;
+ return WbemQualifierSet_create( NULL, (void **)ppQualSet );
}
static HRESULT WINAPI class_object_Clone(
diff --git a/dlls/wbemprox/qualifier.c b/dlls/wbemprox/qualifier.c
new file mode 100644
index 0000000..b73bf1d
--- /dev/null
+++ b/dlls/wbemprox/qualifier.c
@@ -0,0 +1,183 @@
+/*
+ * Copyright 2013 Hans Leidekker for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define COBJMACROS
+
+#include "config.h"
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "objbase.h"
+#include "wbemcli.h"
+
+#include "wine/debug.h"
+#include "wbemprox_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(wbemprox);
+
+struct qualifier_set
+{
+ IWbemQualifierSet IWbemQualifierSet_iface;
+ LONG refs;
+};
+
+static inline struct qualifier_set *impl_from_IWbemQualifierSet(
+ IWbemQualifierSet *iface )
+{
+ return CONTAINING_RECORD(iface, struct qualifier_set, IWbemQualifierSet_iface);
+}
+
+static ULONG WINAPI qualifier_set_AddRef(
+ IWbemQualifierSet *iface )
+{
+ struct qualifier_set *set = impl_from_IWbemQualifierSet( iface );
+ return InterlockedIncrement( &set->refs );
+}
+
+static ULONG WINAPI qualifier_set_Release(
+ IWbemQualifierSet *iface )
+{
+ struct qualifier_set *set = impl_from_IWbemQualifierSet( iface );
+ LONG refs = InterlockedDecrement( &set->refs );
+ if (!refs)
+ {
+ TRACE("destroying %p\n", set);
+ heap_free( set );
+ }
+ return refs;
+}
+
+static HRESULT WINAPI qualifier_set_QueryInterface(
+ IWbemQualifierSet *iface,
+ REFIID riid,
+ void **ppvObject )
+{
+ struct qualifier_set *set = impl_from_IWbemQualifierSet( iface );
+
+ TRACE("%p, %s, %p\n", set, debugstr_guid( riid ), ppvObject );
+
+ if ( IsEqualGUID( riid, &IID_IWbemQualifierSet ) ||
+ IsEqualGUID( riid, &IID_IUnknown ) )
+ {
+ *ppvObject = set;
+ }
+ else
+ {
+ FIXME("interface %s not implemented\n", debugstr_guid(riid));
+ return E_NOINTERFACE;
+ }
+ IWbemQualifierSet_AddRef( iface );
+ return S_OK;
+}
+
+static HRESULT WINAPI qualifier_set_Get(
+ IWbemQualifierSet *iface,
+ LPCWSTR wszName,
+ LONG lFlags,
+ VARIANT *pVal,
+ LONG *plFlavor )
+{
+ FIXME("%p, %s, %08x, %p, %p\n", iface, debugstr_w(wszName), lFlags, pVal, plFlavor);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI qualifier_set_Put(
+ IWbemQualifierSet *iface,
+ LPCWSTR wszName,
+ VARIANT *pVal,
+ LONG lFlavor )
+{
+ FIXME("%p, %s, %p, %d\n", iface, debugstr_w(wszName), pVal, lFlavor);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI qualifier_set_Delete(
+ IWbemQualifierSet *iface,
+ LPCWSTR wszName )
+{
+ FIXME("%p, %s\n", iface, debugstr_w(wszName));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI qualifier_set_GetNames(
+ IWbemQualifierSet *iface,
+ LONG lFlags,
+ SAFEARRAY **pNames )
+{
+ FIXME("%p, %08x, %p\n", iface, lFlags, pNames);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI qualifier_set_BeginEnumeration(
+ IWbemQualifierSet *iface,
+ LONG lFlags )
+{
+ FIXME("%p, %08x\n", iface, lFlags);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI qualifier_set_Next(
+ IWbemQualifierSet *iface,
+ LONG lFlags,
+ BSTR *pstrName,
+ VARIANT *pVal,
+ LONG *plFlavor )
+{
+ FIXME("%p, %08x, %p, %p, %p\n", iface, lFlags, pstrName, pVal, plFlavor);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI qualifier_set_EndEnumeration(
+ IWbemQualifierSet *iface )
+{
+ FIXME("%p\n", iface);
+ return E_NOTIMPL;
+}
+
+static const IWbemQualifierSetVtbl qualifier_set_vtbl =
+{
+ qualifier_set_QueryInterface,
+ qualifier_set_AddRef,
+ qualifier_set_Release,
+ qualifier_set_Get,
+ qualifier_set_Put,
+ qualifier_set_Delete,
+ qualifier_set_GetNames,
+ qualifier_set_BeginEnumeration,
+ qualifier_set_Next,
+ qualifier_set_EndEnumeration
+};
+
+HRESULT WbemQualifierSet_create(
+ IUnknown *pUnkOuter, LPVOID *ppObj )
+{
+ struct qualifier_set *set;
+
+ TRACE("%p, %p\n", pUnkOuter, ppObj);
+
+ if (!(set = heap_alloc( sizeof(*set) ))) return E_OUTOFMEMORY;
+
+ set->IWbemQualifierSet_iface.lpVtbl = &qualifier_set_vtbl;
+ set->refs = 1;
+
+ *ppObj = &set->IWbemQualifierSet_iface;
+
+ TRACE("returning iface %p\n", *ppObj);
+ return S_OK;
+}
diff --git a/dlls/wbemprox/wbemprox_private.h b/dlls/wbemprox/wbemprox_private.h
index 54cb84e..621603d 100644
--- a/dlls/wbemprox/wbemprox_private.h
+++ b/dlls/wbemprox/wbemprox_private.h
@@ -197,6 +197,7 @@ HRESULT WbemServices_create(IUnknown *, const WCHAR *, LPVOID *) DECLSPEC_HIDDEN
HRESULT create_class_object(const WCHAR *, IEnumWbemClassObject *, UINT,
struct record *, IWbemClassObject **) DECLSPEC_HIDDEN;
HRESULT EnumWbemClassObject_create(IUnknown *, struct query *, LPVOID *) DECLSPEC_HIDDEN;
+HRESULT WbemQualifierSet_create(IUnknown *, LPVOID *) DECLSPEC_HIDDEN;
HRESULT process_get_owner(IWbemClassObject *, IWbemClassObject *, IWbemClassObject **) DECLSPEC_HIDDEN;
HRESULT reg_enum_key(IWbemClassObject *, IWbemClassObject *, IWbemClassObject **) DECLSPEC_HIDDEN;
diff --git a/include/wbemcli.idl b/include/wbemcli.idl
index c76d465..af5e5bc 100644
--- a/include/wbemcli.idl
+++ b/include/wbemcli.idl
@@ -597,3 +597,41 @@ interface IWbemClassObject : IUnknown
[in,string] LPCWSTR wszMethodName,
[out] BSTR *pstrClassName);
}
+
+[
+ object,
+ restricted,
+ local,
+ uuid(dc12a680-737f-11cf-884d-00aa004b2e24)
+]
+interface IWbemQualifierSet : IUnknown
+{
+ HRESULT Get(
+ [in,string] LPCWSTR wszName,
+ [in] long lFlags,
+ [out] VARIANT *pVal,
+ [out] long *plFlavor);
+
+ HRESULT Put(
+ [in,string] LPCWSTR wszName,
+ [in] VARIANT *pVal,
+ [in] long lFlavor);
+
+ HRESULT Delete(
+ [in,string] LPCWSTR wszName);
+
+ HRESULT GetNames(
+ [in] long lFlags,
+ [out] SAFEARRAY **pNames);
+
+ HRESULT BeginEnumeration(
+ [in] long lFlags);
+
+ HRESULT Next(
+ [in] long lFlags,
+ [out] BSTR *pstrName,
+ [out] VARIANT *pVal,
+ [out] long *plFlavor);
+
+ HRESULT EndEnumeration();
+};
More information about the wine-cvs
mailing list