Mercurial > games > semicongine
diff fuhtark_test/include/winapi/dsdriver.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/dsdriver.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,367 @@ +/* + * DirectSound driver + * (DirectX 5 version) + * + * Copyright (C) 2000 Ove Kaaven + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_DSDRIVER_H +#define __WINE_DSDRIVER_H + +#include <_mingw_dxhelper.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************** + * Predeclare the interfaces + */ +DEFINE_GUID(IID_IDsDriver, 0x8C4233C0l, 0xB4CC, 0x11CE, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00); +typedef struct IDsDriver *PIDSDRIVER; + +DEFINE_GUID(IID_IDsDriverBuffer, 0x8C4233C1l, 0xB4CC, 0x11CE, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00); +typedef struct IDsDriverBuffer *PIDSDRIVERBUFFER; + +DEFINE_GUID(IID_IDsDriverPropertySet, 0x0F6F2E8E0, 0xD842, 0x11D0, 0x8F, 0x75, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA); +typedef struct IDsDriverPropertySet *PIDSDRIVERPROPERTYSET; + +DEFINE_GUID(IID_IDsDriverNotify, 0x00363EF44, 0x3B57, 0x11D3, 0xAC, 0x79, 0x00, 0x10, 0x5A, 0x01, 0x7f, 0xe1); +typedef struct IDsDriverNotify *PIDSDRIVERNOTIFY; + +DEFINE_GUID(IID_IDsCaptureDriver, 0x03DD10C47, 0x74FB, 0x11D3, 0x90, 0x49, 0xCB, 0xB4, 0xB3, 0x2E, 0xAA, 0x08); +typedef struct IDsCaptureDriver *PIDSCDRIVER; + +DEFINE_GUID(IID_IDsCaptureDriverBuffer, 0x03DD10C48, 0x74FB, 0x11D3, 0x90, 0x49, 0xCB, 0xB4, 0xB3, 0x2E, 0xAA, 0x08); +typedef struct IDsCaptureDriverBuffer *PIDSCDRIVERBUFFER; + +#define DSDDESC_DOMMSYSTEMOPEN 0x00000001 +#define DSDDESC_DOMMSYSTEMSETFORMAT 0x00000002 +#define DSDDESC_USESYSTEMMEMORY 0x00000004 +#define DSDDESC_DONTNEEDPRIMARYLOCK 0x00000008 +#define DSDDESC_DONTNEEDSECONDARYLOCK 0x00000010 + +#define DSDHEAP_NOHEAP 0 +#define DSDHEAP_CREATEHEAP 1 +#define DSDHEAP_USEDIRECTDRAWHEAP 2 +#define DSDHEAP_PRIVATEHEAP 3 + +typedef struct _DSDRIVERDESC +{ + DWORD dwFlags; + CHAR szDesc[256]; + CHAR szDrvname[256]; + DWORD dnDevNode; + WORD wVxdId; + WORD wReserved; + ULONG ulDeviceNum; + DWORD dwHeapType; + LPVOID pvDirectDrawHeap; + DWORD dwMemStartAddress; + DWORD dwMemEndAddress; + DWORD dwMemAllocExtra; + LPVOID pvReserved1; + LPVOID pvReserved2; +} DSDRIVERDESC,*PDSDRIVERDESC; + +typedef struct _DSDRIVERCAPS +{ + DWORD dwFlags; + DWORD dwMinSecondarySampleRate; + DWORD dwMaxSecondarySampleRate; + DWORD dwPrimaryBuffers; + DWORD dwMaxHwMixingAllBuffers; + DWORD dwMaxHwMixingStaticBuffers; + DWORD dwMaxHwMixingStreamingBuffers; + DWORD dwFreeHwMixingAllBuffers; + DWORD dwFreeHwMixingStaticBuffers; + DWORD dwFreeHwMixingStreamingBuffers; + DWORD dwMaxHw3DAllBuffers; + DWORD dwMaxHw3DStaticBuffers; + DWORD dwMaxHw3DStreamingBuffers; + DWORD dwFreeHw3DAllBuffers; + DWORD dwFreeHw3DStaticBuffers; + DWORD dwFreeHw3DStreamingBuffers; + DWORD dwTotalHwMemBytes; + DWORD dwFreeHwMemBytes; + DWORD dwMaxContigFreeHwMemBytes; +} DSDRIVERCAPS,*PDSDRIVERCAPS; + +typedef struct _DSVOLUMEPAN +{ + DWORD dwTotalLeftAmpFactor; + DWORD dwTotalRightAmpFactor; + LONG lVolume; + DWORD dwVolAmpFactor; + LONG lPan; + DWORD dwPanLeftAmpFactor; + DWORD dwPanRightAmpFactor; +} DSVOLUMEPAN,*PDSVOLUMEPAN; + +typedef union _DSPROPERTY +{ + struct { + GUID Set; + ULONG Id; + ULONG Flags; + ULONG InstanceId; + } DUMMYSTRUCTNAME; + ULONGLONG Alignment; +} DSPROPERTY,*PDSPROPERTY; + +typedef struct _DSCDRIVERCAPS +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwFormats; + DWORD dwChannels; +} DSCDRIVERCAPS,*PDSCDRIVERCAPS; + +/***************************************************************************** + * IDsDriver interface + */ +#define INTERFACE IDsDriver +DECLARE_INTERFACE_(IDsDriver,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDsDriver methods ***/ + STDMETHOD(GetDriverDesc)(THIS_ PDSDRIVERDESC pDsDriverDesc) PURE; + STDMETHOD(Open)(THIS) PURE; + STDMETHOD(Close)(THIS) PURE; + STDMETHOD(GetCaps)(THIS_ PDSDRIVERCAPS pDsDrvCaps) PURE; + STDMETHOD(CreateSoundBuffer)(THIS_ LPWAVEFORMATEX pwfx,DWORD dwFlags,DWORD dwCardAddress,LPDWORD pdwcbBufferSize,LPBYTE *ppbBuffer,LPVOID *ppvObj) PURE; + STDMETHOD(DuplicateSoundBuffer)(THIS_ PIDSDRIVERBUFFER pIDsDriverBuffer,LPVOID *ppvObj) PURE; +}; +#undef INTERFACE + +#if !defined (__cplusplus) || defined(CINTERFACE) + /*** IUnknown methods ***/ +#define IDsDriver_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDsDriver_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDsDriver_Release(p) (p)->lpVtbl->Release(p) + /*** IDsDriver methods ***/ +#define IDsDriver_GetDriverDesc(p,a) (p)->lpVtbl->GetDriverDesc(p,a) +#define IDsDriver_Open(p) (p)->lpVtbl->Open(p) +#define IDsDriver_Close(p) (p)->lpVtbl->Close(p) +#define IDsDriver_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) +#define IDsDriver_CreateSoundBuffer(p,a,b,c,d,e,f) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c,d,e,f) +#define IDsDriver_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b) +#endif + +/***************************************************************************** + * IDsDriverBuffer interface + */ +#define INTERFACE IDsDriverBuffer +DECLARE_INTERFACE_(IDsDriverBuffer,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDsDriverBuffer methods ***/ + STDMETHOD(Lock)(THIS_ LPVOID *ppvAudio1,LPDWORD pdwLen1,LPVOID *pdwAudio2,LPDWORD pdwLen2,DWORD dwWritePosition,DWORD dwWriteLen,DWORD dwFlags) PURE; + STDMETHOD(Unlock)(THIS_ LPVOID pvAudio1,DWORD dwLen1,LPVOID pvAudio2,DWORD dwLen2) PURE; + STDMETHOD(SetFormat)(THIS_ LPWAVEFORMATEX pwfxToSet) PURE; + STDMETHOD(SetFrequency)(THIS_ DWORD dwFrequency) PURE; + STDMETHOD(SetVolumePan)(THIS_ PDSVOLUMEPAN pDsVolumePan) PURE; + STDMETHOD(SetPosition)(THIS_ DWORD dwNewPosition) PURE; + STDMETHOD(GetPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor,LPDWORD lpdwCurrentWriteCursor) PURE; + STDMETHOD(Play)(THIS_ DWORD dwReserved1,DWORD dwReserved2,DWORD dwFlags) PURE; + STDMETHOD(Stop)(THIS) PURE; +}; +#undef INTERFACE + +#if !defined (__cplusplus) || defined(CINTERFACE) + /*** IUnknown methods ***/ +#define IDsDriverBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDsDriverBuffer_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDsDriverBuffer_Release(p) (p)->lpVtbl->Release(p) + /*** IDsDriverBuffer methods ***/ +#define IDsDriverBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) +#define IDsDriverBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) +#define IDsDriverBuffer_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a) +#define IDsDriverBuffer_SetFrequency(p,a) (p)->lpVtbl->SetFrequency(p,a) +#define IDsDriverBuffer_SetVolumePan(p,a) (p)->lpVtbl->SetVolumePan(p,a) +#define IDsDriverBuffer_SetPosition(p,a) (p)->lpVtbl->SetPosition(p,a) +#define IDsDriverBuffer_GetPosition(p,a,b) (p)->lpVtbl->GetPosition(p,a,b) +#define IDsDriverBuffer_Play(p,a,b,c) (p)->lpVtbl->Play(p,a,b,c) +#define IDsDriverBuffer_Stop(p) (p)->lpVtbl->Stop(p) +#endif + +/***************************************************************************** + * IDsDriverPropertySet interface + */ +#define INTERFACE IDsDriverPropertySet +DECLARE_INTERFACE_(IDsDriverPropertySet,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDsDriverPropertySet methods ***/ + STDMETHOD(Get)(THIS_ PDSPROPERTY pDsProperty,LPVOID pPropertyParams,ULONG cbPropertyParams,LPVOID pPropertyData,ULONG cbPropertyData,PULONG pcbReturnedData) PURE; + STDMETHOD(Set)(THIS_ PDSPROPERTY pDsProperty,LPVOID pPropertyParams,ULONG cbPropertyParams,LPVOID pPropertyData,ULONG cbPropertyData) PURE; + STDMETHOD(QuerySupport)(THIS_ REFGUID PropertySetId,ULONG PropertyId,PULONG pSupport) PURE; +}; +#undef INTERFACE + +#if !defined (__cplusplus) || defined(CINTERFACE) + /*** IUnknown methods ***/ +#define IDsDriverPropertySet_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDsDriverPropertySet_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDsDriverPropertySet_Release(p) (p)->lpVtbl->Release(p) + /*** IDsDriverPropertySet methods ***/ +#define IDsDriverPropertySet_Get(p,a,b,c,d,e,f) (p)->lpVtbl->Get(p,a,b,c,d,e,f) +#define IDsDriverPropertySet_Set(p,a,b,c,d,e) (p)->lpVtbl->Set(p,a,b,c,d,e) +#define IDsDriverPropertySet_QuerySupport(p,a,b,c) (p)->lpVtbl->QuerySupport(p,a,b,c) +#endif + +/* Defined property sets */ +DEFINE_GUID(DSPROPSETID_DirectSound3DListener, 0x6D047B40, 0x7AF9, 0x11D0, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); +typedef enum +{ + DSPROPERTY_DIRECTSOUND3DLISTENER_ALL, + DSPROPERTY_DIRECTSOUND3DLISTENER_POSITION, + DSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY, + DSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION, + DSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR, + DSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR, + DSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR, + DSPROPERTY_DIRECTSOUND3DLISTENER_BATCH, + DSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION +} DSPROPERTY_DIRECTSOUND3DLISTENER; + +DEFINE_GUID(DSPROPSETID_DirectSound3DBuffer, 0x6D047B41, 0x7AF9, 0x11D0, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); +typedef enum +{ + DSPROPERTY_DIRECTSOUND3DBUFFER_ALL, + DSPROPERTY_DIRECTSOUND3DBUFFER_POSITION, + DSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY, + DSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES, + DSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION, + DSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME, + DSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE, + DSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE, + DSPROPERTY_DIRECTSOUND3DBUFFER_MODE +} DSPROPERTY_DIRECTSOUND3DBUFFER; + +DEFINE_GUID(DSPROPSETID_DirectSoundSpeakerConfig, 0x6D047B42, 0x7AF9, 0x11D0, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); +typedef enum +{ + DSPROPERTY_DIRECTSOUNDSPEAKERCONFIG_SPEAKERCONFIG +} DSPROPERTY_DIRECTSOUNDSPEAKERCONFIG; + +/***************************************************************************** + * IDsDriverNotify interface + */ +#define INTERFACE IDsDriverNotify +DECLARE_INTERFACE_(IDsDriverNotify,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDsDriverNotify methods ***/ + STDMETHOD(SetNotificationPositions)(THIS_ DWORD dwPositionNotifies,LPCDSBPOSITIONNOTIFY pcPositionNotifies) PURE; +}; +#undef INTERFACE + +#if !defined (__cplusplus) || defined(CINTERFACE) + /*** IUnknown methods ***/ +#define IDsDriverNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDsDriverNotify_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDsDriverNotify_Release(p) (p)->lpVtbl->Release(p) + /*** IDsDriverNotify methods ***/ +#define IDsDriverNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b) +#endif + +/***************************************************************************** + * IDsCaptureDriver interface + */ +#define INTERFACE IDsCaptureDriver +DECLARE_INTERFACE_(IDsCaptureDriver,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDsCaptureDriver methods ***/ + STDMETHOD(GetDriverDesc)(THIS_ PDSDRIVERDESC pDsDriverDesc) PURE; + STDMETHOD(Open)(THIS) PURE; + STDMETHOD(Close)(THIS) PURE; + STDMETHOD(GetCaps)(THIS_ PDSCDRIVERCAPS pDsDrvCaps) PURE; + STDMETHOD(CreateCaptureBuffer)(THIS_ LPWAVEFORMATEX pwfx,DWORD dwFlags,DWORD dwCardAddress,LPDWORD pdwcbBufferSize,LPBYTE *ppbBuffer,LPVOID *ppvObj) PURE; +}; +#undef INTERFACE + +#if !defined (__cplusplus) || defined(CINTERFACE) + /*** IUnknown methods ***/ +#define IDsCaptureDriver_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDsCaptureDriver_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDsCaptureDriver_Release(p) (p)->lpVtbl->Release(p) + /*** IDsCaptureDriver methods ***/ +#define IDsCaptureDriver_GetDriverDesc(p,a) (p)->lpVtbl->GetDriverDesc(p,a) +#define IDsCaptureDriver_Open(p) (p)->lpVtbl->Open(p) +#define IDsCaptureDriver_Close(p) (p)->lpVtbl->Close(p) +#define IDsCaptureDriver_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) +#define IDsCaptureDriver_CreateCaptureBuffer(p,a,b,c,d,e,f) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c,d,e,f) +#endif + +/***************************************************************************** + * IDsCaptureDriverBuffer interface + */ +#define INTERFACE IDsCaptureDriverBuffer +DECLARE_INTERFACE_(IDsCaptureDriverBuffer,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDsCaptureDriverBuffer methods ***/ + STDMETHOD(Lock)(THIS_ LPVOID *ppvAudio1,LPDWORD pdwLen1,LPVOID *ppvAudio2,LPDWORD pdwLen2,DWORD dwWritePosition,DWORD dwWriteLen,DWORD dwFlags) PURE; + STDMETHOD(Unlock)(THIS_ LPVOID pvAudio1,DWORD dwLen1,LPVOID pvAudio2,DWORD dwLen2) PURE; + STDMETHOD(SetFormat)(THIS_ LPWAVEFORMATEX pwfxToSet) PURE; + STDMETHOD(GetPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor,LPDWORD lpdwCurrentWriteCursor) PURE; + STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE; + STDMETHOD(Start)(THIS_ DWORD dwFlags) PURE; + STDMETHOD(Stop)(THIS) PURE; +}; +#undef INTERFACE + +#if !defined (__cplusplus) || defined(CINTERFACE) + /*** IUnknown methods ***/ +#define IDsCaptureDriverBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDsCaptureDriverBuffer_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDsCaptureDriverBuffer_Release(p) (p)->lpVtbl->Release(p) + /*** IDsCaptureDriverBuffer methods ***/ +#define IDsCaptureDriverBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) +#define IDsCaptureDriverBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) +#define IDsCaptureDriverBuffer_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a) +#define IDsCaptureDriverBuffer_GetPosition(p,a,b) (p)->lpVtbl->GetPosition(p,a,b) +#define IDsCaptureDriverBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) +#define IDsCaptureDriverBuffer_Start(p,a) (p)->lpVtbl->Start(p,a) +#define IDsCaptureDriverBuffer_Stop(p) (p)->lpVtbl->Stop(p) +#endif + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* __WINE_DSDRIVER_H */
