131 lines
4.0 KiB
C++
131 lines
4.0 KiB
C++
#ifndef NULLSOFT_WINAMP_OMSTORAGE_INTERFACE_HEADER
|
|
#define NULLSOFT_WINAMP_OMSTORAGE_INTERFACE_HEADER
|
|
|
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
|
#pragma once
|
|
#endif
|
|
|
|
// {DEE1FCCD-8FFC-4ed2-8104-323382670BE0}
|
|
static const GUID IFC_OmStorage =
|
|
{ 0xdee1fccd, 0x8ffc, 0x4ed2, { 0x81, 0x4, 0x32, 0x33, 0x82, 0x67, 0xb, 0xe0 } };
|
|
|
|
#include <ifc_omstorageasync.h>
|
|
#include <bfc/dispatch.h>
|
|
|
|
class ifc_omservice;
|
|
class ifc_omservicehost;
|
|
class ifc_omserviceenum;
|
|
|
|
#define OMSTORAGE_E_UNKNOWN_FORMAT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, ERROR_INVALID_DATA)
|
|
|
|
class __declspec(novtable) ifc_omstorage : public Dispatchable
|
|
{
|
|
public:
|
|
typedef enum
|
|
{
|
|
capLoad = 0x00000001,
|
|
capSave = 0x00000002,
|
|
capDelete = 0x00000004,
|
|
capReload = 0x00000008,
|
|
capPublic = 0x00001000,
|
|
} Capabilities;
|
|
|
|
typedef enum
|
|
{
|
|
saveModifiedOnly = 0x00000001,
|
|
saveClearModified = 0x00000002,
|
|
} SaveFlags;
|
|
|
|
protected:
|
|
ifc_omstorage() {}
|
|
~ifc_omstorage() {}
|
|
|
|
public:
|
|
HRESULT GetId(GUID *storageUid);
|
|
HRESULT GetType(GUID *storageType);
|
|
UINT GetCapabilities();
|
|
HRESULT GetDescription(wchar_t *buffer, unsigned int bufferMax);
|
|
|
|
HRESULT Load(const wchar_t *address, ifc_omservicehost *host, ifc_omserviceenum **ppEnum);
|
|
HRESULT Save(ifc_omservice **serviceList, unsigned long listCount, unsigned int saveFlags, unsigned long *savedCount);
|
|
HRESULT Delete(ifc_omservice **serviceList, unsigned long listCount, unsigned long *deletedCount);
|
|
HRESULT Reload(ifc_omservice **serviceList, unsigned long listCount, unsigned long *reloadedCount);
|
|
|
|
/* async calls */
|
|
HRESULT BeginLoad(const wchar_t *address, ifc_omservicehost *host, ifc_omstorageasync::AsyncCallback callback, void *data, ifc_omstorageasync **async);
|
|
HRESULT EndLoad(ifc_omstorageasync *async, ifc_omserviceenum **ppEnum);
|
|
HRESULT RequestAbort(ifc_omstorageasync *async, BOOL drop);
|
|
|
|
public:
|
|
DISPATCH_CODES
|
|
{
|
|
API_GETID = 10,
|
|
API_GETTYPE = 20,
|
|
API_GETCAPABILITIES = 30,
|
|
API_GETDESCRIPTION = 40,
|
|
API_LOAD = 60,
|
|
API_SAVE = 70,
|
|
API_DELETE = 80,
|
|
API_RELOAD = 90,
|
|
API_BEGINLOAD = 100,
|
|
API_ENDLOAD = 110,
|
|
API_REQUESTABORT = 120,
|
|
};
|
|
};
|
|
|
|
inline HRESULT ifc_omstorage::GetId(GUID *storageUid)
|
|
{
|
|
return _call(API_GETID, (HRESULT)E_NOTIMPL, storageUid);
|
|
}
|
|
|
|
inline HRESULT ifc_omstorage::GetType(GUID *storageType)
|
|
{
|
|
return _call(API_GETTYPE, (HRESULT)E_NOTIMPL, storageType);
|
|
}
|
|
|
|
inline UINT ifc_omstorage::GetCapabilities()
|
|
{
|
|
return (UINT)_call(API_GETCAPABILITIES, (UINT)0);
|
|
}
|
|
|
|
inline HRESULT ifc_omstorage::GetDescription(wchar_t *buffer, unsigned int bufferMax)
|
|
{
|
|
return _call(API_GETDESCRIPTION, (HRESULT)E_NOTIMPL, buffer, bufferMax);
|
|
}
|
|
|
|
inline HRESULT ifc_omstorage::Load(const wchar_t *address, ifc_omservicehost *host, ifc_omserviceenum **ppEnum)
|
|
{
|
|
return _call(API_LOAD, (HRESULT)E_NOTIMPL, address, host, ppEnum);
|
|
}
|
|
|
|
inline HRESULT ifc_omstorage::Save(ifc_omservice **serviceList, unsigned long listCount, unsigned int saveFlags, unsigned long *savedCount)
|
|
{
|
|
return _call(API_SAVE, (HRESULT)E_NOTIMPL, serviceList, listCount, saveFlags, savedCount);
|
|
}
|
|
|
|
inline HRESULT ifc_omstorage::Delete(ifc_omservice **serviceList, unsigned long listCount, unsigned long *deletedCount)
|
|
{
|
|
return _call(API_DELETE, (HRESULT)E_NOTIMPL, serviceList, listCount, deletedCount);
|
|
}
|
|
|
|
inline HRESULT ifc_omstorage::Reload(ifc_omservice **serviceList, unsigned long listCount, unsigned long *reloadedCount)
|
|
{
|
|
return _call(API_RELOAD, (HRESULT)E_NOTIMPL, serviceList, listCount, reloadedCount);
|
|
}
|
|
|
|
inline HRESULT ifc_omstorage::BeginLoad(const wchar_t *address, ifc_omservicehost *host, ifc_omstorageasync::AsyncCallback callback, void *data, ifc_omstorageasync **async)
|
|
{
|
|
return _call(API_BEGINLOAD, (HRESULT)E_NOTIMPL, address, host, callback, data, async);
|
|
}
|
|
|
|
inline HRESULT ifc_omstorage::EndLoad(ifc_omstorageasync *async, ifc_omserviceenum **ppEnum)
|
|
{
|
|
return _call(API_ENDLOAD, (HRESULT)E_NOTIMPL, async, ppEnum);
|
|
}
|
|
|
|
inline HRESULT ifc_omstorage::RequestAbort(ifc_omstorageasync *async, BOOL drop)
|
|
{
|
|
return _call(API_REQUESTABORT, (HRESULT)E_NOTIMPL, async, drop);
|
|
}
|
|
|
|
#endif //NULLSOFT_WINAMP_OMSTORAGE_INTERFACE_HEADER
|