|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1998 - 1998
//
// File: dmussongobj.cpp
//
//--------------------------------------------------------------------------
#include "dmusici.h"
#include "stdafx.h"
#include "Direct.h"
#include "dms.h"
#include "dmusSongObj.h"
#include "dmSegmentObj.h"
extern void *g_dxj_DirectMusicSong; extern void *g_dxj_DirectMusicSegment;
extern HRESULT BSTRtoGUID(LPGUID,BSTR); extern BOOL IsEmptyString(BSTR szString);
CONSTRUCTOR(_dxj_DirectMusicSong, {}); DESTRUCTOR(_dxj_DirectMusicSong, {}); GETSET_OBJECT(_dxj_DirectMusicSong);
HRESULT C_dxj_DirectMusicSongObject::Compose() { HRESULT hr;
__try { if (FAILED (hr = m__dxj_DirectMusicSong->Compose() ) ) return hr; } __except(EXCEPTION_EXECUTE_HANDLER) { return E_FAIL; }
return S_OK; }
HRESULT C_dxj_DirectMusicSongObject::GetSegment(BSTR Name, I_dxj_DirectMusicSegment **ret) { WCHAR wszSegName[MAX_PATH]; HRESULT hr; IDirectMusicSegment *lpOldSeg = NULL; IDirectMusicSegment8 *lpSeg = NULL;
__try { if (!IsEmptyString(Name)) { wcscpy(wszSegName, Name);
if (FAILED( hr = m__dxj_DirectMusicSong->GetSegment(wszSegName, &lpOldSeg) ) ) return hr; } else { if (FAILED( hr = m__dxj_DirectMusicSong->GetSegment(NULL, &lpOldSeg) ) ) return hr; }
hr = lpOldSeg->QueryInterface(IID_IDirectMusicSegment8, (void**) &lpSeg); lpOldSeg->Release(); if (FAILED(hr)) return hr;
INTERNAL_CREATE(_dxj_DirectMusicSegment, lpSeg, ret) } __except(EXCEPTION_EXECUTE_HANDLER) { return E_FAIL; }
return S_OK; }
HRESULT C_dxj_DirectMusicSongObject::GetAudioPathConfig(IUnknown **ret) { HRESULT hr;
__try { if (FAILED(hr = m__dxj_DirectMusicSong->GetAudioPathConfig(ret) )) return hr; } __except(EXCEPTION_EXECUTE_HANDLER) { return E_FAIL; }
return S_OK; }
HRESULT C_dxj_DirectMusicSongObject::Download(IUnknown *downloadpath) { if (!downloadpath) return E_INVALIDARG; HRESULT hr; I_dxj_DirectMusicSegment *lpSeg = NULL; I_dxj_DirectMusicAudioPath *lpPath = NULL;
__try { hr = downloadpath->QueryInterface(IID_I_dxj_DirectMusicSegment, (void**)&lpSeg); if (SUCCEEDED(hr) ) { DO_GETOBJECT_NOTNULL(IDirectMusicPerformance8*,pPer,lpSeg); hr=m__dxj_DirectMusicSong->Download(pPer); return hr; } else { hr = downloadpath->QueryInterface(IID_I_dxj_DirectMusicAudioPath, (void**)&lpPath); if (SUCCEEDED(hr) ) { DO_GETOBJECT_NOTNULL(IDirectMusicAudioPath*,pPer,lpPath); hr=m__dxj_DirectMusicSong->Download(pPer); return hr; } else return E_INVALIDARG; } } __except(EXCEPTION_EXECUTE_HANDLER) { return E_FAIL; } return S_OK; }
HRESULT C_dxj_DirectMusicSongObject::Unload(IUnknown *downloadpath) { if (!downloadpath) return E_INVALIDARG; HRESULT hr; I_dxj_DirectMusicSegment *lpSeg = NULL; I_dxj_DirectMusicAudioPath *lpPath = NULL;
__try { hr = downloadpath->QueryInterface(IID_I_dxj_DirectMusicSegment, (void**)&lpSeg); if (SUCCEEDED(hr) ) { DO_GETOBJECT_NOTNULL(IDirectMusicPerformance8*,pPer,lpSeg); hr=m__dxj_DirectMusicSong->Unload(pPer); return hr; } else { hr = downloadpath->QueryInterface(IID_I_dxj_DirectMusicAudioPath, (void**)&lpPath); if (SUCCEEDED(hr) ) { DO_GETOBJECT_NOTNULL(IDirectMusicAudioPath*,pPer,lpPath); hr=m__dxj_DirectMusicSong->Unload(pPer); return hr; } else return E_INVALIDARG; } } __except(EXCEPTION_EXECUTE_HANDLER) { return E_FAIL; } return S_OK; }
HRESULT C_dxj_DirectMusicSongObject::EnumSegment(long lSegmentID, [out,retval] I_dxj_DirectMusicSegment **ret) { HRESULT hr; IDirectMusicSegment *lpOldSeg = NULL; IDirectMusicSegment8 *lpSeg = NULL;
__try { if (FAILED( hr = m__dxj_DirectMusicSong->EnumSegment((DWORD) lSegmentID, &lpOldSeg) ) ) hr = lpOldSeg->QueryInterface(IID_IDirectMusicSegment8, (void**) &lpSeg); lpOldSeg->Release(); if (FAILED(hr)) return hr;
INTERNAL_CREATE(_dxj_DirectMusicSegment, lpSeg, ret) } __except(EXCEPTION_EXECUTE_HANDLER) { return E_FAIL; }
return S_OK; }
|