wbemprox: Add a stub implementation of IWbemQualifierSet.

This commit is contained in:
Hans Leidekker 2013-01-22 16:28:36 +01:00 committed by Alexandre Julliard
parent 7a27ffb28c
commit 2797cd8ec1
5 changed files with 224 additions and 1 deletions

View File

@ -6,6 +6,7 @@ C_SRCS = \
class.c \
main.c \
process.c \
qualifier.c \
query.c \
reg.c \
service.c \

View File

@ -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(

183
dlls/wbemprox/qualifier.c Normal file
View File

@ -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;
}

View File

@ -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;

View File

@ -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();
};