home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / AutoPC / apcsdk10.exe / data1.cab / Emulation_Include_Files / speech.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-13  |  132.4 KB  |  4,087 lines

  1. /*****************************************************************8
  2. Speech.H - Header file to use the Microsoft Speech APIs.
  3.  
  4. Copyright 1994, 1995 by Microsoft corporation.All rights reserved.
  5. */
  6.  
  7. #ifndef _SPEECH_
  8. #define _SPEECH_
  9.  
  10. // Disable the warning for zero-length arrays in structures
  11. #pragma warning(disable:4200)
  12.  
  13.  
  14. /************************************************************************
  15. Defines common to all of the speech APIs.
  16. */
  17.  
  18. // Application  Speech API   Compiler Defines                   _S_UNICODE
  19. // -----------------------------------------------------------------------------
  20. //   ANSI        ANSI        <none>                             undefined
  21. //   ANSI        Unicode     _S_UNICODE                         defined
  22. //   Unicode     ANSI        (UNICODE || _UNICODE) && _S_ANSI   undefined
  23. //   Unicode     Unicode     (UNICODE || _UNICODE)              defined
  24.  
  25. #if (defined(UNICODE) || defined(_UNICODE)) && !defined(_S_ANSI)
  26. #ifndef _S_UNICODE
  27. #define _S_UNICODE
  28. #endif
  29. #endif
  30.  
  31. /************************************************************************
  32. defines */
  33. #define  SVFN_LEN    (262)
  34. #define  LANG_LEN    (64)
  35. #define  EI_TITLESIZE   (128)
  36. #define  EI_DESCSIZE    (512)
  37. #define  EI_FIXSIZE     (512)
  38. #define  SVPI_MFGLEN    (64)
  39. #define  SVPI_PRODLEN   (64)
  40. #define  SVPI_COMPLEN   (64)
  41. #define  SVPI_COPYRIGHTLEN (128)
  42. #define  SVI_MFGLEN     (SVPI_MFGLEN)
  43. #define  SETBIT(x)      ((DWORD)1 << (x))
  44.  
  45.  
  46. // Error Macros
  47. #define  FACILITY_SPEECH   (FACILITY_ITF)
  48. #define  SPEECHERROR(x)    MAKE_SCODE(SEVERITY_ERROR,   FACILITY_SPEECH, (x)+0x200)
  49. #define  AUDERROR(x)       MAKE_SCODE(SEVERITY_ERROR,   FACILITY_SPEECH, (x)+0x300)
  50. #define  SRWARNING(x)      MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_SPEECH, (x)+0x400)
  51. #define  SRERROR(x)        MAKE_SCODE(SEVERITY_ERROR,   FACILITY_SPEECH, (x)+0x400)
  52. #define  TTSERROR(x)       MAKE_SCODE(SEVERITY_ERROR,   FACILITY_SPEECH, (x)+0x500)
  53. #define  VCMDERROR(x)      MAKE_SCODE(SEVERITY_ERROR,   FACILITY_SPEECH, (x)+0x600)
  54. #define  VTXTERROR(x)      MAKE_SCODE(SEVERITY_ERROR,   FACILITY_SPEECH, (x)+0x700)
  55. #define  LEXERROR(x)       MAKE_SCODE(SEVERITY_ERROR,   FACILITY_SPEECH, (x)+0x800)
  56.  
  57. // Audio Errors
  58. #define  AUDERR_NONE                      S_OK                          // 0x00000000
  59. #define  AUDERR_BADDEVICEID               AUDERROR(1)                   // 0x80040301
  60. #define  AUDERR_NEEDWAVEFORMAT            AUDERROR(2)                   // 0x80040302
  61. #define  AUDERR_NOTSUPPORTED              E_NOTIMPL                     // 0x80004001
  62. #define  AUDERR_NOTENOUGHDATA             SPEECHERROR(1)                // 0x80040201
  63. #define  AUDERR_NOTPLAYING                AUDERROR(6)                   // 0x80040306
  64. #define  AUDERR_INVALIDPARAM              E_INVALIDARG                  // 0x80070057
  65. #define  AUDERR_WAVEFORMATNOTSUPPORTED    SPEECHERROR(2)                // 0x80040202
  66. #define  AUDERR_WAVEDEVICEBUSY            SPEECHERROR(3)                // 0x80040203
  67. #define  AUDERR_WAVEDEVNOTSUPPORTED       AUDERROR(18)                  // 0x80040312
  68. #define  AUDERR_NOTRECORDING              AUDERROR(19)                  // 0x80040313
  69. #define  AUDERR_INVALIDFLAG               SPEECHERROR(4)                // 0x80040204
  70. #define  AUDERR_INVALIDHANDLE             E_HANDLE                      // 0x80070006
  71. #define  AUDERR_NODRIVER                  AUDERROR(23)                  // 0x80040317
  72. #define  AUDERR_HANDLEBUSY                AUDERROR(24)                  // 0x80040318
  73. #define  AUDERR_INVALIDNOTIFYSINK         AUDERROR(25)                  // 0x80040319
  74. #define  AUDERR_WAVENOTENABLED            AUDERROR(26)                  // 0x8004031A
  75. #define  AUDERR_ALREADYCLAIMED            AUDERROR(29)                  // 0x8004031D
  76. #define  AUDERR_NOTCLAIMED                AUDERROR(30)                  // 0x8004031E
  77. #define  AUDERR_STILLPLAYING              AUDERROR(31)                  // 0x8004031F
  78. #define  AUDERR_ALREADYSTARTED            AUDERROR(32)                  // 0x80040320
  79. #define  AUDERR_SYNCNOTALLOWED            AUDERROR(33)                  // 0x80040321
  80.  
  81. // Speech Recognition Warnings
  82. #define  SRWARN_BAD_LIST_PRONUNCIATION    SRWARNING(1)
  83.  
  84. // Speech Recognition Errors
  85. #define  SRERR_NONE                       S_OK                          // 0x00000000
  86. #define  SRERR_OUTOFDISK                  SPEECHERROR(5)                // 0x80040205
  87. #define  SRERR_NOTSUPPORTED               E_NOTIMPL                     // 0x80004001
  88. #define  SRERR_NOTENOUGHDATA              AUDERR_NOTENOUGHDATA          // 0x80040201
  89. #define  SRERR_VALUEOUTOFRANGE            E_UNEXPECTED                  // 0x8000FFFF
  90. #define  SRERR_GRAMMARTOOCOMPLEX          SRERROR(6)                    // 0x80040406
  91. #define  SRERR_GRAMMARWRONGTYPE           SRERROR(7)                    // 0x80040407
  92. #define  SRERR_INVALIDWINDOW              OLE_E_INVALIDHWND             // 0x8004000F
  93. #define  SRERR_INVALIDPARAM               E_INVALIDARG                  // 0x80070057
  94. #define  SRERR_INVALIDMODE                SPEECHERROR(6)                // 0x80040206
  95. #define  SRERR_TOOMANYGRAMMARS            SRERROR(11)                   // 0x8004040B
  96. #define  SRERR_INVALIDLIST                SPEECHERROR(7)                // 0x80040207
  97. #define  SRERR_WAVEDEVICEBUSY             AUDERR_WAVEDEVICEBUSY         // 0x80040203
  98. #define  SRERR_WAVEFORMATNOTSUPPORTED     AUDERR_WAVEFORMATNOTSUPPORTED // 0x80040202
  99. #define  SRERR_INVALIDCHAR                SPEECHERROR(8)                // 0x80040208
  100. #define  SRERR_GRAMTOOCOMPLEX             SRERR_GRAMMARTOOCOMPLEX       // 0x80040406
  101. #define  SRERR_GRAMTOOLARGE               SRERROR(17)                   // 0x80040411
  102. #define  SRERR_INVALIDINTERFACE           E_NOINTERFACE                 // 0x80004002
  103. #define  SRERR_INVALIDKEY                 SPEECHERROR(9)                // 0x80040209
  104. #define  SRERR_INVALIDFLAG                AUDERR_INVALIDFLAG            // 0x80040204
  105. #define  SRERR_GRAMMARERROR               SRERROR(22)                   // 0x80040416
  106. #define  SRERR_INVALIDRULE                SRERROR(23)                   // 0x80040417
  107. #define  SRERR_RULEALREADYACTIVE          SRERROR(24)                   // 0x80040418
  108. #define  SRERR_RULENOTACTIVE              SRERROR(25)                   // 0x80040419
  109. #define  SRERR_NOUSERSELECTED             SRERROR(26)                   // 0x8004041A
  110. #define  SRERR_BAD_PRONUNCIATION          SRERROR(27)                   // 0x8004041B
  111. #define  SRERR_DATAFILEERROR              SRERROR(28)                   // 0x8004041C
  112. #define  SRERR_GRAMMARALREADYACTIVE       SRERROR(29)                   // 0x8004041D
  113. #define  SRERR_GRAMMARNOTACTIVE           SRERROR(30)                   // 0x8004041E
  114. #define  SRERR_GLOBALGRAMMARALREADYACTIVE SRERROR(31)                   // 0x8004041F
  115. #define  SRERR_LANGUAGEMISMATCH           SRERROR(32)                   // 0x80040420
  116. #define  SRERR_MULTIPLELANG               SRERROR(33)                   // 0x80040421
  117. #define  SRERR_LDGRAMMARNOWORDS           SRERROR(34)                   // 0x80040422
  118. #define  SRERR_NOLEXICON                  SRERROR(35)                   // 0x80040423
  119. #define  SRERR_SPEAKEREXISTS              SRERROR(36)                   // 0x80040424
  120. #define  SRERR_GRAMMARENGINEMISMATCH      SRERROR(37)                   // 0x80040425
  121. #define  SRERR_BOOKMARKEXISTS             SRERROR(38)                   // 0x80040426
  122. #define  SRERR_BOOKMARKDOESNOTEXIST       SRERROR(39)                   // 0x80040427
  123. #define  SRERR_MICWIZARDCANCELED          SRERROR(0x28)                   // 0x80040428
  124.  
  125. #define SRERR_PHRASENOTFOUND    SRERROR(0x30)                   // 0x80040430
  126. #define SRERR_TEMPLATENOTFOUND  SRERROR(0x31)                   // 0x80040431
  127. #define SRERR_TRAININGBUSY      SRERROR(0x33)                   // 0x80040433
  128. #define SRERR_GOBACKFAILED      SRERROR(0x34)                   // 0x80040434
  129. #define SRERR_RECOGBUSY         SRERROR(0x35)                   // 0x80040435
  130. #define SRERR_ENGINESPECIFIC    SRERROR(0x36)                   // 0x80040436
  131.  
  132. // Text to Speech Errors
  133. #define  TTSERR_NONE                      S_OK                          // 0x00000000
  134. #define  TTSERR_INVALIDINTERFACE          E_NOINTERFACE                 // 0x80004002
  135. #define  TTSERR_OUTOFDISK                 SRERR_OUTOFDISK               // 0x80040205
  136. #define  TTSERR_NOTSUPPORTED              E_NOTIMPL                     // 0x80004001
  137. #define  TTSERR_VALUEOUTOFRANGE           E_UNEXPECTED                  // 0x8000FFFF
  138. #define  TTSERR_INVALIDWINDOW             OLE_E_INVALIDHWND             // 0x8004000F
  139. #define  TTSERR_INVALIDPARAM              E_INVALIDARG                  // 0x80070057
  140. #define  TTSERR_INVALIDMODE               SRERR_INVALIDMODE             // 0x80040206
  141. #define  TTSERR_INVALIDKEY                SRERR_INVALIDKEY              // 0x80040209
  142. #define  TTSERR_WAVEFORMATNOTSUPPORTED    AUDERR_WAVEFORMATNOTSUPPORTED // 0x80040202
  143. #define  TTSERR_INVALIDCHAR               SRERR_INVALIDCHAR             // 0x80040208
  144. #define  TTSERR_QUEUEFULL                 SPEECHERROR(10)               // 0x8004020A
  145. #define  TTSERR_WAVEDEVICEBUSY            AUDERR_WAVEDEVICEBUSY         // 0x80040203
  146. #define  TTSERR_NOTPAUSED                 TTSERROR(1)                   // 0x80040501
  147. #define  TTSERR_ALREADYPAUSED             TTSERROR(2)                   // 0x80040502
  148.  
  149.  
  150. // Voice Command Errors
  151.  
  152. /*
  153.  *  Everything worked
  154.  */
  155. #define  VCMDERR_NONE                     S_OK                          // 0x00000000
  156.  
  157. /*
  158.  *  Voice Commands could not allocate memory
  159.  */
  160. #define  VCMDERR_OUTOFMEM                 E_OUTOFMEMORY                 // 0x8007000E
  161.  
  162. /*
  163.  *  Voice Commands could not store/retrieve a command set from the database
  164.  */
  165. #define  VCMDERR_OUTOFDISK                SRERR_OUTOFDISK               // 0x80040205
  166.  
  167. /*
  168.  *  Function not implemented
  169.  */
  170. #define  VCMDERR_NOTSUPPORTED             E_NOTIMPL                     // 0x80004001
  171.  
  172. /*
  173.  *  A parameter was passed that was out of the ranged of accepted values
  174.  */
  175. #define  VCMDERR_VALUEOUTOFRANGE          E_UNEXPECTED                  // 0x8000FFFF
  176.  
  177. /*
  178.  *  A menu was too complex to compile a context-free grammar
  179.  */
  180. #define  VCMDERR_MENUTOOCOMPLEX           VCMDERROR(0x06)               //  0x80040606
  181.  
  182. /*
  183.  *  Language mismatch between the speech recognition mode and menu trying
  184.  *  to create
  185.  */
  186. #define  VCMDERR_MENUWRONGLANGUAGE        VCMDERROR(0x07)               // 0x80040607
  187.  
  188. /*
  189.  *  An invalid window handle was passed to Voice Commands
  190.  */
  191. #define  VCMDERR_INVALIDWINDOW            OLE_E_INVALIDHWND             // 0x8004000F
  192.  
  193. /*
  194.  *  Voice Commands detected a bad function parameter
  195.  */
  196. #define  VCMDERR_INVALIDPARAM             E_INVALIDARG                  // 0x80070057
  197.  
  198. /*
  199.  *  This function cannot be completed right now, usually when trying to do
  200.  *  some operation while no speech recognition site is established
  201.  */
  202. #define  VCMDERR_INVALIDMODE              SRERR_INVALIDMODE             // 0x80040206
  203.  
  204. /*
  205.  *  There are too many Voice Commands menu
  206.  */                                                                     // 0x8004060B
  207. #define  VCMDERR_TOOMANYMENUS             VCMDERROR(0x0B)
  208.  
  209. /*
  210.  *  Invalid list passed to ListSet/ListGet
  211.  */
  212. #define  VCMDERR_INVALIDLIST              SRERR_INVALIDLIST             // 0x80040207
  213.  
  214. /*
  215.  *  Trying to open an existing menu that is not in the Voice Commands database
  216.  */
  217. #define  VCMDERR_MENUDOESNOTEXIST         VCMDERROR(0x0D)               // 0x8004060D
  218.  
  219. /*
  220.  *  The function could not be completed because the menu is actively 
  221.  *  listening for commands
  222.  */
  223. #define  VCMDERR_MENUACTIVE               VCMDERROR(0x0E)               // 0x8004060E
  224.  
  225. /*
  226.  *  No speech recognition engine is started
  227.  */
  228. #define  VCMDERR_NOENGINE                 VCMDERROR(0x0F)               // 0x8004060F
  229.  
  230. /*
  231.  *  Voice Commands could not acquire a Grammar interface from the speech
  232.  *  recognition engine
  233.  */
  234. #define  VCMDERR_NOGRAMMARINTERFACE       VCMDERROR(0x10)               // 0x80040610
  235.  
  236. /*
  237.  *  Voice Commands could not acquire a Find interface from the speech
  238.  *  recognition engine
  239.  */
  240. #define  VCMDERR_NOFINDINTERFACE          VCMDERROR(0x11)               // 0x80040611
  241.  
  242. /*
  243.  *  Voice Commands could not create a speech recognition enumerator
  244.  */
  245. #define  VCMDERR_CANTCREATESRENUM         VCMDERROR(0x12)               // 0x80040612
  246.  
  247. /*
  248.  *  Voice Commands could get the appropriate site information to start a
  249.  *  speech recognition engine
  250.  */
  251. #define  VCMDERR_NOSITEINFO               VCMDERROR(0x13)               // 0x80040613
  252.  
  253. /*
  254.  *  Voice Commands could not find a speech recognition engine
  255.  */
  256. #define  VCMDERR_SRFINDFAILED             VCMDERROR(0x14)               // 0x80040614
  257.  
  258. /*
  259.  *  Voice Commands could not create an audio source object
  260.  */
  261. #define  VCMDERR_CANTCREATEAUDIODEVICE    VCMDERROR(0x15)               // 0x80040615
  262.  
  263. /*
  264.  *  Voice Commands could not set the appropriate device number in the
  265.  *  audio source object
  266.  */
  267. #define  VCMDERR_CANTSETDEVICE            VCMDERROR(0x16)               // 0x80040616
  268.  
  269. /*
  270.  *  Voice Commands could not select a speech recognition engine. Usually the
  271.  *  error will occur when Voice Commands has enumerated and found an
  272.  *  appropriate speech recognition engine, then it is not able to actually
  273.  *  select/start the engine. There are different reasons that the engine won't
  274.  *  start, but the most common is that there is no wave in device.
  275.  */
  276. #define  VCMDERR_CANTSELECTENGINE         VCMDERROR(0x17)               // 0x80040617
  277.  
  278. /*
  279.  *  Voice Commands could not create a notfication sink for engine
  280.  *  notifications
  281.  */
  282. #define  VCMDERR_CANTCREATENOTIFY         VCMDERROR(0x18)               // 0x80040618
  283.  
  284. /*
  285.  *  Voice Commands could not create internal data structures.
  286.  */
  287. #define  VCMDERR_CANTCREATEDATASTRUCTURES VCMDERROR(0x19)               // 0x80040619
  288.  
  289. /*
  290.  *  Voice Commands could not initialize internal data structures
  291.  */
  292. #define  VCMDERR_CANTINITDATASTRUCTURES   VCMDERROR(0x1A)               // 0x8004061A
  293.  
  294. /*
  295.  *  The menu does not have an entry in the Voice Commands cache
  296.  */
  297. #define  VCMDERR_NOCACHEDATA              VCMDERROR(0x1B)               // 0x8004061B
  298.  
  299. /*
  300.  *  The menu does not have commands
  301.  */
  302. #define  VCMDERR_NOCOMMANDS               VCMDERROR(0x1C)               // 0x8004061C
  303.  
  304. /*
  305.  *  Voice Commands cannot extract unique words needed for the engine grammar
  306.  */
  307. #define  VCMDERR_CANTXTRACTWORDS          VCMDERROR(0x1D)               // 0x8004061D
  308.  
  309. /*
  310.  *  Voice Commands could not get the command set database name
  311.  */
  312. #define  VCMDERR_CANTGETDBNAME            VCMDERROR(0x1E)               // 0x8004061E
  313.  
  314. /*
  315.  *  Voice Commands could not create a registry key
  316.  */
  317. #define  VCMDERR_CANTCREATEKEY            VCMDERROR(0x1F)               // 0x8004061F
  318.  
  319. /*
  320.  *  Voice Commands could not create a new database name
  321.  */
  322. #define  VCMDERR_CANTCREATEDBNAME         VCMDERROR(0x20)               // 0x80040620
  323.  
  324. /*
  325.  *  Voice Commands could not update the registry
  326.  */
  327. #define  VCMDERR_CANTUPDATEREGISTRY       VCMDERROR(0x21)               // 0x80040621
  328.  
  329. /*
  330.  *  Voice Commands could not open the registry
  331.  */
  332. #define  VCMDERR_CANTOPENREGISTRY         VCMDERROR(0x22)               // 0x80040622
  333.  
  334. /*
  335.  *  Voice Commands could not open the command set database
  336.  */
  337. #define  VCMDERR_CANTOPENDATABASE         VCMDERROR(0x23)               // 0x80040623
  338.  
  339. /*
  340.  *  Voice Commands could not create a database storage object
  341.  */
  342. #define  VCMDERR_CANTCREATESTORAGE        VCMDERROR(0x24)               // 0x80040624
  343.  
  344. /*
  345.  *  Voice Commands could not do CmdMimic
  346.  */
  347. #define  VCMDERR_CANNOTMIMIC              VCMDERROR(0x25)               // 0x80040625
  348.  
  349. /*
  350.  *  A menu of this name already exist
  351.  */
  352. #define  VCMDERR_MENUEXIST                VCMDERROR(0x26)               // 0x80040626
  353.  
  354. /*
  355.  *  A menu of this name is open and cannot be deleted right now
  356.  */
  357. #define  VCMDERR_MENUOPEN                 VCMDERROR(0x27)               // 0x80040627
  358.  
  359.  
  360. // Voice Text Errors
  361. #define  VTXTERR_NONE                     S_OK                          // 0x00000000
  362.  
  363. /*
  364.  *  Voice Text failed to allocate memory it needed
  365.  */
  366. #define  VTXTERR_OUTOFMEM                 E_OUTOFMEMORY                 // 0x8007000E
  367.  
  368. /*
  369.  *  An empty string ("") was passed to the Speak function
  370.  */
  371. #define  VTXTERR_EMPTYSPEAKSTRING         SPEECHERROR(0x0b)             // 0x8004020B
  372.  
  373. /*
  374.  *  An invalid parameter was passed to a Voice Text function
  375.  */
  376. #define  VTXTERR_INVALIDPARAM             E_INVALIDARG                  // 0x80070057
  377.  
  378. /*
  379.  *  The called function cannot be done at this time. This usually occurs
  380.  *  when trying to call a function that needs a site, but no site has been
  381.  *  registered.
  382.  */
  383. #define  VTXTERR_INVALIDMODE              SRERR_INVALIDMODE             // 0x80040206
  384.  
  385. /*
  386.  *  No text-to-speech engine is started
  387.  */
  388. #define  VTXTERR_NOENGINE                 VTXTERROR(0x0F)               // 0x8004070F
  389.  
  390. /*
  391.  *  Voice Text could not acquire a Find interface from the text-to-speech
  392.  *  engine
  393.  */
  394. #define  VTXTERR_NOFINDINTERFACE          VTXTERROR(0x11)               // 0x80040711
  395.  
  396. /*
  397.  *  Voice Text could not create a text-to-speech enumerator
  398.  */
  399. #define  VTXTERR_CANTCREATETTSENUM        VTXTERROR(0x12)               // 0x80040712
  400.  
  401. /*
  402.  *  Voice Text could get the appropriate site information to start a
  403.  *  text-to-speech engine
  404.  */
  405. #define  VTXTERR_NOSITEINFO               VTXTERROR(0x13)               // 0x80040713
  406.  
  407. /*
  408.  *  Voice Text could not find a text-to-speech engine
  409.  */
  410. #define  VTXTERR_TTSFINDFAILED            VTXTERROR(0x14)               // 0x80040714
  411.  
  412. /*
  413.  *  Voice Text could not create an audio destination object
  414.  */
  415. #define  VTXTERR_CANTCREATEAUDIODEVICE    VTXTERROR(0x15)               // 0x80040715
  416.  
  417. /*
  418.  *  Voice Text could not set the appropriate device number in the
  419.  *  audio destination object
  420.  */
  421. #define  VTXTERR_CANTSETDEVICE            VTXTERROR(0x16)               // 0x80040716
  422.  
  423. /*
  424.  *  Voice Text could not select a text-to-speech engine. Usually the
  425.  *  error will occur when Voice Text has enumerated and found an
  426.  *  appropriate text-to-speech engine, then it is not able to actually
  427.  *  select/start the engine.
  428.  */
  429. #define  VTXTERR_CANTSELECTENGINE         VTXTERROR(0x17)               // 0x80040717
  430.  
  431. /*
  432.  *  Voice Text could not create a notfication sink for engine
  433.  *  notifications
  434.  */
  435. #define  VTXTERR_CANTCREATENOTIFY         VTXTERROR(0x18)               // 0x80040718
  436.  
  437. /*
  438.  *  Voice Text is disabled at this time
  439.  */
  440. #define  VTXTERR_NOTENABLED               VTXTERROR(0x19)               // 0x80040719
  441.  
  442. #define  VTXTERR_OUTOFDISK                SRERR_OUTOFDISK               // 0x80040205
  443. #define  VTXTERR_NOTSUPPORTED             E_NOTIMPL                     // 0x80004001
  444. #define  VTXTERR_NOTENOUGHDATA            AUDERR_NOTENOUGHDATA          // 0x80040201
  445. #define  VTXTERR_QUEUEFULL                TTSERR_QUEUEFULL              // 0x8004020A
  446. #define  VTXTERR_VALUEOUTOFRANGE          E_UNEXPECTED                  // 0x8000FFFF
  447. #define  VTXTERR_INVALIDWINDOW            OLE_E_INVALIDHWND             // 0x8004000F
  448. #define  VTXTERR_WAVEDEVICEBUSY           AUDERR_WAVEDEVICEBUSY         // 0x80040203
  449. #define  VTXTERR_WAVEFORMATNOTSUPPORTED   AUDERR_WAVEFORMATNOTSUPPORTED // 0x80040202
  450. #define  VTXTERR_INVALIDCHAR              SRERR_INVALIDCHAR             // 0x80040208
  451.  
  452.  
  453. // ILexPronounce errors
  454. #define  LEXERR_INVALIDTEXTCHAR           LEXERROR(0x01)                // 0x80040801
  455. #define  LEXERR_INVALIDSENSE              LEXERROR(0x02)                // 0x80040802
  456. #define  LEXERR_NOTINLEX                  LEXERROR(0x03)                // 0x80040803
  457. #define  LEXERR_OUTOFDISK                 LEXERROR(0x04)                // 0x80040804
  458. #define  LEXERR_INVALIDPRONCHAR           LEXERROR(0x05)                // 0x80040805
  459. #define  LEXERR_ALREADYINLEX              LEXERROR(0x06)                // 0x80040806
  460. #define  LEXERR_PRNBUFTOOSMALL            LEXERROR(0x07)                // 0x80040807
  461. #define  LEXERR_ENGBUFTOOSMALL            LEXERROR(0x08)                // 0x80040808
  462.  
  463.  
  464.  
  465. /************************************************************************
  466. typedefs */
  467.  
  468. typedef LPUNKNOWN FAR * PIUNKNOWN;
  469.  
  470. typedef struct {
  471.    PVOID    pData;
  472.    DWORD    dwSize;
  473.    } SDATA, * PSDATA;
  474.  
  475.  
  476.  
  477. typedef struct {
  478.    LANGID   LanguageID;
  479.    WCHAR    szDialect[LANG_LEN];
  480.    } LANGUAGEW, FAR * PLANGUAGEW;
  481.  
  482. typedef struct {
  483.    LANGID   LanguageID;
  484.    CHAR     szDialect[LANG_LEN];
  485.    } LANGUAGEA, FAR * PLANGUAGEA;
  486.  
  487. #ifdef  _S_UNICODE
  488. #define LANGUAGE    LANGUAGEW
  489. #define PLANGUAGE   PLANGUAGEW
  490. #else
  491. #define LANGUAGE    LANGUAGEA
  492. #define PLANGUAGE   PLANGUAGEA
  493. #endif  // _S_UNICODE
  494.  
  495.  
  496.  
  497. typedef unsigned _int64 QWORD, * PQWORD;
  498.  
  499. typedef enum {
  500.    CHARSET_TEXT           = 0,
  501.    CHARSET_IPAPHONETIC    = 1,
  502.    CHARSET_ENGINEPHONETIC = 2
  503.    } VOICECHARSET;
  504.  
  505. typedef enum _VOICEPARTOFSPEECH {
  506.    VPS_UNKNOWN = 0,
  507.    VPS_NOUN = 1,
  508.    VPS_VERB = 2,
  509.    VPS_ADVERB = 3,
  510.    VPS_ADJECTIVE = 4,
  511.    VPS_PROPERNOUN = 5,
  512.    VPS_PRONOUN = 6,
  513.    VPS_CONJUNCTION = 7,
  514.    VPS_CARDINAL = 8,
  515.    VPS_ORDINAL = 9,
  516.    VPS_DETERMINER = 10,
  517.    VPS_QUANTIFIER = 11,
  518.    VPS_PUNCTUATION = 12,
  519.    VPS_CONTRACTION = 13,
  520.    VPS_INTERJECTION = 14,
  521.    VPS_ABBREVIATION = 15,
  522.    VPS_PREPOSITION = 16
  523.    } VOICEPARTOFSPEECH;
  524.  
  525.  
  526. typedef struct {
  527.    DWORD   dwNextPhonemeNode;
  528.    DWORD   dwUpAlternatePhonemeNode;
  529.    DWORD   dwDownAlternatePhonemeNode;
  530.    DWORD   dwPreviousPhonemeNode;
  531.    DWORD   dwWordNode;
  532.    QWORD   qwStartTime;
  533.    QWORD   qwEndTime;
  534.    DWORD   dwPhonemeScore;
  535.    WORD    wVolume;
  536.    WORD    wPitch;
  537.    } SRRESPHONEMENODE, *PSRRESPHONEMENODE;
  538.  
  539.  
  540. typedef struct {
  541.    DWORD   dwNextWordNode;
  542.    DWORD   dwUpAlternateWordNode;
  543.    DWORD   dwDownAlternateWordNode;
  544.    DWORD   dwPreviousWordNode;
  545.    DWORD   dwPhonemeNode;
  546.    QWORD   qwStartTime;
  547.    QWORD   qwEndTime;
  548.    DWORD   dwWordScore;
  549.    WORD      wVolume;
  550.    WORD      wPitch;
  551.    VOICEPARTOFSPEECH   pos;
  552.    DWORD   dwCFGParse;
  553.    DWORD   dwCue;
  554.    } SRRESWORDNODE, * PSRRESWORDNODE;
  555.  
  556.  
  557. /************************************************************************
  558. interfaces */
  559.  
  560. /*
  561.  * ILexPronounce
  562.  */
  563.  
  564. #undef   INTERFACE
  565. #define  INTERFACE   ILexPronounceW
  566.  
  567. DEFINE_GUID(IID_ILexPronounceW, 0x090CD9A2, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
  568.  
  569. DECLARE_INTERFACE_ (ILexPronounceW, IUnknown) {
  570.  
  571.    // IUnknown members
  572.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  573.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  574.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  575.  
  576.    // LexPronounceW members
  577.    STDMETHOD (Add)            (THIS_ VOICECHARSET, PCWSTR, PCWSTR, 
  578.                                VOICEPARTOFSPEECH, PVOID, DWORD) PURE;
  579.    STDMETHOD (Get)            (THIS_ VOICECHARSET, PCWSTR, WORD, PWSTR, 
  580.                                DWORD, DWORD *, VOICEPARTOFSPEECH *, PVOID, 
  581.                                DWORD, DWORD *) PURE;
  582.    STDMETHOD (Remove)         (THIS_ PCWSTR, WORD) PURE;
  583.    };
  584.  
  585. typedef ILexPronounceW FAR * PILEXPRONOUNCEW;
  586.  
  587.  
  588. #undef   INTERFACE
  589. #define  INTERFACE   ILexPronounceA
  590.  
  591. DEFINE_GUID(IID_ILexPronounceA, 0x2F26B9C0L, 0xDB31, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  592.  
  593. DECLARE_INTERFACE_ (ILexPronounceA, IUnknown) {
  594.  
  595.    // IUnknown members
  596.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  597.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  598.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  599.  
  600.    // LexPronounceA members
  601.    STDMETHOD (Add)            (THIS_ VOICECHARSET, PCSTR, PCSTR, 
  602.                                VOICEPARTOFSPEECH, PVOID, DWORD) PURE;
  603.    STDMETHOD (Get)            (THIS_ VOICECHARSET, PCSTR, WORD, PSTR, 
  604.                                DWORD, DWORD *, VOICEPARTOFSPEECH *, PVOID, 
  605.                                DWORD, DWORD *) PURE;
  606.    STDMETHOD (Remove)         (THIS_ PCSTR, WORD) PURE;
  607.    };
  608.  
  609. typedef ILexPronounceA FAR * PILEXPRONOUNCEA;
  610.  
  611.  
  612. #ifdef _S_UNICODE
  613.  #define ILexPronounce        ILexPronounceW
  614.  #define IID_ILexPronounce    IID_ILexPronounceW
  615.  #define PILEXPRONOUNCE       PILEXPRONOUNCEW
  616.  
  617. #else
  618.  #define ILexPronounce        ILexPronounceA
  619.  #define IID_ILexPronounce    IID_ILexPronounceA
  620.  #define PILEXPRONOUNCE       PILEXPRONOUNCEA
  621.  
  622. #endif   // _S_UNICODE
  623.  
  624.  
  625.  
  626. /************************************************************************
  627. Audio source/destiantion API
  628. */
  629.  
  630. /************************************************************************
  631. defines */
  632.  
  633. // AudioStop
  634. #define      IANSRSN_NODATA             0
  635. #define      IANSRSN_PRIORITY           1
  636. #define      IANSRSN_INACTIVE           2
  637. #define      IANSRSN_EOF                3
  638.  
  639. /************************************************************************
  640. typedefs */
  641.  
  642. /************************************************************************
  643. Class IDs */
  644. // {CB96B400-C743-11cd-80E5-00AA003E4B50}
  645. DEFINE_GUID(CLSID_MMAudioDest, 
  646. 0xcb96b400, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
  647. // {D24FE500-C743-11cd-80E5-00AA003E4B50}
  648. DEFINE_GUID(CLSID_MMAudioSource, 
  649. 0xd24fe500, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
  650.  
  651. /************************************************************************
  652. interfaces */
  653.  
  654. // IAudio
  655. #undef   INTERFACE
  656. #define  INTERFACE   IAudio
  657.  
  658. // {F546B340-C743-11cd-80E5-00AA003E4B50}
  659. DEFINE_GUID(IID_IAudio, 
  660. 0xf546b340, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
  661.  
  662. DECLARE_INTERFACE_ (IAudio, IUnknown) {
  663.    // IUnknown members
  664.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  665.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  666.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  667.  
  668.    // IAudio members
  669.    STDMETHOD (Flush)          (THIS) PURE;
  670.    STDMETHOD (LevelGet)       (THIS_ DWORD *) PURE;
  671.    STDMETHOD (LevelSet)       (THIS_ DWORD) PURE;
  672.    STDMETHOD (PassNotify)     (THIS_ PVOID, IID) PURE;
  673.    STDMETHOD (PosnGet)        (THIS_ PQWORD) PURE;
  674.    STDMETHOD (Claim)          (THIS) PURE;
  675.    STDMETHOD (UnClaim)        (THIS) PURE;
  676.    STDMETHOD (Start)          (THIS) PURE;
  677.    STDMETHOD (Stop)           (THIS) PURE;
  678.    STDMETHOD (TotalGet)       (THIS_ PQWORD) PURE;
  679.    STDMETHOD (ToFileTime)     (THIS_ PQWORD, FILETIME *) PURE;
  680.    STDMETHOD (WaveFormatGet)  (THIS_ PSDATA) PURE;
  681.    STDMETHOD (WaveFormatSet)  (THIS_ SDATA) PURE;
  682.    };
  683.  
  684. typedef IAudio FAR * PIAUDIO;
  685.  
  686. // IAudioDest
  687.  
  688. #undef   INTERFACE
  689. #define  INTERFACE   IAudioDest
  690.  
  691. // {2EC34DA0-C743-11cd-80E5-00AA003E4B50}
  692. DEFINE_GUID(IID_IAudioDest, 
  693. 0x2ec34da0, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
  694.  
  695. DECLARE_INTERFACE_ (IAudioDest, IUnknown) {
  696.  
  697.    // IUnknown members
  698.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  699.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  700.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  701.  
  702.    // IAudioDest members
  703.    STDMETHOD (FreeSpace)      (THIS_ DWORD *, BOOL *) PURE;
  704.    STDMETHOD (DataSet)        (THIS_ PVOID, DWORD) PURE;
  705.    STDMETHOD (BookMark)       (THIS_ DWORD) PURE;
  706.    };
  707.  
  708. typedef IAudioDest FAR * PIAUDIODEST;
  709.  
  710.  
  711.  
  712. // IAudioDestNotifySink
  713.  
  714. #undef   INTERFACE
  715. #define  INTERFACE   IAudioDestNotifySink
  716.  
  717. // {ACB08C00-C743-11cd-80E5-00AA003E4B50}
  718. DEFINE_GUID(IID_IAudioDestNotifySink, 
  719. 0xacb08c00, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
  720.  
  721. DECLARE_INTERFACE_ (IAudioDestNotifySink, IUnknown) {
  722.    // IUnknown members
  723.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  724.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  725.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  726.  
  727.    // IAudioDestNotifySink members
  728.    STDMETHOD (AudioStop)      (THIS_ WORD) PURE;
  729.    STDMETHOD (AudioStart)     (THIS) PURE;
  730.    STDMETHOD (FreeSpace)      (THIS_ DWORD, BOOL) PURE;
  731.    STDMETHOD (BookMark)       (THIS_ DWORD, BOOL) PURE;
  732.    };
  733.  
  734. typedef IAudioDestNotifySink FAR * PIAUDIODESTNOTIFYSINK;
  735.  
  736.  
  737. /*
  738. // IAudioMultiMediaDevice
  739.  
  740. #undef   INTERFACE
  741. #define  INTERFACE   IAudioMultiMediaDevice
  742.  
  743. // {B68AD320-C743-11cd-80E5-00AA003E4B50}
  744. DEFINE_GUID(IID_IAudioMultiMediaDevice, 
  745. 0xb68ad320, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
  746.  
  747. DECLARE_INTERFACE_ (IAudioMultiMediaDevice, IUnknown) {
  748.    // IUnknown members
  749.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  750.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  751.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  752.  
  753.    // IAudioMultiMediaDevice members
  754.    STDMETHOD (CustomMessage)  (THIS_ UINT, SDATA) PURE;
  755.    STDMETHOD (DeviceNumGet)   (THIS_ DWORD*) PURE;
  756.    STDMETHOD (DeviceNumSet)   (THIS_ DWORD) PURE;
  757.    };
  758.  
  759. typedef IAudioMultiMediaDevice FAR * PIAUDIOMULTIMEDIADEVICE;
  760. */
  761.  
  762.  
  763. // IAudioSource
  764. #undef   INTERFACE
  765. #define  INTERFACE   IAudioSource
  766.  
  767. // {BC06A220-C743-11cd-80E5-00AA003E4B50}
  768. DEFINE_GUID(IID_IAudioSource, 
  769. 0xbc06a220, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
  770.  
  771. DECLARE_INTERFACE_ (IAudioSource, IUnknown) {
  772.    // IUnknown members
  773.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  774.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  775.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  776.  
  777.    // IAudioSource members
  778.    STDMETHOD (DataAvailable)  (THIS_ DWORD *, BOOL *) PURE;
  779.    STDMETHOD (DataGet)        (THIS_ PVOID, DWORD, DWORD *) PURE;
  780.    };
  781.  
  782. typedef IAudioSource FAR * PIAUDIOSOURCE;
  783.  
  784.  
  785.  
  786. // IAudioSourceNotifySink
  787. #undef   INTERFACE
  788. #define  INTERFACE   IAudioSourceNotifySink
  789.  
  790. // {C0BD9A80-C743-11cd-80E5-00AA003E4B50}
  791. DEFINE_GUID(IID_IAudioSourceNotifySink, 
  792. 0xc0bd9a80, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
  793.  
  794. DECLARE_INTERFACE_ (IAudioSourceNotifySink, IUnknown) {
  795.    // IUnknown members
  796.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  797.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  798.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  799.  
  800.    // IAudioSourceNotifySink members
  801.    STDMETHOD (AudioStop)      (THIS_ WORD) PURE;
  802.    STDMETHOD (AudioStart)     (THIS) PURE;
  803.    STDMETHOD (DataAvailable)  (THIS_ DWORD, BOOL) PURE;
  804.    STDMETHOD (Overflow)       (THIS_ DWORD) PURE;
  805.    };
  806.  
  807. typedef IAudioSourceNotifySink FAR * PIAUDIOSOURCENOTIFYSINK;
  808.  
  809. // IAudioFileNotifySink Interface
  810. #undef   INTERFACE
  811. #define  INTERFACE   IAudioFileNotifySink
  812.  
  813. // {492FE490-51E7-11b9-C000-FED6CBA3B1A9}
  814. DEFINE_GUID( IID_IAudioFileNotifySink, 0x492fe490, 0x51e7, 0x11b9, 0xc0, 0x0, 0xfe, 0xd6, 0xcb, 0xa3, 0xb1, 0xa9);
  815.  
  816. DECLARE_INTERFACE_ (IAudioFileNotifySink, IUnknown) {
  817.    // IUnknown members
  818.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  819.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  820.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  821.  
  822.    // IAudioSourceNotifySink members
  823.    STDMETHOD (FileBegin)      (THIS_ DWORD) PURE;
  824.    STDMETHOD (FileEnd)        (THIS_ DWORD) PURE;
  825.    STDMETHOD (QueueEmpty)     (THIS) PURE;
  826.    STDMETHOD (Posn)           (THIS_ QWORD, QWORD) PURE;
  827.    };
  828.  
  829. typedef IAudioFileNotifySink FAR * PIAUDIOFILENOTIFYSINK;
  830.  
  831.  
  832.  
  833. // IAudioFile Interface
  834.  
  835. #undef   INTERFACE
  836. #define  INTERFACE   IAudioFile
  837.  
  838. // {FD7C2320-3D6D-11b9-C000-FED6CBA3B1A9}
  839. DEFINE_GUID( IID_IAudioFile, 0xfd7c2320, 0x3d6d, 0x11b9, 0xc0, 0x0, 0xfe, 0xd6, 0xcb, 0xa3, 0xb1, 0xa9);
  840.  
  841. DECLARE_INTERFACE_ (IAudioFile, IUnknown) {
  842.    // IUnknown members
  843.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  844.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  845.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  846.  
  847.    // IAudioFile members
  848.    STDMETHOD (Register) (THIS_ PIAUDIOFILENOTIFYSINK) PURE;
  849.    STDMETHOD (Set) (THIS_ LPCWSTR pszFile, DWORD dwID) PURE;
  850.    STDMETHOD (Add) (THIS_ LPCWSTR pszFile, DWORD dwID) PURE;
  851.    STDMETHOD (Flush) (THIS) PURE;
  852.    STDMETHOD (RealTimeSet) (THIS_ WORD wTime) PURE;
  853.    STDMETHOD (RealTimeGet) (THIS_ WORD *pwTime) PURE;
  854.    };
  855.  
  856. typedef IAudioFile FAR * PIAUDIOFILE;
  857.  
  858.  
  859. /************************************************************************
  860. defines */
  861. /* SRINFO */
  862. #define  SRMI_NAMELEN                  SVFN_LEN
  863.  
  864. #define  SRSEQUENCE_DISCRETE           (0)
  865. #define  SRSEQUENCE_CONTINUOUS          (1)
  866. #define  SRSEQUENCE_WORDSPOT            (2)
  867.  
  868. #define  SRGRAM_CFG                    SETBIT(0)
  869. #define  SRGRAM_DICTATION              SETBIT(1)
  870. #define  SRGRAM_LIMITEDDOMAIN          SETBIT(2)
  871.  
  872. #define  SRFEATURE_INDEPSPEAKER        SETBIT(0)
  873. #define  SRFEATURE_INDEPMICROPHONE     SETBIT(1)
  874. #define  SRFEATURE_TRAINWORD           SETBIT(2)
  875. #define  SRFEATURE_TRAINPHONETIC       SETBIT(3)
  876. #define  SRFEATURE_WILDCARD            SETBIT(4)
  877. #define  SRFEATURE_ANYWORD             SETBIT(5)
  878. #define  SRFEATURE_PCOPTIMIZED         SETBIT(6)
  879. #define  SRFEATURE_PHONEOPTIMIZED      SETBIT(7)
  880. #define  SRFEATURE_GRAMLIST            SETBIT(8)
  881. #define  SRFEATURE_GRAMLINK            SETBIT(9)
  882. #define  SRFEATURE_MULTILINGUAL        SETBIT(10)
  883. #define  SRFEATURE_GRAMRECURSIVE       SETBIT(11)
  884. #define  SRFEATURE_IPAUNICODE          SETBIT(12)
  885.  
  886. #define  SRI_ILEXPRONOUNCE             SETBIT(0)
  887. #define  SRI_ISRATTRIBUTES             SETBIT(1)
  888. #define  SRI_ISRCENTRAL                SETBIT(2)
  889. #define  SRI_ISRDIALOGS                SETBIT(3)
  890. #define  SRI_ISRGRAMCOMMON             SETBIT(4)
  891. #define  SRI_ISRGRAMCFG                SETBIT(5)
  892. #define  SRI_ISRGRAMDICTATION          SETBIT(6)
  893. #define  SRI_ISRGRAMINSERTIONGUI       SETBIT(7)
  894. #define  SRI_ISRESBASIC                SETBIT(8)
  895. #define  SRI_ISRESMERGE                SETBIT(9)
  896. #define  SRI_ISRESAUDIO                SETBIT(10)
  897. #define  SRI_ISRESCORRECTION           SETBIT(11)
  898. #define  SRI_ISRESEVAL                 SETBIT(12)
  899. #define  SRI_ISRESGRAPH                SETBIT(13)
  900. #define  SRI_ISRESMEMORY               SETBIT(14)
  901. #define  SRI_ISRESMODIFYGUI            SETBIT(15)
  902. #define  SRI_ISRESSPEAKER              SETBIT(16)
  903. #define  SRI_ISRSPEAKER                SETBIT(17)
  904.  
  905.  
  906. // ISRGramCommon::TrainQuery
  907. #define   SRGRAMQ_NONE                    0
  908. #define   SRGRAMQ_GENERALTRAIN            1
  909. #define   SRGRAMQ_PHRASE                  2
  910. #define   SRGRAMQ_DIALOG                  3
  911.  
  912. // ISRGramNotifySink::PhraseFinish
  913. #define   ISRNOTEFIN_RECOGNIZED         SETBIT(0)
  914. #define   ISRNOTEFIN_THISGRAMMAR        SETBIT(1)
  915. #define   ISRNOTEFIN_RECOGSI            SETBIT(2)
  916.  
  917. // ISRGramNotifySink::Training
  918. #define   SRGNSTRAIN_GENERAL            SETBIT(0)
  919. #define   SRGNSTRAIN_GRAMMAR            SETBIT(1)
  920. #define   SRGNSTRAIN_MICROPHONE         SETBIT(2)
  921.  
  922. // ISRNotifySink::AttribChange
  923. #define   ISRNSAC_AUTOGAINENABLE        1
  924. #define   ISRNSAC_THRESHOLD             2
  925. #define   ISRNSAC_ECHO                  3
  926. #define   ISRNSAC_ENERGYFLOOR           4
  927. #define   ISRNSAC_MICROPHONE            5
  928. #define   ISRNSAC_REALTIME              6
  929. #define   ISRNSAC_SPEAKER               7
  930. #define   ISRNSAC_TIMEOUT               8
  931.  
  932. /* Interference */
  933. #define  SRMSGINT_NOISE                (0x0001)
  934. #define  SRMSGINT_NOSIGNAL             (0x0002)
  935. #define  SRMSGINT_TOOLOUD              (0x0003)
  936. #define  SRMSGINT_TOOQUIET             (0x0004)
  937. #define  SRMSGINT_AUDIODATA_STOPPED    (0x0005)
  938. #define  SRMSGINT_AUDIODATA_STARTED    (0x0006)
  939. #define  SRMSGINT_IAUDIO_STARTED       (0x0007)
  940. #define  SRMSGINT_IAUDIO_STOPPED       (0x0008)
  941.  
  942. // Gramamr header values
  943. #define   SRHDRTYPE_CFG                  0
  944. #define   SRHDRTYPE_LIMITEDDOMAIN        1
  945. #define   SRHDRTYPE_DICTATION            2
  946.  
  947. #define   SRHDRFLAG_UNICODE              SETBIT(0)  
  948.  
  949. /* SRCFGSYMBOL */
  950. #define  SRCFG_STARTOPERATION          (1)
  951. #define  SRCFG_ENDOPERATION            (2)
  952. #define  SRCFG_WORD                    (3)
  953. #define  SRCFG_RULE                    (4)
  954. #define  SRCFG_WILDCARD                (5)
  955. #define  SRCFG_LIST                    (6)
  956.  
  957. #define  SRCFGO_SEQUENCE               (1)
  958. #define  SRCFGO_ALTERNATIVE            (2)
  959. #define  SRCFGO_REPEAT                 (3)
  960. #define  SRCFGO_OPTIONAL               (4)
  961.  
  962.  
  963. // Grammar-chunk IDs
  964. #define   SRCK_LANGUAGE                  1
  965. #define   SRCKCFG_WORDS                  2
  966. #define   SRCKCFG_RULES                  3
  967. #define   SRCKCFG_EXPORTRULES            4
  968. #define   SRCKCFG_IMPORTRULES            5
  969. #define   SRCKCFG_LISTS                  6
  970. #define   SRCKD_TOPIC                    7
  971. #define   SRCKD_COMMON                   8
  972. #define   SRCKD_GROUP                    9
  973. #define   SRCKD_SAMPLE                   10
  974. #define   SRCKLD_WORDS                   11
  975. #define   SRCKLD_GROUP                   12
  976. #define   SRCKLD_SAMPLE                  13
  977.  
  978. /* TrainQuery */
  979. #define  SRTQEX_REQUIRED               (0x0000)
  980. #define  SRTQEX_RECOMMENDED            (0x0001)
  981.  
  982. /* ISRResCorrection */
  983. #define  SRCORCONFIDENCE_SOME          (0x0001)
  984. #define  SRCORCONFIDENCE_VERY          (0x0002)
  985.  
  986. /* ISRResMemory constants */
  987. #define  SRRESMEMKIND_AUDIO            SETBIT(0)
  988. #define  SRRESMEMKIND_CORRECTION       SETBIT(1)
  989. #define  SRRESMEMKIND_EVAL             SETBIT(2)
  990. #define  SRRESMEMKIND_PHONEMEGRAPH     SETBIT(3)
  991. #define  SRRESMEMKIND_WORDGRAPH        SETBIT(4)
  992.  
  993. // Attribute minimums and maximums
  994. #define  SRATTR_MINAUTOGAIN               0
  995. #define  SRATTR_MAXAUTOGAIN               100
  996. #define  SRATTR_MINENERGYFLOOR            0
  997. #define  SRATTR_MAXENERGYFLOOR            0xffff
  998. #define  SRATTR_MINREALTIME               0
  999. #define  SRATTR_MAXREALTIME               0xffffffff
  1000. #define  SRATTR_MINTHRESHOLD              0
  1001. #define  SRATTR_MAXTHRESHOLD              100
  1002. #define  SRATTR_MINTOINCOMPLETE           0
  1003. #define  SRATTR_MAXTOINCOMPLETE           0xffffffff
  1004. #define  SRATTR_MINTOCOMPLETE             0
  1005. #define  SRATTR_MAXTOCOMPLETE             0xffffffff
  1006.  
  1007.  
  1008. /************************************************************************
  1009. typedefs */
  1010.  
  1011. typedef struct {
  1012.    DWORD    dwSize;
  1013.    DWORD    dwUniqueID;
  1014.    BYTE     abData[0];
  1015.    } SRCFGRULE, * PSRCFGRULE;
  1016.  
  1017.  
  1018.  
  1019. typedef struct {
  1020.    DWORD    dwSize;
  1021.    DWORD    dwRuleNum;
  1022.    WCHAR    szString[0];
  1023.    } SRCFGIMPRULEW, * PSRCFGIMPRULEW;
  1024.  
  1025. typedef struct {
  1026.    DWORD    dwSize;
  1027.    DWORD    dwRuleNum;
  1028.    CHAR     szString[0];
  1029.    } SRCFGIMPRULEA, * PSRCFGIMPRULEA;
  1030.  
  1031. #ifdef  _S_UNICODE
  1032. #define  SRCFGIMPRULE      SRCFGIMPRULEW
  1033. #define  PSRCFGIMPRULE     PSRCFGIMPRULEW
  1034. #else
  1035. #define  SRCFGIMPRULE      SRCFGIMPRULEA
  1036. #define  PSRCFGIMPRULE     PSRCFGIMPRULEA
  1037. #endif  // _S_UNICODE
  1038.  
  1039.  
  1040.  
  1041. typedef struct {
  1042.    DWORD    dwSize;
  1043.    DWORD    dwRuleNum;
  1044.    WCHAR    szString[0];
  1045.    } SRCFGXRULEW, * PSRCFGXRULEW;
  1046.  
  1047. typedef struct {
  1048.    DWORD    dwSize;
  1049.    DWORD    dwRuleNum;
  1050.    CHAR     szString[0];
  1051.    } SRCFGXRULEA, * PSRCFGXRULEA;
  1052.  
  1053. #ifdef  _S_UNICODE
  1054. #define  SRCFGXRULE     SRCFGXRULEW
  1055. #define  PSRCFGXRULE    PSRCFGXRULEW
  1056. #else
  1057. #define  SRCFGXRULE     SRCFGXRULEA
  1058. #define  PSRCFGXRULE    PSRCFGXRULEA
  1059. #endif  // _S_UNICODE
  1060.  
  1061.  
  1062.  
  1063. typedef struct {
  1064.    DWORD    dwSize;
  1065.    DWORD    dwListNum;
  1066.    WCHAR    szString[0];
  1067.    } SRCFGLISTW, * PSRCFGLISTW;
  1068.  
  1069. typedef struct {
  1070.    DWORD    dwSize;
  1071.    DWORD    dwListNum;
  1072.    CHAR     szString[0];
  1073.    } SRCFGLISTA, * PSRCFGLISTA;
  1074.  
  1075. #ifdef  _S_UNICODE
  1076. #define  SRCFGLIST      SRCFGLISTW
  1077. #define  PSRCFGLIST     PSRCFGLISTW
  1078. #else
  1079. #define  SRCFGLIST      SRCFGLISTA
  1080. #define  PSRCFGLIST     PSRCFGLISTA
  1081. #endif  // _S_UNICODE
  1082.  
  1083.  
  1084.  
  1085. typedef struct {
  1086.    WORD     wType;
  1087.    WORD     wProbability;
  1088.    DWORD    dwValue;
  1089.    } SRCFGSYMBOL, * PSRCFGSYMBOL;
  1090.  
  1091.  
  1092.  
  1093. typedef struct {
  1094.    DWORD    dwSize;
  1095.    DWORD    dwWordNum;
  1096.    WCHAR    szWord[0];
  1097.    } SRWORDW, * PSRWORDW;
  1098.  
  1099. typedef struct {
  1100.    DWORD    dwSize;
  1101.    DWORD    dwWordNum;
  1102.    CHAR     szWord[0];
  1103.    } SRWORDA, * PSRWORDA;
  1104.  
  1105. #ifdef  _S_UNICODE
  1106. #define  SRWORD      SRWORDW
  1107. #define  PSRWORD     PSRWORDW
  1108. #else
  1109. #define  SRWORD      SRWORDA
  1110. #define  PSRWORD     PSRWORDA
  1111. #endif  // _S_UNICODE
  1112.  
  1113.  
  1114.  
  1115. typedef struct {
  1116.    DWORD    dwSize;
  1117.    BYTE     abWords[0];
  1118.    } SRPHRASEW, * PSRPHRASEW;
  1119.  
  1120. typedef struct {
  1121.    DWORD    dwSize;
  1122.    BYTE     abWords[0];
  1123.    } SRPHRASEA, * PSRPHRASEA;
  1124.  
  1125. #ifdef  _S_UNICODE
  1126. #define  SRPHRASE    SRPHRASEW
  1127. #define  PSRPHRASE   PSRPHRASEW
  1128. #else
  1129. #define  SRPHRASE    SRPHRASEA
  1130. #define  PSRPHRASE   PSRPHRASEA
  1131. #endif  // _S_UNICODE
  1132.  
  1133.  
  1134.  
  1135. typedef struct {
  1136.    DWORD      dwType;
  1137.    DWORD      dwFlags;
  1138.    } SRHEADER, *PSRHEADER;
  1139.  
  1140. typedef struct {
  1141.    DWORD      dwChunkID;
  1142.    DWORD      dwChunkSize;
  1143.    BYTE       avInfo[0];
  1144.    } SRCHUNK, *PSRCHUNK;
  1145.  
  1146.  
  1147.  
  1148. typedef struct {
  1149.    GUID       gEngineID;
  1150.    WCHAR      szMfgName[SRMI_NAMELEN];
  1151.    WCHAR      szProductName[SRMI_NAMELEN];
  1152.    GUID       gModeID;
  1153.    WCHAR      szModeName[SRMI_NAMELEN];
  1154.    LANGUAGEW  language;
  1155.    DWORD      dwSequencing;
  1156.    DWORD      dwMaxWordsVocab;
  1157.    DWORD      dwMaxWordsState;
  1158.    DWORD      dwGrammars;
  1159.    DWORD      dwFeatures;
  1160.    DWORD      dwInterfaces;
  1161.    DWORD      dwEngineFeatures;
  1162.    } SRMODEINFOW, * PSRMODEINFOW;
  1163.  
  1164. typedef struct {
  1165.    GUID       gEngineID;
  1166.    CHAR       szMfgName[SRMI_NAMELEN];
  1167.    CHAR       szProductName[SRMI_NAMELEN];
  1168.    GUID       gModeID;
  1169.    CHAR       szModeName[SRMI_NAMELEN];
  1170.    LANGUAGEA  language;
  1171.    DWORD      dwSequencing;
  1172.    DWORD      dwMaxWordsVocab;
  1173.    DWORD      dwMaxWordsState;
  1174.    DWORD      dwGrammars;
  1175.    DWORD      dwFeatures;
  1176.    DWORD      dwInterfaces;
  1177.    DWORD      dwEngineFeatures;
  1178.    } SRMODEINFOA, * PSRMODEINFOA;
  1179.  
  1180. #ifdef  _S_UNICODE
  1181. #define  SRMODEINFO     SRMODEINFOW
  1182. #define  PSRMODEINFO    PSRMODEINFOW
  1183. #else
  1184. #define  SRMODEINFO     SRMODEINFOA
  1185. #define  PSRMODEINFO    PSRMODEINFOA
  1186. #endif  // _S_UNICODE
  1187.  
  1188.  
  1189.  
  1190. typedef struct {
  1191.    DWORD      dwEngineID;
  1192.    DWORD      dwMfgName;
  1193.    DWORD      dwProductName;
  1194.    DWORD      dwModeID;
  1195.    DWORD      dwModeName;
  1196.    DWORD      dwLanguage;
  1197.    DWORD      dwDialect;
  1198.    DWORD      dwSequencing;
  1199.    DWORD      dwMaxWordsVocab;
  1200.    DWORD      dwMaxWordsState;
  1201.    DWORD      dwGrammars;
  1202.    DWORD      dwFeatures;
  1203.    DWORD      dwInterfaces;
  1204.    DWORD      dwEngineFeatures;
  1205.    } SRMODEINFORANK, * PSRMODEINFORANK;
  1206.  
  1207.  
  1208.  
  1209. // speech recognition enumeration sharing object
  1210. typedef struct {
  1211.    QWORD        qwInstanceID;
  1212.    DWORD        dwDeviceID;
  1213.    SRMODEINFOW  srModeInfo;
  1214. } SRSHAREW, * PSRSHAREW;
  1215.  
  1216. typedef struct {
  1217.    QWORD        qwInstanceID;
  1218.    DWORD        dwDeviceID;
  1219.    SRMODEINFOA  srModeInfo;
  1220. } SRSHAREA, * PSRSHAREA;
  1221.  
  1222. #ifdef  _S_UNICODE
  1223. #define  SRSHARE    SRSHAREW
  1224. #define  PSRSHARE   PSRSHAREW
  1225. #else
  1226. #define  SRSHARE    SRSHAREA
  1227. #define  PSRSHARE   PSRSHAREA
  1228. #endif  // _S_UNICODE
  1229.  
  1230.  
  1231.  
  1232.  
  1233. // ISRCentral::GrammarLoad
  1234. typedef enum {
  1235.    SRGRMFMT_CFG = 0x0000,
  1236.    SRGRMFMT_LIMITEDDOMAIN = 0x0001,
  1237.    SRGRMFMT_DICTATION = 0x0002,
  1238.    SRGRMFMT_CFGNATIVE = 0x8000,
  1239.    SRGRMFMT_LIMITEDDOMAINNATIVE = 0x8001,
  1240.    SRGRMFMT_DICTATIONNATIVE = 0x8002,
  1241.    } SRGRMFMT, * PSRGRMFMT;
  1242.  
  1243. /************************************************************************
  1244. Class IDs */
  1245.  
  1246.  
  1247. // {E02D16C0-C743-11cd-80E5-00AA003E4B50}
  1248. DEFINE_GUID(CLSID_SREnumerator, 
  1249. 0xe02d16c0, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
  1250.  
  1251.  
  1252. /************************************************************************
  1253. interfaces */
  1254.  
  1255.  
  1256. /*
  1257.  * ISRAttributes
  1258.  */
  1259.  
  1260. #undef   INTERFACE
  1261. #define  INTERFACE   ISRAttributesW
  1262.  
  1263. DEFINE_GUID(IID_ISRAttributesW, 0x68A33AA0L, 0x44CD, 0x101B, 0x90, 0xA8, 0x00, 0xAA, 0x00, 0x3E, 0x4B, 0x50);
  1264.  
  1265. DECLARE_INTERFACE_ (ISRAttributesW, IUnknown) {
  1266.  
  1267.    // IUnknown members
  1268.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1269.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1270.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1271.  
  1272.    // ISRAttributesW members
  1273.    STDMETHOD (AutoGainEnableGet) (THIS_ DWORD *) PURE;
  1274.    STDMETHOD (AutoGainEnableSet) (THIS_ DWORD) PURE;
  1275.    STDMETHOD (EchoGet)           (THIS_ BOOL *) PURE;
  1276.    STDMETHOD (EchoSet)           (THIS_ BOOL) PURE;
  1277.    STDMETHOD (EnergyFloorGet)    (THIS_ WORD *) PURE;
  1278.    STDMETHOD (EnergyFloorSet)    (THIS_ WORD) PURE;
  1279.    STDMETHOD (MicrophoneGet)     (THIS_ PWSTR, DWORD, DWORD *) PURE;
  1280.    STDMETHOD (MicrophoneSet)     (THIS_ PCWSTR) PURE;
  1281.    STDMETHOD (RealTimeGet)       (THIS_ DWORD *) PURE;
  1282.    STDMETHOD (RealTimeSet)       (THIS_ DWORD) PURE;
  1283.    STDMETHOD (SpeakerGet)        (THIS_ PWSTR, DWORD, DWORD *) PURE;
  1284.    STDMETHOD (SpeakerSet)        (THIS_ PCWSTR) PURE;
  1285.    STDMETHOD (TimeOutGet)        (THIS_ DWORD *, DWORD *) PURE;
  1286.    STDMETHOD (TimeOutSet)        (THIS_ DWORD, DWORD) PURE;
  1287.    STDMETHOD (ThresholdGet)      (THIS_ DWORD *) PURE;
  1288.    STDMETHOD (ThresholdSet)      (THIS_ DWORD) PURE;
  1289.    };
  1290.  
  1291. typedef ISRAttributesW FAR * PISRATTRIBUTESW;
  1292.  
  1293.  
  1294. #undef   INTERFACE
  1295. #define  INTERFACE   ISRAttributesA
  1296.  
  1297. DEFINE_GUID(IID_ISRAttributesA, 0x2F26B9C1L, 0xDB31, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  1298.  
  1299. DECLARE_INTERFACE_ (ISRAttributesA, IUnknown) {
  1300.  
  1301.    // IUnknown members
  1302.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1303.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1304.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1305.  
  1306.    // ISRAttributesA members
  1307.    STDMETHOD (AutoGainEnableGet) (THIS_ DWORD *) PURE;
  1308.    STDMETHOD (AutoGainEnableSet) (THIS_ DWORD) PURE;
  1309.    STDMETHOD (EchoGet)           (THIS_ BOOL *) PURE;
  1310.    STDMETHOD (EchoSet)           (THIS_ BOOL) PURE;
  1311.    STDMETHOD (EnergyFloorGet)    (THIS_ WORD *) PURE;
  1312.    STDMETHOD (EnergyFloorSet)    (THIS_ WORD) PURE;
  1313.    STDMETHOD (MicrophoneGet)     (THIS_ PSTR, DWORD, DWORD *) PURE;
  1314.    STDMETHOD (MicrophoneSet)     (THIS_ PCSTR) PURE;
  1315.    STDMETHOD (RealTimeGet)       (THIS_ DWORD *) PURE;
  1316.    STDMETHOD (RealTimeSet)       (THIS_ DWORD) PURE;
  1317.    STDMETHOD (SpeakerGet)        (THIS_ PSTR, DWORD, DWORD *) PURE;
  1318.    STDMETHOD (SpeakerSet)        (THIS_ PCSTR) PURE;
  1319.    STDMETHOD (TimeOutGet)        (THIS_ DWORD *, DWORD *) PURE;
  1320.    STDMETHOD (TimeOutSet)        (THIS_ DWORD, DWORD) PURE;
  1321.    STDMETHOD (ThresholdGet)      (THIS_ DWORD *) PURE;
  1322.    STDMETHOD (ThresholdSet)      (THIS_ DWORD) PURE;
  1323.    };
  1324.  
  1325. typedef ISRAttributesA FAR * PISRATTRIBUTESA;
  1326.  
  1327.  
  1328. #ifdef _S_UNICODE
  1329.  #define ISRAttributes        ISRAttributesW
  1330.  #define IID_ISRAttributes    IID_ISRAttributesW
  1331.  #define PISRATTRIBUTES       PISRATTRIBUTESW
  1332.  
  1333. #else
  1334.  #define ISRAttributes        ISRAttributesA
  1335.  #define IID_ISRAttributes    IID_ISRAttributesA
  1336.  #define PISRATTRIBUTES       PISRATTRIBUTESA
  1337.  
  1338. #endif // _S_UNICODE
  1339.  
  1340.  
  1341.  
  1342. /*
  1343.  * ISRCentral
  1344.  */
  1345.  
  1346. #undef   INTERFACE
  1347. #define  INTERFACE   ISRCentralW
  1348.  
  1349. DEFINE_GUID(IID_ISRCentralW, 0xB9BD3860L, 0x44DB, 0x101B, 0x90, 0xA8, 0x00, 0xAA, 0x00, 0x3E, 0x4B, 0x50);
  1350.  
  1351. DECLARE_INTERFACE_ (ISRCentralW, IUnknown) {
  1352.  
  1353.    // IUnknown members
  1354.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1355.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1356.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1357.  
  1358.    // ISRCentralW members
  1359.    STDMETHOD (ModeGet)        (THIS_ PSRMODEINFOW) PURE;
  1360.    STDMETHOD (GrammarLoad)    (THIS_ SRGRMFMT, SDATA, PVOID, IID, LPUNKNOWN *) PURE;
  1361.    STDMETHOD (Pause)          (THIS) PURE;
  1362.    STDMETHOD (PosnGet)        (THIS_ PQWORD) PURE;
  1363.    STDMETHOD (Resume)         (THIS) PURE;
  1364.    STDMETHOD (ToFileTime)     (THIS_ PQWORD, FILETIME *) PURE;
  1365.    STDMETHOD (Register)       (THIS_ PVOID, IID, DWORD*) PURE;
  1366.    STDMETHOD (UnRegister)     (THIS_ DWORD) PURE;
  1367.    };
  1368.  
  1369. typedef ISRCentralW FAR * PISRCENTRALW;
  1370.  
  1371.  
  1372. #undef   INTERFACE
  1373. #define  INTERFACE   ISRCentralA
  1374.  
  1375. DEFINE_GUID(IID_ISRCentralA, 0x2F26B9C2L, 0xDB31, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  1376.  
  1377. DECLARE_INTERFACE_ (ISRCentralA, IUnknown) {
  1378.  
  1379.    // IUnknown members
  1380.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1381.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1382.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1383.  
  1384.    // ISRCentralA members
  1385.    STDMETHOD (ModeGet)        (THIS_ PSRMODEINFOA) PURE;
  1386.    STDMETHOD (GrammarLoad)    (THIS_ SRGRMFMT, SDATA, PVOID, IID, LPUNKNOWN *) PURE;
  1387.    STDMETHOD (Pause)          (THIS) PURE;
  1388.    STDMETHOD (PosnGet)        (THIS_ PQWORD) PURE;
  1389.    STDMETHOD (Resume)         (THIS) PURE;
  1390.    STDMETHOD (ToFileTime)     (THIS_ PQWORD, FILETIME *) PURE;
  1391.    STDMETHOD (Register)       (THIS_ PVOID, IID, DWORD*) PURE;
  1392.    STDMETHOD (UnRegister)     (THIS_ DWORD) PURE;
  1393.    };
  1394.  
  1395. typedef ISRCentralA FAR * PISRCENTRALA;
  1396.  
  1397.  
  1398. #ifdef _S_UNICODE
  1399.  #define ISRCentral           ISRCentralW
  1400.  #define IID_ISRCentral       IID_ISRCentralW
  1401.  #define PISRCENTRAL          PISRCENTRALW
  1402.  
  1403. #else
  1404.  #define ISRCentral           ISRCentralA
  1405.  #define IID_ISRCentral       IID_ISRCentralA
  1406.  #define PISRCENTRAL          PISRCENTRALA
  1407.  
  1408. #endif   // _S_UNICODE
  1409.  
  1410.  
  1411.  
  1412. /*
  1413.  * ISRDialogs
  1414.  */
  1415.  
  1416. #undef   INTERFACE
  1417. #define  INTERFACE   ISRDialogsW
  1418.  
  1419. DEFINE_GUID(IID_ISRDialogsW, 0xBCFB4C60L, 0x44DB, 0x101B, 0x90, 0xA8, 0x00, 0xAA, 0x00, 0x3E, 0x4B, 0x50);
  1420.  
  1421. DECLARE_INTERFACE_ (ISRDialogsW, IUnknown) {
  1422.  
  1423.    // IUnknown members
  1424.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1425.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1426.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1427.  
  1428.    // ISRDialogsW members
  1429.    STDMETHOD (AboutDlg)       (THIS_ HWND, PCWSTR) PURE;
  1430.    STDMETHOD (GeneralDlg)     (THIS_ HWND, PCWSTR) PURE;
  1431.    STDMETHOD (LexiconDlg)     (THIS_ HWND, PCWSTR) PURE;
  1432.    STDMETHOD (TrainMicDlg)    (THIS_ HWND, PCWSTR) PURE;
  1433.    STDMETHOD (TrainGeneralDlg)(THIS_ HWND, PCWSTR) PURE;
  1434.    };
  1435.  
  1436. typedef ISRDialogsW FAR * PISRDIALOGSW;
  1437.  
  1438.  
  1439. #undef   INTERFACE
  1440. #define  INTERFACE   ISRDialogsA
  1441.  
  1442. DEFINE_GUID(IID_ISRDialogsA, 0x05EB6C60L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  1443.  
  1444. DECLARE_INTERFACE_ (ISRDialogsA, IUnknown) {
  1445.  
  1446.    // IUnknown members
  1447.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1448.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1449.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1450.  
  1451.    // ISRDialogsA members
  1452.    STDMETHOD (AboutDlg)       (THIS_ HWND, PCSTR) PURE;
  1453.    STDMETHOD (GeneralDlg)     (THIS_ HWND, PCSTR) PURE;
  1454.    STDMETHOD (LexiconDlg)     (THIS_ HWND, PCSTR) PURE;
  1455.    STDMETHOD (TrainMicDlg)    (THIS_ HWND, PCSTR) PURE;
  1456.    STDMETHOD (TrainGeneralDlg)(THIS_ HWND, PCSTR) PURE;
  1457.    };
  1458.  
  1459. typedef ISRDialogsA FAR * PISRDIALOGSA;
  1460.  
  1461.  
  1462. #ifdef _S_UNICODE
  1463.  #define ISRDialogs        ISRDialogsW
  1464.  #define IID_ISRDialogs    IID_ISRDialogsW
  1465.  #define PISRDIALOGS       PISRDIALOGSW
  1466.  
  1467. #else
  1468.  #define ISRDialogs        ISRDialogsA
  1469.  #define IID_ISRDialogs    IID_ISRDialogsA
  1470.  #define PISRDIALOGS       PISRDIALOGSA
  1471.  
  1472. #endif
  1473.  
  1474.  
  1475.  
  1476. /*
  1477.  *  ISREnum
  1478.  */
  1479.  
  1480. #undef   INTERFACE
  1481. #define  INTERFACE   ISREnumW
  1482.  
  1483. DEFINE_GUID(IID_ISREnumW, 0xBFA9F1A0L, 0x44DB, 0x101B, 0x90, 0xA8, 0x00, 0xAA, 0x00, 0x3E, 0x4B, 0x50);
  1484.  
  1485. DECLARE_INTERFACE_ (ISREnumW, IUnknown) {
  1486.    // IUnknown members
  1487.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1488.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1489.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1490.  
  1491.    // ISREnumW members
  1492.    STDMETHOD (Next)           (THIS_ ULONG, PSRMODEINFOW, ULONG *) PURE;
  1493.    STDMETHOD (Skip)           (THIS_ ULONG) PURE;
  1494.    STDMETHOD (Reset)          (THIS) PURE;
  1495.    STDMETHOD (Clone)          (THIS_ ISREnumW * FAR *) PURE;
  1496.    STDMETHOD (Select)         (THIS_ GUID, PISRCENTRALW *, LPUNKNOWN) PURE;
  1497.    };
  1498.  
  1499. typedef ISREnumW FAR * PISRENUMW;
  1500.  
  1501.  
  1502. #undef   INTERFACE
  1503. #define  INTERFACE   ISREnumA
  1504.  
  1505. DEFINE_GUID(IID_ISREnumA, 0x05EB6C61L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  1506.  
  1507. DECLARE_INTERFACE_ (ISREnumA, IUnknown) {
  1508.  
  1509.    // IUnknown members
  1510.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1511.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1512.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1513.  
  1514.    // ISREnumA members
  1515.    STDMETHOD (Next)           (THIS_ ULONG, PSRMODEINFOA, ULONG *) PURE;
  1516.    STDMETHOD (Skip)           (THIS_ ULONG) PURE;
  1517.    STDMETHOD (Reset)          (THIS) PURE;
  1518.    STDMETHOD (Clone)          (THIS_ ISREnumA * FAR *) PURE;
  1519.    STDMETHOD (Select)         (THIS_ GUID, PISRCENTRALA *, LPUNKNOWN) PURE;
  1520.    };
  1521.  
  1522. typedef ISREnumA FAR * PISRENUMA;
  1523.  
  1524.  
  1525. #ifdef _S_UNICODE
  1526.  #define ISREnum           ISREnumW
  1527.  #define IID_ISREnum       IID_ISREnumW
  1528.  #define PISRENUM          PISRENUMW
  1529.  
  1530. #else
  1531.  #define ISREnum           ISREnumA
  1532.  #define IID_ISREnum       IID_ISREnumA
  1533.  #define PISRENUM          PISRENUMA
  1534.  
  1535. #endif
  1536.  
  1537.  
  1538.  
  1539. /*
  1540.  * ISRFind
  1541.  */
  1542.  
  1543. #undef   INTERFACE
  1544. #define  INTERFACE   ISRFindW
  1545.  
  1546. DEFINE_GUID(IID_ISRFindW, 0xC2835060L, 0x44DB, 0x101B, 0x90, 0xA8, 0x00, 0xAA, 0x00, 0x3E, 0x4B, 0x50);
  1547.  
  1548. DECLARE_INTERFACE_ (ISRFindW, IUnknown) {
  1549.  
  1550.    // IUnknown members
  1551.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1552.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1553.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1554.  
  1555.    // ISRFindW members
  1556.    STDMETHOD (Find)           (THIS_ PSRMODEINFOW, PSRMODEINFORANK, PSRMODEINFOW) PURE;
  1557.    STDMETHOD (Select)         (THIS_ GUID, PISRCENTRALW *, LPUNKNOWN) PURE;
  1558.    };
  1559.  
  1560. typedef ISRFindW FAR * PISRFINDW;
  1561.  
  1562.  
  1563. #undef   INTERFACE
  1564. #define  INTERFACE   ISRFindA
  1565.  
  1566. DEFINE_GUID(IID_ISRFindA, 0x05EB6C62L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  1567.  
  1568. DECLARE_INTERFACE_ (ISRFindA, IUnknown) {
  1569.  
  1570.    // IUnknown members
  1571.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1572.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1573.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1574.  
  1575.    // ISRFindA members
  1576.    STDMETHOD (Find)           (THIS_ PSRMODEINFOA, PSRMODEINFORANK, PSRMODEINFOA) PURE;
  1577.    STDMETHOD (Select)         (THIS_ GUID, PISRCENTRALA *, LPUNKNOWN) PURE;
  1578.    };
  1579.  
  1580. typedef ISRFindA FAR * PISRFINDA;
  1581.  
  1582.  
  1583. #ifdef _S_UNICODE
  1584.  #define ISRFind           ISRFindW
  1585.  #define IID_ISRFind       IID_ISRFindW
  1586.  #define PISRFIND          PISRFINDW
  1587.  
  1588. #else
  1589.  #define ISRFind           ISRFindA
  1590.  #define IID_ISRFind       IID_ISRFindA
  1591.  #define PISRFIND          PISRFINDA
  1592.  
  1593. #endif
  1594.  
  1595.  
  1596.  
  1597. /*
  1598.  * ISRGramCommon
  1599.  */
  1600.  
  1601. #undef   INTERFACE
  1602. #define  INTERFACE   ISRGramCommonW
  1603.  
  1604. DEFINE_GUID(IID_ISRGramCommonW, 0xe8c3e160, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
  1605.  
  1606. DECLARE_INTERFACE_ (ISRGramCommonW, IUnknown) {
  1607.  
  1608.    // IUnknown members
  1609.    STDMETHOD(QueryInterface)    (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1610.    STDMETHOD_(ULONG,AddRef)     (THIS) PURE;
  1611.    STDMETHOD_(ULONG,Release)    (THIS) PURE;
  1612.  
  1613.    // ISRGramCommonW members
  1614.    STDMETHOD (Activate)         (THIS_ HWND, BOOL, PCWSTR) PURE;
  1615.    STDMETHOD (Archive)          (THIS_ BOOL, PVOID, DWORD, DWORD *) PURE;
  1616.    STDMETHOD (BookMark)         (THIS_ QWORD, DWORD) PURE;
  1617.    STDMETHOD (Deactivate)       (THIS_ PCWSTR) PURE;
  1618.    STDMETHOD (DeteriorationGet) (THIS_ DWORD *, DWORD *, DWORD *) PURE;
  1619.    STDMETHOD (DeteriorationSet) (THIS_ DWORD, DWORD, DWORD) PURE;
  1620.    STDMETHOD (TrainDlg)         (THIS_ HWND, PCWSTR) PURE;
  1621.    STDMETHOD (TrainPhrase)      (THIS_ DWORD, PSDATA) PURE;
  1622.    STDMETHOD (TrainQuery)       (THIS_ DWORD *) PURE;
  1623.    };
  1624.  
  1625. typedef ISRGramCommonW FAR * PISRGRAMCOMMONW;
  1626.  
  1627.  
  1628. #undef   INTERFACE
  1629. #define  INTERFACE   ISRGramCommonA
  1630.  
  1631. DEFINE_GUID(IID_ISRGramCommonA, 0x05EB6C63L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  1632.  
  1633. DECLARE_INTERFACE_ (ISRGramCommonA, IUnknown) {
  1634.  
  1635.    // IUnknown members
  1636.    STDMETHOD(QueryInterface)    (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1637.    STDMETHOD_(ULONG,AddRef)     (THIS) PURE;
  1638.    STDMETHOD_(ULONG,Release)    (THIS) PURE;
  1639.  
  1640.    // ISRGramCommonA members
  1641.    STDMETHOD (Activate)         (THIS_ HWND, BOOL, PCSTR) PURE;
  1642.    STDMETHOD (Archive)          (THIS_ BOOL, PVOID, DWORD, DWORD *) PURE;
  1643.    STDMETHOD (BookMark)         (THIS_ QWORD, DWORD) PURE;
  1644.    STDMETHOD (Deactivate)       (THIS_ PCSTR) PURE;
  1645.    STDMETHOD (DeteriorationGet) (THIS_ DWORD *, DWORD *, DWORD *) PURE;
  1646.    STDMETHOD (DeteriorationSet) (THIS_ DWORD, DWORD, DWORD) PURE;
  1647.    STDMETHOD (TrainDlg)         (THIS_ HWND, PCSTR) PURE;
  1648.    STDMETHOD (TrainPhrase)      (THIS_ DWORD, PSDATA) PURE;
  1649.    STDMETHOD (TrainQuery)       (THIS_ DWORD *) PURE;
  1650.    };
  1651.  
  1652. typedef ISRGramCommonA FAR * PISRGRAMCOMMONA;
  1653.  
  1654.  
  1655. #ifdef _S_UNICODE
  1656.  #define ISRGramCommon        ISRGramCommonW
  1657.  #define IID_ISRGramCommon    IID_ISRGramCommonW
  1658.  #define PISRGRAMCOMMON       PISRGRAMCOMMONW
  1659.  
  1660. #else
  1661.  #define ISRGramCommon        ISRGramCommonA
  1662.  #define IID_ISRGramCommon    IID_ISRGramCommonA
  1663.  #define PISRGRAMCOMMON       PISRGRAMCOMMONA
  1664.  
  1665. #endif
  1666.  
  1667.  
  1668.  
  1669. /*
  1670.  * ISRGramCFG
  1671.  */
  1672.  
  1673. #undef   INTERFACE
  1674. #define  INTERFACE   ISRGramCFGW
  1675.  
  1676. DEFINE_GUID(IID_ISRGramCFGW, 0xecc0b180, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
  1677.  
  1678. DECLARE_INTERFACE_ (ISRGramCFGW, IUnknown) {
  1679.  
  1680.    // IUnknown members
  1681.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1682.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1683.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1684.  
  1685.    // ISRGramCFGW members
  1686.    STDMETHOD (LinkQuery)      (THIS_ PCWSTR, BOOL *) PURE;
  1687.    STDMETHOD (ListAppend)     (THIS_ PCWSTR, SDATA) PURE;
  1688.    STDMETHOD (ListGet)        (THIS_ PCWSTR, PSDATA) PURE;
  1689.    STDMETHOD (ListRemove)     (THIS_ PCWSTR, SDATA) PURE;
  1690.    STDMETHOD (ListSet)        (THIS_ PCWSTR, SDATA) PURE;
  1691.    STDMETHOD (ListQuery)      (THIS_ PCWSTR, BOOL *) PURE;
  1692.    };
  1693.  
  1694. typedef ISRGramCFGW FAR * PISRGRAMCFGW;
  1695.  
  1696.  
  1697. #undef   INTERFACE
  1698. #define  INTERFACE   ISRGramCFGA
  1699.  
  1700. DEFINE_GUID(IID_ISRGramCFGA, 0x05EB6C64L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  1701.  
  1702. DECLARE_INTERFACE_ (ISRGramCFGA, IUnknown) {
  1703.  
  1704.    // IUnknown members
  1705.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1706.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1707.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1708.  
  1709.    // ISRGramCFGA members
  1710.    STDMETHOD (LinkQuery)      (THIS_ PCSTR, BOOL *) PURE;
  1711.    STDMETHOD (ListAppend)     (THIS_ PCSTR, SDATA) PURE;
  1712.    STDMETHOD (ListGet)        (THIS_ PCSTR, PSDATA) PURE;
  1713.    STDMETHOD (ListRemove)     (THIS_ PCSTR, SDATA) PURE;
  1714.    STDMETHOD (ListSet)        (THIS_ PCSTR, SDATA) PURE;
  1715.    STDMETHOD (ListQuery)      (THIS_ PCSTR, BOOL *) PURE;
  1716.    };
  1717.  
  1718. typedef ISRGramCFGA FAR * PISRGRAMCFGA;
  1719.  
  1720.  
  1721. #ifdef _S_UNICODE
  1722.  #define ISRGramCFG        ISRGramCFGW
  1723.  #define IID_ISRGramCFG    IID_ISRGramCFGW
  1724.  #define PISRGRAMCFG       PISRGRAMCFGW
  1725.  
  1726. #else
  1727.  #define ISRGramCFG        ISRGramCFGA
  1728.  #define IID_ISRGramCFG    IID_ISRGramCFGA
  1729.  #define PISRGRAMCFG       PISRGRAMCFGA
  1730.  
  1731. #endif
  1732.  
  1733.  
  1734.  
  1735. /* 
  1736.  * ISRGramDictation
  1737.  */
  1738.  
  1739. #undef   INTERFACE
  1740. #define  INTERFACE   ISRGramDictationW
  1741.  
  1742. DEFINE_GUID(IID_ISRGramDictationW, 0x090CD9A3, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
  1743.  
  1744. DECLARE_INTERFACE_ (ISRGramDictationW, IUnknown) {
  1745.  
  1746.    // IUnknown members
  1747.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1748.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1749.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1750.  
  1751.    // ISRGramDictationW members
  1752.    STDMETHOD (Context)        (THIS_ PCWSTR, PCWSTR) PURE;
  1753.    STDMETHOD (Hint)           (THIS_ PCWSTR) PURE;
  1754.    STDMETHOD (Words)          (THIS_ PCWSTR) PURE;
  1755.    };
  1756.  
  1757. typedef ISRGramDictationW FAR *PISRGRAMDICTATIONW;
  1758.  
  1759.  
  1760. #undef   INTERFACE
  1761. #define  INTERFACE   ISRGramDictationA
  1762.  
  1763. DEFINE_GUID(IID_ISRGramDictationA, 0x05EB6C65L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  1764.  
  1765. DECLARE_INTERFACE_ (ISRGramDictationA, IUnknown) {
  1766.  
  1767.    // IUnknown members
  1768.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1769.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1770.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1771.  
  1772.    // ISRGramDictationA members
  1773.    STDMETHOD (Context)        (THIS_ PCSTR, PCSTR) PURE;
  1774.    STDMETHOD (Hint)           (THIS_ PCSTR) PURE;
  1775.    STDMETHOD (Words)          (THIS_ PCSTR) PURE;
  1776.    };
  1777.  
  1778. typedef ISRGramDictationA FAR *PISRGRAMDICTATIONA;
  1779.  
  1780.  
  1781. #ifdef _S_UNICODE
  1782.  #define ISRGramDictation        ISRGramDictationW
  1783.  #define IID_ISRGramDictation    IID_ISRGramDictationW
  1784.  #define PISRGRAMDICTATION       PISRGRAMDICTATIONW
  1785.  
  1786. #else
  1787.  #define ISRGramDictation        ISRGramDictationA
  1788.  #define IID_ISRGramDictation    IID_ISRGramDictationA
  1789.  #define PISRGRAMDICTATION       PISRGRAMDICTATIONA
  1790.  
  1791. #endif
  1792.  
  1793.  
  1794.  
  1795. // ISRGramInsertionGUI
  1796. // This does not need an ANSI/UNICODE interface because no characters are passed
  1797. #undef   INTERFACE
  1798. #define  INTERFACE   ISRGramInsertionGUI
  1799.  
  1800. // {090CD9A4-DA1A-11CD-B3CA-00AA0047BA4F}
  1801. DEFINE_GUID(IID_ISRGramInsertionGUI,
  1802. 0x090CD9A4, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
  1803.  
  1804. DECLARE_INTERFACE_ (ISRGramInsertionGUI, IUnknown) {
  1805.    // IUnknown members
  1806.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1807.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1808.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1809.  
  1810.    // ISRGramInsertionGUI members
  1811.    STDMETHOD (Hide)           (THIS) PURE;
  1812.    STDMETHOD (Move)           (THIS_ RECT) PURE;
  1813.    STDMETHOD (Show)           (THIS_ HWND) PURE;
  1814.    };
  1815.  
  1816. typedef ISRGramInsertionGUI FAR *PISRGRAMINSERTIONGUI;
  1817.  
  1818.  
  1819.  
  1820. /*
  1821.  * ISRGramNotifySink
  1822.  */
  1823.  
  1824. #undef   INTERFACE
  1825. #define  INTERFACE   ISRGramNotifySinkW
  1826.  
  1827. DEFINE_GUID(IID_ISRGramNotifySinkW,  0xf106bfa0, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
  1828.  
  1829. DECLARE_INTERFACE_ (ISRGramNotifySinkW, IUnknown) {
  1830.    // IUnknown members
  1831.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1832.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1833.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1834.  
  1835.    // ISRGramNotifySinkW members
  1836.    STDMETHOD (BookMark)       (THIS_ DWORD) PURE;
  1837.    STDMETHOD (Paused)         (THIS) PURE;
  1838.    STDMETHOD (PhraseFinish)   (THIS_ DWORD, QWORD, QWORD, PSRPHRASEW, LPUNKNOWN) PURE;
  1839.    STDMETHOD (PhraseHypothesis)(THIS_ DWORD, QWORD, QWORD, PSRPHRASEW, LPUNKNOWN) PURE;
  1840.    STDMETHOD (PhraseStart)    (THIS_ QWORD) PURE;
  1841.    STDMETHOD (ReEvaluate)     (THIS_ LPUNKNOWN) PURE;
  1842.    STDMETHOD (Training)       (THIS_ DWORD) PURE;
  1843.    STDMETHOD (UnArchive)      (THIS_ LPUNKNOWN) PURE;
  1844.    };
  1845.  
  1846. typedef ISRGramNotifySinkW FAR * PISRGRAMNOTIFYSINKW;
  1847.  
  1848.  
  1849. // ISRGramNotifySinkA
  1850. #undef   INTERFACE
  1851. #define  INTERFACE   ISRGramNotifySinkA
  1852.  
  1853. // {EFEEA350-CE5E-11cd-9D96-00AA002FC7C9}
  1854. DEFINE_GUID(IID_ISRGramNotifySinkA, 
  1855. 0xefeea350, 0xce5e, 0x11cd, 0x9d, 0x96, 0x0, 0xaa, 0x0, 0x2f, 0xc7, 0xc9);
  1856.  
  1857. DECLARE_INTERFACE_ (ISRGramNotifySinkA, IUnknown) {
  1858.    // IUnknown members
  1859.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1860.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1861.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1862.  
  1863.    // ISRGramNotifySinkA members
  1864.    STDMETHOD (BookMark)       (THIS_ DWORD) PURE;
  1865.    STDMETHOD (Paused)         (THIS) PURE;
  1866.    STDMETHOD (PhraseFinish)   (THIS_ DWORD, QWORD, QWORD, PSRPHRASEA, LPUNKNOWN) PURE;
  1867.    STDMETHOD (PhraseHypothesis)(THIS_ DWORD, QWORD, QWORD, PSRPHRASEA, LPUNKNOWN) PURE;
  1868.    STDMETHOD (PhraseStart)    (THIS_ QWORD) PURE;
  1869.    STDMETHOD (ReEvaluate)     (THIS_ LPUNKNOWN) PURE;
  1870.    STDMETHOD (Training)       (THIS_ DWORD) PURE;
  1871.    STDMETHOD (UnArchive)      (THIS_ LPUNKNOWN) PURE;
  1872.    };
  1873.  
  1874. typedef ISRGramNotifySinkA FAR * PISRGRAMNOTIFYSINKA;
  1875.  
  1876.  
  1877. #ifdef _S_UNICODE
  1878.  #define ISRGramNotifySink       ISRGramNotifySinkW
  1879.  #define IID_ISRGramNotifySink   IID_ISRGramNotifySinkW
  1880.  #define PISRGRAMNOTIFYSINK      PISRGRAMNOTIFYSINKW
  1881.  
  1882. #else
  1883.  #define ISRGramNotifySink       ISRGramNotifySinkA
  1884.  #define IID_ISRGramNotifySink   IID_ISRGramNotifySinkA
  1885.  #define PISRGRAMNOTIFYSINK      PISRGRAMNOTIFYSINKA
  1886.  
  1887. #endif   // _S_UNICODE
  1888.  
  1889.  
  1890.  
  1891. // ISRNotifySink
  1892. // This does not need an ANSI/UNICODE interface because no characters are passed
  1893. #undef   INTERFACE
  1894. #define  INTERFACE   ISRNotifySink
  1895.  
  1896. DEFINE_GUID(IID_ISRNotifySink,
  1897. 0x090CD9B0L, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  1898.  
  1899. DECLARE_INTERFACE_ (ISRNotifySink, IUnknown) {
  1900.    // IUnknown members
  1901.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1902.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1903.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1904.  
  1905.    // ISRNotifySink members
  1906.    STDMETHOD (AttribChanged)  (THIS_ DWORD) PURE;
  1907.    STDMETHOD (Interference)   (THIS_ QWORD, QWORD, DWORD) PURE;
  1908.    STDMETHOD (Sound)          (THIS_ QWORD, QWORD) PURE;
  1909.    STDMETHOD (UtteranceBegin) (THIS_ QWORD) PURE;
  1910.    STDMETHOD (UtteranceEnd)   (THIS_ QWORD, QWORD) PURE;
  1911.    STDMETHOD (VUMeter)        (THIS_ QWORD, WORD) PURE;
  1912.    };
  1913.  
  1914. typedef ISRNotifySink FAR *PISRNOTIFYSINK;
  1915.  
  1916. // Just in case anyone uses the wide/ansi versions
  1917. #define ISRNotifySinkW       ISRNotifySink
  1918. #define IID_ISRNotifySinkW   IID_ISRNotifySink
  1919. #define PISRNOTIFYSINKW      PISRNOTIFYSINK
  1920. #define ISRNotifySinkA       ISRNotifySink
  1921. #define IID_ISRNotifySinkA   IID_ISRNotifySink
  1922. #define PISRNOTIFYSINKA      PISRNOTIFYSINK
  1923.  
  1924.  
  1925. /*
  1926.  * ISRResBasic
  1927.  */
  1928.  
  1929. #undef   INTERFACE
  1930. #define  INTERFACE   ISRResBasicW
  1931.  
  1932. DEFINE_GUID(IID_ISRResBasicW, 0x090CD9A5, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
  1933.  
  1934. DECLARE_INTERFACE_ (ISRResBasicW, IUnknown) {
  1935.  
  1936.    // IUnknown members
  1937.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1938.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1939.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1940.  
  1941.    // ISRResBasicW members
  1942.    STDMETHOD (PhraseGet)      (THIS_ DWORD, PSRPHRASEW, DWORD,  DWORD *) PURE;
  1943.    STDMETHOD (Identify)       (THIS_ GUID *) PURE;
  1944.    STDMETHOD (TimeGet)        (THIS_ PQWORD, PQWORD) PURE;
  1945.    STDMETHOD (FlagsGet)       (THIS_ DWORD, DWORD *) PURE;
  1946.    };
  1947.  
  1948. typedef ISRResBasicW FAR *PISRRESBASICW;
  1949.  
  1950.  
  1951. #undef   INTERFACE
  1952. #define  INTERFACE   ISRResBasicA
  1953.  
  1954. DEFINE_GUID(IID_ISRResBasicA, 0x05EB6C66L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  1955.  
  1956. DECLARE_INTERFACE_ (ISRResBasicA, IUnknown) {
  1957.  
  1958.    // IUnknown members
  1959.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1960.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  1961.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  1962.  
  1963.    // ISRResBasicA members
  1964.    STDMETHOD (PhraseGet)      (THIS_ DWORD, PSRPHRASEA, DWORD,  DWORD *) PURE;
  1965.    STDMETHOD (Identify)       (THIS_ GUID *) PURE;
  1966.    STDMETHOD (TimeGet)        (THIS_ PQWORD, PQWORD) PURE;
  1967.    STDMETHOD (FlagsGet)       (THIS_ DWORD, DWORD *) PURE;
  1968.    };
  1969.  
  1970. typedef ISRResBasicA FAR *PISRRESBASICA;
  1971.  
  1972.  
  1973. #ifdef _S_UNICODE
  1974.  #define ISRResBasic             ISRResBasicW
  1975.  #define IID_ISRResBasic         IID_ISRResBasicW
  1976.  #define PISRRESBASIC            PISRRESBASICW
  1977.  
  1978. #else
  1979.  #define ISRResBasic             ISRResBasicA
  1980.  #define IID_ISRResBasic         IID_ISRResBasicA
  1981.  #define PISRRESBASIC            PISRRESBASICA
  1982.  
  1983. #endif   // _S_UNICODE
  1984.  
  1985.  
  1986.  
  1987. /*
  1988.  * ISRResMerge
  1989.  * This does not need an ANSI/UNICODE interface because no characters are passed
  1990.  */
  1991.  
  1992. #undef   INTERFACE
  1993. #define  INTERFACE   ISRResMerge
  1994.  
  1995. DEFINE_GUID(IID_ISRResMerge, 0x090CD9A6, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
  1996.  
  1997. DECLARE_INTERFACE_ (ISRResMerge, IUnknown) {
  1998.  
  1999.    // IUnknown members
  2000.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2001.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2002.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2003.  
  2004.    // ISRResMerge members
  2005.    STDMETHOD (Merge)          (THIS_ LPUNKNOWN, PIUNKNOWN ) PURE;
  2006.    STDMETHOD (Split)          (THIS_ QWORD, PIUNKNOWN , PIUNKNOWN ) PURE;
  2007.    };
  2008.  
  2009. typedef ISRResMerge FAR *PISRRESMERGE;
  2010.  
  2011.  
  2012.  
  2013. /*
  2014.  * ISRResAudio
  2015.  * This does not need an ANSI/UNICODE interface because no characters are passed
  2016.  */
  2017.  
  2018. #undef   INTERFACE
  2019. #define  INTERFACE   ISRResAudio
  2020.  
  2021. DEFINE_GUID(IID_ISRResAudio, 0x090CD9A7, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
  2022.  
  2023. DECLARE_INTERFACE_ (ISRResAudio, IUnknown) {
  2024.  
  2025.    // IUnknown members
  2026.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2027.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2028.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2029.  
  2030.    // ISRResAudio members
  2031.    STDMETHOD (GetWAV)         (THIS_ PSDATA) PURE;
  2032.    };
  2033.  
  2034. typedef ISRResAudio FAR *PISRRESAUDIO;
  2035.  
  2036.  
  2037.  
  2038. /*
  2039.  * ISRResCorrection
  2040.  */
  2041.  
  2042. #undef   INTERFACE
  2043. #define  INTERFACE   ISRResCorrectionW
  2044.  
  2045. DEFINE_GUID(IID_ISRResCorrectionW, 0x090CD9A8L, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  2046.  
  2047. DECLARE_INTERFACE_ (ISRResCorrectionW, IUnknown) {
  2048.  
  2049.    // IUnknown members
  2050.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2051.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2052.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2053.  
  2054.    // ISRResCorrectionW members
  2055.    STDMETHOD (Correction)         (THIS_ PSRPHRASEW, WORD) PURE;
  2056.    STDMETHOD (Validate)           (THIS_ WORD) PURE;
  2057.    };
  2058.  
  2059. typedef ISRResCorrectionW FAR *PISRRESCORRECTIONW;
  2060.  
  2061.  
  2062. #undef   INTERFACE
  2063. #define  INTERFACE   ISRResCorrectionA
  2064.  
  2065. DEFINE_GUID(IID_ISRResCorrectionA, 0x05EB6C67L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  2066.  
  2067. DECLARE_INTERFACE_ (ISRResCorrectionA, IUnknown) {
  2068.  
  2069.    // IUnknown members
  2070.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2071.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2072.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2073.  
  2074.    // ISRResCorrectionA members
  2075.    STDMETHOD (Correction)         (THIS_ PSRPHRASEA, WORD) PURE;
  2076.    STDMETHOD (Validate)           (THIS_ WORD) PURE;
  2077.    };
  2078.  
  2079. typedef ISRResCorrectionA FAR *PISRRESCORRECTIONA;
  2080.  
  2081.  
  2082. #ifdef _S_UNICODE
  2083.  #define ISRResCorrection        ISRResCorrectionW
  2084.  #define IID_ISRResCorrection    IID_ISRResCorrectionW
  2085.  #define PISRRESCORRECTION       PISRRESCORRECTIONW
  2086.  
  2087. #else
  2088.  #define ISRResCorrection        ISRResCorrectionA
  2089.  #define IID_ISRResCorrection    IID_ISRResCorrectionA
  2090.  #define PISRRESCORRECTION       PISRRESCORRECTIONA
  2091.  
  2092. #endif   // _S_UNICODE
  2093.  
  2094.  
  2095.  
  2096. // ISRResEval
  2097. // This does not need an ANSI/UNICODE interface because no characters are passed
  2098. #undef   INTERFACE
  2099. #define  INTERFACE   ISRResEval
  2100.  
  2101. // {90CD9A9-DA1A-11CD-B3CA-00AA0047BA4F}
  2102. DEFINE_GUID(IID_ISRResEval,
  2103. 0x090CD9A9, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
  2104.  
  2105. DECLARE_INTERFACE_ (ISRResEval, IUnknown) {
  2106.    // IUnknown members
  2107.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2108.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2109.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2110.  
  2111.    //  SRResEval members
  2112.    STDMETHOD (ReEvaluate)     (THIS_ BOOL *) PURE;
  2113.    };
  2114.  
  2115. typedef ISRResEval FAR *PISRRESEVAL;
  2116.  
  2117.  
  2118.  
  2119. /*
  2120.  * ISRResGraph
  2121.  */
  2122.  
  2123. #undef   INTERFACE
  2124. #define  INTERFACE ISRResGraphW
  2125.  
  2126. DEFINE_GUID(IID_ISRResGraphW, 0x090CD9AA, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
  2127.  
  2128. DECLARE_INTERFACE_ (ISRResGraphW, IUnknown) {
  2129.  
  2130.    // IUnknown members
  2131.    STDMETHOD (QueryInterface)     (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2132.    STDMETHOD_(ULONG,AddRef)       (THIS) PURE;
  2133.    STDMETHOD_(ULONG,Release)      (THIS) PURE;
  2134.  
  2135.    // ISRResGraphW members         
  2136.    STDMETHOD (BestPathPhoneme)    (THIS_ DWORD, DWORD *, DWORD, DWORD *) PURE;
  2137.    STDMETHOD (BestPathWord)       (THIS_ DWORD, DWORD *, DWORD, DWORD *) PURE;
  2138.    STDMETHOD (GetPhonemeNode)     (THIS_ DWORD, PSRRESPHONEMENODE, PWCHAR, 
  2139.                                    PWCHAR) PURE;
  2140.    STDMETHOD (GetWordNode)        (THIS_ DWORD, PSRRESWORDNODE, PSRWORDW, DWORD, 
  2141.                                    DWORD *) PURE;
  2142.    STDMETHOD (PathScorePhoneme)   (THIS_ DWORD *, DWORD, LONG *) PURE;
  2143.    STDMETHOD (PathScoreWord)      (THIS_ DWORD *, DWORD, LONG *) PURE;
  2144.    };
  2145.  
  2146. typedef ISRResGraphW FAR *PISRRESGRAPHW;
  2147.  
  2148.  
  2149. #undef   INTERFACE
  2150. #define  INTERFACE ISRResGraphA
  2151.  
  2152. DEFINE_GUID(IID_ISRResGraphA, 0x05EB6C68L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  2153.  
  2154. DECLARE_INTERFACE_ (ISRResGraphA, IUnknown) {
  2155.  
  2156.    // IUnknown members
  2157.    STDMETHOD (QueryInterface)     (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2158.    STDMETHOD_(ULONG,AddRef)       (THIS) PURE;
  2159.    STDMETHOD_(ULONG,Release)      (THIS) PURE;
  2160.  
  2161.    // ISRResGraphA members         
  2162.    STDMETHOD (BestPathPhoneme)    (THIS_ DWORD, DWORD *, DWORD, DWORD *) PURE;
  2163.    STDMETHOD (BestPathWord)       (THIS_ DWORD, DWORD *, DWORD, DWORD *) PURE;
  2164.    STDMETHOD (GetPhonemeNode)     (THIS_ DWORD, PSRRESPHONEMENODE, PWCHAR, 
  2165.                                    PCHAR) PURE;
  2166.    STDMETHOD (GetWordNode)        (THIS_ DWORD, PSRRESWORDNODE, PSRWORDA, DWORD, 
  2167.                                    DWORD *) PURE;
  2168.    STDMETHOD (PathScorePhoneme)   (THIS_ DWORD *, DWORD, LONG *) PURE;
  2169.    STDMETHOD (PathScoreWord)      (THIS_ DWORD *, DWORD, LONG *) PURE;
  2170.    };
  2171.  
  2172. typedef ISRResGraphA FAR *PISRRESGRAPHA;
  2173.  
  2174.  
  2175. #ifdef _S_UNICODE
  2176.  #define ISRResGraph             ISRResGraphW
  2177.  #define IID_ISRResGraph         IID_ISRResGraphW
  2178.  #define PISRRESGRAPH            PISRRESGRAPHW
  2179.  
  2180. #else
  2181.  #define ISRResGraph             ISRResGraphA
  2182.  #define IID_ISRResGraph         IID_ISRResGraphA
  2183.  #define PISRRESGRAPH            PISRRESGRAPHA
  2184.  
  2185. #endif   // _S_UNICODE
  2186.  
  2187.  
  2188.  
  2189. // ISRResMemory
  2190. // This does not need an ANSI/UNICODE interface because no characters are passed
  2191. #undef   INTERFACE
  2192. #define  INTERFACE   ISRResMemory
  2193.  
  2194. DEFINE_GUID(IID_ISRResMemory, 0x090CD9AB, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
  2195.  
  2196. DECLARE_INTERFACE_ (ISRResMemory, IUnknown) {
  2197.  
  2198.    // IUnknown members
  2199.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2200.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2201.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2202.  
  2203.    // ISRResMemory members
  2204.    STDMETHOD (Free)           (THIS_ DWORD) PURE;
  2205.    STDMETHOD (Get)            (THIS_ DWORD *, DWORD *) PURE;
  2206.    STDMETHOD (LockGet)        (THIS_ BOOL *) PURE;
  2207.    STDMETHOD (LockSet)        (THIS_ BOOL) PURE;
  2208.    };
  2209.  
  2210. typedef ISRResMemory FAR *PISRRESMEMORY;
  2211.  
  2212.  
  2213.  
  2214. // ISRResModifyGUI
  2215. // This does not need an ANSI/UNICODE interface because no characters are passed
  2216. #undef   INTERFACE
  2217. #define  INTERFACE   ISRResModifyGUI
  2218.  
  2219. DEFINE_GUID(IID_ISRResModifyGUI, 0x090CD9AC, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
  2220.  
  2221. DECLARE_INTERFACE_ (ISRResModifyGUI, IUnknown) {
  2222.  
  2223.    // IUnknown members
  2224.    STDMETHOD (QueryInterface)    (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2225.    STDMETHOD_(ULONG,AddRef)      (THIS) PURE;
  2226.    STDMETHOD_(ULONG,Release)     (THIS) PURE;
  2227.  
  2228.    // ISRResModifyGUI members
  2229.    STDMETHOD (Hide)              (THIS) PURE;
  2230.    STDMETHOD (Move)              (THIS_ RECT *) PURE;
  2231.    STDMETHOD (Show)              (THIS_ HWND) PURE;
  2232.    };
  2233.  
  2234. typedef ISRResModifyGUI FAR *PISRRESMODIFYGUI;
  2235.  
  2236.  
  2237.  
  2238. /*
  2239.  * ISRResSpeakerW
  2240.  */
  2241.  
  2242. #undef   INTERFACE
  2243. #define  INTERFACE   ISRResSpeakerW
  2244.  
  2245. DEFINE_GUID(IID_ISRResSpeakerW, 0x090CD9AD, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
  2246.  
  2247. DECLARE_INTERFACE_ (ISRResSpeakerW, IUnknown) {
  2248.  
  2249.    // IUnknown members
  2250.    STDMETHOD (QueryInterface)    (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2251.    STDMETHOD_(ULONG,AddRef)      (THIS) PURE;
  2252.    STDMETHOD_(ULONG,Release)     (THIS) PURE;
  2253.  
  2254.    // ISRResSpeakerW members
  2255.    STDMETHOD (Correction)        (THIS_ PCWSTR, WORD) PURE;
  2256.    STDMETHOD (Validate)          (THIS_ WORD) PURE;
  2257.    STDMETHOD (Identify)          (THIS_ DWORD, PWSTR, DWORD, DWORD *, 
  2258.                                   LONG *) PURE;
  2259.    STDMETHOD (IdentifyForFree)   (THIS_ BOOL *) PURE;
  2260.    };
  2261.  
  2262. typedef ISRResSpeakerW FAR *PISRRESSPEAKERW;
  2263.  
  2264.  
  2265. #undef   INTERFACE
  2266. #define  INTERFACE   ISRResSpeakerA
  2267.  
  2268. DEFINE_GUID(IID_ISRResSpeakerA, 0x05EB6C69L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  2269.  
  2270. DECLARE_INTERFACE_ (ISRResSpeakerA, IUnknown) {
  2271.  
  2272.    // IUnknown members
  2273.    STDMETHOD (QueryInterface)    (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2274.    STDMETHOD_(ULONG,AddRef)      (THIS) PURE;
  2275.    STDMETHOD_(ULONG,Release)     (THIS) PURE;
  2276.  
  2277.    // ISRResSpeakerA members
  2278.    STDMETHOD (Correction)        (THIS_ PCSTR, WORD) PURE;
  2279.    STDMETHOD (Validate)          (THIS_ WORD) PURE;
  2280.    STDMETHOD (Identify)          (THIS_ DWORD, PSTR, DWORD, DWORD *, 
  2281.                                   LONG *) PURE;
  2282.    STDMETHOD (IdentifyForFree)   (THIS_ BOOL *) PURE;
  2283.    };
  2284.  
  2285. typedef ISRResSpeakerA FAR *PISRRESSPEAKERA;
  2286.  
  2287.  
  2288. #ifdef _S_UNICODE
  2289.  #define ISRResSpeaker           ISRResSpeakerW
  2290.  #define IID_ISRResSpeaker       IID_ISRResSpeakerW
  2291.  #define PISRRESSPEAKER          PISRRESSPEAKERW
  2292.  
  2293. #else
  2294.  #define ISRResSpeaker           ISRResSpeakerA
  2295.  #define IID_ISRResSpeaker       IID_ISRResSpeakerA
  2296.  #define PISRRESSPEAKER          PISRRESSPEAKERA
  2297.  
  2298. #endif   // _S_UNICODE
  2299.  
  2300.  
  2301.  
  2302. /*
  2303.  * ISRSpeaker
  2304.  */
  2305.  
  2306. #undef   INTERFACE
  2307. #define  INTERFACE   ISRSpeakerW
  2308.  
  2309. DEFINE_GUID(IID_ISRSpeakerW, 0x090CD9AE, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
  2310.  
  2311. DECLARE_INTERFACE_ (ISRSpeakerW, IUnknown) {
  2312.  
  2313.    // IUnknown members
  2314.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2315.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2316.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2317.  
  2318.    // ISRSpeakerW members
  2319.    STDMETHOD (Delete)         (THIS_ PCWSTR) PURE;
  2320.    STDMETHOD (Enum)           (THIS_ PWSTR *, DWORD *) PURE;
  2321.    STDMETHOD (Merge)          (THIS_ PCWSTR, PVOID, DWORD) PURE;
  2322.    STDMETHOD (New)            (THIS_ PCWSTR) PURE;
  2323.    STDMETHOD (Query)          (THIS_ PWSTR, DWORD, DWORD *) PURE;
  2324.    STDMETHOD (Read)           (THIS_ PCWSTR, PVOID *, DWORD *) PURE;
  2325.    STDMETHOD (Revert)         (THIS_ PCWSTR) PURE;
  2326.    STDMETHOD (Select)         (THIS_ PCWSTR, BOOL) PURE;
  2327.    STDMETHOD (Write)          (THIS_ PCWSTR, PVOID, DWORD) PURE;
  2328.    };
  2329.  
  2330. typedef ISRSpeakerW FAR *PISRSPEAKERW;
  2331.  
  2332.  
  2333. #undef   INTERFACE
  2334. #define  INTERFACE   ISRSpeakerA
  2335.  
  2336. DEFINE_GUID(IID_ISRSpeakerA, 0x090CD9AF, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
  2337.  
  2338. DECLARE_INTERFACE_ (ISRSpeakerA, IUnknown) {
  2339.  
  2340.    // IUnknown members
  2341.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2342.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2343.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2344.  
  2345.    // ISRSpeakerA members
  2346.    STDMETHOD (Delete)         (THIS_ PCSTR) PURE;
  2347.    STDMETHOD (Enum)           (THIS_ PSTR *, DWORD *) PURE;
  2348.    STDMETHOD (Merge)          (THIS_ PCSTR, PVOID, DWORD) PURE;
  2349.    STDMETHOD (New)            (THIS_ PCSTR) PURE;
  2350.    STDMETHOD (Query)          (THIS_ PSTR, DWORD, DWORD *) PURE;
  2351.    STDMETHOD (Read)           (THIS_ PCSTR, PVOID *, DWORD *) PURE;
  2352.    STDMETHOD (Revert)         (THIS_ PCSTR) PURE;
  2353.    STDMETHOD (Select)         (THIS_ PCSTR, BOOL) PURE;
  2354.    STDMETHOD (Write)          (THIS_ PCSTR, PVOID, DWORD) PURE;
  2355.    };
  2356.  
  2357. typedef ISRSpeakerA FAR *PISRSPEAKERA;
  2358.  
  2359.  
  2360. #ifdef _S_UNICODE
  2361.  #define ISRSpeaker              ISRSpeakerW
  2362.  #define IID_ISRSpeaker          IID_ISRSpeakerW
  2363.  #define PISRSPEAKER             PISRSPEAKERW
  2364.  
  2365. #else
  2366.  #define ISRSpeaker              ISRSpeakerA
  2367.  #define IID_ISRSpeaker          IID_ISRSpeakerA
  2368.  #define PISRSPEAKER             PISRSPEAKERA
  2369.  
  2370. #endif   // _S_UNICODE
  2371.  
  2372.  
  2373. /*
  2374. ISRPhrase related definitions
  2375. */
  2376. #define SRPHRASE_SI             (0x01000000)
  2377. #define SRPHRASE_SI_ENABLE      (0x02000000)
  2378. #define SRPHRASE_SD             (0x04000000)
  2379. #define SRPHRASE_SD_ENABLE      (0x08000000)
  2380. #define SRPHRASE_SD_ERASE       (0x10000000)
  2381. #define SRPHRASE_PERMANENT      (0x80000000)
  2382.  
  2383. //  TrainDone flag
  2384. #define SRTRAIN_DONE            (0x00000000)
  2385. #define SRTRAIN_FAILED          (0x00010000)
  2386. #define SRTRAIN_NEEDMORE        (0x00020000)
  2387. #define SRTRAIN_STOPPED         (0x00040000)
  2388.  
  2389. //  TrainControl flags
  2390. #define SRTRAIN_CANCEL          (0x00100000)
  2391. #define SRTRAIN_GOBACK          (0x00200000)
  2392. #define SRTRAIN_CONFIRM         (0x00400000)
  2393.  
  2394. /*
  2395.  * ISRTrainNotifySink
  2396.  */
  2397.  
  2398. #undef   INTERFACE
  2399. #define  INTERFACE   ISRTrainNotifySinkW
  2400.  
  2401. // {C29FBD90-A30D-11d0-91E1-00A0C913CAD7}
  2402. DEFINE_GUID(IID_ISRTrainNotifySinkW, 0xc29fbd90, 0xa30d, 0x11d0, 0x91, 0xe1, 0x0, 0xa0, 0xc9, 0x13, 0xca, 0xd7);
  2403.  
  2404. DECLARE_INTERFACE_ (ISRTrainNotifySinkW, IUnknown) {
  2405.  
  2406. // IUnknown members
  2407.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2408.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2409.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2410.  
  2411. // ISRTrainNotifySinkW members
  2412.    STDMETHOD (TrainReady)     (THIS_ DWORD) PURE;
  2413.    STDMETHOD (PhraseStart)    (THIS_ DWORD, QWORD) PURE;
  2414.    STDMETHOD (PhraseFinish)   (THIS_ DWORD, QWORD, QWORD) PURE;
  2415.    STDMETHOD (TrainDone)      (THIS_ DWORD, DWORD) PURE;
  2416.    };
  2417.  
  2418. typedef ISRTrainNotifySinkW FAR * PISRTRAINNOTIFYSINKW;
  2419.  
  2420.  
  2421. #ifdef _S_UNICODE
  2422.  #define ISRTrainNotifySink     ISRTrainNotifySinkW
  2423.  #define IID_ISRTrainNotifySink IID_ISRTrainNotifySinkW
  2424.  #define PISRTRAINNOTIFYSINK    PISRTRAINNOTIFYSINKW
  2425. #endif
  2426.  
  2427. /*
  2428.  * ISRPhrase
  2429.  */
  2430.  
  2431. #undef   INTERFACE
  2432. #define  INTERFACE   ISRPhraseW
  2433.  
  2434. // {8ECD51F0-9B5B-11d0-91D6-00A0C913CAD7}
  2435. DEFINE_GUID(IID_ISRPhraseW, 0x8ecd51f0, 0x9b5b, 0x11d0, 0x91, 0xd6, 0x0, 0xa0, 0xc9, 0x13, 0xca, 0xd7);
  2436.  
  2437. DECLARE_INTERFACE_ (ISRPhraseW, IUnknown) {
  2438.  
  2439.    // IUnknown members
  2440.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2441.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2442.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2443.  
  2444.    // ISRPhraseW members
  2445.    STDMETHOD (QueryPhrase)    (THIS_ PWSTR, DWORD *) PURE;
  2446.    STDMETHOD (ModifyTraining) (THIS_ PWSTR, DWORD) PURE;
  2447.    STDMETHOD (TrainPhrase)    (THIS_ PWSTR, PISRTRAINNOTIFYSINKW) PURE;
  2448.    STDMETHOD (TrainControl)   (THIS_ DWORD) PURE;
  2449.    STDMETHOD (WordsGet)       (THIS_ DWORD, PWSTR *, PDWORD) PURE;
  2450.    STDMETHOD (InstallSix)     (THIS_ LPCTSTR, PDWORD, DWORD) PURE;
  2451.    STDMETHOD (UnInstallSix)   (THIS_ DWORD, DWORD) PURE;
  2452.    };
  2453.  
  2454. typedef ISRPhraseW FAR *PISRPHRASEW;
  2455.  
  2456. #ifdef _S_UNICODE
  2457.  #define ISRPhrase              ISRPhraseW
  2458.  #define IID_ISRPhrase          IID_ISRPhraseW
  2459.  #define PISRPHRASE             PISRPHRASEW
  2460. #endif   // _S_UNICODE
  2461.  
  2462.  
  2463. #undef   INTERFACE
  2464. #define  INTERFACE   IVCmdUserWordW
  2465.  
  2466. // {93D03F81-A65F-11d0-91E1-00A0C913CAD7}
  2467. DEFINE_GUID(IID_IVCmdUserWordW, 0x93d03f81, 0xa65f, 0x11d0, 0x91, 0xe1, 0x0, 0xa0, 0xc9, 0x13, 0xca, 0xd7);
  2468.  
  2469. DECLARE_INTERFACE_ (IVCmdUserWordW, IUnknown) {
  2470.  
  2471.    // IUnknown members
  2472.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2473.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2474.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2475.  
  2476.    // IVCmdUserWordW members
  2477.    STDMETHOD (QueryPhrase)    (THIS_ PWSTR, DWORD *) PURE;
  2478.    STDMETHOD (ModifyTraining) (THIS_ PWSTR, DWORD) PURE;
  2479.    STDMETHOD (Train)          (THIS_ PCWSTR, DWORD, PCWSTR, DWORD, DWORD=0, DWORD=0) PURE;
  2480.    STDMETHOD (GetPhraseList)  (THIS_ DWORD, PWSTR, PDWORD) PURE;
  2481.    STDMETHOD (AddSIFile)      (THIS_ LPCWSTR, PDWORD, DWORD) PURE;
  2482.    STDMETHOD (RemoveSIFile)   (THIS_ DWORD, DWORD) PURE;
  2483.    };
  2484.  
  2485. typedef IVCmdUserWordW FAR *PIVCMDUSERWORDW;
  2486.  
  2487. #ifdef _S_UNICODE
  2488.  #define IVCmdUserWord          IVCmdUserWordW
  2489.  #define IID_IVCmdUserWord      IID_IVCmdUserWordW
  2490.  #define PIVCMDUSERWORD         PIVCMDUSERWORDW
  2491. #endif   // _S_UNICODE
  2492.  
  2493.  
  2494. /************************************************************************
  2495. Low-Level text-to-speech API
  2496. */
  2497.  
  2498.  
  2499. /************************************************************************
  2500. defines */
  2501.  
  2502. #define  TTSI_NAMELEN                   SVFN_LEN
  2503. #define  TTSI_STYLELEN                  SVFN_LEN
  2504.  
  2505. #define  GENDER_NEUTRAL                 (0)
  2506. #define  GENDER_FEMALE                  (1)
  2507. #define  GENDER_MALE                    (2)
  2508.  
  2509. #define  TTSFEATURE_ANYWORD             SETBIT(0)
  2510. #define  TTSFEATURE_VOLUME              SETBIT(1)
  2511. #define  TTSFEATURE_SPEED               SETBIT(2)
  2512. #define  TTSFEATURE_PITCH               SETBIT(3)
  2513. #define  TTSFEATURE_TAGGED              SETBIT(4)
  2514. #define  TTSFEATURE_IPAUNICODE          SETBIT(5)
  2515. #define  TTSFEATURE_VISUAL              SETBIT(6)
  2516. #define  TTSFEATURE_WORDPOSITION        SETBIT(7)
  2517. #define  TTSFEATURE_PCOPTIMIZED         SETBIT(8)
  2518. #define  TTSFEATURE_PHONEOPTIMIZED      SETBIT(9)
  2519.  
  2520. #define  TTSI_ILEXPRONOUNCE             SETBIT(0)
  2521. #define  TTSI_ITTSATTRIBUTES            SETBIT(1)
  2522. #define  TTSI_ITTSCENTRAL               SETBIT(2)
  2523. #define  TTSI_ITTSDIALOGS               SETBIT(3)
  2524.  
  2525. #define  TTSDATAFLAG_TAGGED             SETBIT(0)
  2526.  
  2527. #define   TTSBNS_ABORTED                   SETBIT(0)
  2528.  
  2529. // ITTSNotifySink
  2530. #define   TTSNSAC_REALTIME               0
  2531. #define   TTSNSAC_PITCH                  1
  2532. #define   TTSNSAC_SPEED                  2
  2533. #define   TTSNSAC_VOLUME                 3
  2534.  
  2535.  
  2536. #define   TTSNSHINT_QUESTION             SETBIT(0)
  2537. #define   TTSNSHINT_STATEMENT            SETBIT(1)
  2538. #define   TTSNSHINT_COMMAND              SETBIT(2)
  2539. #define   TTSNSHINT_EXCLAMATION          SETBIT(3)
  2540. #define   TTSNSHINT_EMPHASIS             SETBIT(4)
  2541.  
  2542.  
  2543. // Ages
  2544. #define  TTSAGE_BABY                   1
  2545. #define  TTSAGE_TODDLER                3
  2546. #define  TTSAGE_CHILD                  6
  2547. #define  TTSAGE_ADOLESCENT             14
  2548. #define  TTSAGE_ADULT                  30
  2549. #define  TTSAGE_ELDERLY                70
  2550.  
  2551. // Attribute minimums and maximums
  2552. #define  TTSATTR_MINPITCH              0
  2553. #define  TTSATTR_MAXPITCH              0xffff
  2554. #define  TTSATTR_MINREALTIME           0
  2555. #define  TTSATTR_MAXREALTIME           0xffffffff
  2556. #define  TTSATTR_MINSPEED              0
  2557. #define  TTSATTR_MAXSPEED              0xffffffff
  2558. #define  TTSATTR_MINVOLUME             0
  2559. #define  TTSATTR_MAXVOLUME             0xffffffff
  2560.  
  2561.  
  2562. /************************************************************************
  2563. typedefs */
  2564.  
  2565. typedef struct {
  2566.    BYTE     bMouthHeigght;
  2567.    BYTE     bMouthWidth;
  2568.    BYTE     bMouthUpturn;
  2569.    BYTE     bJawOpen;
  2570.    BYTE     bTeethUpperVisible;
  2571.    BYTE     bTeethLowerVisible;
  2572.    BYTE     bTonguePosn;
  2573.    BYTE     bLipTension;
  2574.    } TTSMOUTH, *PTTSMOUTH;
  2575.  
  2576.  
  2577.  
  2578. typedef struct {
  2579.    GUID       gEngineID;
  2580.    WCHAR      szMfgName[TTSI_NAMELEN];
  2581.    WCHAR      szProductName[TTSI_NAMELEN];
  2582.    GUID       gModeID;
  2583.    WCHAR      szModeName[TTSI_NAMELEN];
  2584.    LANGUAGEW  language;
  2585.    WCHAR      szSpeaker[TTSI_NAMELEN];
  2586.    WCHAR      szStyle[TTSI_STYLELEN];
  2587.    WORD       wGender;
  2588.    WORD       wAge;
  2589.    DWORD      dwFeatures;
  2590.    DWORD      dwInterfaces;
  2591.    DWORD      dwEngineFeatures;
  2592.    } TTSMODEINFOW, *PTTSMODEINFOW;
  2593.  
  2594. typedef struct {
  2595.    GUID       gEngineID;
  2596.    CHAR       szMfgName[TTSI_NAMELEN];
  2597.    CHAR       szProductName[TTSI_NAMELEN];
  2598.    GUID       gModeID;
  2599.    CHAR       szModeName[TTSI_NAMELEN];
  2600.    LANGUAGEA  language;
  2601.    CHAR       szSpeaker[TTSI_NAMELEN];
  2602.    CHAR       szStyle[TTSI_STYLELEN];
  2603.    WORD       wGender;
  2604.    WORD       wAge;
  2605.    DWORD      dwFeatures;
  2606.    DWORD      dwInterfaces;
  2607.    DWORD      dwEngineFeatures;
  2608.    } TTSMODEINFOA, *PTTSMODEINFOA;
  2609.  
  2610. #ifdef _S_UNICODE
  2611.  #define TTSMODEINFO         TTSMODEINFOW
  2612.  #define PTTSMODEINFO        PTTSMODEINFOW
  2613.  
  2614. #else
  2615.  #define TTSMODEINFO         TTSMODEINFOA
  2616.  #define PTTSMODEINFO        PTTSMODEINFOA
  2617.  
  2618. #endif   // _S_UNICODE
  2619.  
  2620.  
  2621.  
  2622. typedef struct {
  2623.    DWORD      dwEngineID;
  2624.    DWORD      dwMfgName;
  2625.    DWORD      dwProductName;
  2626.    DWORD      dwModeID;
  2627.    DWORD      dwModeName;
  2628.    DWORD      dwLanguage;
  2629.    DWORD      dwDialect;
  2630.    DWORD      dwSpeaker;
  2631.    DWORD      dwStyle;
  2632.    DWORD      dwGender;
  2633.    DWORD      dwAge;
  2634.    DWORD      dwFeatures;
  2635.    DWORD      dwInterfaces;
  2636.    DWORD      dwEngineFeatures;
  2637.    } TTSMODEINFORANK, * PTTSMODEINFORANK;
  2638.  
  2639. /************************************************************************
  2640. Class IDs */
  2641. // {D67C0280-C743-11cd-80E5-00AA003E4B50}
  2642. DEFINE_GUID(CLSID_TTSEnumerator, 
  2643. 0xd67c0280, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
  2644.  
  2645. /************************************************************************
  2646. interfaces */
  2647.  
  2648. // ITTSAttributes
  2649.  
  2650. #undef   INTERFACE
  2651. #define  INTERFACE   ITTSAttributesW
  2652.  
  2653. DEFINE_GUID(IID_ITTSAttributesW, 0x1287A280L, 0x4A47, 0x101B, 0x93, 0x1A, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  2654.  
  2655. DECLARE_INTERFACE_ (ITTSAttributesW, IUnknown) {
  2656.  
  2657. // IUnknown members
  2658.  
  2659.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2660.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2661.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2662.  
  2663. // ITTSAttributes members
  2664.  
  2665.    STDMETHOD (PitchGet)       (THIS_ WORD *) PURE;
  2666.    STDMETHOD (PitchSet)       (THIS_ WORD) PURE;  
  2667.    STDMETHOD (RealTimeGet)    (THIS_ DWORD *) PURE;
  2668.    STDMETHOD (RealTimeSet)    (THIS_ DWORD) PURE;  
  2669.    STDMETHOD (SpeedGet)       (THIS_ DWORD *) PURE;
  2670.    STDMETHOD (SpeedSet)       (THIS_ DWORD) PURE;  
  2671.    STDMETHOD (VolumeGet)      (THIS_ DWORD *) PURE;
  2672.    STDMETHOD (VolumeSet)      (THIS_ DWORD) PURE;  
  2673.    };
  2674.  
  2675. typedef ITTSAttributesW FAR * PITTSATTRIBUTESW;
  2676.  
  2677.  
  2678. #undef   INTERFACE
  2679. #define  INTERFACE   ITTSAttributesA
  2680.  
  2681. DEFINE_GUID(IID_ITTSAttributesA,
  2682. 0x0FD6E2A1L, 0xE77D, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  2683.  
  2684. DECLARE_INTERFACE_ (ITTSAttributesA, IUnknown) {
  2685.  
  2686. // IUnknown members
  2687.  
  2688.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2689.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2690.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2691.  
  2692. // ITTSAttributes members
  2693.  
  2694.    STDMETHOD (PitchGet)       (THIS_ WORD *) PURE;
  2695.    STDMETHOD (PitchSet)       (THIS_ WORD) PURE;  
  2696.    STDMETHOD (RealTimeGet)    (THIS_ DWORD *) PURE;
  2697.    STDMETHOD (RealTimeSet)    (THIS_ DWORD) PURE;  
  2698.    STDMETHOD (SpeedGet)       (THIS_ DWORD *) PURE;
  2699.    STDMETHOD (SpeedSet)       (THIS_ DWORD) PURE;  
  2700.    STDMETHOD (VolumeGet)      (THIS_ DWORD *) PURE;
  2701.    STDMETHOD (VolumeSet)      (THIS_ DWORD) PURE;  
  2702.    };
  2703.  
  2704. typedef ITTSAttributesA FAR * PITTSATTRIBUTESA;
  2705.  
  2706.  
  2707. #ifdef _S_UNICODE
  2708.  #define ITTSAttributes          ITTSAttributesW
  2709.  #define IID_ITTSAttributes      IID_ITTSAttributesW
  2710.  #define PITTSATTRIBUTES         PITTSATTRIBUTESW
  2711.  
  2712. #else
  2713.  #define ITTSAttributes          ITTSAttributesA
  2714.  #define IID_ITTSAttributes      IID_ITTSAttributesA
  2715.  #define PITTSATTRIBUTES         PITTSATTRIBUTESA
  2716.  
  2717. #endif   // _S_UNICODE
  2718.  
  2719.  
  2720.  
  2721. // ITTSBufNotifySink
  2722.  
  2723. #undef   INTERFACE
  2724. #define  INTERFACE   ITTSBufNotifySink
  2725.  
  2726. // {E4963D40-C743-11cd-80E5-00AA003E4B50}
  2727. DEFINE_GUID(IID_ITTSBufNotifySink, 
  2728. 0xe4963d40, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
  2729.  
  2730. DECLARE_INTERFACE_ (ITTSBufNotifySink, IUnknown) {
  2731.  
  2732. // IUnknown members
  2733.  
  2734.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2735.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2736.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2737.  
  2738. // ITTSBufNotifySink members
  2739.  
  2740.    STDMETHOD (TextDataDone)   (THIS_ QWORD, DWORD) PURE;
  2741.    STDMETHOD (TextDataStarted)(THIS_ QWORD) PURE;
  2742.    STDMETHOD (BookMark)       (THIS_ QWORD, DWORD) PURE;  
  2743.    STDMETHOD (WordPosition)   (THIS_ QWORD, DWORD) PURE;
  2744.    };
  2745.  
  2746. typedef ITTSBufNotifySink FAR * PITTSBUFNOTIFYSINK;
  2747.  
  2748. // In case anyone uses the W or A interface
  2749. #define ITTSBufNotifySinkW          ITTSBufNotifySink
  2750. #define IID_ITTSBufNotifySinkW      IID_ITTSBufNotifySink
  2751. #define PITTSBUFNOTIFYSINKW         PITTSBUFNOTIFYSINK
  2752. #define ITTSBufNotifySinkA          ITTSBufNotifySink
  2753. #define IID_ITTSBufNotifySinkA      IID_ITTSBufNotifySink
  2754. #define PITTSBUFNOTIFYSINKA         PITTSBUFNOTIFYSINK
  2755.  
  2756.  
  2757.  
  2758. /*
  2759.  * ITTSCentral
  2760.  */
  2761.  
  2762. #undef   INTERFACE
  2763. #define  INTERFACE   ITTSCentralW
  2764.  
  2765. DEFINE_GUID(IID_ITTSCentralW, 0x28016060L, 0x4A47, 0x101B, 0x93, 0x1A, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  2766.  
  2767. DECLARE_INTERFACE_ (ITTSCentralW, IUnknown) {
  2768.  
  2769.    // IUnknown members
  2770.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2771.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2772.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2773.  
  2774.    // ITTSCentralW members
  2775.    STDMETHOD (Inject)         (THIS_ PCWSTR) PURE;
  2776.    STDMETHOD (ModeGet)        (THIS_ PTTSMODEINFOW) PURE;
  2777.    STDMETHOD (Phoneme)        (THIS_ VOICECHARSET, DWORD, SDATA, PSDATA) PURE;
  2778.    STDMETHOD (PosnGet)        (THIS_ PQWORD) PURE;
  2779.    STDMETHOD (TextData)       (THIS_ VOICECHARSET, DWORD, SDATA, PVOID, IID) PURE;
  2780.    STDMETHOD (ToFileTime)     (THIS_ PQWORD, FILETIME *) PURE;
  2781.    STDMETHOD (AudioPause)     (THIS) PURE;
  2782.    STDMETHOD (AudioResume)    (THIS) PURE;
  2783.    STDMETHOD (AudioReset)     (THIS) PURE;
  2784.    STDMETHOD (Register)       (THIS_ PVOID, IID, DWORD*) PURE;
  2785.    STDMETHOD (UnRegister)     (THIS_ DWORD) PURE;
  2786.    };
  2787.  
  2788. typedef ITTSCentralW FAR * PITTSCENTRALW;
  2789.  
  2790.  
  2791. #undef   INTERFACE
  2792. #define  INTERFACE   ITTSCentralA
  2793.  
  2794. DEFINE_GUID(IID_ITTSCentralA, 0x05EB6C6AL, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  2795.  
  2796. DECLARE_INTERFACE_ (ITTSCentralA, IUnknown) {
  2797.  
  2798.    // IUnknown members
  2799.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2800.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2801.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2802.  
  2803.    // ITTSCentralA members
  2804.    STDMETHOD (Inject)         (THIS_ PCSTR) PURE;
  2805.    STDMETHOD (ModeGet)        (THIS_ PTTSMODEINFOA) PURE;
  2806.    STDMETHOD (Phoneme)        (THIS_ VOICECHARSET, DWORD, SDATA, PSDATA) PURE;
  2807.    STDMETHOD (PosnGet)        (THIS_ PQWORD) PURE;
  2808.    STDMETHOD (TextData)       (THIS_ VOICECHARSET, DWORD, SDATA, PVOID, IID) PURE;
  2809.    STDMETHOD (ToFileTime)     (THIS_ PQWORD, FILETIME *) PURE;
  2810.    STDMETHOD (AudioPause)     (THIS) PURE;
  2811.    STDMETHOD (AudioResume)    (THIS) PURE;
  2812.    STDMETHOD (AudioReset)     (THIS) PURE;
  2813.    STDMETHOD (Register)       (THIS_ PVOID, IID, DWORD*) PURE;
  2814.    STDMETHOD (UnRegister)     (THIS_ DWORD) PURE;
  2815.    };
  2816.  
  2817. typedef ITTSCentralA FAR * PITTSCENTRALA;
  2818.  
  2819.  
  2820. #ifdef _S_UNICODE
  2821.  #define ITTSCentral             ITTSCentralW
  2822.  #define IID_ITTSCentral         IID_ITTSCentralW
  2823.  #define PITTSCENTRAL            PITTSCENTRALW
  2824.  
  2825. #else
  2826.  #define ITTSCentral             ITTSCentralA
  2827.  #define IID_ITTSCentral         IID_ITTSCentralA
  2828.  #define PITTSCENTRAL            PITTSCENTRALA
  2829.  
  2830. #endif   // _S_UNICODE
  2831.  
  2832.  
  2833.  
  2834. /*
  2835.  * ITTSDialogsW
  2836.  */
  2837.  
  2838. #undef   INTERFACE
  2839. #define  INTERFACE   ITTSDialogsW
  2840.  
  2841. DEFINE_GUID(IID_ITTSDialogsW, 0x47F59D00L, 0x4A47, 0x101B, 0x93, 0x1A, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  2842.  
  2843. DECLARE_INTERFACE_ (ITTSDialogsW, IUnknown) {
  2844.  
  2845.    // IUnknown members
  2846.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2847.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2848.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2849.  
  2850.    // ITTSDialogsW members
  2851.    STDMETHOD (AboutDlg)       (THIS_ HWND, PCWSTR) PURE;
  2852.    STDMETHOD (LexiconDlg)     (THIS_ HWND, PCWSTR) PURE;
  2853.    STDMETHOD (GeneralDlg)     (THIS_ HWND, PCWSTR) PURE;
  2854.    STDMETHOD (TranslateDlg)   (THIS_ HWND, PCWSTR) PURE;
  2855.    };
  2856.  
  2857. typedef ITTSDialogsW FAR * PITTSDIALOGSW;
  2858.  
  2859.  
  2860. #undef   INTERFACE
  2861. #define  INTERFACE   ITTSDialogsA
  2862.  
  2863. DEFINE_GUID(IID_ITTSDialogsA, 0x05EB6C6BL, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  2864.  
  2865. DECLARE_INTERFACE_ (ITTSDialogsA, IUnknown) {
  2866.  
  2867.    // IUnknown members
  2868.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2869.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2870.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2871.  
  2872.    // ITTSDialogsA members
  2873.    STDMETHOD (AboutDlg)       (THIS_ HWND, PCSTR) PURE;
  2874.    STDMETHOD (LexiconDlg)     (THIS_ HWND, PCSTR) PURE;
  2875.    STDMETHOD (GeneralDlg)     (THIS_ HWND, PCSTR) PURE;
  2876.    STDMETHOD (TranslateDlg)   (THIS_ HWND, PCSTR) PURE;
  2877.    };
  2878.  
  2879. typedef ITTSDialogsA FAR * PITTSDIALOGSA;
  2880.  
  2881.  
  2882. #ifdef _S_UNICODE
  2883.  #define ITTSDialogs          ITTSDialogsW
  2884.  #define IID_ITTSDialogs      IID_ITTSDialogsW
  2885.  #define PITTSDIALOGS         PITTSDIALOGSW
  2886.  
  2887. #else
  2888.  #define ITTSDialogs          ITTSDialogsA
  2889.  #define IID_ITTSDialogs      IID_ITTSDialogsA
  2890.  #define PITTSDIALOGS         PITTSDIALOGSA
  2891.  
  2892. #endif
  2893.  
  2894.  
  2895.  
  2896. /*
  2897.  * ITTSEnum
  2898.  */
  2899.  
  2900. #undef   INTERFACE
  2901. #define  INTERFACE   ITTSEnumW
  2902.  
  2903. DEFINE_GUID(IID_ITTSEnumW, 0x6B837B20L, 0x4A47, 0x101B, 0x93, 0x1A, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  2904.  
  2905. DECLARE_INTERFACE_ (ITTSEnumW, IUnknown) {
  2906.  
  2907.    // IUnknown members
  2908.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2909.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2910.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2911.  
  2912.    // ITTSEnumW members
  2913.    STDMETHOD (Next)           (THIS_ ULONG, PTTSMODEINFOW, ULONG *) PURE;
  2914.    STDMETHOD (Skip)           (THIS_ ULONG) PURE;
  2915.    STDMETHOD (Reset)          (THIS) PURE;
  2916.    STDMETHOD (Clone)          (THIS_ ITTSEnumW * FAR *) PURE;
  2917.    STDMETHOD (Select)         (THIS_ GUID, PITTSCENTRALW *, LPUNKNOWN) PURE;
  2918.    };
  2919.  
  2920. typedef ITTSEnumW FAR * PITTSENUMW;
  2921.  
  2922.  
  2923. #undef   INTERFACE
  2924. #define  INTERFACE   ITTSEnumA
  2925.  
  2926. DEFINE_GUID(IID_ITTSEnumA, 0x05EB6C6DL, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  2927.  
  2928. DECLARE_INTERFACE_ (ITTSEnumA, IUnknown) {
  2929.  
  2930.    // IUnknown members
  2931.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2932.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2933.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2934.  
  2935.    // ITTSEnumA members
  2936.    STDMETHOD (Next)           (THIS_ ULONG, PTTSMODEINFOA, ULONG *) PURE;
  2937.    STDMETHOD (Skip)           (THIS_ ULONG) PURE;
  2938.    STDMETHOD (Reset)          (THIS) PURE;
  2939.    STDMETHOD (Clone)          (THIS_ ITTSEnumA * FAR *) PURE;
  2940.    STDMETHOD (Select)         (THIS_ GUID, PITTSCENTRALA *, LPUNKNOWN) PURE;
  2941.    };
  2942.  
  2943. typedef ITTSEnumA FAR * PITTSENUMA;
  2944.  
  2945.  
  2946. #ifdef _S_UNICODE
  2947.  #define ITTSEnum             ITTSEnumW
  2948.  #define IID_ITTSEnum         IID_ITTSEnumW
  2949.  #define PITTSENUM            PITTSENUMW
  2950.  
  2951. #else
  2952.  #define ITTSEnum             ITTSEnumA
  2953.  #define IID_ITTSEnum         IID_ITTSEnumA
  2954.  #define PITTSENUM            PITTSENUMA
  2955.  
  2956. #endif
  2957.  
  2958.  
  2959.  
  2960. /*
  2961.  * ITTSFind
  2962.  */
  2963.  
  2964. #undef   INTERFACE
  2965. #define  INTERFACE   ITTSFindW
  2966.  
  2967. DEFINE_GUID(IID_ITTSFindW, 0x7AA42960L, 0x4A47, 0x101B, 0x93, 0x1A, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  2968.  
  2969. DECLARE_INTERFACE_ (ITTSFindW, IUnknown) {
  2970.  
  2971.    // IUnknown members
  2972.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2973.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2974.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2975.  
  2976.    // ITTSFindW members
  2977.    STDMETHOD (Find)           (THIS_ PTTSMODEINFOW, PTTSMODEINFORANK, PTTSMODEINFOW) PURE;
  2978.    STDMETHOD (Select)         (THIS_ GUID, PITTSCENTRALW *, LPUNKNOWN) PURE;
  2979.    };
  2980.  
  2981. typedef ITTSFindW FAR * PITTSFINDW;
  2982.  
  2983.  
  2984. #undef   INTERFACE
  2985. #define  INTERFACE   ITTSFindA
  2986.  
  2987. DEFINE_GUID(IID_ITTSFindA, 0x05EB6C6EL, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  2988.  
  2989. DECLARE_INTERFACE_ (ITTSFindA, IUnknown) {
  2990.  
  2991.    // IUnknown members
  2992.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  2993.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  2994.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  2995.  
  2996.    // ITTSFindA members
  2997.    STDMETHOD (Find)           (THIS_ PTTSMODEINFOA, PTTSMODEINFORANK, PTTSMODEINFOA) PURE;
  2998.    STDMETHOD (Select)         (THIS_ GUID, PITTSCENTRALA *, LPUNKNOWN) PURE;
  2999.    };
  3000.  
  3001. typedef ITTSFindA FAR * PITTSFINDA;
  3002.  
  3003.  
  3004. #ifdef _S_UNICODE
  3005.  #define ITTSFind             ITTSFindW
  3006.  #define IID_ITTSFind         IID_ITTSFindW
  3007.  #define PITTSFIND            PITTSFINDW
  3008.  
  3009. #else
  3010.  #define ITTSFind             ITTSFindA
  3011.  #define IID_ITTSFind         IID_ITTSFindA
  3012.  #define PITTSFIND            PITTSFINDA
  3013.  
  3014. #endif
  3015.  
  3016.  
  3017.  
  3018. /*
  3019.  * ITTSNotifySink
  3020.  */
  3021.  
  3022. #undef   INTERFACE
  3023. #define  INTERFACE   ITTSNotifySinkW
  3024.  
  3025. DEFINE_GUID(IID_ITTSNotifySinkW, 0xC0FA8F40L, 0x4A46, 0x101B, 0x93, 0x1A, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  3026.  
  3027. DECLARE_INTERFACE_ (ITTSNotifySinkW, IUnknown) {
  3028.  
  3029. // IUnknown members
  3030.  
  3031.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3032.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3033.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3034.  
  3035. // ITTSNotifySinkW members
  3036.  
  3037.    STDMETHOD (AttribChanged)  (THIS_ DWORD) PURE;
  3038.    STDMETHOD (AudioStart)     (THIS_ QWORD) PURE;
  3039.    STDMETHOD (AudioStop)      (THIS_ QWORD) PURE;
  3040.    STDMETHOD (Visual)         (THIS_ QWORD, WCHAR, WCHAR, DWORD, PTTSMOUTH) PURE;
  3041.    };
  3042.  
  3043. typedef ITTSNotifySinkW FAR * PITTSNOTIFYSINKW;
  3044.  
  3045.  
  3046. #undef   INTERFACE
  3047. #define  INTERFACE   ITTSNotifySinkA
  3048.  
  3049. DEFINE_GUID(IID_ITTSNotifySinkA, 0x05EB6C6FL, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
  3050.  
  3051. DECLARE_INTERFACE_ (ITTSNotifySinkA, IUnknown) {
  3052.  
  3053.    // IUnknown members
  3054.    STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3055.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3056.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3057.  
  3058.    // ITTSNotifySinkA members
  3059.    STDMETHOD (AttribChanged)  (THIS_ DWORD) PURE;
  3060.    STDMETHOD (AudioStart)     (THIS_ QWORD) PURE;
  3061.    STDMETHOD (AudioStop)      (THIS_ QWORD) PURE;
  3062.    STDMETHOD (Visual)         (THIS_ QWORD, CHAR, CHAR, DWORD, PTTSMOUTH) PURE;
  3063.    };
  3064.  
  3065. typedef ITTSNotifySinkA FAR * PITTSNOTIFYSINKA;
  3066.  
  3067.  
  3068. #ifdef _S_UNICODE
  3069.  #define ITTSNotifySink       ITTSNotifySinkW
  3070.  #define IID_ITTSNotifySink   IID_ITTSNotifySinkW
  3071.  #define PITTSNOTIFYSINK      PITTSNOTIFYSINKW
  3072.  
  3073. #else
  3074.  #define ITTSNotifySink       ITTSNotifySinkA
  3075.  #define IID_ITTSNotifySink   IID_ITTSNotifySinkA
  3076.  #define PITTSNOTIFYSINK      PITTSNOTIFYSINKA
  3077.  
  3078. #endif
  3079.  
  3080.  
  3081.  
  3082. /************************************************************************
  3083. High-Level speech recognition API
  3084. */
  3085.  
  3086. /************************************************************************
  3087. defines */
  3088.  
  3089.  
  3090. // VCMDNAME member lengths
  3091. #define VCMD_APPLEN             ((DWORD)32)
  3092. #define VCMD_STATELEN           VCMD_APPLEN
  3093. #define VCMD_MICLEN             VCMD_APPLEN
  3094. #define VCMD_SPEAKERLEN         VCMD_APPLEN
  3095.  
  3096. // dwFlags parameter of IVoiceCmd::MenuCreate
  3097. #define  VCMDMC_CREATE_TEMP     0x00000001
  3098. #define  VCMDMC_CREATE_NEW      0x00000002
  3099. #define  VCMDMC_CREATE_ALWAYS   0x00000004
  3100. #define  VCMDMC_OPEN_ALWAYS     0x00000008
  3101. #define  VCMDMC_OPEN_EXISTING   0x00000010
  3102.  
  3103. // dwFlags parameter of IVoiceCmd::Register
  3104. // the last four new flags are introduced to allow only notifications of CommandRecognize only
  3105. // or including CommandOther and AttribChange. This is backward compatible
  3106. #define  VCMDRF_NOMESSAGES      0
  3107. #define  VCMDRF_ALLBUTVUMETER   0x00000001
  3108. #define  VCMDRF_VUMETER         0x00000002
  3109. #define  VCMDRF_ALLMESSAGES     (VCMDRF_ALLBUTVUMETER | VCMDRF_VUMETER)
  3110.  
  3111. #define  VCMDRF_CMDRECOG        0x00000011
  3112. #define  VCMDRF_CMDOTHER        0x00000021
  3113. #define  VCMDRF_ATTRIBCHANGE    0x00000041
  3114. #define  VCMDRF_CMDSTART        0x00000081
  3115. #define  VCMDRF_ALLVCMDMSG      (VCMDRF_ALLMESSAGES|VCMDRF_CMDRECOG|VCMDRF_CMDOTHER|VCMDRF_ATTRIBCHANGE|VCMDRF_CMDSTART)
  3116.  
  3117. // dwFlags parameter of IVoiceCmd::MenuEnum
  3118. #define  VCMDEF_DATABASE        0x00000000
  3119. #define  VCMDEF_ACTIVE          0x00000001
  3120. #define  VCMDEF_SELECTED        0x00000002
  3121. #define  VCMDEF_PERMANENT       0x00000004
  3122. #define  VCMDEF_TEMPORARY       0x00000008
  3123.  
  3124. // dwFlags parameter of IVCmdMenu::Activate
  3125. #define  VWGFLAG_ASLEEP         0x00000001
  3126. #define  VWGFLAG_BALLOON        0x00000010
  3127.  
  3128. // wPriority parameter of IVCmdMenu::Activate
  3129. #define  VCMDACT_NORMAL         (0x8000)
  3130. #define  VCMDACT_LOW            (0x4000)
  3131. #define  VCMDACT_HIGH           (0xC000)
  3132.  
  3133. // dwFlags of the VCMDCOMMAND structure
  3134. #define  VCMDCMD_VERIFY         0x00000001
  3135. #define  VCMDCMD_DISABLED_TEMP  0x00000002
  3136. #define  VCMDCMD_DISABLED_PERM  0x00000004
  3137.  
  3138. // parameter to any function that processes individual commands
  3139. #define  VCMD_BY_POSITION       0x00000001
  3140. #define  VCMD_BY_IDENTIFIER     0x00000002
  3141.  
  3142.  
  3143. // values for dwAttributes field of IVCmdNotifySink::AttribChanged
  3144. #define  IVCNSAC_AUTOGAINENABLE 0x00000001
  3145. #define  IVCNSAC_ENABLED        0x00000002
  3146. #define  IVCNSAC_AWAKE          0x00000004
  3147. #define  IVCNSAC_DEVICE         0x00000008
  3148. #define  IVCNSAC_MICROPHONE     0x00000010
  3149. #define  IVCNSAC_SPEAKER        0x00000020
  3150. #define  IVCNSAC_SRMODE         0x00000040
  3151. #define  IVCNSAC_THRESHOLD      0x00000080
  3152. #define  IVCNSAC_ORIGINAPP      0x00010000
  3153.  
  3154. // values for dwAttributes field of IVTxtNotifySink::AttribChanged
  3155. #define  IVTNSAC_DEVICE         0x00000001
  3156. #define  IVTNSAC_ENABLED        0x00000002
  3157. #define  IVTNSAC_SPEED          0x00000004
  3158. #define  IVTNSAC_VOLUME         0x00000008
  3159. #define  IVTNSAC_TTSMODE        0x00000010
  3160.  
  3161. //    Apollo specific attributes
  3162. #define  IVANSAC_APOLLOCUSTOM   0xC0000000
  3163. #define  IVANSAC_NOISEFLOOR     0x00080000
  3164. #define  IVANSAC_AWAKETIMEROFF  0x00100000
  3165. #define  IVANSAC_AWAKETIMERON   0x00200000
  3166. #define  IVANSAC_AWAKETIMERCLR  0x00800000
  3167. #define  IVANSAC_AWAKETIME      0x01000000
  3168. #define  IVANSAC_TTSPITCH       0x02000000
  3169. #define  IVANSAC_VHELPSTART     0x04000000
  3170. #define  IVANSAC_VHELPSTOP      0x08000000
  3171. #define  IVANSAC_ASRPAUSE       0x10000000
  3172. #define  IVANSAC_ASRRESUME      0x20000000
  3173.  
  3174.  
  3175. /************************************************************************
  3176. typedefs */
  3177.  
  3178. // voice command structure - passed to command menu functions (IVCmdMenu)
  3179. typedef struct {
  3180.     DWORD   dwSize;         // size of struct including amount of abAction
  3181.     DWORD   dwFlags;
  3182.     DWORD   dwID;           // Command ID
  3183.     DWORD   dwCommand;      // DWORD aligned offset of command string
  3184.     DWORD   dwDescription;  // DWORD aligned offset of description string
  3185.     DWORD   dwCategory;     // DWORD aligned offset of category string
  3186.     DWORD   dwCommandText;  // DWORD aligned offset of command text string
  3187.     DWORD   dwAction;       // DWORD aligned offset of action data
  3188.     DWORD   dwActionSize;   // size of the action data (could be string or binary)
  3189.     BYTE    abData[1];      // command, description, category, and action data
  3190.                             // (action data is NOT interpreted by voice command)
  3191. } VCMDCOMMAND, * PVCMDCOMMAND;
  3192.  
  3193.  
  3194.  
  3195. // site information structure - possible parameter to IVoiceCmd::Register
  3196. typedef struct {
  3197.     DWORD   dwAutoGainEnable;
  3198.     DWORD   dwAwakeState;
  3199.     DWORD   dwThreshold;
  3200.     DWORD   dwDevice;
  3201.     DWORD   dwEnable;
  3202.     WCHAR   szMicrophone[VCMD_MICLEN];
  3203.     WCHAR   szSpeaker[VCMD_SPEAKERLEN];
  3204.     GUID    gModeID;
  3205. } VCSITEINFOW, *PVCSITEINFOW;
  3206.  
  3207. typedef struct {
  3208.     DWORD   dwAutoGainEnable;
  3209.     DWORD   dwAwakeState;
  3210.     DWORD   dwThreshold;
  3211.     DWORD   dwDevice;
  3212.     DWORD   dwEnable;
  3213.     CHAR    szMicrophone[VCMD_MICLEN];
  3214.     CHAR    szSpeaker[VCMD_SPEAKERLEN];
  3215.     GUID    gModeID;
  3216. } VCSITEINFOA, *PVCSITEINFOA;
  3217.  
  3218.  
  3219.  
  3220. // menu name structure
  3221. typedef struct {
  3222.     WCHAR   szApplication[VCMD_APPLEN]; // unique application name
  3223.     WCHAR   szState[VCMD_STATELEN];     // unique application state
  3224. } VCMDNAMEW, *PVCMDNAMEW;
  3225.  
  3226. typedef struct {
  3227.     CHAR    szApplication[VCMD_APPLEN]; // unique application name
  3228.     CHAR    szState[VCMD_STATELEN];     // unique application state
  3229. } VCMDNAMEA, *PVCMDNAMEA;
  3230.  
  3231.  
  3232.  
  3233. #ifdef  _S_UNICODE
  3234.  #define VCSITEINFO  VCSITEINFOW
  3235.  #define PVCSITEINFO PVCSITEINFOW
  3236.  #define VCMDNAME    VCMDNAMEW
  3237.  #define PVCMDNAME   PVCMDNAMEW
  3238. #else
  3239.  #define VCSITEINFO  VCSITEINFOA
  3240.  #define PVCSITEINFO PVCSITEINFOA
  3241.  #define VCMDNAME    VCMDNAMEA
  3242.  #define PVCMDNAME   PVCMDNAMEA
  3243. #endif  // _S_UNICODE
  3244.  
  3245. /************************************************************************
  3246. interfaces */
  3247.  
  3248. /*
  3249.  *  IVCmdNotifySink
  3250.  */
  3251. #undef   INTERFACE
  3252. #define  INTERFACE   IVCmdNotifySinkW
  3253.  
  3254. DEFINE_GUID(IID_IVCmdNotifySinkW, 0xCCFD7A60L, 0x604D, 0x101B, 0x99, 0x26, 0x00, 0xAA, 0x00, 0x3C, 0xFC, 0x2C);
  3255.  
  3256. DECLARE_INTERFACE_ (IVCmdNotifySinkW, IUnknown) {
  3257.  
  3258.    // IUnknown members
  3259.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3260.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3261.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3262.  
  3263.    // IVCmdNotifySink members
  3264.  
  3265.    STDMETHOD (CommandRecognize) (THIS_ DWORD, PVCMDNAMEW, DWORD, DWORD, PVOID, 
  3266.                                  DWORD, PWSTR, PWSTR) PURE;
  3267.    STDMETHOD (CommandOther)     (THIS_ PVCMDNAMEW, PWSTR) PURE;
  3268.    STDMETHOD (CommandStart)     (THIS) PURE;
  3269.    STDMETHOD (MenuActivate)     (THIS_ PVCMDNAMEW, BOOL) PURE;
  3270.    STDMETHOD (UtteranceBegin)   (THIS) PURE;
  3271.    STDMETHOD (UtteranceEnd)     (THIS) PURE;
  3272.    STDMETHOD (VUMeter)          (THIS_ WORD) PURE;
  3273.    STDMETHOD (AttribChanged)    (THIS_ DWORD) PURE;
  3274.    STDMETHOD (Interference)     (THIS_ DWORD) PURE;
  3275. };
  3276.  
  3277. typedef IVCmdNotifySinkW FAR * PIVCMDNOTIFYSINKW;
  3278.  
  3279.  
  3280. #undef   INTERFACE
  3281. #define  INTERFACE   IVCmdNotifySinkA
  3282.  
  3283. // {80B25CC0-5540-11b9-C000-5611722E1D15}
  3284. DEFINE_GUID(IID_IVCmdNotifySinkA, 0x80b25cc0, 0x5540, 0x11b9, 0xc0, 0x0, 0x56, 0x11, 0x72, 0x2e, 0x1d, 0x15);
  3285.  
  3286. DECLARE_INTERFACE_ (IVCmdNotifySinkA, IUnknown) {
  3287.  
  3288.    // IUnknown members
  3289.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3290.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3291.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3292.  
  3293.    // IVCmdNotifySinkA members
  3294.  
  3295.    STDMETHOD (CommandRecognize) (THIS_ DWORD, PVCMDNAMEA, DWORD, DWORD, PVOID, 
  3296.                                  DWORD, PSTR, PSTR) PURE;
  3297.    STDMETHOD (CommandOther)     (THIS_ PVCMDNAMEA, PSTR) PURE;
  3298.    STDMETHOD (CommandStart)     (THIS) PURE;
  3299.    STDMETHOD (MenuActivate)     (THIS_ PVCMDNAMEA, BOOL) PURE;
  3300.    STDMETHOD (UtteranceBegin)   (THIS) PURE;
  3301.    STDMETHOD (UtteranceEnd)     (THIS) PURE;
  3302.    STDMETHOD (VUMeter)          (THIS_ WORD) PURE;
  3303.    STDMETHOD (AttribChanged)    (THIS_ DWORD) PURE;
  3304.    STDMETHOD (Interference)     (THIS_ DWORD) PURE;
  3305. };
  3306.  
  3307. typedef IVCmdNotifySinkA FAR * PIVCMDNOTIFYSINKA;
  3308.  
  3309.  
  3310. #ifdef _S_UNICODE
  3311.  #define IVCmdNotifySink        IVCmdNotifySinkW
  3312.  #define IID_IVCmdNotifySink    IID_IVCmdNotifySinkW
  3313.  #define PIVCMDNOTIFYSINK       PIVCMDNOTIFYSINKW
  3314.  
  3315. #else
  3316.  #define IVCmdNotifySink        IVCmdNotifySinkA
  3317.  #define IID_IVCmdNotifySink    IID_IVCmdNotifySinkA
  3318.  #define PIVCMDNOTIFYSINK       PIVCMDNOTIFYSINKA
  3319.  
  3320. #endif // _S_UNICODE
  3321.  
  3322.  
  3323.  
  3324. /*
  3325.  *  IVCmdEnum
  3326.  */
  3327. #undef   INTERFACE
  3328. #define  INTERFACE   IVCmdEnumW
  3329.  
  3330. DEFINE_GUID(IID_IVCmdEnumW, 0xD3CC0820L, 0x604D, 0x101B, 0x99, 0x26, 0x00, 0xAA, 0x00, 0x3C, 0xFC, 0x2C);
  3331.  
  3332. DECLARE_INTERFACE_ (IVCmdEnumW, IUnknown) {
  3333.    // IUnknown members
  3334.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3335.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3336.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3337.  
  3338.    // IVCmdEnum members
  3339.    STDMETHOD (Next)           (THIS_ ULONG, PVCMDNAMEW, ULONG *) PURE;
  3340.    STDMETHOD (Skip)           (THIS_ ULONG) PURE;
  3341.    STDMETHOD (Reset)          (THIS) PURE;
  3342.    STDMETHOD (Clone)          (THIS_ IVCmdEnumW * FAR *) PURE;
  3343. };
  3344. typedef IVCmdEnumW FAR * PIVCMDENUMW;
  3345.  
  3346.  
  3347. #undef   INTERFACE
  3348. #define  INTERFACE   IVCmdEnumA
  3349.  
  3350. // {E86F9540-DCA2-11CD-A166-00AA004CD65C}
  3351. DEFINE_GUID(IID_IVCmdEnumA, 
  3352. 0xE86F9540, 0xDCA2, 0x11CD, 0xA1, 0x66, 0x0, 0xAA, 0x0, 0x4C, 0xD6, 0x5C);
  3353.  
  3354. DECLARE_INTERFACE_ (IVCmdEnumA, IUnknown) {
  3355.    // IUnknown members
  3356.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3357.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3358.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3359.  
  3360.    // IVCmdEnum members
  3361.    STDMETHOD (Next)           (THIS_ ULONG, PVCMDNAMEA, ULONG *) PURE;
  3362.    STDMETHOD (Skip)           (THIS_ ULONG) PURE;
  3363.    STDMETHOD (Reset)          (THIS) PURE;
  3364.    STDMETHOD (Clone)          (THIS_ IVCmdEnumA * FAR *) PURE;
  3365. };
  3366. typedef IVCmdEnumA FAR * PIVCMDENUMA;
  3367.  
  3368.  
  3369. #ifdef _S_UNICODE
  3370.  #define IVCmdEnum              IVCmdEnumW
  3371.  #define IID_IVCmdEnum          IID_IVCmdEnumW
  3372.  #define PIVCMDENUM             PIVCMDENUMW
  3373.  
  3374. #else
  3375.  #define IVCmdEnum              IVCmdEnumA
  3376.  #define IID_IVCmdEnum          IID_IVCmdEnumA
  3377.  #define PIVCMDENUM             PIVCMDENUMA
  3378.  
  3379. #endif // _S_UNICODE
  3380.  
  3381.  
  3382.  
  3383.  
  3384. /*
  3385.  *  IEnumSRShare
  3386.  */
  3387. #undef   INTERFACE
  3388. #define  INTERFACE   IEnumSRShareW
  3389.  
  3390. // {E97F05C0-81B3-11ce-B763-00AA004CD65C}
  3391. DEFINE_GUID(IID_IEnumSRShareW,
  3392. 0xe97f05c0, 0x81b3, 0x11ce, 0xb7, 0x63, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
  3393.  
  3394. DECLARE_INTERFACE_ (IEnumSRShareW, IUnknown) {
  3395.    // IUnknown members
  3396.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3397.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3398.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3399.  
  3400.    // IEnumSRShare members
  3401.    STDMETHOD (Next)           (THIS_ ULONG, PSRSHAREW, ULONG *) PURE;
  3402.    STDMETHOD (Skip)           (THIS_ ULONG) PURE;
  3403.    STDMETHOD (Reset)          (THIS) PURE;
  3404.    STDMETHOD (Clone)          (THIS_ IEnumSRShareW * FAR *) PURE;
  3405.    STDMETHOD (New)            (THIS_ DWORD, GUID, PISRCENTRALW *, QWORD *) PURE;
  3406.    STDMETHOD (Share)          (THIS_ QWORD, PISRCENTRALW *) PURE;
  3407.    STDMETHOD (Detach)         (THIS_ QWORD) PURE;
  3408. };
  3409. typedef IEnumSRShareW FAR * PIENUMSRSHAREW;
  3410.  
  3411.  
  3412. #undef   INTERFACE
  3413. #define  INTERFACE   IEnumSRShareA
  3414.  
  3415. // {E97F05C1-81B3-11ce-B763-00AA004CD65C}
  3416. DEFINE_GUID(IID_IEnumSRShareA,
  3417. 0xe97f05c1, 0x81b3, 0x11ce, 0xb7, 0x63, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
  3418.  
  3419. DECLARE_INTERFACE_ (IEnumSRShareA, IUnknown) {
  3420.    // IUnknown members
  3421.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3422.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3423.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3424.  
  3425.    // IEnumSRShare members
  3426.    STDMETHOD (Next)           (THIS_ ULONG, PSRSHAREA, ULONG *) PURE;
  3427.    STDMETHOD (Skip)           (THIS_ ULONG) PURE;
  3428.    STDMETHOD (Reset)          (THIS) PURE;
  3429.    STDMETHOD (Clone)          (THIS_ IEnumSRShareA * FAR *) PURE;
  3430.    STDMETHOD (New)            (THIS_ DWORD, GUID, PISRCENTRALA *, QWORD *) PURE;
  3431.    STDMETHOD (Share)          (THIS_ QWORD, PISRCENTRALA *) PURE;
  3432.    STDMETHOD (Detach)         (THIS_ QWORD) PURE;
  3433. };
  3434. typedef IEnumSRShareA FAR * PIENUMSRSHAREA;
  3435.  
  3436.  
  3437. #ifdef _S_UNICODE
  3438.  #define IEnumSRShare              IEnumSRShareW
  3439.  #define IID_IEnumSRShare          IID_IEnumSRShareW
  3440.  #define PIENUMSRSHARE             PIENUMSRSHAREW
  3441.  
  3442. #else
  3443.  #define IEnumSRShare              IEnumSRShareA
  3444.  #define IID_IEnumSRShare          IID_IEnumSRShareA
  3445.  #define PIENUMSRSHARE             PIENUMSRSHAREA
  3446.  
  3447. #endif // _S_UNICODE
  3448.  
  3449.  
  3450.  
  3451.  
  3452. /*
  3453.  *  IVCmdMenu
  3454.  */
  3455. #undef   INTERFACE
  3456. #define  INTERFACE   IVCmdMenuW
  3457.  
  3458. DEFINE_GUID(IID_IVCmdMenuW, 0xDAC54F60L, 0x604D, 0x101B, 0x99, 0x26, 0x00, 0xAA, 0x00, 0x3C, 0xFC, 0x2C);
  3459.  
  3460. DECLARE_INTERFACE_ (IVCmdMenuW, IUnknown) {
  3461.    // IUnknown members
  3462.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3463.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3464.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3465.  
  3466.    // IVCmdMenu members
  3467.    STDMETHOD (Activate)       (THIS_ HWND, DWORD) PURE;
  3468.    STDMETHOD (Deactivate)     (THIS) PURE;
  3469.    STDMETHOD (TrainMenuDlg)   (THIS_ HWND, PCWSTR) PURE;
  3470.    STDMETHOD (Num)            (THIS_ DWORD *) PURE;
  3471.    STDMETHOD (Get)            (THIS_ DWORD, DWORD, DWORD, PSDATA, DWORD *) PURE;
  3472.    STDMETHOD (Set)            (THIS_ DWORD, DWORD, DWORD, SDATA) PURE;
  3473.    STDMETHOD (Add)            (THIS_ DWORD, SDATA, DWORD *) PURE;
  3474.    STDMETHOD (Remove)         (THIS_ DWORD, DWORD, DWORD) PURE;
  3475.    STDMETHOD (ListGet)        (THIS_ PCWSTR, PSDATA, DWORD *) PURE;
  3476.    STDMETHOD (ListSet)        (THIS_ PCWSTR, DWORD, SDATA) PURE;
  3477.    STDMETHOD (EnableItem)     (THIS_ DWORD, DWORD, DWORD) PURE;
  3478.    STDMETHOD (SetItem)        (THIS_ DWORD, DWORD, DWORD) PURE;
  3479. };
  3480.  
  3481. typedef IVCmdMenuW FAR * PIVCMDMENUW;
  3482.  
  3483.  
  3484. #undef   INTERFACE
  3485. #define  INTERFACE   IVCmdMenuA
  3486.  
  3487. // {746141E0-5543-11b9-C000-5611722E1D15}
  3488. DEFINE_GUID(IID_IVCmdMenuA, 0x746141e0, 0x5543, 0x11b9, 0xc0, 0x0, 0x56, 0x11, 0x72, 0x2e, 0x1d, 0x15);
  3489.  
  3490. DECLARE_INTERFACE_ (IVCmdMenuA, IUnknown) {
  3491.    // IUnknown members
  3492.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3493.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3494.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3495.  
  3496.    // IVCmdMenu members
  3497.    STDMETHOD (Activate)       (THIS_ HWND, DWORD) PURE;
  3498.    STDMETHOD (Deactivate)     (THIS) PURE;
  3499.    STDMETHOD (TrainMenuDlg)   (THIS_ HWND, PCSTR) PURE;
  3500.    STDMETHOD (Num)            (THIS_ DWORD *) PURE;
  3501.    STDMETHOD (Get)            (THIS_ DWORD, DWORD, DWORD, PSDATA, DWORD *) PURE;
  3502.    STDMETHOD (Set)            (THIS_ DWORD, DWORD, DWORD, SDATA) PURE;
  3503.    STDMETHOD (Add)            (THIS_ DWORD, SDATA, DWORD *) PURE;
  3504.    STDMETHOD (Remove)         (THIS_ DWORD, DWORD, DWORD) PURE;
  3505.    STDMETHOD (ListGet)        (THIS_ PCSTR, PSDATA, DWORD *) PURE;
  3506.    STDMETHOD (ListSet)        (THIS_ PCSTR, DWORD, SDATA) PURE;
  3507.    STDMETHOD (EnableItem)     (THIS_ DWORD, DWORD, DWORD) PURE;
  3508.    STDMETHOD (SetItem)        (THIS_ DWORD, DWORD, DWORD) PURE;
  3509. };
  3510.  
  3511. typedef IVCmdMenuA FAR * PIVCMDMENUA;
  3512.  
  3513.  
  3514. #ifdef _S_UNICODE
  3515.  #define IVCmdMenu      IVCmdMenuW
  3516.  #define IID_IVCmdMenu  IID_IVCmdMenuW
  3517.  #define PIVCMDMENU     PIVCMDMENUW
  3518.  
  3519. #else
  3520.  #define IVCmdMenu      IVCmdMenuA
  3521.  #define IID_IVCmdMenu  IID_IVCmdMenuA
  3522.  #define PIVCMDMENU     PIVCMDMENUA
  3523.  
  3524. #endif // _S_UNICODE
  3525.  
  3526.  
  3527.  
  3528. /*
  3529.  *  IVoiceCmd
  3530.  */
  3531. #undef   INTERFACE
  3532. #define  INTERFACE   IVoiceCmdW
  3533.  
  3534. DEFINE_GUID(IID_IVoiceCmdW, 0xE0DCC220L, 0x604D, 0x101B, 0x99, 0x26, 0x00, 0xAA, 0x00, 0x3C, 0xFC, 0x2C);
  3535.  
  3536. DECLARE_INTERFACE_ (IVoiceCmdW, IUnknown) {
  3537.    // IUnknown members
  3538.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3539.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3540.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3541.  
  3542.    // IVoiceCmd members
  3543.    STDMETHOD (Register)       (THIS_ PCWSTR, PIVCMDNOTIFYSINK, GUID, DWORD,
  3544.                                      PVCSITEINFOW) PURE;
  3545.    STDMETHOD (MenuEnum)       (THIS_ DWORD, PCWSTR, PCWSTR, PIVCMDENUMW *) PURE;
  3546.    STDMETHOD (MenuCreate)     (THIS_ PVCMDNAMEW, PLANGUAGEW, DWORD,
  3547.                                      IVCmdMenuW **) PURE;
  3548.    STDMETHOD (MenuDelete)     (THIS_ PVCMDNAMEW) PURE;
  3549.    STDMETHOD (CmdMimic)       (THIS_ PVCMDNAMEW, PCWSTR) PURE;
  3550. };
  3551.  
  3552. typedef IVoiceCmdW FAR * PIVOICECMDW;
  3553.  
  3554.  
  3555. #undef   INTERFACE
  3556. #define  INTERFACE   IVoiceCmdA
  3557.  
  3558. // {C63A2B30-5543-11b9-C000-5611722E1D15}
  3559. DEFINE_GUID(IID_IVoiceCmdA, 0xc63a2b30, 0x5543, 0x11b9, 0xc0, 0x0, 0x56, 0x11, 0x72, 0x2e, 0x1d, 0x15);
  3560.  
  3561. DECLARE_INTERFACE_ (IVoiceCmdA, IUnknown) {
  3562.    // IUnknown members
  3563.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3564.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3565.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3566.  
  3567.    // IVoiceCmd members
  3568.    STDMETHOD (Register)       (THIS_ PCSTR, PIVCMDNOTIFYSINK, GUID, DWORD,
  3569.                                      PVCSITEINFOA) PURE;
  3570.    STDMETHOD (MenuEnum)       (THIS_ DWORD, PCSTR, PCSTR, PIVCMDENUMA *) PURE;
  3571.    STDMETHOD (MenuCreate)     (THIS_ PVCMDNAMEA, PLANGUAGEA, DWORD,
  3572.                                      PIVCMDMENU *) PURE;
  3573.    STDMETHOD (MenuDelete)     (THIS_ PVCMDNAMEA) PURE;
  3574.    STDMETHOD (CmdMimic)       (THIS_ PVCMDNAMEA, PCSTR) PURE;
  3575. };
  3576.  
  3577. typedef IVoiceCmdA FAR * PIVOICECMDA;
  3578.  
  3579.  
  3580. #ifdef _S_UNICODE
  3581.  #define IVoiceCmd      IVoiceCmdW
  3582.  #define IID_IVoiceCmd  IID_IVoiceCmdW
  3583.  #define PIVOICECMD     PIVOICECMDW
  3584.  
  3585. #else
  3586.  #define IVoiceCmd      IVoiceCmdA
  3587.  #define IID_IVoiceCmd  IID_IVoiceCmdA
  3588.  #define PIVOICECMD     PIVOICECMDA
  3589.  
  3590. #endif //_S_UNICODE
  3591.  
  3592.  
  3593.  
  3594. /*
  3595.  *  IVCmdAttributes
  3596.  */
  3597. #undef   INTERFACE
  3598. #define  INTERFACE   IVCmdAttributesW
  3599.  
  3600. DEFINE_GUID(IID_IVCmdAttributesW, 0xE5F24680L, 0x6053, 0x101B, 0x99, 0x26, 0x00, 0xAA, 0x00, 0x3C, 0xFC, 0x2C);
  3601.  
  3602. DECLARE_INTERFACE_ (IVCmdAttributesW, IUnknown) {
  3603.    // IUnknown members
  3604.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3605.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3606.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3607.  
  3608.    // IVCmdAttributes members
  3609.    STDMETHOD (AutoGainEnableGet) (THIS_ DWORD *) PURE;
  3610.    STDMETHOD (AutoGainEnableSet) (THIS_ DWORD) PURE;
  3611.    STDMETHOD (AwakeStateGet)     (THIS_ DWORD *) PURE;
  3612.    STDMETHOD (AwakeStateSet)     (THIS_ DWORD) PURE;
  3613.    STDMETHOD (ThresholdGet)      (THIS_ DWORD *) PURE;
  3614.    STDMETHOD (ThresholdSet)      (THIS_ DWORD) PURE;
  3615.    STDMETHOD (DeviceGet)         (THIS_ DWORD *) PURE;
  3616.    STDMETHOD (DeviceSet)         (THIS_ DWORD) PURE;
  3617.    STDMETHOD (EnabledGet)        (THIS_ DWORD *) PURE;
  3618.    STDMETHOD (EnabledSet)        (THIS_ DWORD) PURE;
  3619.    STDMETHOD (MicrophoneGet)     (THIS_ PWSTR, DWORD, DWORD *) PURE;
  3620.    STDMETHOD (MicrophoneSet)     (THIS_ PCWSTR) PURE;
  3621.    STDMETHOD (SpeakerGet)        (THIS_ PWSTR, DWORD, DWORD *) PURE;
  3622.    STDMETHOD (SpeakerSet)        (THIS_ PCWSTR) PURE;
  3623.    STDMETHOD (SRModeGet)         (THIS_ GUID *) PURE;
  3624.    STDMETHOD (SRModeSet)         (THIS_ GUID) PURE;
  3625. };
  3626.  
  3627. typedef IVCmdAttributesW FAR * PIVCMDATTRIBUTESW;
  3628.  
  3629.  
  3630. #undef   INTERFACE
  3631. #define  INTERFACE   IVCmdAttributesA
  3632.  
  3633. // {FFF5DF80-5544-11b9-C000-5611722E1D15}
  3634. DEFINE_GUID(IID_IVCmdAttributesA, 0xfff5df80, 0x5544, 0x11b9, 0xc0, 0x0, 0x56, 0x11, 0x72, 0x2e, 0x1d, 0x15);
  3635.  
  3636. DECLARE_INTERFACE_ (IVCmdAttributesA, IUnknown) {
  3637.    // IUnknown members
  3638.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3639.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3640.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3641.  
  3642.    // IVCmdAttributes members
  3643.    STDMETHOD (AutoGainEnableGet) (THIS_ DWORD *) PURE;
  3644.    STDMETHOD (AutoGainEnableSet) (THIS_ DWORD) PURE;
  3645.    STDMETHOD (AwakeStateGet)     (THIS_ DWORD *) PURE;
  3646.    STDMETHOD (AwakeStateSet)     (THIS_ DWORD) PURE;
  3647.    STDMETHOD (ThresholdGet)      (THIS_ DWORD *) PURE;
  3648.    STDMETHOD (ThresholdSet)      (THIS_ DWORD) PURE;
  3649.    STDMETHOD (DeviceGet)         (THIS_ DWORD *) PURE;
  3650.    STDMETHOD (DeviceSet)         (THIS_ DWORD) PURE;
  3651.    STDMETHOD (EnabledGet)        (THIS_ DWORD *) PURE;
  3652.    STDMETHOD (EnabledSet)        (THIS_ DWORD) PURE;
  3653.    STDMETHOD (MicrophoneGet)     (THIS_ PSTR, DWORD, DWORD *) PURE;
  3654.    STDMETHOD (MicrophoneSet)     (THIS_ PCSTR) PURE;
  3655.    STDMETHOD (SpeakerGet)        (THIS_ PSTR, DWORD, DWORD *) PURE;
  3656.    STDMETHOD (SpeakerSet)        (THIS_ PCSTR) PURE;
  3657.    STDMETHOD (SRModeGet)         (THIS_ GUID *) PURE;
  3658.    STDMETHOD (SRModeSet)         (THIS_ GUID) PURE;
  3659. };
  3660.  
  3661. typedef IVCmdAttributesA FAR * PIVCMDATTRIBUTESA;
  3662.  
  3663.  
  3664. #ifdef _S_UNICODE
  3665.  #define IVCmdAttributes        IVCmdAttributesW
  3666.  #define IID_IVCmdAttributes    IID_IVCmdAttributesW
  3667.  #define PIVCMDATTRIBUTES       PIVCMDATTRIBUTESW
  3668.  
  3669. #else
  3670.  #define IVCmdAttributes        IVCmdAttributesA
  3671.  #define IID_IVCmdAttributes    IID_IVCmdAttributesA
  3672.  #define PIVCMDATTRIBUTES       PIVCMDATTRIBUTESA
  3673.  
  3674. #endif // _S_UNICODE
  3675.  
  3676.  
  3677.  
  3678. /*
  3679.  *  IVCmdDialog
  3680.  */
  3681. #undef   INTERFACE
  3682. #define  INTERFACE   IVCmdDialogsW
  3683.  
  3684. DEFINE_GUID(IID_IVCmdDialogsW, 0xEE39B8A0L, 0x6053, 0x101B, 0x99, 0x26, 0x00, 0xAA, 0x00, 0x3C, 0xFC, 0x2C);
  3685.  
  3686. DECLARE_INTERFACE_ (IVCmdDialogsW, IUnknown) {
  3687.    // IUnknown members
  3688.    STDMETHOD(QueryInterface)    (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3689.    STDMETHOD_(ULONG,AddRef)     (THIS) PURE;
  3690.    STDMETHOD_(ULONG,Release)    (THIS) PURE;
  3691.  
  3692.    // IVCmdDialogs members
  3693.    STDMETHOD (AboutDlg)         (THIS_ HWND, PCWSTR) PURE;
  3694.    STDMETHOD (GeneralDlg)       (THIS_ HWND, PCWSTR) PURE;
  3695.    STDMETHOD (LexiconDlg)       (THIS_ HWND, PCWSTR) PURE;
  3696.    STDMETHOD (TrainGeneralDlg)  (THIS_ HWND, PCWSTR) PURE;
  3697.    STDMETHOD (TrainMicDlg)      (THIS_ HWND, PCWSTR) PURE;
  3698. };
  3699.  
  3700. typedef IVCmdDialogsW FAR * PIVCMDDIALOGSW;
  3701.  
  3702.  
  3703. #undef   INTERFACE
  3704. #define  INTERFACE   IVCmdDialogsA
  3705.  
  3706. // {AA8FE260-5545-11b9-C000-5611722E1D15}
  3707. DEFINE_GUID(IID_IVCmdDialogsA, 0xaa8fe260, 0x5545, 0x11b9, 0xc0, 0x0, 0x56, 0x11, 0x72, 0x2e, 0x1d, 0x15);
  3708.  
  3709. DECLARE_INTERFACE_ (IVCmdDialogsA, IUnknown) {
  3710.    // IUnknown members
  3711.    STDMETHOD(QueryInterface)    (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3712.    STDMETHOD_(ULONG,AddRef)     (THIS) PURE;
  3713.    STDMETHOD_(ULONG,Release)    (THIS) PURE;
  3714.  
  3715.    // IVCmdDialogs members
  3716.    STDMETHOD (AboutDlg)         (THIS_ HWND, PCSTR) PURE;
  3717.    STDMETHOD (GeneralDlg)       (THIS_ HWND, PCSTR) PURE;
  3718.    STDMETHOD (LexiconDlg)       (THIS_ HWND, PCSTR) PURE;
  3719.    STDMETHOD (TrainGeneralDlg)  (THIS_ HWND, PCSTR) PURE;
  3720.    STDMETHOD (TrainMicDlg)      (THIS_ HWND, PCSTR) PURE;
  3721. };
  3722.  
  3723. typedef IVCmdDialogsA FAR * PIVCMDDIALOGSA;
  3724.  
  3725.  
  3726. #ifdef _S_UNICODE
  3727.  #define IVCmdDialogs       IVCmdDialogsW
  3728.  #define IID_IVCmdDialogs   IID_IVCmdDialogsW
  3729.  #define PIVCMDDIALOGS      PIVCMDDIALOGSW
  3730.  
  3731. #else
  3732.  #define IVCmdDialogs       IVCmdDialogsA
  3733.  #define IID_IVCmdDialogs   IID_IVCmdDialogsA
  3734.  #define PIVCMDDIALOGS      PIVCMDDIALOGSA
  3735.  
  3736. #endif // _S_UNICODE
  3737.  
  3738.  
  3739.  
  3740. /************************************************************************
  3741. class guids */
  3742.  
  3743. // DEFINE_GUID(CLSID_VCmd, 0x93898800L, 0x604D, 0x101B, 0x99, 0x26, 0x00, 0xAA, 0x00, 0x3C, 0xFC, 0x2C);
  3744. // {6D40D820-0BA7-11ce-A166-00AA004CD65C}
  3745. DEFINE_GUID(CLSID_VCmd, 
  3746. 0x6d40d820, 0xba7, 0x11ce, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
  3747. // {89F70C30-8636-11ce-B763-00AA004CD65C}
  3748. DEFINE_GUID(CLSID_SRShare, 
  3749. 0x89f70c30, 0x8636, 0x11ce, 0xb7, 0x63, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
  3750.  
  3751.  
  3752.  
  3753. /************************************************************************
  3754. High-Level text-to-speech API
  3755. */
  3756.  
  3757.  
  3758. /************************************************************************
  3759. defines */
  3760.  
  3761. #define  ONE                    (1)
  3762.  
  3763. // dwFlags parameter of IVoiceText::Register
  3764. #define  VTXTF_ALLMESSAGES      (ONE<<0)
  3765.  
  3766. #define  VTXTF_SPEAK            0x00001001
  3767. #define  VTXTF_SPEAKDONE        0x00002001
  3768. #define  VTXTF_SPEAKSTOP        0x00004001
  3769. #define  VTXTF_SPEAKSTART       0x00008001
  3770.  
  3771. /*
  3772.  *   dwFlags parameter of IVoiceText::Speak
  3773.  */
  3774.  
  3775. // type of speech
  3776. #define  VTXTST_STATEMENT       0x00000001
  3777. #define  VTXTST_QUESTION        0x00000002
  3778. #define  VTXTST_COMMAND         0x00000004
  3779. #define  VTXTST_WARNING         0x00000008
  3780. #define  VTXTST_READING         0x00000010
  3781. #define  VTXTST_NUMBERS         0x00000020
  3782. #define  VTXTST_SPREADSHEET     0x00000040
  3783.  
  3784. // priorities
  3785. #define  VTXTSP_VERYHIGH        0x00000080
  3786. #define  VTXTSP_HIGH            0x00000100
  3787. #define  VTXTSP_NORMAL          0x00000200
  3788.  
  3789. /************************************************************************
  3790. typedefs */
  3791.  
  3792. // possible parameter to IVoiceText::Register
  3793. typedef struct {
  3794.     DWORD   dwDevice;
  3795.     DWORD   dwEnable;
  3796.     DWORD   dwSpeed;
  3797.     GUID    gModeID;
  3798. } VTSITEINFO, *PVTSITEINFO;
  3799.  
  3800.  
  3801. /************************************************************************
  3802. interfaces */
  3803.  
  3804. /*
  3805.  *  IVCmdNotifySink
  3806.  */
  3807. #undef   INTERFACE
  3808. #define  INTERFACE   IVTxtNotifySinkW
  3809.  
  3810. // {FD3A2430-E090-11cd-A166-00AA004CD65C}
  3811. DEFINE_GUID(IID_IVTxtNotifySinkW, 0xfd3a2430, 0xe090, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
  3812.  
  3813. DECLARE_INTERFACE_ (IVTxtNotifySinkW, IUnknown) {
  3814.  
  3815.    // IUnknown members
  3816.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3817.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3818.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3819.  
  3820.    // IVTxtNotifySinkW members
  3821.    STDMETHOD (AttribChanged)    (THIS_ DWORD) PURE;
  3822.    STDMETHOD (Visual)           (THIS_ WCHAR, WCHAR, DWORD, PTTSMOUTH) PURE;
  3823.    STDMETHOD (Speak)            (THIS_ PWSTR, PWSTR, DWORD) PURE;
  3824.    STDMETHOD (SpeakingStarted)  (THIS) PURE;
  3825.    STDMETHOD (SpeakingDone)     (THIS) PURE;
  3826. };
  3827.  
  3828. typedef IVTxtNotifySinkW FAR * PIVTXTNOTIFYSINKW;
  3829.  
  3830.  
  3831. #undef   INTERFACE
  3832. #define  INTERFACE   IVTxtNotifySinkA
  3833.  
  3834. // {D2C840E0-E092-11cd-A166-00AA004CD65C}
  3835. DEFINE_GUID(IID_IVTxtNotifySinkA, 0xd2c840e0, 0xe092, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
  3836.  
  3837. DECLARE_INTERFACE_ (IVTxtNotifySinkA, IUnknown) {
  3838.  
  3839.    // IUnknown members
  3840.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3841.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3842.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3843.  
  3844.    // IVTxtNotifySinkA members
  3845.    STDMETHOD (AttribChanged)    (THIS_ DWORD) PURE;
  3846.    STDMETHOD (Visual)           (THIS_ WCHAR, CHAR, DWORD, PTTSMOUTH) PURE;
  3847.    STDMETHOD (Speak)            (THIS_ PSTR, PSTR, DWORD) PURE;
  3848.    STDMETHOD (SpeakingStarted)  (THIS) PURE;
  3849.    STDMETHOD (SpeakingDone)     (THIS) PURE;
  3850. };
  3851.  
  3852. typedef IVTxtNotifySinkA FAR * PIVTXTNOTIFYSINKA;
  3853.  
  3854.  
  3855. #ifdef _S_UNICODE
  3856.  #define IVTxtNotifySink        IVTxtNotifySinkW
  3857.  #define IID_IVTxtNotifySink    IID_IVTxtNotifySinkW
  3858.  #define PIVTXTNOTIFYSINK       PIVTXTNOTIFYSINKW
  3859.  
  3860. #else
  3861.  #define IVTxtNotifySink        IVTxtNotifySinkA
  3862.  #define IID_IVTxtNotifySink    IID_IVTxtNotifySinkA
  3863.  #define PIVTXTNOTIFYSINK       PIVTXTNOTIFYSINKA
  3864.  
  3865. #endif // _S_UNICODE
  3866.  
  3867.  
  3868.  
  3869. /*
  3870.  *  IVoiceText
  3871.  */
  3872. #undef   INTERFACE
  3873. #define  INTERFACE   IVoiceTextW
  3874.  
  3875. // {C4FE8740-E093-11cd-A166-00AA004CD65C}
  3876. DEFINE_GUID(IID_IVoiceTextW, 0xc4fe8740, 0xe093, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
  3877.  
  3878. DECLARE_INTERFACE_ (IVoiceTextW, IUnknown) {
  3879.     // IUnknown members
  3880.     STDMETHOD(QueryInterface)   (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3881.     STDMETHOD_(ULONG,AddRef)    (THIS) PURE;
  3882.     STDMETHOD_(ULONG,Release)   (THIS) PURE;
  3883.  
  3884.     // IVoiceText members
  3885.  
  3886.     STDMETHOD (Register)         (THIS_ PCWSTR, PCWSTR, 
  3887.                                         PIVTXTNOTIFYSINK, GUID,
  3888.                                         DWORD, PVTSITEINFO) PURE;
  3889.     STDMETHOD (Speak)            (THIS_ PCWSTR, DWORD, PCWSTR) PURE;
  3890.     STDMETHOD (StopSpeaking)     (THIS) PURE;
  3891.     STDMETHOD (AudioFastForward) (THIS) PURE;
  3892.     STDMETHOD (AudioPause)       (THIS) PURE;
  3893.     STDMETHOD (AudioResume)      (THIS) PURE;
  3894.     STDMETHOD (AudioRewind)      (THIS) PURE;
  3895. };
  3896.  
  3897. typedef IVoiceTextW FAR * PIVOICETEXTW;
  3898.  
  3899.  
  3900. #undef   INTERFACE
  3901. #define  INTERFACE   IVoiceTextA
  3902.  
  3903. // {E1B7A180-E093-11cd-A166-00AA004CD65C}
  3904. DEFINE_GUID(IID_IVoiceTextA, 0xe1b7a180, 0xe093, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
  3905.  
  3906. DECLARE_INTERFACE_ (IVoiceTextA, IUnknown) {
  3907.    // IUnknown members
  3908.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3909.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3910.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3911.  
  3912.    // IVoiceText members
  3913.  
  3914.     STDMETHOD (Register)         (THIS_ PCSTR, PCSTR, 
  3915.                                         PIVTXTNOTIFYSINK, GUID,
  3916.                                         DWORD, PVTSITEINFO) PURE;
  3917.     STDMETHOD (Speak)            (THIS_ PCSTR, DWORD, PCSTR) PURE;
  3918.     STDMETHOD (StopSpeaking)     (THIS) PURE;
  3919.     STDMETHOD (AudioFastForward) (THIS) PURE;
  3920.     STDMETHOD (AudioPause)       (THIS) PURE;
  3921.     STDMETHOD (AudioResume)      (THIS) PURE;
  3922.     STDMETHOD (AudioRewind)      (THIS) PURE;
  3923. };
  3924.  
  3925. typedef IVoiceTextA FAR * PIVOICETEXTA;
  3926.  
  3927.  
  3928. #ifdef _S_UNICODE
  3929.  #define IVoiceText      IVoiceTextW
  3930.  #define IID_IVoiceText  IID_IVoiceTextW
  3931.  #define PIVOICETEXT     PIVOICETEXTW
  3932.  
  3933. #else
  3934.  #define IVoiceText      IVoiceTextA
  3935.  #define IID_IVoiceText  IID_IVoiceTextA
  3936.  #define PIVOICETEXT     PIVOICETEXTA
  3937.  
  3938. #endif //_S_UNICODE
  3939.  
  3940.  
  3941.  
  3942. /*
  3943.  *  IVTxtAttributes
  3944.  */
  3945. #undef   INTERFACE
  3946. #define  INTERFACE   IVTxtAttributesW
  3947.  
  3948. // {6A8D6140-E095-11cd-A166-00AA004CD65C}
  3949. DEFINE_GUID(IID_IVTxtAttributesW, 0x6a8d6140, 0xe095, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
  3950.  
  3951. DECLARE_INTERFACE_ (IVTxtAttributesW, IUnknown) {
  3952.    // IUnknown members
  3953.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3954.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3955.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3956.  
  3957.    // IVTxtAttributes members
  3958.    STDMETHOD (DeviceGet)         (THIS_ DWORD *) PURE;
  3959.    STDMETHOD (DeviceSet)         (THIS_ DWORD) PURE;
  3960.    STDMETHOD (EnabledGet)        (THIS_ DWORD *) PURE;
  3961.    STDMETHOD (EnabledSet)        (THIS_ DWORD) PURE;
  3962.    STDMETHOD (IsSpeaking)        (THIS_ BOOL *) PURE;
  3963.    STDMETHOD (SpeedGet)          (THIS_ DWORD *) PURE;
  3964.    STDMETHOD (SpeedSet)          (THIS_ DWORD) PURE;
  3965.    STDMETHOD (TTSModeGet)        (THIS_ GUID *) PURE;
  3966.    STDMETHOD (TTSModeSet)        (THIS_ GUID) PURE;
  3967. };
  3968.  
  3969. typedef IVTxtAttributesW FAR * PIVTXTATTRIBUTESW;
  3970.  
  3971.  
  3972. #undef   INTERFACE
  3973. #define  INTERFACE   IVTxtAttributesA
  3974.  
  3975. // {8BE9CC30-E095-11cd-A166-00AA004CD65C}
  3976. DEFINE_GUID(IID_IVTxtAttributesA, 0x8be9cc30, 0xe095, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
  3977.  
  3978. DECLARE_INTERFACE_ (IVTxtAttributesA, IUnknown) {
  3979.    // IUnknown members
  3980.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  3981.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  3982.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  3983.  
  3984.    // IVTxtAttributes members
  3985.    STDMETHOD (DeviceGet)         (THIS_ DWORD *) PURE;
  3986.    STDMETHOD (DeviceSet)         (THIS_ DWORD) PURE;
  3987.    STDMETHOD (EnabledGet)        (THIS_ DWORD *) PURE;
  3988.    STDMETHOD (EnabledSet)        (THIS_ DWORD) PURE;
  3989.    STDMETHOD (IsSpeaking)        (THIS_ BOOL *) PURE;
  3990.    STDMETHOD (SpeedGet)          (THIS_ DWORD *) PURE;
  3991.    STDMETHOD (SpeedSet)          (THIS_ DWORD) PURE;
  3992.    STDMETHOD (TTSModeGet)        (THIS_ GUID *) PURE;
  3993.    STDMETHOD (TTSModeSet)        (THIS_ GUID) PURE;
  3994. };
  3995.  
  3996. typedef IVTxtAttributesA FAR * PIVTXTATTRIBUTESA;
  3997.  
  3998.  
  3999. #ifdef _S_UNICODE
  4000.  #define IVTxtAttributes        IVTxtAttributesW
  4001.  #define IID_IVTxtAttributes    IID_IVTxtAttributesW
  4002.  #define PIVTXTATTRIBUTES       PIVTXTATTRIBUTESW
  4003.  
  4004. #else
  4005.  #define IVTxtAttributes        IVTxtAttributesA
  4006.  #define IID_IVTxtAttributes    IID_IVTxtAttributesA
  4007.  #define PIVTXTATTRIBUTES       PIVTXTATTRIBUTESA
  4008.  
  4009. #endif // _S_UNICODE
  4010.  
  4011.  
  4012.  
  4013. /*
  4014.  *  IVTxtDialog
  4015.  */
  4016. #undef   INTERFACE
  4017. #define  INTERFACE   IVTxtDialogsW
  4018.  
  4019. // {D6469210-E095-11cd-A166-00AA004CD65C}
  4020. DEFINE_GUID(IID_IVTxtDialogsW, 0xd6469210, 0xe095, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
  4021.  
  4022. DECLARE_INTERFACE_ (IVTxtDialogsW, IUnknown) {
  4023.    // IUnknown members
  4024.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  4025.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  4026.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  4027.  
  4028.    // IVTxtDialogs members
  4029.  
  4030.    STDMETHOD (AboutDlg)       (THIS_ HWND, PCWSTR) PURE;
  4031.    STDMETHOD (LexiconDlg)     (THIS_ HWND, PCWSTR) PURE;
  4032.    STDMETHOD (GeneralDlg)     (THIS_ HWND, PCWSTR) PURE;
  4033.    STDMETHOD (TranslateDlg)   (THIS_ HWND, PCWSTR) PURE;
  4034. };
  4035.  
  4036. typedef IVTxtDialogsW FAR * PIVTXTDIALOGSW;
  4037.  
  4038.  
  4039. #undef   INTERFACE
  4040. #define  INTERFACE   IVTxtDialogsA
  4041.  
  4042. // {E8F6FA20-E095-11cd-A166-00AA004CD65C}
  4043. DEFINE_GUID(IID_IVTxtDialogsA, 0xe8f6fa20, 0xe095, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
  4044.  
  4045. DECLARE_INTERFACE_ (IVTxtDialogsA, IUnknown) {
  4046.    // IUnknown members
  4047.    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  4048.    STDMETHOD_(ULONG,AddRef)   (THIS) PURE;
  4049.    STDMETHOD_(ULONG,Release)  (THIS) PURE;
  4050.  
  4051.    // IVTxtDialogs members
  4052.    STDMETHOD (AboutDlg)       (THIS_ HWND, PCSTR) PURE;
  4053.    STDMETHOD (LexiconDlg)     (THIS_ HWND, PCSTR) PURE;
  4054.    STDMETHOD (GeneralDlg)     (THIS_ HWND, PCSTR) PURE;
  4055.    STDMETHOD (TranslateDlg)   (THIS_ HWND, PCSTR) PURE;
  4056. };
  4057.  
  4058. typedef IVTxtDialogsA FAR * PIVTXTDIALOGSA;
  4059.  
  4060.  
  4061. #ifdef _S_UNICODE
  4062.  #define IVTxtDialogs       IVTxtDialogsW
  4063.  #define IID_IVTxtDialogs   IID_IVTxtDialogsW
  4064.  #define PIVTXTDIALOGS      PIVTXTDIALOGSW
  4065.  
  4066. #else
  4067.  #define IVTxtDialogs       IVTxtDialogsA
  4068.  #define IID_IVTxtDialogs   IID_IVTxtDialogsA
  4069.  #define PIVTXTDIALOGS      PIVTXTDIALOGSA
  4070.  
  4071. #endif // _S_UNICODE
  4072.  
  4073.  
  4074.  
  4075. /************************************************************************
  4076. class guids */
  4077.  
  4078. // {080EB9D0-E096-11cd-A166-00AA004CD65C}
  4079. // DEFINE_GUID(CLSID_VTxt, 0x80eb9d0, 0xe096, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
  4080. // {F1DC95A0-0BA7-11ce-A166-00AA004CD65C}
  4081. DEFINE_GUID(CLSID_VTxt, 
  4082. 0xf1dc95a0, 0xba7, 0x11ce, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
  4083.  
  4084.  
  4085.  
  4086. #endif    // _SPEECH_
  4087.