Rémi Bernon (@rbernon) commented about include/dxcore_interface.idl:
- uuid(f0db4c7f-fe5a-42a2-bd62-f2a6cf6fc83e),
+] +interface IDXCoreAdapter : IUnknown +{
- BOOL IsValid();
- BOOL IsAttributeSupported(GUID attribute);
- BOOL IsPropertySupported(DXCoreAdapterProperty property);
- HRESULT GetProperty(DXCoreAdapterProperty property, SIZE_T *buffer, void *data);
- HRESULT GetPropertySize(DXCoreAdapterProperty property, SIZE_T *buffer);
- BOOL IsQueryStateSupported(DXCoreAdapterState property);
- HRESULT QueryState(DXCoreAdapterState state, SIZE_T state_size, const void *input, SIZE_T buffer_size, void *output);
- BOOL IsSetStateSupported(DXCoreAdapterState property);
- HRESULT SetState(DXCoreAdapterState state, SIZE_T state_size, const void *in_state, SIZE_T data_size, const void *data);
- HRESULT GetFactory(REFIID riid, [out, iid_is(riid)] IUnknown **ppv);
- HRESULT GetAdapterByLuid(LUID adapter, REFIID riid, [out, iid_is(riid)] IUnknown **ppv);
+};
Some of these methods have C++ template wrappers, it would probably be better to have them too.
I understand that it might be difficult, because there's currently no way to include custom interface code, but maybe it's a hint that this should not be written in IDL? (or maybe we need a WIDL feature, idk).
Fwiw I personally don't really mind not adding them, at least from Wine perspective the C++ interface is not very useful, but as you're apparently interested in having this for MinGW too it might be important to have it correct there.