diff --git a/sdk/include/ddk/portcls.h b/sdk/include/ddk/portcls.h index 4a2342fe038..cb6c5939de4 100644 --- a/sdk/include/ddk/portcls.h +++ b/sdk/include/ddk/portcls.h @@ -704,6 +704,16 @@ typedef IUnregisterPhysicalConnection *PUNREGISTERPHYSICALCONNECTION; IDmaChannel Interface */ +/* C++ ABI HACK: IDmaChannel::PhysicalAddress */ +#if defined(__cplusplus) && !defined(_MSC_VER) +#define DEFINE_ABSTRACT_DMACHANNEL_PhysicalAddress \ + STDMETHOD_(PHYSICAL_ADDRESS*, PhysicalAddress)( THIS_ PHYSICAL_ADDRESS* pRet ) PURE; \ + PHYSICAL_ADDRESS PhysicalAddress() { PHYSICAL_ADDRESS tmp; PhysicalAddress(&tmp); return tmp; } +#else +#define DEFINE_ABSTRACT_DMACHANNEL_PhysicalAddress \ + STDMETHOD_(PHYSICAL_ADDRESS, PhysicalAddress)( THIS ) PURE +#endif + #define DEFINE_ABSTRACT_DMACHANNEL() \ STDMETHOD_(NTSTATUS, AllocateBuffer)( THIS_ \ IN ULONG BufferSize, \