Home | History | Annotate | Download | only in include
      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 #define __DSCONF_INCLUDED__
     22 
     23 #ifdef __cplusplus
     24 extern "C" {
     25 #endif /* defined(__cplusplus) */
     26 
     27 /*****************************************************************************
     28  * Predeclare the interfaces
     29  */
     30 DEFINE_GUID(CLSID_DirectSoundPrivate,           0x11ab3ec0,0x25ec,0x11d1,0xa4,0xd8,0x00,0xc0,0x4f,0xc2,0x8a,0xca);
     31 
     32 DEFINE_GUID(DSPROPSETID_DirectSoundDevice,      0x84624f82,0x25ec,0x11d1,0xa4,0xd8,0x00,0xc0,0x4f,0xc2,0x8a,0xca);
     33 
     34 typedef enum
     35 {
     36         DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A = 1,
     37         DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1       = 2,
     38         DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1         = 3,
     39         DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W = 4,
     40         DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A       = 5,
     41         DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W       = 6,
     42         DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A         = 7,
     43         DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W         = 8,
     44 } DSPROPERTY_DIRECTSOUNDDEVICE;
     45 
     46 #ifdef UNICODE
     47 #define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING  DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W
     48 #define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION        DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W
     49 #define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE          DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W
     50 #else
     51 #define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING  DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A
     52 #define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION        DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A
     53 #define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE          DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A
     54 #endif
     55 
     56 typedef enum
     57 {
     58         DIRECTSOUNDDEVICE_TYPE_EMULATED,
     59         DIRECTSOUNDDEVICE_TYPE_VXD,
     60         DIRECTSOUNDDEVICE_TYPE_WDM
     61 } DIRECTSOUNDDEVICE_TYPE;
     62 
     63 typedef enum
     64 {
     65         DIRECTSOUNDDEVICE_DATAFLOW_RENDER,
     66         DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE
     67 } DIRECTSOUNDDEVICE_DATAFLOW;
     68 
     69 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA
     70 {
     71         LPSTR                           DeviceName;
     72         DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
     73         GUID                            DeviceId;
     74 } DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA;
     75 
     76 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA
     77 {
     78         LPWSTR                          DeviceName;
     79         DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
     80         GUID                            DeviceId;
     81 } DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA;
     82 
     83 #ifdef UNICODE
     84 #define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA     DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA
     85 #define PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA    PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA
     86 #else
     87 #define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA     DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA
     88 #define PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA    PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA
     89 #endif
     90 
     91 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA
     92 {
     93         GUID                            DeviceId;
     94         CHAR                            DescriptionA[0x100];
     95         WCHAR                           DescriptionW[0x100];
     96         CHAR                            ModuleA[MAX_PATH];
     97         WCHAR                           ModuleW[MAX_PATH];
     98         DIRECTSOUNDDEVICE_TYPE          Type;
     99         DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
    100         ULONG                           WaveDeviceId;
    101         ULONG                           Devnode;
    102 } DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA;
    103 
    104 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA
    105 {
    106         DIRECTSOUNDDEVICE_TYPE          Type;
    107         DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
    108         GUID                            DeviceId;
    109         LPSTR                           Description;
    110         LPSTR                           Module;
    111         LPSTR                           Interface;
    112         ULONG                           WaveDeviceId;
    113 } DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA;
    114 
    115 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA
    116 {
    117         DIRECTSOUNDDEVICE_TYPE          Type;
    118         DIRECTSOUNDDEVICE_DATAFLOW      DataFlow;
    119         GUID                            DeviceId;
    120         LPWSTR                          Description;
    121         LPWSTR                          Module;
    122         LPWSTR                          Interface;
    123         ULONG                           WaveDeviceId;
    124 } DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA;
    125 
    126 #ifdef UNICODE
    127 #define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA   DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA
    128 #define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA  PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA
    129 #else
    130 #define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA   DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA
    131 #define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA  PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA
    132 #endif
    133 
    134 typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA, LPVOID);
    135 typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA, LPVOID);
    136 typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA, LPVOID);
    137 
    138 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA
    139 {
    140         LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1 Callback;
    141         LPVOID                                  Context;
    142 } DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA;
    143 
    144 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA
    145 {
    146         LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA Callback;
    147         LPVOID                                  Context;
    148 } DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA;
    149 
    150 typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA
    151 {
    152         LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW Callback;
    153         LPVOID                                  Context;
    154 } DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA;
    155 
    156 #ifdef UNICODE
    157 #define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA     DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA
    158 #define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA    PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA
    159 #else
    160 #define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA     DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA
    161 #define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA    PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA
    162 #endif
    163 
    164 #ifdef __cplusplus
    165 } /* extern "C" */
    166 #endif /* defined(__cplusplus) */
    167 
    168 #endif /* __WINE_DSCONF_H */
    169