Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

533 lines
24 KiB

  1. /*==========================================================================;
  2. *
  3. * Copyright (c) Microsoft Corporation. All rights reserved.
  4. *
  5. * File: dsconf.h
  6. * Content: DirectSound configuration interface include file
  7. *@@BEGIN_MSINTERNAL
  8. * History:
  9. * Date By Reason
  10. * ==== == ======
  11. * 8/19/1998 dereks Created.
  12. * 10/3/2001 duganp Added the comments below.
  13. *
  14. * Description:
  15. *
  16. * This file provides an internal interface to certain parts of
  17. * DirectSound's state and configuration, for use by other groups
  18. * within Microsoft. Currently it is used by RTC, DirectPlayVoice,
  19. * mmsys.cpl, dxdiag.exe, and various internal test apps.
  20. *
  21. * There is sample code demonstrating how to use this interface in
  22. * multimedia\directx\dsound\dsound\dsmgr.
  23. *
  24. * This interface is not public because it provides some low-level
  25. * "plumbing" functionality which is only of use to other MS APIs
  26. * that interact with DirectSound. Eventually this functionality
  27. * will be rolled into new audio APIs and the need for backdoors
  28. * will disappear.
  29. *
  30. * IMPORTANT NOTE: If you plan to use this interface, watch out for
  31. * the two CONFLICTING definitions of IKsPropertySet in our headers.
  32. * The correct IKsPropertySet has a Get() method first and then a
  33. * Set() method (as defined in dsound.h and various other places).
  34. * The other IKsPropertySet has Set() before Get() (as defined in
  35. * ksproxy.h and various other places). If you pull in the wrong
  36. * definition of IKsPropertySet, your vtable won't match dsound's
  37. * and your method calls will fail.
  38. *
  39. *@@END_MSINTERNAL
  40. *
  41. **************************************************************************/
  42. #ifndef __DSCONF_INCLUDED__
  43. #define __DSCONF_INCLUDED__
  44. #ifndef __DSOUND_INCLUDED__
  45. #error dsound.h not included
  46. #endif // __DSOUND_INCLUDED__
  47. #ifdef __cplusplus
  48. extern "C" {
  49. #endif // __cplusplus
  50. // DirectSound Private Component GUID {11AB3EC0-25EC-11d1-A4D8-00C04FC28ACA}
  51. DEFINE_GUID(CLSID_DirectSoundPrivate, 0x11ab3ec0, 0x25ec, 0x11d1, 0xa4, 0xd8, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca);
  52. //@@BEGIN_MSINTERNAL
  53. //
  54. // DirectSound Mixer Properties {84624F80-25EC-11d1-A4D8-00C04FC28ACA}
  55. //
  56. DEFINE_GUID(DSPROPSETID_DirectSoundMixer, 0x84624f80, 0x25ec, 0x11d1, 0xa4, 0xd8, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca);
  57. typedef enum
  58. {
  59. DSPROPERTY_DIRECTSOUNDMIXER_SRCQUALITY,
  60. DSPROPERTY_DIRECTSOUNDMIXER_ACCELERATION,
  61. } DSPROPERTY_DIRECTSOUNDMIXER;
  62. typedef enum
  63. {
  64. DIRECTSOUNDMIXER_SRCQUALITY_WORST,
  65. DIRECTSOUNDMIXER_SRCQUALITY_PC,
  66. DIRECTSOUNDMIXER_SRCQUALITY_BASIC,
  67. DIRECTSOUNDMIXER_SRCQUALITY_ADVANCED,
  68. } DIRECTSOUNDMIXER_SRCQUALITY;
  69. #define DIRECTSOUNDMIXER_SRCQUALITY_DEFAULT DIRECTSOUNDMIXER_SRCQUALITY_ADVANCED
  70. typedef struct _DSPROPERTY_DIRECTSOUNDMIXER_SRCQUALITY_DATA
  71. {
  72. GUID DeviceId; // DirectSound device id
  73. DIRECTSOUNDMIXER_SRCQUALITY Quality; // SRC quality
  74. } DSPROPERTY_DIRECTSOUNDMIXER_SRCQUALITY_DATA, *PDSPROPERTY_DIRECTSOUNDMIXER_SRCQUALITY_DATA;
  75. #define DIRECTSOUNDMIXER_ACCELERATIONF_NORING0MIX 0x00000001
  76. #define DIRECTSOUNDMIXER_ACCELERATIONF_NOHWBUFFERS 0x00000002
  77. #define DIRECTSOUNDMIXER_ACCELERATIONF_NOHW3D 0x00000004
  78. #define DIRECTSOUNDMIXER_ACCELERATIONF_NOHWPROPSETS 0x00000008
  79. #define DIRECTSOUNDMIXER_ACCELERATIONF_FULL 0x00000000
  80. #define DIRECTSOUNDMIXER_ACCELERATIONF_STANDARD 0x00000008
  81. #define DIRECTSOUNDMIXER_ACCELERATIONF_NONE 0x0000000F
  82. #ifdef WINNT
  83. #define DIRECTSOUNDMIXER_ACCELERATIONF_DEFAULT DIRECTSOUNDMIXER_ACCELERATIONF_STANDARD
  84. #else // WINNT
  85. #define DIRECTSOUNDMIXER_ACCELERATIONF_DEFAULT DIRECTSOUNDMIXER_ACCELERATIONF_FULL
  86. #endif // WINNT
  87. typedef struct _DSPROPERTY_DIRECTSOUNDMIXER_ACCELERATION_DATA
  88. {
  89. GUID DeviceId; // DirectSound device id
  90. ULONG Flags; // Acceleration flags
  91. } DSPROPERTY_DIRECTSOUNDMIXER_ACCELERATION_DATA, *PDSPROPERTY_DIRECTSOUNDMIXER_ACCELERATION_DATA;
  92. //@@END_MSINTERNAL
  93. //
  94. // DirectSound Device Properties {84624F82-25EC-11d1-A4D8-00C04FC28ACA}
  95. //
  96. DEFINE_GUID(DSPROPSETID_DirectSoundDevice, 0x84624f82, 0x25ec, 0x11d1, 0xa4, 0xd8, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca);
  97. typedef enum
  98. {
  99. //@@BEGIN_MSINTERNAL
  100. DSPROPERTY_DIRECTSOUNDDEVICE_PRESENCE_1 = 0,
  101. //@@END_MSINTERNAL
  102. DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A = 1,
  103. DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1 = 2,
  104. DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1 = 3,
  105. DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W = 4,
  106. DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A = 5,
  107. DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W = 6,
  108. DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A = 7,
  109. DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W = 8,
  110. //@@BEGIN_MSINTERNAL
  111. DSPROPERTY_DIRECTSOUNDDEVICE_PRESENCE = 9,
  112. DSPROPERTY_DIRECTSOUNDDEVICE_USERWAVEDEVICEMAPPING_A = 10,
  113. DSPROPERTY_DIRECTSOUNDDEVICE_USERWAVEDEVICEMAPPING_W = 11,
  114. //@@END_MSINTERNAL
  115. } DSPROPERTY_DIRECTSOUNDDEVICE;
  116. #if DIRECTSOUND_VERSION >= 0x0700
  117. #ifdef UNICODE
  118. #define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W
  119. //@@BEGIN_MSINTERNAL
  120. #define DSPROPERTY_DIRECTSOUNDDEVICE_USERWAVEDEVICEMAPPING DSPROPERTY_DIRECTSOUNDDEVICE_USERWAVEDEVICEMAPPING_W
  121. //@@END_MSINTERNAL
  122. #define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W
  123. #define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W
  124. #else // UNICODE
  125. #define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A
  126. //@@BEGIN_MSINTERNAL
  127. #define DSPROPERTY_DIRECTSOUNDDEVICE_USERWAVEDEVICEMAPPING DSPROPERTY_DIRECTSOUNDDEVICE_USERWAVEDEVICEMAPPING_A
  128. //@@END_MSINTERNAL
  129. #define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A
  130. #define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A
  131. #endif // UNICODE
  132. #else // DIRECTSOUND_VERSION >= 0x0700
  133. #define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A
  134. //@@BEGIN_MSINTERNAL
  135. #define DSPROPERTY_DIRECTSOUNDDEVICE_USERWAVEDEVICEMAPPING DSPROPERTY_DIRECTSOUNDDEVICE_USERWAVEDEVICEMAPPING_A
  136. //@@END_MSINTERNAL
  137. #define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1
  138. #define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1
  139. //@@BEGIN_MSINTERNAL
  140. #define DSPROPERTY_DIRECTSOUNDDEVICE_PRESENCE DSPROPERTY_DIRECTSOUNDDEVICE_PRESENCE_1
  141. //@@END_MSINTERNAL
  142. #endif // DIRECTSOUND_VERSION >= 0x0700
  143. typedef enum
  144. {
  145. DIRECTSOUNDDEVICE_TYPE_EMULATED,
  146. DIRECTSOUNDDEVICE_TYPE_VXD,
  147. DIRECTSOUNDDEVICE_TYPE_WDM
  148. } DIRECTSOUNDDEVICE_TYPE;
  149. typedef enum
  150. {
  151. DIRECTSOUNDDEVICE_DATAFLOW_RENDER,
  152. DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE
  153. } DIRECTSOUNDDEVICE_DATAFLOW;
  154. //@@BEGIN_MSINTERNAL
  155. typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_PRESENCE_1_DATA
  156. {
  157. GUID DeviceId; // DirectSound device id
  158. BOOL Present; // Presence switch
  159. } DSPROPERTY_DIRECTSOUNDDEVICE_PRESENCE_1_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_PRESENCE_1_DATA;
  160. typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_PRESENCE_DATA
  161. {
  162. GUID DeviceId; // DirectSound device id
  163. DIRECTSOUNDDEVICE_TYPE DeviceType; // Device type
  164. BOOL Present; // Presence switch
  165. } DSPROPERTY_DIRECTSOUNDDEVICE_PRESENCE_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_PRESENCE_DATA;
  166. #if DIRECTSOUND_VERSION < 0x0700
  167. #define DSPROPERTY_DIRECTSOUNDDEVICE_PRESENCE_DATA DSPROPERTY_DIRECTSOUNDDEVICE_PRESENCE_1_DATA
  168. #define PDSPROPERTY_DIRECTSOUNDDEVICE_PRESENCE_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_PRESENCE_1_DATA
  169. #endif // DIRECTSOUND_VERSION < 0x0700
  170. //@@END_MSINTERNAL
  171. typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA
  172. {
  173. LPSTR DeviceName; // waveIn/waveOut device name
  174. DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Data flow (i.e. waveIn or waveOut)
  175. GUID DeviceId; // DirectSound device id
  176. } DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA;
  177. //@@BEGIN_MSINTERNAL
  178. typedef DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA DSPROPERTY_DIRECTSOUNDDEVICE_USERWAVEDEVICEMAPPING_A_DATA,
  179. *PDSPROPERTY_DIRECTSOUNDDEVICE_USERWAVEDEVICEMAPPING_A_DATA;
  180. //@@END_MSINTERNAL
  181. typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA
  182. {
  183. LPWSTR DeviceName; // waveIn/waveOut device name
  184. DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Data flow (i.e. waveIn or waveOut)
  185. GUID DeviceId; // DirectSound device id
  186. } DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA;
  187. //@@BEGIN_MSINTERNAL
  188. typedef DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA DSPROPERTY_DIRECTSOUNDDEVICE_USERWAVEDEVICEMAPPING_W_DATA,
  189. *PDSPROPERTY_DIRECTSOUNDDEVICE_USERWAVEDEVICEMAPPING_W_DATA;
  190. //@@END_MSINTERNAL
  191. #ifdef UNICODE
  192. #define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA
  193. #define PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA
  194. #else // UNICODE
  195. #define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA
  196. #define PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA
  197. #endif // UNICODE
  198. typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA
  199. {
  200. GUID DeviceId; // DirectSound device id
  201. CHAR DescriptionA[0x100]; // Device description (ANSI)
  202. WCHAR DescriptionW[0x100]; // Device description (Unicode)
  203. CHAR ModuleA[MAX_PATH]; // Device driver module (ANSI)
  204. WCHAR ModuleW[MAX_PATH]; // Device driver module (Unicode)
  205. DIRECTSOUNDDEVICE_TYPE Type; // Device type
  206. DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Device dataflow
  207. ULONG WaveDeviceId; // Wave device id
  208. ULONG Devnode; // Devnode (or DevInst)
  209. } DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA;
  210. typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA
  211. {
  212. DIRECTSOUNDDEVICE_TYPE Type; // Device type
  213. DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Device dataflow
  214. GUID DeviceId; // DirectSound device id
  215. LPSTR Description; // Device description
  216. LPSTR Module; // Device driver module
  217. LPSTR Interface; // Device interface
  218. ULONG WaveDeviceId; // Wave device id
  219. } DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA;
  220. typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA
  221. {
  222. DIRECTSOUNDDEVICE_TYPE Type; // Device type
  223. DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Device dataflow
  224. GUID DeviceId; // DirectSound device id
  225. LPWSTR Description; // Device description
  226. LPWSTR Module; // Device driver module
  227. LPWSTR Interface; // Device interface
  228. ULONG WaveDeviceId; // Wave device id
  229. } DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA;
  230. #if DIRECTSOUND_VERSION >= 0x0700
  231. #ifdef UNICODE
  232. #define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA
  233. #define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA
  234. #else // UNICODE
  235. #define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA
  236. #define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA
  237. #endif // UNICODE
  238. #else // DIRECTSOUND_VERSION >= 0x0700
  239. #define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA
  240. #define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA
  241. #endif // DIRECTSOUND_VERSION >= 0x0700
  242. typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA, LPVOID);
  243. typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA, LPVOID);
  244. typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA, LPVOID);
  245. #if DIRECTSOUND_VERSION >= 0x0700
  246. #ifdef UNICODE
  247. #define LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW
  248. #else // UNICODE
  249. #define LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA
  250. #endif // UNICODE
  251. #else // DIRECTSOUND_VERSION >= 0x0700
  252. #define LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1
  253. #endif // DIRECTSOUND_VERSION >= 0x0700
  254. typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA
  255. {
  256. LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1 Callback; // Callback function pointer
  257. LPVOID Context; // Callback function context argument
  258. } DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA;
  259. typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA
  260. {
  261. LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA Callback; // Callback function pointer
  262. LPVOID Context; // Callback function context argument
  263. } DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA;
  264. typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA
  265. {
  266. LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW Callback; // Callback function pointer
  267. LPVOID Context; // Callback function context argument
  268. } DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA;
  269. #if DIRECTSOUND_VERSION >= 0x0700
  270. #ifdef UNICODE
  271. #define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA
  272. #define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA
  273. #else // UNICODE
  274. #define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA
  275. #define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA
  276. #endif // UNICODE
  277. #else // DIRECTSOUND_VERSION >= 0x0700
  278. #define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA
  279. #define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA
  280. #endif // DIRECTSOUND_VERSION >= 0x0700
  281. //@@BEGIN_MSINTERNAL
  282. //
  283. // Basic DirectSound Acceleration Properties {1AEAA606-35F0-11D1-B161-00C04FC28ACA}
  284. //
  285. DEFINE_GUID(DSPROPSETID_DirectSoundBasicAcceleration, 0x1aeaa606, 0x35f0, 0x11d1, 0xb1, 0x61, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca);
  286. typedef enum
  287. {
  288. DSPROPERTY_DIRECTSOUNDBASICACCELERATION_ACCELERATION,
  289. DSPROPERTY_DIRECTSOUNDBASICACCELERATION_DEFAULT,
  290. } DSPROPERTY_DIRECTSOUNDBASICACCELERATION;
  291. typedef enum
  292. {
  293. DIRECTSOUNDBASICACCELERATION_NONE,
  294. DIRECTSOUNDBASICACCELERATION_SAFE,
  295. DIRECTSOUNDBASICACCELERATION_STANDARD,
  296. DIRECTSOUNDBASICACCELERATION_FULL,
  297. } DIRECTSOUNDBASICACCELERATION_LEVEL;
  298. typedef struct _DSPROPERTY_DIRECTSOUNDBASICACCELERATION_ACCELERATION_DATA
  299. {
  300. GUID DeviceId; // DirectSound device id
  301. DIRECTSOUNDBASICACCELERATION_LEVEL Level; // Basic acceleration level
  302. } DSPROPERTY_DIRECTSOUNDBASICACCELERATION_ACCELERATION_DATA, *PDSPROPERTY_DIRECTSOUNDBASICACCELERATION_ACCELERATION_DATA,
  303. DSPROPERTY_DIRECTSOUNDBASICACCELERATION_DEFAULT_DATA, *PDSPROPERTY_DIRECTSOUNDBASICACCELERATION_DEFAULT_DATA;
  304. //
  305. // DirectSound Debug Properties {F2957840-260C-11d1-A4D8-00C04FC28ACA}
  306. //
  307. DEFINE_GUID(DSPROPSETID_DirectSoundDebug, 0xf2957840, 0x260c, 0x11d1, 0xa4, 0xd8, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca);
  308. typedef enum
  309. {
  310. DSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_A,
  311. DSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_W,
  312. DSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_A,
  313. DSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_W,
  314. } DSPROPERTY_DIRECTSOUNDDEBUG;
  315. #ifdef UNICODE
  316. #define DSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO DSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_W
  317. #define DSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE DSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_W
  318. #else // UNICODE
  319. #define DSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO DSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_A
  320. #define DSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE DSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_A
  321. #endif // UNICODE
  322. #define DIRECTSOUNDDEBUG_DPFINFOF_PRINTFUNCTIONNAME 0x00000001
  323. #define DIRECTSOUNDDEBUG_DPFINFOF_PRINTPROCESSTHREADID 0x00000002
  324. #define DIRECTSOUNDDEBUG_DPFINFOF_PRINTFILELINE 0x00000004
  325. #define DIRECTSOUNDDEBUG_DPFINFOF_LOGTOFILEONLY 0x00000008
  326. #define DIRECTSOUNDDEBUG_DPFINFOF_DEFAULT DIRECTSOUNDDEBUG_DPFINFOF_PRINTFUNCTIONNAME
  327. typedef struct _DSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_A_DATA
  328. {
  329. ULONG Flags; // DPF flags
  330. ULONG DpfLevel; // DPF level
  331. ULONG BreakLevel; // Break level
  332. CHAR LogFile[MAX_PATH]; // Log file
  333. } DSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_A_DATA;
  334. typedef struct _DSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_W_DATA
  335. {
  336. ULONG Flags; // DPF flags
  337. ULONG DpfLevel; // DPF level
  338. ULONG BreakLevel; // Break level
  339. WCHAR LogFile[MAX_PATH]; // Log file
  340. } DSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_W_DATA;
  341. typedef struct _DSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_A_DATA
  342. {
  343. HRESULT ResultCode; // Result code
  344. LPSTR String; // Result code in string form
  345. LPSTR Explanation; // Result code description
  346. } DSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_A_DATA;
  347. typedef struct _DSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_W_DATA
  348. {
  349. HRESULT ResultCode; // Result code
  350. LPWSTR String; // Result code in string form
  351. LPWSTR Explanation; // Result code description
  352. } DSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_W_DATA;
  353. #ifdef UNICODE
  354. #define DSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_DATA DSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_W_DATA
  355. #define PDSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_DATA PDSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_W_DATA
  356. #define DSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_DATA DSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_W_DATA
  357. #define PDSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_DATA PDSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_W_DATA
  358. #else // UNICODE
  359. #define DSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_DATA DSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_A_DATA
  360. #define PDSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_DATA PDSPROPERTY_DIRECTSOUNDDEBUG_DPFINFO_A_DATA
  361. #define DSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_DATA DSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_A_DATA
  362. #define PDSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_DATA PDSPROPERTY_DIRECTSOUNDDEBUG_TRANSLATERESULTCODE_A_DATA
  363. #endif // UNICODE
  364. #define DIRECTSOUNDDEBUG_DPFLEVEL_DEFAULT 0
  365. #define DIRECTSOUNDDEBUG_BREAKLEVEL_DEFAULT 0
  366. //
  367. // DirectSound Persistent Data {1BE55C3E-36AB-11d1-B162-00C04FC28ACA}
  368. //
  369. DEFINE_GUID(DSPROPSETID_DirectSoundPersistentData, 0x1be55c3e, 0x36ab, 0x11d1, 0xb1, 0x62, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca);
  370. typedef enum
  371. {
  372. DSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_A,
  373. DSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_W,
  374. } DSPROPERTY_DIRECTSOUNDPERSISTENTDATA;
  375. #ifdef UNICODE
  376. #define DSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA DSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_W
  377. #else // UNICODE
  378. #define DSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA DSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_A
  379. #endif // UNICODE
  380. typedef struct _DSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_A_DATA
  381. {
  382. GUID DeviceId; // DirectSound device id
  383. LPSTR SubKeyName; // Optional subkey name
  384. LPSTR ValueName; // Value name
  385. ULONG RegistryDataType; // Data type
  386. LPVOID Data; // Data pointer
  387. ULONG DataSize; // Size of data buffer, in bytes
  388. } DSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_A_DATA, *PDSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_A_DATA;
  389. typedef struct _DSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_W_DATA
  390. {
  391. GUID DeviceId; // DirectSound device id
  392. LPWSTR SubKeyName; // Optional subkey name
  393. LPWSTR ValueName; // Value name
  394. ULONG RegistryDataType; // Data type
  395. LPVOID Data; // Data pointer
  396. ULONG DataSize; // Size of data buffer, in bytes
  397. } DSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_W_DATA, *PDSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_W_DATA;
  398. #ifdef UNICODE
  399. #define DSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_DATA DSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_W_DATA
  400. #define PDSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_DATA PDSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_W_DATA
  401. #else // UNICODE
  402. #define DSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_DATA DSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_A_DATA
  403. #define PDSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_DATA PDSPROPERTY_DIRECTSOUNDPERSISTENTDATA_PERSISTDATA_A_DATA
  404. #endif // UNICODE
  405. //
  406. // DirectSound Buffer Properties {50393DEA-51AD-11d2-91B2-00C04FC28ACA}
  407. //
  408. DEFINE_GUID(DSPROPSETID_DirectSoundBuffer, 0x50393dea, 0x51ad, 0x11d2, 0x91, 0xb2, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca);
  409. typedef enum
  410. {
  411. DSPROPERTY_DIRECTSOUNDBUFFER_DEVICEID,
  412. } DSPROPERTY_DIRECTSOUNDBUFFER;
  413. typedef struct _DSPROPERTY_DIRECTSOUNDBUFFER_DEVICEID_DATA
  414. {
  415. LPDIRECTSOUNDBUFFER Buffer; // Buffer object pointer
  416. GUID DeviceId; // DirectSound device ID
  417. } DSPROPERTY_DIRECTSOUNDBUFFER_DEVICEID_DATA, *PDSPROPERTY_DIRECTSOUNDBUFFER_DEVICEID_DATA;
  418. //
  419. // DirectSound Object Properties {4BE334F0-1C8E-4D91-8C17-5889D6F0B154}
  420. //
  421. DEFINE_GUID(DSPROPSETID_DirectSound, 0x4be334f0, 0x1c8e, 0x4d91, 0x8c, 0x17, 0x58, 0x89, 0xd6, 0xf0, 0xb1, 0x54);
  422. typedef enum
  423. {
  424. DSPROPERTY_DIRECTSOUND_OBJECTS,
  425. DSPROPERTY_DIRECTSOUNDCAPTURE_OBJECTS
  426. } DSPROPERTY_DIRECTSOUND;
  427. #pragma warning(disable:4200) // Disable the nag about the Objects[0] arrays below
  428. typedef struct _DIRECTSOUND_INFO
  429. {
  430. LPDIRECTSOUND DirectSound;
  431. GUID DeviceId;
  432. } DIRECTSOUND_INFO;
  433. typedef struct _DSPROPERTY_DIRECTSOUND_OBJECTS_DATA
  434. {
  435. GUID DeviceId; // [in] DirectSound device ID (or GUID_NULL for all DS objects)
  436. ULONG Count; // [out] Count of DirectSound objects matching this DeviceId
  437. DIRECTSOUND_INFO Objects[0]; // [out] Information about each DirectSound object
  438. } DSPROPERTY_DIRECTSOUND_OBJECTS_DATA, *PDSPROPERTY_DIRECTSOUND_OBJECTS_DATA;
  439. typedef struct _DIRECTSOUNDCAPTURE_INFO
  440. {
  441. LPDIRECTSOUNDCAPTURE DirectSoundCapture;
  442. GUID DeviceId;
  443. } DIRECTSOUNDCAPTURE_INFO;
  444. typedef struct _DSPROPERTY_DIRECTSOUNDCAPTURE_OBJECTS_DATA
  445. {
  446. GUID DeviceId; // [in] DirectSoundCapture device ID (or GUID_NULL for all DSC objects)
  447. ULONG Count; // [out] Count of DirectSoundCapture objects matching this DeviceId
  448. DIRECTSOUNDCAPTURE_INFO Objects[0]; // [out] Information about each DirectSoundCapture object
  449. } DSPROPERTY_DIRECTSOUNDCAPTURE_OBJECTS_DATA, *PDSPROPERTY_DIRECTSOUNDCAPTURE_OBJECTS_DATA;
  450. //@@END_MSINTERNAL
  451. #ifdef __cplusplus
  452. }
  453. #endif // __cplusplus
  454. #endif // __DSCONF_INCLUDED__