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.

1342 lines
55 KiB

  1. /*==========================================================================;
  2. *
  3. * Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
  4. *
  5. * File: dpvoice.h
  6. * Content: DirectPlayVoice include file
  7. //@@BEGIN_MSINTERNAL
  8. * History:
  9. * Date By Reason
  10. * ===== ======= ==================================================
  11. * 07/01/99 rodtoll created
  12. * 07/22/99 rodtoll Added new error messages for server object
  13. * 08/25/99 rodtoll Updated to use new GUID based compression selection
  14. * 08/26/99 rodtoll Updated C/C++ macros.
  15. * 08/30/99 rodtoll Added timeout error code
  16. * Added host migration message ID
  17. * 09/02/99 pnewson Added IDirectPlayVoiceSetup interface
  18. * 09/07/99 rodtoll Fixed C macros and added IDirectPlayVoicePlugin interface
  19. * rodtoll Moved settarget message id to public header, added
  20. * new 3d-related error codes.
  21. * 09/08/99 rodtoll Updated for new compression structure
  22. * 09/10/99 rodtoll Redefined hosting error codes to be unique
  23. * 09/13/99 rodtoll Added GUIDs for default capture/playback devices
  24. * 09/20/99 rodtoll New error messages, DVNOTIFYPERIOD_MAXPERIOD
  25. * 09/29/99 rodtoll Added new flags/members for voice suppression
  26. * 10/15/99 rodtoll Mapped default system devices to NULL
  27. * 10/19/99 rodtoll Renamed to dpvoice.h
  28. * 10/20/99 rodtoll Fix: Bug #114218 : Added new error code
  29. * 10/25/99 rodtoll Fix: Bug #114682 : Removing password member of session desc
  30. * rodtoll Start of move from LPs to Ps for pointers
  31. * 10/27/99 pnewson Added DVCLIENTCONFIG_AUTOVOLUMERESET flag for Bug #113936
  32. * rodtoll Fix: Bug #113745: Updated facility code
  33. * 10/28/99 pnewson Bug #114176 updated DVSOUNDDEVICECONFIG struct
  34. * 11/12/99 rodtoll Added new flags for echo suppression and waveIN/waveOut
  35. * usage control.
  36. * 11/17/99 rodtoll Fix: Bug #116440 - Remove unused flags
  37. * rodtoll Fix: Bug #119584 - Rename FACDN to FACDPV
  38. * 11/23/99 rodtoll Updated w/better error codes for transport errors
  39. * 12/06/99 rodtoll Fix: Bug #121054 Integration of new dsound 7.1 bits
  40. * Added flags to control capture focus behaviour
  41. * 12/16/99 rodtoll Removed voice suppression code
  42. * rodtoll Fix: Bug #119584 Renamed run setup error
  43. * rodtoll Fix: Bug #117405 3D Sound APIs misleading
  44. * rodtoll Fix: Bug #122629 Added flag to control host migration
  45. * 12/01/99 pnewson removed our default device guids, since dsound now has them
  46. * added DVINPUTLEVEL_MIN, DVINPUTLEVEL_MAX
  47. * 01/13/00 aarono added SendSpeechEx to IDirectPlayVoiceTransport
  48. * 01/14/2000 rodtoll Removed DVID_NOTARGET
  49. * rodtoll Removed DVMSGID_STARTSESSIONRESULT / DVMSGID_STOPSESSIONRESULT
  50. * (Collapsed other message IDs)
  51. * rodtoll Updated callback function prototype for new callback format
  52. * rodtoll Renamed Get/SetTransmitTarget --> Get/SetTransmitTargets and
  53. * updated parameter list to match new format
  54. * rodtoll Added GetSoundDeviceConfig function to client interface
  55. * rodtoll Added DVMSG_ structures for callback messages.
  56. * 01/20/2000 rodtoll Removed dplay.h from header
  57. * rodtoll Added new members to the Transport interface
  58. * 01/21/2000 pnewson Added DVSOUNDCONFIG_TESTMODE
  59. * Added DVRECORDVOLUME_LAST
  60. * Fixed conflicted error code for DVERR_CHILDPROCESSFAILED
  61. * 01/25/2000 pnewson Added DVFLAGS_WAVEIDS
  62. * Fixed IDirectPlayVoiceSetup_CheckAudioSetup macro
  63. * 01/25/2000 rodtoll Exposed DVCLIENTCONFIG_ECHOSUPPRESSION
  64. * rodtoll Fixed C macros for member calls
  65. * rodtoll Fixed NotifyEvent call to add LPVOID to call
  66. * 01/27/2000 rodtoll Bug #129934 - Added DSBUFFERDESCs to calls
  67. * 01/31/2000 pnewson changed sensitivity range to match input level range
  68. * 02/08/2000 rodtoll Bug #131496 - Selecting DVTHRESHOLD_DEFAULT results in voice
  69. * never being detected
  70. * 03/29/2000 rodtoll Bug #30957 - Added new flag to control conv quality -- DVSOUNDCONFIG_SETCONVERSIONQUALITY
  71. * rodtoll Bug #30819 - Restored DX8 CLSID to match DX7.1's, but changed IIDs for Client/Server.
  72. * rodtoll Bug #31000 - Fixed incorrect # of params to C macros for interface
  73. * 03/29/2000 pnewson Added DVFLAGS_ALLOWBACK
  74. * 04/05/2000 rodtoll Updated to allow pointers through notify.
  75. * rodtoll Added DVEVENT_BUFFERRETURN event type for notification interface
  76. * rodtoll Updated Advise to have interface specify if it's a client or server when advising/unadvising
  77. * Bug #32179 - Registering more then one server/and/or/client
  78. * 04/11/2000 rodtoll Moved DPVCTGUID_DEFAULT out of msinternal
  79. * 05/03/2000 rodtoll Bug #33640 - CheckAudioSetup takes GUID * instead of const GUID *
  80. * 06/07/2000 rodtoll Bug #34383 Must provide CLSID for each IID to fix issues with Whistler
  81. * 06/09/00 rmt Updates to split CLSID and allow whistler compat and support external create funcs
  82. * 06/15/2000 rodtoll Bug #36590 - Renamed macros to match new interface name
  83. * 06/21/2000 rodtoll Bug #35767 - Implemented ability to use effects on voice buffers
  84. * Replaced DSBUFFERDESC with DIRECTSOUNDBUFFERS
  85. * Added DVERR_INVALIDBUFFER return code.
  86. * 06/23/2000 rodtoll Bug #37556 - Hexify the DPVERR codes
  87. * 08/21/2000 rodtoll Bug #42786 - Obsolete interface names in dvoice.h
  88. * 08/31/2000 rodtoll Bug #43804 - DVOICE: dwSensitivity structure member is confusing - should be dwThreshold
  89. * 01/22/2001 rodtoll WINBUG #288437 - IA64 Pointer misalignment due to wire packets
  90. * 03/17/2001 rmt WINBUG #342420 - Commented out create functions
  91. * 04/06/2001 kareemc Added Voice Defense
  92. *
  93. //@@END_MSINTERNAL
  94. ***************************************************************************/
  95. #ifndef __DVOICE__
  96. #define __DVOICE__
  97. #include <ole2.h> // for DECLARE_INTERFACE and HRESULT
  98. #include <mmsystem.h>
  99. #include <mmreg.h>
  100. #include <msacm.h>
  101. #include "dsound.h"
  102. #ifdef __cplusplus
  103. extern "C" {
  104. #endif
  105. //@@BEGIN_MSINTERNAL
  106. #define DPVOICE_REGISTRY_BASE L"SOFTWARE\\MICROSOFT\\DIRECTPLAY\\VOICE"
  107. #define DPVOICE_REGISTRY_CP L"\\Compression Providers"
  108. #define DPVOICE_REGISTRY_DPVACM L"\\DPVACM"
  109. #define DPVOICE_REGISTRY_DPVVOX L"\\DPVVOX"
  110. #define DPVOICE_REGISTRY_AGC L"\\AGC"
  111. #define DPVOICE_REGISTRY_AUDIOCONFIG L"\\AudioConfig"
  112. //@@END_MSINTERNAL
  113. /****************************************************************************
  114. *
  115. * DirectPlayVoice CLSIDs
  116. *
  117. ****************************************************************************/
  118. //@@BEGIN_MSINTERNAL
  119. // Provided for compatibility with stand-alone and Millenium.
  120. //
  121. // Only VoiceClient/VoiceSetup and VoiceServer can be created from this CLSID.
  122. // {948CE83B-C4A2-44b3-99BF-279ED8DA7DF5}
  123. DEFINE_GUID(CLSID_DirectPlayVoice,
  124. 0x948ce83b, 0xc4a2, 0x44b3, 0x99, 0xbf, 0x27, 0x9e, 0xd8, 0xda, 0x7d, 0xf5);
  125. #define CLSID_DIRECTPLAYVOICE CLSID_DirectPlayVoice
  126. //@@END_MSINTERNAL
  127. // {B9F3EB85-B781-4ac1-8D90-93A05EE37D7D}
  128. DEFINE_GUID(CLSID_DirectPlayVoiceClient,
  129. 0xb9f3eb85, 0xb781, 0x4ac1, 0x8d, 0x90, 0x93, 0xa0, 0x5e, 0xe3, 0x7d, 0x7d);
  130. // {D3F5B8E6-9B78-4a4c-94EA-CA2397B663D3}
  131. DEFINE_GUID(CLSID_DirectPlayVoiceServer,
  132. 0xd3f5b8e6, 0x9b78, 0x4a4c, 0x94, 0xea, 0xca, 0x23, 0x97, 0xb6, 0x63, 0xd3);
  133. // {0F0F094B-B01C-4091-A14D-DD0CD807711A}
  134. DEFINE_GUID(CLSID_DirectPlayVoiceTest,
  135. 0xf0f094b, 0xb01c, 0x4091, 0xa1, 0x4d, 0xdd, 0xc, 0xd8, 0x7, 0x71, 0x1a);
  136. /****************************************************************************
  137. *
  138. * DirectPlayVoice Interface IIDs
  139. *
  140. ****************************************************************************/
  141. //@@BEGIN_MSINTERNAL
  142. // {660CECA7-1A48-42f1-BAF3-04C183DF87DB}
  143. DEFINE_GUID(IID_IDirectPlayVoiceNotify,
  144. 0x660ceca7, 0x1a48, 0x42f1, 0xba, 0xf3, 0x4, 0xc1, 0x83, 0xdf, 0x87, 0xdb);
  145. // {D7852974-BBB9-49cb-9162-6A66CDED8EC7}
  146. DEFINE_GUID(IID_IDirectPlayVoiceTransport,
  147. 0xd7852974, 0xbbb9, 0x49cb, 0x91, 0x62, 0x6a, 0x66, 0xcd, 0xed, 0x8e, 0xc7);
  148. //@@END_MSINTERNAL
  149. // {1DFDC8EA-BCF7-41d6-B295-AB64B3B23306}
  150. DEFINE_GUID(IID_IDirectPlayVoiceClient,
  151. 0x1dfdc8ea, 0xbcf7, 0x41d6, 0xb2, 0x95, 0xab, 0x64, 0xb3, 0xb2, 0x33, 0x6);
  152. // {FAA1C173-0468-43b6-8A2A-EA8A4F2076C9}
  153. DEFINE_GUID(IID_IDirectPlayVoiceServer,
  154. 0xfaa1c173, 0x468, 0x43b6, 0x8a, 0x2a, 0xea, 0x8a, 0x4f, 0x20, 0x76, 0xc9);
  155. // {D26AF734-208B-41da-8224-E0CE79810BE1}
  156. DEFINE_GUID(IID_IDirectPlayVoiceTest,
  157. 0xd26af734, 0x208b, 0x41da, 0x82, 0x24, 0xe0, 0xce, 0x79, 0x81, 0xb, 0xe1);
  158. /****************************************************************************
  159. *
  160. * DirectPlayVoice Compression Type GUIDs
  161. *
  162. ****************************************************************************/
  163. // MS-ADPCM 32.8 kbit/s
  164. //
  165. // {699B52C1-A885-46a8-A308-97172419ADC7}
  166. DEFINE_GUID(DPVCTGUID_ADPCM,
  167. 0x699b52c1, 0xa885, 0x46a8, 0xa3, 0x8, 0x97, 0x17, 0x24, 0x19, 0xad, 0xc7);
  168. // Microsoft GSM 6.10 13 kbit/s
  169. //
  170. // {24768C60-5A0D-11d3-9BE4-525400D985E7}
  171. DEFINE_GUID(DPVCTGUID_GSM,
  172. 0x24768c60, 0x5a0d, 0x11d3, 0x9b, 0xe4, 0x52, 0x54, 0x0, 0xd9, 0x85, 0xe7);
  173. // MS-PCM 64 kbit/s
  174. //
  175. // {8DE12FD4-7CB3-48ce-A7E8-9C47A22E8AC5}
  176. DEFINE_GUID(DPVCTGUID_NONE,
  177. 0x8de12fd4, 0x7cb3, 0x48ce, 0xa7, 0xe8, 0x9c, 0x47, 0xa2, 0x2e, 0x8a, 0xc5);
  178. // Voxware SC03 3.2kbit/s
  179. //
  180. // {7D82A29B-2242-4f82-8F39-5D1153DF3E41}
  181. DEFINE_GUID(DPVCTGUID_SC03,
  182. 0x7d82a29b, 0x2242, 0x4f82, 0x8f, 0x39, 0x5d, 0x11, 0x53, 0xdf, 0x3e, 0x41);
  183. // Voxware SC06 6.4kbit/s
  184. //
  185. // {53DEF900-7168-4633-B47F-D143916A13C7}
  186. DEFINE_GUID(DPVCTGUID_SC06,
  187. 0x53def900, 0x7168, 0x4633, 0xb4, 0x7f, 0xd1, 0x43, 0x91, 0x6a, 0x13, 0xc7);
  188. // TrueSpeech(TM) 8.6 kbit/s
  189. //
  190. // {D7954361-5A0B-11d3-9BE4-525400D985E7}
  191. DEFINE_GUID(DPVCTGUID_TRUESPEECH,
  192. 0xd7954361, 0x5a0b, 0x11d3, 0x9b, 0xe4, 0x52, 0x54, 0x0, 0xd9, 0x85, 0xe7);
  193. // Voxware VR12 1.4kbit/s
  194. //
  195. // {FE44A9FE-8ED4-48bf-9D66-1B1ADFF9FF6D}
  196. DEFINE_GUID(DPVCTGUID_VR12,
  197. 0xfe44a9fe, 0x8ed4, 0x48bf, 0x9d, 0x66, 0x1b, 0x1a, 0xdf, 0xf9, 0xff, 0x6d);
  198. // Define the default compression type
  199. #define DPVCTGUID_DEFAULT DPVCTGUID_SC03
  200. /****************************************************************************
  201. *
  202. * DirectPlayVoice Interface Pointer definitions
  203. *
  204. ****************************************************************************/
  205. typedef struct IDirectPlayVoiceClient FAR *LPDIRECTPLAYVOICECLIENT, *PDIRECTPLAYVOICECLIENT;
  206. typedef struct IDirectPlayVoiceServer FAR *LPDIRECTPLAYVOICESERVER, *PDIRECTPLAYVOICESERVER;
  207. typedef struct IDirectPlayVoiceTest FAR *LPDIRECTPLAYVOICETEST, *PDIRECTPLAYVOICETEST;
  208. //@@BEGIN_MSINTERNAL
  209. typedef struct IDirectPlayVoiceNotify FAR *LPDIRECTPLAYVOICENOTIFY, *PDIRECTPLAYVOICENOTIFY;
  210. typedef struct IDirectPlayVoiceTransport FAR *LPDIRECTPLAYVOICETRANSPORT, *PDIRECTPLAYVOICETRANSPORT;
  211. //@@END_MSINTERNAL
  212. /****************************************************************************
  213. *
  214. * DirectPlayVoice Callback Functions
  215. *
  216. ****************************************************************************/
  217. typedef HRESULT (FAR PASCAL *PDVMESSAGEHANDLER)(
  218. PVOID pvUserContext,
  219. DWORD dwMessageType,
  220. LPVOID lpMessage
  221. );
  222. typedef PDVMESSAGEHANDLER LPDVMESSAGEHANDLER;
  223. /****************************************************************************
  224. *
  225. * DirectPlayVoice Datatypes (Non-Structure / Non-Message)
  226. *
  227. ****************************************************************************/
  228. typedef DWORD DVID, *LPDVID, *PDVID;
  229. /****************************************************************************
  230. *
  231. * DirectPlayVoice Message Types
  232. *
  233. ****************************************************************************/
  234. #define DVMSGID_BASE 0x0000
  235. #define DVMSGID_MINBASE (DVMSGID_CREATEVOICEPLAYER)
  236. #define DVMSGID_CREATEVOICEPLAYER (DVMSGID_BASE+0x0001)
  237. #define DVMSGID_DELETEVOICEPLAYER (DVMSGID_BASE+0x0002)
  238. #define DVMSGID_SESSIONLOST (DVMSGID_BASE+0x0003)
  239. #define DVMSGID_PLAYERVOICESTART (DVMSGID_BASE+0x0004)
  240. #define DVMSGID_PLAYERVOICESTOP (DVMSGID_BASE+0x0005)
  241. #define DVMSGID_RECORDSTART (DVMSGID_BASE+0x0006)
  242. #define DVMSGID_RECORDSTOP (DVMSGID_BASE+0x0007)
  243. #define DVMSGID_CONNECTRESULT (DVMSGID_BASE+0x0008)
  244. #define DVMSGID_DISCONNECTRESULT (DVMSGID_BASE+0x0009)
  245. #define DVMSGID_INPUTLEVEL (DVMSGID_BASE+0x000A)
  246. #define DVMSGID_OUTPUTLEVEL (DVMSGID_BASE+0x000B)
  247. #define DVMSGID_HOSTMIGRATED (DVMSGID_BASE+0x000C)
  248. #define DVMSGID_SETTARGETS (DVMSGID_BASE+0x000D)
  249. #define DVMSGID_PLAYEROUTPUTLEVEL (DVMSGID_BASE+0x000E)
  250. #define DVMSGID_LOSTFOCUS (DVMSGID_BASE+0x0010)
  251. #define DVMSGID_GAINFOCUS (DVMSGID_BASE+0x0011)
  252. #define DVMSGID_LOCALHOSTSETUP (DVMSGID_BASE+0x0012)
  253. #define DVMSGID_MAXBASE (DVMSGID_LOCALHOSTSETUP)
  254. /****************************************************************************
  255. *
  256. * DirectPlayVoice Constants
  257. *
  258. ****************************************************************************/
  259. //
  260. // Buffer Aggresiveness Value Ranges
  261. //
  262. #define DVBUFFERAGGRESSIVENESS_MIN 0x00000001
  263. #define DVBUFFERAGGRESSIVENESS_MAX 0x00000064
  264. #define DVBUFFERAGGRESSIVENESS_DEFAULT 0x00000000
  265. //
  266. // Buffer Quality Value Ranges
  267. //
  268. #define DVBUFFERQUALITY_MIN 0x00000001
  269. #define DVBUFFERQUALITY_MAX 0x00000064
  270. #define DVBUFFERQUALITY_DEFAULT 0x00000000
  271. #define DVID_SYS 0
  272. //
  273. // Used to identify the session host in client/server
  274. //
  275. #define DVID_SERVERPLAYER 1
  276. //
  277. // Used to target all players
  278. //
  279. #define DVID_ALLPLAYERS 0
  280. //
  281. // Used to identify the main buffer
  282. //
  283. #define DVID_REMAINING 0xFFFFFFFF
  284. //
  285. // Input level range
  286. //
  287. #define DVINPUTLEVEL_MIN 0x00000000
  288. #define DVINPUTLEVEL_MAX 0x00000063 // 99 decimal
  289. #define DVNOTIFYPERIOD_MINPERIOD 20
  290. #define DVPLAYBACKVOLUME_DEFAULT DSBVOLUME_MAX
  291. #define DVRECORDVOLUME_LAST 0x00000001
  292. //
  293. // Use the default value
  294. //
  295. #define DVTHRESHOLD_DEFAULT 0xFFFFFFFF
  296. //
  297. // Threshold Ranges
  298. //
  299. #define DVTHRESHOLD_MIN 0x00000000
  300. #define DVTHRESHOLD_MAX 0x00000063 // 99 decimal
  301. //
  302. // Threshold field is not used
  303. //
  304. #define DVTHRESHOLD_UNUSED 0xFFFFFFFE
  305. //
  306. // Session Types
  307. //
  308. #define DVSESSIONTYPE_PEER 0x00000001
  309. #define DVSESSIONTYPE_MIXING 0x00000002
  310. #define DVSESSIONTYPE_FORWARDING 0x00000003
  311. #define DVSESSIONTYPE_ECHO 0x00000004
  312. //@@BEGIN_MSINTERNAL
  313. #define DVSESSIONTYPE_MAX 0x00000005
  314. //@@END_MSINTERNAL
  315. /****************************************************************************
  316. *
  317. * DirectPlayVoice Flags
  318. *
  319. ****************************************************************************/
  320. //@@BEGIN_MSINTERNAL
  321. // The flag to disable the config check in Connect
  322. // -- required by the setup program!
  323. #define DVFLAGS_NOQUERY 0x00000004
  324. #define DVCLIENTCONFIG_AUTOVOLUMERESET 0x00000080
  325. // Used to indicate that waveids are being passed
  326. // to CheckAudioSetup instead of guids. Used by the
  327. // control panel's Voice Test button.
  328. #define DVFLAGS_WAVEIDS 0x80000000
  329. // The flag to put the recording subsystem into
  330. // test mode. Used by the setup/test program.
  331. #define DVSOUNDCONFIG_TESTMODE 0x80000000
  332. //@@END_MSINTERNAL
  333. //
  334. // Enable automatic adjustment of the recording volume
  335. //
  336. #define DVCLIENTCONFIG_AUTORECORDVOLUME 0x00000008
  337. //
  338. // Enable automatic voice activation
  339. //
  340. #define DVCLIENTCONFIG_AUTOVOICEACTIVATED 0x00000020
  341. //
  342. // Enable echo suppression
  343. //
  344. #define DVCLIENTCONFIG_ECHOSUPPRESSION 0x08000000
  345. //
  346. // Voice Activation manual mode
  347. //
  348. #define DVCLIENTCONFIG_MANUALVOICEACTIVATED 0x00000004
  349. //
  350. // Only playback voices that have buffers created for them
  351. //
  352. #define DVCLIENTCONFIG_MUTEGLOBAL 0x00000010
  353. //
  354. // Mute the playback
  355. //
  356. #define DVCLIENTCONFIG_PLAYBACKMUTE 0x00000002
  357. //
  358. // Mute the recording
  359. //
  360. #define DVCLIENTCONFIG_RECORDMUTE 0x00000001
  361. //
  362. // Complete the operation before returning
  363. //
  364. #define DVFLAGS_SYNC 0x00000001
  365. //
  366. // Just check to see if wizard has been run, and if so what it's results were
  367. //
  368. #define DVFLAGS_QUERYONLY 0x00000002
  369. //
  370. // Shutdown the voice session without migrating the host
  371. //
  372. #define DVFLAGS_NOHOSTMIGRATE 0x00000008
  373. //
  374. // Allow the back button to be enabled in the wizard
  375. //
  376. #define DVFLAGS_ALLOWBACK 0x00000010
  377. //
  378. // Disable host migration in the voice session
  379. //
  380. #define DVSESSION_NOHOSTMIGRATION 0x00000001
  381. //
  382. // Server controlled targetting
  383. //
  384. #define DVSESSION_SERVERCONTROLTARGET 0x00000002
  385. //@@BEGIN_MSINTERNAL
  386. #define DVSESSION_MAX 0x00000004
  387. //@@END_MSINTERNAL
  388. //
  389. // Use DirectSound Normal Mode instead of priority
  390. //
  391. #define DVSOUNDCONFIG_NORMALMODE 0x00000001
  392. //
  393. // Automatically select the microphone
  394. //
  395. #define DVSOUNDCONFIG_AUTOSELECT 0x00000002
  396. //
  397. // Run in half duplex mode
  398. //
  399. #define DVSOUNDCONFIG_HALFDUPLEX 0x00000004
  400. //
  401. // No volume controls are available for the recording device
  402. //
  403. #define DVSOUNDCONFIG_NORECVOLAVAILABLE 0x00000010
  404. //
  405. // Disable capture sharing
  406. //
  407. #define DVSOUNDCONFIG_NOFOCUS 0x20000000
  408. //
  409. // Set system conversion quality to high
  410. //
  411. #define DVSOUNDCONFIG_SETCONVERSIONQUALITY 0x00000008
  412. //
  413. // Enable strict focus mode
  414. //
  415. #define DVSOUNDCONFIG_STRICTFOCUS 0x40000000
  416. //
  417. // Player is in half duplex mode
  418. //
  419. #define DVPLAYERCAPS_HALFDUPLEX 0x00000001
  420. //
  421. // Specifies that player is the local player
  422. //
  423. #define DVPLAYERCAPS_LOCAL 0x00000002
  424. //@@BEGIN_MSINTERNAL
  425. #define DVPLAYERCAPS_MAX 0x00000004
  426. //@@END_MSINTERNAL
  427. /****************************************************************************
  428. *
  429. * DirectPlayVoice Structures (Non-Message)
  430. *
  431. ****************************************************************************/
  432. //@@BEGIN_MSINTERNAL
  433. // DVTRANSPORTINFO
  434. //
  435. typedef struct
  436. {
  437. // = sizeof( DVTRANSPORTINFO )
  438. DWORD dwSize;
  439. // Combination of following flags:
  440. // DVTRANSPORT_MIGRATEHOST, DVTRANSPORT_MULTICAST
  441. // DVTRANSPORT_LOCALHOST
  442. DWORD dwFlags;
  443. // Session Type the transport is running. One of:
  444. // DVTRANSPORT_SESSION_PEERTOPEER
  445. // DVTRANSPORT_SESSION_CLIENTSERVER
  446. DWORD dwSessionType;
  447. // ID of the player (Regular ID, not system) that
  448. // is the sesion host.
  449. DVID dvidSessionHost;
  450. // ID of the local player (Regular ID, not system)
  451. DVID dvidLocalID;
  452. // Maximum # of players allowed in the session,
  453. // 0 = unlimited.
  454. DWORD dwMaxPlayers;
  455. } DVTRANSPORTINFO, *LPDVTRANSPORTINFO, *PDVTRANSPORTINFO;
  456. //@@END_MSINTERNAL
  457. //
  458. // DirectPlayVoice Caps
  459. // (GetCaps / SetCaps)
  460. //
  461. typedef struct
  462. {
  463. DWORD dwSize; // Size of this structure
  464. DWORD dwFlags; // Caps flags
  465. } DVCAPS, *LPDVCAPS, *PDVCAPS;
  466. //
  467. // DirectPlayVoice Client Configuration
  468. // (Connect / GetClientConfig)
  469. //
  470. typedef struct
  471. {
  472. DWORD dwSize; // Size of this structure
  473. DWORD dwFlags; // Flags for client config (DVCLIENTCONFIG_...)
  474. LONG lRecordVolume; // Recording volume
  475. LONG lPlaybackVolume; // Playback volume
  476. DWORD dwThreshold; // Voice Activation Threshold
  477. DWORD dwBufferQuality; // Buffer quality
  478. DWORD dwBufferAggressiveness; // Buffer aggressiveness
  479. DWORD dwNotifyPeriod; // Period of notification messages (ms)
  480. } DVCLIENTCONFIG, *LPDVCLIENTCONFIG, *PDVCLIENTCONFIG;
  481. //
  482. // DirectPlayVoice Compression Type Information
  483. // (GetCompressionTypes)
  484. //
  485. typedef struct
  486. {
  487. DWORD dwSize; // Size of this structure
  488. GUID guidType; // GUID that identifies this compression type
  489. LPWSTR lpszName; // String name of this compression type
  490. LPWSTR lpszDescription; // Description for this compression type
  491. DWORD dwFlags; // Flags for this compression type
  492. DWORD dwMaxBitsPerSecond; // Maximum # of bit/s this compression type uses
  493. } DVCOMPRESSIONINFO, *LPDVCOMPRESSIONINFO, *PDVCOMPRESSIONINFO;
  494. //
  495. // DirectPlayVoice Session Description
  496. // (Host / GetSessionDesc)
  497. //
  498. typedef struct
  499. {
  500. DWORD dwSize; // Size of this structure
  501. DWORD dwFlags; // Session flags (DVSESSION_...)
  502. DWORD dwSessionType; // Session type (DVSESSIONTYPE_...)
  503. GUID guidCT; // Compression Type to use
  504. DWORD dwBufferQuality; // Buffer quality
  505. DWORD dwBufferAggressiveness; // Buffer aggresiveness
  506. } DVSESSIONDESC, *LPDVSESSIONDESC, *PDVSESSIONDESC;
  507. //
  508. // DirectPlayVoice Client Sound Device Configuration
  509. // (Connect / GetSoundDeviceConfig)
  510. //
  511. typedef struct
  512. {
  513. DWORD dwSize; // Size of this structure
  514. DWORD dwFlags; // Flags for sound config (DVSOUNDCONFIG_...)
  515. GUID guidPlaybackDevice; // GUID of the playback device to use
  516. LPDIRECTSOUND lpdsPlaybackDevice; // DirectSound Object to use (optional)
  517. GUID guidCaptureDevice; // GUID of the capture device to use
  518. LPDIRECTSOUNDCAPTURE lpdsCaptureDevice; // DirectSoundCapture Object to use (optional)
  519. HWND hwndAppWindow; // HWND of your application's top-level window
  520. LPDIRECTSOUNDBUFFER lpdsMainBuffer; // DirectSoundBuffer to use for playback (optional)
  521. DWORD dwMainBufferFlags; // Flags to pass to Play() on the main buffer
  522. DWORD dwMainBufferPriority; // Priority to set when calling Play() on the main buffer
  523. } DVSOUNDDEVICECONFIG, *LPDVSOUNDDEVICECONFIG, *PDVSOUNDDEVICECONFIG;
  524. /****************************************************************************
  525. *
  526. * DirectPlayVoice message handler call back structures
  527. *
  528. ****************************************************************************/
  529. //
  530. // Result of the Connect() call. (If it wasn't called Async)
  531. // (DVMSGID_CONNECTRESULT)
  532. //
  533. typedef struct
  534. {
  535. DWORD dwSize; // Size of this structure
  536. HRESULT hrResult; // Result of the Connect() call
  537. } DVMSG_CONNECTRESULT, *LPDVMSG_CONNECTRESULT, *PDVMSG_CONNECTRESULT;
  538. //
  539. // A new player has entered the voice session
  540. // (DVMSGID_CREATEVOICEPLAYER)
  541. //
  542. typedef struct
  543. {
  544. DWORD dwSize; // Size of this structure
  545. DVID dvidPlayer; // DVID of the player who joined
  546. DWORD dwFlags; // Player flags (DVPLAYERCAPS_...)
  547. PVOID pvPlayerContext; // Context value for this player (user set)
  548. } DVMSG_CREATEVOICEPLAYER, *LPDVMSG_CREATEVOICEPLAYER, *PDVMSG_CREATEVOICEPLAYER;
  549. //
  550. // A player has left the voice session
  551. // (DVMSGID_DELETEVOICEPLAYER)
  552. //
  553. typedef struct
  554. {
  555. DWORD dwSize; // Size of this structure
  556. DVID dvidPlayer; // DVID of the player who left
  557. PVOID pvPlayerContext; // Context value for the player
  558. } DVMSG_DELETEVOICEPLAYER, *LPDVMSG_DELETEVOICEPLAYER, *PDVMSG_DELETEVOICEPLAYER;
  559. //
  560. // Result of the Disconnect() call. (If it wasn't called Async)
  561. // (DVMSGID_DISCONNECTRESULT)
  562. //
  563. typedef struct
  564. {
  565. DWORD dwSize; // Size of this structure
  566. HRESULT hrResult; // Result of the Disconnect() call
  567. } DVMSG_DISCONNECTRESULT, *LPDVMSG_DISCONNECTRESULT, *PDVMSG_DISCONNECTRESULT;
  568. //
  569. // The voice session host has migrated.
  570. // (DVMSGID_HOSTMIGRATED)
  571. //
  572. typedef struct
  573. {
  574. DWORD dwSize; // Size of this structure
  575. DVID dvidNewHostID; // DVID of the player who is now the host
  576. LPDIRECTPLAYVOICESERVER pdvServerInterface;
  577. // Pointer to the new host object (if local player is now host)
  578. } DVMSG_HOSTMIGRATED, *LPDVMSG_HOSTMIGRATED, *PDVMSG_HOSTMIGRATED;
  579. //
  580. // The current input level / recording volume on the local machine
  581. // (DVMSGID_INPUTLEVEL)
  582. //
  583. typedef struct
  584. {
  585. DWORD dwSize; // Size of this structure
  586. DWORD dwPeakLevel; // Current peak level of the audio
  587. LONG lRecordVolume; // Current recording volume
  588. PVOID pvLocalPlayerContext; // Context value for the local player
  589. } DVMSG_INPUTLEVEL, *LPDVMSG_INPUTLEVEL, *PDVMSG_INPUTLEVEL;
  590. //
  591. // The local client is about to become the new host
  592. // (DVMSGID_LOCALHOSTSETUP)
  593. //
  594. typedef struct
  595. {
  596. DWORD dwSize; // Size of this structure
  597. PVOID pvContext; // Context value to be passed to Initialize() of new host object
  598. PDVMESSAGEHANDLER pMessageHandler; // Message handler to be used by new host object
  599. } DVMSG_LOCALHOSTSETUP, *LPDVMSG_LOCALHOSTSETUP, *PDVMSG_LOCALHOSTSETUP;
  600. //
  601. // The current output level for the combined output of all incoming streams.
  602. // (DVMSGID_OUTPUTLEVEL)
  603. //
  604. typedef struct
  605. {
  606. DWORD dwSize; // Size of this structure
  607. DWORD dwPeakLevel; // Current peak level of the output
  608. LONG lOutputVolume; // Current playback volume
  609. PVOID pvLocalPlayerContext; // Context value for the local player
  610. } DVMSG_OUTPUTLEVEL, *LPDVMSG_OUTPUTLEVEL, *PDVMSG_OUTPUTLEVEL;
  611. //
  612. // The current peak level of an individual player's incoming audio stream as it is
  613. // being played back.
  614. // (DVMSGID_PLAYEROUTPUTLEVEL)
  615. //
  616. typedef struct
  617. {
  618. DWORD dwSize; // Size of this structure
  619. DVID dvidSourcePlayerID; // DVID of the player
  620. DWORD dwPeakLevel; // Peak level of the player's stream
  621. PVOID pvPlayerContext; // Context value for the player
  622. } DVMSG_PLAYEROUTPUTLEVEL, *LPDVMSG_PLAYEROUTPUTLEVEL, *PDVMSG_PLAYEROUTPUTLEVEL;
  623. //
  624. // An audio stream from the specified player has started playing back on the local client.
  625. // (DVMSGID_PLAYERVOICESTART).
  626. //
  627. typedef struct
  628. {
  629. DWORD dwSize; // Size of this structure
  630. DVID dvidSourcePlayerID; // DVID of the Player
  631. PVOID pvPlayerContext; // Context value for this player
  632. } DVMSG_PLAYERVOICESTART, *LPDVMSG_PLAYERVOICESTART, *PDVMSG_PLAYERVOICESTART;
  633. //
  634. // The audio stream from the specified player has stopped playing back on the local client.
  635. // (DVMSGID_PLAYERVOICESTOP)
  636. //
  637. typedef struct
  638. {
  639. DWORD dwSize; // Size of this structure
  640. DVID dvidSourcePlayerID; // DVID of the player
  641. PVOID pvPlayerContext; // Context value for this player
  642. } DVMSG_PLAYERVOICESTOP, *LPDVMSG_PLAYERVOICESTOP, *PDVMSG_PLAYERVOICESTOP;
  643. //
  644. // Transmission has started on the local machine
  645. // (DVMSGID_RECORDSTART)
  646. //
  647. typedef struct
  648. {
  649. DWORD dwSize; // Size of this structure
  650. DWORD dwPeakLevel; // Peak level that caused transmission to start
  651. PVOID pvLocalPlayerContext; // Context value for the local player
  652. } DVMSG_RECORDSTART, *LPDVMSG_RECORDSTART, *PDVMSG_RECORDSTART;
  653. //
  654. // Transmission has stopped on the local machine
  655. // (DVMSGID_RECORDSTOP)
  656. //
  657. typedef struct
  658. {
  659. DWORD dwSize; // Size of this structure
  660. DWORD dwPeakLevel; // Peak level that caused transmission to stop
  661. PVOID pvLocalPlayerContext; // Context value for the local player
  662. } DVMSG_RECORDSTOP, *LPDVMSG_RECORDSTOP, *PDVMSG_RECORDSTOP;
  663. //
  664. // The voice session has been lost
  665. // (DVMSGID_SESSIONLOST)
  666. //
  667. typedef struct
  668. {
  669. DWORD dwSize; // Size of this structure
  670. HRESULT hrResult; // Reason the session was disconnected
  671. } DVMSG_SESSIONLOST, *LPDVMSG_SESSIONLOST, *PDVMSG_SESSIONLOST;
  672. //
  673. // The target list has been updated for the local client
  674. // (DVMSGID_SETTARGETS)
  675. //
  676. typedef struct
  677. {
  678. DWORD dwSize; // Size of this structure
  679. DWORD dwNumTargets; // # of targets
  680. PDVID pdvidTargets; // An array of DVIDs specifying the current targets
  681. } DVMSG_SETTARGETS, *LPDVMSG_SETTARGETS, *PDVMSG_SETTARGETS;
  682. //@@BEGIN_MSINTERNAL
  683. /****************************************************************************
  684. *
  685. * DirectPlayVoice Transport Defines / Types / Constants -- MS INTERNAL
  686. *
  687. ****************************************************************************/
  688. // Use waveOUT instead of DS
  689. #define DVSOUNDCONFIG_FORCEWAVEOUT 0x10000000
  690. #define DVSOUNDCONFIG_ALLOWWAVEOUT 0x20000000
  691. // Use waveIN instead of DSC
  692. #define DVSOUNDCONFIG_FORCEWAVEIN 0x40000000
  693. #define DVSOUNDCONFIG_ALLOWWAVEIN 0x80000000
  694. // Transport session is peer-to-peer
  695. #define DVTRANSPORT_SESSION_PEERTOPEER 0x00000001
  696. // Transport session is client/server
  697. #define DVTRANSPORT_SESSION_CLIENTSERVER 0x00000002
  698. // Host can migrate
  699. #define DVTRANSPORT_MIGRATEHOST 0x00000001
  700. // Multicast optimizations are enabled
  701. #define DVTRANSPORT_MULTICAST 0x00000002
  702. // The local player is the host of the session
  703. #define DVTRANSPORT_LOCALHOST 0x00000004
  704. // Send the message guaranteed
  705. #define DVTRANSPORT_SEND_GUARANTEED 0x00000001
  706. #define DVTRANSPORT_SEND_SYNC 0x00000002
  707. #define DVPEFLAGS_FIRSTPLAYER 0x00000001
  708. #define DVTRANSPORT_OBJECTTYPE_SERVER 0x00000001
  709. #define DVTRANSPORT_OBJECTTYPE_CLIENT 0x00000002
  710. #define DVTRANSPORT_OBJECTTYPE_BOTH (DVTRANSPORT_OBJECTTYPE_SERVER | DVTRANSPORT_OBJECTTYPE_CLIENT)
  711. typedef struct _DVTRANSPORT_BUFFERDESC
  712. {
  713. DWORD dwBufferSize;
  714. PBYTE pBufferData;
  715. LONG lRefCount;
  716. PVOID pvContext;
  717. DWORD dwObjectType;
  718. DWORD dwFlags;
  719. } DVTRANSPORT_BUFFERDESC, *PDVTRANSPORT_BUFFERDESC;
  720. /*
  721. * DIRECTVOICENOTIFY DEFINES
  722. *
  723. * Used to identify the type of notification in calls
  724. * to IDirectPlayVoiceNotify::NotifyEvent
  725. */
  726. // No longer used
  727. #define DVEVENT_STARTSESSION 0x00000001
  728. // If the transport session is lost or shutdown
  729. #define DVEVENT_STOPSESSION 0x00000002
  730. // A player was added to the system,
  731. // Param1 = DVID of new player
  732. // Param2 = Player context (set by handler and then returned)
  733. #define DVEVENT_ADDPLAYER 0x00000003
  734. // A player disconnected.
  735. // Param1 = DVID of disconnected player
  736. // Param1 = Player context
  737. #define DVEVENT_REMOVEPLAYER 0x00000004
  738. // A group was created. Param1 = DVID of created group
  739. #define DVEVENT_CREATEGROUP 0x00000005
  740. // A group was deleted. Param1 = DVID of deleted group
  741. #define DVEVENT_DELETEGROUP 0x00000006
  742. // Player was added to a group.
  743. // Param1 = DVID of group Param2 = DVID of player
  744. #define DVEVENT_ADDPLAYERTOGROUP 0x00000007
  745. // Player was removed from the group
  746. // Param1 = DVID of group Param2 = DVID of player
  747. #define DVEVENT_REMOVEPLAYERFROMGROUP 0x00000008
  748. // Called when the host migrates
  749. // Param1 = DVID of new host (player ID, not system ID)
  750. #define DVEVENT_MIGRATEHOST 0x00000009
  751. // Called when a buffer the voice layer has given
  752. // the transport is completed.
  753. // Param1 = pointer to DVEVENTMSG_SENDCOMPLETE structure
  754. //
  755. #define DVEVENT_SENDCOMPLETE 0x0000000A
  756. typedef struct _DVEVENTMSG_SENDCOMPLETE
  757. {
  758. LPVOID pvUserContext;
  759. HRESULT hrSendResult;
  760. } DVEVENTMSG_SENDCOMPLETE, *PDVEVENTMSG_SENDCOMPLETE;
  761. //@@END_MSINTERNAL
  762. /****************************************************************************
  763. *
  764. * DirectPlayVoice Functions
  765. *
  766. ****************************************************************************/
  767. /*
  768. *
  769. * This function is no longer supported. It is recommended that CoCreateInstance be used to create
  770. * DirectPlay voice objects.
  771. *
  772. * extern HRESULT WINAPI DirectPlayVoiceCreate( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown);
  773. *
  774. */
  775. /****************************************************************************
  776. *
  777. * DirectPlay8 Application Interfaces
  778. *
  779. ****************************************************************************/
  780. #undef INTERFACE
  781. #define INTERFACE IDirectPlayVoiceClient
  782. DECLARE_INTERFACE_( IDirectPlayVoiceClient, IUnknown )
  783. {
  784. /*** IUnknown methods ***/
  785. STDMETHOD(QueryInterface)(THIS_ REFIID riid, PVOID *ppvObj) PURE;
  786. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  787. STDMETHOD_(ULONG,Release)(THIS) PURE;
  788. /*** IDirectPlayVoiceClient methods ***/
  789. STDMETHOD_(HRESULT, Initialize) (THIS_ LPUNKNOWN, PDVMESSAGEHANDLER, PVOID, PDWORD, DWORD ) PURE;
  790. STDMETHOD_(HRESULT, Connect) (THIS_ PDVSOUNDDEVICECONFIG, PDVCLIENTCONFIG, DWORD ) PURE;
  791. STDMETHOD_(HRESULT, Disconnect) (THIS_ DWORD ) PURE;
  792. STDMETHOD_(HRESULT, GetSessionDesc)(THIS_ PDVSESSIONDESC ) PURE;
  793. STDMETHOD_(HRESULT, GetClientConfig)(THIS_ PDVCLIENTCONFIG ) PURE;
  794. STDMETHOD_(HRESULT, SetClientConfig)(THIS_ PDVCLIENTCONFIG ) PURE;
  795. STDMETHOD_(HRESULT, GetCaps) (THIS_ PDVCAPS ) PURE;
  796. STDMETHOD_(HRESULT, GetCompressionTypes)( THIS_ PVOID, PDWORD, PDWORD, DWORD ) PURE;
  797. STDMETHOD_(HRESULT, SetTransmitTargets)( THIS_ PDVID, DWORD, DWORD ) PURE;
  798. STDMETHOD_(HRESULT, GetTransmitTargets)( THIS_ PDVID, PDWORD, DWORD ) PURE;
  799. STDMETHOD_(HRESULT, Create3DSoundBuffer)( THIS_ DVID, LPDIRECTSOUNDBUFFER, DWORD, DWORD, LPDIRECTSOUND3DBUFFER * ) PURE;
  800. STDMETHOD_(HRESULT, Delete3DSoundBuffer)( THIS_ DVID, LPDIRECTSOUND3DBUFFER * ) PURE;
  801. STDMETHOD_(HRESULT, SetNotifyMask)( THIS_ PDWORD, DWORD ) PURE;
  802. STDMETHOD_(HRESULT, GetSoundDeviceConfig)( THIS_ PDVSOUNDDEVICECONFIG, PDWORD ) PURE;
  803. };
  804. //@@BEGIN_MSINTERNAL
  805. #undef INTERFACE
  806. #define INTERFACE IDirectPlayVoiceNotify
  807. DECLARE_INTERFACE_( IDirectPlayVoiceNotify, IUnknown )
  808. {
  809. /*** IUnknown methods ***/
  810. STDMETHOD(QueryInterface) (THIS_ REFIID riid, PVOID * ppvObj) PURE;
  811. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  812. STDMETHOD_(ULONG,Release) (THIS) PURE;
  813. /*** IDirectPlayVoiceNotify methods ***/
  814. // Initialize
  815. //
  816. // Initializes the DirectPlayVoice interface associated with this
  817. // interface. During this call DirectPlayVoice will call
  818. // GetSessionInfo on the associated Transport interface.
  819. //
  820. STDMETHOD_(HRESULT,Initialize)(THIS ) PURE;
  821. // NotifyEvent
  822. //
  823. // Called when an event occurs that DirectPlayVoice needs to be informed
  824. // of. See descriptions of DVEVENT_XXXXX for how the parameters are
  825. // used for each message.
  826. //
  827. // DWORD - Type of message (DVEVENT_XXXXXX)
  828. // DWORD - Param1
  829. // DWORD - Param2
  830. //
  831. STDMETHOD_(HRESULT,NotifyEvent)(THIS_ DWORD, DWORD_PTR, DWORD_PTR) PURE;
  832. // ReceiveSpeechMessage
  833. //
  834. // Called when a message is received by DirectPlay that is for
  835. // DirectPlayVoice.
  836. //
  837. // DVID - Source of the message
  838. // LPVOID - Pointer to message buffer
  839. // DWORD - Size of the received message
  840. //
  841. STDMETHOD_(HRESULT,ReceiveSpeechMessage)(THIS_ DVID, DVID, PVOID, DWORD) PURE;
  842. };
  843. #undef INTERFACE
  844. #define INTERFACE IDirectPlayVoiceTransport
  845. DECLARE_INTERFACE_( IDirectPlayVoiceTransport, IUnknown )
  846. {
  847. /*** IUnknown methods ***/
  848. STDMETHOD(QueryInterface) (THIS_ REFIID riid, PVOID * ppvObj) PURE;
  849. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  850. STDMETHOD_(ULONG,Release) (THIS) PURE;
  851. /*** IDirectPlayVoiceTransport methods ***/
  852. // Advise
  853. //
  854. // Advises the transport to call us back via the interface passed in the
  855. // LLPUNKNOWN parameter. QueryInterface on the LPUNKNOWN for a
  856. // IDirectPlayVoiceNotify. Must call IDirectPlayVoiceNotify::INitialize
  857. // on the interface before returning.
  858. //
  859. // LPUNKNOWN - IUnknown interface for the IDirectPlayVoiceNotify to
  860. // make notifications on.
  861. // DWORD - Voice Object Type (DVTRANSPORT_OBJECTTYPE_XXXX)
  862. //
  863. STDMETHOD_(HRESULT, Advise) (THIS_ LPUNKNOWN, DWORD) PURE;
  864. // UnAdvise
  865. //
  866. // Tells the transport that we no longer need to be called back on our
  867. // notify interface. The transport should Release the instance of the
  868. // notify interface that they have.
  869. //
  870. // DWORD - Voice Object Type (DVTRANSPORT_OBJECTTYPE_XXXX)
  871. //
  872. STDMETHOD_(HRESULT, UnAdvise) (THIS_ DWORD) PURE;
  873. // IsGroupMember
  874. //
  875. // This function returns DP_OK if the specified user is a member of
  876. // the specified group.
  877. //
  878. // DVID - DVID of the group to check
  879. // DVID - DVID of the player
  880. //
  881. STDMETHOD_(HRESULT, IsGroupMember)(THIS_ DVID, DVID ) PURE;
  882. // SendSpeech
  883. //
  884. // Transmits a message from the specified user ID to the specified user ID.
  885. // (Speech specific). Messages sent through this interface are always
  886. // sent ASYNC and if the DVTRANSPORT_SEND_GUARANTEED flag is specified
  887. // then the message MUST be sent guaranteed.
  888. //
  889. // DVID - ID of the player this will be from.
  890. // DVID - ID of the player this will be sent to.
  891. // LPVOID - Pointer to the data to send
  892. // DWORD - Size of the data to send, in bytes
  893. // LPVOID - User context for send
  894. // DWORD - FLags (Combination of DVTRANSPORT_SEND_GUARANTEED).
  895. //
  896. STDMETHOD_(HRESULT, SendSpeech)(THIS_ DVID, DVID, PDVTRANSPORT_BUFFERDESC, LPVOID, DWORD ) PURE;
  897. // GetSessionInfo
  898. //
  899. // Fills the passed structure with details on the session that is running
  900. // on the transport object. See description of DVTRANSPORTINFO for details.
  901. //
  902. STDMETHOD_(HRESULT, GetSessionInfo)(THIS_ PDVTRANSPORTINFO ) PURE;
  903. // IsValidEntity
  904. //
  905. // Checks to see if specified user is valid player or group in session
  906. // DVID = ID of the entity to check
  907. // LPBOOL = Pointer to BOOL to place result. TRUE for Valid Player/
  908. // Group, FALSE if it is not.
  909. //
  910. // Not needed in Client/Server Mode
  911. STDMETHOD_(HRESULT, IsValidEntity)(THIS_ DVID, PBOOL ) PURE;
  912. // SendSpeechEx
  913. //
  914. // Transmits a message from the specified user ID to the specified user ID.
  915. // (Speech specific). Messages sent through this interface are always
  916. // sent ASYNC and if the DVTRANSPORT_SEND_GUARANTEED flag is specified
  917. // then the message MUST be sent guaranteed.
  918. //
  919. // DVID - ID of the player this will be from.
  920. // DWORD - count on entries in (DVID *)[] array
  921. // LPDVID - Array of send targets
  922. // LPVOID - Pointer to the data to send
  923. // DWORD - Size of the data to send, in bytes
  924. // LPVOID - User context for send
  925. // DWORD - Flags (Combination of DVTRANSPORT_SEND_GUARANTEED).
  926. //
  927. STDMETHOD_(HRESULT, SendSpeechEx)(THIS_ DVID, DWORD, UNALIGNED DVID *, PDVTRANSPORT_BUFFERDESC, LPVOID, DWORD ) PURE;
  928. // IsValidGroup
  929. //
  930. // Checks to see if the specified ID is a valid Group ID
  931. //
  932. // DVID = ID of the entity to check
  933. //
  934. STDMETHOD_(HRESULT, IsValidGroup)(THIS_ DVID, PBOOL ) PURE;
  935. // IsValidPlayer
  936. //
  937. // Checks to see if the specified ID is a valid Player ID
  938. //
  939. // DVID = ID of the entity to check
  940. //
  941. STDMETHOD_(HRESULT, IsValidPlayer)(THIS_ DVID, PBOOL ) PURE;
  942. };
  943. //@@END_MSINTERNAL
  944. #undef INTERFACE
  945. #define INTERFACE IDirectPlayVoiceServer
  946. DECLARE_INTERFACE_( IDirectPlayVoiceServer, IUnknown )
  947. {
  948. /*** IUnknown methods ***/
  949. STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  950. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  951. STDMETHOD_(ULONG,Release) (THIS) PURE;
  952. /*** IDirectPlayVoiceServer methods ***/
  953. STDMETHOD_(HRESULT, Initialize) (THIS_ LPUNKNOWN, PDVMESSAGEHANDLER, PVOID, LPDWORD, DWORD ) PURE;
  954. STDMETHOD_(HRESULT, StartSession) (THIS_ PDVSESSIONDESC, DWORD ) PURE;
  955. STDMETHOD_(HRESULT, StopSession) (THIS_ DWORD ) PURE;
  956. STDMETHOD_(HRESULT, GetSessionDesc)(THIS_ PDVSESSIONDESC ) PURE;
  957. STDMETHOD_(HRESULT, SetSessionDesc)(THIS_ PDVSESSIONDESC ) PURE;
  958. STDMETHOD_(HRESULT, GetCaps) (THIS_ PDVCAPS ) PURE;
  959. STDMETHOD_(HRESULT, GetCompressionTypes)( THIS_ PVOID, PDWORD, PDWORD, DWORD ) PURE;
  960. STDMETHOD_(HRESULT, SetTransmitTargets)( THIS_ DVID, PDVID, DWORD, DWORD ) PURE;
  961. STDMETHOD_(HRESULT, GetTransmitTargets)( THIS_ DVID, PDVID, PDWORD, DWORD ) PURE;
  962. STDMETHOD_(HRESULT, SetNotifyMask)( THIS_ PDWORD, DWORD ) PURE;
  963. };
  964. #undef INTERFACE
  965. #define INTERFACE IDirectPlayVoiceTest
  966. DECLARE_INTERFACE_( IDirectPlayVoiceTest, IUnknown )
  967. {
  968. /*** IUnknown methods ***/
  969. STDMETHOD(QueryInterface) (THIS_ REFIID riid, PVOID * ppvObj) PURE;
  970. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  971. STDMETHOD_(ULONG,Release) (THIS) PURE;
  972. /*** IDirectPlayVoiceTest methods ***/
  973. STDMETHOD_(HRESULT, CheckAudioSetup) (THIS_ const GUID *, const GUID * , HWND, DWORD ) PURE;
  974. };
  975. #if !defined(__cplusplus) || defined(CINTERFACE)
  976. #define IDirectPlayVoiceClient_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  977. #define IDirectPlayVoiceClient_AddRef(p) (p)->lpVtbl->AddRef(p)
  978. #define IDirectPlayVoiceClient_Release(p) (p)->lpVtbl->Release(p)
  979. #define IDirectPlayVoiceClient_Initialize(p,a,b,c,d,e) (p)->lpVtbl->Initialize(p,a,b,c,d,e)
  980. #define IDirectPlayVoiceClient_Connect(p,a,b,c) (p)->lpVtbl->Connect(p,a,b,c)
  981. #define IDirectPlayVoiceClient_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a)
  982. #define IDirectPlayVoiceClient_GetSessionDesc(p,a) (p)->lpVtbl->GetSessionDesc(p,a)
  983. #define IDirectPlayVoiceClient_GetClientConfig(p,a) (p)->lpVtbl->GetClientConfig(p,a)
  984. #define IDirectPlayVoiceClient_SetClientConfig(p,a) (p)->lpVtbl->SetClientConfig(p,a)
  985. #define IDirectPlayVoiceClient_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
  986. #define IDirectPlayVoiceClient_GetCompressionTypes(p,a,b,c,d) (p)->lpVtbl->GetCompressionTypes(p,a,b,c,d)
  987. #define IDirectPlayVoiceClient_SetTransmitTargets(p,a,b,c) (p)->lpVtbl->SetTransmitTargets(p,a,b,c)
  988. #define IDirectPlayVoiceClient_GetTransmitTargets(p,a,b,c) (p)->lpVtbl->GetTransmitTargets(p,a,b,c)
  989. #define IDirectPlayVoiceClient_Create3DSoundBuffer(p,a,b,c,d,e) (p)->lpVtbl->Create3DSoundBuffer(p,a,b,c,d,e)
  990. #define IDirectPlayVoiceClient_Delete3DSoundBuffer(p,a,b) (p)->lpVtbl->Delete3DSoundBuffer(p,a,b)
  991. #define IDirectPlayVoiceClient_SetNotifyMask(p,a,b) (p)->lpVtbl->SetNotifyMask(p,a,b)
  992. #define IDirectPlayVoiceClient_GetSoundDeviceConfig(p,a,b) (p)->lpVtbl->GetSoundDeviceConfig(p,a,b)
  993. #define IDirectPlayVoiceServer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  994. #define IDirectPlayVoiceServer_AddRef(p) (p)->lpVtbl->AddRef(p)
  995. #define IDirectPlayVoiceServer_Release(p) (p)->lpVtbl->Release(p)
  996. #define IDirectPlayVoiceServer_Initialize(p,a,b,c,d,e) (p)->lpVtbl->Initialize(p,a,b,c,d,e)
  997. #define IDirectPlayVoiceServer_StartSession(p,a,b) (p)->lpVtbl->StartSession(p,a,b)
  998. #define IDirectPlayVoiceServer_StopSession(p,a) (p)->lpVtbl->StopSession(p,a)
  999. #define IDirectPlayVoiceServer_GetSessionDesc(p,a) (p)->lpVtbl->GetSessionDesc(p,a)
  1000. #define IDirectPlayVoiceServer_SetSessionDesc(p,a) (p)->lpVtbl->SetSessionDesc(p,a)
  1001. #define IDirectPlayVoiceServer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
  1002. #define IDirectPlayVoiceServer_GetCompressionTypes(p,a,b,c,d) (p)->lpVtbl->GetCompressionTypes(p,a,b,c,d)
  1003. #define IDirectPlayVoiceServer_SetTransmitTargets(p,a,b,c,d) (p)->lpVtbl->SetTransmitTargets(p,a,b,c,d)
  1004. #define IDirectPlayVoiceServer_GetTransmitTargets(p,a,b,c,d) (p)->lpVtbl->GetTransmitTargets(p,a,b,c,d)
  1005. #define IDirectPlayVoiceServer_SetNotifyMask(p,a,b) (p)->lpVtbl->SetNotifyMask(p,a,b)
  1006. #define IDirectPlayVoiceTest_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  1007. #define IDirectPlayVoiceTest_AddRef(p) (p)->lpVtbl->AddRef(p)
  1008. #define IDirectPlayVoiceTest_Release(p) (p)->lpVtbl->Release(p)
  1009. #define IDirectPlayVoiceTest_CheckAudioSetup(p,a,b,c,d) (p)->lpVtbl->CheckAudioSetup(p,a,b,c,d)
  1010. //@@BEGIN_MSINTERNAL
  1011. #define IDirectPlayVoiceNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  1012. #define IDirectPlayVoiceNotify_AddRef(p) (p)->lpVtbl->AddRef(p)
  1013. #define IDirectPlayVoiceNotify_Release(p) (p)->lpVtbl->Release(p)
  1014. #define IDirectPlayVoiceNotify_Initialize(p) (p)->lpVtbl->Initialize(p)
  1015. #define IDirectPlayVoiceNotify_NotifyEvent(p,a,b,c) (p)->lpVtbl->NotifyEvent(p,a,b,c)
  1016. #define IDirectPlayVoiceNotify_ReceiveSpeechMessage(p,a,b,c,d) (p)->lpVtbl->ReceiveSpeechMessage(p,a,b,c,d)
  1017. #define IDirectPlayVoiceTransport_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  1018. #define IDirectPlayVoiceTransport_AddRef(p) (p)->lpVtbl->AddRef(p)
  1019. #define IDirectPlayVoiceTransport_Release(p) (p)->lpVtbl->Release(p)
  1020. #define IDirectPlayVoiceTransport_Advise(p,a,b) (p)->lpVtbl->Advise(p,a,b)
  1021. #define IDirectPlayVoiceTransport_UnAdvise(p,a) (p)->lpVtbl->UnAdvise(p,a)
  1022. #define IDirectPlayVoiceTransport_IsGroupMember(p,a,b) (p)->lpVtbl->IsGroupMember(p,a,b)
  1023. #define IDirectPlayVoiceTransport_SendSpeech(p,a,b,c,d,e) (p)->lpVtbl->SendSpeech(p,a,b,c,d,e)
  1024. #define IDirectPlayVoiceTransport_GetSessionInfo(p,a) (p)->lpVtbl->GetSessionInfo(p,a)
  1025. #define IDirectPlayVoiceTransport_IsValidEntity(p,a,b) (p)->lpVtbl->IsValidEntity(p,a,b)
  1026. #define IDirectPlayVoiceTransport_SendSpeechEx(p,a,b,c,d,e,f) (p)->lpVtbl->SendSpeechEx(p,a,b,c,d,e,f)
  1027. #define IDirectPlayVoiceTransport_IsValidGroup(p,a,b) (p)->lpVtbl->IsValidGroup(p,a,b)
  1028. #define IDirectPlayVoiceTransport_IsValidPlayer(p,a,b) (p)->lpVtbl->IsValidPlayer(p,a,b)
  1029. #define IDirectPlayVoiceTransport_GetPlayerContext(p,a,b,c) (p)->lpVtbl->GetPlayerContext(p,a,b,c)
  1030. #define IDirectPlayVoiceTransport_SetPlayerContext(p,a,b,c) (p)->lpVtbl->SetPlayerContext(p,a,b,c)
  1031. //@@END_MSINTERNAL
  1032. #else /* C++ */
  1033. #define IDirectPlayVoiceClient_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
  1034. #define IDirectPlayVoiceClient_AddRef(p) (p)->AddRef()
  1035. #define IDirectPlayVoiceClient_Release(p) (p)->Release()
  1036. #define IDirectPlayVoiceClient_Initialize(p,a,b,c,d,e) (p)->Initialize(a,b,c,d,e)
  1037. #define IDirectPlayVoiceClient_Connect(p,a,b,c) (p)->Connect(a,b,c)
  1038. #define IDirectPlayVoiceClient_Disconnect(p,a) (p)->Disconnect(a)
  1039. #define IDirectPlayVoiceClient_GetSessionDesc(p,a) (p)->GetSessionDesc(a)
  1040. #define IDirectPlayVoiceClient_GetClientConfig(p,a) (p)->GetClientConfig(a)
  1041. #define IDirectPlayVoiceClient_SetClientConfig(p,a) (p)->SetClientConfig(a)
  1042. #define IDirectPlayVoiceClient_GetCaps(p,a) (p)->GetCaps(a)
  1043. #define IDirectPlayVoiceClient_GetCompressionTypes(p,a,b,c,d) (p)->GetCompressionTypes(a,b,c,d)
  1044. #define IDirectPlayVoiceClient_SetTransmitTargets(p,a,b,c) (p)->SetTransmitTargets(a,b,c)
  1045. #define IDirectPlayVoiceClient_GetTransmitTargets(p,a,b,c) (p)->GetTransmitTargets(a,b,c)
  1046. #define IDirectPlayVoiceClient_Create3DSoundBuffer(p,a,b,c,d,e) (p)->Create3DSoundBuffer(a,b,c,d,e)
  1047. #define IDirectPlayVoiceClient_Delete3DSoundBuffer(p,a,b) (p)->Delete3DSoundBuffer(a,b)
  1048. #define IDirectPlayVoiceClient_SetNotifyMask(p,a,b) (p)->SetNotifyMask(a,b)
  1049. #define IDirectPlayVoiceClient_GetSoundDeviceConfig(p,a,b) (p)->GetSoundDeviceConfig(a,b)
  1050. #define IDirectPlayVoiceServer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
  1051. #define IDirectPlayVoiceServer_AddRef(p) (p)->AddRef()
  1052. #define IDirectPlayVoiceServer_Release(p) (p)->Release()
  1053. #define IDirectPlayVoiceServer_Initialize(p,a,b,c,d,e) (p)->Initialize(a,b,c,d,e)
  1054. #define IDirectPlayVoiceServer_StartSession(p,a,b) (p)->StartSession(a,b)
  1055. #define IDirectPlayVoiceServer_StopSession(p,a) (p)->StopSession(a)
  1056. #define IDirectPlayVoiceServer_GetSessionDesc(p,a) (p)->GetSessionDesc(a)
  1057. #define IDirectPlayVoiceServer_SetSessionDesc(p,a) (p)->SetSessionDesc(a)
  1058. #define IDirectPlayVoiceServer_GetCaps(p,a) (p)->GetCaps(a)
  1059. #define IDirectPlayVoiceServer_GetCompressionTypes(p,a,b,c,d) (p)->GetCompressionTypes(a,b,c,d)
  1060. #define IDirectPlayVoiceServer_SetTransmitTargets(p,a,b,c,d) (p)->SetTransmitTargets(a,b,c,d)
  1061. #define IDirectPlayVoiceServer_GetTransmitTargets(p,a,b,c,d) (p)->GetTransmitTargets(a,b,c,d)
  1062. #define IDirectPlayVoiceServer_SetNotifyMask(p,a,b) (p)->SetNotifyMask(a,b)
  1063. #define IDirectPlayVoiceTest_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
  1064. #define IDirectPlayVoiceTest_AddRef(p) (p)->AddRef()
  1065. #define IDirectPlayVoiceTest_Release(p) (p)->Release()
  1066. #define IDirectPlayVoiceTest_CheckAudioSetup(p,a,b,c,d) (p)->CheckAudioSetup(a,b,c,d)
  1067. //@@BEGIN_MSINTERNAL
  1068. #define IDirectPlayVoiceNotify_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
  1069. #define IDirectPlayVoiceNotify_AddRef(p) (p)->AddRef()
  1070. #define IDirectPlayVoiceNotify_Release(p) (p)->Release()
  1071. #define IDirectPlayVoiceNotify_Initialize(p) (p)->Initialize()
  1072. #define IDirectPlayVoiceNotify_NotifyEvent(p,a,b,c) (p)->NotifyEvent(a,b,c)
  1073. #define IDirectPlayVoiceNotify_ReceiveSpeechMessage(p,a,b,c,d) (p)->ReceiveSpeechMessage(a,b,c,d)
  1074. #define IDirectPlayVoiceTransport_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
  1075. #define IDirectPlayVoiceTransport_AddRef(p) (p)->AddRef()
  1076. #define IDirectPlayVoiceTransport_Release(p) (p)->Release()
  1077. #define IDirectPlayVoiceTransport_Advise(p,a,b) (p)->Advise(a,b)
  1078. #define IDirectPlayVoiceTransport_UnAdvise(p,a) (p)->UnAdvise(a)
  1079. #define IDirectPlayVoiceTransport_IsGroupMember(p,a,b) (p)->IsGroupMember(a,b)
  1080. #define IDirectPlayVoiceTransport_SendSpeech(p,a,b,c,d,e) (p)->SendSpeech(a,b,c,d,e)
  1081. #define IDirectPlayVoiceTransport_GetSessionInfo(p,a) (p)->GetSessionInfo(a)
  1082. #define IDirectPlayVoiceTransport_IsValidEntity(p,a,b) (p)->IsValidEntity(a,b)
  1083. #define IDirectPlayVoiceTransport_SendSpeechEx(p,a,b,c,d,e,f) (p)->SendSpeechEx(a,b,c,d,e,f)
  1084. #define IDirectPlayVoiceTransport_IsValidGroup(p,a,b) (p)->IsValidGroup(a,b)
  1085. #define IDirectPlayVoiceTransport_IsValidPlayer(p,a,b) (p)->IsValidPlayer(a,b)
  1086. #define IDirectPlayVoiceTransport_GetPlayerContext(p,a,b,c) (p)->GetPlayerContext(a,b,c)
  1087. #define IDirectPlayVoiceTransport_SetPlayerContext(p,a,b,c) (p)->SetPlayerContext(a,b,c)
  1088. //@@END_MSINTERNAL
  1089. #endif
  1090. /****************************************************************************
  1091. *
  1092. * DIRECTPLAYVOICE ERRORS
  1093. *
  1094. * Errors are represented by negative values and cannot be combined.
  1095. *
  1096. ****************************************************************************/
  1097. #define _FACDPV 0x15
  1098. #define MAKE_DVHRESULT( code ) MAKE_HRESULT( 1, _FACDPV, code )
  1099. #define DV_OK S_OK
  1100. #define DV_FULLDUPLEX MAKE_HRESULT( 0, _FACDPV, 0x0005 )
  1101. #define DV_HALFDUPLEX MAKE_HRESULT( 0, _FACDPV, 0x000A )
  1102. #define DV_PENDING MAKE_HRESULT( 0, _FACDPV, 0x0010 )
  1103. #define DVERR_BUFFERTOOSMALL MAKE_DVHRESULT( 0x001E )
  1104. #define DVERR_EXCEPTION MAKE_DVHRESULT( 0x004A )
  1105. #define DVERR_GENERIC E_FAIL
  1106. #define DVERR_INVALIDFLAGS MAKE_DVHRESULT( 0x0078 )
  1107. #define DVERR_INVALIDOBJECT MAKE_DVHRESULT( 0x0082 )
  1108. #define DVERR_INVALIDPARAM E_INVALIDARG
  1109. #define DVERR_INVALIDPLAYER MAKE_DVHRESULT( 0x0087 )
  1110. #define DVERR_INVALIDGROUP MAKE_DVHRESULT( 0x0091 )
  1111. #define DVERR_INVALIDHANDLE MAKE_DVHRESULT( 0x0096 )
  1112. #define DVERR_OUTOFMEMORY E_OUTOFMEMORY
  1113. #define DVERR_PENDING DV_PENDING
  1114. #define DVERR_NOTSUPPORTED E_NOTIMPL
  1115. #define DVERR_NOINTERFACE E_NOINTERFACE
  1116. #define DVERR_SESSIONLOST MAKE_DVHRESULT( 0x012C )
  1117. #define DVERR_NOVOICESESSION MAKE_DVHRESULT( 0x012E )
  1118. #define DVERR_CONNECTIONLOST MAKE_DVHRESULT( 0x0168 )
  1119. #define DVERR_NOTINITIALIZED MAKE_DVHRESULT( 0x0169 )
  1120. #define DVERR_CONNECTED MAKE_DVHRESULT( 0x016A )
  1121. #define DVERR_NOTCONNECTED MAKE_DVHRESULT( 0x016B )
  1122. #define DVERR_CONNECTABORTING MAKE_DVHRESULT( 0x016E )
  1123. #define DVERR_NOTALLOWED MAKE_DVHRESULT( 0x016F )
  1124. #define DVERR_INVALIDTARGET MAKE_DVHRESULT( 0x0170 )
  1125. #define DVERR_TRANSPORTNOTHOST MAKE_DVHRESULT( 0x0171 )
  1126. #define DVERR_COMPRESSIONNOTSUPPORTED MAKE_DVHRESULT( 0x0172 )
  1127. #define DVERR_ALREADYPENDING MAKE_DVHRESULT( 0x0173 )
  1128. #define DVERR_SOUNDINITFAILURE MAKE_DVHRESULT( 0x0174 )
  1129. #define DVERR_TIMEOUT MAKE_DVHRESULT( 0x0175 )
  1130. #define DVERR_CONNECTABORTED MAKE_DVHRESULT( 0x0176 )
  1131. #define DVERR_NO3DSOUND MAKE_DVHRESULT( 0x0177 )
  1132. #define DVERR_ALREADYBUFFERED MAKE_DVHRESULT( 0x0178 )
  1133. #define DVERR_NOTBUFFERED MAKE_DVHRESULT( 0x0179 )
  1134. #define DVERR_HOSTING MAKE_DVHRESULT( 0x017A )
  1135. #define DVERR_NOTHOSTING MAKE_DVHRESULT( 0x017B )
  1136. #define DVERR_INVALIDDEVICE MAKE_DVHRESULT( 0x017C )
  1137. #define DVERR_RECORDSYSTEMERROR MAKE_DVHRESULT( 0x017D )
  1138. #define DVERR_PLAYBACKSYSTEMERROR MAKE_DVHRESULT( 0x017E )
  1139. #define DVERR_SENDERROR MAKE_DVHRESULT( 0x017F )
  1140. #define DVERR_USERCANCEL MAKE_DVHRESULT( 0x0180 )
  1141. #define DVERR_RUNSETUP MAKE_DVHRESULT( 0x0183 )
  1142. #define DVERR_INCOMPATIBLEVERSION MAKE_DVHRESULT( 0x0184 )
  1143. #define DVERR_INITIALIZED MAKE_DVHRESULT( 0x0187 )
  1144. #define DVERR_INVALIDPOINTER E_POINTER
  1145. #define DVERR_NOTRANSPORT MAKE_DVHRESULT( 0x0188 )
  1146. #define DVERR_NOCALLBACK MAKE_DVHRESULT( 0x0189 )
  1147. #define DVERR_TRANSPORTNOTINIT MAKE_DVHRESULT( 0x018A )
  1148. #define DVERR_TRANSPORTNOSESSION MAKE_DVHRESULT( 0x018B )
  1149. #define DVERR_TRANSPORTNOPLAYER MAKE_DVHRESULT( 0x018C )
  1150. #define DVERR_USERBACK MAKE_DVHRESULT( 0x018D )
  1151. #define DVERR_NORECVOLAVAILABLE MAKE_DVHRESULT( 0x018E )
  1152. #define DVERR_INVALIDBUFFER MAKE_DVHRESULT( 0x018F )
  1153. #define DVERR_LOCKEDBUFFER MAKE_DVHRESULT( 0x0190 )
  1154. //@@BEGIN_MSINTERNAL
  1155. #define DVERR_CHILDPROCESSFAILED DVERR_GENERIC
  1156. #define DV_EXIT MAKE_HRESULT( 0, _FACDPV, 0x000F )
  1157. #define DVERR_UNKNOWN DVERR_GENERIC
  1158. #define DVERR_PREVIOUSCRASH MAKE_DVHRESULT( 0x0185 )
  1159. #define DVERR_WIN32 DVERR_GENERIC
  1160. //@@END_MSINTERNAL
  1161. #ifdef __cplusplus
  1162. }
  1163. #endif
  1164. #endif