ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

dsound.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) the Wine project
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00017  */
00018 
00019 
00020 
00021 #ifndef __WINE_DSOUND_H
00022 #define __WINE_DSOUND_H
00023 
00024 // hack
00025 #define __DSOUND_INCLUDED__
00026 
00027 
00028 #ifndef DIRECTSOUND_VERSION
00029 #define DIRECTSOUND_VERSION 0x0900
00030 #endif
00031 
00032 #define COM_NO_WINDOWS_H
00033 #include <objbase.h>
00034 #include <float.h>
00035 
00036 #ifdef __cplusplus
00037 extern "C" {
00038 #endif /* defined(__cplusplus) */
00039 
00040 #ifndef DX_SHARED_DEFINES
00041 
00042 typedef float D3DVALUE, *LPD3DVALUE;
00043 
00044 #ifndef D3DCOLOR_DEFINED
00045 typedef DWORD D3DCOLOR, *LPD3DCOLOR;
00046 #define D3DCOLOR_DEFINED
00047 #endif
00048 
00049 #ifndef D3DVECTOR_DEFINED
00050 typedef struct _D3DVECTOR {
00051     float x;
00052     float y;
00053     float z;
00054 } D3DVECTOR;
00055 #define D3DVECTOR_DEFINED
00056 #endif
00057 
00058 #ifndef LPD3DVECTOR_DEFINED
00059 typedef D3DVECTOR *LPD3DVECTOR;
00060 #define LPD3DVECTOR_DEFINED
00061 #endif
00062 
00063 
00064 
00065 #define DX_SHARED_DEFINES
00066 #endif /* DX_SHARED_DEFINES */
00067 
00068 /*****************************************************************************
00069  * Predeclare the interfaces
00070  */
00071 DEFINE_GUID(CLSID_DirectSound,      0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
00072 DEFINE_GUID(CLSID_DirectSound8,     0x3901cc3f, 0x84b5, 0x4fa4, 0xba, 0x35, 0xaa, 0x81, 0x72, 0xb8, 0xa0, 0x9b);
00073 DEFINE_GUID(CLSID_DirectSoundCapture,   0xb0210780, 0x89cd, 0x11d0, 0xaf, 0x08, 0x00, 0xa0, 0xc9, 0x25, 0xcd, 0x16);
00074 DEFINE_GUID(CLSID_DirectSoundCapture8,  0xe4bcac13, 0x7f99, 0x4908, 0x9a, 0x8e, 0x74, 0xe3, 0xbf, 0x24, 0xb6, 0xe1);
00075 DEFINE_GUID(CLSID_DirectSoundFullDuplex,0xfea4300c, 0x7959, 0x4147, 0xb2, 0x6a, 0x23, 0x77, 0xb9, 0xe7, 0xa9, 0x1d);
00076 
00077 DEFINE_GUID(IID_IDirectSound,       0x279AFA83,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
00078 typedef struct IDirectSound *LPDIRECTSOUND,**LPLPDIRECTSOUND;
00079 
00080 DEFINE_GUID(IID_IDirectSound8,      0xC50A7E93,0xF395,0x4834,0x9E,0xF6,0x7F,0xA9,0x9D,0xE5,0x09,0x66);
00081 typedef struct IDirectSound8 *LPDIRECTSOUND8,**LPLPDIRECTSOUND8;
00082 
00083 DEFINE_GUID(IID_IDirectSoundBuffer, 0x279AFA85,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
00084 typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER,**LPLPDIRECTSOUNDBUFFER;
00085 
00086 DEFINE_GUID(IID_IDirectSoundBuffer8,    0x6825A449,0x7524,0x4D82,0x92,0x0F,0x50,0xE3,0x6A,0xB3,0xAB,0x1E);
00087 typedef struct IDirectSoundBuffer8 *LPDIRECTSOUNDBUFFER8,**LPLPDIRECTSOUNDBUFFER8;
00088 
00089 DEFINE_GUID(IID_IDirectSoundNotify, 0xB0210783,0x89cd,0x11d0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
00090 typedef struct IDirectSoundNotify *LPDIRECTSOUNDNOTIFY,**LPLPDIRECTSOUNDNOTIFY;
00091 #define IID_IDirectSoundNotify8     IID_IDirectSoundNotify
00092 
00093 DEFINE_GUID(IID_IDirectSound3DListener, 0x279AFA84,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
00094 typedef struct IDirectSound3DListener *LPDIRECTSOUND3DLISTENER,**LPLPDIRECTSOUND3DLISTENER;
00095 
00096 DEFINE_GUID(IID_IDirectSound3DBuffer,   0x279AFA86,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
00097 typedef struct IDirectSound3DBuffer *LPDIRECTSOUND3DBUFFER,**LPLPDIRECTSOUND3DBUFFER;
00098 
00099 DEFINE_GUID(IID_IDirectSoundCapture,    0xB0210781,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
00100 typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE,**LPLPDIRECTSOUNDCAPTURE;
00101 #define IID_IDirectSoundCapture8    IID_IDirectSoundCapture
00102 typedef struct IDirectSoundCapture IDirectSoundCapture8,*LPDIRECTSOUNDCAPTURE8,**LPLPDIRECTSOUNDCAPTURE8;
00103 
00104 DEFINE_GUID(IID_IDirectSoundCaptureBuffer,0xB0210782,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
00105 typedef struct IDirectSoundCaptureBuffer *LPDIRECTSOUNDCAPTUREBUFFER,**LPLPDIRECTSOUNDCAPTUREBUFFER;
00106 
00107 DEFINE_GUID(IID_IDirectSoundCaptureBuffer8,0x00990DF4,0x0DBB,0x4872,0x83,0x3E,0x6D,0x30,0x3E,0x80,0xAE,0xB6);
00108 typedef struct IDirectSoundCaptureBuffer8 *LPDIRECTSOUNDCAPTUREBUFFER8,**LPLPDIRECTSOUNDCAPTUREBUFFER8;
00109 
00110 DEFINE_GUID(IID_IDirectSoundFullDuplex, 0xEDCB4C7A,0xDAAB,0x4216,0xA4,0x2E,0x6C,0x50,0x59,0x6D,0xDC,0x1D);
00111 typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX,**LPLPDIRECTSOUNDFULLDUPLEX;
00112 #define IID_IDirectSoundFullDuplex8 IID_IDirectSoundFullDuplex
00113 
00114 DEFINE_GUID(DSDEVID_DefaultPlayback,     0xDEF00000,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
00115 DEFINE_GUID(DSDEVID_DefaultCapture,      0xDEF00001,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
00116 DEFINE_GUID(DSDEVID_DefaultVoicePlayback,0xDEF00002,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
00117 DEFINE_GUID(DSDEVID_DefaultVoiceCapture, 0xDEF00003,0x9C6D,0x47ED,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
00118 
00119 DEFINE_GUID(DSDEVID_WinePlayback,        0x40316A1D,0x605B,0xD611,0x87,0xC6,0x00,0x80,0xAD,0x00,0x02,0xFE);
00120 
00121 #define _FACDS      0x878
00122 #define MAKE_DSHRESULT(code)        MAKE_HRESULT(1,_FACDS,code)
00123 
00124 #define DS_OK               0
00125 #define DS_NO_VIRTUALIZATION            MAKE_HRESULT(0, _FACDS, 10)
00126 #define DS_INCOMPLETE                   MAKE_HRESULT(0, _FACDS, 20)
00127 #define DSERR_ALLOCATED         MAKE_DSHRESULT(10)
00128 #define DSERR_CONTROLUNAVAIL        MAKE_DSHRESULT(30)
00129 #define DSERR_INVALIDPARAM      E_INVALIDARG
00130 #define DSERR_INVALIDCALL       MAKE_DSHRESULT(50)
00131 #define DSERR_GENERIC           E_FAIL
00132 #define DSERR_PRIOLEVELNEEDED       MAKE_DSHRESULT(70)
00133 #define DSERR_OUTOFMEMORY       E_OUTOFMEMORY
00134 #define DSERR_BADFORMAT         MAKE_DSHRESULT(100)
00135 #define DSERR_UNSUPPORTED       E_NOTIMPL
00136 #define DSERR_NODRIVER          MAKE_DSHRESULT(120)
00137 #define DSERR_ALREADYINITIALIZED    MAKE_DSHRESULT(130)
00138 #define DSERR_NOAGGREGATION     CLASS_E_NOAGGREGATION
00139 #define DSERR_BUFFERLOST        MAKE_DSHRESULT(150)
00140 #define DSERR_OTHERAPPHASPRIO       MAKE_DSHRESULT(160)
00141 #define DSERR_UNINITIALIZED     MAKE_DSHRESULT(170)
00142 #define DSERR_NOINTERFACE               E_NOINTERFACE
00143 #define DSERR_ACCESSDENIED              E_ACCESSDENIED
00144 #define DSERR_BUFFERTOOSMALL            MAKE_DSHRESULT(180)
00145 #define DSERR_DS8_REQUIRED              MAKE_DSHRESULT(190)
00146 #define DSERR_SENDLOOP                  MAKE_DSHRESULT(200)
00147 #define DSERR_BADSENDBUFFERGUID         MAKE_DSHRESULT(210)
00148 #define DSERR_FXUNAVAILABLE             MAKE_DSHRESULT(220)
00149 #define DSERR_OBJECTNOTFOUND            MAKE_DSHRESULT(4449)
00150 
00151 #define DSCAPS_PRIMARYMONO          0x00000001
00152 #define DSCAPS_PRIMARYSTEREO        0x00000002
00153 #define DSCAPS_PRIMARY8BIT          0x00000004
00154 #define DSCAPS_PRIMARY16BIT         0x00000008
00155 #define DSCAPS_CONTINUOUSRATE       0x00000010
00156 #define DSCAPS_EMULDRIVER           0x00000020
00157 #define DSCAPS_CERTIFIED            0x00000040
00158 #define DSCAPS_SECONDARYMONO        0x00000100
00159 #define DSCAPS_SECONDARYSTEREO      0x00000200
00160 #define DSCAPS_SECONDARY8BIT        0x00000400
00161 #define DSCAPS_SECONDARY16BIT       0x00000800
00162 
00163 #define DSSCL_NORMAL        1
00164 #define DSSCL_PRIORITY      2
00165 #define DSSCL_EXCLUSIVE     3
00166 #define DSSCL_WRITEPRIMARY  4
00167 
00168 typedef struct _DSCAPS
00169 {
00170     DWORD   dwSize;
00171     DWORD   dwFlags;
00172     DWORD   dwMinSecondarySampleRate;
00173     DWORD   dwMaxSecondarySampleRate;
00174     DWORD   dwPrimaryBuffers;
00175     DWORD   dwMaxHwMixingAllBuffers;
00176     DWORD   dwMaxHwMixingStaticBuffers;
00177     DWORD   dwMaxHwMixingStreamingBuffers;
00178     DWORD   dwFreeHwMixingAllBuffers;
00179     DWORD   dwFreeHwMixingStaticBuffers;
00180     DWORD   dwFreeHwMixingStreamingBuffers;
00181     DWORD   dwMaxHw3DAllBuffers;
00182     DWORD   dwMaxHw3DStaticBuffers;
00183     DWORD   dwMaxHw3DStreamingBuffers;
00184     DWORD   dwFreeHw3DAllBuffers;
00185     DWORD   dwFreeHw3DStaticBuffers;
00186     DWORD   dwFreeHw3DStreamingBuffers;
00187     DWORD   dwTotalHwMemBytes;
00188     DWORD   dwFreeHwMemBytes;
00189     DWORD   dwMaxContigFreeHwMemBytes;
00190     DWORD   dwUnlockTransferRateHwBuffers;
00191     DWORD   dwPlayCpuOverheadSwBuffers;
00192     DWORD   dwReserved1;
00193     DWORD   dwReserved2;
00194 } DSCAPS,*LPDSCAPS;
00195 typedef const DSCAPS *LPCDSCAPS;
00196 
00197 #define DSBPLAY_LOOPING             0x00000001
00198 #define DSBPLAY_LOCHARDWARE         0x00000002
00199 #define DSBPLAY_LOCSOFTWARE         0x00000004
00200 #define DSBPLAY_TERMINATEBY_TIME    0x00000008
00201 #define DSBPLAY_TERMINATEBY_DISTANCE    0x000000010
00202 #define DSBPLAY_TERMINATEBY_PRIORITY    0x000000020
00203 
00204 #define DSBSTATUS_PLAYING           0x00000001
00205 #define DSBSTATUS_BUFFERLOST        0x00000002
00206 #define DSBSTATUS_LOOPING           0x00000004
00207 #define DSBSTATUS_LOCHARDWARE       0x00000008
00208 #define DSBSTATUS_LOCSOFTWARE       0x00000010
00209 #define DSBSTATUS_TERMINATED        0x00000020
00210 
00211 #define DSBLOCK_FROMWRITECURSOR     0x00000001
00212 #define DSBLOCK_ENTIREBUFFER        0x00000002
00213 
00214 #define DSBCAPS_PRIMARYBUFFER       0x00000001
00215 #define DSBCAPS_STATIC              0x00000002
00216 #define DSBCAPS_LOCHARDWARE         0x00000004
00217 #define DSBCAPS_LOCSOFTWARE         0x00000008
00218 #define DSBCAPS_CTRL3D              0x00000010
00219 #define DSBCAPS_CTRLFREQUENCY       0x00000020
00220 #define DSBCAPS_CTRLPAN             0x00000040
00221 #define DSBCAPS_CTRLVOLUME          0x00000080
00222 #define DSBCAPS_CTRLDEFAULT         0x000000E0  /* Pan + volume + frequency. */
00223 #define DSBCAPS_CTRLPOSITIONNOTIFY  0x00000100
00224 #define DSBCAPS_CTRLFX              0x00000200
00225 #define DSBCAPS_CTRLALL             0x000001F0  /* All control capabilities */
00226 #define DSBCAPS_STICKYFOCUS         0x00004000
00227 #define DSBCAPS_GLOBALFOCUS         0x00008000
00228 #define DSBCAPS_GETCURRENTPOSITION2 0x00010000  /* More accurate play cursor under emulation*/
00229 #define DSBCAPS_MUTE3DATMAXDISTANCE 0x00020000
00230 #define DSBCAPS_LOCDEFER            0x00040000
00231 
00232 #define DSBSIZE_MIN                 4
00233 #define DSBSIZE_MAX                 0xFFFFFFF
00234 #define DSBPAN_LEFT                 -10000
00235 #define DSBPAN_CENTER               0
00236 #define DSBPAN_RIGHT                 10000
00237 #define DSBVOLUME_MAX                    0
00238 #define DSBVOLUME_MIN               -10000
00239 #define DSBFREQUENCY_MIN            100
00240 #define DSBFREQUENCY_MAX            200000
00241 #define DSBFREQUENCY_ORIGINAL       0
00242 
00243 typedef struct _DSBCAPS
00244 {
00245     DWORD   dwSize;
00246     DWORD   dwFlags;
00247     DWORD   dwBufferBytes;
00248     DWORD   dwUnlockTransferRate;
00249     DWORD   dwPlayCpuOverhead;
00250 } DSBCAPS,*LPDSBCAPS;
00251 typedef const DSBCAPS *LPCDSBCAPS;
00252 
00253 #define DSSCL_NORMAL                1
00254 #define DSSCL_PRIORITY              2
00255 #define DSSCL_EXCLUSIVE             3
00256 #define DSSCL_WRITEPRIMARY          4
00257 
00258 typedef struct _DSEFFECTDESC
00259 {
00260     DWORD   dwSize;
00261     DWORD   dwFlags;
00262     GUID    guidDSFXClass;
00263     DWORD_PTR   dwReserved1;
00264     DWORD_PTR   dwReserved2;
00265 } DSEFFECTDESC,*LPDSEFFECTDESC;
00266 typedef const DSEFFECTDESC *LPCDSEFFECTDESC;
00267 
00268 #define DSFX_LOCHARDWARE    0x00000001
00269 #define DSFX_LOCSOFTWARE    0x00000002
00270 
00271 enum
00272 {
00273     DSFXR_PRESENT,
00274     DSFXR_LOCHARDWARE,
00275     DSFXR_LOCSOFTWARE,
00276     DSFXR_UNALLOCATED,
00277     DSFXR_FAILED,
00278     DSFXR_UNKNOWN,
00279     DSFXR_SENDLOOP
00280 };
00281 
00282 typedef struct _DSBUFFERDESC1
00283 {
00284     DWORD       dwSize;
00285     DWORD       dwFlags;
00286     DWORD       dwBufferBytes;
00287     DWORD       dwReserved;
00288     LPWAVEFORMATEX  lpwfxFormat;
00289 } DSBUFFERDESC1,*LPDSBUFFERDESC1;
00290 typedef const DSBUFFERDESC1 *LPCDSBUFFERDESC1;
00291 
00292 typedef struct _DSBUFFERDESC
00293 {
00294     DWORD       dwSize;
00295     DWORD       dwFlags;
00296     DWORD       dwBufferBytes;
00297     DWORD       dwReserved;
00298     LPWAVEFORMATEX  lpwfxFormat;
00299     GUID        guid3DAlgorithm;
00300 } DSBUFFERDESC,*LPDSBUFFERDESC;
00301 typedef const DSBUFFERDESC *LPCDSBUFFERDESC;
00302 
00303 typedef struct _DSBPOSITIONNOTIFY
00304 {
00305     DWORD   dwOffset;
00306     HANDLE  hEventNotify;
00307 } DSBPOSITIONNOTIFY,*LPDSBPOSITIONNOTIFY;
00308 typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY;
00309 
00310 #define DSSPEAKER_HEADPHONE     1
00311 #define DSSPEAKER_MONO          2
00312 #define DSSPEAKER_QUAD          3
00313 #define DSSPEAKER_STEREO        4
00314 #define DSSPEAKER_SURROUND      5
00315 #define DSSPEAKER_5POINT1       6
00316 #define DSSPEAKER_7POINT1       7
00317 
00318 #define DSSPEAKER_GEOMETRY_MIN      0x00000005  /* 5 degrees */
00319 #define DSSPEAKER_GEOMETRY_NARROW   0x0000000A  /* 10 degrees */
00320 #define DSSPEAKER_GEOMETRY_WIDE     0x00000014  /* 20 degrees */
00321 #define DSSPEAKER_GEOMETRY_MAX      0x000000B4  /* 180 degrees */
00322 
00323 #define DSSPEAKER_COMBINED(c, g)    ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16))
00324 #define DSSPEAKER_CONFIG(a)         ((BYTE)(a))
00325 #define DSSPEAKER_GEOMETRY(a)       ((BYTE)(((DWORD)(a) >> 16) & 0x00FF))
00326 
00327 #define DS_CERTIFIED                0x00000000
00328 #define DS_UNCERTIFIED              0x00000001
00329 
00330 typedef struct _DSCEFFECTDESC
00331 {
00332     DWORD       dwSize;
00333     DWORD       dwFlags;
00334     GUID        guidDSCFXClass;
00335     GUID        guidDSCFXInstance;
00336     DWORD       dwReserved1;
00337     DWORD       dwReserved2;
00338 } DSCEFFECTDESC, *LPDSCEFFECTDESC;
00339 typedef const DSCEFFECTDESC *LPCDSCEFFECTDESC;
00340 
00341 #define DSCFX_LOCHARDWARE   0x00000001
00342 #define DSCFX_LOCSOFTWARE   0x00000002
00343 
00344 #define DSCFXR_LOCHARDWARE  0x00000010
00345 #define DSCFXR_LOCSOFTWARE  0x00000020
00346 
00347 typedef struct _DSCBUFFERDESC1
00348 {
00349   DWORD           dwSize;
00350   DWORD           dwFlags;
00351   DWORD           dwBufferBytes;
00352   DWORD           dwReserved;
00353   LPWAVEFORMATEX  lpwfxFormat;
00354 } DSCBUFFERDESC1, *LPDSCBUFFERDESC1;
00355 
00356 typedef struct _DSCBUFFERDESC
00357 {
00358   DWORD           dwSize;
00359   DWORD           dwFlags;
00360   DWORD           dwBufferBytes;
00361   DWORD           dwReserved;
00362   LPWAVEFORMATEX  lpwfxFormat;
00363   DWORD           dwFXCount;
00364   LPDSCEFFECTDESC lpDSCFXDesc;
00365 } DSCBUFFERDESC, *LPDSCBUFFERDESC;
00366 typedef const DSCBUFFERDESC *LPCDSCBUFFERDESC;
00367 
00368 typedef struct _DSCCAPS
00369 {
00370   DWORD dwSize;
00371   DWORD dwFlags;
00372   DWORD dwFormats;
00373   DWORD dwChannels;
00374 } DSCCAPS, *LPDSCCAPS;
00375 typedef const DSCCAPS *LPCDSCCAPS;
00376 
00377 typedef struct _DSCBCAPS
00378 {
00379   DWORD dwSize;
00380   DWORD dwFlags;
00381   DWORD dwBufferBytes;
00382   DWORD dwReserved;
00383 } DSCBCAPS, *LPDSCBCAPS;
00384 typedef const DSCBCAPS *LPCDSCBCAPS;
00385 
00386 #define DSCCAPS_EMULDRIVER          DSCAPS_EMULDRIVER
00387 #define DSCCAPS_CERTIFIED           DSCAPS_CERTIFIED
00388 #define DSCCAPS_MULTIPLECAPTURE     0x00000001
00389 
00390 #define DSCBCAPS_WAVEMAPPED         0x80000000
00391 #define DSCBCAPS_CTRLFX             0x00000200
00392 
00393 #define DSCBLOCK_ENTIREBUFFER       0x00000001
00394 #define DSCBSTART_LOOPING           0x00000001
00395 #define DSCBPN_OFFSET_STOP          0xffffffff
00396 
00397 #define DSCBSTATUS_CAPTURING        0x00000001
00398 #define DSCBSTATUS_LOOPING          0x00000002
00399 
00400 #ifndef __LPCGUID_DEFINED__
00401 #define __LPCGUID_DEFINED__
00402 typedef const GUID *LPCGUID;
00403 #endif
00404 
00405 typedef BOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID,LPCWSTR,LPCWSTR,LPVOID);
00406 typedef BOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID,LPCSTR,LPCSTR,LPVOID);
00407 
00408 extern HRESULT WINAPI DirectSoundCreate(LPCGUID lpGUID,LPDIRECTSOUND *ppDS,LPUNKNOWN pUnkOuter);
00409 extern HRESULT WINAPI DirectSoundEnumerateA(LPDSENUMCALLBACKA, LPVOID);
00410 extern HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW, LPVOID);
00411 
00412 extern HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE *ppDSC, LPUNKNOWN pUnkOuter);
00413 extern HRESULT WINAPI DirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA, LPVOID);
00414 extern HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW, LPVOID);
00415 
00416 extern HRESULT WINAPI DirectSoundCreate8(LPCGUID lpGUID,LPDIRECTSOUND8 *ppDS8,LPUNKNOWN pUnkOuter);
00417 extern HRESULT WINAPI DirectSoundCaptureCreate8(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE8 *ppDSC8, LPUNKNOWN pUnkOuter);
00418 extern HRESULT WINAPI DirectSoundFullDuplexCreate(LPCGUID pcGuidCaptureDevice, LPCGUID pcGuidRenderDevice,
00419     LPCDSCBUFFERDESC pcDSCBufferDesc, LPCDSBUFFERDESC pcDSBufferDesc, HWND hWnd, DWORD dwLevel,
00420     LPDIRECTSOUNDFULLDUPLEX *ppDSFD, LPDIRECTSOUNDCAPTUREBUFFER8 *ppDSCBuffer8, LPDIRECTSOUNDBUFFER8 *ppDSBuffer8, LPUNKNOWN pUnkOuter);
00421 #define DirectSoundFullDuplexCreate8 DirectSoundFullDuplexCreate
00422 extern HRESULT WINAPI GetDeviceID(LPCGUID lpGuidSrc, LPGUID lpGuidDest);
00423 
00424 
00425 /*****************************************************************************
00426  * IDirectSound interface
00427  */
00428 #undef INTERFACE
00429 #define INTERFACE IDirectSound
00430 DECLARE_INTERFACE_(IDirectSound,IUnknown)
00431 {
00432     /*** IUnknown methods ***/
00433     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00434     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00435     STDMETHOD_(ULONG,Release)(THIS) PURE;
00436     /*** IDirectSound methods ***/
00437     STDMETHOD(CreateSoundBuffer)(THIS_ LPCDSBUFFERDESC lpcDSBufferDesc, LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer, IUnknown *pUnkOuter) PURE;
00438     STDMETHOD(GetCaps)(THIS_ LPDSCAPS lpDSCaps) PURE;
00439     STDMETHOD(DuplicateSoundBuffer)(THIS_ LPDIRECTSOUNDBUFFER lpDsbOriginal, LPLPDIRECTSOUNDBUFFER lplpDsbDuplicate) PURE;
00440     STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwLevel) PURE;
00441     STDMETHOD(Compact)(THIS) PURE;
00442     STDMETHOD(GetSpeakerConfig)(THIS_ LPDWORD lpdwSpeakerConfig) PURE;
00443     STDMETHOD(SetSpeakerConfig)(THIS_ DWORD dwSpeakerConfig) PURE;
00444     STDMETHOD(Initialize)(THIS_ LPCGUID lpcGuid) PURE;
00445 };
00446 #undef INTERFACE
00447 
00448 #if !defined(__cplusplus) || defined(CINTERFACE)
00449 /*** IUnknown methods ***/
00450 #define IDirectSound_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00451 #define IDirectSound_AddRef(p)             (p)->lpVtbl->AddRef(p)
00452 #define IDirectSound_Release(p)            (p)->lpVtbl->Release(p)
00453 /*** IDirectSound methods ***/
00454 #define IDirectSound_CreateSoundBuffer(p,a,b,c)  (p)->lpVtbl->CreateSoundBuffer(p,a,b,c)
00455 #define IDirectSound_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
00456 #define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
00457 #define IDirectSound_SetCooperativeLevel(p,a,b)  (p)->lpVtbl->SetCooperativeLevel(p,a,b)
00458 #define IDirectSound_Compact(p)                  (p)->lpVtbl->Compact(p)
00459 #define IDirectSound_GetSpeakerConfig(p,a)       (p)->lpVtbl->GetSpeakerConfig(p,a)
00460 #define IDirectSound_SetSpeakerConfig(p,a)       (p)->lpVtbl->SetSpeakerConfig(p,a)
00461 #define IDirectSound_Initialize(p,a)             (p)->lpVtbl->Initialize(p,a)
00462 #else
00463 /*** IUnknown methods ***/
00464 #define IDirectSound_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
00465 #define IDirectSound_AddRef(p)             (p)->AddRef()
00466 #define IDirectSound_Release(p)            (p)->Release()
00467 /*** IDirectSound methods ***/
00468 #define IDirectSound_CreateSoundBuffer(p,a,b,c)  (p)->CreateSoundBuffer(a,b,c)
00469 #define IDirectSound_GetCaps(p,a)                (p)->GetCaps(a)
00470 #define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b)
00471 #define IDirectSound_SetCooperativeLevel(p,a,b)  (p)->SetCooperativeLevel(a,b)
00472 #define IDirectSound_Compact(p)                  (p)->Compact()
00473 #define IDirectSound_GetSpeakerConfig(p,a)       (p)->GetSpeakerConfig(a)
00474 #define IDirectSound_SetSpeakerConfig(p,a)       (p)->SetSpeakerConfig(a)
00475 #define IDirectSound_Initialize(p,a)             (p)->Initialize(a)
00476 #endif
00477 
00478 
00479 /*****************************************************************************
00480  * IDirectSound8 interface
00481  */
00482 #define INTERFACE IDirectSound8
00483 DECLARE_INTERFACE_(IDirectSound8,IUnknown)
00484 {
00485     /*** IUnknown methods ***/
00486     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00487     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00488     STDMETHOD_(ULONG,Release)(THIS) PURE;
00489     /*** IDirectSound8 methods ***/
00490     STDMETHOD(CreateSoundBuffer)(THIS_ LPCDSBUFFERDESC lpcDSBufferDesc, LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer, IUnknown *pUnkOuter) PURE;
00491     STDMETHOD(GetCaps)(THIS_ LPDSCAPS lpDSCaps) PURE;
00492     STDMETHOD(DuplicateSoundBuffer)(THIS_ LPDIRECTSOUNDBUFFER lpDsbOriginal, LPLPDIRECTSOUNDBUFFER lplpDsbDuplicate) PURE;
00493     STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwLevel) PURE;
00494     STDMETHOD(Compact)(THIS) PURE;
00495     STDMETHOD(GetSpeakerConfig)(THIS_ LPDWORD lpdwSpeakerConfig) PURE;
00496     STDMETHOD(SetSpeakerConfig)(THIS_ DWORD dwSpeakerConfig) PURE;
00497     STDMETHOD(Initialize)(THIS_ LPCGUID lpcGuid) PURE;
00498     STDMETHOD(VerifyCertification)(THIS_ LPDWORD pdwCertified) PURE;
00499 };
00500 #undef INTERFACE
00501 
00502 #if !defined(__cplusplus) || defined(CINTERFACE)
00503 /*** IUnknown methods ***/
00504 #define IDirectSound8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00505 #define IDirectSound8_AddRef(p)             (p)->lpVtbl->AddRef(p)
00506 #define IDirectSound8_Release(p)            (p)->lpVtbl->Release(p)
00507 /*** IDirectSound methods ***/
00508 #define IDirectSound8_CreateSoundBuffer(p,a,b,c)  (p)->lpVtbl->CreateSoundBuffer(p,a,b,c)
00509 #define IDirectSound8_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
00510 #define IDirectSound8_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
00511 #define IDirectSound8_SetCooperativeLevel(p,a,b)  (p)->lpVtbl->SetCooperativeLevel(p,a,b)
00512 #define IDirectSound8_Compact(p)                  (p)->lpVtbl->Compact(p)
00513 #define IDirectSound8_GetSpeakerConfig(p,a)       (p)->lpVtbl->GetSpeakerConfig(p,a)
00514 #define IDirectSound8_SetSpeakerConfig(p,a)       (p)->lpVtbl->SetSpeakerConfig(p,a)
00515 #define IDirectSound8_Initialize(p,a)             (p)->lpVtbl->Initialize(p,a)
00516 /*** IDirectSound8 methods ***/
00517 #define IDirectSound8_VerifyCertification(p,a)    (p)->lpVtbl->VerifyCertification(p,a)
00518 #else
00519 /*** IUnknown methods ***/
00520 #define IDirectSound8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
00521 #define IDirectSound8_AddRef(p)             (p)->AddRef()
00522 #define IDirectSound8_Release(p)            (p)->Release()
00523 /*** IDirectSound methods ***/
00524 #define IDirectSound8_CreateSoundBuffer(p,a,b,c)  (p)->CreateSoundBuffer(a,b,c)
00525 #define IDirectSound8_GetCaps(p,a)                (p)->GetCaps(a)
00526 #define IDirectSound8_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b)
00527 #define IDirectSound8_SetCooperativeLevel(p,a,b)  (p)->SetCooperativeLevel(a,b)
00528 #define IDirectSound8_Compact(p)                  (p)->Compact()
00529 #define IDirectSound8_GetSpeakerConfig(p,a)       (p)->GetSpeakerConfig(a)
00530 #define IDirectSound8_SetSpeakerConfig(p,a)       (p)->SetSpeakerConfig(a)
00531 #define IDirectSound8_Initialize(p,a)             (p)->Initialize(a)
00532 /*** IDirectSound8 methods ***/
00533 #define IDirectSound8_VerifyCertification(p,a)    (p)->VerifyCertification(a)
00534 #endif
00535 
00536 
00537 /*****************************************************************************
00538  * IDirectSoundBuffer interface
00539  */
00540 #define INTERFACE IDirectSoundBuffer
00541 DECLARE_INTERFACE_(IDirectSoundBuffer,IUnknown)
00542 {
00543     /*** IUnknown methods ***/
00544     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00545     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00546     STDMETHOD_(ULONG,Release)(THIS) PURE;
00547     /*** IDirectSoundBuffer methods ***/
00548     STDMETHOD(GetCaps)(THIS_ LPDSBCAPS lpDSBufferCaps) PURE;
00549     STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor, LPDWORD lpdwCurrentWriteCursor) PURE;
00550     STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
00551     STDMETHOD(GetVolume)(THIS_ LPLONG lplVolume) PURE;
00552     STDMETHOD(GetPan)(THIS_ LPLONG lplpan) PURE;
00553     STDMETHOD(GetFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
00554     STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
00555     STDMETHOD(Initialize)(THIS_ LPDIRECTSOUND lpDirectSound, LPCDSBUFFERDESC lpcDSBufferDesc) PURE;
00556     STDMETHOD(Lock)(THIS_ DWORD dwWriteCursor, DWORD dwWriteBytes, LPVOID *lplpvAudioPtr1, LPDWORD lpdwAudioBytes1, LPVOID *lplpvAudioPtr2, LPDWORD lpdwAudioBytes2, DWORD dwFlags) PURE;
00557     STDMETHOD(Play)(THIS_ DWORD dwReserved1, DWORD dwReserved2, DWORD dwFlags) PURE;
00558     STDMETHOD(SetCurrentPosition)(THIS_ DWORD dwNewPosition) PURE;
00559     STDMETHOD(SetFormat)(THIS_ LPCWAVEFORMATEX lpcfxFormat) PURE;
00560     STDMETHOD(SetVolume)(THIS_ LONG lVolume) PURE;
00561     STDMETHOD(SetPan)(THIS_ LONG lPan) PURE;
00562     STDMETHOD(SetFrequency)(THIS_ DWORD dwFrequency) PURE;
00563     STDMETHOD(Stop)(THIS) PURE;
00564     STDMETHOD(Unlock)(THIS_ LPVOID lpvAudioPtr1, DWORD dwAudioBytes1, LPVOID lpvAudioPtr2, DWORD dwAudioPtr2) PURE;
00565     STDMETHOD(Restore)(THIS) PURE;
00566 };
00567 #undef INTERFACE
00568 
00569 #if !defined(__cplusplus) || defined(CINTERFACE)
00570 /*** IUnknown methods ***/
00571 #define IDirectSoundBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00572 #define IDirectSoundBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
00573 #define IDirectSoundBuffer_Release(p)            (p)->lpVtbl->Release(p)
00574 /*** IDirectSoundBuffer methods ***/
00575 #define IDirectSoundBuffer_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
00576 #define IDirectSoundBuffer_GetCurrentPosition(p,a,b)   (p)->lpVtbl->GetCurrentPosition(p,a,b)
00577 #define IDirectSoundBuffer_GetFormat(p,a,b,c)          (p)->lpVtbl->GetFormat(p,a,b,c)
00578 #define IDirectSoundBuffer_GetVolume(p,a)              (p)->lpVtbl->GetVolume(p,a)
00579 #define IDirectSoundBuffer_GetPan(p,a)                 (p)->lpVtbl->GetPan(p,a)
00580 #define IDirectSoundBuffer_GetFrequency(p,a)           (p)->lpVtbl->GetFrequency(p,a)
00581 #define IDirectSoundBuffer_GetStatus(p,a)              (p)->lpVtbl->GetStatus(p,a)
00582 #define IDirectSoundBuffer_Initialize(p,a,b)           (p)->lpVtbl->Initialize(p,a,b)
00583 #define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g)       (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
00584 #define IDirectSoundBuffer_Play(p,a,b,c)               (p)->lpVtbl->Play(p,a,b,c)
00585 #define IDirectSoundBuffer_SetCurrentPosition(p,a)     (p)->lpVtbl->SetCurrentPosition(p,a)
00586 #define IDirectSoundBuffer_SetFormat(p,a)              (p)->lpVtbl->SetFormat(p,a)
00587 #define IDirectSoundBuffer_SetVolume(p,a)              (p)->lpVtbl->SetVolume(p,a)
00588 #define IDirectSoundBuffer_SetPan(p,a)                 (p)->lpVtbl->SetPan(p,a)
00589 #define IDirectSoundBuffer_SetFrequency(p,a)           (p)->lpVtbl->SetFrequency(p,a)
00590 #define IDirectSoundBuffer_Stop(p)                     (p)->lpVtbl->Stop(p)
00591 #define IDirectSoundBuffer_Unlock(p,a,b,c,d)           (p)->lpVtbl->Unlock(p,a,b,c,d)
00592 #define IDirectSoundBuffer_Restore(p)                  (p)->lpVtbl->Restore(p)
00593 #else
00594 /*** IUnknown methods ***/
00595 #define IDirectSoundBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
00596 #define IDirectSoundBuffer_AddRef(p)             (p)->AddRef()
00597 #define IDirectSoundBuffer_Release(p)            (p)->Release()
00598 /*** IDirectSoundBuffer methods ***/
00599 #define IDirectSoundBuffer_GetCaps(p,a)                (p)->GetCaps(a)
00600 #define IDirectSoundBuffer_GetCurrentPosition(p,a,b)   (p)->GetCurrentPosition(a,b)
00601 #define IDirectSoundBuffer_GetFormat(p,a,b,c)          (p)->GetFormat(a,b,c)
00602 #define IDirectSoundBuffer_GetVolume(p,a)              (p)->GetVolume(a)
00603 #define IDirectSoundBuffer_GetPan(p,a)                 (p)->GetPan(a)
00604 #define IDirectSoundBuffer_GetFrequency(p,a)           (p)->GetFrequency(a)
00605 #define IDirectSoundBuffer_GetStatus(p,a)              (p)->GetStatus(a)
00606 #define IDirectSoundBuffer_Initialize(p,a,b)           (p)->Initialize(a,b)
00607 #define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g)       (p)->Lock(a,b,c,d,e,f,g)
00608 #define IDirectSoundBuffer_Play(p,a,b,c)               (p)->Play(a,b,c)
00609 #define IDirectSoundBuffer_SetCurrentPosition(p,a)     (p)->SetCurrentPosition(a)
00610 #define IDirectSoundBuffer_SetFormat(p,a)              (p)->SetFormat(a)
00611 #define IDirectSoundBuffer_SetVolume(p,a)              (p)->SetVolume(a)
00612 #define IDirectSoundBuffer_SetPan(p,a)                 (p)->SetPan(a)
00613 #define IDirectSoundBuffer_SetFrequency(p,a)           (p)->SetFrequency(a)
00614 #define IDirectSoundBuffer_Stop(p)                     (p)->Stop()
00615 #define IDirectSoundBuffer_Unlock(p,a,b,c,d)           (p)->Unlock(a,b,c,d)
00616 #define IDirectSoundBuffer_Restore(p)                  (p)->Restore()
00617 #endif
00618 
00619 
00620 /*****************************************************************************
00621  * IDirectSoundBuffer8 interface
00622  */
00623 #define INTERFACE IDirectSoundBuffer8
00624 DECLARE_INTERFACE_(IDirectSoundBuffer8,IUnknown)
00625 {
00626     /*** IUnknown methods ***/
00627     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00628     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00629     STDMETHOD_(ULONG,Release)(THIS) PURE;
00630     /*** IDirectSoundBuffer8 methods ***/
00631     STDMETHOD(GetCaps)(THIS_ LPDSBCAPS lpDSBufferCaps) PURE;
00632     STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor, LPDWORD lpdwCurrentWriteCursor) PURE;
00633     STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
00634     STDMETHOD(GetVolume)(THIS_ LPLONG lplVolume) PURE;
00635     STDMETHOD(GetPan)(THIS_ LPLONG lplpan) PURE;
00636     STDMETHOD(GetFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
00637     STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
00638     STDMETHOD(Initialize)(THIS_ LPDIRECTSOUND lpDirectSound, LPCDSBUFFERDESC lpcDSBufferDesc) PURE;
00639     STDMETHOD(Lock)(THIS_ DWORD dwWriteCursor, DWORD dwWriteBytes, LPVOID *lplpvAudioPtr1, LPDWORD lpdwAudioBytes1, LPVOID *lplpvAudioPtr2, LPDWORD lpdwAudioBytes2, DWORD dwFlags) PURE;
00640     STDMETHOD(Play)(THIS_ DWORD dwReserved1, DWORD dwReserved2, DWORD dwFlags) PURE;
00641     STDMETHOD(SetCurrentPosition)(THIS_ DWORD dwNewPosition) PURE;
00642     STDMETHOD(SetFormat)(THIS_ LPCWAVEFORMATEX lpcfxFormat) PURE;
00643     STDMETHOD(SetVolume)(THIS_ LONG lVolume) PURE;
00644     STDMETHOD(SetPan)(THIS_ LONG lPan) PURE;
00645     STDMETHOD(SetFrequency)(THIS_ DWORD dwFrequency) PURE;
00646     STDMETHOD(Stop)(THIS) PURE;
00647     STDMETHOD(Unlock)(THIS_ LPVOID lpvAudioPtr1, DWORD dwAudioBytes1, LPVOID lpvAudioPtr2, DWORD dwAudioPtr2) PURE;
00648     STDMETHOD(Restore)(THIS) PURE;
00649     STDMETHOD(SetFX)(THIS_ DWORD dwEffectsCount, LPDSEFFECTDESC pDSFXDesc, LPDWORD pdwResultCodes) PURE;
00650     STDMETHOD(AcquireResources)(THIS_ DWORD dwFlags, DWORD dwEffectsCount, LPDWORD pdwResultCodes) PURE;
00651     STDMETHOD(GetObjectInPath)(THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE;
00652 };
00653 #undef INTERFACE
00654 
00655 #if !defined(__cplusplus) || defined(CINTERFACE)
00656 /*** IUnknown methods ***/
00657 #define IDirectSoundBuffer8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00658 #define IDirectSoundBuffer8_AddRef(p)             (p)->lpVtbl->AddRef(p)
00659 #define IDirectSoundBuffer8_Release(p)            (p)->lpVtbl->Release(p)
00660 /*** IDirectSoundBuffer methods ***/
00661 #define IDirectSoundBuffer8_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
00662 #define IDirectSoundBuffer8_GetCurrentPosition(p,a,b)   (p)->lpVtbl->GetCurrentPosition(p,a,b)
00663 #define IDirectSoundBuffer8_GetFormat(p,a,b,c)          (p)->lpVtbl->GetFormat(p,a,b,c)
00664 #define IDirectSoundBuffer8_GetVolume(p,a)              (p)->lpVtbl->GetVolume(p,a)
00665 #define IDirectSoundBuffer8_GetPan(p,a)                 (p)->lpVtbl->GetPan(p,a)
00666 #define IDirectSoundBuffer8_GetFrequency(p,a)           (p)->lpVtbl->GetFrequency(p,a)
00667 #define IDirectSoundBuffer8_GetStatus(p,a)              (p)->lpVtbl->GetStatus(p,a)
00668 #define IDirectSoundBuffer8_Initialize(p,a,b)           (p)->lpVtbl->Initialize(p,a,b)
00669 #define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g)       (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
00670 #define IDirectSoundBuffer8_Play(p,a,b,c)               (p)->lpVtbl->Play(p,a,b,c)
00671 #define IDirectSoundBuffer8_SetCurrentPosition(p,a)     (p)->lpVtbl->SetCurrentPosition(p,a)
00672 #define IDirectSoundBuffer8_SetFormat(p,a)              (p)->lpVtbl->SetFormat(p,a)
00673 #define IDirectSoundBuffer8_SetVolume(p,a)              (p)->lpVtbl->SetVolume(p,a)
00674 #define IDirectSoundBuffer8_SetPan(p,a)                 (p)->lpVtbl->SetPan(p,a)
00675 #define IDirectSoundBuffer8_SetFrequency(p,a)           (p)->lpVtbl->SetFrequency(p,a)
00676 #define IDirectSoundBuffer8_Stop(p)                     (p)->lpVtbl->Stop(p)
00677 #define IDirectSoundBuffer8_Unlock(p,a,b,c,d)           (p)->lpVtbl->Unlock(p,a,b,c,d)
00678 #define IDirectSoundBuffer8_Restore(p)                  (p)->lpVtbl->Restore(p)
00679 /*** IDirectSoundBuffer8 methods ***/
00680 #define IDirectSoundBuffer8_SetFX(p,a,b,c)              (p)->lpVtbl->SetFX(p,a,b,c)
00681 #define IDirectSoundBuffer8_AcquireResources(p,a,b,c)   (p)->lpVtbl->AcquireResources(p,a,b,c)
00682 #define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d)  (p)->lpVtbl->GetObjectInPath(p,a,b,c,d)
00683 #else
00684 /*** IUnknown methods ***/
00685 #define IDirectSoundBuffer8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
00686 #define IDirectSoundBuffer8_AddRef(p)             (p)->AddRef()
00687 #define IDirectSoundBuffer8_Release(p)            (p)->Release()
00688 /*** IDirectSoundBuffer methods ***/
00689 #define IDirectSoundBuffer8_GetCaps(p,a)                (p)->GetCaps(a)
00690 #define IDirectSoundBuffer8_GetCurrentPosition(p,a,b)   (p)->GetCurrentPosition(a,b)
00691 #define IDirectSoundBuffer8_GetFormat(p,a,b,c)          (p)->GetFormat(a,b,c)
00692 #define IDirectSoundBuffer8_GetVolume(p,a)              (p)->GetVolume(a)
00693 #define IDirectSoundBuffer8_GetPan(p,a)                 (p)->GetPan(a)
00694 #define IDirectSoundBuffer8_GetFrequency(p,a)           (p)->GetFrequency(a)
00695 #define IDirectSoundBuffer8_GetStatus(p,a)              (p)->GetStatus(a)
00696 #define IDirectSoundBuffer8_Initialize(p,a,b)           (p)->Initialize(a,b)
00697 #define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g)       (p)->Lock(a,b,c,d,e,f,g)
00698 #define IDirectSoundBuffer8_Play(p,a,b,c)               (p)->Play(a,b,c)
00699 #define IDirectSoundBuffer8_SetCurrentPosition(p,a)     (p)->SetCurrentPosition(a)
00700 #define IDirectSoundBuffer8_SetFormat(p,a)              (p)->SetFormat(a)
00701 #define IDirectSoundBuffer8_SetVolume(p,a)              (p)->SetVolume(a)
00702 #define IDirectSoundBuffer8_SetPan(p,a)                 (p)->SetPan(a)
00703 #define IDirectSoundBuffer8_SetFrequency(p,a)           (p)->SetFrequency(a)
00704 #define IDirectSoundBuffer8_Stop(p)                     (p)->Stop()
00705 #define IDirectSoundBuffer8_Unlock(p,a,b,c,d)           (p)->Unlock(a,b,c,d)
00706 #define IDirectSoundBuffer8_Restore(p)                  (p)->Restore()
00707 /*** IDirectSoundBuffer8 methods ***/
00708 #define IDirectSoundBuffer8_SetFX(p,a,b,c)              (p)->SetFX(a,b,c)
00709 #define IDirectSoundBuffer8_AcquireResources(p,a,b,c)   (p)->AcquireResources(a,b,c)
00710 #define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d)  (p)->GetObjectInPath(a,b,c,d)
00711 #endif
00712 
00713 
00714 /*****************************************************************************
00715  * IDirectSoundCapture interface
00716  */
00717 #define INTERFACE IDirectSoundCapture
00718 DECLARE_INTERFACE_(IDirectSoundCapture,IUnknown)
00719 {
00720     /*** IUnknown methods ***/
00721     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00722     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00723     STDMETHOD_(ULONG,Release)(THIS) PURE;
00724     /*** IDirectSoundCapture methods ***/
00725     STDMETHOD(CreateCaptureBuffer)(THIS_ LPCDSCBUFFERDESC lpcDSCBufferDesc,LPDIRECTSOUNDCAPTUREBUFFER *lplpDSCaptureBuffer, LPUNKNOWN pUnk) PURE;
00726     STDMETHOD(GetCaps)(THIS_ LPDSCCAPS lpDSCCaps) PURE;
00727     STDMETHOD(Initialize)(THIS_ LPCGUID lpcGUID) PURE;
00728 };
00729 #undef INTERFACE
00730 
00731 #if !defined(__cplusplus) || defined(CINTERFACE)
00732 /*** IUnknown methods ***/
00733 #define IDirectSoundCapture_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
00734 #define IDirectSoundCapture_AddRef(p)                    (p)->lpVtbl->AddRef(p)
00735 #define IDirectSoundCapture_Release(p)                   (p)->lpVtbl->Release(p)
00736 /*** IDirectSoundCapture methods ***/
00737 #define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c)
00738 #define IDirectSoundCapture_GetCaps(p,a)                 (p)->lpVtbl->GetCaps(p,a)
00739 #define IDirectSoundCapture_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
00740 #else
00741 /*** IUnknown methods ***/
00742 #define IDirectSoundCapture_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
00743 #define IDirectSoundCapture_AddRef(p)                    (p)->AddRef()
00744 #define IDirectSoundCapture_Release(p)                   (p)->Release()
00745 /*** IDirectSoundCapture methods ***/
00746 #define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->CreateCaptureBuffer(a,b,c)
00747 #define IDirectSoundCapture_GetCaps(p,a)                 (p)->GetCaps(a)
00748 #define IDirectSoundCapture_Initialize(p,a)              (p)->Initialize(a)
00749 #endif
00750 
00751 /*****************************************************************************
00752  * IDirectSoundCaptureBuffer interface
00753  */
00754 #define INTERFACE IDirectSoundCaptureBuffer
00755 DECLARE_INTERFACE_(IDirectSoundCaptureBuffer,IUnknown)
00756 {
00757     /*** IUnknown methods ***/
00758     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00759     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00760     STDMETHOD_(ULONG,Release)(THIS) PURE;
00761     /*** IDirectSoundCaptureBuffer methods ***/
00762     STDMETHOD(GetCaps)(THIS_ LPDSCBCAPS lpDSCBCaps) PURE;
00763     STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCapturePosition,LPDWORD lpdwReadPosition) PURE;
00764     STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
00765     STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
00766     STDMETHOD(Initialize)(THIS_ LPDIRECTSOUNDCAPTURE lpDSC, LPCDSCBUFFERDESC lpcDSCBDesc) PURE;
00767     STDMETHOD(Lock)(THIS_ DWORD dwReadCusor, DWORD dwReadBytes, LPVOID *lplpvAudioPtr1, LPDWORD lpdwAudioBytes1, LPVOID *lplpvAudioPtr2, LPDWORD lpdwAudioBytes2, DWORD dwFlags) PURE;
00768     STDMETHOD(Start)(THIS_ DWORD dwFlags) PURE;
00769     STDMETHOD(Stop)(THIS) PURE;
00770     STDMETHOD(Unlock)(THIS_ LPVOID lpvAudioPtr1, DWORD dwAudioBytes1, LPVOID lpvAudioPtr2, DWORD dwAudioBytes2) PURE;
00771 };
00772 #undef INTERFACE
00773 
00774 #if !defined(__cplusplus) || defined(CINTERFACE)
00775 /*** IUnknown methods ***/
00776 #define IDirectSoundCaptureBuffer_QueryInterface(p,a,b)     (p)->lpVtbl->QueryInterface(p,a,b)
00777 #define IDirectSoundCaptureBuffer_AddRef(p)                 (p)->lpVtbl->AddRef(p)
00778 #define IDirectSoundCaptureBuffer_Release(p)                (p)->lpVtbl->Release(p)
00779 /*** IDirectSoundCaptureBuffer methods ***/
00780 #define IDirectSoundCaptureBuffer_GetCaps(p,a)              (p)->lpVtbl->GetCaps(p,a)
00781 #define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b)
00782 #define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c)        (p)->lpVtbl->GetFormat(p,a,b,c)
00783 #define IDirectSoundCaptureBuffer_GetStatus(p,a)            (p)->lpVtbl->GetStatus(p,a)
00784 #define IDirectSoundCaptureBuffer_Initialize(p,a,b)         (p)->lpVtbl->Initialize(p,a,b)
00785 #define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g)     (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
00786 #define IDirectSoundCaptureBuffer_Start(p,a)                (p)->lpVtbl->Start(p,a)
00787 #define IDirectSoundCaptureBuffer_Stop(p)                   (p)->lpVtbl->Stop(p)
00788 #define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d)         (p)->lpVtbl->Unlock(p,a,b,c,d)
00789 #else
00790 /*** IUnknown methods ***/
00791 #define IDirectSoundCaptureBuffer_QueryInterface(p,a,b)     (p)->QueryInterface(a,b)
00792 #define IDirectSoundCaptureBuffer_AddRef(p)                 (p)->AddRef()
00793 #define IDirectSoundCaptureBuffer_Release(p)                (p)->Release()
00794 /*** IDirectSoundCaptureBuffer methods ***/
00795 #define IDirectSoundCaptureBuffer_GetCaps(p,a)              (p)->GetCaps(a)
00796 #define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b)
00797 #define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c)        (p)->GetFormat(a,b,c)
00798 #define IDirectSoundCaptureBuffer_GetStatus(p,a)            (p)->GetStatus(a)
00799 #define IDirectSoundCaptureBuffer_Initialize(p,a,b)         (p)->Initialize(a,b)
00800 #define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g)     (p)->Lock(a,b,c,d,e,f,g)
00801 #define IDirectSoundCaptureBuffer_Start(p,a)                (p)->Start(a)
00802 #define IDirectSoundCaptureBuffer_Stop(p)                   (p)->Stop()
00803 #define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d)         (p)->Unlock(a,b,c,d)
00804 #endif
00805 
00806 /*****************************************************************************
00807  * IDirectSoundCaptureBuffer8 interface
00808  */
00809 #define INTERFACE IDirectSoundCaptureBuffer8
00810 DECLARE_INTERFACE_(IDirectSoundCaptureBuffer8,IDirectSoundCaptureBuffer)
00811 {
00812     /*** IUnknown methods ***/
00813     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00814     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00815     STDMETHOD_(ULONG,Release)(THIS) PURE;
00816     /*** IDirectSoundCaptureBuffer methods ***/
00817     STDMETHOD(GetCaps)(THIS_ LPDSCBCAPS lpDSCBCaps) PURE;
00818     STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCapturePosition,LPDWORD lpdwReadPosition) PURE;
00819     STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
00820     STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
00821     STDMETHOD(Initialize)(THIS_ LPDIRECTSOUNDCAPTURE lpDSC, LPCDSCBUFFERDESC lpcDSCBDesc) PURE;
00822     STDMETHOD(Lock)(THIS_ DWORD dwReadCusor, DWORD dwReadBytes, LPVOID *lplpvAudioPtr1, LPDWORD lpdwAudioBytes1, LPVOID *lplpvAudioPtr2, LPDWORD lpdwAudioBytes2, DWORD dwFlags) PURE;
00823     STDMETHOD(Start)(THIS_ DWORD dwFlags) PURE;
00824     STDMETHOD(Stop)(THIS) PURE;
00825     STDMETHOD(Unlock)(THIS_ LPVOID lpvAudioPtr1, DWORD dwAudioBytes1, LPVOID lpvAudioPtr2, DWORD dwAudioBytes2) PURE;
00826     /*** IDirectSoundCaptureBuffer8 methods ***/
00827     STDMETHOD(GetObjectInPath)(THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE;
00828     STDMETHOD(GetFXStatus)(THIS_ DWORD dwFXCount, LPDWORD pdwFXStatus) PURE;
00829 };
00830 #undef INTERFACE
00831 
00832 #if !defined(__cplusplus) || defined(CINTERFACE)
00833 /*** IUnknown methods ***/
00834 #define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
00835 #define IDirectSoundCaptureBuffer8_AddRef(p)                  (p)->lpVtbl->AddRef(p)
00836 #define IDirectSoundCaptureBuffer8_Release(p)                 (p)->lpVtbl->Release(p)
00837 /*** IDirectSoundCaptureBuffer methods ***/
00838 #define IDirectSoundCaptureBuffer8_GetCaps(p,a)               (p)->lpVtbl->GetCaps(p,a)
00839 #define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b)  (p)->lpVtbl->GetCurrentPosition(p,a,b)
00840 #define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c)         (p)->lpVtbl->GetFormat(p,a,b,c)
00841 #define IDirectSoundCaptureBuffer8_GetStatus(p,a)             (p)->lpVtbl->GetStatus(p,a)
00842 #define IDirectSoundCaptureBuffer8_Initialize(p,a,b)          (p)->lpVtbl->Initialize(p,a,b)
00843 #define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g)      (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
00844 #define IDirectSoundCaptureBuffer8_Start(p,a)                 (p)->lpVtbl->Start(p,a)
00845 #define IDirectSoundCaptureBuffer8_Stop(p)                    (p)->lpVtbl->Stop(p)
00846 #define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d)          (p)->lpVtbl->Unlock(p,a,b,c,d)
00847 /*** IDirectSoundCaptureBuffer8 methods ***/
00848 #define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d)
00849 #define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b)         (p)->lpVtbl->GetFXStatus(p,a,b)
00850 #else
00851 /*** IUnknown methods ***/
00852 #define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b)      (p)->QueryInterface(a,b)
00853 #define IDirectSoundCaptureBuffer8_AddRef(p)                  (p)->AddRef()
00854 #define IDirectSoundCaptureBuffer8_Release(p)                 (p)->Release()
00855 /*** IDirectSoundCaptureBuffer methods ***/
00856 #define IDirectSoundCaptureBuffer8_GetCaps(p,a)               (p)->GetCaps(a)
00857 #define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b)  (p)->GetCurrentPosition(a,b)
00858 #define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c)         (p)->GetFormat(a,b,c)
00859 #define IDirectSoundCaptureBuffer8_GetStatus(p,a)             (p)->GetStatus(a)
00860 #define IDirectSoundCaptureBuffer8_Initialize(p,a,b)          (p)->Initialize(a,b)
00861 #define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g)      (p)->Lock(a,b,c,d,e,f,g)
00862 #define IDirectSoundCaptureBuffer8_Start(p,a)                 (p)->Start(a)
00863 #define IDirectSoundCaptureBuffer8_Stop(p)                    (p)->Stop()
00864 #define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d)          (p)->Unlock(a,b,c,d)
00865 /*** IDirectSoundCaptureBuffer8 methods ***/
00866 #define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d)
00867 #define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b)         (p)->GetFXStatus(a,b)
00868 #endif
00869 
00870 /*****************************************************************************
00871  * IDirectSoundNotify interface
00872  */
00873 #define WINE_NOBUFFER                   0x80000000
00874 
00875 #define DSBPN_OFFSETSTOP        -1
00876 #define DSBNOTIFICATIONS_MAX        100000UL
00877 
00878 #define INTERFACE IDirectSoundNotify
00879 DECLARE_INTERFACE_(IDirectSoundNotify,IUnknown)
00880 {
00881     /*** IUnknown methods ***/
00882     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00883     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00884     STDMETHOD_(ULONG,Release)(THIS) PURE;
00885     /*** IDirectSoundNotify methods ***/
00886     STDMETHOD(SetNotificationPositions)(THIS_ DWORD cPositionNotifies, LPCDSBPOSITIONNOTIFY lpcPositionNotifies) PURE;
00887 };
00888 #undef INTERFACE
00889 
00890 #if !defined(__cplusplus) || defined(CINTERFACE)
00891 /*** IUnknown methods ***/
00892 #define IDirectSoundNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00893 #define IDirectSoundNotify_AddRef(p)             (p)->lpVtbl->AddRef(p)
00894 #define IDirectSoundNotify_Release(p)            (p)->lpVtbl->Release(p)
00895 /*** IDirectSoundNotify methods ***/
00896 #define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b)
00897 #else
00898 /*** IUnknown methods ***/
00899 #define IDirectSoundNotify_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
00900 #define IDirectSoundNotify_AddRef(p)             (p)->AddRef()
00901 #define IDirectSoundNotify_Release(p)            (p)->Release()
00902 /*** IDirectSoundNotify methods ***/
00903 #define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->SetNotificationPositions(a,b)
00904 #endif
00905 
00906 
00907 /*****************************************************************************
00908  * IDirectSound3DListener interface
00909  */
00910 #define DS3DMODE_NORMAL             0x00000000
00911 #define DS3DMODE_HEADRELATIVE       0x00000001
00912 #define DS3DMODE_DISABLE            0x00000002
00913 
00914 #define DS3D_IMMEDIATE              0x00000000
00915 #define DS3D_DEFERRED               0x00000001
00916 
00917 #define DS3D_MINDISTANCEFACTOR      FLT_MIN
00918 #define DS3D_MAXDISTANCEFACTOR      FLT_MAX
00919 #define DS3D_DEFAULTDISTANCEFACTOR  1.0f
00920 
00921 #define DS3D_MINROLLOFFFACTOR       0.0f
00922 #define DS3D_MAXROLLOFFFACTOR       10.0f
00923 #define DS3D_DEFAULTROLLOFFFACTOR   1.0f
00924 
00925 #define DS3D_MINDOPPLERFACTOR       0.0f
00926 #define DS3D_MAXDOPPLERFACTOR       10.0f
00927 #define DS3D_DEFAULTDOPPLERFACTOR   1.0f
00928 
00929 #define DS3D_DEFAULTMINDISTANCE     1.0f
00930 #define DS3D_DEFAULTMAXDISTANCE     1000000000.0f
00931 
00932 #define DS3D_MINCONEANGLE           0
00933 #define DS3D_MAXCONEANGLE           360
00934 #define DS3D_DEFAULTCONEANGLE       360
00935 
00936 #define DS3D_DEFAULTCONEOUTSIDEVOLUME   DSBVOLUME_MAX
00937 
00938 typedef struct _DS3DLISTENER {
00939     DWORD               dwSize;
00940     D3DVECTOR           vPosition;
00941     D3DVECTOR           vVelocity;
00942     D3DVECTOR           vOrientFront;
00943     D3DVECTOR           vOrientTop;
00944     D3DVALUE            flDistanceFactor;
00945     D3DVALUE            flRolloffFactor;
00946     D3DVALUE            flDopplerFactor;
00947 } DS3DLISTENER, *LPDS3DLISTENER;
00948 
00949 typedef const DS3DLISTENER *LPCDS3DLISTENER;
00950 
00951 #define INTERFACE IDirectSound3DListener
00952 DECLARE_INTERFACE_(IDirectSound3DListener,IUnknown)
00953 {
00954     /*** IUnknown methods ***/
00955     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00956     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00957     STDMETHOD_(ULONG,Release)(THIS) PURE;
00958     /*** IDirectSound3DListener methods ***/
00959     STDMETHOD(GetAllParameters)(THIS_ LPDS3DLISTENER lpListener) PURE;
00960     STDMETHOD(GetDistanceFactor)(THIS_ LPD3DVALUE lpflDistanceFactor) PURE;
00961     STDMETHOD(GetDopplerFactor)(THIS_ LPD3DVALUE lpflDopplerFactor) PURE;
00962     STDMETHOD(GetOrientation)(THIS_ LPD3DVECTOR lpvOrientFront, LPD3DVECTOR lpvOrientTop) PURE;
00963     STDMETHOD(GetPosition)(THIS_ LPD3DVECTOR lpvPosition) PURE;
00964     STDMETHOD(GetRolloffFactor)(THIS_ LPD3DVALUE lpflRolloffFactor) PURE;
00965     STDMETHOD(GetVelocity)(THIS_ LPD3DVECTOR lpvVelocity) PURE;
00966     STDMETHOD(SetAllParameters)(THIS_ LPCDS3DLISTENER lpcListener, DWORD dwApply) PURE;
00967     STDMETHOD(SetDistanceFactor)(THIS_ D3DVALUE flDistanceFactor, DWORD dwApply) PURE;
00968     STDMETHOD(SetDopplerFactor)(THIS_ D3DVALUE flDopplerFactor, DWORD dwApply) PURE;
00969     STDMETHOD(SetOrientation)(THIS_ D3DVALUE xFront, D3DVALUE yFront, D3DVALUE zFront, D3DVALUE xTop, D3DVALUE yTop, D3DVALUE zTop, DWORD dwApply) PURE;
00970     STDMETHOD(SetPosition)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
00971     STDMETHOD(SetRolloffFactor)(THIS_ D3DVALUE flRolloffFactor, DWORD dwApply) PURE;
00972     STDMETHOD(SetVelocity)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
00973     STDMETHOD(CommitDeferredSettings)(THIS) PURE;
00974 };
00975 #undef INTERFACE
00976 
00977 #if !defined(__cplusplus) || defined(CINTERFACE)
00978 /*** IUnknown methods ***/
00979 #define IDirectSound3DListener_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00980 #define IDirectSound3DListener_AddRef(p)             (p)->lpVtbl->AddRef(p)
00981 #define IDirectSound3DListener_Release(p)            (p)->lpVtbl->Release(p)
00982 /*** IDirectSound3DListener methods ***/
00983 #define IDirectSound3DListener_GetAllParameters(p,a)           (p)->lpVtbl->GetAllParameters(p,a)
00984 #define IDirectSound3DListener_GetDistanceFactor(p,a)          (p)->lpVtbl->GetDistanceFactor(p,a)
00985 #define IDirectSound3DListener_GetDopplerFactor(p,a)           (p)->lpVtbl->GetDopplerFactor(p,a)
00986 #define IDirectSound3DListener_GetOrientation(p,a,b)           (p)->lpVtbl->GetOrientation(p,a,b)
00987 #define IDirectSound3DListener_GetPosition(p,a)                (p)->lpVtbl->GetPosition(p,a)
00988 #define IDirectSound3DListener_GetRolloffFactor(p,a)           (p)->lpVtbl->GetRolloffFactor(p,a)
00989 #define IDirectSound3DListener_GetVelocity(p,a)                (p)->lpVtbl->GetVelocity(p,a)
00990 #define IDirectSound3DListener_SetAllParameters(p,a,b)         (p)->lpVtbl->SetAllParameters(p,a,b)
00991 #define IDirectSound3DListener_SetDistanceFactor(p,a,b)        (p)->lpVtbl->SetDistanceFactor(p,a,b)
00992 #define IDirectSound3DListener_SetDopplerFactor(p,a,b)         (p)->lpVtbl->SetDopplerFactor(p,a,b)
00993 #define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
00994 #define IDirectSound3DListener_SetPosition(p,a,b,c,d)          (p)->lpVtbl->SetPosition(p,a,b,c,d)
00995 #define IDirectSound3DListener_SetRolloffFactor(p,a,b)         (p)->lpVtbl->SetRolloffFactor(p,a,b)
00996 #define IDirectSound3DListener_SetVelocity(p,a,b,c,d)          (p)->lpVtbl->SetVelocity(p,a,b,c,d)
00997 #define IDirectSound3DListener_CommitDeferredSettings(p)       (p)->lpVtbl->CommitDeferredSettings(p)
00998 #else
00999 /*** IUnknown methods ***/
01000 #define IDirectSound3DListener_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
01001 #define IDirectSound3DListener_AddRef(p)             (p)->AddRef()
01002 #define IDirectSound3DListener_Release(p)            (p)->Release()
01003 /*** IDirectSound3DListener methods ***/
01004 #define IDirectSound3DListener_GetAllParameters(p,a)           (p)->GetAllParameters(a)
01005 #define IDirectSound3DListener_GetDistanceFactor(p,a)          (p)->GetDistanceFactor(a)
01006 #define IDirectSound3DListener_GetDopplerFactor(p,a)           (p)->GetDopplerFactor(a)
01007 #define IDirectSound3DListener_GetOrientation(p,a,b)           (p)->GetOrientation(a,b)
01008 #define IDirectSound3DListener_GetPosition(p,a)                (p)->GetPosition(a)
01009 #define IDirectSound3DListener_GetRolloffFactor(p,a)           (p)->GetRolloffFactor(a)
01010 #define IDirectSound3DListener_GetVelocity(p,a)                (p)->GetVelocity(a)
01011 #define IDirectSound3DListener_SetAllParameters(p,a,b)         (p)->SetAllParameters(a,b)
01012 #define IDirectSound3DListener_SetDistanceFactor(p,a,b)        (p)->SetDistanceFactor(a,b)
01013 #define IDirectSound3DListener_SetDopplerFactor(p,a,b)         (p)->SetDopplerFactor(a,b)
01014 #define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->SetOrientation(a,b,c,d,e,f,g)
01015 #define IDirectSound3DListener_SetPosition(p,a,b,c,d)          (p)->SetPosition(a,b,c,d)
01016 #define IDirectSound3DListener_SetRolloffFactor(p,a,b)         (p)->SetRolloffFactor(a,b)
01017 #define IDirectSound3DListener_SetVelocity(p,a,b,c,d)          (p)->SetVelocity(a,b,c,d)
01018 #define IDirectSound3DListener_CommitDeferredSettings(p)       (p)->CommitDeferredSettings()
01019 #endif
01020 
01021 
01022 /*****************************************************************************
01023  * IDirectSound3DBuffer interface
01024  */
01025 typedef struct  _DS3DBUFFER {
01026     DWORD               dwSize;
01027     D3DVECTOR           vPosition;
01028     D3DVECTOR           vVelocity;
01029     DWORD               dwInsideConeAngle;
01030     DWORD               dwOutsideConeAngle;
01031     D3DVECTOR           vConeOrientation;
01032     LONG                lConeOutsideVolume;
01033     D3DVALUE            flMinDistance;
01034     D3DVALUE            flMaxDistance;
01035     DWORD               dwMode;
01036 } DS3DBUFFER, *LPDS3DBUFFER;
01037 
01038 typedef const DS3DBUFFER *LPCDS3DBUFFER;
01039 
01040 #define INTERFACE IDirectSound3DBuffer
01041 DECLARE_INTERFACE_(IDirectSound3DBuffer,IUnknown)
01042 {
01043     /*** IUnknown methods ***/
01044     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01045     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01046     STDMETHOD_(ULONG,Release)(THIS) PURE;
01047     /*** IDirectSound3DBuffer methods ***/
01048     STDMETHOD(GetAllParameters)(THIS_ LPDS3DBUFFER lpDs3dBuffer) PURE;
01049     STDMETHOD(GetConeAngles)(THIS_ LPDWORD lpdwInsideConeAngle, LPDWORD lpdwOutsideConeAngle) PURE;
01050     STDMETHOD(GetConeOrientation)(THIS_ LPD3DVECTOR lpvOrientation) PURE;
01051     STDMETHOD(GetConeOutsideVolume)(THIS_ LPLONG lplConeOutsideVolume) PURE;
01052     STDMETHOD(GetMaxDistance)(THIS_ LPD3DVALUE lpflMaxDistance) PURE;
01053     STDMETHOD(GetMinDistance)(THIS_ LPD3DVALUE lpflMinDistance) PURE;
01054     STDMETHOD(GetMode)(THIS_ LPDWORD lpwdMode) PURE;
01055     STDMETHOD(GetPosition)(THIS_ LPD3DVECTOR lpvPosition) PURE;
01056     STDMETHOD(GetVelocity)(THIS_ LPD3DVECTOR lpvVelocity) PURE;
01057     STDMETHOD(SetAllParameters)(THIS_ LPCDS3DBUFFER lpcDs3dBuffer, DWORD dwApply) PURE;
01058     STDMETHOD(SetConeAngles)(THIS_ DWORD dwInsideConeAngle, DWORD dwOutsideConeAngle, DWORD dwApply) PURE;
01059     STDMETHOD(SetConeOrientation)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
01060     STDMETHOD(SetConeOutsideVolume)(THIS_ LONG lConeOutsideVolume, DWORD dwApply) PURE;
01061     STDMETHOD(SetMaxDistance)(THIS_ D3DVALUE flMaxDistance, DWORD dwApply) PURE;
01062     STDMETHOD(SetMinDistance)(THIS_ D3DVALUE flMinDistance, DWORD dwApply) PURE;
01063     STDMETHOD(SetMode)(THIS_ DWORD dwMode, DWORD dwApply) PURE;
01064     STDMETHOD(SetPosition)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
01065     STDMETHOD(SetVelocity)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
01066 };
01067 #undef INTERFACE
01068 
01069 #if !defined(__cplusplus) || defined(CINTERFACE)
01070 /*** IUnknown methods ***/
01071 #define IDirectSound3DBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
01072 #define IDirectSound3DBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
01073 #define IDirectSound3DBuffer_Release(p)            (p)->lpVtbl->Release(p)
01074 /*** IDirectSound3DBuffer methods ***/
01075 #define IDirectSound3DBuffer_GetAllParameters(p,a)         (p)->lpVtbl->GetAllParameters(p,a)
01076 #define IDirectSound3DBuffer_GetConeAngles(p,a,b)          (p)->lpVtbl->GetConeAngles(p,a,b)
01077 #define IDirectSound3DBuffer_GetConeOrientation(p,a)       (p)->lpVtbl->GetConeOrientation(p,a)
01078 #define IDirectSound3DBuffer_GetConeOutsideVolume(p,a)     (p)->lpVtbl->GetConeOutsideVolume(p,a)
01079 #define IDirectSound3DBuffer_GetMaxDistance(p,a)           (p)->lpVtbl->GetMaxDistance(p,a)
01080 #define IDirectSound3DBuffer_GetMinDistance(p,a)           (p)->lpVtbl->GetMinDistance(p,a)
01081 #define IDirectSound3DBuffer_GetMode(p,a)                  (p)->lpVtbl->GetMode(p,a)
01082 #define IDirectSound3DBuffer_GetPosition(p,a)              (p)->lpVtbl->GetPosition(p,a)
01083 #define IDirectSound3DBuffer_GetVelocity(p,a)              (p)->lpVtbl->GetVelocity(p,a)
01084 #define IDirectSound3DBuffer_SetAllParameters(p,a,b)       (p)->lpVtbl->SetAllParameters(p,a,b)
01085 #define IDirectSound3DBuffer_SetConeAngles(p,a,b)          (p)->lpVtbl->SetConeAngles(p,a,b)
01086 #define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->lpVtbl->SetConeOrientation(p,a,b,c,d)
01087 #define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b)   (p)->lpVtbl->SetConeOutsideVolume(p,a,b)
01088 #define IDirectSound3DBuffer_SetMaxDistance(p,a,b)         (p)->lpVtbl->SetMaxDistance(p,a,b)
01089 #define IDirectSound3DBuffer_SetMinDistance(p,a,b)         (p)->lpVtbl->SetMinDistance(p,a,b)
01090 #define IDirectSound3DBuffer_SetMode(p,a,b)                (p)->lpVtbl->SetMode(p,a,b)
01091 #define IDirectSound3DBuffer_SetPosition(p,a,b,c,d)        (p)->lpVtbl->SetPosition(p,a,b,c,d)
01092 #define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d)        (p)->lpVtbl->SetVelocity(p,a,b,c,d)
01093 #else
01094 /*** IUnknown methods ***/
01095 #define IDirectSound3DBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
01096 #define IDirectSound3DBuffer_AddRef(p)             (p)->AddRef()
01097 #define IDirectSound3DBuffer_Release(p)            (p)->Release()
01098 /*** IDirectSound3DBuffer methods ***/
01099 #define IDirectSound3DBuffer_GetAllParameters(p,a)         (p)->GetAllParameters(a)
01100 #define IDirectSound3DBuffer_GetConeAngles(p,a,b)          (p)->GetConeAngles(a,b)
01101 #define IDirectSound3DBuffer_GetConeOrientation(p,a)       (p)->GetConeOrientation(a)
01102 #define IDirectSound3DBuffer_GetConeOutsideVolume(p,a)     (p)->GetConeOutsideVolume(a)
01103 #define IDirectSound3DBuffer_GetMaxDistance(p,a)           (p)->GetMaxDistance(a)
01104 #define IDirectSound3DBuffer_GetMinDistance(p,a)           (p)->GetMinDistance(a)
01105 #define IDirectSound3DBuffer_GetMode(p,a)                  (p)->GetMode(a)
01106 #define IDirectSound3DBuffer_GetPosition(p,a)              (p)->GetPosition(a)
01107 #define IDirectSound3DBuffer_GetVelocity(p,a)              (p)->GetVelocity(a)
01108 #define IDirectSound3DBuffer_SetAllParameters(p,a,b)       (p)->SetAllParameters(a,b)
01109 #define IDirectSound3DBuffer_SetConeAngles(p,a,b)          (p)->SetConeAngles(a,b)
01110 #define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->SetConeOrientation(a,b,c,d)
01111 #define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b)   (p)->SetConeOutsideVolume(a,b)
01112 #define IDirectSound3DBuffer_SetMaxDistance(p,a,b)         (p)->SetMaxDistance(a,b)
01113 #define IDirectSound3DBuffer_SetMinDistance(p,a,b)         (p)->SetMinDistance(a,b)
01114 #define IDirectSound3DBuffer_SetMode(p,a,b)                (p)->SetMode(a,b)
01115 #define IDirectSound3DBuffer_SetPosition(p,a,b,c,d)        (p)->SetPosition(a,b,c,d)
01116 #define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d)        (p)->SetVelocity(a,b,c,d)
01117 #endif
01118 
01119 /*****************************************************************************
01120  * IKsPropertySet interface
01121  */
01122 #ifndef _IKsPropertySet_
01123 #define _IKsPropertySet_
01124 
01125 typedef struct IKsPropertySet *LPKSPROPERTYSET;
01126 
01127 DEFINE_GUID(IID_IKsPropertySet,0x31EFAC30,0x515C,0x11D0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93);
01128 
01129 #define KSPROPERTY_SUPPORT_GET  1
01130 #define KSPROPERTY_SUPPORT_SET  2
01131 
01132 #define INTERFACE IKsPropertySet
01133 DECLARE_INTERFACE_(IKsPropertySet,IUnknown)
01134 {
01135     /*** IUnknown methods ***/
01136     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01137     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01138     STDMETHOD_(ULONG,Release)(THIS) PURE;
01139     /*** IKsPropertySet methods ***/
01140     STDMETHOD(Get)(THIS_ REFGUID rgid,ULONG x1,LPVOID p1,ULONG x2,LPVOID p2,ULONG x3,ULONG *px4) PURE;
01141     STDMETHOD(Set)(THIS_ REFGUID rgid,ULONG x1,LPVOID p1,ULONG x2,LPVOID p2,ULONG x3) PURE;
01142     STDMETHOD(QuerySupport)(THIS_ REFGUID rgid,ULONG x1,ULONG *px2) PURE;
01143 };
01144 #undef INTERFACE
01145 
01146 #if !defined(__cplusplus) || defined(CINTERFACE)
01147 /*** IUnknown methods ***/
01148 #define IKsPropertySet_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
01149 #define IKsPropertySet_AddRef(p)                (p)->lpVtbl->AddRef(p)
01150 #define IKsPropertySet_Release(p)               (p)->lpVtbl->Release(p)
01151 /*** IKsPropertySet methods ***/
01152 #define IKsPropertySet_Get(p,a,b,c,d,e,f,g)     (p)->lpVtbl->Get(p,a,b,c,d,e,f,g)
01153 #define IKsPropertySet_Set(p,a,b,c,d,e,f)       (p)->lpVtbl->Set(p,a,b,c,d,e,f)
01154 #define IKsPropertySet_QuerySupport(p,a,b,c)    (p)->lpVtbl->QuerySupport(p,a,b,c)
01155 #else
01156 /*** IUnknown methods ***/
01157 #define IKsPropertySet_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
01158 #define IKsPropertySet_AddRef(p)                (p)->AddRef()
01159 #define IKsPropertySet_Release(p)               (p)->Release()
01160 /*** IKsPropertySet methods ***/
01161 #define IKsPropertySet_Get(p,a,b,c,d,e,f,g)     (p)->Get(a,b,c,d,e,f,g)
01162 #define IKsPropertySet_Set(p,a,b,c,d,e,f)       (p)->Set(a,b,c,d,e,f)
01163 #define IKsPropertySet_QuerySupport(p,a,b,c)    (p)->QuerySupport(a,b,c)
01164 #endif
01165 
01166 #endif /* _IKsPropertySet_ */
01167 
01168 /*****************************************************************************
01169  * IDirectSoundFullDuplex interface
01170  */
01171 #define INTERFACE IDirectSoundFullDuplex
01172 DECLARE_INTERFACE_(IDirectSoundFullDuplex,IUnknown)
01173 {
01174     /*** IUnknown methods ***/
01175     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01176     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01177     STDMETHOD_(ULONG,Release)(THIS) PURE;
01178     /*** IDirectSoundFullDuplex methods ***/
01179     STDMETHOD(Initialize)(THIS_ LPCGUID pCaptureGuid,LPCGUID pRendererGuid,LPCDSCBUFFERDESC lpDscBufferDesc,LPCDSBUFFERDESC lpDsBufferDesc,HWND hWnd,DWORD dwLevel,LPLPDIRECTSOUNDCAPTUREBUFFER8 lplpDirectSoundCaptureBuffer8,LPLPDIRECTSOUNDBUFFER8 lplpDirectSoundBuffer8) PURE;
01180 };
01181 #undef INTERFACE
01182 
01183 #if !defined(__cplusplus) || defined(CINTERFACE)
01184 /*** IUnknown methods ***/
01185 #define IDirectSoundFullDuplex_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
01186 #define IDirectSoundFullDuplex_AddRef(p)                (p)->lpVtbl->AddRef(p)
01187 #define IDirectSoundFullDuplex_Release(p)               (p)->lpVtbl->Release(p)
01188 /*** IDirectSoundFullDuplex methods ***/
01189 #define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h)    (p)->lpVtbl->Initialize(p,a,b,c,d,e,f,g,h)
01190 #else
01191 /*** IUnknown methods ***/
01192 #define IDirectSoundFullDuplex_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
01193 #define IDirectSoundFullDuplex_AddRef(p)                (p)->AddRef()
01194 #define IDirectSoundFullDuplex_Release(p)               (p)->Release()
01195 /*** IDirectSoundFullDuplex methods ***/
01196 #define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h)    (p)->Initialize(a,b,c,d,e,f,g,h)
01197 #endif
01198 
01199 #ifdef __cplusplus
01200 } /* extern "C" */
01201 #endif /* defined(__cplusplus) */
01202 
01203 #endif /* __WINE_DSOUND_H */

Generated on Sat May 26 2012 04:30:07 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.