Mercurial > games > semicongine
diff fuhtark_test/include/ddk/dmusicks.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fuhtark_test/include/ddk/dmusicks.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,261 @@ +#ifndef _DMUSICKS_ +#define _DMUSICKS_ + +#define DONT_HOLD_FOR_SEQUENCING 0x8000000000000000 + +#ifndef REFERENCE_TIME +typedef LONGLONG REFERENCE_TIME; +#endif + +typedef struct _DMUS_KERNEL_EVENT +{ + BYTE bReserved; + BYTE cbStruct; + USHORT cbEvent; + USHORT usChannelGroup; + USHORT usFlags; + REFERENCE_TIME ullPresTime100ns; + ULONGLONG ullBytePosition; + struct _DMUS_KERNEL_EVENT *pNextEvt; + union + { + BYTE abData[sizeof(PBYTE)]; + PBYTE pbData; + struct _DMUS_KERNEL_EVENT *pPackageEvt; + }uData; +}DMUS_KERNEL_EVENT, *PDMUS_KERNEL_EVENT; + +typedef enum +{ + DMUS_STREAM_MIDI_INVALID = -1, + DMUS_STREAM_MIDI_RENDER = 0, + DMUS_STREAM_MIDI_CAPTURE, + DMUS_STREAM_WAVE_SINK +}DMUS_STREAM_TYPE; + +DEFINE_GUID(CLSID_MiniportDriverDMusUART, 0xd3f0ce1c, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1); +DEFINE_GUID(CLSID_MiniportDriverDMusUARTCapture, 0xD3F0CE1D, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1); + +/* =============================================================== + IMasterClock Interface +*/ + +#undef INTERFACE +#define INTERFACE IMasterClock + +DECLARE_INTERFACE_(IMasterClock,IUnknown) +{ + DEFINE_ABSTRACT_UNKNOWN() + + STDMETHOD_(NTSTATUS,GetTime)( THIS_ + OUT REFERENCE_TIME * pTime + ) PURE; +}; + +typedef IMasterClock *PMASTERCLOCK; + +#define IMP_IMasterClock \ + STDMETHODIMP_(NTSTATUS) GetTime( \ + OUT REFERENCE_TIME * pTime \ + ) + +/* =============================================================== + IMXF Interface +*/ + +#undef INTERFACE +#define INTERFACE IMXF + +struct IMXF; +typedef struct IMXF *PMXF; + +#define DEFINE_ABSTRACT_IMXF() \ + STDMETHOD_(NTSTATUS,SetState)(THIS_ \ + IN KSSTATE State \ + ) PURE; \ + STDMETHOD_(NTSTATUS,PutMessage) \ + ( THIS_ \ + IN PDMUS_KERNEL_EVENT pDMKEvt \ + ) PURE; \ + STDMETHOD_(NTSTATUS,ConnectOutput) \ + ( THIS_ \ + IN PMXF sinkMXF \ + ) PURE; \ + STDMETHOD_(NTSTATUS,DisconnectOutput) \ + ( THIS_ \ + IN PMXF sinkMXF \ + ) PURE; + +#define IMP_IMXF \ + STDMETHODIMP_(NTSTATUS) SetState \ + ( \ + IN KSSTATE State \ + ); \ + STDMETHODIMP_(NTSTATUS) PutMessage \ + ( THIS_ \ + IN PDMUS_KERNEL_EVENT pDMKEvt \ + ); \ + STDMETHODIMP_(NTSTATUS) ConnectOutput \ + ( THIS_ \ + IN PMXF sinkMXF \ + ); \ + STDMETHODIMP_(NTSTATUS) DisconnectOutput \ + ( THIS_ \ + IN PMXF sinkMXF \ + ) + + +DECLARE_INTERFACE_(IMXF,IUnknown) +{ + DEFINE_ABSTRACT_UNKNOWN() + + DEFINE_ABSTRACT_IMXF() +}; + +/* =============================================================== + IAllocatorMXF Interface +*/ + +#undef INTERFACE +#define INTERFACE IAllocatorMXF + +struct IAllocatorMXF; +typedef struct IAllocatorMXF *PAllocatorMXF; + +#define STATIC_IID_IAllocatorMXF\ + 0xa5f0d62c, 0xb30f, 0x11d2, 0xb7, 0xa3, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1 +DEFINE_GUIDSTRUCT("a5f0d62c-b30f-11d2-b7a3-0060083316c1", IID_IAllocatorMXF); +#define IID_IAllocatorMXF DEFINE_GUIDNAMED(IID_IAllocatorMXF) + + +DECLARE_INTERFACE_(IAllocatorMXF, IMXF) +{ + DEFINE_ABSTRACT_UNKNOWN() + + DEFINE_ABSTRACT_IMXF() + + STDMETHOD_(NTSTATUS,GetMessage)(THIS_ + OUT PDMUS_KERNEL_EVENT * ppDMKEvt + ) PURE; + + STDMETHOD_(USHORT,GetBufferSize)(THIS) PURE; + + STDMETHOD_(NTSTATUS,GetBuffer)(THIS_ + OUT PBYTE * ppBuffer + )PURE; + + STDMETHOD_(NTSTATUS,PutBuffer)(THIS_ + IN PBYTE pBuffer + ) PURE; +}; + +#define IMP_IAllocatorMXF \ + IMP_IMXF; \ + STDMETHODIMP_(NTSTATUS) GetMessage( \ + OUT PDMUS_KERNEL_EVENT * ppDMKEvt \ + ); \ + \ + STDMETHODIMP_(USHORT) GetBufferSize(void); \ + \ + STDMETHODIMP_(NTSTATUS) GetBuffer( \ + OUT PBYTE * ppBuffer \ + ); \ + \ + STDMETHODIMP_(NTSTATUS) PutBuffer( \ + IN PBYTE pBuffer \ + ) + +#undef INTERFACE +#define INTERFACE IPortDMus + +DEFINE_GUID(IID_IPortDMus, 0xc096df9c, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1); +DEFINE_GUID(CLSID_PortDMus, 0xb7902fe9, 0xfb0a, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1); + +DECLARE_INTERFACE_(IPortDMus, IPort) +{ + DEFINE_ABSTRACT_UNKNOWN() + + DEFINE_ABSTRACT_PORT() + + STDMETHOD_(void,Notify)(THIS_ + IN PSERVICEGROUP ServiceGroup OPTIONAL + )PURE; + + STDMETHOD_(void,RegisterServiceGroup)(THIS_ + IN PSERVICEGROUP ServiceGroup + ) PURE; +}; +typedef IPortDMus *PPORTDMUS; + +#define IMP_IPortDMus \ + IMP_IPort; \ + STDMETHODIMP_(void) Notify( \ + IN PSERVICEGROUP ServiceGroup OPTIONAL \ + ); \ + \ + STDMETHODIMP_(void) RegisterServiceGroup( \ + IN PSERVICEGROUP ServiceGroup \ + ) + +#undef INTERFACE +#define INTERFACE IMiniportDMus + +DEFINE_GUID(IID_IMiniportDMus, 0xc096df9d, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1); +DECLARE_INTERFACE_(IMiniportDMus, IMiniport) +{ + DEFINE_ABSTRACT_UNKNOWN() + + DEFINE_ABSTRACT_MINIPORT() + + + STDMETHOD_(NTSTATUS,Init)(THIS_ + IN PUNKNOWN UnknownAdapter, + IN PRESOURCELIST ResourceList, + IN PPORTDMUS Port, + OUT PSERVICEGROUP * ServiceGroup + ) PURE; + + STDMETHOD_(void,Service)(THIS) PURE; + + STDMETHOD_(NTSTATUS,NewStream)(THIS_ + OUT PMXF * MXF, + IN PUNKNOWN OuterUnknown OPTIONAL, + IN POOL_TYPE PoolType, + IN ULONG PinID, + IN DMUS_STREAM_TYPE StreamType, + IN PKSDATAFORMAT DataFormat, + OUT PSERVICEGROUP * ServiceGroup, + IN PAllocatorMXF AllocatorMXF, + IN PMASTERCLOCK MasterClock, + OUT PULONGLONG SchedulePreFetch + ) PURE; +}; + +typedef IMiniportDMus *PMINIPORTDMUS; +#undef INTERFACE + +#define IMP_IMiniportDMus \ + IMP_IMiniport; \ + STDMETHODIMP_(NTSTATUS) Init( \ + IN PUNKNOWN UnknownAdapter, \ + IN PRESOURCELIST ResourceList, \ + IN PPORTDMUS Port, \ + OUT PSERVICEGROUP * ServiceGroup \ + ); \ + \ + STDMETHODIMP_(void) Service(THIS); \ + \ + STDMETHODIMP_(NTSTATUS) NewStream( \ + OUT PMXF * MXF, \ + IN PUNKNOWN OuterUnknown, \ + IN POOL_TYPE PoolType, \ + IN ULONG PinID, \ + IN DMUS_STREAM_TYPE StreamType, \ + IN PKSDATAFORMAT DataFormat, \ + OUT PSERVICEGROUP * ServiceGroup, \ + IN PAllocatorMXF AllocatorMXF, \ + IN PMASTERCLOCK MasterClock, \ + OUT PULONGLONG SchedulePreFetch \ + ) + +#endif
