aboutsummaryrefslogtreecommitdiff
path: root/Src/devices/ifc_device.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/devices/ifc_device.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/devices/ifc_device.h')
-rw-r--r--Src/devices/ifc_device.h203
1 files changed, 203 insertions, 0 deletions
diff --git a/Src/devices/ifc_device.h b/Src/devices/ifc_device.h
new file mode 100644
index 00000000..b672b1e8
--- /dev/null
+++ b/Src/devices/ifc_device.h
@@ -0,0 +1,203 @@
+#ifndef _NULLSOFT_WINAMP_DEVICES_DEVICE_INTERFACE_HEADER
+#define _NULLSOFT_WINAMP_DEVICES_DEVICE_INTERFACE_HEADER
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#include <bfc/platform/guid.h>
+
+// {CAC1D7F6-AA27-47eb-BAF7-512BAAE04F07}
+static const GUID IFC_Device =
+{ 0xcac1d7f6, 0xaa27, 0x47eb, { 0xba, 0xf7, 0x51, 0x2b, 0xaa, 0xe0, 0x4f, 0x7 } };
+
+#include "ifc_deviceobject.h"
+
+class ifc_deviceevent;
+class ifc_devicesupportedcommandenum;
+class ifc_deviceactivity;
+
+typedef enum DeviceCommandFlags DeviceCommandFlags;
+typedef enum DeviceCommandContext DeviceCommandContext;
+
+
+class __declspec(novtable) ifc_device : public ifc_deviceobject
+{
+protected:
+ ifc_device() {}
+ ~ifc_device() {}
+
+public:
+ const char *GetType();
+ const char *GetDisplayType();
+ const char *GetConnection();
+
+ BOOL GetHidden();
+
+ HRESULT GetTotalSpace(uint64_t *size);
+ HRESULT GetUsedSpace(uint64_t *size);
+
+ BOOL GetAttached();
+ HRESULT Attach(HWND hostWindow);
+ HRESULT Detach(HWND hostWindow);
+
+ HRESULT EnumerateCommands(ifc_devicesupportedcommandenum **enumerator, DeviceCommandContext context);
+ HRESULT SendCommand(const char *command, HWND hostWindow, ULONG_PTR param);
+ HRESULT GetCommandFlags(const char *command, DeviceCommandFlags *flags);
+
+ HRESULT GetActivity(ifc_deviceactivity **activity);
+
+ HRESULT Advise(ifc_deviceevent *handler);
+ HRESULT Unadvise(ifc_deviceevent *handler);
+
+ HWND CreateView(HWND parentWindow);
+ void SetNavigationItem(void *navigationItem);
+
+ HRESULT GetDropSupported(unsigned int dataType);
+ HRESULT Drop(void *data, unsigned int dataType);
+
+ HRESULT SetDisplayName(const wchar_t *displayName);
+
+ HRESULT GetModel(wchar_t *buffer, size_t bufferSize); // - end-user-visible name for the end produt.
+ HRESULT GetStatus(wchar_t *buffer, size_t bufferSize); // - free-form status message (example: "Last synchronized 19:20 01/10/10").
+
+public:
+ DISPATCH_CODES
+ {
+ API_GETTYPE = 10,
+ API_GETCONNECTION = 20,
+ API_GETHIDDEN = 30,
+ API_GETTOTALSPACE = 40,
+ API_GETUSEDSPACE = 50,
+ API_GETATTACHED = 60,
+ API_ATTACH = 70,
+ API_DETACH = 80,
+ API_ENUMERATECOMMANDS = 90,
+ API_SENDCOMMAND = 100,
+ API_GETCOMMANDFLAGS = 110,
+ API_GETACTIVITY = 120,
+ API_ADVISE = 130,
+ API_UNADVISE = 140,
+ API_CREATEVIEW = 150,
+ API_SETNAVIGATIONITEM = 160,
+ API_GETDROPSUPPORTED = 170,
+ API_DROP = 180,
+ API_SETDISPLAYNAME = 190,
+ API_GETMODEL = 200,
+ API_GETSTATUS = 210,
+ API_GETDISPLAYTYPE = 220,
+ };
+};
+
+
+inline const char *ifc_device::GetType()
+{
+ return _call(API_GETTYPE, (const char*)NULL);
+}
+
+inline const char *ifc_device::GetDisplayType()
+{
+ return _call(API_GETDISPLAYTYPE, (const char*)NULL);
+}
+
+inline const char *ifc_device::GetConnection()
+{
+ return _call(API_GETCONNECTION, (const char*)NULL);
+}
+
+inline BOOL ifc_device::GetHidden()
+{
+ return _call(API_GETHIDDEN, (BOOL)FALSE);
+}
+
+inline HRESULT ifc_device::GetTotalSpace(uint64_t *size)
+{
+ return _call(API_GETTOTALSPACE, (HRESULT)E_NOTIMPL, size);
+}
+
+inline HRESULT ifc_device::GetUsedSpace(uint64_t *size)
+{
+ return _call(API_GETUSEDSPACE, (HRESULT)E_NOTIMPL, size);
+}
+
+inline BOOL ifc_device::GetAttached()
+{
+ return _call(API_GETATTACHED, (BOOL)FALSE);
+}
+
+inline HRESULT ifc_device::Attach(HWND hostWindow)
+{
+ return _call(API_ATTACH, (HRESULT)E_NOTIMPL, hostWindow);
+}
+
+inline HRESULT ifc_device::Detach(HWND hostWindow)
+{
+ return _call(API_DETACH, (HRESULT)E_NOTIMPL, hostWindow);
+}
+
+inline HRESULT ifc_device::EnumerateCommands(ifc_devicesupportedcommandenum **enumerator, DeviceCommandContext context)
+{
+ return _call(API_ENUMERATECOMMANDS, (HRESULT)E_NOTIMPL, enumerator, context);
+}
+
+inline HRESULT ifc_device::SendCommand(const char *command, HWND hostWindow, ULONG_PTR param)
+{
+ return _call(API_SENDCOMMAND, (HRESULT)E_NOTIMPL, command, hostWindow, param);
+}
+
+inline HRESULT ifc_device::GetCommandFlags(const char *command, DeviceCommandFlags *flags)
+{
+ return _call(API_GETCOMMANDFLAGS, (HRESULT)E_NOTIMPL, command, flags);
+}
+
+inline HRESULT ifc_device::GetActivity(ifc_deviceactivity **activity)
+{
+ return _call(API_GETACTIVITY, (HRESULT)E_NOTIMPL, activity);
+}
+
+inline HRESULT ifc_device::Advise(ifc_deviceevent *handler)
+{
+ return _call(API_ADVISE, (HRESULT)E_NOTIMPL, handler);
+}
+
+inline HRESULT ifc_device::Unadvise(ifc_deviceevent *handler)
+{
+ return _call(API_UNADVISE, (HRESULT)E_NOTIMPL, handler);
+}
+
+inline HWND ifc_device::CreateView(HWND parentWindow)
+{
+ return _call(API_CREATEVIEW, (HWND)NULL, parentWindow);
+}
+
+inline void ifc_device::SetNavigationItem(void *navigationItem)
+{
+ _voidcall(API_SETNAVIGATIONITEM, navigationItem);
+}
+
+inline HRESULT ifc_device::GetDropSupported(unsigned int dataType)
+{
+ return _call(API_GETDROPSUPPORTED, (HRESULT)E_NOTIMPL, dataType);
+}
+
+inline HRESULT ifc_device::Drop(void *data, unsigned int dataType)
+{
+ return _call(API_DROP, (HRESULT)E_NOTIMPL, data, dataType);
+}
+
+inline HRESULT ifc_device::SetDisplayName(const wchar_t *displayName)
+{
+ return _call(API_SETDISPLAYNAME, (HRESULT)E_NOTIMPL, displayName);
+}
+
+inline HRESULT ifc_device::GetModel(wchar_t *buffer, size_t bufferSize)
+{
+ return _call(API_GETMODEL, (HRESULT)E_NOTIMPL, buffer, bufferSize);
+}
+
+inline HRESULT ifc_device::GetStatus(wchar_t *buffer, size_t bufferSize)
+{
+ return _call(API_GETSTATUS, (HRESULT)E_NOTIMPL, buffer, bufferSize);
+}
+
+#endif // _NULLSOFT_WINAMP_DEVICES_DEVICE_INTERFACE_HEADER