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