Mercurial > games > semicongine
diff fuhtark_test/include/winapi/ksproxy.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/winapi/ksproxy.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,396 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the w64 mingw-runtime package. + * No warranty is given; refer to the file DISCLAIMER within this package. + */ +#ifndef __KSPROXY__ +#define __KSPROXY__ + +#ifdef __cplusplus +extern "C" { +#endif + +#undef KSDDKAPI +#ifdef _KSDDK_ +#define KSDDKAPI +#else +#define KSDDKAPI DECLSPEC_IMPORT +#endif + +#define STATIC_IID_IKsObject 0x423c13a2L,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1 +#define STATIC_IID_IKsPinEx 0x7bb38260L,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e +#define STATIC_IID_IKsPin 0xb61178d1L,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1 +#define STATIC_IID_IKsPinPipe 0xe539cd90L,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02 +#define STATIC_IID_IKsDataTypeHandler 0x5ffbaa02L,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1 +#define STATIC_IID_IKsDataTypeCompletion 0x827D1A0EL,0x0F73,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96 +#define STATIC_IID_IKsInterfaceHandler 0xD3ABC7E0L,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96 +#define STATIC_IID_IKsClockPropertySet 0x5C5CBD84L,0xE755,0x11D0,0xAC,0x18,0x00,0xA0,0xC9,0x22,0x31,0x96 +#define STATIC_IID_IKsAllocator 0x8da64899L,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a +#define STATIC_IID_IKsAllocatorEx 0x091bb63aL,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02 +#ifndef STATIC_IID_IKsPropertySet +#define STATIC_IID_IKsPropertySet 0x31EFAC30L,0x515C,0x11d0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93 +#endif +#define STATIC_IID_IKsTopology 0x28F54683L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96 +#ifndef STATIC_IID_IKsControl +#define STATIC_IID_IKsControl 0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96 +#endif +#define STATIC_IID_IKsAggregateControl 0x7F40EAC0L,0x3947,0x11D2,0x87,0x4E,0x00,0xA0,0xC9,0x22,0x31,0x96 +#define STATIC_CLSID_Proxy 0x17CCA71BL,0xECD7,0x11D0,0xB9,0x08,0x00,0xA0,0xC9,0x22,0x31,0x96 +#ifdef _KS_ + DEFINE_GUIDEX(IID_IKsObject); + DEFINE_GUIDEX(IID_IKsPin); + DEFINE_GUIDEX(IID_IKsPinEx); + DEFINE_GUIDEX(IID_IKsPinPipe); + DEFINE_GUIDEX(IID_IKsDataTypeHandler); + DEFINE_GUIDEX(IID_IKsDataTypeCompletion); + DEFINE_GUIDEX(IID_IKsInterfaceHandler); + DEFINE_GUIDEX(IID_IKsClockPropertySet); + DEFINE_GUIDEX(IID_IKsAllocator); + DEFINE_GUIDEX(IID_IKsAllocatorEx); +#define IID_IKsQualityForwarder KSCATEGORY_QUALITY +#define STATIC_IID_IKsQualityForwarder STATIC_KSCATEGORY_QUALITY + + typedef enum { + KsAllocatorMode_User,KsAllocatorMode_Kernel + } KSALLOCATORMODE; + + typedef enum { + FramingProp_Uninitialized,FramingProp_None,FramingProp_Old,FramingProp_Ex + } FRAMING_PROP; + + typedef FRAMING_PROP *PFRAMING_PROP; + + typedef enum { + Framing_Cache_Update,Framing_Cache_ReadLast,Framing_Cache_ReadOrig,Framing_Cache_Write + } FRAMING_CACHE_OPS; + + typedef struct { + LONGLONG MinTotalNominator; + LONGLONG MaxTotalNominator; + LONGLONG TotalDenominator; + } OPTIMAL_WEIGHT_TOTALS; + + typedef struct IPin IPin; + typedef struct IKsPin IKsPin; + typedef struct IKsAllocator IKsAllocator; + typedef struct IKsAllocatorEx IKsAllocatorEx; + +#define AllocatorStrategy_DontCare 0 +#define AllocatorStrategy_MinimizeNumberOfFrames 0x00000001 +#define AllocatorStrategy_MinimizeFrameSize 0x00000002 +#define AllocatorStrategy_MinimizeNumberOfAllocators 0x00000004 +#define AllocatorStrategy_MaximizeSpeed 0x00000008 + +#define PipeFactor_None 0 +#define PipeFactor_UserModeUpstream 0x00000001 +#define PipeFactor_UserModeDownstream 0x00000002 +#define PipeFactor_MemoryTypes 0x00000004 +#define PipeFactor_Flags 0x00000008 +#define PipeFactor_PhysicalRanges 0x00000010 +#define PipeFactor_OptimalRanges 0x00000020 +#define PipeFactor_FixedCompression 0x00000040 +#define PipeFactor_UnknownCompression 0x00000080 + +#define PipeFactor_Buffers 0x00000100 +#define PipeFactor_Align 0x00000200 +#define PipeFactor_PhysicalEnd 0x00000400 +#define PipeFactor_LogicalEnd 0x00000800 + + typedef enum { + PipeState_DontCare,PipeState_RangeNotFixed,PipeState_RangeFixed,PipeState_CompressionUnknown,PipeState_Finalized + } PIPE_STATE; + + typedef struct _PIPE_DIMENSIONS { + KS_COMPRESSION AllocatorPin; + KS_COMPRESSION MaxExpansionPin; + KS_COMPRESSION EndPin; + } PIPE_DIMENSIONS,*PPIPE_DIMENSIONS; + + typedef enum { + Pipe_Allocator_None,Pipe_Allocator_FirstPin,Pipe_Allocator_LastPin,Pipe_Allocator_MiddlePin + } PIPE_ALLOCATOR_PLACE; + + typedef PIPE_ALLOCATOR_PLACE *PPIPE_ALLOCATOR_PLACE; + + typedef enum { + KS_MemoryTypeDontCare = 0,KS_MemoryTypeKernelPaged,KS_MemoryTypeKernelNonPaged,KS_MemoryTypeDeviceHostMapped,KS_MemoryTypeDeviceSpecific, + KS_MemoryTypeUser,KS_MemoryTypeAnyHost + } KS_LogicalMemoryType; + + typedef KS_LogicalMemoryType *PKS_LogicalMemoryType; + + typedef struct _PIPE_TERMINATION { + ULONG Flags; + ULONG OutsideFactors; + ULONG Weigth; + KS_FRAMING_RANGE PhysicalRange; + KS_FRAMING_RANGE_WEIGHTED OptimalRange; + KS_COMPRESSION Compression; + } PIPE_TERMINATION; + + typedef struct _ALLOCATOR_PROPERTIES_EX { + long cBuffers; + long cbBuffer; + long cbAlign; + long cbPrefix; + + GUID MemoryType; + GUID BusType; + PIPE_STATE State; + PIPE_TERMINATION Input; + PIPE_TERMINATION Output; + ULONG Strategy; + ULONG Flags; + ULONG Weight; + KS_LogicalMemoryType LogicalMemoryType; + PIPE_ALLOCATOR_PLACE AllocatorPlace; + PIPE_DIMENSIONS Dimensions; + KS_FRAMING_RANGE PhysicalRange; + IKsAllocatorEx *PrevSegment; + ULONG CountNextSegments; + IKsAllocatorEx **NextSegments; + ULONG InsideFactors; + ULONG NumberPins; + } ALLOCATOR_PROPERTIES_EX; + + typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX; + +#ifdef __STREAMS__ + struct IKsClockPropertySet; +#undef INTERFACE +#define INTERFACE IKsClockPropertySet + DECLARE_INTERFACE_(IKsClockPropertySet,IUnknown) { + STDMETHOD(KsGetTime)(THIS_ LONGLONG *Time) PURE; + STDMETHOD(KsSetTime)(THIS_ LONGLONG Time) PURE; + STDMETHOD(KsGetPhysicalTime)(THIS_ LONGLONG *Time) PURE; + STDMETHOD(KsSetPhysicalTime)(THIS_ LONGLONG Time) PURE; + STDMETHOD(KsGetCorrelatedTime)(THIS_ KSCORRELATED_TIME *CorrelatedTime) PURE; + STDMETHOD(KsSetCorrelatedTime)(THIS_ KSCORRELATED_TIME *CorrelatedTime) PURE; + STDMETHOD(KsGetCorrelatedPhysicalTime)(THIS_ KSCORRELATED_TIME *CorrelatedTime) PURE; + STDMETHOD(KsSetCorrelatedPhysicalTime)(THIS_ KSCORRELATED_TIME *CorrelatedTime) PURE; + STDMETHOD(KsGetResolution)(THIS_ KSRESOLUTION *Resolution) PURE; + STDMETHOD(KsGetState)(THIS_ KSSTATE *State) PURE; + }; + + struct IKsAllocator; +#undef INTERFACE +#define INTERFACE IKsAllocator + DECLARE_INTERFACE_(IKsAllocator,IUnknown) { + STDMETHOD_(HANDLE,KsGetAllocatorHandle)(THIS) PURE; + STDMETHOD_(KSALLOCATORMODE,KsGetAllocatorMode)(THIS) PURE; + STDMETHOD(KsGetAllocatorStatus)(THIS_ PKSSTREAMALLOCATOR_STATUS AllocatorStatus) PURE; + STDMETHOD_(VOID,KsSetAllocatorMode)(THIS_ KSALLOCATORMODE Mode) PURE; + }; + + struct IKsAllocatorEx; +#undef INTERFACE +#define INTERFACE IKsAllocatorEx + DECLARE_INTERFACE_(IKsAllocatorEx,IKsAllocator) { + STDMETHOD_(PALLOCATOR_PROPERTIES_EX,KsGetProperties)(THIS) PURE; + STDMETHOD_(VOID,KsSetProperties)(THIS_ PALLOCATOR_PROPERTIES_EX) PURE; + STDMETHOD_(VOID,KsSetAllocatorHandle)(THIS_ HANDLE AllocatorHandle) PURE; + STDMETHOD_(HANDLE,KsCreateAllocatorAndGetHandle)(THIS_ IKsPin *KsPin) PURE; + }; + + typedef enum { + KsPeekOperation_PeekOnly,KsPeekOperation_AddRef + } KSPEEKOPERATION; + + typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT; + struct IKsPin; + +#undef INTERFACE +#define INTERFACE IKsPin + DECLARE_INTERFACE_(IKsPin,IUnknown) { + STDMETHOD(KsQueryMediums)(THIS_ PKSMULTIPLE_ITEM *MediumList) PURE; + STDMETHOD(KsQueryInterfaces)(THIS_ PKSMULTIPLE_ITEM *InterfaceList) PURE; + STDMETHOD(KsCreateSinkPinHandle)(THIS_ KSPIN_INTERFACE& Interface,KSPIN_MEDIUM& Medium) PURE; + STDMETHOD(KsGetCurrentCommunication)(THIS_ KSPIN_COMMUNICATION *Communication,KSPIN_INTERFACE *Interface,KSPIN_MEDIUM *Medium) PURE; + STDMETHOD(KsPropagateAcquire)(THIS) PURE; + STDMETHOD(KsDeliver)(THIS_ IMediaSample *Sample,ULONG Flags) PURE; + STDMETHOD(KsMediaSamplesCompleted)(THIS_ PKSSTREAM_SEGMENT StreamSegment) PURE; + STDMETHOD_(IMemAllocator *,KsPeekAllocator)(THIS_ KSPEEKOPERATION Operation) PURE; + STDMETHOD(KsReceiveAllocator)(THIS_ IMemAllocator *MemAllocator) PURE; + STDMETHOD(KsRenegotiateAllocator)(THIS) PURE; + STDMETHOD_(LONG,KsIncrementPendingIoCount)(THIS) PURE; + STDMETHOD_(LONG,KsDecrementPendingIoCount)(THIS) PURE; + STDMETHOD(KsQualityNotify)(THIS_ ULONG Proportion,REFERENCE_TIME TimeDelta) PURE; + }; + + struct IKsPinEx; +#undef INTERFACE +#define INTERFACE IKsPinEx + DECLARE_INTERFACE_(IKsPinEx,IKsPin) { + STDMETHOD_(VOID,KsNotifyError)(THIS_ IMediaSample *Sample,HRESULT hr) PURE; + }; + + struct IKsPinPipe; +#undef INTERFACE +#define INTERFACE IKsPinPipe + DECLARE_INTERFACE_(IKsPinPipe,IUnknown) { + STDMETHOD(KsGetPinFramingCache)(THIS_ PKSALLOCATOR_FRAMING_EX *FramingEx,PFRAMING_PROP FramingProp,FRAMING_CACHE_OPS Option) PURE; + STDMETHOD(KsSetPinFramingCache)(THIS_ PKSALLOCATOR_FRAMING_EX FramingEx,PFRAMING_PROP FramingProp,FRAMING_CACHE_OPS Option) PURE; + STDMETHOD_(IPin*,KsGetConnectedPin)(THIS) PURE; + STDMETHOD_(IKsAllocatorEx*,KsGetPipe)(THIS_ KSPEEKOPERATION Operation) PURE; + STDMETHOD(KsSetPipe)(THIS_ IKsAllocatorEx *KsAllocator) PURE; + STDMETHOD_(ULONG,KsGetPipeAllocatorFlag)(THIS) PURE; + STDMETHOD(KsSetPipeAllocatorFlag)(THIS_ ULONG Flag) PURE; + STDMETHOD_(GUID,KsGetPinBusCache)(THIS) PURE; + STDMETHOD(KsSetPinBusCache)(THIS_ GUID Bus) PURE; + STDMETHOD_(PWCHAR,KsGetPinName)(THIS) PURE; + STDMETHOD_(PWCHAR,KsGetFilterName)(THIS) PURE; + }; + + struct IKsPinFactory; +#undef INTERFACE +#define INTERFACE IKsPinFactory + DECLARE_INTERFACE_(IKsPinFactory,IUnknown) { + STDMETHOD(KsPinFactory)(THIS_ ULONG *PinFactory) PURE; + }; + + typedef enum { + KsIoOperation_Write,KsIoOperation_Read + } KSIOOPERATION; + + struct IKsDataTypeHandler; +#undef INTERFACE +#define INTERFACE IKsDataTypeHandler + DECLARE_INTERFACE_(IKsDataTypeHandler,IUnknown) { + STDMETHOD(KsCompleteIoOperation)(THIS_ IMediaSample *Sample,PVOID StreamHeader,KSIOOPERATION IoOperation,WINBOOL Cancelled) PURE; + STDMETHOD(KsIsMediaTypeInRanges)(THIS_ PVOID DataRanges) PURE; + STDMETHOD(KsPrepareIoOperation)(THIS_ IMediaSample *Sample,PVOID StreamHeader,KSIOOPERATION IoOperation) PURE; + STDMETHOD(KsQueryExtendedSize)(THIS_ ULONG *ExtendedSize) PURE; + STDMETHOD(KsSetMediaType)(THIS_ const AM_MEDIA_TYPE *AmMediaType) PURE; + }; + + struct IKsDataTypeCompletion; +#undef INTERFACE +#define INTERFACE IKsDataTypeCompletion + DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown) { + STDMETHOD(KsCompleteMediaType)(THIS_ HANDLE FilterHandle,ULONG PinFactoryId,AM_MEDIA_TYPE *AmMediaType) PURE; + }; + + struct IKsInterfaceHandler; +#undef INTERFACE +#define INTERFACE IKsInterfaceHandler + DECLARE_INTERFACE_(IKsInterfaceHandler,IUnknown) { + STDMETHOD(KsSetPin)(THIS_ IKsPin *KsPin) PURE; + STDMETHOD(KsProcessMediaSamples)(THIS_ IKsDataTypeHandler *KsDataTypeHandler,IMediaSample **SampleList,PLONG SampleCount,KSIOOPERATION IoOperation,PKSSTREAM_SEGMENT *StreamSegment) PURE; + STDMETHOD(KsCompleteIo)(THIS_ PKSSTREAM_SEGMENT StreamSegment) PURE; + }; + + typedef struct _KSSTREAM_SEGMENT { + IKsInterfaceHandler *KsInterfaceHandler; + IKsDataTypeHandler *KsDataTypeHandler; + KSIOOPERATION IoOperation; + HANDLE CompletionEvent; + } KSSTREAM_SEGMENT; + + struct IKsObject; +#undef INTERFACE +#define INTERFACE IKsObject + DECLARE_INTERFACE_(IKsObject,IUnknown) { + STDMETHOD_(HANDLE,KsGetObjectHandle)(THIS) PURE; + }; + + struct IKsQualityForwarder; +#undef INTERFACE +#define INTERFACE IKsQualityForwarder + DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject) { + STDMETHOD_(VOID,KsFlushClient)(THIS_ IKsPin *Pin) PURE; + }; + + struct IKsNotifyEvent; +#undef INTERFACE +#define INTERFACE IKsNotifyEvent + DECLARE_INTERFACE_(IKsNotifyEvent,IUnknown) { + STDMETHOD(KsNotifyEvent)(THIS_ ULONG Event,ULONG_PTR lParam1,ULONG_PTR lParam2) PURE; + }; + + KSDDKAPI HRESULT WINAPI KsResolveRequiredAttributes(PKSDATARANGE DataRange,PKSMULTIPLE_ITEM Attributes); + KSDDKAPI HRESULT WINAPI KsOpenDefaultDevice(REFGUID Category,ACCESS_MASK Access,PHANDLE DeviceHandle); + KSDDKAPI HRESULT WINAPI KsSynchronousDeviceControl(HANDLE Handle,ULONG IoControl,PVOID InBuffer,ULONG InLength,PVOID OutBuffer,ULONG OutLength,PULONG BytesReturned); + KSDDKAPI HRESULT WINAPI KsGetMultiplePinFactoryItems(HANDLE FilterHandle,ULONG PinFactoryId,ULONG PropertyId,PVOID *Items); + KSDDKAPI HRESULT WINAPI KsGetMediaTypeCount(HANDLE FilterHandle,ULONG PinFactoryId,ULONG *MediaTypeCount); + KSDDKAPI HRESULT WINAPI KsGetMediaType(int Position,AM_MEDIA_TYPE *AmMediaType,HANDLE FilterHandle,ULONG PinFactoryId); +#endif + +#ifndef _IKsPropertySet_ + DEFINE_GUIDEX(IID_IKsPropertySet); +#endif + +#ifndef _IKsControl_ + DEFINE_GUIDEX(IID_IKsControl); +#endif + + DEFINE_GUIDEX(IID_IKsAggregateControl); +#ifndef _IKsTopology_ + DEFINE_GUIDEX(IID_IKsTopology); +#endif + DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196",CLSID_Proxy); +#define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy) +#else + +#ifndef _IKsPropertySet_ + DEFINE_GUID(IID_IKsPropertySet,STATIC_IID_IKsPropertySet); +#endif + DEFINE_GUID(CLSID_Proxy,STATIC_CLSID_Proxy); +#endif + +#ifndef _IKsPropertySet_ +#define _IKsPropertySet_ +#define KSPROPERTY_SUPPORT_GET 1 +#define KSPROPERTY_SUPPORT_SET 2 + +#ifdef DECLARE_INTERFACE_ + struct IKsPropertySet; +#undef INTERFACE +#define INTERFACE IKsPropertySet + DECLARE_INTERFACE_(IKsPropertySet,IUnknown) { + STDMETHOD(Set)(THIS_ REFGUID PropSet,ULONG Id,LPVOID InstanceData,ULONG InstanceLength,LPVOID PropertyData,ULONG DataLength) PURE; + STDMETHOD(Get)(THIS_ REFGUID PropSet,ULONG Id,LPVOID InstanceData,ULONG InstanceLength,LPVOID PropertyData,ULONG DataLength,ULONG *BytesReturned) PURE; + STDMETHOD(QuerySupported)(THIS_ REFGUID PropSet,ULONG Id,ULONG *TypeSupport) PURE; + }; +#endif +#endif + +#ifndef _IKsControl_ +#define _IKsControl_ +#ifdef DECLARE_INTERFACE_ + struct IKsControl; +#undef INTERFACE +#define INTERFACE IKsControl + DECLARE_INTERFACE_(IKsControl,IUnknown) { + STDMETHOD(KsProperty)(THIS_ PKSPROPERTY Property,ULONG PropertyLength,LPVOID PropertyData,ULONG DataLength,ULONG *BytesReturned) PURE; + STDMETHOD(KsMethod)(THIS_ PKSMETHOD Method,ULONG MethodLength,LPVOID MethodData,ULONG DataLength,ULONG *BytesReturned) PURE; + STDMETHOD(KsEvent)(THIS_ PKSEVENT Event,ULONG EventLength,LPVOID EventData,ULONG DataLength,ULONG *BytesReturned) PURE; + }; +#endif +#endif + +#ifdef DECLARE_INTERFACE_ + struct IKsAggregateControl; +#undef INTERFACE +#define INTERFACE IKsAggregateControl + DECLARE_INTERFACE_(IKsAggregateControl,IUnknown) { + STDMETHOD(KsAddAggregate)(THIS_ REFGUID AggregateClass) PURE; + STDMETHOD(KsRemoveAggregate)(THIS_ REFGUID AggregateClass) PURE; + }; +#endif + +#ifndef _IKsTopology_ +#define _IKsTopology_ +#ifdef DECLARE_INTERFACE_ + struct IKsTopology; +#undef INTERFACE +#define INTERFACE IKsTopology + DECLARE_INTERFACE_(IKsTopology,IUnknown) { + STDMETHOD(CreateNodeInstance)(THIS_ ULONG NodeId,ULONG Flags,ACCESS_MASK DesiredAccess,IUnknown *UnkOuter,REFGUID InterfaceId,LPVOID *Interface) PURE; + }; +#endif +#endif + +#ifdef __cplusplus +} +#endif +#endif
