static void test_COM_audiopathconfig(void) { IDirectMusicAudioPath *dmap = (IDirectMusicAudioPath*)0xdeadbeef; IDirectMusicObject *dmo; IPersistStream *ps; IUnknown *unk; ULONG refcount; HRESULT hr; /* COM aggregation */ hr = CoCreateInstance(&CLSID_DirectMusicAudioPathConfig, (IUnknown*)&dmap, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)&dmap); if (hr == REGDB_E_CLASSNOTREG) { win_skip("DirectMusicAudioPathConfig not registered\n"); return; } ok(hr == CLASS_E_NOAGGREGATION, "DirectMusicAudioPathConfig create failed: %08x, expected CLASS_E_NOAGGREGATION\n", hr); ok(!dmap, "dmap = %p\n", dmap); /* IDirectMusicAudioPath not supported */ hr = CoCreateInstance(&CLSID_DirectMusicAudioPathConfig, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectMusicAudioPath, (void**)&dmap); todo_wine ok(FAILED(hr) && !dmap, "Unexpected IDirectMusicAudioPath interface: hr=%08x, iface=%p\n", hr, dmap); /* IDirectMusicObject and IPersistStream supported */ hr = CoCreateInstance(&CLSID_DirectMusicAudioPathConfig, NULL, CLSCTX_INPROC_SERVER, &IID_IPersistStream, (void**)&ps); ok(hr == S_OK, "DirectMusicObject create failed: %08x, expected S_OK\n", hr); IPersistStream_Release(ps); hr = CoCreateInstance(&CLSID_DirectMusicAudioPathConfig, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectMusicObject, (void**)&dmo); ok(hr == S_OK, "DirectMusicObject create failed: %08x, expected S_OK\n", hr); /* Same refcount for all DirectMusicObject interfaces */ refcount = IDirectMusicObject_AddRef(dmo); ok(refcount == 2, "refcount == %u, expected 2\n", refcount); hr = IDirectMusicObject_QueryInterface(dmo, &IID_IPersistStream, (void**)&ps); ok(hr == S_OK, "QueryInterface for IID_IPersistStream failed: %08x\n", hr); refcount = IPersistStream_AddRef(ps); ok(refcount == 4, "refcount == %u, expected 4\n", refcount); IPersistStream_Release(ps); hr = IDirectMusicObject_QueryInterface(dmo, &IID_IUnknown, (void**)&unk); ok(hr == S_OK, "QueryInterface for IID_IUnknown failed: %08x\n", hr); refcount = IUnknown_AddRef(unk); ok(refcount == 5, "refcount == %u, expected 5\n", refcount); refcount = IUnknown_Release(unk); /* IDirectMusicAudioPath still not supported */ hr = IDirectMusicObject_QueryInterface(dmo, &IID_IDirectMusicAudioPath, (void**)&dmap); todo_wine ok(FAILED(hr) && !dmap, "Unexpected IDirectMusicAudioPath interface: hr=%08x, iface=%p\n", hr, dmap); while (IDirectMusicObject_Release(dmo)); }
static void test_COM(void) { IDirectMusicObject *dmo = (IDirectMusicObject*)0xdeadbeef; IPersistStream *ps; IUnknown *unk; ULONG refcount; HRESULT hr; /* COM aggregation */ hr = CoCreateInstance(&CLSID_DirectSoundWave, (IUnknown*)&dmo, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)&dmo); ok(hr == CLASS_E_NOAGGREGATION, "DirectSoundWave create failed: %08x, expected CLASS_E_NOAGGREGATION\n", hr); ok(!dmo, "dmo = %p\n", dmo); /* Invalid RIID */ hr = CoCreateInstance(&CLSID_DirectSoundWave, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectMusicSegment8, (void**)&dmo); ok(hr == E_NOINTERFACE, "DirectSoundWave create failed: %08x, expected E_NOINTERFACE\n", hr); /* Same refcount for all DirectSoundWave interfaces */ hr = CoCreateInstance(&CLSID_DirectSoundWave, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectMusicObject, (void**)&dmo); ok(hr == S_OK, "DirectSoundWave create failed: %08x, expected S_OK\n", hr); refcount = IDirectMusicObject_AddRef(dmo); ok(refcount == 2, "refcount == %u, expected 2\n", refcount); hr = IDirectMusicObject_QueryInterface(dmo, &IID_IPersistStream, (void**)&ps); ok(hr == S_OK, "QueryInterface for IID_IPersistStream failed: %08x\n", hr); refcount = IPersistStream_AddRef(ps); ok(refcount == 4, "refcount == %u, expected 4\n", refcount); IPersistStream_Release(ps); hr = IDirectMusicObject_QueryInterface(dmo, &IID_IUnknown, (void**)&unk); ok(hr == S_OK, "QueryInterface for IID_IUnknown failed: %08x\n", hr); refcount = IUnknown_AddRef(unk); ok(refcount == 5, "refcount == %u, expected 5\n", refcount); refcount = IUnknown_Release(unk); hr = IDirectMusicObject_QueryInterface(dmo, &IID_IDirectMusicWavePRIVATE, (void**)&unk); todo_wine ok(hr == S_OK, "QueryInterface for IID_IDirectMusicWavePRIVATE failed: %08x\n", hr); if (hr == S_OK) { refcount = IUnknown_AddRef(unk); ok(refcount == 6, "refcount == %u, expected 6\n", refcount); refcount = IUnknown_Release(unk); } /* Interfaces that native does not support */ hr = IDirectMusicObject_QueryInterface(dmo, &IID_IDirectMusicSegment, (void**)&unk); ok(hr == E_NOINTERFACE, "QueryInterface for IID_IDirectMusicSegment failed: %08x\n", hr); hr = IDirectMusicObject_QueryInterface(dmo, &IID_IDirectMusicSegment8, (void**)&unk); ok(hr == E_NOINTERFACE, "QueryInterface for IID_IDirectMusicSegment8 failed: %08x\n", hr); while (IDirectMusicObject_Release(dmo)); }
static void test_COM(void) { IDirectMusicStyle8 *dms8 = (IDirectMusicStyle8*)0xdeadbeef; IDirectMusicObject *dmo; IPersistStream *ps; IUnknown *unk; ULONG refcount; HRESULT hr; /* COM aggregation */ hr = CoCreateInstance(&CLSID_DirectMusicStyle, (IUnknown*)&dms8, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)&dms8); ok(hr == CLASS_E_NOAGGREGATION, "DirectMusicStyle8 create failed: %08x, expected CLASS_E_NOAGGREGATION\n", hr); ok(!dms8, "dms8 = %p\n", dms8); /* Invalid RIID */ hr = CoCreateInstance(&CLSID_DirectMusicStyle, NULL, CLSCTX_INPROC_SERVER, &IID_IClassFactory, (void**)&dms8); ok(hr == E_NOINTERFACE, "DirectMusicStyle8 create failed: %08x, expected E_NOINTERFACE\n", hr); /* Same refcount for all DirectMusicStyle8 interfaces */ hr = CoCreateInstance(&CLSID_DirectMusicStyle, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectMusicStyle8, (void**)&dms8); if (hr == E_NOINTERFACE) { win_skip("Old version without IDirectMusicStyle8\n"); return; } ok(hr == S_OK, "DirectMusicStyle8 create failed: %08x, expected S_OK\n", hr); refcount = IDirectMusicStyle8_AddRef(dms8); ok(refcount == 2, "refcount == %u, expected 2\n", refcount); hr = IDirectMusicStyle8_QueryInterface(dms8, &IID_IDirectMusicObject, (void**)&dmo); ok(hr == S_OK, "QueryInterface for IID_IDirectMusicObject failed: %08x\n", hr); refcount = IDirectMusicObject_AddRef(dmo); ok(refcount == 4, "refcount == %u, expected 4\n", refcount); refcount = IDirectMusicObject_Release(dmo); hr = IDirectMusicStyle8_QueryInterface(dms8, &IID_IPersistStream, (void**)&ps); ok(hr == S_OK, "QueryInterface for IID_IPersistStream failed: %08x\n", hr); refcount = IPersistStream_AddRef(ps); ok(refcount == 5, "refcount == %u, expected 5\n", refcount); refcount = IPersistStream_Release(ps); hr = IDirectMusicStyle8_QueryInterface(dms8, &IID_IUnknown, (void**)&unk); ok(hr == S_OK, "QueryInterface for IID_IUnknown failed: %08x\n", hr); refcount = IUnknown_AddRef(unk); ok(refcount == 6, "refcount == %u, expected 6\n", refcount); refcount = IUnknown_Release(unk); while (IDirectMusicStyle8_Release(dms8)); }
static void test_COM_chordmap(void) { IDirectMusicChordMap *dmcm = (IDirectMusicChordMap*)0xdeadbeef; IDirectMusicObject *dmo; IPersistStream *ps; IUnknown *unk; ULONG refcount; HRESULT hr; /* COM aggregation */ hr = CoCreateInstance(&CLSID_DirectMusicChordMap, (IUnknown*)&dmcm, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)&dmcm); ok(hr == CLASS_E_NOAGGREGATION, "DirectMusicChordMap create failed: %08x, expected CLASS_E_NOAGGREGATION\n", hr); ok(!dmcm, "dmcm = %p\n", dmcm); /* Invalid RIID */ hr = CoCreateInstance(&CLSID_DirectMusicChordMap, NULL, CLSCTX_INPROC_SERVER, &IID_IClassFactory, (void**)&dmcm); ok(hr == E_NOINTERFACE, "DirectMusicChordMap create failed: %08x, expected E_NOINTERFACE\n", hr); /* Same refcount for all DirectMusicChordMap interfaces */ hr = CoCreateInstance(&CLSID_DirectMusicChordMap, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectMusicChordMap, (void**)&dmcm); ok(hr == S_OK, "DirectMusicChordMap create failed: %08x, expected S_OK\n", hr); refcount = IDirectMusicChordMap_AddRef(dmcm); ok(refcount == 2, "refcount == %u, expected 2\n", refcount); hr = IDirectMusicChordMap_QueryInterface(dmcm, &IID_IDirectMusicObject, (void**)&dmo); ok(hr == S_OK, "QueryInterface for IID_IDirectMusicObject failed: %08x\n", hr); refcount = IDirectMusicObject_AddRef(dmo); ok(refcount == 4, "refcount == %u, expected 4\n", refcount); refcount = IDirectMusicObject_Release(dmo); hr = IDirectMusicChordMap_QueryInterface(dmcm, &IID_IPersistStream, (void**)&ps); ok(hr == S_OK, "QueryInterface for IID_IPersistStream failed: %08x\n", hr); refcount = IPersistStream_AddRef(ps); ok(refcount == 5, "refcount == %u, expected 5\n", refcount); refcount = IPersistStream_Release(ps); hr = IDirectMusicChordMap_QueryInterface(dmcm, &IID_IUnknown, (void**)&unk); ok(hr == S_OK, "QueryInterface for IID_IUnknown failed: %08x\n", hr); refcount = IUnknown_AddRef(unk); ok(refcount == 6, "refcount == %u, expected 6\n", refcount); refcount = IUnknown_Release(unk); while (IDirectMusicChordMap_Release(dmcm)); }
static void test_COM_section(void) { IDirectMusicObject *dmo = (IDirectMusicObject*)0xdeadbeef; IPersistStream *ps; IUnknown *unk; ULONG refcount; HRESULT hr; /* COM aggregation */ hr = CoCreateInstance(&CLSID_DirectMusicSection, (IUnknown*)&dmo, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)&dmo); ok(hr == CLASS_E_NOAGGREGATION, "DirectMusicSection create failed: %08x, expected CLASS_E_NOAGGREGATION\n", hr); ok(!dmo, "dmo = %p\n", dmo); /* Invalid RIID */ hr = CoCreateInstance(&CLSID_DirectMusicSection, NULL, CLSCTX_INPROC_SERVER, &IID_IClassFactory, (void**)&dmo); todo_wine ok(hr == E_NOINTERFACE, "DirectMusicSection create failed: %08x, expected E_NOINTERFACE\n", hr); /* Same refcount for all DirectMusicObject interfaces */ hr = CoCreateInstance(&CLSID_DirectMusicSection, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectMusicObject, (void**)&dmo); todo_wine ok(hr == S_OK, "DirectMusicSection create failed: %08x, expected S_OK\n", hr); if (hr != S_OK) { skip("DirectMusicSection not implemented\n"); return; } refcount = IDirectMusicObject_AddRef(dmo); ok(refcount == 2, "refcount == %u, expected 2\n", refcount); hr = IDirectMusicObject_QueryInterface(dmo, &IID_IPersistStream, (void**)&ps); ok(hr == S_OK, "QueryInterface for IID_IPersistStream failed: %08x\n", hr); refcount = IPersistStream_AddRef(ps); ok(refcount == 4, "refcount == %u, expected 4\n", refcount); IPersistStream_Release(ps); hr = IDirectMusicObject_QueryInterface(dmo, &IID_IUnknown, (void**)&unk); ok(hr == S_OK, "QueryInterface for IID_IUnknown failed: %08x\n", hr); refcount = IUnknown_AddRef(unk); ok(refcount == 5, "refcount == %u, expected 5\n", refcount); refcount = IUnknown_Release(unk); while (IDirectMusicObject_Release(dmo)); }