static HRESULT WINAPI IDirectMusicAudioPathImpl_IDirectMusicAudioPath_GetObjectInPath (LPDIRECTMUSICAUDIOPATH iface, DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, WORD dwIndex, REFGUID iidInterface, void** ppObject) { ICOM_THIS_MULTI(IDirectMusicAudioPathImpl, AudioPathVtbl, iface); FIXME("(%p, %d, %d, %d, %s, %d, %s, %p): stub\n", This, dwPChannel, dwStage, dwBuffer, debugstr_dmguid(guidObject), dwIndex, debugstr_dmguid(iidInterface), ppObject); switch (dwStage) { case DMUS_PATH_BUFFER: { if (IsEqualIID (iidInterface, &IID_IDirectSoundBuffer8)) { IDirectSoundBuffer8_QueryInterface (This->pDSBuffer, &IID_IDirectSoundBuffer8, ppObject); TRACE("returning %p\n",*ppObject); return S_OK; } else if (IsEqualIID (iidInterface, &IID_IDirectSound3DBuffer)) { IDirectSoundBuffer8_QueryInterface (This->pDSBuffer, &IID_IDirectSound3DBuffer, ppObject); TRACE("returning %p\n",*ppObject); return S_OK; } else { FIXME("Bad iid\n"); } } break; case DMUS_PATH_PRIMARY_BUFFER: { if (IsEqualIID (iidInterface, &IID_IDirectSound3DListener)) { IDirectSoundBuffer8_QueryInterface (This->pPrimary, &IID_IDirectSound3DListener, ppObject); return S_OK; } else { FIXME("bad iid...\n"); } } break; case DMUS_PATH_AUDIOPATH_GRAPH: { if (IsEqualIID (iidInterface, &IID_IDirectMusicGraph)) { if (NULL == This->pToolGraph) { IDirectMusicGraphImpl* pGraph; DMUSIC_CreateDirectMusicGraphImpl (&IID_IDirectMusicGraph, (LPVOID*)&pGraph, NULL); This->pToolGraph = (IDirectMusicGraph*) pGraph; } *ppObject = This->pToolGraph; IDirectMusicGraph_AddRef((LPDIRECTMUSICGRAPH) *ppObject); return S_OK; } } break; case DMUS_PATH_AUDIOPATH_TOOL: { /* TODO */ } break; case DMUS_PATH_PERFORMANCE: { /* TODO check wanted GUID */ *ppObject = This->pPerf; IUnknown_AddRef((LPUNKNOWN) *ppObject); return S_OK; } break; case DMUS_PATH_PERFORMANCE_GRAPH: { IDirectMusicGraph* pPerfoGraph = NULL; IDirectMusicPerformance8_GetGraph(This->pPerf, &pPerfoGraph); if (NULL == pPerfoGraph) { IDirectMusicGraphImpl* pGraph = NULL; DMUSIC_CreateDirectMusicGraphImpl (&IID_IDirectMusicGraph, (LPVOID*)&pGraph, NULL); IDirectMusicPerformance8_SetGraph(This->pPerf, (IDirectMusicGraph*) pGraph); /* we need release as SetGraph do an AddRef */ IDirectMusicGraph_Release((LPDIRECTMUSICGRAPH) pGraph); pPerfoGraph = (LPDIRECTMUSICGRAPH) pGraph; } *ppObject = pPerfoGraph; return S_OK; } break; case DMUS_PATH_PERFORMANCE_TOOL: default: break; } *ppObject = NULL; return E_INVALIDARG; }
/* IUnknown methods */ static HRESULT WINAPI IDirectSound3DBufferImpl_QueryInterface(IDirectSound3DBuffer *iface, REFIID riid, void **ppobj) { IDirectSoundBufferImpl *This = impl_from_IDirectSound3DBuffer(iface); TRACE("(%p, %s, %p)\n", This, debugstr_guid(riid), ppobj); return IDirectSoundBuffer8_QueryInterface(&This->IDirectSoundBuffer8_iface, riid, ppobj); }