[PATCH 09/10] dmloader: Add and use a generic IPersistStream_GetClassID.
Michael Stefaniuc
mstefani at redhat.de
Thu Jun 12 04:39:52 CDT 2014
---
dlls/dmloader/container.c | 15 +--------------
dlls/dmloader/tests/loader.c | 2 ++
dlls/dmusic/dmobject.c | 14 ++++++++++++++
dlls/dmusic/dmobject.h | 1 +
4 files changed, 18 insertions(+), 14 deletions(-)
diff --git a/dlls/dmloader/container.c b/dlls/dmloader/container.c
index 7356bc8..2e15a71 100644
--- a/dlls/dmloader/container.c
+++ b/dlls/dmloader/container.c
@@ -368,19 +368,6 @@ static inline IDirectMusicContainerImpl *impl_from_IPersistStream(IPersistStream
return CONTAINING_RECORD(iface, IDirectMusicContainerImpl, dmobj.IPersistStream_iface);
}
-static HRESULT WINAPI IDirectMusicContainerImpl_IPersistStream_GetClassID (LPPERSISTSTREAM iface, CLSID* pClassID) {
- IDirectMusicContainerImpl *This = impl_from_IPersistStream(iface);
-
- TRACE("(%p, %p)\n", This, pClassID);
- if (IsBadWritePtr (pClassID, sizeof(CLSID))) {
- ERR(": pClassID bad write pointer\n");
- return E_POINTER;
- }
-
- *pClassID = CLSID_DirectMusicContainer;
- return S_OK;
-}
-
static HRESULT WINAPI IDirectMusicContainerImpl_IPersistStream_Load (LPPERSISTSTREAM iface, IStream* pStm) {
IDirectMusicContainerImpl *This = impl_from_IPersistStream(iface);
WINE_CHUNK Chunk;
@@ -803,7 +790,7 @@ static const IPersistStreamVtbl persiststream_vtbl = {
dmobj_IPersistStream_QueryInterface,
dmobj_IPersistStream_AddRef,
dmobj_IPersistStream_Release,
- IDirectMusicContainerImpl_IPersistStream_GetClassID,
+ dmobj_IPersistStream_GetClassID,
unimpl_IPersistStream_IsDirty,
IDirectMusicContainerImpl_IPersistStream_Load,
unimpl_IPersistStream_Save,
diff --git a/dlls/dmloader/tests/loader.c b/dlls/dmloader/tests/loader.c
index cf3cc30..f30abf8 100644
--- a/dlls/dmloader/tests/loader.c
+++ b/dlls/dmloader/tests/loader.c
@@ -266,6 +266,8 @@ static void test_container(void)
/* IPersistStream */
hr = IDirectMusicContainer_QueryInterface(dmc, &IID_IPersistStream, (void**)&ps);
ok(hr == S_OK, "QueryInterface for IID_IPersistStream failed: %08x\n", hr);
+ hr = IPersistStream_GetClassID(ps, NULL);
+ ok(hr == E_POINTER, "IPersistStream_GetClassID failed: %08x\n", hr);
hr = IPersistStream_GetClassID(ps, &class);
ok(hr == S_OK, "IPersistStream_GetClassID failed: %08x\n", hr);
ok(IsEqualGUID(&class, &CLSID_DirectMusicContainer),
diff --git a/dlls/dmusic/dmobject.c b/dlls/dmusic/dmobject.c
index 4afd5b9..8e9f58e 100644
--- a/dlls/dmusic/dmobject.c
+++ b/dlls/dmusic/dmobject.c
@@ -134,6 +134,20 @@ ULONG WINAPI dmobj_IPersistStream_Release(IPersistStream *iface)
return IUnknown_Release(This->outer_unk);
}
+HRESULT WINAPI dmobj_IPersistStream_GetClassID(IPersistStream *iface, CLSID *class)
+{
+ struct dmobject *This = impl_from_IPersistStream(iface);
+
+ TRACE("(%p, %p)\n", This, class);
+
+ if (!class)
+ return E_POINTER;
+
+ *class = This->desc.guidClass;
+
+ return S_OK;
+}
+
/* IPersistStream methods not implemented in native */
HRESULT WINAPI unimpl_IPersistStream_GetClassID(IPersistStream *iface, CLSID *class)
{
diff --git a/dlls/dmusic/dmobject.h b/dlls/dmusic/dmobject.h
index 3574939..ffc683c 100644
--- a/dlls/dmusic/dmobject.h
+++ b/dlls/dmusic/dmobject.h
@@ -42,6 +42,7 @@ HRESULT WINAPI dmobj_IPersistStream_QueryInterface(IPersistStream *iface, REFIID
void **ret_iface) DECLSPEC_HIDDEN;
ULONG WINAPI dmobj_IPersistStream_AddRef(IPersistStream *iface) DECLSPEC_HIDDEN;
ULONG WINAPI dmobj_IPersistStream_Release(IPersistStream *iface) DECLSPEC_HIDDEN;
+HRESULT WINAPI dmobj_IPersistStream_GetClassID(IPersistStream *iface, CLSID *class) DECLSPEC_HIDDEN;
/* IPersistStream methods not implemented in native */
HRESULT WINAPI unimpl_IPersistStream_GetClassID(IPersistStream *iface,
--
1.8.3.1
More information about the wine-patches
mailing list