sapi.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:856k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /* interface __MIDL_itf_sapi_0262 */
  2. /* [local] */ 
  3. typedef /* [hidden] */ 
  4. enum SPEVENTLPARAMTYPE
  5.     { SPET_LPARAM_IS_UNDEFINED = 0,
  6. SPET_LPARAM_IS_TOKEN = SPET_LPARAM_IS_UNDEFINED + 1,
  7. SPET_LPARAM_IS_OBJECT = SPET_LPARAM_IS_TOKEN + 1,
  8. SPET_LPARAM_IS_POINTER = SPET_LPARAM_IS_OBJECT + 1,
  9. SPET_LPARAM_IS_STRING = SPET_LPARAM_IS_POINTER + 1
  10.     }  SPEVENTLPARAMTYPE;
  11. typedef /* [hidden] */ 
  12. enum SPEVENTENUM
  13.     { SPEI_UNDEFINED = 0,
  14. SPEI_START_INPUT_STREAM = 1,
  15. SPEI_END_INPUT_STREAM = 2,
  16. SPEI_VOICE_CHANGE = 3,
  17. SPEI_TTS_BOOKMARK = 4,
  18. SPEI_WORD_BOUNDARY = 5,
  19. SPEI_PHONEME = 6,
  20. SPEI_SENTENCE_BOUNDARY = 7,
  21. SPEI_VISEME = 8,
  22. SPEI_TTS_AUDIO_LEVEL = 9,
  23. SPEI_TTS_PRIVATE = 15,
  24. SPEI_MIN_TTS = 1,
  25. SPEI_MAX_TTS = 15,
  26. SPEI_END_SR_STREAM = 34,
  27. SPEI_SOUND_START = 35,
  28. SPEI_SOUND_END = 36,
  29. SPEI_PHRASE_START = 37,
  30. SPEI_RECOGNITION = 38,
  31. SPEI_HYPOTHESIS = 39,
  32. SPEI_SR_BOOKMARK = 40,
  33. SPEI_PROPERTY_NUM_CHANGE = 41,
  34. SPEI_PROPERTY_STRING_CHANGE = 42,
  35. SPEI_FALSE_RECOGNITION = 43,
  36. SPEI_INTERFERENCE = 44,
  37. SPEI_REQUEST_UI = 45,
  38. SPEI_RECO_STATE_CHANGE = 46,
  39. SPEI_ADAPTATION = 47,
  40. SPEI_START_SR_STREAM = 48,
  41. SPEI_RECO_OTHER_CONTEXT = 49,
  42. SPEI_SR_AUDIO_LEVEL = 50,
  43. SPEI_SR_PRIVATE = 52,
  44. SPEI_MIN_SR = 34,
  45. SPEI_MAX_SR = 52,
  46. SPEI_RESERVED1 = 30,
  47. SPEI_RESERVED2 = 33,
  48. SPEI_RESERVED3 = 63
  49.     }  SPEVENTENUM;
  50. #define SPFEI_FLAGCHECK ( (1ui64 << SPEI_RESERVED1) | (1ui64 << SPEI_RESERVED2) )
  51. #define SPFEI_ALL_TTS_EVENTS (0x000000000000FFFEui64 | SPFEI_FLAGCHECK)
  52. #define SPFEI_ALL_SR_EVENTS  (0x001FFFFC00000000ui64 | SPFEI_FLAGCHECK)
  53. #define SPFEI_ALL_EVENTS      0xEFFFFFFFFFFFFFFFui64
  54. #define SPFEI(SPEI_ord) ((1ui64 << SPEI_ord) | SPFEI_FLAGCHECK)
  55. #if 0
  56. typedef /* [hidden][restricted] */ struct SPEVENT
  57.     {
  58.     WORD eEventId;
  59.     WORD elParamType;
  60.     ULONG ulStreamNum;
  61.     ULONGLONG ullAudioStreamOffset;
  62.     WPARAM wParam;
  63.     LPARAM lParam;
  64.     }  SPEVENT;
  65. typedef /* [hidden][restricted] */ struct SPSERIALIZEDEVENT
  66.     {
  67.     WORD eEventId;
  68.     WORD elParamType;
  69.     ULONG ulStreamNum;
  70.     ULONGLONG ullAudioStreamOffset;
  71.     ULONG SerializedwParam;
  72.     LONG SerializedlParam;
  73.     }  SPSERIALIZEDEVENT;
  74. typedef /* [hidden][restricted] */ struct SPSERIALIZEDEVENT64
  75.     {
  76.     WORD eEventId;
  77.     WORD elParamType;
  78.     ULONG ulStreamNum;
  79.     ULONGLONG ullAudioStreamOffset;
  80.     ULONGLONG SerializedwParam;
  81.     LONGLONG SerializedlParam;
  82.     }  SPSERIALIZEDEVENT64;
  83. #else
  84. typedef struct SPEVENT
  85. {
  86.     SPEVENTENUM        eEventId : 16;
  87.     SPEVENTLPARAMTYPE  elParamType : 16;
  88.     ULONG       ulStreamNum;
  89.     ULONGLONG   ullAudioStreamOffset;
  90.     WPARAM      wParam;
  91.     LPARAM      lParam;
  92. } SPEVENT;
  93. typedef struct SPSERIALIZEDEVENT
  94. {
  95.     SPEVENTENUM        eEventId : 16;
  96.     SPEVENTLPARAMTYPE  elParamType : 16;
  97.     ULONG       ulStreamNum;
  98.     ULONGLONG   ullAudioStreamOffset;
  99.     ULONG       SerializedwParam;
  100.     LONG        SerializedlParam;
  101. } SPSERIALIZEDEVENT;
  102. typedef struct SPSERIALIZEDEVENT64
  103. {
  104.     SPEVENTENUM        eEventId : 16;
  105.     SPEVENTLPARAMTYPE  elParamType : 16;
  106.     ULONG       ulStreamNum;
  107.     ULONGLONG   ullAudioStreamOffset;
  108.     ULONGLONG   SerializedwParam;
  109.     LONGLONG    SerializedlParam;
  110. } SPSERIALIZEDEVENT64;
  111. #endif
  112. typedef /* [hidden] */ 
  113. enum SPINTERFERENCE
  114.     { SPINTERFERENCE_NONE = 0,
  115. SPINTERFERENCE_NOISE = SPINTERFERENCE_NONE + 1,
  116. SPINTERFERENCE_NOSIGNAL = SPINTERFERENCE_NOISE + 1,
  117. SPINTERFERENCE_TOOLOUD = SPINTERFERENCE_NOSIGNAL + 1,
  118. SPINTERFERENCE_TOOQUIET = SPINTERFERENCE_TOOLOUD + 1,
  119. SPINTERFERENCE_TOOFAST = SPINTERFERENCE_TOOQUIET + 1,
  120. SPINTERFERENCE_TOOSLOW = SPINTERFERENCE_TOOFAST + 1
  121.     }  SPINTERFERENCE;
  122. typedef /* [hidden] */ 
  123. enum SPENDSRSTREAMFLAGS
  124.     { SPESF_NONE = 0,
  125. SPESF_STREAM_RELEASED = 1 << 0
  126.     }  SPENDSRSTREAMFLAGS;
  127. typedef /* [hidden] */ 
  128. enum SPVFEATURE
  129.     { SPVFEATURE_STRESSED = 1L << 0,
  130. SPVFEATURE_EMPHASIS = 1L << 1
  131.     }  SPVFEATURE;
  132. typedef /* [hidden] */ 
  133. enum SPVISEMES
  134.     { SP_VISEME_0 = 0,
  135. SP_VISEME_1 = SP_VISEME_0 + 1,
  136. SP_VISEME_2 = SP_VISEME_1 + 1,
  137. SP_VISEME_3 = SP_VISEME_2 + 1,
  138. SP_VISEME_4 = SP_VISEME_3 + 1,
  139. SP_VISEME_5 = SP_VISEME_4 + 1,
  140. SP_VISEME_6 = SP_VISEME_5 + 1,
  141. SP_VISEME_7 = SP_VISEME_6 + 1,
  142. SP_VISEME_8 = SP_VISEME_7 + 1,
  143. SP_VISEME_9 = SP_VISEME_8 + 1,
  144. SP_VISEME_10 = SP_VISEME_9 + 1,
  145. SP_VISEME_11 = SP_VISEME_10 + 1,
  146. SP_VISEME_12 = SP_VISEME_11 + 1,
  147. SP_VISEME_13 = SP_VISEME_12 + 1,
  148. SP_VISEME_14 = SP_VISEME_13 + 1,
  149. SP_VISEME_15 = SP_VISEME_14 + 1,
  150. SP_VISEME_16 = SP_VISEME_15 + 1,
  151. SP_VISEME_17 = SP_VISEME_16 + 1,
  152. SP_VISEME_18 = SP_VISEME_17 + 1,
  153. SP_VISEME_19 = SP_VISEME_18 + 1,
  154. SP_VISEME_20 = SP_VISEME_19 + 1,
  155. SP_VISEME_21 = SP_VISEME_20 + 1
  156.     }  SPVISEMES;
  157. typedef /* [hidden][restricted] */ struct SPEVENTSOURCEINFO
  158.     {
  159.     ULONGLONG ullEventInterest;
  160.     ULONGLONG ullQueuedInterest;
  161.     ULONG ulCount;
  162.     }  SPEVENTSOURCEINFO;
  163. extern RPC_IF_HANDLE __MIDL_itf_sapi_0262_v0_0_c_ifspec;
  164. extern RPC_IF_HANDLE __MIDL_itf_sapi_0262_v0_0_s_ifspec;
  165. #ifndef __ISpEventSource_INTERFACE_DEFINED__
  166. #define __ISpEventSource_INTERFACE_DEFINED__
  167. /* interface ISpEventSource */
  168. /* [restricted][local][unique][helpstring][uuid][object] */ 
  169. EXTERN_C const IID IID_ISpEventSource;
  170. #if defined(__cplusplus) && !defined(CINTERFACE)
  171.     
  172.     MIDL_INTERFACE("BE7A9CCE-5F9E-11D2-960F-00C04F8EE628")
  173.     ISpEventSource : public ISpNotifySource
  174.     {
  175.     public:
  176.         virtual HRESULT STDMETHODCALLTYPE SetInterest( 
  177.             /* [in] */ ULONGLONG ullEventInterest,
  178.             /* [in] */ ULONGLONG ullQueuedInterest) = 0;
  179.         
  180.         virtual HRESULT STDMETHODCALLTYPE GetEvents( 
  181.             /* [in] */ ULONG ulCount,
  182.             /* [size_is][out] */ SPEVENT *pEventArray,
  183.             /* [out] */ ULONG *pulFetched) = 0;
  184.         
  185.         virtual HRESULT STDMETHODCALLTYPE GetInfo( 
  186.             /* [out] */ SPEVENTSOURCEINFO *pInfo) = 0;
  187.         
  188.     };
  189.     
  190. #else  /* C style interface */
  191.     typedef struct ISpEventSourceVtbl
  192.     {
  193.         BEGIN_INTERFACE
  194.         
  195.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  196.             ISpEventSource * This,
  197.             /* [in] */ REFIID riid,
  198.             /* [iid_is][out] */ void **ppvObject);
  199.         
  200.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  201.             ISpEventSource * This);
  202.         
  203.         ULONG ( STDMETHODCALLTYPE *Release )( 
  204.             ISpEventSource * This);
  205.         
  206.         HRESULT ( STDMETHODCALLTYPE *SetNotifySink )( 
  207.             ISpEventSource * This,
  208.             /* [in] */ ISpNotifySink *pNotifySink);
  209.         
  210.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *SetNotifyWindowMessage )( 
  211.             ISpEventSource * This,
  212.             /* [in] */ HWND hWnd,
  213.             /* [in] */ UINT Msg,
  214.             /* [in] */ WPARAM wParam,
  215.             /* [in] */ LPARAM lParam);
  216.         
  217.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *SetNotifyCallbackFunction )( 
  218.             ISpEventSource * This,
  219.             /* [in] */ SPNOTIFYCALLBACK *pfnCallback,
  220.             /* [in] */ WPARAM wParam,
  221.             /* [in] */ LPARAM lParam);
  222.         
  223.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *SetNotifyCallbackInterface )( 
  224.             ISpEventSource * This,
  225.             /* [in] */ ISpNotifyCallback *pSpCallback,
  226.             /* [in] */ WPARAM wParam,
  227.             /* [in] */ LPARAM lParam);
  228.         
  229.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *SetNotifyWin32Event )( 
  230.             ISpEventSource * This);
  231.         
  232.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *WaitForNotifyEvent )( 
  233.             ISpEventSource * This,
  234.             /* [in] */ DWORD dwMilliseconds);
  235.         
  236.         /* [local] */ HANDLE ( STDMETHODCALLTYPE *GetNotifyEventHandle )( 
  237.             ISpEventSource * This);
  238.         
  239.         HRESULT ( STDMETHODCALLTYPE *SetInterest )( 
  240.             ISpEventSource * This,
  241.             /* [in] */ ULONGLONG ullEventInterest,
  242.             /* [in] */ ULONGLONG ullQueuedInterest);
  243.         
  244.         HRESULT ( STDMETHODCALLTYPE *GetEvents )( 
  245.             ISpEventSource * This,
  246.             /* [in] */ ULONG ulCount,
  247.             /* [size_is][out] */ SPEVENT *pEventArray,
  248.             /* [out] */ ULONG *pulFetched);
  249.         
  250.         HRESULT ( STDMETHODCALLTYPE *GetInfo )( 
  251.             ISpEventSource * This,
  252.             /* [out] */ SPEVENTSOURCEINFO *pInfo);
  253.         
  254.         END_INTERFACE
  255.     } ISpEventSourceVtbl;
  256.     interface ISpEventSource
  257.     {
  258.         CONST_VTBL struct ISpEventSourceVtbl *lpVtbl;
  259.     };
  260.     
  261. #ifdef COBJMACROS
  262. #define ISpEventSource_QueryInterface(This,riid,ppvObject)
  263.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  264. #define ISpEventSource_AddRef(This)
  265.     (This)->lpVtbl -> AddRef(This)
  266. #define ISpEventSource_Release(This)
  267.     (This)->lpVtbl -> Release(This)
  268. #define ISpEventSource_SetNotifySink(This,pNotifySink)
  269.     (This)->lpVtbl -> SetNotifySink(This,pNotifySink)
  270. #define ISpEventSource_SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam)
  271.     (This)->lpVtbl -> SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam)
  272. #define ISpEventSource_SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam)
  273.     (This)->lpVtbl -> SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam)
  274. #define ISpEventSource_SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam)
  275.     (This)->lpVtbl -> SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam)
  276. #define ISpEventSource_SetNotifyWin32Event(This)
  277.     (This)->lpVtbl -> SetNotifyWin32Event(This)
  278. #define ISpEventSource_WaitForNotifyEvent(This,dwMilliseconds)
  279.     (This)->lpVtbl -> WaitForNotifyEvent(This,dwMilliseconds)
  280. #define ISpEventSource_GetNotifyEventHandle(This)
  281.     (This)->lpVtbl -> GetNotifyEventHandle(This)
  282. #define ISpEventSource_SetInterest(This,ullEventInterest,ullQueuedInterest)
  283.     (This)->lpVtbl -> SetInterest(This,ullEventInterest,ullQueuedInterest)
  284. #define ISpEventSource_GetEvents(This,ulCount,pEventArray,pulFetched)
  285.     (This)->lpVtbl -> GetEvents(This,ulCount,pEventArray,pulFetched)
  286. #define ISpEventSource_GetInfo(This,pInfo)
  287.     (This)->lpVtbl -> GetInfo(This,pInfo)
  288. #endif /* COBJMACROS */
  289. #endif  /* C style interface */
  290. HRESULT STDMETHODCALLTYPE ISpEventSource_SetInterest_Proxy( 
  291.     ISpEventSource * This,
  292.     /* [in] */ ULONGLONG ullEventInterest,
  293.     /* [in] */ ULONGLONG ullQueuedInterest);
  294. void __RPC_STUB ISpEventSource_SetInterest_Stub(
  295.     IRpcStubBuffer *This,
  296.     IRpcChannelBuffer *_pRpcChannelBuffer,
  297.     PRPC_MESSAGE _pRpcMessage,
  298.     DWORD *_pdwStubPhase);
  299. HRESULT STDMETHODCALLTYPE ISpEventSource_GetEvents_Proxy( 
  300.     ISpEventSource * This,
  301.     /* [in] */ ULONG ulCount,
  302.     /* [size_is][out] */ SPEVENT *pEventArray,
  303.     /* [out] */ ULONG *pulFetched);
  304. void __RPC_STUB ISpEventSource_GetEvents_Stub(
  305.     IRpcStubBuffer *This,
  306.     IRpcChannelBuffer *_pRpcChannelBuffer,
  307.     PRPC_MESSAGE _pRpcMessage,
  308.     DWORD *_pdwStubPhase);
  309. HRESULT STDMETHODCALLTYPE ISpEventSource_GetInfo_Proxy( 
  310.     ISpEventSource * This,
  311.     /* [out] */ SPEVENTSOURCEINFO *pInfo);
  312. void __RPC_STUB ISpEventSource_GetInfo_Stub(
  313.     IRpcStubBuffer *This,
  314.     IRpcChannelBuffer *_pRpcChannelBuffer,
  315.     PRPC_MESSAGE _pRpcMessage,
  316.     DWORD *_pdwStubPhase);
  317. #endif  /* __ISpEventSource_INTERFACE_DEFINED__ */
  318. #ifndef __ISpEventSink_INTERFACE_DEFINED__
  319. #define __ISpEventSink_INTERFACE_DEFINED__
  320. /* interface ISpEventSink */
  321. /* [restricted][local][unique][helpstring][uuid][object] */ 
  322. EXTERN_C const IID IID_ISpEventSink;
  323. #if defined(__cplusplus) && !defined(CINTERFACE)
  324.     
  325.     MIDL_INTERFACE("BE7A9CC9-5F9E-11D2-960F-00C04F8EE628")
  326.     ISpEventSink : public IUnknown
  327.     {
  328.     public:
  329.         virtual HRESULT STDMETHODCALLTYPE AddEvents( 
  330.             /* [in] */ const SPEVENT *pEventArray,
  331.             /* [in] */ ULONG ulCount) = 0;
  332.         
  333.         virtual HRESULT STDMETHODCALLTYPE GetEventInterest( 
  334.             /* [out] */ ULONGLONG *pullEventInterest) = 0;
  335.         
  336.     };
  337.     
  338. #else  /* C style interface */
  339.     typedef struct ISpEventSinkVtbl
  340.     {
  341.         BEGIN_INTERFACE
  342.         
  343.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  344.             ISpEventSink * This,
  345.             /* [in] */ REFIID riid,
  346.             /* [iid_is][out] */ void **ppvObject);
  347.         
  348.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  349.             ISpEventSink * This);
  350.         
  351.         ULONG ( STDMETHODCALLTYPE *Release )( 
  352.             ISpEventSink * This);
  353.         
  354.         HRESULT ( STDMETHODCALLTYPE *AddEvents )( 
  355.             ISpEventSink * This,
  356.             /* [in] */ const SPEVENT *pEventArray,
  357.             /* [in] */ ULONG ulCount);
  358.         
  359.         HRESULT ( STDMETHODCALLTYPE *GetEventInterest )( 
  360.             ISpEventSink * This,
  361.             /* [out] */ ULONGLONG *pullEventInterest);
  362.         
  363.         END_INTERFACE
  364.     } ISpEventSinkVtbl;
  365.     interface ISpEventSink
  366.     {
  367.         CONST_VTBL struct ISpEventSinkVtbl *lpVtbl;
  368.     };
  369.     
  370. #ifdef COBJMACROS
  371. #define ISpEventSink_QueryInterface(This,riid,ppvObject)
  372.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  373. #define ISpEventSink_AddRef(This)
  374.     (This)->lpVtbl -> AddRef(This)
  375. #define ISpEventSink_Release(This)
  376.     (This)->lpVtbl -> Release(This)
  377. #define ISpEventSink_AddEvents(This,pEventArray,ulCount)
  378.     (This)->lpVtbl -> AddEvents(This,pEventArray,ulCount)
  379. #define ISpEventSink_GetEventInterest(This,pullEventInterest)
  380.     (This)->lpVtbl -> GetEventInterest(This,pullEventInterest)
  381. #endif /* COBJMACROS */
  382. #endif  /* C style interface */
  383. HRESULT STDMETHODCALLTYPE ISpEventSink_AddEvents_Proxy( 
  384.     ISpEventSink * This,
  385.     /* [in] */ const SPEVENT *pEventArray,
  386.     /* [in] */ ULONG ulCount);
  387. void __RPC_STUB ISpEventSink_AddEvents_Stub(
  388.     IRpcStubBuffer *This,
  389.     IRpcChannelBuffer *_pRpcChannelBuffer,
  390.     PRPC_MESSAGE _pRpcMessage,
  391.     DWORD *_pdwStubPhase);
  392. HRESULT STDMETHODCALLTYPE ISpEventSink_GetEventInterest_Proxy( 
  393.     ISpEventSink * This,
  394.     /* [out] */ ULONGLONG *pullEventInterest);
  395. void __RPC_STUB ISpEventSink_GetEventInterest_Stub(
  396.     IRpcStubBuffer *This,
  397.     IRpcChannelBuffer *_pRpcChannelBuffer,
  398.     PRPC_MESSAGE _pRpcMessage,
  399.     DWORD *_pdwStubPhase);
  400. #endif  /* __ISpEventSink_INTERFACE_DEFINED__ */
  401. #ifndef __ISpStreamFormat_INTERFACE_DEFINED__
  402. #define __ISpStreamFormat_INTERFACE_DEFINED__
  403. /* interface ISpStreamFormat */
  404. /* [restricted][unique][helpstring][uuid][object] */ 
  405. EXTERN_C const IID IID_ISpStreamFormat;
  406. #if defined(__cplusplus) && !defined(CINTERFACE)
  407.     
  408.     MIDL_INTERFACE("BED530BE-2606-4F4D-A1C0-54C5CDA5566F")
  409.     ISpStreamFormat : public IStream
  410.     {
  411.     public:
  412.         virtual HRESULT STDMETHODCALLTYPE GetFormat( 
  413.             GUID *pguidFormatId,
  414.             WAVEFORMATEX **ppCoMemWaveFormatEx) = 0;
  415.         
  416.     };
  417.     
  418. #else  /* C style interface */
  419.     typedef struct ISpStreamFormatVtbl
  420.     {
  421.         BEGIN_INTERFACE
  422.         
  423.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  424.             ISpStreamFormat * This,
  425.             /* [in] */ REFIID riid,
  426.             /* [iid_is][out] */ void **ppvObject);
  427.         
  428.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  429.             ISpStreamFormat * This);
  430.         
  431.         ULONG ( STDMETHODCALLTYPE *Release )( 
  432.             ISpStreamFormat * This);
  433.         
  434.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Read )( 
  435.             ISpStreamFormat * This,
  436.             /* [length_is][size_is][out] */ void *pv,
  437.             /* [in] */ ULONG cb,
  438.             /* [out] */ ULONG *pcbRead);
  439.         
  440.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Write )( 
  441.             ISpStreamFormat * This,
  442.             /* [size_is][in] */ const void *pv,
  443.             /* [in] */ ULONG cb,
  444.             /* [out] */ ULONG *pcbWritten);
  445.         
  446.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Seek )( 
  447.             ISpStreamFormat * This,
  448.             /* [in] */ LARGE_INTEGER dlibMove,
  449.             /* [in] */ DWORD dwOrigin,
  450.             /* [out] */ ULARGE_INTEGER *plibNewPosition);
  451.         
  452.         HRESULT ( STDMETHODCALLTYPE *SetSize )( 
  453.             ISpStreamFormat * This,
  454.             /* [in] */ ULARGE_INTEGER libNewSize);
  455.         
  456.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *CopyTo )( 
  457.             ISpStreamFormat * This,
  458.             /* [unique][in] */ IStream *pstm,
  459.             /* [in] */ ULARGE_INTEGER cb,
  460.             /* [out] */ ULARGE_INTEGER *pcbRead,
  461.             /* [out] */ ULARGE_INTEGER *pcbWritten);
  462.         
  463.         HRESULT ( STDMETHODCALLTYPE *Commit )( 
  464.             ISpStreamFormat * This,
  465.             /* [in] */ DWORD grfCommitFlags);
  466.         
  467.         HRESULT ( STDMETHODCALLTYPE *Revert )( 
  468.             ISpStreamFormat * This);
  469.         
  470.         HRESULT ( STDMETHODCALLTYPE *LockRegion )( 
  471.             ISpStreamFormat * This,
  472.             /* [in] */ ULARGE_INTEGER libOffset,
  473.             /* [in] */ ULARGE_INTEGER cb,
  474.             /* [in] */ DWORD dwLockType);
  475.         
  476.         HRESULT ( STDMETHODCALLTYPE *UnlockRegion )( 
  477.             ISpStreamFormat * This,
  478.             /* [in] */ ULARGE_INTEGER libOffset,
  479.             /* [in] */ ULARGE_INTEGER cb,
  480.             /* [in] */ DWORD dwLockType);
  481.         
  482.         HRESULT ( STDMETHODCALLTYPE *Stat )( 
  483.             ISpStreamFormat * This,
  484.             /* [out] */ STATSTG *pstatstg,
  485.             /* [in] */ DWORD grfStatFlag);
  486.         
  487.         HRESULT ( STDMETHODCALLTYPE *Clone )( 
  488.             ISpStreamFormat * This,
  489.             /* [out] */ IStream **ppstm);
  490.         
  491.         HRESULT ( STDMETHODCALLTYPE *GetFormat )( 
  492.             ISpStreamFormat * This,
  493.             GUID *pguidFormatId,
  494.             WAVEFORMATEX **ppCoMemWaveFormatEx);
  495.         
  496.         END_INTERFACE
  497.     } ISpStreamFormatVtbl;
  498.     interface ISpStreamFormat
  499.     {
  500.         CONST_VTBL struct ISpStreamFormatVtbl *lpVtbl;
  501.     };
  502.     
  503. #ifdef COBJMACROS
  504. #define ISpStreamFormat_QueryInterface(This,riid,ppvObject)
  505.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  506. #define ISpStreamFormat_AddRef(This)
  507.     (This)->lpVtbl -> AddRef(This)
  508. #define ISpStreamFormat_Release(This)
  509.     (This)->lpVtbl -> Release(This)
  510. #define ISpStreamFormat_Read(This,pv,cb,pcbRead)
  511.     (This)->lpVtbl -> Read(This,pv,cb,pcbRead)
  512. #define ISpStreamFormat_Write(This,pv,cb,pcbWritten)
  513.     (This)->lpVtbl -> Write(This,pv,cb,pcbWritten)
  514. #define ISpStreamFormat_Seek(This,dlibMove,dwOrigin,plibNewPosition)
  515.     (This)->lpVtbl -> Seek(This,dlibMove,dwOrigin,plibNewPosition)
  516. #define ISpStreamFormat_SetSize(This,libNewSize)
  517.     (This)->lpVtbl -> SetSize(This,libNewSize)
  518. #define ISpStreamFormat_CopyTo(This,pstm,cb,pcbRead,pcbWritten)
  519.     (This)->lpVtbl -> CopyTo(This,pstm,cb,pcbRead,pcbWritten)
  520. #define ISpStreamFormat_Commit(This,grfCommitFlags)
  521.     (This)->lpVtbl -> Commit(This,grfCommitFlags)
  522. #define ISpStreamFormat_Revert(This)
  523.     (This)->lpVtbl -> Revert(This)
  524. #define ISpStreamFormat_LockRegion(This,libOffset,cb,dwLockType)
  525.     (This)->lpVtbl -> LockRegion(This,libOffset,cb,dwLockType)
  526. #define ISpStreamFormat_UnlockRegion(This,libOffset,cb,dwLockType)
  527.     (This)->lpVtbl -> UnlockRegion(This,libOffset,cb,dwLockType)
  528. #define ISpStreamFormat_Stat(This,pstatstg,grfStatFlag)
  529.     (This)->lpVtbl -> Stat(This,pstatstg,grfStatFlag)
  530. #define ISpStreamFormat_Clone(This,ppstm)
  531.     (This)->lpVtbl -> Clone(This,ppstm)
  532. #define ISpStreamFormat_GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
  533.     (This)->lpVtbl -> GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
  534. #endif /* COBJMACROS */
  535. #endif  /* C style interface */
  536. HRESULT STDMETHODCALLTYPE ISpStreamFormat_GetFormat_Proxy( 
  537.     ISpStreamFormat * This,
  538.     GUID *pguidFormatId,
  539.     WAVEFORMATEX **ppCoMemWaveFormatEx);
  540. void __RPC_STUB ISpStreamFormat_GetFormat_Stub(
  541.     IRpcStubBuffer *This,
  542.     IRpcChannelBuffer *_pRpcChannelBuffer,
  543.     PRPC_MESSAGE _pRpcMessage,
  544.     DWORD *_pdwStubPhase);
  545. #endif  /* __ISpStreamFormat_INTERFACE_DEFINED__ */
  546. /* interface __MIDL_itf_sapi_0265 */
  547. /* [local] */ 
  548. typedef /* [hidden] */ 
  549. enum SPFILEMODE
  550.     { SPFM_OPEN_READONLY = 0,
  551. SPFM_OPEN_READWRITE = SPFM_OPEN_READONLY + 1,
  552. SPFM_CREATE = SPFM_OPEN_READWRITE + 1,
  553. SPFM_CREATE_ALWAYS = SPFM_CREATE + 1,
  554. SPFM_NUM_MODES = SPFM_CREATE_ALWAYS + 1
  555.     }  SPFILEMODE;
  556. extern RPC_IF_HANDLE __MIDL_itf_sapi_0265_v0_0_c_ifspec;
  557. extern RPC_IF_HANDLE __MIDL_itf_sapi_0265_v0_0_s_ifspec;
  558. #ifndef __ISpStream_INTERFACE_DEFINED__
  559. #define __ISpStream_INTERFACE_DEFINED__
  560. /* interface ISpStream */
  561. /* [restricted][unique][helpstring][uuid][object] */ 
  562. EXTERN_C const IID IID_ISpStream;
  563. #if defined(__cplusplus) && !defined(CINTERFACE)
  564.     
  565.     MIDL_INTERFACE("12E3CCA9-7518-44C5-A5E7-BA5A79CB929E")
  566.     ISpStream : public ISpStreamFormat
  567.     {
  568.     public:
  569.         virtual HRESULT STDMETHODCALLTYPE SetBaseStream( 
  570.             IStream *pStream,
  571.             REFGUID rguidFormat,
  572.             const WAVEFORMATEX *pWaveFormatEx) = 0;
  573.         
  574.         virtual HRESULT STDMETHODCALLTYPE GetBaseStream( 
  575.             IStream **ppStream) = 0;
  576.         
  577.         virtual HRESULT STDMETHODCALLTYPE BindToFile( 
  578.             const WCHAR *pszFileName,
  579.             SPFILEMODE eMode,
  580.             const GUID *pFormatId,
  581.             const WAVEFORMATEX *pWaveFormatEx,
  582.             ULONGLONG ullEventInterest) = 0;
  583.         
  584.         virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
  585.         
  586.     };
  587.     
  588. #else  /* C style interface */
  589.     typedef struct ISpStreamVtbl
  590.     {
  591.         BEGIN_INTERFACE
  592.         
  593.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  594.             ISpStream * This,
  595.             /* [in] */ REFIID riid,
  596.             /* [iid_is][out] */ void **ppvObject);
  597.         
  598.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  599.             ISpStream * This);
  600.         
  601.         ULONG ( STDMETHODCALLTYPE *Release )( 
  602.             ISpStream * This);
  603.         
  604.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Read )( 
  605.             ISpStream * This,
  606.             /* [length_is][size_is][out] */ void *pv,
  607.             /* [in] */ ULONG cb,
  608.             /* [out] */ ULONG *pcbRead);
  609.         
  610.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Write )( 
  611.             ISpStream * This,
  612.             /* [size_is][in] */ const void *pv,
  613.             /* [in] */ ULONG cb,
  614.             /* [out] */ ULONG *pcbWritten);
  615.         
  616.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Seek )( 
  617.             ISpStream * This,
  618.             /* [in] */ LARGE_INTEGER dlibMove,
  619.             /* [in] */ DWORD dwOrigin,
  620.             /* [out] */ ULARGE_INTEGER *plibNewPosition);
  621.         
  622.         HRESULT ( STDMETHODCALLTYPE *SetSize )( 
  623.             ISpStream * This,
  624.             /* [in] */ ULARGE_INTEGER libNewSize);
  625.         
  626.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *CopyTo )( 
  627.             ISpStream * This,
  628.             /* [unique][in] */ IStream *pstm,
  629.             /* [in] */ ULARGE_INTEGER cb,
  630.             /* [out] */ ULARGE_INTEGER *pcbRead,
  631.             /* [out] */ ULARGE_INTEGER *pcbWritten);
  632.         
  633.         HRESULT ( STDMETHODCALLTYPE *Commit )( 
  634.             ISpStream * This,
  635.             /* [in] */ DWORD grfCommitFlags);
  636.         
  637.         HRESULT ( STDMETHODCALLTYPE *Revert )( 
  638.             ISpStream * This);
  639.         
  640.         HRESULT ( STDMETHODCALLTYPE *LockRegion )( 
  641.             ISpStream * This,
  642.             /* [in] */ ULARGE_INTEGER libOffset,
  643.             /* [in] */ ULARGE_INTEGER cb,
  644.             /* [in] */ DWORD dwLockType);
  645.         
  646.         HRESULT ( STDMETHODCALLTYPE *UnlockRegion )( 
  647.             ISpStream * This,
  648.             /* [in] */ ULARGE_INTEGER libOffset,
  649.             /* [in] */ ULARGE_INTEGER cb,
  650.             /* [in] */ DWORD dwLockType);
  651.         
  652.         HRESULT ( STDMETHODCALLTYPE *Stat )( 
  653.             ISpStream * This,
  654.             /* [out] */ STATSTG *pstatstg,
  655.             /* [in] */ DWORD grfStatFlag);
  656.         
  657.         HRESULT ( STDMETHODCALLTYPE *Clone )( 
  658.             ISpStream * This,
  659.             /* [out] */ IStream **ppstm);
  660.         
  661.         HRESULT ( STDMETHODCALLTYPE *GetFormat )( 
  662.             ISpStream * This,
  663.             GUID *pguidFormatId,
  664.             WAVEFORMATEX **ppCoMemWaveFormatEx);
  665.         
  666.         HRESULT ( STDMETHODCALLTYPE *SetBaseStream )( 
  667.             ISpStream * This,
  668.             IStream *pStream,
  669.             REFGUID rguidFormat,
  670.             const WAVEFORMATEX *pWaveFormatEx);
  671.         
  672.         HRESULT ( STDMETHODCALLTYPE *GetBaseStream )( 
  673.             ISpStream * This,
  674.             IStream **ppStream);
  675.         
  676.         HRESULT ( STDMETHODCALLTYPE *BindToFile )( 
  677.             ISpStream * This,
  678.             const WCHAR *pszFileName,
  679.             SPFILEMODE eMode,
  680.             const GUID *pFormatId,
  681.             const WAVEFORMATEX *pWaveFormatEx,
  682.             ULONGLONG ullEventInterest);
  683.         
  684.         HRESULT ( STDMETHODCALLTYPE *Close )( 
  685.             ISpStream * This);
  686.         
  687.         END_INTERFACE
  688.     } ISpStreamVtbl;
  689.     interface ISpStream
  690.     {
  691.         CONST_VTBL struct ISpStreamVtbl *lpVtbl;
  692.     };
  693.     
  694. #ifdef COBJMACROS
  695. #define ISpStream_QueryInterface(This,riid,ppvObject)
  696.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  697. #define ISpStream_AddRef(This)
  698.     (This)->lpVtbl -> AddRef(This)
  699. #define ISpStream_Release(This)
  700.     (This)->lpVtbl -> Release(This)
  701. #define ISpStream_Read(This,pv,cb,pcbRead)
  702.     (This)->lpVtbl -> Read(This,pv,cb,pcbRead)
  703. #define ISpStream_Write(This,pv,cb,pcbWritten)
  704.     (This)->lpVtbl -> Write(This,pv,cb,pcbWritten)
  705. #define ISpStream_Seek(This,dlibMove,dwOrigin,plibNewPosition)
  706.     (This)->lpVtbl -> Seek(This,dlibMove,dwOrigin,plibNewPosition)
  707. #define ISpStream_SetSize(This,libNewSize)
  708.     (This)->lpVtbl -> SetSize(This,libNewSize)
  709. #define ISpStream_CopyTo(This,pstm,cb,pcbRead,pcbWritten)
  710.     (This)->lpVtbl -> CopyTo(This,pstm,cb,pcbRead,pcbWritten)
  711. #define ISpStream_Commit(This,grfCommitFlags)
  712.     (This)->lpVtbl -> Commit(This,grfCommitFlags)
  713. #define ISpStream_Revert(This)
  714.     (This)->lpVtbl -> Revert(This)
  715. #define ISpStream_LockRegion(This,libOffset,cb,dwLockType)
  716.     (This)->lpVtbl -> LockRegion(This,libOffset,cb,dwLockType)
  717. #define ISpStream_UnlockRegion(This,libOffset,cb,dwLockType)
  718.     (This)->lpVtbl -> UnlockRegion(This,libOffset,cb,dwLockType)
  719. #define ISpStream_Stat(This,pstatstg,grfStatFlag)
  720.     (This)->lpVtbl -> Stat(This,pstatstg,grfStatFlag)
  721. #define ISpStream_Clone(This,ppstm)
  722.     (This)->lpVtbl -> Clone(This,ppstm)
  723. #define ISpStream_GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
  724.     (This)->lpVtbl -> GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
  725. #define ISpStream_SetBaseStream(This,pStream,rguidFormat,pWaveFormatEx)
  726.     (This)->lpVtbl -> SetBaseStream(This,pStream,rguidFormat,pWaveFormatEx)
  727. #define ISpStream_GetBaseStream(This,ppStream)
  728.     (This)->lpVtbl -> GetBaseStream(This,ppStream)
  729. #define ISpStream_BindToFile(This,pszFileName,eMode,pFormatId,pWaveFormatEx,ullEventInterest)
  730.     (This)->lpVtbl -> BindToFile(This,pszFileName,eMode,pFormatId,pWaveFormatEx,ullEventInterest)
  731. #define ISpStream_Close(This)
  732.     (This)->lpVtbl -> Close(This)
  733. #endif /* COBJMACROS */
  734. #endif  /* C style interface */
  735. HRESULT STDMETHODCALLTYPE ISpStream_SetBaseStream_Proxy( 
  736.     ISpStream * This,
  737.     IStream *pStream,
  738.     REFGUID rguidFormat,
  739.     const WAVEFORMATEX *pWaveFormatEx);
  740. void __RPC_STUB ISpStream_SetBaseStream_Stub(
  741.     IRpcStubBuffer *This,
  742.     IRpcChannelBuffer *_pRpcChannelBuffer,
  743.     PRPC_MESSAGE _pRpcMessage,
  744.     DWORD *_pdwStubPhase);
  745. HRESULT STDMETHODCALLTYPE ISpStream_GetBaseStream_Proxy( 
  746.     ISpStream * This,
  747.     IStream **ppStream);
  748. void __RPC_STUB ISpStream_GetBaseStream_Stub(
  749.     IRpcStubBuffer *This,
  750.     IRpcChannelBuffer *_pRpcChannelBuffer,
  751.     PRPC_MESSAGE _pRpcMessage,
  752.     DWORD *_pdwStubPhase);
  753. HRESULT STDMETHODCALLTYPE ISpStream_BindToFile_Proxy( 
  754.     ISpStream * This,
  755.     const WCHAR *pszFileName,
  756.     SPFILEMODE eMode,
  757.     const GUID *pFormatId,
  758.     const WAVEFORMATEX *pWaveFormatEx,
  759.     ULONGLONG ullEventInterest);
  760. void __RPC_STUB ISpStream_BindToFile_Stub(
  761.     IRpcStubBuffer *This,
  762.     IRpcChannelBuffer *_pRpcChannelBuffer,
  763.     PRPC_MESSAGE _pRpcMessage,
  764.     DWORD *_pdwStubPhase);
  765. HRESULT STDMETHODCALLTYPE ISpStream_Close_Proxy( 
  766.     ISpStream * This);
  767. void __RPC_STUB ISpStream_Close_Stub(
  768.     IRpcStubBuffer *This,
  769.     IRpcChannelBuffer *_pRpcChannelBuffer,
  770.     PRPC_MESSAGE _pRpcMessage,
  771.     DWORD *_pdwStubPhase);
  772. #endif  /* __ISpStream_INTERFACE_DEFINED__ */
  773. #ifndef __ISpStreamFormatConverter_INTERFACE_DEFINED__
  774. #define __ISpStreamFormatConverter_INTERFACE_DEFINED__
  775. /* interface ISpStreamFormatConverter */
  776. /* [restricted][unique][helpstring][uuid][object] */ 
  777. EXTERN_C const IID IID_ISpStreamFormatConverter;
  778. #if defined(__cplusplus) && !defined(CINTERFACE)
  779.     
  780.     MIDL_INTERFACE("678A932C-EA71-4446-9B41-78FDA6280A29")
  781.     ISpStreamFormatConverter : public ISpStreamFormat
  782.     {
  783.     public:
  784.         virtual HRESULT STDMETHODCALLTYPE SetBaseStream( 
  785.             /* [in] */ ISpStreamFormat *pStream,
  786.             /* [in] */ BOOL fSetFormatToBaseStreamFormat,
  787.             /* [in] */ BOOL fWriteToBaseStream) = 0;
  788.         
  789.         virtual HRESULT STDMETHODCALLTYPE GetBaseStream( 
  790.             /* [out] */ ISpStreamFormat **ppStream) = 0;
  791.         
  792.         virtual HRESULT STDMETHODCALLTYPE SetFormat( 
  793.             /* [in] */ REFGUID rguidFormatIdOfConvertedStream,
  794.             /* [in] */ const WAVEFORMATEX *pWaveFormatExOfConvertedStream) = 0;
  795.         
  796.         virtual HRESULT STDMETHODCALLTYPE ResetSeekPosition( void) = 0;
  797.         
  798.         virtual HRESULT STDMETHODCALLTYPE ScaleConvertedToBaseOffset( 
  799.             /* [in] */ ULONGLONG ullOffsetConvertedStream,
  800.             /* [out] */ ULONGLONG *pullOffsetBaseStream) = 0;
  801.         
  802.         virtual HRESULT STDMETHODCALLTYPE ScaleBaseToConvertedOffset( 
  803.             /* [in] */ ULONGLONG ullOffsetBaseStream,
  804.             /* [out] */ ULONGLONG *pullOffsetConvertedStream) = 0;
  805.         
  806.     };
  807.     
  808. #else  /* C style interface */
  809.     typedef struct ISpStreamFormatConverterVtbl
  810.     {
  811.         BEGIN_INTERFACE
  812.         
  813.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  814.             ISpStreamFormatConverter * This,
  815.             /* [in] */ REFIID riid,
  816.             /* [iid_is][out] */ void **ppvObject);
  817.         
  818.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  819.             ISpStreamFormatConverter * This);
  820.         
  821.         ULONG ( STDMETHODCALLTYPE *Release )( 
  822.             ISpStreamFormatConverter * This);
  823.         
  824.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Read )( 
  825.             ISpStreamFormatConverter * This,
  826.             /* [length_is][size_is][out] */ void *pv,
  827.             /* [in] */ ULONG cb,
  828.             /* [out] */ ULONG *pcbRead);
  829.         
  830.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Write )( 
  831.             ISpStreamFormatConverter * This,
  832.             /* [size_is][in] */ const void *pv,
  833.             /* [in] */ ULONG cb,
  834.             /* [out] */ ULONG *pcbWritten);
  835.         
  836.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Seek )( 
  837.             ISpStreamFormatConverter * This,
  838.             /* [in] */ LARGE_INTEGER dlibMove,
  839.             /* [in] */ DWORD dwOrigin,
  840.             /* [out] */ ULARGE_INTEGER *plibNewPosition);
  841.         
  842.         HRESULT ( STDMETHODCALLTYPE *SetSize )( 
  843.             ISpStreamFormatConverter * This,
  844.             /* [in] */ ULARGE_INTEGER libNewSize);
  845.         
  846.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *CopyTo )( 
  847.             ISpStreamFormatConverter * This,
  848.             /* [unique][in] */ IStream *pstm,
  849.             /* [in] */ ULARGE_INTEGER cb,
  850.             /* [out] */ ULARGE_INTEGER *pcbRead,
  851.             /* [out] */ ULARGE_INTEGER *pcbWritten);
  852.         
  853.         HRESULT ( STDMETHODCALLTYPE *Commit )( 
  854.             ISpStreamFormatConverter * This,
  855.             /* [in] */ DWORD grfCommitFlags);
  856.         
  857.         HRESULT ( STDMETHODCALLTYPE *Revert )( 
  858.             ISpStreamFormatConverter * This);
  859.         
  860.         HRESULT ( STDMETHODCALLTYPE *LockRegion )( 
  861.             ISpStreamFormatConverter * This,
  862.             /* [in] */ ULARGE_INTEGER libOffset,
  863.             /* [in] */ ULARGE_INTEGER cb,
  864.             /* [in] */ DWORD dwLockType);
  865.         
  866.         HRESULT ( STDMETHODCALLTYPE *UnlockRegion )( 
  867.             ISpStreamFormatConverter * This,
  868.             /* [in] */ ULARGE_INTEGER libOffset,
  869.             /* [in] */ ULARGE_INTEGER cb,
  870.             /* [in] */ DWORD dwLockType);
  871.         
  872.         HRESULT ( STDMETHODCALLTYPE *Stat )( 
  873.             ISpStreamFormatConverter * This,
  874.             /* [out] */ STATSTG *pstatstg,
  875.             /* [in] */ DWORD grfStatFlag);
  876.         
  877.         HRESULT ( STDMETHODCALLTYPE *Clone )( 
  878.             ISpStreamFormatConverter * This,
  879.             /* [out] */ IStream **ppstm);
  880.         
  881.         HRESULT ( STDMETHODCALLTYPE *GetFormat )( 
  882.             ISpStreamFormatConverter * This,
  883.             GUID *pguidFormatId,
  884.             WAVEFORMATEX **ppCoMemWaveFormatEx);
  885.         
  886.         HRESULT ( STDMETHODCALLTYPE *SetBaseStream )( 
  887.             ISpStreamFormatConverter * This,
  888.             /* [in] */ ISpStreamFormat *pStream,
  889.             /* [in] */ BOOL fSetFormatToBaseStreamFormat,
  890.             /* [in] */ BOOL fWriteToBaseStream);
  891.         
  892.         HRESULT ( STDMETHODCALLTYPE *GetBaseStream )( 
  893.             ISpStreamFormatConverter * This,
  894.             /* [out] */ ISpStreamFormat **ppStream);
  895.         
  896.         HRESULT ( STDMETHODCALLTYPE *SetFormat )( 
  897.             ISpStreamFormatConverter * This,
  898.             /* [in] */ REFGUID rguidFormatIdOfConvertedStream,
  899.             /* [in] */ const WAVEFORMATEX *pWaveFormatExOfConvertedStream);
  900.         
  901.         HRESULT ( STDMETHODCALLTYPE *ResetSeekPosition )( 
  902.             ISpStreamFormatConverter * This);
  903.         
  904.         HRESULT ( STDMETHODCALLTYPE *ScaleConvertedToBaseOffset )( 
  905.             ISpStreamFormatConverter * This,
  906.             /* [in] */ ULONGLONG ullOffsetConvertedStream,
  907.             /* [out] */ ULONGLONG *pullOffsetBaseStream);
  908.         
  909.         HRESULT ( STDMETHODCALLTYPE *ScaleBaseToConvertedOffset )( 
  910.             ISpStreamFormatConverter * This,
  911.             /* [in] */ ULONGLONG ullOffsetBaseStream,
  912.             /* [out] */ ULONGLONG *pullOffsetConvertedStream);
  913.         
  914.         END_INTERFACE
  915.     } ISpStreamFormatConverterVtbl;
  916.     interface ISpStreamFormatConverter
  917.     {
  918.         CONST_VTBL struct ISpStreamFormatConverterVtbl *lpVtbl;
  919.     };
  920.     
  921. #ifdef COBJMACROS
  922. #define ISpStreamFormatConverter_QueryInterface(This,riid,ppvObject)
  923.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  924. #define ISpStreamFormatConverter_AddRef(This)
  925.     (This)->lpVtbl -> AddRef(This)
  926. #define ISpStreamFormatConverter_Release(This)
  927.     (This)->lpVtbl -> Release(This)
  928. #define ISpStreamFormatConverter_Read(This,pv,cb,pcbRead)
  929.     (This)->lpVtbl -> Read(This,pv,cb,pcbRead)
  930. #define ISpStreamFormatConverter_Write(This,pv,cb,pcbWritten)
  931.     (This)->lpVtbl -> Write(This,pv,cb,pcbWritten)
  932. #define ISpStreamFormatConverter_Seek(This,dlibMove,dwOrigin,plibNewPosition)
  933.     (This)->lpVtbl -> Seek(This,dlibMove,dwOrigin,plibNewPosition)
  934. #define ISpStreamFormatConverter_SetSize(This,libNewSize)
  935.     (This)->lpVtbl -> SetSize(This,libNewSize)
  936. #define ISpStreamFormatConverter_CopyTo(This,pstm,cb,pcbRead,pcbWritten)
  937.     (This)->lpVtbl -> CopyTo(This,pstm,cb,pcbRead,pcbWritten)
  938. #define ISpStreamFormatConverter_Commit(This,grfCommitFlags)
  939.     (This)->lpVtbl -> Commit(This,grfCommitFlags)
  940. #define ISpStreamFormatConverter_Revert(This)
  941.     (This)->lpVtbl -> Revert(This)
  942. #define ISpStreamFormatConverter_LockRegion(This,libOffset,cb,dwLockType)
  943.     (This)->lpVtbl -> LockRegion(This,libOffset,cb,dwLockType)
  944. #define ISpStreamFormatConverter_UnlockRegion(This,libOffset,cb,dwLockType)
  945.     (This)->lpVtbl -> UnlockRegion(This,libOffset,cb,dwLockType)
  946. #define ISpStreamFormatConverter_Stat(This,pstatstg,grfStatFlag)
  947.     (This)->lpVtbl -> Stat(This,pstatstg,grfStatFlag)
  948. #define ISpStreamFormatConverter_Clone(This,ppstm)
  949.     (This)->lpVtbl -> Clone(This,ppstm)
  950. #define ISpStreamFormatConverter_GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
  951.     (This)->lpVtbl -> GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
  952. #define ISpStreamFormatConverter_SetBaseStream(This,pStream,fSetFormatToBaseStreamFormat,fWriteToBaseStream)
  953.     (This)->lpVtbl -> SetBaseStream(This,pStream,fSetFormatToBaseStreamFormat,fWriteToBaseStream)
  954. #define ISpStreamFormatConverter_GetBaseStream(This,ppStream)
  955.     (This)->lpVtbl -> GetBaseStream(This,ppStream)
  956. #define ISpStreamFormatConverter_SetFormat(This,rguidFormatIdOfConvertedStream,pWaveFormatExOfConvertedStream)
  957.     (This)->lpVtbl -> SetFormat(This,rguidFormatIdOfConvertedStream,pWaveFormatExOfConvertedStream)
  958. #define ISpStreamFormatConverter_ResetSeekPosition(This)
  959.     (This)->lpVtbl -> ResetSeekPosition(This)
  960. #define ISpStreamFormatConverter_ScaleConvertedToBaseOffset(This,ullOffsetConvertedStream,pullOffsetBaseStream)
  961.     (This)->lpVtbl -> ScaleConvertedToBaseOffset(This,ullOffsetConvertedStream,pullOffsetBaseStream)
  962. #define ISpStreamFormatConverter_ScaleBaseToConvertedOffset(This,ullOffsetBaseStream,pullOffsetConvertedStream)
  963.     (This)->lpVtbl -> ScaleBaseToConvertedOffset(This,ullOffsetBaseStream,pullOffsetConvertedStream)
  964. #endif /* COBJMACROS */
  965. #endif  /* C style interface */
  966. HRESULT STDMETHODCALLTYPE ISpStreamFormatConverter_SetBaseStream_Proxy( 
  967.     ISpStreamFormatConverter * This,
  968.     /* [in] */ ISpStreamFormat *pStream,
  969.     /* [in] */ BOOL fSetFormatToBaseStreamFormat,
  970.     /* [in] */ BOOL fWriteToBaseStream);
  971. void __RPC_STUB ISpStreamFormatConverter_SetBaseStream_Stub(
  972.     IRpcStubBuffer *This,
  973.     IRpcChannelBuffer *_pRpcChannelBuffer,
  974.     PRPC_MESSAGE _pRpcMessage,
  975.     DWORD *_pdwStubPhase);
  976. HRESULT STDMETHODCALLTYPE ISpStreamFormatConverter_GetBaseStream_Proxy( 
  977.     ISpStreamFormatConverter * This,
  978.     /* [out] */ ISpStreamFormat **ppStream);
  979. void __RPC_STUB ISpStreamFormatConverter_GetBaseStream_Stub(
  980.     IRpcStubBuffer *This,
  981.     IRpcChannelBuffer *_pRpcChannelBuffer,
  982.     PRPC_MESSAGE _pRpcMessage,
  983.     DWORD *_pdwStubPhase);
  984. HRESULT STDMETHODCALLTYPE ISpStreamFormatConverter_SetFormat_Proxy( 
  985.     ISpStreamFormatConverter * This,
  986.     /* [in] */ REFGUID rguidFormatIdOfConvertedStream,
  987.     /* [in] */ const WAVEFORMATEX *pWaveFormatExOfConvertedStream);
  988. void __RPC_STUB ISpStreamFormatConverter_SetFormat_Stub(
  989.     IRpcStubBuffer *This,
  990.     IRpcChannelBuffer *_pRpcChannelBuffer,
  991.     PRPC_MESSAGE _pRpcMessage,
  992.     DWORD *_pdwStubPhase);
  993. HRESULT STDMETHODCALLTYPE ISpStreamFormatConverter_ResetSeekPosition_Proxy( 
  994.     ISpStreamFormatConverter * This);
  995. void __RPC_STUB ISpStreamFormatConverter_ResetSeekPosition_Stub(
  996.     IRpcStubBuffer *This,
  997.     IRpcChannelBuffer *_pRpcChannelBuffer,
  998.     PRPC_MESSAGE _pRpcMessage,
  999.     DWORD *_pdwStubPhase);
  1000. HRESULT STDMETHODCALLTYPE ISpStreamFormatConverter_ScaleConvertedToBaseOffset_Proxy( 
  1001.     ISpStreamFormatConverter * This,
  1002.     /* [in] */ ULONGLONG ullOffsetConvertedStream,
  1003.     /* [out] */ ULONGLONG *pullOffsetBaseStream);
  1004. void __RPC_STUB ISpStreamFormatConverter_ScaleConvertedToBaseOffset_Stub(
  1005.     IRpcStubBuffer *This,
  1006.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1007.     PRPC_MESSAGE _pRpcMessage,
  1008.     DWORD *_pdwStubPhase);
  1009. HRESULT STDMETHODCALLTYPE ISpStreamFormatConverter_ScaleBaseToConvertedOffset_Proxy( 
  1010.     ISpStreamFormatConverter * This,
  1011.     /* [in] */ ULONGLONG ullOffsetBaseStream,
  1012.     /* [out] */ ULONGLONG *pullOffsetConvertedStream);
  1013. void __RPC_STUB ISpStreamFormatConverter_ScaleBaseToConvertedOffset_Stub(
  1014.     IRpcStubBuffer *This,
  1015.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1016.     PRPC_MESSAGE _pRpcMessage,
  1017.     DWORD *_pdwStubPhase);
  1018. #endif  /* __ISpStreamFormatConverter_INTERFACE_DEFINED__ */
  1019. /* interface __MIDL_itf_sapi_0267 */
  1020. /* [local] */ 
  1021. typedef /* [hidden] */ 
  1022. enum _SPAUDIOSTATE
  1023.     { SPAS_CLOSED = 0,
  1024. SPAS_STOP = SPAS_CLOSED + 1,
  1025. SPAS_PAUSE = SPAS_STOP + 1,
  1026. SPAS_RUN = SPAS_PAUSE + 1
  1027.     }  SPAUDIOSTATE;
  1028. typedef /* [hidden][restricted] */ struct SPAUDIOSTATUS
  1029.     {
  1030.     long cbFreeBuffSpace;
  1031.     ULONG cbNonBlockingIO;
  1032.     SPAUDIOSTATE State;
  1033.     ULONGLONG CurSeekPos;
  1034.     ULONGLONG CurDevicePos;
  1035.     DWORD dwReserved1;
  1036.     DWORD dwReserved2;
  1037.     }  SPAUDIOSTATUS;
  1038. typedef /* [hidden][restricted] */ struct SPAUDIOBUFFERINFO
  1039.     {
  1040.     ULONG ulMsMinNotification;
  1041.     ULONG ulMsBufferSize;
  1042.     ULONG ulMsEventBias;
  1043.     }  SPAUDIOBUFFERINFO;
  1044. extern RPC_IF_HANDLE __MIDL_itf_sapi_0267_v0_0_c_ifspec;
  1045. extern RPC_IF_HANDLE __MIDL_itf_sapi_0267_v0_0_s_ifspec;
  1046. #ifndef __ISpAudio_INTERFACE_DEFINED__
  1047. #define __ISpAudio_INTERFACE_DEFINED__
  1048. /* interface ISpAudio */
  1049. /* [restricted][local][unique][helpstring][uuid][object] */ 
  1050. EXTERN_C const IID IID_ISpAudio;
  1051. #if defined(__cplusplus) && !defined(CINTERFACE)
  1052.     
  1053.     MIDL_INTERFACE("C05C768F-FAE8-4EC2-8E07-338321C12452")
  1054.     ISpAudio : public ISpStreamFormat
  1055.     {
  1056.     public:
  1057.         virtual HRESULT STDMETHODCALLTYPE SetState( 
  1058.             /* [in] */ SPAUDIOSTATE NewState,
  1059.             /* [in] */ ULONGLONG ullReserved) = 0;
  1060.         
  1061.         virtual HRESULT STDMETHODCALLTYPE SetFormat( 
  1062.             /* [in] */ REFGUID rguidFmtId,
  1063.             /* [in] */ const WAVEFORMATEX *pWaveFormatEx) = 0;
  1064.         
  1065.         virtual HRESULT STDMETHODCALLTYPE GetStatus( 
  1066.             /* [out] */ SPAUDIOSTATUS *pStatus) = 0;
  1067.         
  1068.         virtual HRESULT STDMETHODCALLTYPE SetBufferInfo( 
  1069.             /* [in] */ const SPAUDIOBUFFERINFO *pBuffInfo) = 0;
  1070.         
  1071.         virtual HRESULT STDMETHODCALLTYPE GetBufferInfo( 
  1072.             /* [out] */ SPAUDIOBUFFERINFO *pBuffInfo) = 0;
  1073.         
  1074.         virtual HRESULT STDMETHODCALLTYPE GetDefaultFormat( 
  1075.             /* [out] */ GUID *pFormatId,
  1076.             /* [out] */ WAVEFORMATEX **ppCoMemWaveFormatEx) = 0;
  1077.         
  1078.         virtual HANDLE STDMETHODCALLTYPE EventHandle( void) = 0;
  1079.         
  1080.         virtual HRESULT STDMETHODCALLTYPE GetVolumeLevel( 
  1081.             /* [out] */ ULONG *pLevel) = 0;
  1082.         
  1083.         virtual HRESULT STDMETHODCALLTYPE SetVolumeLevel( 
  1084.             /* [in] */ ULONG Level) = 0;
  1085.         
  1086.         virtual HRESULT STDMETHODCALLTYPE GetBufferNotifySize( 
  1087.             /* [out] */ ULONG *pcbSize) = 0;
  1088.         
  1089.         virtual HRESULT STDMETHODCALLTYPE SetBufferNotifySize( 
  1090.             /* [in] */ ULONG cbSize) = 0;
  1091.         
  1092.     };
  1093.     
  1094. #else  /* C style interface */
  1095.     typedef struct ISpAudioVtbl
  1096.     {
  1097.         BEGIN_INTERFACE
  1098.         
  1099.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  1100.             ISpAudio * This,
  1101.             /* [in] */ REFIID riid,
  1102.             /* [iid_is][out] */ void **ppvObject);
  1103.         
  1104.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  1105.             ISpAudio * This);
  1106.         
  1107.         ULONG ( STDMETHODCALLTYPE *Release )( 
  1108.             ISpAudio * This);
  1109.         
  1110.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Read )( 
  1111.             ISpAudio * This,
  1112.             /* [length_is][size_is][out] */ void *pv,
  1113.             /* [in] */ ULONG cb,
  1114.             /* [out] */ ULONG *pcbRead);
  1115.         
  1116.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Write )( 
  1117.             ISpAudio * This,
  1118.             /* [size_is][in] */ const void *pv,
  1119.             /* [in] */ ULONG cb,
  1120.             /* [out] */ ULONG *pcbWritten);
  1121.         
  1122.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Seek )( 
  1123.             ISpAudio * This,
  1124.             /* [in] */ LARGE_INTEGER dlibMove,
  1125.             /* [in] */ DWORD dwOrigin,
  1126.             /* [out] */ ULARGE_INTEGER *plibNewPosition);
  1127.         
  1128.         HRESULT ( STDMETHODCALLTYPE *SetSize )( 
  1129.             ISpAudio * This,
  1130.             /* [in] */ ULARGE_INTEGER libNewSize);
  1131.         
  1132.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *CopyTo )( 
  1133.             ISpAudio * This,
  1134.             /* [unique][in] */ IStream *pstm,
  1135.             /* [in] */ ULARGE_INTEGER cb,
  1136.             /* [out] */ ULARGE_INTEGER *pcbRead,
  1137.             /* [out] */ ULARGE_INTEGER *pcbWritten);
  1138.         
  1139.         HRESULT ( STDMETHODCALLTYPE *Commit )( 
  1140.             ISpAudio * This,
  1141.             /* [in] */ DWORD grfCommitFlags);
  1142.         
  1143.         HRESULT ( STDMETHODCALLTYPE *Revert )( 
  1144.             ISpAudio * This);
  1145.         
  1146.         HRESULT ( STDMETHODCALLTYPE *LockRegion )( 
  1147.             ISpAudio * This,
  1148.             /* [in] */ ULARGE_INTEGER libOffset,
  1149.             /* [in] */ ULARGE_INTEGER cb,
  1150.             /* [in] */ DWORD dwLockType);
  1151.         
  1152.         HRESULT ( STDMETHODCALLTYPE *UnlockRegion )( 
  1153.             ISpAudio * This,
  1154.             /* [in] */ ULARGE_INTEGER libOffset,
  1155.             /* [in] */ ULARGE_INTEGER cb,
  1156.             /* [in] */ DWORD dwLockType);
  1157.         
  1158.         HRESULT ( STDMETHODCALLTYPE *Stat )( 
  1159.             ISpAudio * This,
  1160.             /* [out] */ STATSTG *pstatstg,
  1161.             /* [in] */ DWORD grfStatFlag);
  1162.         
  1163.         HRESULT ( STDMETHODCALLTYPE *Clone )( 
  1164.             ISpAudio * This,
  1165.             /* [out] */ IStream **ppstm);
  1166.         
  1167.         HRESULT ( STDMETHODCALLTYPE *GetFormat )( 
  1168.             ISpAudio * This,
  1169.             GUID *pguidFormatId,
  1170.             WAVEFORMATEX **ppCoMemWaveFormatEx);
  1171.         
  1172.         HRESULT ( STDMETHODCALLTYPE *SetState )( 
  1173.             ISpAudio * This,
  1174.             /* [in] */ SPAUDIOSTATE NewState,
  1175.             /* [in] */ ULONGLONG ullReserved);
  1176.         
  1177.         HRESULT ( STDMETHODCALLTYPE *SetFormat )( 
  1178.             ISpAudio * This,
  1179.             /* [in] */ REFGUID rguidFmtId,
  1180.             /* [in] */ const WAVEFORMATEX *pWaveFormatEx);
  1181.         
  1182.         HRESULT ( STDMETHODCALLTYPE *GetStatus )( 
  1183.             ISpAudio * This,
  1184.             /* [out] */ SPAUDIOSTATUS *pStatus);
  1185.         
  1186.         HRESULT ( STDMETHODCALLTYPE *SetBufferInfo )( 
  1187.             ISpAudio * This,
  1188.             /* [in] */ const SPAUDIOBUFFERINFO *pBuffInfo);
  1189.         
  1190.         HRESULT ( STDMETHODCALLTYPE *GetBufferInfo )( 
  1191.             ISpAudio * This,
  1192.             /* [out] */ SPAUDIOBUFFERINFO *pBuffInfo);
  1193.         
  1194.         HRESULT ( STDMETHODCALLTYPE *GetDefaultFormat )( 
  1195.             ISpAudio * This,
  1196.             /* [out] */ GUID *pFormatId,
  1197.             /* [out] */ WAVEFORMATEX **ppCoMemWaveFormatEx);
  1198.         
  1199.         HANDLE ( STDMETHODCALLTYPE *EventHandle )( 
  1200.             ISpAudio * This);
  1201.         
  1202.         HRESULT ( STDMETHODCALLTYPE *GetVolumeLevel )( 
  1203.             ISpAudio * This,
  1204.             /* [out] */ ULONG *pLevel);
  1205.         
  1206.         HRESULT ( STDMETHODCALLTYPE *SetVolumeLevel )( 
  1207.             ISpAudio * This,
  1208.             /* [in] */ ULONG Level);
  1209.         
  1210.         HRESULT ( STDMETHODCALLTYPE *GetBufferNotifySize )( 
  1211.             ISpAudio * This,
  1212.             /* [out] */ ULONG *pcbSize);
  1213.         
  1214.         HRESULT ( STDMETHODCALLTYPE *SetBufferNotifySize )( 
  1215.             ISpAudio * This,
  1216.             /* [in] */ ULONG cbSize);
  1217.         
  1218.         END_INTERFACE
  1219.     } ISpAudioVtbl;
  1220.     interface ISpAudio
  1221.     {
  1222.         CONST_VTBL struct ISpAudioVtbl *lpVtbl;
  1223.     };
  1224.     
  1225. #ifdef COBJMACROS
  1226. #define ISpAudio_QueryInterface(This,riid,ppvObject)
  1227.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  1228. #define ISpAudio_AddRef(This)
  1229.     (This)->lpVtbl -> AddRef(This)
  1230. #define ISpAudio_Release(This)
  1231.     (This)->lpVtbl -> Release(This)
  1232. #define ISpAudio_Read(This,pv,cb,pcbRead)
  1233.     (This)->lpVtbl -> Read(This,pv,cb,pcbRead)
  1234. #define ISpAudio_Write(This,pv,cb,pcbWritten)
  1235.     (This)->lpVtbl -> Write(This,pv,cb,pcbWritten)
  1236. #define ISpAudio_Seek(This,dlibMove,dwOrigin,plibNewPosition)
  1237.     (This)->lpVtbl -> Seek(This,dlibMove,dwOrigin,plibNewPosition)
  1238. #define ISpAudio_SetSize(This,libNewSize)
  1239.     (This)->lpVtbl -> SetSize(This,libNewSize)
  1240. #define ISpAudio_CopyTo(This,pstm,cb,pcbRead,pcbWritten)
  1241.     (This)->lpVtbl -> CopyTo(This,pstm,cb,pcbRead,pcbWritten)
  1242. #define ISpAudio_Commit(This,grfCommitFlags)
  1243.     (This)->lpVtbl -> Commit(This,grfCommitFlags)
  1244. #define ISpAudio_Revert(This)
  1245.     (This)->lpVtbl -> Revert(This)
  1246. #define ISpAudio_LockRegion(This,libOffset,cb,dwLockType)
  1247.     (This)->lpVtbl -> LockRegion(This,libOffset,cb,dwLockType)
  1248. #define ISpAudio_UnlockRegion(This,libOffset,cb,dwLockType)
  1249.     (This)->lpVtbl -> UnlockRegion(This,libOffset,cb,dwLockType)
  1250. #define ISpAudio_Stat(This,pstatstg,grfStatFlag)
  1251.     (This)->lpVtbl -> Stat(This,pstatstg,grfStatFlag)
  1252. #define ISpAudio_Clone(This,ppstm)
  1253.     (This)->lpVtbl -> Clone(This,ppstm)
  1254. #define ISpAudio_GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
  1255.     (This)->lpVtbl -> GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
  1256. #define ISpAudio_SetState(This,NewState,ullReserved)
  1257.     (This)->lpVtbl -> SetState(This,NewState,ullReserved)
  1258. #define ISpAudio_SetFormat(This,rguidFmtId,pWaveFormatEx)
  1259.     (This)->lpVtbl -> SetFormat(This,rguidFmtId,pWaveFormatEx)
  1260. #define ISpAudio_GetStatus(This,pStatus)
  1261.     (This)->lpVtbl -> GetStatus(This,pStatus)
  1262. #define ISpAudio_SetBufferInfo(This,pBuffInfo)
  1263.     (This)->lpVtbl -> SetBufferInfo(This,pBuffInfo)
  1264. #define ISpAudio_GetBufferInfo(This,pBuffInfo)
  1265.     (This)->lpVtbl -> GetBufferInfo(This,pBuffInfo)
  1266. #define ISpAudio_GetDefaultFormat(This,pFormatId,ppCoMemWaveFormatEx)
  1267.     (This)->lpVtbl -> GetDefaultFormat(This,pFormatId,ppCoMemWaveFormatEx)
  1268. #define ISpAudio_EventHandle(This)
  1269.     (This)->lpVtbl -> EventHandle(This)
  1270. #define ISpAudio_GetVolumeLevel(This,pLevel)
  1271.     (This)->lpVtbl -> GetVolumeLevel(This,pLevel)
  1272. #define ISpAudio_SetVolumeLevel(This,Level)
  1273.     (This)->lpVtbl -> SetVolumeLevel(This,Level)
  1274. #define ISpAudio_GetBufferNotifySize(This,pcbSize)
  1275.     (This)->lpVtbl -> GetBufferNotifySize(This,pcbSize)
  1276. #define ISpAudio_SetBufferNotifySize(This,cbSize)
  1277.     (This)->lpVtbl -> SetBufferNotifySize(This,cbSize)
  1278. #endif /* COBJMACROS */
  1279. #endif  /* C style interface */
  1280. HRESULT STDMETHODCALLTYPE ISpAudio_SetState_Proxy( 
  1281.     ISpAudio * This,
  1282.     /* [in] */ SPAUDIOSTATE NewState,
  1283.     /* [in] */ ULONGLONG ullReserved);
  1284. void __RPC_STUB ISpAudio_SetState_Stub(
  1285.     IRpcStubBuffer *This,
  1286.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1287.     PRPC_MESSAGE _pRpcMessage,
  1288.     DWORD *_pdwStubPhase);
  1289. HRESULT STDMETHODCALLTYPE ISpAudio_SetFormat_Proxy( 
  1290.     ISpAudio * This,
  1291.     /* [in] */ REFGUID rguidFmtId,
  1292.     /* [in] */ const WAVEFORMATEX *pWaveFormatEx);
  1293. void __RPC_STUB ISpAudio_SetFormat_Stub(
  1294.     IRpcStubBuffer *This,
  1295.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1296.     PRPC_MESSAGE _pRpcMessage,
  1297.     DWORD *_pdwStubPhase);
  1298. HRESULT STDMETHODCALLTYPE ISpAudio_GetStatus_Proxy( 
  1299.     ISpAudio * This,
  1300.     /* [out] */ SPAUDIOSTATUS *pStatus);
  1301. void __RPC_STUB ISpAudio_GetStatus_Stub(
  1302.     IRpcStubBuffer *This,
  1303.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1304.     PRPC_MESSAGE _pRpcMessage,
  1305.     DWORD *_pdwStubPhase);
  1306. HRESULT STDMETHODCALLTYPE ISpAudio_SetBufferInfo_Proxy( 
  1307.     ISpAudio * This,
  1308.     /* [in] */ const SPAUDIOBUFFERINFO *pBuffInfo);
  1309. void __RPC_STUB ISpAudio_SetBufferInfo_Stub(
  1310.     IRpcStubBuffer *This,
  1311.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1312.     PRPC_MESSAGE _pRpcMessage,
  1313.     DWORD *_pdwStubPhase);
  1314. HRESULT STDMETHODCALLTYPE ISpAudio_GetBufferInfo_Proxy( 
  1315.     ISpAudio * This,
  1316.     /* [out] */ SPAUDIOBUFFERINFO *pBuffInfo);
  1317. void __RPC_STUB ISpAudio_GetBufferInfo_Stub(
  1318.     IRpcStubBuffer *This,
  1319.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1320.     PRPC_MESSAGE _pRpcMessage,
  1321.     DWORD *_pdwStubPhase);
  1322. HRESULT STDMETHODCALLTYPE ISpAudio_GetDefaultFormat_Proxy( 
  1323.     ISpAudio * This,
  1324.     /* [out] */ GUID *pFormatId,
  1325.     /* [out] */ WAVEFORMATEX **ppCoMemWaveFormatEx);
  1326. void __RPC_STUB ISpAudio_GetDefaultFormat_Stub(
  1327.     IRpcStubBuffer *This,
  1328.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1329.     PRPC_MESSAGE _pRpcMessage,
  1330.     DWORD *_pdwStubPhase);
  1331. HANDLE STDMETHODCALLTYPE ISpAudio_EventHandle_Proxy( 
  1332.     ISpAudio * This);
  1333. void __RPC_STUB ISpAudio_EventHandle_Stub(
  1334.     IRpcStubBuffer *This,
  1335.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1336.     PRPC_MESSAGE _pRpcMessage,
  1337.     DWORD *_pdwStubPhase);
  1338. HRESULT STDMETHODCALLTYPE ISpAudio_GetVolumeLevel_Proxy( 
  1339.     ISpAudio * This,
  1340.     /* [out] */ ULONG *pLevel);
  1341. void __RPC_STUB ISpAudio_GetVolumeLevel_Stub(
  1342.     IRpcStubBuffer *This,
  1343.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1344.     PRPC_MESSAGE _pRpcMessage,
  1345.     DWORD *_pdwStubPhase);
  1346. HRESULT STDMETHODCALLTYPE ISpAudio_SetVolumeLevel_Proxy( 
  1347.     ISpAudio * This,
  1348.     /* [in] */ ULONG Level);
  1349. void __RPC_STUB ISpAudio_SetVolumeLevel_Stub(
  1350.     IRpcStubBuffer *This,
  1351.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1352.     PRPC_MESSAGE _pRpcMessage,
  1353.     DWORD *_pdwStubPhase);
  1354. HRESULT STDMETHODCALLTYPE ISpAudio_GetBufferNotifySize_Proxy( 
  1355.     ISpAudio * This,
  1356.     /* [out] */ ULONG *pcbSize);
  1357. void __RPC_STUB ISpAudio_GetBufferNotifySize_Stub(
  1358.     IRpcStubBuffer *This,
  1359.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1360.     PRPC_MESSAGE _pRpcMessage,
  1361.     DWORD *_pdwStubPhase);
  1362. HRESULT STDMETHODCALLTYPE ISpAudio_SetBufferNotifySize_Proxy( 
  1363.     ISpAudio * This,
  1364.     /* [in] */ ULONG cbSize);
  1365. void __RPC_STUB ISpAudio_SetBufferNotifySize_Stub(
  1366.     IRpcStubBuffer *This,
  1367.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1368.     PRPC_MESSAGE _pRpcMessage,
  1369.     DWORD *_pdwStubPhase);
  1370. #endif  /* __ISpAudio_INTERFACE_DEFINED__ */
  1371. #ifndef __ISpMMSysAudio_INTERFACE_DEFINED__
  1372. #define __ISpMMSysAudio_INTERFACE_DEFINED__
  1373. /* interface ISpMMSysAudio */
  1374. /* [restricted][local][unique][helpstring][uuid][object] */ 
  1375. EXTERN_C const IID IID_ISpMMSysAudio;
  1376. #if defined(__cplusplus) && !defined(CINTERFACE)
  1377.     
  1378.     MIDL_INTERFACE("15806F6E-1D70-4B48-98E6-3B1A007509AB")
  1379.     ISpMMSysAudio : public ISpAudio
  1380.     {
  1381.     public:
  1382.         virtual HRESULT STDMETHODCALLTYPE GetDeviceId( 
  1383.             /* [out] */ UINT *puDeviceId) = 0;
  1384.         
  1385.         virtual HRESULT STDMETHODCALLTYPE SetDeviceId( 
  1386.             /* [in] */ UINT uDeviceId) = 0;
  1387.         
  1388.         virtual HRESULT STDMETHODCALLTYPE GetMMHandle( 
  1389.             void **pHandle) = 0;
  1390.         
  1391.         virtual HRESULT STDMETHODCALLTYPE GetLineId( 
  1392.             /* [out] */ UINT *puLineId) = 0;
  1393.         
  1394.         virtual HRESULT STDMETHODCALLTYPE SetLineId( 
  1395.             /* [in] */ UINT uLineId) = 0;
  1396.         
  1397.     };
  1398.     
  1399. #else  /* C style interface */
  1400.     typedef struct ISpMMSysAudioVtbl
  1401.     {
  1402.         BEGIN_INTERFACE
  1403.         
  1404.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  1405.             ISpMMSysAudio * This,
  1406.             /* [in] */ REFIID riid,
  1407.             /* [iid_is][out] */ void **ppvObject);
  1408.         
  1409.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  1410.             ISpMMSysAudio * This);
  1411.         
  1412.         ULONG ( STDMETHODCALLTYPE *Release )( 
  1413.             ISpMMSysAudio * This);
  1414.         
  1415.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Read )( 
  1416.             ISpMMSysAudio * This,
  1417.             /* [length_is][size_is][out] */ void *pv,
  1418.             /* [in] */ ULONG cb,
  1419.             /* [out] */ ULONG *pcbRead);
  1420.         
  1421.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Write )( 
  1422.             ISpMMSysAudio * This,
  1423.             /* [size_is][in] */ const void *pv,
  1424.             /* [in] */ ULONG cb,
  1425.             /* [out] */ ULONG *pcbWritten);
  1426.         
  1427.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *Seek )( 
  1428.             ISpMMSysAudio * This,
  1429.             /* [in] */ LARGE_INTEGER dlibMove,
  1430.             /* [in] */ DWORD dwOrigin,
  1431.             /* [out] */ ULARGE_INTEGER *plibNewPosition);
  1432.         
  1433.         HRESULT ( STDMETHODCALLTYPE *SetSize )( 
  1434.             ISpMMSysAudio * This,
  1435.             /* [in] */ ULARGE_INTEGER libNewSize);
  1436.         
  1437.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *CopyTo )( 
  1438.             ISpMMSysAudio * This,
  1439.             /* [unique][in] */ IStream *pstm,
  1440.             /* [in] */ ULARGE_INTEGER cb,
  1441.             /* [out] */ ULARGE_INTEGER *pcbRead,
  1442.             /* [out] */ ULARGE_INTEGER *pcbWritten);
  1443.         
  1444.         HRESULT ( STDMETHODCALLTYPE *Commit )( 
  1445.             ISpMMSysAudio * This,
  1446.             /* [in] */ DWORD grfCommitFlags);
  1447.         
  1448.         HRESULT ( STDMETHODCALLTYPE *Revert )( 
  1449.             ISpMMSysAudio * This);
  1450.         
  1451.         HRESULT ( STDMETHODCALLTYPE *LockRegion )( 
  1452.             ISpMMSysAudio * This,
  1453.             /* [in] */ ULARGE_INTEGER libOffset,
  1454.             /* [in] */ ULARGE_INTEGER cb,
  1455.             /* [in] */ DWORD dwLockType);
  1456.         
  1457.         HRESULT ( STDMETHODCALLTYPE *UnlockRegion )( 
  1458.             ISpMMSysAudio * This,
  1459.             /* [in] */ ULARGE_INTEGER libOffset,
  1460.             /* [in] */ ULARGE_INTEGER cb,
  1461.             /* [in] */ DWORD dwLockType);
  1462.         
  1463.         HRESULT ( STDMETHODCALLTYPE *Stat )( 
  1464.             ISpMMSysAudio * This,
  1465.             /* [out] */ STATSTG *pstatstg,
  1466.             /* [in] */ DWORD grfStatFlag);
  1467.         
  1468.         HRESULT ( STDMETHODCALLTYPE *Clone )( 
  1469.             ISpMMSysAudio * This,
  1470.             /* [out] */ IStream **ppstm);
  1471.         
  1472.         HRESULT ( STDMETHODCALLTYPE *GetFormat )( 
  1473.             ISpMMSysAudio * This,
  1474.             GUID *pguidFormatId,
  1475.             WAVEFORMATEX **ppCoMemWaveFormatEx);
  1476.         
  1477.         HRESULT ( STDMETHODCALLTYPE *SetState )( 
  1478.             ISpMMSysAudio * This,
  1479.             /* [in] */ SPAUDIOSTATE NewState,
  1480.             /* [in] */ ULONGLONG ullReserved);
  1481.         
  1482.         HRESULT ( STDMETHODCALLTYPE *SetFormat )( 
  1483.             ISpMMSysAudio * This,
  1484.             /* [in] */ REFGUID rguidFmtId,
  1485.             /* [in] */ const WAVEFORMATEX *pWaveFormatEx);
  1486.         
  1487.         HRESULT ( STDMETHODCALLTYPE *GetStatus )( 
  1488.             ISpMMSysAudio * This,
  1489.             /* [out] */ SPAUDIOSTATUS *pStatus);
  1490.         
  1491.         HRESULT ( STDMETHODCALLTYPE *SetBufferInfo )( 
  1492.             ISpMMSysAudio * This,
  1493.             /* [in] */ const SPAUDIOBUFFERINFO *pBuffInfo);
  1494.         
  1495.         HRESULT ( STDMETHODCALLTYPE *GetBufferInfo )( 
  1496.             ISpMMSysAudio * This,
  1497.             /* [out] */ SPAUDIOBUFFERINFO *pBuffInfo);
  1498.         
  1499.         HRESULT ( STDMETHODCALLTYPE *GetDefaultFormat )( 
  1500.             ISpMMSysAudio * This,
  1501.             /* [out] */ GUID *pFormatId,
  1502.             /* [out] */ WAVEFORMATEX **ppCoMemWaveFormatEx);
  1503.         
  1504.         HANDLE ( STDMETHODCALLTYPE *EventHandle )( 
  1505.             ISpMMSysAudio * This);
  1506.         
  1507.         HRESULT ( STDMETHODCALLTYPE *GetVolumeLevel )( 
  1508.             ISpMMSysAudio * This,
  1509.             /* [out] */ ULONG *pLevel);
  1510.         
  1511.         HRESULT ( STDMETHODCALLTYPE *SetVolumeLevel )( 
  1512.             ISpMMSysAudio * This,
  1513.             /* [in] */ ULONG Level);
  1514.         
  1515.         HRESULT ( STDMETHODCALLTYPE *GetBufferNotifySize )( 
  1516.             ISpMMSysAudio * This,
  1517.             /* [out] */ ULONG *pcbSize);
  1518.         
  1519.         HRESULT ( STDMETHODCALLTYPE *SetBufferNotifySize )( 
  1520.             ISpMMSysAudio * This,
  1521.             /* [in] */ ULONG cbSize);
  1522.         
  1523.         HRESULT ( STDMETHODCALLTYPE *GetDeviceId )( 
  1524.             ISpMMSysAudio * This,
  1525.             /* [out] */ UINT *puDeviceId);
  1526.         
  1527.         HRESULT ( STDMETHODCALLTYPE *SetDeviceId )( 
  1528.             ISpMMSysAudio * This,
  1529.             /* [in] */ UINT uDeviceId);
  1530.         
  1531.         HRESULT ( STDMETHODCALLTYPE *GetMMHandle )( 
  1532.             ISpMMSysAudio * This,
  1533.             void **pHandle);
  1534.         
  1535.         HRESULT ( STDMETHODCALLTYPE *GetLineId )( 
  1536.             ISpMMSysAudio * This,
  1537.             /* [out] */ UINT *puLineId);
  1538.         
  1539.         HRESULT ( STDMETHODCALLTYPE *SetLineId )( 
  1540.             ISpMMSysAudio * This,
  1541.             /* [in] */ UINT uLineId);
  1542.         
  1543.         END_INTERFACE
  1544.     } ISpMMSysAudioVtbl;
  1545.     interface ISpMMSysAudio
  1546.     {
  1547.         CONST_VTBL struct ISpMMSysAudioVtbl *lpVtbl;
  1548.     };
  1549.     
  1550. #ifdef COBJMACROS
  1551. #define ISpMMSysAudio_QueryInterface(This,riid,ppvObject)
  1552.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  1553. #define ISpMMSysAudio_AddRef(This)
  1554.     (This)->lpVtbl -> AddRef(This)
  1555. #define ISpMMSysAudio_Release(This)
  1556.     (This)->lpVtbl -> Release(This)
  1557. #define ISpMMSysAudio_Read(This,pv,cb,pcbRead)
  1558.     (This)->lpVtbl -> Read(This,pv,cb,pcbRead)
  1559. #define ISpMMSysAudio_Write(This,pv,cb,pcbWritten)
  1560.     (This)->lpVtbl -> Write(This,pv,cb,pcbWritten)
  1561. #define ISpMMSysAudio_Seek(This,dlibMove,dwOrigin,plibNewPosition)
  1562.     (This)->lpVtbl -> Seek(This,dlibMove,dwOrigin,plibNewPosition)
  1563. #define ISpMMSysAudio_SetSize(This,libNewSize)
  1564.     (This)->lpVtbl -> SetSize(This,libNewSize)
  1565. #define ISpMMSysAudio_CopyTo(This,pstm,cb,pcbRead,pcbWritten)
  1566.     (This)->lpVtbl -> CopyTo(This,pstm,cb,pcbRead,pcbWritten)
  1567. #define ISpMMSysAudio_Commit(This,grfCommitFlags)
  1568.     (This)->lpVtbl -> Commit(This,grfCommitFlags)
  1569. #define ISpMMSysAudio_Revert(This)
  1570.     (This)->lpVtbl -> Revert(This)
  1571. #define ISpMMSysAudio_LockRegion(This,libOffset,cb,dwLockType)
  1572.     (This)->lpVtbl -> LockRegion(This,libOffset,cb,dwLockType)
  1573. #define ISpMMSysAudio_UnlockRegion(This,libOffset,cb,dwLockType)
  1574.     (This)->lpVtbl -> UnlockRegion(This,libOffset,cb,dwLockType)
  1575. #define ISpMMSysAudio_Stat(This,pstatstg,grfStatFlag)
  1576.     (This)->lpVtbl -> Stat(This,pstatstg,grfStatFlag)
  1577. #define ISpMMSysAudio_Clone(This,ppstm)
  1578.     (This)->lpVtbl -> Clone(This,ppstm)
  1579. #define ISpMMSysAudio_GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
  1580.     (This)->lpVtbl -> GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
  1581. #define ISpMMSysAudio_SetState(This,NewState,ullReserved)
  1582.     (This)->lpVtbl -> SetState(This,NewState,ullReserved)
  1583. #define ISpMMSysAudio_SetFormat(This,rguidFmtId,pWaveFormatEx)
  1584.     (This)->lpVtbl -> SetFormat(This,rguidFmtId,pWaveFormatEx)
  1585. #define ISpMMSysAudio_GetStatus(This,pStatus)
  1586.     (This)->lpVtbl -> GetStatus(This,pStatus)
  1587. #define ISpMMSysAudio_SetBufferInfo(This,pBuffInfo)
  1588.     (This)->lpVtbl -> SetBufferInfo(This,pBuffInfo)
  1589. #define ISpMMSysAudio_GetBufferInfo(This,pBuffInfo)
  1590.     (This)->lpVtbl -> GetBufferInfo(This,pBuffInfo)
  1591. #define ISpMMSysAudio_GetDefaultFormat(This,pFormatId,ppCoMemWaveFormatEx)
  1592.     (This)->lpVtbl -> GetDefaultFormat(This,pFormatId,ppCoMemWaveFormatEx)
  1593. #define ISpMMSysAudio_EventHandle(This)
  1594.     (This)->lpVtbl -> EventHandle(This)
  1595. #define ISpMMSysAudio_GetVolumeLevel(This,pLevel)
  1596.     (This)->lpVtbl -> GetVolumeLevel(This,pLevel)
  1597. #define ISpMMSysAudio_SetVolumeLevel(This,Level)
  1598.     (This)->lpVtbl -> SetVolumeLevel(This,Level)
  1599. #define ISpMMSysAudio_GetBufferNotifySize(This,pcbSize)
  1600.     (This)->lpVtbl -> GetBufferNotifySize(This,pcbSize)
  1601. #define ISpMMSysAudio_SetBufferNotifySize(This,cbSize)
  1602.     (This)->lpVtbl -> SetBufferNotifySize(This,cbSize)
  1603. #define ISpMMSysAudio_GetDeviceId(This,puDeviceId)
  1604.     (This)->lpVtbl -> GetDeviceId(This,puDeviceId)
  1605. #define ISpMMSysAudio_SetDeviceId(This,uDeviceId)
  1606.     (This)->lpVtbl -> SetDeviceId(This,uDeviceId)
  1607. #define ISpMMSysAudio_GetMMHandle(This,pHandle)
  1608.     (This)->lpVtbl -> GetMMHandle(This,pHandle)
  1609. #define ISpMMSysAudio_GetLineId(This,puLineId)
  1610.     (This)->lpVtbl -> GetLineId(This,puLineId)
  1611. #define ISpMMSysAudio_SetLineId(This,uLineId)
  1612.     (This)->lpVtbl -> SetLineId(This,uLineId)
  1613. #endif /* COBJMACROS */
  1614. #endif  /* C style interface */
  1615. HRESULT STDMETHODCALLTYPE ISpMMSysAudio_GetDeviceId_Proxy( 
  1616.     ISpMMSysAudio * This,
  1617.     /* [out] */ UINT *puDeviceId);
  1618. void __RPC_STUB ISpMMSysAudio_GetDeviceId_Stub(
  1619.     IRpcStubBuffer *This,
  1620.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1621.     PRPC_MESSAGE _pRpcMessage,
  1622.     DWORD *_pdwStubPhase);
  1623. HRESULT STDMETHODCALLTYPE ISpMMSysAudio_SetDeviceId_Proxy( 
  1624.     ISpMMSysAudio * This,
  1625.     /* [in] */ UINT uDeviceId);
  1626. void __RPC_STUB ISpMMSysAudio_SetDeviceId_Stub(
  1627.     IRpcStubBuffer *This,
  1628.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1629.     PRPC_MESSAGE _pRpcMessage,
  1630.     DWORD *_pdwStubPhase);
  1631. HRESULT STDMETHODCALLTYPE ISpMMSysAudio_GetMMHandle_Proxy( 
  1632.     ISpMMSysAudio * This,
  1633.     void **pHandle);
  1634. void __RPC_STUB ISpMMSysAudio_GetMMHandle_Stub(
  1635.     IRpcStubBuffer *This,
  1636.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1637.     PRPC_MESSAGE _pRpcMessage,
  1638.     DWORD *_pdwStubPhase);
  1639. HRESULT STDMETHODCALLTYPE ISpMMSysAudio_GetLineId_Proxy( 
  1640.     ISpMMSysAudio * This,
  1641.     /* [out] */ UINT *puLineId);
  1642. void __RPC_STUB ISpMMSysAudio_GetLineId_Stub(
  1643.     IRpcStubBuffer *This,
  1644.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1645.     PRPC_MESSAGE _pRpcMessage,
  1646.     DWORD *_pdwStubPhase);
  1647. HRESULT STDMETHODCALLTYPE ISpMMSysAudio_SetLineId_Proxy( 
  1648.     ISpMMSysAudio * This,
  1649.     /* [in] */ UINT uLineId);
  1650. void __RPC_STUB ISpMMSysAudio_SetLineId_Stub(
  1651.     IRpcStubBuffer *This,
  1652.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1653.     PRPC_MESSAGE _pRpcMessage,
  1654.     DWORD *_pdwStubPhase);
  1655. #endif  /* __ISpMMSysAudio_INTERFACE_DEFINED__ */
  1656. #ifndef __ISpTranscript_INTERFACE_DEFINED__
  1657. #define __ISpTranscript_INTERFACE_DEFINED__
  1658. /* interface ISpTranscript */
  1659. /* [restricted][unique][helpstring][uuid][object] */ 
  1660. EXTERN_C const IID IID_ISpTranscript;
  1661. #if defined(__cplusplus) && !defined(CINTERFACE)
  1662.     
  1663.     MIDL_INTERFACE("10F63BCE-201A-11D3-AC70-00C04F8EE6C0")
  1664.     ISpTranscript : public IUnknown
  1665.     {
  1666.     public:
  1667.         virtual HRESULT STDMETHODCALLTYPE GetTranscript( 
  1668.             /* [string][out] */ WCHAR **ppszTranscript) = 0;
  1669.         
  1670.         virtual HRESULT STDMETHODCALLTYPE AppendTranscript( 
  1671.             /* [string][in] */ const WCHAR *pszTranscript) = 0;
  1672.         
  1673.     };
  1674.     
  1675. #else  /* C style interface */
  1676.     typedef struct ISpTranscriptVtbl
  1677.     {
  1678.         BEGIN_INTERFACE
  1679.         
  1680.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  1681.             ISpTranscript * This,
  1682.             /* [in] */ REFIID riid,
  1683.             /* [iid_is][out] */ void **ppvObject);
  1684.         
  1685.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  1686.             ISpTranscript * This);
  1687.         
  1688.         ULONG ( STDMETHODCALLTYPE *Release )( 
  1689.             ISpTranscript * This);
  1690.         
  1691.         HRESULT ( STDMETHODCALLTYPE *GetTranscript )( 
  1692.             ISpTranscript * This,
  1693.             /* [string][out] */ WCHAR **ppszTranscript);
  1694.         
  1695.         HRESULT ( STDMETHODCALLTYPE *AppendTranscript )( 
  1696.             ISpTranscript * This,
  1697.             /* [string][in] */ const WCHAR *pszTranscript);
  1698.         
  1699.         END_INTERFACE
  1700.     } ISpTranscriptVtbl;
  1701.     interface ISpTranscript
  1702.     {
  1703.         CONST_VTBL struct ISpTranscriptVtbl *lpVtbl;
  1704.     };
  1705.     
  1706. #ifdef COBJMACROS
  1707. #define ISpTranscript_QueryInterface(This,riid,ppvObject)
  1708.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  1709. #define ISpTranscript_AddRef(This)
  1710.     (This)->lpVtbl -> AddRef(This)
  1711. #define ISpTranscript_Release(This)
  1712.     (This)->lpVtbl -> Release(This)
  1713. #define ISpTranscript_GetTranscript(This,ppszTranscript)
  1714.     (This)->lpVtbl -> GetTranscript(This,ppszTranscript)
  1715. #define ISpTranscript_AppendTranscript(This,pszTranscript)
  1716.     (This)->lpVtbl -> AppendTranscript(This,pszTranscript)
  1717. #endif /* COBJMACROS */
  1718. #endif  /* C style interface */
  1719. HRESULT STDMETHODCALLTYPE ISpTranscript_GetTranscript_Proxy( 
  1720.     ISpTranscript * This,
  1721.     /* [string][out] */ WCHAR **ppszTranscript);
  1722. void __RPC_STUB ISpTranscript_GetTranscript_Stub(
  1723.     IRpcStubBuffer *This,
  1724.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1725.     PRPC_MESSAGE _pRpcMessage,
  1726.     DWORD *_pdwStubPhase);
  1727. HRESULT STDMETHODCALLTYPE ISpTranscript_AppendTranscript_Proxy( 
  1728.     ISpTranscript * This,
  1729.     /* [string][in] */ const WCHAR *pszTranscript);
  1730. void __RPC_STUB ISpTranscript_AppendTranscript_Stub(
  1731.     IRpcStubBuffer *This,
  1732.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1733.     PRPC_MESSAGE _pRpcMessage,
  1734.     DWORD *_pdwStubPhase);
  1735. #endif  /* __ISpTranscript_INTERFACE_DEFINED__ */
  1736. /* interface __MIDL_itf_sapi_0270 */
  1737. /* [local] */ 
  1738. typedef /* [hidden] */ 
  1739. enum SPDISPLYATTRIBUTES
  1740.     { SPAF_ONE_TRAILING_SPACE = 0x2,
  1741. SPAF_TWO_TRAILING_SPACES = 0x4,
  1742. SPAF_CONSUME_LEADING_SPACES = 0x8,
  1743. SPAF_ALL = 0xf
  1744.     }  SPDISPLAYATTRIBUTES;
  1745. typedef unsigned short SPPHONEID;
  1746. typedef /* [hidden][restricted] */ struct SPPHRASEELEMENT
  1747.     {
  1748.     ULONG ulAudioTimeOffset;
  1749.     ULONG ulAudioSizeTime;
  1750.     ULONG ulAudioStreamOffset;
  1751.     ULONG ulAudioSizeBytes;
  1752.     ULONG ulRetainedStreamOffset;
  1753.     ULONG ulRetainedSizeBytes;
  1754.     const WCHAR *pszDisplayText;
  1755.     const WCHAR *pszLexicalForm;
  1756.     const SPPHONEID *pszPronunciation;
  1757.     BYTE bDisplayAttributes;
  1758.     signed char RequiredConfidence;
  1759.     signed char ActualConfidence;
  1760.     BYTE Reserved;
  1761.     float SREngineConfidence;
  1762.     }  SPPHRASEELEMENT;
  1763. typedef /* [hidden][restricted] */ struct SPPHRASERULE SPPHRASERULE;
  1764. /* [hidden] */ struct SPPHRASERULE
  1765.     {
  1766.     const WCHAR *pszName;
  1767.     ULONG ulId;
  1768.     ULONG ulFirstElement;
  1769.     ULONG ulCountOfElements;
  1770.     const SPPHRASERULE *pNextSibling;
  1771.     const SPPHRASERULE *pFirstChild;
  1772.     float SREngineConfidence;
  1773.     signed char Confidence;
  1774.     } ;
  1775. typedef /* [hidden][restricted] */ struct SPPHRASEPROPERTY SPPHRASEPROPERTY;
  1776. /* [hidden] */ struct SPPHRASEPROPERTY
  1777.     {
  1778.     const WCHAR *pszName;
  1779.     ULONG ulId;
  1780.     const WCHAR *pszValue;
  1781.     VARIANT vValue;
  1782.     ULONG ulFirstElement;
  1783.     ULONG ulCountOfElements;
  1784.     const SPPHRASEPROPERTY *pNextSibling;
  1785.     const SPPHRASEPROPERTY *pFirstChild;
  1786.     float SREngineConfidence;
  1787.     signed char Confidence;
  1788.     } ;
  1789. typedef /* [hidden][restricted] */ struct SPPHRASEREPLACEMENT
  1790.     {
  1791.     BYTE bDisplayAttributes;
  1792.     const WCHAR *pszReplacementText;
  1793.     ULONG ulFirstElement;
  1794.     ULONG ulCountOfElements;
  1795.     }  SPPHRASEREPLACEMENT;
  1796. typedef /* [hidden][restricted] */ struct SPPHRASE
  1797.     {
  1798.     ULONG cbSize;
  1799.     WORD LangID;
  1800.     WORD wReserved;
  1801.     ULONGLONG ullGrammarID;
  1802.     ULONGLONG ftStartTime;
  1803.     ULONGLONG ullAudioStreamPosition;
  1804.     ULONG ulAudioSizeBytes;
  1805.     ULONG ulRetainedSizeBytes;
  1806.     ULONG ulAudioSizeTime;
  1807.     SPPHRASERULE Rule;
  1808.     const SPPHRASEPROPERTY *pProperties;
  1809.     const SPPHRASEELEMENT *pElements;
  1810.     ULONG cReplacements;
  1811.     const SPPHRASEREPLACEMENT *pReplacements;
  1812.     GUID SREngineID;
  1813.     ULONG ulSREnginePrivateDataSize;
  1814.     const BYTE *pSREnginePrivateData;
  1815.     }  SPPHRASE;
  1816. typedef /* [hidden][restricted] */ struct SPSERIALIZEDPHRASE
  1817.     {
  1818.     ULONG ulSerializedSize;
  1819.     }  SPSERIALIZEDPHRASE;
  1820. typedef /* [hidden] */ 
  1821. enum SPVALUETYPE
  1822.     { SPDF_PROPERTY = 0x1,
  1823. SPDF_REPLACEMENT = 0x2,
  1824. SPDF_RULE = 0x4,
  1825. SPDF_DISPLAYTEXT = 0x8,
  1826. SPDF_LEXICALFORM = 0x10,
  1827. SPDF_PRONUNCIATION = 0x20,
  1828. SPDF_AUDIO = 0x40,
  1829. SPDF_ALTERNATES = 0x80,
  1830. SPDF_ALL = 0xff
  1831.     }  SPVALUETYPE;
  1832. typedef /* [hidden] */ struct SPBINARYGRAMMAR
  1833.     {
  1834.     ULONG ulTotalSerializedSize;
  1835.     }  SPBINARYGRAMMAR;
  1836. typedef /* [hidden] */ 
  1837. enum SPPHRASERNG
  1838.     { SPPR_ALL_ELEMENTS = -1
  1839.     }  SPPHRASERNG;
  1840. #define SP_GETWHOLEPHRASE SPPR_ALL_ELEMENTS
  1841. #define SPRR_ALL_ELEMENTS SPPR_ALL_ELEMENTS
  1842. #if 0
  1843. typedef void *SPSTATEHANDLE;
  1844. #else
  1845. DECLARE_HANDLE(SPSTATEHANDLE);
  1846. #endif
  1847. typedef /* [hidden] */ 
  1848. enum SPRECOEVENTFLAGS
  1849.     { SPREF_AutoPause = 1 << 0,
  1850. SPREF_Emulated = 1 << 1
  1851.     }  SPRECOEVENTFLAGS;
  1852. typedef /* [hidden] */ 
  1853. enum SPPARTOFSPEECH
  1854.     { SPPS_NotOverriden = -1,
  1855. SPPS_Unknown = 0,
  1856. SPPS_Noun = 0x1000,
  1857. SPPS_Verb = 0x2000,
  1858. SPPS_Modifier = 0x3000,
  1859. SPPS_Function = 0x4000,
  1860. SPPS_Interjection = 0x5000
  1861.     }  SPPARTOFSPEECH;
  1862. typedef /* [hidden] */ 
  1863. enum SPLEXICONTYPE
  1864.     { eLEXTYPE_USER = 1L << 0,
  1865. eLEXTYPE_APP = 1L << 1,
  1866. eLEXTYPE_RESERVED1 = 1L << 2,
  1867. eLEXTYPE_RESERVED2 = 1L << 3,
  1868. eLEXTYPE_RESERVED3 = 1L << 4,
  1869. eLEXTYPE_RESERVED4 = 1L << 5,
  1870. eLEXTYPE_RESERVED5 = 1L << 6,
  1871. eLEXTYPE_RESERVED6 = 1L << 7,
  1872. eLEXTYPE_RESERVED7 = 1L << 8,
  1873. eLEXTYPE_RESERVED8 = 1L << 9,
  1874. eLEXTYPE_RESERVED9 = 1L << 10,
  1875. eLEXTYPE_RESERVED10 = 1L << 11,
  1876. eLEXTYPE_PRIVATE1 = 1L << 12,
  1877. eLEXTYPE_PRIVATE2 = 1L << 13,
  1878. eLEXTYPE_PRIVATE3 = 1L << 14,
  1879. eLEXTYPE_PRIVATE4 = 1L << 15,
  1880. eLEXTYPE_PRIVATE5 = 1L << 16,
  1881. eLEXTYPE_PRIVATE6 = 1L << 17,
  1882. eLEXTYPE_PRIVATE7 = 1L << 18,
  1883. eLEXTYPE_PRIVATE8 = 1L << 19,
  1884. eLEXTYPE_PRIVATE9 = 1L << 20,
  1885. eLEXTYPE_PRIVATE10 = 1L << 21,
  1886. eLEXTYPE_PRIVATE11 = 1L << 22,
  1887. eLEXTYPE_PRIVATE12 = 1L << 23,
  1888. eLEXTYPE_PRIVATE13 = 1L << 24,
  1889. eLEXTYPE_PRIVATE14 = 1L << 25,
  1890. eLEXTYPE_PRIVATE15 = 1L << 26,
  1891. eLEXTYPE_PRIVATE16 = 1L << 27,
  1892. eLEXTYPE_PRIVATE17 = 1L << 28,
  1893. eLEXTYPE_PRIVATE18 = 1L << 29,
  1894. eLEXTYPE_PRIVATE19 = 1L << 30,
  1895. eLEXTYPE_PRIVATE20 = 1L << 31
  1896.     }  SPLEXICONTYPE;
  1897. typedef /* [hidden] */ 
  1898. enum SPWORDTYPE
  1899.     { eWORDTYPE_ADDED = 1L << 0,
  1900. eWORDTYPE_DELETED = 1L << 1
  1901.     }  SPWORDTYPE;
  1902. typedef /* [hidden][restricted] */ struct SPWORDPRONUNCIATION
  1903.     {
  1904.     struct SPWORDPRONUNCIATION *pNextWordPronunciation;
  1905.     SPLEXICONTYPE eLexiconType;
  1906.     WORD LangID;
  1907.     WORD wReserved;
  1908.     SPPARTOFSPEECH ePartOfSpeech;
  1909.     SPPHONEID szPronunciation[ 1 ];
  1910.     }  SPWORDPRONUNCIATION;
  1911. typedef /* [hidden][restricted] */ struct SPWORDPRONUNCIATIONLIST
  1912.     {
  1913.     ULONG ulSize;
  1914.     BYTE *pvBuffer;
  1915.     SPWORDPRONUNCIATION *pFirstWordPronunciation;
  1916.     }  SPWORDPRONUNCIATIONLIST;
  1917. typedef /* [hidden][restricted] */ struct SPWORD
  1918.     {
  1919.     struct SPWORD *pNextWord;
  1920.     WORD LangID;
  1921.     WORD wReserved;
  1922.     SPWORDTYPE eWordType;
  1923.     WCHAR *pszWord;
  1924.     SPWORDPRONUNCIATION *pFirstWordPronunciation;
  1925.     }  SPWORD;
  1926. typedef /* [hidden][restricted] */ struct SPWORDLIST
  1927.     {
  1928.     ULONG ulSize;
  1929.     BYTE *pvBuffer;
  1930.     SPWORD *pFirstWord;
  1931.     }  SPWORDLIST;
  1932. extern RPC_IF_HANDLE __MIDL_itf_sapi_0270_v0_0_c_ifspec;
  1933. extern RPC_IF_HANDLE __MIDL_itf_sapi_0270_v0_0_s_ifspec;
  1934. #ifndef __ISpLexicon_INTERFACE_DEFINED__
  1935. #define __ISpLexicon_INTERFACE_DEFINED__
  1936. /* interface ISpLexicon */
  1937. /* [restricted][unique][helpstring][uuid][object] */ 
  1938. EXTERN_C const IID IID_ISpLexicon;
  1939. #if defined(__cplusplus) && !defined(CINTERFACE)
  1940.     
  1941.     MIDL_INTERFACE("DA41A7C2-5383-4DB2-916B-6C1719E3DB58")
  1942.     ISpLexicon : public IUnknown
  1943.     {
  1944.     public:
  1945.         virtual HRESULT STDMETHODCALLTYPE GetPronunciations( 
  1946.             /* [in] */ const WCHAR *pszWord,
  1947.             /* [in] */ WORD LangID,
  1948.             /* [in] */ DWORD dwFlags,
  1949.             /* [out][in] */ SPWORDPRONUNCIATIONLIST *pWordPronunciationList) = 0;
  1950.         
  1951.         virtual HRESULT STDMETHODCALLTYPE AddPronunciation( 
  1952.             /* [in] */ const WCHAR *pszWord,
  1953.             /* [in] */ WORD LangID,
  1954.             /* [in] */ SPPARTOFSPEECH ePartOfSpeech,
  1955.             /* [in] */ const SPPHONEID *pszPronunciation) = 0;
  1956.         
  1957.         virtual HRESULT STDMETHODCALLTYPE RemovePronunciation( 
  1958.             /* [in] */ const WCHAR *pszWord,
  1959.             /* [in] */ WORD LangID,
  1960.             /* [in] */ SPPARTOFSPEECH ePartOfSpeech,
  1961.             /* [in] */ const SPPHONEID *pszPronunciation) = 0;
  1962.         
  1963.         virtual HRESULT STDMETHODCALLTYPE GetGeneration( 
  1964.             DWORD *pdwGeneration) = 0;
  1965.         
  1966.         virtual HRESULT STDMETHODCALLTYPE GetGenerationChange( 
  1967.             /* [in] */ DWORD dwFlags,
  1968.             /* [out][in] */ DWORD *pdwGeneration,
  1969.             /* [out][in] */ SPWORDLIST *pWordList) = 0;
  1970.         
  1971.         virtual HRESULT STDMETHODCALLTYPE GetWords( 
  1972.             /* [in] */ DWORD dwFlags,
  1973.             /* [out][in] */ DWORD *pdwGeneration,
  1974.             /* [out][in] */ DWORD *pdwCookie,
  1975.             /* [out][in] */ SPWORDLIST *pWordList) = 0;
  1976.         
  1977.     };
  1978.     
  1979. #else  /* C style interface */
  1980.     typedef struct ISpLexiconVtbl
  1981.     {
  1982.         BEGIN_INTERFACE
  1983.         
  1984.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  1985.             ISpLexicon * This,
  1986.             /* [in] */ REFIID riid,
  1987.             /* [iid_is][out] */ void **ppvObject);
  1988.         
  1989.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  1990.             ISpLexicon * This);
  1991.         
  1992.         ULONG ( STDMETHODCALLTYPE *Release )( 
  1993.             ISpLexicon * This);
  1994.         
  1995.         HRESULT ( STDMETHODCALLTYPE *GetPronunciations )( 
  1996.             ISpLexicon * This,
  1997.             /* [in] */ const WCHAR *pszWord,
  1998.             /* [in] */ WORD LangID,
  1999.             /* [in] */ DWORD dwFlags,
  2000.             /* [out][in] */ SPWORDPRONUNCIATIONLIST *pWordPronunciationList);
  2001.         
  2002.         HRESULT ( STDMETHODCALLTYPE *AddPronunciation )( 
  2003.             ISpLexicon * This,
  2004.             /* [in] */ const WCHAR *pszWord,
  2005.             /* [in] */ WORD LangID,
  2006.             /* [in] */ SPPARTOFSPEECH ePartOfSpeech,
  2007.             /* [in] */ const SPPHONEID *pszPronunciation);
  2008.         
  2009.         HRESULT ( STDMETHODCALLTYPE *RemovePronunciation )( 
  2010.             ISpLexicon * This,
  2011.             /* [in] */ const WCHAR *pszWord,
  2012.             /* [in] */ WORD LangID,
  2013.             /* [in] */ SPPARTOFSPEECH ePartOfSpeech,
  2014.             /* [in] */ const SPPHONEID *pszPronunciation);
  2015.         
  2016.         HRESULT ( STDMETHODCALLTYPE *GetGeneration )( 
  2017.             ISpLexicon * This,
  2018.             DWORD *pdwGeneration);
  2019.         
  2020.         HRESULT ( STDMETHODCALLTYPE *GetGenerationChange )( 
  2021.             ISpLexicon * This,
  2022.             /* [in] */ DWORD dwFlags,
  2023.             /* [out][in] */ DWORD *pdwGeneration,
  2024.             /* [out][in] */ SPWORDLIST *pWordList);
  2025.         
  2026.         HRESULT ( STDMETHODCALLTYPE *GetWords )( 
  2027.             ISpLexicon * This,
  2028.             /* [in] */ DWORD dwFlags,
  2029.             /* [out][in] */ DWORD *pdwGeneration,
  2030.             /* [out][in] */ DWORD *pdwCookie,
  2031.             /* [out][in] */ SPWORDLIST *pWordList);
  2032.         
  2033.         END_INTERFACE
  2034.     } ISpLexiconVtbl;
  2035.     interface ISpLexicon
  2036.     {
  2037.         CONST_VTBL struct ISpLexiconVtbl *lpVtbl;
  2038.     };
  2039.     
  2040. #ifdef COBJMACROS
  2041. #define ISpLexicon_QueryInterface(This,riid,ppvObject)
  2042.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  2043. #define ISpLexicon_AddRef(This)
  2044.     (This)->lpVtbl -> AddRef(This)
  2045. #define ISpLexicon_Release(This)
  2046.     (This)->lpVtbl -> Release(This)
  2047. #define ISpLexicon_GetPronunciations(This,pszWord,LangID,dwFlags,pWordPronunciationList)
  2048.     (This)->lpVtbl -> GetPronunciations(This,pszWord,LangID,dwFlags,pWordPronunciationList)
  2049. #define ISpLexicon_AddPronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation)
  2050.     (This)->lpVtbl -> AddPronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation)
  2051. #define ISpLexicon_RemovePronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation)
  2052.     (This)->lpVtbl -> RemovePronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation)
  2053. #define ISpLexicon_GetGeneration(This,pdwGeneration)
  2054.     (This)->lpVtbl -> GetGeneration(This,pdwGeneration)
  2055. #define ISpLexicon_GetGenerationChange(This,dwFlags,pdwGeneration,pWordList)
  2056.     (This)->lpVtbl -> GetGenerationChange(This,dwFlags,pdwGeneration,pWordList)
  2057. #define ISpLexicon_GetWords(This,dwFlags,pdwGeneration,pdwCookie,pWordList)
  2058.     (This)->lpVtbl -> GetWords(This,dwFlags,pdwGeneration,pdwCookie,pWordList)
  2059. #endif /* COBJMACROS */
  2060. #endif  /* C style interface */
  2061. HRESULT STDMETHODCALLTYPE ISpLexicon_GetPronunciations_Proxy( 
  2062.     ISpLexicon * This,
  2063.     /* [in] */ const WCHAR *pszWord,
  2064.     /* [in] */ WORD LangID,
  2065.     /* [in] */ DWORD dwFlags,
  2066.     /* [out][in] */ SPWORDPRONUNCIATIONLIST *pWordPronunciationList);
  2067. void __RPC_STUB ISpLexicon_GetPronunciations_Stub(
  2068.     IRpcStubBuffer *This,
  2069.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2070.     PRPC_MESSAGE _pRpcMessage,
  2071.     DWORD *_pdwStubPhase);
  2072. HRESULT STDMETHODCALLTYPE ISpLexicon_AddPronunciation_Proxy( 
  2073.     ISpLexicon * This,
  2074.     /* [in] */ const WCHAR *pszWord,
  2075.     /* [in] */ WORD LangID,
  2076.     /* [in] */ SPPARTOFSPEECH ePartOfSpeech,
  2077.     /* [in] */ const SPPHONEID *pszPronunciation);
  2078. void __RPC_STUB ISpLexicon_AddPronunciation_Stub(
  2079.     IRpcStubBuffer *This,
  2080.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2081.     PRPC_MESSAGE _pRpcMessage,
  2082.     DWORD *_pdwStubPhase);
  2083. HRESULT STDMETHODCALLTYPE ISpLexicon_RemovePronunciation_Proxy( 
  2084.     ISpLexicon * This,
  2085.     /* [in] */ const WCHAR *pszWord,
  2086.     /* [in] */ WORD LangID,
  2087.     /* [in] */ SPPARTOFSPEECH ePartOfSpeech,
  2088.     /* [in] */ const SPPHONEID *pszPronunciation);
  2089. void __RPC_STUB ISpLexicon_RemovePronunciation_Stub(
  2090.     IRpcStubBuffer *This,
  2091.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2092.     PRPC_MESSAGE _pRpcMessage,
  2093.     DWORD *_pdwStubPhase);
  2094. HRESULT STDMETHODCALLTYPE ISpLexicon_GetGeneration_Proxy( 
  2095.     ISpLexicon * This,
  2096.     DWORD *pdwGeneration);
  2097. void __RPC_STUB ISpLexicon_GetGeneration_Stub(
  2098.     IRpcStubBuffer *This,
  2099.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2100.     PRPC_MESSAGE _pRpcMessage,
  2101.     DWORD *_pdwStubPhase);
  2102. HRESULT STDMETHODCALLTYPE ISpLexicon_GetGenerationChange_Proxy( 
  2103.     ISpLexicon * This,
  2104.     /* [in] */ DWORD dwFlags,
  2105.     /* [out][in] */ DWORD *pdwGeneration,
  2106.     /* [out][in] */ SPWORDLIST *pWordList);
  2107. void __RPC_STUB ISpLexicon_GetGenerationChange_Stub(
  2108.     IRpcStubBuffer *This,
  2109.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2110.     PRPC_MESSAGE _pRpcMessage,
  2111.     DWORD *_pdwStubPhase);
  2112. HRESULT STDMETHODCALLTYPE ISpLexicon_GetWords_Proxy( 
  2113.     ISpLexicon * This,
  2114.     /* [in] */ DWORD dwFlags,
  2115.     /* [out][in] */ DWORD *pdwGeneration,
  2116.     /* [out][in] */ DWORD *pdwCookie,
  2117.     /* [out][in] */ SPWORDLIST *pWordList);
  2118. void __RPC_STUB ISpLexicon_GetWords_Stub(
  2119.     IRpcStubBuffer *This,
  2120.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2121.     PRPC_MESSAGE _pRpcMessage,
  2122.     DWORD *_pdwStubPhase);
  2123. #endif  /* __ISpLexicon_INTERFACE_DEFINED__ */
  2124. #ifndef __ISpContainerLexicon_INTERFACE_DEFINED__
  2125. #define __ISpContainerLexicon_INTERFACE_DEFINED__
  2126. /* interface ISpContainerLexicon */
  2127. /* [restricted][unique][helpstring][uuid][object] */ 
  2128. EXTERN_C const IID IID_ISpContainerLexicon;
  2129. #if defined(__cplusplus) && !defined(CINTERFACE)
  2130.     
  2131.     MIDL_INTERFACE("8565572F-C094-41CC-B56E-10BD9C3FF044")
  2132.     ISpContainerLexicon : public ISpLexicon
  2133.     {
  2134.     public:
  2135.         virtual HRESULT STDMETHODCALLTYPE AddLexicon( 
  2136.             /* [in] */ ISpLexicon *pAddLexicon,
  2137.             /* [in] */ DWORD dwFlags) = 0;
  2138.         
  2139.     };
  2140.     
  2141. #else  /* C style interface */
  2142.     typedef struct ISpContainerLexiconVtbl
  2143.     {
  2144.         BEGIN_INTERFACE
  2145.         
  2146.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  2147.             ISpContainerLexicon * This,
  2148.             /* [in] */ REFIID riid,
  2149.             /* [iid_is][out] */ void **ppvObject);
  2150.         
  2151.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  2152.             ISpContainerLexicon * This);
  2153.         
  2154.         ULONG ( STDMETHODCALLTYPE *Release )( 
  2155.             ISpContainerLexicon * This);
  2156.         
  2157.         HRESULT ( STDMETHODCALLTYPE *GetPronunciations )( 
  2158.             ISpContainerLexicon * This,
  2159.             /* [in] */ const WCHAR *pszWord,
  2160.             /* [in] */ WORD LangID,
  2161.             /* [in] */ DWORD dwFlags,
  2162.             /* [out][in] */ SPWORDPRONUNCIATIONLIST *pWordPronunciationList);
  2163.         
  2164.         HRESULT ( STDMETHODCALLTYPE *AddPronunciation )( 
  2165.             ISpContainerLexicon * This,
  2166.             /* [in] */ const WCHAR *pszWord,
  2167.             /* [in] */ WORD LangID,
  2168.             /* [in] */ SPPARTOFSPEECH ePartOfSpeech,
  2169.             /* [in] */ const SPPHONEID *pszPronunciation);
  2170.         
  2171.         HRESULT ( STDMETHODCALLTYPE *RemovePronunciation )( 
  2172.             ISpContainerLexicon * This,
  2173.             /* [in] */ const WCHAR *pszWord,
  2174.             /* [in] */ WORD LangID,
  2175.             /* [in] */ SPPARTOFSPEECH ePartOfSpeech,
  2176.             /* [in] */ const SPPHONEID *pszPronunciation);
  2177.         
  2178.         HRESULT ( STDMETHODCALLTYPE *GetGeneration )( 
  2179.             ISpContainerLexicon * This,
  2180.             DWORD *pdwGeneration);
  2181.         
  2182.         HRESULT ( STDMETHODCALLTYPE *GetGenerationChange )( 
  2183.             ISpContainerLexicon * This,
  2184.             /* [in] */ DWORD dwFlags,
  2185.             /* [out][in] */ DWORD *pdwGeneration,
  2186.             /* [out][in] */ SPWORDLIST *pWordList);
  2187.         
  2188.         HRESULT ( STDMETHODCALLTYPE *GetWords )( 
  2189.             ISpContainerLexicon * This,
  2190.             /* [in] */ DWORD dwFlags,
  2191.             /* [out][in] */ DWORD *pdwGeneration,
  2192.             /* [out][in] */ DWORD *pdwCookie,
  2193.             /* [out][in] */ SPWORDLIST *pWordList);
  2194.         
  2195.         HRESULT ( STDMETHODCALLTYPE *AddLexicon )( 
  2196.             ISpContainerLexicon * This,
  2197.             /* [in] */ ISpLexicon *pAddLexicon,
  2198.             /* [in] */ DWORD dwFlags);
  2199.         
  2200.         END_INTERFACE
  2201.     } ISpContainerLexiconVtbl;
  2202.     interface ISpContainerLexicon
  2203.     {
  2204.         CONST_VTBL struct ISpContainerLexiconVtbl *lpVtbl;
  2205.     };
  2206.     
  2207. #ifdef COBJMACROS
  2208. #define ISpContainerLexicon_QueryInterface(This,riid,ppvObject)
  2209.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  2210. #define ISpContainerLexicon_AddRef(This)
  2211.     (This)->lpVtbl -> AddRef(This)
  2212. #define ISpContainerLexicon_Release(This)
  2213.     (This)->lpVtbl -> Release(This)
  2214. #define ISpContainerLexicon_GetPronunciations(This,pszWord,LangID,dwFlags,pWordPronunciationList)
  2215.     (This)->lpVtbl -> GetPronunciations(This,pszWord,LangID,dwFlags,pWordPronunciationList)
  2216. #define ISpContainerLexicon_AddPronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation)
  2217.     (This)->lpVtbl -> AddPronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation)
  2218. #define ISpContainerLexicon_RemovePronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation)
  2219.     (This)->lpVtbl -> RemovePronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation)
  2220. #define ISpContainerLexicon_GetGeneration(This,pdwGeneration)
  2221.     (This)->lpVtbl -> GetGeneration(This,pdwGeneration)
  2222. #define ISpContainerLexicon_GetGenerationChange(This,dwFlags,pdwGeneration,pWordList)
  2223.     (This)->lpVtbl -> GetGenerationChange(This,dwFlags,pdwGeneration,pWordList)
  2224. #define ISpContainerLexicon_GetWords(This,dwFlags,pdwGeneration,pdwCookie,pWordList)
  2225.     (This)->lpVtbl -> GetWords(This,dwFlags,pdwGeneration,pdwCookie,pWordList)
  2226. #define ISpContainerLexicon_AddLexicon(This,pAddLexicon,dwFlags)
  2227.     (This)->lpVtbl -> AddLexicon(This,pAddLexicon,dwFlags)
  2228. #endif /* COBJMACROS */
  2229. #endif  /* C style interface */
  2230. HRESULT STDMETHODCALLTYPE ISpContainerLexicon_AddLexicon_Proxy( 
  2231.     ISpContainerLexicon * This,
  2232.     /* [in] */ ISpLexicon *pAddLexicon,
  2233.     /* [in] */ DWORD dwFlags);
  2234. void __RPC_STUB ISpContainerLexicon_AddLexicon_Stub(
  2235.     IRpcStubBuffer *This,
  2236.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2237.     PRPC_MESSAGE _pRpcMessage,
  2238.     DWORD *_pdwStubPhase);
  2239. #endif  /* __ISpContainerLexicon_INTERFACE_DEFINED__ */
  2240. #ifndef __ISpPhoneConverter_INTERFACE_DEFINED__
  2241. #define __ISpPhoneConverter_INTERFACE_DEFINED__
  2242. /* interface ISpPhoneConverter */
  2243. /* [restricted][unique][helpstring][uuid][object] */ 
  2244. EXTERN_C const IID IID_ISpPhoneConverter;
  2245. #if defined(__cplusplus) && !defined(CINTERFACE)
  2246.     
  2247.     MIDL_INTERFACE("8445C581-0CAC-4A38-ABFE-9B2CE2826455")
  2248.     ISpPhoneConverter : public ISpObjectWithToken
  2249.     {
  2250.     public:
  2251.         virtual HRESULT STDMETHODCALLTYPE PhoneToId( 
  2252.             /* [in] */ const WCHAR *pszPhone,
  2253.             /* [out] */ SPPHONEID *pId) = 0;
  2254.         
  2255.         virtual HRESULT STDMETHODCALLTYPE IdToPhone( 
  2256.             /* [in] */ const SPPHONEID *pId,
  2257.             /* [out] */ WCHAR *pszPhone) = 0;
  2258.         
  2259.     };
  2260.     
  2261. #else  /* C style interface */
  2262.     typedef struct ISpPhoneConverterVtbl
  2263.     {
  2264.         BEGIN_INTERFACE
  2265.         
  2266.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  2267.             ISpPhoneConverter * This,
  2268.             /* [in] */ REFIID riid,
  2269.             /* [iid_is][out] */ void **ppvObject);
  2270.         
  2271.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  2272.             ISpPhoneConverter * This);
  2273.         
  2274.         ULONG ( STDMETHODCALLTYPE *Release )( 
  2275.             ISpPhoneConverter * This);
  2276.         
  2277.         HRESULT ( STDMETHODCALLTYPE *SetObjectToken )( 
  2278.             ISpPhoneConverter * This,
  2279.             ISpObjectToken *pToken);
  2280.         
  2281.         HRESULT ( STDMETHODCALLTYPE *GetObjectToken )( 
  2282.             ISpPhoneConverter * This,
  2283.             ISpObjectToken **ppToken);
  2284.         
  2285.         HRESULT ( STDMETHODCALLTYPE *PhoneToId )( 
  2286.             ISpPhoneConverter * This,
  2287.             /* [in] */ const WCHAR *pszPhone,
  2288.             /* [out] */ SPPHONEID *pId);
  2289.         
  2290.         HRESULT ( STDMETHODCALLTYPE *IdToPhone )( 
  2291.             ISpPhoneConverter * This,
  2292.             /* [in] */ const SPPHONEID *pId,
  2293.             /* [out] */ WCHAR *pszPhone);
  2294.         
  2295.         END_INTERFACE
  2296.     } ISpPhoneConverterVtbl;
  2297.     interface ISpPhoneConverter
  2298.     {
  2299.         CONST_VTBL struct ISpPhoneConverterVtbl *lpVtbl;
  2300.     };
  2301.     
  2302. #ifdef COBJMACROS
  2303. #define ISpPhoneConverter_QueryInterface(This,riid,ppvObject)
  2304.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  2305. #define ISpPhoneConverter_AddRef(This)
  2306.     (This)->lpVtbl -> AddRef(This)
  2307. #define ISpPhoneConverter_Release(This)
  2308.     (This)->lpVtbl -> Release(This)
  2309. #define ISpPhoneConverter_SetObjectToken(This,pToken)
  2310.     (This)->lpVtbl -> SetObjectToken(This,pToken)
  2311. #define ISpPhoneConverter_GetObjectToken(This,ppToken)
  2312.     (This)->lpVtbl -> GetObjectToken(This,ppToken)
  2313. #define ISpPhoneConverter_PhoneToId(This,pszPhone,pId)
  2314.     (This)->lpVtbl -> PhoneToId(This,pszPhone,pId)
  2315. #define ISpPhoneConverter_IdToPhone(This,pId,pszPhone)
  2316.     (This)->lpVtbl -> IdToPhone(This,pId,pszPhone)
  2317. #endif /* COBJMACROS */
  2318. #endif  /* C style interface */
  2319. HRESULT STDMETHODCALLTYPE ISpPhoneConverter_PhoneToId_Proxy( 
  2320.     ISpPhoneConverter * This,
  2321.     /* [in] */ const WCHAR *pszPhone,
  2322.     /* [out] */ SPPHONEID *pId);
  2323. void __RPC_STUB ISpPhoneConverter_PhoneToId_Stub(
  2324.     IRpcStubBuffer *This,
  2325.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2326.     PRPC_MESSAGE _pRpcMessage,
  2327.     DWORD *_pdwStubPhase);
  2328. HRESULT STDMETHODCALLTYPE ISpPhoneConverter_IdToPhone_Proxy( 
  2329.     ISpPhoneConverter * This,
  2330.     /* [in] */ const SPPHONEID *pId,
  2331.     /* [out] */ WCHAR *pszPhone);
  2332. void __RPC_STUB ISpPhoneConverter_IdToPhone_Stub(
  2333.     IRpcStubBuffer *This,
  2334.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2335.     PRPC_MESSAGE _pRpcMessage,
  2336.     DWORD *_pdwStubPhase);
  2337. #endif  /* __ISpPhoneConverter_INTERFACE_DEFINED__ */
  2338. /* interface __MIDL_itf_sapi_0273 */
  2339. /* [local] */ 
  2340. typedef /* [hidden][restricted] */ struct SPVPITCH
  2341.     {
  2342.     long MiddleAdj;
  2343.     long RangeAdj;
  2344.     }  SPVPITCH;
  2345. typedef /* [hidden] */ 
  2346. enum SPVACTIONS
  2347.     { SPVA_Speak = 0,
  2348. SPVA_Silence = SPVA_Speak + 1,
  2349. SPVA_Pronounce = SPVA_Silence + 1,
  2350. SPVA_Bookmark = SPVA_Pronounce + 1,
  2351. SPVA_SpellOut = SPVA_Bookmark + 1,
  2352. SPVA_Section = SPVA_SpellOut + 1,
  2353. SPVA_ParseUnknownTag = SPVA_Section + 1
  2354.     }  SPVACTIONS;
  2355. typedef /* [hidden][restricted] */ struct SPVCONTEXT
  2356.     {
  2357.     LPCWSTR pCategory;
  2358.     LPCWSTR pBefore;
  2359.     LPCWSTR pAfter;
  2360.     }  SPVCONTEXT;
  2361. typedef /* [hidden][restricted] */ struct SPVSTATE
  2362.     {
  2363.     SPVACTIONS eAction;
  2364.     WORD LangID;
  2365.     WORD wReserved;
  2366.     long EmphAdj;
  2367.     long RateAdj;
  2368.     ULONG Volume;
  2369.     SPVPITCH PitchAdj;
  2370.     ULONG SilenceMSecs;
  2371.     SPPHONEID *pPhoneIds;
  2372.     SPPARTOFSPEECH ePartOfSpeech;
  2373.     SPVCONTEXT Context;
  2374.     }  SPVSTATE;
  2375. typedef /* [hidden] */ 
  2376. enum SPRUNSTATE
  2377.     { SPRS_DONE = 1L << 0,
  2378. SPRS_IS_SPEAKING = 1L << 1
  2379.     }  SPRUNSTATE;
  2380. typedef /* [hidden] */ 
  2381. enum SPVLIMITS
  2382.     { SPMIN_VOLUME = 0,
  2383. SPMAX_VOLUME = 100,
  2384. SPMIN_RATE = -10,
  2385. SPMAX_RATE = 10
  2386.     }  SPVLIMITS;
  2387. typedef /* [hidden] */ 
  2388. enum SPVPRIORITY
  2389.     { SPVPRI_NORMAL = 0,
  2390. SPVPRI_ALERT = 1L << 0,
  2391. SPVPRI_OVER = 1L << 1
  2392.     }  SPVPRIORITY;
  2393. typedef /* [hidden][restricted] */ struct SPVOICESTATUS
  2394.     {
  2395.     ULONG ulCurrentStream;
  2396.     ULONG ulLastStreamQueued;
  2397.     HRESULT hrLastResult;
  2398.     DWORD dwRunningState;
  2399.     ULONG ulInputWordPos;
  2400.     ULONG ulInputWordLen;
  2401.     ULONG ulInputSentPos;
  2402.     ULONG ulInputSentLen;
  2403.     LONG lBookmarkId;
  2404.     SPPHONEID PhonemeId;
  2405.     SPVISEMES VisemeId;
  2406.     DWORD dwReserved1;
  2407.     DWORD dwReserved2;
  2408.     }  SPVOICESTATUS;
  2409. typedef /* [hidden] */ 
  2410. enum SPEAKFLAGS
  2411.     { SPF_DEFAULT = 0,
  2412. SPF_ASYNC = 1L << 0,
  2413. SPF_PURGEBEFORESPEAK = 1L << 1,
  2414. SPF_IS_FILENAME = 1L << 2,
  2415. SPF_IS_XML = 1L << 3,
  2416. SPF_IS_NOT_XML = 1L << 4,
  2417. SPF_PERSIST_XML = 1L << 5,
  2418. SPF_NLP_SPEAK_PUNC = 1L << 6,
  2419. SPF_NLP_MASK = SPF_NLP_SPEAK_PUNC,
  2420. SPF_VOICE_MASK = SPF_ASYNC | SPF_PURGEBEFORESPEAK | SPF_IS_FILENAME | SPF_IS_XML | SPF_IS_NOT_XML | SPF_NLP_MASK | SPF_PERSIST_XML,
  2421. SPF_UNUSED_FLAGS = ~SPF_VOICE_MASK
  2422.     }  SPEAKFLAGS;
  2423. extern RPC_IF_HANDLE __MIDL_itf_sapi_0273_v0_0_c_ifspec;
  2424. extern RPC_IF_HANDLE __MIDL_itf_sapi_0273_v0_0_s_ifspec;
  2425. #ifndef __ISpVoice_INTERFACE_DEFINED__
  2426. #define __ISpVoice_INTERFACE_DEFINED__
  2427. /* interface ISpVoice */
  2428. /* [restricted][unique][helpstring][uuid][object] */ 
  2429. EXTERN_C const IID IID_ISpVoice;
  2430. #if defined(__cplusplus) && !defined(CINTERFACE)
  2431.     
  2432.     MIDL_INTERFACE("6C44DF74-72B9-4992-A1EC-EF996E0422D4")
  2433.     ISpVoice : public ISpEventSource
  2434.     {
  2435.     public:
  2436.         virtual HRESULT STDMETHODCALLTYPE SetOutput( 
  2437.             /* [in] */ IUnknown *pUnkOutput,
  2438.             /* [in] */ BOOL fAllowFormatChanges) = 0;
  2439.         
  2440.         virtual HRESULT STDMETHODCALLTYPE GetOutputObjectToken( 
  2441.             /* [out] */ ISpObjectToken **ppObjectToken) = 0;
  2442.         
  2443.         virtual HRESULT STDMETHODCALLTYPE GetOutputStream( 
  2444.             /* [out] */ ISpStreamFormat **ppStream) = 0;
  2445.         
  2446.         virtual HRESULT STDMETHODCALLTYPE Pause( void) = 0;
  2447.         
  2448.         virtual HRESULT STDMETHODCALLTYPE Resume( void) = 0;
  2449.         
  2450.         virtual HRESULT STDMETHODCALLTYPE SetVoice( 
  2451.             /* [in] */ ISpObjectToken *pToken) = 0;
  2452.         
  2453.         virtual HRESULT STDMETHODCALLTYPE GetVoice( 
  2454.             /* [out] */ ISpObjectToken **ppToken) = 0;
  2455.         
  2456.         virtual HRESULT STDMETHODCALLTYPE Speak( 
  2457.             /* [string][in] */ const WCHAR *pwcs,
  2458.             /* [in] */ DWORD dwFlags,
  2459.             /* [out] */ ULONG *pulStreamNumber) = 0;
  2460.         
  2461.         virtual HRESULT STDMETHODCALLTYPE SpeakStream( 
  2462.             /* [in] */ IStream *pStream,
  2463.             /* [in] */ DWORD dwFlags,
  2464.             /* [out] */ ULONG *pulStreamNumber) = 0;
  2465.         
  2466.         virtual HRESULT STDMETHODCALLTYPE GetStatus( 
  2467.             /* [out] */ SPVOICESTATUS *pStatus,
  2468.             /* [string][out] */ WCHAR **ppszLastBookmark) = 0;
  2469.         
  2470.         virtual HRESULT STDMETHODCALLTYPE Skip( 
  2471.             /* [string][in] */ WCHAR *pItemType,
  2472.             /* [in] */ long lNumItems,
  2473.             /* [out] */ ULONG *pulNumSkipped) = 0;
  2474.         
  2475.         virtual HRESULT STDMETHODCALLTYPE SetPriority( 
  2476.             /* [in] */ SPVPRIORITY ePriority) = 0;
  2477.         
  2478.         virtual HRESULT STDMETHODCALLTYPE GetPriority( 
  2479.             /* [out] */ SPVPRIORITY *pePriority) = 0;
  2480.         
  2481.         virtual HRESULT STDMETHODCALLTYPE SetAlertBoundary( 
  2482.             /* [in] */ SPEVENTENUM eBoundary) = 0;
  2483.         
  2484.         virtual HRESULT STDMETHODCALLTYPE GetAlertBoundary( 
  2485.             /* [out] */ SPEVENTENUM *peBoundary) = 0;
  2486.         
  2487.         virtual HRESULT STDMETHODCALLTYPE SetRate( 
  2488.             /* [in] */ long RateAdjust) = 0;
  2489.         
  2490.         virtual HRESULT STDMETHODCALLTYPE GetRate( 
  2491.             /* [out] */ long *pRateAdjust) = 0;
  2492.         
  2493.         virtual HRESULT STDMETHODCALLTYPE SetVolume( 
  2494.             /* [in] */ USHORT usVolume) = 0;
  2495.         
  2496.         virtual HRESULT STDMETHODCALLTYPE GetVolume( 
  2497.             /* [out] */ USHORT *pusVolume) = 0;
  2498.         
  2499.         virtual HRESULT STDMETHODCALLTYPE WaitUntilDone( 
  2500.             /* [in] */ ULONG msTimeout) = 0;
  2501.         
  2502.         virtual HRESULT STDMETHODCALLTYPE SetSyncSpeakTimeout( 
  2503.             /* [in] */ ULONG msTimeout) = 0;
  2504.         
  2505.         virtual HRESULT STDMETHODCALLTYPE GetSyncSpeakTimeout( 
  2506.             /* [out] */ ULONG *pmsTimeout) = 0;
  2507.         
  2508.         virtual /* [local] */ HANDLE STDMETHODCALLTYPE SpeakCompleteEvent( void) = 0;
  2509.         
  2510.         virtual /* [local] */ HRESULT STDMETHODCALLTYPE IsUISupported( 
  2511.             /* [in] */ const WCHAR *pszTypeOfUI,
  2512.             /* [in] */ void *pvExtraData,
  2513.             /* [in] */ ULONG cbExtraData,
  2514.             /* [out] */ BOOL *pfSupported) = 0;
  2515.         
  2516.         virtual /* [local] */ HRESULT STDMETHODCALLTYPE DisplayUI( 
  2517.             /* [in] */ HWND hwndParent,
  2518.             /* [in] */ const WCHAR *pszTitle,
  2519.             /* [in] */ const WCHAR *pszTypeOfUI,
  2520.             /* [in] */ void *pvExtraData,
  2521.             /* [in] */ ULONG cbExtraData) = 0;
  2522.         
  2523.     };
  2524.     
  2525. #else  /* C style interface */
  2526.     typedef struct ISpVoiceVtbl
  2527.     {
  2528.         BEGIN_INTERFACE
  2529.         
  2530.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  2531.             ISpVoice * This,
  2532.             /* [in] */ REFIID riid,
  2533.             /* [iid_is][out] */ void **ppvObject);
  2534.         
  2535.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  2536.             ISpVoice * This);
  2537.         
  2538.         ULONG ( STDMETHODCALLTYPE *Release )( 
  2539.             ISpVoice * This);
  2540.         
  2541.         HRESULT ( STDMETHODCALLTYPE *SetNotifySink )( 
  2542.             ISpVoice * This,
  2543.             /* [in] */ ISpNotifySink *pNotifySink);
  2544.         
  2545.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *SetNotifyWindowMessage )( 
  2546.             ISpVoice * This,
  2547.             /* [in] */ HWND hWnd,
  2548.             /* [in] */ UINT Msg,
  2549.             /* [in] */ WPARAM wParam,
  2550.             /* [in] */ LPARAM lParam);
  2551.         
  2552.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *SetNotifyCallbackFunction )( 
  2553.             ISpVoice * This,
  2554.             /* [in] */ SPNOTIFYCALLBACK *pfnCallback,
  2555.             /* [in] */ WPARAM wParam,
  2556.             /* [in] */ LPARAM lParam);
  2557.         
  2558.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *SetNotifyCallbackInterface )( 
  2559.             ISpVoice * This,
  2560.             /* [in] */ ISpNotifyCallback *pSpCallback,
  2561.             /* [in] */ WPARAM wParam,
  2562.             /* [in] */ LPARAM lParam);
  2563.         
  2564.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *SetNotifyWin32Event )( 
  2565.             ISpVoice * This);
  2566.         
  2567.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *WaitForNotifyEvent )( 
  2568.             ISpVoice * This,
  2569.             /* [in] */ DWORD dwMilliseconds);
  2570.         
  2571.         /* [local] */ HANDLE ( STDMETHODCALLTYPE *GetNotifyEventHandle )( 
  2572.             ISpVoice * This);
  2573.         
  2574.         HRESULT ( STDMETHODCALLTYPE *SetInterest )( 
  2575.             ISpVoice * This,
  2576.             /* [in] */ ULONGLONG ullEventInterest,
  2577.             /* [in] */ ULONGLONG ullQueuedInterest);
  2578.         
  2579.         HRESULT ( STDMETHODCALLTYPE *GetEvents )( 
  2580.             ISpVoice * This,
  2581.             /* [in] */ ULONG ulCount,
  2582.             /* [size_is][out] */ SPEVENT *pEventArray,
  2583.             /* [out] */ ULONG *pulFetched);
  2584.         
  2585.         HRESULT ( STDMETHODCALLTYPE *GetInfo )( 
  2586.             ISpVoice * This,
  2587.             /* [out] */ SPEVENTSOURCEINFO *pInfo);
  2588.         
  2589.         HRESULT ( STDMETHODCALLTYPE *SetOutput )( 
  2590.             ISpVoice * This,
  2591.             /* [in] */ IUnknown *pUnkOutput,
  2592.             /* [in] */ BOOL fAllowFormatChanges);
  2593.         
  2594.         HRESULT ( STDMETHODCALLTYPE *GetOutputObjectToken )( 
  2595.             ISpVoice * This,
  2596.             /* [out] */ ISpObjectToken **ppObjectToken);
  2597.         
  2598.         HRESULT ( STDMETHODCALLTYPE *GetOutputStream )( 
  2599.             ISpVoice * This,
  2600.             /* [out] */ ISpStreamFormat **ppStream);
  2601.         
  2602.         HRESULT ( STDMETHODCALLTYPE *Pause )( 
  2603.             ISpVoice * This);
  2604.         
  2605.         HRESULT ( STDMETHODCALLTYPE *Resume )( 
  2606.             ISpVoice * This);
  2607.         
  2608.         HRESULT ( STDMETHODCALLTYPE *SetVoice )( 
  2609.             ISpVoice * This,
  2610.             /* [in] */ ISpObjectToken *pToken);
  2611.         
  2612.         HRESULT ( STDMETHODCALLTYPE *GetVoice )( 
  2613.             ISpVoice * This,
  2614.             /* [out] */ ISpObjectToken **ppToken);
  2615.         
  2616.         HRESULT ( STDMETHODCALLTYPE *Speak )( 
  2617.             ISpVoice * This,
  2618.             /* [string][in] */ const WCHAR *pwcs,
  2619.             /* [in] */ DWORD dwFlags,
  2620.             /* [out] */ ULONG *pulStreamNumber);
  2621.         
  2622.         HRESULT ( STDMETHODCALLTYPE *SpeakStream )( 
  2623.             ISpVoice * This,
  2624.             /* [in] */ IStream *pStream,
  2625.             /* [in] */ DWORD dwFlags,
  2626.             /* [out] */ ULONG *pulStreamNumber);
  2627.         
  2628.         HRESULT ( STDMETHODCALLTYPE *GetStatus )( 
  2629.             ISpVoice * This,
  2630.             /* [out] */ SPVOICESTATUS *pStatus,
  2631.             /* [string][out] */ WCHAR **ppszLastBookmark);
  2632.         
  2633.         HRESULT ( STDMETHODCALLTYPE *Skip )( 
  2634.             ISpVoice * This,
  2635.             /* [string][in] */ WCHAR *pItemType,
  2636.             /* [in] */ long lNumItems,
  2637.             /* [out] */ ULONG *pulNumSkipped);
  2638.         
  2639.         HRESULT ( STDMETHODCALLTYPE *SetPriority )( 
  2640.             ISpVoice * This,
  2641.             /* [in] */ SPVPRIORITY ePriority);
  2642.         
  2643.         HRESULT ( STDMETHODCALLTYPE *GetPriority )( 
  2644.             ISpVoice * This,
  2645.             /* [out] */ SPVPRIORITY *pePriority);
  2646.         
  2647.         HRESULT ( STDMETHODCALLTYPE *SetAlertBoundary )( 
  2648.             ISpVoice * This,
  2649.             /* [in] */ SPEVENTENUM eBoundary);
  2650.         
  2651.         HRESULT ( STDMETHODCALLTYPE *GetAlertBoundary )( 
  2652.             ISpVoice * This,
  2653.             /* [out] */ SPEVENTENUM *peBoundary);
  2654.         
  2655.         HRESULT ( STDMETHODCALLTYPE *SetRate )( 
  2656.             ISpVoice * This,
  2657.             /* [in] */ long RateAdjust);
  2658.         
  2659.         HRESULT ( STDMETHODCALLTYPE *GetRate )( 
  2660.             ISpVoice * This,
  2661.             /* [out] */ long *pRateAdjust);
  2662.         
  2663.         HRESULT ( STDMETHODCALLTYPE *SetVolume )( 
  2664.             ISpVoice * This,
  2665.             /* [in] */ USHORT usVolume);
  2666.         
  2667.         HRESULT ( STDMETHODCALLTYPE *GetVolume )( 
  2668.             ISpVoice * This,
  2669.             /* [out] */ USHORT *pusVolume);
  2670.         
  2671.         HRESULT ( STDMETHODCALLTYPE *WaitUntilDone )( 
  2672.             ISpVoice * This,
  2673.             /* [in] */ ULONG msTimeout);
  2674.         
  2675.         HRESULT ( STDMETHODCALLTYPE *SetSyncSpeakTimeout )( 
  2676.             ISpVoice * This,
  2677.             /* [in] */ ULONG msTimeout);
  2678.         
  2679.         HRESULT ( STDMETHODCALLTYPE *GetSyncSpeakTimeout )( 
  2680.             ISpVoice * This,
  2681.             /* [out] */ ULONG *pmsTimeout);
  2682.         
  2683.         /* [local] */ HANDLE ( STDMETHODCALLTYPE *SpeakCompleteEvent )( 
  2684.             ISpVoice * This);
  2685.         
  2686.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *IsUISupported )( 
  2687.             ISpVoice * This,
  2688.             /* [in] */ const WCHAR *pszTypeOfUI,
  2689.             /* [in] */ void *pvExtraData,
  2690.             /* [in] */ ULONG cbExtraData,
  2691.             /* [out] */ BOOL *pfSupported);
  2692.         
  2693.         /* [local] */ HRESULT ( STDMETHODCALLTYPE *DisplayUI )( 
  2694.             ISpVoice * This,
  2695.             /* [in] */ HWND hwndParent,
  2696.             /* [in] */ const WCHAR *pszTitle,
  2697.             /* [in] */ const WCHAR *pszTypeOfUI,
  2698.             /* [in] */ void *pvExtraData,
  2699.             /* [in] */ ULONG cbExtraData);
  2700.         
  2701.         END_INTERFACE
  2702.     } ISpVoiceVtbl;
  2703.     interface ISpVoice
  2704.     {
  2705.         CONST_VTBL struct ISpVoiceVtbl *lpVtbl;
  2706.     };
  2707.     
  2708. #ifdef COBJMACROS
  2709. #define ISpVoice_QueryInterface(This,riid,ppvObject)
  2710.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  2711. #define ISpVoice_AddRef(This)
  2712.     (This)->lpVtbl -> AddRef(This)
  2713. #define ISpVoice_Release(This)
  2714.     (This)->lpVtbl -> Release(This)
  2715. #define ISpVoice_SetNotifySink(This,pNotifySink)
  2716.     (This)->lpVtbl -> SetNotifySink(This,pNotifySink)
  2717. #define ISpVoice_SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam)
  2718.     (This)->lpVtbl -> SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam)
  2719. #define ISpVoice_SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam)
  2720.     (This)->lpVtbl -> SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam)
  2721. #define ISpVoice_SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam)
  2722.     (This)->lpVtbl -> SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam)
  2723. #define ISpVoice_SetNotifyWin32Event(This)
  2724.     (This)->lpVtbl -> SetNotifyWin32Event(This)
  2725. #define ISpVoice_WaitForNotifyEvent(This,dwMilliseconds)
  2726.     (This)->lpVtbl -> WaitForNotifyEvent(This,dwMilliseconds)
  2727. #define ISpVoice_GetNotifyEventHandle(This)
  2728.     (This)->lpVtbl -> GetNotifyEventHandle(This)
  2729. #define ISpVoice_SetInterest(This,ullEventInterest,ullQueuedInterest)
  2730.     (This)->lpVtbl -> SetInterest(This,ullEventInterest,ullQueuedInterest)
  2731. #define ISpVoice_GetEvents(This,ulCount,pEventArray,pulFetched)
  2732.     (This)->lpVtbl -> GetEvents(This,ulCount,pEventArray,pulFetched)
  2733. #define ISpVoice_GetInfo(This,pInfo)
  2734.     (This)->lpVtbl -> GetInfo(This,pInfo)
  2735. #define ISpVoice_SetOutput(This,pUnkOutput,fAllowFormatChanges)
  2736.     (This)->lpVtbl -> SetOutput(This,pUnkOutput,fAllowFormatChanges)
  2737. #define ISpVoice_GetOutputObjectToken(This,ppObjectToken)
  2738.     (This)->lpVtbl -> GetOutputObjectToken(This,ppObjectToken)
  2739. #define ISpVoice_GetOutputStream(This,ppStream)
  2740.     (This)->lpVtbl -> GetOutputStream(This,ppStream)
  2741. #define ISpVoice_Pause(This)
  2742.     (This)->lpVtbl -> Pause(This)
  2743. #define ISpVoice_Resume(This)
  2744.     (This)->lpVtbl -> Resume(This)
  2745. #define ISpVoice_SetVoice(This,pToken)
  2746.     (This)->lpVtbl -> SetVoice(This,pToken)
  2747. #define ISpVoice_GetVoice(This,ppToken)
  2748.     (This)->lpVtbl -> GetVoice(This,ppToken)
  2749. #define ISpVoice_Speak(This,pwcs,dwFlags,pulStreamNumber)
  2750.     (This)->lpVtbl -> Speak(This,pwcs,dwFlags,pulStreamNumber)
  2751. #define ISpVoice_SpeakStream(This,pStream,dwFlags,pulStreamNumber)
  2752.     (This)->lpVtbl -> SpeakStream(This,pStream,dwFlags,pulStreamNumber)
  2753. #define ISpVoice_GetStatus(This,pStatus,ppszLastBookmark)
  2754.     (This)->lpVtbl -> GetStatus(This,pStatus,ppszLastBookmark)
  2755. #define ISpVoice_Skip(This,pItemType,lNumItems,pulNumSkipped)
  2756.     (This)->lpVtbl -> Skip(This,pItemType,lNumItems,pulNumSkipped)
  2757. #define ISpVoice_SetPriority(This,ePriority)
  2758.     (This)->lpVtbl -> SetPriority(This,ePriority)
  2759. #define ISpVoice_GetPriority(This,pePriority)
  2760.     (This)->lpVtbl -> GetPriority(This,pePriority)
  2761. #define ISpVoice_SetAlertBoundary(This,eBoundary)
  2762.     (This)->lpVtbl -> SetAlertBoundary(This,eBoundary)
  2763. #define ISpVoice_GetAlertBoundary(This,peBoundary)
  2764.     (This)->lpVtbl -> GetAlertBoundary(This,peBoundary)
  2765. #define ISpVoice_SetRate(This,RateAdjust)
  2766.     (This)->lpVtbl -> SetRate(This,RateAdjust)
  2767. #define ISpVoice_GetRate(This,pRateAdjust)
  2768.     (This)->lpVtbl -> GetRate(This,pRateAdjust)
  2769. #define ISpVoice_SetVolume(This,usVolume)
  2770.     (This)->lpVtbl -> SetVolume(This,usVolume)
  2771. #define ISpVoice_GetVolume(This,pusVolume)
  2772.     (This)->lpVtbl -> GetVolume(This,pusVolume)
  2773. #define ISpVoice_WaitUntilDone(This,msTimeout)
  2774.     (This)->lpVtbl -> WaitUntilDone(This,msTimeout)
  2775. #define ISpVoice_SetSyncSpeakTimeout(This,msTimeout)
  2776.     (This)->lpVtbl -> SetSyncSpeakTimeout(This,msTimeout)
  2777. #define ISpVoice_GetSyncSpeakTimeout(This,pmsTimeout)
  2778.     (This)->lpVtbl -> GetSyncSpeakTimeout(This,pmsTimeout)
  2779. #define ISpVoice_SpeakCompleteEvent(This)
  2780.     (This)->lpVtbl -> SpeakCompleteEvent(This)
  2781. #define ISpVoice_IsUISupported(This,pszTypeOfUI,pvExtraData,cbExtraData,pfSupported)
  2782.     (This)->lpVtbl -> IsUISupported(This,pszTypeOfUI,pvExtraData,cbExtraData,pfSupported)
  2783. #define ISpVoice_DisplayUI(This,hwndParent,pszTitle,pszTypeOfUI,pvExtraData,cbExtraData)
  2784.     (This)->lpVtbl -> DisplayUI(This,hwndParent,pszTitle,pszTypeOfUI,pvExtraData,cbExtraData)
  2785. #endif /* COBJMACROS */
  2786. #endif  /* C style interface */
  2787. HRESULT STDMETHODCALLTYPE ISpVoice_SetOutput_Proxy( 
  2788.     ISpVoice * This,
  2789.     /* [in] */ IUnknown *pUnkOutput,
  2790.     /* [in] */ BOOL fAllowFormatChanges);
  2791. void __RPC_STUB ISpVoice_SetOutput_Stub(
  2792.     IRpcStubBuffer *This,
  2793.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2794.     PRPC_MESSAGE _pRpcMessage,
  2795.     DWORD *_pdwStubPhase);
  2796. HRESULT STDMETHODCALLTYPE ISpVoice_GetOutputObjectToken_Proxy( 
  2797.     ISpVoice * This,
  2798.     /* [out] */ ISpObjectToken **ppObjectToken);
  2799. void __RPC_STUB ISpVoice_GetOutputObjectToken_Stub(
  2800.     IRpcStubBuffer *This,
  2801.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2802.     PRPC_MESSAGE _pRpcMessage,
  2803.     DWORD *_pdwStubPhase);
  2804. HRESULT STDMETHODCALLTYPE ISpVoice_GetOutputStream_Proxy( 
  2805.     ISpVoice * This,
  2806.     /* [out] */ ISpStreamFormat **ppStream);
  2807. void __RPC_STUB ISpVoice_GetOutputStream_Stub(
  2808.     IRpcStubBuffer *This,
  2809.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2810.     PRPC_MESSAGE _pRpcMessage,
  2811.     DWORD *_pdwStubPhase);
  2812. HRESULT STDMETHODCALLTYPE ISpVoice_Pause_Proxy( 
  2813.     ISpVoice * This);
  2814. void __RPC_STUB ISpVoice_Pause_Stub(
  2815.     IRpcStubBuffer *This,
  2816.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2817.     PRPC_MESSAGE _pRpcMessage,
  2818.     DWORD *_pdwStubPhase);
  2819. HRESULT STDMETHODCALLTYPE ISpVoice_Resume_Proxy( 
  2820.     ISpVoice * This);
  2821. void __RPC_STUB ISpVoice_Resume_Stub(
  2822.     IRpcStubBuffer *This,
  2823.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2824.     PRPC_MESSAGE _pRpcMessage,
  2825.     DWORD *_pdwStubPhase);
  2826. HRESULT STDMETHODCALLTYPE ISpVoice_SetVoice_Proxy( 
  2827.     ISpVoice * This,
  2828.     /* [in] */ ISpObjectToken *pToken);
  2829. void __RPC_STUB ISpVoice_SetVoice_Stub(
  2830.     IRpcStubBuffer *This,
  2831.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2832.     PRPC_MESSAGE _pRpcMessage,
  2833.     DWORD *_pdwStubPhase);
  2834. HRESULT STDMETHODCALLTYPE ISpVoice_GetVoice_Proxy( 
  2835.     ISpVoice * This,
  2836.     /* [out] */ ISpObjectToken **ppToken);
  2837. void __RPC_STUB ISpVoice_GetVoice_Stub(
  2838.     IRpcStubBuffer *This,
  2839.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2840.     PRPC_MESSAGE _pRpcMessage,
  2841.     DWORD *_pdwStubPhase);
  2842. HRESULT STDMETHODCALLTYPE ISpVoice_Speak_Proxy( 
  2843.     ISpVoice * This,
  2844.     /* [string][in] */ const WCHAR *pwcs,
  2845.     /* [in] */ DWORD dwFlags,
  2846.     /* [out] */ ULONG *pulStreamNumber);
  2847. void __RPC_STUB ISpVoice_Speak_Stub(
  2848.     IRpcStubBuffer *This,
  2849.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2850.     PRPC_MESSAGE _pRpcMessage,
  2851.     DWORD *_pdwStubPhase);
  2852. HRESULT STDMETHODCALLTYPE ISpVoice_SpeakStream_Proxy( 
  2853.     ISpVoice * This,
  2854.     /* [in] */ IStream *pStream,
  2855.     /* [in] */ DWORD dwFlags,
  2856.     /* [out] */ ULONG *pulStreamNumber);
  2857. void __RPC_STUB ISpVoice_SpeakStream_Stub(
  2858.     IRpcStubBuffer *This,
  2859.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2860.     PRPC_MESSAGE _pRpcMessage,
  2861.     DWORD *_pdwStubPhase);
  2862. HRESULT STDMETHODCALLTYPE ISpVoice_GetStatus_Proxy( 
  2863.     ISpVoice * This,
  2864.     /* [out] */ SPVOICESTATUS *pStatus,
  2865.     /* [string][out] */ WCHAR **ppszLastBookmark);
  2866. void __RPC_STUB ISpVoice_GetStatus_Stub(
  2867.     IRpcStubBuffer *This,
  2868.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2869.     PRPC_MESSAGE _pRpcMessage,
  2870.     DWORD *_pdwStubPhase);
  2871. HRESULT STDMETHODCALLTYPE ISpVoice_Skip_Proxy( 
  2872.     ISpVoice * This,
  2873.     /* [string][in] */ WCHAR *pItemType,
  2874.     /* [in] */ long lNumItems,
  2875.     /* [out] */ ULONG *pulNumSkipped);
  2876. void __RPC_STUB ISpVoice_Skip_Stub(
  2877.     IRpcStubBuffer *This,
  2878.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2879.     PRPC_MESSAGE _pRpcMessage,
  2880.     DWORD *_pdwStubPhase);
  2881. HRESULT STDMETHODCALLTYPE ISpVoice_SetPriority_Proxy( 
  2882.     ISpVoice * This,
  2883.     /* [in] */ SPVPRIORITY ePriority);
  2884. void __RPC_STUB ISpVoice_SetPriority_Stub(
  2885.     IRpcStubBuffer *This,
  2886.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2887.     PRPC_MESSAGE _pRpcMessage,
  2888.     DWORD *_pdwStubPhase);
  2889. HRESULT STDMETHODCALLTYPE ISpVoice_GetPriority_Proxy( 
  2890.     ISpVoice * This,
  2891.     /* [out] */ SPVPRIORITY *pePriority);
  2892. void __RPC_STUB ISpVoice_GetPriority_Stub(
  2893.     IRpcStubBuffer *This,
  2894.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2895.     PRPC_MESSAGE _pRpcMessage,
  2896.     DWORD *_pdwStubPhase);
  2897. HRESULT STDMETHODCALLTYPE ISpVoice_SetAlertBoundary_Proxy( 
  2898.     ISpVoice * This,
  2899.     /* [in] */ SPEVENTENUM eBoundary);
  2900. void __RPC_STUB ISpVoice_SetAlertBoundary_Stub(
  2901.     IRpcStubBuffer *This,
  2902.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2903.     PRPC_MESSAGE _pRpcMessage,
  2904.     DWORD *_pdwStubPhase);
  2905. HRESULT STDMETHODCALLTYPE ISpVoice_GetAlertBoundary_Proxy( 
  2906.     ISpVoice * This,
  2907.     /* [out] */ SPEVENTENUM *peBoundary);
  2908. void __RPC_STUB ISpVoice_GetAlertBoundary_Stub(
  2909.     IRpcStubBuffer *This,
  2910.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2911.     PRPC_MESSAGE _pRpcMessage,
  2912.     DWORD *_pdwStubPhase);
  2913. HRESULT STDMETHODCALLTYPE ISpVoice_SetRate_Proxy( 
  2914.     ISpVoice * This,
  2915.     /* [in] */ long RateAdjust);
  2916. void __RPC_STUB ISpVoice_SetRate_Stub(