/*** Autogenerated by WIDL 1.6 from sapi51.idl - Do not edit ***/

#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif

#include <rpc.h>
#include <rpcndr.h>

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __sapi51_h__
#define __sapi51_h__

/* Forward declarations */

#ifndef __ISpNotifySource_FWD_DEFINED__
#define __ISpNotifySource_FWD_DEFINED__
typedef interface ISpNotifySource ISpNotifySource;
#endif

#ifndef __ISpNotifySink_FWD_DEFINED__
#define __ISpNotifySink_FWD_DEFINED__
typedef interface ISpNotifySink ISpNotifySink;
#endif

#ifndef __ISpNotifyTranslator_FWD_DEFINED__
#define __ISpNotifyTranslator_FWD_DEFINED__
typedef interface ISpNotifyTranslator ISpNotifyTranslator;
#endif

#ifndef __ISpDataKey_FWD_DEFINED__
#define __ISpDataKey_FWD_DEFINED__
typedef interface ISpDataKey ISpDataKey;
#endif

#ifndef __ISpObjectWithToken_FWD_DEFINED__
#define __ISpObjectWithToken_FWD_DEFINED__
typedef interface ISpObjectWithToken ISpObjectWithToken;
#endif

#ifndef __IEnumSpObjectTokens_FWD_DEFINED__
#define __IEnumSpObjectTokens_FWD_DEFINED__
typedef interface IEnumSpObjectTokens IEnumSpObjectTokens;
#endif

#ifndef __ISpRegDataKey_FWD_DEFINED__
#define __ISpRegDataKey_FWD_DEFINED__
typedef interface ISpRegDataKey ISpRegDataKey;
#endif

#ifndef __ISpObjectTokenCategory_FWD_DEFINED__
#define __ISpObjectTokenCategory_FWD_DEFINED__
typedef interface ISpObjectTokenCategory ISpObjectTokenCategory;
#endif

#ifndef __ISpObjectToken_FWD_DEFINED__
#define __ISpObjectToken_FWD_DEFINED__
typedef interface ISpObjectToken ISpObjectToken;
#endif

#ifndef __ISpObjectTokenInit_FWD_DEFINED__
#define __ISpObjectTokenInit_FWD_DEFINED__
typedef interface ISpObjectTokenInit ISpObjectTokenInit;
#endif

#ifndef __ISpResourceManager_FWD_DEFINED__
#define __ISpResourceManager_FWD_DEFINED__
typedef interface ISpResourceManager ISpResourceManager;
#endif

#ifndef __ISpEventSource_FWD_DEFINED__
#define __ISpEventSource_FWD_DEFINED__
typedef interface ISpEventSource ISpEventSource;
#endif

#ifndef __ISpEventSink_FWD_DEFINED__
#define __ISpEventSink_FWD_DEFINED__
typedef interface ISpEventSink ISpEventSink;
#endif

#ifndef __ISpStreamFormat_FWD_DEFINED__
#define __ISpStreamFormat_FWD_DEFINED__
typedef interface ISpStreamFormat ISpStreamFormat;
#endif

#ifndef __ISpStream_FWD_DEFINED__
#define __ISpStream_FWD_DEFINED__
typedef interface ISpStream ISpStream;
#endif

#ifndef __ISpStreamFormatConverter_FWD_DEFINED__
#define __ISpStreamFormatConverter_FWD_DEFINED__
typedef interface ISpStreamFormatConverter ISpStreamFormatConverter;
#endif

#ifndef __ISpAudio_FWD_DEFINED__
#define __ISpAudio_FWD_DEFINED__
typedef interface ISpAudio ISpAudio;
#endif

#ifndef __ISpMMSysAudio_FWD_DEFINED__
#define __ISpMMSysAudio_FWD_DEFINED__
typedef interface ISpMMSysAudio ISpMMSysAudio;
#endif

#ifndef __ISpTranscript_FWD_DEFINED__
#define __ISpTranscript_FWD_DEFINED__
typedef interface ISpTranscript ISpTranscript;
#endif

#ifndef __ISpLexicon_FWD_DEFINED__
#define __ISpLexicon_FWD_DEFINED__
typedef interface ISpLexicon ISpLexicon;
#endif

#ifndef __ISpContainerLexicon_FWD_DEFINED__
#define __ISpContainerLexicon_FWD_DEFINED__
typedef interface ISpContainerLexicon ISpContainerLexicon;
#endif

#ifndef __ISpPhoneConverter_FWD_DEFINED__
#define __ISpPhoneConverter_FWD_DEFINED__
typedef interface ISpPhoneConverter ISpPhoneConverter;
#endif

#ifndef __ISpVoice_FWD_DEFINED__
#define __ISpVoice_FWD_DEFINED__
typedef interface ISpVoice ISpVoice;
#endif

#ifndef __ISpPhrase_FWD_DEFINED__
#define __ISpPhrase_FWD_DEFINED__
typedef interface ISpPhrase ISpPhrase;
#endif

#ifndef __ISpPhraseAlt_FWD_DEFINED__
#define __ISpPhraseAlt_FWD_DEFINED__
typedef interface ISpPhraseAlt ISpPhraseAlt;
#endif

#ifndef __ISpRecoResult_FWD_DEFINED__
#define __ISpRecoResult_FWD_DEFINED__
typedef interface ISpRecoResult ISpRecoResult;
#endif

#ifndef __ISpGrammarBuilder_FWD_DEFINED__
#define __ISpGrammarBuilder_FWD_DEFINED__
typedef interface ISpGrammarBuilder ISpGrammarBuilder;
#endif

#ifndef __ISpRecoGrammar_FWD_DEFINED__
#define __ISpRecoGrammar_FWD_DEFINED__
typedef interface ISpRecoGrammar ISpRecoGrammar;
#endif

#ifndef __ISpRecoContext_FWD_DEFINED__
#define __ISpRecoContext_FWD_DEFINED__
typedef interface ISpRecoContext ISpRecoContext;
#endif

#ifndef __ISpProperties_FWD_DEFINED__
#define __ISpProperties_FWD_DEFINED__
typedef interface ISpProperties ISpProperties;
#endif

#ifndef __ISpRecognizer_FWD_DEFINED__
#define __ISpRecognizer_FWD_DEFINED__
typedef interface ISpRecognizer ISpRecognizer;
#endif

#ifndef __ISpeechDataKey_FWD_DEFINED__
#define __ISpeechDataKey_FWD_DEFINED__
typedef interface ISpeechDataKey ISpeechDataKey;
#endif

#ifndef __ISpeechObjectToken_FWD_DEFINED__
#define __ISpeechObjectToken_FWD_DEFINED__
typedef interface ISpeechObjectToken ISpeechObjectToken;
#endif

#ifndef __ISpeechObjectTokens_FWD_DEFINED__
#define __ISpeechObjectTokens_FWD_DEFINED__
typedef interface ISpeechObjectTokens ISpeechObjectTokens;
#endif

#ifndef __ISpeechObjectTokenCategory_FWD_DEFINED__
#define __ISpeechObjectTokenCategory_FWD_DEFINED__
typedef interface ISpeechObjectTokenCategory ISpeechObjectTokenCategory;
#endif

#ifndef __ISpeechAudioFormat_FWD_DEFINED__
#define __ISpeechAudioFormat_FWD_DEFINED__
typedef interface ISpeechAudioFormat ISpeechAudioFormat;
#endif

#ifndef __ISpeechBaseStream_FWD_DEFINED__
#define __ISpeechBaseStream_FWD_DEFINED__
typedef interface ISpeechBaseStream ISpeechBaseStream;
#endif

#ifndef __ISpeechAudio_FWD_DEFINED__
#define __ISpeechAudio_FWD_DEFINED__
typedef interface ISpeechAudio ISpeechAudio;
#endif

#ifndef __ISpeechMMSysAudio_FWD_DEFINED__
#define __ISpeechMMSysAudio_FWD_DEFINED__
typedef interface ISpeechMMSysAudio ISpeechMMSysAudio;
#endif

#ifndef __ISpeechFileStream_FWD_DEFINED__
#define __ISpeechFileStream_FWD_DEFINED__
typedef interface ISpeechFileStream ISpeechFileStream;
#endif

#ifndef __ISpeechCustomStream_FWD_DEFINED__
#define __ISpeechCustomStream_FWD_DEFINED__
typedef interface ISpeechCustomStream ISpeechCustomStream;
#endif

#ifndef __ISpeechMemoryStream_FWD_DEFINED__
#define __ISpeechMemoryStream_FWD_DEFINED__
typedef interface ISpeechMemoryStream ISpeechMemoryStream;
#endif

#ifndef __ISpeechAudioStatus_FWD_DEFINED__
#define __ISpeechAudioStatus_FWD_DEFINED__
typedef interface ISpeechAudioStatus ISpeechAudioStatus;
#endif

#ifndef __ISpeechAudioBufferInfo_FWD_DEFINED__
#define __ISpeechAudioBufferInfo_FWD_DEFINED__
typedef interface ISpeechAudioBufferInfo ISpeechAudioBufferInfo;
#endif

#ifndef __ISpeechWaveFormatEx_FWD_DEFINED__
#define __ISpeechWaveFormatEx_FWD_DEFINED__
typedef interface ISpeechWaveFormatEx ISpeechWaveFormatEx;
#endif

#ifndef __ISpeechVoice_FWD_DEFINED__
#define __ISpeechVoice_FWD_DEFINED__
typedef interface ISpeechVoice ISpeechVoice;
#endif

#ifndef __ISpeechVoiceStatus_FWD_DEFINED__
#define __ISpeechVoiceStatus_FWD_DEFINED__
typedef interface ISpeechVoiceStatus ISpeechVoiceStatus;
#endif

#ifndef ___ISpeechVoiceEvents_FWD_DEFINED__
#define ___ISpeechVoiceEvents_FWD_DEFINED__
typedef interface _ISpeechVoiceEvents _ISpeechVoiceEvents;
#endif

#ifndef __ISpeechRecognizer_FWD_DEFINED__
#define __ISpeechRecognizer_FWD_DEFINED__
typedef interface ISpeechRecognizer ISpeechRecognizer;
#endif

#ifndef __ISpeechRecognizerStatus_FWD_DEFINED__
#define __ISpeechRecognizerStatus_FWD_DEFINED__
typedef interface ISpeechRecognizerStatus ISpeechRecognizerStatus;
#endif

#ifndef __ISpeechRecoContext_FWD_DEFINED__
#define __ISpeechRecoContext_FWD_DEFINED__
typedef interface ISpeechRecoContext ISpeechRecoContext;
#endif

#ifndef __ISpeechRecoGrammar_FWD_DEFINED__
#define __ISpeechRecoGrammar_FWD_DEFINED__
typedef interface ISpeechRecoGrammar ISpeechRecoGrammar;
#endif

#ifndef ___ISpeechRecoContextEvents_FWD_DEFINED__
#define ___ISpeechRecoContextEvents_FWD_DEFINED__
typedef interface _ISpeechRecoContextEvents _ISpeechRecoContextEvents;
#endif

#ifndef __ISpeechGrammarRule_FWD_DEFINED__
#define __ISpeechGrammarRule_FWD_DEFINED__
typedef interface ISpeechGrammarRule ISpeechGrammarRule;
#endif

#ifndef __ISpeechGrammarRules_FWD_DEFINED__
#define __ISpeechGrammarRules_FWD_DEFINED__
typedef interface ISpeechGrammarRules ISpeechGrammarRules;
#endif

#ifndef __ISpeechGrammarRuleState_FWD_DEFINED__
#define __ISpeechGrammarRuleState_FWD_DEFINED__
typedef interface ISpeechGrammarRuleState ISpeechGrammarRuleState;
#endif

#ifndef __ISpeechGrammarRuleStateTransitions_FWD_DEFINED__
#define __ISpeechGrammarRuleStateTransitions_FWD_DEFINED__
typedef interface ISpeechGrammarRuleStateTransitions ISpeechGrammarRuleStateTransitions;
#endif

#ifndef __ISpeechGrammarRuleStateTransition_FWD_DEFINED__
#define __ISpeechGrammarRuleStateTransition_FWD_DEFINED__
typedef interface ISpeechGrammarRuleStateTransition ISpeechGrammarRuleStateTransition;
#endif

#ifndef __ISpeechTextSelectionInformation_FWD_DEFINED__
#define __ISpeechTextSelectionInformation_FWD_DEFINED__
typedef interface ISpeechTextSelectionInformation ISpeechTextSelectionInformation;
#endif

#ifndef __ISpeechRecoResult_FWD_DEFINED__
#define __ISpeechRecoResult_FWD_DEFINED__
typedef interface ISpeechRecoResult ISpeechRecoResult;
#endif

#ifndef __ISpeechPhraseInfoBuilder_FWD_DEFINED__
#define __ISpeechPhraseInfoBuilder_FWD_DEFINED__
typedef interface ISpeechPhraseInfoBuilder ISpeechPhraseInfoBuilder;
#endif

#ifndef __ISpeechRecoResultTimes_FWD_DEFINED__
#define __ISpeechRecoResultTimes_FWD_DEFINED__
typedef interface ISpeechRecoResultTimes ISpeechRecoResultTimes;
#endif

#ifndef __ISpeechPhraseAlternate_FWD_DEFINED__
#define __ISpeechPhraseAlternate_FWD_DEFINED__
typedef interface ISpeechPhraseAlternate ISpeechPhraseAlternate;
#endif

#ifndef __ISpeechPhraseAlternates_FWD_DEFINED__
#define __ISpeechPhraseAlternates_FWD_DEFINED__
typedef interface ISpeechPhraseAlternates ISpeechPhraseAlternates;
#endif

#ifndef __ISpeechPhraseInfo_FWD_DEFINED__
#define __ISpeechPhraseInfo_FWD_DEFINED__
typedef interface ISpeechPhraseInfo ISpeechPhraseInfo;
#endif

#ifndef __ISpeechPhraseElement_FWD_DEFINED__
#define __ISpeechPhraseElement_FWD_DEFINED__
typedef interface ISpeechPhraseElement ISpeechPhraseElement;
#endif

#ifndef __ISpeechPhraseElements_FWD_DEFINED__
#define __ISpeechPhraseElements_FWD_DEFINED__
typedef interface ISpeechPhraseElements ISpeechPhraseElements;
#endif

#ifndef __ISpeechPhraseReplacement_FWD_DEFINED__
#define __ISpeechPhraseReplacement_FWD_DEFINED__
typedef interface ISpeechPhraseReplacement ISpeechPhraseReplacement;
#endif

#ifndef __ISpeechPhraseReplacements_FWD_DEFINED__
#define __ISpeechPhraseReplacements_FWD_DEFINED__
typedef interface ISpeechPhraseReplacements ISpeechPhraseReplacements;
#endif

#ifndef __ISpeechPhraseProperty_FWD_DEFINED__
#define __ISpeechPhraseProperty_FWD_DEFINED__
typedef interface ISpeechPhraseProperty ISpeechPhraseProperty;
#endif

#ifndef __ISpeechPhraseProperties_FWD_DEFINED__
#define __ISpeechPhraseProperties_FWD_DEFINED__
typedef interface ISpeechPhraseProperties ISpeechPhraseProperties;
#endif

#ifndef __ISpeechPhraseRule_FWD_DEFINED__
#define __ISpeechPhraseRule_FWD_DEFINED__
typedef interface ISpeechPhraseRule ISpeechPhraseRule;
#endif

#ifndef __ISpeechPhraseRules_FWD_DEFINED__
#define __ISpeechPhraseRules_FWD_DEFINED__
typedef interface ISpeechPhraseRules ISpeechPhraseRules;
#endif

#ifndef __ISpeechLexiconWords_FWD_DEFINED__
#define __ISpeechLexiconWords_FWD_DEFINED__
typedef interface ISpeechLexiconWords ISpeechLexiconWords;
#endif

#ifndef __ISpeechLexicon_FWD_DEFINED__
#define __ISpeechLexicon_FWD_DEFINED__
typedef interface ISpeechLexicon ISpeechLexicon;
#endif

#ifndef __ISpeechLexiconWord_FWD_DEFINED__
#define __ISpeechLexiconWord_FWD_DEFINED__
typedef interface ISpeechLexiconWord ISpeechLexiconWord;
#endif

#ifndef __ISpeechLexiconPronunciations_FWD_DEFINED__
#define __ISpeechLexiconPronunciations_FWD_DEFINED__
typedef interface ISpeechLexiconPronunciations ISpeechLexiconPronunciations;
#endif

#ifndef __ISpeechLexiconPronunciation_FWD_DEFINED__
#define __ISpeechLexiconPronunciation_FWD_DEFINED__
typedef interface ISpeechLexiconPronunciation ISpeechLexiconPronunciation;
#endif

#ifndef __ISpeechPhoneConverter_FWD_DEFINED__
#define __ISpeechPhoneConverter_FWD_DEFINED__
typedef interface ISpeechPhoneConverter ISpeechPhoneConverter;
#endif

#ifndef __SpNotifyTranslator_FWD_DEFINED__
#define __SpNotifyTranslator_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpNotifyTranslator SpNotifyTranslator;
#else
typedef struct SpNotifyTranslator SpNotifyTranslator;
#endif /* defined __cplusplus */
#endif /* defined __SpNotifyTranslator_FWD_DEFINED__ */

#ifndef __SpObjectTokenCategory_FWD_DEFINED__
#define __SpObjectTokenCategory_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpObjectTokenCategory SpObjectTokenCategory;
#else
typedef struct SpObjectTokenCategory SpObjectTokenCategory;
#endif /* defined __cplusplus */
#endif /* defined __SpObjectTokenCategory_FWD_DEFINED__ */

#ifndef __SpObjectToken_FWD_DEFINED__
#define __SpObjectToken_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpObjectToken SpObjectToken;
#else
typedef struct SpObjectToken SpObjectToken;
#endif /* defined __cplusplus */
#endif /* defined __SpObjectToken_FWD_DEFINED__ */

#ifndef __SpResourceManager_FWD_DEFINED__
#define __SpResourceManager_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpResourceManager SpResourceManager;
#else
typedef struct SpResourceManager SpResourceManager;
#endif /* defined __cplusplus */
#endif /* defined __SpResourceManager_FWD_DEFINED__ */

#ifndef __SpStreamFormatConverter_FWD_DEFINED__
#define __SpStreamFormatConverter_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpStreamFormatConverter SpStreamFormatConverter;
#else
typedef struct SpStreamFormatConverter SpStreamFormatConverter;
#endif /* defined __cplusplus */
#endif /* defined __SpStreamFormatConverter_FWD_DEFINED__ */

#ifndef __SpMMAudioEnum_FWD_DEFINED__
#define __SpMMAudioEnum_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpMMAudioEnum SpMMAudioEnum;
#else
typedef struct SpMMAudioEnum SpMMAudioEnum;
#endif /* defined __cplusplus */
#endif /* defined __SpMMAudioEnum_FWD_DEFINED__ */

#ifndef __SpMMAudioIn_FWD_DEFINED__
#define __SpMMAudioIn_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpMMAudioIn SpMMAudioIn;
#else
typedef struct SpMMAudioIn SpMMAudioIn;
#endif /* defined __cplusplus */
#endif /* defined __SpMMAudioIn_FWD_DEFINED__ */

#ifndef __SpMMAudioOut_FWD_DEFINED__
#define __SpMMAudioOut_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpMMAudioOut SpMMAudioOut;
#else
typedef struct SpMMAudioOut SpMMAudioOut;
#endif /* defined __cplusplus */
#endif /* defined __SpMMAudioOut_FWD_DEFINED__ */

#ifndef __SpStream_FWD_DEFINED__
#define __SpStream_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpStream SpStream;
#else
typedef struct SpStream SpStream;
#endif /* defined __cplusplus */
#endif /* defined __SpStream_FWD_DEFINED__ */

#ifndef __SpVoice_FWD_DEFINED__
#define __SpVoice_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpVoice SpVoice;
#else
typedef struct SpVoice SpVoice;
#endif /* defined __cplusplus */
#endif /* defined __SpVoice_FWD_DEFINED__ */

#ifndef __SpSharedRecoContext_FWD_DEFINED__
#define __SpSharedRecoContext_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpSharedRecoContext SpSharedRecoContext;
#else
typedef struct SpSharedRecoContext SpSharedRecoContext;
#endif /* defined __cplusplus */
#endif /* defined __SpSharedRecoContext_FWD_DEFINED__ */

#ifndef __SpInprocRecognizer_FWD_DEFINED__
#define __SpInprocRecognizer_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpInprocRecognizer SpInprocRecognizer;
#else
typedef struct SpInprocRecognizer SpInprocRecognizer;
#endif /* defined __cplusplus */
#endif /* defined __SpInprocRecognizer_FWD_DEFINED__ */

#ifndef __SpSharedRecognizer_FWD_DEFINED__
#define __SpSharedRecognizer_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpSharedRecognizer SpSharedRecognizer;
#else
typedef struct SpSharedRecognizer SpSharedRecognizer;
#endif /* defined __cplusplus */
#endif /* defined __SpSharedRecognizer_FWD_DEFINED__ */

#ifndef __SpLexicon_FWD_DEFINED__
#define __SpLexicon_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpLexicon SpLexicon;
#else
typedef struct SpLexicon SpLexicon;
#endif /* defined __cplusplus */
#endif /* defined __SpLexicon_FWD_DEFINED__ */

#ifndef __SpUnCompressedLexicon_FWD_DEFINED__
#define __SpUnCompressedLexicon_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpUnCompressedLexicon SpUnCompressedLexicon;
#else
typedef struct SpUnCompressedLexicon SpUnCompressedLexicon;
#endif /* defined __cplusplus */
#endif /* defined __SpUnCompressedLexicon_FWD_DEFINED__ */

#ifndef __SpCompressedLexicon_FWD_DEFINED__
#define __SpCompressedLexicon_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpCompressedLexicon SpCompressedLexicon;
#else
typedef struct SpCompressedLexicon SpCompressedLexicon;
#endif /* defined __cplusplus */
#endif /* defined __SpCompressedLexicon_FWD_DEFINED__ */

#ifndef __SpPhoneConverter_FWD_DEFINED__
#define __SpPhoneConverter_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpPhoneConverter SpPhoneConverter;
#else
typedef struct SpPhoneConverter SpPhoneConverter;
#endif /* defined __cplusplus */
#endif /* defined __SpPhoneConverter_FWD_DEFINED__ */

#ifndef __SpNullPhoneConverter_FWD_DEFINED__
#define __SpNullPhoneConverter_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpNullPhoneConverter SpNullPhoneConverter;
#else
typedef struct SpNullPhoneConverter SpNullPhoneConverter;
#endif /* defined __cplusplus */
#endif /* defined __SpNullPhoneConverter_FWD_DEFINED__ */

#ifndef __SpTextSelectionInformation_FWD_DEFINED__
#define __SpTextSelectionInformation_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpTextSelectionInformation SpTextSelectionInformation;
#else
typedef struct SpTextSelectionInformation SpTextSelectionInformation;
#endif /* defined __cplusplus */
#endif /* defined __SpTextSelectionInformation_FWD_DEFINED__ */

#ifndef __SpPhraseInfoBuilder_FWD_DEFINED__
#define __SpPhraseInfoBuilder_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpPhraseInfoBuilder SpPhraseInfoBuilder;
#else
typedef struct SpPhraseInfoBuilder SpPhraseInfoBuilder;
#endif /* defined __cplusplus */
#endif /* defined __SpPhraseInfoBuilder_FWD_DEFINED__ */

#ifndef __SpAudioFormat_FWD_DEFINED__
#define __SpAudioFormat_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpAudioFormat SpAudioFormat;
#else
typedef struct SpAudioFormat SpAudioFormat;
#endif /* defined __cplusplus */
#endif /* defined __SpAudioFormat_FWD_DEFINED__ */

#ifndef __SpWaveFormatEx_FWD_DEFINED__
#define __SpWaveFormatEx_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpWaveFormatEx SpWaveFormatEx;
#else
typedef struct SpWaveFormatEx SpWaveFormatEx;
#endif /* defined __cplusplus */
#endif /* defined __SpWaveFormatEx_FWD_DEFINED__ */

#ifndef __SpInProcRecoContext_FWD_DEFINED__
#define __SpInProcRecoContext_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpInProcRecoContext SpInProcRecoContext;
#else
typedef struct SpInProcRecoContext SpInProcRecoContext;
#endif /* defined __cplusplus */
#endif /* defined __SpInProcRecoContext_FWD_DEFINED__ */

#ifndef __SpCustomStream_FWD_DEFINED__
#define __SpCustomStream_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpCustomStream SpCustomStream;
#else
typedef struct SpCustomStream SpCustomStream;
#endif /* defined __cplusplus */
#endif /* defined __SpCustomStream_FWD_DEFINED__ */

#ifndef __SpFileStream_FWD_DEFINED__
#define __SpFileStream_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpFileStream SpFileStream;
#else
typedef struct SpFileStream SpFileStream;
#endif /* defined __cplusplus */
#endif /* defined __SpFileStream_FWD_DEFINED__ */

#ifndef __SpMemoryStream_FWD_DEFINED__
#define __SpMemoryStream_FWD_DEFINED__
#ifdef __cplusplus
typedef class SpMemoryStream SpMemoryStream;
#else
typedef struct SpMemoryStream SpMemoryStream;
#endif /* defined __cplusplus */
#endif /* defined __SpMemoryStream_FWD_DEFINED__ */

/* Headers for imported files */

#include <oaidl.h>
#include <ocidl.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _SAPI_VER
#error "you have to include <sapi.h> header before this."
#endif
#if 0
typedef struct WAVEFORMATEX {
    WORD wFormatTag;
    WORD nChannels;
    DWORD nSamplesPerSec;
    DWORD nAvgBytesPerSec;
    WORD nBlockAlign;
    WORD wBitsPerSample;
    WORD cbSize;
} WAVEFORMATEX;
#endif
#ifndef __ISpNotifySource_FWD_DEFINED__
#define __ISpNotifySource_FWD_DEFINED__
typedef interface ISpNotifySource ISpNotifySource;
#endif

#ifndef __ISpNotifySink_FWD_DEFINED__
#define __ISpNotifySink_FWD_DEFINED__
typedef interface ISpNotifySink ISpNotifySink;
#endif

#ifndef __ISpNotifyTranslator_FWD_DEFINED__
#define __ISpNotifyTranslator_FWD_DEFINED__
typedef interface ISpNotifyTranslator ISpNotifyTranslator;
#endif

#ifndef __ISpDataKey_FWD_DEFINED__
#define __ISpDataKey_FWD_DEFINED__
typedef interface ISpDataKey ISpDataKey;
#endif

#ifndef __ISpObjectTokenCategory_FWD_DEFINED__
#define __ISpObjectTokenCategory_FWD_DEFINED__
typedef interface ISpObjectTokenCategory ISpObjectTokenCategory;
#endif

#ifndef __ISpObjectToken_FWD_DEFINED__
#define __ISpObjectToken_FWD_DEFINED__
typedef interface ISpObjectToken ISpObjectToken;
#endif

#ifndef __IEnumSpObjectTokens_FWD_DEFINED__
#define __IEnumSpObjectTokens_FWD_DEFINED__
typedef interface IEnumSpObjectTokens IEnumSpObjectTokens;
#endif

#ifndef __ISpObjectWithToken_FWD_DEFINED__
#define __ISpObjectWithToken_FWD_DEFINED__
typedef interface ISpObjectWithToken ISpObjectWithToken;
#endif

#ifndef __ISpResourceManager_FWD_DEFINED__
#define __ISpResourceManager_FWD_DEFINED__
typedef interface ISpResourceManager ISpResourceManager;
#endif

#ifndef __ISpEventSource_FWD_DEFINED__
#define __ISpEventSource_FWD_DEFINED__
typedef interface ISpEventSource ISpEventSource;
#endif

#ifndef __ISpEventSink_FWD_DEFINED__
#define __ISpEventSink_FWD_DEFINED__
typedef interface ISpEventSink ISpEventSink;
#endif

#ifndef __ISpStreamFormat_FWD_DEFINED__
#define __ISpStreamFormat_FWD_DEFINED__
typedef interface ISpStreamFormat ISpStreamFormat;
#endif

#ifndef __ISpStream_FWD_DEFINED__
#define __ISpStream_FWD_DEFINED__
typedef interface ISpStream ISpStream;
#endif

#ifndef __ISpStreamFormatConverter_FWD_DEFINED__
#define __ISpStreamFormatConverter_FWD_DEFINED__
typedef interface ISpStreamFormatConverter ISpStreamFormatConverter;
#endif

#ifndef __ISpAudio_FWD_DEFINED__
#define __ISpAudio_FWD_DEFINED__
typedef interface ISpAudio ISpAudio;
#endif

#ifndef __ISpMMSysAudio_FWD_DEFINED__
#define __ISpMMSysAudio_FWD_DEFINED__
typedef interface ISpMMSysAudio ISpMMSysAudio;
#endif

#ifndef __ISpTranscript_FWD_DEFINED__
#define __ISpTranscript_FWD_DEFINED__
typedef interface ISpTranscript ISpTranscript;
#endif

#ifndef __ISpVoice_FWD_DEFINED__
#define __ISpVoice_FWD_DEFINED__
typedef interface ISpVoice ISpVoice;
#endif

#ifndef __ISpRecoResult_FWD_DEFINED__
#define __ISpRecoResult_FWD_DEFINED__
typedef interface ISpRecoResult ISpRecoResult;
#endif

#ifndef __ISpRecoContext_FWD_DEFINED__
#define __ISpRecoContext_FWD_DEFINED__
typedef interface ISpRecoContext ISpRecoContext;
#endif

#ifndef __ISpRecognizer_FWD_DEFINED__
#define __ISpRecognizer_FWD_DEFINED__
typedef interface ISpRecognizer ISpRecognizer;
#endif

#ifndef __ISpProperties_FWD_DEFINED__
#define __ISpProperties_FWD_DEFINED__
typedef interface ISpProperties ISpProperties;
#endif

#ifndef __ISpLexicon_FWD_DEFINED__
#define __ISpLexicon_FWD_DEFINED__
typedef interface ISpLexicon ISpLexicon;
#endif

#ifndef __ISpPhoneConverter_FWD_DEFINED__
#define __ISpPhoneConverter_FWD_DEFINED__
typedef interface ISpPhoneConverter ISpPhoneConverter;
#endif

#ifndef __ISpPhrase_FWD_DEFINED__
#define __ISpPhrase_FWD_DEFINED__
typedef interface ISpPhrase ISpPhrase;
#endif

typedef enum SPDATAKEYLOCATION {
    SPDKL_DefaultLocation = 0,
    SPDKL_CurrentUser = 1,
    SPDKL_LocalMachine = 2,
    SPDKL_CurrentConfig = 5
} SPDATAKEYLOCATION;
typedef enum SPSTREAMFORMAT {
    SPSF_Default = -1,
    SPSF_NoAssignedFormat = 0,
    SPSF_Text = 1,
    SPSF_NonStandardFormat = 2,
    SPSF_ExtendedAudioFormat = 3,
    SPSF_8kHz8BitMono = 4,
    SPSF_8kHz8BitStereo = 5,
    SPSF_8kHz16BitMono = 6,
    SPSF_8kHz16BitStereo = 7,
    SPSF_11kHz8BitMono = 8,
    SPSF_11kHz8BitStereo = 9,
    SPSF_11kHz16BitMono = 10,
    SPSF_11kHz16BitStereo = 11,
    SPSF_12kHz8BitMono = 12,
    SPSF_12kHz8BitStereo = 13,
    SPSF_12kHz16BitMono = 14,
    SPSF_12kHz16BitStereo = 15,
    SPSF_16kHz8BitMono = 16,
    SPSF_16kHz8BitStereo = 17,
    SPSF_16kHz16BitMono = 18,
    SPSF_16kHz16BitStereo = 19,
    SPSF_22kHz8BitMono = 20,
    SPSF_22kHz8BitStereo = 21,
    SPSF_22kHz16BitMono = 22,
    SPSF_22kHz16BitStereo = 23,
    SPSF_24kHz8BitMono = 24,
    SPSF_24kHz8BitStereo = 25,
    SPSF_24kHz16BitMono = 26,
    SPSF_24kHz16BitStereo = 27,
    SPSF_32kHz8BitMono = 28,
    SPSF_32kHz8BitStereo = 29,
    SPSF_32kHz16BitMono = 30,
    SPSF_32kHz16BitStereo = 31,
    SPSF_44kHz8BitMono = 32,
    SPSF_44kHz8BitStereo = 33,
    SPSF_44kHz16BitMono = 34,
    SPSF_44kHz16BitStereo = 35,
    SPSF_48kHz8BitMono = 36,
    SPSF_48kHz8BitStereo = 37,
    SPSF_48kHz16BitMono = 38,
    SPSF_48kHz16BitStereo = 39,
    SPSF_TrueSpeech_8kHz1BitMono = 40,
    SPSF_CCITT_ALaw_8kHzMono = 41,
    SPSF_CCITT_ALaw_8kHzStereo = 42,
    SPSF_CCITT_ALaw_11kHzMono = 43,
    SPSF_CCITT_ALaw_11kHzStereo = 44,
    SPSF_CCITT_ALaw_22kHzMono = 45,
    SPSF_CCITT_ALaw_22kHzStereo = 46,
    SPSF_CCITT_ALaw_44kHzMono = 47,
    SPSF_CCITT_ALaw_44kHzStereo = 48,
    SPSF_CCITT_uLaw_8kHzMono = 49,
    SPSF_CCITT_uLaw_8kHzStereo = 50,
    SPSF_CCITT_uLaw_11kHzMono = 51,
    SPSF_CCITT_uLaw_11kHzStereo = 52,
    SPSF_CCITT_uLaw_22kHzMono = 53,
    SPSF_CCITT_uLaw_22kHzStereo = 54,
    SPSF_CCITT_uLaw_44kHzMono = 55,
    SPSF_CCITT_uLaw_44kHzStereo = 56,
    SPSF_ADPCM_8kHzMono = 57,
    SPSF_ADPCM_8kHzStereo = 58,
    SPSF_ADPCM_11kHzMono = 59,
    SPSF_ADPCM_11kHzStereo = 60,
    SPSF_ADPCM_22kHzMono = 61,
    SPSF_ADPCM_22kHzStereo = 62,
    SPSF_ADPCM_44kHzMono = 63,
    SPSF_ADPCM_44kHzStereo = 64,
    SPSF_GSM610_8kHzMono = 65,
    SPSF_GSM610_11kHzMono = 66,
    SPSF_GSM610_22kHzMono = 67,
    SPSF_GSM610_44kHzMono = 68,
    SPSF_NUM_FORMATS = 69
} SPSTREAMFORMAT;
typedef enum SPEVENTLPARAMTYPE {
    SPET_LPARAM_IS_UNDEFINED = 0,
    SPET_LPARAM_IS_TOKEN = 1,
    SPET_LPARAM_IS_OBJECT = 2,
    SPET_LPARAM_IS_POINTER = 3,
    SPET_LPARAM_IS_STRING = 4
} SPEVENTLPARAMTYPE;
typedef enum SPEVENTENUM {
    SPEI_UNDEFINED = 0,
    SPEI_START_INPUT_STREAM = 1,
    SPEI_END_INPUT_STREAM = 2,
    SPEI_VOICE_CHANGE = 3,
    SPEI_TTS_BOOKMARK = 4,
    SPEI_WORD_BOUNDARY = 5,
    SPEI_PHONEME = 6,
    SPEI_SENTENCE_BOUNDARY = 7,
    SPEI_VISEME = 8,
    SPEI_TTS_AUDIO_LEVEL = 9,
    SPEI_TTS_PRIVATE = 15,
    SPEI_MIN_TTS = 1,
    SPEI_MAX_TTS = 15,
    SPEI_END_SR_STREAM = 34,
    SPEI_SOUND_START = 35,
    SPEI_SOUND_END = 36,
    SPEI_PHRASE_START = 37,
    SPEI_RECOGNITION = 38,
    SPEI_HYPOTHESIS = 39,
    SPEI_SR_BOOKMARK = 40,
    SPEI_PROPERTY_NUM_CHANGE = 41,
    SPEI_PROPERTY_STRING_CHANGE = 42,
    SPEI_FALSE_RECOGNITION = 43,
    SPEI_INTERFERENCE = 44,
    SPEI_REQUEST_UI = 45,
    SPEI_RECO_STATE_CHANGE = 46,
    SPEI_ADAPTATION = 47,
    SPEI_START_SR_STREAM = 48,
    SPEI_RECO_OTHER_CONTEXT = 49,
    SPEI_SR_AUDIO_LEVEL = 50,
    SPEI_SR_PRIVATE = 52,
    SPEI_MIN_SR = 34,
    SPEI_MAX_SR = 52,
    SPEI_RESERVED1 = 30,
    SPEI_RESERVED2 = 33,
    SPEI_RESERVED3 = 63
} SPEVENTENUM;
typedef enum SPINTERFERENCE {
    SPINTERFERENCE_NONE = 0,
    SPINTERFERENCE_NOISE = 1,
    SPINTERFERENCE_NOSIGNAL = 2,
    SPINTERFERENCE_TOOLOUD = 3,
    SPINTERFERENCE_TOOQUIET = 4,
    SPINTERFERENCE_TOOFAST = 5,
    SPINTERFERENCE_TOOSLOW = 6,
    SPINTERFERENCE_LATENCY_WARNING = 7,
    SPINTERFERENCE_LATENCY_TRUNCATE_BEGIN = 8,
    SPINTERFERENCE_LATENCY_TRUNCATE_END = 9
} SPINTERFERENCE;
typedef enum SPENDSRSTREAMFLAGS {
    SPESF_NONE = 0,
    SPESF_STREAM_RELEASED = 1
} SPENDSRSTREAMFLAGS;
typedef enum SPVFEATURE {
    SPVFEATURE_STRESSED = 1,
    SPVFEATURE_EMPHASIS = 2
} SPVFEATURE;
typedef enum SPVISEMES {
    SP_VISEME_0 = 0,
    SP_VISEME_1 = 1,
    SP_VISEME_2 = 2,
    SP_VISEME_3 = 3,
    SP_VISEME_4 = 4,
    SP_VISEME_5 = 5,
    SP_VISEME_6 = 6,
    SP_VISEME_7 = 7,
    SP_VISEME_8 = 8,
    SP_VISEME_9 = 9,
    SP_VISEME_10 = 10,
    SP_VISEME_11 = 11,
    SP_VISEME_12 = 12,
    SP_VISEME_13 = 13,
    SP_VISEME_14 = 14,
    SP_VISEME_15 = 15,
    SP_VISEME_16 = 16,
    SP_VISEME_17 = 17,
    SP_VISEME_18 = 18,
    SP_VISEME_19 = 19,
    SP_VISEME_20 = 20,
    SP_VISEME_21 = 21
} SPVISEMES;
typedef enum SPFILEMODE {
    SPFM_OPEN_READONLY = 0,
    SPFM_OPEN_READWRITE = 1,
    SPFM_CREATE = 2,
    SPFM_CREATE_ALWAYS = 3,
    SPFM_NUM_MODES = 4
} SPFILEMODE;
typedef enum _SPAUDIOSTATE {
    SPAS_CLOSED = 0,
    SPAS_STOP = 1,
    SPAS_PAUSE = 2,
    SPAS_RUN = 3
} SPAUDIOSTATE;
typedef enum SPDISPLYATTRIBUTES {
    SPAF_ONE_TRAILING_SPACE = 0x2,
    SPAF_TWO_TRAILING_SPACES = 0x4,
    SPAF_CONSUME_LEADING_SPACES = 0x8,
    SPAF_ALL = 0xf
} SPDISPLAYATTRIBUTES;
typedef enum SPPHRASEPROPERTYUNIONTYPE {
    SPPPUT_UNUSED = 0,
    SPPPUT_ARRAY_INDEX = 1
} SPPHRASEPROPERTYUNIONTYPE;
typedef enum SPRECOEVENTFLAGS {
    SPREF_AutoPause = 0x1,
    SPREF_Emulated = 0x2
} SPRECOEVENTFLAGS;
typedef enum SPPARTOFSPEECH {
    SPPS_NotOverriden = -1,
    SPPS_Unknown = 0,
    SPPS_Noun = 0x1000,
    SPPS_Verb = 0x2000,
    SPPS_Modifier = 0x3000,
    SPPS_Function = 0x4000,
    SPPS_Interjection = 0x5000
} SPPARTOFSPEECH;
typedef enum SPLEXICONTYPE {
    eLEXTYPE_USER = 0x1,
    eLEXTYPE_APP = 0x2,
    eLEXTYPE_VENDORLEXICON = 0x4,
    eLEXTYPE_LETTERTOSOUND = 0x8,
    eLEXTYPE_MORPHOLOGY = 0x10,
    eLEXTYPE_RESERVED4 = 0x20,
    eLEXTYPE_USER_SHORTCUT = 0x40,
    eLEXTYPE_RESERVED6 = 0x80,
    eLEXTYPE_RESERVED7 = 0x100,
    eLEXTYPE_RESERVED8 = 0x200,
    eLEXTYPE_RESERVED9 = 0x400,
    eLEXTYPE_RESERVED10 = 0x800,
    eLEXTYPE_PRIVATE1 = 0x1000,
    eLEXTYPE_PRIVATE2 = 0x2000,
    eLEXTYPE_PRIVATE3 = 0x4000,
    eLEXTYPE_PRIVATE4 = 0x8000,
    eLEXTYPE_PRIVATE5 = 0x10000,
    eLEXTYPE_PRIVATE6 = 0x20000,
    eLEXTYPE_PRIVATE7 = 0x40000,
    eLEXTYPE_PRIVATE8 = 0x80000,
    eLEXTYPE_PRIVATE9 = 0x100000,
    eLEXTYPE_PRIVATE10 = 0x200000,
    eLEXTYPE_PRIVATE11 = 0x400000,
    eLEXTYPE_PRIVATE12 = 0x800000,
    eLEXTYPE_PRIVATE13 = 0x1000000,
    eLEXTYPE_PRIVATE14 = 0x2000000,
    eLEXTYPE_PRIVATE15 = 0x4000000,
    eLEXTYPE_PRIVATE16 = 0x8000000,
    eLEXTYPE_PRIVATE17 = 0x10000000,
    eLEXTYPE_PRIVATE18 = 0x20000000,
    eLEXTYPE_PRIVATE19 = 0x40000000,
    eLEXTYPE_PRIVATE20 = 0x80000000
} SPLEXICONTYPE;
typedef enum SPWORDTYPE {
    eWORDTYPE_ADDED = 1,
    eWORDTYPE_DELETED = 2
} SPWORDTYPE;
typedef enum SPVALUETYPE {
    SPDF_PROPERTY = 0x1,
    SPDF_REPLACEMENT = 0x2,
    SPDF_RULE = 0x4,
    SPDF_DISPLAYTEXT = 0x8,
    SPDF_LEXICALFORM = 0x10,
    SPDF_PRONUNCIATION = 0x20,
    SPDF_AUDIO = 0x40,
    SPDF_ALTERNATES = 0x80,
    SPDF_ALL = 0xff
} SPVALUETYPE;
typedef enum SPPHRASERNG {
    SPPR_ALL_ELEMENTS = -1
} SPPHRASERNG;
typedef enum SPVACTIONS {
    SPVA_Speak = 0,
    SPVA_Silence = 1,
    SPVA_Pronounce = 2,
    SPVA_Bookmark = 3,
    SPVA_SpellOut = 4,
    SPVA_Section = 5,
    SPVA_ParseUnknownTag = 6
} SPVACTIONS;
typedef enum SPRUNSTATE {
    SPRS_DONE = 1,
    SPRS_IS_SPEAKING = 2
} SPRUNSTATE;
typedef enum SPVLIMITS {
    SPMIN_VOLUME = 0,
    SPMAX_VOLUME = 100,
    SPMIN_RATE = -10,
    SPMAX_RATE = 10
} SPVLIMITS;
typedef enum SPVPRIORITY {
    SPVPRI_NORMAL = 0,
    SPVPRI_ALERT = 1,
    SPVPRI_OVER = 2
} SPVPRIORITY;
EXTERN_C const GUID SPDFID_Text;
EXTERN_C const GUID SPDFID_WaveFormatEx;

#define SP_LOW_CONFIDENCE (-1)

#define SP_NORMAL_CONFIDENCE (0)

#define SP_HIGH_CONFIDENCE (+1)

#define DEFAULT_WEIGHT (1)

#define SP_MAX_WORD_LENGTH (128)

#define SP_MAX_PRON_LENGTH (384)


#ifdef __cplusplus
interface ISpNotifyCallback {
  virtual HRESULT STDMETHODCALLTYPE NotifyCallback(WPARAM wParam, LPARAM lParam) = 0;
};
#else
typedef void *ISpNotifyCallback;
#endif
#if 0
typedef void *SPNOTIFYCALLBACK;
#else
typedef void __stdcall SPNOTIFYCALLBACK(WPARAM wParam, LPARAM lParam);
#endif
/*****************************************************************************
 * ISpNotifySource interface
 */
#ifndef __ISpNotifySource_INTERFACE_DEFINED__
#define __ISpNotifySource_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpNotifySource, 0x5eff4aef, 0x8487, 0x11d2, 0x96,0x1c, 0x00,0xc0,0x4f,0x8e,0xe6,0x28);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5eff4aef-8487-11d2-961c-00c04f8ee628")
ISpNotifySource : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetNotifySink(
        ISpNotifySink *pNotifySink) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNotifyWindowMessage(
        HWND hWnd,
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNotifyCallbackFunction(
        SPNOTIFYCALLBACK *pfnCallback,
        WPARAM wParam,
        LPARAM lParam) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNotifyCallbackInterface(
        ISpNotifyCallback *pSpCallback,
        WPARAM wParam,
        LPARAM lParam) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNotifyWin32Event(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE WaitForNotifyEvent(
        DWORD dwMilliseconds) = 0;

    virtual HANDLE STDMETHODCALLTYPE GetNotifyEventHandle(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpNotifySource, 0x5eff4aef, 0x8487, 0x11d2, 0x96,0x1c, 0x00,0xc0,0x4f,0x8e,0xe6,0x28)
#endif
#else
typedef struct ISpNotifySourceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpNotifySource* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpNotifySource* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpNotifySource* This);

    /*** ISpNotifySource methods ***/
    HRESULT (STDMETHODCALLTYPE *SetNotifySink)(
        ISpNotifySource* This,
        ISpNotifySink *pNotifySink);

    HRESULT (STDMETHODCALLTYPE *SetNotifyWindowMessage)(
        ISpNotifySource* This,
        HWND hWnd,
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *SetNotifyCallbackFunction)(
        ISpNotifySource* This,
        SPNOTIFYCALLBACK *pfnCallback,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *SetNotifyCallbackInterface)(
        ISpNotifySource* This,
        ISpNotifyCallback *pSpCallback,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *SetNotifyWin32Event)(
        ISpNotifySource* This);

    HRESULT (STDMETHODCALLTYPE *WaitForNotifyEvent)(
        ISpNotifySource* This,
        DWORD dwMilliseconds);

    HANDLE (STDMETHODCALLTYPE *GetNotifyEventHandle)(
        ISpNotifySource* This);

    END_INTERFACE
} ISpNotifySourceVtbl;
interface ISpNotifySource {
    CONST_VTBL ISpNotifySourceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpNotifySource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpNotifySource_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpNotifySource_Release(This) (This)->lpVtbl->Release(This)
/*** ISpNotifySource methods ***/
#define ISpNotifySource_SetNotifySink(This,pNotifySink) (This)->lpVtbl->SetNotifySink(This,pNotifySink)
#define ISpNotifySource_SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam) (This)->lpVtbl->SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam)
#define ISpNotifySource_SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam) (This)->lpVtbl->SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam)
#define ISpNotifySource_SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam) (This)->lpVtbl->SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam)
#define ISpNotifySource_SetNotifyWin32Event(This) (This)->lpVtbl->SetNotifyWin32Event(This)
#define ISpNotifySource_WaitForNotifyEvent(This,dwMilliseconds) (This)->lpVtbl->WaitForNotifyEvent(This,dwMilliseconds)
#define ISpNotifySource_GetNotifyEventHandle(This) (This)->lpVtbl->GetNotifyEventHandle(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpNotifySource_QueryInterface(ISpNotifySource* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpNotifySource_AddRef(ISpNotifySource* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpNotifySource_Release(ISpNotifySource* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpNotifySource methods ***/
static FORCEINLINE HRESULT ISpNotifySource_SetNotifySink(ISpNotifySource* This,ISpNotifySink *pNotifySink) {
    return This->lpVtbl->SetNotifySink(This,pNotifySink);
}
static FORCEINLINE HRESULT ISpNotifySource_SetNotifyWindowMessage(ISpNotifySource* This,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam);
}
static FORCEINLINE HRESULT ISpNotifySource_SetNotifyCallbackFunction(ISpNotifySource* This,SPNOTIFYCALLBACK *pfnCallback,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam);
}
static FORCEINLINE HRESULT ISpNotifySource_SetNotifyCallbackInterface(ISpNotifySource* This,ISpNotifyCallback *pSpCallback,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam);
}
static FORCEINLINE HRESULT ISpNotifySource_SetNotifyWin32Event(ISpNotifySource* This) {
    return This->lpVtbl->SetNotifyWin32Event(This);
}
static FORCEINLINE HRESULT ISpNotifySource_WaitForNotifyEvent(ISpNotifySource* This,DWORD dwMilliseconds) {
    return This->lpVtbl->WaitForNotifyEvent(This,dwMilliseconds);
}
static FORCEINLINE HANDLE ISpNotifySource_GetNotifyEventHandle(ISpNotifySource* This) {
    return This->lpVtbl->GetNotifyEventHandle(This);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpNotifySource_SetNotifySink_Proxy(
    ISpNotifySource* This,
    ISpNotifySink *pNotifySink);
void __RPC_STUB ISpNotifySource_SetNotifySink_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpNotifySource_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpNotifySink interface
 */
#ifndef __ISpNotifySink_INTERFACE_DEFINED__
#define __ISpNotifySink_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpNotifySink, 0x259684dc, 0x37c3, 0x11d2, 0x96,0x03, 0x00,0xc0,0x4f,0x8e,0xe6,0x28);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("259684dc-37c3-11d2-9603-00c04f8ee628")
ISpNotifySink : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Notify(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpNotifySink, 0x259684dc, 0x37c3, 0x11d2, 0x96,0x03, 0x00,0xc0,0x4f,0x8e,0xe6,0x28)
#endif
#else
typedef struct ISpNotifySinkVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpNotifySink* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpNotifySink* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpNotifySink* This);

    /*** ISpNotifySink methods ***/
    HRESULT (STDMETHODCALLTYPE *Notify)(
        ISpNotifySink* This);

    END_INTERFACE
} ISpNotifySinkVtbl;
interface ISpNotifySink {
    CONST_VTBL ISpNotifySinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpNotifySink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpNotifySink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpNotifySink_Release(This) (This)->lpVtbl->Release(This)
/*** ISpNotifySink methods ***/
#define ISpNotifySink_Notify(This) (This)->lpVtbl->Notify(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpNotifySink_QueryInterface(ISpNotifySink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpNotifySink_AddRef(ISpNotifySink* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpNotifySink_Release(ISpNotifySink* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpNotifySink methods ***/
static FORCEINLINE HRESULT ISpNotifySink_Notify(ISpNotifySink* This) {
    return This->lpVtbl->Notify(This);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpNotifySink_Notify_Proxy(
    ISpNotifySink* This);
void __RPC_STUB ISpNotifySink_Notify_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpNotifySink_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpNotifyTranslator interface
 */
#ifndef __ISpNotifyTranslator_INTERFACE_DEFINED__
#define __ISpNotifyTranslator_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpNotifyTranslator, 0xaca16614, 0x5d3d, 0x11d2, 0x96,0x0e, 0x00,0xc0,0x4f,0x8e,0xe6,0x28);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("aca16614-5d3d-11d2-960e-00c04f8ee628")
ISpNotifyTranslator : public ISpNotifySink
{
    virtual HRESULT STDMETHODCALLTYPE InitWindowMessage(
        HWND hWnd,
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam) = 0;

    virtual HRESULT STDMETHODCALLTYPE InitCallback(
        SPNOTIFYCALLBACK *pfnCallback,
        WPARAM wParam,
        LPARAM lParam) = 0;

    virtual HRESULT STDMETHODCALLTYPE InitSpNotifyCallback(
        ISpNotifyCallback *pSpCallback,
        WPARAM wParam,
        LPARAM lParam) = 0;

    virtual HRESULT STDMETHODCALLTYPE InitWin32Event(
        HANDLE hEvent,
        WINBOOL fCloseHandleOnRelease) = 0;

    virtual HRESULT STDMETHODCALLTYPE Wait(
        DWORD dwMilliseconds) = 0;

    virtual HANDLE STDMETHODCALLTYPE GetEventHandle(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpNotifyTranslator, 0xaca16614, 0x5d3d, 0x11d2, 0x96,0x0e, 0x00,0xc0,0x4f,0x8e,0xe6,0x28)
#endif
#else
typedef struct ISpNotifyTranslatorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpNotifyTranslator* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpNotifyTranslator* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpNotifyTranslator* This);

    /*** ISpNotifySink methods ***/
    HRESULT (STDMETHODCALLTYPE *Notify)(
        ISpNotifyTranslator* This);

    /*** ISpNotifyTranslator methods ***/
    HRESULT (STDMETHODCALLTYPE *InitWindowMessage)(
        ISpNotifyTranslator* This,
        HWND hWnd,
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *InitCallback)(
        ISpNotifyTranslator* This,
        SPNOTIFYCALLBACK *pfnCallback,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *InitSpNotifyCallback)(
        ISpNotifyTranslator* This,
        ISpNotifyCallback *pSpCallback,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *InitWin32Event)(
        ISpNotifyTranslator* This,
        HANDLE hEvent,
        WINBOOL fCloseHandleOnRelease);

    HRESULT (STDMETHODCALLTYPE *Wait)(
        ISpNotifyTranslator* This,
        DWORD dwMilliseconds);

    HANDLE (STDMETHODCALLTYPE *GetEventHandle)(
        ISpNotifyTranslator* This);

    END_INTERFACE
} ISpNotifyTranslatorVtbl;
interface ISpNotifyTranslator {
    CONST_VTBL ISpNotifyTranslatorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpNotifyTranslator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpNotifyTranslator_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpNotifyTranslator_Release(This) (This)->lpVtbl->Release(This)
/*** ISpNotifySink methods ***/
#define ISpNotifyTranslator_Notify(This) (This)->lpVtbl->Notify(This)
/*** ISpNotifyTranslator methods ***/
#define ISpNotifyTranslator_InitWindowMessage(This,hWnd,Msg,wParam,lParam) (This)->lpVtbl->InitWindowMessage(This,hWnd,Msg,wParam,lParam)
#define ISpNotifyTranslator_InitCallback(This,pfnCallback,wParam,lParam) (This)->lpVtbl->InitCallback(This,pfnCallback,wParam,lParam)
#define ISpNotifyTranslator_InitSpNotifyCallback(This,pSpCallback,wParam,lParam) (This)->lpVtbl->InitSpNotifyCallback(This,pSpCallback,wParam,lParam)
#define ISpNotifyTranslator_InitWin32Event(This,hEvent,fCloseHandleOnRelease) (This)->lpVtbl->InitWin32Event(This,hEvent,fCloseHandleOnRelease)
#define ISpNotifyTranslator_Wait(This,dwMilliseconds) (This)->lpVtbl->Wait(This,dwMilliseconds)
#define ISpNotifyTranslator_GetEventHandle(This) (This)->lpVtbl->GetEventHandle(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpNotifyTranslator_QueryInterface(ISpNotifyTranslator* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpNotifyTranslator_AddRef(ISpNotifyTranslator* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpNotifyTranslator_Release(ISpNotifyTranslator* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpNotifySink methods ***/
static FORCEINLINE HRESULT ISpNotifyTranslator_Notify(ISpNotifyTranslator* This) {
    return This->lpVtbl->Notify(This);
}
/*** ISpNotifyTranslator methods ***/
static FORCEINLINE HRESULT ISpNotifyTranslator_InitWindowMessage(ISpNotifyTranslator* This,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->InitWindowMessage(This,hWnd,Msg,wParam,lParam);
}
static FORCEINLINE HRESULT ISpNotifyTranslator_InitCallback(ISpNotifyTranslator* This,SPNOTIFYCALLBACK *pfnCallback,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->InitCallback(This,pfnCallback,wParam,lParam);
}
static FORCEINLINE HRESULT ISpNotifyTranslator_InitSpNotifyCallback(ISpNotifyTranslator* This,ISpNotifyCallback *pSpCallback,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->InitSpNotifyCallback(This,pSpCallback,wParam,lParam);
}
static FORCEINLINE HRESULT ISpNotifyTranslator_InitWin32Event(ISpNotifyTranslator* This,HANDLE hEvent,WINBOOL fCloseHandleOnRelease) {
    return This->lpVtbl->InitWin32Event(This,hEvent,fCloseHandleOnRelease);
}
static FORCEINLINE HRESULT ISpNotifyTranslator_Wait(ISpNotifyTranslator* This,DWORD dwMilliseconds) {
    return This->lpVtbl->Wait(This,dwMilliseconds);
}
static FORCEINLINE HANDLE ISpNotifyTranslator_GetEventHandle(ISpNotifyTranslator* This) {
    return This->lpVtbl->GetEventHandle(This);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpNotifyTranslator_InitWindowMessage_Proxy(
    ISpNotifyTranslator* This,
    HWND hWnd,
    UINT Msg,
    WPARAM wParam,
    LPARAM lParam);
void __RPC_STUB ISpNotifyTranslator_InitWindowMessage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpNotifyTranslator_InitCallback_Proxy(
    ISpNotifyTranslator* This,
    SPNOTIFYCALLBACK *pfnCallback,
    WPARAM wParam,
    LPARAM lParam);
void __RPC_STUB ISpNotifyTranslator_InitCallback_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpNotifyTranslator_InitSpNotifyCallback_Proxy(
    ISpNotifyTranslator* This,
    ISpNotifyCallback *pSpCallback,
    WPARAM wParam,
    LPARAM lParam);
void __RPC_STUB ISpNotifyTranslator_InitSpNotifyCallback_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpNotifyTranslator_InitWin32Event_Proxy(
    ISpNotifyTranslator* This,
    HANDLE hEvent,
    WINBOOL fCloseHandleOnRelease);
void __RPC_STUB ISpNotifyTranslator_InitWin32Event_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpNotifyTranslator_Wait_Proxy(
    ISpNotifyTranslator* This,
    DWORD dwMilliseconds);
void __RPC_STUB ISpNotifyTranslator_Wait_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HANDLE STDMETHODCALLTYPE ISpNotifyTranslator_GetEventHandle_Proxy(
    ISpNotifyTranslator* This);
void __RPC_STUB ISpNotifyTranslator_GetEventHandle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpNotifyTranslator_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpDataKey interface
 */
#ifndef __ISpDataKey_INTERFACE_DEFINED__
#define __ISpDataKey_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpDataKey, 0x14056581, 0xe16c, 0x11d2, 0xbb,0x90, 0x00,0xc0,0x4f,0x8e,0xe6,0xc0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("14056581-e16c-11d2-bb90-00c04f8ee6c0")
ISpDataKey : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetData(
        LPCWSTR pszValueName,
        ULONG cbData,
        const BYTE *pData) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetData(
        LPCWSTR pszValueName,
        ULONG *pcbData,
        BYTE *pData) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetStringValue(
        LPCWSTR pszValueName,
        LPCWSTR pszValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStringValue(
        LPCWSTR pszValueName,
        LPWSTR *ppszValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDWORD(
        LPCWSTR pszValueName,
        DWORD dwValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDWORD(
        LPCWSTR pszValueName,
        DWORD *pdwValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE OpenKey(
        LPCWSTR pszSubKeyName,
        ISpDataKey **ppSubKey) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateKey(
        LPCWSTR pszSubKey,
        ISpDataKey **ppSubKey) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteKey(
        LPCWSTR pszSubKey) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteValue(
        LPCWSTR pszValueName) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumKeys(
        ULONG Index,
        LPWSTR *ppszSubKeyName) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumValues(
        ULONG Index,
        LPWSTR *ppszValueName) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpDataKey, 0x14056581, 0xe16c, 0x11d2, 0xbb,0x90, 0x00,0xc0,0x4f,0x8e,0xe6,0xc0)
#endif
#else
typedef struct ISpDataKeyVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpDataKey* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpDataKey* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpDataKey* This);

    /*** ISpDataKey methods ***/
    HRESULT (STDMETHODCALLTYPE *SetData)(
        ISpDataKey* This,
        LPCWSTR pszValueName,
        ULONG cbData,
        const BYTE *pData);

    HRESULT (STDMETHODCALLTYPE *GetData)(
        ISpDataKey* This,
        LPCWSTR pszValueName,
        ULONG *pcbData,
        BYTE *pData);

    HRESULT (STDMETHODCALLTYPE *SetStringValue)(
        ISpDataKey* This,
        LPCWSTR pszValueName,
        LPCWSTR pszValue);

    HRESULT (STDMETHODCALLTYPE *GetStringValue)(
        ISpDataKey* This,
        LPCWSTR pszValueName,
        LPWSTR *ppszValue);

    HRESULT (STDMETHODCALLTYPE *SetDWORD)(
        ISpDataKey* This,
        LPCWSTR pszValueName,
        DWORD dwValue);

    HRESULT (STDMETHODCALLTYPE *GetDWORD)(
        ISpDataKey* This,
        LPCWSTR pszValueName,
        DWORD *pdwValue);

    HRESULT (STDMETHODCALLTYPE *OpenKey)(
        ISpDataKey* This,
        LPCWSTR pszSubKeyName,
        ISpDataKey **ppSubKey);

    HRESULT (STDMETHODCALLTYPE *CreateKey)(
        ISpDataKey* This,
        LPCWSTR pszSubKey,
        ISpDataKey **ppSubKey);

    HRESULT (STDMETHODCALLTYPE *DeleteKey)(
        ISpDataKey* This,
        LPCWSTR pszSubKey);

    HRESULT (STDMETHODCALLTYPE *DeleteValue)(
        ISpDataKey* This,
        LPCWSTR pszValueName);

    HRESULT (STDMETHODCALLTYPE *EnumKeys)(
        ISpDataKey* This,
        ULONG Index,
        LPWSTR *ppszSubKeyName);

    HRESULT (STDMETHODCALLTYPE *EnumValues)(
        ISpDataKey* This,
        ULONG Index,
        LPWSTR *ppszValueName);

    END_INTERFACE
} ISpDataKeyVtbl;
interface ISpDataKey {
    CONST_VTBL ISpDataKeyVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpDataKey_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpDataKey_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpDataKey_Release(This) (This)->lpVtbl->Release(This)
/*** ISpDataKey methods ***/
#define ISpDataKey_SetData(This,pszValueName,cbData,pData) (This)->lpVtbl->SetData(This,pszValueName,cbData,pData)
#define ISpDataKey_GetData(This,pszValueName,pcbData,pData) (This)->lpVtbl->GetData(This,pszValueName,pcbData,pData)
#define ISpDataKey_SetStringValue(This,pszValueName,pszValue) (This)->lpVtbl->SetStringValue(This,pszValueName,pszValue)
#define ISpDataKey_GetStringValue(This,pszValueName,ppszValue) (This)->lpVtbl->GetStringValue(This,pszValueName,ppszValue)
#define ISpDataKey_SetDWORD(This,pszValueName,dwValue) (This)->lpVtbl->SetDWORD(This,pszValueName,dwValue)
#define ISpDataKey_GetDWORD(This,pszValueName,pdwValue) (This)->lpVtbl->GetDWORD(This,pszValueName,pdwValue)
#define ISpDataKey_OpenKey(This,pszSubKeyName,ppSubKey) (This)->lpVtbl->OpenKey(This,pszSubKeyName,ppSubKey)
#define ISpDataKey_CreateKey(This,pszSubKey,ppSubKey) (This)->lpVtbl->CreateKey(This,pszSubKey,ppSubKey)
#define ISpDataKey_DeleteKey(This,pszSubKey) (This)->lpVtbl->DeleteKey(This,pszSubKey)
#define ISpDataKey_DeleteValue(This,pszValueName) (This)->lpVtbl->DeleteValue(This,pszValueName)
#define ISpDataKey_EnumKeys(This,Index,ppszSubKeyName) (This)->lpVtbl->EnumKeys(This,Index,ppszSubKeyName)
#define ISpDataKey_EnumValues(This,Index,ppszValueName) (This)->lpVtbl->EnumValues(This,Index,ppszValueName)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpDataKey_QueryInterface(ISpDataKey* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpDataKey_AddRef(ISpDataKey* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpDataKey_Release(ISpDataKey* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpDataKey methods ***/
static FORCEINLINE HRESULT ISpDataKey_SetData(ISpDataKey* This,LPCWSTR pszValueName,ULONG cbData,const BYTE *pData) {
    return This->lpVtbl->SetData(This,pszValueName,cbData,pData);
}
static FORCEINLINE HRESULT ISpDataKey_GetData(ISpDataKey* This,LPCWSTR pszValueName,ULONG *pcbData,BYTE *pData) {
    return This->lpVtbl->GetData(This,pszValueName,pcbData,pData);
}
static FORCEINLINE HRESULT ISpDataKey_SetStringValue(ISpDataKey* This,LPCWSTR pszValueName,LPCWSTR pszValue) {
    return This->lpVtbl->SetStringValue(This,pszValueName,pszValue);
}
static FORCEINLINE HRESULT ISpDataKey_GetStringValue(ISpDataKey* This,LPCWSTR pszValueName,LPWSTR *ppszValue) {
    return This->lpVtbl->GetStringValue(This,pszValueName,ppszValue);
}
static FORCEINLINE HRESULT ISpDataKey_SetDWORD(ISpDataKey* This,LPCWSTR pszValueName,DWORD dwValue) {
    return This->lpVtbl->SetDWORD(This,pszValueName,dwValue);
}
static FORCEINLINE HRESULT ISpDataKey_GetDWORD(ISpDataKey* This,LPCWSTR pszValueName,DWORD *pdwValue) {
    return This->lpVtbl->GetDWORD(This,pszValueName,pdwValue);
}
static FORCEINLINE HRESULT ISpDataKey_OpenKey(ISpDataKey* This,LPCWSTR pszSubKeyName,ISpDataKey **ppSubKey) {
    return This->lpVtbl->OpenKey(This,pszSubKeyName,ppSubKey);
}
static FORCEINLINE HRESULT ISpDataKey_CreateKey(ISpDataKey* This,LPCWSTR pszSubKey,ISpDataKey **ppSubKey) {
    return This->lpVtbl->CreateKey(This,pszSubKey,ppSubKey);
}
static FORCEINLINE HRESULT ISpDataKey_DeleteKey(ISpDataKey* This,LPCWSTR pszSubKey) {
    return This->lpVtbl->DeleteKey(This,pszSubKey);
}
static FORCEINLINE HRESULT ISpDataKey_DeleteValue(ISpDataKey* This,LPCWSTR pszValueName) {
    return This->lpVtbl->DeleteValue(This,pszValueName);
}
static FORCEINLINE HRESULT ISpDataKey_EnumKeys(ISpDataKey* This,ULONG Index,LPWSTR *ppszSubKeyName) {
    return This->lpVtbl->EnumKeys(This,Index,ppszSubKeyName);
}
static FORCEINLINE HRESULT ISpDataKey_EnumValues(ISpDataKey* This,ULONG Index,LPWSTR *ppszValueName) {
    return This->lpVtbl->EnumValues(This,Index,ppszValueName);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpDataKey_SetData_Proxy(
    ISpDataKey* This,
    LPCWSTR pszValueName,
    ULONG cbData,
    const BYTE *pData);
void __RPC_STUB ISpDataKey_SetData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpDataKey_GetData_Proxy(
    ISpDataKey* This,
    LPCWSTR pszValueName,
    ULONG *pcbData,
    BYTE *pData);
void __RPC_STUB ISpDataKey_GetData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpDataKey_SetStringValue_Proxy(
    ISpDataKey* This,
    LPCWSTR pszValueName,
    LPCWSTR pszValue);
void __RPC_STUB ISpDataKey_SetStringValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpDataKey_GetStringValue_Proxy(
    ISpDataKey* This,
    LPCWSTR pszValueName,
    LPWSTR *ppszValue);
void __RPC_STUB ISpDataKey_GetStringValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpDataKey_SetDWORD_Proxy(
    ISpDataKey* This,
    LPCWSTR pszValueName,
    DWORD dwValue);
void __RPC_STUB ISpDataKey_SetDWORD_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpDataKey_GetDWORD_Proxy(
    ISpDataKey* This,
    LPCWSTR pszValueName,
    DWORD *pdwValue);
void __RPC_STUB ISpDataKey_GetDWORD_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpDataKey_OpenKey_Proxy(
    ISpDataKey* This,
    LPCWSTR pszSubKeyName,
    ISpDataKey **ppSubKey);
void __RPC_STUB ISpDataKey_OpenKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpDataKey_CreateKey_Proxy(
    ISpDataKey* This,
    LPCWSTR pszSubKey,
    ISpDataKey **ppSubKey);
void __RPC_STUB ISpDataKey_CreateKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpDataKey_DeleteKey_Proxy(
    ISpDataKey* This,
    LPCWSTR pszSubKey);
void __RPC_STUB ISpDataKey_DeleteKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpDataKey_DeleteValue_Proxy(
    ISpDataKey* This,
    LPCWSTR pszValueName);
void __RPC_STUB ISpDataKey_DeleteValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpDataKey_EnumKeys_Proxy(
    ISpDataKey* This,
    ULONG Index,
    LPWSTR *ppszSubKeyName);
void __RPC_STUB ISpDataKey_EnumKeys_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpDataKey_EnumValues_Proxy(
    ISpDataKey* This,
    ULONG Index,
    LPWSTR *ppszValueName);
void __RPC_STUB ISpDataKey_EnumValues_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpDataKey_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpObjectWithToken interface
 */
#ifndef __ISpObjectWithToken_INTERFACE_DEFINED__
#define __ISpObjectWithToken_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpObjectWithToken, 0x5b559f40, 0xe952, 0x11d2, 0xbb,0x91, 0x00,0xc0,0x4f,0x8e,0xe6,0xc0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5b559f40-e952-11d2-bb91-00c04f8ee6c0")
ISpObjectWithToken : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetObjectToken(
        ISpObjectToken *pToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetObjectToken(
        ISpObjectToken **ppToken) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpObjectWithToken, 0x5b559f40, 0xe952, 0x11d2, 0xbb,0x91, 0x00,0xc0,0x4f,0x8e,0xe6,0xc0)
#endif
#else
typedef struct ISpObjectWithTokenVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpObjectWithToken* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpObjectWithToken* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpObjectWithToken* This);

    /*** ISpObjectWithToken methods ***/
    HRESULT (STDMETHODCALLTYPE *SetObjectToken)(
        ISpObjectWithToken* This,
        ISpObjectToken *pToken);

    HRESULT (STDMETHODCALLTYPE *GetObjectToken)(
        ISpObjectWithToken* This,
        ISpObjectToken **ppToken);

    END_INTERFACE
} ISpObjectWithTokenVtbl;
interface ISpObjectWithToken {
    CONST_VTBL ISpObjectWithTokenVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpObjectWithToken_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpObjectWithToken_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpObjectWithToken_Release(This) (This)->lpVtbl->Release(This)
/*** ISpObjectWithToken methods ***/
#define ISpObjectWithToken_SetObjectToken(This,pToken) (This)->lpVtbl->SetObjectToken(This,pToken)
#define ISpObjectWithToken_GetObjectToken(This,ppToken) (This)->lpVtbl->GetObjectToken(This,ppToken)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpObjectWithToken_QueryInterface(ISpObjectWithToken* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpObjectWithToken_AddRef(ISpObjectWithToken* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpObjectWithToken_Release(ISpObjectWithToken* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpObjectWithToken methods ***/
static FORCEINLINE HRESULT ISpObjectWithToken_SetObjectToken(ISpObjectWithToken* This,ISpObjectToken *pToken) {
    return This->lpVtbl->SetObjectToken(This,pToken);
}
static FORCEINLINE HRESULT ISpObjectWithToken_GetObjectToken(ISpObjectWithToken* This,ISpObjectToken **ppToken) {
    return This->lpVtbl->GetObjectToken(This,ppToken);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpObjectWithToken_SetObjectToken_Proxy(
    ISpObjectWithToken* This,
    ISpObjectToken *pToken);
void __RPC_STUB ISpObjectWithToken_SetObjectToken_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpObjectWithToken_GetObjectToken_Proxy(
    ISpObjectWithToken* This,
    ISpObjectToken **ppToken);
void __RPC_STUB ISpObjectWithToken_GetObjectToken_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpObjectWithToken_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IEnumSpObjectTokens interface
 */
#ifndef __IEnumSpObjectTokens_INTERFACE_DEFINED__
#define __IEnumSpObjectTokens_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumSpObjectTokens, 0x06b64f9e, 0x7fda, 0x11d2, 0xb4,0xf2, 0x00,0xc0,0x4f,0x79,0x73,0x96);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("06b64f9e-7fda-11d2-b4f2-00c04f797396")
IEnumSpObjectTokens : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        ISpObjectToken **pelt,
        ULONG *pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumSpObjectTokens **ppEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        ULONG Index,
        ISpObjectToken **ppToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCount(
        ULONG *pCount) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumSpObjectTokens, 0x06b64f9e, 0x7fda, 0x11d2, 0xb4,0xf2, 0x00,0xc0,0x4f,0x79,0x73,0x96)
#endif
#else
typedef struct IEnumSpObjectTokensVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IEnumSpObjectTokens* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IEnumSpObjectTokens* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IEnumSpObjectTokens* This);

    /*** IEnumSpObjectTokens methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumSpObjectTokens* This,
        ULONG celt,
        ISpObjectToken **pelt,
        ULONG *pceltFetched);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        IEnumSpObjectTokens* This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        IEnumSpObjectTokens* This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumSpObjectTokens* This,
        IEnumSpObjectTokens **ppEnum);

    HRESULT (STDMETHODCALLTYPE *Item)(
        IEnumSpObjectTokens* This,
        ULONG Index,
        ISpObjectToken **ppToken);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IEnumSpObjectTokens* This,
        ULONG *pCount);

    END_INTERFACE
} IEnumSpObjectTokensVtbl;
interface IEnumSpObjectTokens {
    CONST_VTBL IEnumSpObjectTokensVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumSpObjectTokens_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumSpObjectTokens_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumSpObjectTokens_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumSpObjectTokens methods ***/
#define IEnumSpObjectTokens_Next(This,celt,pelt,pceltFetched) (This)->lpVtbl->Next(This,celt,pelt,pceltFetched)
#define IEnumSpObjectTokens_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumSpObjectTokens_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumSpObjectTokens_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define IEnumSpObjectTokens_Item(This,Index,ppToken) (This)->lpVtbl->Item(This,Index,ppToken)
#define IEnumSpObjectTokens_GetCount(This,pCount) (This)->lpVtbl->GetCount(This,pCount)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IEnumSpObjectTokens_QueryInterface(IEnumSpObjectTokens* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IEnumSpObjectTokens_AddRef(IEnumSpObjectTokens* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IEnumSpObjectTokens_Release(IEnumSpObjectTokens* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumSpObjectTokens methods ***/
static FORCEINLINE HRESULT IEnumSpObjectTokens_Next(IEnumSpObjectTokens* This,ULONG celt,ISpObjectToken **pelt,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,pelt,pceltFetched);
}
static FORCEINLINE HRESULT IEnumSpObjectTokens_Skip(IEnumSpObjectTokens* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT IEnumSpObjectTokens_Reset(IEnumSpObjectTokens* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT IEnumSpObjectTokens_Clone(IEnumSpObjectTokens* This,IEnumSpObjectTokens **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT IEnumSpObjectTokens_Item(IEnumSpObjectTokens* This,ULONG Index,ISpObjectToken **ppToken) {
    return This->lpVtbl->Item(This,Index,ppToken);
}
static FORCEINLINE HRESULT IEnumSpObjectTokens_GetCount(IEnumSpObjectTokens* This,ULONG *pCount) {
    return This->lpVtbl->GetCount(This,pCount);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IEnumSpObjectTokens_Next_Proxy(
    IEnumSpObjectTokens* This,
    ULONG celt,
    ISpObjectToken **pelt,
    ULONG *pceltFetched);
void __RPC_STUB IEnumSpObjectTokens_Next_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumSpObjectTokens_Skip_Proxy(
    IEnumSpObjectTokens* This,
    ULONG celt);
void __RPC_STUB IEnumSpObjectTokens_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumSpObjectTokens_Reset_Proxy(
    IEnumSpObjectTokens* This);
void __RPC_STUB IEnumSpObjectTokens_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumSpObjectTokens_Clone_Proxy(
    IEnumSpObjectTokens* This,
    IEnumSpObjectTokens **ppEnum);
void __RPC_STUB IEnumSpObjectTokens_Clone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumSpObjectTokens_Item_Proxy(
    IEnumSpObjectTokens* This,
    ULONG Index,
    ISpObjectToken **ppToken);
void __RPC_STUB IEnumSpObjectTokens_Item_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumSpObjectTokens_GetCount_Proxy(
    IEnumSpObjectTokens* This,
    ULONG *pCount);
void __RPC_STUB IEnumSpObjectTokens_GetCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IEnumSpObjectTokens_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpRegDataKey interface
 */
#ifndef __ISpRegDataKey_INTERFACE_DEFINED__
#define __ISpRegDataKey_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpRegDataKey, 0x92a66e2b, 0xc830, 0x4149, 0x83,0xdf, 0x6f,0xc2,0xba,0x1e,0x7a,0x5b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("92a66e2b-c830-4149-83df-6fc2ba1e7a5b")
ISpRegDataKey : public ISpDataKey
{
    virtual HRESULT STDMETHODCALLTYPE SetKey(
        HKEY hkey,
        WINBOOL fReadOnly) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpRegDataKey, 0x92a66e2b, 0xc830, 0x4149, 0x83,0xdf, 0x6f,0xc2,0xba,0x1e,0x7a,0x5b)
#endif
#else
typedef struct ISpRegDataKeyVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpRegDataKey* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpRegDataKey* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpRegDataKey* This);

    /*** ISpDataKey methods ***/
    HRESULT (STDMETHODCALLTYPE *SetData)(
        ISpRegDataKey* This,
        LPCWSTR pszValueName,
        ULONG cbData,
        const BYTE *pData);

    HRESULT (STDMETHODCALLTYPE *GetData)(
        ISpRegDataKey* This,
        LPCWSTR pszValueName,
        ULONG *pcbData,
        BYTE *pData);

    HRESULT (STDMETHODCALLTYPE *SetStringValue)(
        ISpRegDataKey* This,
        LPCWSTR pszValueName,
        LPCWSTR pszValue);

    HRESULT (STDMETHODCALLTYPE *GetStringValue)(
        ISpRegDataKey* This,
        LPCWSTR pszValueName,
        LPWSTR *ppszValue);

    HRESULT (STDMETHODCALLTYPE *SetDWORD)(
        ISpRegDataKey* This,
        LPCWSTR pszValueName,
        DWORD dwValue);

    HRESULT (STDMETHODCALLTYPE *GetDWORD)(
        ISpRegDataKey* This,
        LPCWSTR pszValueName,
        DWORD *pdwValue);

    HRESULT (STDMETHODCALLTYPE *OpenKey)(
        ISpRegDataKey* This,
        LPCWSTR pszSubKeyName,
        ISpDataKey **ppSubKey);

    HRESULT (STDMETHODCALLTYPE *CreateKey)(
        ISpRegDataKey* This,
        LPCWSTR pszSubKey,
        ISpDataKey **ppSubKey);

    HRESULT (STDMETHODCALLTYPE *DeleteKey)(
        ISpRegDataKey* This,
        LPCWSTR pszSubKey);

    HRESULT (STDMETHODCALLTYPE *DeleteValue)(
        ISpRegDataKey* This,
        LPCWSTR pszValueName);

    HRESULT (STDMETHODCALLTYPE *EnumKeys)(
        ISpRegDataKey* This,
        ULONG Index,
        LPWSTR *ppszSubKeyName);

    HRESULT (STDMETHODCALLTYPE *EnumValues)(
        ISpRegDataKey* This,
        ULONG Index,
        LPWSTR *ppszValueName);

    /*** ISpRegDataKey methods ***/
    HRESULT (STDMETHODCALLTYPE *SetKey)(
        ISpRegDataKey* This,
        HKEY hkey,
        WINBOOL fReadOnly);

    END_INTERFACE
} ISpRegDataKeyVtbl;
interface ISpRegDataKey {
    CONST_VTBL ISpRegDataKeyVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpRegDataKey_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpRegDataKey_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpRegDataKey_Release(This) (This)->lpVtbl->Release(This)
/*** ISpDataKey methods ***/
#define ISpRegDataKey_SetData(This,pszValueName,cbData,pData) (This)->lpVtbl->SetData(This,pszValueName,cbData,pData)
#define ISpRegDataKey_GetData(This,pszValueName,pcbData,pData) (This)->lpVtbl->GetData(This,pszValueName,pcbData,pData)
#define ISpRegDataKey_SetStringValue(This,pszValueName,pszValue) (This)->lpVtbl->SetStringValue(This,pszValueName,pszValue)
#define ISpRegDataKey_GetStringValue(This,pszValueName,ppszValue) (This)->lpVtbl->GetStringValue(This,pszValueName,ppszValue)
#define ISpRegDataKey_SetDWORD(This,pszValueName,dwValue) (This)->lpVtbl->SetDWORD(This,pszValueName,dwValue)
#define ISpRegDataKey_GetDWORD(This,pszValueName,pdwValue) (This)->lpVtbl->GetDWORD(This,pszValueName,pdwValue)
#define ISpRegDataKey_OpenKey(This,pszSubKeyName,ppSubKey) (This)->lpVtbl->OpenKey(This,pszSubKeyName,ppSubKey)
#define ISpRegDataKey_CreateKey(This,pszSubKey,ppSubKey) (This)->lpVtbl->CreateKey(This,pszSubKey,ppSubKey)
#define ISpRegDataKey_DeleteKey(This,pszSubKey) (This)->lpVtbl->DeleteKey(This,pszSubKey)
#define ISpRegDataKey_DeleteValue(This,pszValueName) (This)->lpVtbl->DeleteValue(This,pszValueName)
#define ISpRegDataKey_EnumKeys(This,Index,ppszSubKeyName) (This)->lpVtbl->EnumKeys(This,Index,ppszSubKeyName)
#define ISpRegDataKey_EnumValues(This,Index,ppszValueName) (This)->lpVtbl->EnumValues(This,Index,ppszValueName)
/*** ISpRegDataKey methods ***/
#define ISpRegDataKey_SetKey(This,hkey,fReadOnly) (This)->lpVtbl->SetKey(This,hkey,fReadOnly)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpRegDataKey_QueryInterface(ISpRegDataKey* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpRegDataKey_AddRef(ISpRegDataKey* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpRegDataKey_Release(ISpRegDataKey* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpDataKey methods ***/
static FORCEINLINE HRESULT ISpRegDataKey_SetData(ISpRegDataKey* This,LPCWSTR pszValueName,ULONG cbData,const BYTE *pData) {
    return This->lpVtbl->SetData(This,pszValueName,cbData,pData);
}
static FORCEINLINE HRESULT ISpRegDataKey_GetData(ISpRegDataKey* This,LPCWSTR pszValueName,ULONG *pcbData,BYTE *pData) {
    return This->lpVtbl->GetData(This,pszValueName,pcbData,pData);
}
static FORCEINLINE HRESULT ISpRegDataKey_SetStringValue(ISpRegDataKey* This,LPCWSTR pszValueName,LPCWSTR pszValue) {
    return This->lpVtbl->SetStringValue(This,pszValueName,pszValue);
}
static FORCEINLINE HRESULT ISpRegDataKey_GetStringValue(ISpRegDataKey* This,LPCWSTR pszValueName,LPWSTR *ppszValue) {
    return This->lpVtbl->GetStringValue(This,pszValueName,ppszValue);
}
static FORCEINLINE HRESULT ISpRegDataKey_SetDWORD(ISpRegDataKey* This,LPCWSTR pszValueName,DWORD dwValue) {
    return This->lpVtbl->SetDWORD(This,pszValueName,dwValue);
}
static FORCEINLINE HRESULT ISpRegDataKey_GetDWORD(ISpRegDataKey* This,LPCWSTR pszValueName,DWORD *pdwValue) {
    return This->lpVtbl->GetDWORD(This,pszValueName,pdwValue);
}
static FORCEINLINE HRESULT ISpRegDataKey_OpenKey(ISpRegDataKey* This,LPCWSTR pszSubKeyName,ISpDataKey **ppSubKey) {
    return This->lpVtbl->OpenKey(This,pszSubKeyName,ppSubKey);
}
static FORCEINLINE HRESULT ISpRegDataKey_CreateKey(ISpRegDataKey* This,LPCWSTR pszSubKey,ISpDataKey **ppSubKey) {
    return This->lpVtbl->CreateKey(This,pszSubKey,ppSubKey);
}
static FORCEINLINE HRESULT ISpRegDataKey_DeleteKey(ISpRegDataKey* This,LPCWSTR pszSubKey) {
    return This->lpVtbl->DeleteKey(This,pszSubKey);
}
static FORCEINLINE HRESULT ISpRegDataKey_DeleteValue(ISpRegDataKey* This,LPCWSTR pszValueName) {
    return This->lpVtbl->DeleteValue(This,pszValueName);
}
static FORCEINLINE HRESULT ISpRegDataKey_EnumKeys(ISpRegDataKey* This,ULONG Index,LPWSTR *ppszSubKeyName) {
    return This->lpVtbl->EnumKeys(This,Index,ppszSubKeyName);
}
static FORCEINLINE HRESULT ISpRegDataKey_EnumValues(ISpRegDataKey* This,ULONG Index,LPWSTR *ppszValueName) {
    return This->lpVtbl->EnumValues(This,Index,ppszValueName);
}
/*** ISpRegDataKey methods ***/
static FORCEINLINE HRESULT ISpRegDataKey_SetKey(ISpRegDataKey* This,HKEY hkey,WINBOOL fReadOnly) {
    return This->lpVtbl->SetKey(This,hkey,fReadOnly);
}
#endif
#endif

#endif


#endif  /* __ISpRegDataKey_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpObjectTokenCategory interface
 */
#ifndef __ISpObjectTokenCategory_INTERFACE_DEFINED__
#define __ISpObjectTokenCategory_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpObjectTokenCategory, 0x2d3d3845, 0x39af, 0x4850, 0xbb,0xf9, 0x40,0xb4,0x97,0x80,0x01,0x1d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2d3d3845-39af-4850-bbf9-40b49780011d")
ISpObjectTokenCategory : public ISpDataKey
{
    virtual HRESULT STDMETHODCALLTYPE SetId(
        LPCWSTR pszCategoryId,
        WINBOOL fCreateIfNotExist) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetId(
        LPWSTR *ppszCoMemCategoryId) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDataKey(
        SPDATAKEYLOCATION spdkl,
        ISpDataKey **ppDataKey) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumTokens(
        LPCWSTR pzsReqAttribs,
        LPCWSTR pszOptAttribs,
        IEnumSpObjectTokens **ppEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDefaultTokenId(
        LPCWSTR pszTokenId) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultTokenId(
        LPWSTR *ppszCoMemTokenId) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpObjectTokenCategory, 0x2d3d3845, 0x39af, 0x4850, 0xbb,0xf9, 0x40,0xb4,0x97,0x80,0x01,0x1d)
#endif
#else
typedef struct ISpObjectTokenCategoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpObjectTokenCategory* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpObjectTokenCategory* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpObjectTokenCategory* This);

    /*** ISpDataKey methods ***/
    HRESULT (STDMETHODCALLTYPE *SetData)(
        ISpObjectTokenCategory* This,
        LPCWSTR pszValueName,
        ULONG cbData,
        const BYTE *pData);

    HRESULT (STDMETHODCALLTYPE *GetData)(
        ISpObjectTokenCategory* This,
        LPCWSTR pszValueName,
        ULONG *pcbData,
        BYTE *pData);

    HRESULT (STDMETHODCALLTYPE *SetStringValue)(
        ISpObjectTokenCategory* This,
        LPCWSTR pszValueName,
        LPCWSTR pszValue);

    HRESULT (STDMETHODCALLTYPE *GetStringValue)(
        ISpObjectTokenCategory* This,
        LPCWSTR pszValueName,
        LPWSTR *ppszValue);

    HRESULT (STDMETHODCALLTYPE *SetDWORD)(
        ISpObjectTokenCategory* This,
        LPCWSTR pszValueName,
        DWORD dwValue);

    HRESULT (STDMETHODCALLTYPE *GetDWORD)(
        ISpObjectTokenCategory* This,
        LPCWSTR pszValueName,
        DWORD *pdwValue);

    HRESULT (STDMETHODCALLTYPE *OpenKey)(
        ISpObjectTokenCategory* This,
        LPCWSTR pszSubKeyName,
        ISpDataKey **ppSubKey);

    HRESULT (STDMETHODCALLTYPE *CreateKey)(
        ISpObjectTokenCategory* This,
        LPCWSTR pszSubKey,
        ISpDataKey **ppSubKey);

    HRESULT (STDMETHODCALLTYPE *DeleteKey)(
        ISpObjectTokenCategory* This,
        LPCWSTR pszSubKey);

    HRESULT (STDMETHODCALLTYPE *DeleteValue)(
        ISpObjectTokenCategory* This,
        LPCWSTR pszValueName);

    HRESULT (STDMETHODCALLTYPE *EnumKeys)(
        ISpObjectTokenCategory* This,
        ULONG Index,
        LPWSTR *ppszSubKeyName);

    HRESULT (STDMETHODCALLTYPE *EnumValues)(
        ISpObjectTokenCategory* This,
        ULONG Index,
        LPWSTR *ppszValueName);

    /*** ISpObjectTokenCategory methods ***/
    HRESULT (STDMETHODCALLTYPE *SetId)(
        ISpObjectTokenCategory* This,
        LPCWSTR pszCategoryId,
        WINBOOL fCreateIfNotExist);

    HRESULT (STDMETHODCALLTYPE *GetId)(
        ISpObjectTokenCategory* This,
        LPWSTR *ppszCoMemCategoryId);

    HRESULT (STDMETHODCALLTYPE *GetDataKey)(
        ISpObjectTokenCategory* This,
        SPDATAKEYLOCATION spdkl,
        ISpDataKey **ppDataKey);

    HRESULT (STDMETHODCALLTYPE *EnumTokens)(
        ISpObjectTokenCategory* This,
        LPCWSTR pzsReqAttribs,
        LPCWSTR pszOptAttribs,
        IEnumSpObjectTokens **ppEnum);

    HRESULT (STDMETHODCALLTYPE *SetDefaultTokenId)(
        ISpObjectTokenCategory* This,
        LPCWSTR pszTokenId);

    HRESULT (STDMETHODCALLTYPE *GetDefaultTokenId)(
        ISpObjectTokenCategory* This,
        LPWSTR *ppszCoMemTokenId);

    END_INTERFACE
} ISpObjectTokenCategoryVtbl;
interface ISpObjectTokenCategory {
    CONST_VTBL ISpObjectTokenCategoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpObjectTokenCategory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpObjectTokenCategory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpObjectTokenCategory_Release(This) (This)->lpVtbl->Release(This)
/*** ISpDataKey methods ***/
#define ISpObjectTokenCategory_SetData(This,pszValueName,cbData,pData) (This)->lpVtbl->SetData(This,pszValueName,cbData,pData)
#define ISpObjectTokenCategory_GetData(This,pszValueName,pcbData,pData) (This)->lpVtbl->GetData(This,pszValueName,pcbData,pData)
#define ISpObjectTokenCategory_SetStringValue(This,pszValueName,pszValue) (This)->lpVtbl->SetStringValue(This,pszValueName,pszValue)
#define ISpObjectTokenCategory_GetStringValue(This,pszValueName,ppszValue) (This)->lpVtbl->GetStringValue(This,pszValueName,ppszValue)
#define ISpObjectTokenCategory_SetDWORD(This,pszValueName,dwValue) (This)->lpVtbl->SetDWORD(This,pszValueName,dwValue)
#define ISpObjectTokenCategory_GetDWORD(This,pszValueName,pdwValue) (This)->lpVtbl->GetDWORD(This,pszValueName,pdwValue)
#define ISpObjectTokenCategory_OpenKey(This,pszSubKeyName,ppSubKey) (This)->lpVtbl->OpenKey(This,pszSubKeyName,ppSubKey)
#define ISpObjectTokenCategory_CreateKey(This,pszSubKey,ppSubKey) (This)->lpVtbl->CreateKey(This,pszSubKey,ppSubKey)
#define ISpObjectTokenCategory_DeleteKey(This,pszSubKey) (This)->lpVtbl->DeleteKey(This,pszSubKey)
#define ISpObjectTokenCategory_DeleteValue(This,pszValueName) (This)->lpVtbl->DeleteValue(This,pszValueName)
#define ISpObjectTokenCategory_EnumKeys(This,Index,ppszSubKeyName) (This)->lpVtbl->EnumKeys(This,Index,ppszSubKeyName)
#define ISpObjectTokenCategory_EnumValues(This,Index,ppszValueName) (This)->lpVtbl->EnumValues(This,Index,ppszValueName)
/*** ISpObjectTokenCategory methods ***/
#define ISpObjectTokenCategory_SetId(This,pszCategoryId,fCreateIfNotExist) (This)->lpVtbl->SetId(This,pszCategoryId,fCreateIfNotExist)
#define ISpObjectTokenCategory_GetId(This,ppszCoMemCategoryId) (This)->lpVtbl->GetId(This,ppszCoMemCategoryId)
#define ISpObjectTokenCategory_GetDataKey(This,spdkl,ppDataKey) (This)->lpVtbl->GetDataKey(This,spdkl,ppDataKey)
#define ISpObjectTokenCategory_EnumTokens(This,pzsReqAttribs,pszOptAttribs,ppEnum) (This)->lpVtbl->EnumTokens(This,pzsReqAttribs,pszOptAttribs,ppEnum)
#define ISpObjectTokenCategory_SetDefaultTokenId(This,pszTokenId) (This)->lpVtbl->SetDefaultTokenId(This,pszTokenId)
#define ISpObjectTokenCategory_GetDefaultTokenId(This,ppszCoMemTokenId) (This)->lpVtbl->GetDefaultTokenId(This,ppszCoMemTokenId)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpObjectTokenCategory_QueryInterface(ISpObjectTokenCategory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpObjectTokenCategory_AddRef(ISpObjectTokenCategory* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpObjectTokenCategory_Release(ISpObjectTokenCategory* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpDataKey methods ***/
static FORCEINLINE HRESULT ISpObjectTokenCategory_SetData(ISpObjectTokenCategory* This,LPCWSTR pszValueName,ULONG cbData,const BYTE *pData) {
    return This->lpVtbl->SetData(This,pszValueName,cbData,pData);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_GetData(ISpObjectTokenCategory* This,LPCWSTR pszValueName,ULONG *pcbData,BYTE *pData) {
    return This->lpVtbl->GetData(This,pszValueName,pcbData,pData);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_SetStringValue(ISpObjectTokenCategory* This,LPCWSTR pszValueName,LPCWSTR pszValue) {
    return This->lpVtbl->SetStringValue(This,pszValueName,pszValue);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_GetStringValue(ISpObjectTokenCategory* This,LPCWSTR pszValueName,LPWSTR *ppszValue) {
    return This->lpVtbl->GetStringValue(This,pszValueName,ppszValue);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_SetDWORD(ISpObjectTokenCategory* This,LPCWSTR pszValueName,DWORD dwValue) {
    return This->lpVtbl->SetDWORD(This,pszValueName,dwValue);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_GetDWORD(ISpObjectTokenCategory* This,LPCWSTR pszValueName,DWORD *pdwValue) {
    return This->lpVtbl->GetDWORD(This,pszValueName,pdwValue);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_OpenKey(ISpObjectTokenCategory* This,LPCWSTR pszSubKeyName,ISpDataKey **ppSubKey) {
    return This->lpVtbl->OpenKey(This,pszSubKeyName,ppSubKey);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_CreateKey(ISpObjectTokenCategory* This,LPCWSTR pszSubKey,ISpDataKey **ppSubKey) {
    return This->lpVtbl->CreateKey(This,pszSubKey,ppSubKey);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_DeleteKey(ISpObjectTokenCategory* This,LPCWSTR pszSubKey) {
    return This->lpVtbl->DeleteKey(This,pszSubKey);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_DeleteValue(ISpObjectTokenCategory* This,LPCWSTR pszValueName) {
    return This->lpVtbl->DeleteValue(This,pszValueName);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_EnumKeys(ISpObjectTokenCategory* This,ULONG Index,LPWSTR *ppszSubKeyName) {
    return This->lpVtbl->EnumKeys(This,Index,ppszSubKeyName);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_EnumValues(ISpObjectTokenCategory* This,ULONG Index,LPWSTR *ppszValueName) {
    return This->lpVtbl->EnumValues(This,Index,ppszValueName);
}
/*** ISpObjectTokenCategory methods ***/
static FORCEINLINE HRESULT ISpObjectTokenCategory_SetId(ISpObjectTokenCategory* This,LPCWSTR pszCategoryId,WINBOOL fCreateIfNotExist) {
    return This->lpVtbl->SetId(This,pszCategoryId,fCreateIfNotExist);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_GetId(ISpObjectTokenCategory* This,LPWSTR *ppszCoMemCategoryId) {
    return This->lpVtbl->GetId(This,ppszCoMemCategoryId);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_GetDataKey(ISpObjectTokenCategory* This,SPDATAKEYLOCATION spdkl,ISpDataKey **ppDataKey) {
    return This->lpVtbl->GetDataKey(This,spdkl,ppDataKey);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_EnumTokens(ISpObjectTokenCategory* This,LPCWSTR pzsReqAttribs,LPCWSTR pszOptAttribs,IEnumSpObjectTokens **ppEnum) {
    return This->lpVtbl->EnumTokens(This,pzsReqAttribs,pszOptAttribs,ppEnum);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_SetDefaultTokenId(ISpObjectTokenCategory* This,LPCWSTR pszTokenId) {
    return This->lpVtbl->SetDefaultTokenId(This,pszTokenId);
}
static FORCEINLINE HRESULT ISpObjectTokenCategory_GetDefaultTokenId(ISpObjectTokenCategory* This,LPWSTR *ppszCoMemTokenId) {
    return This->lpVtbl->GetDefaultTokenId(This,ppszCoMemTokenId);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpObjectTokenCategory_SetId_Proxy(
    ISpObjectTokenCategory* This,
    LPCWSTR pszCategoryId,
    WINBOOL fCreateIfNotExist);
void __RPC_STUB ISpObjectTokenCategory_SetId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpObjectTokenCategory_GetId_Proxy(
    ISpObjectTokenCategory* This,
    LPWSTR *ppszCoMemCategoryId);
void __RPC_STUB ISpObjectTokenCategory_GetId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpObjectTokenCategory_GetDataKey_Proxy(
    ISpObjectTokenCategory* This,
    SPDATAKEYLOCATION spdkl,
    ISpDataKey **ppDataKey);
void __RPC_STUB ISpObjectTokenCategory_GetDataKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpObjectTokenCategory_EnumTokens_Proxy(
    ISpObjectTokenCategory* This,
    LPCWSTR pzsReqAttribs,
    LPCWSTR pszOptAttribs,
    IEnumSpObjectTokens **ppEnum);
void __RPC_STUB ISpObjectTokenCategory_EnumTokens_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpObjectTokenCategory_SetDefaultTokenId_Proxy(
    ISpObjectTokenCategory* This,
    LPCWSTR pszTokenId);
void __RPC_STUB ISpObjectTokenCategory_SetDefaultTokenId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpObjectTokenCategory_GetDefaultTokenId_Proxy(
    ISpObjectTokenCategory* This,
    LPWSTR *ppszCoMemTokenId);
void __RPC_STUB ISpObjectTokenCategory_GetDefaultTokenId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpObjectTokenCategory_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpObjectToken interface
 */
#ifndef __ISpObjectToken_INTERFACE_DEFINED__
#define __ISpObjectToken_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpObjectToken, 0x14056589, 0xe16c, 0x11d2, 0xbb,0x90, 0x00,0xc0,0x4f,0x8e,0xe6,0xc0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("14056589-e16c-11d2-bb90-00c04f8ee6c0")
ISpObjectToken : public ISpDataKey
{
    virtual HRESULT STDMETHODCALLTYPE SetId(
        LPCWSTR pszCategoryId,
        LPCWSTR pszTokenId,
        WINBOOL fCreateIfNotExist) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetId(
        LPWSTR *ppszCoMemTokenId) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCategory(
        ISpObjectTokenCategory **ppTokenCategory) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateInstance(
        IUnknown *pUnkOuter,
        DWORD dwClsContext,
        REFIID riid,
        void **ppvObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStorageFileName(
        REFCLSID clsidCaller,
        LPCWSTR pszValueName,
        LPCWSTR pszFileNameSpecifier,
        ULONG nFolder,
        LPWSTR *ppszFilePath) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveStorageFileName(
        REFCLSID clsidCaller,
        LPCWSTR pszKeyName,
        WINBOOL fDeleteFile) = 0;

    virtual HRESULT STDMETHODCALLTYPE Remove(
        const CLSID *pclsidCaller) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsUISupported(
        LPCWSTR pszTypeOfUI,
        void *pvExtraData,
        ULONG cbExtraData,
        IUnknown *punkObject,
        WINBOOL *pfSupported) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisplayUI(
        HWND hwndParent,
        LPCWSTR pszTitle,
        LPCWSTR pszTypeOfUI,
        void *pvExtraData,
        ULONG cbExtraData,
        IUnknown *punkObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE MatchesAttributes(
        LPCWSTR pszAttributes,
        WINBOOL *pfMatches) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpObjectToken, 0x14056589, 0xe16c, 0x11d2, 0xbb,0x90, 0x00,0xc0,0x4f,0x8e,0xe6,0xc0)
#endif
#else
typedef struct ISpObjectTokenVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpObjectToken* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpObjectToken* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpObjectToken* This);

    /*** ISpDataKey methods ***/
    HRESULT (STDMETHODCALLTYPE *SetData)(
        ISpObjectToken* This,
        LPCWSTR pszValueName,
        ULONG cbData,
        const BYTE *pData);

    HRESULT (STDMETHODCALLTYPE *GetData)(
        ISpObjectToken* This,
        LPCWSTR pszValueName,
        ULONG *pcbData,
        BYTE *pData);

    HRESULT (STDMETHODCALLTYPE *SetStringValue)(
        ISpObjectToken* This,
        LPCWSTR pszValueName,
        LPCWSTR pszValue);

    HRESULT (STDMETHODCALLTYPE *GetStringValue)(
        ISpObjectToken* This,
        LPCWSTR pszValueName,
        LPWSTR *ppszValue);

    HRESULT (STDMETHODCALLTYPE *SetDWORD)(
        ISpObjectToken* This,
        LPCWSTR pszValueName,
        DWORD dwValue);

    HRESULT (STDMETHODCALLTYPE *GetDWORD)(
        ISpObjectToken* This,
        LPCWSTR pszValueName,
        DWORD *pdwValue);

    HRESULT (STDMETHODCALLTYPE *OpenKey)(
        ISpObjectToken* This,
        LPCWSTR pszSubKeyName,
        ISpDataKey **ppSubKey);

    HRESULT (STDMETHODCALLTYPE *CreateKey)(
        ISpObjectToken* This,
        LPCWSTR pszSubKey,
        ISpDataKey **ppSubKey);

    HRESULT (STDMETHODCALLTYPE *DeleteKey)(
        ISpObjectToken* This,
        LPCWSTR pszSubKey);

    HRESULT (STDMETHODCALLTYPE *DeleteValue)(
        ISpObjectToken* This,
        LPCWSTR pszValueName);

    HRESULT (STDMETHODCALLTYPE *EnumKeys)(
        ISpObjectToken* This,
        ULONG Index,
        LPWSTR *ppszSubKeyName);

    HRESULT (STDMETHODCALLTYPE *EnumValues)(
        ISpObjectToken* This,
        ULONG Index,
        LPWSTR *ppszValueName);

    /*** ISpObjectToken methods ***/
    HRESULT (STDMETHODCALLTYPE *SetId)(
        ISpObjectToken* This,
        LPCWSTR pszCategoryId,
        LPCWSTR pszTokenId,
        WINBOOL fCreateIfNotExist);

    HRESULT (STDMETHODCALLTYPE *GetId)(
        ISpObjectToken* This,
        LPWSTR *ppszCoMemTokenId);

    HRESULT (STDMETHODCALLTYPE *GetCategory)(
        ISpObjectToken* This,
        ISpObjectTokenCategory **ppTokenCategory);

    HRESULT (STDMETHODCALLTYPE *CreateInstance)(
        ISpObjectToken* This,
        IUnknown *pUnkOuter,
        DWORD dwClsContext,
        REFIID riid,
        void **ppvObject);

    HRESULT (STDMETHODCALLTYPE *GetStorageFileName)(
        ISpObjectToken* This,
        REFCLSID clsidCaller,
        LPCWSTR pszValueName,
        LPCWSTR pszFileNameSpecifier,
        ULONG nFolder,
        LPWSTR *ppszFilePath);

    HRESULT (STDMETHODCALLTYPE *RemoveStorageFileName)(
        ISpObjectToken* This,
        REFCLSID clsidCaller,
        LPCWSTR pszKeyName,
        WINBOOL fDeleteFile);

    HRESULT (STDMETHODCALLTYPE *Remove)(
        ISpObjectToken* This,
        const CLSID *pclsidCaller);

    HRESULT (STDMETHODCALLTYPE *IsUISupported)(
        ISpObjectToken* This,
        LPCWSTR pszTypeOfUI,
        void *pvExtraData,
        ULONG cbExtraData,
        IUnknown *punkObject,
        WINBOOL *pfSupported);

    HRESULT (STDMETHODCALLTYPE *DisplayUI)(
        ISpObjectToken* This,
        HWND hwndParent,
        LPCWSTR pszTitle,
        LPCWSTR pszTypeOfUI,
        void *pvExtraData,
        ULONG cbExtraData,
        IUnknown *punkObject);

    HRESULT (STDMETHODCALLTYPE *MatchesAttributes)(
        ISpObjectToken* This,
        LPCWSTR pszAttributes,
        WINBOOL *pfMatches);

    END_INTERFACE
} ISpObjectTokenVtbl;
interface ISpObjectToken {
    CONST_VTBL ISpObjectTokenVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpObjectToken_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpObjectToken_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpObjectToken_Release(This) (This)->lpVtbl->Release(This)
/*** ISpDataKey methods ***/
#define ISpObjectToken_SetData(This,pszValueName,cbData,pData) (This)->lpVtbl->SetData(This,pszValueName,cbData,pData)
#define ISpObjectToken_GetData(This,pszValueName,pcbData,pData) (This)->lpVtbl->GetData(This,pszValueName,pcbData,pData)
#define ISpObjectToken_SetStringValue(This,pszValueName,pszValue) (This)->lpVtbl->SetStringValue(This,pszValueName,pszValue)
#define ISpObjectToken_GetStringValue(This,pszValueName,ppszValue) (This)->lpVtbl->GetStringValue(This,pszValueName,ppszValue)
#define ISpObjectToken_SetDWORD(This,pszValueName,dwValue) (This)->lpVtbl->SetDWORD(This,pszValueName,dwValue)
#define ISpObjectToken_GetDWORD(This,pszValueName,pdwValue) (This)->lpVtbl->GetDWORD(This,pszValueName,pdwValue)
#define ISpObjectToken_OpenKey(This,pszSubKeyName,ppSubKey) (This)->lpVtbl->OpenKey(This,pszSubKeyName,ppSubKey)
#define ISpObjectToken_CreateKey(This,pszSubKey,ppSubKey) (This)->lpVtbl->CreateKey(This,pszSubKey,ppSubKey)
#define ISpObjectToken_DeleteKey(This,pszSubKey) (This)->lpVtbl->DeleteKey(This,pszSubKey)
#define ISpObjectToken_DeleteValue(This,pszValueName) (This)->lpVtbl->DeleteValue(This,pszValueName)
#define ISpObjectToken_EnumKeys(This,Index,ppszSubKeyName) (This)->lpVtbl->EnumKeys(This,Index,ppszSubKeyName)
#define ISpObjectToken_EnumValues(This,Index,ppszValueName) (This)->lpVtbl->EnumValues(This,Index,ppszValueName)
/*** ISpObjectToken methods ***/
#define ISpObjectToken_SetId(This,pszCategoryId,pszTokenId,fCreateIfNotExist) (This)->lpVtbl->SetId(This,pszCategoryId,pszTokenId,fCreateIfNotExist)
#define ISpObjectToken_GetId(This,ppszCoMemTokenId) (This)->lpVtbl->GetId(This,ppszCoMemTokenId)
#define ISpObjectToken_GetCategory(This,ppTokenCategory) (This)->lpVtbl->GetCategory(This,ppTokenCategory)
#define ISpObjectToken_CreateInstance(This,pUnkOuter,dwClsContext,riid,ppvObject) (This)->lpVtbl->CreateInstance(This,pUnkOuter,dwClsContext,riid,ppvObject)
#define ISpObjectToken_GetStorageFileName(This,clsidCaller,pszValueName,pszFileNameSpecifier,nFolder,ppszFilePath) (This)->lpVtbl->GetStorageFileName(This,clsidCaller,pszValueName,pszFileNameSpecifier,nFolder,ppszFilePath)
#define ISpObjectToken_RemoveStorageFileName(This,clsidCaller,pszKeyName,fDeleteFile) (This)->lpVtbl->RemoveStorageFileName(This,clsidCaller,pszKeyName,fDeleteFile)
#define ISpObjectToken_Remove(This,pclsidCaller) (This)->lpVtbl->Remove(This,pclsidCaller)
#define ISpObjectToken_IsUISupported(This,pszTypeOfUI,pvExtraData,cbExtraData,punkObject,pfSupported) (This)->lpVtbl->IsUISupported(This,pszTypeOfUI,pvExtraData,cbExtraData,punkObject,pfSupported)
#define ISpObjectToken_DisplayUI(This,hwndParent,pszTitle,pszTypeOfUI,pvExtraData,cbExtraData,punkObject) (This)->lpVtbl->DisplayUI(This,hwndParent,pszTitle,pszTypeOfUI,pvExtraData,cbExtraData,punkObject)
#define ISpObjectToken_MatchesAttributes(This,pszAttributes,pfMatches) (This)->lpVtbl->MatchesAttributes(This,pszAttributes,pfMatches)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpObjectToken_QueryInterface(ISpObjectToken* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpObjectToken_AddRef(ISpObjectToken* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpObjectToken_Release(ISpObjectToken* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpDataKey methods ***/
static FORCEINLINE HRESULT ISpObjectToken_SetData(ISpObjectToken* This,LPCWSTR pszValueName,ULONG cbData,const BYTE *pData) {
    return This->lpVtbl->SetData(This,pszValueName,cbData,pData);
}
static FORCEINLINE HRESULT ISpObjectToken_GetData(ISpObjectToken* This,LPCWSTR pszValueName,ULONG *pcbData,BYTE *pData) {
    return This->lpVtbl->GetData(This,pszValueName,pcbData,pData);
}
static FORCEINLINE HRESULT ISpObjectToken_SetStringValue(ISpObjectToken* This,LPCWSTR pszValueName,LPCWSTR pszValue) {
    return This->lpVtbl->SetStringValue(This,pszValueName,pszValue);
}
static FORCEINLINE HRESULT ISpObjectToken_GetStringValue(ISpObjectToken* This,LPCWSTR pszValueName,LPWSTR *ppszValue) {
    return This->lpVtbl->GetStringValue(This,pszValueName,ppszValue);
}
static FORCEINLINE HRESULT ISpObjectToken_SetDWORD(ISpObjectToken* This,LPCWSTR pszValueName,DWORD dwValue) {
    return This->lpVtbl->SetDWORD(This,pszValueName,dwValue);
}
static FORCEINLINE HRESULT ISpObjectToken_GetDWORD(ISpObjectToken* This,LPCWSTR pszValueName,DWORD *pdwValue) {
    return This->lpVtbl->GetDWORD(This,pszValueName,pdwValue);
}
static FORCEINLINE HRESULT ISpObjectToken_OpenKey(ISpObjectToken* This,LPCWSTR pszSubKeyName,ISpDataKey **ppSubKey) {
    return This->lpVtbl->OpenKey(This,pszSubKeyName,ppSubKey);
}
static FORCEINLINE HRESULT ISpObjectToken_CreateKey(ISpObjectToken* This,LPCWSTR pszSubKey,ISpDataKey **ppSubKey) {
    return This->lpVtbl->CreateKey(This,pszSubKey,ppSubKey);
}
static FORCEINLINE HRESULT ISpObjectToken_DeleteKey(ISpObjectToken* This,LPCWSTR pszSubKey) {
    return This->lpVtbl->DeleteKey(This,pszSubKey);
}
static FORCEINLINE HRESULT ISpObjectToken_DeleteValue(ISpObjectToken* This,LPCWSTR pszValueName) {
    return This->lpVtbl->DeleteValue(This,pszValueName);
}
static FORCEINLINE HRESULT ISpObjectToken_EnumKeys(ISpObjectToken* This,ULONG Index,LPWSTR *ppszSubKeyName) {
    return This->lpVtbl->EnumKeys(This,Index,ppszSubKeyName);
}
static FORCEINLINE HRESULT ISpObjectToken_EnumValues(ISpObjectToken* This,ULONG Index,LPWSTR *ppszValueName) {
    return This->lpVtbl->EnumValues(This,Index,ppszValueName);
}
/*** ISpObjectToken methods ***/
static FORCEINLINE HRESULT ISpObjectToken_SetId(ISpObjectToken* This,LPCWSTR pszCategoryId,LPCWSTR pszTokenId,WINBOOL fCreateIfNotExist) {
    return This->lpVtbl->SetId(This,pszCategoryId,pszTokenId,fCreateIfNotExist);
}
static FORCEINLINE HRESULT ISpObjectToken_GetId(ISpObjectToken* This,LPWSTR *ppszCoMemTokenId) {
    return This->lpVtbl->GetId(This,ppszCoMemTokenId);
}
static FORCEINLINE HRESULT ISpObjectToken_GetCategory(ISpObjectToken* This,ISpObjectTokenCategory **ppTokenCategory) {
    return This->lpVtbl->GetCategory(This,ppTokenCategory);
}
static FORCEINLINE HRESULT ISpObjectToken_CreateInstance(ISpObjectToken* This,IUnknown *pUnkOuter,DWORD dwClsContext,REFIID riid,void **ppvObject) {
    return This->lpVtbl->CreateInstance(This,pUnkOuter,dwClsContext,riid,ppvObject);
}
static FORCEINLINE HRESULT ISpObjectToken_GetStorageFileName(ISpObjectToken* This,REFCLSID clsidCaller,LPCWSTR pszValueName,LPCWSTR pszFileNameSpecifier,ULONG nFolder,LPWSTR *ppszFilePath) {
    return This->lpVtbl->GetStorageFileName(This,clsidCaller,pszValueName,pszFileNameSpecifier,nFolder,ppszFilePath);
}
static FORCEINLINE HRESULT ISpObjectToken_RemoveStorageFileName(ISpObjectToken* This,REFCLSID clsidCaller,LPCWSTR pszKeyName,WINBOOL fDeleteFile) {
    return This->lpVtbl->RemoveStorageFileName(This,clsidCaller,pszKeyName,fDeleteFile);
}
static FORCEINLINE HRESULT ISpObjectToken_Remove(ISpObjectToken* This,const CLSID *pclsidCaller) {
    return This->lpVtbl->Remove(This,pclsidCaller);
}
static FORCEINLINE HRESULT ISpObjectToken_IsUISupported(ISpObjectToken* This,LPCWSTR pszTypeOfUI,void *pvExtraData,ULONG cbExtraData,IUnknown *punkObject,WINBOOL *pfSupported) {
    return This->lpVtbl->IsUISupported(This,pszTypeOfUI,pvExtraData,cbExtraData,punkObject,pfSupported);
}
static FORCEINLINE HRESULT ISpObjectToken_DisplayUI(ISpObjectToken* This,HWND hwndParent,LPCWSTR pszTitle,LPCWSTR pszTypeOfUI,void *pvExtraData,ULONG cbExtraData,IUnknown *punkObject) {
    return This->lpVtbl->DisplayUI(This,hwndParent,pszTitle,pszTypeOfUI,pvExtraData,cbExtraData,punkObject);
}
static FORCEINLINE HRESULT ISpObjectToken_MatchesAttributes(ISpObjectToken* This,LPCWSTR pszAttributes,WINBOOL *pfMatches) {
    return This->lpVtbl->MatchesAttributes(This,pszAttributes,pfMatches);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpObjectToken_SetId_Proxy(
    ISpObjectToken* This,
    LPCWSTR pszCategoryId,
    LPCWSTR pszTokenId,
    WINBOOL fCreateIfNotExist);
void __RPC_STUB ISpObjectToken_SetId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpObjectToken_GetId_Proxy(
    ISpObjectToken* This,
    LPWSTR *ppszCoMemTokenId);
void __RPC_STUB ISpObjectToken_GetId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpObjectToken_GetCategory_Proxy(
    ISpObjectToken* This,
    ISpObjectTokenCategory **ppTokenCategory);
void __RPC_STUB ISpObjectToken_GetCategory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpObjectToken_CreateInstance_Proxy(
    ISpObjectToken* This,
    IUnknown *pUnkOuter,
    DWORD dwClsContext,
    REFIID riid,
    void **ppvObject);
void __RPC_STUB ISpObjectToken_CreateInstance_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpObjectToken_GetStorageFileName_Proxy(
    ISpObjectToken* This,
    REFCLSID clsidCaller,
    LPCWSTR pszValueName,
    LPCWSTR pszFileNameSpecifier,
    ULONG nFolder,
    LPWSTR *ppszFilePath);
void __RPC_STUB ISpObjectToken_GetStorageFileName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpObjectToken_RemoveStorageFileName_Proxy(
    ISpObjectToken* This,
    REFCLSID clsidCaller,
    LPCWSTR pszKeyName,
    WINBOOL fDeleteFile);
void __RPC_STUB ISpObjectToken_RemoveStorageFileName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpObjectToken_Remove_Proxy(
    ISpObjectToken* This,
    const CLSID *pclsidCaller);
void __RPC_STUB ISpObjectToken_Remove_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpObjectToken_MatchesAttributes_Proxy(
    ISpObjectToken* This,
    LPCWSTR pszAttributes,
    WINBOOL *pfMatches);
void __RPC_STUB ISpObjectToken_MatchesAttributes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpObjectToken_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpObjectTokenInit interface
 */
#ifndef __ISpObjectTokenInit_INTERFACE_DEFINED__
#define __ISpObjectTokenInit_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpObjectTokenInit, 0xb8aab0cf, 0x346f, 0x49d8, 0x94,0x99, 0xc8,0xb0,0x3f,0x16,0x1d,0x51);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b8aab0cf-346f-49d8-9499-c8b03f161d51")
ISpObjectTokenInit : public ISpObjectToken
{
    virtual HRESULT STDMETHODCALLTYPE InitFromDataKey(
        LPCWSTR pszCategoryId,
        LPCWSTR pszTokenId,
        ISpDataKey *pDataKey) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpObjectTokenInit, 0xb8aab0cf, 0x346f, 0x49d8, 0x94,0x99, 0xc8,0xb0,0x3f,0x16,0x1d,0x51)
#endif
#else
typedef struct ISpObjectTokenInitVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpObjectTokenInit* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpObjectTokenInit* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpObjectTokenInit* This);

    /*** ISpDataKey methods ***/
    HRESULT (STDMETHODCALLTYPE *SetData)(
        ISpObjectTokenInit* This,
        LPCWSTR pszValueName,
        ULONG cbData,
        const BYTE *pData);

    HRESULT (STDMETHODCALLTYPE *GetData)(
        ISpObjectTokenInit* This,
        LPCWSTR pszValueName,
        ULONG *pcbData,
        BYTE *pData);

    HRESULT (STDMETHODCALLTYPE *SetStringValue)(
        ISpObjectTokenInit* This,
        LPCWSTR pszValueName,
        LPCWSTR pszValue);

    HRESULT (STDMETHODCALLTYPE *GetStringValue)(
        ISpObjectTokenInit* This,
        LPCWSTR pszValueName,
        LPWSTR *ppszValue);

    HRESULT (STDMETHODCALLTYPE *SetDWORD)(
        ISpObjectTokenInit* This,
        LPCWSTR pszValueName,
        DWORD dwValue);

    HRESULT (STDMETHODCALLTYPE *GetDWORD)(
        ISpObjectTokenInit* This,
        LPCWSTR pszValueName,
        DWORD *pdwValue);

    HRESULT (STDMETHODCALLTYPE *OpenKey)(
        ISpObjectTokenInit* This,
        LPCWSTR pszSubKeyName,
        ISpDataKey **ppSubKey);

    HRESULT (STDMETHODCALLTYPE *CreateKey)(
        ISpObjectTokenInit* This,
        LPCWSTR pszSubKey,
        ISpDataKey **ppSubKey);

    HRESULT (STDMETHODCALLTYPE *DeleteKey)(
        ISpObjectTokenInit* This,
        LPCWSTR pszSubKey);

    HRESULT (STDMETHODCALLTYPE *DeleteValue)(
        ISpObjectTokenInit* This,
        LPCWSTR pszValueName);

    HRESULT (STDMETHODCALLTYPE *EnumKeys)(
        ISpObjectTokenInit* This,
        ULONG Index,
        LPWSTR *ppszSubKeyName);

    HRESULT (STDMETHODCALLTYPE *EnumValues)(
        ISpObjectTokenInit* This,
        ULONG Index,
        LPWSTR *ppszValueName);

    /*** ISpObjectToken methods ***/
    HRESULT (STDMETHODCALLTYPE *SetId)(
        ISpObjectTokenInit* This,
        LPCWSTR pszCategoryId,
        LPCWSTR pszTokenId,
        WINBOOL fCreateIfNotExist);

    HRESULT (STDMETHODCALLTYPE *GetId)(
        ISpObjectTokenInit* This,
        LPWSTR *ppszCoMemTokenId);

    HRESULT (STDMETHODCALLTYPE *GetCategory)(
        ISpObjectTokenInit* This,
        ISpObjectTokenCategory **ppTokenCategory);

    HRESULT (STDMETHODCALLTYPE *CreateInstance)(
        ISpObjectTokenInit* This,
        IUnknown *pUnkOuter,
        DWORD dwClsContext,
        REFIID riid,
        void **ppvObject);

    HRESULT (STDMETHODCALLTYPE *GetStorageFileName)(
        ISpObjectTokenInit* This,
        REFCLSID clsidCaller,
        LPCWSTR pszValueName,
        LPCWSTR pszFileNameSpecifier,
        ULONG nFolder,
        LPWSTR *ppszFilePath);

    HRESULT (STDMETHODCALLTYPE *RemoveStorageFileName)(
        ISpObjectTokenInit* This,
        REFCLSID clsidCaller,
        LPCWSTR pszKeyName,
        WINBOOL fDeleteFile);

    HRESULT (STDMETHODCALLTYPE *Remove)(
        ISpObjectTokenInit* This,
        const CLSID *pclsidCaller);

    HRESULT (STDMETHODCALLTYPE *IsUISupported)(
        ISpObjectTokenInit* This,
        LPCWSTR pszTypeOfUI,
        void *pvExtraData,
        ULONG cbExtraData,
        IUnknown *punkObject,
        WINBOOL *pfSupported);

    HRESULT (STDMETHODCALLTYPE *DisplayUI)(
        ISpObjectTokenInit* This,
        HWND hwndParent,
        LPCWSTR pszTitle,
        LPCWSTR pszTypeOfUI,
        void *pvExtraData,
        ULONG cbExtraData,
        IUnknown *punkObject);

    HRESULT (STDMETHODCALLTYPE *MatchesAttributes)(
        ISpObjectTokenInit* This,
        LPCWSTR pszAttributes,
        WINBOOL *pfMatches);

    /*** ISpObjectTokenInit methods ***/
    HRESULT (STDMETHODCALLTYPE *InitFromDataKey)(
        ISpObjectTokenInit* This,
        LPCWSTR pszCategoryId,
        LPCWSTR pszTokenId,
        ISpDataKey *pDataKey);

    END_INTERFACE
} ISpObjectTokenInitVtbl;
interface ISpObjectTokenInit {
    CONST_VTBL ISpObjectTokenInitVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpObjectTokenInit_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpObjectTokenInit_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpObjectTokenInit_Release(This) (This)->lpVtbl->Release(This)
/*** ISpDataKey methods ***/
#define ISpObjectTokenInit_SetData(This,pszValueName,cbData,pData) (This)->lpVtbl->SetData(This,pszValueName,cbData,pData)
#define ISpObjectTokenInit_GetData(This,pszValueName,pcbData,pData) (This)->lpVtbl->GetData(This,pszValueName,pcbData,pData)
#define ISpObjectTokenInit_SetStringValue(This,pszValueName,pszValue) (This)->lpVtbl->SetStringValue(This,pszValueName,pszValue)
#define ISpObjectTokenInit_GetStringValue(This,pszValueName,ppszValue) (This)->lpVtbl->GetStringValue(This,pszValueName,ppszValue)
#define ISpObjectTokenInit_SetDWORD(This,pszValueName,dwValue) (This)->lpVtbl->SetDWORD(This,pszValueName,dwValue)
#define ISpObjectTokenInit_GetDWORD(This,pszValueName,pdwValue) (This)->lpVtbl->GetDWORD(This,pszValueName,pdwValue)
#define ISpObjectTokenInit_OpenKey(This,pszSubKeyName,ppSubKey) (This)->lpVtbl->OpenKey(This,pszSubKeyName,ppSubKey)
#define ISpObjectTokenInit_CreateKey(This,pszSubKey,ppSubKey) (This)->lpVtbl->CreateKey(This,pszSubKey,ppSubKey)
#define ISpObjectTokenInit_DeleteKey(This,pszSubKey) (This)->lpVtbl->DeleteKey(This,pszSubKey)
#define ISpObjectTokenInit_DeleteValue(This,pszValueName) (This)->lpVtbl->DeleteValue(This,pszValueName)
#define ISpObjectTokenInit_EnumKeys(This,Index,ppszSubKeyName) (This)->lpVtbl->EnumKeys(This,Index,ppszSubKeyName)
#define ISpObjectTokenInit_EnumValues(This,Index,ppszValueName) (This)->lpVtbl->EnumValues(This,Index,ppszValueName)
/*** ISpObjectToken methods ***/
#define ISpObjectTokenInit_SetId(This,pszCategoryId,pszTokenId,fCreateIfNotExist) (This)->lpVtbl->SetId(This,pszCategoryId,pszTokenId,fCreateIfNotExist)
#define ISpObjectTokenInit_GetId(This,ppszCoMemTokenId) (This)->lpVtbl->GetId(This,ppszCoMemTokenId)
#define ISpObjectTokenInit_GetCategory(This,ppTokenCategory) (This)->lpVtbl->GetCategory(This,ppTokenCategory)
#define ISpObjectTokenInit_CreateInstance(This,pUnkOuter,dwClsContext,riid,ppvObject) (This)->lpVtbl->CreateInstance(This,pUnkOuter,dwClsContext,riid,ppvObject)
#define ISpObjectTokenInit_GetStorageFileName(This,clsidCaller,pszValueName,pszFileNameSpecifier,nFolder,ppszFilePath) (This)->lpVtbl->GetStorageFileName(This,clsidCaller,pszValueName,pszFileNameSpecifier,nFolder,ppszFilePath)
#define ISpObjectTokenInit_RemoveStorageFileName(This,clsidCaller,pszKeyName,fDeleteFile) (This)->lpVtbl->RemoveStorageFileName(This,clsidCaller,pszKeyName,fDeleteFile)
#define ISpObjectTokenInit_Remove(This,pclsidCaller) (This)->lpVtbl->Remove(This,pclsidCaller)
#define ISpObjectTokenInit_IsUISupported(This,pszTypeOfUI,pvExtraData,cbExtraData,punkObject,pfSupported) (This)->lpVtbl->IsUISupported(This,pszTypeOfUI,pvExtraData,cbExtraData,punkObject,pfSupported)
#define ISpObjectTokenInit_DisplayUI(This,hwndParent,pszTitle,pszTypeOfUI,pvExtraData,cbExtraData,punkObject) (This)->lpVtbl->DisplayUI(This,hwndParent,pszTitle,pszTypeOfUI,pvExtraData,cbExtraData,punkObject)
#define ISpObjectTokenInit_MatchesAttributes(This,pszAttributes,pfMatches) (This)->lpVtbl->MatchesAttributes(This,pszAttributes,pfMatches)
/*** ISpObjectTokenInit methods ***/
#define ISpObjectTokenInit_InitFromDataKey(This,pszCategoryId,pszTokenId,pDataKey) (This)->lpVtbl->InitFromDataKey(This,pszCategoryId,pszTokenId,pDataKey)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpObjectTokenInit_QueryInterface(ISpObjectTokenInit* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpObjectTokenInit_AddRef(ISpObjectTokenInit* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpObjectTokenInit_Release(ISpObjectTokenInit* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpDataKey methods ***/
static FORCEINLINE HRESULT ISpObjectTokenInit_SetData(ISpObjectTokenInit* This,LPCWSTR pszValueName,ULONG cbData,const BYTE *pData) {
    return This->lpVtbl->SetData(This,pszValueName,cbData,pData);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_GetData(ISpObjectTokenInit* This,LPCWSTR pszValueName,ULONG *pcbData,BYTE *pData) {
    return This->lpVtbl->GetData(This,pszValueName,pcbData,pData);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_SetStringValue(ISpObjectTokenInit* This,LPCWSTR pszValueName,LPCWSTR pszValue) {
    return This->lpVtbl->SetStringValue(This,pszValueName,pszValue);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_GetStringValue(ISpObjectTokenInit* This,LPCWSTR pszValueName,LPWSTR *ppszValue) {
    return This->lpVtbl->GetStringValue(This,pszValueName,ppszValue);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_SetDWORD(ISpObjectTokenInit* This,LPCWSTR pszValueName,DWORD dwValue) {
    return This->lpVtbl->SetDWORD(This,pszValueName,dwValue);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_GetDWORD(ISpObjectTokenInit* This,LPCWSTR pszValueName,DWORD *pdwValue) {
    return This->lpVtbl->GetDWORD(This,pszValueName,pdwValue);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_OpenKey(ISpObjectTokenInit* This,LPCWSTR pszSubKeyName,ISpDataKey **ppSubKey) {
    return This->lpVtbl->OpenKey(This,pszSubKeyName,ppSubKey);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_CreateKey(ISpObjectTokenInit* This,LPCWSTR pszSubKey,ISpDataKey **ppSubKey) {
    return This->lpVtbl->CreateKey(This,pszSubKey,ppSubKey);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_DeleteKey(ISpObjectTokenInit* This,LPCWSTR pszSubKey) {
    return This->lpVtbl->DeleteKey(This,pszSubKey);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_DeleteValue(ISpObjectTokenInit* This,LPCWSTR pszValueName) {
    return This->lpVtbl->DeleteValue(This,pszValueName);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_EnumKeys(ISpObjectTokenInit* This,ULONG Index,LPWSTR *ppszSubKeyName) {
    return This->lpVtbl->EnumKeys(This,Index,ppszSubKeyName);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_EnumValues(ISpObjectTokenInit* This,ULONG Index,LPWSTR *ppszValueName) {
    return This->lpVtbl->EnumValues(This,Index,ppszValueName);
}
/*** ISpObjectToken methods ***/
static FORCEINLINE HRESULT ISpObjectTokenInit_SetId(ISpObjectTokenInit* This,LPCWSTR pszCategoryId,LPCWSTR pszTokenId,WINBOOL fCreateIfNotExist) {
    return This->lpVtbl->SetId(This,pszCategoryId,pszTokenId,fCreateIfNotExist);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_GetId(ISpObjectTokenInit* This,LPWSTR *ppszCoMemTokenId) {
    return This->lpVtbl->GetId(This,ppszCoMemTokenId);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_GetCategory(ISpObjectTokenInit* This,ISpObjectTokenCategory **ppTokenCategory) {
    return This->lpVtbl->GetCategory(This,ppTokenCategory);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_CreateInstance(ISpObjectTokenInit* This,IUnknown *pUnkOuter,DWORD dwClsContext,REFIID riid,void **ppvObject) {
    return This->lpVtbl->CreateInstance(This,pUnkOuter,dwClsContext,riid,ppvObject);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_GetStorageFileName(ISpObjectTokenInit* This,REFCLSID clsidCaller,LPCWSTR pszValueName,LPCWSTR pszFileNameSpecifier,ULONG nFolder,LPWSTR *ppszFilePath) {
    return This->lpVtbl->GetStorageFileName(This,clsidCaller,pszValueName,pszFileNameSpecifier,nFolder,ppszFilePath);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_RemoveStorageFileName(ISpObjectTokenInit* This,REFCLSID clsidCaller,LPCWSTR pszKeyName,WINBOOL fDeleteFile) {
    return This->lpVtbl->RemoveStorageFileName(This,clsidCaller,pszKeyName,fDeleteFile);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_Remove(ISpObjectTokenInit* This,const CLSID *pclsidCaller) {
    return This->lpVtbl->Remove(This,pclsidCaller);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_IsUISupported(ISpObjectTokenInit* This,LPCWSTR pszTypeOfUI,void *pvExtraData,ULONG cbExtraData,IUnknown *punkObject,WINBOOL *pfSupported) {
    return This->lpVtbl->IsUISupported(This,pszTypeOfUI,pvExtraData,cbExtraData,punkObject,pfSupported);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_DisplayUI(ISpObjectTokenInit* This,HWND hwndParent,LPCWSTR pszTitle,LPCWSTR pszTypeOfUI,void *pvExtraData,ULONG cbExtraData,IUnknown *punkObject) {
    return This->lpVtbl->DisplayUI(This,hwndParent,pszTitle,pszTypeOfUI,pvExtraData,cbExtraData,punkObject);
}
static FORCEINLINE HRESULT ISpObjectTokenInit_MatchesAttributes(ISpObjectTokenInit* This,LPCWSTR pszAttributes,WINBOOL *pfMatches) {
    return This->lpVtbl->MatchesAttributes(This,pszAttributes,pfMatches);
}
/*** ISpObjectTokenInit methods ***/
static FORCEINLINE HRESULT ISpObjectTokenInit_InitFromDataKey(ISpObjectTokenInit* This,LPCWSTR pszCategoryId,LPCWSTR pszTokenId,ISpDataKey *pDataKey) {
    return This->lpVtbl->InitFromDataKey(This,pszCategoryId,pszTokenId,pDataKey);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpObjectTokenInit_InitFromDataKey_Proxy(
    ISpObjectTokenInit* This,
    LPCWSTR pszCategoryId,
    LPCWSTR pszTokenId,
    ISpDataKey *pDataKey);
void __RPC_STUB ISpObjectTokenInit_InitFromDataKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpObjectTokenInit_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpResourceManager interface
 */
#ifndef __ISpResourceManager_INTERFACE_DEFINED__
#define __ISpResourceManager_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpResourceManager, 0x93384e18, 0x5014, 0x43d5, 0xad,0xbb, 0xa7,0x8e,0x05,0x59,0x26,0xbd);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("93384e18-5014-43d5-adbb-a78e055926bd")
ISpResourceManager : public IServiceProvider
{
    virtual HRESULT STDMETHODCALLTYPE SetObject(
        REFGUID guidServiceId,
        IUnknown *pUnkObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetObject(
        REFGUID guidServiceId,
        REFCLSID ObjectCLSID,
        REFIID ObjectIID,
        WINBOOL fReleaseWhenLastExternalRefReleased,
        void **ppObject) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpResourceManager, 0x93384e18, 0x5014, 0x43d5, 0xad,0xbb, 0xa7,0x8e,0x05,0x59,0x26,0xbd)
#endif
#else
typedef struct ISpResourceManagerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpResourceManager* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpResourceManager* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpResourceManager* This);

    /*** IServiceProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryService)(
        ISpResourceManager* This,
        REFGUID guidService,
        REFIID riid,
        void **ppvObject);

    /*** ISpResourceManager methods ***/
    HRESULT (STDMETHODCALLTYPE *SetObject)(
        ISpResourceManager* This,
        REFGUID guidServiceId,
        IUnknown *pUnkObject);

    HRESULT (STDMETHODCALLTYPE *GetObject)(
        ISpResourceManager* This,
        REFGUID guidServiceId,
        REFCLSID ObjectCLSID,
        REFIID ObjectIID,
        WINBOOL fReleaseWhenLastExternalRefReleased,
        void **ppObject);

    END_INTERFACE
} ISpResourceManagerVtbl;
interface ISpResourceManager {
    CONST_VTBL ISpResourceManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpResourceManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpResourceManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpResourceManager_Release(This) (This)->lpVtbl->Release(This)
/*** IServiceProvider methods ***/
#define ISpResourceManager_QueryService(This,guidService,riid,ppvObject) (This)->lpVtbl->QueryService(This,guidService,riid,ppvObject)
/*** ISpResourceManager methods ***/
#define ISpResourceManager_SetObject(This,guidServiceId,pUnkObject) (This)->lpVtbl->SetObject(This,guidServiceId,pUnkObject)
#define ISpResourceManager_GetObject(This,guidServiceId,ObjectCLSID,ObjectIID,fReleaseWhenLastExternalRefReleased,ppObject) (This)->lpVtbl->GetObject(This,guidServiceId,ObjectCLSID,ObjectIID,fReleaseWhenLastExternalRefReleased,ppObject)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpResourceManager_QueryInterface(ISpResourceManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpResourceManager_AddRef(ISpResourceManager* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpResourceManager_Release(ISpResourceManager* This) {
    return This->lpVtbl->Release(This);
}
/*** IServiceProvider methods ***/
static FORCEINLINE HRESULT ISpResourceManager_QueryService(ISpResourceManager* This,REFGUID guidService,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryService(This,guidService,riid,ppvObject);
}
/*** ISpResourceManager methods ***/
static FORCEINLINE HRESULT ISpResourceManager_SetObject(ISpResourceManager* This,REFGUID guidServiceId,IUnknown *pUnkObject) {
    return This->lpVtbl->SetObject(This,guidServiceId,pUnkObject);
}
static FORCEINLINE HRESULT ISpResourceManager_GetObject(ISpResourceManager* This,REFGUID guidServiceId,REFCLSID ObjectCLSID,REFIID ObjectIID,WINBOOL fReleaseWhenLastExternalRefReleased,void **ppObject) {
    return This->lpVtbl->GetObject(This,guidServiceId,ObjectCLSID,ObjectIID,fReleaseWhenLastExternalRefReleased,ppObject);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpResourceManager_SetObject_Proxy(
    ISpResourceManager* This,
    REFGUID guidServiceId,
    IUnknown *pUnkObject);
void __RPC_STUB ISpResourceManager_SetObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpResourceManager_GetObject_Proxy(
    ISpResourceManager* This,
    REFGUID guidServiceId,
    REFCLSID ObjectCLSID,
    REFIID ObjectIID,
    WINBOOL fReleaseWhenLastExternalRefReleased,
    void **ppObject);
void __RPC_STUB ISpResourceManager_GetObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpResourceManager_INTERFACE_DEFINED__ */

#if 0
typedef struct SPEVENT {
    WORD eEventId;
    WORD elParamType;
    ULONG ulStreamNum;
    ULONGLONG ullAudioStreamOffset;
    WPARAM wParam;
    LPARAM lParam;
} SPEVENT;
typedef struct SPSERIALIZEDEVENT {
    WORD eEventId;
    WORD elParamType;
    ULONG ulStreamNum;
    ULONGLONG ullAudioStreamOffset;
    ULONG SerializedwParam;
    LONG SerializedlParam;
} SPSERIALIZEDEVENT;
typedef struct SPSERIALIZEDEVENT64 {
    WORD eEventId;
    WORD elParamType;
    ULONG ulStreamNum;
    ULONGLONG ullAudioStreamOffset;
    ULONGLONG SerializedwParam;
    LONGLONG SerializedlParam;
} SPSERIALIZEDEVENT64;
#else
typedef struct SPEVENT {
  SPEVENTENUM eEventId : 16;
  SPEVENTLPARAMTYPE elParamType : 16;
  ULONG ulStreamNum;
  ULONGLONG ullAudioStreamOffset;
  WPARAM      wParam;
  LPARAM      lParam;
} SPEVENT;

typedef struct SPSERIALIZEDEVENT {
  SPEVENTENUM eEventId : 16;
  SPEVENTLPARAMTYPE elParamType : 16;
  ULONG ulStreamNum;
  ULONGLONG ullAudioStreamOffset;
  ULONG SerializedwParam;
  LONG SerializedlParam;
} SPSERIALIZEDEVENT;

typedef struct SPSERIALIZEDEVENT64 {
  SPEVENTENUM eEventId : 16;
  SPEVENTLPARAMTYPE elParamType : 16;
  ULONG ulStreamNum;
  ULONGLONG ullAudioStreamOffset;
  ULONGLONG SerializedwParam;
  LONGLONG SerializedlParam;
} SPSERIALIZEDEVENT64;
#endif
typedef struct SPEVENTSOURCEINFO {
    ULONGLONG ullEventInterest;
    ULONGLONG ullQueuedInterest;
    ULONG ulCount;
} SPEVENTSOURCEINFO;
/*****************************************************************************
 * ISpEventSource interface
 */
#ifndef __ISpEventSource_INTERFACE_DEFINED__
#define __ISpEventSource_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpEventSource, 0xbe7a9cce, 0x5f9e, 0x11d2, 0x96,0x0f, 0x00,0xc0,0x4f,0x8e,0xe6,0x28);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("be7a9cce-5f9e-11d2-960f-00c04f8ee628")
ISpEventSource : public ISpNotifySource
{
    virtual HRESULT STDMETHODCALLTYPE SetInterest(
        ULONGLONG ullEventInterest,
        ULONGLONG ullQueuedInterest) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEvents(
        ULONG ulCount,
        SPEVENT *pEventArray,
        ULONG *pulFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInfo(
        SPEVENTSOURCEINFO *pInfo) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpEventSource, 0xbe7a9cce, 0x5f9e, 0x11d2, 0x96,0x0f, 0x00,0xc0,0x4f,0x8e,0xe6,0x28)
#endif
#else
typedef struct ISpEventSourceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpEventSource* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpEventSource* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpEventSource* This);

    /*** ISpNotifySource methods ***/
    HRESULT (STDMETHODCALLTYPE *SetNotifySink)(
        ISpEventSource* This,
        ISpNotifySink *pNotifySink);

    HRESULT (STDMETHODCALLTYPE *SetNotifyWindowMessage)(
        ISpEventSource* This,
        HWND hWnd,
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *SetNotifyCallbackFunction)(
        ISpEventSource* This,
        SPNOTIFYCALLBACK *pfnCallback,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *SetNotifyCallbackInterface)(
        ISpEventSource* This,
        ISpNotifyCallback *pSpCallback,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *SetNotifyWin32Event)(
        ISpEventSource* This);

    HRESULT (STDMETHODCALLTYPE *WaitForNotifyEvent)(
        ISpEventSource* This,
        DWORD dwMilliseconds);

    HANDLE (STDMETHODCALLTYPE *GetNotifyEventHandle)(
        ISpEventSource* This);

    /*** ISpEventSource methods ***/
    HRESULT (STDMETHODCALLTYPE *SetInterest)(
        ISpEventSource* This,
        ULONGLONG ullEventInterest,
        ULONGLONG ullQueuedInterest);

    HRESULT (STDMETHODCALLTYPE *GetEvents)(
        ISpEventSource* This,
        ULONG ulCount,
        SPEVENT *pEventArray,
        ULONG *pulFetched);

    HRESULT (STDMETHODCALLTYPE *GetInfo)(
        ISpEventSource* This,
        SPEVENTSOURCEINFO *pInfo);

    END_INTERFACE
} ISpEventSourceVtbl;
interface ISpEventSource {
    CONST_VTBL ISpEventSourceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpEventSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpEventSource_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpEventSource_Release(This) (This)->lpVtbl->Release(This)
/*** ISpNotifySource methods ***/
#define ISpEventSource_SetNotifySink(This,pNotifySink) (This)->lpVtbl->SetNotifySink(This,pNotifySink)
#define ISpEventSource_SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam) (This)->lpVtbl->SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam)
#define ISpEventSource_SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam) (This)->lpVtbl->SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam)
#define ISpEventSource_SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam) (This)->lpVtbl->SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam)
#define ISpEventSource_SetNotifyWin32Event(This) (This)->lpVtbl->SetNotifyWin32Event(This)
#define ISpEventSource_WaitForNotifyEvent(This,dwMilliseconds) (This)->lpVtbl->WaitForNotifyEvent(This,dwMilliseconds)
#define ISpEventSource_GetNotifyEventHandle(This) (This)->lpVtbl->GetNotifyEventHandle(This)
/*** ISpEventSource methods ***/
#define ISpEventSource_SetInterest(This,ullEventInterest,ullQueuedInterest) (This)->lpVtbl->SetInterest(This,ullEventInterest,ullQueuedInterest)
#define ISpEventSource_GetEvents(This,ulCount,pEventArray,pulFetched) (This)->lpVtbl->GetEvents(This,ulCount,pEventArray,pulFetched)
#define ISpEventSource_GetInfo(This,pInfo) (This)->lpVtbl->GetInfo(This,pInfo)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpEventSource_QueryInterface(ISpEventSource* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpEventSource_AddRef(ISpEventSource* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpEventSource_Release(ISpEventSource* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpNotifySource methods ***/
static FORCEINLINE HRESULT ISpEventSource_SetNotifySink(ISpEventSource* This,ISpNotifySink *pNotifySink) {
    return This->lpVtbl->SetNotifySink(This,pNotifySink);
}
static FORCEINLINE HRESULT ISpEventSource_SetNotifyWindowMessage(ISpEventSource* This,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam);
}
static FORCEINLINE HRESULT ISpEventSource_SetNotifyCallbackFunction(ISpEventSource* This,SPNOTIFYCALLBACK *pfnCallback,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam);
}
static FORCEINLINE HRESULT ISpEventSource_SetNotifyCallbackInterface(ISpEventSource* This,ISpNotifyCallback *pSpCallback,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam);
}
static FORCEINLINE HRESULT ISpEventSource_SetNotifyWin32Event(ISpEventSource* This) {
    return This->lpVtbl->SetNotifyWin32Event(This);
}
static FORCEINLINE HRESULT ISpEventSource_WaitForNotifyEvent(ISpEventSource* This,DWORD dwMilliseconds) {
    return This->lpVtbl->WaitForNotifyEvent(This,dwMilliseconds);
}
static FORCEINLINE HANDLE ISpEventSource_GetNotifyEventHandle(ISpEventSource* This) {
    return This->lpVtbl->GetNotifyEventHandle(This);
}
/*** ISpEventSource methods ***/
static FORCEINLINE HRESULT ISpEventSource_SetInterest(ISpEventSource* This,ULONGLONG ullEventInterest,ULONGLONG ullQueuedInterest) {
    return This->lpVtbl->SetInterest(This,ullEventInterest,ullQueuedInterest);
}
static FORCEINLINE HRESULT ISpEventSource_GetEvents(ISpEventSource* This,ULONG ulCount,SPEVENT *pEventArray,ULONG *pulFetched) {
    return This->lpVtbl->GetEvents(This,ulCount,pEventArray,pulFetched);
}
static FORCEINLINE HRESULT ISpEventSource_GetInfo(ISpEventSource* This,SPEVENTSOURCEINFO *pInfo) {
    return This->lpVtbl->GetInfo(This,pInfo);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpEventSource_SetInterest_Proxy(
    ISpEventSource* This,
    ULONGLONG ullEventInterest,
    ULONGLONG ullQueuedInterest);
void __RPC_STUB ISpEventSource_SetInterest_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpEventSource_GetEvents_Proxy(
    ISpEventSource* This,
    ULONG ulCount,
    SPEVENT *pEventArray,
    ULONG *pulFetched);
void __RPC_STUB ISpEventSource_GetEvents_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpEventSource_GetInfo_Proxy(
    ISpEventSource* This,
    SPEVENTSOURCEINFO *pInfo);
void __RPC_STUB ISpEventSource_GetInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpEventSource_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpEventSink interface
 */
#ifndef __ISpEventSink_INTERFACE_DEFINED__
#define __ISpEventSink_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpEventSink, 0xbe7a9cc9, 0x5f9e, 0x11d2, 0x96,0x0f, 0x00,0xc0,0x4f,0x8e,0xe6,0x28);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("be7a9cc9-5f9e-11d2-960f-00c04f8ee628")
ISpEventSink : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddEvents(
        const SPEVENT *pEventArray,
        ULONG ulCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEventInterest(
        ULONGLONG *pullEventInterest) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpEventSink, 0xbe7a9cc9, 0x5f9e, 0x11d2, 0x96,0x0f, 0x00,0xc0,0x4f,0x8e,0xe6,0x28)
#endif
#else
typedef struct ISpEventSinkVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpEventSink* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpEventSink* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpEventSink* This);

    /*** ISpEventSink methods ***/
    HRESULT (STDMETHODCALLTYPE *AddEvents)(
        ISpEventSink* This,
        const SPEVENT *pEventArray,
        ULONG ulCount);

    HRESULT (STDMETHODCALLTYPE *GetEventInterest)(
        ISpEventSink* This,
        ULONGLONG *pullEventInterest);

    END_INTERFACE
} ISpEventSinkVtbl;
interface ISpEventSink {
    CONST_VTBL ISpEventSinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpEventSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpEventSink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpEventSink_Release(This) (This)->lpVtbl->Release(This)
/*** ISpEventSink methods ***/
#define ISpEventSink_AddEvents(This,pEventArray,ulCount) (This)->lpVtbl->AddEvents(This,pEventArray,ulCount)
#define ISpEventSink_GetEventInterest(This,pullEventInterest) (This)->lpVtbl->GetEventInterest(This,pullEventInterest)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpEventSink_QueryInterface(ISpEventSink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpEventSink_AddRef(ISpEventSink* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpEventSink_Release(ISpEventSink* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpEventSink methods ***/
static FORCEINLINE HRESULT ISpEventSink_AddEvents(ISpEventSink* This,const SPEVENT *pEventArray,ULONG ulCount) {
    return This->lpVtbl->AddEvents(This,pEventArray,ulCount);
}
static FORCEINLINE HRESULT ISpEventSink_GetEventInterest(ISpEventSink* This,ULONGLONG *pullEventInterest) {
    return This->lpVtbl->GetEventInterest(This,pullEventInterest);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpEventSink_AddEvents_Proxy(
    ISpEventSink* This,
    const SPEVENT *pEventArray,
    ULONG ulCount);
void __RPC_STUB ISpEventSink_AddEvents_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpEventSink_GetEventInterest_Proxy(
    ISpEventSink* This,
    ULONGLONG *pullEventInterest);
void __RPC_STUB ISpEventSink_GetEventInterest_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpEventSink_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpStreamFormat interface
 */
#ifndef __ISpStreamFormat_INTERFACE_DEFINED__
#define __ISpStreamFormat_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpStreamFormat, 0xbed530be, 0x2606, 0x4f4d, 0xa1,0xc0, 0x54,0xc5,0xcd,0xa5,0x56,0x6f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bed530be-2606-4f4d-a1c0-54c5cda5566f")
ISpStreamFormat : public IStream
{
    virtual HRESULT STDMETHODCALLTYPE GetFormat(
        GUID *pguidFormatId,
        WAVEFORMATEX **ppCoMemWaveFormatEx) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpStreamFormat, 0xbed530be, 0x2606, 0x4f4d, 0xa1,0xc0, 0x54,0xc5,0xcd,0xa5,0x56,0x6f)
#endif
#else
typedef struct ISpStreamFormatVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpStreamFormat* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpStreamFormat* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpStreamFormat* This);

    /*** ISequentialStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Read)(
        ISpStreamFormat* This,
        void *pv,
        ULONG cb,
        ULONG *pcbRead);

    HRESULT (STDMETHODCALLTYPE *Write)(
        ISpStreamFormat* This,
        const void *pv,
        ULONG cb,
        ULONG *pcbWritten);

    /*** IStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Seek)(
        ISpStreamFormat* This,
        LARGE_INTEGER dlibMove,
        DWORD dwOrigin,
        ULARGE_INTEGER *plibNewPosition);

    HRESULT (STDMETHODCALLTYPE *SetSize)(
        ISpStreamFormat* This,
        ULARGE_INTEGER libNewSize);

    HRESULT (STDMETHODCALLTYPE *CopyTo)(
        ISpStreamFormat* This,
        IStream *pstm,
        ULARGE_INTEGER cb,
        ULARGE_INTEGER *pcbRead,
        ULARGE_INTEGER *pcbWritten);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        ISpStreamFormat* This,
        DWORD grfCommitFlags);

    HRESULT (STDMETHODCALLTYPE *Revert)(
        ISpStreamFormat* This);

    HRESULT (STDMETHODCALLTYPE *LockRegion)(
        ISpStreamFormat* This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);

    HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
        ISpStreamFormat* This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);

    HRESULT (STDMETHODCALLTYPE *Stat)(
        ISpStreamFormat* This,
        STATSTG *pstatstg,
        DWORD grfStatFlag);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ISpStreamFormat* This,
        IStream **ppstm);

    /*** ISpStreamFormat methods ***/
    HRESULT (STDMETHODCALLTYPE *GetFormat)(
        ISpStreamFormat* This,
        GUID *pguidFormatId,
        WAVEFORMATEX **ppCoMemWaveFormatEx);

    END_INTERFACE
} ISpStreamFormatVtbl;
interface ISpStreamFormat {
    CONST_VTBL ISpStreamFormatVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpStreamFormat_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpStreamFormat_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpStreamFormat_Release(This) (This)->lpVtbl->Release(This)
/*** ISequentialStream methods ***/
#define ISpStreamFormat_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
#define ISpStreamFormat_Write(This,pv,cb,pcbWritten) (This)->lpVtbl->Write(This,pv,cb,pcbWritten)
/*** IStream methods ***/
#define ISpStreamFormat_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
#define ISpStreamFormat_SetSize(This,libNewSize) (This)->lpVtbl->SetSize(This,libNewSize)
#define ISpStreamFormat_CopyTo(This,pstm,cb,pcbRead,pcbWritten) (This)->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten)
#define ISpStreamFormat_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags)
#define ISpStreamFormat_Revert(This) (This)->lpVtbl->Revert(This)
#define ISpStreamFormat_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType)
#define ISpStreamFormat_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType)
#define ISpStreamFormat_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
#define ISpStreamFormat_Clone(This,ppstm) (This)->lpVtbl->Clone(This,ppstm)
/*** ISpStreamFormat methods ***/
#define ISpStreamFormat_GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx) (This)->lpVtbl->GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpStreamFormat_QueryInterface(ISpStreamFormat* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpStreamFormat_AddRef(ISpStreamFormat* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpStreamFormat_Release(ISpStreamFormat* This) {
    return This->lpVtbl->Release(This);
}
/*** ISequentialStream methods ***/
static FORCEINLINE HRESULT ISpStreamFormat_Read(ISpStreamFormat* This,void *pv,ULONG cb,ULONG *pcbRead) {
    return This->lpVtbl->Read(This,pv,cb,pcbRead);
}
static FORCEINLINE HRESULT ISpStreamFormat_Write(ISpStreamFormat* This,const void *pv,ULONG cb,ULONG *pcbWritten) {
    return This->lpVtbl->Write(This,pv,cb,pcbWritten);
}
/*** IStream methods ***/
static FORCEINLINE HRESULT ISpStreamFormat_Seek(ISpStreamFormat* This,LARGE_INTEGER dlibMove,DWORD dwOrigin,ULARGE_INTEGER *plibNewPosition) {
    return This->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition);
}
static FORCEINLINE HRESULT ISpStreamFormat_SetSize(ISpStreamFormat* This,ULARGE_INTEGER libNewSize) {
    return This->lpVtbl->SetSize(This,libNewSize);
}
static FORCEINLINE HRESULT ISpStreamFormat_CopyTo(ISpStreamFormat* This,IStream *pstm,ULARGE_INTEGER cb,ULARGE_INTEGER *pcbRead,ULARGE_INTEGER *pcbWritten) {
    return This->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten);
}
static FORCEINLINE HRESULT ISpStreamFormat_Commit(ISpStreamFormat* This,DWORD grfCommitFlags) {
    return This->lpVtbl->Commit(This,grfCommitFlags);
}
static FORCEINLINE HRESULT ISpStreamFormat_Revert(ISpStreamFormat* This) {
    return This->lpVtbl->Revert(This);
}
static FORCEINLINE HRESULT ISpStreamFormat_LockRegion(ISpStreamFormat* This,ULARGE_INTEGER libOffset,ULARGE_INTEGER cb,DWORD dwLockType) {
    return This->lpVtbl->LockRegion(This,libOffset,cb,dwLockType);
}
static FORCEINLINE HRESULT ISpStreamFormat_UnlockRegion(ISpStreamFormat* This,ULARGE_INTEGER libOffset,ULARGE_INTEGER cb,DWORD dwLockType) {
    return This->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType);
}
static FORCEINLINE HRESULT ISpStreamFormat_Stat(ISpStreamFormat* This,STATSTG *pstatstg,DWORD grfStatFlag) {
    return This->lpVtbl->Stat(This,pstatstg,grfStatFlag);
}
static FORCEINLINE HRESULT ISpStreamFormat_Clone(ISpStreamFormat* This,IStream **ppstm) {
    return This->lpVtbl->Clone(This,ppstm);
}
/*** ISpStreamFormat methods ***/
static FORCEINLINE HRESULT ISpStreamFormat_GetFormat(ISpStreamFormat* This,GUID *pguidFormatId,WAVEFORMATEX **ppCoMemWaveFormatEx) {
    return This->lpVtbl->GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpStreamFormat_GetFormat_Proxy(
    ISpStreamFormat* This,
    GUID *pguidFormatId,
    WAVEFORMATEX **ppCoMemWaveFormatEx);
void __RPC_STUB ISpStreamFormat_GetFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpStreamFormat_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpStream interface
 */
#ifndef __ISpStream_INTERFACE_DEFINED__
#define __ISpStream_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpStream, 0x12e3cca9, 0x7518, 0x44c5, 0xa5,0xe7, 0xba,0x5a,0x79,0xcb,0x92,0x9e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("12e3cca9-7518-44c5-a5e7-ba5a79cb929e")
ISpStream : public ISpStreamFormat
{
    virtual HRESULT STDMETHODCALLTYPE SetBaseStream(
        IStream *pStream,
        REFGUID rguidFormat,
        const WAVEFORMATEX *pWaveFormatEx) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBaseStream(
        IStream **ppStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE BindToFile(
        LPCWSTR pszFileName,
        SPFILEMODE eMode,
        const GUID *pFormatId,
        const WAVEFORMATEX *pWaveFormatEx,
        ULONGLONG ullEventInterest) = 0;

    virtual HRESULT STDMETHODCALLTYPE Close(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpStream, 0x12e3cca9, 0x7518, 0x44c5, 0xa5,0xe7, 0xba,0x5a,0x79,0xcb,0x92,0x9e)
#endif
#else
typedef struct ISpStreamVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpStream* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpStream* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpStream* This);

    /*** ISequentialStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Read)(
        ISpStream* This,
        void *pv,
        ULONG cb,
        ULONG *pcbRead);

    HRESULT (STDMETHODCALLTYPE *Write)(
        ISpStream* This,
        const void *pv,
        ULONG cb,
        ULONG *pcbWritten);

    /*** IStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Seek)(
        ISpStream* This,
        LARGE_INTEGER dlibMove,
        DWORD dwOrigin,
        ULARGE_INTEGER *plibNewPosition);

    HRESULT (STDMETHODCALLTYPE *SetSize)(
        ISpStream* This,
        ULARGE_INTEGER libNewSize);

    HRESULT (STDMETHODCALLTYPE *CopyTo)(
        ISpStream* This,
        IStream *pstm,
        ULARGE_INTEGER cb,
        ULARGE_INTEGER *pcbRead,
        ULARGE_INTEGER *pcbWritten);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        ISpStream* This,
        DWORD grfCommitFlags);

    HRESULT (STDMETHODCALLTYPE *Revert)(
        ISpStream* This);

    HRESULT (STDMETHODCALLTYPE *LockRegion)(
        ISpStream* This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);

    HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
        ISpStream* This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);

    HRESULT (STDMETHODCALLTYPE *Stat)(
        ISpStream* This,
        STATSTG *pstatstg,
        DWORD grfStatFlag);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ISpStream* This,
        IStream **ppstm);

    /*** ISpStreamFormat methods ***/
    HRESULT (STDMETHODCALLTYPE *GetFormat)(
        ISpStream* This,
        GUID *pguidFormatId,
        WAVEFORMATEX **ppCoMemWaveFormatEx);

    /*** ISpStream methods ***/
    HRESULT (STDMETHODCALLTYPE *SetBaseStream)(
        ISpStream* This,
        IStream *pStream,
        REFGUID rguidFormat,
        const WAVEFORMATEX *pWaveFormatEx);

    HRESULT (STDMETHODCALLTYPE *GetBaseStream)(
        ISpStream* This,
        IStream **ppStream);

    HRESULT (STDMETHODCALLTYPE *BindToFile)(
        ISpStream* This,
        LPCWSTR pszFileName,
        SPFILEMODE eMode,
        const GUID *pFormatId,
        const WAVEFORMATEX *pWaveFormatEx,
        ULONGLONG ullEventInterest);

    HRESULT (STDMETHODCALLTYPE *Close)(
        ISpStream* This);

    END_INTERFACE
} ISpStreamVtbl;
interface ISpStream {
    CONST_VTBL ISpStreamVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpStream_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpStream_Release(This) (This)->lpVtbl->Release(This)
/*** ISequentialStream methods ***/
#define ISpStream_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
#define ISpStream_Write(This,pv,cb,pcbWritten) (This)->lpVtbl->Write(This,pv,cb,pcbWritten)
/*** IStream methods ***/
#define ISpStream_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
#define ISpStream_SetSize(This,libNewSize) (This)->lpVtbl->SetSize(This,libNewSize)
#define ISpStream_CopyTo(This,pstm,cb,pcbRead,pcbWritten) (This)->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten)
#define ISpStream_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags)
#define ISpStream_Revert(This) (This)->lpVtbl->Revert(This)
#define ISpStream_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType)
#define ISpStream_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType)
#define ISpStream_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
#define ISpStream_Clone(This,ppstm) (This)->lpVtbl->Clone(This,ppstm)
/*** ISpStreamFormat methods ***/
#define ISpStream_GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx) (This)->lpVtbl->GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
/*** ISpStream methods ***/
#define ISpStream_SetBaseStream(This,pStream,rguidFormat,pWaveFormatEx) (This)->lpVtbl->SetBaseStream(This,pStream,rguidFormat,pWaveFormatEx)
#define ISpStream_GetBaseStream(This,ppStream) (This)->lpVtbl->GetBaseStream(This,ppStream)
#define ISpStream_BindToFile(This,pszFileName,eMode,pFormatId,pWaveFormatEx,ullEventInterest) (This)->lpVtbl->BindToFile(This,pszFileName,eMode,pFormatId,pWaveFormatEx,ullEventInterest)
#define ISpStream_Close(This) (This)->lpVtbl->Close(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpStream_QueryInterface(ISpStream* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpStream_AddRef(ISpStream* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpStream_Release(ISpStream* This) {
    return This->lpVtbl->Release(This);
}
/*** ISequentialStream methods ***/
static FORCEINLINE HRESULT ISpStream_Read(ISpStream* This,void *pv,ULONG cb,ULONG *pcbRead) {
    return This->lpVtbl->Read(This,pv,cb,pcbRead);
}
static FORCEINLINE HRESULT ISpStream_Write(ISpStream* This,const void *pv,ULONG cb,ULONG *pcbWritten) {
    return This->lpVtbl->Write(This,pv,cb,pcbWritten);
}
/*** IStream methods ***/
static FORCEINLINE HRESULT ISpStream_Seek(ISpStream* This,LARGE_INTEGER dlibMove,DWORD dwOrigin,ULARGE_INTEGER *plibNewPosition) {
    return This->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition);
}
static FORCEINLINE HRESULT ISpStream_SetSize(ISpStream* This,ULARGE_INTEGER libNewSize) {
    return This->lpVtbl->SetSize(This,libNewSize);
}
static FORCEINLINE HRESULT ISpStream_CopyTo(ISpStream* This,IStream *pstm,ULARGE_INTEGER cb,ULARGE_INTEGER *pcbRead,ULARGE_INTEGER *pcbWritten) {
    return This->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten);
}
static FORCEINLINE HRESULT ISpStream_Commit(ISpStream* This,DWORD grfCommitFlags) {
    return This->lpVtbl->Commit(This,grfCommitFlags);
}
static FORCEINLINE HRESULT ISpStream_Revert(ISpStream* This) {
    return This->lpVtbl->Revert(This);
}
static FORCEINLINE HRESULT ISpStream_LockRegion(ISpStream* This,ULARGE_INTEGER libOffset,ULARGE_INTEGER cb,DWORD dwLockType) {
    return This->lpVtbl->LockRegion(This,libOffset,cb,dwLockType);
}
static FORCEINLINE HRESULT ISpStream_UnlockRegion(ISpStream* This,ULARGE_INTEGER libOffset,ULARGE_INTEGER cb,DWORD dwLockType) {
    return This->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType);
}
static FORCEINLINE HRESULT ISpStream_Stat(ISpStream* This,STATSTG *pstatstg,DWORD grfStatFlag) {
    return This->lpVtbl->Stat(This,pstatstg,grfStatFlag);
}
static FORCEINLINE HRESULT ISpStream_Clone(ISpStream* This,IStream **ppstm) {
    return This->lpVtbl->Clone(This,ppstm);
}
/*** ISpStreamFormat methods ***/
static FORCEINLINE HRESULT ISpStream_GetFormat(ISpStream* This,GUID *pguidFormatId,WAVEFORMATEX **ppCoMemWaveFormatEx) {
    return This->lpVtbl->GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx);
}
/*** ISpStream methods ***/
static FORCEINLINE HRESULT ISpStream_SetBaseStream(ISpStream* This,IStream *pStream,REFGUID rguidFormat,const WAVEFORMATEX *pWaveFormatEx) {
    return This->lpVtbl->SetBaseStream(This,pStream,rguidFormat,pWaveFormatEx);
}
static FORCEINLINE HRESULT ISpStream_GetBaseStream(ISpStream* This,IStream **ppStream) {
    return This->lpVtbl->GetBaseStream(This,ppStream);
}
static FORCEINLINE HRESULT ISpStream_BindToFile(ISpStream* This,LPCWSTR pszFileName,SPFILEMODE eMode,const GUID *pFormatId,const WAVEFORMATEX *pWaveFormatEx,ULONGLONG ullEventInterest) {
    return This->lpVtbl->BindToFile(This,pszFileName,eMode,pFormatId,pWaveFormatEx,ullEventInterest);
}
static FORCEINLINE HRESULT ISpStream_Close(ISpStream* This) {
    return This->lpVtbl->Close(This);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpStream_SetBaseStream_Proxy(
    ISpStream* This,
    IStream *pStream,
    REFGUID rguidFormat,
    const WAVEFORMATEX *pWaveFormatEx);
void __RPC_STUB ISpStream_SetBaseStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpStream_GetBaseStream_Proxy(
    ISpStream* This,
    IStream **ppStream);
void __RPC_STUB ISpStream_GetBaseStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpStream_BindToFile_Proxy(
    ISpStream* This,
    LPCWSTR pszFileName,
    SPFILEMODE eMode,
    const GUID *pFormatId,
    const WAVEFORMATEX *pWaveFormatEx,
    ULONGLONG ullEventInterest);
void __RPC_STUB ISpStream_BindToFile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpStream_Close_Proxy(
    ISpStream* This);
void __RPC_STUB ISpStream_Close_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpStream_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpStreamFormatConverter interface
 */
#ifndef __ISpStreamFormatConverter_INTERFACE_DEFINED__
#define __ISpStreamFormatConverter_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpStreamFormatConverter, 0x678a932c, 0xea71, 0x4446, 0x9b,0x41, 0x78,0xfd,0xa6,0x28,0x0a,0x29);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("678a932c-ea71-4446-9b41-78fda6280a29")
ISpStreamFormatConverter : public ISpStreamFormat
{
    virtual HRESULT STDMETHODCALLTYPE SetBaseStream(
        ISpStreamFormat *pStream,
        WINBOOL fSetFormatToBaseStreamFormat,
        WINBOOL fWriteToBaseStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBaseStream(
        ISpStreamFormat **ppStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFormat(
        REFGUID rguidFormatIdOfConvertedStream,
        const WAVEFORMATEX *pWaveFormatExOfConvertedStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE ResetSeekPosition(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScaleConvertedToBaseOffset(
        ULONGLONG ullOffsetConvertedStream,
        ULONGLONG *pullOffsetBaseStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScaleBaseToConvertedOffset(
        ULONGLONG ullOffsetBaseStream,
        ULONGLONG *pullOffsetConvertedStream) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpStreamFormatConverter, 0x678a932c, 0xea71, 0x4446, 0x9b,0x41, 0x78,0xfd,0xa6,0x28,0x0a,0x29)
#endif
#else
typedef struct ISpStreamFormatConverterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpStreamFormatConverter* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpStreamFormatConverter* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpStreamFormatConverter* This);

    /*** ISequentialStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Read)(
        ISpStreamFormatConverter* This,
        void *pv,
        ULONG cb,
        ULONG *pcbRead);

    HRESULT (STDMETHODCALLTYPE *Write)(
        ISpStreamFormatConverter* This,
        const void *pv,
        ULONG cb,
        ULONG *pcbWritten);

    /*** IStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Seek)(
        ISpStreamFormatConverter* This,
        LARGE_INTEGER dlibMove,
        DWORD dwOrigin,
        ULARGE_INTEGER *plibNewPosition);

    HRESULT (STDMETHODCALLTYPE *SetSize)(
        ISpStreamFormatConverter* This,
        ULARGE_INTEGER libNewSize);

    HRESULT (STDMETHODCALLTYPE *CopyTo)(
        ISpStreamFormatConverter* This,
        IStream *pstm,
        ULARGE_INTEGER cb,
        ULARGE_INTEGER *pcbRead,
        ULARGE_INTEGER *pcbWritten);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        ISpStreamFormatConverter* This,
        DWORD grfCommitFlags);

    HRESULT (STDMETHODCALLTYPE *Revert)(
        ISpStreamFormatConverter* This);

    HRESULT (STDMETHODCALLTYPE *LockRegion)(
        ISpStreamFormatConverter* This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);

    HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
        ISpStreamFormatConverter* This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);

    HRESULT (STDMETHODCALLTYPE *Stat)(
        ISpStreamFormatConverter* This,
        STATSTG *pstatstg,
        DWORD grfStatFlag);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ISpStreamFormatConverter* This,
        IStream **ppstm);

    /*** ISpStreamFormat methods ***/
    HRESULT (STDMETHODCALLTYPE *GetFormat)(
        ISpStreamFormatConverter* This,
        GUID *pguidFormatId,
        WAVEFORMATEX **ppCoMemWaveFormatEx);

    /*** ISpStreamFormatConverter methods ***/
    HRESULT (STDMETHODCALLTYPE *SetBaseStream)(
        ISpStreamFormatConverter* This,
        ISpStreamFormat *pStream,
        WINBOOL fSetFormatToBaseStreamFormat,
        WINBOOL fWriteToBaseStream);

    HRESULT (STDMETHODCALLTYPE *GetBaseStream)(
        ISpStreamFormatConverter* This,
        ISpStreamFormat **ppStream);

    HRESULT (STDMETHODCALLTYPE *SetFormat)(
        ISpStreamFormatConverter* This,
        REFGUID rguidFormatIdOfConvertedStream,
        const WAVEFORMATEX *pWaveFormatExOfConvertedStream);

    HRESULT (STDMETHODCALLTYPE *ResetSeekPosition)(
        ISpStreamFormatConverter* This);

    HRESULT (STDMETHODCALLTYPE *ScaleConvertedToBaseOffset)(
        ISpStreamFormatConverter* This,
        ULONGLONG ullOffsetConvertedStream,
        ULONGLONG *pullOffsetBaseStream);

    HRESULT (STDMETHODCALLTYPE *ScaleBaseToConvertedOffset)(
        ISpStreamFormatConverter* This,
        ULONGLONG ullOffsetBaseStream,
        ULONGLONG *pullOffsetConvertedStream);

    END_INTERFACE
} ISpStreamFormatConverterVtbl;
interface ISpStreamFormatConverter {
    CONST_VTBL ISpStreamFormatConverterVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpStreamFormatConverter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpStreamFormatConverter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpStreamFormatConverter_Release(This) (This)->lpVtbl->Release(This)
/*** ISequentialStream methods ***/
#define ISpStreamFormatConverter_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
#define ISpStreamFormatConverter_Write(This,pv,cb,pcbWritten) (This)->lpVtbl->Write(This,pv,cb,pcbWritten)
/*** IStream methods ***/
#define ISpStreamFormatConverter_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
#define ISpStreamFormatConverter_SetSize(This,libNewSize) (This)->lpVtbl->SetSize(This,libNewSize)
#define ISpStreamFormatConverter_CopyTo(This,pstm,cb,pcbRead,pcbWritten) (This)->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten)
#define ISpStreamFormatConverter_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags)
#define ISpStreamFormatConverter_Revert(This) (This)->lpVtbl->Revert(This)
#define ISpStreamFormatConverter_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType)
#define ISpStreamFormatConverter_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType)
#define ISpStreamFormatConverter_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
#define ISpStreamFormatConverter_Clone(This,ppstm) (This)->lpVtbl->Clone(This,ppstm)
/*** ISpStreamFormat methods ***/
#define ISpStreamFormatConverter_GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx) (This)->lpVtbl->GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
/*** ISpStreamFormatConverter methods ***/
#define ISpStreamFormatConverter_SetBaseStream(This,pStream,fSetFormatToBaseStreamFormat,fWriteToBaseStream) (This)->lpVtbl->SetBaseStream(This,pStream,fSetFormatToBaseStreamFormat,fWriteToBaseStream)
#define ISpStreamFormatConverter_GetBaseStream(This,ppStream) (This)->lpVtbl->GetBaseStream(This,ppStream)
#define ISpStreamFormatConverter_SetFormat(This,rguidFormatIdOfConvertedStream,pWaveFormatExOfConvertedStream) (This)->lpVtbl->SetFormat(This,rguidFormatIdOfConvertedStream,pWaveFormatExOfConvertedStream)
#define ISpStreamFormatConverter_ResetSeekPosition(This) (This)->lpVtbl->ResetSeekPosition(This)
#define ISpStreamFormatConverter_ScaleConvertedToBaseOffset(This,ullOffsetConvertedStream,pullOffsetBaseStream) (This)->lpVtbl->ScaleConvertedToBaseOffset(This,ullOffsetConvertedStream,pullOffsetBaseStream)
#define ISpStreamFormatConverter_ScaleBaseToConvertedOffset(This,ullOffsetBaseStream,pullOffsetConvertedStream) (This)->lpVtbl->ScaleBaseToConvertedOffset(This,ullOffsetBaseStream,pullOffsetConvertedStream)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpStreamFormatConverter_QueryInterface(ISpStreamFormatConverter* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpStreamFormatConverter_AddRef(ISpStreamFormatConverter* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpStreamFormatConverter_Release(ISpStreamFormatConverter* This) {
    return This->lpVtbl->Release(This);
}
/*** ISequentialStream methods ***/
static FORCEINLINE HRESULT ISpStreamFormatConverter_Read(ISpStreamFormatConverter* This,void *pv,ULONG cb,ULONG *pcbRead) {
    return This->lpVtbl->Read(This,pv,cb,pcbRead);
}
static FORCEINLINE HRESULT ISpStreamFormatConverter_Write(ISpStreamFormatConverter* This,const void *pv,ULONG cb,ULONG *pcbWritten) {
    return This->lpVtbl->Write(This,pv,cb,pcbWritten);
}
/*** IStream methods ***/
static FORCEINLINE HRESULT ISpStreamFormatConverter_Seek(ISpStreamFormatConverter* This,LARGE_INTEGER dlibMove,DWORD dwOrigin,ULARGE_INTEGER *plibNewPosition) {
    return This->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition);
}
static FORCEINLINE HRESULT ISpStreamFormatConverter_SetSize(ISpStreamFormatConverter* This,ULARGE_INTEGER libNewSize) {
    return This->lpVtbl->SetSize(This,libNewSize);
}
static FORCEINLINE HRESULT ISpStreamFormatConverter_CopyTo(ISpStreamFormatConverter* This,IStream *pstm,ULARGE_INTEGER cb,ULARGE_INTEGER *pcbRead,ULARGE_INTEGER *pcbWritten) {
    return This->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten);
}
static FORCEINLINE HRESULT ISpStreamFormatConverter_Commit(ISpStreamFormatConverter* This,DWORD grfCommitFlags) {
    return This->lpVtbl->Commit(This,grfCommitFlags);
}
static FORCEINLINE HRESULT ISpStreamFormatConverter_Revert(ISpStreamFormatConverter* This) {
    return This->lpVtbl->Revert(This);
}
static FORCEINLINE HRESULT ISpStreamFormatConverter_LockRegion(ISpStreamFormatConverter* This,ULARGE_INTEGER libOffset,ULARGE_INTEGER cb,DWORD dwLockType) {
    return This->lpVtbl->LockRegion(This,libOffset,cb,dwLockType);
}
static FORCEINLINE HRESULT ISpStreamFormatConverter_UnlockRegion(ISpStreamFormatConverter* This,ULARGE_INTEGER libOffset,ULARGE_INTEGER cb,DWORD dwLockType) {
    return This->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType);
}
static FORCEINLINE HRESULT ISpStreamFormatConverter_Stat(ISpStreamFormatConverter* This,STATSTG *pstatstg,DWORD grfStatFlag) {
    return This->lpVtbl->Stat(This,pstatstg,grfStatFlag);
}
static FORCEINLINE HRESULT ISpStreamFormatConverter_Clone(ISpStreamFormatConverter* This,IStream **ppstm) {
    return This->lpVtbl->Clone(This,ppstm);
}
/*** ISpStreamFormat methods ***/
static FORCEINLINE HRESULT ISpStreamFormatConverter_GetFormat(ISpStreamFormatConverter* This,GUID *pguidFormatId,WAVEFORMATEX **ppCoMemWaveFormatEx) {
    return This->lpVtbl->GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx);
}
/*** ISpStreamFormatConverter methods ***/
static FORCEINLINE HRESULT ISpStreamFormatConverter_SetBaseStream(ISpStreamFormatConverter* This,ISpStreamFormat *pStream,WINBOOL fSetFormatToBaseStreamFormat,WINBOOL fWriteToBaseStream) {
    return This->lpVtbl->SetBaseStream(This,pStream,fSetFormatToBaseStreamFormat,fWriteToBaseStream);
}
static FORCEINLINE HRESULT ISpStreamFormatConverter_GetBaseStream(ISpStreamFormatConverter* This,ISpStreamFormat **ppStream) {
    return This->lpVtbl->GetBaseStream(This,ppStream);
}
static FORCEINLINE HRESULT ISpStreamFormatConverter_SetFormat(ISpStreamFormatConverter* This,REFGUID rguidFormatIdOfConvertedStream,const WAVEFORMATEX *pWaveFormatExOfConvertedStream) {
    return This->lpVtbl->SetFormat(This,rguidFormatIdOfConvertedStream,pWaveFormatExOfConvertedStream);
}
static FORCEINLINE HRESULT ISpStreamFormatConverter_ResetSeekPosition(ISpStreamFormatConverter* This) {
    return This->lpVtbl->ResetSeekPosition(This);
}
static FORCEINLINE HRESULT ISpStreamFormatConverter_ScaleConvertedToBaseOffset(ISpStreamFormatConverter* This,ULONGLONG ullOffsetConvertedStream,ULONGLONG *pullOffsetBaseStream) {
    return This->lpVtbl->ScaleConvertedToBaseOffset(This,ullOffsetConvertedStream,pullOffsetBaseStream);
}
static FORCEINLINE HRESULT ISpStreamFormatConverter_ScaleBaseToConvertedOffset(ISpStreamFormatConverter* This,ULONGLONG ullOffsetBaseStream,ULONGLONG *pullOffsetConvertedStream) {
    return This->lpVtbl->ScaleBaseToConvertedOffset(This,ullOffsetBaseStream,pullOffsetConvertedStream);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpStreamFormatConverter_SetBaseStream_Proxy(
    ISpStreamFormatConverter* This,
    ISpStreamFormat *pStream,
    WINBOOL fSetFormatToBaseStreamFormat,
    WINBOOL fWriteToBaseStream);
void __RPC_STUB ISpStreamFormatConverter_SetBaseStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpStreamFormatConverter_GetBaseStream_Proxy(
    ISpStreamFormatConverter* This,
    ISpStreamFormat **ppStream);
void __RPC_STUB ISpStreamFormatConverter_GetBaseStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpStreamFormatConverter_SetFormat_Proxy(
    ISpStreamFormatConverter* This,
    REFGUID rguidFormatIdOfConvertedStream,
    const WAVEFORMATEX *pWaveFormatExOfConvertedStream);
void __RPC_STUB ISpStreamFormatConverter_SetFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpStreamFormatConverter_ResetSeekPosition_Proxy(
    ISpStreamFormatConverter* This);
void __RPC_STUB ISpStreamFormatConverter_ResetSeekPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpStreamFormatConverter_ScaleConvertedToBaseOffset_Proxy(
    ISpStreamFormatConverter* This,
    ULONGLONG ullOffsetConvertedStream,
    ULONGLONG *pullOffsetBaseStream);
void __RPC_STUB ISpStreamFormatConverter_ScaleConvertedToBaseOffset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpStreamFormatConverter_ScaleBaseToConvertedOffset_Proxy(
    ISpStreamFormatConverter* This,
    ULONGLONG ullOffsetBaseStream,
    ULONGLONG *pullOffsetConvertedStream);
void __RPC_STUB ISpStreamFormatConverter_ScaleBaseToConvertedOffset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpStreamFormatConverter_INTERFACE_DEFINED__ */

typedef struct SPAUDIOSTATUS {
    LONG cbFreeBuffSpace;
    ULONG cbNonBlockingIO;
    SPAUDIOSTATE State;
    ULONGLONG CurSeekPos;
    ULONGLONG CurDevicePos;
    DWORD dwAudioLevel;
    DWORD dwReserved2;
} SPAUDIOSTATUS;
typedef struct SPAUDIOBUFFERINFO {
    ULONG ulMsMinNotification;
    ULONG ulMsBufferSize;
    ULONG ulMsEventBias;
} SPAUDIOBUFFERINFO;
/*****************************************************************************
 * ISpAudio interface
 */
#ifndef __ISpAudio_INTERFACE_DEFINED__
#define __ISpAudio_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpAudio, 0xc05c768f, 0xfae8, 0x4ec2, 0x8e,0x07, 0x33,0x83,0x21,0xc1,0x24,0x52);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c05c768f-fae8-4ec2-8e07-338321c12452")
ISpAudio : public ISpStreamFormat
{
    virtual HRESULT STDMETHODCALLTYPE SetState(
        SPAUDIOSTATE NewState,
        ULONGLONG ullReserved) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFormat(
        REFGUID rguidFmtId,
        const WAVEFORMATEX *pWaveFormatEx) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStatus(
        SPAUDIOSTATUS *pStatus) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBufferInfo(
        const SPAUDIOBUFFERINFO *pBuffInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferInfo(
        SPAUDIOBUFFERINFO *pBuffInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultFormat(
        GUID *pFormatId,
        WAVEFORMATEX **ppCoMemWaveFormatEx) = 0;

    virtual HANDLE STDMETHODCALLTYPE EventHandle(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVolumeLevel(
        ULONG *pLevel) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVolumeLevel(
        ULONG Level) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferNotifySize(
        ULONG *pcbSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBufferNotifySize(
        ULONG cbSize) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpAudio, 0xc05c768f, 0xfae8, 0x4ec2, 0x8e,0x07, 0x33,0x83,0x21,0xc1,0x24,0x52)
#endif
#else
typedef struct ISpAudioVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpAudio* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpAudio* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpAudio* This);

    /*** ISequentialStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Read)(
        ISpAudio* This,
        void *pv,
        ULONG cb,
        ULONG *pcbRead);

    HRESULT (STDMETHODCALLTYPE *Write)(
        ISpAudio* This,
        const void *pv,
        ULONG cb,
        ULONG *pcbWritten);

    /*** IStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Seek)(
        ISpAudio* This,
        LARGE_INTEGER dlibMove,
        DWORD dwOrigin,
        ULARGE_INTEGER *plibNewPosition);

    HRESULT (STDMETHODCALLTYPE *SetSize)(
        ISpAudio* This,
        ULARGE_INTEGER libNewSize);

    HRESULT (STDMETHODCALLTYPE *CopyTo)(
        ISpAudio* This,
        IStream *pstm,
        ULARGE_INTEGER cb,
        ULARGE_INTEGER *pcbRead,
        ULARGE_INTEGER *pcbWritten);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        ISpAudio* This,
        DWORD grfCommitFlags);

    HRESULT (STDMETHODCALLTYPE *Revert)(
        ISpAudio* This);

    HRESULT (STDMETHODCALLTYPE *LockRegion)(
        ISpAudio* This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);

    HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
        ISpAudio* This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);

    HRESULT (STDMETHODCALLTYPE *Stat)(
        ISpAudio* This,
        STATSTG *pstatstg,
        DWORD grfStatFlag);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ISpAudio* This,
        IStream **ppstm);

    /*** ISpStreamFormat methods ***/
    HRESULT (STDMETHODCALLTYPE *GetFormat)(
        ISpAudio* This,
        GUID *pguidFormatId,
        WAVEFORMATEX **ppCoMemWaveFormatEx);

    /*** ISpAudio methods ***/
    HRESULT (STDMETHODCALLTYPE *SetState)(
        ISpAudio* This,
        SPAUDIOSTATE NewState,
        ULONGLONG ullReserved);

    HRESULT (STDMETHODCALLTYPE *SetFormat)(
        ISpAudio* This,
        REFGUID rguidFmtId,
        const WAVEFORMATEX *pWaveFormatEx);

    HRESULT (STDMETHODCALLTYPE *GetStatus)(
        ISpAudio* This,
        SPAUDIOSTATUS *pStatus);

    HRESULT (STDMETHODCALLTYPE *SetBufferInfo)(
        ISpAudio* This,
        const SPAUDIOBUFFERINFO *pBuffInfo);

    HRESULT (STDMETHODCALLTYPE *GetBufferInfo)(
        ISpAudio* This,
        SPAUDIOBUFFERINFO *pBuffInfo);

    HRESULT (STDMETHODCALLTYPE *GetDefaultFormat)(
        ISpAudio* This,
        GUID *pFormatId,
        WAVEFORMATEX **ppCoMemWaveFormatEx);

    HANDLE (STDMETHODCALLTYPE *EventHandle)(
        ISpAudio* This);

    HRESULT (STDMETHODCALLTYPE *GetVolumeLevel)(
        ISpAudio* This,
        ULONG *pLevel);

    HRESULT (STDMETHODCALLTYPE *SetVolumeLevel)(
        ISpAudio* This,
        ULONG Level);

    HRESULT (STDMETHODCALLTYPE *GetBufferNotifySize)(
        ISpAudio* This,
        ULONG *pcbSize);

    HRESULT (STDMETHODCALLTYPE *SetBufferNotifySize)(
        ISpAudio* This,
        ULONG cbSize);

    END_INTERFACE
} ISpAudioVtbl;
interface ISpAudio {
    CONST_VTBL ISpAudioVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpAudio_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpAudio_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpAudio_Release(This) (This)->lpVtbl->Release(This)
/*** ISequentialStream methods ***/
#define ISpAudio_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
#define ISpAudio_Write(This,pv,cb,pcbWritten) (This)->lpVtbl->Write(This,pv,cb,pcbWritten)
/*** IStream methods ***/
#define ISpAudio_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
#define ISpAudio_SetSize(This,libNewSize) (This)->lpVtbl->SetSize(This,libNewSize)
#define ISpAudio_CopyTo(This,pstm,cb,pcbRead,pcbWritten) (This)->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten)
#define ISpAudio_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags)
#define ISpAudio_Revert(This) (This)->lpVtbl->Revert(This)
#define ISpAudio_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType)
#define ISpAudio_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType)
#define ISpAudio_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
#define ISpAudio_Clone(This,ppstm) (This)->lpVtbl->Clone(This,ppstm)
/*** ISpStreamFormat methods ***/
#define ISpAudio_GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx) (This)->lpVtbl->GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
/*** ISpAudio methods ***/
#define ISpAudio_SetState(This,NewState,ullReserved) (This)->lpVtbl->SetState(This,NewState,ullReserved)
#define ISpAudio_SetFormat(This,rguidFmtId,pWaveFormatEx) (This)->lpVtbl->SetFormat(This,rguidFmtId,pWaveFormatEx)
#define ISpAudio_GetStatus(This,pStatus) (This)->lpVtbl->GetStatus(This,pStatus)
#define ISpAudio_SetBufferInfo(This,pBuffInfo) (This)->lpVtbl->SetBufferInfo(This,pBuffInfo)
#define ISpAudio_GetBufferInfo(This,pBuffInfo) (This)->lpVtbl->GetBufferInfo(This,pBuffInfo)
#define ISpAudio_GetDefaultFormat(This,pFormatId,ppCoMemWaveFormatEx) (This)->lpVtbl->GetDefaultFormat(This,pFormatId,ppCoMemWaveFormatEx)
#define ISpAudio_EventHandle(This) (This)->lpVtbl->EventHandle(This)
#define ISpAudio_GetVolumeLevel(This,pLevel) (This)->lpVtbl->GetVolumeLevel(This,pLevel)
#define ISpAudio_SetVolumeLevel(This,Level) (This)->lpVtbl->SetVolumeLevel(This,Level)
#define ISpAudio_GetBufferNotifySize(This,pcbSize) (This)->lpVtbl->GetBufferNotifySize(This,pcbSize)
#define ISpAudio_SetBufferNotifySize(This,cbSize) (This)->lpVtbl->SetBufferNotifySize(This,cbSize)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpAudio_QueryInterface(ISpAudio* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpAudio_AddRef(ISpAudio* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpAudio_Release(ISpAudio* This) {
    return This->lpVtbl->Release(This);
}
/*** ISequentialStream methods ***/
static FORCEINLINE HRESULT ISpAudio_Read(ISpAudio* This,void *pv,ULONG cb,ULONG *pcbRead) {
    return This->lpVtbl->Read(This,pv,cb,pcbRead);
}
static FORCEINLINE HRESULT ISpAudio_Write(ISpAudio* This,const void *pv,ULONG cb,ULONG *pcbWritten) {
    return This->lpVtbl->Write(This,pv,cb,pcbWritten);
}
/*** IStream methods ***/
static FORCEINLINE HRESULT ISpAudio_Seek(ISpAudio* This,LARGE_INTEGER dlibMove,DWORD dwOrigin,ULARGE_INTEGER *plibNewPosition) {
    return This->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition);
}
static FORCEINLINE HRESULT ISpAudio_SetSize(ISpAudio* This,ULARGE_INTEGER libNewSize) {
    return This->lpVtbl->SetSize(This,libNewSize);
}
static FORCEINLINE HRESULT ISpAudio_CopyTo(ISpAudio* This,IStream *pstm,ULARGE_INTEGER cb,ULARGE_INTEGER *pcbRead,ULARGE_INTEGER *pcbWritten) {
    return This->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten);
}
static FORCEINLINE HRESULT ISpAudio_Commit(ISpAudio* This,DWORD grfCommitFlags) {
    return This->lpVtbl->Commit(This,grfCommitFlags);
}
static FORCEINLINE HRESULT ISpAudio_Revert(ISpAudio* This) {
    return This->lpVtbl->Revert(This);
}
static FORCEINLINE HRESULT ISpAudio_LockRegion(ISpAudio* This,ULARGE_INTEGER libOffset,ULARGE_INTEGER cb,DWORD dwLockType) {
    return This->lpVtbl->LockRegion(This,libOffset,cb,dwLockType);
}
static FORCEINLINE HRESULT ISpAudio_UnlockRegion(ISpAudio* This,ULARGE_INTEGER libOffset,ULARGE_INTEGER cb,DWORD dwLockType) {
    return This->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType);
}
static FORCEINLINE HRESULT ISpAudio_Stat(ISpAudio* This,STATSTG *pstatstg,DWORD grfStatFlag) {
    return This->lpVtbl->Stat(This,pstatstg,grfStatFlag);
}
static FORCEINLINE HRESULT ISpAudio_Clone(ISpAudio* This,IStream **ppstm) {
    return This->lpVtbl->Clone(This,ppstm);
}
/*** ISpStreamFormat methods ***/
static FORCEINLINE HRESULT ISpAudio_GetFormat(ISpAudio* This,GUID *pguidFormatId,WAVEFORMATEX **ppCoMemWaveFormatEx) {
    return This->lpVtbl->GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx);
}
/*** ISpAudio methods ***/
static FORCEINLINE HRESULT ISpAudio_SetState(ISpAudio* This,SPAUDIOSTATE NewState,ULONGLONG ullReserved) {
    return This->lpVtbl->SetState(This,NewState,ullReserved);
}
static FORCEINLINE HRESULT ISpAudio_SetFormat(ISpAudio* This,REFGUID rguidFmtId,const WAVEFORMATEX *pWaveFormatEx) {
    return This->lpVtbl->SetFormat(This,rguidFmtId,pWaveFormatEx);
}
static FORCEINLINE HRESULT ISpAudio_GetStatus(ISpAudio* This,SPAUDIOSTATUS *pStatus) {
    return This->lpVtbl->GetStatus(This,pStatus);
}
static FORCEINLINE HRESULT ISpAudio_SetBufferInfo(ISpAudio* This,const SPAUDIOBUFFERINFO *pBuffInfo) {
    return This->lpVtbl->SetBufferInfo(This,pBuffInfo);
}
static FORCEINLINE HRESULT ISpAudio_GetBufferInfo(ISpAudio* This,SPAUDIOBUFFERINFO *pBuffInfo) {
    return This->lpVtbl->GetBufferInfo(This,pBuffInfo);
}
static FORCEINLINE HRESULT ISpAudio_GetDefaultFormat(ISpAudio* This,GUID *pFormatId,WAVEFORMATEX **ppCoMemWaveFormatEx) {
    return This->lpVtbl->GetDefaultFormat(This,pFormatId,ppCoMemWaveFormatEx);
}
static FORCEINLINE HANDLE ISpAudio_EventHandle(ISpAudio* This) {
    return This->lpVtbl->EventHandle(This);
}
static FORCEINLINE HRESULT ISpAudio_GetVolumeLevel(ISpAudio* This,ULONG *pLevel) {
    return This->lpVtbl->GetVolumeLevel(This,pLevel);
}
static FORCEINLINE HRESULT ISpAudio_SetVolumeLevel(ISpAudio* This,ULONG Level) {
    return This->lpVtbl->SetVolumeLevel(This,Level);
}
static FORCEINLINE HRESULT ISpAudio_GetBufferNotifySize(ISpAudio* This,ULONG *pcbSize) {
    return This->lpVtbl->GetBufferNotifySize(This,pcbSize);
}
static FORCEINLINE HRESULT ISpAudio_SetBufferNotifySize(ISpAudio* This,ULONG cbSize) {
    return This->lpVtbl->SetBufferNotifySize(This,cbSize);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpAudio_SetState_Proxy(
    ISpAudio* This,
    SPAUDIOSTATE NewState,
    ULONGLONG ullReserved);
void __RPC_STUB ISpAudio_SetState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpAudio_SetFormat_Proxy(
    ISpAudio* This,
    REFGUID rguidFmtId,
    const WAVEFORMATEX *pWaveFormatEx);
void __RPC_STUB ISpAudio_SetFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpAudio_GetStatus_Proxy(
    ISpAudio* This,
    SPAUDIOSTATUS *pStatus);
void __RPC_STUB ISpAudio_GetStatus_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpAudio_SetBufferInfo_Proxy(
    ISpAudio* This,
    const SPAUDIOBUFFERINFO *pBuffInfo);
void __RPC_STUB ISpAudio_SetBufferInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpAudio_GetBufferInfo_Proxy(
    ISpAudio* This,
    SPAUDIOBUFFERINFO *pBuffInfo);
void __RPC_STUB ISpAudio_GetBufferInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpAudio_GetDefaultFormat_Proxy(
    ISpAudio* This,
    GUID *pFormatId,
    WAVEFORMATEX **ppCoMemWaveFormatEx);
void __RPC_STUB ISpAudio_GetDefaultFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HANDLE STDMETHODCALLTYPE ISpAudio_EventHandle_Proxy(
    ISpAudio* This);
void __RPC_STUB ISpAudio_EventHandle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpAudio_GetVolumeLevel_Proxy(
    ISpAudio* This,
    ULONG *pLevel);
void __RPC_STUB ISpAudio_GetVolumeLevel_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpAudio_SetVolumeLevel_Proxy(
    ISpAudio* This,
    ULONG Level);
void __RPC_STUB ISpAudio_SetVolumeLevel_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpAudio_GetBufferNotifySize_Proxy(
    ISpAudio* This,
    ULONG *pcbSize);
void __RPC_STUB ISpAudio_GetBufferNotifySize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpAudio_SetBufferNotifySize_Proxy(
    ISpAudio* This,
    ULONG cbSize);
void __RPC_STUB ISpAudio_SetBufferNotifySize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpAudio_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpMMSysAudio interface
 */
#ifndef __ISpMMSysAudio_INTERFACE_DEFINED__
#define __ISpMMSysAudio_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpMMSysAudio, 0x15806f6e, 0x1d70, 0x4b48, 0x98,0xe6, 0x3b,0x1a,0x00,0x75,0x09,0xab);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("15806f6e-1d70-4b48-98e6-3b1a007509ab")
ISpMMSysAudio : public ISpAudio
{
    virtual HRESULT STDMETHODCALLTYPE GetDeviceId(
        UINT *puDeviceId) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDeviceId(
        UINT uDeviceId) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMMHandle(
        void **pHandle) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetLineId(
        UINT *puLineId) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetLineId(
        UINT uLineId) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpMMSysAudio, 0x15806f6e, 0x1d70, 0x4b48, 0x98,0xe6, 0x3b,0x1a,0x00,0x75,0x09,0xab)
#endif
#else
typedef struct ISpMMSysAudioVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpMMSysAudio* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpMMSysAudio* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpMMSysAudio* This);

    /*** ISequentialStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Read)(
        ISpMMSysAudio* This,
        void *pv,
        ULONG cb,
        ULONG *pcbRead);

    HRESULT (STDMETHODCALLTYPE *Write)(
        ISpMMSysAudio* This,
        const void *pv,
        ULONG cb,
        ULONG *pcbWritten);

    /*** IStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Seek)(
        ISpMMSysAudio* This,
        LARGE_INTEGER dlibMove,
        DWORD dwOrigin,
        ULARGE_INTEGER *plibNewPosition);

    HRESULT (STDMETHODCALLTYPE *SetSize)(
        ISpMMSysAudio* This,
        ULARGE_INTEGER libNewSize);

    HRESULT (STDMETHODCALLTYPE *CopyTo)(
        ISpMMSysAudio* This,
        IStream *pstm,
        ULARGE_INTEGER cb,
        ULARGE_INTEGER *pcbRead,
        ULARGE_INTEGER *pcbWritten);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        ISpMMSysAudio* This,
        DWORD grfCommitFlags);

    HRESULT (STDMETHODCALLTYPE *Revert)(
        ISpMMSysAudio* This);

    HRESULT (STDMETHODCALLTYPE *LockRegion)(
        ISpMMSysAudio* This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);

    HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
        ISpMMSysAudio* This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);

    HRESULT (STDMETHODCALLTYPE *Stat)(
        ISpMMSysAudio* This,
        STATSTG *pstatstg,
        DWORD grfStatFlag);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ISpMMSysAudio* This,
        IStream **ppstm);

    /*** ISpStreamFormat methods ***/
    HRESULT (STDMETHODCALLTYPE *GetFormat)(
        ISpMMSysAudio* This,
        GUID *pguidFormatId,
        WAVEFORMATEX **ppCoMemWaveFormatEx);

    /*** ISpAudio methods ***/
    HRESULT (STDMETHODCALLTYPE *SetState)(
        ISpMMSysAudio* This,
        SPAUDIOSTATE NewState,
        ULONGLONG ullReserved);

    HRESULT (STDMETHODCALLTYPE *SetFormat)(
        ISpMMSysAudio* This,
        REFGUID rguidFmtId,
        const WAVEFORMATEX *pWaveFormatEx);

    HRESULT (STDMETHODCALLTYPE *GetStatus)(
        ISpMMSysAudio* This,
        SPAUDIOSTATUS *pStatus);

    HRESULT (STDMETHODCALLTYPE *SetBufferInfo)(
        ISpMMSysAudio* This,
        const SPAUDIOBUFFERINFO *pBuffInfo);

    HRESULT (STDMETHODCALLTYPE *GetBufferInfo)(
        ISpMMSysAudio* This,
        SPAUDIOBUFFERINFO *pBuffInfo);

    HRESULT (STDMETHODCALLTYPE *GetDefaultFormat)(
        ISpMMSysAudio* This,
        GUID *pFormatId,
        WAVEFORMATEX **ppCoMemWaveFormatEx);

    HANDLE (STDMETHODCALLTYPE *EventHandle)(
        ISpMMSysAudio* This);

    HRESULT (STDMETHODCALLTYPE *GetVolumeLevel)(
        ISpMMSysAudio* This,
        ULONG *pLevel);

    HRESULT (STDMETHODCALLTYPE *SetVolumeLevel)(
        ISpMMSysAudio* This,
        ULONG Level);

    HRESULT (STDMETHODCALLTYPE *GetBufferNotifySize)(
        ISpMMSysAudio* This,
        ULONG *pcbSize);

    HRESULT (STDMETHODCALLTYPE *SetBufferNotifySize)(
        ISpMMSysAudio* This,
        ULONG cbSize);

    /*** ISpMMSysAudio methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDeviceId)(
        ISpMMSysAudio* This,
        UINT *puDeviceId);

    HRESULT (STDMETHODCALLTYPE *SetDeviceId)(
        ISpMMSysAudio* This,
        UINT uDeviceId);

    HRESULT (STDMETHODCALLTYPE *GetMMHandle)(
        ISpMMSysAudio* This,
        void **pHandle);

    HRESULT (STDMETHODCALLTYPE *GetLineId)(
        ISpMMSysAudio* This,
        UINT *puLineId);

    HRESULT (STDMETHODCALLTYPE *SetLineId)(
        ISpMMSysAudio* This,
        UINT uLineId);

    END_INTERFACE
} ISpMMSysAudioVtbl;
interface ISpMMSysAudio {
    CONST_VTBL ISpMMSysAudioVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpMMSysAudio_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpMMSysAudio_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpMMSysAudio_Release(This) (This)->lpVtbl->Release(This)
/*** ISequentialStream methods ***/
#define ISpMMSysAudio_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
#define ISpMMSysAudio_Write(This,pv,cb,pcbWritten) (This)->lpVtbl->Write(This,pv,cb,pcbWritten)
/*** IStream methods ***/
#define ISpMMSysAudio_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
#define ISpMMSysAudio_SetSize(This,libNewSize) (This)->lpVtbl->SetSize(This,libNewSize)
#define ISpMMSysAudio_CopyTo(This,pstm,cb,pcbRead,pcbWritten) (This)->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten)
#define ISpMMSysAudio_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags)
#define ISpMMSysAudio_Revert(This) (This)->lpVtbl->Revert(This)
#define ISpMMSysAudio_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType)
#define ISpMMSysAudio_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType)
#define ISpMMSysAudio_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
#define ISpMMSysAudio_Clone(This,ppstm) (This)->lpVtbl->Clone(This,ppstm)
/*** ISpStreamFormat methods ***/
#define ISpMMSysAudio_GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx) (This)->lpVtbl->GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx)
/*** ISpAudio methods ***/
#define ISpMMSysAudio_SetState(This,NewState,ullReserved) (This)->lpVtbl->SetState(This,NewState,ullReserved)
#define ISpMMSysAudio_SetFormat(This,rguidFmtId,pWaveFormatEx) (This)->lpVtbl->SetFormat(This,rguidFmtId,pWaveFormatEx)
#define ISpMMSysAudio_GetStatus(This,pStatus) (This)->lpVtbl->GetStatus(This,pStatus)
#define ISpMMSysAudio_SetBufferInfo(This,pBuffInfo) (This)->lpVtbl->SetBufferInfo(This,pBuffInfo)
#define ISpMMSysAudio_GetBufferInfo(This,pBuffInfo) (This)->lpVtbl->GetBufferInfo(This,pBuffInfo)
#define ISpMMSysAudio_GetDefaultFormat(This,pFormatId,ppCoMemWaveFormatEx) (This)->lpVtbl->GetDefaultFormat(This,pFormatId,ppCoMemWaveFormatEx)
#define ISpMMSysAudio_EventHandle(This) (This)->lpVtbl->EventHandle(This)
#define ISpMMSysAudio_GetVolumeLevel(This,pLevel) (This)->lpVtbl->GetVolumeLevel(This,pLevel)
#define ISpMMSysAudio_SetVolumeLevel(This,Level) (This)->lpVtbl->SetVolumeLevel(This,Level)
#define ISpMMSysAudio_GetBufferNotifySize(This,pcbSize) (This)->lpVtbl->GetBufferNotifySize(This,pcbSize)
#define ISpMMSysAudio_SetBufferNotifySize(This,cbSize) (This)->lpVtbl->SetBufferNotifySize(This,cbSize)
/*** ISpMMSysAudio methods ***/
#define ISpMMSysAudio_GetDeviceId(This,puDeviceId) (This)->lpVtbl->GetDeviceId(This,puDeviceId)
#define ISpMMSysAudio_SetDeviceId(This,uDeviceId) (This)->lpVtbl->SetDeviceId(This,uDeviceId)
#define ISpMMSysAudio_GetMMHandle(This,pHandle) (This)->lpVtbl->GetMMHandle(This,pHandle)
#define ISpMMSysAudio_GetLineId(This,puLineId) (This)->lpVtbl->GetLineId(This,puLineId)
#define ISpMMSysAudio_SetLineId(This,uLineId) (This)->lpVtbl->SetLineId(This,uLineId)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpMMSysAudio_QueryInterface(ISpMMSysAudio* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpMMSysAudio_AddRef(ISpMMSysAudio* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpMMSysAudio_Release(ISpMMSysAudio* This) {
    return This->lpVtbl->Release(This);
}
/*** ISequentialStream methods ***/
static FORCEINLINE HRESULT ISpMMSysAudio_Read(ISpMMSysAudio* This,void *pv,ULONG cb,ULONG *pcbRead) {
    return This->lpVtbl->Read(This,pv,cb,pcbRead);
}
static FORCEINLINE HRESULT ISpMMSysAudio_Write(ISpMMSysAudio* This,const void *pv,ULONG cb,ULONG *pcbWritten) {
    return This->lpVtbl->Write(This,pv,cb,pcbWritten);
}
/*** IStream methods ***/
static FORCEINLINE HRESULT ISpMMSysAudio_Seek(ISpMMSysAudio* This,LARGE_INTEGER dlibMove,DWORD dwOrigin,ULARGE_INTEGER *plibNewPosition) {
    return This->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition);
}
static FORCEINLINE HRESULT ISpMMSysAudio_SetSize(ISpMMSysAudio* This,ULARGE_INTEGER libNewSize) {
    return This->lpVtbl->SetSize(This,libNewSize);
}
static FORCEINLINE HRESULT ISpMMSysAudio_CopyTo(ISpMMSysAudio* This,IStream *pstm,ULARGE_INTEGER cb,ULARGE_INTEGER *pcbRead,ULARGE_INTEGER *pcbWritten) {
    return This->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten);
}
static FORCEINLINE HRESULT ISpMMSysAudio_Commit(ISpMMSysAudio* This,DWORD grfCommitFlags) {
    return This->lpVtbl->Commit(This,grfCommitFlags);
}
static FORCEINLINE HRESULT ISpMMSysAudio_Revert(ISpMMSysAudio* This) {
    return This->lpVtbl->Revert(This);
}
static FORCEINLINE HRESULT ISpMMSysAudio_LockRegion(ISpMMSysAudio* This,ULARGE_INTEGER libOffset,ULARGE_INTEGER cb,DWORD dwLockType) {
    return This->lpVtbl->LockRegion(This,libOffset,cb,dwLockType);
}
static FORCEINLINE HRESULT ISpMMSysAudio_UnlockRegion(ISpMMSysAudio* This,ULARGE_INTEGER libOffset,ULARGE_INTEGER cb,DWORD dwLockType) {
    return This->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType);
}
static FORCEINLINE HRESULT ISpMMSysAudio_Stat(ISpMMSysAudio* This,STATSTG *pstatstg,DWORD grfStatFlag) {
    return This->lpVtbl->Stat(This,pstatstg,grfStatFlag);
}
static FORCEINLINE HRESULT ISpMMSysAudio_Clone(ISpMMSysAudio* This,IStream **ppstm) {
    return This->lpVtbl->Clone(This,ppstm);
}
/*** ISpStreamFormat methods ***/
static FORCEINLINE HRESULT ISpMMSysAudio_GetFormat(ISpMMSysAudio* This,GUID *pguidFormatId,WAVEFORMATEX **ppCoMemWaveFormatEx) {
    return This->lpVtbl->GetFormat(This,pguidFormatId,ppCoMemWaveFormatEx);
}
/*** ISpAudio methods ***/
static FORCEINLINE HRESULT ISpMMSysAudio_SetState(ISpMMSysAudio* This,SPAUDIOSTATE NewState,ULONGLONG ullReserved) {
    return This->lpVtbl->SetState(This,NewState,ullReserved);
}
static FORCEINLINE HRESULT ISpMMSysAudio_SetFormat(ISpMMSysAudio* This,REFGUID rguidFmtId,const WAVEFORMATEX *pWaveFormatEx) {
    return This->lpVtbl->SetFormat(This,rguidFmtId,pWaveFormatEx);
}
static FORCEINLINE HRESULT ISpMMSysAudio_GetStatus(ISpMMSysAudio* This,SPAUDIOSTATUS *pStatus) {
    return This->lpVtbl->GetStatus(This,pStatus);
}
static FORCEINLINE HRESULT ISpMMSysAudio_SetBufferInfo(ISpMMSysAudio* This,const SPAUDIOBUFFERINFO *pBuffInfo) {
    return This->lpVtbl->SetBufferInfo(This,pBuffInfo);
}
static FORCEINLINE HRESULT ISpMMSysAudio_GetBufferInfo(ISpMMSysAudio* This,SPAUDIOBUFFERINFO *pBuffInfo) {
    return This->lpVtbl->GetBufferInfo(This,pBuffInfo);
}
static FORCEINLINE HRESULT ISpMMSysAudio_GetDefaultFormat(ISpMMSysAudio* This,GUID *pFormatId,WAVEFORMATEX **ppCoMemWaveFormatEx) {
    return This->lpVtbl->GetDefaultFormat(This,pFormatId,ppCoMemWaveFormatEx);
}
static FORCEINLINE HANDLE ISpMMSysAudio_EventHandle(ISpMMSysAudio* This) {
    return This->lpVtbl->EventHandle(This);
}
static FORCEINLINE HRESULT ISpMMSysAudio_GetVolumeLevel(ISpMMSysAudio* This,ULONG *pLevel) {
    return This->lpVtbl->GetVolumeLevel(This,pLevel);
}
static FORCEINLINE HRESULT ISpMMSysAudio_SetVolumeLevel(ISpMMSysAudio* This,ULONG Level) {
    return This->lpVtbl->SetVolumeLevel(This,Level);
}
static FORCEINLINE HRESULT ISpMMSysAudio_GetBufferNotifySize(ISpMMSysAudio* This,ULONG *pcbSize) {
    return This->lpVtbl->GetBufferNotifySize(This,pcbSize);
}
static FORCEINLINE HRESULT ISpMMSysAudio_SetBufferNotifySize(ISpMMSysAudio* This,ULONG cbSize) {
    return This->lpVtbl->SetBufferNotifySize(This,cbSize);
}
/*** ISpMMSysAudio methods ***/
static FORCEINLINE HRESULT ISpMMSysAudio_GetDeviceId(ISpMMSysAudio* This,UINT *puDeviceId) {
    return This->lpVtbl->GetDeviceId(This,puDeviceId);
}
static FORCEINLINE HRESULT ISpMMSysAudio_SetDeviceId(ISpMMSysAudio* This,UINT uDeviceId) {
    return This->lpVtbl->SetDeviceId(This,uDeviceId);
}
static FORCEINLINE HRESULT ISpMMSysAudio_GetMMHandle(ISpMMSysAudio* This,void **pHandle) {
    return This->lpVtbl->GetMMHandle(This,pHandle);
}
static FORCEINLINE HRESULT ISpMMSysAudio_GetLineId(ISpMMSysAudio* This,UINT *puLineId) {
    return This->lpVtbl->GetLineId(This,puLineId);
}
static FORCEINLINE HRESULT ISpMMSysAudio_SetLineId(ISpMMSysAudio* This,UINT uLineId) {
    return This->lpVtbl->SetLineId(This,uLineId);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpMMSysAudio_GetDeviceId_Proxy(
    ISpMMSysAudio* This,
    UINT *puDeviceId);
void __RPC_STUB ISpMMSysAudio_GetDeviceId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpMMSysAudio_SetDeviceId_Proxy(
    ISpMMSysAudio* This,
    UINT uDeviceId);
void __RPC_STUB ISpMMSysAudio_SetDeviceId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpMMSysAudio_GetMMHandle_Proxy(
    ISpMMSysAudio* This,
    void **pHandle);
void __RPC_STUB ISpMMSysAudio_GetMMHandle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpMMSysAudio_GetLineId_Proxy(
    ISpMMSysAudio* This,
    UINT *puLineId);
void __RPC_STUB ISpMMSysAudio_GetLineId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpMMSysAudio_SetLineId_Proxy(
    ISpMMSysAudio* This,
    UINT uLineId);
void __RPC_STUB ISpMMSysAudio_SetLineId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpMMSysAudio_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpTranscript interface
 */
#ifndef __ISpTranscript_INTERFACE_DEFINED__
#define __ISpTranscript_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpTranscript, 0x10f63bce, 0x201a, 0x11d3, 0xac,0x70, 0x00,0xc0,0x4f,0x8e,0xe6,0xc0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("10f63bce-201a-11d3-ac70-00c04f8ee6c0")
ISpTranscript : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetTranscript(
        LPWSTR *ppszTranscript) = 0;

    virtual HRESULT STDMETHODCALLTYPE AppendTranscript(
        LPCWSTR pszTranscript) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpTranscript, 0x10f63bce, 0x201a, 0x11d3, 0xac,0x70, 0x00,0xc0,0x4f,0x8e,0xe6,0xc0)
#endif
#else
typedef struct ISpTranscriptVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpTranscript* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpTranscript* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpTranscript* This);

    /*** ISpTranscript methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTranscript)(
        ISpTranscript* This,
        LPWSTR *ppszTranscript);

    HRESULT (STDMETHODCALLTYPE *AppendTranscript)(
        ISpTranscript* This,
        LPCWSTR pszTranscript);

    END_INTERFACE
} ISpTranscriptVtbl;
interface ISpTranscript {
    CONST_VTBL ISpTranscriptVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpTranscript_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpTranscript_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpTranscript_Release(This) (This)->lpVtbl->Release(This)
/*** ISpTranscript methods ***/
#define ISpTranscript_GetTranscript(This,ppszTranscript) (This)->lpVtbl->GetTranscript(This,ppszTranscript)
#define ISpTranscript_AppendTranscript(This,pszTranscript) (This)->lpVtbl->AppendTranscript(This,pszTranscript)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpTranscript_QueryInterface(ISpTranscript* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpTranscript_AddRef(ISpTranscript* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpTranscript_Release(ISpTranscript* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpTranscript methods ***/
static FORCEINLINE HRESULT ISpTranscript_GetTranscript(ISpTranscript* This,LPWSTR *ppszTranscript) {
    return This->lpVtbl->GetTranscript(This,ppszTranscript);
}
static FORCEINLINE HRESULT ISpTranscript_AppendTranscript(ISpTranscript* This,LPCWSTR pszTranscript) {
    return This->lpVtbl->AppendTranscript(This,pszTranscript);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpTranscript_GetTranscript_Proxy(
    ISpTranscript* This,
    LPWSTR *ppszTranscript);
void __RPC_STUB ISpTranscript_GetTranscript_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpTranscript_AppendTranscript_Proxy(
    ISpTranscript* This,
    LPCWSTR pszTranscript);
void __RPC_STUB ISpTranscript_AppendTranscript_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpTranscript_INTERFACE_DEFINED__ */

typedef WCHAR SPPHONEID;
typedef LPWSTR PSPPHONEID;
typedef LPCWSTR PCSPPHONEID;
typedef struct SPPHRASEELEMENT {
    ULONG ulAudioTimeOffset;
    ULONG ulAudioSizeTime;
    ULONG ulAudioStreamOffset;
    ULONG ulAudioSizeBytes;
    ULONG ulRetainedStreamOffset;
    ULONG ulRetainedSizeBytes;
    LPCWSTR pszDisplayText;
    LPCWSTR pszLexicalForm;
    const SPPHONEID *pszPronunciation;
    BYTE bDisplayAttributes;
    signed char RequiredConfidence;
    signed char ActualConfidence;
    BYTE Reserved;
    float SREngineConfidence;
} SPPHRASEELEMENT;
typedef struct SPPHRASERULE SPPHRASERULE;
typedef struct SPPHRASEPROPERTY SPPHRASEPROPERTY;
struct SPPHRASERULE {
    LPCWSTR pszName;
    ULONG ulId;
    ULONG ulFirstElement;
    ULONG ulCountOfElements;
    const SPPHRASERULE *pNextSibling;
    const SPPHRASERULE *pFirstChild;
    float SREngineConfidence;
    signed char Confidence;
};

struct SPPHRASEPROPERTY {
    LPCWSTR pszName;
    __C89_NAMELESS union {
        ULONG ulId;
        __C89_NAMELESS struct {
            byte bType;
            byte bReserved;
            unsigned short usArrayIndex;
        } __C89_NAMELESSSTRUCTNAME;
    } __C89_NAMELESSUNIONNAME;
    LPCWSTR pszValue;
    VARIANT vValue;
    ULONG ulFirstElement;
    ULONG ulCountOfElements;
    const SPPHRASEPROPERTY *pNextSibling;
    const SPPHRASEPROPERTY *pFirstChild;
    float SREngineConfidence;
    signed char Confidence;
};

typedef struct SPPHRASEREPLACEMENT {
    BYTE bDisplayAttributes;
    LPCWSTR pszReplacementText;
    ULONG ulFirstElement;
    ULONG ulCountOfElements;
} SPPHRASEREPLACEMENT;
typedef struct SPPHRASE {
    ULONG cbSize;
    WORD LangID;
    WORD wHomophoneGroupId;
    ULONGLONG ullGrammarID;
    ULONGLONG ftStartTime;
    ULONGLONG ullAudioStreamPosition;
    ULONG ulAudioSizeBytes;
    ULONG ulRetainedSizeBytes;
    ULONG ulAudioSizeTime;
    SPPHRASERULE Rule;
    const SPPHRASEPROPERTY *pProperties;
    const SPPHRASEELEMENT *pElements;
    ULONG cReplacements;
    const SPPHRASEREPLACEMENT *pReplacements;
    GUID SREngineID;
    ULONG ulSREnginePrivateDataSize;
    const BYTE *pSREnginePrivateData;
} SPPHRASE;
typedef struct SPSERIALIZEDPHRASE {
    ULONG ulSerializedSize;
} SPSERIALIZEDPHRASE;
typedef struct SPBINARYGRAMMAR {
    ULONG ulTotalSerializedSize;
} SPBINARYGRAMMAR;
#if 0
typedef void *SPSTATEHANDLE;
#else
DECLARE_HANDLE(SPSTATEHANDLE);
#endif
typedef struct SPWORDPRONUNCIATION {
    struct SPWORDPRONUNCIATION *pNextWordPronunciation;
    SPLEXICONTYPE eLexiconType;
    WORD LangID;
    WORD wPronunciationFlags;
    SPPARTOFSPEECH ePartOfSpeech;
    SPPHONEID szPronunciation[1];
} SPWORDPRONUNCIATION;
typedef struct SPWORDPRONUNCIATIONLIST {
    ULONG ulSize;
    BYTE *pvBuffer;
    SPWORDPRONUNCIATION *pFirstWordPronunciation;
} SPWORDPRONUNCIATIONLIST;
typedef struct SPWORD {
    struct SPWORD *pNextWord;
    WORD LangID;
    WORD wReserved;
    SPWORDTYPE eWordType;
    LPWSTR pszWord;
    SPWORDPRONUNCIATION *pFirstWordPronunciation;
} SPWORD;
typedef struct SPWORDLIST {
    ULONG ulSize;
    BYTE *pvBuffer;
    SPWORD *pFirstWord;
} SPWORDLIST;
/*****************************************************************************
 * ISpLexicon interface
 */
#ifndef __ISpLexicon_INTERFACE_DEFINED__
#define __ISpLexicon_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpLexicon, 0xda41a7c2, 0x5383, 0x4db2, 0x91,0x6b, 0x6c,0x17,0x19,0xe3,0xdb,0x58);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("da41a7c2-5383-4db2-916b-6c1719e3db58")
ISpLexicon : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPronunciations(
        LPCWSTR pszWord,
        WORD LangID,
        DWORD dwFlags,
        SPWORDPRONUNCIATIONLIST *pWordPronunciationList) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddPronunciation(
        LPCWSTR pszWord,
        WORD LangID,
        SPPARTOFSPEECH ePartOfSpeech,
        PCSPPHONEID pszPronunciation) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemovePronunciation(
        LPCWSTR pszWord,
        WORD LangID,
        SPPARTOFSPEECH ePartOfSpeech,
        PCSPPHONEID pszPronunciation) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGeneration(
        DWORD *pdwGeneration) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGenerationChange(
        DWORD dwFlags,
        DWORD *pdwGeneration,
        SPWORDLIST *pWordList) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetWords(
        DWORD dwFlags,
        DWORD *pdwGeneration,
        DWORD *pdwCookie,
        SPWORDLIST *pWordList) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpLexicon, 0xda41a7c2, 0x5383, 0x4db2, 0x91,0x6b, 0x6c,0x17,0x19,0xe3,0xdb,0x58)
#endif
#else
typedef struct ISpLexiconVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpLexicon* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpLexicon* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpLexicon* This);

    /*** ISpLexicon methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPronunciations)(
        ISpLexicon* This,
        LPCWSTR pszWord,
        WORD LangID,
        DWORD dwFlags,
        SPWORDPRONUNCIATIONLIST *pWordPronunciationList);

    HRESULT (STDMETHODCALLTYPE *AddPronunciation)(
        ISpLexicon* This,
        LPCWSTR pszWord,
        WORD LangID,
        SPPARTOFSPEECH ePartOfSpeech,
        PCSPPHONEID pszPronunciation);

    HRESULT (STDMETHODCALLTYPE *RemovePronunciation)(
        ISpLexicon* This,
        LPCWSTR pszWord,
        WORD LangID,
        SPPARTOFSPEECH ePartOfSpeech,
        PCSPPHONEID pszPronunciation);

    HRESULT (STDMETHODCALLTYPE *GetGeneration)(
        ISpLexicon* This,
        DWORD *pdwGeneration);

    HRESULT (STDMETHODCALLTYPE *GetGenerationChange)(
        ISpLexicon* This,
        DWORD dwFlags,
        DWORD *pdwGeneration,
        SPWORDLIST *pWordList);

    HRESULT (STDMETHODCALLTYPE *GetWords)(
        ISpLexicon* This,
        DWORD dwFlags,
        DWORD *pdwGeneration,
        DWORD *pdwCookie,
        SPWORDLIST *pWordList);

    END_INTERFACE
} ISpLexiconVtbl;
interface ISpLexicon {
    CONST_VTBL ISpLexiconVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpLexicon_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpLexicon_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpLexicon_Release(This) (This)->lpVtbl->Release(This)
/*** ISpLexicon methods ***/
#define ISpLexicon_GetPronunciations(This,pszWord,LangID,dwFlags,pWordPronunciationList) (This)->lpVtbl->GetPronunciations(This,pszWord,LangID,dwFlags,pWordPronunciationList)
#define ISpLexicon_AddPronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation) (This)->lpVtbl->AddPronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation)
#define ISpLexicon_RemovePronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation) (This)->lpVtbl->RemovePronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation)
#define ISpLexicon_GetGeneration(This,pdwGeneration) (This)->lpVtbl->GetGeneration(This,pdwGeneration)
#define ISpLexicon_GetGenerationChange(This,dwFlags,pdwGeneration,pWordList) (This)->lpVtbl->GetGenerationChange(This,dwFlags,pdwGeneration,pWordList)
#define ISpLexicon_GetWords(This,dwFlags,pdwGeneration,pdwCookie,pWordList) (This)->lpVtbl->GetWords(This,dwFlags,pdwGeneration,pdwCookie,pWordList)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpLexicon_QueryInterface(ISpLexicon* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpLexicon_AddRef(ISpLexicon* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpLexicon_Release(ISpLexicon* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpLexicon methods ***/
static FORCEINLINE HRESULT ISpLexicon_GetPronunciations(ISpLexicon* This,LPCWSTR pszWord,WORD LangID,DWORD dwFlags,SPWORDPRONUNCIATIONLIST *pWordPronunciationList) {
    return This->lpVtbl->GetPronunciations(This,pszWord,LangID,dwFlags,pWordPronunciationList);
}
static FORCEINLINE HRESULT ISpLexicon_AddPronunciation(ISpLexicon* This,LPCWSTR pszWord,WORD LangID,SPPARTOFSPEECH ePartOfSpeech,PCSPPHONEID pszPronunciation) {
    return This->lpVtbl->AddPronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation);
}
static FORCEINLINE HRESULT ISpLexicon_RemovePronunciation(ISpLexicon* This,LPCWSTR pszWord,WORD LangID,SPPARTOFSPEECH ePartOfSpeech,PCSPPHONEID pszPronunciation) {
    return This->lpVtbl->RemovePronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation);
}
static FORCEINLINE HRESULT ISpLexicon_GetGeneration(ISpLexicon* This,DWORD *pdwGeneration) {
    return This->lpVtbl->GetGeneration(This,pdwGeneration);
}
static FORCEINLINE HRESULT ISpLexicon_GetGenerationChange(ISpLexicon* This,DWORD dwFlags,DWORD *pdwGeneration,SPWORDLIST *pWordList) {
    return This->lpVtbl->GetGenerationChange(This,dwFlags,pdwGeneration,pWordList);
}
static FORCEINLINE HRESULT ISpLexicon_GetWords(ISpLexicon* This,DWORD dwFlags,DWORD *pdwGeneration,DWORD *pdwCookie,SPWORDLIST *pWordList) {
    return This->lpVtbl->GetWords(This,dwFlags,pdwGeneration,pdwCookie,pWordList);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpLexicon_GetPronunciations_Proxy(
    ISpLexicon* This,
    LPCWSTR pszWord,
    WORD LangID,
    DWORD dwFlags,
    SPWORDPRONUNCIATIONLIST *pWordPronunciationList);
void __RPC_STUB ISpLexicon_GetPronunciations_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpLexicon_AddPronunciation_Proxy(
    ISpLexicon* This,
    LPCWSTR pszWord,
    WORD LangID,
    SPPARTOFSPEECH ePartOfSpeech,
    PCSPPHONEID pszPronunciation);
void __RPC_STUB ISpLexicon_AddPronunciation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpLexicon_RemovePronunciation_Proxy(
    ISpLexicon* This,
    LPCWSTR pszWord,
    WORD LangID,
    SPPARTOFSPEECH ePartOfSpeech,
    PCSPPHONEID pszPronunciation);
void __RPC_STUB ISpLexicon_RemovePronunciation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpLexicon_GetGeneration_Proxy(
    ISpLexicon* This,
    DWORD *pdwGeneration);
void __RPC_STUB ISpLexicon_GetGeneration_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpLexicon_GetGenerationChange_Proxy(
    ISpLexicon* This,
    DWORD dwFlags,
    DWORD *pdwGeneration,
    SPWORDLIST *pWordList);
void __RPC_STUB ISpLexicon_GetGenerationChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpLexicon_GetWords_Proxy(
    ISpLexicon* This,
    DWORD dwFlags,
    DWORD *pdwGeneration,
    DWORD *pdwCookie,
    SPWORDLIST *pWordList);
void __RPC_STUB ISpLexicon_GetWords_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpLexicon_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpContainerLexicon interface
 */
#ifndef __ISpContainerLexicon_INTERFACE_DEFINED__
#define __ISpContainerLexicon_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpContainerLexicon, 0x8565572f, 0xc094, 0x41cc, 0xb5,0x6e, 0x10,0xbd,0x9c,0x3f,0xf0,0x44);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8565572f-c094-41cc-b56e-10bd9c3ff044")
ISpContainerLexicon : public ISpLexicon
{
    virtual HRESULT STDMETHODCALLTYPE AddLexicon(
        ISpLexicon *pAddLexicon,
        DWORD dwFlags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpContainerLexicon, 0x8565572f, 0xc094, 0x41cc, 0xb5,0x6e, 0x10,0xbd,0x9c,0x3f,0xf0,0x44)
#endif
#else
typedef struct ISpContainerLexiconVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpContainerLexicon* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpContainerLexicon* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpContainerLexicon* This);

    /*** ISpLexicon methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPronunciations)(
        ISpContainerLexicon* This,
        LPCWSTR pszWord,
        WORD LangID,
        DWORD dwFlags,
        SPWORDPRONUNCIATIONLIST *pWordPronunciationList);

    HRESULT (STDMETHODCALLTYPE *AddPronunciation)(
        ISpContainerLexicon* This,
        LPCWSTR pszWord,
        WORD LangID,
        SPPARTOFSPEECH ePartOfSpeech,
        PCSPPHONEID pszPronunciation);

    HRESULT (STDMETHODCALLTYPE *RemovePronunciation)(
        ISpContainerLexicon* This,
        LPCWSTR pszWord,
        WORD LangID,
        SPPARTOFSPEECH ePartOfSpeech,
        PCSPPHONEID pszPronunciation);

    HRESULT (STDMETHODCALLTYPE *GetGeneration)(
        ISpContainerLexicon* This,
        DWORD *pdwGeneration);

    HRESULT (STDMETHODCALLTYPE *GetGenerationChange)(
        ISpContainerLexicon* This,
        DWORD dwFlags,
        DWORD *pdwGeneration,
        SPWORDLIST *pWordList);

    HRESULT (STDMETHODCALLTYPE *GetWords)(
        ISpContainerLexicon* This,
        DWORD dwFlags,
        DWORD *pdwGeneration,
        DWORD *pdwCookie,
        SPWORDLIST *pWordList);

    /*** ISpContainerLexicon methods ***/
    HRESULT (STDMETHODCALLTYPE *AddLexicon)(
        ISpContainerLexicon* This,
        ISpLexicon *pAddLexicon,
        DWORD dwFlags);

    END_INTERFACE
} ISpContainerLexiconVtbl;
interface ISpContainerLexicon {
    CONST_VTBL ISpContainerLexiconVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpContainerLexicon_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpContainerLexicon_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpContainerLexicon_Release(This) (This)->lpVtbl->Release(This)
/*** ISpLexicon methods ***/
#define ISpContainerLexicon_GetPronunciations(This,pszWord,LangID,dwFlags,pWordPronunciationList) (This)->lpVtbl->GetPronunciations(This,pszWord,LangID,dwFlags,pWordPronunciationList)
#define ISpContainerLexicon_AddPronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation) (This)->lpVtbl->AddPronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation)
#define ISpContainerLexicon_RemovePronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation) (This)->lpVtbl->RemovePronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation)
#define ISpContainerLexicon_GetGeneration(This,pdwGeneration) (This)->lpVtbl->GetGeneration(This,pdwGeneration)
#define ISpContainerLexicon_GetGenerationChange(This,dwFlags,pdwGeneration,pWordList) (This)->lpVtbl->GetGenerationChange(This,dwFlags,pdwGeneration,pWordList)
#define ISpContainerLexicon_GetWords(This,dwFlags,pdwGeneration,pdwCookie,pWordList) (This)->lpVtbl->GetWords(This,dwFlags,pdwGeneration,pdwCookie,pWordList)
/*** ISpContainerLexicon methods ***/
#define ISpContainerLexicon_AddLexicon(This,pAddLexicon,dwFlags) (This)->lpVtbl->AddLexicon(This,pAddLexicon,dwFlags)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpContainerLexicon_QueryInterface(ISpContainerLexicon* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpContainerLexicon_AddRef(ISpContainerLexicon* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpContainerLexicon_Release(ISpContainerLexicon* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpLexicon methods ***/
static FORCEINLINE HRESULT ISpContainerLexicon_GetPronunciations(ISpContainerLexicon* This,LPCWSTR pszWord,WORD LangID,DWORD dwFlags,SPWORDPRONUNCIATIONLIST *pWordPronunciationList) {
    return This->lpVtbl->GetPronunciations(This,pszWord,LangID,dwFlags,pWordPronunciationList);
}
static FORCEINLINE HRESULT ISpContainerLexicon_AddPronunciation(ISpContainerLexicon* This,LPCWSTR pszWord,WORD LangID,SPPARTOFSPEECH ePartOfSpeech,PCSPPHONEID pszPronunciation) {
    return This->lpVtbl->AddPronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation);
}
static FORCEINLINE HRESULT ISpContainerLexicon_RemovePronunciation(ISpContainerLexicon* This,LPCWSTR pszWord,WORD LangID,SPPARTOFSPEECH ePartOfSpeech,PCSPPHONEID pszPronunciation) {
    return This->lpVtbl->RemovePronunciation(This,pszWord,LangID,ePartOfSpeech,pszPronunciation);
}
static FORCEINLINE HRESULT ISpContainerLexicon_GetGeneration(ISpContainerLexicon* This,DWORD *pdwGeneration) {
    return This->lpVtbl->GetGeneration(This,pdwGeneration);
}
static FORCEINLINE HRESULT ISpContainerLexicon_GetGenerationChange(ISpContainerLexicon* This,DWORD dwFlags,DWORD *pdwGeneration,SPWORDLIST *pWordList) {
    return This->lpVtbl->GetGenerationChange(This,dwFlags,pdwGeneration,pWordList);
}
static FORCEINLINE HRESULT ISpContainerLexicon_GetWords(ISpContainerLexicon* This,DWORD dwFlags,DWORD *pdwGeneration,DWORD *pdwCookie,SPWORDLIST *pWordList) {
    return This->lpVtbl->GetWords(This,dwFlags,pdwGeneration,pdwCookie,pWordList);
}
/*** ISpContainerLexicon methods ***/
static FORCEINLINE HRESULT ISpContainerLexicon_AddLexicon(ISpContainerLexicon* This,ISpLexicon *pAddLexicon,DWORD dwFlags) {
    return This->lpVtbl->AddLexicon(This,pAddLexicon,dwFlags);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpContainerLexicon_AddLexicon_Proxy(
    ISpContainerLexicon* This,
    ISpLexicon *pAddLexicon,
    DWORD dwFlags);
void __RPC_STUB ISpContainerLexicon_AddLexicon_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpContainerLexicon_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpPhoneConverter interface
 */
#ifndef __ISpPhoneConverter_INTERFACE_DEFINED__
#define __ISpPhoneConverter_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpPhoneConverter, 0x8445c581, 0x0cac, 0x4a38, 0xab,0xfe, 0x9b,0x2c,0xe2,0x82,0x64,0x55);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8445c581-0cac-4a38-abfe-9b2ce2826455")
ISpPhoneConverter : public ISpObjectWithToken
{
    virtual HRESULT STDMETHODCALLTYPE PhoneToId(
        LPCWSTR pszPhone,
        SPPHONEID *pId) = 0;

    virtual HRESULT STDMETHODCALLTYPE IdToPhone(
        PCSPPHONEID pId,
        WCHAR *pszPhone) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpPhoneConverter, 0x8445c581, 0x0cac, 0x4a38, 0xab,0xfe, 0x9b,0x2c,0xe2,0x82,0x64,0x55)
#endif
#else
typedef struct ISpPhoneConverterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpPhoneConverter* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpPhoneConverter* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpPhoneConverter* This);

    /*** ISpObjectWithToken methods ***/
    HRESULT (STDMETHODCALLTYPE *SetObjectToken)(
        ISpPhoneConverter* This,
        ISpObjectToken *pToken);

    HRESULT (STDMETHODCALLTYPE *GetObjectToken)(
        ISpPhoneConverter* This,
        ISpObjectToken **ppToken);

    /*** ISpPhoneConverter methods ***/
    HRESULT (STDMETHODCALLTYPE *PhoneToId)(
        ISpPhoneConverter* This,
        LPCWSTR pszPhone,
        SPPHONEID *pId);

    HRESULT (STDMETHODCALLTYPE *IdToPhone)(
        ISpPhoneConverter* This,
        PCSPPHONEID pId,
        WCHAR *pszPhone);

    END_INTERFACE
} ISpPhoneConverterVtbl;
interface ISpPhoneConverter {
    CONST_VTBL ISpPhoneConverterVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpPhoneConverter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpPhoneConverter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpPhoneConverter_Release(This) (This)->lpVtbl->Release(This)
/*** ISpObjectWithToken methods ***/
#define ISpPhoneConverter_SetObjectToken(This,pToken) (This)->lpVtbl->SetObjectToken(This,pToken)
#define ISpPhoneConverter_GetObjectToken(This,ppToken) (This)->lpVtbl->GetObjectToken(This,ppToken)
/*** ISpPhoneConverter methods ***/
#define ISpPhoneConverter_PhoneToId(This,pszPhone,pId) (This)->lpVtbl->PhoneToId(This,pszPhone,pId)
#define ISpPhoneConverter_IdToPhone(This,pId,pszPhone) (This)->lpVtbl->IdToPhone(This,pId,pszPhone)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpPhoneConverter_QueryInterface(ISpPhoneConverter* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpPhoneConverter_AddRef(ISpPhoneConverter* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpPhoneConverter_Release(ISpPhoneConverter* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpObjectWithToken methods ***/
static FORCEINLINE HRESULT ISpPhoneConverter_SetObjectToken(ISpPhoneConverter* This,ISpObjectToken *pToken) {
    return This->lpVtbl->SetObjectToken(This,pToken);
}
static FORCEINLINE HRESULT ISpPhoneConverter_GetObjectToken(ISpPhoneConverter* This,ISpObjectToken **ppToken) {
    return This->lpVtbl->GetObjectToken(This,ppToken);
}
/*** ISpPhoneConverter methods ***/
static FORCEINLINE HRESULT ISpPhoneConverter_PhoneToId(ISpPhoneConverter* This,LPCWSTR pszPhone,SPPHONEID *pId) {
    return This->lpVtbl->PhoneToId(This,pszPhone,pId);
}
static FORCEINLINE HRESULT ISpPhoneConverter_IdToPhone(ISpPhoneConverter* This,PCSPPHONEID pId,WCHAR *pszPhone) {
    return This->lpVtbl->IdToPhone(This,pId,pszPhone);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpPhoneConverter_PhoneToId_Proxy(
    ISpPhoneConverter* This,
    LPCWSTR pszPhone,
    SPPHONEID *pId);
void __RPC_STUB ISpPhoneConverter_PhoneToId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpPhoneConverter_IdToPhone_Proxy(
    ISpPhoneConverter* This,
    PCSPPHONEID pId,
    WCHAR *pszPhone);
void __RPC_STUB ISpPhoneConverter_IdToPhone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpPhoneConverter_INTERFACE_DEFINED__ */

typedef struct SPVPITCH {
    LONG MiddleAdj;
    LONG RangeAdj;
} SPVPITCH;
typedef struct SPVCONTEXT {
    LPCWSTR pCategory;
    LPCWSTR pBefore;
    LPCWSTR pAfter;
} SPVCONTEXT;
typedef struct SPVSTATE {
    SPVACTIONS eAction;
    WORD LangID;
    WORD wReserved;
    LONG EmphAdj;
    LONG RateAdj;
    ULONG Volume;
    SPVPITCH PitchAdj;
    ULONG SilenceMSecs;
    SPPHONEID *pPhoneIds;
    SPPARTOFSPEECH ePartOfSpeech;
    SPVCONTEXT Context;
} SPVSTATE;
typedef struct SPVOICESTATUS {
    ULONG ulCurrentStream;
    ULONG ulLastStreamQueued;
    HRESULT hrLastResult;
    DWORD dwRunningState;
    ULONG ulInputWordPos;
    ULONG ulInputWordLen;
    ULONG ulInputSentPos;
    ULONG ulInputSentLen;
    LONG lBookmarkId;
    SPPHONEID PhonemeId;
    SPVISEMES VisemeId;
    DWORD dwReserved1;
    DWORD dwReserved2;
} SPVOICESTATUS;
typedef enum SPEAKFLAGS {
    SPF_DEFAULT = 0,
    SPF_ASYNC = 1,
    SPF_PURGEBEFORESPEAK = 2,
    SPF_IS_FILENAME = 4,
    SPF_IS_XML = 8,
    SPF_IS_NOT_XML = 0x10,
    SPF_PERSIST_XML = 0x20,
    SPF_NLP_SPEAK_PUNC = 0x40,
    SPF_NLP_MASK = SPF_NLP_SPEAK_PUNC,
    SPF_VOICE_MASK = (((((SPF_ASYNC | SPF_PURGEBEFORESPEAK) | SPF_IS_FILENAME) | SPF_IS_XML) | SPF_IS_NOT_XML) | SPF_NLP_MASK) | SPF_PERSIST_XML,
    SPF_UNUSED_FLAGS = ~SPF_VOICE_MASK
} SPEAKFLAGS;
/*****************************************************************************
 * ISpVoice interface
 */
#ifndef __ISpVoice_INTERFACE_DEFINED__
#define __ISpVoice_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpVoice, 0x6c44df74, 0x72b9, 0x4992, 0xa1,0xec, 0xef,0x99,0x6e,0x04,0x22,0xd4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6c44df74-72b9-4992-a1ec-ef996e0422d4")
ISpVoice : public ISpEventSource
{
    virtual HRESULT STDMETHODCALLTYPE SetOutput(
        IUnknown *pUnkOutput,
        WINBOOL fAllowFormatChanges) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOutputObjectToken(
        ISpObjectToken **ppObjectToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOutputStream(
        ISpStreamFormat **ppStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE Pause(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resume(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVoice(
        ISpObjectToken *pToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVoice(
        ISpObjectToken **ppToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE Speak(
        LPCWSTR pwcs,
        DWORD dwFlags,
        ULONG *pulStreamNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE SpeakStream(
        IStream *pStream,
        DWORD dwFlags,
        ULONG *pulStreamNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStatus(
        SPVOICESTATUS *pStatus,
        LPWSTR *ppszLastBookmark) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        LPCWSTR pItemType,
        LONG lNumItems,
        ULONG *pulNumSkipped) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPriority(
        SPVPRIORITY ePriority) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPriority(
        SPVPRIORITY *pePriority) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAlertBoundary(
        SPEVENTENUM eBoundary) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAlertBoundary(
        SPEVENTENUM *peBoundary) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRate(
        LONG RateAdjust) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRate(
        LONG *pRateAdjust) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVolume(
        USHORT usVolume) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVolume(
        USHORT *pusVolume) = 0;

    virtual HRESULT STDMETHODCALLTYPE WaitUntilDone(
        ULONG msTimeout) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSyncSpeakTimeout(
        ULONG msTimeout) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSyncSpeakTimeout(
        ULONG *pmsTimeout) = 0;

    virtual HANDLE STDMETHODCALLTYPE SpeakCompleteEvent(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsUISupported(
        LPCWSTR pszTypeOfUI,
        void *pvExtraData,
        ULONG cbExtraData,
        WINBOOL *pfSupported) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisplayUI(
        HWND hwndParent,
        LPCWSTR pszTitle,
        LPCWSTR pszTypeOfUI,
        void *pvExtraData,
        ULONG cbExtraData) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpVoice, 0x6c44df74, 0x72b9, 0x4992, 0xa1,0xec, 0xef,0x99,0x6e,0x04,0x22,0xd4)
#endif
#else
typedef struct ISpVoiceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpVoice* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpVoice* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpVoice* This);

    /*** ISpNotifySource methods ***/
    HRESULT (STDMETHODCALLTYPE *SetNotifySink)(
        ISpVoice* This,
        ISpNotifySink *pNotifySink);

    HRESULT (STDMETHODCALLTYPE *SetNotifyWindowMessage)(
        ISpVoice* This,
        HWND hWnd,
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *SetNotifyCallbackFunction)(
        ISpVoice* This,
        SPNOTIFYCALLBACK *pfnCallback,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *SetNotifyCallbackInterface)(
        ISpVoice* This,
        ISpNotifyCallback *pSpCallback,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *SetNotifyWin32Event)(
        ISpVoice* This);

    HRESULT (STDMETHODCALLTYPE *WaitForNotifyEvent)(
        ISpVoice* This,
        DWORD dwMilliseconds);

    HANDLE (STDMETHODCALLTYPE *GetNotifyEventHandle)(
        ISpVoice* This);

    /*** ISpEventSource methods ***/
    HRESULT (STDMETHODCALLTYPE *SetInterest)(
        ISpVoice* This,
        ULONGLONG ullEventInterest,
        ULONGLONG ullQueuedInterest);

    HRESULT (STDMETHODCALLTYPE *GetEvents)(
        ISpVoice* This,
        ULONG ulCount,
        SPEVENT *pEventArray,
        ULONG *pulFetched);

    HRESULT (STDMETHODCALLTYPE *GetInfo)(
        ISpVoice* This,
        SPEVENTSOURCEINFO *pInfo);

    /*** ISpVoice methods ***/
    HRESULT (STDMETHODCALLTYPE *SetOutput)(
        ISpVoice* This,
        IUnknown *pUnkOutput,
        WINBOOL fAllowFormatChanges);

    HRESULT (STDMETHODCALLTYPE *GetOutputObjectToken)(
        ISpVoice* This,
        ISpObjectToken **ppObjectToken);

    HRESULT (STDMETHODCALLTYPE *GetOutputStream)(
        ISpVoice* This,
        ISpStreamFormat **ppStream);

    HRESULT (STDMETHODCALLTYPE *Pause)(
        ISpVoice* This);

    HRESULT (STDMETHODCALLTYPE *Resume)(
        ISpVoice* This);

    HRESULT (STDMETHODCALLTYPE *SetVoice)(
        ISpVoice* This,
        ISpObjectToken *pToken);

    HRESULT (STDMETHODCALLTYPE *GetVoice)(
        ISpVoice* This,
        ISpObjectToken **ppToken);

    HRESULT (STDMETHODCALLTYPE *Speak)(
        ISpVoice* This,
        LPCWSTR pwcs,
        DWORD dwFlags,
        ULONG *pulStreamNumber);

    HRESULT (STDMETHODCALLTYPE *SpeakStream)(
        ISpVoice* This,
        IStream *pStream,
        DWORD dwFlags,
        ULONG *pulStreamNumber);

    HRESULT (STDMETHODCALLTYPE *GetStatus)(
        ISpVoice* This,
        SPVOICESTATUS *pStatus,
        LPWSTR *ppszLastBookmark);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        ISpVoice* This,
        LPCWSTR pItemType,
        LONG lNumItems,
        ULONG *pulNumSkipped);

    HRESULT (STDMETHODCALLTYPE *SetPriority)(
        ISpVoice* This,
        SPVPRIORITY ePriority);

    HRESULT (STDMETHODCALLTYPE *GetPriority)(
        ISpVoice* This,
        SPVPRIORITY *pePriority);

    HRESULT (STDMETHODCALLTYPE *SetAlertBoundary)(
        ISpVoice* This,
        SPEVENTENUM eBoundary);

    HRESULT (STDMETHODCALLTYPE *GetAlertBoundary)(
        ISpVoice* This,
        SPEVENTENUM *peBoundary);

    HRESULT (STDMETHODCALLTYPE *SetRate)(
        ISpVoice* This,
        LONG RateAdjust);

    HRESULT (STDMETHODCALLTYPE *GetRate)(
        ISpVoice* This,
        LONG *pRateAdjust);

    HRESULT (STDMETHODCALLTYPE *SetVolume)(
        ISpVoice* This,
        USHORT usVolume);

    HRESULT (STDMETHODCALLTYPE *GetVolume)(
        ISpVoice* This,
        USHORT *pusVolume);

    HRESULT (STDMETHODCALLTYPE *WaitUntilDone)(
        ISpVoice* This,
        ULONG msTimeout);

    HRESULT (STDMETHODCALLTYPE *SetSyncSpeakTimeout)(
        ISpVoice* This,
        ULONG msTimeout);

    HRESULT (STDMETHODCALLTYPE *GetSyncSpeakTimeout)(
        ISpVoice* This,
        ULONG *pmsTimeout);

    HANDLE (STDMETHODCALLTYPE *SpeakCompleteEvent)(
        ISpVoice* This);

    HRESULT (STDMETHODCALLTYPE *IsUISupported)(
        ISpVoice* This,
        LPCWSTR pszTypeOfUI,
        void *pvExtraData,
        ULONG cbExtraData,
        WINBOOL *pfSupported);

    HRESULT (STDMETHODCALLTYPE *DisplayUI)(
        ISpVoice* This,
        HWND hwndParent,
        LPCWSTR pszTitle,
        LPCWSTR pszTypeOfUI,
        void *pvExtraData,
        ULONG cbExtraData);

    END_INTERFACE
} ISpVoiceVtbl;
interface ISpVoice {
    CONST_VTBL ISpVoiceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpVoice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpVoice_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpVoice_Release(This) (This)->lpVtbl->Release(This)
/*** ISpNotifySource methods ***/
#define ISpVoice_SetNotifySink(This,pNotifySink) (This)->lpVtbl->SetNotifySink(This,pNotifySink)
#define ISpVoice_SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam) (This)->lpVtbl->SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam)
#define ISpVoice_SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam) (This)->lpVtbl->SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam)
#define ISpVoice_SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam) (This)->lpVtbl->SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam)
#define ISpVoice_SetNotifyWin32Event(This) (This)->lpVtbl->SetNotifyWin32Event(This)
#define ISpVoice_WaitForNotifyEvent(This,dwMilliseconds) (This)->lpVtbl->WaitForNotifyEvent(This,dwMilliseconds)
#define ISpVoice_GetNotifyEventHandle(This) (This)->lpVtbl->GetNotifyEventHandle(This)
/*** ISpEventSource methods ***/
#define ISpVoice_SetInterest(This,ullEventInterest,ullQueuedInterest) (This)->lpVtbl->SetInterest(This,ullEventInterest,ullQueuedInterest)
#define ISpVoice_GetEvents(This,ulCount,pEventArray,pulFetched) (This)->lpVtbl->GetEvents(This,ulCount,pEventArray,pulFetched)
#define ISpVoice_GetInfo(This,pInfo) (This)->lpVtbl->GetInfo(This,pInfo)
/*** ISpVoice methods ***/
#define ISpVoice_SetOutput(This,pUnkOutput,fAllowFormatChanges) (This)->lpVtbl->SetOutput(This,pUnkOutput,fAllowFormatChanges)
#define ISpVoice_GetOutputObjectToken(This,ppObjectToken) (This)->lpVtbl->GetOutputObjectToken(This,ppObjectToken)
#define ISpVoice_GetOutputStream(This,ppStream) (This)->lpVtbl->GetOutputStream(This,ppStream)
#define ISpVoice_Pause(This) (This)->lpVtbl->Pause(This)
#define ISpVoice_Resume(This) (This)->lpVtbl->Resume(This)
#define ISpVoice_SetVoice(This,pToken) (This)->lpVtbl->SetVoice(This,pToken)
#define ISpVoice_GetVoice(This,ppToken) (This)->lpVtbl->GetVoice(This,ppToken)
#define ISpVoice_Speak(This,pwcs,dwFlags,pulStreamNumber) (This)->lpVtbl->Speak(This,pwcs,dwFlags,pulStreamNumber)
#define ISpVoice_SpeakStream(This,pStream,dwFlags,pulStreamNumber) (This)->lpVtbl->SpeakStream(This,pStream,dwFlags,pulStreamNumber)
#define ISpVoice_GetStatus(This,pStatus,ppszLastBookmark) (This)->lpVtbl->GetStatus(This,pStatus,ppszLastBookmark)
#define ISpVoice_Skip(This,pItemType,lNumItems,pulNumSkipped) (This)->lpVtbl->Skip(This,pItemType,lNumItems,pulNumSkipped)
#define ISpVoice_SetPriority(This,ePriority) (This)->lpVtbl->SetPriority(This,ePriority)
#define ISpVoice_GetPriority(This,pePriority) (This)->lpVtbl->GetPriority(This,pePriority)
#define ISpVoice_SetAlertBoundary(This,eBoundary) (This)->lpVtbl->SetAlertBoundary(This,eBoundary)
#define ISpVoice_GetAlertBoundary(This,peBoundary) (This)->lpVtbl->GetAlertBoundary(This,peBoundary)
#define ISpVoice_SetRate(This,RateAdjust) (This)->lpVtbl->SetRate(This,RateAdjust)
#define ISpVoice_GetRate(This,pRateAdjust) (This)->lpVtbl->GetRate(This,pRateAdjust)
#define ISpVoice_SetVolume(This,usVolume) (This)->lpVtbl->SetVolume(This,usVolume)
#define ISpVoice_GetVolume(This,pusVolume) (This)->lpVtbl->GetVolume(This,pusVolume)
#define ISpVoice_WaitUntilDone(This,msTimeout) (This)->lpVtbl->WaitUntilDone(This,msTimeout)
#define ISpVoice_SetSyncSpeakTimeout(This,msTimeout) (This)->lpVtbl->SetSyncSpeakTimeout(This,msTimeout)
#define ISpVoice_GetSyncSpeakTimeout(This,pmsTimeout) (This)->lpVtbl->GetSyncSpeakTimeout(This,pmsTimeout)
#define ISpVoice_SpeakCompleteEvent(This) (This)->lpVtbl->SpeakCompleteEvent(This)
#define ISpVoice_IsUISupported(This,pszTypeOfUI,pvExtraData,cbExtraData,pfSupported) (This)->lpVtbl->IsUISupported(This,pszTypeOfUI,pvExtraData,cbExtraData,pfSupported)
#define ISpVoice_DisplayUI(This,hwndParent,pszTitle,pszTypeOfUI,pvExtraData,cbExtraData) (This)->lpVtbl->DisplayUI(This,hwndParent,pszTitle,pszTypeOfUI,pvExtraData,cbExtraData)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpVoice_QueryInterface(ISpVoice* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpVoice_AddRef(ISpVoice* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpVoice_Release(ISpVoice* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpNotifySource methods ***/
static FORCEINLINE HRESULT ISpVoice_SetNotifySink(ISpVoice* This,ISpNotifySink *pNotifySink) {
    return This->lpVtbl->SetNotifySink(This,pNotifySink);
}
static FORCEINLINE HRESULT ISpVoice_SetNotifyWindowMessage(ISpVoice* This,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam);
}
static FORCEINLINE HRESULT ISpVoice_SetNotifyCallbackFunction(ISpVoice* This,SPNOTIFYCALLBACK *pfnCallback,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam);
}
static FORCEINLINE HRESULT ISpVoice_SetNotifyCallbackInterface(ISpVoice* This,ISpNotifyCallback *pSpCallback,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam);
}
static FORCEINLINE HRESULT ISpVoice_SetNotifyWin32Event(ISpVoice* This) {
    return This->lpVtbl->SetNotifyWin32Event(This);
}
static FORCEINLINE HRESULT ISpVoice_WaitForNotifyEvent(ISpVoice* This,DWORD dwMilliseconds) {
    return This->lpVtbl->WaitForNotifyEvent(This,dwMilliseconds);
}
static FORCEINLINE HANDLE ISpVoice_GetNotifyEventHandle(ISpVoice* This) {
    return This->lpVtbl->GetNotifyEventHandle(This);
}
/*** ISpEventSource methods ***/
static FORCEINLINE HRESULT ISpVoice_SetInterest(ISpVoice* This,ULONGLONG ullEventInterest,ULONGLONG ullQueuedInterest) {
    return This->lpVtbl->SetInterest(This,ullEventInterest,ullQueuedInterest);
}
static FORCEINLINE HRESULT ISpVoice_GetEvents(ISpVoice* This,ULONG ulCount,SPEVENT *pEventArray,ULONG *pulFetched) {
    return This->lpVtbl->GetEvents(This,ulCount,pEventArray,pulFetched);
}
static FORCEINLINE HRESULT ISpVoice_GetInfo(ISpVoice* This,SPEVENTSOURCEINFO *pInfo) {
    return This->lpVtbl->GetInfo(This,pInfo);
}
/*** ISpVoice methods ***/
static FORCEINLINE HRESULT ISpVoice_SetOutput(ISpVoice* This,IUnknown *pUnkOutput,WINBOOL fAllowFormatChanges) {
    return This->lpVtbl->SetOutput(This,pUnkOutput,fAllowFormatChanges);
}
static FORCEINLINE HRESULT ISpVoice_GetOutputObjectToken(ISpVoice* This,ISpObjectToken **ppObjectToken) {
    return This->lpVtbl->GetOutputObjectToken(This,ppObjectToken);
}
static FORCEINLINE HRESULT ISpVoice_GetOutputStream(ISpVoice* This,ISpStreamFormat **ppStream) {
    return This->lpVtbl->GetOutputStream(This,ppStream);
}
static FORCEINLINE HRESULT ISpVoice_Pause(ISpVoice* This) {
    return This->lpVtbl->Pause(This);
}
static FORCEINLINE HRESULT ISpVoice_Resume(ISpVoice* This) {
    return This->lpVtbl->Resume(This);
}
static FORCEINLINE HRESULT ISpVoice_SetVoice(ISpVoice* This,ISpObjectToken *pToken) {
    return This->lpVtbl->SetVoice(This,pToken);
}
static FORCEINLINE HRESULT ISpVoice_GetVoice(ISpVoice* This,ISpObjectToken **ppToken) {
    return This->lpVtbl->GetVoice(This,ppToken);
}
static FORCEINLINE HRESULT ISpVoice_Speak(ISpVoice* This,LPCWSTR pwcs,DWORD dwFlags,ULONG *pulStreamNumber) {
    return This->lpVtbl->Speak(This,pwcs,dwFlags,pulStreamNumber);
}
static FORCEINLINE HRESULT ISpVoice_SpeakStream(ISpVoice* This,IStream *pStream,DWORD dwFlags,ULONG *pulStreamNumber) {
    return This->lpVtbl->SpeakStream(This,pStream,dwFlags,pulStreamNumber);
}
static FORCEINLINE HRESULT ISpVoice_GetStatus(ISpVoice* This,SPVOICESTATUS *pStatus,LPWSTR *ppszLastBookmark) {
    return This->lpVtbl->GetStatus(This,pStatus,ppszLastBookmark);
}
static FORCEINLINE HRESULT ISpVoice_Skip(ISpVoice* This,LPCWSTR pItemType,LONG lNumItems,ULONG *pulNumSkipped) {
    return This->lpVtbl->Skip(This,pItemType,lNumItems,pulNumSkipped);
}
static FORCEINLINE HRESULT ISpVoice_SetPriority(ISpVoice* This,SPVPRIORITY ePriority) {
    return This->lpVtbl->SetPriority(This,ePriority);
}
static FORCEINLINE HRESULT ISpVoice_GetPriority(ISpVoice* This,SPVPRIORITY *pePriority) {
    return This->lpVtbl->GetPriority(This,pePriority);
}
static FORCEINLINE HRESULT ISpVoice_SetAlertBoundary(ISpVoice* This,SPEVENTENUM eBoundary) {
    return This->lpVtbl->SetAlertBoundary(This,eBoundary);
}
static FORCEINLINE HRESULT ISpVoice_GetAlertBoundary(ISpVoice* This,SPEVENTENUM *peBoundary) {
    return This->lpVtbl->GetAlertBoundary(This,peBoundary);
}
static FORCEINLINE HRESULT ISpVoice_SetRate(ISpVoice* This,LONG RateAdjust) {
    return This->lpVtbl->SetRate(This,RateAdjust);
}
static FORCEINLINE HRESULT ISpVoice_GetRate(ISpVoice* This,LONG *pRateAdjust) {
    return This->lpVtbl->GetRate(This,pRateAdjust);
}
static FORCEINLINE HRESULT ISpVoice_SetVolume(ISpVoice* This,USHORT usVolume) {
    return This->lpVtbl->SetVolume(This,usVolume);
}
static FORCEINLINE HRESULT ISpVoice_GetVolume(ISpVoice* This,USHORT *pusVolume) {
    return This->lpVtbl->GetVolume(This,pusVolume);
}
static FORCEINLINE HRESULT ISpVoice_WaitUntilDone(ISpVoice* This,ULONG msTimeout) {
    return This->lpVtbl->WaitUntilDone(This,msTimeout);
}
static FORCEINLINE HRESULT ISpVoice_SetSyncSpeakTimeout(ISpVoice* This,ULONG msTimeout) {
    return This->lpVtbl->SetSyncSpeakTimeout(This,msTimeout);
}
static FORCEINLINE HRESULT ISpVoice_GetSyncSpeakTimeout(ISpVoice* This,ULONG *pmsTimeout) {
    return This->lpVtbl->GetSyncSpeakTimeout(This,pmsTimeout);
}
static FORCEINLINE HANDLE ISpVoice_SpeakCompleteEvent(ISpVoice* This) {
    return This->lpVtbl->SpeakCompleteEvent(This);
}
static FORCEINLINE HRESULT ISpVoice_IsUISupported(ISpVoice* This,LPCWSTR pszTypeOfUI,void *pvExtraData,ULONG cbExtraData,WINBOOL *pfSupported) {
    return This->lpVtbl->IsUISupported(This,pszTypeOfUI,pvExtraData,cbExtraData,pfSupported);
}
static FORCEINLINE HRESULT ISpVoice_DisplayUI(ISpVoice* This,HWND hwndParent,LPCWSTR pszTitle,LPCWSTR pszTypeOfUI,void *pvExtraData,ULONG cbExtraData) {
    return This->lpVtbl->DisplayUI(This,hwndParent,pszTitle,pszTypeOfUI,pvExtraData,cbExtraData);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpVoice_SetOutput_Proxy(
    ISpVoice* This,
    IUnknown *pUnkOutput,
    WINBOOL fAllowFormatChanges);
void __RPC_STUB ISpVoice_SetOutput_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_GetOutputObjectToken_Proxy(
    ISpVoice* This,
    ISpObjectToken **ppObjectToken);
void __RPC_STUB ISpVoice_GetOutputObjectToken_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_GetOutputStream_Proxy(
    ISpVoice* This,
    ISpStreamFormat **ppStream);
void __RPC_STUB ISpVoice_GetOutputStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_Pause_Proxy(
    ISpVoice* This);
void __RPC_STUB ISpVoice_Pause_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_Resume_Proxy(
    ISpVoice* This);
void __RPC_STUB ISpVoice_Resume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_SetVoice_Proxy(
    ISpVoice* This,
    ISpObjectToken *pToken);
void __RPC_STUB ISpVoice_SetVoice_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_GetVoice_Proxy(
    ISpVoice* This,
    ISpObjectToken **ppToken);
void __RPC_STUB ISpVoice_GetVoice_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_Speak_Proxy(
    ISpVoice* This,
    LPCWSTR pwcs,
    DWORD dwFlags,
    ULONG *pulStreamNumber);
void __RPC_STUB ISpVoice_Speak_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_SpeakStream_Proxy(
    ISpVoice* This,
    IStream *pStream,
    DWORD dwFlags,
    ULONG *pulStreamNumber);
void __RPC_STUB ISpVoice_SpeakStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_GetStatus_Proxy(
    ISpVoice* This,
    SPVOICESTATUS *pStatus,
    LPWSTR *ppszLastBookmark);
void __RPC_STUB ISpVoice_GetStatus_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_Skip_Proxy(
    ISpVoice* This,
    LPCWSTR pItemType,
    LONG lNumItems,
    ULONG *pulNumSkipped);
void __RPC_STUB ISpVoice_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_SetPriority_Proxy(
    ISpVoice* This,
    SPVPRIORITY ePriority);
void __RPC_STUB ISpVoice_SetPriority_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_GetPriority_Proxy(
    ISpVoice* This,
    SPVPRIORITY *pePriority);
void __RPC_STUB ISpVoice_GetPriority_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_SetAlertBoundary_Proxy(
    ISpVoice* This,
    SPEVENTENUM eBoundary);
void __RPC_STUB ISpVoice_SetAlertBoundary_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_GetAlertBoundary_Proxy(
    ISpVoice* This,
    SPEVENTENUM *peBoundary);
void __RPC_STUB ISpVoice_GetAlertBoundary_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_SetRate_Proxy(
    ISpVoice* This,
    LONG RateAdjust);
void __RPC_STUB ISpVoice_SetRate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_GetRate_Proxy(
    ISpVoice* This,
    LONG *pRateAdjust);
void __RPC_STUB ISpVoice_GetRate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_SetVolume_Proxy(
    ISpVoice* This,
    USHORT usVolume);
void __RPC_STUB ISpVoice_SetVolume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_GetVolume_Proxy(
    ISpVoice* This,
    USHORT *pusVolume);
void __RPC_STUB ISpVoice_GetVolume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_WaitUntilDone_Proxy(
    ISpVoice* This,
    ULONG msTimeout);
void __RPC_STUB ISpVoice_WaitUntilDone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_SetSyncSpeakTimeout_Proxy(
    ISpVoice* This,
    ULONG msTimeout);
void __RPC_STUB ISpVoice_SetSyncSpeakTimeout_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpVoice_GetSyncSpeakTimeout_Proxy(
    ISpVoice* This,
    ULONG *pmsTimeout);
void __RPC_STUB ISpVoice_GetSyncSpeakTimeout_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpVoice_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpPhrase interface
 */
#ifndef __ISpPhrase_INTERFACE_DEFINED__
#define __ISpPhrase_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpPhrase, 0x1a5c0354, 0xb621, 0x4b5a, 0x87,0x91, 0xd3,0x06,0xed,0x37,0x9e,0x53);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1a5c0354-b621-4b5a-8791-d306ed379e53")
ISpPhrase : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPhrase(
        SPPHRASE **ppCoMemPhrase) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSerializedPhrase(
        SPSERIALIZEDPHRASE **ppCoMemPhrase) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetText(
        ULONG ulStart,
        ULONG ulCount,
        WINBOOL fUseTextReplacements,
        LPWSTR *ppszCoMemText,
        BYTE *pbDisplayAttributes) = 0;

    virtual HRESULT STDMETHODCALLTYPE Discard(
        DWORD dwValueTypes) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpPhrase, 0x1a5c0354, 0xb621, 0x4b5a, 0x87,0x91, 0xd3,0x06,0xed,0x37,0x9e,0x53)
#endif
#else
typedef struct ISpPhraseVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpPhrase* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpPhrase* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpPhrase* This);

    /*** ISpPhrase methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPhrase)(
        ISpPhrase* This,
        SPPHRASE **ppCoMemPhrase);

    HRESULT (STDMETHODCALLTYPE *GetSerializedPhrase)(
        ISpPhrase* This,
        SPSERIALIZEDPHRASE **ppCoMemPhrase);

    HRESULT (STDMETHODCALLTYPE *GetText)(
        ISpPhrase* This,
        ULONG ulStart,
        ULONG ulCount,
        WINBOOL fUseTextReplacements,
        LPWSTR *ppszCoMemText,
        BYTE *pbDisplayAttributes);

    HRESULT (STDMETHODCALLTYPE *Discard)(
        ISpPhrase* This,
        DWORD dwValueTypes);

    END_INTERFACE
} ISpPhraseVtbl;
interface ISpPhrase {
    CONST_VTBL ISpPhraseVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpPhrase_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpPhrase_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpPhrase_Release(This) (This)->lpVtbl->Release(This)
/*** ISpPhrase methods ***/
#define ISpPhrase_GetPhrase(This,ppCoMemPhrase) (This)->lpVtbl->GetPhrase(This,ppCoMemPhrase)
#define ISpPhrase_GetSerializedPhrase(This,ppCoMemPhrase) (This)->lpVtbl->GetSerializedPhrase(This,ppCoMemPhrase)
#define ISpPhrase_GetText(This,ulStart,ulCount,fUseTextReplacements,ppszCoMemText,pbDisplayAttributes) (This)->lpVtbl->GetText(This,ulStart,ulCount,fUseTextReplacements,ppszCoMemText,pbDisplayAttributes)
#define ISpPhrase_Discard(This,dwValueTypes) (This)->lpVtbl->Discard(This,dwValueTypes)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpPhrase_QueryInterface(ISpPhrase* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpPhrase_AddRef(ISpPhrase* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpPhrase_Release(ISpPhrase* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpPhrase methods ***/
static FORCEINLINE HRESULT ISpPhrase_GetPhrase(ISpPhrase* This,SPPHRASE **ppCoMemPhrase) {
    return This->lpVtbl->GetPhrase(This,ppCoMemPhrase);
}
static FORCEINLINE HRESULT ISpPhrase_GetSerializedPhrase(ISpPhrase* This,SPSERIALIZEDPHRASE **ppCoMemPhrase) {
    return This->lpVtbl->GetSerializedPhrase(This,ppCoMemPhrase);
}
static FORCEINLINE HRESULT ISpPhrase_GetText(ISpPhrase* This,ULONG ulStart,ULONG ulCount,WINBOOL fUseTextReplacements,LPWSTR *ppszCoMemText,BYTE *pbDisplayAttributes) {
    return This->lpVtbl->GetText(This,ulStart,ulCount,fUseTextReplacements,ppszCoMemText,pbDisplayAttributes);
}
static FORCEINLINE HRESULT ISpPhrase_Discard(ISpPhrase* This,DWORD dwValueTypes) {
    return This->lpVtbl->Discard(This,dwValueTypes);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpPhrase_GetPhrase_Proxy(
    ISpPhrase* This,
    SPPHRASE **ppCoMemPhrase);
void __RPC_STUB ISpPhrase_GetPhrase_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpPhrase_GetSerializedPhrase_Proxy(
    ISpPhrase* This,
    SPSERIALIZEDPHRASE **ppCoMemPhrase);
void __RPC_STUB ISpPhrase_GetSerializedPhrase_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpPhrase_GetText_Proxy(
    ISpPhrase* This,
    ULONG ulStart,
    ULONG ulCount,
    WINBOOL fUseTextReplacements,
    LPWSTR *ppszCoMemText,
    BYTE *pbDisplayAttributes);
void __RPC_STUB ISpPhrase_GetText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpPhrase_Discard_Proxy(
    ISpPhrase* This,
    DWORD dwValueTypes);
void __RPC_STUB ISpPhrase_Discard_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpPhrase_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpPhraseAlt interface
 */
#ifndef __ISpPhraseAlt_INTERFACE_DEFINED__
#define __ISpPhraseAlt_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpPhraseAlt, 0x8fcebc98, 0x4e49, 0x4067, 0x9c,0x6c, 0xd8,0x6a,0x0e,0x09,0x2e,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8fcebc98-4e49-4067-9c6c-d86a0e092e3d")
ISpPhraseAlt : public ISpPhrase
{
    virtual HRESULT STDMETHODCALLTYPE GetAltInfo(
        ISpPhrase **ppParent,
        ULONG *pulStartElementInParent,
        ULONG *pcElementsInParent,
        ULONG *pcElementsInAlt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Commit(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpPhraseAlt, 0x8fcebc98, 0x4e49, 0x4067, 0x9c,0x6c, 0xd8,0x6a,0x0e,0x09,0x2e,0x3d)
#endif
#else
typedef struct ISpPhraseAltVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpPhraseAlt* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpPhraseAlt* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpPhraseAlt* This);

    /*** ISpPhrase methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPhrase)(
        ISpPhraseAlt* This,
        SPPHRASE **ppCoMemPhrase);

    HRESULT (STDMETHODCALLTYPE *GetSerializedPhrase)(
        ISpPhraseAlt* This,
        SPSERIALIZEDPHRASE **ppCoMemPhrase);

    HRESULT (STDMETHODCALLTYPE *GetText)(
        ISpPhraseAlt* This,
        ULONG ulStart,
        ULONG ulCount,
        WINBOOL fUseTextReplacements,
        LPWSTR *ppszCoMemText,
        BYTE *pbDisplayAttributes);

    HRESULT (STDMETHODCALLTYPE *Discard)(
        ISpPhraseAlt* This,
        DWORD dwValueTypes);

    /*** ISpPhraseAlt methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAltInfo)(
        ISpPhraseAlt* This,
        ISpPhrase **ppParent,
        ULONG *pulStartElementInParent,
        ULONG *pcElementsInParent,
        ULONG *pcElementsInAlt);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        ISpPhraseAlt* This);

    END_INTERFACE
} ISpPhraseAltVtbl;
interface ISpPhraseAlt {
    CONST_VTBL ISpPhraseAltVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpPhraseAlt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpPhraseAlt_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpPhraseAlt_Release(This) (This)->lpVtbl->Release(This)
/*** ISpPhrase methods ***/
#define ISpPhraseAlt_GetPhrase(This,ppCoMemPhrase) (This)->lpVtbl->GetPhrase(This,ppCoMemPhrase)
#define ISpPhraseAlt_GetSerializedPhrase(This,ppCoMemPhrase) (This)->lpVtbl->GetSerializedPhrase(This,ppCoMemPhrase)
#define ISpPhraseAlt_GetText(This,ulStart,ulCount,fUseTextReplacements,ppszCoMemText,pbDisplayAttributes) (This)->lpVtbl->GetText(This,ulStart,ulCount,fUseTextReplacements,ppszCoMemText,pbDisplayAttributes)
#define ISpPhraseAlt_Discard(This,dwValueTypes) (This)->lpVtbl->Discard(This,dwValueTypes)
/*** ISpPhraseAlt methods ***/
#define ISpPhraseAlt_GetAltInfo(This,ppParent,pulStartElementInParent,pcElementsInParent,pcElementsInAlt) (This)->lpVtbl->GetAltInfo(This,ppParent,pulStartElementInParent,pcElementsInParent,pcElementsInAlt)
#define ISpPhraseAlt_Commit(This) (This)->lpVtbl->Commit(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpPhraseAlt_QueryInterface(ISpPhraseAlt* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpPhraseAlt_AddRef(ISpPhraseAlt* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpPhraseAlt_Release(ISpPhraseAlt* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpPhrase methods ***/
static FORCEINLINE HRESULT ISpPhraseAlt_GetPhrase(ISpPhraseAlt* This,SPPHRASE **ppCoMemPhrase) {
    return This->lpVtbl->GetPhrase(This,ppCoMemPhrase);
}
static FORCEINLINE HRESULT ISpPhraseAlt_GetSerializedPhrase(ISpPhraseAlt* This,SPSERIALIZEDPHRASE **ppCoMemPhrase) {
    return This->lpVtbl->GetSerializedPhrase(This,ppCoMemPhrase);
}
static FORCEINLINE HRESULT ISpPhraseAlt_GetText(ISpPhraseAlt* This,ULONG ulStart,ULONG ulCount,WINBOOL fUseTextReplacements,LPWSTR *ppszCoMemText,BYTE *pbDisplayAttributes) {
    return This->lpVtbl->GetText(This,ulStart,ulCount,fUseTextReplacements,ppszCoMemText,pbDisplayAttributes);
}
static FORCEINLINE HRESULT ISpPhraseAlt_Discard(ISpPhraseAlt* This,DWORD dwValueTypes) {
    return This->lpVtbl->Discard(This,dwValueTypes);
}
/*** ISpPhraseAlt methods ***/
static FORCEINLINE HRESULT ISpPhraseAlt_GetAltInfo(ISpPhraseAlt* This,ISpPhrase **ppParent,ULONG *pulStartElementInParent,ULONG *pcElementsInParent,ULONG *pcElementsInAlt) {
    return This->lpVtbl->GetAltInfo(This,ppParent,pulStartElementInParent,pcElementsInParent,pcElementsInAlt);
}
static FORCEINLINE HRESULT ISpPhraseAlt_Commit(ISpPhraseAlt* This) {
    return This->lpVtbl->Commit(This);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpPhraseAlt_GetAltInfo_Proxy(
    ISpPhraseAlt* This,
    ISpPhrase **ppParent,
    ULONG *pulStartElementInParent,
    ULONG *pcElementsInParent,
    ULONG *pcElementsInAlt);
void __RPC_STUB ISpPhraseAlt_GetAltInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpPhraseAlt_Commit_Proxy(
    ISpPhraseAlt* This);
void __RPC_STUB ISpPhraseAlt_Commit_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpPhraseAlt_INTERFACE_DEFINED__ */

typedef struct SPRECORESULTTIMES {
    FILETIME ftStreamTime;
    ULONGLONG ullLength;
    DWORD dwTickCount;
    ULONGLONG ullStart;
} SPRECORESULTTIMES;
typedef struct SPSERIALIZEDRESULT {
    ULONG ulSerializedSize;
} SPSERIALIZEDRESULT;
/*****************************************************************************
 * ISpRecoResult interface
 */
#ifndef __ISpRecoResult_INTERFACE_DEFINED__
#define __ISpRecoResult_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpRecoResult, 0x20b053be, 0xe235, 0x43cd, 0x9a,0x2a, 0x8d,0x17,0xa4,0x8b,0x78,0x42);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("20b053be-e235-43cd-9a2a-8d17a48b7842")
ISpRecoResult : public ISpPhrase
{
    virtual HRESULT STDMETHODCALLTYPE GetResultTimes(
        SPRECORESULTTIMES *pTimes) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAlternates(
        ULONG ulStartElement,
        ULONG cElements,
        ULONG ulRequestCount,
        ISpPhraseAlt **ppPhrases,
        ULONG *pcPhrasesReturned) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAudio(
        ULONG ulStartElement,
        ULONG cElements,
        ISpStreamFormat **ppStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE SpeakAudio(
        ULONG ulStartElement,
        ULONG cElements,
        DWORD dwFlags,
        ULONG *pulStreamNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE Serialize(
        SPSERIALIZEDRESULT **ppCoMemSerializedResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScaleAudio(
        const GUID *pAudioFormatId,
        const WAVEFORMATEX *pWaveFormatEx) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRecoContext(
        ISpRecoContext **ppRecoContext) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpRecoResult, 0x20b053be, 0xe235, 0x43cd, 0x9a,0x2a, 0x8d,0x17,0xa4,0x8b,0x78,0x42)
#endif
#else
typedef struct ISpRecoResultVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpRecoResult* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpRecoResult* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpRecoResult* This);

    /*** ISpPhrase methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPhrase)(
        ISpRecoResult* This,
        SPPHRASE **ppCoMemPhrase);

    HRESULT (STDMETHODCALLTYPE *GetSerializedPhrase)(
        ISpRecoResult* This,
        SPSERIALIZEDPHRASE **ppCoMemPhrase);

    HRESULT (STDMETHODCALLTYPE *GetText)(
        ISpRecoResult* This,
        ULONG ulStart,
        ULONG ulCount,
        WINBOOL fUseTextReplacements,
        LPWSTR *ppszCoMemText,
        BYTE *pbDisplayAttributes);

    HRESULT (STDMETHODCALLTYPE *Discard)(
        ISpRecoResult* This,
        DWORD dwValueTypes);

    /*** ISpRecoResult methods ***/
    HRESULT (STDMETHODCALLTYPE *GetResultTimes)(
        ISpRecoResult* This,
        SPRECORESULTTIMES *pTimes);

    HRESULT (STDMETHODCALLTYPE *GetAlternates)(
        ISpRecoResult* This,
        ULONG ulStartElement,
        ULONG cElements,
        ULONG ulRequestCount,
        ISpPhraseAlt **ppPhrases,
        ULONG *pcPhrasesReturned);

    HRESULT (STDMETHODCALLTYPE *GetAudio)(
        ISpRecoResult* This,
        ULONG ulStartElement,
        ULONG cElements,
        ISpStreamFormat **ppStream);

    HRESULT (STDMETHODCALLTYPE *SpeakAudio)(
        ISpRecoResult* This,
        ULONG ulStartElement,
        ULONG cElements,
        DWORD dwFlags,
        ULONG *pulStreamNumber);

    HRESULT (STDMETHODCALLTYPE *Serialize)(
        ISpRecoResult* This,
        SPSERIALIZEDRESULT **ppCoMemSerializedResult);

    HRESULT (STDMETHODCALLTYPE *ScaleAudio)(
        ISpRecoResult* This,
        const GUID *pAudioFormatId,
        const WAVEFORMATEX *pWaveFormatEx);

    HRESULT (STDMETHODCALLTYPE *GetRecoContext)(
        ISpRecoResult* This,
        ISpRecoContext **ppRecoContext);

    END_INTERFACE
} ISpRecoResultVtbl;
interface ISpRecoResult {
    CONST_VTBL ISpRecoResultVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpRecoResult_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpRecoResult_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpRecoResult_Release(This) (This)->lpVtbl->Release(This)
/*** ISpPhrase methods ***/
#define ISpRecoResult_GetPhrase(This,ppCoMemPhrase) (This)->lpVtbl->GetPhrase(This,ppCoMemPhrase)
#define ISpRecoResult_GetSerializedPhrase(This,ppCoMemPhrase) (This)->lpVtbl->GetSerializedPhrase(This,ppCoMemPhrase)
#define ISpRecoResult_GetText(This,ulStart,ulCount,fUseTextReplacements,ppszCoMemText,pbDisplayAttributes) (This)->lpVtbl->GetText(This,ulStart,ulCount,fUseTextReplacements,ppszCoMemText,pbDisplayAttributes)
#define ISpRecoResult_Discard(This,dwValueTypes) (This)->lpVtbl->Discard(This,dwValueTypes)
/*** ISpRecoResult methods ***/
#define ISpRecoResult_GetResultTimes(This,pTimes) (This)->lpVtbl->GetResultTimes(This,pTimes)
#define ISpRecoResult_GetAlternates(This,ulStartElement,cElements,ulRequestCount,ppPhrases,pcPhrasesReturned) (This)->lpVtbl->GetAlternates(This,ulStartElement,cElements,ulRequestCount,ppPhrases,pcPhrasesReturned)
#define ISpRecoResult_GetAudio(This,ulStartElement,cElements,ppStream) (This)->lpVtbl->GetAudio(This,ulStartElement,cElements,ppStream)
#define ISpRecoResult_SpeakAudio(This,ulStartElement,cElements,dwFlags,pulStreamNumber) (This)->lpVtbl->SpeakAudio(This,ulStartElement,cElements,dwFlags,pulStreamNumber)
#define ISpRecoResult_Serialize(This,ppCoMemSerializedResult) (This)->lpVtbl->Serialize(This,ppCoMemSerializedResult)
#define ISpRecoResult_ScaleAudio(This,pAudioFormatId,pWaveFormatEx) (This)->lpVtbl->ScaleAudio(This,pAudioFormatId,pWaveFormatEx)
#define ISpRecoResult_GetRecoContext(This,ppRecoContext) (This)->lpVtbl->GetRecoContext(This,ppRecoContext)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpRecoResult_QueryInterface(ISpRecoResult* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpRecoResult_AddRef(ISpRecoResult* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpRecoResult_Release(ISpRecoResult* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpPhrase methods ***/
static FORCEINLINE HRESULT ISpRecoResult_GetPhrase(ISpRecoResult* This,SPPHRASE **ppCoMemPhrase) {
    return This->lpVtbl->GetPhrase(This,ppCoMemPhrase);
}
static FORCEINLINE HRESULT ISpRecoResult_GetSerializedPhrase(ISpRecoResult* This,SPSERIALIZEDPHRASE **ppCoMemPhrase) {
    return This->lpVtbl->GetSerializedPhrase(This,ppCoMemPhrase);
}
static FORCEINLINE HRESULT ISpRecoResult_GetText(ISpRecoResult* This,ULONG ulStart,ULONG ulCount,WINBOOL fUseTextReplacements,LPWSTR *ppszCoMemText,BYTE *pbDisplayAttributes) {
    return This->lpVtbl->GetText(This,ulStart,ulCount,fUseTextReplacements,ppszCoMemText,pbDisplayAttributes);
}
static FORCEINLINE HRESULT ISpRecoResult_Discard(ISpRecoResult* This,DWORD dwValueTypes) {
    return This->lpVtbl->Discard(This,dwValueTypes);
}
/*** ISpRecoResult methods ***/
static FORCEINLINE HRESULT ISpRecoResult_GetResultTimes(ISpRecoResult* This,SPRECORESULTTIMES *pTimes) {
    return This->lpVtbl->GetResultTimes(This,pTimes);
}
static FORCEINLINE HRESULT ISpRecoResult_GetAlternates(ISpRecoResult* This,ULONG ulStartElement,ULONG cElements,ULONG ulRequestCount,ISpPhraseAlt **ppPhrases,ULONG *pcPhrasesReturned) {
    return This->lpVtbl->GetAlternates(This,ulStartElement,cElements,ulRequestCount,ppPhrases,pcPhrasesReturned);
}
static FORCEINLINE HRESULT ISpRecoResult_GetAudio(ISpRecoResult* This,ULONG ulStartElement,ULONG cElements,ISpStreamFormat **ppStream) {
    return This->lpVtbl->GetAudio(This,ulStartElement,cElements,ppStream);
}
static FORCEINLINE HRESULT ISpRecoResult_SpeakAudio(ISpRecoResult* This,ULONG ulStartElement,ULONG cElements,DWORD dwFlags,ULONG *pulStreamNumber) {
    return This->lpVtbl->SpeakAudio(This,ulStartElement,cElements,dwFlags,pulStreamNumber);
}
static FORCEINLINE HRESULT ISpRecoResult_Serialize(ISpRecoResult* This,SPSERIALIZEDRESULT **ppCoMemSerializedResult) {
    return This->lpVtbl->Serialize(This,ppCoMemSerializedResult);
}
static FORCEINLINE HRESULT ISpRecoResult_ScaleAudio(ISpRecoResult* This,const GUID *pAudioFormatId,const WAVEFORMATEX *pWaveFormatEx) {
    return This->lpVtbl->ScaleAudio(This,pAudioFormatId,pWaveFormatEx);
}
static FORCEINLINE HRESULT ISpRecoResult_GetRecoContext(ISpRecoResult* This,ISpRecoContext **ppRecoContext) {
    return This->lpVtbl->GetRecoContext(This,ppRecoContext);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpRecoResult_GetResultTimes_Proxy(
    ISpRecoResult* This,
    SPRECORESULTTIMES *pTimes);
void __RPC_STUB ISpRecoResult_GetResultTimes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoResult_GetAlternates_Proxy(
    ISpRecoResult* This,
    ULONG ulStartElement,
    ULONG cElements,
    ULONG ulRequestCount,
    ISpPhraseAlt **ppPhrases,
    ULONG *pcPhrasesReturned);
void __RPC_STUB ISpRecoResult_GetAlternates_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoResult_GetAudio_Proxy(
    ISpRecoResult* This,
    ULONG ulStartElement,
    ULONG cElements,
    ISpStreamFormat **ppStream);
void __RPC_STUB ISpRecoResult_GetAudio_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoResult_SpeakAudio_Proxy(
    ISpRecoResult* This,
    ULONG ulStartElement,
    ULONG cElements,
    DWORD dwFlags,
    ULONG *pulStreamNumber);
void __RPC_STUB ISpRecoResult_SpeakAudio_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoResult_Serialize_Proxy(
    ISpRecoResult* This,
    SPSERIALIZEDRESULT **ppCoMemSerializedResult);
void __RPC_STUB ISpRecoResult_Serialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoResult_ScaleAudio_Proxy(
    ISpRecoResult* This,
    const GUID *pAudioFormatId,
    const WAVEFORMATEX *pWaveFormatEx);
void __RPC_STUB ISpRecoResult_ScaleAudio_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoResult_GetRecoContext_Proxy(
    ISpRecoResult* This,
    ISpRecoContext **ppRecoContext);
void __RPC_STUB ISpRecoResult_GetRecoContext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpRecoResult_INTERFACE_DEFINED__ */

typedef struct tagSPTEXTSELECTIONINFO {
    ULONG ulStartActiveOffset;
    ULONG cchActiveChars;
    ULONG ulStartSelection;
    ULONG cchSelection;
} SPTEXTSELECTIONINFO;
typedef enum SPWORDPRONOUNCEABLE {
    SPWP_UNKNOWN_WORD_UNPRONOUNCEABLE = 0,
    SPWP_UNKNOWN_WORD_PRONOUNCEABLE = 1,
    SPWP_KNOWN_WORD_PRONOUNCEABLE = 2
} SPWORDPRONOUNCEABLE;
typedef enum SPGRAMMARSTATE {
    SPGS_DISABLED = 0,
    SPGS_ENABLED = 1,
    SPGS_EXCLUSIVE = 3
} SPGRAMMARSTATE;
typedef enum SPCONTEXTSTATE {
    SPCS_DISABLED = 0,
    SPCS_ENABLED = 1
} SPCONTEXTSTATE;
typedef enum SPRULESTATE {
    SPRS_INACTIVE = 0,
    SPRS_ACTIVE = 1,
    SPRS_ACTIVE_WITH_AUTO_PAUSE = 3
} SPRULESTATE;
#define SP_STREAMPOS_ASAP (0)

#define SP_STREAMPOS_REALTIME (-1)

#define SPRULETRANS_TEXTBUFFER (SPSTATEHANDLE) (-1)
#define SPRULETRANS_WILDCARD (SPSTATEHANDLE) (-2)
#define SPRULETRANS_DICTATION (SPSTATEHANDLE) (-3)
typedef enum SPGRAMMARWORDTYPE {
    SPWT_DISPLAY = 0,
    SPWT_LEXICAL = 1,
    SPWT_PRONUNCIATION = 2
} SPGRAMMARWORDTYPE;
typedef struct tagSPPROPERTYINFO {
    LPCWSTR pszName;
    ULONG ulId;
    LPCWSTR pszValue;
    VARIANT vValue;
} SPPROPERTYINFO;
typedef enum SPCFGRULEATTRIBUTES {
    SPRAF_TopLevel = 0x1,
    SPRAF_Active = 0x2,
    SPRAF_Export = 0x4,
    SPRAF_Import = 0x8,
    SPRAF_Interpreter = 0x10,
    SPRAF_Dynamic = 0x20,
    SPRAF_AutoPause = 0x10000
} SPCFGRULEATTRIBUTES;
/*****************************************************************************
 * ISpGrammarBuilder interface
 */
#ifndef __ISpGrammarBuilder_INTERFACE_DEFINED__
#define __ISpGrammarBuilder_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpGrammarBuilder, 0x8137828f, 0x591a, 0x4a42, 0xbe,0x58, 0x49,0xea,0x7e,0xba,0xac,0x68);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8137828f-591a-4a42-be58-49ea7ebaac68")
ISpGrammarBuilder : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ResetGrammar(
        WORD NewLanguage) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRule(
        LPCWSTR pszRuleName,
        DWORD dwRuleId,
        DWORD dwAttributes,
        WINBOOL fCreateIfNotExist,
        SPSTATEHANDLE *phInitialState) = 0;

    virtual HRESULT STDMETHODCALLTYPE ClearRule(
        SPSTATEHANDLE hState) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateNewState(
        SPSTATEHANDLE hState,
        SPSTATEHANDLE *phState) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddWordTransition(
        SPSTATEHANDLE hFromState,
        SPSTATEHANDLE hToState,
        LPCWSTR psz,
        LPCWSTR pszSeparators,
        SPGRAMMARWORDTYPE eWordType,
        float Weight,
        const SPPROPERTYINFO *pPropInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddRuleTransition(
        SPSTATEHANDLE hFromState,
        SPSTATEHANDLE hToState,
        SPSTATEHANDLE hRule,
        float Weight,
        const SPPROPERTYINFO *pPropInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddResource(
        SPSTATEHANDLE hRuleState,
        LPCWSTR pszResourceName,
        LPCWSTR pszResourceValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE Commit(
        DWORD dwReserved) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpGrammarBuilder, 0x8137828f, 0x591a, 0x4a42, 0xbe,0x58, 0x49,0xea,0x7e,0xba,0xac,0x68)
#endif
#else
typedef struct ISpGrammarBuilderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpGrammarBuilder* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpGrammarBuilder* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpGrammarBuilder* This);

    /*** ISpGrammarBuilder methods ***/
    HRESULT (STDMETHODCALLTYPE *ResetGrammar)(
        ISpGrammarBuilder* This,
        WORD NewLanguage);

    HRESULT (STDMETHODCALLTYPE *GetRule)(
        ISpGrammarBuilder* This,
        LPCWSTR pszRuleName,
        DWORD dwRuleId,
        DWORD dwAttributes,
        WINBOOL fCreateIfNotExist,
        SPSTATEHANDLE *phInitialState);

    HRESULT (STDMETHODCALLTYPE *ClearRule)(
        ISpGrammarBuilder* This,
        SPSTATEHANDLE hState);

    HRESULT (STDMETHODCALLTYPE *CreateNewState)(
        ISpGrammarBuilder* This,
        SPSTATEHANDLE hState,
        SPSTATEHANDLE *phState);

    HRESULT (STDMETHODCALLTYPE *AddWordTransition)(
        ISpGrammarBuilder* This,
        SPSTATEHANDLE hFromState,
        SPSTATEHANDLE hToState,
        LPCWSTR psz,
        LPCWSTR pszSeparators,
        SPGRAMMARWORDTYPE eWordType,
        float Weight,
        const SPPROPERTYINFO *pPropInfo);

    HRESULT (STDMETHODCALLTYPE *AddRuleTransition)(
        ISpGrammarBuilder* This,
        SPSTATEHANDLE hFromState,
        SPSTATEHANDLE hToState,
        SPSTATEHANDLE hRule,
        float Weight,
        const SPPROPERTYINFO *pPropInfo);

    HRESULT (STDMETHODCALLTYPE *AddResource)(
        ISpGrammarBuilder* This,
        SPSTATEHANDLE hRuleState,
        LPCWSTR pszResourceName,
        LPCWSTR pszResourceValue);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        ISpGrammarBuilder* This,
        DWORD dwReserved);

    END_INTERFACE
} ISpGrammarBuilderVtbl;
interface ISpGrammarBuilder {
    CONST_VTBL ISpGrammarBuilderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpGrammarBuilder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpGrammarBuilder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpGrammarBuilder_Release(This) (This)->lpVtbl->Release(This)
/*** ISpGrammarBuilder methods ***/
#define ISpGrammarBuilder_ResetGrammar(This,NewLanguage) (This)->lpVtbl->ResetGrammar(This,NewLanguage)
#define ISpGrammarBuilder_GetRule(This,pszRuleName,dwRuleId,dwAttributes,fCreateIfNotExist,phInitialState) (This)->lpVtbl->GetRule(This,pszRuleName,dwRuleId,dwAttributes,fCreateIfNotExist,phInitialState)
#define ISpGrammarBuilder_ClearRule(This,hState) (This)->lpVtbl->ClearRule(This,hState)
#define ISpGrammarBuilder_CreateNewState(This,hState,phState) (This)->lpVtbl->CreateNewState(This,hState,phState)
#define ISpGrammarBuilder_AddWordTransition(This,hFromState,hToState,psz,pszSeparators,eWordType,Weight,pPropInfo) (This)->lpVtbl->AddWordTransition(This,hFromState,hToState,psz,pszSeparators,eWordType,Weight,pPropInfo)
#define ISpGrammarBuilder_AddRuleTransition(This,hFromState,hToState,hRule,Weight,pPropInfo) (This)->lpVtbl->AddRuleTransition(This,hFromState,hToState,hRule,Weight,pPropInfo)
#define ISpGrammarBuilder_AddResource(This,hRuleState,pszResourceName,pszResourceValue) (This)->lpVtbl->AddResource(This,hRuleState,pszResourceName,pszResourceValue)
#define ISpGrammarBuilder_Commit(This,dwReserved) (This)->lpVtbl->Commit(This,dwReserved)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpGrammarBuilder_QueryInterface(ISpGrammarBuilder* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpGrammarBuilder_AddRef(ISpGrammarBuilder* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpGrammarBuilder_Release(ISpGrammarBuilder* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpGrammarBuilder methods ***/
static FORCEINLINE HRESULT ISpGrammarBuilder_ResetGrammar(ISpGrammarBuilder* This,WORD NewLanguage) {
    return This->lpVtbl->ResetGrammar(This,NewLanguage);
}
static FORCEINLINE HRESULT ISpGrammarBuilder_GetRule(ISpGrammarBuilder* This,LPCWSTR pszRuleName,DWORD dwRuleId,DWORD dwAttributes,WINBOOL fCreateIfNotExist,SPSTATEHANDLE *phInitialState) {
    return This->lpVtbl->GetRule(This,pszRuleName,dwRuleId,dwAttributes,fCreateIfNotExist,phInitialState);
}
static FORCEINLINE HRESULT ISpGrammarBuilder_ClearRule(ISpGrammarBuilder* This,SPSTATEHANDLE hState) {
    return This->lpVtbl->ClearRule(This,hState);
}
static FORCEINLINE HRESULT ISpGrammarBuilder_CreateNewState(ISpGrammarBuilder* This,SPSTATEHANDLE hState,SPSTATEHANDLE *phState) {
    return This->lpVtbl->CreateNewState(This,hState,phState);
}
static FORCEINLINE HRESULT ISpGrammarBuilder_AddWordTransition(ISpGrammarBuilder* This,SPSTATEHANDLE hFromState,SPSTATEHANDLE hToState,LPCWSTR psz,LPCWSTR pszSeparators,SPGRAMMARWORDTYPE eWordType,float Weight,const SPPROPERTYINFO *pPropInfo) {
    return This->lpVtbl->AddWordTransition(This,hFromState,hToState,psz,pszSeparators,eWordType,Weight,pPropInfo);
}
static FORCEINLINE HRESULT ISpGrammarBuilder_AddRuleTransition(ISpGrammarBuilder* This,SPSTATEHANDLE hFromState,SPSTATEHANDLE hToState,SPSTATEHANDLE hRule,float Weight,const SPPROPERTYINFO *pPropInfo) {
    return This->lpVtbl->AddRuleTransition(This,hFromState,hToState,hRule,Weight,pPropInfo);
}
static FORCEINLINE HRESULT ISpGrammarBuilder_AddResource(ISpGrammarBuilder* This,SPSTATEHANDLE hRuleState,LPCWSTR pszResourceName,LPCWSTR pszResourceValue) {
    return This->lpVtbl->AddResource(This,hRuleState,pszResourceName,pszResourceValue);
}
static FORCEINLINE HRESULT ISpGrammarBuilder_Commit(ISpGrammarBuilder* This,DWORD dwReserved) {
    return This->lpVtbl->Commit(This,dwReserved);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpGrammarBuilder_ResetGrammar_Proxy(
    ISpGrammarBuilder* This,
    WORD NewLanguage);
void __RPC_STUB ISpGrammarBuilder_ResetGrammar_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpGrammarBuilder_GetRule_Proxy(
    ISpGrammarBuilder* This,
    LPCWSTR pszRuleName,
    DWORD dwRuleId,
    DWORD dwAttributes,
    WINBOOL fCreateIfNotExist,
    SPSTATEHANDLE *phInitialState);
void __RPC_STUB ISpGrammarBuilder_GetRule_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpGrammarBuilder_ClearRule_Proxy(
    ISpGrammarBuilder* This,
    SPSTATEHANDLE hState);
void __RPC_STUB ISpGrammarBuilder_ClearRule_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpGrammarBuilder_CreateNewState_Proxy(
    ISpGrammarBuilder* This,
    SPSTATEHANDLE hState,
    SPSTATEHANDLE *phState);
void __RPC_STUB ISpGrammarBuilder_CreateNewState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpGrammarBuilder_AddWordTransition_Proxy(
    ISpGrammarBuilder* This,
    SPSTATEHANDLE hFromState,
    SPSTATEHANDLE hToState,
    LPCWSTR psz,
    LPCWSTR pszSeparators,
    SPGRAMMARWORDTYPE eWordType,
    float Weight,
    const SPPROPERTYINFO *pPropInfo);
void __RPC_STUB ISpGrammarBuilder_AddWordTransition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpGrammarBuilder_AddRuleTransition_Proxy(
    ISpGrammarBuilder* This,
    SPSTATEHANDLE hFromState,
    SPSTATEHANDLE hToState,
    SPSTATEHANDLE hRule,
    float Weight,
    const SPPROPERTYINFO *pPropInfo);
void __RPC_STUB ISpGrammarBuilder_AddRuleTransition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpGrammarBuilder_AddResource_Proxy(
    ISpGrammarBuilder* This,
    SPSTATEHANDLE hRuleState,
    LPCWSTR pszResourceName,
    LPCWSTR pszResourceValue);
void __RPC_STUB ISpGrammarBuilder_AddResource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpGrammarBuilder_Commit_Proxy(
    ISpGrammarBuilder* This,
    DWORD dwReserved);
void __RPC_STUB ISpGrammarBuilder_Commit_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpGrammarBuilder_INTERFACE_DEFINED__ */

typedef enum SPLOADOPTIONS {
    SPLO_STATIC = 0,
    SPLO_DYNAMIC = 1
} SPLOADOPTIONS;
/*****************************************************************************
 * ISpRecoGrammar interface
 */
#ifndef __ISpRecoGrammar_INTERFACE_DEFINED__
#define __ISpRecoGrammar_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpRecoGrammar, 0x2177db29, 0x7f45, 0x47d0, 0x85,0x54, 0x06,0x7e,0x91,0xc8,0x05,0x02);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2177db29-7f45-47d0-8554-067e91c80502")
ISpRecoGrammar : public ISpGrammarBuilder
{
    virtual HRESULT STDMETHODCALLTYPE GetGrammarId(
        ULONGLONG *pullGrammarId) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRecoContext(
        ISpRecoContext **ppRecoCtxt) = 0;

    virtual HRESULT STDMETHODCALLTYPE LoadCmdFromFile(
        LPCWSTR pszFileName,
        SPLOADOPTIONS Options) = 0;

    virtual HRESULT STDMETHODCALLTYPE LoadCmdFromObject(
        REFCLSID rcid,
        LPCWSTR pszGrammarName,
        SPLOADOPTIONS Options) = 0;

    virtual HRESULT STDMETHODCALLTYPE LoadCmdFromResource(
        HMODULE hModule,
        LPCWSTR pszResourceName,
        LPCWSTR pszResourceType,
        WORD wLanguage,
        SPLOADOPTIONS Options) = 0;

    virtual HRESULT STDMETHODCALLTYPE LoadCmdFromMemory(
        const SPBINARYGRAMMAR *pGrammar,
        SPLOADOPTIONS Options) = 0;

    virtual HRESULT STDMETHODCALLTYPE LoadCmdFromProprietaryGrammar(
        REFGUID rguidParam,
        LPCWSTR pszStringParam,
        const void *pvDataPrarm,
        ULONG cbDataSize,
        SPLOADOPTIONS Options) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRuleState(
        LPCWSTR pszName,
        void *pReserved,
        SPRULESTATE NewState) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRuleIdState(
        ULONG ulRuleId,
        SPRULESTATE NewState) = 0;

    virtual HRESULT STDMETHODCALLTYPE LoadDictation(
        LPCWSTR pszTopicName,
        SPLOADOPTIONS Options) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnloadDictation(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDictationState(
        SPRULESTATE NewState) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetWordSequenceData(
        const WCHAR *pText,
        ULONG cchText,
        const SPTEXTSELECTIONINFO *pInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTextSelection(
        const SPTEXTSELECTIONINFO *pInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsPronounceable(
        LPCWSTR pszWord,
        SPWORDPRONOUNCEABLE *pWordPronounceable) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetGrammarState(
        SPGRAMMARSTATE eGrammarState) = 0;

    virtual HRESULT STDMETHODCALLTYPE SaveCmd(
        IStream *pStream,
        LPWSTR *ppszCoMemErrorText) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGrammarState(
        SPGRAMMARSTATE *peGrammarState) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpRecoGrammar, 0x2177db29, 0x7f45, 0x47d0, 0x85,0x54, 0x06,0x7e,0x91,0xc8,0x05,0x02)
#endif
#else
typedef struct ISpRecoGrammarVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpRecoGrammar* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpRecoGrammar* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpRecoGrammar* This);

    /*** ISpGrammarBuilder methods ***/
    HRESULT (STDMETHODCALLTYPE *ResetGrammar)(
        ISpRecoGrammar* This,
        WORD NewLanguage);

    HRESULT (STDMETHODCALLTYPE *GetRule)(
        ISpRecoGrammar* This,
        LPCWSTR pszRuleName,
        DWORD dwRuleId,
        DWORD dwAttributes,
        WINBOOL fCreateIfNotExist,
        SPSTATEHANDLE *phInitialState);

    HRESULT (STDMETHODCALLTYPE *ClearRule)(
        ISpRecoGrammar* This,
        SPSTATEHANDLE hState);

    HRESULT (STDMETHODCALLTYPE *CreateNewState)(
        ISpRecoGrammar* This,
        SPSTATEHANDLE hState,
        SPSTATEHANDLE *phState);

    HRESULT (STDMETHODCALLTYPE *AddWordTransition)(
        ISpRecoGrammar* This,
        SPSTATEHANDLE hFromState,
        SPSTATEHANDLE hToState,
        LPCWSTR psz,
        LPCWSTR pszSeparators,
        SPGRAMMARWORDTYPE eWordType,
        float Weight,
        const SPPROPERTYINFO *pPropInfo);

    HRESULT (STDMETHODCALLTYPE *AddRuleTransition)(
        ISpRecoGrammar* This,
        SPSTATEHANDLE hFromState,
        SPSTATEHANDLE hToState,
        SPSTATEHANDLE hRule,
        float Weight,
        const SPPROPERTYINFO *pPropInfo);

    HRESULT (STDMETHODCALLTYPE *AddResource)(
        ISpRecoGrammar* This,
        SPSTATEHANDLE hRuleState,
        LPCWSTR pszResourceName,
        LPCWSTR pszResourceValue);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        ISpRecoGrammar* This,
        DWORD dwReserved);

    /*** ISpRecoGrammar methods ***/
    HRESULT (STDMETHODCALLTYPE *GetGrammarId)(
        ISpRecoGrammar* This,
        ULONGLONG *pullGrammarId);

    HRESULT (STDMETHODCALLTYPE *GetRecoContext)(
        ISpRecoGrammar* This,
        ISpRecoContext **ppRecoCtxt);

    HRESULT (STDMETHODCALLTYPE *LoadCmdFromFile)(
        ISpRecoGrammar* This,
        LPCWSTR pszFileName,
        SPLOADOPTIONS Options);

    HRESULT (STDMETHODCALLTYPE *LoadCmdFromObject)(
        ISpRecoGrammar* This,
        REFCLSID rcid,
        LPCWSTR pszGrammarName,
        SPLOADOPTIONS Options);

    HRESULT (STDMETHODCALLTYPE *LoadCmdFromResource)(
        ISpRecoGrammar* This,
        HMODULE hModule,
        LPCWSTR pszResourceName,
        LPCWSTR pszResourceType,
        WORD wLanguage,
        SPLOADOPTIONS Options);

    HRESULT (STDMETHODCALLTYPE *LoadCmdFromMemory)(
        ISpRecoGrammar* This,
        const SPBINARYGRAMMAR *pGrammar,
        SPLOADOPTIONS Options);

    HRESULT (STDMETHODCALLTYPE *LoadCmdFromProprietaryGrammar)(
        ISpRecoGrammar* This,
        REFGUID rguidParam,
        LPCWSTR pszStringParam,
        const void *pvDataPrarm,
        ULONG cbDataSize,
        SPLOADOPTIONS Options);

    HRESULT (STDMETHODCALLTYPE *SetRuleState)(
        ISpRecoGrammar* This,
        LPCWSTR pszName,
        void *pReserved,
        SPRULESTATE NewState);

    HRESULT (STDMETHODCALLTYPE *SetRuleIdState)(
        ISpRecoGrammar* This,
        ULONG ulRuleId,
        SPRULESTATE NewState);

    HRESULT (STDMETHODCALLTYPE *LoadDictation)(
        ISpRecoGrammar* This,
        LPCWSTR pszTopicName,
        SPLOADOPTIONS Options);

    HRESULT (STDMETHODCALLTYPE *UnloadDictation)(
        ISpRecoGrammar* This);

    HRESULT (STDMETHODCALLTYPE *SetDictationState)(
        ISpRecoGrammar* This,
        SPRULESTATE NewState);

    HRESULT (STDMETHODCALLTYPE *SetWordSequenceData)(
        ISpRecoGrammar* This,
        const WCHAR *pText,
        ULONG cchText,
        const SPTEXTSELECTIONINFO *pInfo);

    HRESULT (STDMETHODCALLTYPE *SetTextSelection)(
        ISpRecoGrammar* This,
        const SPTEXTSELECTIONINFO *pInfo);

    HRESULT (STDMETHODCALLTYPE *IsPronounceable)(
        ISpRecoGrammar* This,
        LPCWSTR pszWord,
        SPWORDPRONOUNCEABLE *pWordPronounceable);

    HRESULT (STDMETHODCALLTYPE *SetGrammarState)(
        ISpRecoGrammar* This,
        SPGRAMMARSTATE eGrammarState);

    HRESULT (STDMETHODCALLTYPE *SaveCmd)(
        ISpRecoGrammar* This,
        IStream *pStream,
        LPWSTR *ppszCoMemErrorText);

    HRESULT (STDMETHODCALLTYPE *GetGrammarState)(
        ISpRecoGrammar* This,
        SPGRAMMARSTATE *peGrammarState);

    END_INTERFACE
} ISpRecoGrammarVtbl;
interface ISpRecoGrammar {
    CONST_VTBL ISpRecoGrammarVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpRecoGrammar_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpRecoGrammar_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpRecoGrammar_Release(This) (This)->lpVtbl->Release(This)
/*** ISpGrammarBuilder methods ***/
#define ISpRecoGrammar_ResetGrammar(This,NewLanguage) (This)->lpVtbl->ResetGrammar(This,NewLanguage)
#define ISpRecoGrammar_GetRule(This,pszRuleName,dwRuleId,dwAttributes,fCreateIfNotExist,phInitialState) (This)->lpVtbl->GetRule(This,pszRuleName,dwRuleId,dwAttributes,fCreateIfNotExist,phInitialState)
#define ISpRecoGrammar_ClearRule(This,hState) (This)->lpVtbl->ClearRule(This,hState)
#define ISpRecoGrammar_CreateNewState(This,hState,phState) (This)->lpVtbl->CreateNewState(This,hState,phState)
#define ISpRecoGrammar_AddWordTransition(This,hFromState,hToState,psz,pszSeparators,eWordType,Weight,pPropInfo) (This)->lpVtbl->AddWordTransition(This,hFromState,hToState,psz,pszSeparators,eWordType,Weight,pPropInfo)
#define ISpRecoGrammar_AddRuleTransition(This,hFromState,hToState,hRule,Weight,pPropInfo) (This)->lpVtbl->AddRuleTransition(This,hFromState,hToState,hRule,Weight,pPropInfo)
#define ISpRecoGrammar_AddResource(This,hRuleState,pszResourceName,pszResourceValue) (This)->lpVtbl->AddResource(This,hRuleState,pszResourceName,pszResourceValue)
#define ISpRecoGrammar_Commit(This,dwReserved) (This)->lpVtbl->Commit(This,dwReserved)
/*** ISpRecoGrammar methods ***/
#define ISpRecoGrammar_GetGrammarId(This,pullGrammarId) (This)->lpVtbl->GetGrammarId(This,pullGrammarId)
#define ISpRecoGrammar_GetRecoContext(This,ppRecoCtxt) (This)->lpVtbl->GetRecoContext(This,ppRecoCtxt)
#define ISpRecoGrammar_LoadCmdFromFile(This,pszFileName,Options) (This)->lpVtbl->LoadCmdFromFile(This,pszFileName,Options)
#define ISpRecoGrammar_LoadCmdFromObject(This,rcid,pszGrammarName,Options) (This)->lpVtbl->LoadCmdFromObject(This,rcid,pszGrammarName,Options)
#define ISpRecoGrammar_LoadCmdFromResource(This,hModule,pszResourceName,pszResourceType,wLanguage,Options) (This)->lpVtbl->LoadCmdFromResource(This,hModule,pszResourceName,pszResourceType,wLanguage,Options)
#define ISpRecoGrammar_LoadCmdFromMemory(This,pGrammar,Options) (This)->lpVtbl->LoadCmdFromMemory(This,pGrammar,Options)
#define ISpRecoGrammar_LoadCmdFromProprietaryGrammar(This,rguidParam,pszStringParam,pvDataPrarm,cbDataSize,Options) (This)->lpVtbl->LoadCmdFromProprietaryGrammar(This,rguidParam,pszStringParam,pvDataPrarm,cbDataSize,Options)
#define ISpRecoGrammar_SetRuleState(This,pszName,pReserved,NewState) (This)->lpVtbl->SetRuleState(This,pszName,pReserved,NewState)
#define ISpRecoGrammar_SetRuleIdState(This,ulRuleId,NewState) (This)->lpVtbl->SetRuleIdState(This,ulRuleId,NewState)
#define ISpRecoGrammar_LoadDictation(This,pszTopicName,Options) (This)->lpVtbl->LoadDictation(This,pszTopicName,Options)
#define ISpRecoGrammar_UnloadDictation(This) (This)->lpVtbl->UnloadDictation(This)
#define ISpRecoGrammar_SetDictationState(This,NewState) (This)->lpVtbl->SetDictationState(This,NewState)
#define ISpRecoGrammar_SetWordSequenceData(This,pText,cchText,pInfo) (This)->lpVtbl->SetWordSequenceData(This,pText,cchText,pInfo)
#define ISpRecoGrammar_SetTextSelection(This,pInfo) (This)->lpVtbl->SetTextSelection(This,pInfo)
#define ISpRecoGrammar_IsPronounceable(This,pszWord,pWordPronounceable) (This)->lpVtbl->IsPronounceable(This,pszWord,pWordPronounceable)
#define ISpRecoGrammar_SetGrammarState(This,eGrammarState) (This)->lpVtbl->SetGrammarState(This,eGrammarState)
#define ISpRecoGrammar_SaveCmd(This,pStream,ppszCoMemErrorText) (This)->lpVtbl->SaveCmd(This,pStream,ppszCoMemErrorText)
#define ISpRecoGrammar_GetGrammarState(This,peGrammarState) (This)->lpVtbl->GetGrammarState(This,peGrammarState)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpRecoGrammar_QueryInterface(ISpRecoGrammar* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpRecoGrammar_AddRef(ISpRecoGrammar* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpRecoGrammar_Release(ISpRecoGrammar* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpGrammarBuilder methods ***/
static FORCEINLINE HRESULT ISpRecoGrammar_ResetGrammar(ISpRecoGrammar* This,WORD NewLanguage) {
    return This->lpVtbl->ResetGrammar(This,NewLanguage);
}
static FORCEINLINE HRESULT ISpRecoGrammar_GetRule(ISpRecoGrammar* This,LPCWSTR pszRuleName,DWORD dwRuleId,DWORD dwAttributes,WINBOOL fCreateIfNotExist,SPSTATEHANDLE *phInitialState) {
    return This->lpVtbl->GetRule(This,pszRuleName,dwRuleId,dwAttributes,fCreateIfNotExist,phInitialState);
}
static FORCEINLINE HRESULT ISpRecoGrammar_ClearRule(ISpRecoGrammar* This,SPSTATEHANDLE hState) {
    return This->lpVtbl->ClearRule(This,hState);
}
static FORCEINLINE HRESULT ISpRecoGrammar_CreateNewState(ISpRecoGrammar* This,SPSTATEHANDLE hState,SPSTATEHANDLE *phState) {
    return This->lpVtbl->CreateNewState(This,hState,phState);
}
static FORCEINLINE HRESULT ISpRecoGrammar_AddWordTransition(ISpRecoGrammar* This,SPSTATEHANDLE hFromState,SPSTATEHANDLE hToState,LPCWSTR psz,LPCWSTR pszSeparators,SPGRAMMARWORDTYPE eWordType,float Weight,const SPPROPERTYINFO *pPropInfo) {
    return This->lpVtbl->AddWordTransition(This,hFromState,hToState,psz,pszSeparators,eWordType,Weight,pPropInfo);
}
static FORCEINLINE HRESULT ISpRecoGrammar_AddRuleTransition(ISpRecoGrammar* This,SPSTATEHANDLE hFromState,SPSTATEHANDLE hToState,SPSTATEHANDLE hRule,float Weight,const SPPROPERTYINFO *pPropInfo) {
    return This->lpVtbl->AddRuleTransition(This,hFromState,hToState,hRule,Weight,pPropInfo);
}
static FORCEINLINE HRESULT ISpRecoGrammar_AddResource(ISpRecoGrammar* This,SPSTATEHANDLE hRuleState,LPCWSTR pszResourceName,LPCWSTR pszResourceValue) {
    return This->lpVtbl->AddResource(This,hRuleState,pszResourceName,pszResourceValue);
}
static FORCEINLINE HRESULT ISpRecoGrammar_Commit(ISpRecoGrammar* This,DWORD dwReserved) {
    return This->lpVtbl->Commit(This,dwReserved);
}
/*** ISpRecoGrammar methods ***/
static FORCEINLINE HRESULT ISpRecoGrammar_GetGrammarId(ISpRecoGrammar* This,ULONGLONG *pullGrammarId) {
    return This->lpVtbl->GetGrammarId(This,pullGrammarId);
}
static FORCEINLINE HRESULT ISpRecoGrammar_GetRecoContext(ISpRecoGrammar* This,ISpRecoContext **ppRecoCtxt) {
    return This->lpVtbl->GetRecoContext(This,ppRecoCtxt);
}
static FORCEINLINE HRESULT ISpRecoGrammar_LoadCmdFromFile(ISpRecoGrammar* This,LPCWSTR pszFileName,SPLOADOPTIONS Options) {
    return This->lpVtbl->LoadCmdFromFile(This,pszFileName,Options);
}
static FORCEINLINE HRESULT ISpRecoGrammar_LoadCmdFromObject(ISpRecoGrammar* This,REFCLSID rcid,LPCWSTR pszGrammarName,SPLOADOPTIONS Options) {
    return This->lpVtbl->LoadCmdFromObject(This,rcid,pszGrammarName,Options);
}
static FORCEINLINE HRESULT ISpRecoGrammar_LoadCmdFromResource(ISpRecoGrammar* This,HMODULE hModule,LPCWSTR pszResourceName,LPCWSTR pszResourceType,WORD wLanguage,SPLOADOPTIONS Options) {
    return This->lpVtbl->LoadCmdFromResource(This,hModule,pszResourceName,pszResourceType,wLanguage,Options);
}
static FORCEINLINE HRESULT ISpRecoGrammar_LoadCmdFromMemory(ISpRecoGrammar* This,const SPBINARYGRAMMAR *pGrammar,SPLOADOPTIONS Options) {
    return This->lpVtbl->LoadCmdFromMemory(This,pGrammar,Options);
}
static FORCEINLINE HRESULT ISpRecoGrammar_LoadCmdFromProprietaryGrammar(ISpRecoGrammar* This,REFGUID rguidParam,LPCWSTR pszStringParam,const void *pvDataPrarm,ULONG cbDataSize,SPLOADOPTIONS Options) {
    return This->lpVtbl->LoadCmdFromProprietaryGrammar(This,rguidParam,pszStringParam,pvDataPrarm,cbDataSize,Options);
}
static FORCEINLINE HRESULT ISpRecoGrammar_SetRuleState(ISpRecoGrammar* This,LPCWSTR pszName,void *pReserved,SPRULESTATE NewState) {
    return This->lpVtbl->SetRuleState(This,pszName,pReserved,NewState);
}
static FORCEINLINE HRESULT ISpRecoGrammar_SetRuleIdState(ISpRecoGrammar* This,ULONG ulRuleId,SPRULESTATE NewState) {
    return This->lpVtbl->SetRuleIdState(This,ulRuleId,NewState);
}
static FORCEINLINE HRESULT ISpRecoGrammar_LoadDictation(ISpRecoGrammar* This,LPCWSTR pszTopicName,SPLOADOPTIONS Options) {
    return This->lpVtbl->LoadDictation(This,pszTopicName,Options);
}
static FORCEINLINE HRESULT ISpRecoGrammar_UnloadDictation(ISpRecoGrammar* This) {
    return This->lpVtbl->UnloadDictation(This);
}
static FORCEINLINE HRESULT ISpRecoGrammar_SetDictationState(ISpRecoGrammar* This,SPRULESTATE NewState) {
    return This->lpVtbl->SetDictationState(This,NewState);
}
static FORCEINLINE HRESULT ISpRecoGrammar_SetWordSequenceData(ISpRecoGrammar* This,const WCHAR *pText,ULONG cchText,const SPTEXTSELECTIONINFO *pInfo) {
    return This->lpVtbl->SetWordSequenceData(This,pText,cchText,pInfo);
}
static FORCEINLINE HRESULT ISpRecoGrammar_SetTextSelection(ISpRecoGrammar* This,const SPTEXTSELECTIONINFO *pInfo) {
    return This->lpVtbl->SetTextSelection(This,pInfo);
}
static FORCEINLINE HRESULT ISpRecoGrammar_IsPronounceable(ISpRecoGrammar* This,LPCWSTR pszWord,SPWORDPRONOUNCEABLE *pWordPronounceable) {
    return This->lpVtbl->IsPronounceable(This,pszWord,pWordPronounceable);
}
static FORCEINLINE HRESULT ISpRecoGrammar_SetGrammarState(ISpRecoGrammar* This,SPGRAMMARSTATE eGrammarState) {
    return This->lpVtbl->SetGrammarState(This,eGrammarState);
}
static FORCEINLINE HRESULT ISpRecoGrammar_SaveCmd(ISpRecoGrammar* This,IStream *pStream,LPWSTR *ppszCoMemErrorText) {
    return This->lpVtbl->SaveCmd(This,pStream,ppszCoMemErrorText);
}
static FORCEINLINE HRESULT ISpRecoGrammar_GetGrammarState(ISpRecoGrammar* This,SPGRAMMARSTATE *peGrammarState) {
    return This->lpVtbl->GetGrammarState(This,peGrammarState);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpRecoGrammar_GetGrammarId_Proxy(
    ISpRecoGrammar* This,
    ULONGLONG *pullGrammarId);
void __RPC_STUB ISpRecoGrammar_GetGrammarId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_GetRecoContext_Proxy(
    ISpRecoGrammar* This,
    ISpRecoContext **ppRecoCtxt);
void __RPC_STUB ISpRecoGrammar_GetRecoContext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_LoadCmdFromFile_Proxy(
    ISpRecoGrammar* This,
    LPCWSTR pszFileName,
    SPLOADOPTIONS Options);
void __RPC_STUB ISpRecoGrammar_LoadCmdFromFile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_LoadCmdFromObject_Proxy(
    ISpRecoGrammar* This,
    REFCLSID rcid,
    LPCWSTR pszGrammarName,
    SPLOADOPTIONS Options);
void __RPC_STUB ISpRecoGrammar_LoadCmdFromObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_LoadCmdFromResource_Proxy(
    ISpRecoGrammar* This,
    HMODULE hModule,
    LPCWSTR pszResourceName,
    LPCWSTR pszResourceType,
    WORD wLanguage,
    SPLOADOPTIONS Options);
void __RPC_STUB ISpRecoGrammar_LoadCmdFromResource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_LoadCmdFromMemory_Proxy(
    ISpRecoGrammar* This,
    const SPBINARYGRAMMAR *pGrammar,
    SPLOADOPTIONS Options);
void __RPC_STUB ISpRecoGrammar_LoadCmdFromMemory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_LoadCmdFromProprietaryGrammar_Proxy(
    ISpRecoGrammar* This,
    REFGUID rguidParam,
    LPCWSTR pszStringParam,
    const void *pvDataPrarm,
    ULONG cbDataSize,
    SPLOADOPTIONS Options);
void __RPC_STUB ISpRecoGrammar_LoadCmdFromProprietaryGrammar_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_SetRuleState_Proxy(
    ISpRecoGrammar* This,
    LPCWSTR pszName,
    void *pReserved,
    SPRULESTATE NewState);
void __RPC_STUB ISpRecoGrammar_SetRuleState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_SetRuleIdState_Proxy(
    ISpRecoGrammar* This,
    ULONG ulRuleId,
    SPRULESTATE NewState);
void __RPC_STUB ISpRecoGrammar_SetRuleIdState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_LoadDictation_Proxy(
    ISpRecoGrammar* This,
    LPCWSTR pszTopicName,
    SPLOADOPTIONS Options);
void __RPC_STUB ISpRecoGrammar_LoadDictation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_UnloadDictation_Proxy(
    ISpRecoGrammar* This);
void __RPC_STUB ISpRecoGrammar_UnloadDictation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_SetDictationState_Proxy(
    ISpRecoGrammar* This,
    SPRULESTATE NewState);
void __RPC_STUB ISpRecoGrammar_SetDictationState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_SetWordSequenceData_Proxy(
    ISpRecoGrammar* This,
    const WCHAR *pText,
    ULONG cchText,
    const SPTEXTSELECTIONINFO *pInfo);
void __RPC_STUB ISpRecoGrammar_SetWordSequenceData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_SetTextSelection_Proxy(
    ISpRecoGrammar* This,
    const SPTEXTSELECTIONINFO *pInfo);
void __RPC_STUB ISpRecoGrammar_SetTextSelection_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_IsPronounceable_Proxy(
    ISpRecoGrammar* This,
    LPCWSTR pszWord,
    SPWORDPRONOUNCEABLE *pWordPronounceable);
void __RPC_STUB ISpRecoGrammar_IsPronounceable_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_SetGrammarState_Proxy(
    ISpRecoGrammar* This,
    SPGRAMMARSTATE eGrammarState);
void __RPC_STUB ISpRecoGrammar_SetGrammarState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_SaveCmd_Proxy(
    ISpRecoGrammar* This,
    IStream *pStream,
    LPWSTR *ppszCoMemErrorText);
void __RPC_STUB ISpRecoGrammar_SaveCmd_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoGrammar_GetGrammarState_Proxy(
    ISpRecoGrammar* This,
    SPGRAMMARSTATE *peGrammarState);
void __RPC_STUB ISpRecoGrammar_GetGrammarState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpRecoGrammar_INTERFACE_DEFINED__ */

typedef struct SPRECOCONTEXTSTATUS {
    SPINTERFERENCE eInterference;
    WCHAR szRequestTypeOfUI[255];
    DWORD dwReserved1;
    DWORD dwReserved2;
} SPRECOCONTEXTSTATUS;
typedef enum SPBOOKMARKOPTIONS {
    SPBO_NONE = 0,
    SPBO_PAUSE = 0x1
} SPBOOKMARKOPTIONS;
typedef enum SPAUDIOOPTIONS {
    SPAO_NONE = 0,
    SPAO_RETAIN_AUDIO = 0x1
} SPAUDIOOPTIONS;
/*****************************************************************************
 * ISpRecoContext interface
 */
#ifndef __ISpRecoContext_INTERFACE_DEFINED__
#define __ISpRecoContext_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpRecoContext, 0xf740a62f, 0x7c15, 0x489e, 0x82,0x34, 0x94,0x0a,0x33,0xd9,0x27,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f740a62f-7c15-489e-8234-940a33d9272d")
ISpRecoContext : public ISpEventSource
{
    virtual HRESULT STDMETHODCALLTYPE GetRecognizer(
        ISpRecognizer **ppRecognizer) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateGrammar(
        ULONGLONG ullGrammarId,
        ISpRecoGrammar **ppGrammar) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStatus(
        SPRECOCONTEXTSTATUS *pStatus) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMaxAlternates(
        ULONG *pcAlternates) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMaxAlternates(
        ULONG cAlternates) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAudioOptions(
        SPAUDIOOPTIONS Options,
        const GUID *pAudioFormatId,
        const WAVEFORMATEX *pWaveFormatEx) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAudioOptions(
        SPAUDIOOPTIONS *pOptions,
        GUID *pAudioFormatId,
        WAVEFORMATEX **ppCoMemWFEX) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeserializeResult(
        const SPSERIALIZEDRESULT *pSerializedResult,
        ISpRecoResult **ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE Bookmark(
        SPBOOKMARKOPTIONS Options,
        ULONGLONG ullStreamPosition,
        LPARAM lparamEvent) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAdaptationData(
        LPCWSTR pAdaptationData,
        const ULONG cch) = 0;

    virtual HRESULT STDMETHODCALLTYPE Pause(
        DWORD dwReserved) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resume(
        DWORD dwReserved) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVoice(
        ISpVoice *pVoice,
        WINBOOL fAllowFormatChanges) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVoice(
        ISpVoice **ppVoice) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVoicePurgeEvent(
        ULONGLONG ullEventInterest) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVoicePurgeEvent(
        ULONGLONG *pullEventInterest) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetContextState(
        SPCONTEXTSTATE eContextState) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetContextState(
        SPCONTEXTSTATE *peContextState) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpRecoContext, 0xf740a62f, 0x7c15, 0x489e, 0x82,0x34, 0x94,0x0a,0x33,0xd9,0x27,0x2d)
#endif
#else
typedef struct ISpRecoContextVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpRecoContext* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpRecoContext* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpRecoContext* This);

    /*** ISpNotifySource methods ***/
    HRESULT (STDMETHODCALLTYPE *SetNotifySink)(
        ISpRecoContext* This,
        ISpNotifySink *pNotifySink);

    HRESULT (STDMETHODCALLTYPE *SetNotifyWindowMessage)(
        ISpRecoContext* This,
        HWND hWnd,
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *SetNotifyCallbackFunction)(
        ISpRecoContext* This,
        SPNOTIFYCALLBACK *pfnCallback,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *SetNotifyCallbackInterface)(
        ISpRecoContext* This,
        ISpNotifyCallback *pSpCallback,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *SetNotifyWin32Event)(
        ISpRecoContext* This);

    HRESULT (STDMETHODCALLTYPE *WaitForNotifyEvent)(
        ISpRecoContext* This,
        DWORD dwMilliseconds);

    HANDLE (STDMETHODCALLTYPE *GetNotifyEventHandle)(
        ISpRecoContext* This);

    /*** ISpEventSource methods ***/
    HRESULT (STDMETHODCALLTYPE *SetInterest)(
        ISpRecoContext* This,
        ULONGLONG ullEventInterest,
        ULONGLONG ullQueuedInterest);

    HRESULT (STDMETHODCALLTYPE *GetEvents)(
        ISpRecoContext* This,
        ULONG ulCount,
        SPEVENT *pEventArray,
        ULONG *pulFetched);

    HRESULT (STDMETHODCALLTYPE *GetInfo)(
        ISpRecoContext* This,
        SPEVENTSOURCEINFO *pInfo);

    /*** ISpRecoContext methods ***/
    HRESULT (STDMETHODCALLTYPE *GetRecognizer)(
        ISpRecoContext* This,
        ISpRecognizer **ppRecognizer);

    HRESULT (STDMETHODCALLTYPE *CreateGrammar)(
        ISpRecoContext* This,
        ULONGLONG ullGrammarId,
        ISpRecoGrammar **ppGrammar);

    HRESULT (STDMETHODCALLTYPE *GetStatus)(
        ISpRecoContext* This,
        SPRECOCONTEXTSTATUS *pStatus);

    HRESULT (STDMETHODCALLTYPE *GetMaxAlternates)(
        ISpRecoContext* This,
        ULONG *pcAlternates);

    HRESULT (STDMETHODCALLTYPE *SetMaxAlternates)(
        ISpRecoContext* This,
        ULONG cAlternates);

    HRESULT (STDMETHODCALLTYPE *SetAudioOptions)(
        ISpRecoContext* This,
        SPAUDIOOPTIONS Options,
        const GUID *pAudioFormatId,
        const WAVEFORMATEX *pWaveFormatEx);

    HRESULT (STDMETHODCALLTYPE *GetAudioOptions)(
        ISpRecoContext* This,
        SPAUDIOOPTIONS *pOptions,
        GUID *pAudioFormatId,
        WAVEFORMATEX **ppCoMemWFEX);

    HRESULT (STDMETHODCALLTYPE *DeserializeResult)(
        ISpRecoContext* This,
        const SPSERIALIZEDRESULT *pSerializedResult,
        ISpRecoResult **ppResult);

    HRESULT (STDMETHODCALLTYPE *Bookmark)(
        ISpRecoContext* This,
        SPBOOKMARKOPTIONS Options,
        ULONGLONG ullStreamPosition,
        LPARAM lparamEvent);

    HRESULT (STDMETHODCALLTYPE *SetAdaptationData)(
        ISpRecoContext* This,
        LPCWSTR pAdaptationData,
        const ULONG cch);

    HRESULT (STDMETHODCALLTYPE *Pause)(
        ISpRecoContext* This,
        DWORD dwReserved);

    HRESULT (STDMETHODCALLTYPE *Resume)(
        ISpRecoContext* This,
        DWORD dwReserved);

    HRESULT (STDMETHODCALLTYPE *SetVoice)(
        ISpRecoContext* This,
        ISpVoice *pVoice,
        WINBOOL fAllowFormatChanges);

    HRESULT (STDMETHODCALLTYPE *GetVoice)(
        ISpRecoContext* This,
        ISpVoice **ppVoice);

    HRESULT (STDMETHODCALLTYPE *SetVoicePurgeEvent)(
        ISpRecoContext* This,
        ULONGLONG ullEventInterest);

    HRESULT (STDMETHODCALLTYPE *GetVoicePurgeEvent)(
        ISpRecoContext* This,
        ULONGLONG *pullEventInterest);

    HRESULT (STDMETHODCALLTYPE *SetContextState)(
        ISpRecoContext* This,
        SPCONTEXTSTATE eContextState);

    HRESULT (STDMETHODCALLTYPE *GetContextState)(
        ISpRecoContext* This,
        SPCONTEXTSTATE *peContextState);

    END_INTERFACE
} ISpRecoContextVtbl;
interface ISpRecoContext {
    CONST_VTBL ISpRecoContextVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpRecoContext_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpRecoContext_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpRecoContext_Release(This) (This)->lpVtbl->Release(This)
/*** ISpNotifySource methods ***/
#define ISpRecoContext_SetNotifySink(This,pNotifySink) (This)->lpVtbl->SetNotifySink(This,pNotifySink)
#define ISpRecoContext_SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam) (This)->lpVtbl->SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam)
#define ISpRecoContext_SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam) (This)->lpVtbl->SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam)
#define ISpRecoContext_SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam) (This)->lpVtbl->SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam)
#define ISpRecoContext_SetNotifyWin32Event(This) (This)->lpVtbl->SetNotifyWin32Event(This)
#define ISpRecoContext_WaitForNotifyEvent(This,dwMilliseconds) (This)->lpVtbl->WaitForNotifyEvent(This,dwMilliseconds)
#define ISpRecoContext_GetNotifyEventHandle(This) (This)->lpVtbl->GetNotifyEventHandle(This)
/*** ISpEventSource methods ***/
#define ISpRecoContext_SetInterest(This,ullEventInterest,ullQueuedInterest) (This)->lpVtbl->SetInterest(This,ullEventInterest,ullQueuedInterest)
#define ISpRecoContext_GetEvents(This,ulCount,pEventArray,pulFetched) (This)->lpVtbl->GetEvents(This,ulCount,pEventArray,pulFetched)
#define ISpRecoContext_GetInfo(This,pInfo) (This)->lpVtbl->GetInfo(This,pInfo)
/*** ISpRecoContext methods ***/
#define ISpRecoContext_GetRecognizer(This,ppRecognizer) (This)->lpVtbl->GetRecognizer(This,ppRecognizer)
#define ISpRecoContext_CreateGrammar(This,ullGrammarId,ppGrammar) (This)->lpVtbl->CreateGrammar(This,ullGrammarId,ppGrammar)
#define ISpRecoContext_GetStatus(This,pStatus) (This)->lpVtbl->GetStatus(This,pStatus)
#define ISpRecoContext_GetMaxAlternates(This,pcAlternates) (This)->lpVtbl->GetMaxAlternates(This,pcAlternates)
#define ISpRecoContext_SetMaxAlternates(This,cAlternates) (This)->lpVtbl->SetMaxAlternates(This,cAlternates)
#define ISpRecoContext_SetAudioOptions(This,Options,pAudioFormatId,pWaveFormatEx) (This)->lpVtbl->SetAudioOptions(This,Options,pAudioFormatId,pWaveFormatEx)
#define ISpRecoContext_GetAudioOptions(This,pOptions,pAudioFormatId,ppCoMemWFEX) (This)->lpVtbl->GetAudioOptions(This,pOptions,pAudioFormatId,ppCoMemWFEX)
#define ISpRecoContext_DeserializeResult(This,pSerializedResult,ppResult) (This)->lpVtbl->DeserializeResult(This,pSerializedResult,ppResult)
#define ISpRecoContext_Bookmark(This,Options,ullStreamPosition,lparamEvent) (This)->lpVtbl->Bookmark(This,Options,ullStreamPosition,lparamEvent)
#define ISpRecoContext_SetAdaptationData(This,pAdaptationData,cch) (This)->lpVtbl->SetAdaptationData(This,pAdaptationData,cch)
#define ISpRecoContext_Pause(This,dwReserved) (This)->lpVtbl->Pause(This,dwReserved)
#define ISpRecoContext_Resume(This,dwReserved) (This)->lpVtbl->Resume(This,dwReserved)
#define ISpRecoContext_SetVoice(This,pVoice,fAllowFormatChanges) (This)->lpVtbl->SetVoice(This,pVoice,fAllowFormatChanges)
#define ISpRecoContext_GetVoice(This,ppVoice) (This)->lpVtbl->GetVoice(This,ppVoice)
#define ISpRecoContext_SetVoicePurgeEvent(This,ullEventInterest) (This)->lpVtbl->SetVoicePurgeEvent(This,ullEventInterest)
#define ISpRecoContext_GetVoicePurgeEvent(This,pullEventInterest) (This)->lpVtbl->GetVoicePurgeEvent(This,pullEventInterest)
#define ISpRecoContext_SetContextState(This,eContextState) (This)->lpVtbl->SetContextState(This,eContextState)
#define ISpRecoContext_GetContextState(This,peContextState) (This)->lpVtbl->GetContextState(This,peContextState)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpRecoContext_QueryInterface(ISpRecoContext* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpRecoContext_AddRef(ISpRecoContext* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpRecoContext_Release(ISpRecoContext* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpNotifySource methods ***/
static FORCEINLINE HRESULT ISpRecoContext_SetNotifySink(ISpRecoContext* This,ISpNotifySink *pNotifySink) {
    return This->lpVtbl->SetNotifySink(This,pNotifySink);
}
static FORCEINLINE HRESULT ISpRecoContext_SetNotifyWindowMessage(ISpRecoContext* This,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->SetNotifyWindowMessage(This,hWnd,Msg,wParam,lParam);
}
static FORCEINLINE HRESULT ISpRecoContext_SetNotifyCallbackFunction(ISpRecoContext* This,SPNOTIFYCALLBACK *pfnCallback,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->SetNotifyCallbackFunction(This,pfnCallback,wParam,lParam);
}
static FORCEINLINE HRESULT ISpRecoContext_SetNotifyCallbackInterface(ISpRecoContext* This,ISpNotifyCallback *pSpCallback,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->SetNotifyCallbackInterface(This,pSpCallback,wParam,lParam);
}
static FORCEINLINE HRESULT ISpRecoContext_SetNotifyWin32Event(ISpRecoContext* This) {
    return This->lpVtbl->SetNotifyWin32Event(This);
}
static FORCEINLINE HRESULT ISpRecoContext_WaitForNotifyEvent(ISpRecoContext* This,DWORD dwMilliseconds) {
    return This->lpVtbl->WaitForNotifyEvent(This,dwMilliseconds);
}
static FORCEINLINE HANDLE ISpRecoContext_GetNotifyEventHandle(ISpRecoContext* This) {
    return This->lpVtbl->GetNotifyEventHandle(This);
}
/*** ISpEventSource methods ***/
static FORCEINLINE HRESULT ISpRecoContext_SetInterest(ISpRecoContext* This,ULONGLONG ullEventInterest,ULONGLONG ullQueuedInterest) {
    return This->lpVtbl->SetInterest(This,ullEventInterest,ullQueuedInterest);
}
static FORCEINLINE HRESULT ISpRecoContext_GetEvents(ISpRecoContext* This,ULONG ulCount,SPEVENT *pEventArray,ULONG *pulFetched) {
    return This->lpVtbl->GetEvents(This,ulCount,pEventArray,pulFetched);
}
static FORCEINLINE HRESULT ISpRecoContext_GetInfo(ISpRecoContext* This,SPEVENTSOURCEINFO *pInfo) {
    return This->lpVtbl->GetInfo(This,pInfo);
}
/*** ISpRecoContext methods ***/
static FORCEINLINE HRESULT ISpRecoContext_GetRecognizer(ISpRecoContext* This,ISpRecognizer **ppRecognizer) {
    return This->lpVtbl->GetRecognizer(This,ppRecognizer);
}
static FORCEINLINE HRESULT ISpRecoContext_CreateGrammar(ISpRecoContext* This,ULONGLONG ullGrammarId,ISpRecoGrammar **ppGrammar) {
    return This->lpVtbl->CreateGrammar(This,ullGrammarId,ppGrammar);
}
static FORCEINLINE HRESULT ISpRecoContext_GetStatus(ISpRecoContext* This,SPRECOCONTEXTSTATUS *pStatus) {
    return This->lpVtbl->GetStatus(This,pStatus);
}
static FORCEINLINE HRESULT ISpRecoContext_GetMaxAlternates(ISpRecoContext* This,ULONG *pcAlternates) {
    return This->lpVtbl->GetMaxAlternates(This,pcAlternates);
}
static FORCEINLINE HRESULT ISpRecoContext_SetMaxAlternates(ISpRecoContext* This,ULONG cAlternates) {
    return This->lpVtbl->SetMaxAlternates(This,cAlternates);
}
static FORCEINLINE HRESULT ISpRecoContext_SetAudioOptions(ISpRecoContext* This,SPAUDIOOPTIONS Options,const GUID *pAudioFormatId,const WAVEFORMATEX *pWaveFormatEx) {
    return This->lpVtbl->SetAudioOptions(This,Options,pAudioFormatId,pWaveFormatEx);
}
static FORCEINLINE HRESULT ISpRecoContext_GetAudioOptions(ISpRecoContext* This,SPAUDIOOPTIONS *pOptions,GUID *pAudioFormatId,WAVEFORMATEX **ppCoMemWFEX) {
    return This->lpVtbl->GetAudioOptions(This,pOptions,pAudioFormatId,ppCoMemWFEX);
}
static FORCEINLINE HRESULT ISpRecoContext_DeserializeResult(ISpRecoContext* This,const SPSERIALIZEDRESULT *pSerializedResult,ISpRecoResult **ppResult) {
    return This->lpVtbl->DeserializeResult(This,pSerializedResult,ppResult);
}
static FORCEINLINE HRESULT ISpRecoContext_Bookmark(ISpRecoContext* This,SPBOOKMARKOPTIONS Options,ULONGLONG ullStreamPosition,LPARAM lparamEvent) {
    return This->lpVtbl->Bookmark(This,Options,ullStreamPosition,lparamEvent);
}
static FORCEINLINE HRESULT ISpRecoContext_SetAdaptationData(ISpRecoContext* This,LPCWSTR pAdaptationData,const ULONG cch) {
    return This->lpVtbl->SetAdaptationData(This,pAdaptationData,cch);
}
static FORCEINLINE HRESULT ISpRecoContext_Pause(ISpRecoContext* This,DWORD dwReserved) {
    return This->lpVtbl->Pause(This,dwReserved);
}
static FORCEINLINE HRESULT ISpRecoContext_Resume(ISpRecoContext* This,DWORD dwReserved) {
    return This->lpVtbl->Resume(This,dwReserved);
}
static FORCEINLINE HRESULT ISpRecoContext_SetVoice(ISpRecoContext* This,ISpVoice *pVoice,WINBOOL fAllowFormatChanges) {
    return This->lpVtbl->SetVoice(This,pVoice,fAllowFormatChanges);
}
static FORCEINLINE HRESULT ISpRecoContext_GetVoice(ISpRecoContext* This,ISpVoice **ppVoice) {
    return This->lpVtbl->GetVoice(This,ppVoice);
}
static FORCEINLINE HRESULT ISpRecoContext_SetVoicePurgeEvent(ISpRecoContext* This,ULONGLONG ullEventInterest) {
    return This->lpVtbl->SetVoicePurgeEvent(This,ullEventInterest);
}
static FORCEINLINE HRESULT ISpRecoContext_GetVoicePurgeEvent(ISpRecoContext* This,ULONGLONG *pullEventInterest) {
    return This->lpVtbl->GetVoicePurgeEvent(This,pullEventInterest);
}
static FORCEINLINE HRESULT ISpRecoContext_SetContextState(ISpRecoContext* This,SPCONTEXTSTATE eContextState) {
    return This->lpVtbl->SetContextState(This,eContextState);
}
static FORCEINLINE HRESULT ISpRecoContext_GetContextState(ISpRecoContext* This,SPCONTEXTSTATE *peContextState) {
    return This->lpVtbl->GetContextState(This,peContextState);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpRecoContext_GetRecognizer_Proxy(
    ISpRecoContext* This,
    ISpRecognizer **ppRecognizer);
void __RPC_STUB ISpRecoContext_GetRecognizer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_CreateGrammar_Proxy(
    ISpRecoContext* This,
    ULONGLONG ullGrammarId,
    ISpRecoGrammar **ppGrammar);
void __RPC_STUB ISpRecoContext_CreateGrammar_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_GetStatus_Proxy(
    ISpRecoContext* This,
    SPRECOCONTEXTSTATUS *pStatus);
void __RPC_STUB ISpRecoContext_GetStatus_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_GetMaxAlternates_Proxy(
    ISpRecoContext* This,
    ULONG *pcAlternates);
void __RPC_STUB ISpRecoContext_GetMaxAlternates_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_SetMaxAlternates_Proxy(
    ISpRecoContext* This,
    ULONG cAlternates);
void __RPC_STUB ISpRecoContext_SetMaxAlternates_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_SetAudioOptions_Proxy(
    ISpRecoContext* This,
    SPAUDIOOPTIONS Options,
    const GUID *pAudioFormatId,
    const WAVEFORMATEX *pWaveFormatEx);
void __RPC_STUB ISpRecoContext_SetAudioOptions_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_GetAudioOptions_Proxy(
    ISpRecoContext* This,
    SPAUDIOOPTIONS *pOptions,
    GUID *pAudioFormatId,
    WAVEFORMATEX **ppCoMemWFEX);
void __RPC_STUB ISpRecoContext_GetAudioOptions_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_DeserializeResult_Proxy(
    ISpRecoContext* This,
    const SPSERIALIZEDRESULT *pSerializedResult,
    ISpRecoResult **ppResult);
void __RPC_STUB ISpRecoContext_DeserializeResult_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_Bookmark_Proxy(
    ISpRecoContext* This,
    SPBOOKMARKOPTIONS Options,
    ULONGLONG ullStreamPosition,
    LPARAM lparamEvent);
void __RPC_STUB ISpRecoContext_Bookmark_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_SetAdaptationData_Proxy(
    ISpRecoContext* This,
    LPCWSTR pAdaptationData,
    const ULONG cch);
void __RPC_STUB ISpRecoContext_SetAdaptationData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_Pause_Proxy(
    ISpRecoContext* This,
    DWORD dwReserved);
void __RPC_STUB ISpRecoContext_Pause_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_Resume_Proxy(
    ISpRecoContext* This,
    DWORD dwReserved);
void __RPC_STUB ISpRecoContext_Resume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_SetVoice_Proxy(
    ISpRecoContext* This,
    ISpVoice *pVoice,
    WINBOOL fAllowFormatChanges);
void __RPC_STUB ISpRecoContext_SetVoice_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_GetVoice_Proxy(
    ISpRecoContext* This,
    ISpVoice **ppVoice);
void __RPC_STUB ISpRecoContext_GetVoice_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_SetVoicePurgeEvent_Proxy(
    ISpRecoContext* This,
    ULONGLONG ullEventInterest);
void __RPC_STUB ISpRecoContext_SetVoicePurgeEvent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_GetVoicePurgeEvent_Proxy(
    ISpRecoContext* This,
    ULONGLONG *pullEventInterest);
void __RPC_STUB ISpRecoContext_GetVoicePurgeEvent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_SetContextState_Proxy(
    ISpRecoContext* This,
    SPCONTEXTSTATE eContextState);
void __RPC_STUB ISpRecoContext_SetContextState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecoContext_GetContextState_Proxy(
    ISpRecoContext* This,
    SPCONTEXTSTATE *peContextState);
void __RPC_STUB ISpRecoContext_GetContextState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpRecoContext_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpProperties interface
 */
#ifndef __ISpProperties_INTERFACE_DEFINED__
#define __ISpProperties_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpProperties, 0x5b4fb971, 0xb115, 0x4de1, 0xad,0x97, 0xe4,0x82,0xe3,0xbf,0x6e,0xe4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5b4fb971-b115-4de1-ad97-e482e3bf6ee4")
ISpProperties : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetPropertyNum(
        LPCWSTR pName,
        LONG lValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyNum(
        LPCWSTR pName,
        LONG *plValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPropertyString(
        LPCWSTR pName,
        LPCWSTR pValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyString(
        LPCWSTR pName,
        LPWSTR *ppCoMemValue) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpProperties, 0x5b4fb971, 0xb115, 0x4de1, 0xad,0x97, 0xe4,0x82,0xe3,0xbf,0x6e,0xe4)
#endif
#else
typedef struct ISpPropertiesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpProperties* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpProperties* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpProperties* This);

    /*** ISpProperties methods ***/
    HRESULT (STDMETHODCALLTYPE *SetPropertyNum)(
        ISpProperties* This,
        LPCWSTR pName,
        LONG lValue);

    HRESULT (STDMETHODCALLTYPE *GetPropertyNum)(
        ISpProperties* This,
        LPCWSTR pName,
        LONG *plValue);

    HRESULT (STDMETHODCALLTYPE *SetPropertyString)(
        ISpProperties* This,
        LPCWSTR pName,
        LPCWSTR pValue);

    HRESULT (STDMETHODCALLTYPE *GetPropertyString)(
        ISpProperties* This,
        LPCWSTR pName,
        LPWSTR *ppCoMemValue);

    END_INTERFACE
} ISpPropertiesVtbl;
interface ISpProperties {
    CONST_VTBL ISpPropertiesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpProperties_Release(This) (This)->lpVtbl->Release(This)
/*** ISpProperties methods ***/
#define ISpProperties_SetPropertyNum(This,pName,lValue) (This)->lpVtbl->SetPropertyNum(This,pName,lValue)
#define ISpProperties_GetPropertyNum(This,pName,plValue) (This)->lpVtbl->GetPropertyNum(This,pName,plValue)
#define ISpProperties_SetPropertyString(This,pName,pValue) (This)->lpVtbl->SetPropertyString(This,pName,pValue)
#define ISpProperties_GetPropertyString(This,pName,ppCoMemValue) (This)->lpVtbl->GetPropertyString(This,pName,ppCoMemValue)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpProperties_QueryInterface(ISpProperties* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpProperties_AddRef(ISpProperties* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpProperties_Release(ISpProperties* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpProperties methods ***/
static FORCEINLINE HRESULT ISpProperties_SetPropertyNum(ISpProperties* This,LPCWSTR pName,LONG lValue) {
    return This->lpVtbl->SetPropertyNum(This,pName,lValue);
}
static FORCEINLINE HRESULT ISpProperties_GetPropertyNum(ISpProperties* This,LPCWSTR pName,LONG *plValue) {
    return This->lpVtbl->GetPropertyNum(This,pName,plValue);
}
static FORCEINLINE HRESULT ISpProperties_SetPropertyString(ISpProperties* This,LPCWSTR pName,LPCWSTR pValue) {
    return This->lpVtbl->SetPropertyString(This,pName,pValue);
}
static FORCEINLINE HRESULT ISpProperties_GetPropertyString(ISpProperties* This,LPCWSTR pName,LPWSTR *ppCoMemValue) {
    return This->lpVtbl->GetPropertyString(This,pName,ppCoMemValue);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpProperties_SetPropertyNum_Proxy(
    ISpProperties* This,
    LPCWSTR pName,
    LONG lValue);
void __RPC_STUB ISpProperties_SetPropertyNum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpProperties_GetPropertyNum_Proxy(
    ISpProperties* This,
    LPCWSTR pName,
    LONG *plValue);
void __RPC_STUB ISpProperties_GetPropertyNum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpProperties_SetPropertyString_Proxy(
    ISpProperties* This,
    LPCWSTR pName,
    LPCWSTR pValue);
void __RPC_STUB ISpProperties_SetPropertyString_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpProperties_GetPropertyString_Proxy(
    ISpProperties* This,
    LPCWSTR pName,
    LPWSTR *ppCoMemValue);
void __RPC_STUB ISpProperties_GetPropertyString_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpProperties_INTERFACE_DEFINED__ */

#define SP_MAX_LANGIDS (20)

typedef struct SPRECOGNIZERSTATUS {
    SPAUDIOSTATUS AudioStatus;
    ULONGLONG ullRecognitionStreamPos;
    ULONG ulStreamNumber;
    ULONG ulNumActive;
    CLSID clsidEngine;
    ULONG cLangIDs;
    WORD aLangID[20];
    ULONGLONG ullRecognitionStreamTime;
} SPRECOGNIZERSTATUS;
typedef enum SPWAVEFORMATTYPE {
    SPWF_INPUT = 0,
    SPWF_SRENGINE = 1
} SPSTREAMFORMATTYPE;
typedef enum SPRECOSTATE {
    SPRST_INACTIVE = 0,
    SPRST_ACTIVE = 1,
    SPRST_ACTIVE_ALWAYS = 2,
    SPRST_INACTIVE_WITH_PURGE = 3,
    SPRST_NUM_STATES = 4
} SPRECOSTATE;
/*****************************************************************************
 * ISpRecognizer interface
 */
#ifndef __ISpRecognizer_INTERFACE_DEFINED__
#define __ISpRecognizer_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpRecognizer, 0xc2b5f241, 0xdaa0, 0x4507, 0x9e,0x16, 0x5a,0x1e,0xaa,0x2b,0x7a,0x5c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c2b5f241-daa0-4507-9e16-5a1eaa2b7a5c")
ISpRecognizer : public ISpProperties
{
    virtual HRESULT STDMETHODCALLTYPE SetRecognizer(
        ISpObjectToken *pRecognizer) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRecognizer(
        ISpObjectToken **ppRecognizer) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInput(
        IUnknown *pUnkInput,
        WINBOOL fAllowFormatChanges) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInputObjectToken(
        ISpObjectToken **ppToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInputStream(
        ISpStreamFormat **ppStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateRecoContext(
        ISpRecoContext **ppNewCtxt) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRecoProfile(
        ISpObjectToken **ppToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRecoProfile(
        ISpObjectToken *pToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsSharedInstance(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRecoState(
        SPRECOSTATE *pState) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRecoState(
        SPRECOSTATE NewState) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStatus(
        SPRECOGNIZERSTATUS *pStatus) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFormat(
        SPSTREAMFORMATTYPE WaveFormatType,
        GUID *pFormatId,
        WAVEFORMATEX **ppCoMemWFEX) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsUISupported(
        LPCWSTR pszTypeOfUI,
        void *pvExtraData,
        ULONG cbExtraData,
        WINBOOL *pfSupported) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisplayUI(
        HWND hwndParent,
        LPCWSTR pszTitle,
        LPCWSTR pszTypeOfUI,
        void *pvExtraData,
        ULONG cbExtraData) = 0;

    virtual HRESULT STDMETHODCALLTYPE EmulateRecognition(
        ISpPhrase *pPhrase) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpRecognizer, 0xc2b5f241, 0xdaa0, 0x4507, 0x9e,0x16, 0x5a,0x1e,0xaa,0x2b,0x7a,0x5c)
#endif
#else
typedef struct ISpRecognizerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpRecognizer* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpRecognizer* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpRecognizer* This);

    /*** ISpProperties methods ***/
    HRESULT (STDMETHODCALLTYPE *SetPropertyNum)(
        ISpRecognizer* This,
        LPCWSTR pName,
        LONG lValue);

    HRESULT (STDMETHODCALLTYPE *GetPropertyNum)(
        ISpRecognizer* This,
        LPCWSTR pName,
        LONG *plValue);

    HRESULT (STDMETHODCALLTYPE *SetPropertyString)(
        ISpRecognizer* This,
        LPCWSTR pName,
        LPCWSTR pValue);

    HRESULT (STDMETHODCALLTYPE *GetPropertyString)(
        ISpRecognizer* This,
        LPCWSTR pName,
        LPWSTR *ppCoMemValue);

    /*** ISpRecognizer methods ***/
    HRESULT (STDMETHODCALLTYPE *SetRecognizer)(
        ISpRecognizer* This,
        ISpObjectToken *pRecognizer);

    HRESULT (STDMETHODCALLTYPE *GetRecognizer)(
        ISpRecognizer* This,
        ISpObjectToken **ppRecognizer);

    HRESULT (STDMETHODCALLTYPE *SetInput)(
        ISpRecognizer* This,
        IUnknown *pUnkInput,
        WINBOOL fAllowFormatChanges);

    HRESULT (STDMETHODCALLTYPE *GetInputObjectToken)(
        ISpRecognizer* This,
        ISpObjectToken **ppToken);

    HRESULT (STDMETHODCALLTYPE *GetInputStream)(
        ISpRecognizer* This,
        ISpStreamFormat **ppStream);

    HRESULT (STDMETHODCALLTYPE *CreateRecoContext)(
        ISpRecognizer* This,
        ISpRecoContext **ppNewCtxt);

    HRESULT (STDMETHODCALLTYPE *GetRecoProfile)(
        ISpRecognizer* This,
        ISpObjectToken **ppToken);

    HRESULT (STDMETHODCALLTYPE *SetRecoProfile)(
        ISpRecognizer* This,
        ISpObjectToken *pToken);

    HRESULT (STDMETHODCALLTYPE *IsSharedInstance)(
        ISpRecognizer* This);

    HRESULT (STDMETHODCALLTYPE *GetRecoState)(
        ISpRecognizer* This,
        SPRECOSTATE *pState);

    HRESULT (STDMETHODCALLTYPE *SetRecoState)(
        ISpRecognizer* This,
        SPRECOSTATE NewState);

    HRESULT (STDMETHODCALLTYPE *GetStatus)(
        ISpRecognizer* This,
        SPRECOGNIZERSTATUS *pStatus);

    HRESULT (STDMETHODCALLTYPE *GetFormat)(
        ISpRecognizer* This,
        SPSTREAMFORMATTYPE WaveFormatType,
        GUID *pFormatId,
        WAVEFORMATEX **ppCoMemWFEX);

    HRESULT (STDMETHODCALLTYPE *IsUISupported)(
        ISpRecognizer* This,
        LPCWSTR pszTypeOfUI,
        void *pvExtraData,
        ULONG cbExtraData,
        WINBOOL *pfSupported);

    HRESULT (STDMETHODCALLTYPE *DisplayUI)(
        ISpRecognizer* This,
        HWND hwndParent,
        LPCWSTR pszTitle,
        LPCWSTR pszTypeOfUI,
        void *pvExtraData,
        ULONG cbExtraData);

    HRESULT (STDMETHODCALLTYPE *EmulateRecognition)(
        ISpRecognizer* This,
        ISpPhrase *pPhrase);

    END_INTERFACE
} ISpRecognizerVtbl;
interface ISpRecognizer {
    CONST_VTBL ISpRecognizerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpRecognizer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpRecognizer_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpRecognizer_Release(This) (This)->lpVtbl->Release(This)
/*** ISpProperties methods ***/
#define ISpRecognizer_SetPropertyNum(This,pName,lValue) (This)->lpVtbl->SetPropertyNum(This,pName,lValue)
#define ISpRecognizer_GetPropertyNum(This,pName,plValue) (This)->lpVtbl->GetPropertyNum(This,pName,plValue)
#define ISpRecognizer_SetPropertyString(This,pName,pValue) (This)->lpVtbl->SetPropertyString(This,pName,pValue)
#define ISpRecognizer_GetPropertyString(This,pName,ppCoMemValue) (This)->lpVtbl->GetPropertyString(This,pName,ppCoMemValue)
/*** ISpRecognizer methods ***/
#define ISpRecognizer_SetRecognizer(This,pRecognizer) (This)->lpVtbl->SetRecognizer(This,pRecognizer)
#define ISpRecognizer_GetRecognizer(This,ppRecognizer) (This)->lpVtbl->GetRecognizer(This,ppRecognizer)
#define ISpRecognizer_SetInput(This,pUnkInput,fAllowFormatChanges) (This)->lpVtbl->SetInput(This,pUnkInput,fAllowFormatChanges)
#define ISpRecognizer_GetInputObjectToken(This,ppToken) (This)->lpVtbl->GetInputObjectToken(This,ppToken)
#define ISpRecognizer_GetInputStream(This,ppStream) (This)->lpVtbl->GetInputStream(This,ppStream)
#define ISpRecognizer_CreateRecoContext(This,ppNewCtxt) (This)->lpVtbl->CreateRecoContext(This,ppNewCtxt)
#define ISpRecognizer_GetRecoProfile(This,ppToken) (This)->lpVtbl->GetRecoProfile(This,ppToken)
#define ISpRecognizer_SetRecoProfile(This,pToken) (This)->lpVtbl->SetRecoProfile(This,pToken)
#define ISpRecognizer_IsSharedInstance(This) (This)->lpVtbl->IsSharedInstance(This)
#define ISpRecognizer_GetRecoState(This,pState) (This)->lpVtbl->GetRecoState(This,pState)
#define ISpRecognizer_SetRecoState(This,NewState) (This)->lpVtbl->SetRecoState(This,NewState)
#define ISpRecognizer_GetStatus(This,pStatus) (This)->lpVtbl->GetStatus(This,pStatus)
#define ISpRecognizer_GetFormat(This,WaveFormatType,pFormatId,ppCoMemWFEX) (This)->lpVtbl->GetFormat(This,WaveFormatType,pFormatId,ppCoMemWFEX)
#define ISpRecognizer_IsUISupported(This,pszTypeOfUI,pvExtraData,cbExtraData,pfSupported) (This)->lpVtbl->IsUISupported(This,pszTypeOfUI,pvExtraData,cbExtraData,pfSupported)
#define ISpRecognizer_DisplayUI(This,hwndParent,pszTitle,pszTypeOfUI,pvExtraData,cbExtraData) (This)->lpVtbl->DisplayUI(This,hwndParent,pszTitle,pszTypeOfUI,pvExtraData,cbExtraData)
#define ISpRecognizer_EmulateRecognition(This,pPhrase) (This)->lpVtbl->EmulateRecognition(This,pPhrase)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpRecognizer_QueryInterface(ISpRecognizer* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpRecognizer_AddRef(ISpRecognizer* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpRecognizer_Release(ISpRecognizer* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpProperties methods ***/
static FORCEINLINE HRESULT ISpRecognizer_SetPropertyNum(ISpRecognizer* This,LPCWSTR pName,LONG lValue) {
    return This->lpVtbl->SetPropertyNum(This,pName,lValue);
}
static FORCEINLINE HRESULT ISpRecognizer_GetPropertyNum(ISpRecognizer* This,LPCWSTR pName,LONG *plValue) {
    return This->lpVtbl->GetPropertyNum(This,pName,plValue);
}
static FORCEINLINE HRESULT ISpRecognizer_SetPropertyString(ISpRecognizer* This,LPCWSTR pName,LPCWSTR pValue) {
    return This->lpVtbl->SetPropertyString(This,pName,pValue);
}
static FORCEINLINE HRESULT ISpRecognizer_GetPropertyString(ISpRecognizer* This,LPCWSTR pName,LPWSTR *ppCoMemValue) {
    return This->lpVtbl->GetPropertyString(This,pName,ppCoMemValue);
}
/*** ISpRecognizer methods ***/
static FORCEINLINE HRESULT ISpRecognizer_SetRecognizer(ISpRecognizer* This,ISpObjectToken *pRecognizer) {
    return This->lpVtbl->SetRecognizer(This,pRecognizer);
}
static FORCEINLINE HRESULT ISpRecognizer_GetRecognizer(ISpRecognizer* This,ISpObjectToken **ppRecognizer) {
    return This->lpVtbl->GetRecognizer(This,ppRecognizer);
}
static FORCEINLINE HRESULT ISpRecognizer_SetInput(ISpRecognizer* This,IUnknown *pUnkInput,WINBOOL fAllowFormatChanges) {
    return This->lpVtbl->SetInput(This,pUnkInput,fAllowFormatChanges);
}
static FORCEINLINE HRESULT ISpRecognizer_GetInputObjectToken(ISpRecognizer* This,ISpObjectToken **ppToken) {
    return This->lpVtbl->GetInputObjectToken(This,ppToken);
}
static FORCEINLINE HRESULT ISpRecognizer_GetInputStream(ISpRecognizer* This,ISpStreamFormat **ppStream) {
    return This->lpVtbl->GetInputStream(This,ppStream);
}
static FORCEINLINE HRESULT ISpRecognizer_CreateRecoContext(ISpRecognizer* This,ISpRecoContext **ppNewCtxt) {
    return This->lpVtbl->CreateRecoContext(This,ppNewCtxt);
}
static FORCEINLINE HRESULT ISpRecognizer_GetRecoProfile(ISpRecognizer* This,ISpObjectToken **ppToken) {
    return This->lpVtbl->GetRecoProfile(This,ppToken);
}
static FORCEINLINE HRESULT ISpRecognizer_SetRecoProfile(ISpRecognizer* This,ISpObjectToken *pToken) {
    return This->lpVtbl->SetRecoProfile(This,pToken);
}
static FORCEINLINE HRESULT ISpRecognizer_IsSharedInstance(ISpRecognizer* This) {
    return This->lpVtbl->IsSharedInstance(This);
}
static FORCEINLINE HRESULT ISpRecognizer_GetRecoState(ISpRecognizer* This,SPRECOSTATE *pState) {
    return This->lpVtbl->GetRecoState(This,pState);
}
static FORCEINLINE HRESULT ISpRecognizer_SetRecoState(ISpRecognizer* This,SPRECOSTATE NewState) {
    return This->lpVtbl->SetRecoState(This,NewState);
}
static FORCEINLINE HRESULT ISpRecognizer_GetStatus(ISpRecognizer* This,SPRECOGNIZERSTATUS *pStatus) {
    return This->lpVtbl->GetStatus(This,pStatus);
}
static FORCEINLINE HRESULT ISpRecognizer_GetFormat(ISpRecognizer* This,SPSTREAMFORMATTYPE WaveFormatType,GUID *pFormatId,WAVEFORMATEX **ppCoMemWFEX) {
    return This->lpVtbl->GetFormat(This,WaveFormatType,pFormatId,ppCoMemWFEX);
}
static FORCEINLINE HRESULT ISpRecognizer_IsUISupported(ISpRecognizer* This,LPCWSTR pszTypeOfUI,void *pvExtraData,ULONG cbExtraData,WINBOOL *pfSupported) {
    return This->lpVtbl->IsUISupported(This,pszTypeOfUI,pvExtraData,cbExtraData,pfSupported);
}
static FORCEINLINE HRESULT ISpRecognizer_DisplayUI(ISpRecognizer* This,HWND hwndParent,LPCWSTR pszTitle,LPCWSTR pszTypeOfUI,void *pvExtraData,ULONG cbExtraData) {
    return This->lpVtbl->DisplayUI(This,hwndParent,pszTitle,pszTypeOfUI,pvExtraData,cbExtraData);
}
static FORCEINLINE HRESULT ISpRecognizer_EmulateRecognition(ISpRecognizer* This,ISpPhrase *pPhrase) {
    return This->lpVtbl->EmulateRecognition(This,pPhrase);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpRecognizer_SetRecognizer_Proxy(
    ISpRecognizer* This,
    ISpObjectToken *pRecognizer);
void __RPC_STUB ISpRecognizer_SetRecognizer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecognizer_GetRecognizer_Proxy(
    ISpRecognizer* This,
    ISpObjectToken **ppRecognizer);
void __RPC_STUB ISpRecognizer_GetRecognizer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecognizer_SetInput_Proxy(
    ISpRecognizer* This,
    IUnknown *pUnkInput,
    WINBOOL fAllowFormatChanges);
void __RPC_STUB ISpRecognizer_SetInput_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecognizer_GetInputObjectToken_Proxy(
    ISpRecognizer* This,
    ISpObjectToken **ppToken);
void __RPC_STUB ISpRecognizer_GetInputObjectToken_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecognizer_GetInputStream_Proxy(
    ISpRecognizer* This,
    ISpStreamFormat **ppStream);
void __RPC_STUB ISpRecognizer_GetInputStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecognizer_CreateRecoContext_Proxy(
    ISpRecognizer* This,
    ISpRecoContext **ppNewCtxt);
void __RPC_STUB ISpRecognizer_CreateRecoContext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecognizer_GetRecoProfile_Proxy(
    ISpRecognizer* This,
    ISpObjectToken **ppToken);
void __RPC_STUB ISpRecognizer_GetRecoProfile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecognizer_SetRecoProfile_Proxy(
    ISpRecognizer* This,
    ISpObjectToken *pToken);
void __RPC_STUB ISpRecognizer_SetRecoProfile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecognizer_IsSharedInstance_Proxy(
    ISpRecognizer* This);
void __RPC_STUB ISpRecognizer_IsSharedInstance_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecognizer_GetRecoState_Proxy(
    ISpRecognizer* This,
    SPRECOSTATE *pState);
void __RPC_STUB ISpRecognizer_GetRecoState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecognizer_SetRecoState_Proxy(
    ISpRecognizer* This,
    SPRECOSTATE NewState);
void __RPC_STUB ISpRecognizer_SetRecoState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecognizer_GetStatus_Proxy(
    ISpRecognizer* This,
    SPRECOGNIZERSTATUS *pStatus);
void __RPC_STUB ISpRecognizer_GetStatus_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecognizer_GetFormat_Proxy(
    ISpRecognizer* This,
    SPSTREAMFORMATTYPE WaveFormatType,
    GUID *pFormatId,
    WAVEFORMATEX **ppCoMemWFEX);
void __RPC_STUB ISpRecognizer_GetFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpRecognizer_EmulateRecognition_Proxy(
    ISpRecognizer* This,
    ISpPhrase *pPhrase);
void __RPC_STUB ISpRecognizer_EmulateRecognition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpRecognizer_INTERFACE_DEFINED__ */


DEFINE_GUID(LIBID_SpeechLib, 0xc866ca3a, 0x32f7, 0x11d2, 0x96,0x02, 0x00,0xc0,0x4f,0x8e,0xe6,0x28);

#ifndef __ISpeechDataKey_FWD_DEFINED__
#define __ISpeechDataKey_FWD_DEFINED__
typedef interface ISpeechDataKey ISpeechDataKey;
#endif

#ifndef __ISpeechObjectToken_FWD_DEFINED__
#define __ISpeechObjectToken_FWD_DEFINED__
typedef interface ISpeechObjectToken ISpeechObjectToken;
#endif

#ifndef __ISpeechObjectTokens_FWD_DEFINED__
#define __ISpeechObjectTokens_FWD_DEFINED__
typedef interface ISpeechObjectTokens ISpeechObjectTokens;
#endif

#ifndef __ISpeechObjectTokenCategory_FWD_DEFINED__
#define __ISpeechObjectTokenCategory_FWD_DEFINED__
typedef interface ISpeechObjectTokenCategory ISpeechObjectTokenCategory;
#endif

#ifndef __ISpeechAudioBufferInfo_FWD_DEFINED__
#define __ISpeechAudioBufferInfo_FWD_DEFINED__
typedef interface ISpeechAudioBufferInfo ISpeechAudioBufferInfo;
#endif

#ifndef __ISpeechAudioStatus_FWD_DEFINED__
#define __ISpeechAudioStatus_FWD_DEFINED__
typedef interface ISpeechAudioStatus ISpeechAudioStatus;
#endif

#ifndef __ISpeechAudioFormat_FWD_DEFINED__
#define __ISpeechAudioFormat_FWD_DEFINED__
typedef interface ISpeechAudioFormat ISpeechAudioFormat;
#endif

#ifndef __ISpeechWaveFormatEx_FWD_DEFINED__
#define __ISpeechWaveFormatEx_FWD_DEFINED__
typedef interface ISpeechWaveFormatEx ISpeechWaveFormatEx;
#endif

#ifndef __ISpeechBaseStream_FWD_DEFINED__
#define __ISpeechBaseStream_FWD_DEFINED__
typedef interface ISpeechBaseStream ISpeechBaseStream;
#endif

#ifndef __ISpeechFileStream_FWD_DEFINED__
#define __ISpeechFileStream_FWD_DEFINED__
typedef interface ISpeechFileStream ISpeechFileStream;
#endif

#ifndef __ISpeechMemoryStream_FWD_DEFINED__
#define __ISpeechMemoryStream_FWD_DEFINED__
typedef interface ISpeechMemoryStream ISpeechMemoryStream;
#endif

#ifndef __ISpeechCustomStream_FWD_DEFINED__
#define __ISpeechCustomStream_FWD_DEFINED__
typedef interface ISpeechCustomStream ISpeechCustomStream;
#endif

#ifndef __ISpeechAudio_FWD_DEFINED__
#define __ISpeechAudio_FWD_DEFINED__
typedef interface ISpeechAudio ISpeechAudio;
#endif

#ifndef __ISpeechMMSysAudio_FWD_DEFINED__
#define __ISpeechMMSysAudio_FWD_DEFINED__
typedef interface ISpeechMMSysAudio ISpeechMMSysAudio;
#endif

#ifndef __ISpeechVoice_FWD_DEFINED__
#define __ISpeechVoice_FWD_DEFINED__
typedef interface ISpeechVoice ISpeechVoice;
#endif

#ifndef __ISpeechVoiceStatus_FWD_DEFINED__
#define __ISpeechVoiceStatus_FWD_DEFINED__
typedef interface ISpeechVoiceStatus ISpeechVoiceStatus;
#endif

#ifndef ___ISpeechVoiceEvents_FWD_DEFINED__
#define ___ISpeechVoiceEvents_FWD_DEFINED__
typedef interface _ISpeechVoiceEvents _ISpeechVoiceEvents;
#endif

#ifndef __ISpeechRecognizer_FWD_DEFINED__
#define __ISpeechRecognizer_FWD_DEFINED__
typedef interface ISpeechRecognizer ISpeechRecognizer;
#endif

#ifndef __ISpeechRecognizerStatus_FWD_DEFINED__
#define __ISpeechRecognizerStatus_FWD_DEFINED__
typedef interface ISpeechRecognizerStatus ISpeechRecognizerStatus;
#endif

#ifndef __ISpeechRecoContext_FWD_DEFINED__
#define __ISpeechRecoContext_FWD_DEFINED__
typedef interface ISpeechRecoContext ISpeechRecoContext;
#endif

#ifndef __ISpeechRecoGrammar_FWD_DEFINED__
#define __ISpeechRecoGrammar_FWD_DEFINED__
typedef interface ISpeechRecoGrammar ISpeechRecoGrammar;
#endif

#ifndef ___ISpeechRecoContextEvents_FWD_DEFINED__
#define ___ISpeechRecoContextEvents_FWD_DEFINED__
typedef interface _ISpeechRecoContextEvents _ISpeechRecoContextEvents;
#endif

#ifndef __ISpeechGrammarRule_FWD_DEFINED__
#define __ISpeechGrammarRule_FWD_DEFINED__
typedef interface ISpeechGrammarRule ISpeechGrammarRule;
#endif

#ifndef __ISpeechGrammarRules_FWD_DEFINED__
#define __ISpeechGrammarRules_FWD_DEFINED__
typedef interface ISpeechGrammarRules ISpeechGrammarRules;
#endif

#ifndef __ISpeechGrammarRuleState_FWD_DEFINED__
#define __ISpeechGrammarRuleState_FWD_DEFINED__
typedef interface ISpeechGrammarRuleState ISpeechGrammarRuleState;
#endif

#ifndef __ISpeechGrammarRuleStateTransition_FWD_DEFINED__
#define __ISpeechGrammarRuleStateTransition_FWD_DEFINED__
typedef interface ISpeechGrammarRuleStateTransition ISpeechGrammarRuleStateTransition;
#endif

#ifndef __ISpeechGrammarRuleStateTransitions_FWD_DEFINED__
#define __ISpeechGrammarRuleStateTransitions_FWD_DEFINED__
typedef interface ISpeechGrammarRuleStateTransitions ISpeechGrammarRuleStateTransitions;
#endif

#ifndef __ISpeechTextSelectionInformation_FWD_DEFINED__
#define __ISpeechTextSelectionInformation_FWD_DEFINED__
typedef interface ISpeechTextSelectionInformation ISpeechTextSelectionInformation;
#endif

#ifndef __ISpeechRecoResult_FWD_DEFINED__
#define __ISpeechRecoResult_FWD_DEFINED__
typedef interface ISpeechRecoResult ISpeechRecoResult;
#endif

#ifndef __ISpeechRecoResultTimes_FWD_DEFINED__
#define __ISpeechRecoResultTimes_FWD_DEFINED__
typedef interface ISpeechRecoResultTimes ISpeechRecoResultTimes;
#endif

#ifndef __ISpeechPhraseAlternate_FWD_DEFINED__
#define __ISpeechPhraseAlternate_FWD_DEFINED__
typedef interface ISpeechPhraseAlternate ISpeechPhraseAlternate;
#endif

#ifndef __ISpeechPhraseAlternates_FWD_DEFINED__
#define __ISpeechPhraseAlternates_FWD_DEFINED__
typedef interface ISpeechPhraseAlternates ISpeechPhraseAlternates;
#endif

#ifndef __ISpeechPhraseInfo_FWD_DEFINED__
#define __ISpeechPhraseInfo_FWD_DEFINED__
typedef interface ISpeechPhraseInfo ISpeechPhraseInfo;
#endif

#ifndef __ISpeechPhraseElement_FWD_DEFINED__
#define __ISpeechPhraseElement_FWD_DEFINED__
typedef interface ISpeechPhraseElement ISpeechPhraseElement;
#endif

#ifndef __ISpeechPhraseElements_FWD_DEFINED__
#define __ISpeechPhraseElements_FWD_DEFINED__
typedef interface ISpeechPhraseElements ISpeechPhraseElements;
#endif

#ifndef __ISpeechPhraseReplacement_FWD_DEFINED__
#define __ISpeechPhraseReplacement_FWD_DEFINED__
typedef interface ISpeechPhraseReplacement ISpeechPhraseReplacement;
#endif

#ifndef __ISpeechPhraseReplacements_FWD_DEFINED__
#define __ISpeechPhraseReplacements_FWD_DEFINED__
typedef interface ISpeechPhraseReplacements ISpeechPhraseReplacements;
#endif

#ifndef __ISpeechPhraseProperty_FWD_DEFINED__
#define __ISpeechPhraseProperty_FWD_DEFINED__
typedef interface ISpeechPhraseProperty ISpeechPhraseProperty;
#endif

#ifndef __ISpeechPhraseProperties_FWD_DEFINED__
#define __ISpeechPhraseProperties_FWD_DEFINED__
typedef interface ISpeechPhraseProperties ISpeechPhraseProperties;
#endif

#ifndef __ISpeechPhraseRule_FWD_DEFINED__
#define __ISpeechPhraseRule_FWD_DEFINED__
typedef interface ISpeechPhraseRule ISpeechPhraseRule;
#endif

#ifndef __ISpeechPhraseRules_FWD_DEFINED__
#define __ISpeechPhraseRules_FWD_DEFINED__
typedef interface ISpeechPhraseRules ISpeechPhraseRules;
#endif

#ifndef __ISpeechLexicon_FWD_DEFINED__
#define __ISpeechLexicon_FWD_DEFINED__
typedef interface ISpeechLexicon ISpeechLexicon;
#endif

#ifndef __ISpeechLexiconWords_FWD_DEFINED__
#define __ISpeechLexiconWords_FWD_DEFINED__
typedef interface ISpeechLexiconWords ISpeechLexiconWords;
#endif

#ifndef __ISpeechLexiconWord_FWD_DEFINED__
#define __ISpeechLexiconWord_FWD_DEFINED__
typedef interface ISpeechLexiconWord ISpeechLexiconWord;
#endif

#ifndef __ISpeechLexiconPronunciations_FWD_DEFINED__
#define __ISpeechLexiconPronunciations_FWD_DEFINED__
typedef interface ISpeechLexiconPronunciations ISpeechLexiconPronunciations;
#endif

#ifndef __ISpeechLexiconPronunciation_FWD_DEFINED__
#define __ISpeechLexiconPronunciation_FWD_DEFINED__
typedef interface ISpeechLexiconPronunciation ISpeechLexiconPronunciation;
#endif

typedef LONG SpeechLanguageId;
#define __SpeechStringConstants_MODULE_DEFINED__
typedef enum DISPID_SpeechDataKey {
    DISPID_SDKSetBinaryValue = 1,
    DISPID_SDKGetBinaryValue = 2,
    DISPID_SDKSetStringValue = 3,
    DISPID_SDKGetStringValue = 4,
    DISPID_SDKSetLongValue = 5,
    DISPID_SDKGetlongValue = 6,
    DISPID_SDKOpenKey = 7,
    DISPID_SDKCreateKey = 8,
    DISPID_SDKDeleteKey = 9,
    DISPID_SDKDeleteValue = 10,
    DISPID_SDKEnumKeys = 11,
    DISPID_SDKEnumValues = 12
} DISPID_SpeechDataKey;
typedef enum DISPID_SpeechObjectToken {
    DISPID_SOTId = 1,
    DISPID_SOTDataKey = 2,
    DISPID_SOTCategory = 3,
    DISPID_SOTGetDescription = 4,
    DISPID_SOTSetId = 5,
    DISPID_SOTGetAttribute = 6,
    DISPID_SOTCreateInstance = 7,
    DISPID_SOTRemove = 8,
    DISPID_SOTGetStorageFileName = 9,
    DISPID_SOTRemoveStorageFileName = 10,
    DISPID_SOTIsUISupported = 11,
    DISPID_SOTDisplayUI = 12,
    DISPID_SOTMatchesAttributes = 13
} DISPID_SpeechObjectToken;
typedef enum SpeechDataKeyLocation {
    SDKLDefaultLocation = SPDKL_DefaultLocation,
    SDKLCurrentUser = SPDKL_CurrentUser,
    SDKLLocalMachine = SPDKL_LocalMachine,
    SDKLCurrentConfig = SPDKL_CurrentConfig
} SpeechDataKeyLocation;
typedef enum SpeechTokenContext {
    STCInprocServer = CLSCTX_INPROC_SERVER,
    STCInprocHandler = CLSCTX_INPROC_HANDLER,
    STCLocalServer = CLSCTX_LOCAL_SERVER,
    STCRemoteServer = CLSCTX_REMOTE_SERVER,
    STCAll = ((CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER) | CLSCTX_LOCAL_SERVER) | CLSCTX_REMOTE_SERVER
} SpeechTokenContext;
typedef enum SpeechTokenShellFolder {
    STSF_AppData = 0x1a,
    STSF_LocalAppData = 0x1c,
    STSF_CommonAppData = 0x23,
    STSF_FlagCreate = 0x8000
} SpeechTokenShellFolder;
typedef enum DISPID_SpeechObjectTokens {
    DISPID_SOTsCount = 1,
    DISPID_SOTsItem = DISPID_VALUE,
    DISPID_SOTs_NewEnum = DISPID_NEWENUM
} DISPID_SpeechObjectTokens;
typedef enum DISPID_SpeechObjectTokenCategory {
    DISPID_SOTCId = 1,
    DISPID_SOTCDefault = 2,
    DISPID_SOTCSetId = 3,
    DISPID_SOTCGetDataKey = 4,
    DISPID_SOTCEnumerateTokens = 5
} DISPID_SpeechObjectTokenCategory;
/*****************************************************************************
 * ISpeechDataKey interface
 */
#ifndef __ISpeechDataKey_INTERFACE_DEFINED__
#define __ISpeechDataKey_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechDataKey, 0xce17c09b, 0x4efa, 0x44d5, 0xa4,0xc9, 0x59,0xd9,0x58,0x5a,0xb0,0xcd);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ce17c09b-4efa-44d5-a4c9-59d9585ab0cd")
ISpeechDataKey : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE SetBinaryValue(
        const BSTR ValueName,
        VARIANT Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBinaryValue(
        const BSTR ValueName,
        VARIANT *Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetStringValue(
        const BSTR ValueName,
        const BSTR Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStringValue(
        const BSTR ValueName,
        BSTR *Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetLongValue(
        const BSTR ValueName,
        LONG Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetLongValue(
        const BSTR ValueName,
        LONG *Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE OpenKey(
        const BSTR SubKeyName,
        ISpeechDataKey **SubKey) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateKey(
        const BSTR SubKeyName,
        ISpeechDataKey **SubKey) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteKey(
        const BSTR SubKeyName) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteValue(
        const BSTR ValueName) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumKeys(
        LONG Index,
        BSTR *SubKeyName) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumValues(
        LONG Index,
        BSTR *ValueName) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechDataKey, 0xce17c09b, 0x4efa, 0x44d5, 0xa4,0xc9, 0x59,0xd9,0x58,0x5a,0xb0,0xcd)
#endif
#else
typedef struct ISpeechDataKeyVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechDataKey* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechDataKey* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechDataKey* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechDataKey* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechDataKey* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechDataKey* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechDataKey* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechDataKey methods ***/
    HRESULT (STDMETHODCALLTYPE *SetBinaryValue)(
        ISpeechDataKey* This,
        const BSTR ValueName,
        VARIANT Value);

    HRESULT (STDMETHODCALLTYPE *GetBinaryValue)(
        ISpeechDataKey* This,
        const BSTR ValueName,
        VARIANT *Value);

    HRESULT (STDMETHODCALLTYPE *SetStringValue)(
        ISpeechDataKey* This,
        const BSTR ValueName,
        const BSTR Value);

    HRESULT (STDMETHODCALLTYPE *GetStringValue)(
        ISpeechDataKey* This,
        const BSTR ValueName,
        BSTR *Value);

    HRESULT (STDMETHODCALLTYPE *SetLongValue)(
        ISpeechDataKey* This,
        const BSTR ValueName,
        LONG Value);

    HRESULT (STDMETHODCALLTYPE *GetLongValue)(
        ISpeechDataKey* This,
        const BSTR ValueName,
        LONG *Value);

    HRESULT (STDMETHODCALLTYPE *OpenKey)(
        ISpeechDataKey* This,
        const BSTR SubKeyName,
        ISpeechDataKey **SubKey);

    HRESULT (STDMETHODCALLTYPE *CreateKey)(
        ISpeechDataKey* This,
        const BSTR SubKeyName,
        ISpeechDataKey **SubKey);

    HRESULT (STDMETHODCALLTYPE *DeleteKey)(
        ISpeechDataKey* This,
        const BSTR SubKeyName);

    HRESULT (STDMETHODCALLTYPE *DeleteValue)(
        ISpeechDataKey* This,
        const BSTR ValueName);

    HRESULT (STDMETHODCALLTYPE *EnumKeys)(
        ISpeechDataKey* This,
        LONG Index,
        BSTR *SubKeyName);

    HRESULT (STDMETHODCALLTYPE *EnumValues)(
        ISpeechDataKey* This,
        LONG Index,
        BSTR *ValueName);

    END_INTERFACE
} ISpeechDataKeyVtbl;
interface ISpeechDataKey {
    CONST_VTBL ISpeechDataKeyVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechDataKey_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechDataKey_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechDataKey_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechDataKey_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechDataKey_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechDataKey_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechDataKey_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechDataKey methods ***/
#define ISpeechDataKey_SetBinaryValue(This,ValueName,Value) (This)->lpVtbl->SetBinaryValue(This,ValueName,Value)
#define ISpeechDataKey_GetBinaryValue(This,ValueName,Value) (This)->lpVtbl->GetBinaryValue(This,ValueName,Value)
#define ISpeechDataKey_SetStringValue(This,ValueName,Value) (This)->lpVtbl->SetStringValue(This,ValueName,Value)
#define ISpeechDataKey_GetStringValue(This,ValueName,Value) (This)->lpVtbl->GetStringValue(This,ValueName,Value)
#define ISpeechDataKey_SetLongValue(This,ValueName,Value) (This)->lpVtbl->SetLongValue(This,ValueName,Value)
#define ISpeechDataKey_GetLongValue(This,ValueName,Value) (This)->lpVtbl->GetLongValue(This,ValueName,Value)
#define ISpeechDataKey_OpenKey(This,SubKeyName,SubKey) (This)->lpVtbl->OpenKey(This,SubKeyName,SubKey)
#define ISpeechDataKey_CreateKey(This,SubKeyName,SubKey) (This)->lpVtbl->CreateKey(This,SubKeyName,SubKey)
#define ISpeechDataKey_DeleteKey(This,SubKeyName) (This)->lpVtbl->DeleteKey(This,SubKeyName)
#define ISpeechDataKey_DeleteValue(This,ValueName) (This)->lpVtbl->DeleteValue(This,ValueName)
#define ISpeechDataKey_EnumKeys(This,Index,SubKeyName) (This)->lpVtbl->EnumKeys(This,Index,SubKeyName)
#define ISpeechDataKey_EnumValues(This,Index,ValueName) (This)->lpVtbl->EnumValues(This,Index,ValueName)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechDataKey_QueryInterface(ISpeechDataKey* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechDataKey_AddRef(ISpeechDataKey* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechDataKey_Release(ISpeechDataKey* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechDataKey_GetTypeInfoCount(ISpeechDataKey* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechDataKey_GetTypeInfo(ISpeechDataKey* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechDataKey_GetIDsOfNames(ISpeechDataKey* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechDataKey_Invoke(ISpeechDataKey* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechDataKey methods ***/
static FORCEINLINE HRESULT ISpeechDataKey_SetBinaryValue(ISpeechDataKey* This,const BSTR ValueName,VARIANT Value) {
    return This->lpVtbl->SetBinaryValue(This,ValueName,Value);
}
static FORCEINLINE HRESULT ISpeechDataKey_GetBinaryValue(ISpeechDataKey* This,const BSTR ValueName,VARIANT *Value) {
    return This->lpVtbl->GetBinaryValue(This,ValueName,Value);
}
static FORCEINLINE HRESULT ISpeechDataKey_SetStringValue(ISpeechDataKey* This,const BSTR ValueName,const BSTR Value) {
    return This->lpVtbl->SetStringValue(This,ValueName,Value);
}
static FORCEINLINE HRESULT ISpeechDataKey_GetStringValue(ISpeechDataKey* This,const BSTR ValueName,BSTR *Value) {
    return This->lpVtbl->GetStringValue(This,ValueName,Value);
}
static FORCEINLINE HRESULT ISpeechDataKey_SetLongValue(ISpeechDataKey* This,const BSTR ValueName,LONG Value) {
    return This->lpVtbl->SetLongValue(This,ValueName,Value);
}
static FORCEINLINE HRESULT ISpeechDataKey_GetLongValue(ISpeechDataKey* This,const BSTR ValueName,LONG *Value) {
    return This->lpVtbl->GetLongValue(This,ValueName,Value);
}
static FORCEINLINE HRESULT ISpeechDataKey_OpenKey(ISpeechDataKey* This,const BSTR SubKeyName,ISpeechDataKey **SubKey) {
    return This->lpVtbl->OpenKey(This,SubKeyName,SubKey);
}
static FORCEINLINE HRESULT ISpeechDataKey_CreateKey(ISpeechDataKey* This,const BSTR SubKeyName,ISpeechDataKey **SubKey) {
    return This->lpVtbl->CreateKey(This,SubKeyName,SubKey);
}
static FORCEINLINE HRESULT ISpeechDataKey_DeleteKey(ISpeechDataKey* This,const BSTR SubKeyName) {
    return This->lpVtbl->DeleteKey(This,SubKeyName);
}
static FORCEINLINE HRESULT ISpeechDataKey_DeleteValue(ISpeechDataKey* This,const BSTR ValueName) {
    return This->lpVtbl->DeleteValue(This,ValueName);
}
static FORCEINLINE HRESULT ISpeechDataKey_EnumKeys(ISpeechDataKey* This,LONG Index,BSTR *SubKeyName) {
    return This->lpVtbl->EnumKeys(This,Index,SubKeyName);
}
static FORCEINLINE HRESULT ISpeechDataKey_EnumValues(ISpeechDataKey* This,LONG Index,BSTR *ValueName) {
    return This->lpVtbl->EnumValues(This,Index,ValueName);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechDataKey_SetBinaryValue_Proxy(
    ISpeechDataKey* This,
    const BSTR ValueName,
    VARIANT Value);
void __RPC_STUB ISpeechDataKey_SetBinaryValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechDataKey_GetBinaryValue_Proxy(
    ISpeechDataKey* This,
    const BSTR ValueName,
    VARIANT *Value);
void __RPC_STUB ISpeechDataKey_GetBinaryValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechDataKey_SetStringValue_Proxy(
    ISpeechDataKey* This,
    const BSTR ValueName,
    const BSTR Value);
void __RPC_STUB ISpeechDataKey_SetStringValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechDataKey_GetStringValue_Proxy(
    ISpeechDataKey* This,
    const BSTR ValueName,
    BSTR *Value);
void __RPC_STUB ISpeechDataKey_GetStringValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechDataKey_SetLongValue_Proxy(
    ISpeechDataKey* This,
    const BSTR ValueName,
    LONG Value);
void __RPC_STUB ISpeechDataKey_SetLongValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechDataKey_GetLongValue_Proxy(
    ISpeechDataKey* This,
    const BSTR ValueName,
    LONG *Value);
void __RPC_STUB ISpeechDataKey_GetLongValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechDataKey_OpenKey_Proxy(
    ISpeechDataKey* This,
    const BSTR SubKeyName,
    ISpeechDataKey **SubKey);
void __RPC_STUB ISpeechDataKey_OpenKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechDataKey_CreateKey_Proxy(
    ISpeechDataKey* This,
    const BSTR SubKeyName,
    ISpeechDataKey **SubKey);
void __RPC_STUB ISpeechDataKey_CreateKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechDataKey_DeleteKey_Proxy(
    ISpeechDataKey* This,
    const BSTR SubKeyName);
void __RPC_STUB ISpeechDataKey_DeleteKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechDataKey_DeleteValue_Proxy(
    ISpeechDataKey* This,
    const BSTR ValueName);
void __RPC_STUB ISpeechDataKey_DeleteValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechDataKey_EnumKeys_Proxy(
    ISpeechDataKey* This,
    LONG Index,
    BSTR *SubKeyName);
void __RPC_STUB ISpeechDataKey_EnumKeys_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechDataKey_EnumValues_Proxy(
    ISpeechDataKey* This,
    LONG Index,
    BSTR *ValueName);
void __RPC_STUB ISpeechDataKey_EnumValues_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechDataKey_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechObjectToken interface
 */
#ifndef __ISpeechObjectToken_INTERFACE_DEFINED__
#define __ISpeechObjectToken_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechObjectToken, 0xc74a3adc, 0xb727, 0x4500, 0xa8,0x4a, 0xb5,0x26,0x72,0x1c,0x8b,0x8c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c74a3adc-b727-4500-a84a-b526721c8b8c")
ISpeechObjectToken : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Id(
        BSTR *ObjectId) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DataKey(
        ISpeechDataKey **DataKey) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Category(
        ISpeechObjectTokenCategory **Category) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDescription(
        LONG Locale = 0,
        BSTR *Description) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetId(
        BSTR Id,
        BSTR CategoryID = "",
        VARIANT_BOOL CreateIfNotExist = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAttribute(
        BSTR AttributeName,
        BSTR *AttributeValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateInstance(
        IUnknown *pUnkOuter = 0,
        SpeechTokenContext ClsContext = STCAll,
        IUnknown **Object) = 0;

    virtual HRESULT STDMETHODCALLTYPE Remove(
        BSTR ObjectStorageCLSID) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStorageFileName(
        BSTR ObjectStorageCLSID,
        BSTR KeyName,
        BSTR FileName,
        SpeechTokenShellFolder Folder,
        BSTR *FilePath) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveStorageFileName(
        BSTR ObjectStorageCLSID,
        BSTR KeyName,
        VARIANT_BOOL DeleteFile) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsUISupported(
        const BSTR TypeOfUI,
        const VARIANT *ExtraData = 0,
        IUnknown *Object = 0,
        VARIANT_BOOL *Supported) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisplayUI(
        LONG hWnd,
        BSTR Title,
        const BSTR TypeOfUI,
        const VARIANT *ExtraData = 0,
        IUnknown *Object = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE MatchesAttributes(
        BSTR Attributes,
        VARIANT_BOOL *Matches) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechObjectToken, 0xc74a3adc, 0xb727, 0x4500, 0xa8,0x4a, 0xb5,0x26,0x72,0x1c,0x8b,0x8c)
#endif
#else
typedef struct ISpeechObjectTokenVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechObjectToken* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechObjectToken* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechObjectToken* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechObjectToken* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechObjectToken* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechObjectToken* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechObjectToken* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechObjectToken methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Id)(
        ISpeechObjectToken* This,
        BSTR *ObjectId);

    HRESULT (STDMETHODCALLTYPE *get_DataKey)(
        ISpeechObjectToken* This,
        ISpeechDataKey **DataKey);

    HRESULT (STDMETHODCALLTYPE *get_Category)(
        ISpeechObjectToken* This,
        ISpeechObjectTokenCategory **Category);

    HRESULT (STDMETHODCALLTYPE *GetDescription)(
        ISpeechObjectToken* This,
        LONG Locale,
        BSTR *Description);

    HRESULT (STDMETHODCALLTYPE *SetId)(
        ISpeechObjectToken* This,
        BSTR Id,
        BSTR CategoryID,
        VARIANT_BOOL CreateIfNotExist);

    HRESULT (STDMETHODCALLTYPE *GetAttribute)(
        ISpeechObjectToken* This,
        BSTR AttributeName,
        BSTR *AttributeValue);

    HRESULT (STDMETHODCALLTYPE *CreateInstance)(
        ISpeechObjectToken* This,
        IUnknown *pUnkOuter,
        SpeechTokenContext ClsContext,
        IUnknown **Object);

    HRESULT (STDMETHODCALLTYPE *Remove)(
        ISpeechObjectToken* This,
        BSTR ObjectStorageCLSID);

    HRESULT (STDMETHODCALLTYPE *GetStorageFileName)(
        ISpeechObjectToken* This,
        BSTR ObjectStorageCLSID,
        BSTR KeyName,
        BSTR FileName,
        SpeechTokenShellFolder Folder,
        BSTR *FilePath);

    HRESULT (STDMETHODCALLTYPE *RemoveStorageFileName)(
        ISpeechObjectToken* This,
        BSTR ObjectStorageCLSID,
        BSTR KeyName,
        VARIANT_BOOL DeleteFile);

    HRESULT (STDMETHODCALLTYPE *IsUISupported)(
        ISpeechObjectToken* This,
        const BSTR TypeOfUI,
        const VARIANT *ExtraData,
        IUnknown *Object,
        VARIANT_BOOL *Supported);

    HRESULT (STDMETHODCALLTYPE *DisplayUI)(
        ISpeechObjectToken* This,
        LONG hWnd,
        BSTR Title,
        const BSTR TypeOfUI,
        const VARIANT *ExtraData,
        IUnknown *Object);

    HRESULT (STDMETHODCALLTYPE *MatchesAttributes)(
        ISpeechObjectToken* This,
        BSTR Attributes,
        VARIANT_BOOL *Matches);

    END_INTERFACE
} ISpeechObjectTokenVtbl;
interface ISpeechObjectToken {
    CONST_VTBL ISpeechObjectTokenVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechObjectToken_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechObjectToken_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechObjectToken_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechObjectToken_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechObjectToken_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechObjectToken_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechObjectToken_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechObjectToken methods ***/
#define ISpeechObjectToken_get_Id(This,ObjectId) (This)->lpVtbl->get_Id(This,ObjectId)
#define ISpeechObjectToken_get_DataKey(This,DataKey) (This)->lpVtbl->get_DataKey(This,DataKey)
#define ISpeechObjectToken_get_Category(This,Category) (This)->lpVtbl->get_Category(This,Category)
#define ISpeechObjectToken_GetDescription(This,Locale,Description) (This)->lpVtbl->GetDescription(This,Locale,Description)
#define ISpeechObjectToken_SetId(This,Id,CategoryID,CreateIfNotExist) (This)->lpVtbl->SetId(This,Id,CategoryID,CreateIfNotExist)
#define ISpeechObjectToken_GetAttribute(This,AttributeName,AttributeValue) (This)->lpVtbl->GetAttribute(This,AttributeName,AttributeValue)
#define ISpeechObjectToken_CreateInstance(This,pUnkOuter,ClsContext,Object) (This)->lpVtbl->CreateInstance(This,pUnkOuter,ClsContext,Object)
#define ISpeechObjectToken_Remove(This,ObjectStorageCLSID) (This)->lpVtbl->Remove(This,ObjectStorageCLSID)
#define ISpeechObjectToken_GetStorageFileName(This,ObjectStorageCLSID,KeyName,FileName,Folder,FilePath) (This)->lpVtbl->GetStorageFileName(This,ObjectStorageCLSID,KeyName,FileName,Folder,FilePath)
#define ISpeechObjectToken_RemoveStorageFileName(This,ObjectStorageCLSID,KeyName,DeleteFile) (This)->lpVtbl->RemoveStorageFileName(This,ObjectStorageCLSID,KeyName,DeleteFile)
#define ISpeechObjectToken_IsUISupported(This,TypeOfUI,ExtraData,Object,Supported) (This)->lpVtbl->IsUISupported(This,TypeOfUI,ExtraData,Object,Supported)
#define ISpeechObjectToken_DisplayUI(This,hWnd,Title,TypeOfUI,ExtraData,Object) (This)->lpVtbl->DisplayUI(This,hWnd,Title,TypeOfUI,ExtraData,Object)
#define ISpeechObjectToken_MatchesAttributes(This,Attributes,Matches) (This)->lpVtbl->MatchesAttributes(This,Attributes,Matches)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechObjectToken_QueryInterface(ISpeechObjectToken* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechObjectToken_AddRef(ISpeechObjectToken* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechObjectToken_Release(ISpeechObjectToken* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechObjectToken_GetTypeInfoCount(ISpeechObjectToken* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechObjectToken_GetTypeInfo(ISpeechObjectToken* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechObjectToken_GetIDsOfNames(ISpeechObjectToken* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechObjectToken_Invoke(ISpeechObjectToken* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechObjectToken methods ***/
static FORCEINLINE HRESULT ISpeechObjectToken_get_Id(ISpeechObjectToken* This,BSTR *ObjectId) {
    return This->lpVtbl->get_Id(This,ObjectId);
}
static FORCEINLINE HRESULT ISpeechObjectToken_get_DataKey(ISpeechObjectToken* This,ISpeechDataKey **DataKey) {
    return This->lpVtbl->get_DataKey(This,DataKey);
}
static FORCEINLINE HRESULT ISpeechObjectToken_get_Category(ISpeechObjectToken* This,ISpeechObjectTokenCategory **Category) {
    return This->lpVtbl->get_Category(This,Category);
}
static FORCEINLINE HRESULT ISpeechObjectToken_GetDescription(ISpeechObjectToken* This,LONG Locale,BSTR *Description) {
    return This->lpVtbl->GetDescription(This,Locale,Description);
}
static FORCEINLINE HRESULT ISpeechObjectToken_SetId(ISpeechObjectToken* This,BSTR Id,BSTR CategoryID,VARIANT_BOOL CreateIfNotExist) {
    return This->lpVtbl->SetId(This,Id,CategoryID,CreateIfNotExist);
}
static FORCEINLINE HRESULT ISpeechObjectToken_GetAttribute(ISpeechObjectToken* This,BSTR AttributeName,BSTR *AttributeValue) {
    return This->lpVtbl->GetAttribute(This,AttributeName,AttributeValue);
}
static FORCEINLINE HRESULT ISpeechObjectToken_CreateInstance(ISpeechObjectToken* This,IUnknown *pUnkOuter,SpeechTokenContext ClsContext,IUnknown **Object) {
    return This->lpVtbl->CreateInstance(This,pUnkOuter,ClsContext,Object);
}
static FORCEINLINE HRESULT ISpeechObjectToken_Remove(ISpeechObjectToken* This,BSTR ObjectStorageCLSID) {
    return This->lpVtbl->Remove(This,ObjectStorageCLSID);
}
static FORCEINLINE HRESULT ISpeechObjectToken_GetStorageFileName(ISpeechObjectToken* This,BSTR ObjectStorageCLSID,BSTR KeyName,BSTR FileName,SpeechTokenShellFolder Folder,BSTR *FilePath) {
    return This->lpVtbl->GetStorageFileName(This,ObjectStorageCLSID,KeyName,FileName,Folder,FilePath);
}
static FORCEINLINE HRESULT ISpeechObjectToken_RemoveStorageFileName(ISpeechObjectToken* This,BSTR ObjectStorageCLSID,BSTR KeyName,VARIANT_BOOL DeleteFile) {
    return This->lpVtbl->RemoveStorageFileName(This,ObjectStorageCLSID,KeyName,DeleteFile);
}
static FORCEINLINE HRESULT ISpeechObjectToken_IsUISupported(ISpeechObjectToken* This,const BSTR TypeOfUI,const VARIANT *ExtraData,IUnknown *Object,VARIANT_BOOL *Supported) {
    return This->lpVtbl->IsUISupported(This,TypeOfUI,ExtraData,Object,Supported);
}
static FORCEINLINE HRESULT ISpeechObjectToken_DisplayUI(ISpeechObjectToken* This,LONG hWnd,BSTR Title,const BSTR TypeOfUI,const VARIANT *ExtraData,IUnknown *Object) {
    return This->lpVtbl->DisplayUI(This,hWnd,Title,TypeOfUI,ExtraData,Object);
}
static FORCEINLINE HRESULT ISpeechObjectToken_MatchesAttributes(ISpeechObjectToken* This,BSTR Attributes,VARIANT_BOOL *Matches) {
    return This->lpVtbl->MatchesAttributes(This,Attributes,Matches);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechObjectToken_get_Id_Proxy(
    ISpeechObjectToken* This,
    BSTR *ObjectId);
void __RPC_STUB ISpeechObjectToken_get_Id_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectToken_get_DataKey_Proxy(
    ISpeechObjectToken* This,
    ISpeechDataKey **DataKey);
void __RPC_STUB ISpeechObjectToken_get_DataKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectToken_get_Category_Proxy(
    ISpeechObjectToken* This,
    ISpeechObjectTokenCategory **Category);
void __RPC_STUB ISpeechObjectToken_get_Category_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectToken_GetDescription_Proxy(
    ISpeechObjectToken* This,
    LONG Locale,
    BSTR *Description);
void __RPC_STUB ISpeechObjectToken_GetDescription_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectToken_SetId_Proxy(
    ISpeechObjectToken* This,
    BSTR Id,
    BSTR CategoryID,
    VARIANT_BOOL CreateIfNotExist);
void __RPC_STUB ISpeechObjectToken_SetId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectToken_GetAttribute_Proxy(
    ISpeechObjectToken* This,
    BSTR AttributeName,
    BSTR *AttributeValue);
void __RPC_STUB ISpeechObjectToken_GetAttribute_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectToken_CreateInstance_Proxy(
    ISpeechObjectToken* This,
    IUnknown *pUnkOuter,
    SpeechTokenContext ClsContext,
    IUnknown **Object);
void __RPC_STUB ISpeechObjectToken_CreateInstance_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectToken_Remove_Proxy(
    ISpeechObjectToken* This,
    BSTR ObjectStorageCLSID);
void __RPC_STUB ISpeechObjectToken_Remove_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectToken_GetStorageFileName_Proxy(
    ISpeechObjectToken* This,
    BSTR ObjectStorageCLSID,
    BSTR KeyName,
    BSTR FileName,
    SpeechTokenShellFolder Folder,
    BSTR *FilePath);
void __RPC_STUB ISpeechObjectToken_GetStorageFileName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectToken_RemoveStorageFileName_Proxy(
    ISpeechObjectToken* This,
    BSTR ObjectStorageCLSID,
    BSTR KeyName,
    VARIANT_BOOL DeleteFile);
void __RPC_STUB ISpeechObjectToken_RemoveStorageFileName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectToken_IsUISupported_Proxy(
    ISpeechObjectToken* This,
    const BSTR TypeOfUI,
    const VARIANT *ExtraData,
    IUnknown *Object,
    VARIANT_BOOL *Supported);
void __RPC_STUB ISpeechObjectToken_IsUISupported_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectToken_DisplayUI_Proxy(
    ISpeechObjectToken* This,
    LONG hWnd,
    BSTR Title,
    const BSTR TypeOfUI,
    const VARIANT *ExtraData,
    IUnknown *Object);
void __RPC_STUB ISpeechObjectToken_DisplayUI_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectToken_MatchesAttributes_Proxy(
    ISpeechObjectToken* This,
    BSTR Attributes,
    VARIANT_BOOL *Matches);
void __RPC_STUB ISpeechObjectToken_MatchesAttributes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechObjectToken_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechObjectTokens interface
 */
#ifndef __ISpeechObjectTokens_INTERFACE_DEFINED__
#define __ISpeechObjectTokens_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechObjectTokens, 0x9285b776, 0x2e7b, 0x4bc0, 0xb5,0x3e, 0x58,0x0e,0xb6,0xfa,0x96,0x7f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9285b776-2e7b-4bc0-b53e-580eb6fa967f")
ISpeechObjectTokens : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        LONG Index,
        ISpeechObjectToken **Token) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **ppEnumVARIANT) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechObjectTokens, 0x9285b776, 0x2e7b, 0x4bc0, 0xb5,0x3e, 0x58,0x0e,0xb6,0xfa,0x96,0x7f)
#endif
#else
typedef struct ISpeechObjectTokensVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechObjectTokens* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechObjectTokens* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechObjectTokens* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechObjectTokens* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechObjectTokens* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechObjectTokens* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechObjectTokens* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechObjectTokens methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        ISpeechObjectTokens* This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *Item)(
        ISpeechObjectTokens* This,
        LONG Index,
        ISpeechObjectToken **Token);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        ISpeechObjectTokens* This,
        IUnknown **ppEnumVARIANT);

    END_INTERFACE
} ISpeechObjectTokensVtbl;
interface ISpeechObjectTokens {
    CONST_VTBL ISpeechObjectTokensVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechObjectTokens_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechObjectTokens_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechObjectTokens_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechObjectTokens_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechObjectTokens_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechObjectTokens_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechObjectTokens_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechObjectTokens methods ***/
#define ISpeechObjectTokens_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define ISpeechObjectTokens_Item(This,Index,Token) (This)->lpVtbl->Item(This,Index,Token)
#define ISpeechObjectTokens_get__NewEnum(This,ppEnumVARIANT) (This)->lpVtbl->get__NewEnum(This,ppEnumVARIANT)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechObjectTokens_QueryInterface(ISpeechObjectTokens* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechObjectTokens_AddRef(ISpeechObjectTokens* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechObjectTokens_Release(ISpeechObjectTokens* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechObjectTokens_GetTypeInfoCount(ISpeechObjectTokens* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechObjectTokens_GetTypeInfo(ISpeechObjectTokens* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechObjectTokens_GetIDsOfNames(ISpeechObjectTokens* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechObjectTokens_Invoke(ISpeechObjectTokens* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechObjectTokens methods ***/
static FORCEINLINE HRESULT ISpeechObjectTokens_get_Count(ISpeechObjectTokens* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT ISpeechObjectTokens_Item(ISpeechObjectTokens* This,LONG Index,ISpeechObjectToken **Token) {
    return This->lpVtbl->Item(This,Index,Token);
}
static FORCEINLINE HRESULT ISpeechObjectTokens_get__NewEnum(ISpeechObjectTokens* This,IUnknown **ppEnumVARIANT) {
    return This->lpVtbl->get__NewEnum(This,ppEnumVARIANT);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechObjectTokens_get_Count_Proxy(
    ISpeechObjectTokens* This,
    LONG *Count);
void __RPC_STUB ISpeechObjectTokens_get_Count_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectTokens_Item_Proxy(
    ISpeechObjectTokens* This,
    LONG Index,
    ISpeechObjectToken **Token);
void __RPC_STUB ISpeechObjectTokens_Item_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectTokens_get__NewEnum_Proxy(
    ISpeechObjectTokens* This,
    IUnknown **ppEnumVARIANT);
void __RPC_STUB ISpeechObjectTokens_get__NewEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechObjectTokens_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechObjectTokenCategory interface
 */
#ifndef __ISpeechObjectTokenCategory_INTERFACE_DEFINED__
#define __ISpeechObjectTokenCategory_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechObjectTokenCategory, 0xca7eac50, 0x2d01, 0x4145, 0x86,0xd4, 0x5a,0xe7,0xd7,0x0f,0x44,0x69);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ca7eac50-2d01-4145-86d4-5ae7d70f4469")
ISpeechObjectTokenCategory : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Id(
        BSTR *Id) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Default(
        const BSTR TokenId) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Default(
        BSTR *TokenId) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetId(
        const BSTR Id,
        VARIANT_BOOL CreateIfNotExist = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDataKey(
        SpeechDataKeyLocation Location = SDKLDefaultLocation,
        ISpeechDataKey **DataKey) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumerateTokens(
        BSTR RequiredAttributes = "",
        BSTR OptionalAttributes = "",
        ISpeechObjectTokens **Tokens) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechObjectTokenCategory, 0xca7eac50, 0x2d01, 0x4145, 0x86,0xd4, 0x5a,0xe7,0xd7,0x0f,0x44,0x69)
#endif
#else
typedef struct ISpeechObjectTokenCategoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechObjectTokenCategory* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechObjectTokenCategory* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechObjectTokenCategory* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechObjectTokenCategory* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechObjectTokenCategory* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechObjectTokenCategory* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechObjectTokenCategory* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechObjectTokenCategory methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Id)(
        ISpeechObjectTokenCategory* This,
        BSTR *Id);

    HRESULT (STDMETHODCALLTYPE *put_Default)(
        ISpeechObjectTokenCategory* This,
        const BSTR TokenId);

    HRESULT (STDMETHODCALLTYPE *get_Default)(
        ISpeechObjectTokenCategory* This,
        BSTR *TokenId);

    HRESULT (STDMETHODCALLTYPE *SetId)(
        ISpeechObjectTokenCategory* This,
        const BSTR Id,
        VARIANT_BOOL CreateIfNotExist);

    HRESULT (STDMETHODCALLTYPE *GetDataKey)(
        ISpeechObjectTokenCategory* This,
        SpeechDataKeyLocation Location,
        ISpeechDataKey **DataKey);

    HRESULT (STDMETHODCALLTYPE *EnumerateTokens)(
        ISpeechObjectTokenCategory* This,
        BSTR RequiredAttributes,
        BSTR OptionalAttributes,
        ISpeechObjectTokens **Tokens);

    END_INTERFACE
} ISpeechObjectTokenCategoryVtbl;
interface ISpeechObjectTokenCategory {
    CONST_VTBL ISpeechObjectTokenCategoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechObjectTokenCategory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechObjectTokenCategory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechObjectTokenCategory_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechObjectTokenCategory_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechObjectTokenCategory_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechObjectTokenCategory_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechObjectTokenCategory_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechObjectTokenCategory methods ***/
#define ISpeechObjectTokenCategory_get_Id(This,Id) (This)->lpVtbl->get_Id(This,Id)
#define ISpeechObjectTokenCategory_put_Default(This,TokenId) (This)->lpVtbl->put_Default(This,TokenId)
#define ISpeechObjectTokenCategory_get_Default(This,TokenId) (This)->lpVtbl->get_Default(This,TokenId)
#define ISpeechObjectTokenCategory_SetId(This,Id,CreateIfNotExist) (This)->lpVtbl->SetId(This,Id,CreateIfNotExist)
#define ISpeechObjectTokenCategory_GetDataKey(This,Location,DataKey) (This)->lpVtbl->GetDataKey(This,Location,DataKey)
#define ISpeechObjectTokenCategory_EnumerateTokens(This,RequiredAttributes,OptionalAttributes,Tokens) (This)->lpVtbl->EnumerateTokens(This,RequiredAttributes,OptionalAttributes,Tokens)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechObjectTokenCategory_QueryInterface(ISpeechObjectTokenCategory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechObjectTokenCategory_AddRef(ISpeechObjectTokenCategory* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechObjectTokenCategory_Release(ISpeechObjectTokenCategory* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechObjectTokenCategory_GetTypeInfoCount(ISpeechObjectTokenCategory* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechObjectTokenCategory_GetTypeInfo(ISpeechObjectTokenCategory* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechObjectTokenCategory_GetIDsOfNames(ISpeechObjectTokenCategory* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechObjectTokenCategory_Invoke(ISpeechObjectTokenCategory* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechObjectTokenCategory methods ***/
static FORCEINLINE HRESULT ISpeechObjectTokenCategory_get_Id(ISpeechObjectTokenCategory* This,BSTR *Id) {
    return This->lpVtbl->get_Id(This,Id);
}
static FORCEINLINE HRESULT ISpeechObjectTokenCategory_put_Default(ISpeechObjectTokenCategory* This,const BSTR TokenId) {
    return This->lpVtbl->put_Default(This,TokenId);
}
static FORCEINLINE HRESULT ISpeechObjectTokenCategory_get_Default(ISpeechObjectTokenCategory* This,BSTR *TokenId) {
    return This->lpVtbl->get_Default(This,TokenId);
}
static FORCEINLINE HRESULT ISpeechObjectTokenCategory_SetId(ISpeechObjectTokenCategory* This,const BSTR Id,VARIANT_BOOL CreateIfNotExist) {
    return This->lpVtbl->SetId(This,Id,CreateIfNotExist);
}
static FORCEINLINE HRESULT ISpeechObjectTokenCategory_GetDataKey(ISpeechObjectTokenCategory* This,SpeechDataKeyLocation Location,ISpeechDataKey **DataKey) {
    return This->lpVtbl->GetDataKey(This,Location,DataKey);
}
static FORCEINLINE HRESULT ISpeechObjectTokenCategory_EnumerateTokens(ISpeechObjectTokenCategory* This,BSTR RequiredAttributes,BSTR OptionalAttributes,ISpeechObjectTokens **Tokens) {
    return This->lpVtbl->EnumerateTokens(This,RequiredAttributes,OptionalAttributes,Tokens);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechObjectTokenCategory_get_Id_Proxy(
    ISpeechObjectTokenCategory* This,
    BSTR *Id);
void __RPC_STUB ISpeechObjectTokenCategory_get_Id_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectTokenCategory_put_Default_Proxy(
    ISpeechObjectTokenCategory* This,
    const BSTR TokenId);
void __RPC_STUB ISpeechObjectTokenCategory_put_Default_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectTokenCategory_get_Default_Proxy(
    ISpeechObjectTokenCategory* This,
    BSTR *TokenId);
void __RPC_STUB ISpeechObjectTokenCategory_get_Default_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectTokenCategory_SetId_Proxy(
    ISpeechObjectTokenCategory* This,
    const BSTR Id,
    VARIANT_BOOL CreateIfNotExist);
void __RPC_STUB ISpeechObjectTokenCategory_SetId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectTokenCategory_GetDataKey_Proxy(
    ISpeechObjectTokenCategory* This,
    SpeechDataKeyLocation Location,
    ISpeechDataKey **DataKey);
void __RPC_STUB ISpeechObjectTokenCategory_GetDataKey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechObjectTokenCategory_EnumerateTokens_Proxy(
    ISpeechObjectTokenCategory* This,
    BSTR RequiredAttributes,
    BSTR OptionalAttributes,
    ISpeechObjectTokens **Tokens);
void __RPC_STUB ISpeechObjectTokenCategory_EnumerateTokens_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechObjectTokenCategory_INTERFACE_DEFINED__ */

typedef enum SpeechAudioFormatType {
    SAFTDefault = -1,
    SAFTNoAssignedFormat = 0,
    SAFTText = 1,
    SAFTNonStandardFormat = 2,
    SAFTExtendedAudioFormat = 3,
    SAFT8kHz8BitMono = 4,
    SAFT8kHz8BitStereo = 5,
    SAFT8kHz16BitMono = 6,
    SAFT8kHz16BitStereo = 7,
    SAFT11kHz8BitMono = 8,
    SAFT11kHz8BitStereo = 9,
    SAFT11kHz16BitMono = 10,
    SAFT11kHz16BitStereo = 11,
    SAFT12kHz8BitMono = 12,
    SAFT12kHz8BitStereo = 13,
    SAFT12kHz16BitMono = 14,
    SAFT12kHz16BitStereo = 15,
    SAFT16kHz8BitMono = 16,
    SAFT16kHz8BitStereo = 17,
    SAFT16kHz16BitMono = 18,
    SAFT16kHz16BitStereo = 19,
    SAFT22kHz8BitMono = 20,
    SAFT22kHz8BitStereo = 21,
    SAFT22kHz16BitMono = 22,
    SAFT22kHz16BitStereo = 23,
    SAFT24kHz8BitMono = 24,
    SAFT24kHz8BitStereo = 25,
    SAFT24kHz16BitMono = 26,
    SAFT24kHz16BitStereo = 27,
    SAFT32kHz8BitMono = 28,
    SAFT32kHz8BitStereo = 29,
    SAFT32kHz16BitMono = 30,
    SAFT32kHz16BitStereo = 31,
    SAFT44kHz8BitMono = 32,
    SAFT44kHz8BitStereo = 33,
    SAFT44kHz16BitMono = 34,
    SAFT44kHz16BitStereo = 35,
    SAFT48kHz8BitMono = 36,
    SAFT48kHz8BitStereo = 37,
    SAFT48kHz16BitMono = 38,
    SAFT48kHz16BitStereo = 39,
    SAFTTrueSpeech_8kHz1BitMono = 40,
    SAFTCCITT_ALaw_8kHzMono = 41,
    SAFTCCITT_ALaw_8kHzStereo = 42,
    SAFTCCITT_ALaw_11kHzMono = 43,
    SAFTCCITT_ALaw_11kHzStereo = 44,
    SAFTCCITT_ALaw_22kHzMono = 45,
    SAFTCCITT_ALaw_22kHzStereo = 46,
    SAFTCCITT_ALaw_44kHzMono = 47,
    SAFTCCITT_ALaw_44kHzStereo = 48,
    SAFTCCITT_uLaw_8kHzMono = 49,
    SAFTCCITT_uLaw_8kHzStereo = 50,
    SAFTCCITT_uLaw_11kHzMono = 51,
    SAFTCCITT_uLaw_11kHzStereo = 52,
    SAFTCCITT_uLaw_22kHzMono = 53,
    SAFTCCITT_uLaw_22kHzStereo = 54,
    SAFTCCITT_uLaw_44kHzMono = 55,
    SAFTCCITT_uLaw_44kHzStereo = 56,
    SAFTADPCM_8kHzMono = 57,
    SAFTADPCM_8kHzStereo = 58,
    SAFTADPCM_11kHzMono = 59,
    SAFTADPCM_11kHzStereo = 60,
    SAFTADPCM_22kHzMono = 61,
    SAFTADPCM_22kHzStereo = 62,
    SAFTADPCM_44kHzMono = 63,
    SAFTADPCM_44kHzStereo = 64,
    SAFTGSM610_8kHzMono = 65,
    SAFTGSM610_11kHzMono = 66,
    SAFTGSM610_22kHzMono = 67,
    SAFTGSM610_44kHzMono = 68
} SpeechAudioFormatType;
typedef enum DISPID_SpeechAudioFormat {
    DISPID_SAFType = 1,
    DISPID_SAFGuid = 2,
    DISPID_SAFGetWaveFormatEx = 3,
    DISPID_SAFSetWaveFormatEx = 4
} DISPID_SpeechAudioFormat;
typedef enum DISPID_SpeechBaseStream {
    DISPID_SBSFormat = 1,
    DISPID_SBSRead = 2,
    DISPID_SBSWrite = 3,
    DISPID_SBSSeek = 4
} DISPID_SpeechBaseStream;
typedef enum SpeechStreamSeekPositionType {
    SSSPTRelativeToStart = STREAM_SEEK_SET,
    SSSPTRelativeToCurrentPosition = STREAM_SEEK_CUR,
    SSSPTRelativeToEnd = STREAM_SEEK_END
} SpeechStreamSeekPositionType;
typedef enum DISPID_SpeechAudio {
    DISPID_SAStatus = 200,
    DISPID_SABufferInfo = 201,
    DISPID_SADefaultFormat = 202,
    DISPID_SAVolume = 203,
    DISPID_SABufferNotifySize = 204,
    DISPID_SAEventHandle = 205,
    DISPID_SASetState = 206
} DISPID_SpeechAudio;
typedef enum SpeechAudioState {
    SASClosed = SPAS_CLOSED,
    SASStop = SPAS_STOP,
    SASPause = SPAS_PAUSE,
    SASRun = SPAS_RUN
} SpeechAudioState;
typedef enum DISPID_SpeechMMSysAudio {
    DISPID_SMSADeviceId = 300,
    DISPID_SMSALineId = 301,
    DISPID_SMSAMMHandle = 302
} DISPID_SpeechMMSysAudio;
typedef enum DISPID_SpeechFileStream {
    DISPID_SFSOpen = 100,
    DISPID_SFSClose = 101
} DISPID_SpeechFileStream;
typedef enum SpeechStreamFileMode {
    SSFMOpenForRead = SPFM_OPEN_READONLY,
    SSFMOpenReadWrite = SPFM_OPEN_READWRITE,
    SSFMCreate = SPFM_CREATE,
    SSFMCreateForWrite = SPFM_CREATE_ALWAYS
} SpeechStreamFileMode;
typedef enum DISPID_SpeechCustomStream {
    DISPID_SCSBaseStream = 100
} DISPID_SpeechCustomStream;
typedef enum DISPID_SpeechMemoryStream {
    DISPID_SMSSetData = 100,
    DISPID_SMSGetData = 101
} DISPID_SpeechMemoryStream;
typedef enum DISPID_SpeechAudioStatus {
    DISPID_SASFreeBufferSpace = 1,
    DISPID_SASNonBlockingIO = 2,
    DISPID_SASState = 3,
    DISPID_SASCurrentSeekPosition = 4,
    DISPID_SASCurrentDevicePosition = 5
} DISPID_SpeechAudioStatus;
typedef enum DISPID_SpeechAudioBufferInfo {
    DISPID_SABIMinNotification = 1,
    DISPID_SABIBufferSize = 2,
    DISPID_SABIEventBias = 3
} DISPID_SpeechAudioBufferInfo;
typedef enum DISPID_SpeechWaveFormatEx {
    DISPID_SWFEFormatTag = 1,
    DISPID_SWFEChannels = 2,
    DISPID_SWFESamplesPerSec = 3,
    DISPID_SWFEAvgBytesPerSec = 4,
    DISPID_SWFEBlockAlign = 5,
    DISPID_SWFEBitsPerSample = 6,
    DISPID_SWFEExtraData = 7
} DISPID_SpeechWaveFormatEx;
typedef enum DISPID_SpeechVoice {
    DISPID_SVStatus = 1,
    DISPID_SVVoice = 2,
    DISPID_SVAudioOutput = 3,
    DISPID_SVAudioOutputStream = 4,
    DISPID_SVRate = 5,
    DISPID_SVVolume = 6,
    DISPID_SVAllowAudioOuputFormatChangesOnNextSet = 7,
    DISPID_SVEventInterests = 8,
    DISPID_SVPriority = 9,
    DISPID_SVAlertBoundary = 10,
    DISPID_SVSyncronousSpeakTimeout = 11,
    DISPID_SVSpeak = 12,
    DISPID_SVSpeakStream = 13,
    DISPID_SVPause = 14,
    DISPID_SVResume = 15,
    DISPID_SVSkip = 16,
    DISPID_SVGetVoices = 17,
    DISPID_SVGetAudioOutputs = 18,
    DISPID_SVWaitUntilDone = 19,
    DISPID_SVSpeakCompleteEvent = 20,
    DISPID_SVIsUISupported = 21,
    DISPID_SVDisplayUI = 22
} DISPID_SpeechVoice;
typedef enum SpeechVoicePriority {
    SVPNormal = SPVPRI_NORMAL,
    SVPAlert = SPVPRI_ALERT,
    SVPOver = SPVPRI_OVER
} SpeechVoicePriority;
typedef enum SpeechVoiceSpeakFlags {
    SVSFDefault = SPF_DEFAULT,
    SVSFlagsAsync = SPF_ASYNC,
    SVSFPurgeBeforeSpeak = SPF_PURGEBEFORESPEAK,
    SVSFIsFilename = SPF_IS_FILENAME,
    SVSFIsXML = SPF_IS_XML,
    SVSFIsNotXML = SPF_IS_NOT_XML,
    SVSFPersistXML = SPF_PERSIST_XML,
    SVSFNLPSpeakPunc = SPF_NLP_SPEAK_PUNC,
    SVSFNLPMask = SPF_NLP_MASK,
    SVSFVoiceMask = SPF_VOICE_MASK,
    SVSFUnusedFlags = SPF_UNUSED_FLAGS
} SpeechVoiceSpeakFlags;
typedef enum SpeechVoiceEvents {
    SVEStartInputStream = 0x2,
    SVEEndInputStream = 0x4,
    SVEVoiceChange = 0x8,
    SVEBookmark = 0x10,
    SVEWordBoundary = 0x20,
    SVEPhoneme = 0x40,
    SVESentenceBoundary = 0x80,
    SVEViseme = 0x100,
    SVEAudioLevel = 0x200,
    SVEPrivate = 0x8000,
    SVEAllEvents = 0x83fe
} SpeechVoiceEvents;
typedef enum DISPID_SpeechVoiceStatus {
    DISPID_SVSCurrentStreamNumber = 1,
    DISPID_SVSLastStreamNumberQueued = 2,
    DISPID_SVSLastResult = 3,
    DISPID_SVSRunningState = 4,
    DISPID_SVSInputWordPosition = 5,
    DISPID_SVSInputWordLength = 6,
    DISPID_SVSInputSentencePosition = 7,
    DISPID_SVSInputSentenceLength = 8,
    DISPID_SVSLastBookmark = 9,
    DISPID_SVSLastBookmarkId = 10,
    DISPID_SVSPhonemeId = 11,
    DISPID_SVSVisemeId = 12
} DISPID_SpeechVoiceStatus;
typedef enum SpeechRunState {
    SRSEDone = SPRS_DONE,
    SRSEIsSpeaking = SPRS_IS_SPEAKING
} SpeechRunState;
/*****************************************************************************
 * ISpeechAudioFormat interface
 */
#ifndef __ISpeechAudioFormat_INTERFACE_DEFINED__
#define __ISpeechAudioFormat_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechAudioFormat, 0xe6e9c590, 0x3e18, 0x40e3, 0x82,0x99, 0x06,0x1f,0x98,0xbd,0xe7,0xc7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e6e9c590-3e18-40e3-8299-061f98bde7c7")
ISpeechAudioFormat : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Type(
        SpeechAudioFormatType *AudioFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Type(
        SpeechAudioFormatType AudioFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Guid(
        BSTR *Guid) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Guid(
        BSTR Guid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetWaveFormatEx(
        ISpeechWaveFormatEx **SpeechWaveFormatEx) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetWaveFormatEx(
        ISpeechWaveFormatEx *SpeechWaveFormatEx) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechAudioFormat, 0xe6e9c590, 0x3e18, 0x40e3, 0x82,0x99, 0x06,0x1f,0x98,0xbd,0xe7,0xc7)
#endif
#else
typedef struct ISpeechAudioFormatVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechAudioFormat* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechAudioFormat* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechAudioFormat* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechAudioFormat* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechAudioFormat* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechAudioFormat* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechAudioFormat* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechAudioFormat methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Type)(
        ISpeechAudioFormat* This,
        SpeechAudioFormatType *AudioFormat);

    HRESULT (STDMETHODCALLTYPE *put_Type)(
        ISpeechAudioFormat* This,
        SpeechAudioFormatType AudioFormat);

    HRESULT (STDMETHODCALLTYPE *get_Guid)(
        ISpeechAudioFormat* This,
        BSTR *Guid);

    HRESULT (STDMETHODCALLTYPE *put_Guid)(
        ISpeechAudioFormat* This,
        BSTR Guid);

    HRESULT (STDMETHODCALLTYPE *GetWaveFormatEx)(
        ISpeechAudioFormat* This,
        ISpeechWaveFormatEx **SpeechWaveFormatEx);

    HRESULT (STDMETHODCALLTYPE *SetWaveFormatEx)(
        ISpeechAudioFormat* This,
        ISpeechWaveFormatEx *SpeechWaveFormatEx);

    END_INTERFACE
} ISpeechAudioFormatVtbl;
interface ISpeechAudioFormat {
    CONST_VTBL ISpeechAudioFormatVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechAudioFormat_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechAudioFormat_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechAudioFormat_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechAudioFormat_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechAudioFormat_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechAudioFormat_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechAudioFormat_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechAudioFormat methods ***/
#define ISpeechAudioFormat_get_Type(This,AudioFormat) (This)->lpVtbl->get_Type(This,AudioFormat)
#define ISpeechAudioFormat_put_Type(This,AudioFormat) (This)->lpVtbl->put_Type(This,AudioFormat)
#define ISpeechAudioFormat_get_Guid(This,Guid) (This)->lpVtbl->get_Guid(This,Guid)
#define ISpeechAudioFormat_put_Guid(This,Guid) (This)->lpVtbl->put_Guid(This,Guid)
#define ISpeechAudioFormat_GetWaveFormatEx(This,SpeechWaveFormatEx) (This)->lpVtbl->GetWaveFormatEx(This,SpeechWaveFormatEx)
#define ISpeechAudioFormat_SetWaveFormatEx(This,SpeechWaveFormatEx) (This)->lpVtbl->SetWaveFormatEx(This,SpeechWaveFormatEx)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechAudioFormat_QueryInterface(ISpeechAudioFormat* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechAudioFormat_AddRef(ISpeechAudioFormat* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechAudioFormat_Release(ISpeechAudioFormat* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechAudioFormat_GetTypeInfoCount(ISpeechAudioFormat* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechAudioFormat_GetTypeInfo(ISpeechAudioFormat* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechAudioFormat_GetIDsOfNames(ISpeechAudioFormat* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechAudioFormat_Invoke(ISpeechAudioFormat* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechAudioFormat methods ***/
static FORCEINLINE HRESULT ISpeechAudioFormat_get_Type(ISpeechAudioFormat* This,SpeechAudioFormatType *AudioFormat) {
    return This->lpVtbl->get_Type(This,AudioFormat);
}
static FORCEINLINE HRESULT ISpeechAudioFormat_put_Type(ISpeechAudioFormat* This,SpeechAudioFormatType AudioFormat) {
    return This->lpVtbl->put_Type(This,AudioFormat);
}
static FORCEINLINE HRESULT ISpeechAudioFormat_get_Guid(ISpeechAudioFormat* This,BSTR *Guid) {
    return This->lpVtbl->get_Guid(This,Guid);
}
static FORCEINLINE HRESULT ISpeechAudioFormat_put_Guid(ISpeechAudioFormat* This,BSTR Guid) {
    return This->lpVtbl->put_Guid(This,Guid);
}
static FORCEINLINE HRESULT ISpeechAudioFormat_GetWaveFormatEx(ISpeechAudioFormat* This,ISpeechWaveFormatEx **SpeechWaveFormatEx) {
    return This->lpVtbl->GetWaveFormatEx(This,SpeechWaveFormatEx);
}
static FORCEINLINE HRESULT ISpeechAudioFormat_SetWaveFormatEx(ISpeechAudioFormat* This,ISpeechWaveFormatEx *SpeechWaveFormatEx) {
    return This->lpVtbl->SetWaveFormatEx(This,SpeechWaveFormatEx);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechAudioFormat_get_Type_Proxy(
    ISpeechAudioFormat* This,
    SpeechAudioFormatType *AudioFormat);
void __RPC_STUB ISpeechAudioFormat_get_Type_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudioFormat_put_Type_Proxy(
    ISpeechAudioFormat* This,
    SpeechAudioFormatType AudioFormat);
void __RPC_STUB ISpeechAudioFormat_put_Type_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudioFormat_get_Guid_Proxy(
    ISpeechAudioFormat* This,
    BSTR *Guid);
void __RPC_STUB ISpeechAudioFormat_get_Guid_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudioFormat_put_Guid_Proxy(
    ISpeechAudioFormat* This,
    BSTR Guid);
void __RPC_STUB ISpeechAudioFormat_put_Guid_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudioFormat_GetWaveFormatEx_Proxy(
    ISpeechAudioFormat* This,
    ISpeechWaveFormatEx **SpeechWaveFormatEx);
void __RPC_STUB ISpeechAudioFormat_GetWaveFormatEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudioFormat_SetWaveFormatEx_Proxy(
    ISpeechAudioFormat* This,
    ISpeechWaveFormatEx *SpeechWaveFormatEx);
void __RPC_STUB ISpeechAudioFormat_SetWaveFormatEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechAudioFormat_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechBaseStream interface
 */
#ifndef __ISpeechBaseStream_INTERFACE_DEFINED__
#define __ISpeechBaseStream_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechBaseStream, 0x6450336f, 0x7d49, 0x4ced, 0x80,0x97, 0x49,0xd6,0xde,0xe3,0x72,0x94);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6450336f-7d49-4ced-8097-49d6dee37294")
ISpeechBaseStream : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Format(
        ISpeechAudioFormat **AudioFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_Format(
        ISpeechAudioFormat *AudioFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE Read(
        VARIANT *Buffer,
        LONG NumberOfBytes,
        LONG *BytesRead) = 0;

    virtual HRESULT STDMETHODCALLTYPE Write(
        VARIANT Buffer,
        LONG *BytesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE Seek(
        VARIANT Position,
        SpeechStreamSeekPositionType Origin = SSSPTRelativeToStart,
        VARIANT *NewPosition) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechBaseStream, 0x6450336f, 0x7d49, 0x4ced, 0x80,0x97, 0x49,0xd6,0xde,0xe3,0x72,0x94)
#endif
#else
typedef struct ISpeechBaseStreamVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechBaseStream* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechBaseStream* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechBaseStream* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechBaseStream* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechBaseStream* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechBaseStream* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechBaseStream* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechBaseStream methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Format)(
        ISpeechBaseStream* This,
        ISpeechAudioFormat **AudioFormat);

    HRESULT (STDMETHODCALLTYPE *putref_Format)(
        ISpeechBaseStream* This,
        ISpeechAudioFormat *AudioFormat);

    HRESULT (STDMETHODCALLTYPE *Read)(
        ISpeechBaseStream* This,
        VARIANT *Buffer,
        LONG NumberOfBytes,
        LONG *BytesRead);

    HRESULT (STDMETHODCALLTYPE *Write)(
        ISpeechBaseStream* This,
        VARIANT Buffer,
        LONG *BytesWritten);

    HRESULT (STDMETHODCALLTYPE *Seek)(
        ISpeechBaseStream* This,
        VARIANT Position,
        SpeechStreamSeekPositionType Origin,
        VARIANT *NewPosition);

    END_INTERFACE
} ISpeechBaseStreamVtbl;
interface ISpeechBaseStream {
    CONST_VTBL ISpeechBaseStreamVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechBaseStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechBaseStream_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechBaseStream_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechBaseStream_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechBaseStream_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechBaseStream_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechBaseStream_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechBaseStream methods ***/
#define ISpeechBaseStream_get_Format(This,AudioFormat) (This)->lpVtbl->get_Format(This,AudioFormat)
#define ISpeechBaseStream_putref_Format(This,AudioFormat) (This)->lpVtbl->putref_Format(This,AudioFormat)
#define ISpeechBaseStream_Read(This,Buffer,NumberOfBytes,BytesRead) (This)->lpVtbl->Read(This,Buffer,NumberOfBytes,BytesRead)
#define ISpeechBaseStream_Write(This,Buffer,BytesWritten) (This)->lpVtbl->Write(This,Buffer,BytesWritten)
#define ISpeechBaseStream_Seek(This,Position,Origin,NewPosition) (This)->lpVtbl->Seek(This,Position,Origin,NewPosition)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechBaseStream_QueryInterface(ISpeechBaseStream* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechBaseStream_AddRef(ISpeechBaseStream* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechBaseStream_Release(ISpeechBaseStream* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechBaseStream_GetTypeInfoCount(ISpeechBaseStream* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechBaseStream_GetTypeInfo(ISpeechBaseStream* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechBaseStream_GetIDsOfNames(ISpeechBaseStream* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechBaseStream_Invoke(ISpeechBaseStream* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechBaseStream methods ***/
static FORCEINLINE HRESULT ISpeechBaseStream_get_Format(ISpeechBaseStream* This,ISpeechAudioFormat **AudioFormat) {
    return This->lpVtbl->get_Format(This,AudioFormat);
}
static FORCEINLINE HRESULT ISpeechBaseStream_putref_Format(ISpeechBaseStream* This,ISpeechAudioFormat *AudioFormat) {
    return This->lpVtbl->putref_Format(This,AudioFormat);
}
static FORCEINLINE HRESULT ISpeechBaseStream_Read(ISpeechBaseStream* This,VARIANT *Buffer,LONG NumberOfBytes,LONG *BytesRead) {
    return This->lpVtbl->Read(This,Buffer,NumberOfBytes,BytesRead);
}
static FORCEINLINE HRESULT ISpeechBaseStream_Write(ISpeechBaseStream* This,VARIANT Buffer,LONG *BytesWritten) {
    return This->lpVtbl->Write(This,Buffer,BytesWritten);
}
static FORCEINLINE HRESULT ISpeechBaseStream_Seek(ISpeechBaseStream* This,VARIANT Position,SpeechStreamSeekPositionType Origin,VARIANT *NewPosition) {
    return This->lpVtbl->Seek(This,Position,Origin,NewPosition);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechBaseStream_get_Format_Proxy(
    ISpeechBaseStream* This,
    ISpeechAudioFormat **AudioFormat);
void __RPC_STUB ISpeechBaseStream_get_Format_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechBaseStream_putref_Format_Proxy(
    ISpeechBaseStream* This,
    ISpeechAudioFormat *AudioFormat);
void __RPC_STUB ISpeechBaseStream_putref_Format_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechBaseStream_Read_Proxy(
    ISpeechBaseStream* This,
    VARIANT *Buffer,
    LONG NumberOfBytes,
    LONG *BytesRead);
void __RPC_STUB ISpeechBaseStream_Read_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechBaseStream_Write_Proxy(
    ISpeechBaseStream* This,
    VARIANT Buffer,
    LONG *BytesWritten);
void __RPC_STUB ISpeechBaseStream_Write_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechBaseStream_Seek_Proxy(
    ISpeechBaseStream* This,
    VARIANT Position,
    SpeechStreamSeekPositionType Origin,
    VARIANT *NewPosition);
void __RPC_STUB ISpeechBaseStream_Seek_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechBaseStream_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechAudio interface
 */
#ifndef __ISpeechAudio_INTERFACE_DEFINED__
#define __ISpeechAudio_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechAudio, 0xcff8e175, 0x019e, 0x11d3, 0xa0,0x8e, 0x00,0xc0,0x4f,0x8e,0xf9,0xb5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cff8e175-019e-11d3-a08e-00c04f8ef9b5")
ISpeechAudio : public ISpeechBaseStream
{
    virtual HRESULT STDMETHODCALLTYPE get_Status(
        ISpeechAudioStatus **Status) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_BufferInfo(
        ISpeechAudioBufferInfo **BufferInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DefaultFormat(
        ISpeechAudioFormat **StreamFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Volume(
        LONG *Volume) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Volume(
        LONG Volume) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_BufferNotifySize(
        LONG *BufferNotifySize) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_BufferNotifySize(
        LONG BufferNotifySize) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_EventHandle(
        LONG *EventHandle) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetState(
        SpeechAudioState State) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechAudio, 0xcff8e175, 0x019e, 0x11d3, 0xa0,0x8e, 0x00,0xc0,0x4f,0x8e,0xf9,0xb5)
#endif
#else
typedef struct ISpeechAudioVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechAudio* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechAudio* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechAudio* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechAudio* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechAudio* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechAudio* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechAudio* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechBaseStream methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Format)(
        ISpeechAudio* This,
        ISpeechAudioFormat **AudioFormat);

    HRESULT (STDMETHODCALLTYPE *putref_Format)(
        ISpeechAudio* This,
        ISpeechAudioFormat *AudioFormat);

    HRESULT (STDMETHODCALLTYPE *Read)(
        ISpeechAudio* This,
        VARIANT *Buffer,
        LONG NumberOfBytes,
        LONG *BytesRead);

    HRESULT (STDMETHODCALLTYPE *Write)(
        ISpeechAudio* This,
        VARIANT Buffer,
        LONG *BytesWritten);

    HRESULT (STDMETHODCALLTYPE *Seek)(
        ISpeechAudio* This,
        VARIANT Position,
        SpeechStreamSeekPositionType Origin,
        VARIANT *NewPosition);

    /*** ISpeechAudio methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Status)(
        ISpeechAudio* This,
        ISpeechAudioStatus **Status);

    HRESULT (STDMETHODCALLTYPE *get_BufferInfo)(
        ISpeechAudio* This,
        ISpeechAudioBufferInfo **BufferInfo);

    HRESULT (STDMETHODCALLTYPE *get_DefaultFormat)(
        ISpeechAudio* This,
        ISpeechAudioFormat **StreamFormat);

    HRESULT (STDMETHODCALLTYPE *get_Volume)(
        ISpeechAudio* This,
        LONG *Volume);

    HRESULT (STDMETHODCALLTYPE *put_Volume)(
        ISpeechAudio* This,
        LONG Volume);

    HRESULT (STDMETHODCALLTYPE *get_BufferNotifySize)(
        ISpeechAudio* This,
        LONG *BufferNotifySize);

    HRESULT (STDMETHODCALLTYPE *put_BufferNotifySize)(
        ISpeechAudio* This,
        LONG BufferNotifySize);

    HRESULT (STDMETHODCALLTYPE *get_EventHandle)(
        ISpeechAudio* This,
        LONG *EventHandle);

    HRESULT (STDMETHODCALLTYPE *SetState)(
        ISpeechAudio* This,
        SpeechAudioState State);

    END_INTERFACE
} ISpeechAudioVtbl;
interface ISpeechAudio {
    CONST_VTBL ISpeechAudioVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechAudio_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechAudio_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechAudio_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechAudio_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechAudio_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechAudio_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechAudio_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechBaseStream methods ***/
#define ISpeechAudio_get_Format(This,AudioFormat) (This)->lpVtbl->get_Format(This,AudioFormat)
#define ISpeechAudio_putref_Format(This,AudioFormat) (This)->lpVtbl->putref_Format(This,AudioFormat)
#define ISpeechAudio_Read(This,Buffer,NumberOfBytes,BytesRead) (This)->lpVtbl->Read(This,Buffer,NumberOfBytes,BytesRead)
#define ISpeechAudio_Write(This,Buffer,BytesWritten) (This)->lpVtbl->Write(This,Buffer,BytesWritten)
#define ISpeechAudio_Seek(This,Position,Origin,NewPosition) (This)->lpVtbl->Seek(This,Position,Origin,NewPosition)
/*** ISpeechAudio methods ***/
#define ISpeechAudio_get_Status(This,Status) (This)->lpVtbl->get_Status(This,Status)
#define ISpeechAudio_get_BufferInfo(This,BufferInfo) (This)->lpVtbl->get_BufferInfo(This,BufferInfo)
#define ISpeechAudio_get_DefaultFormat(This,StreamFormat) (This)->lpVtbl->get_DefaultFormat(This,StreamFormat)
#define ISpeechAudio_get_Volume(This,Volume) (This)->lpVtbl->get_Volume(This,Volume)
#define ISpeechAudio_put_Volume(This,Volume) (This)->lpVtbl->put_Volume(This,Volume)
#define ISpeechAudio_get_BufferNotifySize(This,BufferNotifySize) (This)->lpVtbl->get_BufferNotifySize(This,BufferNotifySize)
#define ISpeechAudio_put_BufferNotifySize(This,BufferNotifySize) (This)->lpVtbl->put_BufferNotifySize(This,BufferNotifySize)
#define ISpeechAudio_get_EventHandle(This,EventHandle) (This)->lpVtbl->get_EventHandle(This,EventHandle)
#define ISpeechAudio_SetState(This,State) (This)->lpVtbl->SetState(This,State)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechAudio_QueryInterface(ISpeechAudio* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechAudio_AddRef(ISpeechAudio* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechAudio_Release(ISpeechAudio* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechAudio_GetTypeInfoCount(ISpeechAudio* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechAudio_GetTypeInfo(ISpeechAudio* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechAudio_GetIDsOfNames(ISpeechAudio* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechAudio_Invoke(ISpeechAudio* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechBaseStream methods ***/
static FORCEINLINE HRESULT ISpeechAudio_get_Format(ISpeechAudio* This,ISpeechAudioFormat **AudioFormat) {
    return This->lpVtbl->get_Format(This,AudioFormat);
}
static FORCEINLINE HRESULT ISpeechAudio_putref_Format(ISpeechAudio* This,ISpeechAudioFormat *AudioFormat) {
    return This->lpVtbl->putref_Format(This,AudioFormat);
}
static FORCEINLINE HRESULT ISpeechAudio_Read(ISpeechAudio* This,VARIANT *Buffer,LONG NumberOfBytes,LONG *BytesRead) {
    return This->lpVtbl->Read(This,Buffer,NumberOfBytes,BytesRead);
}
static FORCEINLINE HRESULT ISpeechAudio_Write(ISpeechAudio* This,VARIANT Buffer,LONG *BytesWritten) {
    return This->lpVtbl->Write(This,Buffer,BytesWritten);
}
static FORCEINLINE HRESULT ISpeechAudio_Seek(ISpeechAudio* This,VARIANT Position,SpeechStreamSeekPositionType Origin,VARIANT *NewPosition) {
    return This->lpVtbl->Seek(This,Position,Origin,NewPosition);
}
/*** ISpeechAudio methods ***/
static FORCEINLINE HRESULT ISpeechAudio_get_Status(ISpeechAudio* This,ISpeechAudioStatus **Status) {
    return This->lpVtbl->get_Status(This,Status);
}
static FORCEINLINE HRESULT ISpeechAudio_get_BufferInfo(ISpeechAudio* This,ISpeechAudioBufferInfo **BufferInfo) {
    return This->lpVtbl->get_BufferInfo(This,BufferInfo);
}
static FORCEINLINE HRESULT ISpeechAudio_get_DefaultFormat(ISpeechAudio* This,ISpeechAudioFormat **StreamFormat) {
    return This->lpVtbl->get_DefaultFormat(This,StreamFormat);
}
static FORCEINLINE HRESULT ISpeechAudio_get_Volume(ISpeechAudio* This,LONG *Volume) {
    return This->lpVtbl->get_Volume(This,Volume);
}
static FORCEINLINE HRESULT ISpeechAudio_put_Volume(ISpeechAudio* This,LONG Volume) {
    return This->lpVtbl->put_Volume(This,Volume);
}
static FORCEINLINE HRESULT ISpeechAudio_get_BufferNotifySize(ISpeechAudio* This,LONG *BufferNotifySize) {
    return This->lpVtbl->get_BufferNotifySize(This,BufferNotifySize);
}
static FORCEINLINE HRESULT ISpeechAudio_put_BufferNotifySize(ISpeechAudio* This,LONG BufferNotifySize) {
    return This->lpVtbl->put_BufferNotifySize(This,BufferNotifySize);
}
static FORCEINLINE HRESULT ISpeechAudio_get_EventHandle(ISpeechAudio* This,LONG *EventHandle) {
    return This->lpVtbl->get_EventHandle(This,EventHandle);
}
static FORCEINLINE HRESULT ISpeechAudio_SetState(ISpeechAudio* This,SpeechAudioState State) {
    return This->lpVtbl->SetState(This,State);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechAudio_get_Status_Proxy(
    ISpeechAudio* This,
    ISpeechAudioStatus **Status);
void __RPC_STUB ISpeechAudio_get_Status_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudio_get_BufferInfo_Proxy(
    ISpeechAudio* This,
    ISpeechAudioBufferInfo **BufferInfo);
void __RPC_STUB ISpeechAudio_get_BufferInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudio_get_DefaultFormat_Proxy(
    ISpeechAudio* This,
    ISpeechAudioFormat **StreamFormat);
void __RPC_STUB ISpeechAudio_get_DefaultFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudio_get_Volume_Proxy(
    ISpeechAudio* This,
    LONG *Volume);
void __RPC_STUB ISpeechAudio_get_Volume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudio_put_Volume_Proxy(
    ISpeechAudio* This,
    LONG Volume);
void __RPC_STUB ISpeechAudio_put_Volume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudio_get_BufferNotifySize_Proxy(
    ISpeechAudio* This,
    LONG *BufferNotifySize);
void __RPC_STUB ISpeechAudio_get_BufferNotifySize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudio_put_BufferNotifySize_Proxy(
    ISpeechAudio* This,
    LONG BufferNotifySize);
void __RPC_STUB ISpeechAudio_put_BufferNotifySize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudio_get_EventHandle_Proxy(
    ISpeechAudio* This,
    LONG *EventHandle);
void __RPC_STUB ISpeechAudio_get_EventHandle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudio_SetState_Proxy(
    ISpeechAudio* This,
    SpeechAudioState State);
void __RPC_STUB ISpeechAudio_SetState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechAudio_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechMMSysAudio interface
 */
#ifndef __ISpeechMMSysAudio_INTERFACE_DEFINED__
#define __ISpeechMMSysAudio_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechMMSysAudio, 0x3c76af6d, 0x1fd7, 0x4831, 0x81,0xd1, 0x3b,0x71,0xd5,0xa1,0x3c,0x44);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3c76af6d-1fd7-4831-81d1-3b71d5a13c44")
ISpeechMMSysAudio : public ISpeechAudio
{
    virtual HRESULT STDMETHODCALLTYPE get_DeviceId(
        LONG *DeviceId) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DeviceId(
        LONG DeviceId) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LineId(
        LONG *LineId) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_LineId(
        LONG LineId) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_MMHandle(
        LONG *Handle) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechMMSysAudio, 0x3c76af6d, 0x1fd7, 0x4831, 0x81,0xd1, 0x3b,0x71,0xd5,0xa1,0x3c,0x44)
#endif
#else
typedef struct ISpeechMMSysAudioVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechMMSysAudio* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechMMSysAudio* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechMMSysAudio* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechMMSysAudio* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechMMSysAudio* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechMMSysAudio* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechMMSysAudio* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechBaseStream methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Format)(
        ISpeechMMSysAudio* This,
        ISpeechAudioFormat **AudioFormat);

    HRESULT (STDMETHODCALLTYPE *putref_Format)(
        ISpeechMMSysAudio* This,
        ISpeechAudioFormat *AudioFormat);

    HRESULT (STDMETHODCALLTYPE *Read)(
        ISpeechMMSysAudio* This,
        VARIANT *Buffer,
        LONG NumberOfBytes,
        LONG *BytesRead);

    HRESULT (STDMETHODCALLTYPE *Write)(
        ISpeechMMSysAudio* This,
        VARIANT Buffer,
        LONG *BytesWritten);

    HRESULT (STDMETHODCALLTYPE *Seek)(
        ISpeechMMSysAudio* This,
        VARIANT Position,
        SpeechStreamSeekPositionType Origin,
        VARIANT *NewPosition);

    /*** ISpeechAudio methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Status)(
        ISpeechMMSysAudio* This,
        ISpeechAudioStatus **Status);

    HRESULT (STDMETHODCALLTYPE *get_BufferInfo)(
        ISpeechMMSysAudio* This,
        ISpeechAudioBufferInfo **BufferInfo);

    HRESULT (STDMETHODCALLTYPE *get_DefaultFormat)(
        ISpeechMMSysAudio* This,
        ISpeechAudioFormat **StreamFormat);

    HRESULT (STDMETHODCALLTYPE *get_Volume)(
        ISpeechMMSysAudio* This,
        LONG *Volume);

    HRESULT (STDMETHODCALLTYPE *put_Volume)(
        ISpeechMMSysAudio* This,
        LONG Volume);

    HRESULT (STDMETHODCALLTYPE *get_BufferNotifySize)(
        ISpeechMMSysAudio* This,
        LONG *BufferNotifySize);

    HRESULT (STDMETHODCALLTYPE *put_BufferNotifySize)(
        ISpeechMMSysAudio* This,
        LONG BufferNotifySize);

    HRESULT (STDMETHODCALLTYPE *get_EventHandle)(
        ISpeechMMSysAudio* This,
        LONG *EventHandle);

    HRESULT (STDMETHODCALLTYPE *SetState)(
        ISpeechMMSysAudio* This,
        SpeechAudioState State);

    /*** ISpeechMMSysAudio methods ***/
    HRESULT (STDMETHODCALLTYPE *get_DeviceId)(
        ISpeechMMSysAudio* This,
        LONG *DeviceId);

    HRESULT (STDMETHODCALLTYPE *put_DeviceId)(
        ISpeechMMSysAudio* This,
        LONG DeviceId);

    HRESULT (STDMETHODCALLTYPE *get_LineId)(
        ISpeechMMSysAudio* This,
        LONG *LineId);

    HRESULT (STDMETHODCALLTYPE *put_LineId)(
        ISpeechMMSysAudio* This,
        LONG LineId);

    HRESULT (STDMETHODCALLTYPE *get_MMHandle)(
        ISpeechMMSysAudio* This,
        LONG *Handle);

    END_INTERFACE
} ISpeechMMSysAudioVtbl;
interface ISpeechMMSysAudio {
    CONST_VTBL ISpeechMMSysAudioVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechMMSysAudio_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechMMSysAudio_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechMMSysAudio_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechMMSysAudio_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechMMSysAudio_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechMMSysAudio_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechMMSysAudio_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechBaseStream methods ***/
#define ISpeechMMSysAudio_get_Format(This,AudioFormat) (This)->lpVtbl->get_Format(This,AudioFormat)
#define ISpeechMMSysAudio_putref_Format(This,AudioFormat) (This)->lpVtbl->putref_Format(This,AudioFormat)
#define ISpeechMMSysAudio_Read(This,Buffer,NumberOfBytes,BytesRead) (This)->lpVtbl->Read(This,Buffer,NumberOfBytes,BytesRead)
#define ISpeechMMSysAudio_Write(This,Buffer,BytesWritten) (This)->lpVtbl->Write(This,Buffer,BytesWritten)
#define ISpeechMMSysAudio_Seek(This,Position,Origin,NewPosition) (This)->lpVtbl->Seek(This,Position,Origin,NewPosition)
/*** ISpeechAudio methods ***/
#define ISpeechMMSysAudio_get_Status(This,Status) (This)->lpVtbl->get_Status(This,Status)
#define ISpeechMMSysAudio_get_BufferInfo(This,BufferInfo) (This)->lpVtbl->get_BufferInfo(This,BufferInfo)
#define ISpeechMMSysAudio_get_DefaultFormat(This,StreamFormat) (This)->lpVtbl->get_DefaultFormat(This,StreamFormat)
#define ISpeechMMSysAudio_get_Volume(This,Volume) (This)->lpVtbl->get_Volume(This,Volume)
#define ISpeechMMSysAudio_put_Volume(This,Volume) (This)->lpVtbl->put_Volume(This,Volume)
#define ISpeechMMSysAudio_get_BufferNotifySize(This,BufferNotifySize) (This)->lpVtbl->get_BufferNotifySize(This,BufferNotifySize)
#define ISpeechMMSysAudio_put_BufferNotifySize(This,BufferNotifySize) (This)->lpVtbl->put_BufferNotifySize(This,BufferNotifySize)
#define ISpeechMMSysAudio_get_EventHandle(This,EventHandle) (This)->lpVtbl->get_EventHandle(This,EventHandle)
#define ISpeechMMSysAudio_SetState(This,State) (This)->lpVtbl->SetState(This,State)
/*** ISpeechMMSysAudio methods ***/
#define ISpeechMMSysAudio_get_DeviceId(This,DeviceId) (This)->lpVtbl->get_DeviceId(This,DeviceId)
#define ISpeechMMSysAudio_put_DeviceId(This,DeviceId) (This)->lpVtbl->put_DeviceId(This,DeviceId)
#define ISpeechMMSysAudio_get_LineId(This,LineId) (This)->lpVtbl->get_LineId(This,LineId)
#define ISpeechMMSysAudio_put_LineId(This,LineId) (This)->lpVtbl->put_LineId(This,LineId)
#define ISpeechMMSysAudio_get_MMHandle(This,Handle) (This)->lpVtbl->get_MMHandle(This,Handle)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechMMSysAudio_QueryInterface(ISpeechMMSysAudio* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechMMSysAudio_AddRef(ISpeechMMSysAudio* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechMMSysAudio_Release(ISpeechMMSysAudio* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechMMSysAudio_GetTypeInfoCount(ISpeechMMSysAudio* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_GetTypeInfo(ISpeechMMSysAudio* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_GetIDsOfNames(ISpeechMMSysAudio* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_Invoke(ISpeechMMSysAudio* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechBaseStream methods ***/
static FORCEINLINE HRESULT ISpeechMMSysAudio_get_Format(ISpeechMMSysAudio* This,ISpeechAudioFormat **AudioFormat) {
    return This->lpVtbl->get_Format(This,AudioFormat);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_putref_Format(ISpeechMMSysAudio* This,ISpeechAudioFormat *AudioFormat) {
    return This->lpVtbl->putref_Format(This,AudioFormat);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_Read(ISpeechMMSysAudio* This,VARIANT *Buffer,LONG NumberOfBytes,LONG *BytesRead) {
    return This->lpVtbl->Read(This,Buffer,NumberOfBytes,BytesRead);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_Write(ISpeechMMSysAudio* This,VARIANT Buffer,LONG *BytesWritten) {
    return This->lpVtbl->Write(This,Buffer,BytesWritten);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_Seek(ISpeechMMSysAudio* This,VARIANT Position,SpeechStreamSeekPositionType Origin,VARIANT *NewPosition) {
    return This->lpVtbl->Seek(This,Position,Origin,NewPosition);
}
/*** ISpeechAudio methods ***/
static FORCEINLINE HRESULT ISpeechMMSysAudio_get_Status(ISpeechMMSysAudio* This,ISpeechAudioStatus **Status) {
    return This->lpVtbl->get_Status(This,Status);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_get_BufferInfo(ISpeechMMSysAudio* This,ISpeechAudioBufferInfo **BufferInfo) {
    return This->lpVtbl->get_BufferInfo(This,BufferInfo);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_get_DefaultFormat(ISpeechMMSysAudio* This,ISpeechAudioFormat **StreamFormat) {
    return This->lpVtbl->get_DefaultFormat(This,StreamFormat);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_get_Volume(ISpeechMMSysAudio* This,LONG *Volume) {
    return This->lpVtbl->get_Volume(This,Volume);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_put_Volume(ISpeechMMSysAudio* This,LONG Volume) {
    return This->lpVtbl->put_Volume(This,Volume);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_get_BufferNotifySize(ISpeechMMSysAudio* This,LONG *BufferNotifySize) {
    return This->lpVtbl->get_BufferNotifySize(This,BufferNotifySize);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_put_BufferNotifySize(ISpeechMMSysAudio* This,LONG BufferNotifySize) {
    return This->lpVtbl->put_BufferNotifySize(This,BufferNotifySize);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_get_EventHandle(ISpeechMMSysAudio* This,LONG *EventHandle) {
    return This->lpVtbl->get_EventHandle(This,EventHandle);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_SetState(ISpeechMMSysAudio* This,SpeechAudioState State) {
    return This->lpVtbl->SetState(This,State);
}
/*** ISpeechMMSysAudio methods ***/
static FORCEINLINE HRESULT ISpeechMMSysAudio_get_DeviceId(ISpeechMMSysAudio* This,LONG *DeviceId) {
    return This->lpVtbl->get_DeviceId(This,DeviceId);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_put_DeviceId(ISpeechMMSysAudio* This,LONG DeviceId) {
    return This->lpVtbl->put_DeviceId(This,DeviceId);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_get_LineId(ISpeechMMSysAudio* This,LONG *LineId) {
    return This->lpVtbl->get_LineId(This,LineId);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_put_LineId(ISpeechMMSysAudio* This,LONG LineId) {
    return This->lpVtbl->put_LineId(This,LineId);
}
static FORCEINLINE HRESULT ISpeechMMSysAudio_get_MMHandle(ISpeechMMSysAudio* This,LONG *Handle) {
    return This->lpVtbl->get_MMHandle(This,Handle);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechMMSysAudio_get_DeviceId_Proxy(
    ISpeechMMSysAudio* This,
    LONG *DeviceId);
void __RPC_STUB ISpeechMMSysAudio_get_DeviceId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechMMSysAudio_put_DeviceId_Proxy(
    ISpeechMMSysAudio* This,
    LONG DeviceId);
void __RPC_STUB ISpeechMMSysAudio_put_DeviceId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechMMSysAudio_get_LineId_Proxy(
    ISpeechMMSysAudio* This,
    LONG *LineId);
void __RPC_STUB ISpeechMMSysAudio_get_LineId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechMMSysAudio_put_LineId_Proxy(
    ISpeechMMSysAudio* This,
    LONG LineId);
void __RPC_STUB ISpeechMMSysAudio_put_LineId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechMMSysAudio_get_MMHandle_Proxy(
    ISpeechMMSysAudio* This,
    LONG *Handle);
void __RPC_STUB ISpeechMMSysAudio_get_MMHandle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechMMSysAudio_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechFileStream interface
 */
#ifndef __ISpeechFileStream_INTERFACE_DEFINED__
#define __ISpeechFileStream_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechFileStream, 0xaf67f125, 0xab39, 0x4e93, 0xb4,0xa2, 0xcc,0x2e,0x66,0xe1,0x82,0xa7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("af67f125-ab39-4e93-b4a2-cc2e66e182a7")
ISpeechFileStream : public ISpeechBaseStream
{
    virtual HRESULT STDMETHODCALLTYPE Open(
        BSTR FileName,
        SpeechStreamFileMode FileMode = SSFMOpenForRead,
        VARIANT_BOOL DoEvents = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE Close(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechFileStream, 0xaf67f125, 0xab39, 0x4e93, 0xb4,0xa2, 0xcc,0x2e,0x66,0xe1,0x82,0xa7)
#endif
#else
typedef struct ISpeechFileStreamVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechFileStream* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechFileStream* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechFileStream* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechFileStream* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechFileStream* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechFileStream* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechFileStream* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechBaseStream methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Format)(
        ISpeechFileStream* This,
        ISpeechAudioFormat **AudioFormat);

    HRESULT (STDMETHODCALLTYPE *putref_Format)(
        ISpeechFileStream* This,
        ISpeechAudioFormat *AudioFormat);

    HRESULT (STDMETHODCALLTYPE *Read)(
        ISpeechFileStream* This,
        VARIANT *Buffer,
        LONG NumberOfBytes,
        LONG *BytesRead);

    HRESULT (STDMETHODCALLTYPE *Write)(
        ISpeechFileStream* This,
        VARIANT Buffer,
        LONG *BytesWritten);

    HRESULT (STDMETHODCALLTYPE *Seek)(
        ISpeechFileStream* This,
        VARIANT Position,
        SpeechStreamSeekPositionType Origin,
        VARIANT *NewPosition);

    /*** ISpeechFileStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Open)(
        ISpeechFileStream* This,
        BSTR FileName,
        SpeechStreamFileMode FileMode,
        VARIANT_BOOL DoEvents);

    HRESULT (STDMETHODCALLTYPE *Close)(
        ISpeechFileStream* This);

    END_INTERFACE
} ISpeechFileStreamVtbl;
interface ISpeechFileStream {
    CONST_VTBL ISpeechFileStreamVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechFileStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechFileStream_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechFileStream_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechFileStream_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechFileStream_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechFileStream_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechFileStream_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechBaseStream methods ***/
#define ISpeechFileStream_get_Format(This,AudioFormat) (This)->lpVtbl->get_Format(This,AudioFormat)
#define ISpeechFileStream_putref_Format(This,AudioFormat) (This)->lpVtbl->putref_Format(This,AudioFormat)
#define ISpeechFileStream_Read(This,Buffer,NumberOfBytes,BytesRead) (This)->lpVtbl->Read(This,Buffer,NumberOfBytes,BytesRead)
#define ISpeechFileStream_Write(This,Buffer,BytesWritten) (This)->lpVtbl->Write(This,Buffer,BytesWritten)
#define ISpeechFileStream_Seek(This,Position,Origin,NewPosition) (This)->lpVtbl->Seek(This,Position,Origin,NewPosition)
/*** ISpeechFileStream methods ***/
#define ISpeechFileStream_Open(This,FileName,FileMode,DoEvents) (This)->lpVtbl->Open(This,FileName,FileMode,DoEvents)
#define ISpeechFileStream_Close(This) (This)->lpVtbl->Close(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechFileStream_QueryInterface(ISpeechFileStream* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechFileStream_AddRef(ISpeechFileStream* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechFileStream_Release(ISpeechFileStream* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechFileStream_GetTypeInfoCount(ISpeechFileStream* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechFileStream_GetTypeInfo(ISpeechFileStream* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechFileStream_GetIDsOfNames(ISpeechFileStream* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechFileStream_Invoke(ISpeechFileStream* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechBaseStream methods ***/
static FORCEINLINE HRESULT ISpeechFileStream_get_Format(ISpeechFileStream* This,ISpeechAudioFormat **AudioFormat) {
    return This->lpVtbl->get_Format(This,AudioFormat);
}
static FORCEINLINE HRESULT ISpeechFileStream_putref_Format(ISpeechFileStream* This,ISpeechAudioFormat *AudioFormat) {
    return This->lpVtbl->putref_Format(This,AudioFormat);
}
static FORCEINLINE HRESULT ISpeechFileStream_Read(ISpeechFileStream* This,VARIANT *Buffer,LONG NumberOfBytes,LONG *BytesRead) {
    return This->lpVtbl->Read(This,Buffer,NumberOfBytes,BytesRead);
}
static FORCEINLINE HRESULT ISpeechFileStream_Write(ISpeechFileStream* This,VARIANT Buffer,LONG *BytesWritten) {
    return This->lpVtbl->Write(This,Buffer,BytesWritten);
}
static FORCEINLINE HRESULT ISpeechFileStream_Seek(ISpeechFileStream* This,VARIANT Position,SpeechStreamSeekPositionType Origin,VARIANT *NewPosition) {
    return This->lpVtbl->Seek(This,Position,Origin,NewPosition);
}
/*** ISpeechFileStream methods ***/
static FORCEINLINE HRESULT ISpeechFileStream_Open(ISpeechFileStream* This,BSTR FileName,SpeechStreamFileMode FileMode,VARIANT_BOOL DoEvents) {
    return This->lpVtbl->Open(This,FileName,FileMode,DoEvents);
}
static FORCEINLINE HRESULT ISpeechFileStream_Close(ISpeechFileStream* This) {
    return This->lpVtbl->Close(This);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechFileStream_Open_Proxy(
    ISpeechFileStream* This,
    BSTR FileName,
    SpeechStreamFileMode FileMode,
    VARIANT_BOOL DoEvents);
void __RPC_STUB ISpeechFileStream_Open_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechFileStream_Close_Proxy(
    ISpeechFileStream* This);
void __RPC_STUB ISpeechFileStream_Close_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechFileStream_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechCustomStream interface
 */
#ifndef __ISpeechCustomStream_INTERFACE_DEFINED__
#define __ISpeechCustomStream_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechCustomStream, 0x1a9e9f4f, 0x104f, 0x4db8, 0xa1,0x15, 0xef,0xd7,0xfd,0x0c,0x97,0xae);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1a9e9f4f-104f-4db8-a115-efd7fd0c97ae")
ISpeechCustomStream : public ISpeechBaseStream
{
    virtual HRESULT STDMETHODCALLTYPE get_BaseStream(
        IUnknown **ppUnkStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_BaseStream(
        IUnknown *pUnkStream) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechCustomStream, 0x1a9e9f4f, 0x104f, 0x4db8, 0xa1,0x15, 0xef,0xd7,0xfd,0x0c,0x97,0xae)
#endif
#else
typedef struct ISpeechCustomStreamVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechCustomStream* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechCustomStream* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechCustomStream* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechCustomStream* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechCustomStream* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechCustomStream* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechCustomStream* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechBaseStream methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Format)(
        ISpeechCustomStream* This,
        ISpeechAudioFormat **AudioFormat);

    HRESULT (STDMETHODCALLTYPE *putref_Format)(
        ISpeechCustomStream* This,
        ISpeechAudioFormat *AudioFormat);

    HRESULT (STDMETHODCALLTYPE *Read)(
        ISpeechCustomStream* This,
        VARIANT *Buffer,
        LONG NumberOfBytes,
        LONG *BytesRead);

    HRESULT (STDMETHODCALLTYPE *Write)(
        ISpeechCustomStream* This,
        VARIANT Buffer,
        LONG *BytesWritten);

    HRESULT (STDMETHODCALLTYPE *Seek)(
        ISpeechCustomStream* This,
        VARIANT Position,
        SpeechStreamSeekPositionType Origin,
        VARIANT *NewPosition);

    /*** ISpeechCustomStream methods ***/
    HRESULT (STDMETHODCALLTYPE *get_BaseStream)(
        ISpeechCustomStream* This,
        IUnknown **ppUnkStream);

    HRESULT (STDMETHODCALLTYPE *putref_BaseStream)(
        ISpeechCustomStream* This,
        IUnknown *pUnkStream);

    END_INTERFACE
} ISpeechCustomStreamVtbl;
interface ISpeechCustomStream {
    CONST_VTBL ISpeechCustomStreamVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechCustomStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechCustomStream_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechCustomStream_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechCustomStream_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechCustomStream_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechCustomStream_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechCustomStream_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechBaseStream methods ***/
#define ISpeechCustomStream_get_Format(This,AudioFormat) (This)->lpVtbl->get_Format(This,AudioFormat)
#define ISpeechCustomStream_putref_Format(This,AudioFormat) (This)->lpVtbl->putref_Format(This,AudioFormat)
#define ISpeechCustomStream_Read(This,Buffer,NumberOfBytes,BytesRead) (This)->lpVtbl->Read(This,Buffer,NumberOfBytes,BytesRead)
#define ISpeechCustomStream_Write(This,Buffer,BytesWritten) (This)->lpVtbl->Write(This,Buffer,BytesWritten)
#define ISpeechCustomStream_Seek(This,Position,Origin,NewPosition) (This)->lpVtbl->Seek(This,Position,Origin,NewPosition)
/*** ISpeechCustomStream methods ***/
#define ISpeechCustomStream_get_BaseStream(This,ppUnkStream) (This)->lpVtbl->get_BaseStream(This,ppUnkStream)
#define ISpeechCustomStream_putref_BaseStream(This,pUnkStream) (This)->lpVtbl->putref_BaseStream(This,pUnkStream)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechCustomStream_QueryInterface(ISpeechCustomStream* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechCustomStream_AddRef(ISpeechCustomStream* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechCustomStream_Release(ISpeechCustomStream* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechCustomStream_GetTypeInfoCount(ISpeechCustomStream* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechCustomStream_GetTypeInfo(ISpeechCustomStream* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechCustomStream_GetIDsOfNames(ISpeechCustomStream* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechCustomStream_Invoke(ISpeechCustomStream* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechBaseStream methods ***/
static FORCEINLINE HRESULT ISpeechCustomStream_get_Format(ISpeechCustomStream* This,ISpeechAudioFormat **AudioFormat) {
    return This->lpVtbl->get_Format(This,AudioFormat);
}
static FORCEINLINE HRESULT ISpeechCustomStream_putref_Format(ISpeechCustomStream* This,ISpeechAudioFormat *AudioFormat) {
    return This->lpVtbl->putref_Format(This,AudioFormat);
}
static FORCEINLINE HRESULT ISpeechCustomStream_Read(ISpeechCustomStream* This,VARIANT *Buffer,LONG NumberOfBytes,LONG *BytesRead) {
    return This->lpVtbl->Read(This,Buffer,NumberOfBytes,BytesRead);
}
static FORCEINLINE HRESULT ISpeechCustomStream_Write(ISpeechCustomStream* This,VARIANT Buffer,LONG *BytesWritten) {
    return This->lpVtbl->Write(This,Buffer,BytesWritten);
}
static FORCEINLINE HRESULT ISpeechCustomStream_Seek(ISpeechCustomStream* This,VARIANT Position,SpeechStreamSeekPositionType Origin,VARIANT *NewPosition) {
    return This->lpVtbl->Seek(This,Position,Origin,NewPosition);
}
/*** ISpeechCustomStream methods ***/
static FORCEINLINE HRESULT ISpeechCustomStream_get_BaseStream(ISpeechCustomStream* This,IUnknown **ppUnkStream) {
    return This->lpVtbl->get_BaseStream(This,ppUnkStream);
}
static FORCEINLINE HRESULT ISpeechCustomStream_putref_BaseStream(ISpeechCustomStream* This,IUnknown *pUnkStream) {
    return This->lpVtbl->putref_BaseStream(This,pUnkStream);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechCustomStream_get_BaseStream_Proxy(
    ISpeechCustomStream* This,
    IUnknown **ppUnkStream);
void __RPC_STUB ISpeechCustomStream_get_BaseStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechCustomStream_putref_BaseStream_Proxy(
    ISpeechCustomStream* This,
    IUnknown *pUnkStream);
void __RPC_STUB ISpeechCustomStream_putref_BaseStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechCustomStream_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechMemoryStream interface
 */
#ifndef __ISpeechMemoryStream_INTERFACE_DEFINED__
#define __ISpeechMemoryStream_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechMemoryStream, 0xeeb14b68, 0x808b, 0x4abe, 0xa5,0xea, 0xb5,0x1d,0xa7,0x58,0x80,0x08);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("eeb14b68-808b-4abe-a5ea-b51da7588008")
ISpeechMemoryStream : public ISpeechBaseStream
{
    virtual HRESULT STDMETHODCALLTYPE SetData(
        VARIANT Data) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetData(
        VARIANT *pData) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechMemoryStream, 0xeeb14b68, 0x808b, 0x4abe, 0xa5,0xea, 0xb5,0x1d,0xa7,0x58,0x80,0x08)
#endif
#else
typedef struct ISpeechMemoryStreamVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechMemoryStream* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechMemoryStream* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechMemoryStream* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechMemoryStream* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechMemoryStream* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechMemoryStream* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechMemoryStream* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechBaseStream methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Format)(
        ISpeechMemoryStream* This,
        ISpeechAudioFormat **AudioFormat);

    HRESULT (STDMETHODCALLTYPE *putref_Format)(
        ISpeechMemoryStream* This,
        ISpeechAudioFormat *AudioFormat);

    HRESULT (STDMETHODCALLTYPE *Read)(
        ISpeechMemoryStream* This,
        VARIANT *Buffer,
        LONG NumberOfBytes,
        LONG *BytesRead);

    HRESULT (STDMETHODCALLTYPE *Write)(
        ISpeechMemoryStream* This,
        VARIANT Buffer,
        LONG *BytesWritten);

    HRESULT (STDMETHODCALLTYPE *Seek)(
        ISpeechMemoryStream* This,
        VARIANT Position,
        SpeechStreamSeekPositionType Origin,
        VARIANT *NewPosition);

    /*** ISpeechMemoryStream methods ***/
    HRESULT (STDMETHODCALLTYPE *SetData)(
        ISpeechMemoryStream* This,
        VARIANT Data);

    HRESULT (STDMETHODCALLTYPE *GetData)(
        ISpeechMemoryStream* This,
        VARIANT *pData);

    END_INTERFACE
} ISpeechMemoryStreamVtbl;
interface ISpeechMemoryStream {
    CONST_VTBL ISpeechMemoryStreamVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechMemoryStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechMemoryStream_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechMemoryStream_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechMemoryStream_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechMemoryStream_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechMemoryStream_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechMemoryStream_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechBaseStream methods ***/
#define ISpeechMemoryStream_get_Format(This,AudioFormat) (This)->lpVtbl->get_Format(This,AudioFormat)
#define ISpeechMemoryStream_putref_Format(This,AudioFormat) (This)->lpVtbl->putref_Format(This,AudioFormat)
#define ISpeechMemoryStream_Read(This,Buffer,NumberOfBytes,BytesRead) (This)->lpVtbl->Read(This,Buffer,NumberOfBytes,BytesRead)
#define ISpeechMemoryStream_Write(This,Buffer,BytesWritten) (This)->lpVtbl->Write(This,Buffer,BytesWritten)
#define ISpeechMemoryStream_Seek(This,Position,Origin,NewPosition) (This)->lpVtbl->Seek(This,Position,Origin,NewPosition)
/*** ISpeechMemoryStream methods ***/
#define ISpeechMemoryStream_SetData(This,Data) (This)->lpVtbl->SetData(This,Data)
#define ISpeechMemoryStream_GetData(This,pData) (This)->lpVtbl->GetData(This,pData)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechMemoryStream_QueryInterface(ISpeechMemoryStream* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechMemoryStream_AddRef(ISpeechMemoryStream* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechMemoryStream_Release(ISpeechMemoryStream* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechMemoryStream_GetTypeInfoCount(ISpeechMemoryStream* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechMemoryStream_GetTypeInfo(ISpeechMemoryStream* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechMemoryStream_GetIDsOfNames(ISpeechMemoryStream* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechMemoryStream_Invoke(ISpeechMemoryStream* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechBaseStream methods ***/
static FORCEINLINE HRESULT ISpeechMemoryStream_get_Format(ISpeechMemoryStream* This,ISpeechAudioFormat **AudioFormat) {
    return This->lpVtbl->get_Format(This,AudioFormat);
}
static FORCEINLINE HRESULT ISpeechMemoryStream_putref_Format(ISpeechMemoryStream* This,ISpeechAudioFormat *AudioFormat) {
    return This->lpVtbl->putref_Format(This,AudioFormat);
}
static FORCEINLINE HRESULT ISpeechMemoryStream_Read(ISpeechMemoryStream* This,VARIANT *Buffer,LONG NumberOfBytes,LONG *BytesRead) {
    return This->lpVtbl->Read(This,Buffer,NumberOfBytes,BytesRead);
}
static FORCEINLINE HRESULT ISpeechMemoryStream_Write(ISpeechMemoryStream* This,VARIANT Buffer,LONG *BytesWritten) {
    return This->lpVtbl->Write(This,Buffer,BytesWritten);
}
static FORCEINLINE HRESULT ISpeechMemoryStream_Seek(ISpeechMemoryStream* This,VARIANT Position,SpeechStreamSeekPositionType Origin,VARIANT *NewPosition) {
    return This->lpVtbl->Seek(This,Position,Origin,NewPosition);
}
/*** ISpeechMemoryStream methods ***/
static FORCEINLINE HRESULT ISpeechMemoryStream_SetData(ISpeechMemoryStream* This,VARIANT Data) {
    return This->lpVtbl->SetData(This,Data);
}
static FORCEINLINE HRESULT ISpeechMemoryStream_GetData(ISpeechMemoryStream* This,VARIANT *pData) {
    return This->lpVtbl->GetData(This,pData);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechMemoryStream_SetData_Proxy(
    ISpeechMemoryStream* This,
    VARIANT Data);
void __RPC_STUB ISpeechMemoryStream_SetData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechMemoryStream_GetData_Proxy(
    ISpeechMemoryStream* This,
    VARIANT *pData);
void __RPC_STUB ISpeechMemoryStream_GetData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechMemoryStream_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechAudioStatus interface
 */
#ifndef __ISpeechAudioStatus_INTERFACE_DEFINED__
#define __ISpeechAudioStatus_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechAudioStatus, 0xc62d9c91, 0x7458, 0x47f6, 0x86,0x2d, 0x1e,0xf8,0x6f,0xb0,0xb2,0x78);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c62d9c91-7458-47f6-862d-1ef86fb0b278")
ISpeechAudioStatus : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_FreeBufferSpace(
        LONG *FreeBufferSpace) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_NonBlockingIO(
        LONG *NonBlockingIO) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_State(
        SpeechAudioState *State) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentSeekPosition(
        VARIANT *CurrentSeekPosition) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentDevicePosition(
        VARIANT *CurrentDevicePosition) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechAudioStatus, 0xc62d9c91, 0x7458, 0x47f6, 0x86,0x2d, 0x1e,0xf8,0x6f,0xb0,0xb2,0x78)
#endif
#else
typedef struct ISpeechAudioStatusVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechAudioStatus* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechAudioStatus* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechAudioStatus* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechAudioStatus* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechAudioStatus* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechAudioStatus* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechAudioStatus* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechAudioStatus methods ***/
    HRESULT (STDMETHODCALLTYPE *get_FreeBufferSpace)(
        ISpeechAudioStatus* This,
        LONG *FreeBufferSpace);

    HRESULT (STDMETHODCALLTYPE *get_NonBlockingIO)(
        ISpeechAudioStatus* This,
        LONG *NonBlockingIO);

    HRESULT (STDMETHODCALLTYPE *get_State)(
        ISpeechAudioStatus* This,
        SpeechAudioState *State);

    HRESULT (STDMETHODCALLTYPE *get_CurrentSeekPosition)(
        ISpeechAudioStatus* This,
        VARIANT *CurrentSeekPosition);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDevicePosition)(
        ISpeechAudioStatus* This,
        VARIANT *CurrentDevicePosition);

    END_INTERFACE
} ISpeechAudioStatusVtbl;
interface ISpeechAudioStatus {
    CONST_VTBL ISpeechAudioStatusVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechAudioStatus_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechAudioStatus_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechAudioStatus_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechAudioStatus_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechAudioStatus_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechAudioStatus_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechAudioStatus_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechAudioStatus methods ***/
#define ISpeechAudioStatus_get_FreeBufferSpace(This,FreeBufferSpace) (This)->lpVtbl->get_FreeBufferSpace(This,FreeBufferSpace)
#define ISpeechAudioStatus_get_NonBlockingIO(This,NonBlockingIO) (This)->lpVtbl->get_NonBlockingIO(This,NonBlockingIO)
#define ISpeechAudioStatus_get_State(This,State) (This)->lpVtbl->get_State(This,State)
#define ISpeechAudioStatus_get_CurrentSeekPosition(This,CurrentSeekPosition) (This)->lpVtbl->get_CurrentSeekPosition(This,CurrentSeekPosition)
#define ISpeechAudioStatus_get_CurrentDevicePosition(This,CurrentDevicePosition) (This)->lpVtbl->get_CurrentDevicePosition(This,CurrentDevicePosition)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechAudioStatus_QueryInterface(ISpeechAudioStatus* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechAudioStatus_AddRef(ISpeechAudioStatus* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechAudioStatus_Release(ISpeechAudioStatus* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechAudioStatus_GetTypeInfoCount(ISpeechAudioStatus* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechAudioStatus_GetTypeInfo(ISpeechAudioStatus* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechAudioStatus_GetIDsOfNames(ISpeechAudioStatus* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechAudioStatus_Invoke(ISpeechAudioStatus* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechAudioStatus methods ***/
static FORCEINLINE HRESULT ISpeechAudioStatus_get_FreeBufferSpace(ISpeechAudioStatus* This,LONG *FreeBufferSpace) {
    return This->lpVtbl->get_FreeBufferSpace(This,FreeBufferSpace);
}
static FORCEINLINE HRESULT ISpeechAudioStatus_get_NonBlockingIO(ISpeechAudioStatus* This,LONG *NonBlockingIO) {
    return This->lpVtbl->get_NonBlockingIO(This,NonBlockingIO);
}
static FORCEINLINE HRESULT ISpeechAudioStatus_get_State(ISpeechAudioStatus* This,SpeechAudioState *State) {
    return This->lpVtbl->get_State(This,State);
}
static FORCEINLINE HRESULT ISpeechAudioStatus_get_CurrentSeekPosition(ISpeechAudioStatus* This,VARIANT *CurrentSeekPosition) {
    return This->lpVtbl->get_CurrentSeekPosition(This,CurrentSeekPosition);
}
static FORCEINLINE HRESULT ISpeechAudioStatus_get_CurrentDevicePosition(ISpeechAudioStatus* This,VARIANT *CurrentDevicePosition) {
    return This->lpVtbl->get_CurrentDevicePosition(This,CurrentDevicePosition);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechAudioStatus_get_FreeBufferSpace_Proxy(
    ISpeechAudioStatus* This,
    LONG *FreeBufferSpace);
void __RPC_STUB ISpeechAudioStatus_get_FreeBufferSpace_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudioStatus_get_NonBlockingIO_Proxy(
    ISpeechAudioStatus* This,
    LONG *NonBlockingIO);
void __RPC_STUB ISpeechAudioStatus_get_NonBlockingIO_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudioStatus_get_State_Proxy(
    ISpeechAudioStatus* This,
    SpeechAudioState *State);
void __RPC_STUB ISpeechAudioStatus_get_State_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudioStatus_get_CurrentSeekPosition_Proxy(
    ISpeechAudioStatus* This,
    VARIANT *CurrentSeekPosition);
void __RPC_STUB ISpeechAudioStatus_get_CurrentSeekPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudioStatus_get_CurrentDevicePosition_Proxy(
    ISpeechAudioStatus* This,
    VARIANT *CurrentDevicePosition);
void __RPC_STUB ISpeechAudioStatus_get_CurrentDevicePosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechAudioStatus_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechAudioBufferInfo interface
 */
#ifndef __ISpeechAudioBufferInfo_INTERFACE_DEFINED__
#define __ISpeechAudioBufferInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechAudioBufferInfo, 0x11b103d8, 0x1142, 0x4edf, 0xa0,0x93, 0x82,0xfb,0x39,0x15,0xf8,0xcc);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("11b103d8-1142-4edf-a093-82fb3915f8cc")
ISpeechAudioBufferInfo : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_MinNotification(
        LONG *MinNotification) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_MinNotification(
        LONG MinNotification) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_BufferSize(
        LONG *BufferSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_BufferSize(
        LONG BufferSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_EventBias(
        LONG *EventBias) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_EventBias(
        LONG EventBias) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechAudioBufferInfo, 0x11b103d8, 0x1142, 0x4edf, 0xa0,0x93, 0x82,0xfb,0x39,0x15,0xf8,0xcc)
#endif
#else
typedef struct ISpeechAudioBufferInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechAudioBufferInfo* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechAudioBufferInfo* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechAudioBufferInfo* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechAudioBufferInfo* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechAudioBufferInfo* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechAudioBufferInfo* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechAudioBufferInfo* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechAudioBufferInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *get_MinNotification)(
        ISpeechAudioBufferInfo* This,
        LONG *MinNotification);

    HRESULT (STDMETHODCALLTYPE *put_MinNotification)(
        ISpeechAudioBufferInfo* This,
        LONG MinNotification);

    HRESULT (STDMETHODCALLTYPE *get_BufferSize)(
        ISpeechAudioBufferInfo* This,
        LONG *BufferSize);

    HRESULT (STDMETHODCALLTYPE *put_BufferSize)(
        ISpeechAudioBufferInfo* This,
        LONG BufferSize);

    HRESULT (STDMETHODCALLTYPE *get_EventBias)(
        ISpeechAudioBufferInfo* This,
        LONG *EventBias);

    HRESULT (STDMETHODCALLTYPE *put_EventBias)(
        ISpeechAudioBufferInfo* This,
        LONG EventBias);

    END_INTERFACE
} ISpeechAudioBufferInfoVtbl;
interface ISpeechAudioBufferInfo {
    CONST_VTBL ISpeechAudioBufferInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechAudioBufferInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechAudioBufferInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechAudioBufferInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechAudioBufferInfo_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechAudioBufferInfo_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechAudioBufferInfo_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechAudioBufferInfo_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechAudioBufferInfo methods ***/
#define ISpeechAudioBufferInfo_get_MinNotification(This,MinNotification) (This)->lpVtbl->get_MinNotification(This,MinNotification)
#define ISpeechAudioBufferInfo_put_MinNotification(This,MinNotification) (This)->lpVtbl->put_MinNotification(This,MinNotification)
#define ISpeechAudioBufferInfo_get_BufferSize(This,BufferSize) (This)->lpVtbl->get_BufferSize(This,BufferSize)
#define ISpeechAudioBufferInfo_put_BufferSize(This,BufferSize) (This)->lpVtbl->put_BufferSize(This,BufferSize)
#define ISpeechAudioBufferInfo_get_EventBias(This,EventBias) (This)->lpVtbl->get_EventBias(This,EventBias)
#define ISpeechAudioBufferInfo_put_EventBias(This,EventBias) (This)->lpVtbl->put_EventBias(This,EventBias)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechAudioBufferInfo_QueryInterface(ISpeechAudioBufferInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechAudioBufferInfo_AddRef(ISpeechAudioBufferInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechAudioBufferInfo_Release(ISpeechAudioBufferInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechAudioBufferInfo_GetTypeInfoCount(ISpeechAudioBufferInfo* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechAudioBufferInfo_GetTypeInfo(ISpeechAudioBufferInfo* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechAudioBufferInfo_GetIDsOfNames(ISpeechAudioBufferInfo* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechAudioBufferInfo_Invoke(ISpeechAudioBufferInfo* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechAudioBufferInfo methods ***/
static FORCEINLINE HRESULT ISpeechAudioBufferInfo_get_MinNotification(ISpeechAudioBufferInfo* This,LONG *MinNotification) {
    return This->lpVtbl->get_MinNotification(This,MinNotification);
}
static FORCEINLINE HRESULT ISpeechAudioBufferInfo_put_MinNotification(ISpeechAudioBufferInfo* This,LONG MinNotification) {
    return This->lpVtbl->put_MinNotification(This,MinNotification);
}
static FORCEINLINE HRESULT ISpeechAudioBufferInfo_get_BufferSize(ISpeechAudioBufferInfo* This,LONG *BufferSize) {
    return This->lpVtbl->get_BufferSize(This,BufferSize);
}
static FORCEINLINE HRESULT ISpeechAudioBufferInfo_put_BufferSize(ISpeechAudioBufferInfo* This,LONG BufferSize) {
    return This->lpVtbl->put_BufferSize(This,BufferSize);
}
static FORCEINLINE HRESULT ISpeechAudioBufferInfo_get_EventBias(ISpeechAudioBufferInfo* This,LONG *EventBias) {
    return This->lpVtbl->get_EventBias(This,EventBias);
}
static FORCEINLINE HRESULT ISpeechAudioBufferInfo_put_EventBias(ISpeechAudioBufferInfo* This,LONG EventBias) {
    return This->lpVtbl->put_EventBias(This,EventBias);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechAudioBufferInfo_get_MinNotification_Proxy(
    ISpeechAudioBufferInfo* This,
    LONG *MinNotification);
void __RPC_STUB ISpeechAudioBufferInfo_get_MinNotification_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudioBufferInfo_put_MinNotification_Proxy(
    ISpeechAudioBufferInfo* This,
    LONG MinNotification);
void __RPC_STUB ISpeechAudioBufferInfo_put_MinNotification_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudioBufferInfo_get_BufferSize_Proxy(
    ISpeechAudioBufferInfo* This,
    LONG *BufferSize);
void __RPC_STUB ISpeechAudioBufferInfo_get_BufferSize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudioBufferInfo_put_BufferSize_Proxy(
    ISpeechAudioBufferInfo* This,
    LONG BufferSize);
void __RPC_STUB ISpeechAudioBufferInfo_put_BufferSize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudioBufferInfo_get_EventBias_Proxy(
    ISpeechAudioBufferInfo* This,
    LONG *EventBias);
void __RPC_STUB ISpeechAudioBufferInfo_get_EventBias_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechAudioBufferInfo_put_EventBias_Proxy(
    ISpeechAudioBufferInfo* This,
    LONG EventBias);
void __RPC_STUB ISpeechAudioBufferInfo_put_EventBias_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechAudioBufferInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechWaveFormatEx interface
 */
#ifndef __ISpeechWaveFormatEx_INTERFACE_DEFINED__
#define __ISpeechWaveFormatEx_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechWaveFormatEx, 0x7a1ef0d5, 0x1581, 0x4741, 0x88,0xe4, 0x20,0x9a,0x49,0xf1,0x1a,0x10);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7a1ef0d5-1581-4741-88e4-209a49f11a10")
ISpeechWaveFormatEx : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_FormatTag(
        short *FormatTag) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_FormatTag(
        short FormatTag) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Channels(
        short *Channels) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Channels(
        short Channels) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SamplesPerSec(
        LONG *SamplesPerSec) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SamplesPerSec(
        LONG SamplesPerSec) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AvgBytesPerSec(
        LONG *AvgBytesPerSec) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AvgBytesPerSec(
        LONG AvgBytesPerSec) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_BlockAlign(
        short *BlockAlign) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_BlockAlign(
        short BlockAlign) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_BitsPerSample(
        short *BitsPerSample) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_BitsPerSample(
        short BitsPerSample) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ExtraData(
        VARIANT *ExtraData) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ExtraData(
        VARIANT ExtraData) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechWaveFormatEx, 0x7a1ef0d5, 0x1581, 0x4741, 0x88,0xe4, 0x20,0x9a,0x49,0xf1,0x1a,0x10)
#endif
#else
typedef struct ISpeechWaveFormatExVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechWaveFormatEx* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechWaveFormatEx* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechWaveFormatEx* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechWaveFormatEx* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechWaveFormatEx* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechWaveFormatEx* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechWaveFormatEx* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechWaveFormatEx methods ***/
    HRESULT (STDMETHODCALLTYPE *get_FormatTag)(
        ISpeechWaveFormatEx* This,
        short *FormatTag);

    HRESULT (STDMETHODCALLTYPE *put_FormatTag)(
        ISpeechWaveFormatEx* This,
        short FormatTag);

    HRESULT (STDMETHODCALLTYPE *get_Channels)(
        ISpeechWaveFormatEx* This,
        short *Channels);

    HRESULT (STDMETHODCALLTYPE *put_Channels)(
        ISpeechWaveFormatEx* This,
        short Channels);

    HRESULT (STDMETHODCALLTYPE *get_SamplesPerSec)(
        ISpeechWaveFormatEx* This,
        LONG *SamplesPerSec);

    HRESULT (STDMETHODCALLTYPE *put_SamplesPerSec)(
        ISpeechWaveFormatEx* This,
        LONG SamplesPerSec);

    HRESULT (STDMETHODCALLTYPE *get_AvgBytesPerSec)(
        ISpeechWaveFormatEx* This,
        LONG *AvgBytesPerSec);

    HRESULT (STDMETHODCALLTYPE *put_AvgBytesPerSec)(
        ISpeechWaveFormatEx* This,
        LONG AvgBytesPerSec);

    HRESULT (STDMETHODCALLTYPE *get_BlockAlign)(
        ISpeechWaveFormatEx* This,
        short *BlockAlign);

    HRESULT (STDMETHODCALLTYPE *put_BlockAlign)(
        ISpeechWaveFormatEx* This,
        short BlockAlign);

    HRESULT (STDMETHODCALLTYPE *get_BitsPerSample)(
        ISpeechWaveFormatEx* This,
        short *BitsPerSample);

    HRESULT (STDMETHODCALLTYPE *put_BitsPerSample)(
        ISpeechWaveFormatEx* This,
        short BitsPerSample);

    HRESULT (STDMETHODCALLTYPE *get_ExtraData)(
        ISpeechWaveFormatEx* This,
        VARIANT *ExtraData);

    HRESULT (STDMETHODCALLTYPE *put_ExtraData)(
        ISpeechWaveFormatEx* This,
        VARIANT ExtraData);

    END_INTERFACE
} ISpeechWaveFormatExVtbl;
interface ISpeechWaveFormatEx {
    CONST_VTBL ISpeechWaveFormatExVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechWaveFormatEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechWaveFormatEx_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechWaveFormatEx_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechWaveFormatEx_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechWaveFormatEx_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechWaveFormatEx_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechWaveFormatEx_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechWaveFormatEx methods ***/
#define ISpeechWaveFormatEx_get_FormatTag(This,FormatTag) (This)->lpVtbl->get_FormatTag(This,FormatTag)
#define ISpeechWaveFormatEx_put_FormatTag(This,FormatTag) (This)->lpVtbl->put_FormatTag(This,FormatTag)
#define ISpeechWaveFormatEx_get_Channels(This,Channels) (This)->lpVtbl->get_Channels(This,Channels)
#define ISpeechWaveFormatEx_put_Channels(This,Channels) (This)->lpVtbl->put_Channels(This,Channels)
#define ISpeechWaveFormatEx_get_SamplesPerSec(This,SamplesPerSec) (This)->lpVtbl->get_SamplesPerSec(This,SamplesPerSec)
#define ISpeechWaveFormatEx_put_SamplesPerSec(This,SamplesPerSec) (This)->lpVtbl->put_SamplesPerSec(This,SamplesPerSec)
#define ISpeechWaveFormatEx_get_AvgBytesPerSec(This,AvgBytesPerSec) (This)->lpVtbl->get_AvgBytesPerSec(This,AvgBytesPerSec)
#define ISpeechWaveFormatEx_put_AvgBytesPerSec(This,AvgBytesPerSec) (This)->lpVtbl->put_AvgBytesPerSec(This,AvgBytesPerSec)
#define ISpeechWaveFormatEx_get_BlockAlign(This,BlockAlign) (This)->lpVtbl->get_BlockAlign(This,BlockAlign)
#define ISpeechWaveFormatEx_put_BlockAlign(This,BlockAlign) (This)->lpVtbl->put_BlockAlign(This,BlockAlign)
#define ISpeechWaveFormatEx_get_BitsPerSample(This,BitsPerSample) (This)->lpVtbl->get_BitsPerSample(This,BitsPerSample)
#define ISpeechWaveFormatEx_put_BitsPerSample(This,BitsPerSample) (This)->lpVtbl->put_BitsPerSample(This,BitsPerSample)
#define ISpeechWaveFormatEx_get_ExtraData(This,ExtraData) (This)->lpVtbl->get_ExtraData(This,ExtraData)
#define ISpeechWaveFormatEx_put_ExtraData(This,ExtraData) (This)->lpVtbl->put_ExtraData(This,ExtraData)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechWaveFormatEx_QueryInterface(ISpeechWaveFormatEx* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechWaveFormatEx_AddRef(ISpeechWaveFormatEx* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechWaveFormatEx_Release(ISpeechWaveFormatEx* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechWaveFormatEx_GetTypeInfoCount(ISpeechWaveFormatEx* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_GetTypeInfo(ISpeechWaveFormatEx* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_GetIDsOfNames(ISpeechWaveFormatEx* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_Invoke(ISpeechWaveFormatEx* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechWaveFormatEx methods ***/
static FORCEINLINE HRESULT ISpeechWaveFormatEx_get_FormatTag(ISpeechWaveFormatEx* This,short *FormatTag) {
    return This->lpVtbl->get_FormatTag(This,FormatTag);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_put_FormatTag(ISpeechWaveFormatEx* This,short FormatTag) {
    return This->lpVtbl->put_FormatTag(This,FormatTag);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_get_Channels(ISpeechWaveFormatEx* This,short *Channels) {
    return This->lpVtbl->get_Channels(This,Channels);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_put_Channels(ISpeechWaveFormatEx* This,short Channels) {
    return This->lpVtbl->put_Channels(This,Channels);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_get_SamplesPerSec(ISpeechWaveFormatEx* This,LONG *SamplesPerSec) {
    return This->lpVtbl->get_SamplesPerSec(This,SamplesPerSec);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_put_SamplesPerSec(ISpeechWaveFormatEx* This,LONG SamplesPerSec) {
    return This->lpVtbl->put_SamplesPerSec(This,SamplesPerSec);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_get_AvgBytesPerSec(ISpeechWaveFormatEx* This,LONG *AvgBytesPerSec) {
    return This->lpVtbl->get_AvgBytesPerSec(This,AvgBytesPerSec);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_put_AvgBytesPerSec(ISpeechWaveFormatEx* This,LONG AvgBytesPerSec) {
    return This->lpVtbl->put_AvgBytesPerSec(This,AvgBytesPerSec);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_get_BlockAlign(ISpeechWaveFormatEx* This,short *BlockAlign) {
    return This->lpVtbl->get_BlockAlign(This,BlockAlign);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_put_BlockAlign(ISpeechWaveFormatEx* This,short BlockAlign) {
    return This->lpVtbl->put_BlockAlign(This,BlockAlign);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_get_BitsPerSample(ISpeechWaveFormatEx* This,short *BitsPerSample) {
    return This->lpVtbl->get_BitsPerSample(This,BitsPerSample);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_put_BitsPerSample(ISpeechWaveFormatEx* This,short BitsPerSample) {
    return This->lpVtbl->put_BitsPerSample(This,BitsPerSample);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_get_ExtraData(ISpeechWaveFormatEx* This,VARIANT *ExtraData) {
    return This->lpVtbl->get_ExtraData(This,ExtraData);
}
static FORCEINLINE HRESULT ISpeechWaveFormatEx_put_ExtraData(ISpeechWaveFormatEx* This,VARIANT ExtraData) {
    return This->lpVtbl->put_ExtraData(This,ExtraData);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechWaveFormatEx_get_FormatTag_Proxy(
    ISpeechWaveFormatEx* This,
    short *FormatTag);
void __RPC_STUB ISpeechWaveFormatEx_get_FormatTag_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechWaveFormatEx_put_FormatTag_Proxy(
    ISpeechWaveFormatEx* This,
    short FormatTag);
void __RPC_STUB ISpeechWaveFormatEx_put_FormatTag_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechWaveFormatEx_get_Channels_Proxy(
    ISpeechWaveFormatEx* This,
    short *Channels);
void __RPC_STUB ISpeechWaveFormatEx_get_Channels_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechWaveFormatEx_put_Channels_Proxy(
    ISpeechWaveFormatEx* This,
    short Channels);
void __RPC_STUB ISpeechWaveFormatEx_put_Channels_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechWaveFormatEx_get_SamplesPerSec_Proxy(
    ISpeechWaveFormatEx* This,
    LONG *SamplesPerSec);
void __RPC_STUB ISpeechWaveFormatEx_get_SamplesPerSec_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechWaveFormatEx_put_SamplesPerSec_Proxy(
    ISpeechWaveFormatEx* This,
    LONG SamplesPerSec);
void __RPC_STUB ISpeechWaveFormatEx_put_SamplesPerSec_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechWaveFormatEx_get_AvgBytesPerSec_Proxy(
    ISpeechWaveFormatEx* This,
    LONG *AvgBytesPerSec);
void __RPC_STUB ISpeechWaveFormatEx_get_AvgBytesPerSec_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechWaveFormatEx_put_AvgBytesPerSec_Proxy(
    ISpeechWaveFormatEx* This,
    LONG AvgBytesPerSec);
void __RPC_STUB ISpeechWaveFormatEx_put_AvgBytesPerSec_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechWaveFormatEx_get_BlockAlign_Proxy(
    ISpeechWaveFormatEx* This,
    short *BlockAlign);
void __RPC_STUB ISpeechWaveFormatEx_get_BlockAlign_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechWaveFormatEx_put_BlockAlign_Proxy(
    ISpeechWaveFormatEx* This,
    short BlockAlign);
void __RPC_STUB ISpeechWaveFormatEx_put_BlockAlign_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechWaveFormatEx_get_BitsPerSample_Proxy(
    ISpeechWaveFormatEx* This,
    short *BitsPerSample);
void __RPC_STUB ISpeechWaveFormatEx_get_BitsPerSample_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechWaveFormatEx_put_BitsPerSample_Proxy(
    ISpeechWaveFormatEx* This,
    short BitsPerSample);
void __RPC_STUB ISpeechWaveFormatEx_put_BitsPerSample_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechWaveFormatEx_get_ExtraData_Proxy(
    ISpeechWaveFormatEx* This,
    VARIANT *ExtraData);
void __RPC_STUB ISpeechWaveFormatEx_get_ExtraData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechWaveFormatEx_put_ExtraData_Proxy(
    ISpeechWaveFormatEx* This,
    VARIANT ExtraData);
void __RPC_STUB ISpeechWaveFormatEx_put_ExtraData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechWaveFormatEx_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechVoice interface
 */
#ifndef __ISpeechVoice_INTERFACE_DEFINED__
#define __ISpeechVoice_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechVoice, 0x269316d8, 0x57bd, 0x11d2, 0x9e,0xee, 0x00,0xc0,0x4f,0x79,0x73,0x96);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("269316d8-57bd-11d2-9eee-00c04f797396")
ISpeechVoice : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Status(
        ISpeechVoiceStatus **Status) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Voice(
        ISpeechObjectToken **Voice) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_Voice(
        ISpeechObjectToken *Voice) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AudioOutput(
        ISpeechObjectToken **AudioOutput) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_AudioOutput(
        ISpeechObjectToken *AudioOutput) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AudioOutputStream(
        ISpeechBaseStream **AudioOutputStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_AudioOutputStream(
        ISpeechBaseStream *AudioOutputStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Rate(
        LONG *Rate) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Rate(
        LONG Rate) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Volume(
        LONG *Volume) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Volume(
        LONG Volume) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AllowAudioOutputFormatChangesOnNextSet(
        VARIANT_BOOL Allow) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AllowAudioOutputFormatChangesOnNextSet(
        VARIANT_BOOL *Allow) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_EventInterests(
        SpeechVoiceEvents *EventInterestFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_EventInterests(
        SpeechVoiceEvents EventInterestFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Priority(
        SpeechVoicePriority Priority) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Priority(
        SpeechVoicePriority *Priority) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AlertBoundary(
        SpeechVoiceEvents Boundary) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AlertBoundary(
        SpeechVoiceEvents *Boundary) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SynchronousSpeakTimeout(
        LONG msTimeout) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SynchronousSpeakTimeout(
        LONG *msTimeout) = 0;

    virtual HRESULT STDMETHODCALLTYPE Speak(
        BSTR Text,
        SpeechVoiceSpeakFlags Flags = SPF_DEFAULT,
        LONG *StreamNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE SpeakStream(
        ISpeechBaseStream *Stream,
        SpeechVoiceSpeakFlags Flags = SPF_DEFAULT,
        LONG *StreamNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE Pause(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resume(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        const BSTR Type,
        LONG NumItems,
        LONG *NumSkipped) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVoices(
        BSTR RequiredAttributes = "",
        BSTR OptionalAttributes = "",
        ISpeechObjectTokens **ObjectTokens) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAudioOutputs(
        BSTR RequiredAttributes = "",
        BSTR OptionalAttributes = "",
        ISpeechObjectTokens **ObjectTokens) = 0;

    virtual HRESULT STDMETHODCALLTYPE WaitUntilDone(
        LONG msTimeout,
        VARIANT_BOOL *Done) = 0;

    virtual HRESULT STDMETHODCALLTYPE SpeakCompleteEvent(
        LONG *Handle) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsUISupported(
        const BSTR TypeOfUI,
        const VARIANT *ExtraData = 0,
        VARIANT_BOOL *Supported) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisplayUI(
        LONG hWndParent,
        BSTR Title,
        const BSTR TypeOfUI,
        const VARIANT *ExtraData = 0) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechVoice, 0x269316d8, 0x57bd, 0x11d2, 0x9e,0xee, 0x00,0xc0,0x4f,0x79,0x73,0x96)
#endif
#else
typedef struct ISpeechVoiceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechVoice* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechVoice* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechVoice* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechVoice* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechVoice* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechVoice* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechVoice* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechVoice methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Status)(
        ISpeechVoice* This,
        ISpeechVoiceStatus **Status);

    HRESULT (STDMETHODCALLTYPE *get_Voice)(
        ISpeechVoice* This,
        ISpeechObjectToken **Voice);

    HRESULT (STDMETHODCALLTYPE *putref_Voice)(
        ISpeechVoice* This,
        ISpeechObjectToken *Voice);

    HRESULT (STDMETHODCALLTYPE *get_AudioOutput)(
        ISpeechVoice* This,
        ISpeechObjectToken **AudioOutput);

    HRESULT (STDMETHODCALLTYPE *putref_AudioOutput)(
        ISpeechVoice* This,
        ISpeechObjectToken *AudioOutput);

    HRESULT (STDMETHODCALLTYPE *get_AudioOutputStream)(
        ISpeechVoice* This,
        ISpeechBaseStream **AudioOutputStream);

    HRESULT (STDMETHODCALLTYPE *putref_AudioOutputStream)(
        ISpeechVoice* This,
        ISpeechBaseStream *AudioOutputStream);

    HRESULT (STDMETHODCALLTYPE *get_Rate)(
        ISpeechVoice* This,
        LONG *Rate);

    HRESULT (STDMETHODCALLTYPE *put_Rate)(
        ISpeechVoice* This,
        LONG Rate);

    HRESULT (STDMETHODCALLTYPE *get_Volume)(
        ISpeechVoice* This,
        LONG *Volume);

    HRESULT (STDMETHODCALLTYPE *put_Volume)(
        ISpeechVoice* This,
        LONG Volume);

    HRESULT (STDMETHODCALLTYPE *put_AllowAudioOutputFormatChangesOnNextSet)(
        ISpeechVoice* This,
        VARIANT_BOOL Allow);

    HRESULT (STDMETHODCALLTYPE *get_AllowAudioOutputFormatChangesOnNextSet)(
        ISpeechVoice* This,
        VARIANT_BOOL *Allow);

    HRESULT (STDMETHODCALLTYPE *get_EventInterests)(
        ISpeechVoice* This,
        SpeechVoiceEvents *EventInterestFlags);

    HRESULT (STDMETHODCALLTYPE *put_EventInterests)(
        ISpeechVoice* This,
        SpeechVoiceEvents EventInterestFlags);

    HRESULT (STDMETHODCALLTYPE *put_Priority)(
        ISpeechVoice* This,
        SpeechVoicePriority Priority);

    HRESULT (STDMETHODCALLTYPE *get_Priority)(
        ISpeechVoice* This,
        SpeechVoicePriority *Priority);

    HRESULT (STDMETHODCALLTYPE *put_AlertBoundary)(
        ISpeechVoice* This,
        SpeechVoiceEvents Boundary);

    HRESULT (STDMETHODCALLTYPE *get_AlertBoundary)(
        ISpeechVoice* This,
        SpeechVoiceEvents *Boundary);

    HRESULT (STDMETHODCALLTYPE *put_SynchronousSpeakTimeout)(
        ISpeechVoice* This,
        LONG msTimeout);

    HRESULT (STDMETHODCALLTYPE *get_SynchronousSpeakTimeout)(
        ISpeechVoice* This,
        LONG *msTimeout);

    HRESULT (STDMETHODCALLTYPE *Speak)(
        ISpeechVoice* This,
        BSTR Text,
        SpeechVoiceSpeakFlags Flags,
        LONG *StreamNumber);

    HRESULT (STDMETHODCALLTYPE *SpeakStream)(
        ISpeechVoice* This,
        ISpeechBaseStream *Stream,
        SpeechVoiceSpeakFlags Flags,
        LONG *StreamNumber);

    HRESULT (STDMETHODCALLTYPE *Pause)(
        ISpeechVoice* This);

    HRESULT (STDMETHODCALLTYPE *Resume)(
        ISpeechVoice* This);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        ISpeechVoice* This,
        const BSTR Type,
        LONG NumItems,
        LONG *NumSkipped);

    HRESULT (STDMETHODCALLTYPE *GetVoices)(
        ISpeechVoice* This,
        BSTR RequiredAttributes,
        BSTR OptionalAttributes,
        ISpeechObjectTokens **ObjectTokens);

    HRESULT (STDMETHODCALLTYPE *GetAudioOutputs)(
        ISpeechVoice* This,
        BSTR RequiredAttributes,
        BSTR OptionalAttributes,
        ISpeechObjectTokens **ObjectTokens);

    HRESULT (STDMETHODCALLTYPE *WaitUntilDone)(
        ISpeechVoice* This,
        LONG msTimeout,
        VARIANT_BOOL *Done);

    HRESULT (STDMETHODCALLTYPE *SpeakCompleteEvent)(
        ISpeechVoice* This,
        LONG *Handle);

    HRESULT (STDMETHODCALLTYPE *IsUISupported)(
        ISpeechVoice* This,
        const BSTR TypeOfUI,
        const VARIANT *ExtraData,
        VARIANT_BOOL *Supported);

    HRESULT (STDMETHODCALLTYPE *DisplayUI)(
        ISpeechVoice* This,
        LONG hWndParent,
        BSTR Title,
        const BSTR TypeOfUI,
        const VARIANT *ExtraData);

    END_INTERFACE
} ISpeechVoiceVtbl;
interface ISpeechVoice {
    CONST_VTBL ISpeechVoiceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechVoice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechVoice_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechVoice_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechVoice_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechVoice_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechVoice_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechVoice_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechVoice methods ***/
#define ISpeechVoice_get_Status(This,Status) (This)->lpVtbl->get_Status(This,Status)
#define ISpeechVoice_get_Voice(This,Voice) (This)->lpVtbl->get_Voice(This,Voice)
#define ISpeechVoice_putref_Voice(This,Voice) (This)->lpVtbl->putref_Voice(This,Voice)
#define ISpeechVoice_get_AudioOutput(This,AudioOutput) (This)->lpVtbl->get_AudioOutput(This,AudioOutput)
#define ISpeechVoice_putref_AudioOutput(This,AudioOutput) (This)->lpVtbl->putref_AudioOutput(This,AudioOutput)
#define ISpeechVoice_get_AudioOutputStream(This,AudioOutputStream) (This)->lpVtbl->get_AudioOutputStream(This,AudioOutputStream)
#define ISpeechVoice_putref_AudioOutputStream(This,AudioOutputStream) (This)->lpVtbl->putref_AudioOutputStream(This,AudioOutputStream)
#define ISpeechVoice_get_Rate(This,Rate) (This)->lpVtbl->get_Rate(This,Rate)
#define ISpeechVoice_put_Rate(This,Rate) (This)->lpVtbl->put_Rate(This,Rate)
#define ISpeechVoice_get_Volume(This,Volume) (This)->lpVtbl->get_Volume(This,Volume)
#define ISpeechVoice_put_Volume(This,Volume) (This)->lpVtbl->put_Volume(This,Volume)
#define ISpeechVoice_put_AllowAudioOutputFormatChangesOnNextSet(This,Allow) (This)->lpVtbl->put_AllowAudioOutputFormatChangesOnNextSet(This,Allow)
#define ISpeechVoice_get_AllowAudioOutputFormatChangesOnNextSet(This,Allow) (This)->lpVtbl->get_AllowAudioOutputFormatChangesOnNextSet(This,Allow)
#define ISpeechVoice_get_EventInterests(This,EventInterestFlags) (This)->lpVtbl->get_EventInterests(This,EventInterestFlags)
#define ISpeechVoice_put_EventInterests(This,EventInterestFlags) (This)->lpVtbl->put_EventInterests(This,EventInterestFlags)
#define ISpeechVoice_put_Priority(This,Priority) (This)->lpVtbl->put_Priority(This,Priority)
#define ISpeechVoice_get_Priority(This,Priority) (This)->lpVtbl->get_Priority(This,Priority)
#define ISpeechVoice_put_AlertBoundary(This,Boundary) (This)->lpVtbl->put_AlertBoundary(This,Boundary)
#define ISpeechVoice_get_AlertBoundary(This,Boundary) (This)->lpVtbl->get_AlertBoundary(This,Boundary)
#define ISpeechVoice_put_SynchronousSpeakTimeout(This,msTimeout) (This)->lpVtbl->put_SynchronousSpeakTimeout(This,msTimeout)
#define ISpeechVoice_get_SynchronousSpeakTimeout(This,msTimeout) (This)->lpVtbl->get_SynchronousSpeakTimeout(This,msTimeout)
#define ISpeechVoice_Speak(This,Text,Flags,StreamNumber) (This)->lpVtbl->Speak(This,Text,Flags,StreamNumber)
#define ISpeechVoice_SpeakStream(This,Stream,Flags,StreamNumber) (This)->lpVtbl->SpeakStream(This,Stream,Flags,StreamNumber)
#define ISpeechVoice_Pause(This) (This)->lpVtbl->Pause(This)
#define ISpeechVoice_Resume(This) (This)->lpVtbl->Resume(This)
#define ISpeechVoice_Skip(This,Type,NumItems,NumSkipped) (This)->lpVtbl->Skip(This,Type,NumItems,NumSkipped)
#define ISpeechVoice_GetVoices(This,RequiredAttributes,OptionalAttributes,ObjectTokens) (This)->lpVtbl->GetVoices(This,RequiredAttributes,OptionalAttributes,ObjectTokens)
#define ISpeechVoice_GetAudioOutputs(This,RequiredAttributes,OptionalAttributes,ObjectTokens) (This)->lpVtbl->GetAudioOutputs(This,RequiredAttributes,OptionalAttributes,ObjectTokens)
#define ISpeechVoice_WaitUntilDone(This,msTimeout,Done) (This)->lpVtbl->WaitUntilDone(This,msTimeout,Done)
#define ISpeechVoice_SpeakCompleteEvent(This,Handle) (This)->lpVtbl->SpeakCompleteEvent(This,Handle)
#define ISpeechVoice_IsUISupported(This,TypeOfUI,ExtraData,Supported) (This)->lpVtbl->IsUISupported(This,TypeOfUI,ExtraData,Supported)
#define ISpeechVoice_DisplayUI(This,hWndParent,Title,TypeOfUI,ExtraData) (This)->lpVtbl->DisplayUI(This,hWndParent,Title,TypeOfUI,ExtraData)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechVoice_QueryInterface(ISpeechVoice* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechVoice_AddRef(ISpeechVoice* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechVoice_Release(ISpeechVoice* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechVoice_GetTypeInfoCount(ISpeechVoice* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechVoice_GetTypeInfo(ISpeechVoice* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechVoice_GetIDsOfNames(ISpeechVoice* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechVoice_Invoke(ISpeechVoice* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechVoice methods ***/
static FORCEINLINE HRESULT ISpeechVoice_get_Status(ISpeechVoice* This,ISpeechVoiceStatus **Status) {
    return This->lpVtbl->get_Status(This,Status);
}
static FORCEINLINE HRESULT ISpeechVoice_get_Voice(ISpeechVoice* This,ISpeechObjectToken **Voice) {
    return This->lpVtbl->get_Voice(This,Voice);
}
static FORCEINLINE HRESULT ISpeechVoice_putref_Voice(ISpeechVoice* This,ISpeechObjectToken *Voice) {
    return This->lpVtbl->putref_Voice(This,Voice);
}
static FORCEINLINE HRESULT ISpeechVoice_get_AudioOutput(ISpeechVoice* This,ISpeechObjectToken **AudioOutput) {
    return This->lpVtbl->get_AudioOutput(This,AudioOutput);
}
static FORCEINLINE HRESULT ISpeechVoice_putref_AudioOutput(ISpeechVoice* This,ISpeechObjectToken *AudioOutput) {
    return This->lpVtbl->putref_AudioOutput(This,AudioOutput);
}
static FORCEINLINE HRESULT ISpeechVoice_get_AudioOutputStream(ISpeechVoice* This,ISpeechBaseStream **AudioOutputStream) {
    return This->lpVtbl->get_AudioOutputStream(This,AudioOutputStream);
}
static FORCEINLINE HRESULT ISpeechVoice_putref_AudioOutputStream(ISpeechVoice* This,ISpeechBaseStream *AudioOutputStream) {
    return This->lpVtbl->putref_AudioOutputStream(This,AudioOutputStream);
}
static FORCEINLINE HRESULT ISpeechVoice_get_Rate(ISpeechVoice* This,LONG *Rate) {
    return This->lpVtbl->get_Rate(This,Rate);
}
static FORCEINLINE HRESULT ISpeechVoice_put_Rate(ISpeechVoice* This,LONG Rate) {
    return This->lpVtbl->put_Rate(This,Rate);
}
static FORCEINLINE HRESULT ISpeechVoice_get_Volume(ISpeechVoice* This,LONG *Volume) {
    return This->lpVtbl->get_Volume(This,Volume);
}
static FORCEINLINE HRESULT ISpeechVoice_put_Volume(ISpeechVoice* This,LONG Volume) {
    return This->lpVtbl->put_Volume(This,Volume);
}
static FORCEINLINE HRESULT ISpeechVoice_put_AllowAudioOutputFormatChangesOnNextSet(ISpeechVoice* This,VARIANT_BOOL Allow) {
    return This->lpVtbl->put_AllowAudioOutputFormatChangesOnNextSet(This,Allow);
}
static FORCEINLINE HRESULT ISpeechVoice_get_AllowAudioOutputFormatChangesOnNextSet(ISpeechVoice* This,VARIANT_BOOL *Allow) {
    return This->lpVtbl->get_AllowAudioOutputFormatChangesOnNextSet(This,Allow);
}
static FORCEINLINE HRESULT ISpeechVoice_get_EventInterests(ISpeechVoice* This,SpeechVoiceEvents *EventInterestFlags) {
    return This->lpVtbl->get_EventInterests(This,EventInterestFlags);
}
static FORCEINLINE HRESULT ISpeechVoice_put_EventInterests(ISpeechVoice* This,SpeechVoiceEvents EventInterestFlags) {
    return This->lpVtbl->put_EventInterests(This,EventInterestFlags);
}
static FORCEINLINE HRESULT ISpeechVoice_put_Priority(ISpeechVoice* This,SpeechVoicePriority Priority) {
    return This->lpVtbl->put_Priority(This,Priority);
}
static FORCEINLINE HRESULT ISpeechVoice_get_Priority(ISpeechVoice* This,SpeechVoicePriority *Priority) {
    return This->lpVtbl->get_Priority(This,Priority);
}
static FORCEINLINE HRESULT ISpeechVoice_put_AlertBoundary(ISpeechVoice* This,SpeechVoiceEvents Boundary) {
    return This->lpVtbl->put_AlertBoundary(This,Boundary);
}
static FORCEINLINE HRESULT ISpeechVoice_get_AlertBoundary(ISpeechVoice* This,SpeechVoiceEvents *Boundary) {
    return This->lpVtbl->get_AlertBoundary(This,Boundary);
}
static FORCEINLINE HRESULT ISpeechVoice_put_SynchronousSpeakTimeout(ISpeechVoice* This,LONG msTimeout) {
    return This->lpVtbl->put_SynchronousSpeakTimeout(This,msTimeout);
}
static FORCEINLINE HRESULT ISpeechVoice_get_SynchronousSpeakTimeout(ISpeechVoice* This,LONG *msTimeout) {
    return This->lpVtbl->get_SynchronousSpeakTimeout(This,msTimeout);
}
static FORCEINLINE HRESULT ISpeechVoice_Speak(ISpeechVoice* This,BSTR Text,SpeechVoiceSpeakFlags Flags,LONG *StreamNumber) {
    return This->lpVtbl->Speak(This,Text,Flags,StreamNumber);
}
static FORCEINLINE HRESULT ISpeechVoice_SpeakStream(ISpeechVoice* This,ISpeechBaseStream *Stream,SpeechVoiceSpeakFlags Flags,LONG *StreamNumber) {
    return This->lpVtbl->SpeakStream(This,Stream,Flags,StreamNumber);
}
static FORCEINLINE HRESULT ISpeechVoice_Pause(ISpeechVoice* This) {
    return This->lpVtbl->Pause(This);
}
static FORCEINLINE HRESULT ISpeechVoice_Resume(ISpeechVoice* This) {
    return This->lpVtbl->Resume(This);
}
static FORCEINLINE HRESULT ISpeechVoice_Skip(ISpeechVoice* This,const BSTR Type,LONG NumItems,LONG *NumSkipped) {
    return This->lpVtbl->Skip(This,Type,NumItems,NumSkipped);
}
static FORCEINLINE HRESULT ISpeechVoice_GetVoices(ISpeechVoice* This,BSTR RequiredAttributes,BSTR OptionalAttributes,ISpeechObjectTokens **ObjectTokens) {
    return This->lpVtbl->GetVoices(This,RequiredAttributes,OptionalAttributes,ObjectTokens);
}
static FORCEINLINE HRESULT ISpeechVoice_GetAudioOutputs(ISpeechVoice* This,BSTR RequiredAttributes,BSTR OptionalAttributes,ISpeechObjectTokens **ObjectTokens) {
    return This->lpVtbl->GetAudioOutputs(This,RequiredAttributes,OptionalAttributes,ObjectTokens);
}
static FORCEINLINE HRESULT ISpeechVoice_WaitUntilDone(ISpeechVoice* This,LONG msTimeout,VARIANT_BOOL *Done) {
    return This->lpVtbl->WaitUntilDone(This,msTimeout,Done);
}
static FORCEINLINE HRESULT ISpeechVoice_SpeakCompleteEvent(ISpeechVoice* This,LONG *Handle) {
    return This->lpVtbl->SpeakCompleteEvent(This,Handle);
}
static FORCEINLINE HRESULT ISpeechVoice_IsUISupported(ISpeechVoice* This,const BSTR TypeOfUI,const VARIANT *ExtraData,VARIANT_BOOL *Supported) {
    return This->lpVtbl->IsUISupported(This,TypeOfUI,ExtraData,Supported);
}
static FORCEINLINE HRESULT ISpeechVoice_DisplayUI(ISpeechVoice* This,LONG hWndParent,BSTR Title,const BSTR TypeOfUI,const VARIANT *ExtraData) {
    return This->lpVtbl->DisplayUI(This,hWndParent,Title,TypeOfUI,ExtraData);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechVoice_get_Status_Proxy(
    ISpeechVoice* This,
    ISpeechVoiceStatus **Status);
void __RPC_STUB ISpeechVoice_get_Status_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_get_Voice_Proxy(
    ISpeechVoice* This,
    ISpeechObjectToken **Voice);
void __RPC_STUB ISpeechVoice_get_Voice_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_putref_Voice_Proxy(
    ISpeechVoice* This,
    ISpeechObjectToken *Voice);
void __RPC_STUB ISpeechVoice_putref_Voice_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_get_AudioOutput_Proxy(
    ISpeechVoice* This,
    ISpeechObjectToken **AudioOutput);
void __RPC_STUB ISpeechVoice_get_AudioOutput_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_putref_AudioOutput_Proxy(
    ISpeechVoice* This,
    ISpeechObjectToken *AudioOutput);
void __RPC_STUB ISpeechVoice_putref_AudioOutput_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_get_AudioOutputStream_Proxy(
    ISpeechVoice* This,
    ISpeechBaseStream **AudioOutputStream);
void __RPC_STUB ISpeechVoice_get_AudioOutputStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_putref_AudioOutputStream_Proxy(
    ISpeechVoice* This,
    ISpeechBaseStream *AudioOutputStream);
void __RPC_STUB ISpeechVoice_putref_AudioOutputStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_get_Rate_Proxy(
    ISpeechVoice* This,
    LONG *Rate);
void __RPC_STUB ISpeechVoice_get_Rate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_put_Rate_Proxy(
    ISpeechVoice* This,
    LONG Rate);
void __RPC_STUB ISpeechVoice_put_Rate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_get_Volume_Proxy(
    ISpeechVoice* This,
    LONG *Volume);
void __RPC_STUB ISpeechVoice_get_Volume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_put_Volume_Proxy(
    ISpeechVoice* This,
    LONG Volume);
void __RPC_STUB ISpeechVoice_put_Volume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_put_AllowAudioOutputFormatChangesOnNextSet_Proxy(
    ISpeechVoice* This,
    VARIANT_BOOL Allow);
void __RPC_STUB ISpeechVoice_put_AllowAudioOutputFormatChangesOnNextSet_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_get_AllowAudioOutputFormatChangesOnNextSet_Proxy(
    ISpeechVoice* This,
    VARIANT_BOOL *Allow);
void __RPC_STUB ISpeechVoice_get_AllowAudioOutputFormatChangesOnNextSet_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_get_EventInterests_Proxy(
    ISpeechVoice* This,
    SpeechVoiceEvents *EventInterestFlags);
void __RPC_STUB ISpeechVoice_get_EventInterests_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_put_EventInterests_Proxy(
    ISpeechVoice* This,
    SpeechVoiceEvents EventInterestFlags);
void __RPC_STUB ISpeechVoice_put_EventInterests_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_put_Priority_Proxy(
    ISpeechVoice* This,
    SpeechVoicePriority Priority);
void __RPC_STUB ISpeechVoice_put_Priority_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_get_Priority_Proxy(
    ISpeechVoice* This,
    SpeechVoicePriority *Priority);
void __RPC_STUB ISpeechVoice_get_Priority_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_put_AlertBoundary_Proxy(
    ISpeechVoice* This,
    SpeechVoiceEvents Boundary);
void __RPC_STUB ISpeechVoice_put_AlertBoundary_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_get_AlertBoundary_Proxy(
    ISpeechVoice* This,
    SpeechVoiceEvents *Boundary);
void __RPC_STUB ISpeechVoice_get_AlertBoundary_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_put_SynchronousSpeakTimeout_Proxy(
    ISpeechVoice* This,
    LONG msTimeout);
void __RPC_STUB ISpeechVoice_put_SynchronousSpeakTimeout_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_get_SynchronousSpeakTimeout_Proxy(
    ISpeechVoice* This,
    LONG *msTimeout);
void __RPC_STUB ISpeechVoice_get_SynchronousSpeakTimeout_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_Speak_Proxy(
    ISpeechVoice* This,
    BSTR Text,
    SpeechVoiceSpeakFlags Flags,
    LONG *StreamNumber);
void __RPC_STUB ISpeechVoice_Speak_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_SpeakStream_Proxy(
    ISpeechVoice* This,
    ISpeechBaseStream *Stream,
    SpeechVoiceSpeakFlags Flags,
    LONG *StreamNumber);
void __RPC_STUB ISpeechVoice_SpeakStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_Pause_Proxy(
    ISpeechVoice* This);
void __RPC_STUB ISpeechVoice_Pause_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_Resume_Proxy(
    ISpeechVoice* This);
void __RPC_STUB ISpeechVoice_Resume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_Skip_Proxy(
    ISpeechVoice* This,
    const BSTR Type,
    LONG NumItems,
    LONG *NumSkipped);
void __RPC_STUB ISpeechVoice_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_GetVoices_Proxy(
    ISpeechVoice* This,
    BSTR RequiredAttributes,
    BSTR OptionalAttributes,
    ISpeechObjectTokens **ObjectTokens);
void __RPC_STUB ISpeechVoice_GetVoices_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_GetAudioOutputs_Proxy(
    ISpeechVoice* This,
    BSTR RequiredAttributes,
    BSTR OptionalAttributes,
    ISpeechObjectTokens **ObjectTokens);
void __RPC_STUB ISpeechVoice_GetAudioOutputs_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_WaitUntilDone_Proxy(
    ISpeechVoice* This,
    LONG msTimeout,
    VARIANT_BOOL *Done);
void __RPC_STUB ISpeechVoice_WaitUntilDone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_SpeakCompleteEvent_Proxy(
    ISpeechVoice* This,
    LONG *Handle);
void __RPC_STUB ISpeechVoice_SpeakCompleteEvent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_IsUISupported_Proxy(
    ISpeechVoice* This,
    const BSTR TypeOfUI,
    const VARIANT *ExtraData,
    VARIANT_BOOL *Supported);
void __RPC_STUB ISpeechVoice_IsUISupported_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoice_DisplayUI_Proxy(
    ISpeechVoice* This,
    LONG hWndParent,
    BSTR Title,
    const BSTR TypeOfUI,
    const VARIANT *ExtraData);
void __RPC_STUB ISpeechVoice_DisplayUI_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechVoice_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechVoiceStatus interface
 */
#ifndef __ISpeechVoiceStatus_INTERFACE_DEFINED__
#define __ISpeechVoiceStatus_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechVoiceStatus, 0x8be47b07, 0x57f6, 0x11d2, 0x9e,0xee, 0x00,0xc0,0x4f,0x79,0x73,0x96);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8be47b07-57f6-11d2-9eee-00c04f797396")
ISpeechVoiceStatus : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_CurrentStreamNumber(
        LONG *StreamNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LastStreamNumberQueued(
        LONG *StreamNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LastHResult(
        LONG *HResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RunningState(
        SpeechRunState *State) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_InputWordPosition(
        LONG *Position) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_InputWordLength(
        LONG *Length) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_InputSentencePosition(
        LONG *Position) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_InputSentenceLength(
        LONG *Length) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LastBookmark(
        BSTR *Bookmark) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LastBookmarkId(
        LONG *BookmarkId) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PhonemeId(
        short *PhoneId) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_VisemeId(
        short *VisemeId) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechVoiceStatus, 0x8be47b07, 0x57f6, 0x11d2, 0x9e,0xee, 0x00,0xc0,0x4f,0x79,0x73,0x96)
#endif
#else
typedef struct ISpeechVoiceStatusVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechVoiceStatus* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechVoiceStatus* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechVoiceStatus* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechVoiceStatus* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechVoiceStatus* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechVoiceStatus* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechVoiceStatus* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechVoiceStatus methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentStreamNumber)(
        ISpeechVoiceStatus* This,
        LONG *StreamNumber);

    HRESULT (STDMETHODCALLTYPE *get_LastStreamNumberQueued)(
        ISpeechVoiceStatus* This,
        LONG *StreamNumber);

    HRESULT (STDMETHODCALLTYPE *get_LastHResult)(
        ISpeechVoiceStatus* This,
        LONG *HResult);

    HRESULT (STDMETHODCALLTYPE *get_RunningState)(
        ISpeechVoiceStatus* This,
        SpeechRunState *State);

    HRESULT (STDMETHODCALLTYPE *get_InputWordPosition)(
        ISpeechVoiceStatus* This,
        LONG *Position);

    HRESULT (STDMETHODCALLTYPE *get_InputWordLength)(
        ISpeechVoiceStatus* This,
        LONG *Length);

    HRESULT (STDMETHODCALLTYPE *get_InputSentencePosition)(
        ISpeechVoiceStatus* This,
        LONG *Position);

    HRESULT (STDMETHODCALLTYPE *get_InputSentenceLength)(
        ISpeechVoiceStatus* This,
        LONG *Length);

    HRESULT (STDMETHODCALLTYPE *get_LastBookmark)(
        ISpeechVoiceStatus* This,
        BSTR *Bookmark);

    HRESULT (STDMETHODCALLTYPE *get_LastBookmarkId)(
        ISpeechVoiceStatus* This,
        LONG *BookmarkId);

    HRESULT (STDMETHODCALLTYPE *get_PhonemeId)(
        ISpeechVoiceStatus* This,
        short *PhoneId);

    HRESULT (STDMETHODCALLTYPE *get_VisemeId)(
        ISpeechVoiceStatus* This,
        short *VisemeId);

    END_INTERFACE
} ISpeechVoiceStatusVtbl;
interface ISpeechVoiceStatus {
    CONST_VTBL ISpeechVoiceStatusVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechVoiceStatus_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechVoiceStatus_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechVoiceStatus_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechVoiceStatus_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechVoiceStatus_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechVoiceStatus_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechVoiceStatus_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechVoiceStatus methods ***/
#define ISpeechVoiceStatus_get_CurrentStreamNumber(This,StreamNumber) (This)->lpVtbl->get_CurrentStreamNumber(This,StreamNumber)
#define ISpeechVoiceStatus_get_LastStreamNumberQueued(This,StreamNumber) (This)->lpVtbl->get_LastStreamNumberQueued(This,StreamNumber)
#define ISpeechVoiceStatus_get_LastHResult(This,HResult) (This)->lpVtbl->get_LastHResult(This,HResult)
#define ISpeechVoiceStatus_get_RunningState(This,State) (This)->lpVtbl->get_RunningState(This,State)
#define ISpeechVoiceStatus_get_InputWordPosition(This,Position) (This)->lpVtbl->get_InputWordPosition(This,Position)
#define ISpeechVoiceStatus_get_InputWordLength(This,Length) (This)->lpVtbl->get_InputWordLength(This,Length)
#define ISpeechVoiceStatus_get_InputSentencePosition(This,Position) (This)->lpVtbl->get_InputSentencePosition(This,Position)
#define ISpeechVoiceStatus_get_InputSentenceLength(This,Length) (This)->lpVtbl->get_InputSentenceLength(This,Length)
#define ISpeechVoiceStatus_get_LastBookmark(This,Bookmark) (This)->lpVtbl->get_LastBookmark(This,Bookmark)
#define ISpeechVoiceStatus_get_LastBookmarkId(This,BookmarkId) (This)->lpVtbl->get_LastBookmarkId(This,BookmarkId)
#define ISpeechVoiceStatus_get_PhonemeId(This,PhoneId) (This)->lpVtbl->get_PhonemeId(This,PhoneId)
#define ISpeechVoiceStatus_get_VisemeId(This,VisemeId) (This)->lpVtbl->get_VisemeId(This,VisemeId)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechVoiceStatus_QueryInterface(ISpeechVoiceStatus* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechVoiceStatus_AddRef(ISpeechVoiceStatus* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechVoiceStatus_Release(ISpeechVoiceStatus* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechVoiceStatus_GetTypeInfoCount(ISpeechVoiceStatus* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechVoiceStatus_GetTypeInfo(ISpeechVoiceStatus* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechVoiceStatus_GetIDsOfNames(ISpeechVoiceStatus* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechVoiceStatus_Invoke(ISpeechVoiceStatus* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechVoiceStatus methods ***/
static FORCEINLINE HRESULT ISpeechVoiceStatus_get_CurrentStreamNumber(ISpeechVoiceStatus* This,LONG *StreamNumber) {
    return This->lpVtbl->get_CurrentStreamNumber(This,StreamNumber);
}
static FORCEINLINE HRESULT ISpeechVoiceStatus_get_LastStreamNumberQueued(ISpeechVoiceStatus* This,LONG *StreamNumber) {
    return This->lpVtbl->get_LastStreamNumberQueued(This,StreamNumber);
}
static FORCEINLINE HRESULT ISpeechVoiceStatus_get_LastHResult(ISpeechVoiceStatus* This,LONG *HResult) {
    return This->lpVtbl->get_LastHResult(This,HResult);
}
static FORCEINLINE HRESULT ISpeechVoiceStatus_get_RunningState(ISpeechVoiceStatus* This,SpeechRunState *State) {
    return This->lpVtbl->get_RunningState(This,State);
}
static FORCEINLINE HRESULT ISpeechVoiceStatus_get_InputWordPosition(ISpeechVoiceStatus* This,LONG *Position) {
    return This->lpVtbl->get_InputWordPosition(This,Position);
}
static FORCEINLINE HRESULT ISpeechVoiceStatus_get_InputWordLength(ISpeechVoiceStatus* This,LONG *Length) {
    return This->lpVtbl->get_InputWordLength(This,Length);
}
static FORCEINLINE HRESULT ISpeechVoiceStatus_get_InputSentencePosition(ISpeechVoiceStatus* This,LONG *Position) {
    return This->lpVtbl->get_InputSentencePosition(This,Position);
}
static FORCEINLINE HRESULT ISpeechVoiceStatus_get_InputSentenceLength(ISpeechVoiceStatus* This,LONG *Length) {
    return This->lpVtbl->get_InputSentenceLength(This,Length);
}
static FORCEINLINE HRESULT ISpeechVoiceStatus_get_LastBookmark(ISpeechVoiceStatus* This,BSTR *Bookmark) {
    return This->lpVtbl->get_LastBookmark(This,Bookmark);
}
static FORCEINLINE HRESULT ISpeechVoiceStatus_get_LastBookmarkId(ISpeechVoiceStatus* This,LONG *BookmarkId) {
    return This->lpVtbl->get_LastBookmarkId(This,BookmarkId);
}
static FORCEINLINE HRESULT ISpeechVoiceStatus_get_PhonemeId(ISpeechVoiceStatus* This,short *PhoneId) {
    return This->lpVtbl->get_PhonemeId(This,PhoneId);
}
static FORCEINLINE HRESULT ISpeechVoiceStatus_get_VisemeId(ISpeechVoiceStatus* This,short *VisemeId) {
    return This->lpVtbl->get_VisemeId(This,VisemeId);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechVoiceStatus_get_CurrentStreamNumber_Proxy(
    ISpeechVoiceStatus* This,
    LONG *StreamNumber);
void __RPC_STUB ISpeechVoiceStatus_get_CurrentStreamNumber_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoiceStatus_get_LastStreamNumberQueued_Proxy(
    ISpeechVoiceStatus* This,
    LONG *StreamNumber);
void __RPC_STUB ISpeechVoiceStatus_get_LastStreamNumberQueued_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoiceStatus_get_LastHResult_Proxy(
    ISpeechVoiceStatus* This,
    LONG *HResult);
void __RPC_STUB ISpeechVoiceStatus_get_LastHResult_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoiceStatus_get_RunningState_Proxy(
    ISpeechVoiceStatus* This,
    SpeechRunState *State);
void __RPC_STUB ISpeechVoiceStatus_get_RunningState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoiceStatus_get_InputWordPosition_Proxy(
    ISpeechVoiceStatus* This,
    LONG *Position);
void __RPC_STUB ISpeechVoiceStatus_get_InputWordPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoiceStatus_get_InputWordLength_Proxy(
    ISpeechVoiceStatus* This,
    LONG *Length);
void __RPC_STUB ISpeechVoiceStatus_get_InputWordLength_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoiceStatus_get_InputSentencePosition_Proxy(
    ISpeechVoiceStatus* This,
    LONG *Position);
void __RPC_STUB ISpeechVoiceStatus_get_InputSentencePosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoiceStatus_get_InputSentenceLength_Proxy(
    ISpeechVoiceStatus* This,
    LONG *Length);
void __RPC_STUB ISpeechVoiceStatus_get_InputSentenceLength_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoiceStatus_get_LastBookmark_Proxy(
    ISpeechVoiceStatus* This,
    BSTR *Bookmark);
void __RPC_STUB ISpeechVoiceStatus_get_LastBookmark_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoiceStatus_get_LastBookmarkId_Proxy(
    ISpeechVoiceStatus* This,
    LONG *BookmarkId);
void __RPC_STUB ISpeechVoiceStatus_get_LastBookmarkId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoiceStatus_get_PhonemeId_Proxy(
    ISpeechVoiceStatus* This,
    short *PhoneId);
void __RPC_STUB ISpeechVoiceStatus_get_PhonemeId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechVoiceStatus_get_VisemeId_Proxy(
    ISpeechVoiceStatus* This,
    short *VisemeId);
void __RPC_STUB ISpeechVoiceStatus_get_VisemeId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechVoiceStatus_INTERFACE_DEFINED__ */

typedef enum SpeechVisemeType {
    SVP_0 = 0,
    SVP_1 = 1,
    SVP_2 = 2,
    SVP_3 = 3,
    SVP_4 = 4,
    SVP_5 = 5,
    SVP_6 = 6,
    SVP_7 = 7,
    SVP_8 = 8,
    SVP_9 = 9,
    SVP_10 = 10,
    SVP_11 = 11,
    SVP_12 = 12,
    SVP_13 = 13,
    SVP_14 = 14,
    SVP_15 = 15,
    SVP_16 = 16,
    SVP_17 = 17,
    SVP_18 = 18,
    SVP_19 = 19,
    SVP_20 = 20,
    SVP_21 = 21
} SpeechVisemeType;
typedef enum SpeechVisemeFeature {
    SVF_None = 0,
    SVF_Stressed = SPVFEATURE_STRESSED,
    SVF_Emphasis = SPVFEATURE_EMPHASIS
} SpeechVisemeFeature;
typedef enum DISPID_SpeechVoiceEvent {
    DISPID_SVEStreamStart = 1,
    DISPID_SVEStreamEnd = 2,
    DISPID_SVEVoiceChange = 3,
    DISPID_SVEBookmark = 4,
    DISPID_SVEWord = 5,
    DISPID_SVEPhoneme = 6,
    DISPID_SVESentenceBoundary = 7,
    DISPID_SVEViseme = 8,
    DISPID_SVEAudioLevel = 9,
    DISPID_SVEEnginePrivate = 10
} DISPID_SpeechVoiceEvent;
typedef enum DISPID_SpeechRecognizer {
    DISPID_SRRecognizer = 1,
    DISPID_SRAllowAudioInputFormatChangesOnNextSet = 2,
    DISPID_SRAudioInput = 3,
    DISPID_SRAudioInputStream = 4,
    DISPID_SRIsShared = 5,
    DISPID_SRState = 6,
    DISPID_SRStatus = 7,
    DISPID_SRProfile = 8,
    DISPID_SREmulateRecognition = 9,
    DISPID_SRCreateRecoContext = 10,
    DISPID_SRGetFormat = 11,
    DISPID_SRSetPropertyNumber = 12,
    DISPID_SRGetPropertyNumber = 13,
    DISPID_SRSetPropertyString = 14,
    DISPID_SRGetPropertyString = 15,
    DISPID_SRIsUISupported = 16,
    DISPID_SRDisplayUI = 17,
    DISPID_SRGetRecognizers = 18,
    DISPID_SVGetAudioInputs = 19,
    DISPID_SVGetProfiles = 20
} DISPID_SpeechRecognizer;
typedef enum SpeechRecognizerState {
    SRSInactive = SPRST_INACTIVE,
    SRSActive = SPRST_ACTIVE,
    SRSActiveAlways = SPRST_ACTIVE_ALWAYS,
    SRSInactiveWithPurge = SPRST_INACTIVE_WITH_PURGE
} SpeechRecognizerState;
typedef enum SpeechDisplayAttributes {
    SDA_No_Trailing_Space = 0,
    SDA_One_Trailing_Space = SPAF_ONE_TRAILING_SPACE,
    SDA_Two_Trailing_Spaces = SPAF_TWO_TRAILING_SPACES,
    SDA_Consume_Leading_Spaces = SPAF_CONSUME_LEADING_SPACES
} SpeechDisplayAttributes;
typedef enum SpeechFormatType {
    SFTInput = SPWF_INPUT,
    SFTSREngine = SPWF_SRENGINE
} SpeechFormatType;
typedef enum DISPID_SpeechRecognizerStatus {
    DISPID_SRSAudioStatus = 1,
    DISPID_SRSCurrentStreamPosition = 2,
    DISPID_SRSCurrentStreamNumber = 3,
    DISPID_SRSNumberOfActiveRules = 4,
    DISPID_SRSClsidEngine = 5,
    DISPID_SRSSupportedLanguages = 6
} DISPID_SpeechRecognizerStatus;
typedef enum DISPID_SpeechRecoContext {
    DISPID_SRCRecognizer = 1,
    DISPID_SRCAudioInInterferenceStatus = 2,
    DISPID_SRCRequestedUIType = 3,
    DISPID_SRCVoice = 4,
    DISPID_SRAllowVoiceFormatMatchingOnNextSet = 5,
    DISPID_SRCVoicePurgeEvent = 6,
    DISPID_SRCEventInterests = 7,
    DISPID_SRCCmdMaxAlternates = 8,
    DISPID_SRCState = 9,
    DISPID_SRCRetainedAudio = 10,
    DISPID_SRCRetainedAudioFormat = 11,
    DISPID_SRCPause = 12,
    DISPID_SRCResume = 13,
    DISPID_SRCCreateGrammar = 14,
    DISPID_SRCCreateResultFromMemory = 15,
    DISPID_SRCBookmark = 16,
    DISPID_SRCSetAdaptationData = 17
} DISPID_SpeechRecoContext;
typedef enum SpeechRetainedAudioOptions {
    SRAONone = SPAO_NONE,
    SRAORetainAudio = SPAO_RETAIN_AUDIO
} SpeechRetainedAudioOptions;
typedef enum SpeechBookmarkOptions {
    SBONone = SPBO_NONE,
    SBOPause = SPBO_PAUSE
} SpeechBookmarkOptions;
typedef enum SpeechInterference {
    SINone = SPINTERFERENCE_NONE,
    SINoise = SPINTERFERENCE_NOISE,
    SINoSignal = SPINTERFERENCE_NOSIGNAL,
    SITooLoud = SPINTERFERENCE_TOOLOUD,
    SITooQuiet = SPINTERFERENCE_TOOQUIET,
    SITooFast = SPINTERFERENCE_TOOFAST,
    SITooSlow = SPINTERFERENCE_TOOSLOW
} SpeechInterference;
typedef enum SpeechRecoEvents {
    SREStreamEnd = 0x1,
    SRESoundStart = 0x2,
    SRESoundEnd = 0x4,
    SREPhraseStart = 0x8,
    SRERecognition = 0x10,
    SREHypothesis = 0x20,
    SREBookmark = 0x40,
    SREPropertyNumChange = 0x80,
    SREPropertyStringChange = 0x100,
    SREFalseRecognition = 0x200,
    SREInterference = 0x400,
    SRERequestUI = 0x800,
    SREStateChange = 0x1000,
    SREAdaptation = 0x2000,
    SREStreamStart = 0x4000,
    SRERecoOtherContext = 0x8000,
    SREAudioLevel = 0x10000,
    SREPrivate = 0x40000,
    SREAllEvents = 0x5ffff
} SpeechRecoEvents;
typedef enum SpeechRecoContextState {
    SRCS_Disabled = SPCS_DISABLED,
    SRCS_Enabled = SPCS_ENABLED
} SpeechRecoContextState;
typedef enum DISPIDSPRG {
    DISPID_SRGId = 1,
    DISPID_SRGRecoContext = 2,
    DISPID_SRGState = 3,
    DISPID_SRGRules = 4,
    DISPID_SRGReset = 5,
    DISPID_SRGCommit = 6,
    DISPID_SRGCmdLoadFromFile = 7,
    DISPID_SRGCmdLoadFromObject = 8,
    DISPID_SRGCmdLoadFromResource = 9,
    DISPID_SRGCmdLoadFromMemory = 10,
    DISPID_SRGCmdLoadFromProprietaryGrammar = 11,
    DISPID_SRGCmdSetRuleState = 12,
    DISPID_SRGCmdSetRuleIdState = 13,
    DISPID_SRGDictationLoad = 14,
    DISPID_SRGDictationUnload = 15,
    DISPID_SRGDictationSetState = 16,
    DISPID_SRGSetWordSequenceData = 17,
    DISPID_SRGSetTextSelection = 18,
    DISPID_SRGIsPronounceable = 19
} DISPIDSPRG;
typedef enum SpeechLoadOption {
    SLOStatic = SPLO_STATIC,
    SLODynamic = SPLO_DYNAMIC
} SpeechLoadOption;
typedef enum SpeechWordPronounceable {
    SWPUnknownWordUnpronounceable = SPWP_UNKNOWN_WORD_UNPRONOUNCEABLE,
    SWPUnknownWordPronounceable = SPWP_UNKNOWN_WORD_PRONOUNCEABLE,
    SWPKnownWordPronounceable = SPWP_KNOWN_WORD_PRONOUNCEABLE
} SpeechWordPronounceable;
typedef enum SpeechGrammarState {
    SGSEnabled = SPGS_ENABLED,
    SGSDisabled = SPGS_DISABLED,
    SGSExclusive = SPGS_EXCLUSIVE
} SpeechGrammarState;
typedef enum SpeechRuleState {
    SGDSInactive = SPRS_INACTIVE,
    SGDSActive = SPRS_ACTIVE,
    SGDSActiveWithAutoPause = SPRS_ACTIVE_WITH_AUTO_PAUSE
} SpeechRuleState;
typedef enum SpeechRuleAttributes {
    SRATopLevel = SPRAF_TopLevel,
    SRADefaultToActive = SPRAF_Active,
    SRAExport = SPRAF_Export,
    SRAImport = SPRAF_Import,
    SRAInterpreter = SPRAF_Interpreter,
    SRADynamic = SPRAF_Dynamic
} SpeechRuleAttributes;
typedef enum SpeechGrammarWordType {
    SGDisplay = SPWT_DISPLAY,
    SGLexical = SPWT_LEXICAL,
    SGPronounciation = SPWT_PRONUNCIATION
} SpeechGrammarWordType;
typedef enum DISPID_SpeechRecoContextEvents {
    DISPID_SRCEStartStream = 1,
    DISPID_SRCEEndStream = 2,
    DISPID_SRCEBookmark = 3,
    DISPID_SRCESoundStart = 4,
    DISPID_SRCESoundEnd = 5,
    DISPID_SRCEPhraseStart = 6,
    DISPID_SRCERecognition = 7,
    DISPID_SRCEHypothesis = 8,
    DISPID_SRCEPropertyNumberChange = 9,
    DISPID_SRCEPropertyStringChange = 10,
    DISPID_SRCEFalseRecognition = 11,
    DISPID_SRCEInterference = 12,
    DISPID_SRCERequestUI = 13,
    DISPID_SRCERecognizerStateChange = 14,
    DISPID_SRCEAdaptation = 15,
    DISPID_SRCERecognitionForOtherContext = 16,
    DISPID_SRCEAudioLevel = 17,
    DISPID_SRCEEnginePrivate = 18
} DISPID_SpeechRecoContextEvents;
typedef enum SpeechRecognitionType {
    SRTStandard = 0,
    SRTAutopause = SPREF_AutoPause,
    SRTEmulated = SPREF_Emulated
} SpeechRecognitionType;
typedef enum DISPID_SpeechGrammarRule {
    DISPID_SGRAttributes = 1,
    DISPID_SGRInitialState = 2,
    DISPID_SGRName = 3,
    DISPID_SGRId = 4,
    DISPID_SGRClear = 5,
    DISPID_SGRAddResource = 6,
    DISPID_SGRAddState = 7
} DISPID_SpeechGrammarRule;
typedef enum DISPID_SpeechGrammarRules {
    DISPID_SGRsCount = 1,
    DISPID_SGRsDynamic = 2,
    DISPID_SGRsAdd = 3,
    DISPID_SGRsCommit = 4,
    DISPID_SGRsCommitAndSave = 5,
    DISPID_SGRsFindRule = 6,
    DISPID_SGRsItem = DISPID_VALUE,
    DISPID_SGRs_NewEnum = DISPID_NEWENUM
} DISPID_SpeechGrammarRules;
typedef enum DISPID_SpeechGrammarRuleState {
    DISPID_SGRSRule = 1,
    DISPID_SGRSTransitions = 2,
    DISPID_SGRSAddWordTransition = 3,
    DISPID_SGRSAddRuleTransition = 4,
    DISPID_SGRSAddSpecialTransition = 5
} DISPID_SpeechGrammarRuleState;
typedef enum SpeechSpecialTransitionType {
    SSTTWildcard = 1,
    SSTTDictation = 2,
    SSTTTextBuffer = 3
} SpeechSpecialTransitionType;
typedef enum DISPID_SpeechGrammarRuleStateTransitions {
    DISPID_SGRSTsCount = 1,
    DISPID_SGRSTsItem = DISPID_VALUE,
    DISPID_SGRSTs_NewEnum = DISPID_NEWENUM
} DISPID_SpeechGrammarRuleStateTransitions;
typedef enum DISPID_SpeechGrammarRuleStateTransition {
    DISPID_SGRSTType = 1,
    DISPID_SGRSTText = 2,
    DISPID_SGRSTRule = 3,
    DISPID_SGRSTWeight = 4,
    DISPID_SGRSTPropertyName = 5,
    DISPID_SGRSTPropertyId = 6,
    DISPID_SGRSTPropertyValue = 7,
    DISPID_SGRSTNextState = 8
} DISPID_SpeechGrammarRuleStateTransition;
typedef enum SpeechGrammarRuleStateTransitionType {
    SGRSTTEpsilon = 0,
    SGRSTTWord = 1,
    SGRSTTRule = 2,
    SGRSTTDictation = 3,
    SGRSTTWildcard = 4,
    SGRSTTTextBuffer = 5
} SpeechGrammarRuleStateTransitionType;
typedef enum DISPIDSPTSI {
    DISPIDSPTSI_ActiveOffset = 1,
    DISPIDSPTSI_ActiveLength = 2,
    DISPIDSPTSI_SelectionOffset = 3,
    DISPIDSPTSI_SelectionLength = 4
} DISPIDSPTSI;
typedef enum DISPID_SpeechRecoResult {
    DISPID_SRRRecoContext = 1,
    DISPID_SRRTimes = 2,
    DISPID_SRRAudioFormat = 3,
    DISPID_SRRPhraseInfo = 4,
    DISPID_SRRAlternates = 5,
    DISPID_SRRAudio = 6,
    DISPID_SRRSpeakAudio = 7,
    DISPID_SRRSaveToMemory = 8,
    DISPID_SRRDiscardResultInfo = 9
} DISPID_SpeechRecoResult;
typedef enum SpeechDiscardType {
    SDTProperty = SPDF_PROPERTY,
    SDTReplacement = SPDF_REPLACEMENT,
    SDTRule = SPDF_RULE,
    SDTDisplayText = SPDF_DISPLAYTEXT,
    SDTLexicalForm = SPDF_LEXICALFORM,
    SDTPronunciation = SPDF_PRONUNCIATION,
    SDTAudio = SPDF_AUDIO,
    SDTAlternates = SPDF_ALTERNATES,
    SDTAll = SPDF_ALL
} SpeechDiscardType;
typedef enum DISPID_SpeechPhraseBuilder {
    DISPID_SPPBRestorePhraseFromMemory = 1
} DISPID_SpeechPhraseBuilder;
typedef enum DISPID_SpeechRecoResultTimes {
    DISPID_SRRTStreamTime = 1,
    DISPID_SRRTLength = 2,
    DISPID_SRRTTickCount = 3,
    DISPID_SRRTOffsetFromStart = 4
} DISPID_SpeechRecoResultTimes;
typedef enum DISPID_SpeechPhraseAlternate {
    DISPID_SPARecoResult = 1,
    DISPID_SPAStartElementInResult = 2,
    DISPID_SPANumberOfElementsInResult = 3,
    DISPID_SPAPhraseInfo = 4,
    DISPID_SPACommit = 5
} DISPID_SpeechPhraseAlternate;
typedef enum DISPID_SpeechPhraseAlternates {
    DISPID_SPAsCount = 1,
    DISPID_SPAsItem = DISPID_VALUE,
    DISPID_SPAs_NewEnum = DISPID_NEWENUM
} DISPID_SpeechPhraseAlternates;
typedef enum DISPID_SpeechPhraseInfo {
    DISPID_SPILanguageId = 1,
    DISPID_SPIGrammarId = 2,
    DISPID_SPIStartTime = 3,
    DISPID_SPIAudioStreamPosition = 4,
    DISPID_SPIAudioSizeBytes = 5,
    DISPID_SPIRetainedSizeBytes = 6,
    DISPID_SPIAudioSizeTime = 7,
    DISPID_SPIRule = 8,
    DISPID_SPIProperties = 9,
    DISPID_SPIElements = 10,
    DISPID_SPIReplacements = 11,
    DISPID_SPIEngineId = 12,
    DISPID_SPIEnginePrivateData = 13,
    DISPID_SPISaveToMemory = 14,
    DISPID_SPIGetText = 15,
    DISPID_SPIGetDisplayAttributes = 16
} DISPID_SpeechPhraseInfo;
typedef enum DISPID_SpeechPhraseElement {
    DISPID_SPEAudioTimeOffset = 1,
    DISPID_SPEAudioSizeTime = 2,
    DISPID_SPEAudioStreamOffset = 3,
    DISPID_SPEAudioSizeBytes = 4,
    DISPID_SPERetainedStreamOffset = 5,
    DISPID_SPERetainedSizeBytes = 6,
    DISPID_SPEDisplayText = 7,
    DISPID_SPELexicalForm = 8,
    DISPID_SPEPronunciation = 9,
    DISPID_SPEDisplayAttributes = 10,
    DISPID_SPERequiredConfidence = 11,
    DISPID_SPEActualConfidence = 12,
    DISPID_SPEEngineConfidence = 13
} DISPID_SpeechPhraseElement;
typedef enum SpeechEngineConfidence {
    SECLowConfidence = -1,
    SECNormalConfidence = 0,
    SECHighConfidence = 1
} SpeechEngineConfidence;
typedef enum DISPID_SpeechPhraseElements {
    DISPID_SPEsCount = 1,
    DISPID_SPEsItem = DISPID_VALUE,
    DISPID_SPEs_NewEnum = DISPID_NEWENUM
} DISPID_SpeechPhraseElements;
typedef enum DISPID_SpeechPhraseReplacement {
    DISPID_SPRDisplayAttributes = 1,
    DISPID_SPRText = 2,
    DISPID_SPRFirstElement = 3,
    DISPID_SPRNumberOfElements = 4
} DISPID_SpeechPhraseReplacement;
typedef enum DISPID_SpeechPhraseReplacements {
    DISPID_SPRsCount = 1,
    DISPID_SPRsItem = DISPID_VALUE,
    DISPID_SPRs_NewEnum = DISPID_NEWENUM
} DISPID_SpeechPhraseReplacements;
typedef enum DISPID_SpeechPhraseProperty {
    DISPID_SPPName = 1,
    DISPID_SPPId = 2,
    DISPID_SPPValue = 3,
    DISPID_SPPFirstElement = 4,
    DISPID_SPPNumberOfElements = 5,
    DISPID_SPPEngineConfidence = 6,
    DISPID_SPPConfidence = 7,
    DISPID_SPPParent = 8,
    DISPID_SPPChildren = 9
} DISPID_SpeechPhraseProperty;
typedef enum DISPID_SpeechPhraseProperties {
    DISPID_SPPsCount = 1,
    DISPID_SPPsItem = DISPID_VALUE,
    DISPID_SPPs_NewEnum = DISPID_NEWENUM
} DISPID_SpeechPhraseProperties;
typedef enum DISPID_SpeechPhraseRule {
    DISPID_SPRuleName = 1,
    DISPID_SPRuleId = 2,
    DISPID_SPRuleFirstElement = 3,
    DISPID_SPRuleNumberOfElements = 4,
    DISPID_SPRuleParent = 5,
    DISPID_SPRuleChildren = 6,
    DISPID_SPRuleConfidence = 7,
    DISPID_SPRuleEngineConfidence = 8
} DISPID_SpeechPhraseRule;
typedef enum DISPID_SpeechPhraseRules {
    DISPID_SPRulesCount = 1,
    DISPID_SPRulesItem = DISPID_VALUE,
    DISPID_SPRules_NewEnum = DISPID_NEWENUM
} DISPID_SpeechPhraseRules;
typedef enum DISPID_SpeechLexicon {
    DISPID_SLGenerationId = 1,
    DISPID_SLGetWords = 2,
    DISPID_SLAddPronunciation = 3,
    DISPID_SLAddPronunciationByPhoneIds = 4,
    DISPID_SLRemovePronunciation = 5,
    DISPID_SLRemovePronunciationByPhoneIds = 6,
    DISPID_SLGetPronunciations = 7,
    DISPID_SLGetGenerationChange = 8
} DISPID_SpeechLexicon;
typedef enum SpeechLexiconType {
    SLTUser = eLEXTYPE_USER,
    SLTApp = eLEXTYPE_APP
} SpeechLexiconType;
typedef enum SpeechPartOfSpeech {
    SPSNotOverriden = SPPS_NotOverriden,
    SPSUnknown = SPPS_Unknown,
    SPSNoun = SPPS_Noun,
    SPSVerb = SPPS_Verb,
    SPSModifier = SPPS_Modifier,
    SPSFunction = SPPS_Function,
    SPSInterjection = SPPS_Interjection
} SpeechPartOfSpeech;
typedef enum DISPID_SpeechLexiconWords {
    DISPID_SLWsCount = 1,
    DISPID_SLWsItem = DISPID_VALUE,
    DISPID_SLWs_NewEnum = DISPID_NEWENUM
} DISPID_SpeechLexiconWords;
typedef enum SpeechWordType {
    SWTAdded = eWORDTYPE_ADDED,
    SWTDeleted = eWORDTYPE_DELETED
} SpeechWordType;
typedef enum DISPID_SpeechLexiconWord {
    DISPID_SLWLangId = 1,
    DISPID_SLWType = 2,
    DISPID_SLWWord = 3,
    DISPID_SLWPronunciations = 4
} DISPID_SpeechLexiconWord;
typedef enum DISPID_SpeechLexiconProns {
    DISPID_SLPsCount = 1,
    DISPID_SLPsItem = DISPID_VALUE,
    DISPID_SLPs_NewEnum = DISPID_NEWENUM
} DISPID_SpeechLexiconProns;
typedef enum DISPID_SpeechLexiconPronunciation {
    DISPID_SLPType = 1,
    DISPID_SLPLangId = 2,
    DISPID_SLPPartOfSpeech = 3,
    DISPID_SLPPhoneIds = 4,
    DISPID_SLPSymbolic = 5
} DISPID_SpeechLexiconPronunciation;
typedef enum DISPID_SpeechPhoneConverter {
    DISPID_SPCLangId = 1,
    DISPID_SPCPhoneToId = 2,
    DISPID_SPCIdToPhone = 3
} DISPID_SpeechPhoneConverter;
/*****************************************************************************
 * _ISpeechVoiceEvents dispinterface
 */
#ifndef ___ISpeechVoiceEvents_DISPINTERFACE_DEFINED__
#define ___ISpeechVoiceEvents_DISPINTERFACE_DEFINED__

DEFINE_GUID(DIID__ISpeechVoiceEvents, 0xa372acd1, 0x3bef, 0x4bbd, 0x8f,0xfb, 0xcb,0x3e,0x2b,0x41,0x6a,0xf8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a372acd1-3bef-4bbd-8ffb-cb3e2b416af8")
_ISpeechVoiceEvents : public IDispatch
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(_ISpeechVoiceEvents, 0xa372acd1, 0x3bef, 0x4bbd, 0x8f,0xfb, 0xcb,0x3e,0x2b,0x41,0x6a,0xf8)
#endif
#else
typedef struct _ISpeechVoiceEventsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        _ISpeechVoiceEvents* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        _ISpeechVoiceEvents* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        _ISpeechVoiceEvents* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        _ISpeechVoiceEvents* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        _ISpeechVoiceEvents* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        _ISpeechVoiceEvents* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        _ISpeechVoiceEvents* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    END_INTERFACE
} _ISpeechVoiceEventsVtbl;
interface _ISpeechVoiceEvents {
    CONST_VTBL _ISpeechVoiceEventsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define _ISpeechVoiceEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define _ISpeechVoiceEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
#define _ISpeechVoiceEvents_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define _ISpeechVoiceEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define _ISpeechVoiceEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define _ISpeechVoiceEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define _ISpeechVoiceEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT _ISpeechVoiceEvents_QueryInterface(_ISpeechVoiceEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG _ISpeechVoiceEvents_AddRef(_ISpeechVoiceEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG _ISpeechVoiceEvents_Release(_ISpeechVoiceEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT _ISpeechVoiceEvents_GetTypeInfoCount(_ISpeechVoiceEvents* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT _ISpeechVoiceEvents_GetTypeInfo(_ISpeechVoiceEvents* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT _ISpeechVoiceEvents_GetIDsOfNames(_ISpeechVoiceEvents* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT _ISpeechVoiceEvents_Invoke(_ISpeechVoiceEvents* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
#endif
#endif

#endif

#endif  /* ___ISpeechVoiceEvents_DISPINTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechRecognizer interface
 */
#ifndef __ISpeechRecognizer_INTERFACE_DEFINED__
#define __ISpeechRecognizer_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechRecognizer, 0x2d5f1c0c, 0xbd75, 0x4b08, 0x94,0x78, 0x3b,0x11,0xfe,0xa2,0x58,0x6c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2d5f1c0c-bd75-4b08-9478-3b11fea2586c")
ISpeechRecognizer : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE putref_Recognizer(
        ISpeechObjectToken *Recognizer) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Recognizer(
        ISpeechObjectToken **Recognizer) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AllowAudioInputFormatChangesOnNextSet(
        VARIANT_BOOL Allow) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AllowAudioInputFormatChangesOnNextSet(
        VARIANT_BOOL *Allow) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_AudioInput(
        ISpeechObjectToken *AudioInput = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AudioInput(
        ISpeechObjectToken **AudioInput) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_AudioInputStream(
        ISpeechBaseStream *AudioInputStream = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AudioInputStream(
        ISpeechBaseStream **AudioInputStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsShared(
        VARIANT_BOOL *Shared) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_State(
        SpeechRecognizerState State) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_State(
        SpeechRecognizerState *State) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Status(
        ISpeechRecognizerStatus **Status) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_Profile(
        ISpeechObjectToken *Profile = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Profile(
        ISpeechObjectToken **Profile) = 0;

    virtual HRESULT STDMETHODCALLTYPE EmulateRecognition(
        VARIANT TextElements,
        VARIANT *ElementDisplayAttributes = 0,
        LONG LanguageId = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateRecoContext(
        ISpeechRecoContext **NewContext) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFormat(
        SpeechFormatType Type,
        ISpeechAudioFormat **Format) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPropertyNumber(
        const BSTR Name,
        LONG Value,
        VARIANT_BOOL *Supported) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyNumber(
        const BSTR Name,
        LONG *Value,
        VARIANT_BOOL *Supported) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPropertyString(
        const BSTR Name,
        const BSTR Value,
        VARIANT_BOOL *Supported) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyString(
        const BSTR Name,
        BSTR *Value,
        VARIANT_BOOL *Supported) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsUISupported(
        const BSTR TypeOfUI,
        const VARIANT *ExtraData = 0,
        VARIANT_BOOL *Supported) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisplayUI(
        LONG hWndParent,
        BSTR Title,
        const BSTR TypeOfUI,
        const VARIANT *ExtraData = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRecognizers(
        BSTR RequiredAttributes = "",
        BSTR OptionalAttributes = "",
        ISpeechObjectTokens **ObjectTokens) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAudioInputs(
        BSTR RequiredAttributes = "",
        BSTR OptionalAttributes = "",
        ISpeechObjectTokens **ObjectTokens) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetProfiles(
        BSTR RequiredAttributes = "",
        BSTR OptionalAttributes = "",
        ISpeechObjectTokens **ObjectTokens) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechRecognizer, 0x2d5f1c0c, 0xbd75, 0x4b08, 0x94,0x78, 0x3b,0x11,0xfe,0xa2,0x58,0x6c)
#endif
#else
typedef struct ISpeechRecognizerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechRecognizer* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechRecognizer* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechRecognizer* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechRecognizer* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechRecognizer* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechRecognizer* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechRecognizer* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechRecognizer methods ***/
    HRESULT (STDMETHODCALLTYPE *putref_Recognizer)(
        ISpeechRecognizer* This,
        ISpeechObjectToken *Recognizer);

    HRESULT (STDMETHODCALLTYPE *get_Recognizer)(
        ISpeechRecognizer* This,
        ISpeechObjectToken **Recognizer);

    HRESULT (STDMETHODCALLTYPE *put_AllowAudioInputFormatChangesOnNextSet)(
        ISpeechRecognizer* This,
        VARIANT_BOOL Allow);

    HRESULT (STDMETHODCALLTYPE *get_AllowAudioInputFormatChangesOnNextSet)(
        ISpeechRecognizer* This,
        VARIANT_BOOL *Allow);

    HRESULT (STDMETHODCALLTYPE *putref_AudioInput)(
        ISpeechRecognizer* This,
        ISpeechObjectToken *AudioInput);

    HRESULT (STDMETHODCALLTYPE *get_AudioInput)(
        ISpeechRecognizer* This,
        ISpeechObjectToken **AudioInput);

    HRESULT (STDMETHODCALLTYPE *putref_AudioInputStream)(
        ISpeechRecognizer* This,
        ISpeechBaseStream *AudioInputStream);

    HRESULT (STDMETHODCALLTYPE *get_AudioInputStream)(
        ISpeechRecognizer* This,
        ISpeechBaseStream **AudioInputStream);

    HRESULT (STDMETHODCALLTYPE *get_IsShared)(
        ISpeechRecognizer* This,
        VARIANT_BOOL *Shared);

    HRESULT (STDMETHODCALLTYPE *put_State)(
        ISpeechRecognizer* This,
        SpeechRecognizerState State);

    HRESULT (STDMETHODCALLTYPE *get_State)(
        ISpeechRecognizer* This,
        SpeechRecognizerState *State);

    HRESULT (STDMETHODCALLTYPE *get_Status)(
        ISpeechRecognizer* This,
        ISpeechRecognizerStatus **Status);

    HRESULT (STDMETHODCALLTYPE *putref_Profile)(
        ISpeechRecognizer* This,
        ISpeechObjectToken *Profile);

    HRESULT (STDMETHODCALLTYPE *get_Profile)(
        ISpeechRecognizer* This,
        ISpeechObjectToken **Profile);

    HRESULT (STDMETHODCALLTYPE *EmulateRecognition)(
        ISpeechRecognizer* This,
        VARIANT TextElements,
        VARIANT *ElementDisplayAttributes,
        LONG LanguageId);

    HRESULT (STDMETHODCALLTYPE *CreateRecoContext)(
        ISpeechRecognizer* This,
        ISpeechRecoContext **NewContext);

    HRESULT (STDMETHODCALLTYPE *GetFormat)(
        ISpeechRecognizer* This,
        SpeechFormatType Type,
        ISpeechAudioFormat **Format);

    HRESULT (STDMETHODCALLTYPE *SetPropertyNumber)(
        ISpeechRecognizer* This,
        const BSTR Name,
        LONG Value,
        VARIANT_BOOL *Supported);

    HRESULT (STDMETHODCALLTYPE *GetPropertyNumber)(
        ISpeechRecognizer* This,
        const BSTR Name,
        LONG *Value,
        VARIANT_BOOL *Supported);

    HRESULT (STDMETHODCALLTYPE *SetPropertyString)(
        ISpeechRecognizer* This,
        const BSTR Name,
        const BSTR Value,
        VARIANT_BOOL *Supported);

    HRESULT (STDMETHODCALLTYPE *GetPropertyString)(
        ISpeechRecognizer* This,
        const BSTR Name,
        BSTR *Value,
        VARIANT_BOOL *Supported);

    HRESULT (STDMETHODCALLTYPE *IsUISupported)(
        ISpeechRecognizer* This,
        const BSTR TypeOfUI,
        const VARIANT *ExtraData,
        VARIANT_BOOL *Supported);

    HRESULT (STDMETHODCALLTYPE *DisplayUI)(
        ISpeechRecognizer* This,
        LONG hWndParent,
        BSTR Title,
        const BSTR TypeOfUI,
        const VARIANT *ExtraData);

    HRESULT (STDMETHODCALLTYPE *GetRecognizers)(
        ISpeechRecognizer* This,
        BSTR RequiredAttributes,
        BSTR OptionalAttributes,
        ISpeechObjectTokens **ObjectTokens);

    HRESULT (STDMETHODCALLTYPE *GetAudioInputs)(
        ISpeechRecognizer* This,
        BSTR RequiredAttributes,
        BSTR OptionalAttributes,
        ISpeechObjectTokens **ObjectTokens);

    HRESULT (STDMETHODCALLTYPE *GetProfiles)(
        ISpeechRecognizer* This,
        BSTR RequiredAttributes,
        BSTR OptionalAttributes,
        ISpeechObjectTokens **ObjectTokens);

    END_INTERFACE
} ISpeechRecognizerVtbl;
interface ISpeechRecognizer {
    CONST_VTBL ISpeechRecognizerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechRecognizer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechRecognizer_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechRecognizer_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechRecognizer_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechRecognizer_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechRecognizer_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechRecognizer_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechRecognizer methods ***/
#define ISpeechRecognizer_putref_Recognizer(This,Recognizer) (This)->lpVtbl->putref_Recognizer(This,Recognizer)
#define ISpeechRecognizer_get_Recognizer(This,Recognizer) (This)->lpVtbl->get_Recognizer(This,Recognizer)
#define ISpeechRecognizer_put_AllowAudioInputFormatChangesOnNextSet(This,Allow) (This)->lpVtbl->put_AllowAudioInputFormatChangesOnNextSet(This,Allow)
#define ISpeechRecognizer_get_AllowAudioInputFormatChangesOnNextSet(This,Allow) (This)->lpVtbl->get_AllowAudioInputFormatChangesOnNextSet(This,Allow)
#define ISpeechRecognizer_putref_AudioInput(This,AudioInput) (This)->lpVtbl->putref_AudioInput(This,AudioInput)
#define ISpeechRecognizer_get_AudioInput(This,AudioInput) (This)->lpVtbl->get_AudioInput(This,AudioInput)
#define ISpeechRecognizer_putref_AudioInputStream(This,AudioInputStream) (This)->lpVtbl->putref_AudioInputStream(This,AudioInputStream)
#define ISpeechRecognizer_get_AudioInputStream(This,AudioInputStream) (This)->lpVtbl->get_AudioInputStream(This,AudioInputStream)
#define ISpeechRecognizer_get_IsShared(This,Shared) (This)->lpVtbl->get_IsShared(This,Shared)
#define ISpeechRecognizer_put_State(This,State) (This)->lpVtbl->put_State(This,State)
#define ISpeechRecognizer_get_State(This,State) (This)->lpVtbl->get_State(This,State)
#define ISpeechRecognizer_get_Status(This,Status) (This)->lpVtbl->get_Status(This,Status)
#define ISpeechRecognizer_putref_Profile(This,Profile) (This)->lpVtbl->putref_Profile(This,Profile)
#define ISpeechRecognizer_get_Profile(This,Profile) (This)->lpVtbl->get_Profile(This,Profile)
#define ISpeechRecognizer_EmulateRecognition(This,TextElements,ElementDisplayAttributes,LanguageId) (This)->lpVtbl->EmulateRecognition(This,TextElements,ElementDisplayAttributes,LanguageId)
#define ISpeechRecognizer_CreateRecoContext(This,NewContext) (This)->lpVtbl->CreateRecoContext(This,NewContext)
#define ISpeechRecognizer_GetFormat(This,Type,Format) (This)->lpVtbl->GetFormat(This,Type,Format)
#define ISpeechRecognizer_SetPropertyNumber(This,Name,Value,Supported) (This)->lpVtbl->SetPropertyNumber(This,Name,Value,Supported)
#define ISpeechRecognizer_GetPropertyNumber(This,Name,Value,Supported) (This)->lpVtbl->GetPropertyNumber(This,Name,Value,Supported)
#define ISpeechRecognizer_SetPropertyString(This,Name,Value,Supported) (This)->lpVtbl->SetPropertyString(This,Name,Value,Supported)
#define ISpeechRecognizer_GetPropertyString(This,Name,Value,Supported) (This)->lpVtbl->GetPropertyString(This,Name,Value,Supported)
#define ISpeechRecognizer_IsUISupported(This,TypeOfUI,ExtraData,Supported) (This)->lpVtbl->IsUISupported(This,TypeOfUI,ExtraData,Supported)
#define ISpeechRecognizer_DisplayUI(This,hWndParent,Title,TypeOfUI,ExtraData) (This)->lpVtbl->DisplayUI(This,hWndParent,Title,TypeOfUI,ExtraData)
#define ISpeechRecognizer_GetRecognizers(This,RequiredAttributes,OptionalAttributes,ObjectTokens) (This)->lpVtbl->GetRecognizers(This,RequiredAttributes,OptionalAttributes,ObjectTokens)
#define ISpeechRecognizer_GetAudioInputs(This,RequiredAttributes,OptionalAttributes,ObjectTokens) (This)->lpVtbl->GetAudioInputs(This,RequiredAttributes,OptionalAttributes,ObjectTokens)
#define ISpeechRecognizer_GetProfiles(This,RequiredAttributes,OptionalAttributes,ObjectTokens) (This)->lpVtbl->GetProfiles(This,RequiredAttributes,OptionalAttributes,ObjectTokens)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechRecognizer_QueryInterface(ISpeechRecognizer* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechRecognizer_AddRef(ISpeechRecognizer* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechRecognizer_Release(ISpeechRecognizer* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechRecognizer_GetTypeInfoCount(ISpeechRecognizer* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechRecognizer_GetTypeInfo(ISpeechRecognizer* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechRecognizer_GetIDsOfNames(ISpeechRecognizer* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechRecognizer_Invoke(ISpeechRecognizer* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechRecognizer methods ***/
static FORCEINLINE HRESULT ISpeechRecognizer_putref_Recognizer(ISpeechRecognizer* This,ISpeechObjectToken *Recognizer) {
    return This->lpVtbl->putref_Recognizer(This,Recognizer);
}
static FORCEINLINE HRESULT ISpeechRecognizer_get_Recognizer(ISpeechRecognizer* This,ISpeechObjectToken **Recognizer) {
    return This->lpVtbl->get_Recognizer(This,Recognizer);
}
static FORCEINLINE HRESULT ISpeechRecognizer_put_AllowAudioInputFormatChangesOnNextSet(ISpeechRecognizer* This,VARIANT_BOOL Allow) {
    return This->lpVtbl->put_AllowAudioInputFormatChangesOnNextSet(This,Allow);
}
static FORCEINLINE HRESULT ISpeechRecognizer_get_AllowAudioInputFormatChangesOnNextSet(ISpeechRecognizer* This,VARIANT_BOOL *Allow) {
    return This->lpVtbl->get_AllowAudioInputFormatChangesOnNextSet(This,Allow);
}
static FORCEINLINE HRESULT ISpeechRecognizer_putref_AudioInput(ISpeechRecognizer* This,ISpeechObjectToken *AudioInput) {
    return This->lpVtbl->putref_AudioInput(This,AudioInput);
}
static FORCEINLINE HRESULT ISpeechRecognizer_get_AudioInput(ISpeechRecognizer* This,ISpeechObjectToken **AudioInput) {
    return This->lpVtbl->get_AudioInput(This,AudioInput);
}
static FORCEINLINE HRESULT ISpeechRecognizer_putref_AudioInputStream(ISpeechRecognizer* This,ISpeechBaseStream *AudioInputStream) {
    return This->lpVtbl->putref_AudioInputStream(This,AudioInputStream);
}
static FORCEINLINE HRESULT ISpeechRecognizer_get_AudioInputStream(ISpeechRecognizer* This,ISpeechBaseStream **AudioInputStream) {
    return This->lpVtbl->get_AudioInputStream(This,AudioInputStream);
}
static FORCEINLINE HRESULT ISpeechRecognizer_get_IsShared(ISpeechRecognizer* This,VARIANT_BOOL *Shared) {
    return This->lpVtbl->get_IsShared(This,Shared);
}
static FORCEINLINE HRESULT ISpeechRecognizer_put_State(ISpeechRecognizer* This,SpeechRecognizerState State) {
    return This->lpVtbl->put_State(This,State);
}
static FORCEINLINE HRESULT ISpeechRecognizer_get_State(ISpeechRecognizer* This,SpeechRecognizerState *State) {
    return This->lpVtbl->get_State(This,State);
}
static FORCEINLINE HRESULT ISpeechRecognizer_get_Status(ISpeechRecognizer* This,ISpeechRecognizerStatus **Status) {
    return This->lpVtbl->get_Status(This,Status);
}
static FORCEINLINE HRESULT ISpeechRecognizer_putref_Profile(ISpeechRecognizer* This,ISpeechObjectToken *Profile) {
    return This->lpVtbl->putref_Profile(This,Profile);
}
static FORCEINLINE HRESULT ISpeechRecognizer_get_Profile(ISpeechRecognizer* This,ISpeechObjectToken **Profile) {
    return This->lpVtbl->get_Profile(This,Profile);
}
static FORCEINLINE HRESULT ISpeechRecognizer_EmulateRecognition(ISpeechRecognizer* This,VARIANT TextElements,VARIANT *ElementDisplayAttributes,LONG LanguageId) {
    return This->lpVtbl->EmulateRecognition(This,TextElements,ElementDisplayAttributes,LanguageId);
}
static FORCEINLINE HRESULT ISpeechRecognizer_CreateRecoContext(ISpeechRecognizer* This,ISpeechRecoContext **NewContext) {
    return This->lpVtbl->CreateRecoContext(This,NewContext);
}
static FORCEINLINE HRESULT ISpeechRecognizer_GetFormat(ISpeechRecognizer* This,SpeechFormatType Type,ISpeechAudioFormat **Format) {
    return This->lpVtbl->GetFormat(This,Type,Format);
}
static FORCEINLINE HRESULT ISpeechRecognizer_SetPropertyNumber(ISpeechRecognizer* This,const BSTR Name,LONG Value,VARIANT_BOOL *Supported) {
    return This->lpVtbl->SetPropertyNumber(This,Name,Value,Supported);
}
static FORCEINLINE HRESULT ISpeechRecognizer_GetPropertyNumber(ISpeechRecognizer* This,const BSTR Name,LONG *Value,VARIANT_BOOL *Supported) {
    return This->lpVtbl->GetPropertyNumber(This,Name,Value,Supported);
}
static FORCEINLINE HRESULT ISpeechRecognizer_SetPropertyString(ISpeechRecognizer* This,const BSTR Name,const BSTR Value,VARIANT_BOOL *Supported) {
    return This->lpVtbl->SetPropertyString(This,Name,Value,Supported);
}
static FORCEINLINE HRESULT ISpeechRecognizer_GetPropertyString(ISpeechRecognizer* This,const BSTR Name,BSTR *Value,VARIANT_BOOL *Supported) {
    return This->lpVtbl->GetPropertyString(This,Name,Value,Supported);
}
static FORCEINLINE HRESULT ISpeechRecognizer_IsUISupported(ISpeechRecognizer* This,const BSTR TypeOfUI,const VARIANT *ExtraData,VARIANT_BOOL *Supported) {
    return This->lpVtbl->IsUISupported(This,TypeOfUI,ExtraData,Supported);
}
static FORCEINLINE HRESULT ISpeechRecognizer_DisplayUI(ISpeechRecognizer* This,LONG hWndParent,BSTR Title,const BSTR TypeOfUI,const VARIANT *ExtraData) {
    return This->lpVtbl->DisplayUI(This,hWndParent,Title,TypeOfUI,ExtraData);
}
static FORCEINLINE HRESULT ISpeechRecognizer_GetRecognizers(ISpeechRecognizer* This,BSTR RequiredAttributes,BSTR OptionalAttributes,ISpeechObjectTokens **ObjectTokens) {
    return This->lpVtbl->GetRecognizers(This,RequiredAttributes,OptionalAttributes,ObjectTokens);
}
static FORCEINLINE HRESULT ISpeechRecognizer_GetAudioInputs(ISpeechRecognizer* This,BSTR RequiredAttributes,BSTR OptionalAttributes,ISpeechObjectTokens **ObjectTokens) {
    return This->lpVtbl->GetAudioInputs(This,RequiredAttributes,OptionalAttributes,ObjectTokens);
}
static FORCEINLINE HRESULT ISpeechRecognizer_GetProfiles(ISpeechRecognizer* This,BSTR RequiredAttributes,BSTR OptionalAttributes,ISpeechObjectTokens **ObjectTokens) {
    return This->lpVtbl->GetProfiles(This,RequiredAttributes,OptionalAttributes,ObjectTokens);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechRecognizer_putref_Recognizer_Proxy(
    ISpeechRecognizer* This,
    ISpeechObjectToken *Recognizer);
void __RPC_STUB ISpeechRecognizer_putref_Recognizer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_get_Recognizer_Proxy(
    ISpeechRecognizer* This,
    ISpeechObjectToken **Recognizer);
void __RPC_STUB ISpeechRecognizer_get_Recognizer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_put_AllowAudioInputFormatChangesOnNextSet_Proxy(
    ISpeechRecognizer* This,
    VARIANT_BOOL Allow);
void __RPC_STUB ISpeechRecognizer_put_AllowAudioInputFormatChangesOnNextSet_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_get_AllowAudioInputFormatChangesOnNextSet_Proxy(
    ISpeechRecognizer* This,
    VARIANT_BOOL *Allow);
void __RPC_STUB ISpeechRecognizer_get_AllowAudioInputFormatChangesOnNextSet_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_putref_AudioInput_Proxy(
    ISpeechRecognizer* This,
    ISpeechObjectToken *AudioInput);
void __RPC_STUB ISpeechRecognizer_putref_AudioInput_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_get_AudioInput_Proxy(
    ISpeechRecognizer* This,
    ISpeechObjectToken **AudioInput);
void __RPC_STUB ISpeechRecognizer_get_AudioInput_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_putref_AudioInputStream_Proxy(
    ISpeechRecognizer* This,
    ISpeechBaseStream *AudioInputStream);
void __RPC_STUB ISpeechRecognizer_putref_AudioInputStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_get_AudioInputStream_Proxy(
    ISpeechRecognizer* This,
    ISpeechBaseStream **AudioInputStream);
void __RPC_STUB ISpeechRecognizer_get_AudioInputStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_get_IsShared_Proxy(
    ISpeechRecognizer* This,
    VARIANT_BOOL *Shared);
void __RPC_STUB ISpeechRecognizer_get_IsShared_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_put_State_Proxy(
    ISpeechRecognizer* This,
    SpeechRecognizerState State);
void __RPC_STUB ISpeechRecognizer_put_State_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_get_State_Proxy(
    ISpeechRecognizer* This,
    SpeechRecognizerState *State);
void __RPC_STUB ISpeechRecognizer_get_State_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_get_Status_Proxy(
    ISpeechRecognizer* This,
    ISpeechRecognizerStatus **Status);
void __RPC_STUB ISpeechRecognizer_get_Status_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_putref_Profile_Proxy(
    ISpeechRecognizer* This,
    ISpeechObjectToken *Profile);
void __RPC_STUB ISpeechRecognizer_putref_Profile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_get_Profile_Proxy(
    ISpeechRecognizer* This,
    ISpeechObjectToken **Profile);
void __RPC_STUB ISpeechRecognizer_get_Profile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_EmulateRecognition_Proxy(
    ISpeechRecognizer* This,
    VARIANT TextElements,
    VARIANT *ElementDisplayAttributes,
    LONG LanguageId);
void __RPC_STUB ISpeechRecognizer_EmulateRecognition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_CreateRecoContext_Proxy(
    ISpeechRecognizer* This,
    ISpeechRecoContext **NewContext);
void __RPC_STUB ISpeechRecognizer_CreateRecoContext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_GetFormat_Proxy(
    ISpeechRecognizer* This,
    SpeechFormatType Type,
    ISpeechAudioFormat **Format);
void __RPC_STUB ISpeechRecognizer_GetFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_SetPropertyNumber_Proxy(
    ISpeechRecognizer* This,
    const BSTR Name,
    LONG Value,
    VARIANT_BOOL *Supported);
void __RPC_STUB ISpeechRecognizer_SetPropertyNumber_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_GetPropertyNumber_Proxy(
    ISpeechRecognizer* This,
    const BSTR Name,
    LONG *Value,
    VARIANT_BOOL *Supported);
void __RPC_STUB ISpeechRecognizer_GetPropertyNumber_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_SetPropertyString_Proxy(
    ISpeechRecognizer* This,
    const BSTR Name,
    const BSTR Value,
    VARIANT_BOOL *Supported);
void __RPC_STUB ISpeechRecognizer_SetPropertyString_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_GetPropertyString_Proxy(
    ISpeechRecognizer* This,
    const BSTR Name,
    BSTR *Value,
    VARIANT_BOOL *Supported);
void __RPC_STUB ISpeechRecognizer_GetPropertyString_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_IsUISupported_Proxy(
    ISpeechRecognizer* This,
    const BSTR TypeOfUI,
    const VARIANT *ExtraData,
    VARIANT_BOOL *Supported);
void __RPC_STUB ISpeechRecognizer_IsUISupported_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_DisplayUI_Proxy(
    ISpeechRecognizer* This,
    LONG hWndParent,
    BSTR Title,
    const BSTR TypeOfUI,
    const VARIANT *ExtraData);
void __RPC_STUB ISpeechRecognizer_DisplayUI_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_GetRecognizers_Proxy(
    ISpeechRecognizer* This,
    BSTR RequiredAttributes,
    BSTR OptionalAttributes,
    ISpeechObjectTokens **ObjectTokens);
void __RPC_STUB ISpeechRecognizer_GetRecognizers_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_GetAudioInputs_Proxy(
    ISpeechRecognizer* This,
    BSTR RequiredAttributes,
    BSTR OptionalAttributes,
    ISpeechObjectTokens **ObjectTokens);
void __RPC_STUB ISpeechRecognizer_GetAudioInputs_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizer_GetProfiles_Proxy(
    ISpeechRecognizer* This,
    BSTR RequiredAttributes,
    BSTR OptionalAttributes,
    ISpeechObjectTokens **ObjectTokens);
void __RPC_STUB ISpeechRecognizer_GetProfiles_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechRecognizer_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechRecognizerStatus interface
 */
#ifndef __ISpeechRecognizerStatus_INTERFACE_DEFINED__
#define __ISpeechRecognizerStatus_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechRecognizerStatus, 0xbff9e781, 0x53ec, 0x484e, 0xbb,0x8a, 0x0e,0x1b,0x55,0x51,0xe3,0x5c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bff9e781-53ec-484e-bb8a-0e1b5551e35c")
ISpeechRecognizerStatus : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_AudioStatus(
        ISpeechAudioStatus **AudioStatus) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentStreamPosition(
        VARIANT *pCurrentStreamPos) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentStreamNumber(
        LONG *StreamNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_NumberOfActiveRules(
        LONG *NumberOfActiveRules) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ClsidEngine(
        BSTR *ClsidEngine) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SupportedLanguages(
        VARIANT *SupportedLanguages) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechRecognizerStatus, 0xbff9e781, 0x53ec, 0x484e, 0xbb,0x8a, 0x0e,0x1b,0x55,0x51,0xe3,0x5c)
#endif
#else
typedef struct ISpeechRecognizerStatusVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechRecognizerStatus* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechRecognizerStatus* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechRecognizerStatus* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechRecognizerStatus* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechRecognizerStatus* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechRecognizerStatus* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechRecognizerStatus* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechRecognizerStatus methods ***/
    HRESULT (STDMETHODCALLTYPE *get_AudioStatus)(
        ISpeechRecognizerStatus* This,
        ISpeechAudioStatus **AudioStatus);

    HRESULT (STDMETHODCALLTYPE *get_CurrentStreamPosition)(
        ISpeechRecognizerStatus* This,
        VARIANT *pCurrentStreamPos);

    HRESULT (STDMETHODCALLTYPE *get_CurrentStreamNumber)(
        ISpeechRecognizerStatus* This,
        LONG *StreamNumber);

    HRESULT (STDMETHODCALLTYPE *get_NumberOfActiveRules)(
        ISpeechRecognizerStatus* This,
        LONG *NumberOfActiveRules);

    HRESULT (STDMETHODCALLTYPE *get_ClsidEngine)(
        ISpeechRecognizerStatus* This,
        BSTR *ClsidEngine);

    HRESULT (STDMETHODCALLTYPE *get_SupportedLanguages)(
        ISpeechRecognizerStatus* This,
        VARIANT *SupportedLanguages);

    END_INTERFACE
} ISpeechRecognizerStatusVtbl;
interface ISpeechRecognizerStatus {
    CONST_VTBL ISpeechRecognizerStatusVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechRecognizerStatus_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechRecognizerStatus_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechRecognizerStatus_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechRecognizerStatus_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechRecognizerStatus_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechRecognizerStatus_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechRecognizerStatus_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechRecognizerStatus methods ***/
#define ISpeechRecognizerStatus_get_AudioStatus(This,AudioStatus) (This)->lpVtbl->get_AudioStatus(This,AudioStatus)
#define ISpeechRecognizerStatus_get_CurrentStreamPosition(This,pCurrentStreamPos) (This)->lpVtbl->get_CurrentStreamPosition(This,pCurrentStreamPos)
#define ISpeechRecognizerStatus_get_CurrentStreamNumber(This,StreamNumber) (This)->lpVtbl->get_CurrentStreamNumber(This,StreamNumber)
#define ISpeechRecognizerStatus_get_NumberOfActiveRules(This,NumberOfActiveRules) (This)->lpVtbl->get_NumberOfActiveRules(This,NumberOfActiveRules)
#define ISpeechRecognizerStatus_get_ClsidEngine(This,ClsidEngine) (This)->lpVtbl->get_ClsidEngine(This,ClsidEngine)
#define ISpeechRecognizerStatus_get_SupportedLanguages(This,SupportedLanguages) (This)->lpVtbl->get_SupportedLanguages(This,SupportedLanguages)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechRecognizerStatus_QueryInterface(ISpeechRecognizerStatus* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechRecognizerStatus_AddRef(ISpeechRecognizerStatus* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechRecognizerStatus_Release(ISpeechRecognizerStatus* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechRecognizerStatus_GetTypeInfoCount(ISpeechRecognizerStatus* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechRecognizerStatus_GetTypeInfo(ISpeechRecognizerStatus* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechRecognizerStatus_GetIDsOfNames(ISpeechRecognizerStatus* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechRecognizerStatus_Invoke(ISpeechRecognizerStatus* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechRecognizerStatus methods ***/
static FORCEINLINE HRESULT ISpeechRecognizerStatus_get_AudioStatus(ISpeechRecognizerStatus* This,ISpeechAudioStatus **AudioStatus) {
    return This->lpVtbl->get_AudioStatus(This,AudioStatus);
}
static FORCEINLINE HRESULT ISpeechRecognizerStatus_get_CurrentStreamPosition(ISpeechRecognizerStatus* This,VARIANT *pCurrentStreamPos) {
    return This->lpVtbl->get_CurrentStreamPosition(This,pCurrentStreamPos);
}
static FORCEINLINE HRESULT ISpeechRecognizerStatus_get_CurrentStreamNumber(ISpeechRecognizerStatus* This,LONG *StreamNumber) {
    return This->lpVtbl->get_CurrentStreamNumber(This,StreamNumber);
}
static FORCEINLINE HRESULT ISpeechRecognizerStatus_get_NumberOfActiveRules(ISpeechRecognizerStatus* This,LONG *NumberOfActiveRules) {
    return This->lpVtbl->get_NumberOfActiveRules(This,NumberOfActiveRules);
}
static FORCEINLINE HRESULT ISpeechRecognizerStatus_get_ClsidEngine(ISpeechRecognizerStatus* This,BSTR *ClsidEngine) {
    return This->lpVtbl->get_ClsidEngine(This,ClsidEngine);
}
static FORCEINLINE HRESULT ISpeechRecognizerStatus_get_SupportedLanguages(ISpeechRecognizerStatus* This,VARIANT *SupportedLanguages) {
    return This->lpVtbl->get_SupportedLanguages(This,SupportedLanguages);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechRecognizerStatus_get_AudioStatus_Proxy(
    ISpeechRecognizerStatus* This,
    ISpeechAudioStatus **AudioStatus);
void __RPC_STUB ISpeechRecognizerStatus_get_AudioStatus_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizerStatus_get_CurrentStreamPosition_Proxy(
    ISpeechRecognizerStatus* This,
    VARIANT *pCurrentStreamPos);
void __RPC_STUB ISpeechRecognizerStatus_get_CurrentStreamPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizerStatus_get_CurrentStreamNumber_Proxy(
    ISpeechRecognizerStatus* This,
    LONG *StreamNumber);
void __RPC_STUB ISpeechRecognizerStatus_get_CurrentStreamNumber_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizerStatus_get_NumberOfActiveRules_Proxy(
    ISpeechRecognizerStatus* This,
    LONG *NumberOfActiveRules);
void __RPC_STUB ISpeechRecognizerStatus_get_NumberOfActiveRules_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizerStatus_get_ClsidEngine_Proxy(
    ISpeechRecognizerStatus* This,
    BSTR *ClsidEngine);
void __RPC_STUB ISpeechRecognizerStatus_get_ClsidEngine_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecognizerStatus_get_SupportedLanguages_Proxy(
    ISpeechRecognizerStatus* This,
    VARIANT *SupportedLanguages);
void __RPC_STUB ISpeechRecognizerStatus_get_SupportedLanguages_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechRecognizerStatus_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechRecoContext interface
 */
#ifndef __ISpeechRecoContext_INTERFACE_DEFINED__
#define __ISpeechRecoContext_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechRecoContext, 0x580aa49d, 0x7e1e, 0x4809, 0xb8,0xe2, 0x57,0xda,0x80,0x61,0x04,0xb8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("580aa49d-7e1e-4809-b8e2-57da806104b8")
ISpeechRecoContext : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Recognizer(
        ISpeechRecognizer **Recognizer) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AudioInputInterferenceStatus(
        SpeechInterference *Interference) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RequestedUIType(
        BSTR *UIType) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_Voice(
        ISpeechVoice *Voice) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Voice(
        ISpeechVoice **Voice) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AllowVoiceFormatMatchingOnNextSet(
        VARIANT_BOOL Allow) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AllowVoiceFormatMatchingOnNextSet(
        VARIANT_BOOL *pAllow) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_VoicePurgeEvent(
        SpeechRecoEvents EventInterest) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_VoicePurgeEvent(
        SpeechRecoEvents *EventInterest) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_EventInterests(
        SpeechRecoEvents EventInterest) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_EventInterests(
        SpeechRecoEvents *EventInterest) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_CmdMaxAlternates(
        LONG MaxAlternates) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CmdMaxAlternates(
        LONG *MaxAlternates) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_State(
        SpeechRecoContextState State) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_State(
        SpeechRecoContextState *State) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_RetainedAudio(
        SpeechRetainedAudioOptions Option) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RetainedAudio(
        SpeechRetainedAudioOptions *Option) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_RetainedAudioFormat(
        ISpeechAudioFormat *Format) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RetainedAudioFormat(
        ISpeechAudioFormat **Format) = 0;

    virtual HRESULT STDMETHODCALLTYPE Pause(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resume(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateGrammar(
        VARIANT GrammarId = 0,
        ISpeechRecoGrammar **Grammar) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateResultFromMemory(
        VARIANT *ResultBlock,
        ISpeechRecoResult **Result) = 0;

    virtual HRESULT STDMETHODCALLTYPE Bookmark(
        SpeechBookmarkOptions Options,
        VARIANT StreamPos,
        VARIANT BookmarkId) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAdaptationData(
        BSTR AdaptationString) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechRecoContext, 0x580aa49d, 0x7e1e, 0x4809, 0xb8,0xe2, 0x57,0xda,0x80,0x61,0x04,0xb8)
#endif
#else
typedef struct ISpeechRecoContextVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechRecoContext* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechRecoContext* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechRecoContext* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechRecoContext* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechRecoContext* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechRecoContext* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechRecoContext* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechRecoContext methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Recognizer)(
        ISpeechRecoContext* This,
        ISpeechRecognizer **Recognizer);

    HRESULT (STDMETHODCALLTYPE *get_AudioInputInterferenceStatus)(
        ISpeechRecoContext* This,
        SpeechInterference *Interference);

    HRESULT (STDMETHODCALLTYPE *get_RequestedUIType)(
        ISpeechRecoContext* This,
        BSTR *UIType);

    HRESULT (STDMETHODCALLTYPE *putref_Voice)(
        ISpeechRecoContext* This,
        ISpeechVoice *Voice);

    HRESULT (STDMETHODCALLTYPE *get_Voice)(
        ISpeechRecoContext* This,
        ISpeechVoice **Voice);

    HRESULT (STDMETHODCALLTYPE *put_AllowVoiceFormatMatchingOnNextSet)(
        ISpeechRecoContext* This,
        VARIANT_BOOL Allow);

    HRESULT (STDMETHODCALLTYPE *get_AllowVoiceFormatMatchingOnNextSet)(
        ISpeechRecoContext* This,
        VARIANT_BOOL *pAllow);

    HRESULT (STDMETHODCALLTYPE *put_VoicePurgeEvent)(
        ISpeechRecoContext* This,
        SpeechRecoEvents EventInterest);

    HRESULT (STDMETHODCALLTYPE *get_VoicePurgeEvent)(
        ISpeechRecoContext* This,
        SpeechRecoEvents *EventInterest);

    HRESULT (STDMETHODCALLTYPE *put_EventInterests)(
        ISpeechRecoContext* This,
        SpeechRecoEvents EventInterest);

    HRESULT (STDMETHODCALLTYPE *get_EventInterests)(
        ISpeechRecoContext* This,
        SpeechRecoEvents *EventInterest);

    HRESULT (STDMETHODCALLTYPE *put_CmdMaxAlternates)(
        ISpeechRecoContext* This,
        LONG MaxAlternates);

    HRESULT (STDMETHODCALLTYPE *get_CmdMaxAlternates)(
        ISpeechRecoContext* This,
        LONG *MaxAlternates);

    HRESULT (STDMETHODCALLTYPE *put_State)(
        ISpeechRecoContext* This,
        SpeechRecoContextState State);

    HRESULT (STDMETHODCALLTYPE *get_State)(
        ISpeechRecoContext* This,
        SpeechRecoContextState *State);

    HRESULT (STDMETHODCALLTYPE *put_RetainedAudio)(
        ISpeechRecoContext* This,
        SpeechRetainedAudioOptions Option);

    HRESULT (STDMETHODCALLTYPE *get_RetainedAudio)(
        ISpeechRecoContext* This,
        SpeechRetainedAudioOptions *Option);

    HRESULT (STDMETHODCALLTYPE *putref_RetainedAudioFormat)(
        ISpeechRecoContext* This,
        ISpeechAudioFormat *Format);

    HRESULT (STDMETHODCALLTYPE *get_RetainedAudioFormat)(
        ISpeechRecoContext* This,
        ISpeechAudioFormat **Format);

    HRESULT (STDMETHODCALLTYPE *Pause)(
        ISpeechRecoContext* This);

    HRESULT (STDMETHODCALLTYPE *Resume)(
        ISpeechRecoContext* This);

    HRESULT (STDMETHODCALLTYPE *CreateGrammar)(
        ISpeechRecoContext* This,
        VARIANT GrammarId,
        ISpeechRecoGrammar **Grammar);

    HRESULT (STDMETHODCALLTYPE *CreateResultFromMemory)(
        ISpeechRecoContext* This,
        VARIANT *ResultBlock,
        ISpeechRecoResult **Result);

    HRESULT (STDMETHODCALLTYPE *Bookmark)(
        ISpeechRecoContext* This,
        SpeechBookmarkOptions Options,
        VARIANT StreamPos,
        VARIANT BookmarkId);

    HRESULT (STDMETHODCALLTYPE *SetAdaptationData)(
        ISpeechRecoContext* This,
        BSTR AdaptationString);

    END_INTERFACE
} ISpeechRecoContextVtbl;
interface ISpeechRecoContext {
    CONST_VTBL ISpeechRecoContextVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechRecoContext_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechRecoContext_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechRecoContext_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechRecoContext_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechRecoContext_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechRecoContext_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechRecoContext_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechRecoContext methods ***/
#define ISpeechRecoContext_get_Recognizer(This,Recognizer) (This)->lpVtbl->get_Recognizer(This,Recognizer)
#define ISpeechRecoContext_get_AudioInputInterferenceStatus(This,Interference) (This)->lpVtbl->get_AudioInputInterferenceStatus(This,Interference)
#define ISpeechRecoContext_get_RequestedUIType(This,UIType) (This)->lpVtbl->get_RequestedUIType(This,UIType)
#define ISpeechRecoContext_putref_Voice(This,Voice) (This)->lpVtbl->putref_Voice(This,Voice)
#define ISpeechRecoContext_get_Voice(This,Voice) (This)->lpVtbl->get_Voice(This,Voice)
#define ISpeechRecoContext_put_AllowVoiceFormatMatchingOnNextSet(This,Allow) (This)->lpVtbl->put_AllowVoiceFormatMatchingOnNextSet(This,Allow)
#define ISpeechRecoContext_get_AllowVoiceFormatMatchingOnNextSet(This,pAllow) (This)->lpVtbl->get_AllowVoiceFormatMatchingOnNextSet(This,pAllow)
#define ISpeechRecoContext_put_VoicePurgeEvent(This,EventInterest) (This)->lpVtbl->put_VoicePurgeEvent(This,EventInterest)
#define ISpeechRecoContext_get_VoicePurgeEvent(This,EventInterest) (This)->lpVtbl->get_VoicePurgeEvent(This,EventInterest)
#define ISpeechRecoContext_put_EventInterests(This,EventInterest) (This)->lpVtbl->put_EventInterests(This,EventInterest)
#define ISpeechRecoContext_get_EventInterests(This,EventInterest) (This)->lpVtbl->get_EventInterests(This,EventInterest)
#define ISpeechRecoContext_put_CmdMaxAlternates(This,MaxAlternates) (This)->lpVtbl->put_CmdMaxAlternates(This,MaxAlternates)
#define ISpeechRecoContext_get_CmdMaxAlternates(This,MaxAlternates) (This)->lpVtbl->get_CmdMaxAlternates(This,MaxAlternates)
#define ISpeechRecoContext_put_State(This,State) (This)->lpVtbl->put_State(This,State)
#define ISpeechRecoContext_get_State(This,State) (This)->lpVtbl->get_State(This,State)
#define ISpeechRecoContext_put_RetainedAudio(This,Option) (This)->lpVtbl->put_RetainedAudio(This,Option)
#define ISpeechRecoContext_get_RetainedAudio(This,Option) (This)->lpVtbl->get_RetainedAudio(This,Option)
#define ISpeechRecoContext_putref_RetainedAudioFormat(This,Format) (This)->lpVtbl->putref_RetainedAudioFormat(This,Format)
#define ISpeechRecoContext_get_RetainedAudioFormat(This,Format) (This)->lpVtbl->get_RetainedAudioFormat(This,Format)
#define ISpeechRecoContext_Pause(This) (This)->lpVtbl->Pause(This)
#define ISpeechRecoContext_Resume(This) (This)->lpVtbl->Resume(This)
#define ISpeechRecoContext_CreateGrammar(This,GrammarId,Grammar) (This)->lpVtbl->CreateGrammar(This,GrammarId,Grammar)
#define ISpeechRecoContext_CreateResultFromMemory(This,ResultBlock,Result) (This)->lpVtbl->CreateResultFromMemory(This,ResultBlock,Result)
#define ISpeechRecoContext_Bookmark(This,Options,StreamPos,BookmarkId) (This)->lpVtbl->Bookmark(This,Options,StreamPos,BookmarkId)
#define ISpeechRecoContext_SetAdaptationData(This,AdaptationString) (This)->lpVtbl->SetAdaptationData(This,AdaptationString)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechRecoContext_QueryInterface(ISpeechRecoContext* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechRecoContext_AddRef(ISpeechRecoContext* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechRecoContext_Release(ISpeechRecoContext* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechRecoContext_GetTypeInfoCount(ISpeechRecoContext* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechRecoContext_GetTypeInfo(ISpeechRecoContext* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechRecoContext_GetIDsOfNames(ISpeechRecoContext* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechRecoContext_Invoke(ISpeechRecoContext* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechRecoContext methods ***/
static FORCEINLINE HRESULT ISpeechRecoContext_get_Recognizer(ISpeechRecoContext* This,ISpeechRecognizer **Recognizer) {
    return This->lpVtbl->get_Recognizer(This,Recognizer);
}
static FORCEINLINE HRESULT ISpeechRecoContext_get_AudioInputInterferenceStatus(ISpeechRecoContext* This,SpeechInterference *Interference) {
    return This->lpVtbl->get_AudioInputInterferenceStatus(This,Interference);
}
static FORCEINLINE HRESULT ISpeechRecoContext_get_RequestedUIType(ISpeechRecoContext* This,BSTR *UIType) {
    return This->lpVtbl->get_RequestedUIType(This,UIType);
}
static FORCEINLINE HRESULT ISpeechRecoContext_putref_Voice(ISpeechRecoContext* This,ISpeechVoice *Voice) {
    return This->lpVtbl->putref_Voice(This,Voice);
}
static FORCEINLINE HRESULT ISpeechRecoContext_get_Voice(ISpeechRecoContext* This,ISpeechVoice **Voice) {
    return This->lpVtbl->get_Voice(This,Voice);
}
static FORCEINLINE HRESULT ISpeechRecoContext_put_AllowVoiceFormatMatchingOnNextSet(ISpeechRecoContext* This,VARIANT_BOOL Allow) {
    return This->lpVtbl->put_AllowVoiceFormatMatchingOnNextSet(This,Allow);
}
static FORCEINLINE HRESULT ISpeechRecoContext_get_AllowVoiceFormatMatchingOnNextSet(ISpeechRecoContext* This,VARIANT_BOOL *pAllow) {
    return This->lpVtbl->get_AllowVoiceFormatMatchingOnNextSet(This,pAllow);
}
static FORCEINLINE HRESULT ISpeechRecoContext_put_VoicePurgeEvent(ISpeechRecoContext* This,SpeechRecoEvents EventInterest) {
    return This->lpVtbl->put_VoicePurgeEvent(This,EventInterest);
}
static FORCEINLINE HRESULT ISpeechRecoContext_get_VoicePurgeEvent(ISpeechRecoContext* This,SpeechRecoEvents *EventInterest) {
    return This->lpVtbl->get_VoicePurgeEvent(This,EventInterest);
}
static FORCEINLINE HRESULT ISpeechRecoContext_put_EventInterests(ISpeechRecoContext* This,SpeechRecoEvents EventInterest) {
    return This->lpVtbl->put_EventInterests(This,EventInterest);
}
static FORCEINLINE HRESULT ISpeechRecoContext_get_EventInterests(ISpeechRecoContext* This,SpeechRecoEvents *EventInterest) {
    return This->lpVtbl->get_EventInterests(This,EventInterest);
}
static FORCEINLINE HRESULT ISpeechRecoContext_put_CmdMaxAlternates(ISpeechRecoContext* This,LONG MaxAlternates) {
    return This->lpVtbl->put_CmdMaxAlternates(This,MaxAlternates);
}
static FORCEINLINE HRESULT ISpeechRecoContext_get_CmdMaxAlternates(ISpeechRecoContext* This,LONG *MaxAlternates) {
    return This->lpVtbl->get_CmdMaxAlternates(This,MaxAlternates);
}
static FORCEINLINE HRESULT ISpeechRecoContext_put_State(ISpeechRecoContext* This,SpeechRecoContextState State) {
    return This->lpVtbl->put_State(This,State);
}
static FORCEINLINE HRESULT ISpeechRecoContext_get_State(ISpeechRecoContext* This,SpeechRecoContextState *State) {
    return This->lpVtbl->get_State(This,State);
}
static FORCEINLINE HRESULT ISpeechRecoContext_put_RetainedAudio(ISpeechRecoContext* This,SpeechRetainedAudioOptions Option) {
    return This->lpVtbl->put_RetainedAudio(This,Option);
}
static FORCEINLINE HRESULT ISpeechRecoContext_get_RetainedAudio(ISpeechRecoContext* This,SpeechRetainedAudioOptions *Option) {
    return This->lpVtbl->get_RetainedAudio(This,Option);
}
static FORCEINLINE HRESULT ISpeechRecoContext_putref_RetainedAudioFormat(ISpeechRecoContext* This,ISpeechAudioFormat *Format) {
    return This->lpVtbl->putref_RetainedAudioFormat(This,Format);
}
static FORCEINLINE HRESULT ISpeechRecoContext_get_RetainedAudioFormat(ISpeechRecoContext* This,ISpeechAudioFormat **Format) {
    return This->lpVtbl->get_RetainedAudioFormat(This,Format);
}
static FORCEINLINE HRESULT ISpeechRecoContext_Pause(ISpeechRecoContext* This) {
    return This->lpVtbl->Pause(This);
}
static FORCEINLINE HRESULT ISpeechRecoContext_Resume(ISpeechRecoContext* This) {
    return This->lpVtbl->Resume(This);
}
static FORCEINLINE HRESULT ISpeechRecoContext_CreateGrammar(ISpeechRecoContext* This,VARIANT GrammarId,ISpeechRecoGrammar **Grammar) {
    return This->lpVtbl->CreateGrammar(This,GrammarId,Grammar);
}
static FORCEINLINE HRESULT ISpeechRecoContext_CreateResultFromMemory(ISpeechRecoContext* This,VARIANT *ResultBlock,ISpeechRecoResult **Result) {
    return This->lpVtbl->CreateResultFromMemory(This,ResultBlock,Result);
}
static FORCEINLINE HRESULT ISpeechRecoContext_Bookmark(ISpeechRecoContext* This,SpeechBookmarkOptions Options,VARIANT StreamPos,VARIANT BookmarkId) {
    return This->lpVtbl->Bookmark(This,Options,StreamPos,BookmarkId);
}
static FORCEINLINE HRESULT ISpeechRecoContext_SetAdaptationData(ISpeechRecoContext* This,BSTR AdaptationString) {
    return This->lpVtbl->SetAdaptationData(This,AdaptationString);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechRecoContext_get_Recognizer_Proxy(
    ISpeechRecoContext* This,
    ISpeechRecognizer **Recognizer);
void __RPC_STUB ISpeechRecoContext_get_Recognizer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_get_AudioInputInterferenceStatus_Proxy(
    ISpeechRecoContext* This,
    SpeechInterference *Interference);
void __RPC_STUB ISpeechRecoContext_get_AudioInputInterferenceStatus_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_get_RequestedUIType_Proxy(
    ISpeechRecoContext* This,
    BSTR *UIType);
void __RPC_STUB ISpeechRecoContext_get_RequestedUIType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_putref_Voice_Proxy(
    ISpeechRecoContext* This,
    ISpeechVoice *Voice);
void __RPC_STUB ISpeechRecoContext_putref_Voice_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_get_Voice_Proxy(
    ISpeechRecoContext* This,
    ISpeechVoice **Voice);
void __RPC_STUB ISpeechRecoContext_get_Voice_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_put_AllowVoiceFormatMatchingOnNextSet_Proxy(
    ISpeechRecoContext* This,
    VARIANT_BOOL Allow);
void __RPC_STUB ISpeechRecoContext_put_AllowVoiceFormatMatchingOnNextSet_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_get_AllowVoiceFormatMatchingOnNextSet_Proxy(
    ISpeechRecoContext* This,
    VARIANT_BOOL *pAllow);
void __RPC_STUB ISpeechRecoContext_get_AllowVoiceFormatMatchingOnNextSet_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_put_VoicePurgeEvent_Proxy(
    ISpeechRecoContext* This,
    SpeechRecoEvents EventInterest);
void __RPC_STUB ISpeechRecoContext_put_VoicePurgeEvent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_get_VoicePurgeEvent_Proxy(
    ISpeechRecoContext* This,
    SpeechRecoEvents *EventInterest);
void __RPC_STUB ISpeechRecoContext_get_VoicePurgeEvent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_put_EventInterests_Proxy(
    ISpeechRecoContext* This,
    SpeechRecoEvents EventInterest);
void __RPC_STUB ISpeechRecoContext_put_EventInterests_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_get_EventInterests_Proxy(
    ISpeechRecoContext* This,
    SpeechRecoEvents *EventInterest);
void __RPC_STUB ISpeechRecoContext_get_EventInterests_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_put_CmdMaxAlternates_Proxy(
    ISpeechRecoContext* This,
    LONG MaxAlternates);
void __RPC_STUB ISpeechRecoContext_put_CmdMaxAlternates_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_get_CmdMaxAlternates_Proxy(
    ISpeechRecoContext* This,
    LONG *MaxAlternates);
void __RPC_STUB ISpeechRecoContext_get_CmdMaxAlternates_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_put_State_Proxy(
    ISpeechRecoContext* This,
    SpeechRecoContextState State);
void __RPC_STUB ISpeechRecoContext_put_State_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_get_State_Proxy(
    ISpeechRecoContext* This,
    SpeechRecoContextState *State);
void __RPC_STUB ISpeechRecoContext_get_State_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_put_RetainedAudio_Proxy(
    ISpeechRecoContext* This,
    SpeechRetainedAudioOptions Option);
void __RPC_STUB ISpeechRecoContext_put_RetainedAudio_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_get_RetainedAudio_Proxy(
    ISpeechRecoContext* This,
    SpeechRetainedAudioOptions *Option);
void __RPC_STUB ISpeechRecoContext_get_RetainedAudio_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_putref_RetainedAudioFormat_Proxy(
    ISpeechRecoContext* This,
    ISpeechAudioFormat *Format);
void __RPC_STUB ISpeechRecoContext_putref_RetainedAudioFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_get_RetainedAudioFormat_Proxy(
    ISpeechRecoContext* This,
    ISpeechAudioFormat **Format);
void __RPC_STUB ISpeechRecoContext_get_RetainedAudioFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_Pause_Proxy(
    ISpeechRecoContext* This);
void __RPC_STUB ISpeechRecoContext_Pause_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_Resume_Proxy(
    ISpeechRecoContext* This);
void __RPC_STUB ISpeechRecoContext_Resume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_CreateGrammar_Proxy(
    ISpeechRecoContext* This,
    VARIANT GrammarId,
    ISpeechRecoGrammar **Grammar);
void __RPC_STUB ISpeechRecoContext_CreateGrammar_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_CreateResultFromMemory_Proxy(
    ISpeechRecoContext* This,
    VARIANT *ResultBlock,
    ISpeechRecoResult **Result);
void __RPC_STUB ISpeechRecoContext_CreateResultFromMemory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_Bookmark_Proxy(
    ISpeechRecoContext* This,
    SpeechBookmarkOptions Options,
    VARIANT StreamPos,
    VARIANT BookmarkId);
void __RPC_STUB ISpeechRecoContext_Bookmark_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoContext_SetAdaptationData_Proxy(
    ISpeechRecoContext* This,
    BSTR AdaptationString);
void __RPC_STUB ISpeechRecoContext_SetAdaptationData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechRecoContext_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechRecoGrammar interface
 */
#ifndef __ISpeechRecoGrammar_INTERFACE_DEFINED__
#define __ISpeechRecoGrammar_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechRecoGrammar, 0xb6d6f79f, 0x2158, 0x4e50, 0xb5,0xbc, 0x9a,0x9c,0xcd,0x85,0x2a,0x09);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b6d6f79f-2158-4e50-b5bc-9a9ccd852a09")
ISpeechRecoGrammar : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Id(
        VARIANT *Id) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RecoContext(
        ISpeechRecoContext **RecoContext) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_State(
        SpeechGrammarState State) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_State(
        SpeechGrammarState *State) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Rules(
        ISpeechGrammarRules **Rules) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        SpeechLanguageId NewLanguage = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE CmdLoadFromFile(
        const BSTR FileName,
        SpeechLoadOption LoadOption = SLOStatic) = 0;

    virtual HRESULT STDMETHODCALLTYPE CmdLoadFromObject(
        const BSTR ClassId,
        const BSTR GrammarName,
        SpeechLoadOption LoadOption = SLOStatic) = 0;

    virtual HRESULT STDMETHODCALLTYPE CmdLoadFromResource(
        LONG hModule,
        VARIANT ResourceName,
        VARIANT ResourceType,
        SpeechLanguageId LanguageId,
        SpeechLoadOption LoadOption = SLOStatic) = 0;

    virtual HRESULT STDMETHODCALLTYPE CmdLoadFromMemory(
        VARIANT GrammarData,
        SpeechLoadOption LoadOption = SLOStatic) = 0;

    virtual HRESULT STDMETHODCALLTYPE CmdLoadFromProprietaryGrammar(
        const BSTR ProprietaryGuid,
        const BSTR ProprietaryString,
        VARIANT ProprietaryData,
        SpeechLoadOption LoadOption = SLOStatic) = 0;

    virtual HRESULT STDMETHODCALLTYPE CmdSetRuleState(
        const BSTR Name,
        SpeechRuleState State) = 0;

    virtual HRESULT STDMETHODCALLTYPE CmdSetRuleIdState(
        LONG RuleId,
        SpeechRuleState State) = 0;

    virtual HRESULT STDMETHODCALLTYPE DictationLoad(
        const BSTR TopicName = "",
        SpeechLoadOption LoadOption = SLOStatic) = 0;

    virtual HRESULT STDMETHODCALLTYPE DictationUnload(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE DictationSetState(
        SpeechRuleState State) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetWordSequenceData(
        const BSTR Text,
        LONG TextLength,
        ISpeechTextSelectionInformation *Info) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTextSelection(
        ISpeechTextSelectionInformation *Info) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsPronounceable(
        const BSTR Word,
        SpeechWordPronounceable *WordPronounceable) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechRecoGrammar, 0xb6d6f79f, 0x2158, 0x4e50, 0xb5,0xbc, 0x9a,0x9c,0xcd,0x85,0x2a,0x09)
#endif
#else
typedef struct ISpeechRecoGrammarVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechRecoGrammar* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechRecoGrammar* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechRecoGrammar* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechRecoGrammar* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechRecoGrammar* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechRecoGrammar* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechRecoGrammar* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechRecoGrammar methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Id)(
        ISpeechRecoGrammar* This,
        VARIANT *Id);

    HRESULT (STDMETHODCALLTYPE *get_RecoContext)(
        ISpeechRecoGrammar* This,
        ISpeechRecoContext **RecoContext);

    HRESULT (STDMETHODCALLTYPE *put_State)(
        ISpeechRecoGrammar* This,
        SpeechGrammarState State);

    HRESULT (STDMETHODCALLTYPE *get_State)(
        ISpeechRecoGrammar* This,
        SpeechGrammarState *State);

    HRESULT (STDMETHODCALLTYPE *get_Rules)(
        ISpeechRecoGrammar* This,
        ISpeechGrammarRules **Rules);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ISpeechRecoGrammar* This,
        SpeechLanguageId NewLanguage);

    HRESULT (STDMETHODCALLTYPE *CmdLoadFromFile)(
        ISpeechRecoGrammar* This,
        const BSTR FileName,
        SpeechLoadOption LoadOption);

    HRESULT (STDMETHODCALLTYPE *CmdLoadFromObject)(
        ISpeechRecoGrammar* This,
        const BSTR ClassId,
        const BSTR GrammarName,
        SpeechLoadOption LoadOption);

    HRESULT (STDMETHODCALLTYPE *CmdLoadFromResource)(
        ISpeechRecoGrammar* This,
        LONG hModule,
        VARIANT ResourceName,
        VARIANT ResourceType,
        SpeechLanguageId LanguageId,
        SpeechLoadOption LoadOption);

    HRESULT (STDMETHODCALLTYPE *CmdLoadFromMemory)(
        ISpeechRecoGrammar* This,
        VARIANT GrammarData,
        SpeechLoadOption LoadOption);

    HRESULT (STDMETHODCALLTYPE *CmdLoadFromProprietaryGrammar)(
        ISpeechRecoGrammar* This,
        const BSTR ProprietaryGuid,
        const BSTR ProprietaryString,
        VARIANT ProprietaryData,
        SpeechLoadOption LoadOption);

    HRESULT (STDMETHODCALLTYPE *CmdSetRuleState)(
        ISpeechRecoGrammar* This,
        const BSTR Name,
        SpeechRuleState State);

    HRESULT (STDMETHODCALLTYPE *CmdSetRuleIdState)(
        ISpeechRecoGrammar* This,
        LONG RuleId,
        SpeechRuleState State);

    HRESULT (STDMETHODCALLTYPE *DictationLoad)(
        ISpeechRecoGrammar* This,
        const BSTR TopicName,
        SpeechLoadOption LoadOption);

    HRESULT (STDMETHODCALLTYPE *DictationUnload)(
        ISpeechRecoGrammar* This);

    HRESULT (STDMETHODCALLTYPE *DictationSetState)(
        ISpeechRecoGrammar* This,
        SpeechRuleState State);

    HRESULT (STDMETHODCALLTYPE *SetWordSequenceData)(
        ISpeechRecoGrammar* This,
        const BSTR Text,
        LONG TextLength,
        ISpeechTextSelectionInformation *Info);

    HRESULT (STDMETHODCALLTYPE *SetTextSelection)(
        ISpeechRecoGrammar* This,
        ISpeechTextSelectionInformation *Info);

    HRESULT (STDMETHODCALLTYPE *IsPronounceable)(
        ISpeechRecoGrammar* This,
        const BSTR Word,
        SpeechWordPronounceable *WordPronounceable);

    END_INTERFACE
} ISpeechRecoGrammarVtbl;
interface ISpeechRecoGrammar {
    CONST_VTBL ISpeechRecoGrammarVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechRecoGrammar_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechRecoGrammar_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechRecoGrammar_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechRecoGrammar_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechRecoGrammar_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechRecoGrammar_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechRecoGrammar_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechRecoGrammar methods ***/
#define ISpeechRecoGrammar_get_Id(This,Id) (This)->lpVtbl->get_Id(This,Id)
#define ISpeechRecoGrammar_get_RecoContext(This,RecoContext) (This)->lpVtbl->get_RecoContext(This,RecoContext)
#define ISpeechRecoGrammar_put_State(This,State) (This)->lpVtbl->put_State(This,State)
#define ISpeechRecoGrammar_get_State(This,State) (This)->lpVtbl->get_State(This,State)
#define ISpeechRecoGrammar_get_Rules(This,Rules) (This)->lpVtbl->get_Rules(This,Rules)
#define ISpeechRecoGrammar_Reset(This,NewLanguage) (This)->lpVtbl->Reset(This,NewLanguage)
#define ISpeechRecoGrammar_CmdLoadFromFile(This,FileName,LoadOption) (This)->lpVtbl->CmdLoadFromFile(This,FileName,LoadOption)
#define ISpeechRecoGrammar_CmdLoadFromObject(This,ClassId,GrammarName,LoadOption) (This)->lpVtbl->CmdLoadFromObject(This,ClassId,GrammarName,LoadOption)
#define ISpeechRecoGrammar_CmdLoadFromResource(This,hModule,ResourceName,ResourceType,LanguageId,LoadOption) (This)->lpVtbl->CmdLoadFromResource(This,hModule,ResourceName,ResourceType,LanguageId,LoadOption)
#define ISpeechRecoGrammar_CmdLoadFromMemory(This,GrammarData,LoadOption) (This)->lpVtbl->CmdLoadFromMemory(This,GrammarData,LoadOption)
#define ISpeechRecoGrammar_CmdLoadFromProprietaryGrammar(This,ProprietaryGuid,ProprietaryString,ProprietaryData,LoadOption) (This)->lpVtbl->CmdLoadFromProprietaryGrammar(This,ProprietaryGuid,ProprietaryString,ProprietaryData,LoadOption)
#define ISpeechRecoGrammar_CmdSetRuleState(This,Name,State) (This)->lpVtbl->CmdSetRuleState(This,Name,State)
#define ISpeechRecoGrammar_CmdSetRuleIdState(This,RuleId,State) (This)->lpVtbl->CmdSetRuleIdState(This,RuleId,State)
#define ISpeechRecoGrammar_DictationLoad(This,TopicName,LoadOption) (This)->lpVtbl->DictationLoad(This,TopicName,LoadOption)
#define ISpeechRecoGrammar_DictationUnload(This) (This)->lpVtbl->DictationUnload(This)
#define ISpeechRecoGrammar_DictationSetState(This,State) (This)->lpVtbl->DictationSetState(This,State)
#define ISpeechRecoGrammar_SetWordSequenceData(This,Text,TextLength,Info) (This)->lpVtbl->SetWordSequenceData(This,Text,TextLength,Info)
#define ISpeechRecoGrammar_SetTextSelection(This,Info) (This)->lpVtbl->SetTextSelection(This,Info)
#define ISpeechRecoGrammar_IsPronounceable(This,Word,WordPronounceable) (This)->lpVtbl->IsPronounceable(This,Word,WordPronounceable)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechRecoGrammar_QueryInterface(ISpeechRecoGrammar* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechRecoGrammar_AddRef(ISpeechRecoGrammar* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechRecoGrammar_Release(ISpeechRecoGrammar* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechRecoGrammar_GetTypeInfoCount(ISpeechRecoGrammar* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_GetTypeInfo(ISpeechRecoGrammar* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_GetIDsOfNames(ISpeechRecoGrammar* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_Invoke(ISpeechRecoGrammar* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechRecoGrammar methods ***/
static FORCEINLINE HRESULT ISpeechRecoGrammar_get_Id(ISpeechRecoGrammar* This,VARIANT *Id) {
    return This->lpVtbl->get_Id(This,Id);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_get_RecoContext(ISpeechRecoGrammar* This,ISpeechRecoContext **RecoContext) {
    return This->lpVtbl->get_RecoContext(This,RecoContext);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_put_State(ISpeechRecoGrammar* This,SpeechGrammarState State) {
    return This->lpVtbl->put_State(This,State);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_get_State(ISpeechRecoGrammar* This,SpeechGrammarState *State) {
    return This->lpVtbl->get_State(This,State);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_get_Rules(ISpeechRecoGrammar* This,ISpeechGrammarRules **Rules) {
    return This->lpVtbl->get_Rules(This,Rules);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_Reset(ISpeechRecoGrammar* This,SpeechLanguageId NewLanguage) {
    return This->lpVtbl->Reset(This,NewLanguage);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_CmdLoadFromFile(ISpeechRecoGrammar* This,const BSTR FileName,SpeechLoadOption LoadOption) {
    return This->lpVtbl->CmdLoadFromFile(This,FileName,LoadOption);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_CmdLoadFromObject(ISpeechRecoGrammar* This,const BSTR ClassId,const BSTR GrammarName,SpeechLoadOption LoadOption) {
    return This->lpVtbl->CmdLoadFromObject(This,ClassId,GrammarName,LoadOption);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_CmdLoadFromResource(ISpeechRecoGrammar* This,LONG hModule,VARIANT ResourceName,VARIANT ResourceType,SpeechLanguageId LanguageId,SpeechLoadOption LoadOption) {
    return This->lpVtbl->CmdLoadFromResource(This,hModule,ResourceName,ResourceType,LanguageId,LoadOption);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_CmdLoadFromMemory(ISpeechRecoGrammar* This,VARIANT GrammarData,SpeechLoadOption LoadOption) {
    return This->lpVtbl->CmdLoadFromMemory(This,GrammarData,LoadOption);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_CmdLoadFromProprietaryGrammar(ISpeechRecoGrammar* This,const BSTR ProprietaryGuid,const BSTR ProprietaryString,VARIANT ProprietaryData,SpeechLoadOption LoadOption) {
    return This->lpVtbl->CmdLoadFromProprietaryGrammar(This,ProprietaryGuid,ProprietaryString,ProprietaryData,LoadOption);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_CmdSetRuleState(ISpeechRecoGrammar* This,const BSTR Name,SpeechRuleState State) {
    return This->lpVtbl->CmdSetRuleState(This,Name,State);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_CmdSetRuleIdState(ISpeechRecoGrammar* This,LONG RuleId,SpeechRuleState State) {
    return This->lpVtbl->CmdSetRuleIdState(This,RuleId,State);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_DictationLoad(ISpeechRecoGrammar* This,const BSTR TopicName,SpeechLoadOption LoadOption) {
    return This->lpVtbl->DictationLoad(This,TopicName,LoadOption);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_DictationUnload(ISpeechRecoGrammar* This) {
    return This->lpVtbl->DictationUnload(This);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_DictationSetState(ISpeechRecoGrammar* This,SpeechRuleState State) {
    return This->lpVtbl->DictationSetState(This,State);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_SetWordSequenceData(ISpeechRecoGrammar* This,const BSTR Text,LONG TextLength,ISpeechTextSelectionInformation *Info) {
    return This->lpVtbl->SetWordSequenceData(This,Text,TextLength,Info);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_SetTextSelection(ISpeechRecoGrammar* This,ISpeechTextSelectionInformation *Info) {
    return This->lpVtbl->SetTextSelection(This,Info);
}
static FORCEINLINE HRESULT ISpeechRecoGrammar_IsPronounceable(ISpeechRecoGrammar* This,const BSTR Word,SpeechWordPronounceable *WordPronounceable) {
    return This->lpVtbl->IsPronounceable(This,Word,WordPronounceable);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_get_Id_Proxy(
    ISpeechRecoGrammar* This,
    VARIANT *Id);
void __RPC_STUB ISpeechRecoGrammar_get_Id_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_get_RecoContext_Proxy(
    ISpeechRecoGrammar* This,
    ISpeechRecoContext **RecoContext);
void __RPC_STUB ISpeechRecoGrammar_get_RecoContext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_put_State_Proxy(
    ISpeechRecoGrammar* This,
    SpeechGrammarState State);
void __RPC_STUB ISpeechRecoGrammar_put_State_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_get_State_Proxy(
    ISpeechRecoGrammar* This,
    SpeechGrammarState *State);
void __RPC_STUB ISpeechRecoGrammar_get_State_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_get_Rules_Proxy(
    ISpeechRecoGrammar* This,
    ISpeechGrammarRules **Rules);
void __RPC_STUB ISpeechRecoGrammar_get_Rules_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_Reset_Proxy(
    ISpeechRecoGrammar* This,
    SpeechLanguageId NewLanguage);
void __RPC_STUB ISpeechRecoGrammar_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_CmdLoadFromFile_Proxy(
    ISpeechRecoGrammar* This,
    const BSTR FileName,
    SpeechLoadOption LoadOption);
void __RPC_STUB ISpeechRecoGrammar_CmdLoadFromFile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_CmdLoadFromObject_Proxy(
    ISpeechRecoGrammar* This,
    const BSTR ClassId,
    const BSTR GrammarName,
    SpeechLoadOption LoadOption);
void __RPC_STUB ISpeechRecoGrammar_CmdLoadFromObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_CmdLoadFromResource_Proxy(
    ISpeechRecoGrammar* This,
    LONG hModule,
    VARIANT ResourceName,
    VARIANT ResourceType,
    SpeechLanguageId LanguageId,
    SpeechLoadOption LoadOption);
void __RPC_STUB ISpeechRecoGrammar_CmdLoadFromResource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_CmdLoadFromMemory_Proxy(
    ISpeechRecoGrammar* This,
    VARIANT GrammarData,
    SpeechLoadOption LoadOption);
void __RPC_STUB ISpeechRecoGrammar_CmdLoadFromMemory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_CmdLoadFromProprietaryGrammar_Proxy(
    ISpeechRecoGrammar* This,
    const BSTR ProprietaryGuid,
    const BSTR ProprietaryString,
    VARIANT ProprietaryData,
    SpeechLoadOption LoadOption);
void __RPC_STUB ISpeechRecoGrammar_CmdLoadFromProprietaryGrammar_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_CmdSetRuleState_Proxy(
    ISpeechRecoGrammar* This,
    const BSTR Name,
    SpeechRuleState State);
void __RPC_STUB ISpeechRecoGrammar_CmdSetRuleState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_CmdSetRuleIdState_Proxy(
    ISpeechRecoGrammar* This,
    LONG RuleId,
    SpeechRuleState State);
void __RPC_STUB ISpeechRecoGrammar_CmdSetRuleIdState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_DictationLoad_Proxy(
    ISpeechRecoGrammar* This,
    const BSTR TopicName,
    SpeechLoadOption LoadOption);
void __RPC_STUB ISpeechRecoGrammar_DictationLoad_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_DictationUnload_Proxy(
    ISpeechRecoGrammar* This);
void __RPC_STUB ISpeechRecoGrammar_DictationUnload_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_DictationSetState_Proxy(
    ISpeechRecoGrammar* This,
    SpeechRuleState State);
void __RPC_STUB ISpeechRecoGrammar_DictationSetState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_SetWordSequenceData_Proxy(
    ISpeechRecoGrammar* This,
    const BSTR Text,
    LONG TextLength,
    ISpeechTextSelectionInformation *Info);
void __RPC_STUB ISpeechRecoGrammar_SetWordSequenceData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_SetTextSelection_Proxy(
    ISpeechRecoGrammar* This,
    ISpeechTextSelectionInformation *Info);
void __RPC_STUB ISpeechRecoGrammar_SetTextSelection_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoGrammar_IsPronounceable_Proxy(
    ISpeechRecoGrammar* This,
    const BSTR Word,
    SpeechWordPronounceable *WordPronounceable);
void __RPC_STUB ISpeechRecoGrammar_IsPronounceable_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechRecoGrammar_INTERFACE_DEFINED__ */

/*****************************************************************************
 * _ISpeechRecoContextEvents dispinterface
 */
#ifndef ___ISpeechRecoContextEvents_DISPINTERFACE_DEFINED__
#define ___ISpeechRecoContextEvents_DISPINTERFACE_DEFINED__

DEFINE_GUID(DIID__ISpeechRecoContextEvents, 0x7b8fcb42, 0x0e9d, 0x4f00, 0xa0,0x48, 0x7b,0x04,0xd6,0x17,0x9d,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7b8fcb42-0e9d-4f00-a048-7b04d6179d3d")
_ISpeechRecoContextEvents : public IDispatch
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(_ISpeechRecoContextEvents, 0x7b8fcb42, 0x0e9d, 0x4f00, 0xa0,0x48, 0x7b,0x04,0xd6,0x17,0x9d,0x3d)
#endif
#else
typedef struct _ISpeechRecoContextEventsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        _ISpeechRecoContextEvents* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        _ISpeechRecoContextEvents* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        _ISpeechRecoContextEvents* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        _ISpeechRecoContextEvents* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        _ISpeechRecoContextEvents* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        _ISpeechRecoContextEvents* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        _ISpeechRecoContextEvents* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    END_INTERFACE
} _ISpeechRecoContextEventsVtbl;
interface _ISpeechRecoContextEvents {
    CONST_VTBL _ISpeechRecoContextEventsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define _ISpeechRecoContextEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define _ISpeechRecoContextEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
#define _ISpeechRecoContextEvents_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define _ISpeechRecoContextEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define _ISpeechRecoContextEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define _ISpeechRecoContextEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define _ISpeechRecoContextEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT _ISpeechRecoContextEvents_QueryInterface(_ISpeechRecoContextEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG _ISpeechRecoContextEvents_AddRef(_ISpeechRecoContextEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG _ISpeechRecoContextEvents_Release(_ISpeechRecoContextEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT _ISpeechRecoContextEvents_GetTypeInfoCount(_ISpeechRecoContextEvents* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT _ISpeechRecoContextEvents_GetTypeInfo(_ISpeechRecoContextEvents* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT _ISpeechRecoContextEvents_GetIDsOfNames(_ISpeechRecoContextEvents* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT _ISpeechRecoContextEvents_Invoke(_ISpeechRecoContextEvents* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
#endif
#endif

#endif

#endif  /* ___ISpeechRecoContextEvents_DISPINTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechGrammarRule interface
 */
#ifndef __ISpeechGrammarRule_INTERFACE_DEFINED__
#define __ISpeechGrammarRule_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechGrammarRule, 0xafe719cf, 0x5dd1, 0x44f2, 0x99,0x9c, 0x7a,0x39,0x9f,0x1c,0xfc,0xcc);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("afe719cf-5dd1-44f2-999c-7a399f1cfccc")
ISpeechGrammarRule : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Attributes(
        SpeechRuleAttributes *Attributes) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_InitialState(
        ISpeechGrammarRuleState **State) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Name(
        BSTR *Name) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Id(
        LONG *Id) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clear(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddResource(
        const BSTR ResourceName,
        const BSTR ResourceValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddState(
        ISpeechGrammarRuleState **State) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechGrammarRule, 0xafe719cf, 0x5dd1, 0x44f2, 0x99,0x9c, 0x7a,0x39,0x9f,0x1c,0xfc,0xcc)
#endif
#else
typedef struct ISpeechGrammarRuleVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechGrammarRule* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechGrammarRule* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechGrammarRule* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechGrammarRule* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechGrammarRule* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechGrammarRule* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechGrammarRule* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechGrammarRule methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Attributes)(
        ISpeechGrammarRule* This,
        SpeechRuleAttributes *Attributes);

    HRESULT (STDMETHODCALLTYPE *get_InitialState)(
        ISpeechGrammarRule* This,
        ISpeechGrammarRuleState **State);

    HRESULT (STDMETHODCALLTYPE *get_Name)(
        ISpeechGrammarRule* This,
        BSTR *Name);

    HRESULT (STDMETHODCALLTYPE *get_Id)(
        ISpeechGrammarRule* This,
        LONG *Id);

    HRESULT (STDMETHODCALLTYPE *Clear)(
        ISpeechGrammarRule* This);

    HRESULT (STDMETHODCALLTYPE *AddResource)(
        ISpeechGrammarRule* This,
        const BSTR ResourceName,
        const BSTR ResourceValue);

    HRESULT (STDMETHODCALLTYPE *AddState)(
        ISpeechGrammarRule* This,
        ISpeechGrammarRuleState **State);

    END_INTERFACE
} ISpeechGrammarRuleVtbl;
interface ISpeechGrammarRule {
    CONST_VTBL ISpeechGrammarRuleVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechGrammarRule_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechGrammarRule_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechGrammarRule_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechGrammarRule_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechGrammarRule_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechGrammarRule_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechGrammarRule_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechGrammarRule methods ***/
#define ISpeechGrammarRule_get_Attributes(This,Attributes) (This)->lpVtbl->get_Attributes(This,Attributes)
#define ISpeechGrammarRule_get_InitialState(This,State) (This)->lpVtbl->get_InitialState(This,State)
#define ISpeechGrammarRule_get_Name(This,Name) (This)->lpVtbl->get_Name(This,Name)
#define ISpeechGrammarRule_get_Id(This,Id) (This)->lpVtbl->get_Id(This,Id)
#define ISpeechGrammarRule_Clear(This) (This)->lpVtbl->Clear(This)
#define ISpeechGrammarRule_AddResource(This,ResourceName,ResourceValue) (This)->lpVtbl->AddResource(This,ResourceName,ResourceValue)
#define ISpeechGrammarRule_AddState(This,State) (This)->lpVtbl->AddState(This,State)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRule_QueryInterface(ISpeechGrammarRule* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechGrammarRule_AddRef(ISpeechGrammarRule* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechGrammarRule_Release(ISpeechGrammarRule* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRule_GetTypeInfoCount(ISpeechGrammarRule* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechGrammarRule_GetTypeInfo(ISpeechGrammarRule* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechGrammarRule_GetIDsOfNames(ISpeechGrammarRule* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechGrammarRule_Invoke(ISpeechGrammarRule* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechGrammarRule methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRule_get_Attributes(ISpeechGrammarRule* This,SpeechRuleAttributes *Attributes) {
    return This->lpVtbl->get_Attributes(This,Attributes);
}
static FORCEINLINE HRESULT ISpeechGrammarRule_get_InitialState(ISpeechGrammarRule* This,ISpeechGrammarRuleState **State) {
    return This->lpVtbl->get_InitialState(This,State);
}
static FORCEINLINE HRESULT ISpeechGrammarRule_get_Name(ISpeechGrammarRule* This,BSTR *Name) {
    return This->lpVtbl->get_Name(This,Name);
}
static FORCEINLINE HRESULT ISpeechGrammarRule_get_Id(ISpeechGrammarRule* This,LONG *Id) {
    return This->lpVtbl->get_Id(This,Id);
}
static FORCEINLINE HRESULT ISpeechGrammarRule_Clear(ISpeechGrammarRule* This) {
    return This->lpVtbl->Clear(This);
}
static FORCEINLINE HRESULT ISpeechGrammarRule_AddResource(ISpeechGrammarRule* This,const BSTR ResourceName,const BSTR ResourceValue) {
    return This->lpVtbl->AddResource(This,ResourceName,ResourceValue);
}
static FORCEINLINE HRESULT ISpeechGrammarRule_AddState(ISpeechGrammarRule* This,ISpeechGrammarRuleState **State) {
    return This->lpVtbl->AddState(This,State);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechGrammarRule_get_Attributes_Proxy(
    ISpeechGrammarRule* This,
    SpeechRuleAttributes *Attributes);
void __RPC_STUB ISpeechGrammarRule_get_Attributes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRule_get_InitialState_Proxy(
    ISpeechGrammarRule* This,
    ISpeechGrammarRuleState **State);
void __RPC_STUB ISpeechGrammarRule_get_InitialState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRule_get_Name_Proxy(
    ISpeechGrammarRule* This,
    BSTR *Name);
void __RPC_STUB ISpeechGrammarRule_get_Name_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRule_get_Id_Proxy(
    ISpeechGrammarRule* This,
    LONG *Id);
void __RPC_STUB ISpeechGrammarRule_get_Id_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRule_Clear_Proxy(
    ISpeechGrammarRule* This);
void __RPC_STUB ISpeechGrammarRule_Clear_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRule_AddResource_Proxy(
    ISpeechGrammarRule* This,
    const BSTR ResourceName,
    const BSTR ResourceValue);
void __RPC_STUB ISpeechGrammarRule_AddResource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRule_AddState_Proxy(
    ISpeechGrammarRule* This,
    ISpeechGrammarRuleState **State);
void __RPC_STUB ISpeechGrammarRule_AddState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechGrammarRule_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechGrammarRules interface
 */
#ifndef __ISpeechGrammarRules_INTERFACE_DEFINED__
#define __ISpeechGrammarRules_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechGrammarRules, 0x6ffa3b44, 0xfc2d, 0x40d1, 0x8a,0xfc, 0x32,0x91,0x1c,0x7f,0x1a,0xd1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6ffa3b44-fc2d-40d1-8afc-32911c7f1ad1")
ISpeechGrammarRules : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindRule(
        VARIANT RuleNameOrId,
        ISpeechGrammarRule **Rule) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        LONG Index,
        ISpeechGrammarRule **Rule) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **EnumVARIANT) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Dynamic(
        VARIANT_BOOL *Dynamic) = 0;

    virtual HRESULT STDMETHODCALLTYPE Add(
        BSTR RuleName,
        SpeechRuleAttributes Attributes,
        LONG RuleId = 0,
        ISpeechGrammarRule **Rule) = 0;

    virtual HRESULT STDMETHODCALLTYPE Commit(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE CommitAndSave(
        BSTR *ErrorText,
        VARIANT *SaveStream) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechGrammarRules, 0x6ffa3b44, 0xfc2d, 0x40d1, 0x8a,0xfc, 0x32,0x91,0x1c,0x7f,0x1a,0xd1)
#endif
#else
typedef struct ISpeechGrammarRulesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechGrammarRules* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechGrammarRules* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechGrammarRules* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechGrammarRules* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechGrammarRules* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechGrammarRules* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechGrammarRules* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechGrammarRules methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        ISpeechGrammarRules* This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *FindRule)(
        ISpeechGrammarRules* This,
        VARIANT RuleNameOrId,
        ISpeechGrammarRule **Rule);

    HRESULT (STDMETHODCALLTYPE *Item)(
        ISpeechGrammarRules* This,
        LONG Index,
        ISpeechGrammarRule **Rule);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        ISpeechGrammarRules* This,
        IUnknown **EnumVARIANT);

    HRESULT (STDMETHODCALLTYPE *get_Dynamic)(
        ISpeechGrammarRules* This,
        VARIANT_BOOL *Dynamic);

    HRESULT (STDMETHODCALLTYPE *Add)(
        ISpeechGrammarRules* This,
        BSTR RuleName,
        SpeechRuleAttributes Attributes,
        LONG RuleId,
        ISpeechGrammarRule **Rule);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        ISpeechGrammarRules* This);

    HRESULT (STDMETHODCALLTYPE *CommitAndSave)(
        ISpeechGrammarRules* This,
        BSTR *ErrorText,
        VARIANT *SaveStream);

    END_INTERFACE
} ISpeechGrammarRulesVtbl;
interface ISpeechGrammarRules {
    CONST_VTBL ISpeechGrammarRulesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechGrammarRules_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechGrammarRules_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechGrammarRules_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechGrammarRules_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechGrammarRules_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechGrammarRules_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechGrammarRules_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechGrammarRules methods ***/
#define ISpeechGrammarRules_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define ISpeechGrammarRules_FindRule(This,RuleNameOrId,Rule) (This)->lpVtbl->FindRule(This,RuleNameOrId,Rule)
#define ISpeechGrammarRules_Item(This,Index,Rule) (This)->lpVtbl->Item(This,Index,Rule)
#define ISpeechGrammarRules_get__NewEnum(This,EnumVARIANT) (This)->lpVtbl->get__NewEnum(This,EnumVARIANT)
#define ISpeechGrammarRules_get_Dynamic(This,Dynamic) (This)->lpVtbl->get_Dynamic(This,Dynamic)
#define ISpeechGrammarRules_Add(This,RuleName,Attributes,RuleId,Rule) (This)->lpVtbl->Add(This,RuleName,Attributes,RuleId,Rule)
#define ISpeechGrammarRules_Commit(This) (This)->lpVtbl->Commit(This)
#define ISpeechGrammarRules_CommitAndSave(This,ErrorText,SaveStream) (This)->lpVtbl->CommitAndSave(This,ErrorText,SaveStream)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRules_QueryInterface(ISpeechGrammarRules* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechGrammarRules_AddRef(ISpeechGrammarRules* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechGrammarRules_Release(ISpeechGrammarRules* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRules_GetTypeInfoCount(ISpeechGrammarRules* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechGrammarRules_GetTypeInfo(ISpeechGrammarRules* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechGrammarRules_GetIDsOfNames(ISpeechGrammarRules* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechGrammarRules_Invoke(ISpeechGrammarRules* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechGrammarRules methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRules_get_Count(ISpeechGrammarRules* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT ISpeechGrammarRules_FindRule(ISpeechGrammarRules* This,VARIANT RuleNameOrId,ISpeechGrammarRule **Rule) {
    return This->lpVtbl->FindRule(This,RuleNameOrId,Rule);
}
static FORCEINLINE HRESULT ISpeechGrammarRules_Item(ISpeechGrammarRules* This,LONG Index,ISpeechGrammarRule **Rule) {
    return This->lpVtbl->Item(This,Index,Rule);
}
static FORCEINLINE HRESULT ISpeechGrammarRules_get__NewEnum(ISpeechGrammarRules* This,IUnknown **EnumVARIANT) {
    return This->lpVtbl->get__NewEnum(This,EnumVARIANT);
}
static FORCEINLINE HRESULT ISpeechGrammarRules_get_Dynamic(ISpeechGrammarRules* This,VARIANT_BOOL *Dynamic) {
    return This->lpVtbl->get_Dynamic(This,Dynamic);
}
static FORCEINLINE HRESULT ISpeechGrammarRules_Add(ISpeechGrammarRules* This,BSTR RuleName,SpeechRuleAttributes Attributes,LONG RuleId,ISpeechGrammarRule **Rule) {
    return This->lpVtbl->Add(This,RuleName,Attributes,RuleId,Rule);
}
static FORCEINLINE HRESULT ISpeechGrammarRules_Commit(ISpeechGrammarRules* This) {
    return This->lpVtbl->Commit(This);
}
static FORCEINLINE HRESULT ISpeechGrammarRules_CommitAndSave(ISpeechGrammarRules* This,BSTR *ErrorText,VARIANT *SaveStream) {
    return This->lpVtbl->CommitAndSave(This,ErrorText,SaveStream);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechGrammarRules_get_Count_Proxy(
    ISpeechGrammarRules* This,
    LONG *Count);
void __RPC_STUB ISpeechGrammarRules_get_Count_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRules_FindRule_Proxy(
    ISpeechGrammarRules* This,
    VARIANT RuleNameOrId,
    ISpeechGrammarRule **Rule);
void __RPC_STUB ISpeechGrammarRules_FindRule_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRules_Item_Proxy(
    ISpeechGrammarRules* This,
    LONG Index,
    ISpeechGrammarRule **Rule);
void __RPC_STUB ISpeechGrammarRules_Item_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRules_get__NewEnum_Proxy(
    ISpeechGrammarRules* This,
    IUnknown **EnumVARIANT);
void __RPC_STUB ISpeechGrammarRules_get__NewEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRules_get_Dynamic_Proxy(
    ISpeechGrammarRules* This,
    VARIANT_BOOL *Dynamic);
void __RPC_STUB ISpeechGrammarRules_get_Dynamic_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRules_Add_Proxy(
    ISpeechGrammarRules* This,
    BSTR RuleName,
    SpeechRuleAttributes Attributes,
    LONG RuleId,
    ISpeechGrammarRule **Rule);
void __RPC_STUB ISpeechGrammarRules_Add_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRules_Commit_Proxy(
    ISpeechGrammarRules* This);
void __RPC_STUB ISpeechGrammarRules_Commit_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRules_CommitAndSave_Proxy(
    ISpeechGrammarRules* This,
    BSTR *ErrorText,
    VARIANT *SaveStream);
void __RPC_STUB ISpeechGrammarRules_CommitAndSave_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechGrammarRules_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechGrammarRuleState interface
 */
#ifndef __ISpeechGrammarRuleState_INTERFACE_DEFINED__
#define __ISpeechGrammarRuleState_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechGrammarRuleState, 0xd4286f2c, 0xee67, 0x45ae, 0xb9,0x28, 0x28,0xd6,0x95,0x36,0x2e,0xda);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d4286f2c-ee67-45ae-b928-28d695362eda")
ISpeechGrammarRuleState : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Rule(
        ISpeechGrammarRule **Rule) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Transitions(
        ISpeechGrammarRuleStateTransitions **Transitions) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddWordTransition(
        ISpeechGrammarRuleState *DestState,
        const BSTR Words,
        const BSTR Separators = " ",
        SpeechGrammarWordType Type = SGLexical,
        const BSTR PropertyName = "",
        LONG PropertyId = 0,
        VARIANT *PropertyValue = 0,
        float Weight = 1) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddRuleTransition(
        ISpeechGrammarRuleState *DestinationState,
        ISpeechGrammarRule *Rule,
        const BSTR PropertyName = "",
        LONG PropertyId = 0,
        VARIANT *PropertyValue = 0,
        float Weight = 1) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddSpecialTransition(
        ISpeechGrammarRuleState *DestinationState,
        SpeechSpecialTransitionType Type,
        const BSTR PropertyName = "",
        LONG PropertyId = 0,
        VARIANT *PropertyValue = 0,
        float Weight = 1) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechGrammarRuleState, 0xd4286f2c, 0xee67, 0x45ae, 0xb9,0x28, 0x28,0xd6,0x95,0x36,0x2e,0xda)
#endif
#else
typedef struct ISpeechGrammarRuleStateVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechGrammarRuleState* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechGrammarRuleState* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechGrammarRuleState* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechGrammarRuleState* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechGrammarRuleState* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechGrammarRuleState* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechGrammarRuleState* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechGrammarRuleState methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Rule)(
        ISpeechGrammarRuleState* This,
        ISpeechGrammarRule **Rule);

    HRESULT (STDMETHODCALLTYPE *get_Transitions)(
        ISpeechGrammarRuleState* This,
        ISpeechGrammarRuleStateTransitions **Transitions);

    HRESULT (STDMETHODCALLTYPE *AddWordTransition)(
        ISpeechGrammarRuleState* This,
        ISpeechGrammarRuleState *DestState,
        const BSTR Words,
        const BSTR Separators,
        SpeechGrammarWordType Type,
        const BSTR PropertyName,
        LONG PropertyId,
        VARIANT *PropertyValue,
        float Weight);

    HRESULT (STDMETHODCALLTYPE *AddRuleTransition)(
        ISpeechGrammarRuleState* This,
        ISpeechGrammarRuleState *DestinationState,
        ISpeechGrammarRule *Rule,
        const BSTR PropertyName,
        LONG PropertyId,
        VARIANT *PropertyValue,
        float Weight);

    HRESULT (STDMETHODCALLTYPE *AddSpecialTransition)(
        ISpeechGrammarRuleState* This,
        ISpeechGrammarRuleState *DestinationState,
        SpeechSpecialTransitionType Type,
        const BSTR PropertyName,
        LONG PropertyId,
        VARIANT *PropertyValue,
        float Weight);

    END_INTERFACE
} ISpeechGrammarRuleStateVtbl;
interface ISpeechGrammarRuleState {
    CONST_VTBL ISpeechGrammarRuleStateVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechGrammarRuleState_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechGrammarRuleState_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechGrammarRuleState_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechGrammarRuleState_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechGrammarRuleState_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechGrammarRuleState_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechGrammarRuleState_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechGrammarRuleState methods ***/
#define ISpeechGrammarRuleState_get_Rule(This,Rule) (This)->lpVtbl->get_Rule(This,Rule)
#define ISpeechGrammarRuleState_get_Transitions(This,Transitions) (This)->lpVtbl->get_Transitions(This,Transitions)
#define ISpeechGrammarRuleState_AddWordTransition(This,DestState,Words,Separators,Type,PropertyName,PropertyId,PropertyValue,Weight) (This)->lpVtbl->AddWordTransition(This,DestState,Words,Separators,Type,PropertyName,PropertyId,PropertyValue,Weight)
#define ISpeechGrammarRuleState_AddRuleTransition(This,DestinationState,Rule,PropertyName,PropertyId,PropertyValue,Weight) (This)->lpVtbl->AddRuleTransition(This,DestinationState,Rule,PropertyName,PropertyId,PropertyValue,Weight)
#define ISpeechGrammarRuleState_AddSpecialTransition(This,DestinationState,Type,PropertyName,PropertyId,PropertyValue,Weight) (This)->lpVtbl->AddSpecialTransition(This,DestinationState,Type,PropertyName,PropertyId,PropertyValue,Weight)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRuleState_QueryInterface(ISpeechGrammarRuleState* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechGrammarRuleState_AddRef(ISpeechGrammarRuleState* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechGrammarRuleState_Release(ISpeechGrammarRuleState* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRuleState_GetTypeInfoCount(ISpeechGrammarRuleState* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleState_GetTypeInfo(ISpeechGrammarRuleState* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleState_GetIDsOfNames(ISpeechGrammarRuleState* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleState_Invoke(ISpeechGrammarRuleState* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechGrammarRuleState methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRuleState_get_Rule(ISpeechGrammarRuleState* This,ISpeechGrammarRule **Rule) {
    return This->lpVtbl->get_Rule(This,Rule);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleState_get_Transitions(ISpeechGrammarRuleState* This,ISpeechGrammarRuleStateTransitions **Transitions) {
    return This->lpVtbl->get_Transitions(This,Transitions);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleState_AddWordTransition(ISpeechGrammarRuleState* This,ISpeechGrammarRuleState *DestState,const BSTR Words,const BSTR Separators,SpeechGrammarWordType Type,const BSTR PropertyName,LONG PropertyId,VARIANT *PropertyValue,float Weight) {
    return This->lpVtbl->AddWordTransition(This,DestState,Words,Separators,Type,PropertyName,PropertyId,PropertyValue,Weight);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleState_AddRuleTransition(ISpeechGrammarRuleState* This,ISpeechGrammarRuleState *DestinationState,ISpeechGrammarRule *Rule,const BSTR PropertyName,LONG PropertyId,VARIANT *PropertyValue,float Weight) {
    return This->lpVtbl->AddRuleTransition(This,DestinationState,Rule,PropertyName,PropertyId,PropertyValue,Weight);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleState_AddSpecialTransition(ISpeechGrammarRuleState* This,ISpeechGrammarRuleState *DestinationState,SpeechSpecialTransitionType Type,const BSTR PropertyName,LONG PropertyId,VARIANT *PropertyValue,float Weight) {
    return This->lpVtbl->AddSpecialTransition(This,DestinationState,Type,PropertyName,PropertyId,PropertyValue,Weight);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleState_get_Rule_Proxy(
    ISpeechGrammarRuleState* This,
    ISpeechGrammarRule **Rule);
void __RPC_STUB ISpeechGrammarRuleState_get_Rule_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleState_get_Transitions_Proxy(
    ISpeechGrammarRuleState* This,
    ISpeechGrammarRuleStateTransitions **Transitions);
void __RPC_STUB ISpeechGrammarRuleState_get_Transitions_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleState_AddWordTransition_Proxy(
    ISpeechGrammarRuleState* This,
    ISpeechGrammarRuleState *DestState,
    const BSTR Words,
    const BSTR Separators,
    SpeechGrammarWordType Type,
    const BSTR PropertyName,
    LONG PropertyId,
    VARIANT *PropertyValue,
    float Weight);
void __RPC_STUB ISpeechGrammarRuleState_AddWordTransition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleState_AddRuleTransition_Proxy(
    ISpeechGrammarRuleState* This,
    ISpeechGrammarRuleState *DestinationState,
    ISpeechGrammarRule *Rule,
    const BSTR PropertyName,
    LONG PropertyId,
    VARIANT *PropertyValue,
    float Weight);
void __RPC_STUB ISpeechGrammarRuleState_AddRuleTransition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleState_AddSpecialTransition_Proxy(
    ISpeechGrammarRuleState* This,
    ISpeechGrammarRuleState *DestinationState,
    SpeechSpecialTransitionType Type,
    const BSTR PropertyName,
    LONG PropertyId,
    VARIANT *PropertyValue,
    float Weight);
void __RPC_STUB ISpeechGrammarRuleState_AddSpecialTransition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechGrammarRuleState_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechGrammarRuleStateTransitions interface
 */
#ifndef __ISpeechGrammarRuleStateTransitions_INTERFACE_DEFINED__
#define __ISpeechGrammarRuleStateTransitions_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechGrammarRuleStateTransitions, 0xeabce657, 0x75bc, 0x44a2, 0xaa,0x7f, 0xc5,0x64,0x76,0x74,0x29,0x63);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("eabce657-75bc-44a2-aa7f-c56476742963")
ISpeechGrammarRuleStateTransitions : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        LONG Index,
        ISpeechGrammarRuleStateTransition **Transition) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **EnumVARIANT) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechGrammarRuleStateTransitions, 0xeabce657, 0x75bc, 0x44a2, 0xaa,0x7f, 0xc5,0x64,0x76,0x74,0x29,0x63)
#endif
#else
typedef struct ISpeechGrammarRuleStateTransitionsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechGrammarRuleStateTransitions* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechGrammarRuleStateTransitions* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechGrammarRuleStateTransitions* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechGrammarRuleStateTransitions* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechGrammarRuleStateTransitions* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechGrammarRuleStateTransitions* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechGrammarRuleStateTransitions* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechGrammarRuleStateTransitions methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        ISpeechGrammarRuleStateTransitions* This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *Item)(
        ISpeechGrammarRuleStateTransitions* This,
        LONG Index,
        ISpeechGrammarRuleStateTransition **Transition);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        ISpeechGrammarRuleStateTransitions* This,
        IUnknown **EnumVARIANT);

    END_INTERFACE
} ISpeechGrammarRuleStateTransitionsVtbl;
interface ISpeechGrammarRuleStateTransitions {
    CONST_VTBL ISpeechGrammarRuleStateTransitionsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechGrammarRuleStateTransitions_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechGrammarRuleStateTransitions_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechGrammarRuleStateTransitions_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechGrammarRuleStateTransitions_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechGrammarRuleStateTransitions_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechGrammarRuleStateTransitions_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechGrammarRuleStateTransitions_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechGrammarRuleStateTransitions methods ***/
#define ISpeechGrammarRuleStateTransitions_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define ISpeechGrammarRuleStateTransitions_Item(This,Index,Transition) (This)->lpVtbl->Item(This,Index,Transition)
#define ISpeechGrammarRuleStateTransitions_get__NewEnum(This,EnumVARIANT) (This)->lpVtbl->get__NewEnum(This,EnumVARIANT)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransitions_QueryInterface(ISpeechGrammarRuleStateTransitions* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechGrammarRuleStateTransitions_AddRef(ISpeechGrammarRuleStateTransitions* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechGrammarRuleStateTransitions_Release(ISpeechGrammarRuleStateTransitions* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransitions_GetTypeInfoCount(ISpeechGrammarRuleStateTransitions* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransitions_GetTypeInfo(ISpeechGrammarRuleStateTransitions* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransitions_GetIDsOfNames(ISpeechGrammarRuleStateTransitions* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransitions_Invoke(ISpeechGrammarRuleStateTransitions* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechGrammarRuleStateTransitions methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransitions_get_Count(ISpeechGrammarRuleStateTransitions* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransitions_Item(ISpeechGrammarRuleStateTransitions* This,LONG Index,ISpeechGrammarRuleStateTransition **Transition) {
    return This->lpVtbl->Item(This,Index,Transition);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransitions_get__NewEnum(ISpeechGrammarRuleStateTransitions* This,IUnknown **EnumVARIANT) {
    return This->lpVtbl->get__NewEnum(This,EnumVARIANT);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleStateTransitions_get_Count_Proxy(
    ISpeechGrammarRuleStateTransitions* This,
    LONG *Count);
void __RPC_STUB ISpeechGrammarRuleStateTransitions_get_Count_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleStateTransitions_Item_Proxy(
    ISpeechGrammarRuleStateTransitions* This,
    LONG Index,
    ISpeechGrammarRuleStateTransition **Transition);
void __RPC_STUB ISpeechGrammarRuleStateTransitions_Item_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleStateTransitions_get__NewEnum_Proxy(
    ISpeechGrammarRuleStateTransitions* This,
    IUnknown **EnumVARIANT);
void __RPC_STUB ISpeechGrammarRuleStateTransitions_get__NewEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechGrammarRuleStateTransitions_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechGrammarRuleStateTransition interface
 */
#ifndef __ISpeechGrammarRuleStateTransition_INTERFACE_DEFINED__
#define __ISpeechGrammarRuleStateTransition_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechGrammarRuleStateTransition, 0xcafd1db1, 0x41d1, 0x4a06, 0x98,0x63, 0xe2,0xe8,0x1d,0xa1,0x7a,0x9a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cafd1db1-41d1-4a06-9863-e2e81da17a9a")
ISpeechGrammarRuleStateTransition : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Type(
        SpeechGrammarRuleStateTransitionType *Type) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Text(
        BSTR *Text) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Rule(
        ISpeechGrammarRule **Rule) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Weight(
        VARIANT *Weight) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PropertyName(
        BSTR *PropertyName) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PropertyId(
        LONG *PropertyId) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PropertyValue(
        VARIANT *PropertyValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_NextState(
        ISpeechGrammarRuleState **NextState) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechGrammarRuleStateTransition, 0xcafd1db1, 0x41d1, 0x4a06, 0x98,0x63, 0xe2,0xe8,0x1d,0xa1,0x7a,0x9a)
#endif
#else
typedef struct ISpeechGrammarRuleStateTransitionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechGrammarRuleStateTransition* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechGrammarRuleStateTransition* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechGrammarRuleStateTransition* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechGrammarRuleStateTransition* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechGrammarRuleStateTransition* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechGrammarRuleStateTransition* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechGrammarRuleStateTransition* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechGrammarRuleStateTransition methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Type)(
        ISpeechGrammarRuleStateTransition* This,
        SpeechGrammarRuleStateTransitionType *Type);

    HRESULT (STDMETHODCALLTYPE *get_Text)(
        ISpeechGrammarRuleStateTransition* This,
        BSTR *Text);

    HRESULT (STDMETHODCALLTYPE *get_Rule)(
        ISpeechGrammarRuleStateTransition* This,
        ISpeechGrammarRule **Rule);

    HRESULT (STDMETHODCALLTYPE *get_Weight)(
        ISpeechGrammarRuleStateTransition* This,
        VARIANT *Weight);

    HRESULT (STDMETHODCALLTYPE *get_PropertyName)(
        ISpeechGrammarRuleStateTransition* This,
        BSTR *PropertyName);

    HRESULT (STDMETHODCALLTYPE *get_PropertyId)(
        ISpeechGrammarRuleStateTransition* This,
        LONG *PropertyId);

    HRESULT (STDMETHODCALLTYPE *get_PropertyValue)(
        ISpeechGrammarRuleStateTransition* This,
        VARIANT *PropertyValue);

    HRESULT (STDMETHODCALLTYPE *get_NextState)(
        ISpeechGrammarRuleStateTransition* This,
        ISpeechGrammarRuleState **NextState);

    END_INTERFACE
} ISpeechGrammarRuleStateTransitionVtbl;
interface ISpeechGrammarRuleStateTransition {
    CONST_VTBL ISpeechGrammarRuleStateTransitionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechGrammarRuleStateTransition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechGrammarRuleStateTransition_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechGrammarRuleStateTransition_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechGrammarRuleStateTransition_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechGrammarRuleStateTransition_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechGrammarRuleStateTransition_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechGrammarRuleStateTransition_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechGrammarRuleStateTransition methods ***/
#define ISpeechGrammarRuleStateTransition_get_Type(This,Type) (This)->lpVtbl->get_Type(This,Type)
#define ISpeechGrammarRuleStateTransition_get_Text(This,Text) (This)->lpVtbl->get_Text(This,Text)
#define ISpeechGrammarRuleStateTransition_get_Rule(This,Rule) (This)->lpVtbl->get_Rule(This,Rule)
#define ISpeechGrammarRuleStateTransition_get_Weight(This,Weight) (This)->lpVtbl->get_Weight(This,Weight)
#define ISpeechGrammarRuleStateTransition_get_PropertyName(This,PropertyName) (This)->lpVtbl->get_PropertyName(This,PropertyName)
#define ISpeechGrammarRuleStateTransition_get_PropertyId(This,PropertyId) (This)->lpVtbl->get_PropertyId(This,PropertyId)
#define ISpeechGrammarRuleStateTransition_get_PropertyValue(This,PropertyValue) (This)->lpVtbl->get_PropertyValue(This,PropertyValue)
#define ISpeechGrammarRuleStateTransition_get_NextState(This,NextState) (This)->lpVtbl->get_NextState(This,NextState)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransition_QueryInterface(ISpeechGrammarRuleStateTransition* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechGrammarRuleStateTransition_AddRef(ISpeechGrammarRuleStateTransition* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechGrammarRuleStateTransition_Release(ISpeechGrammarRuleStateTransition* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransition_GetTypeInfoCount(ISpeechGrammarRuleStateTransition* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransition_GetTypeInfo(ISpeechGrammarRuleStateTransition* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransition_GetIDsOfNames(ISpeechGrammarRuleStateTransition* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransition_Invoke(ISpeechGrammarRuleStateTransition* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechGrammarRuleStateTransition methods ***/
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransition_get_Type(ISpeechGrammarRuleStateTransition* This,SpeechGrammarRuleStateTransitionType *Type) {
    return This->lpVtbl->get_Type(This,Type);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransition_get_Text(ISpeechGrammarRuleStateTransition* This,BSTR *Text) {
    return This->lpVtbl->get_Text(This,Text);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransition_get_Rule(ISpeechGrammarRuleStateTransition* This,ISpeechGrammarRule **Rule) {
    return This->lpVtbl->get_Rule(This,Rule);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransition_get_Weight(ISpeechGrammarRuleStateTransition* This,VARIANT *Weight) {
    return This->lpVtbl->get_Weight(This,Weight);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransition_get_PropertyName(ISpeechGrammarRuleStateTransition* This,BSTR *PropertyName) {
    return This->lpVtbl->get_PropertyName(This,PropertyName);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransition_get_PropertyId(ISpeechGrammarRuleStateTransition* This,LONG *PropertyId) {
    return This->lpVtbl->get_PropertyId(This,PropertyId);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransition_get_PropertyValue(ISpeechGrammarRuleStateTransition* This,VARIANT *PropertyValue) {
    return This->lpVtbl->get_PropertyValue(This,PropertyValue);
}
static FORCEINLINE HRESULT ISpeechGrammarRuleStateTransition_get_NextState(ISpeechGrammarRuleStateTransition* This,ISpeechGrammarRuleState **NextState) {
    return This->lpVtbl->get_NextState(This,NextState);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleStateTransition_get_Type_Proxy(
    ISpeechGrammarRuleStateTransition* This,
    SpeechGrammarRuleStateTransitionType *Type);
void __RPC_STUB ISpeechGrammarRuleStateTransition_get_Type_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleStateTransition_get_Text_Proxy(
    ISpeechGrammarRuleStateTransition* This,
    BSTR *Text);
void __RPC_STUB ISpeechGrammarRuleStateTransition_get_Text_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleStateTransition_get_Rule_Proxy(
    ISpeechGrammarRuleStateTransition* This,
    ISpeechGrammarRule **Rule);
void __RPC_STUB ISpeechGrammarRuleStateTransition_get_Rule_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleStateTransition_get_Weight_Proxy(
    ISpeechGrammarRuleStateTransition* This,
    VARIANT *Weight);
void __RPC_STUB ISpeechGrammarRuleStateTransition_get_Weight_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleStateTransition_get_PropertyName_Proxy(
    ISpeechGrammarRuleStateTransition* This,
    BSTR *PropertyName);
void __RPC_STUB ISpeechGrammarRuleStateTransition_get_PropertyName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleStateTransition_get_PropertyId_Proxy(
    ISpeechGrammarRuleStateTransition* This,
    LONG *PropertyId);
void __RPC_STUB ISpeechGrammarRuleStateTransition_get_PropertyId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleStateTransition_get_PropertyValue_Proxy(
    ISpeechGrammarRuleStateTransition* This,
    VARIANT *PropertyValue);
void __RPC_STUB ISpeechGrammarRuleStateTransition_get_PropertyValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechGrammarRuleStateTransition_get_NextState_Proxy(
    ISpeechGrammarRuleStateTransition* This,
    ISpeechGrammarRuleState **NextState);
void __RPC_STUB ISpeechGrammarRuleStateTransition_get_NextState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechGrammarRuleStateTransition_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechTextSelectionInformation interface
 */
#ifndef __ISpeechTextSelectionInformation_INTERFACE_DEFINED__
#define __ISpeechTextSelectionInformation_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechTextSelectionInformation, 0x3b9c7e7a, 0x6eee, 0x4ded, 0x90,0x92, 0x11,0x65,0x72,0x79,0xad,0xbe);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3b9c7e7a-6eee-4ded-9092-11657279adbe")
ISpeechTextSelectionInformation : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE put_ActiveOffset(
        LONG ActiveOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ActiveOffset(
        LONG *ActiveOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ActiveLength(
        LONG ActiveLength) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ActiveLength(
        LONG *ActiveLength) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SelectionOffset(
        LONG SelectionOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SelectionOffset(
        LONG *SelectionOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SelectionLength(
        LONG SelectionLength) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SelectionLength(
        LONG *SelectionLength) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechTextSelectionInformation, 0x3b9c7e7a, 0x6eee, 0x4ded, 0x90,0x92, 0x11,0x65,0x72,0x79,0xad,0xbe)
#endif
#else
typedef struct ISpeechTextSelectionInformationVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechTextSelectionInformation* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechTextSelectionInformation* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechTextSelectionInformation* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechTextSelectionInformation* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechTextSelectionInformation* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechTextSelectionInformation* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechTextSelectionInformation* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechTextSelectionInformation methods ***/
    HRESULT (STDMETHODCALLTYPE *put_ActiveOffset)(
        ISpeechTextSelectionInformation* This,
        LONG ActiveOffset);

    HRESULT (STDMETHODCALLTYPE *get_ActiveOffset)(
        ISpeechTextSelectionInformation* This,
        LONG *ActiveOffset);

    HRESULT (STDMETHODCALLTYPE *put_ActiveLength)(
        ISpeechTextSelectionInformation* This,
        LONG ActiveLength);

    HRESULT (STDMETHODCALLTYPE *get_ActiveLength)(
        ISpeechTextSelectionInformation* This,
        LONG *ActiveLength);

    HRESULT (STDMETHODCALLTYPE *put_SelectionOffset)(
        ISpeechTextSelectionInformation* This,
        LONG SelectionOffset);

    HRESULT (STDMETHODCALLTYPE *get_SelectionOffset)(
        ISpeechTextSelectionInformation* This,
        LONG *SelectionOffset);

    HRESULT (STDMETHODCALLTYPE *put_SelectionLength)(
        ISpeechTextSelectionInformation* This,
        LONG SelectionLength);

    HRESULT (STDMETHODCALLTYPE *get_SelectionLength)(
        ISpeechTextSelectionInformation* This,
        LONG *SelectionLength);

    END_INTERFACE
} ISpeechTextSelectionInformationVtbl;
interface ISpeechTextSelectionInformation {
    CONST_VTBL ISpeechTextSelectionInformationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechTextSelectionInformation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechTextSelectionInformation_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechTextSelectionInformation_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechTextSelectionInformation_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechTextSelectionInformation_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechTextSelectionInformation_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechTextSelectionInformation_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechTextSelectionInformation methods ***/
#define ISpeechTextSelectionInformation_put_ActiveOffset(This,ActiveOffset) (This)->lpVtbl->put_ActiveOffset(This,ActiveOffset)
#define ISpeechTextSelectionInformation_get_ActiveOffset(This,ActiveOffset) (This)->lpVtbl->get_ActiveOffset(This,ActiveOffset)
#define ISpeechTextSelectionInformation_put_ActiveLength(This,ActiveLength) (This)->lpVtbl->put_ActiveLength(This,ActiveLength)
#define ISpeechTextSelectionInformation_get_ActiveLength(This,ActiveLength) (This)->lpVtbl->get_ActiveLength(This,ActiveLength)
#define ISpeechTextSelectionInformation_put_SelectionOffset(This,SelectionOffset) (This)->lpVtbl->put_SelectionOffset(This,SelectionOffset)
#define ISpeechTextSelectionInformation_get_SelectionOffset(This,SelectionOffset) (This)->lpVtbl->get_SelectionOffset(This,SelectionOffset)
#define ISpeechTextSelectionInformation_put_SelectionLength(This,SelectionLength) (This)->lpVtbl->put_SelectionLength(This,SelectionLength)
#define ISpeechTextSelectionInformation_get_SelectionLength(This,SelectionLength) (This)->lpVtbl->get_SelectionLength(This,SelectionLength)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechTextSelectionInformation_QueryInterface(ISpeechTextSelectionInformation* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechTextSelectionInformation_AddRef(ISpeechTextSelectionInformation* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechTextSelectionInformation_Release(ISpeechTextSelectionInformation* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechTextSelectionInformation_GetTypeInfoCount(ISpeechTextSelectionInformation* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechTextSelectionInformation_GetTypeInfo(ISpeechTextSelectionInformation* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechTextSelectionInformation_GetIDsOfNames(ISpeechTextSelectionInformation* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechTextSelectionInformation_Invoke(ISpeechTextSelectionInformation* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechTextSelectionInformation methods ***/
static FORCEINLINE HRESULT ISpeechTextSelectionInformation_put_ActiveOffset(ISpeechTextSelectionInformation* This,LONG ActiveOffset) {
    return This->lpVtbl->put_ActiveOffset(This,ActiveOffset);
}
static FORCEINLINE HRESULT ISpeechTextSelectionInformation_get_ActiveOffset(ISpeechTextSelectionInformation* This,LONG *ActiveOffset) {
    return This->lpVtbl->get_ActiveOffset(This,ActiveOffset);
}
static FORCEINLINE HRESULT ISpeechTextSelectionInformation_put_ActiveLength(ISpeechTextSelectionInformation* This,LONG ActiveLength) {
    return This->lpVtbl->put_ActiveLength(This,ActiveLength);
}
static FORCEINLINE HRESULT ISpeechTextSelectionInformation_get_ActiveLength(ISpeechTextSelectionInformation* This,LONG *ActiveLength) {
    return This->lpVtbl->get_ActiveLength(This,ActiveLength);
}
static FORCEINLINE HRESULT ISpeechTextSelectionInformation_put_SelectionOffset(ISpeechTextSelectionInformation* This,LONG SelectionOffset) {
    return This->lpVtbl->put_SelectionOffset(This,SelectionOffset);
}
static FORCEINLINE HRESULT ISpeechTextSelectionInformation_get_SelectionOffset(ISpeechTextSelectionInformation* This,LONG *SelectionOffset) {
    return This->lpVtbl->get_SelectionOffset(This,SelectionOffset);
}
static FORCEINLINE HRESULT ISpeechTextSelectionInformation_put_SelectionLength(ISpeechTextSelectionInformation* This,LONG SelectionLength) {
    return This->lpVtbl->put_SelectionLength(This,SelectionLength);
}
static FORCEINLINE HRESULT ISpeechTextSelectionInformation_get_SelectionLength(ISpeechTextSelectionInformation* This,LONG *SelectionLength) {
    return This->lpVtbl->get_SelectionLength(This,SelectionLength);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechTextSelectionInformation_put_ActiveOffset_Proxy(
    ISpeechTextSelectionInformation* This,
    LONG ActiveOffset);
void __RPC_STUB ISpeechTextSelectionInformation_put_ActiveOffset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechTextSelectionInformation_get_ActiveOffset_Proxy(
    ISpeechTextSelectionInformation* This,
    LONG *ActiveOffset);
void __RPC_STUB ISpeechTextSelectionInformation_get_ActiveOffset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechTextSelectionInformation_put_ActiveLength_Proxy(
    ISpeechTextSelectionInformation* This,
    LONG ActiveLength);
void __RPC_STUB ISpeechTextSelectionInformation_put_ActiveLength_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechTextSelectionInformation_get_ActiveLength_Proxy(
    ISpeechTextSelectionInformation* This,
    LONG *ActiveLength);
void __RPC_STUB ISpeechTextSelectionInformation_get_ActiveLength_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechTextSelectionInformation_put_SelectionOffset_Proxy(
    ISpeechTextSelectionInformation* This,
    LONG SelectionOffset);
void __RPC_STUB ISpeechTextSelectionInformation_put_SelectionOffset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechTextSelectionInformation_get_SelectionOffset_Proxy(
    ISpeechTextSelectionInformation* This,
    LONG *SelectionOffset);
void __RPC_STUB ISpeechTextSelectionInformation_get_SelectionOffset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechTextSelectionInformation_put_SelectionLength_Proxy(
    ISpeechTextSelectionInformation* This,
    LONG SelectionLength);
void __RPC_STUB ISpeechTextSelectionInformation_put_SelectionLength_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechTextSelectionInformation_get_SelectionLength_Proxy(
    ISpeechTextSelectionInformation* This,
    LONG *SelectionLength);
void __RPC_STUB ISpeechTextSelectionInformation_get_SelectionLength_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechTextSelectionInformation_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechRecoResult interface
 */
#ifndef __ISpeechRecoResult_INTERFACE_DEFINED__
#define __ISpeechRecoResult_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechRecoResult, 0xed2879cf, 0xced9, 0x4ee6, 0xa5,0x34, 0xde,0x01,0x91,0xd5,0x46,0x8d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ed2879cf-ced9-4ee6-a534-de0191d5468d")
ISpeechRecoResult : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_RecoContext(
        ISpeechRecoContext **RecoContext) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Times(
        ISpeechRecoResultTimes **Times) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_AudioFormat(
        ISpeechAudioFormat *Format) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AudioFormat(
        ISpeechAudioFormat **Format) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PhraseInfo(
        ISpeechPhraseInfo **PhraseInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE Alternates(
        LONG RequestCount,
        LONG StartElement = 0,
        LONG Elements = SPPR_ALL_ELEMENTS,
        ISpeechPhraseAlternates **Alternates) = 0;

    virtual HRESULT STDMETHODCALLTYPE Audio(
        LONG StartElement = 0,
        LONG Elements = SPPR_ALL_ELEMENTS,
        ISpeechMemoryStream **Stream) = 0;

    virtual HRESULT STDMETHODCALLTYPE SpeakAudio(
        LONG StartElement = 0,
        LONG Elements = SPPR_ALL_ELEMENTS,
        SpeechVoiceSpeakFlags Flags = SPF_DEFAULT,
        LONG *StreamNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE SaveToMemory(
        VARIANT *ResultBlock) = 0;

    virtual HRESULT STDMETHODCALLTYPE DiscardResultInfo(
        SpeechDiscardType ValueTypes) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechRecoResult, 0xed2879cf, 0xced9, 0x4ee6, 0xa5,0x34, 0xde,0x01,0x91,0xd5,0x46,0x8d)
#endif
#else
typedef struct ISpeechRecoResultVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechRecoResult* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechRecoResult* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechRecoResult* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechRecoResult* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechRecoResult* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechRecoResult* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechRecoResult* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechRecoResult methods ***/
    HRESULT (STDMETHODCALLTYPE *get_RecoContext)(
        ISpeechRecoResult* This,
        ISpeechRecoContext **RecoContext);

    HRESULT (STDMETHODCALLTYPE *get_Times)(
        ISpeechRecoResult* This,
        ISpeechRecoResultTimes **Times);

    HRESULT (STDMETHODCALLTYPE *putref_AudioFormat)(
        ISpeechRecoResult* This,
        ISpeechAudioFormat *Format);

    HRESULT (STDMETHODCALLTYPE *get_AudioFormat)(
        ISpeechRecoResult* This,
        ISpeechAudioFormat **Format);

    HRESULT (STDMETHODCALLTYPE *get_PhraseInfo)(
        ISpeechRecoResult* This,
        ISpeechPhraseInfo **PhraseInfo);

    HRESULT (STDMETHODCALLTYPE *Alternates)(
        ISpeechRecoResult* This,
        LONG RequestCount,
        LONG StartElement,
        LONG Elements,
        ISpeechPhraseAlternates **Alternates);

    HRESULT (STDMETHODCALLTYPE *Audio)(
        ISpeechRecoResult* This,
        LONG StartElement,
        LONG Elements,
        ISpeechMemoryStream **Stream);

    HRESULT (STDMETHODCALLTYPE *SpeakAudio)(
        ISpeechRecoResult* This,
        LONG StartElement,
        LONG Elements,
        SpeechVoiceSpeakFlags Flags,
        LONG *StreamNumber);

    HRESULT (STDMETHODCALLTYPE *SaveToMemory)(
        ISpeechRecoResult* This,
        VARIANT *ResultBlock);

    HRESULT (STDMETHODCALLTYPE *DiscardResultInfo)(
        ISpeechRecoResult* This,
        SpeechDiscardType ValueTypes);

    END_INTERFACE
} ISpeechRecoResultVtbl;
interface ISpeechRecoResult {
    CONST_VTBL ISpeechRecoResultVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechRecoResult_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechRecoResult_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechRecoResult_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechRecoResult_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechRecoResult_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechRecoResult_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechRecoResult_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechRecoResult methods ***/
#define ISpeechRecoResult_get_RecoContext(This,RecoContext) (This)->lpVtbl->get_RecoContext(This,RecoContext)
#define ISpeechRecoResult_get_Times(This,Times) (This)->lpVtbl->get_Times(This,Times)
#define ISpeechRecoResult_putref_AudioFormat(This,Format) (This)->lpVtbl->putref_AudioFormat(This,Format)
#define ISpeechRecoResult_get_AudioFormat(This,Format) (This)->lpVtbl->get_AudioFormat(This,Format)
#define ISpeechRecoResult_get_PhraseInfo(This,PhraseInfo) (This)->lpVtbl->get_PhraseInfo(This,PhraseInfo)
#define ISpeechRecoResult_Alternates(This,RequestCount,StartElement,Elements,Alternates) (This)->lpVtbl->Alternates(This,RequestCount,StartElement,Elements,Alternates)
#define ISpeechRecoResult_Audio(This,StartElement,Elements,Stream) (This)->lpVtbl->Audio(This,StartElement,Elements,Stream)
#define ISpeechRecoResult_SpeakAudio(This,StartElement,Elements,Flags,StreamNumber) (This)->lpVtbl->SpeakAudio(This,StartElement,Elements,Flags,StreamNumber)
#define ISpeechRecoResult_SaveToMemory(This,ResultBlock) (This)->lpVtbl->SaveToMemory(This,ResultBlock)
#define ISpeechRecoResult_DiscardResultInfo(This,ValueTypes) (This)->lpVtbl->DiscardResultInfo(This,ValueTypes)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechRecoResult_QueryInterface(ISpeechRecoResult* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechRecoResult_AddRef(ISpeechRecoResult* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechRecoResult_Release(ISpeechRecoResult* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechRecoResult_GetTypeInfoCount(ISpeechRecoResult* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechRecoResult_GetTypeInfo(ISpeechRecoResult* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechRecoResult_GetIDsOfNames(ISpeechRecoResult* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechRecoResult_Invoke(ISpeechRecoResult* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechRecoResult methods ***/
static FORCEINLINE HRESULT ISpeechRecoResult_get_RecoContext(ISpeechRecoResult* This,ISpeechRecoContext **RecoContext) {
    return This->lpVtbl->get_RecoContext(This,RecoContext);
}
static FORCEINLINE HRESULT ISpeechRecoResult_get_Times(ISpeechRecoResult* This,ISpeechRecoResultTimes **Times) {
    return This->lpVtbl->get_Times(This,Times);
}
static FORCEINLINE HRESULT ISpeechRecoResult_putref_AudioFormat(ISpeechRecoResult* This,ISpeechAudioFormat *Format) {
    return This->lpVtbl->putref_AudioFormat(This,Format);
}
static FORCEINLINE HRESULT ISpeechRecoResult_get_AudioFormat(ISpeechRecoResult* This,ISpeechAudioFormat **Format) {
    return This->lpVtbl->get_AudioFormat(This,Format);
}
static FORCEINLINE HRESULT ISpeechRecoResult_get_PhraseInfo(ISpeechRecoResult* This,ISpeechPhraseInfo **PhraseInfo) {
    return This->lpVtbl->get_PhraseInfo(This,PhraseInfo);
}
static FORCEINLINE HRESULT ISpeechRecoResult_Alternates(ISpeechRecoResult* This,LONG RequestCount,LONG StartElement,LONG Elements,ISpeechPhraseAlternates **Alternates) {
    return This->lpVtbl->Alternates(This,RequestCount,StartElement,Elements,Alternates);
}
static FORCEINLINE HRESULT ISpeechRecoResult_Audio(ISpeechRecoResult* This,LONG StartElement,LONG Elements,ISpeechMemoryStream **Stream) {
    return This->lpVtbl->Audio(This,StartElement,Elements,Stream);
}
static FORCEINLINE HRESULT ISpeechRecoResult_SpeakAudio(ISpeechRecoResult* This,LONG StartElement,LONG Elements,SpeechVoiceSpeakFlags Flags,LONG *StreamNumber) {
    return This->lpVtbl->SpeakAudio(This,StartElement,Elements,Flags,StreamNumber);
}
static FORCEINLINE HRESULT ISpeechRecoResult_SaveToMemory(ISpeechRecoResult* This,VARIANT *ResultBlock) {
    return This->lpVtbl->SaveToMemory(This,ResultBlock);
}
static FORCEINLINE HRESULT ISpeechRecoResult_DiscardResultInfo(ISpeechRecoResult* This,SpeechDiscardType ValueTypes) {
    return This->lpVtbl->DiscardResultInfo(This,ValueTypes);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechRecoResult_get_RecoContext_Proxy(
    ISpeechRecoResult* This,
    ISpeechRecoContext **RecoContext);
void __RPC_STUB ISpeechRecoResult_get_RecoContext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoResult_get_Times_Proxy(
    ISpeechRecoResult* This,
    ISpeechRecoResultTimes **Times);
void __RPC_STUB ISpeechRecoResult_get_Times_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoResult_putref_AudioFormat_Proxy(
    ISpeechRecoResult* This,
    ISpeechAudioFormat *Format);
void __RPC_STUB ISpeechRecoResult_putref_AudioFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoResult_get_AudioFormat_Proxy(
    ISpeechRecoResult* This,
    ISpeechAudioFormat **Format);
void __RPC_STUB ISpeechRecoResult_get_AudioFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoResult_get_PhraseInfo_Proxy(
    ISpeechRecoResult* This,
    ISpeechPhraseInfo **PhraseInfo);
void __RPC_STUB ISpeechRecoResult_get_PhraseInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoResult_Alternates_Proxy(
    ISpeechRecoResult* This,
    LONG RequestCount,
    LONG StartElement,
    LONG Elements,
    ISpeechPhraseAlternates **Alternates);
void __RPC_STUB ISpeechRecoResult_Alternates_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoResult_Audio_Proxy(
    ISpeechRecoResult* This,
    LONG StartElement,
    LONG Elements,
    ISpeechMemoryStream **Stream);
void __RPC_STUB ISpeechRecoResult_Audio_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoResult_SpeakAudio_Proxy(
    ISpeechRecoResult* This,
    LONG StartElement,
    LONG Elements,
    SpeechVoiceSpeakFlags Flags,
    LONG *StreamNumber);
void __RPC_STUB ISpeechRecoResult_SpeakAudio_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoResult_SaveToMemory_Proxy(
    ISpeechRecoResult* This,
    VARIANT *ResultBlock);
void __RPC_STUB ISpeechRecoResult_SaveToMemory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoResult_DiscardResultInfo_Proxy(
    ISpeechRecoResult* This,
    SpeechDiscardType ValueTypes);
void __RPC_STUB ISpeechRecoResult_DiscardResultInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechRecoResult_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechPhraseInfoBuilder interface
 */
#ifndef __ISpeechPhraseInfoBuilder_INTERFACE_DEFINED__
#define __ISpeechPhraseInfoBuilder_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechPhraseInfoBuilder, 0x3b151836, 0xdf3a, 0x4e0a, 0x84,0x6c, 0xd2,0xad,0xc9,0x33,0x43,0x33);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3b151836-df3a-4e0a-846c-d2adc9334333")
ISpeechPhraseInfoBuilder : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE RestorePhraseFromMemory(
        VARIANT *PhraseInMemory,
        ISpeechPhraseInfo **PhraseInfo) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechPhraseInfoBuilder, 0x3b151836, 0xdf3a, 0x4e0a, 0x84,0x6c, 0xd2,0xad,0xc9,0x33,0x43,0x33)
#endif
#else
typedef struct ISpeechPhraseInfoBuilderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechPhraseInfoBuilder* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechPhraseInfoBuilder* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechPhraseInfoBuilder* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechPhraseInfoBuilder* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechPhraseInfoBuilder* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechPhraseInfoBuilder* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechPhraseInfoBuilder* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechPhraseInfoBuilder methods ***/
    HRESULT (STDMETHODCALLTYPE *RestorePhraseFromMemory)(
        ISpeechPhraseInfoBuilder* This,
        VARIANT *PhraseInMemory,
        ISpeechPhraseInfo **PhraseInfo);

    END_INTERFACE
} ISpeechPhraseInfoBuilderVtbl;
interface ISpeechPhraseInfoBuilder {
    CONST_VTBL ISpeechPhraseInfoBuilderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechPhraseInfoBuilder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechPhraseInfoBuilder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechPhraseInfoBuilder_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechPhraseInfoBuilder_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechPhraseInfoBuilder_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechPhraseInfoBuilder_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechPhraseInfoBuilder_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechPhraseInfoBuilder methods ***/
#define ISpeechPhraseInfoBuilder_RestorePhraseFromMemory(This,PhraseInMemory,PhraseInfo) (This)->lpVtbl->RestorePhraseFromMemory(This,PhraseInMemory,PhraseInfo)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechPhraseInfoBuilder_QueryInterface(ISpeechPhraseInfoBuilder* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechPhraseInfoBuilder_AddRef(ISpeechPhraseInfoBuilder* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechPhraseInfoBuilder_Release(ISpeechPhraseInfoBuilder* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechPhraseInfoBuilder_GetTypeInfoCount(ISpeechPhraseInfoBuilder* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechPhraseInfoBuilder_GetTypeInfo(ISpeechPhraseInfoBuilder* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechPhraseInfoBuilder_GetIDsOfNames(ISpeechPhraseInfoBuilder* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechPhraseInfoBuilder_Invoke(ISpeechPhraseInfoBuilder* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechPhraseInfoBuilder methods ***/
static FORCEINLINE HRESULT ISpeechPhraseInfoBuilder_RestorePhraseFromMemory(ISpeechPhraseInfoBuilder* This,VARIANT *PhraseInMemory,ISpeechPhraseInfo **PhraseInfo) {
    return This->lpVtbl->RestorePhraseFromMemory(This,PhraseInMemory,PhraseInfo);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechPhraseInfoBuilder_RestorePhraseFromMemory_Proxy(
    ISpeechPhraseInfoBuilder* This,
    VARIANT *PhraseInMemory,
    ISpeechPhraseInfo **PhraseInfo);
void __RPC_STUB ISpeechPhraseInfoBuilder_RestorePhraseFromMemory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechPhraseInfoBuilder_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechRecoResultTimes interface
 */
#ifndef __ISpeechRecoResultTimes_INTERFACE_DEFINED__
#define __ISpeechRecoResultTimes_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechRecoResultTimes, 0x62b3b8fb, 0xf6e7, 0x41be, 0xbd,0xcb, 0x05,0x6b,0x1c,0x29,0xef,0xc0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("62b3b8fb-f6e7-41be-bdcb-056b1c29efc0")
ISpeechRecoResultTimes : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_StreamTime(
        VARIANT *Time) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Length(
        VARIANT *Length) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TickCount(
        LONG *TickCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_OffsetFromStart(
        VARIANT *OffsetFromStart) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechRecoResultTimes, 0x62b3b8fb, 0xf6e7, 0x41be, 0xbd,0xcb, 0x05,0x6b,0x1c,0x29,0xef,0xc0)
#endif
#else
typedef struct ISpeechRecoResultTimesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechRecoResultTimes* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechRecoResultTimes* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechRecoResultTimes* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechRecoResultTimes* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechRecoResultTimes* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechRecoResultTimes* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechRecoResultTimes* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechRecoResultTimes methods ***/
    HRESULT (STDMETHODCALLTYPE *get_StreamTime)(
        ISpeechRecoResultTimes* This,
        VARIANT *Time);

    HRESULT (STDMETHODCALLTYPE *get_Length)(
        ISpeechRecoResultTimes* This,
        VARIANT *Length);

    HRESULT (STDMETHODCALLTYPE *get_TickCount)(
        ISpeechRecoResultTimes* This,
        LONG *TickCount);

    HRESULT (STDMETHODCALLTYPE *get_OffsetFromStart)(
        ISpeechRecoResultTimes* This,
        VARIANT *OffsetFromStart);

    END_INTERFACE
} ISpeechRecoResultTimesVtbl;
interface ISpeechRecoResultTimes {
    CONST_VTBL ISpeechRecoResultTimesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechRecoResultTimes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechRecoResultTimes_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechRecoResultTimes_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechRecoResultTimes_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechRecoResultTimes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechRecoResultTimes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechRecoResultTimes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechRecoResultTimes methods ***/
#define ISpeechRecoResultTimes_get_StreamTime(This,Time) (This)->lpVtbl->get_StreamTime(This,Time)
#define ISpeechRecoResultTimes_get_Length(This,Length) (This)->lpVtbl->get_Length(This,Length)
#define ISpeechRecoResultTimes_get_TickCount(This,TickCount) (This)->lpVtbl->get_TickCount(This,TickCount)
#define ISpeechRecoResultTimes_get_OffsetFromStart(This,OffsetFromStart) (This)->lpVtbl->get_OffsetFromStart(This,OffsetFromStart)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechRecoResultTimes_QueryInterface(ISpeechRecoResultTimes* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechRecoResultTimes_AddRef(ISpeechRecoResultTimes* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechRecoResultTimes_Release(ISpeechRecoResultTimes* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechRecoResultTimes_GetTypeInfoCount(ISpeechRecoResultTimes* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechRecoResultTimes_GetTypeInfo(ISpeechRecoResultTimes* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechRecoResultTimes_GetIDsOfNames(ISpeechRecoResultTimes* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechRecoResultTimes_Invoke(ISpeechRecoResultTimes* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechRecoResultTimes methods ***/
static FORCEINLINE HRESULT ISpeechRecoResultTimes_get_StreamTime(ISpeechRecoResultTimes* This,VARIANT *Time) {
    return This->lpVtbl->get_StreamTime(This,Time);
}
static FORCEINLINE HRESULT ISpeechRecoResultTimes_get_Length(ISpeechRecoResultTimes* This,VARIANT *Length) {
    return This->lpVtbl->get_Length(This,Length);
}
static FORCEINLINE HRESULT ISpeechRecoResultTimes_get_TickCount(ISpeechRecoResultTimes* This,LONG *TickCount) {
    return This->lpVtbl->get_TickCount(This,TickCount);
}
static FORCEINLINE HRESULT ISpeechRecoResultTimes_get_OffsetFromStart(ISpeechRecoResultTimes* This,VARIANT *OffsetFromStart) {
    return This->lpVtbl->get_OffsetFromStart(This,OffsetFromStart);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechRecoResultTimes_get_StreamTime_Proxy(
    ISpeechRecoResultTimes* This,
    VARIANT *Time);
void __RPC_STUB ISpeechRecoResultTimes_get_StreamTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoResultTimes_get_Length_Proxy(
    ISpeechRecoResultTimes* This,
    VARIANT *Length);
void __RPC_STUB ISpeechRecoResultTimes_get_Length_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoResultTimes_get_TickCount_Proxy(
    ISpeechRecoResultTimes* This,
    LONG *TickCount);
void __RPC_STUB ISpeechRecoResultTimes_get_TickCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechRecoResultTimes_get_OffsetFromStart_Proxy(
    ISpeechRecoResultTimes* This,
    VARIANT *OffsetFromStart);
void __RPC_STUB ISpeechRecoResultTimes_get_OffsetFromStart_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechRecoResultTimes_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechPhraseAlternate interface
 */
#ifndef __ISpeechPhraseAlternate_INTERFACE_DEFINED__
#define __ISpeechPhraseAlternate_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechPhraseAlternate, 0x27864a2a, 0x2b9f, 0x4cb8, 0x92,0xd3, 0x0d,0x27,0x22,0xfd,0x1e,0x73);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("27864a2a-2b9f-4cb8-92d3-0d2722fd1e73")
ISpeechPhraseAlternate : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_RecoResult(
        ISpeechRecoResult **RecoResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_StartElementInResult(
        LONG *StartElement) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_NumberOfElementsInResult(
        LONG *NumberOfElements) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PhraseInfo(
        ISpeechPhraseInfo **PhraseInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE Commit(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechPhraseAlternate, 0x27864a2a, 0x2b9f, 0x4cb8, 0x92,0xd3, 0x0d,0x27,0x22,0xfd,0x1e,0x73)
#endif
#else
typedef struct ISpeechPhraseAlternateVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechPhraseAlternate* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechPhraseAlternate* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechPhraseAlternate* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechPhraseAlternate* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechPhraseAlternate* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechPhraseAlternate* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechPhraseAlternate* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechPhraseAlternate methods ***/
    HRESULT (STDMETHODCALLTYPE *get_RecoResult)(
        ISpeechPhraseAlternate* This,
        ISpeechRecoResult **RecoResult);

    HRESULT (STDMETHODCALLTYPE *get_StartElementInResult)(
        ISpeechPhraseAlternate* This,
        LONG *StartElement);

    HRESULT (STDMETHODCALLTYPE *get_NumberOfElementsInResult)(
        ISpeechPhraseAlternate* This,
        LONG *NumberOfElements);

    HRESULT (STDMETHODCALLTYPE *get_PhraseInfo)(
        ISpeechPhraseAlternate* This,
        ISpeechPhraseInfo **PhraseInfo);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        ISpeechPhraseAlternate* This);

    END_INTERFACE
} ISpeechPhraseAlternateVtbl;
interface ISpeechPhraseAlternate {
    CONST_VTBL ISpeechPhraseAlternateVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechPhraseAlternate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechPhraseAlternate_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechPhraseAlternate_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechPhraseAlternate_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechPhraseAlternate_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechPhraseAlternate_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechPhraseAlternate_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechPhraseAlternate methods ***/
#define ISpeechPhraseAlternate_get_RecoResult(This,RecoResult) (This)->lpVtbl->get_RecoResult(This,RecoResult)
#define ISpeechPhraseAlternate_get_StartElementInResult(This,StartElement) (This)->lpVtbl->get_StartElementInResult(This,StartElement)
#define ISpeechPhraseAlternate_get_NumberOfElementsInResult(This,NumberOfElements) (This)->lpVtbl->get_NumberOfElementsInResult(This,NumberOfElements)
#define ISpeechPhraseAlternate_get_PhraseInfo(This,PhraseInfo) (This)->lpVtbl->get_PhraseInfo(This,PhraseInfo)
#define ISpeechPhraseAlternate_Commit(This) (This)->lpVtbl->Commit(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechPhraseAlternate_QueryInterface(ISpeechPhraseAlternate* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechPhraseAlternate_AddRef(ISpeechPhraseAlternate* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechPhraseAlternate_Release(ISpeechPhraseAlternate* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechPhraseAlternate_GetTypeInfoCount(ISpeechPhraseAlternate* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechPhraseAlternate_GetTypeInfo(ISpeechPhraseAlternate* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechPhraseAlternate_GetIDsOfNames(ISpeechPhraseAlternate* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechPhraseAlternate_Invoke(ISpeechPhraseAlternate* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechPhraseAlternate methods ***/
static FORCEINLINE HRESULT ISpeechPhraseAlternate_get_RecoResult(ISpeechPhraseAlternate* This,ISpeechRecoResult **RecoResult) {
    return This->lpVtbl->get_RecoResult(This,RecoResult);
}
static FORCEINLINE HRESULT ISpeechPhraseAlternate_get_StartElementInResult(ISpeechPhraseAlternate* This,LONG *StartElement) {
    return This->lpVtbl->get_StartElementInResult(This,StartElement);
}
static FORCEINLINE HRESULT ISpeechPhraseAlternate_get_NumberOfElementsInResult(ISpeechPhraseAlternate* This,LONG *NumberOfElements) {
    return This->lpVtbl->get_NumberOfElementsInResult(This,NumberOfElements);
}
static FORCEINLINE HRESULT ISpeechPhraseAlternate_get_PhraseInfo(ISpeechPhraseAlternate* This,ISpeechPhraseInfo **PhraseInfo) {
    return This->lpVtbl->get_PhraseInfo(This,PhraseInfo);
}
static FORCEINLINE HRESULT ISpeechPhraseAlternate_Commit(ISpeechPhraseAlternate* This) {
    return This->lpVtbl->Commit(This);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechPhraseAlternate_get_RecoResult_Proxy(
    ISpeechPhraseAlternate* This,
    ISpeechRecoResult **RecoResult);
void __RPC_STUB ISpeechPhraseAlternate_get_RecoResult_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseAlternate_get_StartElementInResult_Proxy(
    ISpeechPhraseAlternate* This,
    LONG *StartElement);
void __RPC_STUB ISpeechPhraseAlternate_get_StartElementInResult_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseAlternate_get_NumberOfElementsInResult_Proxy(
    ISpeechPhraseAlternate* This,
    LONG *NumberOfElements);
void __RPC_STUB ISpeechPhraseAlternate_get_NumberOfElementsInResult_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseAlternate_get_PhraseInfo_Proxy(
    ISpeechPhraseAlternate* This,
    ISpeechPhraseInfo **PhraseInfo);
void __RPC_STUB ISpeechPhraseAlternate_get_PhraseInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseAlternate_Commit_Proxy(
    ISpeechPhraseAlternate* This);
void __RPC_STUB ISpeechPhraseAlternate_Commit_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechPhraseAlternate_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechPhraseAlternates interface
 */
#ifndef __ISpeechPhraseAlternates_INTERFACE_DEFINED__
#define __ISpeechPhraseAlternates_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechPhraseAlternates, 0xb238b6d5, 0xf276, 0x4c3d, 0xa6,0xc1, 0x29,0x74,0x80,0x1c,0x3c,0xc2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b238b6d5-f276-4c3d-a6c1-2974801c3cc2")
ISpeechPhraseAlternates : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        LONG Index,
        ISpeechPhraseAlternate **PhraseAlternate) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **EnumVARIANT) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechPhraseAlternates, 0xb238b6d5, 0xf276, 0x4c3d, 0xa6,0xc1, 0x29,0x74,0x80,0x1c,0x3c,0xc2)
#endif
#else
typedef struct ISpeechPhraseAlternatesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechPhraseAlternates* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechPhraseAlternates* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechPhraseAlternates* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechPhraseAlternates* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechPhraseAlternates* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechPhraseAlternates* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechPhraseAlternates* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechPhraseAlternates methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        ISpeechPhraseAlternates* This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *Item)(
        ISpeechPhraseAlternates* This,
        LONG Index,
        ISpeechPhraseAlternate **PhraseAlternate);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        ISpeechPhraseAlternates* This,
        IUnknown **EnumVARIANT);

    END_INTERFACE
} ISpeechPhraseAlternatesVtbl;
interface ISpeechPhraseAlternates {
    CONST_VTBL ISpeechPhraseAlternatesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechPhraseAlternates_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechPhraseAlternates_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechPhraseAlternates_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechPhraseAlternates_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechPhraseAlternates_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechPhraseAlternates_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechPhraseAlternates_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechPhraseAlternates methods ***/
#define ISpeechPhraseAlternates_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define ISpeechPhraseAlternates_Item(This,Index,PhraseAlternate) (This)->lpVtbl->Item(This,Index,PhraseAlternate)
#define ISpeechPhraseAlternates_get__NewEnum(This,EnumVARIANT) (This)->lpVtbl->get__NewEnum(This,EnumVARIANT)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechPhraseAlternates_QueryInterface(ISpeechPhraseAlternates* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechPhraseAlternates_AddRef(ISpeechPhraseAlternates* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechPhraseAlternates_Release(ISpeechPhraseAlternates* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechPhraseAlternates_GetTypeInfoCount(ISpeechPhraseAlternates* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechPhraseAlternates_GetTypeInfo(ISpeechPhraseAlternates* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechPhraseAlternates_GetIDsOfNames(ISpeechPhraseAlternates* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechPhraseAlternates_Invoke(ISpeechPhraseAlternates* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechPhraseAlternates methods ***/
static FORCEINLINE HRESULT ISpeechPhraseAlternates_get_Count(ISpeechPhraseAlternates* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT ISpeechPhraseAlternates_Item(ISpeechPhraseAlternates* This,LONG Index,ISpeechPhraseAlternate **PhraseAlternate) {
    return This->lpVtbl->Item(This,Index,PhraseAlternate);
}
static FORCEINLINE HRESULT ISpeechPhraseAlternates_get__NewEnum(ISpeechPhraseAlternates* This,IUnknown **EnumVARIANT) {
    return This->lpVtbl->get__NewEnum(This,EnumVARIANT);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechPhraseAlternates_get_Count_Proxy(
    ISpeechPhraseAlternates* This,
    LONG *Count);
void __RPC_STUB ISpeechPhraseAlternates_get_Count_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseAlternates_Item_Proxy(
    ISpeechPhraseAlternates* This,
    LONG Index,
    ISpeechPhraseAlternate **PhraseAlternate);
void __RPC_STUB ISpeechPhraseAlternates_Item_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseAlternates_get__NewEnum_Proxy(
    ISpeechPhraseAlternates* This,
    IUnknown **EnumVARIANT);
void __RPC_STUB ISpeechPhraseAlternates_get__NewEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechPhraseAlternates_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechPhraseInfo interface
 */
#ifndef __ISpeechPhraseInfo_INTERFACE_DEFINED__
#define __ISpeechPhraseInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechPhraseInfo, 0x961559cf, 0x4e67, 0x4662, 0x8b,0xf0, 0xd9,0x3f,0x1f,0xcd,0x61,0xb3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("961559cf-4e67-4662-8bf0-d93f1fcd61b3")
ISpeechPhraseInfo : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_LanguageId(
        LONG *LanguageId) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_GrammarId(
        VARIANT *GrammarId) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_StartTime(
        VARIANT *StartTime) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AudioStreamPosition(
        VARIANT *AudioStreamPosition) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AudioSizeBytes(
        LONG *pAudioSizeBytes) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RetainedSizeBytes(
        LONG *RetainedSizeBytes) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AudioSizeTime(
        LONG *AudioSizeTime) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Rule(
        ISpeechPhraseRule **Rule) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Properties(
        ISpeechPhraseProperties **Properties) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Elements(
        ISpeechPhraseElements **Elements) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Replacements(
        ISpeechPhraseReplacements **Replacements) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_EngineId(
        BSTR *EngineIdGuid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_EnginePrivateData(
        VARIANT *PrivateData) = 0;

    virtual HRESULT STDMETHODCALLTYPE SaveToMemory(
        VARIANT *PhraseBlock) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetText(
        LONG StartElement = 0,
        LONG Elements = SPPR_ALL_ELEMENTS,
        VARIANT_BOOL UseReplacements = -1,
        BSTR *Text) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayAttributes(
        LONG StartElement = 0,
        LONG Elements = SPPR_ALL_ELEMENTS,
        VARIANT_BOOL UseReplacements = -1,
        SpeechDisplayAttributes *DisplayAttributes) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechPhraseInfo, 0x961559cf, 0x4e67, 0x4662, 0x8b,0xf0, 0xd9,0x3f,0x1f,0xcd,0x61,0xb3)
#endif
#else
typedef struct ISpeechPhraseInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechPhraseInfo* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechPhraseInfo* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechPhraseInfo* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechPhraseInfo* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechPhraseInfo* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechPhraseInfo* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechPhraseInfo* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechPhraseInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *get_LanguageId)(
        ISpeechPhraseInfo* This,
        LONG *LanguageId);

    HRESULT (STDMETHODCALLTYPE *get_GrammarId)(
        ISpeechPhraseInfo* This,
        VARIANT *GrammarId);

    HRESULT (STDMETHODCALLTYPE *get_StartTime)(
        ISpeechPhraseInfo* This,
        VARIANT *StartTime);

    HRESULT (STDMETHODCALLTYPE *get_AudioStreamPosition)(
        ISpeechPhraseInfo* This,
        VARIANT *AudioStreamPosition);

    HRESULT (STDMETHODCALLTYPE *get_AudioSizeBytes)(
        ISpeechPhraseInfo* This,
        LONG *pAudioSizeBytes);

    HRESULT (STDMETHODCALLTYPE *get_RetainedSizeBytes)(
        ISpeechPhraseInfo* This,
        LONG *RetainedSizeBytes);

    HRESULT (STDMETHODCALLTYPE *get_AudioSizeTime)(
        ISpeechPhraseInfo* This,
        LONG *AudioSizeTime);

    HRESULT (STDMETHODCALLTYPE *get_Rule)(
        ISpeechPhraseInfo* This,
        ISpeechPhraseRule **Rule);

    HRESULT (STDMETHODCALLTYPE *get_Properties)(
        ISpeechPhraseInfo* This,
        ISpeechPhraseProperties **Properties);

    HRESULT (STDMETHODCALLTYPE *get_Elements)(
        ISpeechPhraseInfo* This,
        ISpeechPhraseElements **Elements);

    HRESULT (STDMETHODCALLTYPE *get_Replacements)(
        ISpeechPhraseInfo* This,
        ISpeechPhraseReplacements **Replacements);

    HRESULT (STDMETHODCALLTYPE *get_EngineId)(
        ISpeechPhraseInfo* This,
        BSTR *EngineIdGuid);

    HRESULT (STDMETHODCALLTYPE *get_EnginePrivateData)(
        ISpeechPhraseInfo* This,
        VARIANT *PrivateData);

    HRESULT (STDMETHODCALLTYPE *SaveToMemory)(
        ISpeechPhraseInfo* This,
        VARIANT *PhraseBlock);

    HRESULT (STDMETHODCALLTYPE *GetText)(
        ISpeechPhraseInfo* This,
        LONG StartElement,
        LONG Elements,
        VARIANT_BOOL UseReplacements,
        BSTR *Text);

    HRESULT (STDMETHODCALLTYPE *GetDisplayAttributes)(
        ISpeechPhraseInfo* This,
        LONG StartElement,
        LONG Elements,
        VARIANT_BOOL UseReplacements,
        SpeechDisplayAttributes *DisplayAttributes);

    END_INTERFACE
} ISpeechPhraseInfoVtbl;
interface ISpeechPhraseInfo {
    CONST_VTBL ISpeechPhraseInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechPhraseInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechPhraseInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechPhraseInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechPhraseInfo_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechPhraseInfo_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechPhraseInfo_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechPhraseInfo_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechPhraseInfo methods ***/
#define ISpeechPhraseInfo_get_LanguageId(This,LanguageId) (This)->lpVtbl->get_LanguageId(This,LanguageId)
#define ISpeechPhraseInfo_get_GrammarId(This,GrammarId) (This)->lpVtbl->get_GrammarId(This,GrammarId)
#define ISpeechPhraseInfo_get_StartTime(This,StartTime) (This)->lpVtbl->get_StartTime(This,StartTime)
#define ISpeechPhraseInfo_get_AudioStreamPosition(This,AudioStreamPosition) (This)->lpVtbl->get_AudioStreamPosition(This,AudioStreamPosition)
#define ISpeechPhraseInfo_get_AudioSizeBytes(This,pAudioSizeBytes) (This)->lpVtbl->get_AudioSizeBytes(This,pAudioSizeBytes)
#define ISpeechPhraseInfo_get_RetainedSizeBytes(This,RetainedSizeBytes) (This)->lpVtbl->get_RetainedSizeBytes(This,RetainedSizeBytes)
#define ISpeechPhraseInfo_get_AudioSizeTime(This,AudioSizeTime) (This)->lpVtbl->get_AudioSizeTime(This,AudioSizeTime)
#define ISpeechPhraseInfo_get_Rule(This,Rule) (This)->lpVtbl->get_Rule(This,Rule)
#define ISpeechPhraseInfo_get_Properties(This,Properties) (This)->lpVtbl->get_Properties(This,Properties)
#define ISpeechPhraseInfo_get_Elements(This,Elements) (This)->lpVtbl->get_Elements(This,Elements)
#define ISpeechPhraseInfo_get_Replacements(This,Replacements) (This)->lpVtbl->get_Replacements(This,Replacements)
#define ISpeechPhraseInfo_get_EngineId(This,EngineIdGuid) (This)->lpVtbl->get_EngineId(This,EngineIdGuid)
#define ISpeechPhraseInfo_get_EnginePrivateData(This,PrivateData) (This)->lpVtbl->get_EnginePrivateData(This,PrivateData)
#define ISpeechPhraseInfo_SaveToMemory(This,PhraseBlock) (This)->lpVtbl->SaveToMemory(This,PhraseBlock)
#define ISpeechPhraseInfo_GetText(This,StartElement,Elements,UseReplacements,Text) (This)->lpVtbl->GetText(This,StartElement,Elements,UseReplacements,Text)
#define ISpeechPhraseInfo_GetDisplayAttributes(This,StartElement,Elements,UseReplacements,DisplayAttributes) (This)->lpVtbl->GetDisplayAttributes(This,StartElement,Elements,UseReplacements,DisplayAttributes)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechPhraseInfo_QueryInterface(ISpeechPhraseInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechPhraseInfo_AddRef(ISpeechPhraseInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechPhraseInfo_Release(ISpeechPhraseInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechPhraseInfo_GetTypeInfoCount(ISpeechPhraseInfo* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_GetTypeInfo(ISpeechPhraseInfo* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_GetIDsOfNames(ISpeechPhraseInfo* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_Invoke(ISpeechPhraseInfo* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechPhraseInfo methods ***/
static FORCEINLINE HRESULT ISpeechPhraseInfo_get_LanguageId(ISpeechPhraseInfo* This,LONG *LanguageId) {
    return This->lpVtbl->get_LanguageId(This,LanguageId);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_get_GrammarId(ISpeechPhraseInfo* This,VARIANT *GrammarId) {
    return This->lpVtbl->get_GrammarId(This,GrammarId);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_get_StartTime(ISpeechPhraseInfo* This,VARIANT *StartTime) {
    return This->lpVtbl->get_StartTime(This,StartTime);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_get_AudioStreamPosition(ISpeechPhraseInfo* This,VARIANT *AudioStreamPosition) {
    return This->lpVtbl->get_AudioStreamPosition(This,AudioStreamPosition);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_get_AudioSizeBytes(ISpeechPhraseInfo* This,LONG *pAudioSizeBytes) {
    return This->lpVtbl->get_AudioSizeBytes(This,pAudioSizeBytes);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_get_RetainedSizeBytes(ISpeechPhraseInfo* This,LONG *RetainedSizeBytes) {
    return This->lpVtbl->get_RetainedSizeBytes(This,RetainedSizeBytes);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_get_AudioSizeTime(ISpeechPhraseInfo* This,LONG *AudioSizeTime) {
    return This->lpVtbl->get_AudioSizeTime(This,AudioSizeTime);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_get_Rule(ISpeechPhraseInfo* This,ISpeechPhraseRule **Rule) {
    return This->lpVtbl->get_Rule(This,Rule);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_get_Properties(ISpeechPhraseInfo* This,ISpeechPhraseProperties **Properties) {
    return This->lpVtbl->get_Properties(This,Properties);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_get_Elements(ISpeechPhraseInfo* This,ISpeechPhraseElements **Elements) {
    return This->lpVtbl->get_Elements(This,Elements);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_get_Replacements(ISpeechPhraseInfo* This,ISpeechPhraseReplacements **Replacements) {
    return This->lpVtbl->get_Replacements(This,Replacements);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_get_EngineId(ISpeechPhraseInfo* This,BSTR *EngineIdGuid) {
    return This->lpVtbl->get_EngineId(This,EngineIdGuid);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_get_EnginePrivateData(ISpeechPhraseInfo* This,VARIANT *PrivateData) {
    return This->lpVtbl->get_EnginePrivateData(This,PrivateData);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_SaveToMemory(ISpeechPhraseInfo* This,VARIANT *PhraseBlock) {
    return This->lpVtbl->SaveToMemory(This,PhraseBlock);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_GetText(ISpeechPhraseInfo* This,LONG StartElement,LONG Elements,VARIANT_BOOL UseReplacements,BSTR *Text) {
    return This->lpVtbl->GetText(This,StartElement,Elements,UseReplacements,Text);
}
static FORCEINLINE HRESULT ISpeechPhraseInfo_GetDisplayAttributes(ISpeechPhraseInfo* This,LONG StartElement,LONG Elements,VARIANT_BOOL UseReplacements,SpeechDisplayAttributes *DisplayAttributes) {
    return This->lpVtbl->GetDisplayAttributes(This,StartElement,Elements,UseReplacements,DisplayAttributes);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_get_LanguageId_Proxy(
    ISpeechPhraseInfo* This,
    LONG *LanguageId);
void __RPC_STUB ISpeechPhraseInfo_get_LanguageId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_get_GrammarId_Proxy(
    ISpeechPhraseInfo* This,
    VARIANT *GrammarId);
void __RPC_STUB ISpeechPhraseInfo_get_GrammarId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_get_StartTime_Proxy(
    ISpeechPhraseInfo* This,
    VARIANT *StartTime);
void __RPC_STUB ISpeechPhraseInfo_get_StartTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_get_AudioStreamPosition_Proxy(
    ISpeechPhraseInfo* This,
    VARIANT *AudioStreamPosition);
void __RPC_STUB ISpeechPhraseInfo_get_AudioStreamPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_get_AudioSizeBytes_Proxy(
    ISpeechPhraseInfo* This,
    LONG *pAudioSizeBytes);
void __RPC_STUB ISpeechPhraseInfo_get_AudioSizeBytes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_get_RetainedSizeBytes_Proxy(
    ISpeechPhraseInfo* This,
    LONG *RetainedSizeBytes);
void __RPC_STUB ISpeechPhraseInfo_get_RetainedSizeBytes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_get_AudioSizeTime_Proxy(
    ISpeechPhraseInfo* This,
    LONG *AudioSizeTime);
void __RPC_STUB ISpeechPhraseInfo_get_AudioSizeTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_get_Rule_Proxy(
    ISpeechPhraseInfo* This,
    ISpeechPhraseRule **Rule);
void __RPC_STUB ISpeechPhraseInfo_get_Rule_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_get_Properties_Proxy(
    ISpeechPhraseInfo* This,
    ISpeechPhraseProperties **Properties);
void __RPC_STUB ISpeechPhraseInfo_get_Properties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_get_Elements_Proxy(
    ISpeechPhraseInfo* This,
    ISpeechPhraseElements **Elements);
void __RPC_STUB ISpeechPhraseInfo_get_Elements_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_get_Replacements_Proxy(
    ISpeechPhraseInfo* This,
    ISpeechPhraseReplacements **Replacements);
void __RPC_STUB ISpeechPhraseInfo_get_Replacements_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_get_EngineId_Proxy(
    ISpeechPhraseInfo* This,
    BSTR *EngineIdGuid);
void __RPC_STUB ISpeechPhraseInfo_get_EngineId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_get_EnginePrivateData_Proxy(
    ISpeechPhraseInfo* This,
    VARIANT *PrivateData);
void __RPC_STUB ISpeechPhraseInfo_get_EnginePrivateData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_SaveToMemory_Proxy(
    ISpeechPhraseInfo* This,
    VARIANT *PhraseBlock);
void __RPC_STUB ISpeechPhraseInfo_SaveToMemory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_GetText_Proxy(
    ISpeechPhraseInfo* This,
    LONG StartElement,
    LONG Elements,
    VARIANT_BOOL UseReplacements,
    BSTR *Text);
void __RPC_STUB ISpeechPhraseInfo_GetText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseInfo_GetDisplayAttributes_Proxy(
    ISpeechPhraseInfo* This,
    LONG StartElement,
    LONG Elements,
    VARIANT_BOOL UseReplacements,
    SpeechDisplayAttributes *DisplayAttributes);
void __RPC_STUB ISpeechPhraseInfo_GetDisplayAttributes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechPhraseInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechPhraseElement interface
 */
#ifndef __ISpeechPhraseElement_INTERFACE_DEFINED__
#define __ISpeechPhraseElement_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechPhraseElement, 0xe6176f96, 0xe373, 0x4801, 0xb2,0x23, 0x3b,0x62,0xc0,0x68,0xc0,0xb4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e6176f96-e373-4801-b223-3b62c068c0b4")
ISpeechPhraseElement : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_AudioTimeOffset(
        LONG *AudioTimeOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AudioSizeTime(
        LONG *AudioSizeTime) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AudioStreamOffset(
        LONG *AudioStreamOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AudioSizeBytes(
        LONG *AudioSizeBytes) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RetainedStreamOffset(
        LONG *RetainedStreamOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RetainedSizeBytes(
        LONG *RetainedSizeBytes) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DisplayText(
        BSTR *DisplayText) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LexicalForm(
        BSTR *LexicalForm) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Pronunciation(
        VARIANT *Pronunciation) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DisplayAttributes(
        SpeechDisplayAttributes *DisplayAttributes) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RequiredConfidence(
        SpeechEngineConfidence *RequiredConfidence) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ActualConfidence(
        SpeechEngineConfidence *ActualConfidence) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_EngineConfidence(
        float *EngineConfidence) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechPhraseElement, 0xe6176f96, 0xe373, 0x4801, 0xb2,0x23, 0x3b,0x62,0xc0,0x68,0xc0,0xb4)
#endif
#else
typedef struct ISpeechPhraseElementVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechPhraseElement* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechPhraseElement* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechPhraseElement* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechPhraseElement* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechPhraseElement* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechPhraseElement* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechPhraseElement* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechPhraseElement methods ***/
    HRESULT (STDMETHODCALLTYPE *get_AudioTimeOffset)(
        ISpeechPhraseElement* This,
        LONG *AudioTimeOffset);

    HRESULT (STDMETHODCALLTYPE *get_AudioSizeTime)(
        ISpeechPhraseElement* This,
        LONG *AudioSizeTime);

    HRESULT (STDMETHODCALLTYPE *get_AudioStreamOffset)(
        ISpeechPhraseElement* This,
        LONG *AudioStreamOffset);

    HRESULT (STDMETHODCALLTYPE *get_AudioSizeBytes)(
        ISpeechPhraseElement* This,
        LONG *AudioSizeBytes);

    HRESULT (STDMETHODCALLTYPE *get_RetainedStreamOffset)(
        ISpeechPhraseElement* This,
        LONG *RetainedStreamOffset);

    HRESULT (STDMETHODCALLTYPE *get_RetainedSizeBytes)(
        ISpeechPhraseElement* This,
        LONG *RetainedSizeBytes);

    HRESULT (STDMETHODCALLTYPE *get_DisplayText)(
        ISpeechPhraseElement* This,
        BSTR *DisplayText);

    HRESULT (STDMETHODCALLTYPE *get_LexicalForm)(
        ISpeechPhraseElement* This,
        BSTR *LexicalForm);

    HRESULT (STDMETHODCALLTYPE *get_Pronunciation)(
        ISpeechPhraseElement* This,
        VARIANT *Pronunciation);

    HRESULT (STDMETHODCALLTYPE *get_DisplayAttributes)(
        ISpeechPhraseElement* This,
        SpeechDisplayAttributes *DisplayAttributes);

    HRESULT (STDMETHODCALLTYPE *get_RequiredConfidence)(
        ISpeechPhraseElement* This,
        SpeechEngineConfidence *RequiredConfidence);

    HRESULT (STDMETHODCALLTYPE *get_ActualConfidence)(
        ISpeechPhraseElement* This,
        SpeechEngineConfidence *ActualConfidence);

    HRESULT (STDMETHODCALLTYPE *get_EngineConfidence)(
        ISpeechPhraseElement* This,
        float *EngineConfidence);

    END_INTERFACE
} ISpeechPhraseElementVtbl;
interface ISpeechPhraseElement {
    CONST_VTBL ISpeechPhraseElementVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechPhraseElement_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechPhraseElement_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechPhraseElement_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechPhraseElement_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechPhraseElement_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechPhraseElement_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechPhraseElement_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechPhraseElement methods ***/
#define ISpeechPhraseElement_get_AudioTimeOffset(This,AudioTimeOffset) (This)->lpVtbl->get_AudioTimeOffset(This,AudioTimeOffset)
#define ISpeechPhraseElement_get_AudioSizeTime(This,AudioSizeTime) (This)->lpVtbl->get_AudioSizeTime(This,AudioSizeTime)
#define ISpeechPhraseElement_get_AudioStreamOffset(This,AudioStreamOffset) (This)->lpVtbl->get_AudioStreamOffset(This,AudioStreamOffset)
#define ISpeechPhraseElement_get_AudioSizeBytes(This,AudioSizeBytes) (This)->lpVtbl->get_AudioSizeBytes(This,AudioSizeBytes)
#define ISpeechPhraseElement_get_RetainedStreamOffset(This,RetainedStreamOffset) (This)->lpVtbl->get_RetainedStreamOffset(This,RetainedStreamOffset)
#define ISpeechPhraseElement_get_RetainedSizeBytes(This,RetainedSizeBytes) (This)->lpVtbl->get_RetainedSizeBytes(This,RetainedSizeBytes)
#define ISpeechPhraseElement_get_DisplayText(This,DisplayText) (This)->lpVtbl->get_DisplayText(This,DisplayText)
#define ISpeechPhraseElement_get_LexicalForm(This,LexicalForm) (This)->lpVtbl->get_LexicalForm(This,LexicalForm)
#define ISpeechPhraseElement_get_Pronunciation(This,Pronunciation) (This)->lpVtbl->get_Pronunciation(This,Pronunciation)
#define ISpeechPhraseElement_get_DisplayAttributes(This,DisplayAttributes) (This)->lpVtbl->get_DisplayAttributes(This,DisplayAttributes)
#define ISpeechPhraseElement_get_RequiredConfidence(This,RequiredConfidence) (This)->lpVtbl->get_RequiredConfidence(This,RequiredConfidence)
#define ISpeechPhraseElement_get_ActualConfidence(This,ActualConfidence) (This)->lpVtbl->get_ActualConfidence(This,ActualConfidence)
#define ISpeechPhraseElement_get_EngineConfidence(This,EngineConfidence) (This)->lpVtbl->get_EngineConfidence(This,EngineConfidence)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechPhraseElement_QueryInterface(ISpeechPhraseElement* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechPhraseElement_AddRef(ISpeechPhraseElement* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechPhraseElement_Release(ISpeechPhraseElement* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechPhraseElement_GetTypeInfoCount(ISpeechPhraseElement* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_GetTypeInfo(ISpeechPhraseElement* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_GetIDsOfNames(ISpeechPhraseElement* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_Invoke(ISpeechPhraseElement* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechPhraseElement methods ***/
static FORCEINLINE HRESULT ISpeechPhraseElement_get_AudioTimeOffset(ISpeechPhraseElement* This,LONG *AudioTimeOffset) {
    return This->lpVtbl->get_AudioTimeOffset(This,AudioTimeOffset);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_get_AudioSizeTime(ISpeechPhraseElement* This,LONG *AudioSizeTime) {
    return This->lpVtbl->get_AudioSizeTime(This,AudioSizeTime);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_get_AudioStreamOffset(ISpeechPhraseElement* This,LONG *AudioStreamOffset) {
    return This->lpVtbl->get_AudioStreamOffset(This,AudioStreamOffset);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_get_AudioSizeBytes(ISpeechPhraseElement* This,LONG *AudioSizeBytes) {
    return This->lpVtbl->get_AudioSizeBytes(This,AudioSizeBytes);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_get_RetainedStreamOffset(ISpeechPhraseElement* This,LONG *RetainedStreamOffset) {
    return This->lpVtbl->get_RetainedStreamOffset(This,RetainedStreamOffset);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_get_RetainedSizeBytes(ISpeechPhraseElement* This,LONG *RetainedSizeBytes) {
    return This->lpVtbl->get_RetainedSizeBytes(This,RetainedSizeBytes);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_get_DisplayText(ISpeechPhraseElement* This,BSTR *DisplayText) {
    return This->lpVtbl->get_DisplayText(This,DisplayText);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_get_LexicalForm(ISpeechPhraseElement* This,BSTR *LexicalForm) {
    return This->lpVtbl->get_LexicalForm(This,LexicalForm);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_get_Pronunciation(ISpeechPhraseElement* This,VARIANT *Pronunciation) {
    return This->lpVtbl->get_Pronunciation(This,Pronunciation);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_get_DisplayAttributes(ISpeechPhraseElement* This,SpeechDisplayAttributes *DisplayAttributes) {
    return This->lpVtbl->get_DisplayAttributes(This,DisplayAttributes);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_get_RequiredConfidence(ISpeechPhraseElement* This,SpeechEngineConfidence *RequiredConfidence) {
    return This->lpVtbl->get_RequiredConfidence(This,RequiredConfidence);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_get_ActualConfidence(ISpeechPhraseElement* This,SpeechEngineConfidence *ActualConfidence) {
    return This->lpVtbl->get_ActualConfidence(This,ActualConfidence);
}
static FORCEINLINE HRESULT ISpeechPhraseElement_get_EngineConfidence(ISpeechPhraseElement* This,float *EngineConfidence) {
    return This->lpVtbl->get_EngineConfidence(This,EngineConfidence);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechPhraseElement_get_AudioTimeOffset_Proxy(
    ISpeechPhraseElement* This,
    LONG *AudioTimeOffset);
void __RPC_STUB ISpeechPhraseElement_get_AudioTimeOffset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseElement_get_AudioSizeTime_Proxy(
    ISpeechPhraseElement* This,
    LONG *AudioSizeTime);
void __RPC_STUB ISpeechPhraseElement_get_AudioSizeTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseElement_get_AudioStreamOffset_Proxy(
    ISpeechPhraseElement* This,
    LONG *AudioStreamOffset);
void __RPC_STUB ISpeechPhraseElement_get_AudioStreamOffset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseElement_get_AudioSizeBytes_Proxy(
    ISpeechPhraseElement* This,
    LONG *AudioSizeBytes);
void __RPC_STUB ISpeechPhraseElement_get_AudioSizeBytes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseElement_get_RetainedStreamOffset_Proxy(
    ISpeechPhraseElement* This,
    LONG *RetainedStreamOffset);
void __RPC_STUB ISpeechPhraseElement_get_RetainedStreamOffset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseElement_get_RetainedSizeBytes_Proxy(
    ISpeechPhraseElement* This,
    LONG *RetainedSizeBytes);
void __RPC_STUB ISpeechPhraseElement_get_RetainedSizeBytes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseElement_get_DisplayText_Proxy(
    ISpeechPhraseElement* This,
    BSTR *DisplayText);
void __RPC_STUB ISpeechPhraseElement_get_DisplayText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseElement_get_LexicalForm_Proxy(
    ISpeechPhraseElement* This,
    BSTR *LexicalForm);
void __RPC_STUB ISpeechPhraseElement_get_LexicalForm_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseElement_get_Pronunciation_Proxy(
    ISpeechPhraseElement* This,
    VARIANT *Pronunciation);
void __RPC_STUB ISpeechPhraseElement_get_Pronunciation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseElement_get_DisplayAttributes_Proxy(
    ISpeechPhraseElement* This,
    SpeechDisplayAttributes *DisplayAttributes);
void __RPC_STUB ISpeechPhraseElement_get_DisplayAttributes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseElement_get_RequiredConfidence_Proxy(
    ISpeechPhraseElement* This,
    SpeechEngineConfidence *RequiredConfidence);
void __RPC_STUB ISpeechPhraseElement_get_RequiredConfidence_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseElement_get_ActualConfidence_Proxy(
    ISpeechPhraseElement* This,
    SpeechEngineConfidence *ActualConfidence);
void __RPC_STUB ISpeechPhraseElement_get_ActualConfidence_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseElement_get_EngineConfidence_Proxy(
    ISpeechPhraseElement* This,
    float *EngineConfidence);
void __RPC_STUB ISpeechPhraseElement_get_EngineConfidence_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechPhraseElement_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechPhraseElements interface
 */
#ifndef __ISpeechPhraseElements_INTERFACE_DEFINED__
#define __ISpeechPhraseElements_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechPhraseElements, 0x0626b328, 0x3478, 0x467d, 0xa0,0xb3, 0xd0,0x85,0x3b,0x93,0xdd,0xa3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0626b328-3478-467d-a0b3-d0853b93dda3")
ISpeechPhraseElements : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        LONG Index,
        ISpeechPhraseElement **Element) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **EnumVARIANT) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechPhraseElements, 0x0626b328, 0x3478, 0x467d, 0xa0,0xb3, 0xd0,0x85,0x3b,0x93,0xdd,0xa3)
#endif
#else
typedef struct ISpeechPhraseElementsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechPhraseElements* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechPhraseElements* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechPhraseElements* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechPhraseElements* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechPhraseElements* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechPhraseElements* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechPhraseElements* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechPhraseElements methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        ISpeechPhraseElements* This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *Item)(
        ISpeechPhraseElements* This,
        LONG Index,
        ISpeechPhraseElement **Element);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        ISpeechPhraseElements* This,
        IUnknown **EnumVARIANT);

    END_INTERFACE
} ISpeechPhraseElementsVtbl;
interface ISpeechPhraseElements {
    CONST_VTBL ISpeechPhraseElementsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechPhraseElements_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechPhraseElements_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechPhraseElements_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechPhraseElements_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechPhraseElements_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechPhraseElements_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechPhraseElements_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechPhraseElements methods ***/
#define ISpeechPhraseElements_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define ISpeechPhraseElements_Item(This,Index,Element) (This)->lpVtbl->Item(This,Index,Element)
#define ISpeechPhraseElements_get__NewEnum(This,EnumVARIANT) (This)->lpVtbl->get__NewEnum(This,EnumVARIANT)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechPhraseElements_QueryInterface(ISpeechPhraseElements* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechPhraseElements_AddRef(ISpeechPhraseElements* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechPhraseElements_Release(ISpeechPhraseElements* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechPhraseElements_GetTypeInfoCount(ISpeechPhraseElements* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechPhraseElements_GetTypeInfo(ISpeechPhraseElements* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechPhraseElements_GetIDsOfNames(ISpeechPhraseElements* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechPhraseElements_Invoke(ISpeechPhraseElements* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechPhraseElements methods ***/
static FORCEINLINE HRESULT ISpeechPhraseElements_get_Count(ISpeechPhraseElements* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT ISpeechPhraseElements_Item(ISpeechPhraseElements* This,LONG Index,ISpeechPhraseElement **Element) {
    return This->lpVtbl->Item(This,Index,Element);
}
static FORCEINLINE HRESULT ISpeechPhraseElements_get__NewEnum(ISpeechPhraseElements* This,IUnknown **EnumVARIANT) {
    return This->lpVtbl->get__NewEnum(This,EnumVARIANT);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechPhraseElements_get_Count_Proxy(
    ISpeechPhraseElements* This,
    LONG *Count);
void __RPC_STUB ISpeechPhraseElements_get_Count_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseElements_Item_Proxy(
    ISpeechPhraseElements* This,
    LONG Index,
    ISpeechPhraseElement **Element);
void __RPC_STUB ISpeechPhraseElements_Item_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseElements_get__NewEnum_Proxy(
    ISpeechPhraseElements* This,
    IUnknown **EnumVARIANT);
void __RPC_STUB ISpeechPhraseElements_get__NewEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechPhraseElements_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechPhraseReplacement interface
 */
#ifndef __ISpeechPhraseReplacement_INTERFACE_DEFINED__
#define __ISpeechPhraseReplacement_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechPhraseReplacement, 0x2890a410, 0x53a7, 0x4fb5, 0x94,0xec, 0x06,0xd4,0x99,0x8e,0x3d,0x02);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2890a410-53a7-4fb5-94ec-06d4998e3d02")
ISpeechPhraseReplacement : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_DisplayAttributes(
        SpeechDisplayAttributes *DisplayAttributes) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Text(
        BSTR *Text) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FirstElement(
        LONG *FirstElement) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_NumberOfElements(
        LONG *NumberOfElements) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechPhraseReplacement, 0x2890a410, 0x53a7, 0x4fb5, 0x94,0xec, 0x06,0xd4,0x99,0x8e,0x3d,0x02)
#endif
#else
typedef struct ISpeechPhraseReplacementVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechPhraseReplacement* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechPhraseReplacement* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechPhraseReplacement* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechPhraseReplacement* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechPhraseReplacement* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechPhraseReplacement* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechPhraseReplacement* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechPhraseReplacement methods ***/
    HRESULT (STDMETHODCALLTYPE *get_DisplayAttributes)(
        ISpeechPhraseReplacement* This,
        SpeechDisplayAttributes *DisplayAttributes);

    HRESULT (STDMETHODCALLTYPE *get_Text)(
        ISpeechPhraseReplacement* This,
        BSTR *Text);

    HRESULT (STDMETHODCALLTYPE *get_FirstElement)(
        ISpeechPhraseReplacement* This,
        LONG *FirstElement);

    HRESULT (STDMETHODCALLTYPE *get_NumberOfElements)(
        ISpeechPhraseReplacement* This,
        LONG *NumberOfElements);

    END_INTERFACE
} ISpeechPhraseReplacementVtbl;
interface ISpeechPhraseReplacement {
    CONST_VTBL ISpeechPhraseReplacementVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechPhraseReplacement_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechPhraseReplacement_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechPhraseReplacement_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechPhraseReplacement_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechPhraseReplacement_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechPhraseReplacement_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechPhraseReplacement_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechPhraseReplacement methods ***/
#define ISpeechPhraseReplacement_get_DisplayAttributes(This,DisplayAttributes) (This)->lpVtbl->get_DisplayAttributes(This,DisplayAttributes)
#define ISpeechPhraseReplacement_get_Text(This,Text) (This)->lpVtbl->get_Text(This,Text)
#define ISpeechPhraseReplacement_get_FirstElement(This,FirstElement) (This)->lpVtbl->get_FirstElement(This,FirstElement)
#define ISpeechPhraseReplacement_get_NumberOfElements(This,NumberOfElements) (This)->lpVtbl->get_NumberOfElements(This,NumberOfElements)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechPhraseReplacement_QueryInterface(ISpeechPhraseReplacement* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechPhraseReplacement_AddRef(ISpeechPhraseReplacement* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechPhraseReplacement_Release(ISpeechPhraseReplacement* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechPhraseReplacement_GetTypeInfoCount(ISpeechPhraseReplacement* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechPhraseReplacement_GetTypeInfo(ISpeechPhraseReplacement* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechPhraseReplacement_GetIDsOfNames(ISpeechPhraseReplacement* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechPhraseReplacement_Invoke(ISpeechPhraseReplacement* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechPhraseReplacement methods ***/
static FORCEINLINE HRESULT ISpeechPhraseReplacement_get_DisplayAttributes(ISpeechPhraseReplacement* This,SpeechDisplayAttributes *DisplayAttributes) {
    return This->lpVtbl->get_DisplayAttributes(This,DisplayAttributes);
}
static FORCEINLINE HRESULT ISpeechPhraseReplacement_get_Text(ISpeechPhraseReplacement* This,BSTR *Text) {
    return This->lpVtbl->get_Text(This,Text);
}
static FORCEINLINE HRESULT ISpeechPhraseReplacement_get_FirstElement(ISpeechPhraseReplacement* This,LONG *FirstElement) {
    return This->lpVtbl->get_FirstElement(This,FirstElement);
}
static FORCEINLINE HRESULT ISpeechPhraseReplacement_get_NumberOfElements(ISpeechPhraseReplacement* This,LONG *NumberOfElements) {
    return This->lpVtbl->get_NumberOfElements(This,NumberOfElements);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechPhraseReplacement_get_DisplayAttributes_Proxy(
    ISpeechPhraseReplacement* This,
    SpeechDisplayAttributes *DisplayAttributes);
void __RPC_STUB ISpeechPhraseReplacement_get_DisplayAttributes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseReplacement_get_Text_Proxy(
    ISpeechPhraseReplacement* This,
    BSTR *Text);
void __RPC_STUB ISpeechPhraseReplacement_get_Text_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseReplacement_get_FirstElement_Proxy(
    ISpeechPhraseReplacement* This,
    LONG *FirstElement);
void __RPC_STUB ISpeechPhraseReplacement_get_FirstElement_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseReplacement_get_NumberOfElements_Proxy(
    ISpeechPhraseReplacement* This,
    LONG *NumberOfElements);
void __RPC_STUB ISpeechPhraseReplacement_get_NumberOfElements_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechPhraseReplacement_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechPhraseReplacements interface
 */
#ifndef __ISpeechPhraseReplacements_INTERFACE_DEFINED__
#define __ISpeechPhraseReplacements_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechPhraseReplacements, 0x38bc662f, 0x2257, 0x4525, 0x95,0x9e, 0x20,0x69,0xd2,0x59,0x6c,0x05);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("38bc662f-2257-4525-959e-2069d2596c05")
ISpeechPhraseReplacements : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        LONG Index,
        ISpeechPhraseReplacement **Reps) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **EnumVARIANT) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechPhraseReplacements, 0x38bc662f, 0x2257, 0x4525, 0x95,0x9e, 0x20,0x69,0xd2,0x59,0x6c,0x05)
#endif
#else
typedef struct ISpeechPhraseReplacementsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechPhraseReplacements* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechPhraseReplacements* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechPhraseReplacements* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechPhraseReplacements* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechPhraseReplacements* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechPhraseReplacements* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechPhraseReplacements* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechPhraseReplacements methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        ISpeechPhraseReplacements* This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *Item)(
        ISpeechPhraseReplacements* This,
        LONG Index,
        ISpeechPhraseReplacement **Reps);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        ISpeechPhraseReplacements* This,
        IUnknown **EnumVARIANT);

    END_INTERFACE
} ISpeechPhraseReplacementsVtbl;
interface ISpeechPhraseReplacements {
    CONST_VTBL ISpeechPhraseReplacementsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechPhraseReplacements_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechPhraseReplacements_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechPhraseReplacements_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechPhraseReplacements_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechPhraseReplacements_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechPhraseReplacements_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechPhraseReplacements_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechPhraseReplacements methods ***/
#define ISpeechPhraseReplacements_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define ISpeechPhraseReplacements_Item(This,Index,Reps) (This)->lpVtbl->Item(This,Index,Reps)
#define ISpeechPhraseReplacements_get__NewEnum(This,EnumVARIANT) (This)->lpVtbl->get__NewEnum(This,EnumVARIANT)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechPhraseReplacements_QueryInterface(ISpeechPhraseReplacements* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechPhraseReplacements_AddRef(ISpeechPhraseReplacements* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechPhraseReplacements_Release(ISpeechPhraseReplacements* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechPhraseReplacements_GetTypeInfoCount(ISpeechPhraseReplacements* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechPhraseReplacements_GetTypeInfo(ISpeechPhraseReplacements* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechPhraseReplacements_GetIDsOfNames(ISpeechPhraseReplacements* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechPhraseReplacements_Invoke(ISpeechPhraseReplacements* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechPhraseReplacements methods ***/
static FORCEINLINE HRESULT ISpeechPhraseReplacements_get_Count(ISpeechPhraseReplacements* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT ISpeechPhraseReplacements_Item(ISpeechPhraseReplacements* This,LONG Index,ISpeechPhraseReplacement **Reps) {
    return This->lpVtbl->Item(This,Index,Reps);
}
static FORCEINLINE HRESULT ISpeechPhraseReplacements_get__NewEnum(ISpeechPhraseReplacements* This,IUnknown **EnumVARIANT) {
    return This->lpVtbl->get__NewEnum(This,EnumVARIANT);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechPhraseReplacements_get_Count_Proxy(
    ISpeechPhraseReplacements* This,
    LONG *Count);
void __RPC_STUB ISpeechPhraseReplacements_get_Count_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseReplacements_Item_Proxy(
    ISpeechPhraseReplacements* This,
    LONG Index,
    ISpeechPhraseReplacement **Reps);
void __RPC_STUB ISpeechPhraseReplacements_Item_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseReplacements_get__NewEnum_Proxy(
    ISpeechPhraseReplacements* This,
    IUnknown **EnumVARIANT);
void __RPC_STUB ISpeechPhraseReplacements_get__NewEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechPhraseReplacements_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechPhraseProperty interface
 */
#ifndef __ISpeechPhraseProperty_INTERFACE_DEFINED__
#define __ISpeechPhraseProperty_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechPhraseProperty, 0xce563d48, 0x961e, 0x4732, 0xa2,0xe1, 0x37,0x8a,0x42,0xb4,0x30,0xbe);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ce563d48-961e-4732-a2e1-378a42b430be")
ISpeechPhraseProperty : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Name(
        BSTR *Name) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Id(
        LONG *Id) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Value(
        VARIANT *Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FirstElement(
        LONG *FirstElement) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_NumberOfElements(
        LONG *NumberOfElements) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_EngineConfidence(
        float *Confidence) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Confidence(
        SpeechEngineConfidence *Confidence) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Parent(
        ISpeechPhraseProperty **ParentProperty) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Children(
        ISpeechPhraseProperties **Children) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechPhraseProperty, 0xce563d48, 0x961e, 0x4732, 0xa2,0xe1, 0x37,0x8a,0x42,0xb4,0x30,0xbe)
#endif
#else
typedef struct ISpeechPhrasePropertyVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechPhraseProperty* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechPhraseProperty* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechPhraseProperty* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechPhraseProperty* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechPhraseProperty* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechPhraseProperty* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechPhraseProperty* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechPhraseProperty methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Name)(
        ISpeechPhraseProperty* This,
        BSTR *Name);

    HRESULT (STDMETHODCALLTYPE *get_Id)(
        ISpeechPhraseProperty* This,
        LONG *Id);

    HRESULT (STDMETHODCALLTYPE *get_Value)(
        ISpeechPhraseProperty* This,
        VARIANT *Value);

    HRESULT (STDMETHODCALLTYPE *get_FirstElement)(
        ISpeechPhraseProperty* This,
        LONG *FirstElement);

    HRESULT (STDMETHODCALLTYPE *get_NumberOfElements)(
        ISpeechPhraseProperty* This,
        LONG *NumberOfElements);

    HRESULT (STDMETHODCALLTYPE *get_EngineConfidence)(
        ISpeechPhraseProperty* This,
        float *Confidence);

    HRESULT (STDMETHODCALLTYPE *get_Confidence)(
        ISpeechPhraseProperty* This,
        SpeechEngineConfidence *Confidence);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        ISpeechPhraseProperty* This,
        ISpeechPhraseProperty **ParentProperty);

    HRESULT (STDMETHODCALLTYPE *get_Children)(
        ISpeechPhraseProperty* This,
        ISpeechPhraseProperties **Children);

    END_INTERFACE
} ISpeechPhrasePropertyVtbl;
interface ISpeechPhraseProperty {
    CONST_VTBL ISpeechPhrasePropertyVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechPhraseProperty_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechPhraseProperty_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechPhraseProperty_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechPhraseProperty_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechPhraseProperty_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechPhraseProperty_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechPhraseProperty_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechPhraseProperty methods ***/
#define ISpeechPhraseProperty_get_Name(This,Name) (This)->lpVtbl->get_Name(This,Name)
#define ISpeechPhraseProperty_get_Id(This,Id) (This)->lpVtbl->get_Id(This,Id)
#define ISpeechPhraseProperty_get_Value(This,Value) (This)->lpVtbl->get_Value(This,Value)
#define ISpeechPhraseProperty_get_FirstElement(This,FirstElement) (This)->lpVtbl->get_FirstElement(This,FirstElement)
#define ISpeechPhraseProperty_get_NumberOfElements(This,NumberOfElements) (This)->lpVtbl->get_NumberOfElements(This,NumberOfElements)
#define ISpeechPhraseProperty_get_EngineConfidence(This,Confidence) (This)->lpVtbl->get_EngineConfidence(This,Confidence)
#define ISpeechPhraseProperty_get_Confidence(This,Confidence) (This)->lpVtbl->get_Confidence(This,Confidence)
#define ISpeechPhraseProperty_get_Parent(This,ParentProperty) (This)->lpVtbl->get_Parent(This,ParentProperty)
#define ISpeechPhraseProperty_get_Children(This,Children) (This)->lpVtbl->get_Children(This,Children)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechPhraseProperty_QueryInterface(ISpeechPhraseProperty* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechPhraseProperty_AddRef(ISpeechPhraseProperty* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechPhraseProperty_Release(ISpeechPhraseProperty* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechPhraseProperty_GetTypeInfoCount(ISpeechPhraseProperty* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechPhraseProperty_GetTypeInfo(ISpeechPhraseProperty* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechPhraseProperty_GetIDsOfNames(ISpeechPhraseProperty* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechPhraseProperty_Invoke(ISpeechPhraseProperty* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechPhraseProperty methods ***/
static FORCEINLINE HRESULT ISpeechPhraseProperty_get_Name(ISpeechPhraseProperty* This,BSTR *Name) {
    return This->lpVtbl->get_Name(This,Name);
}
static FORCEINLINE HRESULT ISpeechPhraseProperty_get_Id(ISpeechPhraseProperty* This,LONG *Id) {
    return This->lpVtbl->get_Id(This,Id);
}
static FORCEINLINE HRESULT ISpeechPhraseProperty_get_Value(ISpeechPhraseProperty* This,VARIANT *Value) {
    return This->lpVtbl->get_Value(This,Value);
}
static FORCEINLINE HRESULT ISpeechPhraseProperty_get_FirstElement(ISpeechPhraseProperty* This,LONG *FirstElement) {
    return This->lpVtbl->get_FirstElement(This,FirstElement);
}
static FORCEINLINE HRESULT ISpeechPhraseProperty_get_NumberOfElements(ISpeechPhraseProperty* This,LONG *NumberOfElements) {
    return This->lpVtbl->get_NumberOfElements(This,NumberOfElements);
}
static FORCEINLINE HRESULT ISpeechPhraseProperty_get_EngineConfidence(ISpeechPhraseProperty* This,float *Confidence) {
    return This->lpVtbl->get_EngineConfidence(This,Confidence);
}
static FORCEINLINE HRESULT ISpeechPhraseProperty_get_Confidence(ISpeechPhraseProperty* This,SpeechEngineConfidence *Confidence) {
    return This->lpVtbl->get_Confidence(This,Confidence);
}
static FORCEINLINE HRESULT ISpeechPhraseProperty_get_Parent(ISpeechPhraseProperty* This,ISpeechPhraseProperty **ParentProperty) {
    return This->lpVtbl->get_Parent(This,ParentProperty);
}
static FORCEINLINE HRESULT ISpeechPhraseProperty_get_Children(ISpeechPhraseProperty* This,ISpeechPhraseProperties **Children) {
    return This->lpVtbl->get_Children(This,Children);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechPhraseProperty_get_Name_Proxy(
    ISpeechPhraseProperty* This,
    BSTR *Name);
void __RPC_STUB ISpeechPhraseProperty_get_Name_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseProperty_get_Id_Proxy(
    ISpeechPhraseProperty* This,
    LONG *Id);
void __RPC_STUB ISpeechPhraseProperty_get_Id_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseProperty_get_Value_Proxy(
    ISpeechPhraseProperty* This,
    VARIANT *Value);
void __RPC_STUB ISpeechPhraseProperty_get_Value_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseProperty_get_FirstElement_Proxy(
    ISpeechPhraseProperty* This,
    LONG *FirstElement);
void __RPC_STUB ISpeechPhraseProperty_get_FirstElement_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseProperty_get_NumberOfElements_Proxy(
    ISpeechPhraseProperty* This,
    LONG *NumberOfElements);
void __RPC_STUB ISpeechPhraseProperty_get_NumberOfElements_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseProperty_get_EngineConfidence_Proxy(
    ISpeechPhraseProperty* This,
    float *Confidence);
void __RPC_STUB ISpeechPhraseProperty_get_EngineConfidence_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseProperty_get_Confidence_Proxy(
    ISpeechPhraseProperty* This,
    SpeechEngineConfidence *Confidence);
void __RPC_STUB ISpeechPhraseProperty_get_Confidence_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseProperty_get_Parent_Proxy(
    ISpeechPhraseProperty* This,
    ISpeechPhraseProperty **ParentProperty);
void __RPC_STUB ISpeechPhraseProperty_get_Parent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseProperty_get_Children_Proxy(
    ISpeechPhraseProperty* This,
    ISpeechPhraseProperties **Children);
void __RPC_STUB ISpeechPhraseProperty_get_Children_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechPhraseProperty_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechPhraseProperties interface
 */
#ifndef __ISpeechPhraseProperties_INTERFACE_DEFINED__
#define __ISpeechPhraseProperties_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechPhraseProperties, 0x08166b47, 0x102e, 0x4b23, 0xa5,0x99, 0xbd,0xb9,0x8d,0xbf,0xd1,0xf4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("08166b47-102e-4b23-a599-bdb98dbfd1f4")
ISpeechPhraseProperties : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        LONG Index,
        ISpeechPhraseProperty **Property) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **EnumVARIANT) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechPhraseProperties, 0x08166b47, 0x102e, 0x4b23, 0xa5,0x99, 0xbd,0xb9,0x8d,0xbf,0xd1,0xf4)
#endif
#else
typedef struct ISpeechPhrasePropertiesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechPhraseProperties* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechPhraseProperties* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechPhraseProperties* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechPhraseProperties* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechPhraseProperties* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechPhraseProperties* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechPhraseProperties* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechPhraseProperties methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        ISpeechPhraseProperties* This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *Item)(
        ISpeechPhraseProperties* This,
        LONG Index,
        ISpeechPhraseProperty **Property);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        ISpeechPhraseProperties* This,
        IUnknown **EnumVARIANT);

    END_INTERFACE
} ISpeechPhrasePropertiesVtbl;
interface ISpeechPhraseProperties {
    CONST_VTBL ISpeechPhrasePropertiesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechPhraseProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechPhraseProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechPhraseProperties_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechPhraseProperties_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechPhraseProperties_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechPhraseProperties_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechPhraseProperties_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechPhraseProperties methods ***/
#define ISpeechPhraseProperties_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define ISpeechPhraseProperties_Item(This,Index,Property) (This)->lpVtbl->Item(This,Index,Property)
#define ISpeechPhraseProperties_get__NewEnum(This,EnumVARIANT) (This)->lpVtbl->get__NewEnum(This,EnumVARIANT)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechPhraseProperties_QueryInterface(ISpeechPhraseProperties* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechPhraseProperties_AddRef(ISpeechPhraseProperties* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechPhraseProperties_Release(ISpeechPhraseProperties* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechPhraseProperties_GetTypeInfoCount(ISpeechPhraseProperties* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechPhraseProperties_GetTypeInfo(ISpeechPhraseProperties* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechPhraseProperties_GetIDsOfNames(ISpeechPhraseProperties* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechPhraseProperties_Invoke(ISpeechPhraseProperties* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechPhraseProperties methods ***/
static FORCEINLINE HRESULT ISpeechPhraseProperties_get_Count(ISpeechPhraseProperties* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT ISpeechPhraseProperties_Item(ISpeechPhraseProperties* This,LONG Index,ISpeechPhraseProperty **Property) {
    return This->lpVtbl->Item(This,Index,Property);
}
static FORCEINLINE HRESULT ISpeechPhraseProperties_get__NewEnum(ISpeechPhraseProperties* This,IUnknown **EnumVARIANT) {
    return This->lpVtbl->get__NewEnum(This,EnumVARIANT);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechPhraseProperties_get_Count_Proxy(
    ISpeechPhraseProperties* This,
    LONG *Count);
void __RPC_STUB ISpeechPhraseProperties_get_Count_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseProperties_Item_Proxy(
    ISpeechPhraseProperties* This,
    LONG Index,
    ISpeechPhraseProperty **Property);
void __RPC_STUB ISpeechPhraseProperties_Item_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseProperties_get__NewEnum_Proxy(
    ISpeechPhraseProperties* This,
    IUnknown **EnumVARIANT);
void __RPC_STUB ISpeechPhraseProperties_get__NewEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechPhraseProperties_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechPhraseRule interface
 */
#ifndef __ISpeechPhraseRule_INTERFACE_DEFINED__
#define __ISpeechPhraseRule_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechPhraseRule, 0xa7bfe112, 0xa4a0, 0x48d9, 0xb6,0x02, 0xc3,0x13,0x84,0x3f,0x69,0x64);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a7bfe112-a4a0-48d9-b602-c313843f6964")
ISpeechPhraseRule : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Name(
        BSTR *Name) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Id(
        LONG *Id) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FirstElement(
        LONG *FirstElement) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_NumberOfElements(
        LONG *NumberOfElements) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Parent(
        ISpeechPhraseRule **Parent) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Children(
        ISpeechPhraseRules **Children) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Confidence(
        SpeechEngineConfidence *ActualConfidence) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_EngineConfidence(
        float *EngineConfidence) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechPhraseRule, 0xa7bfe112, 0xa4a0, 0x48d9, 0xb6,0x02, 0xc3,0x13,0x84,0x3f,0x69,0x64)
#endif
#else
typedef struct ISpeechPhraseRuleVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechPhraseRule* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechPhraseRule* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechPhraseRule* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechPhraseRule* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechPhraseRule* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechPhraseRule* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechPhraseRule* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechPhraseRule methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Name)(
        ISpeechPhraseRule* This,
        BSTR *Name);

    HRESULT (STDMETHODCALLTYPE *get_Id)(
        ISpeechPhraseRule* This,
        LONG *Id);

    HRESULT (STDMETHODCALLTYPE *get_FirstElement)(
        ISpeechPhraseRule* This,
        LONG *FirstElement);

    HRESULT (STDMETHODCALLTYPE *get_NumberOfElements)(
        ISpeechPhraseRule* This,
        LONG *NumberOfElements);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        ISpeechPhraseRule* This,
        ISpeechPhraseRule **Parent);

    HRESULT (STDMETHODCALLTYPE *get_Children)(
        ISpeechPhraseRule* This,
        ISpeechPhraseRules **Children);

    HRESULT (STDMETHODCALLTYPE *get_Confidence)(
        ISpeechPhraseRule* This,
        SpeechEngineConfidence *ActualConfidence);

    HRESULT (STDMETHODCALLTYPE *get_EngineConfidence)(
        ISpeechPhraseRule* This,
        float *EngineConfidence);

    END_INTERFACE
} ISpeechPhraseRuleVtbl;
interface ISpeechPhraseRule {
    CONST_VTBL ISpeechPhraseRuleVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechPhraseRule_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechPhraseRule_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechPhraseRule_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechPhraseRule_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechPhraseRule_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechPhraseRule_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechPhraseRule_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechPhraseRule methods ***/
#define ISpeechPhraseRule_get_Name(This,Name) (This)->lpVtbl->get_Name(This,Name)
#define ISpeechPhraseRule_get_Id(This,Id) (This)->lpVtbl->get_Id(This,Id)
#define ISpeechPhraseRule_get_FirstElement(This,FirstElement) (This)->lpVtbl->get_FirstElement(This,FirstElement)
#define ISpeechPhraseRule_get_NumberOfElements(This,NumberOfElements) (This)->lpVtbl->get_NumberOfElements(This,NumberOfElements)
#define ISpeechPhraseRule_get_Parent(This,Parent) (This)->lpVtbl->get_Parent(This,Parent)
#define ISpeechPhraseRule_get_Children(This,Children) (This)->lpVtbl->get_Children(This,Children)
#define ISpeechPhraseRule_get_Confidence(This,ActualConfidence) (This)->lpVtbl->get_Confidence(This,ActualConfidence)
#define ISpeechPhraseRule_get_EngineConfidence(This,EngineConfidence) (This)->lpVtbl->get_EngineConfidence(This,EngineConfidence)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechPhraseRule_QueryInterface(ISpeechPhraseRule* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechPhraseRule_AddRef(ISpeechPhraseRule* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechPhraseRule_Release(ISpeechPhraseRule* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechPhraseRule_GetTypeInfoCount(ISpeechPhraseRule* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechPhraseRule_GetTypeInfo(ISpeechPhraseRule* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechPhraseRule_GetIDsOfNames(ISpeechPhraseRule* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechPhraseRule_Invoke(ISpeechPhraseRule* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechPhraseRule methods ***/
static FORCEINLINE HRESULT ISpeechPhraseRule_get_Name(ISpeechPhraseRule* This,BSTR *Name) {
    return This->lpVtbl->get_Name(This,Name);
}
static FORCEINLINE HRESULT ISpeechPhraseRule_get_Id(ISpeechPhraseRule* This,LONG *Id) {
    return This->lpVtbl->get_Id(This,Id);
}
static FORCEINLINE HRESULT ISpeechPhraseRule_get_FirstElement(ISpeechPhraseRule* This,LONG *FirstElement) {
    return This->lpVtbl->get_FirstElement(This,FirstElement);
}
static FORCEINLINE HRESULT ISpeechPhraseRule_get_NumberOfElements(ISpeechPhraseRule* This,LONG *NumberOfElements) {
    return This->lpVtbl->get_NumberOfElements(This,NumberOfElements);
}
static FORCEINLINE HRESULT ISpeechPhraseRule_get_Parent(ISpeechPhraseRule* This,ISpeechPhraseRule **Parent) {
    return This->lpVtbl->get_Parent(This,Parent);
}
static FORCEINLINE HRESULT ISpeechPhraseRule_get_Children(ISpeechPhraseRule* This,ISpeechPhraseRules **Children) {
    return This->lpVtbl->get_Children(This,Children);
}
static FORCEINLINE HRESULT ISpeechPhraseRule_get_Confidence(ISpeechPhraseRule* This,SpeechEngineConfidence *ActualConfidence) {
    return This->lpVtbl->get_Confidence(This,ActualConfidence);
}
static FORCEINLINE HRESULT ISpeechPhraseRule_get_EngineConfidence(ISpeechPhraseRule* This,float *EngineConfidence) {
    return This->lpVtbl->get_EngineConfidence(This,EngineConfidence);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechPhraseRule_get_Name_Proxy(
    ISpeechPhraseRule* This,
    BSTR *Name);
void __RPC_STUB ISpeechPhraseRule_get_Name_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseRule_get_Id_Proxy(
    ISpeechPhraseRule* This,
    LONG *Id);
void __RPC_STUB ISpeechPhraseRule_get_Id_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseRule_get_FirstElement_Proxy(
    ISpeechPhraseRule* This,
    LONG *FirstElement);
void __RPC_STUB ISpeechPhraseRule_get_FirstElement_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseRule_get_NumberOfElements_Proxy(
    ISpeechPhraseRule* This,
    LONG *NumberOfElements);
void __RPC_STUB ISpeechPhraseRule_get_NumberOfElements_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseRule_get_Parent_Proxy(
    ISpeechPhraseRule* This,
    ISpeechPhraseRule **Parent);
void __RPC_STUB ISpeechPhraseRule_get_Parent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseRule_get_Children_Proxy(
    ISpeechPhraseRule* This,
    ISpeechPhraseRules **Children);
void __RPC_STUB ISpeechPhraseRule_get_Children_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseRule_get_Confidence_Proxy(
    ISpeechPhraseRule* This,
    SpeechEngineConfidence *ActualConfidence);
void __RPC_STUB ISpeechPhraseRule_get_Confidence_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseRule_get_EngineConfidence_Proxy(
    ISpeechPhraseRule* This,
    float *EngineConfidence);
void __RPC_STUB ISpeechPhraseRule_get_EngineConfidence_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechPhraseRule_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechPhraseRules interface
 */
#ifndef __ISpeechPhraseRules_INTERFACE_DEFINED__
#define __ISpeechPhraseRules_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechPhraseRules, 0x9047d593, 0x01dd, 0x4b72, 0x81,0xa3, 0xe4,0xa0,0xca,0x69,0xf4,0x07);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9047d593-01dd-4b72-81a3-e4a0ca69f407")
ISpeechPhraseRules : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        LONG Index,
        ISpeechPhraseRule **Rule) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **EnumVARIANT) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechPhraseRules, 0x9047d593, 0x01dd, 0x4b72, 0x81,0xa3, 0xe4,0xa0,0xca,0x69,0xf4,0x07)
#endif
#else
typedef struct ISpeechPhraseRulesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechPhraseRules* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechPhraseRules* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechPhraseRules* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechPhraseRules* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechPhraseRules* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechPhraseRules* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechPhraseRules* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechPhraseRules methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        ISpeechPhraseRules* This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *Item)(
        ISpeechPhraseRules* This,
        LONG Index,
        ISpeechPhraseRule **Rule);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        ISpeechPhraseRules* This,
        IUnknown **EnumVARIANT);

    END_INTERFACE
} ISpeechPhraseRulesVtbl;
interface ISpeechPhraseRules {
    CONST_VTBL ISpeechPhraseRulesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechPhraseRules_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechPhraseRules_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechPhraseRules_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechPhraseRules_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechPhraseRules_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechPhraseRules_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechPhraseRules_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechPhraseRules methods ***/
#define ISpeechPhraseRules_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define ISpeechPhraseRules_Item(This,Index,Rule) (This)->lpVtbl->Item(This,Index,Rule)
#define ISpeechPhraseRules_get__NewEnum(This,EnumVARIANT) (This)->lpVtbl->get__NewEnum(This,EnumVARIANT)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechPhraseRules_QueryInterface(ISpeechPhraseRules* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechPhraseRules_AddRef(ISpeechPhraseRules* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechPhraseRules_Release(ISpeechPhraseRules* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechPhraseRules_GetTypeInfoCount(ISpeechPhraseRules* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechPhraseRules_GetTypeInfo(ISpeechPhraseRules* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechPhraseRules_GetIDsOfNames(ISpeechPhraseRules* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechPhraseRules_Invoke(ISpeechPhraseRules* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechPhraseRules methods ***/
static FORCEINLINE HRESULT ISpeechPhraseRules_get_Count(ISpeechPhraseRules* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT ISpeechPhraseRules_Item(ISpeechPhraseRules* This,LONG Index,ISpeechPhraseRule **Rule) {
    return This->lpVtbl->Item(This,Index,Rule);
}
static FORCEINLINE HRESULT ISpeechPhraseRules_get__NewEnum(ISpeechPhraseRules* This,IUnknown **EnumVARIANT) {
    return This->lpVtbl->get__NewEnum(This,EnumVARIANT);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechPhraseRules_get_Count_Proxy(
    ISpeechPhraseRules* This,
    LONG *Count);
void __RPC_STUB ISpeechPhraseRules_get_Count_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseRules_Item_Proxy(
    ISpeechPhraseRules* This,
    LONG Index,
    ISpeechPhraseRule **Rule);
void __RPC_STUB ISpeechPhraseRules_Item_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhraseRules_get__NewEnum_Proxy(
    ISpeechPhraseRules* This,
    IUnknown **EnumVARIANT);
void __RPC_STUB ISpeechPhraseRules_get__NewEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechPhraseRules_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechLexiconWords interface
 */
#ifndef __ISpeechLexiconWords_INTERFACE_DEFINED__
#define __ISpeechLexiconWords_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechLexiconWords, 0x8d199862, 0x415e, 0x47d5, 0xac,0x4f, 0xfa,0xa6,0x08,0xb4,0x24,0xe6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8d199862-415e-47d5-ac4f-faa608b424e6")
ISpeechLexiconWords : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        LONG Index,
        ISpeechLexiconWord **Word) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **EnumVARIANT) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechLexiconWords, 0x8d199862, 0x415e, 0x47d5, 0xac,0x4f, 0xfa,0xa6,0x08,0xb4,0x24,0xe6)
#endif
#else
typedef struct ISpeechLexiconWordsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechLexiconWords* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechLexiconWords* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechLexiconWords* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechLexiconWords* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechLexiconWords* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechLexiconWords* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechLexiconWords* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechLexiconWords methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        ISpeechLexiconWords* This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *Item)(
        ISpeechLexiconWords* This,
        LONG Index,
        ISpeechLexiconWord **Word);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        ISpeechLexiconWords* This,
        IUnknown **EnumVARIANT);

    END_INTERFACE
} ISpeechLexiconWordsVtbl;
interface ISpeechLexiconWords {
    CONST_VTBL ISpeechLexiconWordsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechLexiconWords_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechLexiconWords_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechLexiconWords_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechLexiconWords_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechLexiconWords_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechLexiconWords_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechLexiconWords_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechLexiconWords methods ***/
#define ISpeechLexiconWords_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define ISpeechLexiconWords_Item(This,Index,Word) (This)->lpVtbl->Item(This,Index,Word)
#define ISpeechLexiconWords_get__NewEnum(This,EnumVARIANT) (This)->lpVtbl->get__NewEnum(This,EnumVARIANT)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechLexiconWords_QueryInterface(ISpeechLexiconWords* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechLexiconWords_AddRef(ISpeechLexiconWords* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechLexiconWords_Release(ISpeechLexiconWords* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechLexiconWords_GetTypeInfoCount(ISpeechLexiconWords* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechLexiconWords_GetTypeInfo(ISpeechLexiconWords* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechLexiconWords_GetIDsOfNames(ISpeechLexiconWords* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechLexiconWords_Invoke(ISpeechLexiconWords* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechLexiconWords methods ***/
static FORCEINLINE HRESULT ISpeechLexiconWords_get_Count(ISpeechLexiconWords* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT ISpeechLexiconWords_Item(ISpeechLexiconWords* This,LONG Index,ISpeechLexiconWord **Word) {
    return This->lpVtbl->Item(This,Index,Word);
}
static FORCEINLINE HRESULT ISpeechLexiconWords_get__NewEnum(ISpeechLexiconWords* This,IUnknown **EnumVARIANT) {
    return This->lpVtbl->get__NewEnum(This,EnumVARIANT);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechLexiconWords_get_Count_Proxy(
    ISpeechLexiconWords* This,
    LONG *Count);
void __RPC_STUB ISpeechLexiconWords_get_Count_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexiconWords_Item_Proxy(
    ISpeechLexiconWords* This,
    LONG Index,
    ISpeechLexiconWord **Word);
void __RPC_STUB ISpeechLexiconWords_Item_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexiconWords_get__NewEnum_Proxy(
    ISpeechLexiconWords* This,
    IUnknown **EnumVARIANT);
void __RPC_STUB ISpeechLexiconWords_get__NewEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechLexiconWords_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechLexicon interface
 */
#ifndef __ISpeechLexicon_INTERFACE_DEFINED__
#define __ISpeechLexicon_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechLexicon, 0x3da7627a, 0xc7ae, 0x4b23, 0x87,0x08, 0x63,0x8c,0x50,0x36,0x2c,0x25);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3da7627a-c7ae-4b23-8708-638c50362c25")
ISpeechLexicon : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_GenerationId(
        LONG *GenerationId) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetWords(
        SpeechLexiconType Flags = eLEXTYPE_USER | eLEXTYPE_APP,
        LONG *GenerationID = 0,
        ISpeechLexiconWords **Words) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddPronunciation(
        BSTR bstrWord,
        SpeechLanguageId LangId,
        SpeechPartOfSpeech PartOfSpeech = SPSUnknown,
        BSTR bstrPronunciation = "") = 0;

    virtual HRESULT STDMETHODCALLTYPE AddPronunciationByPhoneIds(
        BSTR bstrWord,
        SpeechLanguageId LangId,
        SpeechPartOfSpeech PartOfSpeech = SPSUnknown,
        VARIANT *PhoneIds = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemovePronunciation(
        BSTR bstrWord,
        SpeechLanguageId LangId,
        SpeechPartOfSpeech PartOfSpeech = SPSUnknown,
        BSTR bstrPronunciation = "") = 0;

    virtual HRESULT STDMETHODCALLTYPE RemovePronunciationByPhoneIds(
        BSTR bstrWord,
        SpeechLanguageId LangId,
        SpeechPartOfSpeech PartOfSpeech = SPSUnknown,
        VARIANT *PhoneIds = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPronunciations(
        BSTR bstrWord,
        SpeechLanguageId LangId = 0,
        SpeechLexiconType TypeFlags = eLEXTYPE_USER | eLEXTYPE_APP,
        ISpeechLexiconPronunciations **ppPronunciations) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGenerationChange(
        LONG *GenerationID,
        ISpeechLexiconWords **ppWords) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechLexicon, 0x3da7627a, 0xc7ae, 0x4b23, 0x87,0x08, 0x63,0x8c,0x50,0x36,0x2c,0x25)
#endif
#else
typedef struct ISpeechLexiconVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechLexicon* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechLexicon* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechLexicon* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechLexicon* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechLexicon* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechLexicon* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechLexicon* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechLexicon methods ***/
    HRESULT (STDMETHODCALLTYPE *get_GenerationId)(
        ISpeechLexicon* This,
        LONG *GenerationId);

    HRESULT (STDMETHODCALLTYPE *GetWords)(
        ISpeechLexicon* This,
        SpeechLexiconType Flags,
        LONG *GenerationID,
        ISpeechLexiconWords **Words);

    HRESULT (STDMETHODCALLTYPE *AddPronunciation)(
        ISpeechLexicon* This,
        BSTR bstrWord,
        SpeechLanguageId LangId,
        SpeechPartOfSpeech PartOfSpeech,
        BSTR bstrPronunciation);

    HRESULT (STDMETHODCALLTYPE *AddPronunciationByPhoneIds)(
        ISpeechLexicon* This,
        BSTR bstrWord,
        SpeechLanguageId LangId,
        SpeechPartOfSpeech PartOfSpeech,
        VARIANT *PhoneIds);

    HRESULT (STDMETHODCALLTYPE *RemovePronunciation)(
        ISpeechLexicon* This,
        BSTR bstrWord,
        SpeechLanguageId LangId,
        SpeechPartOfSpeech PartOfSpeech,
        BSTR bstrPronunciation);

    HRESULT (STDMETHODCALLTYPE *RemovePronunciationByPhoneIds)(
        ISpeechLexicon* This,
        BSTR bstrWord,
        SpeechLanguageId LangId,
        SpeechPartOfSpeech PartOfSpeech,
        VARIANT *PhoneIds);

    HRESULT (STDMETHODCALLTYPE *GetPronunciations)(
        ISpeechLexicon* This,
        BSTR bstrWord,
        SpeechLanguageId LangId,
        SpeechLexiconType TypeFlags,
        ISpeechLexiconPronunciations **ppPronunciations);

    HRESULT (STDMETHODCALLTYPE *GetGenerationChange)(
        ISpeechLexicon* This,
        LONG *GenerationID,
        ISpeechLexiconWords **ppWords);

    END_INTERFACE
} ISpeechLexiconVtbl;
interface ISpeechLexicon {
    CONST_VTBL ISpeechLexiconVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechLexicon_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechLexicon_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechLexicon_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechLexicon_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechLexicon_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechLexicon_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechLexicon_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechLexicon methods ***/
#define ISpeechLexicon_get_GenerationId(This,GenerationId) (This)->lpVtbl->get_GenerationId(This,GenerationId)
#define ISpeechLexicon_GetWords(This,Flags,GenerationID,Words) (This)->lpVtbl->GetWords(This,Flags,GenerationID,Words)
#define ISpeechLexicon_AddPronunciation(This,bstrWord,LangId,PartOfSpeech,bstrPronunciation) (This)->lpVtbl->AddPronunciation(This,bstrWord,LangId,PartOfSpeech,bstrPronunciation)
#define ISpeechLexicon_AddPronunciationByPhoneIds(This,bstrWord,LangId,PartOfSpeech,PhoneIds) (This)->lpVtbl->AddPronunciationByPhoneIds(This,bstrWord,LangId,PartOfSpeech,PhoneIds)
#define ISpeechLexicon_RemovePronunciation(This,bstrWord,LangId,PartOfSpeech,bstrPronunciation) (This)->lpVtbl->RemovePronunciation(This,bstrWord,LangId,PartOfSpeech,bstrPronunciation)
#define ISpeechLexicon_RemovePronunciationByPhoneIds(This,bstrWord,LangId,PartOfSpeech,PhoneIds) (This)->lpVtbl->RemovePronunciationByPhoneIds(This,bstrWord,LangId,PartOfSpeech,PhoneIds)
#define ISpeechLexicon_GetPronunciations(This,bstrWord,LangId,TypeFlags,ppPronunciations) (This)->lpVtbl->GetPronunciations(This,bstrWord,LangId,TypeFlags,ppPronunciations)
#define ISpeechLexicon_GetGenerationChange(This,GenerationID,ppWords) (This)->lpVtbl->GetGenerationChange(This,GenerationID,ppWords)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechLexicon_QueryInterface(ISpeechLexicon* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechLexicon_AddRef(ISpeechLexicon* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechLexicon_Release(ISpeechLexicon* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechLexicon_GetTypeInfoCount(ISpeechLexicon* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechLexicon_GetTypeInfo(ISpeechLexicon* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechLexicon_GetIDsOfNames(ISpeechLexicon* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechLexicon_Invoke(ISpeechLexicon* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechLexicon methods ***/
static FORCEINLINE HRESULT ISpeechLexicon_get_GenerationId(ISpeechLexicon* This,LONG *GenerationId) {
    return This->lpVtbl->get_GenerationId(This,GenerationId);
}
static FORCEINLINE HRESULT ISpeechLexicon_GetWords(ISpeechLexicon* This,SpeechLexiconType Flags,LONG *GenerationID,ISpeechLexiconWords **Words) {
    return This->lpVtbl->GetWords(This,Flags,GenerationID,Words);
}
static FORCEINLINE HRESULT ISpeechLexicon_AddPronunciation(ISpeechLexicon* This,BSTR bstrWord,SpeechLanguageId LangId,SpeechPartOfSpeech PartOfSpeech,BSTR bstrPronunciation) {
    return This->lpVtbl->AddPronunciation(This,bstrWord,LangId,PartOfSpeech,bstrPronunciation);
}
static FORCEINLINE HRESULT ISpeechLexicon_AddPronunciationByPhoneIds(ISpeechLexicon* This,BSTR bstrWord,SpeechLanguageId LangId,SpeechPartOfSpeech PartOfSpeech,VARIANT *PhoneIds) {
    return This->lpVtbl->AddPronunciationByPhoneIds(This,bstrWord,LangId,PartOfSpeech,PhoneIds);
}
static FORCEINLINE HRESULT ISpeechLexicon_RemovePronunciation(ISpeechLexicon* This,BSTR bstrWord,SpeechLanguageId LangId,SpeechPartOfSpeech PartOfSpeech,BSTR bstrPronunciation) {
    return This->lpVtbl->RemovePronunciation(This,bstrWord,LangId,PartOfSpeech,bstrPronunciation);
}
static FORCEINLINE HRESULT ISpeechLexicon_RemovePronunciationByPhoneIds(ISpeechLexicon* This,BSTR bstrWord,SpeechLanguageId LangId,SpeechPartOfSpeech PartOfSpeech,VARIANT *PhoneIds) {
    return This->lpVtbl->RemovePronunciationByPhoneIds(This,bstrWord,LangId,PartOfSpeech,PhoneIds);
}
static FORCEINLINE HRESULT ISpeechLexicon_GetPronunciations(ISpeechLexicon* This,BSTR bstrWord,SpeechLanguageId LangId,SpeechLexiconType TypeFlags,ISpeechLexiconPronunciations **ppPronunciations) {
    return This->lpVtbl->GetPronunciations(This,bstrWord,LangId,TypeFlags,ppPronunciations);
}
static FORCEINLINE HRESULT ISpeechLexicon_GetGenerationChange(ISpeechLexicon* This,LONG *GenerationID,ISpeechLexiconWords **ppWords) {
    return This->lpVtbl->GetGenerationChange(This,GenerationID,ppWords);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechLexicon_get_GenerationId_Proxy(
    ISpeechLexicon* This,
    LONG *GenerationId);
void __RPC_STUB ISpeechLexicon_get_GenerationId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexicon_GetWords_Proxy(
    ISpeechLexicon* This,
    SpeechLexiconType Flags,
    LONG *GenerationID,
    ISpeechLexiconWords **Words);
void __RPC_STUB ISpeechLexicon_GetWords_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexicon_AddPronunciation_Proxy(
    ISpeechLexicon* This,
    BSTR bstrWord,
    SpeechLanguageId LangId,
    SpeechPartOfSpeech PartOfSpeech,
    BSTR bstrPronunciation);
void __RPC_STUB ISpeechLexicon_AddPronunciation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexicon_AddPronunciationByPhoneIds_Proxy(
    ISpeechLexicon* This,
    BSTR bstrWord,
    SpeechLanguageId LangId,
    SpeechPartOfSpeech PartOfSpeech,
    VARIANT *PhoneIds);
void __RPC_STUB ISpeechLexicon_AddPronunciationByPhoneIds_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexicon_RemovePronunciation_Proxy(
    ISpeechLexicon* This,
    BSTR bstrWord,
    SpeechLanguageId LangId,
    SpeechPartOfSpeech PartOfSpeech,
    BSTR bstrPronunciation);
void __RPC_STUB ISpeechLexicon_RemovePronunciation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexicon_RemovePronunciationByPhoneIds_Proxy(
    ISpeechLexicon* This,
    BSTR bstrWord,
    SpeechLanguageId LangId,
    SpeechPartOfSpeech PartOfSpeech,
    VARIANT *PhoneIds);
void __RPC_STUB ISpeechLexicon_RemovePronunciationByPhoneIds_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexicon_GetPronunciations_Proxy(
    ISpeechLexicon* This,
    BSTR bstrWord,
    SpeechLanguageId LangId,
    SpeechLexiconType TypeFlags,
    ISpeechLexiconPronunciations **ppPronunciations);
void __RPC_STUB ISpeechLexicon_GetPronunciations_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexicon_GetGenerationChange_Proxy(
    ISpeechLexicon* This,
    LONG *GenerationID,
    ISpeechLexiconWords **ppWords);
void __RPC_STUB ISpeechLexicon_GetGenerationChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechLexicon_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechLexiconWord interface
 */
#ifndef __ISpeechLexiconWord_INTERFACE_DEFINED__
#define __ISpeechLexiconWord_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechLexiconWord, 0x4e5b933c, 0xc9be, 0x48ed, 0x88,0x42, 0x1e,0xe5,0x1b,0xb1,0xd4,0xff);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4e5b933c-c9be-48ed-8842-1ee51bb1d4ff")
ISpeechLexiconWord : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_LangId(
        SpeechLanguageId *LangId) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Type(
        SpeechWordType *WordType) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Word(
        BSTR *Word) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Pronunciations(
        ISpeechLexiconPronunciations **Pronunciations) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechLexiconWord, 0x4e5b933c, 0xc9be, 0x48ed, 0x88,0x42, 0x1e,0xe5,0x1b,0xb1,0xd4,0xff)
#endif
#else
typedef struct ISpeechLexiconWordVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechLexiconWord* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechLexiconWord* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechLexiconWord* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechLexiconWord* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechLexiconWord* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechLexiconWord* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechLexiconWord* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechLexiconWord methods ***/
    HRESULT (STDMETHODCALLTYPE *get_LangId)(
        ISpeechLexiconWord* This,
        SpeechLanguageId *LangId);

    HRESULT (STDMETHODCALLTYPE *get_Type)(
        ISpeechLexiconWord* This,
        SpeechWordType *WordType);

    HRESULT (STDMETHODCALLTYPE *get_Word)(
        ISpeechLexiconWord* This,
        BSTR *Word);

    HRESULT (STDMETHODCALLTYPE *get_Pronunciations)(
        ISpeechLexiconWord* This,
        ISpeechLexiconPronunciations **Pronunciations);

    END_INTERFACE
} ISpeechLexiconWordVtbl;
interface ISpeechLexiconWord {
    CONST_VTBL ISpeechLexiconWordVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechLexiconWord_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechLexiconWord_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechLexiconWord_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechLexiconWord_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechLexiconWord_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechLexiconWord_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechLexiconWord_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechLexiconWord methods ***/
#define ISpeechLexiconWord_get_LangId(This,LangId) (This)->lpVtbl->get_LangId(This,LangId)
#define ISpeechLexiconWord_get_Type(This,WordType) (This)->lpVtbl->get_Type(This,WordType)
#define ISpeechLexiconWord_get_Word(This,Word) (This)->lpVtbl->get_Word(This,Word)
#define ISpeechLexiconWord_get_Pronunciations(This,Pronunciations) (This)->lpVtbl->get_Pronunciations(This,Pronunciations)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechLexiconWord_QueryInterface(ISpeechLexiconWord* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechLexiconWord_AddRef(ISpeechLexiconWord* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechLexiconWord_Release(ISpeechLexiconWord* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechLexiconWord_GetTypeInfoCount(ISpeechLexiconWord* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechLexiconWord_GetTypeInfo(ISpeechLexiconWord* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechLexiconWord_GetIDsOfNames(ISpeechLexiconWord* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechLexiconWord_Invoke(ISpeechLexiconWord* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechLexiconWord methods ***/
static FORCEINLINE HRESULT ISpeechLexiconWord_get_LangId(ISpeechLexiconWord* This,SpeechLanguageId *LangId) {
    return This->lpVtbl->get_LangId(This,LangId);
}
static FORCEINLINE HRESULT ISpeechLexiconWord_get_Type(ISpeechLexiconWord* This,SpeechWordType *WordType) {
    return This->lpVtbl->get_Type(This,WordType);
}
static FORCEINLINE HRESULT ISpeechLexiconWord_get_Word(ISpeechLexiconWord* This,BSTR *Word) {
    return This->lpVtbl->get_Word(This,Word);
}
static FORCEINLINE HRESULT ISpeechLexiconWord_get_Pronunciations(ISpeechLexiconWord* This,ISpeechLexiconPronunciations **Pronunciations) {
    return This->lpVtbl->get_Pronunciations(This,Pronunciations);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechLexiconWord_get_LangId_Proxy(
    ISpeechLexiconWord* This,
    SpeechLanguageId *LangId);
void __RPC_STUB ISpeechLexiconWord_get_LangId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexiconWord_get_Type_Proxy(
    ISpeechLexiconWord* This,
    SpeechWordType *WordType);
void __RPC_STUB ISpeechLexiconWord_get_Type_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexiconWord_get_Word_Proxy(
    ISpeechLexiconWord* This,
    BSTR *Word);
void __RPC_STUB ISpeechLexiconWord_get_Word_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexiconWord_get_Pronunciations_Proxy(
    ISpeechLexiconWord* This,
    ISpeechLexiconPronunciations **Pronunciations);
void __RPC_STUB ISpeechLexiconWord_get_Pronunciations_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechLexiconWord_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechLexiconPronunciations interface
 */
#ifndef __ISpeechLexiconPronunciations_INTERFACE_DEFINED__
#define __ISpeechLexiconPronunciations_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechLexiconPronunciations, 0x72829128, 0x5682, 0x4704, 0xa0,0xd4, 0x3e,0x2b,0xb6,0xf2,0xea,0xd3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("72829128-5682-4704-a0d4-3e2bb6f2ead3")
ISpeechLexiconPronunciations : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        LONG Index,
        ISpeechLexiconPronunciation **Pronunciation) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **EnumVARIANT) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechLexiconPronunciations, 0x72829128, 0x5682, 0x4704, 0xa0,0xd4, 0x3e,0x2b,0xb6,0xf2,0xea,0xd3)
#endif
#else
typedef struct ISpeechLexiconPronunciationsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechLexiconPronunciations* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechLexiconPronunciations* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechLexiconPronunciations* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechLexiconPronunciations* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechLexiconPronunciations* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechLexiconPronunciations* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechLexiconPronunciations* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechLexiconPronunciations methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        ISpeechLexiconPronunciations* This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *Item)(
        ISpeechLexiconPronunciations* This,
        LONG Index,
        ISpeechLexiconPronunciation **Pronunciation);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        ISpeechLexiconPronunciations* This,
        IUnknown **EnumVARIANT);

    END_INTERFACE
} ISpeechLexiconPronunciationsVtbl;
interface ISpeechLexiconPronunciations {
    CONST_VTBL ISpeechLexiconPronunciationsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechLexiconPronunciations_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechLexiconPronunciations_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechLexiconPronunciations_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechLexiconPronunciations_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechLexiconPronunciations_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechLexiconPronunciations_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechLexiconPronunciations_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechLexiconPronunciations methods ***/
#define ISpeechLexiconPronunciations_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define ISpeechLexiconPronunciations_Item(This,Index,Pronunciation) (This)->lpVtbl->Item(This,Index,Pronunciation)
#define ISpeechLexiconPronunciations_get__NewEnum(This,EnumVARIANT) (This)->lpVtbl->get__NewEnum(This,EnumVARIANT)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechLexiconPronunciations_QueryInterface(ISpeechLexiconPronunciations* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechLexiconPronunciations_AddRef(ISpeechLexiconPronunciations* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechLexiconPronunciations_Release(ISpeechLexiconPronunciations* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechLexiconPronunciations_GetTypeInfoCount(ISpeechLexiconPronunciations* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechLexiconPronunciations_GetTypeInfo(ISpeechLexiconPronunciations* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechLexiconPronunciations_GetIDsOfNames(ISpeechLexiconPronunciations* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechLexiconPronunciations_Invoke(ISpeechLexiconPronunciations* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechLexiconPronunciations methods ***/
static FORCEINLINE HRESULT ISpeechLexiconPronunciations_get_Count(ISpeechLexiconPronunciations* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT ISpeechLexiconPronunciations_Item(ISpeechLexiconPronunciations* This,LONG Index,ISpeechLexiconPronunciation **Pronunciation) {
    return This->lpVtbl->Item(This,Index,Pronunciation);
}
static FORCEINLINE HRESULT ISpeechLexiconPronunciations_get__NewEnum(ISpeechLexiconPronunciations* This,IUnknown **EnumVARIANT) {
    return This->lpVtbl->get__NewEnum(This,EnumVARIANT);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechLexiconPronunciations_get_Count_Proxy(
    ISpeechLexiconPronunciations* This,
    LONG *Count);
void __RPC_STUB ISpeechLexiconPronunciations_get_Count_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexiconPronunciations_Item_Proxy(
    ISpeechLexiconPronunciations* This,
    LONG Index,
    ISpeechLexiconPronunciation **Pronunciation);
void __RPC_STUB ISpeechLexiconPronunciations_Item_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexiconPronunciations_get__NewEnum_Proxy(
    ISpeechLexiconPronunciations* This,
    IUnknown **EnumVARIANT);
void __RPC_STUB ISpeechLexiconPronunciations_get__NewEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechLexiconPronunciations_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechLexiconPronunciation interface
 */
#ifndef __ISpeechLexiconPronunciation_INTERFACE_DEFINED__
#define __ISpeechLexiconPronunciation_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechLexiconPronunciation, 0x95252c5d, 0x9e43, 0x4f4a, 0x98,0x99, 0x48,0xee,0x73,0x35,0x2f,0x9f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("95252c5d-9e43-4f4a-9899-48ee73352f9f")
ISpeechLexiconPronunciation : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Type(
        SpeechLexiconType *LexiconType) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LangId(
        SpeechLanguageId *LangId) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PartOfSpeech(
        SpeechPartOfSpeech *PartOfSpeech) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PhoneIds(
        VARIANT *PhoneIds) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Symbolic(
        BSTR *Symbolic) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechLexiconPronunciation, 0x95252c5d, 0x9e43, 0x4f4a, 0x98,0x99, 0x48,0xee,0x73,0x35,0x2f,0x9f)
#endif
#else
typedef struct ISpeechLexiconPronunciationVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechLexiconPronunciation* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechLexiconPronunciation* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechLexiconPronunciation* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechLexiconPronunciation* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechLexiconPronunciation* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechLexiconPronunciation* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechLexiconPronunciation* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechLexiconPronunciation methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Type)(
        ISpeechLexiconPronunciation* This,
        SpeechLexiconType *LexiconType);

    HRESULT (STDMETHODCALLTYPE *get_LangId)(
        ISpeechLexiconPronunciation* This,
        SpeechLanguageId *LangId);

    HRESULT (STDMETHODCALLTYPE *get_PartOfSpeech)(
        ISpeechLexiconPronunciation* This,
        SpeechPartOfSpeech *PartOfSpeech);

    HRESULT (STDMETHODCALLTYPE *get_PhoneIds)(
        ISpeechLexiconPronunciation* This,
        VARIANT *PhoneIds);

    HRESULT (STDMETHODCALLTYPE *get_Symbolic)(
        ISpeechLexiconPronunciation* This,
        BSTR *Symbolic);

    END_INTERFACE
} ISpeechLexiconPronunciationVtbl;
interface ISpeechLexiconPronunciation {
    CONST_VTBL ISpeechLexiconPronunciationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechLexiconPronunciation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechLexiconPronunciation_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechLexiconPronunciation_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechLexiconPronunciation_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechLexiconPronunciation_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechLexiconPronunciation_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechLexiconPronunciation_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechLexiconPronunciation methods ***/
#define ISpeechLexiconPronunciation_get_Type(This,LexiconType) (This)->lpVtbl->get_Type(This,LexiconType)
#define ISpeechLexiconPronunciation_get_LangId(This,LangId) (This)->lpVtbl->get_LangId(This,LangId)
#define ISpeechLexiconPronunciation_get_PartOfSpeech(This,PartOfSpeech) (This)->lpVtbl->get_PartOfSpeech(This,PartOfSpeech)
#define ISpeechLexiconPronunciation_get_PhoneIds(This,PhoneIds) (This)->lpVtbl->get_PhoneIds(This,PhoneIds)
#define ISpeechLexiconPronunciation_get_Symbolic(This,Symbolic) (This)->lpVtbl->get_Symbolic(This,Symbolic)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechLexiconPronunciation_QueryInterface(ISpeechLexiconPronunciation* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechLexiconPronunciation_AddRef(ISpeechLexiconPronunciation* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechLexiconPronunciation_Release(ISpeechLexiconPronunciation* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechLexiconPronunciation_GetTypeInfoCount(ISpeechLexiconPronunciation* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechLexiconPronunciation_GetTypeInfo(ISpeechLexiconPronunciation* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechLexiconPronunciation_GetIDsOfNames(ISpeechLexiconPronunciation* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechLexiconPronunciation_Invoke(ISpeechLexiconPronunciation* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechLexiconPronunciation methods ***/
static FORCEINLINE HRESULT ISpeechLexiconPronunciation_get_Type(ISpeechLexiconPronunciation* This,SpeechLexiconType *LexiconType) {
    return This->lpVtbl->get_Type(This,LexiconType);
}
static FORCEINLINE HRESULT ISpeechLexiconPronunciation_get_LangId(ISpeechLexiconPronunciation* This,SpeechLanguageId *LangId) {
    return This->lpVtbl->get_LangId(This,LangId);
}
static FORCEINLINE HRESULT ISpeechLexiconPronunciation_get_PartOfSpeech(ISpeechLexiconPronunciation* This,SpeechPartOfSpeech *PartOfSpeech) {
    return This->lpVtbl->get_PartOfSpeech(This,PartOfSpeech);
}
static FORCEINLINE HRESULT ISpeechLexiconPronunciation_get_PhoneIds(ISpeechLexiconPronunciation* This,VARIANT *PhoneIds) {
    return This->lpVtbl->get_PhoneIds(This,PhoneIds);
}
static FORCEINLINE HRESULT ISpeechLexiconPronunciation_get_Symbolic(ISpeechLexiconPronunciation* This,BSTR *Symbolic) {
    return This->lpVtbl->get_Symbolic(This,Symbolic);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechLexiconPronunciation_get_Type_Proxy(
    ISpeechLexiconPronunciation* This,
    SpeechLexiconType *LexiconType);
void __RPC_STUB ISpeechLexiconPronunciation_get_Type_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexiconPronunciation_get_LangId_Proxy(
    ISpeechLexiconPronunciation* This,
    SpeechLanguageId *LangId);
void __RPC_STUB ISpeechLexiconPronunciation_get_LangId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexiconPronunciation_get_PartOfSpeech_Proxy(
    ISpeechLexiconPronunciation* This,
    SpeechPartOfSpeech *PartOfSpeech);
void __RPC_STUB ISpeechLexiconPronunciation_get_PartOfSpeech_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexiconPronunciation_get_PhoneIds_Proxy(
    ISpeechLexiconPronunciation* This,
    VARIANT *PhoneIds);
void __RPC_STUB ISpeechLexiconPronunciation_get_PhoneIds_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechLexiconPronunciation_get_Symbolic_Proxy(
    ISpeechLexiconPronunciation* This,
    BSTR *Symbolic);
void __RPC_STUB ISpeechLexiconPronunciation_get_Symbolic_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechLexiconPronunciation_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpeechPhoneConverter interface
 */
#ifndef __ISpeechPhoneConverter_INTERFACE_DEFINED__
#define __ISpeechPhoneConverter_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpeechPhoneConverter, 0xc3e4f353, 0x433f, 0x43d6, 0x89,0xa1, 0x6a,0x62,0xa7,0x05,0x4c,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c3e4f353-433f-43d6-89a1-6a62a7054c3d")
ISpeechPhoneConverter : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_LanguageId(
        SpeechLanguageId *LanguageId) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_LanguageId(
        SpeechLanguageId LanguageId) = 0;

    virtual HRESULT STDMETHODCALLTYPE PhoneToId(
        const BSTR Phonemes,
        VARIANT *IdArray) = 0;

    virtual HRESULT STDMETHODCALLTYPE IdToPhone(
        const VARIANT IdArray,
        BSTR *Phonemes) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpeechPhoneConverter, 0xc3e4f353, 0x433f, 0x43d6, 0x89,0xa1, 0x6a,0x62,0xa7,0x05,0x4c,0x3d)
#endif
#else
typedef struct ISpeechPhoneConverterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpeechPhoneConverter* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpeechPhoneConverter* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpeechPhoneConverter* This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        ISpeechPhoneConverter* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        ISpeechPhoneConverter* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        ISpeechPhoneConverter* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        ISpeechPhoneConverter* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** ISpeechPhoneConverter methods ***/
    HRESULT (STDMETHODCALLTYPE *get_LanguageId)(
        ISpeechPhoneConverter* This,
        SpeechLanguageId *LanguageId);

    HRESULT (STDMETHODCALLTYPE *put_LanguageId)(
        ISpeechPhoneConverter* This,
        SpeechLanguageId LanguageId);

    HRESULT (STDMETHODCALLTYPE *PhoneToId)(
        ISpeechPhoneConverter* This,
        const BSTR Phonemes,
        VARIANT *IdArray);

    HRESULT (STDMETHODCALLTYPE *IdToPhone)(
        ISpeechPhoneConverter* This,
        const VARIANT IdArray,
        BSTR *Phonemes);

    END_INTERFACE
} ISpeechPhoneConverterVtbl;
interface ISpeechPhoneConverter {
    CONST_VTBL ISpeechPhoneConverterVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpeechPhoneConverter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpeechPhoneConverter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpeechPhoneConverter_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define ISpeechPhoneConverter_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define ISpeechPhoneConverter_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define ISpeechPhoneConverter_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define ISpeechPhoneConverter_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** ISpeechPhoneConverter methods ***/
#define ISpeechPhoneConverter_get_LanguageId(This,LanguageId) (This)->lpVtbl->get_LanguageId(This,LanguageId)
#define ISpeechPhoneConverter_put_LanguageId(This,LanguageId) (This)->lpVtbl->put_LanguageId(This,LanguageId)
#define ISpeechPhoneConverter_PhoneToId(This,Phonemes,IdArray) (This)->lpVtbl->PhoneToId(This,Phonemes,IdArray)
#define ISpeechPhoneConverter_IdToPhone(This,IdArray,Phonemes) (This)->lpVtbl->IdToPhone(This,IdArray,Phonemes)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISpeechPhoneConverter_QueryInterface(ISpeechPhoneConverter* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISpeechPhoneConverter_AddRef(ISpeechPhoneConverter* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISpeechPhoneConverter_Release(ISpeechPhoneConverter* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT ISpeechPhoneConverter_GetTypeInfoCount(ISpeechPhoneConverter* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT ISpeechPhoneConverter_GetTypeInfo(ISpeechPhoneConverter* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT ISpeechPhoneConverter_GetIDsOfNames(ISpeechPhoneConverter* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT ISpeechPhoneConverter_Invoke(ISpeechPhoneConverter* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** ISpeechPhoneConverter methods ***/
static FORCEINLINE HRESULT ISpeechPhoneConverter_get_LanguageId(ISpeechPhoneConverter* This,SpeechLanguageId *LanguageId) {
    return This->lpVtbl->get_LanguageId(This,LanguageId);
}
static FORCEINLINE HRESULT ISpeechPhoneConverter_put_LanguageId(ISpeechPhoneConverter* This,SpeechLanguageId LanguageId) {
    return This->lpVtbl->put_LanguageId(This,LanguageId);
}
static FORCEINLINE HRESULT ISpeechPhoneConverter_PhoneToId(ISpeechPhoneConverter* This,const BSTR Phonemes,VARIANT *IdArray) {
    return This->lpVtbl->PhoneToId(This,Phonemes,IdArray);
}
static FORCEINLINE HRESULT ISpeechPhoneConverter_IdToPhone(ISpeechPhoneConverter* This,const VARIANT IdArray,BSTR *Phonemes) {
    return This->lpVtbl->IdToPhone(This,IdArray,Phonemes);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISpeechPhoneConverter_get_LanguageId_Proxy(
    ISpeechPhoneConverter* This,
    SpeechLanguageId *LanguageId);
void __RPC_STUB ISpeechPhoneConverter_get_LanguageId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhoneConverter_put_LanguageId_Proxy(
    ISpeechPhoneConverter* This,
    SpeechLanguageId LanguageId);
void __RPC_STUB ISpeechPhoneConverter_put_LanguageId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhoneConverter_PhoneToId_Proxy(
    ISpeechPhoneConverter* This,
    const BSTR Phonemes,
    VARIANT *IdArray);
void __RPC_STUB ISpeechPhoneConverter_PhoneToId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISpeechPhoneConverter_IdToPhone_Proxy(
    ISpeechPhoneConverter* This,
    const VARIANT IdArray,
    BSTR *Phonemes);
void __RPC_STUB ISpeechPhoneConverter_IdToPhone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISpeechPhoneConverter_INTERFACE_DEFINED__ */

/*****************************************************************************
 * SpNotifyTranslator coclass
 */

DEFINE_GUID(CLSID_SpNotifyTranslator, 0xe2ae5372, 0x5d40, 0x11d2, 0x96,0x0e, 0x00,0xc0,0x4f,0x8e,0xe6,0x28);

#ifdef __cplusplus
class DECLSPEC_UUID("e2ae5372-5d40-11d2-960e-00c04f8ee628") SpNotifyTranslator;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpNotifyTranslator, 0xe2ae5372, 0x5d40, 0x11d2, 0x96,0x0e, 0x00,0xc0,0x4f,0x8e,0xe6,0x28)
#endif
#endif

/*****************************************************************************
 * SpObjectTokenCategory coclass
 */

DEFINE_GUID(CLSID_SpObjectTokenCategory, 0xa910187f, 0x0c7a, 0x45ac, 0x92,0xcc, 0x59,0xed,0xaf,0xb7,0x7b,0x53);

#ifdef __cplusplus
class DECLSPEC_UUID("a910187f-0c7a-45ac-92cc-59edafb77b53") SpObjectTokenCategory;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpObjectTokenCategory, 0xa910187f, 0x0c7a, 0x45ac, 0x92,0xcc, 0x59,0xed,0xaf,0xb7,0x7b,0x53)
#endif
#endif

/*****************************************************************************
 * SpObjectToken coclass
 */

DEFINE_GUID(CLSID_SpObjectToken, 0xef411752, 0x3736, 0x4cb4, 0x9c,0x8c, 0x8e,0xf4,0xcc,0xb5,0x8e,0xfe);

#ifdef __cplusplus
class DECLSPEC_UUID("ef411752-3736-4cb4-9c8c-8ef4ccb58efe") SpObjectToken;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpObjectToken, 0xef411752, 0x3736, 0x4cb4, 0x9c,0x8c, 0x8e,0xf4,0xcc,0xb5,0x8e,0xfe)
#endif
#endif

/*****************************************************************************
 * SpResourceManager coclass
 */

DEFINE_GUID(CLSID_SpResourceManager, 0x96749373, 0x3391, 0x11d2, 0x9e,0xe3, 0x00,0xc0,0x4f,0x79,0x73,0x96);

#ifdef __cplusplus
class DECLSPEC_UUID("96749373-3391-11d2-9ee3-00c04f797396") SpResourceManager;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpResourceManager, 0x96749373, 0x3391, 0x11d2, 0x9e,0xe3, 0x00,0xc0,0x4f,0x79,0x73,0x96)
#endif
#endif

/*****************************************************************************
 * SpStreamFormatConverter coclass
 */

DEFINE_GUID(CLSID_SpStreamFormatConverter, 0x7013943a, 0xe2ec, 0x11d2, 0xa0,0x86, 0x00,0xc0,0x4f,0x8e,0xf9,0xb5);

#ifdef __cplusplus
class DECLSPEC_UUID("7013943a-e2ec-11d2-a086-00c04f8ef9b5") SpStreamFormatConverter;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpStreamFormatConverter, 0x7013943a, 0xe2ec, 0x11d2, 0xa0,0x86, 0x00,0xc0,0x4f,0x8e,0xf9,0xb5)
#endif
#endif

/*****************************************************************************
 * SpMMAudioEnum coclass
 */

DEFINE_GUID(CLSID_SpMMAudioEnum, 0xab1890a0, 0xe91f, 0x11d2, 0xbb,0x91, 0x00,0xc0,0x4f,0x8e,0xe6,0xc0);

#ifdef __cplusplus
class DECLSPEC_UUID("ab1890a0-e91f-11d2-bb91-00c04f8ee6c0") SpMMAudioEnum;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpMMAudioEnum, 0xab1890a0, 0xe91f, 0x11d2, 0xbb,0x91, 0x00,0xc0,0x4f,0x8e,0xe6,0xc0)
#endif
#endif

/*****************************************************************************
 * SpMMAudioIn coclass
 */

DEFINE_GUID(CLSID_SpMMAudioIn, 0xcf3d2e50, 0x53f2, 0x11d2, 0x96,0x0c, 0x00,0xc0,0x4f,0x8e,0xe6,0x28);

#ifdef __cplusplus
class DECLSPEC_UUID("cf3d2e50-53f2-11d2-960c-00c04f8ee628") SpMMAudioIn;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpMMAudioIn, 0xcf3d2e50, 0x53f2, 0x11d2, 0x96,0x0c, 0x00,0xc0,0x4f,0x8e,0xe6,0x28)
#endif
#endif

/*****************************************************************************
 * SpMMAudioOut coclass
 */

DEFINE_GUID(CLSID_SpMMAudioOut, 0xa8c680eb, 0x3d32, 0x11d2, 0x9e,0xe7, 0x00,0xc0,0x4f,0x79,0x73,0x96);

#ifdef __cplusplus
class DECLSPEC_UUID("a8c680eb-3d32-11d2-9ee7-00c04f797396") SpMMAudioOut;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpMMAudioOut, 0xa8c680eb, 0x3d32, 0x11d2, 0x9e,0xe7, 0x00,0xc0,0x4f,0x79,0x73,0x96)
#endif
#endif

/*****************************************************************************
 * SpStream coclass
 */

DEFINE_GUID(CLSID_SpStream, 0x715d9c59, 0x4442, 0x11d2, 0x96,0x05, 0x00,0xc0,0x4f,0x8e,0xe6,0x28);

#ifdef __cplusplus
class DECLSPEC_UUID("715d9c59-4442-11d2-9605-00c04f8ee628") SpStream;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpStream, 0x715d9c59, 0x4442, 0x11d2, 0x96,0x05, 0x00,0xc0,0x4f,0x8e,0xe6,0x28)
#endif
#endif

/*****************************************************************************
 * SpVoice coclass
 */

DEFINE_GUID(CLSID_SpVoice, 0x96749377, 0x3391, 0x11d2, 0x9e,0xe3, 0x00,0xc0,0x4f,0x79,0x73,0x96);

#ifdef __cplusplus
class DECLSPEC_UUID("96749377-3391-11d2-9ee3-00c04f797396") SpVoice;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpVoice, 0x96749377, 0x3391, 0x11d2, 0x9e,0xe3, 0x00,0xc0,0x4f,0x79,0x73,0x96)
#endif
#endif

/*****************************************************************************
 * SpSharedRecoContext coclass
 */

DEFINE_GUID(CLSID_SpSharedRecoContext, 0x47206204, 0x5eca, 0x11d2, 0x96,0x0f, 0x00,0xc0,0x4f,0x8e,0xe6,0x28);

#ifdef __cplusplus
class DECLSPEC_UUID("47206204-5eca-11d2-960f-00c04f8ee628") SpSharedRecoContext;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpSharedRecoContext, 0x47206204, 0x5eca, 0x11d2, 0x96,0x0f, 0x00,0xc0,0x4f,0x8e,0xe6,0x28)
#endif
#endif

/*****************************************************************************
 * SpInprocRecognizer coclass
 */

DEFINE_GUID(CLSID_SpInprocRecognizer, 0x41b89b6b, 0x9399, 0x11d2, 0x96,0x23, 0x00,0xc0,0x4f,0x8e,0xe6,0x28);

#ifdef __cplusplus
class DECLSPEC_UUID("41b89b6b-9399-11d2-9623-00c04f8ee628") SpInprocRecognizer;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpInprocRecognizer, 0x41b89b6b, 0x9399, 0x11d2, 0x96,0x23, 0x00,0xc0,0x4f,0x8e,0xe6,0x28)
#endif
#endif

/*****************************************************************************
 * SpSharedRecognizer coclass
 */

DEFINE_GUID(CLSID_SpSharedRecognizer, 0x3bee4890, 0x4fe9, 0x4a37, 0x8c,0x1e, 0x5e,0x7e,0x12,0x79,0x1c,0x1f);

#ifdef __cplusplus
class DECLSPEC_UUID("3bee4890-4fe9-4a37-8c1e-5e7e12791c1f") SpSharedRecognizer;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpSharedRecognizer, 0x3bee4890, 0x4fe9, 0x4a37, 0x8c,0x1e, 0x5e,0x7e,0x12,0x79,0x1c,0x1f)
#endif
#endif

/*****************************************************************************
 * SpLexicon coclass
 */

DEFINE_GUID(CLSID_SpLexicon, 0x0655e396, 0x25d0, 0x11d3, 0x9c,0x26, 0x00,0xc0,0x4f,0x8e,0xf8,0x7c);

#ifdef __cplusplus
class DECLSPEC_UUID("0655e396-25d0-11d3-9c26-00c04f8ef87c") SpLexicon;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpLexicon, 0x0655e396, 0x25d0, 0x11d3, 0x9c,0x26, 0x00,0xc0,0x4f,0x8e,0xf8,0x7c)
#endif
#endif

/*****************************************************************************
 * SpUnCompressedLexicon coclass
 */

DEFINE_GUID(CLSID_SpUnCompressedLexicon, 0xc9e37c15, 0xdf92, 0x4727, 0x85,0xd6, 0x72,0xe5,0xee,0xb6,0x99,0x5a);

#ifdef __cplusplus
class DECLSPEC_UUID("c9e37c15-df92-4727-85d6-72e5eeb6995a") SpUnCompressedLexicon;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpUnCompressedLexicon, 0xc9e37c15, 0xdf92, 0x4727, 0x85,0xd6, 0x72,0xe5,0xee,0xb6,0x99,0x5a)
#endif
#endif

/*****************************************************************************
 * SpCompressedLexicon coclass
 */

DEFINE_GUID(CLSID_SpCompressedLexicon, 0x90903716, 0x2f42, 0x11d3, 0x9c,0x26, 0x00,0xc0,0x4f,0x8e,0xf8,0x7c);

#ifdef __cplusplus
class DECLSPEC_UUID("90903716-2f42-11d3-9c26-00c04f8ef87c") SpCompressedLexicon;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpCompressedLexicon, 0x90903716, 0x2f42, 0x11d3, 0x9c,0x26, 0x00,0xc0,0x4f,0x8e,0xf8,0x7c)
#endif
#endif

/*****************************************************************************
 * SpPhoneConverter coclass
 */

DEFINE_GUID(CLSID_SpPhoneConverter, 0x9185f743, 0x1143, 0x4c28, 0x86,0xb5, 0xbf,0xf1,0x4f,0x20,0xe5,0xc8);

#ifdef __cplusplus
class DECLSPEC_UUID("9185f743-1143-4c28-86b5-bff14f20e5c8") SpPhoneConverter;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpPhoneConverter, 0x9185f743, 0x1143, 0x4c28, 0x86,0xb5, 0xbf,0xf1,0x4f,0x20,0xe5,0xc8)
#endif
#endif

/*****************************************************************************
 * SpNullPhoneConverter coclass
 */

DEFINE_GUID(CLSID_SpNullPhoneConverter, 0x455f24e9, 0x7396, 0x4a16, 0x97,0x15, 0x7c,0x0f,0xdb,0xe3,0xef,0xe3);

#ifdef __cplusplus
class DECLSPEC_UUID("455f24e9-7396-4a16-9715-7c0fdbe3efe3") SpNullPhoneConverter;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpNullPhoneConverter, 0x455f24e9, 0x7396, 0x4a16, 0x97,0x15, 0x7c,0x0f,0xdb,0xe3,0xef,0xe3)
#endif
#endif

/*****************************************************************************
 * SpTextSelectionInformation coclass
 */

DEFINE_GUID(CLSID_SpTextSelectionInformation, 0x0f92030a, 0xcbfd, 0x4ab8, 0xa1,0x64, 0xff,0x59,0x85,0x54,0x7f,0xf6);

#ifdef __cplusplus
class DECLSPEC_UUID("0f92030a-cbfd-4ab8-a164-ff5985547ff6") SpTextSelectionInformation;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpTextSelectionInformation, 0x0f92030a, 0xcbfd, 0x4ab8, 0xa1,0x64, 0xff,0x59,0x85,0x54,0x7f,0xf6)
#endif
#endif

/*****************************************************************************
 * SpPhraseInfoBuilder coclass
 */

DEFINE_GUID(CLSID_SpPhraseInfoBuilder, 0xc23fc28d, 0xc55f, 0x4720, 0x8b,0x32, 0x91,0xf7,0x3c,0x2b,0xd5,0xd1);

#ifdef __cplusplus
class DECLSPEC_UUID("c23fc28d-c55f-4720-8b32-91f73c2bd5d1") SpPhraseInfoBuilder;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpPhraseInfoBuilder, 0xc23fc28d, 0xc55f, 0x4720, 0x8b,0x32, 0x91,0xf7,0x3c,0x2b,0xd5,0xd1)
#endif
#endif

/*****************************************************************************
 * SpAudioFormat coclass
 */

DEFINE_GUID(CLSID_SpAudioFormat, 0x9ef96870, 0xe160, 0x4792, 0x82,0x0d, 0x48,0xcf,0x06,0x49,0xe4,0xec);

#ifdef __cplusplus
class DECLSPEC_UUID("9ef96870-e160-4792-820d-48cf0649e4ec") SpAudioFormat;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpAudioFormat, 0x9ef96870, 0xe160, 0x4792, 0x82,0x0d, 0x48,0xcf,0x06,0x49,0xe4,0xec)
#endif
#endif

/*****************************************************************************
 * SpWaveFormatEx coclass
 */

DEFINE_GUID(CLSID_SpWaveFormatEx, 0xc79a574c, 0x63be, 0x44b9, 0x80,0x1f, 0x28,0x3f,0x87,0xf8,0x98,0xbe);

#ifdef __cplusplus
class DECLSPEC_UUID("c79a574c-63be-44b9-801f-283f87f898be") SpWaveFormatEx;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpWaveFormatEx, 0xc79a574c, 0x63be, 0x44b9, 0x80,0x1f, 0x28,0x3f,0x87,0xf8,0x98,0xbe)
#endif
#endif

/*****************************************************************************
 * SpInProcRecoContext coclass
 */

DEFINE_GUID(CLSID_SpInProcRecoContext, 0x73ad6842, 0xace0, 0x45e8, 0xa4,0xdd, 0x87,0x95,0x88,0x1a,0x2c,0x2a);

#ifdef __cplusplus
class DECLSPEC_UUID("73ad6842-ace0-45e8-a4dd-8795881a2c2a") SpInProcRecoContext;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpInProcRecoContext, 0x73ad6842, 0xace0, 0x45e8, 0xa4,0xdd, 0x87,0x95,0x88,0x1a,0x2c,0x2a)
#endif
#endif

/*****************************************************************************
 * SpCustomStream coclass
 */

DEFINE_GUID(CLSID_SpCustomStream, 0x8dbef13f, 0x1948, 0x4aa8, 0x8c,0xf0, 0x04,0x8e,0xeb,0xed,0x95,0xd8);

#ifdef __cplusplus
class DECLSPEC_UUID("8dbef13f-1948-4aa8-8cf0-048eebed95d8") SpCustomStream;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpCustomStream, 0x8dbef13f, 0x1948, 0x4aa8, 0x8c,0xf0, 0x04,0x8e,0xeb,0xed,0x95,0xd8)
#endif
#endif

/*****************************************************************************
 * SpFileStream coclass
 */

DEFINE_GUID(CLSID_SpFileStream, 0x947812b3, 0x2ae1, 0x4644, 0xba,0x86, 0x9e,0x90,0xde,0xd7,0xec,0x91);

#ifdef __cplusplus
class DECLSPEC_UUID("947812b3-2ae1-4644-ba86-9e90ded7ec91") SpFileStream;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpFileStream, 0x947812b3, 0x2ae1, 0x4644, 0xba,0x86, 0x9e,0x90,0xde,0xd7,0xec,0x91)
#endif
#endif

/*****************************************************************************
 * SpMemoryStream coclass
 */

DEFINE_GUID(CLSID_SpMemoryStream, 0x5fb7ef7d, 0xdff4, 0x468a, 0xb6,0xb7, 0x2f,0xcb,0xd1,0x88,0xf9,0x94);

#ifdef __cplusplus
class DECLSPEC_UUID("5fb7ef7d-dff4-468a-b6b7-2fcbd188f994") SpMemoryStream;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SpMemoryStream, 0x5fb7ef7d, 0xdff4, 0x468a, 0xb6,0xb7, 0x2f,0xcb,0xd1,0x88,0xf9,0x94)
#endif
#endif

/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);
ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __sapi51_h__ */
