Source code of Windows XP (NT5)
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.

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