63 lines
1.3 KiB
C++
63 lines
1.3 KiB
C++
#include "wmsdkidl.h"
|
|
#include "wmwrap.h"
|
|
|
|
// Some wmvcore.dll exports (eg: WMCreateReader) are not callable via LoadLibrary/GetProcAddress,
|
|
// so we can't use our regular dllload macros. Instead, we'll wrap these calls in try-except
|
|
// blocks.
|
|
// These may be removed once the window media player is part of the build, although the linker's
|
|
// delayload stubs will still throw exceptions in low memory situations.
|
|
|
|
HRESULT WMCreateEditorWrap(IWMMetadataEditor** ppEditor)
|
|
{
|
|
HRESULT hr;
|
|
// WMSDK suports only x86
|
|
#ifdef _X86_
|
|
__try
|
|
{
|
|
hr = WMCreateEditor(ppEditor);
|
|
}
|
|
__except(EXCEPTION_EXECUTE_HANDLER)
|
|
#endif
|
|
{
|
|
hr = E_FAIL;
|
|
*ppEditor = NULL;
|
|
}
|
|
return hr;
|
|
}
|
|
|
|
HRESULT WMCreateReaderWrap(IUnknown* pUnkReserved, DWORD dwRights, IWMReader** ppReader)
|
|
{
|
|
HRESULT hr;
|
|
// WMSDK suports only x86
|
|
#ifdef _X86_
|
|
__try
|
|
{
|
|
hr = WMCreateReader(pUnkReserved, dwRights, ppReader);
|
|
}
|
|
__except(EXCEPTION_EXECUTE_HANDLER)
|
|
#endif
|
|
{
|
|
hr = E_FAIL;
|
|
*ppReader = NULL;
|
|
}
|
|
return hr;
|
|
}
|
|
|
|
|
|
HRESULT WMCreateCertificateWrap(IUnknown** ppUnkCert)
|
|
{
|
|
HRESULT hr;
|
|
#ifdef _X86_
|
|
__try
|
|
{
|
|
hr = WMCreateCertificate(ppUnkCert);
|
|
}
|
|
__except(EXCEPTION_EXECUTE_HANDLER)
|
|
#endif
|
|
{
|
|
hr = E_FAIL;
|
|
*ppUnkCert = NULL;
|
|
}
|
|
return hr;
|
|
}
|