Jacek Caban : wbemdisp: Added WinMGMTS object stub implementation.
Alexandre Julliard
julliard at winehq.org
Wed Aug 28 14:03:10 CDT 2013
Module: wine
Branch: master
Commit: 8c4e9ba4cfa4e1976a84dcb8bdfcf26b497a8480
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8c4e9ba4cfa4e1976a84dcb8bdfcf26b497a8480
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Aug 28 12:14:31 2013 +0200
wbemdisp: Added WinMGMTS object stub implementation.
---
.gitignore | 1 +
dlls/wbemdisp/Makefile.in | 1 +
dlls/wbemdisp/locator.c | 1 -
dlls/wbemdisp/main.c | 63 ++++++++++++++++++++++++++++++++++++++++++---
4 files changed, 61 insertions(+), 5 deletions(-)
diff --git a/.gitignore b/.gitignore
index de6c039..16238b3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -140,6 +140,7 @@ dlls/vbscript/tests/vbsregexp55.h
dlls/vbscript/vbscript_classes.h
dlls/vbscript/vbsglobal.h
dlls/vbscript/vbsregexp55.h
+dlls/wbemdisp/wbemdisp_classes.h
dlls/wbemprox/wql.tab.c
dlls/wbemprox/wql.tab.h
dlls/windowscodecs/windowscodecs_wincodec.h
diff --git a/dlls/wbemdisp/Makefile.in b/dlls/wbemdisp/Makefile.in
index dbd76d9..3f3ff49 100644
--- a/dlls/wbemdisp/Makefile.in
+++ b/dlls/wbemdisp/Makefile.in
@@ -6,6 +6,7 @@ C_SRCS = \
main.c
IDL_R_SRCS = wbemdisp_classes.idl
+IDL_H_SRCS = wbemdisp_classes.idl
IDL_TLB_SRCS = wbemdisp_tlb.idl
diff --git a/dlls/wbemdisp/locator.c b/dlls/wbemdisp/locator.c
index 6f3af95..68c24f7 100644
--- a/dlls/wbemdisp/locator.c
+++ b/dlls/wbemdisp/locator.c
@@ -23,7 +23,6 @@
#include "windef.h"
#include "winbase.h"
-#include "initguid.h"
#include "objbase.h"
#include "wbemdisp.h"
diff --git a/dlls/wbemdisp/main.c b/dlls/wbemdisp/main.c
index 078e3b5..8582cf1 100644
--- a/dlls/wbemdisp/main.c
+++ b/dlls/wbemdisp/main.c
@@ -23,17 +23,69 @@
#include "windef.h"
#include "winbase.h"
+#include "initguid.h"
#include "objbase.h"
#include "wbemdisp.h"
#include "rpcproxy.h"
#include "wine/debug.h"
#include "wbemdisp_private.h"
+#include "wbemdisp_classes.h"
WINE_DEFAULT_DEBUG_CHANNEL(wbemdisp);
static HINSTANCE instance;
+static HRESULT WINAPI WinMGMTS_QueryInterface(IParseDisplayName *iface, REFIID riid, void **ppv)
+{
+ if(IsEqualGUID(riid, &IID_IUnknown)) {
+ TRACE("(IID_IUnknown %p)\n", ppv);
+ *ppv = iface;
+ }else if(IsEqualGUID(riid, &IID_IParseDisplayName)) {
+ TRACE("(IID_IParseDisplayName %p)\n", ppv);
+ *ppv = iface;
+ }else {
+ WARN("Unsupported riid %s\n", debugstr_guid(riid));
+ *ppv = NULL;
+ return E_NOINTERFACE;
+ }
+
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+}
+
+static ULONG WINAPI WinMGMTS_AddRef(IParseDisplayName *iface)
+{
+ return 2;
+}
+
+static ULONG WINAPI WinMGMTS_Release(IParseDisplayName *iface)
+{
+ return 1;
+}
+
+static HRESULT WINAPI WinMGMTS_ParseDisplayName(IParseDisplayName *iface, IBindCtx *pbc, LPOLESTR pszDisplayName,
+ ULONG *pchEaten, IMoniker **ppmkOut)
+{
+ FIXME("(%p %s %p %p)\n", pbc, debugstr_w(pszDisplayName), pchEaten, ppmkOut);
+ return E_NOTIMPL;
+}
+
+static const IParseDisplayNameVtbl WinMGMTSVtbl = {
+ WinMGMTS_QueryInterface,
+ WinMGMTS_AddRef,
+ WinMGMTS_Release,
+ WinMGMTS_ParseDisplayName
+};
+
+static IParseDisplayName winmgmts = { &WinMGMTSVtbl };
+
+static HRESULT WinMGMTS_create(IUnknown *outer, void **ppv)
+{
+ *ppv = &winmgmts;
+ return S_OK;
+}
+
struct factory
{
IClassFactory IClassFactory_iface;
@@ -107,6 +159,7 @@ static const struct IClassFactoryVtbl factory_vtbl =
};
static struct factory swbem_locator_cf = { { &factory_vtbl }, SWbemLocator_create };
+static struct factory winmgmts_cf = { { &factory_vtbl }, WinMGMTS_create };
BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
{
@@ -130,10 +183,12 @@ HRESULT WINAPI DllGetClassObject( REFCLSID rclsid, REFIID iid, LPVOID *obj )
TRACE( "%s, %s, %p\n", debugstr_guid(rclsid), debugstr_guid(iid), obj );
if (IsEqualGUID( rclsid, &CLSID_SWbemLocator ))
- {
- cf = &swbem_locator_cf.IClassFactory_iface;
- }
- if (!cf) return CLASS_E_CLASSNOTAVAILABLE;
+ cf = &swbem_locator_cf.IClassFactory_iface;
+ else if (IsEqualGUID( rclsid, &CLSID_WinMGMTS ))
+ cf = &winmgmts_cf.IClassFactory_iface;
+ else
+ return CLASS_E_CLASSNOTAVAILABLE;
+
return IClassFactory_QueryInterface( cf, iid, obj );
}
More information about the wine-cvs
mailing list