wmiutils: Add a stub implementation of IWbemPathKeyList.
This commit is contained in:
parent
7b00683d6e
commit
39a1b7050f
|
@ -32,12 +32,11 @@
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(wmiutils);
|
WINE_DEFAULT_DEBUG_CHANNEL(wmiutils);
|
||||||
|
|
||||||
struct key
|
struct keylist
|
||||||
{
|
{
|
||||||
WCHAR *name;
|
IWbemPathKeyList IWbemPathKeyList_iface;
|
||||||
int len_name;
|
IWbemPath *parent;
|
||||||
WCHAR *value;
|
LONG refs;
|
||||||
int len_value;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct path
|
struct path
|
||||||
|
@ -59,6 +58,207 @@ struct path
|
||||||
ULONGLONG flags;
|
ULONGLONG flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static inline struct keylist *impl_from_IWbemPathKeyList( IWbemPathKeyList *iface )
|
||||||
|
{
|
||||||
|
return CONTAINING_RECORD(iface, struct keylist, IWbemPathKeyList_iface);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline struct path *impl_from_IWbemPath( IWbemPath *iface )
|
||||||
|
{
|
||||||
|
return CONTAINING_RECORD(iface, struct path, IWbemPath_iface);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI keylist_AddRef(
|
||||||
|
IWbemPathKeyList *iface )
|
||||||
|
{
|
||||||
|
struct keylist *keylist = impl_from_IWbemPathKeyList( iface );
|
||||||
|
return InterlockedIncrement( &keylist->refs );
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI keylist_Release(
|
||||||
|
IWbemPathKeyList *iface )
|
||||||
|
{
|
||||||
|
struct keylist *keylist = impl_from_IWbemPathKeyList( iface );
|
||||||
|
LONG refs = InterlockedDecrement( &keylist->refs );
|
||||||
|
if (!refs)
|
||||||
|
{
|
||||||
|
TRACE("destroying %p\n", keylist);
|
||||||
|
IWbemPath_Release( keylist->parent );
|
||||||
|
heap_free( keylist );
|
||||||
|
}
|
||||||
|
return refs;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI keylist_QueryInterface(
|
||||||
|
IWbemPathKeyList *iface,
|
||||||
|
REFIID riid,
|
||||||
|
void **ppvObject )
|
||||||
|
{
|
||||||
|
struct keylist *keylist = impl_from_IWbemPathKeyList( iface );
|
||||||
|
|
||||||
|
TRACE("%p, %s, %p\n", keylist, debugstr_guid(riid), ppvObject);
|
||||||
|
|
||||||
|
if (IsEqualGUID( riid, &IID_IWbemPathKeyList ) ||
|
||||||
|
IsEqualGUID( riid, &IID_IUnknown ))
|
||||||
|
{
|
||||||
|
*ppvObject = iface;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FIXME("interface %s not implemented\n", debugstr_guid(riid));
|
||||||
|
return E_NOINTERFACE;
|
||||||
|
}
|
||||||
|
IWbemPathKeyList_AddRef( iface );
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI keylist_GetCount(
|
||||||
|
IWbemPathKeyList *iface,
|
||||||
|
ULONG *puKeyCount )
|
||||||
|
{
|
||||||
|
FIXME("%p, %p\n", iface, puKeyCount);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI keylist_SetKey(
|
||||||
|
IWbemPathKeyList *iface,
|
||||||
|
LPCWSTR wszName,
|
||||||
|
ULONG uFlags,
|
||||||
|
ULONG uCimType,
|
||||||
|
LPVOID pKeyVal )
|
||||||
|
{
|
||||||
|
FIXME("%p, %s, 0x%x, %u, %p\n", iface, debugstr_w(wszName), uFlags, uCimType, pKeyVal);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI keylist_SetKey2(
|
||||||
|
IWbemPathKeyList *iface,
|
||||||
|
LPCWSTR wszName,
|
||||||
|
ULONG uFlags,
|
||||||
|
ULONG uCimType,
|
||||||
|
VARIANT *pKeyVal )
|
||||||
|
{
|
||||||
|
FIXME("%p, %s, 0x%x, %u, %p\n", iface, debugstr_w(wszName), uFlags, uCimType, pKeyVal);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI keylist_GetKey(
|
||||||
|
IWbemPathKeyList *iface,
|
||||||
|
ULONG uKeyIx,
|
||||||
|
ULONG uFlags,
|
||||||
|
ULONG *puNameBufSize,
|
||||||
|
LPWSTR pszKeyName,
|
||||||
|
ULONG *puKeyValBufSize,
|
||||||
|
LPVOID pKeyVal,
|
||||||
|
ULONG *puApparentCimType )
|
||||||
|
{
|
||||||
|
FIXME("%p, %u, 0x%x, %p, %p, %p, %p, %p\n", iface, uKeyIx, uFlags, puNameBufSize,
|
||||||
|
pszKeyName, puKeyValBufSize, pKeyVal, puApparentCimType);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI keylist_GetKey2(
|
||||||
|
IWbemPathKeyList *iface,
|
||||||
|
ULONG uKeyIx,
|
||||||
|
ULONG uFlags,
|
||||||
|
ULONG *puNameBufSize,
|
||||||
|
LPWSTR pszKeyName,
|
||||||
|
VARIANT *pKeyValue,
|
||||||
|
ULONG *puApparentCimType )
|
||||||
|
{
|
||||||
|
FIXME("%p, %u, 0x%x, %p, %p, %p, %p\n", iface, uKeyIx, uFlags, puNameBufSize,
|
||||||
|
pszKeyName, pKeyValue, puApparentCimType);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI keylist_RemoveKey(
|
||||||
|
IWbemPathKeyList *iface,
|
||||||
|
LPCWSTR wszName,
|
||||||
|
ULONG uFlags )
|
||||||
|
{
|
||||||
|
FIXME("%p, %s, 0x%x\n", iface, debugstr_w(wszName), uFlags);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI keylist_RemoveAllKeys(
|
||||||
|
IWbemPathKeyList *iface,
|
||||||
|
ULONG uFlags )
|
||||||
|
{
|
||||||
|
FIXME("%p, 0x%x\n", iface, uFlags);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI keylist_MakeSingleton(
|
||||||
|
IWbemPathKeyList *iface,
|
||||||
|
boolean bSet )
|
||||||
|
{
|
||||||
|
FIXME("%p, %d\n", iface, bSet);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI keylist_GetInfo(
|
||||||
|
IWbemPathKeyList *iface,
|
||||||
|
ULONG uRequestedInfo,
|
||||||
|
ULONGLONG *puResponse )
|
||||||
|
{
|
||||||
|
FIXME("%p, %u, %p\n", iface, uRequestedInfo, puResponse);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI keylist_GetText(
|
||||||
|
IWbemPathKeyList *iface,
|
||||||
|
LONG lFlags,
|
||||||
|
ULONG *puBuffLength,
|
||||||
|
LPWSTR pszText )
|
||||||
|
{
|
||||||
|
FIXME("%p, 0x%x, %p, %p\n", iface, lFlags, puBuffLength, pszText);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct IWbemPathKeyListVtbl keylist_vtbl =
|
||||||
|
{
|
||||||
|
keylist_QueryInterface,
|
||||||
|
keylist_AddRef,
|
||||||
|
keylist_Release,
|
||||||
|
keylist_GetCount,
|
||||||
|
keylist_SetKey,
|
||||||
|
keylist_SetKey2,
|
||||||
|
keylist_GetKey,
|
||||||
|
keylist_GetKey2,
|
||||||
|
keylist_RemoveKey,
|
||||||
|
keylist_RemoveAllKeys,
|
||||||
|
keylist_MakeSingleton,
|
||||||
|
keylist_GetInfo,
|
||||||
|
keylist_GetText
|
||||||
|
};
|
||||||
|
|
||||||
|
static HRESULT WbemPathKeyList_create( IUnknown *pUnkOuter, IWbemPath *parent, LPVOID *ppObj )
|
||||||
|
{
|
||||||
|
struct keylist *keylist;
|
||||||
|
|
||||||
|
TRACE("%p, %p\n", pUnkOuter, ppObj);
|
||||||
|
|
||||||
|
if (!(keylist = heap_alloc( sizeof(*keylist) ))) return E_OUTOFMEMORY;
|
||||||
|
|
||||||
|
keylist->IWbemPathKeyList_iface.lpVtbl = &keylist_vtbl;
|
||||||
|
keylist->refs = 1;
|
||||||
|
keylist->parent = parent;
|
||||||
|
IWbemPath_AddRef( keylist->parent );
|
||||||
|
|
||||||
|
*ppObj = &keylist->IWbemPathKeyList_iface;
|
||||||
|
|
||||||
|
TRACE("returning iface %p\n", *ppObj);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct key
|
||||||
|
{
|
||||||
|
WCHAR *name;
|
||||||
|
int len_name;
|
||||||
|
WCHAR *value;
|
||||||
|
int len_value;
|
||||||
|
};
|
||||||
|
|
||||||
static void init_path( struct path *path )
|
static void init_path( struct path *path )
|
||||||
{
|
{
|
||||||
path->text = NULL;
|
path->text = NULL;
|
||||||
|
@ -93,11 +293,6 @@ static void clear_path( struct path *path )
|
||||||
init_path( path );
|
init_path( path );
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct path *impl_from_IWbemPath( IWbemPath *iface )
|
|
||||||
{
|
|
||||||
return CONTAINING_RECORD(iface, struct path, IWbemPath_iface);
|
|
||||||
}
|
|
||||||
|
|
||||||
static ULONG WINAPI path_AddRef(
|
static ULONG WINAPI path_AddRef(
|
||||||
IWbemPath *iface )
|
IWbemPath *iface )
|
||||||
{
|
{
|
||||||
|
@ -922,8 +1117,22 @@ static HRESULT WINAPI path_GetKeyList(
|
||||||
IWbemPath *iface,
|
IWbemPath *iface,
|
||||||
IWbemPathKeyList **pOut)
|
IWbemPathKeyList **pOut)
|
||||||
{
|
{
|
||||||
FIXME("%p, %p\n", iface, pOut);
|
struct path *path = impl_from_IWbemPath( iface );
|
||||||
return E_NOTIMPL;
|
HRESULT hr;
|
||||||
|
|
||||||
|
TRACE("%p, %p\n", iface, pOut);
|
||||||
|
|
||||||
|
EnterCriticalSection( &path->cs );
|
||||||
|
|
||||||
|
if (!path->class)
|
||||||
|
{
|
||||||
|
LeaveCriticalSection( &path->cs );
|
||||||
|
return WBEM_E_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
hr = WbemPathKeyList_create( NULL, iface, (void **)pOut );
|
||||||
|
|
||||||
|
LeaveCriticalSection( &path->cs );
|
||||||
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI path_CreateClassPart(
|
static HRESULT WINAPI path_CreateClassPart(
|
||||||
|
|
Loading…
Reference in New Issue