master
  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
 23extern "C" {
 24#endif /* defined(__cplusplus) */
 25
 26/*****************************************************************************
 27 * Predeclare the interfaces
 28 */
 29DEFINE_GUID(CLSID_DirectSoundPrivate,           0x11ab3ec0,0x25ec,0x11d1,0xa4,0xd8,0x00,0xc0,0x4f,0xc2,0x8a,0xca);
 30
 31DEFINE_GUID(DSPROPSETID_DirectSoundDevice,      0x84624f82,0x25ec,0x11d1,0xa4,0xd8,0x00,0xc0,0x4f,0xc2,0x8a,0xca);
 32
 33typedef 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
 55typedef enum
 56{
 57        DIRECTSOUNDDEVICE_TYPE_EMULATED,
 58        DIRECTSOUNDDEVICE_TYPE_VXD,
 59        DIRECTSOUNDDEVICE_TYPE_WDM
 60} DIRECTSOUNDDEVICE_TYPE;
 61
 62typedef enum
 63{
 64        DIRECTSOUNDDEVICE_DATAFLOW_RENDER,
 65        DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE
 66} DIRECTSOUNDDEVICE_DATAFLOW;
 67
 68typedef 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
 75typedef 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
 90typedef 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
103typedef 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
114typedef 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
133typedef WINBOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA, LPVOID);
134typedef WINBOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA, LPVOID);
135typedef WINBOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA, LPVOID);
136
137typedef 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
143typedef 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
149typedef 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 */