comdlg32: Use a helper to update the devmode handle.
[wine] / include / dsconf.h
1 /*
2  * Copyright (C) 2003 Robert Reif
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 #ifndef __WINE_DSCONF_H
20 #define __WINE_DSCONF_H
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif /* defined(__cplusplus) */
25
26 /*****************************************************************************
27  * Predeclare the interfaces
28  */
29 DEFINE_GUID(CLSID_DirectSoundPrivate,           0x11ab3ec0,0x25ec,0x11d1,0xa4,0xd8,0x00,0xc0,0x4f,0xc2,0x8a,0xca);
30
31 DEFINE_GUID(DSPROPSETID_DirectSoundDevice,      0x84624f82,0x25ec,0x11d1,0xa4,0xd8,0x00,0xc0,0x4f,0xc2,0x8a,0xca);
32
33 typedef enum
34 {
35         DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A = 1,
36         DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1       = 2,
37         DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1         = 3,
38         DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W = 4,
39         DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A       = 5,
40         DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W       = 6,
41         DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A         = 7,
42         DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W         = 8,
43 } DSPROPERTY_DIRECTSOUNDDEVICE;
44
45 #ifdef UNICODE
46 #define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING  DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W
47 #define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION        DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W
48 #define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE          DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W
49 #else
50 #define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING  DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A
51 #define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION        DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A
52 #define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE          DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A
53 #endif
54
55 typedef enum
56 {
57         DIRECTSOUNDDEVICE_TYPE_EMULATED,
58         DIRECTSOUNDDEVICE_TYPE_VXD,
59         DIRECTSOUNDDEVICE_TYPE_WDM
60 } DIRECTSOUNDDEVICE_TYPE;
61
62 typedef enum
63 {
64         DIRECTSOUNDDEVICE_DATAFLOW_RENDER,
65         DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE
66 } DIRECTSOUNDDEVICE_DATAFLOW;
67
68 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA
69 {
70         LPSTR                           DeviceName;
71         DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
72         GUID                            DeviceId;
73 } DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA;
74
75 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA
76 {
77         LPWSTR                          DeviceName;
78         DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
79         GUID                            DeviceId;
80 } DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA;
81
82 #ifdef UNICODE
83 #define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA     DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA
84 #define PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA    PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA
85 #else
86 #define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA     DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA
87 #define PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA    PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA
88 #endif
89
90 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA
91 {
92         GUID                            DeviceId;
93         CHAR                            DescriptionA[0x100];
94         WCHAR                           DescriptionW[0x100];
95         CHAR                            ModuleA[MAX_PATH];
96         WCHAR                           ModuleW[MAX_PATH];
97         DIRECTSOUNDDEVICE_TYPE          Type;
98         DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
99         ULONG                           WaveDeviceId;
100         ULONG                           Devnode;
101 } DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA;
102
103 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA
104 {
105         DIRECTSOUNDDEVICE_TYPE          Type;
106         DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
107         GUID                            DeviceId;
108         LPSTR                           Description;
109         LPSTR                           Module;
110         LPSTR                           Interface;
111         ULONG                           WaveDeviceId;
112 } DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA;
113
114 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA
115 {
116         DIRECTSOUNDDEVICE_TYPE          Type;
117         DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
118         GUID                            DeviceId;
119         LPWSTR                          Description;
120         LPWSTR                          Module;
121         LPWSTR                          Interface;
122         ULONG                           WaveDeviceId;
123 } DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA;
124
125 #ifdef UNICODE
126 #define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA   DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA
127 #define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA  PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA
128 #else
129 #define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA   DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA
130 #define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA  PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA
131 #endif
132
133 typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA, LPVOID);
134 typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA, LPVOID);
135 typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA, LPVOID);
136
137 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA
138 {
139         LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1 Callback;
140         LPVOID                                  Context;
141 } DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA;
142
143 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA
144 {
145         LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA Callback;
146         LPVOID                                  Context;
147 } DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA;
148
149 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA
150 {
151         LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW Callback;
152         LPVOID                                  Context;
153 } DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA;
154
155 #ifdef UNICODE
156 #define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA     DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA
157 #define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA    PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA
158 #else
159 #define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA     DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA
160 #define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA    PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA
161 #endif
162
163 #ifdef __cplusplus
164 } /* extern "C" */
165 #endif /* defined(__cplusplus) */
166
167 #endif /* __WINE_DSCONF_H */