The IDirectMusicGetLoader::GetLoader method retrieves a pointer to the loader object that created the stream.
HRESULT GetLoader(
IDirectMusicLoader ** ppLoader
);
If the method succeeds, the return value is S_OK.
If it fails, the method may return E_NOINTERFACE.
The following code is from a file parser that comes across a reference to an object that needs to be accessed by the loader.
HRESULT myGetReferencedObject(
DMUS_OBJECTDESC *pDesc, // Descriptor already prepared.
IStream *pIStream, // Stream being parsed.
IDirectMusicObject **ppIObject) // Object to be accessed.
{
IDirectMusicGetLoader *pIGetLoader;
IDirectMusicLoader *pILoader;
ppIObject = NULL;
HRESULT hr = pIStream->QueryInterface(
IID_IDirectMusicGetLoader,
(void **) &pIGetLoader );
if (SUCCEEDED(hr))
{
hr = pIGetLoader->GetLoader(&pILoader);
if (SUCCEEDED(hr))
{
hr = pILoader->GetObject(pDesc, IID_DirectMusicLoader,
(void**) ppIObject);
pILoader->Release();
}
pIGetLoader->Release();
}
return hr;
}
Windows NT/2000: Requires Windows 2000.
Windows 95/98: Requires Windows 95 or later. Available as a redistributable for Windows 95.
Header: Declared in dmusici.h.