PortAudio  2.0
pa_win_ds_dynlink.h
Go to the documentation of this file.
1 /*
2  * Interface for dynamically loading directsound and providing a dummy
3  * implementation if it isn't present.
4  *
5  * Author: Ross Bencina (some portions Phil Burk & Robert Marsanyi)
6  *
7  * For PortAudio Portable Real-Time Audio Library
8  * For more information see: http://www.portaudio.com
9  * Copyright (c) 1999-2006 Phil Burk, Robert Marsanyi and Ross Bencina
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining
12  * a copy of this software and associated documentation files
13  * (the "Software"), to deal in the Software without restriction,
14  * including without limitation the rights to use, copy, modify, merge,
15  * publish, distribute, sublicense, and/or sell copies of the Software,
16  * and to permit persons to whom the Software is furnished to do so,
17  * subject to the following conditions:
18  *
19  * The above copyright notice and this permission notice shall be
20  * included in all copies or substantial portions of the Software.
21  *
22  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
25  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
26  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
27  * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29  */
30 
31 /*
32  * The text above constitutes the entire PortAudio license; however,
33  * the PortAudio community also makes the following non-binding requests:
34  *
35  * Any person wishing to distribute modifications to the Software is
36  * requested to send the modifications to the original developer so that
37  * they can be incorporated into the canonical version. It is also
38  * requested that these non-binding requests be included along with the
39  * license above.
40  */
41 
47 #ifndef INCLUDED_PA_DSOUND_DYNLINK_H
48 #define INCLUDED_PA_DSOUND_DYNLINK_H
49 
50 /* on Borland compilers, WIN32 doesn't seem to be defined by default, which
51  breaks dsound.h. Adding the define here fixes the problem. - rossb. */
52 #ifdef __BORLANDC__
53 #if !defined(WIN32)
54 #define WIN32
55 #endif
56 #endif
57 
58 /*
59  Use the earliest version of DX required, no need to pollute the namespace
60 */
61 #ifdef PAWIN_USE_DIRECTSOUNDFULLDUPLEXCREATE
62 #define DIRECTSOUND_VERSION 0x0800
63 #else
64 #define DIRECTSOUND_VERSION 0x0300
65 #endif
66 #include <dsound.h>
67 
68 #ifdef __cplusplus
69 extern "C"
70 {
71 #endif /* __cplusplus */
72 
73 
74 typedef struct
75 {
76  HINSTANCE hInstance_;
77 
78  HRESULT (WINAPI *DllGetClassObject)(REFCLSID , REFIID , LPVOID *);
79 
80  HRESULT (WINAPI *DirectSoundCreate)(LPGUID, LPDIRECTSOUND *, LPUNKNOWN);
81  HRESULT (WINAPI *DirectSoundEnumerateW)(LPDSENUMCALLBACKW, LPVOID);
82  HRESULT (WINAPI *DirectSoundEnumerateA)(LPDSENUMCALLBACKA, LPVOID);
83 
84  HRESULT (WINAPI *DirectSoundCaptureCreate)(LPGUID, LPDIRECTSOUNDCAPTURE *, LPUNKNOWN);
85  HRESULT (WINAPI *DirectSoundCaptureEnumerateW)(LPDSENUMCALLBACKW, LPVOID);
86  HRESULT (WINAPI *DirectSoundCaptureEnumerateA)(LPDSENUMCALLBACKA, LPVOID);
87 
88 #ifdef PAWIN_USE_DIRECTSOUNDFULLDUPLEXCREATE
89  HRESULT (WINAPI *DirectSoundFullDuplexCreate8)(
90  LPCGUID, LPCGUID, LPCDSCBUFFERDESC, LPCDSBUFFERDESC,
91  HWND, DWORD, LPDIRECTSOUNDFULLDUPLEX *, LPDIRECTSOUNDCAPTUREBUFFER8 *,
92  LPDIRECTSOUNDBUFFER8 *, LPUNKNOWN );
93 #endif
95 
97 
100 
101 
102 #ifdef __cplusplus
103 }
104 #endif /* __cplusplus */
105 
106 #endif /* INCLUDED_PA_DSOUND_DYNLINK_H */
LPVOID
Definition: pa_win_ds_dynlink.h:81
const GUID * LPCGUID
Definition: pa_win_wasapi.c:151
Definition: pa_win_ds_dynlink.h:74
REFIID
Definition: pa_win_ds_dynlink.h:78
#define WINAPI
Definition: pa_win_wasapi.c:124
LPVOID LPDIRECTSOUND LPUNKNOWN
Definition: pa_win_ds_dynlink.h:80
LPDIRECTSOUNDCAPTURE LPUNKNOWN
Definition: pa_win_ds_dynlink.h:84
HINSTANCE hInstance_
Definition: pa_win_ds_dynlink.h:76