summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKirill Volinsky <mataes2007@gmail.com>2013-10-22 19:34:47 +0000
committerKirill Volinsky <mataes2007@gmail.com>2013-10-22 19:34:47 +0000
commit988f901cef93a35325e274596f3264e3a0217a37 (patch)
tree375d7b3d7825ed59e1722b7694406ed830af8ca9
parent4164b967c13c87fd2a5a3459b037a6a823faa872 (diff)
sdk added for compilation
git-svn-id: http://svn.miranda-ng.org/main/trunk@6594 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
-rw-r--r--plugins/WinterSpeak/WinterSpeak_10.vcxproj24
-rw-r--r--plugins/WinterSpeak/WinterSpeak_11.vcxproj24
-rw-r--r--plugins/WinterSpeak/src/SAPI 4.0/Include/speech.h6635
-rw-r--r--plugins/WinterSpeak/src/SAPI 4.0/Lib/spchwrap.libbin0 -> 976098 bytes
4 files changed, 6659 insertions, 24 deletions
diff --git a/plugins/WinterSpeak/WinterSpeak_10.vcxproj b/plugins/WinterSpeak/WinterSpeak_10.vcxproj
index 3eab337727..7bb5c33b6f 100644
--- a/plugins/WinterSpeak/WinterSpeak_10.vcxproj
+++ b/plugins/WinterSpeak/WinterSpeak_10.vcxproj
@@ -77,7 +77,7 @@
<WarningLevel>Level3</WarningLevel>
<MinimalRebuild>true</MinimalRebuild>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;C:\Program Files (x86)\Microsoft Speech SDK\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;src\SAPI 4.0\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PrecompiledHeader>Use</PrecompiledHeader>
@@ -92,9 +92,9 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib;src\SAPI 4.0\Lib</AdditionalLibraryDirectories>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
- <AdditionalDependencies>C:\Program Files (x86)\Microsoft Speech SDK\Lib\spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -103,7 +103,7 @@
<FunctionLevelLinking>false</FunctionLevelLinking>
<Optimization>Disabled</Optimization>
<WarningLevel>Level3</WarningLevel>
- <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;C:\Program Files (x86)\Microsoft Speech SDK\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;src\SAPI 4.0\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PrecompiledHeader>Use</PrecompiledHeader>
@@ -118,9 +118,9 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib;src\SAPI 4.0\Lib</AdditionalLibraryDirectories>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
- <AdditionalDependencies>C:\Program Files (x86)\Microsoft Speech SDK\Lib\spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -130,7 +130,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<Optimization>Full</Optimization>
<WarningLevel>Level3</WarningLevel>
- <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;C:\Program Files (x86)\Microsoft Speech SDK\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;src\SAPI 4.0\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<PrecompiledHeader>Use</PrecompiledHeader>
@@ -144,13 +144,13 @@
<LinkDLL>true</LinkDLL>
<SubSystem>Windows</SubSystem>
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib;src\SAPI 4.0\Lib</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<AdditionalOptions>/PDBALTPATH:%_PDB%</AdditionalOptions>
- <AdditionalDependencies>C:\Program Files (x86)\Microsoft Speech SDK\Lib\spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -160,7 +160,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<Optimization>Full</Optimization>
<WarningLevel>Level3</WarningLevel>
- <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;C:\Program Files (x86)\Microsoft Speech SDK\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;src\SAPI 4.0\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<PrecompiledHeader>Use</PrecompiledHeader>
@@ -174,13 +174,13 @@
<LinkDLL>true</LinkDLL>
<SubSystem>Windows</SubSystem>
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib;src\SAPI 4.0\Lib</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<AdditionalOptions>/PDBALTPATH:%_PDB%</AdditionalOptions>
- <AdditionalDependencies>C:\Program Files (x86)\Microsoft Speech SDK\Lib\spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/plugins/WinterSpeak/WinterSpeak_11.vcxproj b/plugins/WinterSpeak/WinterSpeak_11.vcxproj
index 88f78e071a..b65b726e9c 100644
--- a/plugins/WinterSpeak/WinterSpeak_11.vcxproj
+++ b/plugins/WinterSpeak/WinterSpeak_11.vcxproj
@@ -81,7 +81,7 @@
<WarningLevel>Level3</WarningLevel>
<MinimalRebuild>true</MinimalRebuild>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;C:\Program Files (x86)\Microsoft Speech SDK\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;src\SAPI 4.0\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PrecompiledHeader>Use</PrecompiledHeader>
@@ -96,10 +96,10 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin11\lib</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin11\lib;src\SAPI 4.0\Lib</AdditionalLibraryDirectories>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
- <AdditionalDependencies>C:\Program Files (x86)\Microsoft Speech SDK\Lib\spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -108,7 +108,7 @@
<FunctionLevelLinking>false</FunctionLevelLinking>
<Optimization>Disabled</Optimization>
<WarningLevel>Level3</WarningLevel>
- <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;C:\Program Files (x86)\Microsoft Speech SDK\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;src\SAPI 4.0\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PrecompiledHeader>Use</PrecompiledHeader>
@@ -123,9 +123,9 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin11\lib</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin11\lib;src\SAPI 4.0\Lib</AdditionalLibraryDirectories>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
- <AdditionalDependencies>C:\Program Files (x86)\Microsoft Speech SDK\Lib\spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -135,7 +135,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<Optimization>Full</Optimization>
<WarningLevel>Level3</WarningLevel>
- <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;C:\Program Files (x86)\Microsoft Speech SDK\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;src\SAPI 4.0\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<PrecompiledHeader>Use</PrecompiledHeader>
@@ -149,12 +149,12 @@
<LinkDLL>true</LinkDLL>
<SubSystem>Windows</SubSystem>
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin11\lib</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin11\lib;src\SAPI 4.0\Lib</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
- <AdditionalDependencies>C:\Program Files (x86)\Microsoft Speech SDK\Lib\spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -164,7 +164,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<Optimization>Full</Optimization>
<WarningLevel>Level3</WarningLevel>
- <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;C:\Program Files (x86)\Microsoft Speech SDK\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;src\SAPI 4.0\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<PrecompiledHeader>Use</PrecompiledHeader>
@@ -178,12 +178,12 @@
<LinkDLL>true</LinkDLL>
<SubSystem>Windows</SubSystem>
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin11\lib</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin11\lib;src\SAPI 4.0\Lib</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
- <AdditionalDependencies>C:\Program Files (x86)\Microsoft Speech SDK\Lib\spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>spchwrap.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/plugins/WinterSpeak/src/SAPI 4.0/Include/speech.h b/plugins/WinterSpeak/src/SAPI 4.0/Include/speech.h
new file mode 100644
index 0000000000..93c3ea844d
--- /dev/null
+++ b/plugins/WinterSpeak/src/SAPI 4.0/Include/speech.h
@@ -0,0 +1,6635 @@
+/************************************************************************
+Speech.H - Header file to use the Microsoft Speech APIs.
+
+Copyright 1994 -1998 by Microsoft corporation.All rights reserved.
+*/
+
+#ifndef _SPEECH_
+#define _SPEECH_
+
+// Disable the warning for zero-length arrays in structures
+#pragma warning(disable:4200)
+
+
+/************************************************************************
+Defines common to all of the speech APIs.
+*/
+
+// Application Speech API Compiler Defines _S_UNICODE
+// -----------------------------------------------------------------------------
+// ANSI ANSI <none> undefined
+// ANSI Unicode _S_UNICODE defined
+// Unicode ANSI (UNICODE || _UNICODE) && _S_ANSI undefined
+// Unicode Unicode (UNICODE || _UNICODE) defined
+
+#if (defined(UNICODE) || defined(_UNICODE)) && !defined(_S_ANSI)
+#ifndef _S_UNICODE
+#define _S_UNICODE
+#endif
+#endif
+
+/************************************************************************
+defines */
+#define SVFN_LEN (262)
+#define LANG_LEN (64)
+#define EI_TITLESIZE (128)
+#define EI_DESCSIZE (512)
+#define EI_FIXSIZE (512)
+#define SVPI_MFGLEN (64)
+#define SVPI_PRODLEN (64)
+#define SVPI_COMPLEN (64)
+#define SVPI_COPYRIGHTLEN (128)
+#define SVI_MFGLEN (SVPI_MFGLEN)
+#define SETBIT(x) ((DWORD)1 << (x))
+
+
+// Error Macros
+#define FACILITY_SPEECH (FACILITY_ITF)
+#define SPEECHERROR(x) MAKE_SCODE(SEVERITY_ERROR, FACILITY_SPEECH, (x)+0x200)
+#define AUDERROR(x) MAKE_SCODE(SEVERITY_ERROR, FACILITY_SPEECH, (x)+0x300)
+#define SRWARNING(x) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_SPEECH, (x)+0x400)
+#define SRERROR(x) MAKE_SCODE(SEVERITY_ERROR, FACILITY_SPEECH, (x)+0x400)
+#define TTSERROR(x) MAKE_SCODE(SEVERITY_ERROR, FACILITY_SPEECH, (x)+0x500)
+#define VCMDERROR(x) MAKE_SCODE(SEVERITY_ERROR, FACILITY_SPEECH, (x)+0x600)
+#define VTXTERROR(x) MAKE_SCODE(SEVERITY_ERROR, FACILITY_SPEECH, (x)+0x700)
+#define LEXERROR(x) MAKE_SCODE(SEVERITY_ERROR, FACILITY_SPEECH, (x)+0x800)
+#define LEXWARNING(x) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_SPEECH, (x)+0x800)
+
+// Audio Errors
+#define AUDERR_NONE S_OK // 0x00000000
+#define AUDERR_BADDEVICEID AUDERROR(1) // 0x80040301
+#define AUDERR_NEEDWAVEFORMAT AUDERROR(2) // 0x80040302
+#define AUDERR_NOTSUPPORTED E_NOTIMPL // 0x80004001
+#define AUDERR_NOTENOUGHDATA SPEECHERROR(1) // 0x80040201
+#define AUDERR_NOTPLAYING AUDERROR(6) // 0x80040306
+#define AUDERR_INVALIDPARAM E_INVALIDARG // 0x80070057
+#define AUDERR_WAVEFORMATNOTSUPPORTED SPEECHERROR(2) // 0x80040202
+#define AUDERR_WAVEDEVICEBUSY SPEECHERROR(3) // 0x80040203
+#define AUDERR_WAVEDEVNOTSUPPORTED AUDERROR(18) // 0x80040312
+#define AUDERR_NOTRECORDING AUDERROR(19) // 0x80040313
+#define AUDERR_INVALIDFLAG SPEECHERROR(4) // 0x80040204
+#define AUDERR_INVALIDHANDLE E_HANDLE // 0x80070006
+#define AUDERR_NODRIVER AUDERROR(23) // 0x80040317
+#define AUDERR_HANDLEBUSY AUDERROR(24) // 0x80040318
+#define AUDERR_INVALIDNOTIFYSINK AUDERROR(25) // 0x80040319
+#define AUDERR_WAVENOTENABLED AUDERROR(26) // 0x8004031A
+#define AUDERR_ALREADYCLAIMED AUDERROR(29) // 0x8004031D
+#define AUDERR_NOTCLAIMED AUDERROR(30) // 0x8004031E
+#define AUDERR_STILLPLAYING AUDERROR(31) // 0x8004031F
+#define AUDERR_ALREADYSTARTED AUDERROR(32) // 0x80040320
+#define AUDERR_SYNCNOTALLOWED AUDERROR(33) // 0x80040321
+
+// Speech Recognition Warnings
+#define SRWARN_BAD_LIST_PRONUNCIATION SRWARNING(1)
+
+// Speech Recognition Errors
+#define SRERR_NONE S_OK // 0x00000000
+#define SRERR_OUTOFDISK SPEECHERROR(5) // 0x80040205
+#define SRERR_NOTSUPPORTED E_NOTIMPL // 0x80004001
+#define SRERR_NOTENOUGHDATA AUDERR_NOTENOUGHDATA // 0x80040201
+#define SRERR_VALUEOUTOFRANGE E_UNEXPECTED // 0x8000FFFF
+#define SRERR_GRAMMARTOOCOMPLEX SRERROR(6) // 0x80040406
+#define SRERR_GRAMMARWRONGTYPE SRERROR(7) // 0x80040407
+#define SRERR_INVALIDWINDOW OLE_E_INVALIDHWND // 0x8004000F
+#define SRERR_INVALIDPARAM E_INVALIDARG // 0x80070057
+#define SRERR_INVALIDMODE SPEECHERROR(6) // 0x80040206
+#define SRERR_TOOMANYGRAMMARS SRERROR(11) // 0x8004040B
+#define SRERR_INVALIDLIST SPEECHERROR(7) // 0x80040207
+#define SRERR_WAVEDEVICEBUSY AUDERR_WAVEDEVICEBUSY // 0x80040203
+#define SRERR_WAVEFORMATNOTSUPPORTED AUDERR_WAVEFORMATNOTSUPPORTED // 0x80040202
+#define SRERR_INVALIDCHAR SPEECHERROR(8) // 0x80040208
+#define SRERR_GRAMTOOCOMPLEX SRERR_GRAMMARTOOCOMPLEX // 0x80040406
+#define SRERR_GRAMTOOLARGE SRERROR(17) // 0x80040411
+#define SRERR_INVALIDINTERFACE E_NOINTERFACE // 0x80004002
+#define SRERR_INVALIDKEY SPEECHERROR(9) // 0x80040209
+#define SRERR_INVALIDFLAG AUDERR_INVALIDFLAG // 0x80040204
+#define SRERR_GRAMMARERROR SRERROR(22) // 0x80040416
+#define SRERR_INVALIDRULE SRERROR(23) // 0x80040417
+#define SRERR_RULEALREADYACTIVE SRERROR(24) // 0x80040418
+#define SRERR_RULENOTACTIVE SRERROR(25) // 0x80040419
+#define SRERR_NOUSERSELECTED SRERROR(26) // 0x8004041A
+#define SRERR_BAD_PRONUNCIATION SRERROR(27) // 0x8004041B
+#define SRERR_DATAFILEERROR SRERROR(28) // 0x8004041C
+#define SRERR_GRAMMARALREADYACTIVE SRERROR(29) // 0x8004041D
+#define SRERR_GRAMMARNOTACTIVE SRERROR(30) // 0x8004041E
+#define SRERR_GLOBALGRAMMARALREADYACTIVE SRERROR(31) // 0x8004041F
+#define SRERR_LANGUAGEMISMATCH SRERROR(32) // 0x80040420
+#define SRERR_MULTIPLELANG SRERROR(33) // 0x80040421
+#define SRERR_LDGRAMMARNOWORDS SRERROR(34) // 0x80040422
+#define SRERR_NOLEXICON SRERROR(35) // 0x80040423
+#define SRERR_SPEAKEREXISTS SRERROR(36) // 0x80040424
+#define SRERR_GRAMMARENGINEMISMATCH SRERROR(37) // 0x80040425
+#define SRERR_BOOKMARKEXISTS SRERROR(38) // 0x80040426
+#define SRERR_BOOKMARKDOESNOTEXIST SRERROR(39) // 0x80040427
+#define SRERR_MICWIZARDCANCELED SRERROR(40) // 0x80040428
+#define SRERR_WORDTOOLONG SRERROR(41) // 0x80040429
+#define SRERR_BAD_WORD SRERROR(42) // 0x8004042A
+#define E_WRONGTYPE SPEECHERROR(13) // 0x8004020C
+#define E_BUFFERTOOSMALL SPEECHERROR(14) // 0x8004020D
+
+
+// Text to Speech Errors
+#define TTSERR_NONE S_OK // 0x00000000
+#define TTSERR_INVALIDINTERFACE E_NOINTERFACE // 0x80004002
+#define TTSERR_OUTOFDISK SRERR_OUTOFDISK // 0x80040205
+#define TTSERR_NOTSUPPORTED E_NOTIMPL // 0x80004001
+#define TTSERR_VALUEOUTOFRANGE E_UNEXPECTED // 0x8000FFFF
+#define TTSERR_INVALIDWINDOW OLE_E_INVALIDHWND // 0x8004000F
+#define TTSERR_INVALIDPARAM E_INVALIDARG // 0x80070057
+#define TTSERR_INVALIDMODE SRERR_INVALIDMODE // 0x80040206
+#define TTSERR_INVALIDKEY SRERR_INVALIDKEY // 0x80040209
+#define TTSERR_WAVEFORMATNOTSUPPORTED AUDERR_WAVEFORMATNOTSUPPORTED // 0x80040202
+#define TTSERR_INVALIDCHAR SRERR_INVALIDCHAR // 0x80040208
+#define TTSERR_QUEUEFULL SPEECHERROR(10) // 0x8004020A
+#define TTSERR_WAVEDEVICEBUSY AUDERR_WAVEDEVICEBUSY // 0x80040203
+#define TTSERR_NOTPAUSED TTSERROR(1) // 0x80040501
+#define TTSERR_ALREADYPAUSED TTSERROR(2) // 0x80040502
+
+
+// Voice Command Errors
+
+/*
+ * Everything worked
+ */
+#define VCMDERR_NONE S_OK // 0x00000000
+
+/*
+ * Voice Commands could not allocate memory
+ */
+#define VCMDERR_OUTOFMEM E_OUTOFMEMORY // 0x8007000E
+
+/*
+ * Voice Commands could not store/retrieve a command set from the database
+ */
+#define VCMDERR_OUTOFDISK SRERR_OUTOFDISK // 0x80040205
+
+/*
+ * Function not implemented
+ */
+#define VCMDERR_NOTSUPPORTED E_NOTIMPL // 0x80004001
+
+/*
+ * A parameter was passed that was out of the ranged of accepted values
+ */
+#define VCMDERR_VALUEOUTOFRANGE E_UNEXPECTED // 0x8000FFFF
+
+/*
+ * A menu was too complex to compile a context-free grammar
+ */
+#define VCMDERR_MENUTOOCOMPLEX VCMDERROR(0x06) // 0x80040606
+
+/*
+ * Language mismatch between the speech recognition mode and menu trying
+ * to create
+ */
+#define VCMDERR_MENUWRONGLANGUAGE VCMDERROR(0x07) // 0x80040607
+
+/*
+ * An invalid window handle was passed to Voice Commands
+ */
+#define VCMDERR_INVALIDWINDOW OLE_E_INVALIDHWND // 0x8004000F
+
+/*
+ * Voice Commands detected a bad function parameter
+ */
+#define VCMDERR_INVALIDPARAM E_INVALIDARG // 0x80070057
+
+/*
+ * This function cannot be completed right now, usually when trying to do
+ * some operation while no speech recognition site is established
+ */
+#define VCMDERR_INVALIDMODE SRERR_INVALIDMODE // 0x80040206
+
+/*
+ * There are too many Voice Commands menu
+ */ // 0x8004060B
+#define VCMDERR_TOOMANYMENUS VCMDERROR(0x0B)
+
+/*
+ * Invalid list passed to ListSet/ListGet
+ */
+#define VCMDERR_INVALIDLIST SRERR_INVALIDLIST // 0x80040207
+
+/*
+ * Trying to open an existing menu that is not in the Voice Commands database
+ */
+#define VCMDERR_MENUDOESNOTEXIST VCMDERROR(0x0D) // 0x8004060D
+
+/*
+ * The function could not be completed because the menu is actively
+ * listening for commands
+ */
+#define VCMDERR_MENUACTIVE VCMDERROR(0x0E) // 0x8004060E
+
+/*
+ * No speech recognition engine is started
+ */
+#define VCMDERR_NOENGINE VCMDERROR(0x0F) // 0x8004060F
+
+/*
+ * Voice Commands could not acquire a Grammar interface from the speech
+ * recognition engine
+ */
+#define VCMDERR_NOGRAMMARINTERFACE VCMDERROR(0x10) // 0x80040610
+
+/*
+ * Voice Commands could not acquire a Find interface from the speech
+ * recognition engine
+ */
+#define VCMDERR_NOFINDINTERFACE VCMDERROR(0x11) // 0x80040611
+
+/*
+ * Voice Commands could not create a speech recognition enumerator
+ */
+#define VCMDERR_CANTCREATESRENUM VCMDERROR(0x12) // 0x80040612
+
+/*
+ * Voice Commands could get the appropriate site information to start a
+ * speech recognition engine
+ */
+#define VCMDERR_NOSITEINFO VCMDERROR(0x13) // 0x80040613
+
+/*
+ * Voice Commands could not find a speech recognition engine
+ */
+#define VCMDERR_SRFINDFAILED VCMDERROR(0x14) // 0x80040614
+
+/*
+ * Voice Commands could not create an audio source object
+ */
+#define VCMDERR_CANTCREATEAUDIODEVICE VCMDERROR(0x15) // 0x80040615
+
+/*
+ * Voice Commands could not set the appropriate device number in the
+ * audio source object
+ */
+#define VCMDERR_CANTSETDEVICE VCMDERROR(0x16) // 0x80040616
+
+/*
+ * Voice Commands could not select a speech recognition engine. Usually the
+ * error will occur when Voice Commands has enumerated and found an
+ * appropriate speech recognition engine, then it is not able to actually
+ * select/start the engine. There are different reasons that the engine won't
+ * start, but the most common is that there is no wave in device.
+ */
+#define VCMDERR_CANTSELECTENGINE VCMDERROR(0x17) // 0x80040617
+
+/*
+ * Voice Commands could not create a notfication sink for engine
+ * notifications
+ */
+#define VCMDERR_CANTCREATENOTIFY VCMDERROR(0x18) // 0x80040618
+
+/*
+ * Voice Commands could not create internal data structures.
+ */
+#define VCMDERR_CANTCREATEDATASTRUCTURES VCMDERROR(0x19) // 0x80040619
+
+/*
+ * Voice Commands could not initialize internal data structures
+ */
+#define VCMDERR_CANTINITDATASTRUCTURES VCMDERROR(0x1A) // 0x8004061A
+
+/*
+ * The menu does not have an entry in the Voice Commands cache
+ */
+#define VCMDERR_NOCACHEDATA VCMDERROR(0x1B) // 0x8004061B
+
+/*
+ * The menu does not have commands
+ */
+#define VCMDERR_NOCOMMANDS VCMDERROR(0x1C) // 0x8004061C
+
+/*
+ * Voice Commands cannot extract unique words needed for the engine grammar
+ */
+#define VCMDERR_CANTXTRACTWORDS VCMDERROR(0x1D) // 0x8004061D
+
+/*
+ * Voice Commands could not get the command set database name
+ */
+#define VCMDERR_CANTGETDBNAME VCMDERROR(0x1E) // 0x8004061E
+
+/*
+ * Voice Commands could not create a registry key
+ */
+#define VCMDERR_CANTCREATEKEY VCMDERROR(0x1F) // 0x8004061F
+
+/*
+ * Voice Commands could not create a new database name
+ */
+#define VCMDERR_CANTCREATEDBNAME VCMDERROR(0x20) // 0x80040620
+
+/*
+ * Voice Commands could not update the registry
+ */
+#define VCMDERR_CANTUPDATEREGISTRY VCMDERROR(0x21) // 0x80040621
+
+/*
+ * Voice Commands could not open the registry
+ */
+#define VCMDERR_CANTOPENREGISTRY VCMDERROR(0x22) // 0x80040622
+
+/*
+ * Voice Commands could not open the command set database
+ */
+#define VCMDERR_CANTOPENDATABASE VCMDERROR(0x23) // 0x80040623
+
+/*
+ * Voice Commands could not create a database storage object
+ */
+#define VCMDERR_CANTCREATESTORAGE VCMDERROR(0x24) // 0x80040624
+
+/*
+ * Voice Commands could not do CmdMimic
+ */
+#define VCMDERR_CANNOTMIMIC VCMDERROR(0x25) // 0x80040625
+
+/*
+ * A menu of this name already exist
+ */
+#define VCMDERR_MENUEXIST VCMDERROR(0x26) // 0x80040626
+
+/*
+ * A menu of this name is open and cannot be deleted right now
+ */
+#define VCMDERR_MENUOPEN VCMDERROR(0x27) // 0x80040627
+
+
+// Voice Text Errors
+#define VTXTERR_NONE S_OK // 0x00000000
+
+/*
+ * Voice Text failed to allocate memory it needed
+ */
+#define VTXTERR_OUTOFMEM E_OUTOFMEMORY // 0x8007000E
+
+/*
+ * An empty string ("") was passed to the Speak function
+ */
+#define VTXTERR_EMPTYSPEAKSTRING SPEECHERROR(0x0b) // 0x8004020B
+
+/*
+ * An invalid parameter was passed to a Voice Text function
+ */
+#define VTXTERR_INVALIDPARAM E_INVALIDARG // 0x80070057
+
+/*
+ * The called function cannot be done at this time. This usually occurs
+ * when trying to call a function that needs a site, but no site has been
+ * registered.
+ */
+#define VTXTERR_INVALIDMODE SRERR_INVALIDMODE // 0x80040206
+
+/*
+ * No text-to-speech engine is started
+ */
+#define VTXTERR_NOENGINE VTXTERROR(0x0F) // 0x8004070F
+
+/*
+ * Voice Text could not acquire a Find interface from the text-to-speech
+ * engine
+ */
+#define VTXTERR_NOFINDINTERFACE VTXTERROR(0x11) // 0x80040711
+
+/*
+ * Voice Text could not create a text-to-speech enumerator
+ */
+#define VTXTERR_CANTCREATETTSENUM VTXTERROR(0x12) // 0x80040712
+
+/*
+ * Voice Text could get the appropriate site information to start a
+ * text-to-speech engine
+ */
+#define VTXTERR_NOSITEINFO VTXTERROR(0x13) // 0x80040713
+
+/*
+ * Voice Text could not find a text-to-speech engine
+ */
+#define VTXTERR_TTSFINDFAILED VTXTERROR(0x14) // 0x80040714
+
+/*
+ * Voice Text could not create an audio destination object
+ */
+#define VTXTERR_CANTCREATEAUDIODEVICE VTXTERROR(0x15) // 0x80040715
+
+/*
+ * Voice Text could not set the appropriate device number in the
+ * audio destination object
+ */
+#define VTXTERR_CANTSETDEVICE VTXTERROR(0x16) // 0x80040716
+
+/*
+ * Voice Text could not select a text-to-speech engine. Usually the
+ * error will occur when Voice Text has enumerated and found an
+ * appropriate text-to-speech engine, then it is not able to actually
+ * select/start the engine.
+ */
+#define VTXTERR_CANTSELECTENGINE VTXTERROR(0x17) // 0x80040717
+
+/*
+ * Voice Text could not create a notfication sink for engine
+ * notifications
+ */
+#define VTXTERR_CANTCREATENOTIFY VTXTERROR(0x18) // 0x80040718
+
+/*
+ * Voice Text is disabled at this time
+ */
+#define VTXTERR_NOTENABLED VTXTERROR(0x19) // 0x80040719
+
+#define VTXTERR_OUTOFDISK SRERR_OUTOFDISK // 0x80040205
+#define VTXTERR_NOTSUPPORTED E_NOTIMPL // 0x80004001
+#define VTXTERR_NOTENOUGHDATA AUDERR_NOTENOUGHDATA // 0x80040201
+#define VTXTERR_QUEUEFULL TTSERR_QUEUEFULL // 0x8004020A
+#define VTXTERR_VALUEOUTOFRANGE E_UNEXPECTED // 0x8000FFFF
+#define VTXTERR_INVALIDWINDOW OLE_E_INVALIDHWND // 0x8004000F
+#define VTXTERR_WAVEDEVICEBUSY AUDERR_WAVEDEVICEBUSY // 0x80040203
+#define VTXTERR_WAVEFORMATNOTSUPPORTED AUDERR_WAVEFORMATNOTSUPPORTED // 0x80040202
+#define VTXTERR_INVALIDCHAR SRERR_INVALIDCHAR // 0x80040208
+
+
+// ILexPronounce errors
+#define LEXERR_INVALIDTEXTCHAR LEXERROR(0x01) // 0x80040801
+#define LEXERR_INVALIDSENSE LEXERROR(0x02) // 0x80040802
+#define LEXERR_NOTINLEX LEXERROR(0x03) // 0x80040803
+#define LEXERR_OUTOFDISK LEXERROR(0x04) // 0x80040804
+#define LEXERR_INVALIDPRONCHAR LEXERROR(0x05) // 0x80040805
+#define LEXERR_ALREADYINLEX LEXWARNING(0x06) // 0x00040806
+#define LEXERR_PRNBUFTOOSMALL LEXERROR(0x07) // 0x80040807
+#define LEXERR_ENGBUFTOOSMALL LEXERROR(0x08) // 0x80040808
+#define LEXERR_INVALIDLEX LEXERROR(0x09) // 0x80040809
+
+
+
+/************************************************************************
+typedefs */
+
+typedef LPUNKNOWN FAR * PIUNKNOWN;
+
+typedef struct {
+ PVOID pData;
+ DWORD dwSize;
+ } SDATA, * PSDATA;
+
+
+
+typedef struct {
+ LANGID LanguageID;
+ WCHAR szDialect[LANG_LEN];
+ } LANGUAGEW, FAR * PLANGUAGEW;
+
+typedef struct {
+ LANGID LanguageID;
+ CHAR szDialect[LANG_LEN];
+ } LANGUAGEA, FAR * PLANGUAGEA;
+
+#ifdef _S_UNICODE
+#define LANGUAGE LANGUAGEW
+#define PLANGUAGE PLANGUAGEW
+#else
+#define LANGUAGE LANGUAGEA
+#define PLANGUAGE PLANGUAGEA
+#endif // _S_UNICODE
+
+
+typedef struct {
+ HRESULT hRes;
+ WCHAR szStrings[512];
+ } SPCHERRORW, FAR * PSPCHERRORW;
+
+typedef struct {
+ HRESULT hRes;
+ CHAR szStrings[512];
+ } SPCHERRORA, FAR * PSPCHERRORA;
+
+#ifdef _S_UNICODE
+#define SPCHERROR SPCHERRORW
+#define PSPCHERROR PSPCHERRORW
+#else
+#define SPCHERROR SPCHERRORA
+#define PSPCHERROR PSPCHERRORA
+#endif // _S_UNICODE
+
+
+
+typedef unsigned __int64 QWORD, * PQWORD;
+
+typedef enum {
+ CHARSET_TEXT = 0,
+ CHARSET_IPAPHONETIC = 1,
+ CHARSET_ENGINEPHONETIC = 2
+ } VOICECHARSET;
+
+typedef enum _VOICEPARTOFSPEECH {
+ VPS_UNKNOWN = 0,
+ VPS_NOUN = 1,
+ VPS_VERB = 2,
+ VPS_ADVERB = 3,
+ VPS_ADJECTIVE = 4,
+ VPS_PROPERNOUN = 5,
+ VPS_PRONOUN = 6,
+ VPS_CONJUNCTION = 7,
+ VPS_CARDINAL = 8,
+ VPS_ORDINAL = 9,
+ VPS_DETERMINER = 10,
+ VPS_QUANTIFIER = 11,
+ VPS_PUNCTUATION = 12,
+ VPS_CONTRACTION = 13,
+ VPS_INTERJECTION = 14,
+ VPS_ABBREVIATION = 15,
+ VPS_PREPOSITION = 16
+ } VOICEPARTOFSPEECH;
+
+
+typedef struct {
+ DWORD dwNextPhonemeNode;
+ DWORD dwUpAlternatePhonemeNode;
+ DWORD dwDownAlternatePhonemeNode;
+ DWORD dwPreviousPhonemeNode;
+ DWORD dwWordNode;
+ QWORD qwStartTime;
+ QWORD qwEndTime;
+ DWORD dwPhonemeScore;
+ WORD wVolume;
+ WORD wPitch;
+ } SRRESPHONEMENODE, *PSRRESPHONEMENODE;
+
+
+typedef struct {
+ DWORD dwNextWordNode;
+ DWORD dwUpAlternateWordNode;
+ DWORD dwDownAlternateWordNode;
+ DWORD dwPreviousWordNode;
+ DWORD dwPhonemeNode;
+ QWORD qwStartTime;
+ QWORD qwEndTime;
+ DWORD dwWordScore;
+ WORD wVolume;
+ WORD wPitch;
+ VOICEPARTOFSPEECH pos;
+ DWORD dwCFGParse;
+ DWORD dwCue;
+ } SRRESWORDNODE, * PSRRESWORDNODE;
+
+
+/************************************************************************
+interfaces */
+
+/*
+ * IAttributes
+ */
+
+/* attribute values */
+#define TTSBASEATTR 0x1000
+#define SRBASEATTR 0x2000
+#define VDCTBASEATTR 0x3000
+#define VCMDBASEATTR 0x4000
+#define VTXTBASEATTR 0x5000
+#define AUDBASEATTR 0x6000
+
+#define TTSATTR_PITCH (1)
+#define TTSATTR_REALTIME (0)
+#define TTSATTR_SPEED (2)
+#define TTSATTR_VOLUME (3)
+#define TTSATTR_PITCHRANGE (TTSBASEATTR + 5)
+#define TTSATTR_PITCHRANGEDEFAULT (TTSBASEATTR + 6)
+#define TTSATTR_PITCHRANGEMAX (TTSBASEATTR + 7)
+#define TTSATTR_PITCHRANGEMIN (TTSBASEATTR + 8)
+#define TTSATTR_PITCHRANGERELATIVE (TTSBASEATTR + 9)
+#define TTSATTR_PITCHRANGERELATIVEMAX (TTSBASEATTR + 10)
+#define TTSATTR_PITCHRANGERELATIVEMIN (TTSBASEATTR + 11)
+#define TTSATTR_PITCHRELATIVE (TTSBASEATTR + 12)
+#define TTSATTR_PITCHRELATIVEMAX (TTSBASEATTR + 13)
+#define TTSATTR_PITCHRELATIVEMIN (TTSBASEATTR + 14)
+#define TTSATTR_PITCHDEFAULT (TTSBASEATTR + 15)
+#define TTSATTR_PITCHMAX (TTSBASEATTR + 16)
+#define TTSATTR_PITCHMIN (TTSBASEATTR + 17)
+#define TTSATTR_SPEEDRELATIVE (TTSBASEATTR + 18)
+#define TTSATTR_SPEEDRELATIVEMAX (TTSBASEATTR + 19)
+#define TTSATTR_SPEEDRELATIVEMIN (TTSBASEATTR + 20)
+#define TTSATTR_SPEEDDEFAULT (TTSBASEATTR + 21)
+#define TTSATTR_SPEEDMAX (TTSBASEATTR + 22)
+#define TTSATTR_SPEEDMIN (TTSBASEATTR + 23)
+#define TTSATTR_THREADPRIORITY (TTSBASEATTR + 24)
+#define TTSATTR_SINKFLAGS (TTSBASEATTR + 25)
+#define TTSATTR_VOLUMEDEFAULT (TTSBASEATTR + 26)
+
+#define SRATTR_AUTOGAIN (1)
+#define SRATTR_ECHO (3)
+#define SRATTR_ENERGYFLOOR (4)
+#define SRATTR_MICROPHONE (5)
+#define SRATTR_REALTIME (6)
+#define SRATTR_SPEAKER (7)
+#define SRATTR_TIMEOUT_COMPLETE (8)
+#define SRATTR_TIMEOUT_INCOMPLETE (SRBASEATTR + 8)
+#define SRATTR_THRESHOLD (2)
+#define SRATTR_ACCURACYSLIDER (SRBASEATTR + 10)
+#define SRATTR_LEVEL (SRBASEATTR + 11)
+#define SRATTR_LISTENINGSTATE (SRBASEATTR + 12)
+#define SRATTR_RESULTSINFO (SRBASEATTR + 13)
+#define SRATTR_RESULTSINFO_POSSIBLE (SRBASEATTR + 14)
+#define SRATTR_SINKFLAGS (SRBASEATTR + 15)
+#define SRATTR_THREADPRIORITY (SRBASEATTR + 16)
+
+#define VDCTATTR_AWAKESTATE (VDCTBASEATTR + 1)
+#define VDCTATTR_MODE (VDCTBASEATTR + 2)
+#define VDCTATTR_MEMORY (VDCTBASEATTR + 3)
+#define VDCTATTR_CORRECTIONRECT (VDCTBASEATTR + 4)
+#define VDCTATTR_VISIBLETEXTSTART (VDCTBASEATTR + 5)
+#define VDCTATTR_VISIBLETEXTCHARS (VDCTBASEATTR + 6)
+#define VDCTATTR_INSERTIONGUI (VDCTBASEATTR + 7) // turn on ISRGramInsertionGUI
+
+#define VCMDATTR_AWAKESTATE (VCMDBASEATTR + 1)
+#define VCMDATTR_DEVICE (VCMDBASEATTR + 2)
+#define VCMDATTR_ENABLED (VCMDBASEATTR + 3)
+#define VCMDATTR_SRMODE (VCMDBASEATTR + 4)
+
+#define AUDATTR_USELOWPRIORITY (AUDBASEATTR + 1) // MMAudioSource: if true, send low priority message to card when starting
+#define AUDATTR_AUTORETRY (AUDBASEATTR + 2) // MMAudioSource: if true, keep retrying to open wave device if can't initially
+#define AUDATTR_TIMERMS (AUDBASEATTR + 3) // MMAudioDest: milliseconds between timer ticks, when send out buffers, etc.
+#define AUDATTR_DIRECTFLAGS (AUDBASEATTR + 4) // DirectSoundAudioDest: Flages to send into CreateSoundBuffer
+ // set these values before waveformatset. Use to do 3-d tts
+
+// SRATTR_RESULTSINFO flags
+#define SRRI_AUDIO SETBIT(0)
+#define SRRI_AUDIO_UNCOMPRESSED SETBIT(1)
+#define SRRI_ALTERNATIVES SETBIT(2)
+#define SRRI_WORDGRAPH SETBIT(3)
+#define SRRI_PHONEMEGRAPH SETBIT(4)
+
+// SRATTR_SINKFLAGS flags
+#define SRASF_ATTRIBUTES SETBIT(0)
+#define SRASF_INTERFERENCE SETBIT(1)
+#define SRASF_SOUND SETBIT(2)
+#define SRASF_UTTERANCEBEGIN SETBIT(3)
+#define SRASF_UTTERANCEEND SETBIT(4)
+#define SRASF_VUMETER SETBIT(5)
+#define SRASF_PHRASEHYPOTHESIS SETBIT(6)
+#define SRASF_TRAINING SETBIT(7)
+#define SRASF_ERRORWARNING SETBIT(8)
+
+#undef INTERFACE
+#define INTERFACE IAttributesW
+
+// {1D59DED1-E367-11d1-BED7-006008317CE8}
+DEFINE_GUID(IID_IAttributesW,
+0x1d59ded1, 0xe367, 0x11d1, 0xbe, 0xd7, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (IAttributesW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // AttributesW members
+ STDMETHOD (DWORDGet) (DWORD, DWORD*) PURE;
+ STDMETHOD (DWORDSet) (DWORD, DWORD) PURE;
+ STDMETHOD (StringGet) (DWORD, PWSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (StringSet) (DWORD, PCWSTR) PURE;
+ STDMETHOD (MemoryGet) (DWORD, PVOID*, DWORD*) PURE;
+ STDMETHOD (MemorySet) (DWORD, PVOID, DWORD) PURE;
+ };
+
+typedef IAttributesW FAR * PIATTRIBUTESW;
+
+
+#undef INTERFACE
+#define INTERFACE IAttributesA
+
+// {1D59DED2-E367-11d1-BED7-006008317CE8}
+DEFINE_GUID(IID_IAttributesA,
+0x1d59ded2, 0xe367, 0x11d1, 0xbe, 0xd7, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (IAttributesA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // AttributesA members
+ STDMETHOD (DWORDGet) (DWORD, DWORD*) PURE;
+ STDMETHOD (DWORDSet) (DWORD, DWORD) PURE;
+ STDMETHOD (StringGet) (DWORD, PSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (StringSet) (DWORD, PCSTR) PURE;
+ STDMETHOD (MemoryGet) (DWORD, PVOID*, DWORD*) PURE;
+ STDMETHOD (MemorySet) (DWORD, PVOID, DWORD) PURE;
+ };
+
+typedef IAttributesA FAR * PIATTRIBUTESA;
+
+
+#ifdef _S_UNICODE
+ #define IAttributes IAttributesW
+ #define IID_IAttributes IID_IAttributesW
+ #define PIATTRIBUTES PIATTRIBUTESW
+
+#else
+ #define IAttributes IAttributesA
+ #define IID_IAttributes IID_IAttributesA
+ #define PIATTRIBUTES PIATTRIBUTESA
+
+#endif // _S_UNICODE
+
+
+/*
+ * ISpchError
+ */
+
+#undef INTERFACE
+#define INTERFACE ISpchErrorW
+
+// {9B445335-E39F-11d1-BED7-006008317CE8}
+DEFINE_GUID(IID_ISpchErrorW,
+0x9b445335, 0xe39f, 0x11d1, 0xbe, 0xd7, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (ISpchErrorW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // SpchError members
+ STDMETHOD (LastErrorGet) (THIS_ SPCHERRORW *) PURE;
+ STDMETHOD (ErrorMessageGet) (THIS_ WCHAR *, DWORD, DWORD *) PURE;
+ };
+
+typedef ISpchErrorW FAR * PISPCHERRORW;
+
+
+#undef INTERFACE
+#define INTERFACE ISpchErrorA
+
+// {9B445336-E39F-11d1-BED7-006008317CE8}
+DEFINE_GUID(IID_ISpchErrorA,
+0x9b445336, 0xe39f, 0x11d1, 0xbe, 0xd7, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (ISpchErrorA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // SpchError members
+ STDMETHOD (LastErrorGet) (THIS_ SPCHERRORA *) PURE;
+ STDMETHOD (ErrorMessageGet) (THIS_ CHAR *, DWORD, DWORD *) PURE;
+ };
+
+typedef ISpchErrorA FAR * PISPCHERRORA;
+#ifdef _S_UNICODE
+ #define ISpchError ISpchErrorW
+ #define IID_ISpchError IID_ISpchErrorW
+ #define PISPCHERROR PISPCHERRORW
+
+#else
+ #define ISpchError ISpchErrorA
+ #define IID_ISpchError IID_ISpchErrorA
+ #define PISPCHERROR PISPCHERRORA
+
+#endif // _S_UNICODE
+
+
+
+
+
+/*
+ * ILexPronounce
+ */
+
+#undef INTERFACE
+#define INTERFACE ILexPronounceW
+
+DEFINE_GUID(IID_ILexPronounceW, 0x090CD9A2, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ILexPronounceW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // LexPronounceW members
+ STDMETHOD (Add) (THIS_ VOICECHARSET, PCWSTR, PCWSTR,
+ VOICEPARTOFSPEECH, PVOID, DWORD) PURE;
+ STDMETHOD (Get) (THIS_ VOICECHARSET, PCWSTR, WORD, PWSTR,
+ DWORD, DWORD *, VOICEPARTOFSPEECH *, PVOID,
+ DWORD, DWORD *) PURE;
+ STDMETHOD (Remove) (THIS_ PCWSTR, WORD) PURE;
+ };
+
+typedef ILexPronounceW FAR * PILEXPRONOUNCEW;
+
+
+#undef INTERFACE
+#define INTERFACE ILexPronounceA
+
+DEFINE_GUID(IID_ILexPronounceA, 0x2F26B9C0L, 0xDB31, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ILexPronounceA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // LexPronounceA members
+ STDMETHOD (Add) (THIS_ VOICECHARSET, PCSTR, PCSTR,
+ VOICEPARTOFSPEECH, PVOID, DWORD) PURE;
+ STDMETHOD (Get) (THIS_ VOICECHARSET, PCSTR, WORD, PSTR,
+ DWORD, DWORD *, VOICEPARTOFSPEECH *, PVOID,
+ DWORD, DWORD *) PURE;
+ STDMETHOD (Remove) (THIS_ PCSTR, WORD) PURE;
+ };
+
+typedef ILexPronounceA FAR * PILEXPRONOUNCEA;
+
+
+#ifdef _S_UNICODE
+ #define ILexPronounce ILexPronounceW
+ #define IID_ILexPronounce IID_ILexPronounceW
+ #define PILEXPRONOUNCE PILEXPRONOUNCEW
+
+#else
+ #define ILexPronounce ILexPronounceA
+ #define IID_ILexPronounce IID_ILexPronounceA
+ #define PILEXPRONOUNCE PILEXPRONOUNCEA
+
+#endif // _S_UNICODE
+
+
+/*
+ * ILexPronounce2
+ */
+
+#define ILP2_ACTIVE SETBIT(0)
+#define ILP2_USER SETBIT(1)
+#define ILP2_BACKUP SETBIT(2)
+#define ILP2_LTS SETBIT(3)
+
+#undef INTERFACE
+#define INTERFACE ILexPronounce2W
+
+// {D6E56341-B3EA-11d1-AFA5-0000F81E880D}
+DEFINE_GUID(IID_ILexPronounce2W, 0xd6e56341, 0xb3ea, 0x11d1, 0xaf, 0xa5, 0x0, 0x0, 0xf8, 0x1e, 0x88, 0xd);
+
+DECLARE_INTERFACE_ (ILexPronounce2W, ILexPronounceW) {
+
+ // LexPronounceW members
+ STDMETHOD (Add) (THIS_ VOICECHARSET, PCWSTR, PCWSTR,
+ VOICEPARTOFSPEECH, PVOID, DWORD) PURE;
+ STDMETHOD (Get) (THIS_ VOICECHARSET, PCWSTR, WORD, PWSTR,
+ DWORD, DWORD *, VOICEPARTOFSPEECH *, PVOID,
+ DWORD, DWORD *) PURE;
+ STDMETHOD (Remove) (THIS_ PCWSTR, WORD) PURE;
+
+ // LexPronounce2W members
+ STDMETHOD (AddTo) (THIS_ DWORD, VOICECHARSET, PCWSTR, PCWSTR,
+ VOICEPARTOFSPEECH, PVOID, DWORD) PURE;
+ STDMETHOD (GetFrom) (THIS_ DWORD, VOICECHARSET, PCWSTR, WORD, PWSTR,
+ DWORD, DWORD *, VOICEPARTOFSPEECH *, PVOID,
+ DWORD, DWORD *) PURE;
+ STDMETHOD (RemoveFrom) (THIS_ DWORD, PCWSTR, WORD) PURE;
+ STDMETHOD (QueryLexicons) (THIS_ BOOL, DWORD *) PURE;
+ STDMETHOD (ChangeSpelling) (THIS_ DWORD, PCWSTR, PCWSTR) PURE;
+ };
+
+typedef ILexPronounce2W FAR * PILEXPRONOUNCE2W;
+
+
+#undef INTERFACE
+#define INTERFACE ILexPronounce2A
+
+// {D6E56342-B3EA-11d1-AFA5-0000F81E880D}
+DEFINE_GUID(IID_ILexPronounce2A, 0xd6e56342, 0xb3ea, 0x11d1, 0xaf, 0xa5, 0x0, 0x0, 0xf8, 0x1e, 0x88, 0xd);
+
+DECLARE_INTERFACE_ (ILexPronounce2A, ILexPronounceA) {
+
+ // LexPronounceA members
+ STDMETHOD (Add) (THIS_ VOICECHARSET, PCSTR, PCSTR,
+ VOICEPARTOFSPEECH, PVOID, DWORD) PURE;
+ STDMETHOD (Get) (THIS_ VOICECHARSET, PCSTR, WORD, PSTR,
+ DWORD, DWORD *, VOICEPARTOFSPEECH *, PVOID,
+ DWORD, DWORD *) PURE;
+ STDMETHOD (Remove) (THIS_ PCSTR, WORD) PURE;
+
+ // LexPronounceA members
+ STDMETHOD (AddTo) (THIS_ DWORD, VOICECHARSET, PCSTR, PCSTR,
+ VOICEPARTOFSPEECH, PVOID, DWORD) PURE;
+ STDMETHOD (GetFrom) (THIS_ DWORD, VOICECHARSET, PCSTR, WORD, PSTR,
+ DWORD, DWORD *, VOICEPARTOFSPEECH *, PVOID,
+ DWORD, DWORD *) PURE;
+ STDMETHOD (RemoveFrom) (THIS_ DWORD, PCSTR, WORD) PURE;
+ STDMETHOD (QueryLexicons) (THIS_ BOOL, DWORD *) PURE;
+ STDMETHOD (ChangeSpelling) (THIS_ DWORD, PCSTR, PCSTR) PURE;
+ };
+
+typedef ILexPronounce2A FAR * PILEXPRONOUNCE2A;
+
+
+#ifdef _S_UNICODE
+ #define ILexPronounce2 ILexPronounce2W
+ #define IID_ILexPronounce2 IID_ILexPronounce2W
+ #define PILEXPRONOUNCE2 PILEXPRONOUNCE2W
+
+#else
+ #define ILexPronounce2 ILexPronounce2A
+ #define IID_ILexPronounce2 IID_ILexPronounce2A
+ #define PILEXPRONOUNCE2 PILEXPRONOUNCE2A
+
+#endif // _S_UNICODE
+
+/************************************************************************
+Speech Tools
+*/
+
+/* defines */
+// ISTMicWizard->Wizard
+#define STMWU_CNC 0
+#define STMWU_DICTATION 1
+#define STMWU_LOWERGAIN 0x10000 // if on, tries for a lower gain
+#define STMWU_NOAUTOGAIN 0x20000 // if on, doesn't adjust the autogain bit
+
+#define STMWF_CANSKIP SETBIT(0)
+
+// MICWIZARDINFO
+#define STMWI_UNKNOWN 0
+#define STMWI_CLOSETALK 1
+#define STMWI_EARPIECE 2
+#define STMWI_HANDSET 3
+#define STMWI_CLIPON 4
+#define STMWI_DESKTOP 5
+#define STMWI_HANDHELD 6
+#define STMWI_TOPMONITOR 7
+#define STMWI_INMONITOR 8
+#define STMWI_KEYBOARD 9
+#define STMWI_REMOTE 10
+
+#define STMWIS_UNKNOWN 0
+#define STMWIS_SPEAKERS 1
+#define STMWIS_HEADPHONES 2
+#define STMWIS_BOTH 3
+
+/* structures */
+
+typedef struct {
+ BOOL fHasRunMicWizard;
+ DWORD dwWaveInDevice;
+ DWORD dwMicrophoneType;
+ WCHAR szMicString[64];
+} MICWIZARDINFO, *PMICWIZARDINFO;
+
+typedef struct {
+ BOOL fHasRunMicWizard;
+ DWORD dwWaveInDevice;
+ DWORD dwMicrophoneType;
+ WCHAR szMicString[64];
+ DWORD dwSpeakers;
+ DWORD dwLastMicLevel;
+ DWORD dwMicLevelDeviceID;
+} MICWIZARDINFO2, *PMICWIZARDINFO2;
+
+// STLexDlg
+#define STLD_DISABLEREMOVE SETBIT(0)
+#define STLD_DISABLEADD SETBIT(1)
+#define STLD_FORCEEDIT SETBIT(2)
+#define STLD_DISABLEPRONADDREMOVE SETBIT(3)
+#define STLD_TEST SETBIT(4)
+#define STLD_DISABLERENAME SETBIT(5)
+#define STLD_CHANGEPRONADDS SETBIT(6)
+
+/* class IDs */
+// {B9F11A95-90E3-11d0-8D77-00A0C9034A7E}
+DEFINE_GUID(CLSID_STMicWizard,
+0xb9f11a95, 0x90e3, 0x11d0, 0x8d, 0x77, 0x0, 0xa0, 0xc9, 0x3, 0x4a, 0x7e);
+
+// {92655FB1-ADF9-11d1-BEB9-006008317CE8}
+DEFINE_GUID(CLSID_STLexDlg,
+0x92655fb1, 0xadf9, 0x11d1, 0xbe, 0xb9, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+// {B9F11A96-90E3-11d0-8D77-00A0C9034A7E}
+DEFINE_GUID(CLSID_STPhoneConv,
+0xb9f11a96, 0x90e3, 0x11d0, 0x8d, 0x77, 0x0, 0xa0, 0xc9, 0x3, 0x4a, 0x7e);
+
+
+/* interfaces */
+// ISTMicWizard Interface
+
+#undef INTERFACE
+#define INTERFACE ISTMicWizard
+
+// {B9F11A97-90E3-11d0-8D77-00A0C9034A7E}
+DEFINE_GUID(IID_ISTMicWizard,
+0xb9f11a97, 0x90e3, 0x11d0, 0x8d, 0x77, 0x0, 0xa0, 0xc9, 0x3, 0x4a, 0x7e);
+
+DECLARE_INTERFACE_ (ISTMicWizard, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISTMicWizard members
+ STDMETHOD (InfoGet) (THIS_ PMICWIZARDINFO) PURE;
+ STDMETHOD (InfoSet) (THIS_ PMICWIZARDINFO) PURE;
+ STDMETHOD (Wizard) (THIS_ HWND, DWORD, DWORD, DWORD, DWORD) PURE;
+ };
+
+typedef ISTMicWizard FAR * PISTMICWIZARD;
+
+
+// ISTLexDlg Interface
+
+#undef INTERFACE
+#define INTERFACE ISTLexDlg
+
+// {A27B8A01-ADF9-11d1-BEB9-006008317CE8}
+DEFINE_GUID(IID_ISTLexDlg,
+0xa27b8a01, 0xadf9, 0x11d1, 0xbe, 0xb9, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (ISTLexDlg, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISTLexDlg members
+ STDMETHOD (LexDlg) (THIS_ HWND, PCWSTR, DWORD, LANGID,
+ LPUNKNOWN, LPUNKNOWN, LPUNKNOWN, PCWSTR, PCWSTR) PURE;
+ };
+
+typedef ISTLexDlg FAR * PISTLEXDLG;
+
+// ISTPhoneConv Interface
+
+#undef INTERFACE
+#define INTERFACE ISTPhoneConv
+
+// {B9F11A98-90E3-11d0-8D77-00A0C9034A7E}
+DEFINE_GUID(IID_ISTPhoneConv,
+0xb9f11a98, 0x90e3, 0x11d0, 0x8d, 0x77, 0x0, 0xa0, 0xc9, 0x3, 0x4a, 0x7e);
+
+DECLARE_INTERFACE_ (ISTPhoneConv, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISTPhoneConv members
+ STDMETHOD (FromIPA) (THIS_ LPCWSTR, DWORD *, LPWSTR, DWORD, DWORD*) PURE;
+ STDMETHOD (Get) (THIS_ SDATA *) PURE;
+ STDMETHOD (SetByLang) (THIS_ LANGID) PURE;
+ STDMETHOD (SetByText) (THIS_ LPCWSTR) PURE;
+ STDMETHOD (ToIPA) (THIS_ LPCWSTR, DWORD *, LPWSTR, DWORD, DWORD*) PURE;
+ };
+
+typedef ISTPhoneConv FAR * PISTPHONECONV;
+
+
+
+/************************************************************************
+Audio source/destiantion API
+*/
+
+/************************************************************************
+defines */
+
+// AudioStop
+#define IANSRSN_NODATA 0
+#define IANSRSN_PRIORITY 1
+#define IANSRSN_INACTIVE 2
+#define IANSRSN_EOF 3
+
+// IAudioSourceInstrumented::StateSet
+#define IASISTATE_PASSTHROUGH 0
+#define IASISTATE_PASSNOTHING 1
+#define IASISTATE_PASSREADFROMWAVE 2
+#define IASISTATE_PASSWRITETOWAVE 3
+
+/************************************************************************
+typedefs */
+
+/************************************************************************
+Class IDs */
+// {CB96B400-C743-11cd-80E5-00AA003E4B50}
+DEFINE_GUID(CLSID_MMAudioDest,
+0xcb96b400, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
+
+// {D24FE500-C743-11cd-80E5-00AA003E4B50}
+DEFINE_GUID(CLSID_MMAudioSource,
+0xd24fe500, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
+
+// {D4023720-E4B9-11cf-8D56-00A0C9034A7E}
+DEFINE_GUID(CLSID_InstAudioSource,
+0xd4023720, 0xe4b9, 0x11cf, 0x8d, 0x56, 0x0, 0xa0, 0xc9, 0x3, 0x4a, 0x7e);
+
+// {D4123720-E4B9-11cf-8D56-00A0C9034A7E}
+DEFINE_GUID(CLSID_SuspAudioSource,
+0xd4123720, 0xe4b9, 0x11cf, 0x8d, 0x56, 0x0, 0xa0, 0xc9, 0x3, 0x4a, 0x7e);
+
+// {D4523720-E4B9-11cf-8D56-00A0C9034A7E}
+DEFINE_GUID(CLSID_AudioSourceFile,
+0xd4523720, 0xe4b9, 0x11cf, 0x8d, 0x56, 0x0, 0xa0, 0xc9, 0x3, 0x4a, 0x7e);
+
+// {D4523720-E4B9-11cf-8D56-00A0C9034A7E}
+DEFINE_GUID(CLSID_AudioDestFile,
+0xd4623720, 0xe4b9, 0x11cf, 0x8d, 0x56, 0x0, 0xa0, 0xc9, 0x3, 0x4a, 0x7e);
+
+// {B9F11A90-90E3-11d0-8D77-00A0C9034A7E}
+DEFINE_GUID(CLSID_AudioDestDirect,
+0xb9f11a90, 0x90e3, 0x11d0, 0x8d, 0x77, 0x0, 0xa0, 0xc9, 0x3, 0x4a, 0x7e);
+
+// {32C35401-D04F-11d0-99B3-00AA004CD65C}
+DEFINE_GUID(CLSID_AudioSourceDirect,
+0x32c35401, 0xd04f, 0x11d0, 0x99, 0xb3, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+
+
+/************************************************************************
+interfaces */
+
+// IAudio
+#undef INTERFACE
+#define INTERFACE IAudio
+
+// {F546B340-C743-11cd-80E5-00AA003E4B50}
+DEFINE_GUID(IID_IAudio,
+0xf546b340, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
+
+DECLARE_INTERFACE_ (IAudio, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IAudio members
+ STDMETHOD (Flush) (THIS) PURE;
+ STDMETHOD (LevelGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (LevelSet) (THIS_ DWORD) PURE;
+ STDMETHOD (PassNotify) (THIS_ PVOID, IID) PURE;
+ STDMETHOD (PosnGet) (THIS_ PQWORD) PURE;
+ STDMETHOD (Claim) (THIS) PURE;
+ STDMETHOD (UnClaim) (THIS) PURE;
+ STDMETHOD (Start) (THIS) PURE;
+ STDMETHOD (Stop) (THIS) PURE;
+ STDMETHOD (TotalGet) (THIS_ PQWORD) PURE;
+ STDMETHOD (ToFileTime) (THIS_ PQWORD, FILETIME *) PURE;
+ STDMETHOD (WaveFormatGet) (THIS_ PSDATA) PURE;
+ STDMETHOD (WaveFormatSet) (THIS_ SDATA) PURE;
+ };
+
+typedef IAudio FAR * PIAUDIO;
+
+// IAudioDest
+
+#undef INTERFACE
+#define INTERFACE IAudioDest
+
+// {2EC34DA0-C743-11cd-80E5-00AA003E4B50}
+DEFINE_GUID(IID_IAudioDest,
+0x2ec34da0, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
+
+DECLARE_INTERFACE_ (IAudioDest, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IAudioDest members
+ STDMETHOD (FreeSpace) (THIS_ DWORD *, BOOL *) PURE;
+ STDMETHOD (DataSet) (THIS_ PVOID, DWORD) PURE;
+ STDMETHOD (BookMark) (THIS_ DWORD) PURE;
+ };
+
+typedef IAudioDest FAR * PIAUDIODEST;
+
+
+
+// IAudioDestNotifySink
+
+#undef INTERFACE
+#define INTERFACE IAudioDestNotifySink
+
+// {ACB08C00-C743-11cd-80E5-00AA003E4B50}
+DEFINE_GUID(IID_IAudioDestNotifySink,
+0xacb08c00, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
+
+DECLARE_INTERFACE_ (IAudioDestNotifySink, IUnknown) {
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IAudioDestNotifySink members
+ STDMETHOD (AudioStop) (THIS_ WORD) PURE;
+ STDMETHOD (AudioStart) (THIS) PURE;
+ STDMETHOD (FreeSpace) (THIS_ DWORD, BOOL) PURE;
+ STDMETHOD (BookMark) (THIS_ DWORD, BOOL) PURE;
+ };
+
+typedef IAudioDestNotifySink FAR * PIAUDIODESTNOTIFYSINK;
+
+
+
+// IAudioMultiMediaDevice
+
+#undef INTERFACE
+#define INTERFACE IAudioMultiMediaDevice
+
+// {B68AD320-C743-11cd-80E5-00AA003E4B50}
+DEFINE_GUID(IID_IAudioMultiMediaDevice,
+0xb68ad320, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
+
+DECLARE_INTERFACE_ (IAudioMultiMediaDevice, IUnknown) {
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IAudioMultiMediaDevice members
+ STDMETHOD (CustomMessage) (THIS_ UINT, SDATA) PURE;
+ STDMETHOD (DeviceNumGet) (THIS_ DWORD*) PURE;
+ STDMETHOD (DeviceNumSet) (THIS_ DWORD) PURE;
+ };
+
+typedef IAudioMultiMediaDevice FAR * PIAUDIOMULTIMEDIADEVICE;
+
+
+
+// IAudioSource
+#undef INTERFACE
+#define INTERFACE IAudioSource
+
+// {BC06A220-C743-11cd-80E5-00AA003E4B50}
+DEFINE_GUID(IID_IAudioSource,
+0xbc06a220, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
+
+DECLARE_INTERFACE_ (IAudioSource, IUnknown) {
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IAudioSource members
+ STDMETHOD (DataAvailable) (THIS_ DWORD *, BOOL *) PURE;
+ STDMETHOD (DataGet) (THIS_ PVOID, DWORD, DWORD *) PURE;
+ };
+
+typedef IAudioSource FAR * PIAUDIOSOURCE;
+
+
+
+// IAudioSourceInstrumented
+#undef INTERFACE
+#define INTERFACE IAudioSourceInstrumented
+
+// {D4023721-E4B9-11cf-8D56-00A0C9034A7E}
+DEFINE_GUID(IID_IAudioSourceInstrumented,
+0xd4023721, 0xe4b9, 0x11cf, 0x8d, 0x56, 0x0, 0xa0, 0xc9, 0x3, 0x4a, 0x7e);
+
+DECLARE_INTERFACE_ (IAudioSourceInstrumented, IUnknown) {
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IAudioSourceInstrumented members
+ STDMETHOD (AudioSource) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (RegistryGet) (THIS_ PWSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (RegistrySet) (THIS_ PCWSTR) PURE;
+ STDMETHOD (StateGet) (THIS_ DWORD*) PURE;
+ STDMETHOD (StateSet) (THIS_ DWORD) PURE;
+ STDMETHOD (WaveFileReadGet)(THIS_ PWSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (WaveFileReadSet)(THIS_ PCWSTR) PURE;
+ STDMETHOD (WaveFileWriteGet)(THIS_ PWSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (WaveFileWriteSet)(THIS_ PCWSTR) PURE;
+ };
+
+typedef IAudioSourceInstrumented FAR * PIAUDIOSOURCEINSTRUMENTED;
+
+
+// IAudioSourceSusp
+#undef INTERFACE
+#define INTERFACE IAudioSourceSusp
+
+// {D4123721-E4B9-11cf-8D56-00A0C9034A7E}
+DEFINE_GUID(IID_IAudioSourceSusp,
+0xd4123721, 0xe4b9, 0x11cf, 0x8d, 0x56, 0x0, 0xa0, 0xc9, 0x3, 0x4a, 0x7e);
+
+DECLARE_INTERFACE_ (IAudioSourceSusp, IUnknown) {
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IAudioSourceSusp members
+ STDMETHOD (AudioSource) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (Pause) (THIS) PURE;
+ STDMETHOD (Resume) (THIS) PURE;
+ };
+
+typedef IAudioSourceSusp FAR * PIAUDIOSOURCESUSP;
+
+
+// IAudioSourceNotifySink
+#undef INTERFACE
+#define INTERFACE IAudioSourceNotifySink
+
+// {C0BD9A80-C743-11cd-80E5-00AA003E4B50}
+DEFINE_GUID(IID_IAudioSourceNotifySink,
+0xc0bd9a80, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
+
+DECLARE_INTERFACE_ (IAudioSourceNotifySink, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IAudioSourceNotifySink members
+ STDMETHOD (AudioStop) (THIS_ WORD) PURE;
+ STDMETHOD (AudioStart) (THIS) PURE;
+ STDMETHOD (DataAvailable) (THIS_ DWORD, BOOL) PURE;
+ STDMETHOD (Overflow) (THIS_ DWORD) PURE;
+ };
+
+typedef IAudioSourceNotifySink FAR * PIAUDIOSOURCENOTIFYSINK;
+
+// IAudioFileNotifySink Interface
+#undef INTERFACE
+#define INTERFACE IAudioFileNotifySink
+
+// {492FE490-51E7-11b9-C000-FED6CBA3B1A9}
+DEFINE_GUID( IID_IAudioFileNotifySink, 0x492fe490, 0x51e7, 0x11b9, 0xc0, 0x0, 0xfe, 0xd6, 0xcb, 0xa3, 0xb1, 0xa9);
+
+DECLARE_INTERFACE_ (IAudioFileNotifySink, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IAudioSourceNotifySink members
+ STDMETHOD (FileBegin) (THIS_ DWORD) PURE;
+ STDMETHOD (FileEnd) (THIS_ DWORD) PURE;
+ STDMETHOD (QueueEmpty) (THIS) PURE;
+ STDMETHOD (Posn) (THIS_ QWORD, QWORD) PURE;
+ };
+
+typedef IAudioFileNotifySink FAR * PIAUDIOFILENOTIFYSINK;
+
+
+
+// IAudioFile Interface
+
+#undef INTERFACE
+#define INTERFACE IAudioFile
+
+// {FD7C2320-3D6D-11b9-C000-FED6CBA3B1A9}
+DEFINE_GUID( IID_IAudioFile, 0xfd7c2320, 0x3d6d, 0x11b9, 0xc0, 0x0, 0xfe, 0xd6, 0xcb, 0xa3, 0xb1, 0xa9);
+
+DECLARE_INTERFACE_ (IAudioFile, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IAudioFile members
+ STDMETHOD (Register) (THIS_ PIAUDIOFILENOTIFYSINK) PURE;
+ STDMETHOD (Set) (THIS_ LPCWSTR pszFile, DWORD dwID) PURE;
+ STDMETHOD (Add) (THIS_ LPCWSTR pszFile, DWORD dwID) PURE;
+ STDMETHOD (Flush) (THIS) PURE;
+ STDMETHOD (RealTimeSet) (THIS_ WORD wTime) PURE;
+ STDMETHOD (RealTimeGet) (THIS_ WORD *pwTime) PURE;
+ };
+
+typedef IAudioFile FAR * PIAUDIOFILE;
+
+
+// IAudioDirect Interface
+
+#undef INTERFACE
+#define INTERFACE IAudioDirect
+
+// {B9F11A94-90E3-11d0-8D77-00A0C9034A7E}
+DEFINE_GUID(IID_IAudioDirect,
+0xb9f11a94, 0x90e3, 0x11d0, 0x8d, 0x77, 0x0, 0xa0, 0xc9, 0x3, 0x4a, 0x7e);
+
+DECLARE_INTERFACE_ (IAudioDirect, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IAudioDirect members
+ STDMETHOD (Init) (THIS_ PVOID, REFIID) PURE;
+ };
+
+typedef IAudioDirect FAR * PIAUDIODIRECT;
+
+
+
+/************************************************************************
+defines */
+/* SRINFO */
+#define SRMI_NAMELEN SVFN_LEN
+
+#define SRSEQUENCE_DISCRETE (0)
+#define SRSEQUENCE_CONTINUOUS (1)
+#define SRSEQUENCE_WORDSPOT (2)
+#define SRSEQUENCE_CONTCFGDISCDICT (3)
+
+#define SRGRAM_CFG SETBIT(0)
+#define SRGRAM_DICTATION SETBIT(1)
+#define SRGRAM_LIMITEDDOMAIN SETBIT(2)
+
+#define SRFEATURE_INDEPSPEAKER SETBIT(0)
+#define SRFEATURE_INDEPMICROPHONE SETBIT(1)
+#define SRFEATURE_TRAINWORD SETBIT(2)
+#define SRFEATURE_TRAINPHONETIC SETBIT(3)
+#define SRFEATURE_WILDCARD SETBIT(4)
+#define SRFEATURE_ANYWORD SETBIT(5)
+#define SRFEATURE_PCOPTIMIZED SETBIT(6)
+#define SRFEATURE_PHONEOPTIMIZED SETBIT(7)
+#define SRFEATURE_GRAMLIST SETBIT(8)
+#define SRFEATURE_GRAMLINK SETBIT(9)
+#define SRFEATURE_MULTILINGUAL SETBIT(10)
+#define SRFEATURE_GRAMRECURSIVE SETBIT(11)
+#define SRFEATURE_IPAUNICODE SETBIT(12)
+#define SRFEATURE_SINGLEINSTANCE SETBIT(13)
+#define SRFEATURE_THREADSAFE SETBIT(14)
+#define SRFEATURE_FIXEDAUDIO SETBIT(15)
+#define SRFEATURE_IPAWORD SETBIT(16)
+#define SRFEATURE_SAPI4 SETBIT(17)
+
+#define SRI_ILEXPRONOUNCE SETBIT(0)
+#define SRI_ISRATTRIBUTES SETBIT(1)
+#define SRI_ISRCENTRAL SETBIT(2)
+#define SRI_ISRDIALOGS SETBIT(3)
+#define SRI_ISRGRAMCOMMON SETBIT(4)
+#define SRI_ISRGRAMCFG SETBIT(5)
+#define SRI_ISRGRAMDICTATION SETBIT(6)
+#define SRI_ISRGRAMINSERTIONGUI SETBIT(7)
+#define SRI_ISRESBASIC SETBIT(8)
+#define SRI_ISRESMERGE SETBIT(9)
+#define SRI_ISRESAUDIO SETBIT(10)
+#define SRI_ISRESCORRECTION SETBIT(11)
+#define SRI_ISRESEVAL SETBIT(12)
+#define SRI_ISRESGRAPH SETBIT(13)
+#define SRI_ISRESMEMORY SETBIT(14)
+#define SRI_ISRESMODIFYGUI SETBIT(15)
+#define SRI_ISRESSPEAKER SETBIT(16)
+#define SRI_ISRSPEAKER SETBIT(17)
+#define SRI_ISRESSCORES SETBIT(18)
+#define SRI_ISRESAUDIOEX SETBIT(19)
+#define SRI_ISRGRAMLEXPRON SETBIT(20)
+#define SRI_ISRRESGRAPHEX SETBIT(21)
+#define SRI_ILEXPRONOUNCE2 SETBIT(22)
+#define SRI_IATTRIBUTES SETBIT(23)
+#define SRI_ISRSPEAKER2 SETBIT(24)
+#define SRI_ISRDIALOGS2 SETBIT(25)
+
+
+// ISRGramCommon::TrainQuery
+#define SRGRAMQ_NONE 0
+#define SRGRAMQ_GENERALTRAIN 1
+#define SRGRAMQ_PHRASE 2
+#define SRGRAMQ_DIALOG 3
+
+// ISRGramNotifySink::PhraseFinish
+#define ISRNOTEFIN_RECOGNIZED SETBIT(0)
+#define ISRNOTEFIN_THISGRAMMAR SETBIT(1)
+#define ISRNOTEFIN_FROMTHISGRAMMAR SETBIT(2)
+
+// ISRGramNotifySink::Training
+#define SRGNSTRAIN_GENERAL SETBIT(0)
+#define SRGNSTRAIN_GRAMMAR SETBIT(1)
+#define SRGNSTRAIN_MICROPHONE SETBIT(2)
+
+// ISRNotifySink::AttribChange
+#define ISRNSAC_AUTOGAINENABLE 1
+#define ISRNSAC_THRESHOLD 2
+#define ISRNSAC_ECHO 3
+#define ISRNSAC_ENERGYFLOOR 4
+#define ISRNSAC_MICROPHONE 5
+#define ISRNSAC_REALTIME 6
+#define ISRNSAC_SPEAKER 7
+#define ISRNSAC_TIMEOUT 8
+#define ISRNSAC_STARTLISTENING 9
+#define ISRNSAC_STOPLISTENING 10
+
+/* Interference */
+#define SRMSGINT_NOISE (0x0001)
+#define SRMSGINT_NOSIGNAL (0x0002)
+#define SRMSGINT_TOOLOUD (0x0003)
+#define SRMSGINT_TOOQUIET (0x0004)
+#define SRMSGINT_AUDIODATA_STOPPED (0x0005)
+#define SRMSGINT_AUDIODATA_STARTED (0x0006)
+#define SRMSGINT_IAUDIO_STARTED (0x0007)
+#define SRMSGINT_IAUDIO_STOPPED (0x0008)
+
+// Grammar header values
+#define SRHDRTYPE_CFG 0
+#define SRHDRTYPE_LIMITEDDOMAIN 1
+#define SRHDRTYPE_DICTATION 2
+
+#define SRHDRFLAG_UNICODE SETBIT(0)
+
+// results objects defines
+#define SRRESCUE_COMMA 1
+#define SRRESCUE_DECLARATIVEBEGIN 2
+#define SRRESCUE_DECLARATIVEEND 3
+#define SRRESCUE_IMPERATIVEBEGIN 4
+#define SRRESCUE_IMPERATIVEEND 5
+#define SRRESCUE_INTERROGATIVEBEGIN 6
+#define SRRESCUE_INTERROGATIVEEND 7
+#define SRRESCUE_NOISE 8
+#define SRRESCUE_PAUSE 9
+#define SRRESCUE_SENTENCEBEGIN 10
+#define SRRESCUE_SENTENCEEND 11
+#define SRRESCUE_UM 12
+#define SRRESCUE_WILDCARD 13
+#define SRRESCUE_WORD 14
+
+/* SRCFGSYMBOL */
+#define SRCFG_STARTOPERATION (1)
+#define SRCFG_ENDOPERATION (2)
+#define SRCFG_WORD (3)
+#define SRCFG_RULE (4)
+#define SRCFG_WILDCARD (5)
+#define SRCFG_LIST (6)
+
+#define SRCFGO_SEQUENCE (1)
+#define SRCFGO_ALTERNATIVE (2)
+#define SRCFGO_REPEAT (3)
+#define SRCFGO_OPTIONAL (4)
+
+
+// Grammar-chunk IDs
+#define SRCK_LANGUAGE 1
+#define SRCKCFG_WORDS 2
+#define SRCKCFG_RULES 3
+#define SRCKCFG_EXPORTRULES 4
+#define SRCKCFG_IMPORTRULES 5
+#define SRCKCFG_LISTS 6
+#define SRCKD_TOPIC 7
+#define SRCKD_COMMON 8
+#define SRCKD_GROUP 9
+#define SRCKD_SAMPLE 10
+#define SRCKLD_WORDS 11
+#define SRCKLD_GROUP 12
+#define SRCKLD_SAMPLE 13
+#define SRCKD_WORDCOUNT 14
+#define SRCKD_NGRAM 15
+
+/* TrainQuery */
+#define SRTQEX_REQUIRED (0x0000)
+#define SRTQEX_RECOMMENDED (0x0001)
+
+/* ISRResAudioEx */
+#define SRAUDIOTIMESTAMP_DEFAULT ((QWORD) -1)
+
+/* ISRResCorrection */
+#define SRCORCONFIDENCE_SOME (0x0001)
+#define SRCORCONFIDENCE_VERY (0x0002)
+
+/* ISRResGraphEx */
+DEFINE_GUID(SRGARC_ACOUSTICSCORE, 0xbf2f5b20, 0xb91d, 0x11d1, 0xb7, 0xbc, 0x0, 0x60, 0x97, 0x98, 0x41, 0xb4);
+DEFINE_GUID(SRGARC_WORDTEXT, 0xbf2f5b21, 0xb91d, 0x11d1, 0xb7, 0xbc, 0x0, 0x60, 0x97, 0x98, 0x41, 0xb4);
+DEFINE_GUID(SRGARC_NONLEXICALTEXT, 0x62ec00, 0xbaa0, 0x11d1, 0xb7, 0xbd, 0x0, 0x60, 0x97, 0x98, 0x41, 0xb4);
+DEFINE_GUID(SRGARC_WORDPRONUNCIATION, 0xbf2f5b22, 0xb91d, 0x11d1, 0xb7, 0xbc, 0x0, 0x60, 0x97, 0x98, 0x41, 0xb4);
+DEFINE_GUID(SRGNODE_TIME, 0xbf2f5b23, 0xb91d, 0x11d1, 0xb7, 0xbc, 0x0, 0x60, 0x97, 0x98, 0x41, 0xb4);
+
+#define SRGEX_ACOUSTICONLY SETBIT(0)
+#define SRGEX_LMONLY SETBIT(1)
+#define SRGEX_ACOUSTICANDLM SETBIT(2)
+
+/* ISRResMemory constants */
+#define SRRESMEMKIND_AUDIO SETBIT(0)
+#define SRRESMEMKIND_CORRECTION SETBIT(1)
+#define SRRESMEMKIND_EVAL SETBIT(2)
+#define SRRESMEMKIND_PHONEMEGRAPH SETBIT(3)
+#define SRRESMEMKIND_WORDGRAPH SETBIT(4)
+
+// Attribute minimums and maximums
+#define SRATTR_MINAUTOGAIN 0
+#define SRATTR_MAXAUTOGAIN 100
+#define SRATTR_MINENERGYFLOOR 0
+#define SRATTR_MAXENERGYFLOOR 0xffff
+#define SRATTR_MINREALTIME 0
+#define SRATTR_MAXREALTIME 0xffffffff
+#define SRATTR_MINTHRESHOLD 0
+#define SRATTR_MAXTHRESHOLD 100
+#define SRATTR_MINTOINCOMPLETE 0
+#define SRATTR_MAXTOINCOMPLETE 0xffffffff
+#define SRATTR_MINTOCOMPLETE 0
+#define SRATTR_MAXTOCOMPLETE 0xffffffff
+
+
+/************************************************************************
+typedefs */
+
+typedef struct {
+ DWORD dwSize;
+ DWORD dwUniqueID;
+ BYTE abData[0];
+ } SRCFGRULE, * PSRCFGRULE;
+
+
+
+typedef struct {
+ DWORD dwSize;
+ DWORD dwRuleNum;
+ WCHAR szString[0];
+ } SRCFGIMPRULEW, * PSRCFGIMPRULEW;
+
+typedef struct {
+ DWORD dwSize;
+ DWORD dwRuleNum;
+ CHAR szString[0];
+ } SRCFGIMPRULEA, * PSRCFGIMPRULEA;
+
+#ifdef _S_UNICODE
+#define SRCFGIMPRULE SRCFGIMPRULEW
+#define PSRCFGIMPRULE PSRCFGIMPRULEW
+#else
+#define SRCFGIMPRULE SRCFGIMPRULEA
+#define PSRCFGIMPRULE PSRCFGIMPRULEA
+#endif // _S_UNICODE
+
+
+
+typedef struct {
+ DWORD dwSize;
+ DWORD dwRuleNum;
+ WCHAR szString[0];
+ } SRCFGXRULEW, * PSRCFGXRULEW;
+
+typedef struct {
+ DWORD dwSize;
+ DWORD dwRuleNum;
+ CHAR szString[0];
+ } SRCFGXRULEA, * PSRCFGXRULEA;
+
+#ifdef _S_UNICODE
+#define SRCFGXRULE SRCFGXRULEW
+#define PSRCFGXRULE PSRCFGXRULEW
+#else
+#define SRCFGXRULE SRCFGXRULEA
+#define PSRCFGXRULE PSRCFGXRULEA
+#endif // _S_UNICODE
+
+
+
+typedef struct {
+ DWORD dwSize;
+ DWORD dwListNum;
+ WCHAR szString[0];
+ } SRCFGLISTW, * PSRCFGLISTW;
+
+typedef struct {
+ DWORD dwSize;
+ DWORD dwListNum;
+ CHAR szString[0];
+ } SRCFGLISTA, * PSRCFGLISTA;
+
+#ifdef _S_UNICODE
+#define SRCFGLIST SRCFGLISTW
+#define PSRCFGLIST PSRCFGLISTW
+#else
+#define SRCFGLIST SRCFGLISTA
+#define PSRCFGLIST PSRCFGLISTA
+#endif // _S_UNICODE
+
+
+
+typedef struct {
+ WORD wType;
+ WORD wProbability;
+ DWORD dwValue;
+ } SRCFGSYMBOL, * PSRCFGSYMBOL;
+
+
+
+typedef struct {
+ DWORD dwSize;
+ DWORD dwWordNum;
+ WCHAR szWord[0];
+ } SRWORDW, * PSRWORDW;
+
+typedef struct {
+ DWORD dwSize;
+ DWORD dwWordNum;
+ CHAR szWord[0];
+ } SRWORDA, * PSRWORDA;
+
+#ifdef _S_UNICODE
+#define SRWORD SRWORDW
+#define PSRWORD PSRWORDW
+#else
+#define SRWORD SRWORDA
+#define PSRWORD PSRWORDA
+#endif // _S_UNICODE
+
+
+
+typedef struct {
+ DWORD dwSize;
+ BYTE abWords[0];
+ } SRPHRASEW, * PSRPHRASEW;
+
+typedef struct {
+ DWORD dwSize;
+ BYTE abWords[0];
+ } SRPHRASEA, * PSRPHRASEA;
+
+#ifdef _S_UNICODE
+#define SRPHRASE SRPHRASEW
+#define PSRPHRASE PSRPHRASEW
+#else
+#define SRPHRASE SRPHRASEA
+#define PSRPHRASE PSRPHRASEA
+#endif // _S_UNICODE
+
+
+
+typedef struct {
+ DWORD dwType;
+ DWORD dwFlags;
+ } SRHEADER, *PSRHEADER;
+
+typedef struct {
+ DWORD dwChunkID;
+ DWORD dwChunkSize;
+ BYTE avInfo[0];
+ } SRCHUNK, *PSRCHUNK;
+
+
+
+typedef struct {
+ GUID gEngineID;
+ WCHAR szMfgName[SRMI_NAMELEN];
+ WCHAR szProductName[SRMI_NAMELEN];
+ GUID gModeID;
+ WCHAR szModeName[SRMI_NAMELEN];
+ LANGUAGEW language;
+ DWORD dwSequencing;
+ DWORD dwMaxWordsVocab;
+ DWORD dwMaxWordsState;
+ DWORD dwGrammars;
+ DWORD dwFeatures;
+ DWORD dwInterfaces;
+ DWORD dwEngineFeatures;
+ } SRMODEINFOW, * PSRMODEINFOW;
+
+typedef struct {
+ GUID gEngineID;
+ CHAR szMfgName[SRMI_NAMELEN];
+ CHAR szProductName[SRMI_NAMELEN];
+ GUID gModeID;
+ CHAR szModeName[SRMI_NAMELEN];
+ LANGUAGEA language;
+ DWORD dwSequencing;
+ DWORD dwMaxWordsVocab;
+ DWORD dwMaxWordsState;
+ DWORD dwGrammars;
+ DWORD dwFeatures;
+ DWORD dwInterfaces;
+ DWORD dwEngineFeatures;
+ } SRMODEINFOA, * PSRMODEINFOA;
+
+#ifdef _S_UNICODE
+#define SRMODEINFO SRMODEINFOW
+#define PSRMODEINFO PSRMODEINFOW
+#else
+#define SRMODEINFO SRMODEINFOA
+#define PSRMODEINFO PSRMODEINFOA
+#endif // _S_UNICODE
+
+
+
+typedef struct {
+ DWORD dwEngineID;
+ DWORD dwMfgName;
+ DWORD dwProductName;
+ DWORD dwModeID;
+ DWORD dwModeName;
+ DWORD dwLanguage;
+ DWORD dwDialect;
+ DWORD dwSequencing;
+ DWORD dwMaxWordsVocab;
+ DWORD dwMaxWordsState;
+ DWORD dwGrammars;
+ DWORD dwFeatures;
+ DWORD dwInterfaces;
+ DWORD dwEngineFeatures;
+ } SRMODEINFORANK, * PSRMODEINFORANK;
+
+
+
+// speech recognition enumeration sharing object
+typedef struct {
+ QWORD qwInstanceID;
+ DWORD dwDeviceID;
+ SRMODEINFOW srModeInfo;
+} SRSHAREW, * PSRSHAREW;
+
+typedef struct {
+ QWORD qwInstanceID;
+ DWORD dwDeviceID;
+ SRMODEINFOA srModeInfo;
+} SRSHAREA, * PSRSHAREA;
+
+#ifdef _S_UNICODE
+#define SRSHARE SRSHAREW
+#define PSRSHARE PSRSHAREW
+#else
+#define SRSHARE SRSHAREA
+#define PSRSHARE PSRSHAREA
+#endif // _S_UNICODE
+
+
+
+
+// ISRCentral::GrammarLoad
+typedef enum {
+ SRGRMFMT_CFG = 0x0000,
+ SRGRMFMT_LIMITEDDOMAIN = 0x0001,
+ SRGRMFMT_DICTATION = 0x0002,
+ SRGRMFMT_CFGNATIVE = 0x8000,
+ SRGRMFMT_LIMITEDDOMAINNATIVE = 0x8001,
+ SRGRMFMT_DICTATIONNATIVE = 0x8002,
+ SRGRMFMT_DRAGONNATIVE1 = 0x8101,
+ SRGRMFMT_DRAGONNATIVE2 = 0x8102,
+ SRGRMFMT_DRAGONNATIVE3 = 0x8103
+ } SRGRMFMT, * PSRGRMFMT;
+
+// SRCKD_NGRAM
+typedef struct {
+ QWORD dwTotalCounts;
+ DWORD dwNumWordsClasses;
+ DWORD dwWordClassNameOffset;
+ DWORD dwNumContextGroups;
+ DWORD dwContextGroupOffset;
+ DWORD dwNumClasses;
+ DWORD dwClassOffset;
+ BYTE bBitsPerWord;
+ BYTE abFiller[3];
+ DWORD adwProbability[256];
+ } NGRAMHDR, * PNGRAMHDR;
+
+typedef struct {
+ DWORD dwSize;
+ QWORD dwTotalCounts;
+ DWORD adwWordClassID[4];
+ DWORD dwNumSequential;
+ DWORD dwNumRandomAccess;
+ BYTE bBackOffProbToken;
+ BYTE abFiller[3];
+ // WORD or DWORD awRandomAccessWordsClasses[dwNumRandomAccess];
+ // BYTE abProbToken[dwNumSequential+dwNumRandomAccess];
+ } NGRAMCGHDR, *PNGRAMCGHDR;
+
+
+/************************************************************************
+Class IDs */
+
+
+// {E02D16C0-C743-11cd-80E5-00AA003E4B50}
+DEFINE_GUID(CLSID_SREnumerator,
+0xe02d16c0, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
+
+
+/************************************************************************
+interfaces */
+
+
+/*
+ * ISRAttributes
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRAttributesW
+
+DEFINE_GUID(IID_ISRAttributesW, 0x68A33AA0L, 0x44CD, 0x101B, 0x90, 0xA8, 0x00, 0xAA, 0x00, 0x3E, 0x4B, 0x50);
+
+DECLARE_INTERFACE_ (ISRAttributesW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRAttributesW members
+ STDMETHOD (AutoGainEnableGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (AutoGainEnableSet) (THIS_ DWORD) PURE;
+ STDMETHOD (EchoGet) (THIS_ BOOL *) PURE;
+ STDMETHOD (EchoSet) (THIS_ BOOL) PURE;
+ STDMETHOD (EnergyFloorGet) (THIS_ WORD *) PURE;
+ STDMETHOD (EnergyFloorSet) (THIS_ WORD) PURE;
+ STDMETHOD (MicrophoneGet) (THIS_ PWSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (MicrophoneSet) (THIS_ PCWSTR) PURE;
+ STDMETHOD (RealTimeGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (RealTimeSet) (THIS_ DWORD) PURE;
+ STDMETHOD (SpeakerGet) (THIS_ PWSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (SpeakerSet) (THIS_ PCWSTR) PURE;
+ STDMETHOD (TimeOutGet) (THIS_ DWORD *, DWORD *) PURE;
+ STDMETHOD (TimeOutSet) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (ThresholdGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (ThresholdSet) (THIS_ DWORD) PURE;
+ };
+
+typedef ISRAttributesW FAR * PISRATTRIBUTESW;
+
+
+#undef INTERFACE
+#define INTERFACE ISRAttributesA
+
+DEFINE_GUID(IID_ISRAttributesA, 0x2F26B9C1L, 0xDB31, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRAttributesA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRAttributesA members
+ STDMETHOD (AutoGainEnableGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (AutoGainEnableSet) (THIS_ DWORD) PURE;
+ STDMETHOD (EchoGet) (THIS_ BOOL *) PURE;
+ STDMETHOD (EchoSet) (THIS_ BOOL) PURE;
+ STDMETHOD (EnergyFloorGet) (THIS_ WORD *) PURE;
+ STDMETHOD (EnergyFloorSet) (THIS_ WORD) PURE;
+ STDMETHOD (MicrophoneGet) (THIS_ PSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (MicrophoneSet) (THIS_ PCSTR) PURE;
+ STDMETHOD (RealTimeGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (RealTimeSet) (THIS_ DWORD) PURE;
+ STDMETHOD (SpeakerGet) (THIS_ PSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (SpeakerSet) (THIS_ PCSTR) PURE;
+ STDMETHOD (TimeOutGet) (THIS_ DWORD *, DWORD *) PURE;
+ STDMETHOD (TimeOutSet) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (ThresholdGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (ThresholdSet) (THIS_ DWORD) PURE;
+ };
+
+typedef ISRAttributesA FAR * PISRATTRIBUTESA;
+
+
+#ifdef _S_UNICODE
+ #define ISRAttributes ISRAttributesW
+ #define IID_ISRAttributes IID_ISRAttributesW
+ #define PISRATTRIBUTES PISRATTRIBUTESW
+
+#else
+ #define ISRAttributes ISRAttributesA
+ #define IID_ISRAttributes IID_ISRAttributesA
+ #define PISRATTRIBUTES PISRATTRIBUTESA
+
+#endif // _S_UNICODE
+
+/*
+ * ISRCentral
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRCentralW
+
+DEFINE_GUID(IID_ISRCentralW, 0xB9BD3860L, 0x44DB, 0x101B, 0x90, 0xA8, 0x00, 0xAA, 0x00, 0x3E, 0x4B, 0x50);
+
+DECLARE_INTERFACE_ (ISRCentralW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRCentralW members
+ STDMETHOD (ModeGet) (THIS_ PSRMODEINFOW) PURE;
+ STDMETHOD (GrammarLoad) (THIS_ SRGRMFMT, SDATA, PVOID, IID, LPUNKNOWN *) PURE;
+ STDMETHOD (Pause) (THIS) PURE;
+ STDMETHOD (PosnGet) (THIS_ PQWORD) PURE;
+ STDMETHOD (Resume) (THIS) PURE;
+ STDMETHOD (ToFileTime) (THIS_ PQWORD, FILETIME *) PURE;
+ STDMETHOD (Register) (THIS_ PVOID, IID, DWORD*) PURE;
+ STDMETHOD (UnRegister) (THIS_ DWORD) PURE;
+ };
+
+typedef ISRCentralW FAR * PISRCENTRALW;
+
+
+#undef INTERFACE
+#define INTERFACE ISRCentralA
+
+DEFINE_GUID(IID_ISRCentralA, 0x2F26B9C2L, 0xDB31, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRCentralA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRCentralA members
+ STDMETHOD (ModeGet) (THIS_ PSRMODEINFOA) PURE;
+ STDMETHOD (GrammarLoad) (THIS_ SRGRMFMT, SDATA, PVOID, IID, LPUNKNOWN *) PURE;
+ STDMETHOD (Pause) (THIS) PURE;
+ STDMETHOD (PosnGet) (THIS_ PQWORD) PURE;
+ STDMETHOD (Resume) (THIS) PURE;
+ STDMETHOD (ToFileTime) (THIS_ PQWORD, FILETIME *) PURE;
+ STDMETHOD (Register) (THIS_ PVOID, IID, DWORD*) PURE;
+ STDMETHOD (UnRegister) (THIS_ DWORD) PURE;
+ };
+
+typedef ISRCentralA FAR * PISRCENTRALA;
+
+
+#ifdef _S_UNICODE
+ #define ISRCentral ISRCentralW
+ #define IID_ISRCentral IID_ISRCentralW
+ #define PISRCENTRAL PISRCENTRALW
+
+#else
+ #define ISRCentral ISRCentralA
+ #define IID_ISRCentral IID_ISRCentralA
+ #define PISRCENTRAL PISRCENTRALA
+
+#endif // _S_UNICODE
+
+
+
+/*
+ * ISRDialogs
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRDialogsW
+
+DEFINE_GUID(IID_ISRDialogsW, 0xBCFB4C60L, 0x44DB, 0x101B, 0x90, 0xA8, 0x00, 0xAA, 0x00, 0x3E, 0x4B, 0x50);
+
+DECLARE_INTERFACE_ (ISRDialogsW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRDialogsW members
+ STDMETHOD (AboutDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (GeneralDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (LexiconDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (TrainMicDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (TrainGeneralDlg)(THIS_ HWND, PCWSTR) PURE;
+ };
+
+typedef ISRDialogsW FAR * PISRDIALOGSW;
+
+
+#undef INTERFACE
+#define INTERFACE ISRDialogsA
+
+DEFINE_GUID(IID_ISRDialogsA, 0x05EB6C60L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRDialogsA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRDialogsA members
+ STDMETHOD (AboutDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (GeneralDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (LexiconDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (TrainMicDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (TrainGeneralDlg)(THIS_ HWND, PCSTR) PURE;
+ };
+
+typedef ISRDialogsA FAR * PISRDIALOGSA;
+
+
+#ifdef _S_UNICODE
+ #define ISRDialogs ISRDialogsW
+ #define IID_ISRDialogs IID_ISRDialogsW
+ #define PISRDIALOGS PISRDIALOGSW
+
+#else
+ #define ISRDialogs ISRDialogsA
+ #define IID_ISRDialogs IID_ISRDialogsA
+ #define PISRDIALOGS PISRDIALOGSA
+
+#endif
+
+
+/*
+ * ISRDialogs2
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRDialogs2W
+
+// {9B445330-E39F-11d1-BED7-006008317CE8}
+DEFINE_GUID(IID_ISRDialogs2W,
+0x9b445330, 0xe39f, 0x11d1, 0xbe, 0xd7, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (ISRDialogs2W, ISRDialogsW) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRDialogs2W members
+ STDMETHOD (AboutDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (GeneralDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (LexiconDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (TrainMicDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (TrainGeneralDlg)(THIS_ HWND, PCWSTR) PURE;
+
+ STDMETHOD (TrainPhrasesDlg)(THIS_ HWND, PCWSTR, PCWSTR) PURE;
+ };
+
+typedef ISRDialogs2W FAR * PISRDIALOGS2W;
+
+
+#undef INTERFACE
+#define INTERFACE ISRDialogs2A
+
+// {9B445331-E39F-11d1-BED7-006008317CE8}
+DEFINE_GUID(IID_ISRDialogs2A,
+0x9b445331, 0xe39f, 0x11d1, 0xbe, 0xd7, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (ISRDialogs2A, ISRDialogsA) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRDialogs2A members
+ STDMETHOD (AboutDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (GeneralDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (LexiconDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (TrainMicDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (TrainGeneralDlg)(THIS_ HWND, PCSTR) PURE;
+
+ STDMETHOD (TrainPhrasesDlg)(THIS_ HWND, PCSTR, PCSTR) PURE;
+ };
+
+typedef ISRDialogs2A FAR * PISRDIALOGS2A;
+
+
+#ifdef _S_UNICODE
+ #define ISRDialogs2 ISRDialogs2W
+ #define IID_ISRDialogs2 IID_ISRDialogs2W
+ #define PISRDIALOGS2 PISRDIALOGS2W
+
+#else
+ #define ISRDialogs2 ISRDialogs2A
+ #define IID_ISRDialogs2 IID_ISRDialogs2A
+ #define PISRDIALOGS2 PISRDIALOGS2A
+
+#endif
+
+
+/*
+ * ISREnum
+ */
+
+#undef INTERFACE
+#define INTERFACE ISREnumW
+
+DEFINE_GUID(IID_ISREnumW, 0xBFA9F1A0L, 0x44DB, 0x101B, 0x90, 0xA8, 0x00, 0xAA, 0x00, 0x3E, 0x4B, 0x50);
+
+DECLARE_INTERFACE_ (ISREnumW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISREnumW members
+ STDMETHOD (Next) (THIS_ ULONG, PSRMODEINFOW, ULONG *) PURE;
+ STDMETHOD (Skip) (THIS_ ULONG) PURE;
+ STDMETHOD (Reset) (THIS) PURE;
+ STDMETHOD (Clone) (THIS_ ISREnumW * FAR *) PURE;
+ STDMETHOD (Select) (THIS_ GUID, PISRCENTRALW *, LPUNKNOWN) PURE;
+ };
+
+typedef ISREnumW FAR * PISRENUMW;
+
+
+#undef INTERFACE
+#define INTERFACE ISREnumA
+
+DEFINE_GUID(IID_ISREnumA, 0x05EB6C61L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISREnumA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISREnumA members
+ STDMETHOD (Next) (THIS_ ULONG, PSRMODEINFOA, ULONG *) PURE;
+ STDMETHOD (Skip) (THIS_ ULONG) PURE;
+ STDMETHOD (Reset) (THIS) PURE;
+ STDMETHOD (Clone) (THIS_ ISREnumA * FAR *) PURE;
+ STDMETHOD (Select) (THIS_ GUID, PISRCENTRALA *, LPUNKNOWN) PURE;
+ };
+
+typedef ISREnumA FAR * PISRENUMA;
+
+
+#ifdef _S_UNICODE
+ #define ISREnum ISREnumW
+ #define IID_ISREnum IID_ISREnumW
+ #define PISRENUM PISRENUMW
+
+#else
+ #define ISREnum ISREnumA
+ #define IID_ISREnum IID_ISREnumA
+ #define PISRENUM PISRENUMA
+
+#endif
+
+
+
+/*
+ * ISRFind
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRFindW
+
+DEFINE_GUID(IID_ISRFindW, 0xC2835060L, 0x44DB, 0x101B, 0x90, 0xA8, 0x00, 0xAA, 0x00, 0x3E, 0x4B, 0x50);
+
+DECLARE_INTERFACE_ (ISRFindW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRFindW members
+ STDMETHOD (Find) (THIS_ PSRMODEINFOW, PSRMODEINFORANK, PSRMODEINFOW) PURE;
+ STDMETHOD (Select) (THIS_ GUID, PISRCENTRALW *, LPUNKNOWN) PURE;
+ };
+
+typedef ISRFindW FAR * PISRFINDW;
+
+
+#undef INTERFACE
+#define INTERFACE ISRFindA
+
+DEFINE_GUID(IID_ISRFindA, 0x05EB6C62L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRFindA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRFindA members
+ STDMETHOD (Find) (THIS_ PSRMODEINFOA, PSRMODEINFORANK, PSRMODEINFOA) PURE;
+ STDMETHOD (Select) (THIS_ GUID, PISRCENTRALA *, LPUNKNOWN) PURE;
+ };
+
+typedef ISRFindA FAR * PISRFINDA;
+
+
+#ifdef _S_UNICODE
+ #define ISRFind ISRFindW
+ #define IID_ISRFind IID_ISRFindW
+ #define PISRFIND PISRFINDW
+
+#else
+ #define ISRFind ISRFindA
+ #define IID_ISRFind IID_ISRFindA
+ #define PISRFIND PISRFINDA
+
+#endif
+
+
+/*
+ * ISRGramLexPron
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRGramLexPronW
+
+// {7EB4B631-19A7-11d1-AF95-0000F81E880D}
+DEFINE_GUID(IID_ISRGramLexPronW, 0x7eb4b631, 0x19a7, 0x11d1, 0xaf, 0x95, 0x0, 0x0, 0xf8, 0x1e, 0x88, 0xd);
+
+DECLARE_INTERFACE_ (ISRGramLexPronW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRGramLexPronW members
+ STDMETHOD (Add) (THIS_ VOICECHARSET, PCWSTR, PCWSTR,
+ VOICEPARTOFSPEECH, PVOID, DWORD, BOOL) PURE;
+ STDMETHOD (Get) (THIS_ VOICECHARSET, PCWSTR, WORD, PWSTR,
+ DWORD, DWORD *, VOICEPARTOFSPEECH *, PVOID,
+ DWORD, DWORD *) PURE;
+ STDMETHOD (Remove) (THIS_ PCWSTR, WORD) PURE;
+ STDMETHOD (LexiconDlg) (THIS_ HWND, PCWSTR, PCWSTR) PURE;
+ };
+
+typedef ISRGramLexPronW FAR * PISRGRAMLEXPRONW;
+
+
+#undef INTERFACE
+#define INTERFACE ISRGramLexPronA
+
+// {7EB4B632-19A7-11d1-AF95-0000F81E880D}
+DEFINE_GUID(IID_ISRGramLexPronA, 0x7eb4b632, 0x19a7, 0x11d1, 0xaf, 0x95, 0x0, 0x0, 0xf8, 0x1e, 0x88, 0xd);
+
+DECLARE_INTERFACE_ (ISRGramLexPronA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // LexPronA members
+ STDMETHOD (Add) (THIS_ VOICECHARSET, PCSTR, PCSTR,
+ VOICEPARTOFSPEECH, PVOID, DWORD, BOOL) PURE;
+ STDMETHOD (Get) (THIS_ VOICECHARSET, PCSTR, WORD, PSTR,
+ DWORD, DWORD *, VOICEPARTOFSPEECH *, PVOID,
+ DWORD, DWORD *) PURE;
+ STDMETHOD (Remove) (THIS_ PCSTR, WORD) PURE;
+ STDMETHOD (LexiconDlg) (THIS_ HWND, PCSTR, PCSTR) PURE;
+ };
+
+typedef ISRGramLexPronA FAR * PISRGRAMLEXPRONA;
+
+
+#ifdef _S_UNICODE
+ #define ISRGramLexPron ISRGramLexPronW
+ #define IID_ISRGramLexPron IID_ISRGramLexPronW
+ #define PISRGRAMLEXPRON PISRGRAMLEXPRONW
+
+#else
+ #define ISRGramLexPron ISRGramLexPronA
+ #define IID_ISRGramLexPron IID_ISRGramLexPronA
+ #define PISRGRAMLEXPRON PISRGRAMLEXPRONA
+
+#endif // _S_UNICODE
+
+
+/*
+ * ISRGramCommon
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRGramCommonW
+
+DEFINE_GUID(IID_ISRGramCommonW, 0xe8c3e160, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
+
+DECLARE_INTERFACE_ (ISRGramCommonW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRGramCommonW members
+ STDMETHOD (Activate) (THIS_ HWND, BOOL, PCWSTR) PURE;
+ STDMETHOD (Archive) (THIS_ BOOL, PVOID, DWORD, DWORD *) PURE;
+ STDMETHOD (BookMark) (THIS_ QWORD, DWORD) PURE;
+ STDMETHOD (Deactivate) (THIS_ PCWSTR) PURE;
+ STDMETHOD (DeteriorationGet) (THIS_ DWORD *, DWORD *, DWORD *) PURE;
+ STDMETHOD (DeteriorationSet) (THIS_ DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (TrainDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (TrainPhrase) (THIS_ DWORD, PSDATA) PURE;
+ STDMETHOD (TrainQuery) (THIS_ DWORD *) PURE;
+ };
+
+typedef ISRGramCommonW FAR * PISRGRAMCOMMONW;
+
+
+#undef INTERFACE
+#define INTERFACE ISRGramCommonA
+
+DEFINE_GUID(IID_ISRGramCommonA, 0x05EB6C63L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRGramCommonA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRGramCommonA members
+ STDMETHOD (Activate) (THIS_ HWND, BOOL, PCSTR) PURE;
+ STDMETHOD (Archive) (THIS_ BOOL, PVOID, DWORD, DWORD *) PURE;
+ STDMETHOD (BookMark) (THIS_ QWORD, DWORD) PURE;
+ STDMETHOD (Deactivate) (THIS_ PCSTR) PURE;
+ STDMETHOD (DeteriorationGet) (THIS_ DWORD *, DWORD *, DWORD *) PURE;
+ STDMETHOD (DeteriorationSet) (THIS_ DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (TrainDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (TrainPhrase) (THIS_ DWORD, PSDATA) PURE;
+ STDMETHOD (TrainQuery) (THIS_ DWORD *) PURE;
+ };
+
+typedef ISRGramCommonA FAR * PISRGRAMCOMMONA;
+
+
+#ifdef _S_UNICODE
+ #define ISRGramCommon ISRGramCommonW
+ #define IID_ISRGramCommon IID_ISRGramCommonW
+ #define PISRGRAMCOMMON PISRGRAMCOMMONW
+
+#else
+ #define ISRGramCommon ISRGramCommonA
+ #define IID_ISRGramCommon IID_ISRGramCommonA
+ #define PISRGRAMCOMMON PISRGRAMCOMMONA
+
+#endif
+
+
+
+/*
+ * ISRGramCFG
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRGramCFGW
+
+DEFINE_GUID(IID_ISRGramCFGW, 0xecc0b180, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
+
+DECLARE_INTERFACE_ (ISRGramCFGW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRGramCFGW members
+ STDMETHOD (LinkQuery) (THIS_ PCWSTR, BOOL *) PURE;
+ STDMETHOD (ListAppend) (THIS_ PCWSTR, SDATA) PURE;
+ STDMETHOD (ListGet) (THIS_ PCWSTR, PSDATA) PURE;
+ STDMETHOD (ListRemove) (THIS_ PCWSTR, SDATA) PURE;
+ STDMETHOD (ListSet) (THIS_ PCWSTR, SDATA) PURE;
+ STDMETHOD (ListQuery) (THIS_ PCWSTR, BOOL *) PURE;
+ };
+
+typedef ISRGramCFGW FAR * PISRGRAMCFGW;
+
+
+#undef INTERFACE
+#define INTERFACE ISRGramCFGA
+
+DEFINE_GUID(IID_ISRGramCFGA, 0x05EB6C64L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRGramCFGA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRGramCFGA members
+ STDMETHOD (LinkQuery) (THIS_ PCSTR, BOOL *) PURE;
+ STDMETHOD (ListAppend) (THIS_ PCSTR, SDATA) PURE;
+ STDMETHOD (ListGet) (THIS_ PCSTR, PSDATA) PURE;
+ STDMETHOD (ListRemove) (THIS_ PCSTR, SDATA) PURE;
+ STDMETHOD (ListSet) (THIS_ PCSTR, SDATA) PURE;
+ STDMETHOD (ListQuery) (THIS_ PCSTR, BOOL *) PURE;
+ };
+
+typedef ISRGramCFGA FAR * PISRGRAMCFGA;
+
+
+#ifdef _S_UNICODE
+ #define ISRGramCFG ISRGramCFGW
+ #define IID_ISRGramCFG IID_ISRGramCFGW
+ #define PISRGRAMCFG PISRGRAMCFGW
+
+#else
+ #define ISRGramCFG ISRGramCFGA
+ #define IID_ISRGramCFG IID_ISRGramCFGA
+ #define PISRGRAMCFG PISRGRAMCFGA
+
+#endif
+
+
+
+/*
+ * ISRGramDictation
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRGramDictationW
+
+DEFINE_GUID(IID_ISRGramDictationW, 0x090CD9A3, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRGramDictationW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRGramDictationW members
+ STDMETHOD (Context) (THIS_ PCWSTR, PCWSTR) PURE;
+ STDMETHOD (Hint) (THIS_ PCWSTR) PURE;
+ STDMETHOD (Words) (THIS_ PCWSTR) PURE;
+ };
+
+typedef ISRGramDictationW FAR *PISRGRAMDICTATIONW;
+
+
+#undef INTERFACE
+#define INTERFACE ISRGramDictationA
+
+DEFINE_GUID(IID_ISRGramDictationA, 0x05EB6C65L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRGramDictationA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRGramDictationA members
+ STDMETHOD (Context) (THIS_ PCSTR, PCSTR) PURE;
+ STDMETHOD (Hint) (THIS_ PCSTR) PURE;
+ STDMETHOD (Words) (THIS_ PCSTR) PURE;
+ };
+
+typedef ISRGramDictationA FAR *PISRGRAMDICTATIONA;
+
+
+#ifdef _S_UNICODE
+ #define ISRGramDictation ISRGramDictationW
+ #define IID_ISRGramDictation IID_ISRGramDictationW
+ #define PISRGRAMDICTATION PISRGRAMDICTATIONW
+
+#else
+ #define ISRGramDictation ISRGramDictationA
+ #define IID_ISRGramDictation IID_ISRGramDictationA
+ #define PISRGRAMDICTATION PISRGRAMDICTATIONA
+
+#endif
+
+
+
+// ISRGramInsertionGUI
+// This does not need an ANSI/UNICODE interface because no characters are passed
+#undef INTERFACE
+#define INTERFACE ISRGramInsertionGUI
+
+// {090CD9A4-DA1A-11CD-B3CA-00AA0047BA4F}
+DEFINE_GUID(IID_ISRGramInsertionGUI,
+0x090CD9A4, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRGramInsertionGUI, IUnknown) {
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRGramInsertionGUI members
+ STDMETHOD (Hide) (THIS) PURE;
+ STDMETHOD (Move) (THIS_ RECT) PURE;
+ STDMETHOD (Show) (THIS_ HWND) PURE;
+ };
+
+typedef ISRGramInsertionGUI FAR *PISRGRAMINSERTIONGUI;
+
+
+
+/*
+ * ISRGramNotifySink
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRGramNotifySinkW
+
+DEFINE_GUID(IID_ISRGramNotifySinkW, 0xf106bfa0, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
+
+DECLARE_INTERFACE_ (ISRGramNotifySinkW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRGramNotifySinkW members
+ STDMETHOD (BookMark) (THIS_ DWORD) PURE;
+ STDMETHOD (Paused) (THIS) PURE;
+ STDMETHOD (PhraseFinish) (THIS_ DWORD, QWORD, QWORD, PSRPHRASEW, LPUNKNOWN) PURE;
+ STDMETHOD (PhraseHypothesis)(THIS_ DWORD, QWORD, QWORD, PSRPHRASEW, LPUNKNOWN) PURE;
+ STDMETHOD (PhraseStart) (THIS_ QWORD) PURE;
+ STDMETHOD (ReEvaluate) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (Training) (THIS_ DWORD) PURE;
+ STDMETHOD (UnArchive) (THIS_ LPUNKNOWN) PURE;
+ };
+
+typedef ISRGramNotifySinkW FAR * PISRGRAMNOTIFYSINKW;
+
+
+// ISRGramNotifySinkA
+#undef INTERFACE
+#define INTERFACE ISRGramNotifySinkA
+
+// {EFEEA350-CE5E-11cd-9D96-00AA002FC7C9}
+DEFINE_GUID(IID_ISRGramNotifySinkA,
+0xefeea350, 0xce5e, 0x11cd, 0x9d, 0x96, 0x0, 0xaa, 0x0, 0x2f, 0xc7, 0xc9);
+
+DECLARE_INTERFACE_ (ISRGramNotifySinkA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRGramNotifySinkA members
+ STDMETHOD (BookMark) (THIS_ DWORD) PURE;
+ STDMETHOD (Paused) (THIS) PURE;
+ STDMETHOD (PhraseFinish) (THIS_ DWORD, QWORD, QWORD, PSRPHRASEA, LPUNKNOWN) PURE;
+ STDMETHOD (PhraseHypothesis)(THIS_ DWORD, QWORD, QWORD, PSRPHRASEA, LPUNKNOWN) PURE;
+ STDMETHOD (PhraseStart) (THIS_ QWORD) PURE;
+ STDMETHOD (ReEvaluate) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (Training) (THIS_ DWORD) PURE;
+ STDMETHOD (UnArchive) (THIS_ LPUNKNOWN) PURE;
+ };
+
+typedef ISRGramNotifySinkA FAR * PISRGRAMNOTIFYSINKA;
+
+
+#ifdef _S_UNICODE
+ #define ISRGramNotifySink ISRGramNotifySinkW
+ #define IID_ISRGramNotifySink IID_ISRGramNotifySinkW
+ #define PISRGRAMNOTIFYSINK PISRGRAMNOTIFYSINKW
+
+#else
+ #define ISRGramNotifySink ISRGramNotifySinkA
+ #define IID_ISRGramNotifySink IID_ISRGramNotifySinkA
+ #define PISRGRAMNOTIFYSINK PISRGRAMNOTIFYSINKA
+
+#endif // _S_UNICODE
+
+
+
+// ISRNotifySink
+// This does not need an ANSI/UNICODE interface because no characters are passed
+#undef INTERFACE
+#define INTERFACE ISRNotifySink
+
+DEFINE_GUID(IID_ISRNotifySink,
+0x090CD9B0L, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRNotifySink, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRNotifySink members
+ STDMETHOD (AttribChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (Interference) (THIS_ QWORD, QWORD, DWORD) PURE;
+ STDMETHOD (Sound) (THIS_ QWORD, QWORD) PURE;
+ STDMETHOD (UtteranceBegin) (THIS_ QWORD) PURE;
+ STDMETHOD (UtteranceEnd) (THIS_ QWORD, QWORD) PURE;
+ STDMETHOD (VUMeter) (THIS_ QWORD, WORD) PURE;
+ };
+
+typedef ISRNotifySink FAR *PISRNOTIFYSINK;
+
+// Just in case anyone uses the wide/ansi versions
+#define ISRNotifySinkW ISRNotifySink
+#define IID_ISRNotifySinkW IID_ISRNotifySink
+#define PISRNOTIFYSINKW PISRNOTIFYSINK
+#define ISRNotifySinkA ISRNotifySink
+#define IID_ISRNotifySinkA IID_ISRNotifySink
+#define PISRNOTIFYSINKA PISRNOTIFYSINK
+
+
+// ISRNotifySink2
+// This does not need an ANSI/UNICODE interface because no characters are passed
+#undef INTERFACE
+#define INTERFACE ISRNotifySink2
+
+// {9B445332-E39F-11d1-BED7-006008317CE8}
+DEFINE_GUID(IID_ISRNotifySink2,
+0x9b445332, 0xe39f, 0x11d1, 0xbe, 0xd7, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (ISRNotifySink2, ISRNotifySink) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRNotifySink2 members
+ STDMETHOD (AttribChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (Interference) (THIS_ QWORD, QWORD, DWORD) PURE;
+ STDMETHOD (Sound) (THIS_ QWORD, QWORD) PURE;
+ STDMETHOD (UtteranceBegin) (THIS_ QWORD) PURE;
+ STDMETHOD (UtteranceEnd) (THIS_ QWORD, QWORD) PURE;
+ STDMETHOD (VUMeter) (THIS_ QWORD, WORD) PURE;
+
+ STDMETHOD (Training) (THIS) PURE;
+ STDMETHOD (Error) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (Warning) (THIS_ LPUNKNOWN) PURE;
+ };
+
+typedef ISRNotifySink2 FAR *PISRNOTIFYSINK2;
+
+
+/*
+ * ISRResBasic
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRResBasicW
+
+DEFINE_GUID(IID_ISRResBasicW, 0x090CD9A5, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRResBasicW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResBasicW members
+ STDMETHOD (PhraseGet) (THIS_ DWORD, PSRPHRASEW, DWORD, DWORD *) PURE;
+ STDMETHOD (Identify) (THIS_ GUID *) PURE;
+ STDMETHOD (TimeGet) (THIS_ PQWORD, PQWORD) PURE;
+ STDMETHOD (FlagsGet) (THIS_ DWORD, DWORD *) PURE;
+ };
+
+typedef ISRResBasicW FAR *PISRRESBASICW;
+
+
+#undef INTERFACE
+#define INTERFACE ISRResBasicA
+
+DEFINE_GUID(IID_ISRResBasicA, 0x05EB6C66L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRResBasicA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResBasicA members
+ STDMETHOD (PhraseGet) (THIS_ DWORD, PSRPHRASEA, DWORD, DWORD *) PURE;
+ STDMETHOD (Identify) (THIS_ GUID *) PURE;
+ STDMETHOD (TimeGet) (THIS_ PQWORD, PQWORD) PURE;
+ STDMETHOD (FlagsGet) (THIS_ DWORD, DWORD *) PURE;
+ };
+
+typedef ISRResBasicA FAR *PISRRESBASICA;
+
+
+#ifdef _S_UNICODE
+ #define ISRResBasic ISRResBasicW
+ #define IID_ISRResBasic IID_ISRResBasicW
+ #define PISRRESBASIC PISRRESBASICW
+
+#else
+ #define ISRResBasic ISRResBasicA
+ #define IID_ISRResBasic IID_ISRResBasicA
+ #define PISRRESBASIC PISRRESBASICA
+
+#endif // _S_UNICODE
+
+
+/*
+ * ISRResScore
+ * This does not need an ANSI/UNICODE interface because no characters are passed
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRResScores
+
+
+// {0B37F1E0-B8DE-11cf-B22E-00AA00A215ED}
+DEFINE_GUID(IID_ISRResScores, 0xb37f1e0, 0xb8de, 0x11cf, 0xb2, 0x2e, 0x0, 0xaa, 0x0, 0xa2, 0x15, 0xed);
+
+DECLARE_INTERFACE_ (ISRResScores, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResScores members
+ STDMETHOD (GetPhraseScore) (THIS_ DWORD, long FAR *) PURE;
+ STDMETHOD (GetWordScores) (THIS_ DWORD, long FAR *, DWORD, LPDWORD) PURE;
+};
+
+typedef ISRResScores FAR* PISRRESSCORES;
+
+// In case someone uses the A/W versions...
+
+#define ISRResScoresW ISRResScores
+#define IID_ISRResScoresW IID_ISRResScores
+#define PISRRESSCORESW PISRRESSCORES
+#define ISRResScoresA ISRResScores
+#define IID_ISRResScoresA IID_ISRResScores
+#define PISRRESSCORESA PISRRESSCORES
+
+
+
+/*
+ * ISRResMerge
+ * This does not need an ANSI/UNICODE interface because no characters are passed
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRResMerge
+
+DEFINE_GUID(IID_ISRResMerge, 0x090CD9A6, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRResMerge, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResMerge members
+ STDMETHOD (Merge) (THIS_ LPUNKNOWN, PIUNKNOWN ) PURE;
+ STDMETHOD (Split) (THIS_ QWORD, PIUNKNOWN , PIUNKNOWN ) PURE;
+ };
+
+typedef ISRResMerge FAR *PISRRESMERGE;
+
+
+
+/*
+ * ISRResAudio
+ * This does not need an ANSI/UNICODE interface because no characters are passed
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRResAudio
+
+DEFINE_GUID(IID_ISRResAudio, 0x090CD9A7, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRResAudio, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResAudio members
+ STDMETHOD (GetWAV) (THIS_ PSDATA) PURE;
+ };
+
+typedef ISRResAudio FAR *PISRRESAUDIO;
+
+
+
+/*
+ * ISRResAudioEx
+ * This does not need an ANSI/UNICODE interface because no characters are passed
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRResAudioEx
+
+DEFINE_GUID(IID_ISRResAudioEx, 0xaad74c30, 0x4b02, 0x11d1, 0xb7, 0x92, 0x0, 0x60, 0x97, 0x98, 0x41, 0xb4);
+
+DECLARE_INTERFACE_ (ISRResAudioEx, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResAudioEx members
+ STDMETHOD (GetWAV) (THIS_ PSDATA, QWORD, QWORD) PURE;
+ };
+
+typedef ISRResAudioEx FAR *PISRRESAUDIOEX;
+
+
+
+/*
+ * ISRResCorrection
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRResCorrectionW
+
+DEFINE_GUID(IID_ISRResCorrectionW, 0x090CD9A8L, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRResCorrectionW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResCorrectionW members
+ STDMETHOD (Correction) (THIS_ PSRPHRASEW, WORD) PURE;
+ STDMETHOD (Validate) (THIS_ WORD) PURE;
+ };
+
+typedef ISRResCorrectionW FAR *PISRRESCORRECTIONW;
+
+
+#undef INTERFACE
+#define INTERFACE ISRResCorrectionA
+
+DEFINE_GUID(IID_ISRResCorrectionA, 0x05EB6C67L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRResCorrectionA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResCorrectionA members
+ STDMETHOD (Correction) (THIS_ PSRPHRASEA, WORD) PURE;
+ STDMETHOD (Validate) (THIS_ WORD) PURE;
+ };
+
+typedef ISRResCorrectionA FAR *PISRRESCORRECTIONA;
+
+
+#ifdef _S_UNICODE
+ #define ISRResCorrection ISRResCorrectionW
+ #define IID_ISRResCorrection IID_ISRResCorrectionW
+ #define PISRRESCORRECTION PISRRESCORRECTIONW
+
+#else
+ #define ISRResCorrection ISRResCorrectionA
+ #define IID_ISRResCorrection IID_ISRResCorrectionA
+ #define PISRRESCORRECTION PISRRESCORRECTIONA
+
+#endif // _S_UNICODE
+
+
+
+// ISRResEval
+// This does not need an ANSI/UNICODE interface because no characters are passed
+#undef INTERFACE
+#define INTERFACE ISRResEval
+
+// {90CD9A9-DA1A-11CD-B3CA-00AA0047BA4F}
+DEFINE_GUID(IID_ISRResEval,
+0x090CD9A9, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRResEval, IUnknown) {
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // SRResEval members
+ STDMETHOD (ReEvaluate) (THIS_ BOOL *) PURE;
+ };
+
+typedef ISRResEval FAR *PISRRESEVAL;
+
+
+
+/*
+ * ISRResGraph
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRResGraphW
+
+DEFINE_GUID(IID_ISRResGraphW, 0x090CD9AA, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRResGraphW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResGraphW members
+ STDMETHOD (BestPathPhoneme) (THIS_ DWORD, DWORD *, DWORD, DWORD *) PURE;
+ STDMETHOD (BestPathWord) (THIS_ DWORD, DWORD *, DWORD, DWORD *) PURE;
+ STDMETHOD (GetPhonemeNode) (THIS_ DWORD, PSRRESPHONEMENODE, PWCHAR,
+ PWCHAR) PURE;
+ STDMETHOD (GetWordNode) (THIS_ DWORD, PSRRESWORDNODE, PSRWORDW, DWORD,
+ DWORD *) PURE;
+ STDMETHOD (PathScorePhoneme) (THIS_ DWORD *, DWORD, LONG *) PURE;
+ STDMETHOD (PathScoreWord) (THIS_ DWORD *, DWORD, LONG *) PURE;
+ };
+
+typedef ISRResGraphW FAR *PISRRESGRAPHW;
+
+
+#undef INTERFACE
+#define INTERFACE ISRResGraphA
+
+DEFINE_GUID(IID_ISRResGraphA, 0x05EB6C68L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRResGraphA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResGraphA members
+ STDMETHOD (BestPathPhoneme) (THIS_ DWORD, DWORD *, DWORD, DWORD *) PURE;
+ STDMETHOD (BestPathWord) (THIS_ DWORD, DWORD *, DWORD, DWORD *) PURE;
+ STDMETHOD (GetPhonemeNode) (THIS_ DWORD, PSRRESPHONEMENODE, PWCHAR,
+ PCHAR) PURE;
+ STDMETHOD (GetWordNode) (THIS_ DWORD, PSRRESWORDNODE, PSRWORDA, DWORD,
+ DWORD *) PURE;
+ STDMETHOD (PathScorePhoneme) (THIS_ DWORD *, DWORD, LONG *) PURE;
+ STDMETHOD (PathScoreWord) (THIS_ DWORD *, DWORD, LONG *) PURE;
+ };
+
+typedef ISRResGraphA FAR *PISRRESGRAPHA;
+
+
+#ifdef _S_UNICODE
+ #define ISRResGraph ISRResGraphW
+ #define IID_ISRResGraph IID_ISRResGraphW
+ #define PISRRESGRAPH PISRRESGRAPHW
+
+#else
+ #define ISRResGraph ISRResGraphA
+ #define IID_ISRResGraph IID_ISRResGraphA
+ #define PISRRESGRAPH PISRRESGRAPHA
+
+#endif // _S_UNICODE
+
+
+
+/*
+ * ISRResGraphEx
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRResGraphEx
+
+DEFINE_GUID(IID_ISRResGraphEx, 0xbe8f63a0, 0xb915, 0x11d1, 0xb7, 0xbc, 0x0, 0x60, 0x97, 0x98, 0x41, 0xb4);
+
+DECLARE_INTERFACE_ (ISRResGraphEx, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResGraphEx members
+ STDMETHOD (NodeStartGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (NodeEndGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (ArcEnum) (THIS_ DWORD, DWORD *, DWORD, DWORD *, BOOL) PURE;
+ STDMETHOD (NodeGet) (THIS_ DWORD, DWORD *, BOOL) PURE;
+ STDMETHOD (DWORDGet) (THIS_ DWORD, GUID, DWORD *) PURE;
+ STDMETHOD (DataGet) (THIS_ DWORD, GUID, SDATA *) PURE;
+ STDMETHOD (ScoreGet) (THIS_ DWORD, DWORD *, DWORD, DWORD, DWORD, DWORD *) PURE;
+ STDMETHOD (BestPathEnum) (THIS_ DWORD, DWORD *, DWORD, DWORD *, DWORD, BOOL, SDATA *) PURE;
+ STDMETHOD (GetAllArcs) (THIS_ DWORD *, DWORD, DWORD *, DWORD *) PURE;
+ STDMETHOD (GetAllNodes) (THIS_ DWORD *, DWORD, DWORD *, DWORD *) PURE;
+};
+
+typedef ISRResGraphEx FAR *PISRRESGRAPHEX;
+
+
+
+// ISRResMemory
+// This does not need an ANSI/UNICODE interface because no characters are passed
+#undef INTERFACE
+#define INTERFACE ISRResMemory
+
+DEFINE_GUID(IID_ISRResMemory, 0x090CD9AB, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRResMemory, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResMemory members
+ STDMETHOD (Free) (THIS_ DWORD) PURE;
+ STDMETHOD (Get) (THIS_ DWORD *, DWORD *) PURE;
+ STDMETHOD (LockGet) (THIS_ BOOL *) PURE;
+ STDMETHOD (LockSet) (THIS_ BOOL) PURE;
+ };
+
+typedef ISRResMemory FAR *PISRRESMEMORY;
+
+
+
+// ISRResModifyGUI
+// This does not need an ANSI/UNICODE interface because no characters are passed
+#undef INTERFACE
+#define INTERFACE ISRResModifyGUI
+
+DEFINE_GUID(IID_ISRResModifyGUI, 0x090CD9AC, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRResModifyGUI, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResModifyGUI members
+ STDMETHOD (Hide) (THIS) PURE;
+ STDMETHOD (Move) (THIS_ RECT *) PURE;
+ STDMETHOD (Show) (THIS_ HWND) PURE;
+ };
+
+typedef ISRResModifyGUI FAR *PISRRESMODIFYGUI;
+
+
+
+/*
+ * ISRResSpeakerW
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRResSpeakerW
+
+DEFINE_GUID(IID_ISRResSpeakerW, 0x090CD9AD, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRResSpeakerW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResSpeakerW members
+ STDMETHOD (Correction) (THIS_ PCWSTR, WORD) PURE;
+ STDMETHOD (Validate) (THIS_ WORD) PURE;
+ STDMETHOD (Identify) (THIS_ DWORD, PWSTR, DWORD, DWORD *,
+ LONG *) PURE;
+ STDMETHOD (IdentifyForFree) (THIS_ BOOL *) PURE;
+ };
+
+typedef ISRResSpeakerW FAR *PISRRESSPEAKERW;
+
+
+#undef INTERFACE
+#define INTERFACE ISRResSpeakerA
+
+DEFINE_GUID(IID_ISRResSpeakerA, 0x05EB6C69L, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRResSpeakerA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRResSpeakerA members
+ STDMETHOD (Correction) (THIS_ PCSTR, WORD) PURE;
+ STDMETHOD (Validate) (THIS_ WORD) PURE;
+ STDMETHOD (Identify) (THIS_ DWORD, PSTR, DWORD, DWORD *,
+ LONG *) PURE;
+ STDMETHOD (IdentifyForFree) (THIS_ BOOL *) PURE;
+ };
+
+typedef ISRResSpeakerA FAR *PISRRESSPEAKERA;
+
+
+#ifdef _S_UNICODE
+ #define ISRResSpeaker ISRResSpeakerW
+ #define IID_ISRResSpeaker IID_ISRResSpeakerW
+ #define PISRRESSPEAKER PISRRESSPEAKERW
+
+#else
+ #define ISRResSpeaker ISRResSpeakerA
+ #define IID_ISRResSpeaker IID_ISRResSpeakerA
+ #define PISRRESSPEAKER PISRRESSPEAKERA
+
+#endif // _S_UNICODE
+
+
+
+/*
+ * ISRSpeaker
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRSpeakerW
+
+DEFINE_GUID(IID_ISRSpeakerW, 0x090CD9AE, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRSpeakerW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRSpeakerW members
+ STDMETHOD (Delete) (THIS_ PCWSTR) PURE;
+ STDMETHOD (Enum) (THIS_ PWSTR *, DWORD *) PURE;
+ STDMETHOD (Merge) (THIS_ PCWSTR, PVOID, DWORD) PURE;
+ STDMETHOD (New) (THIS_ PCWSTR) PURE;
+ STDMETHOD (Query) (THIS_ PWSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (Read) (THIS_ PCWSTR, PVOID *, DWORD *) PURE;
+ STDMETHOD (Revert) (THIS_ PCWSTR) PURE;
+ STDMETHOD (Select) (THIS_ PCWSTR, BOOL) PURE;
+ STDMETHOD (Write) (THIS_ PCWSTR, PVOID, DWORD) PURE;
+ };
+
+typedef ISRSpeakerW FAR *PISRSPEAKERW;
+
+
+#undef INTERFACE
+#define INTERFACE ISRSpeakerA
+
+DEFINE_GUID(IID_ISRSpeakerA, 0x090CD9AF, 0xDA1A, 0x11CD, 0xB3, 0xCA, 0x0, 0xAA, 0x0, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ISRSpeakerA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRSpeakerA members
+ STDMETHOD (Delete) (THIS_ PCSTR) PURE;
+ STDMETHOD (Enum) (THIS_ PSTR *, DWORD *) PURE;
+ STDMETHOD (Merge) (THIS_ PCSTR, PVOID, DWORD) PURE;
+ STDMETHOD (New) (THIS_ PCSTR) PURE;
+ STDMETHOD (Query) (THIS_ PSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (Read) (THIS_ PCSTR, PVOID *, DWORD *) PURE;
+ STDMETHOD (Revert) (THIS_ PCSTR) PURE;
+ STDMETHOD (Select) (THIS_ PCSTR, BOOL) PURE;
+ STDMETHOD (Write) (THIS_ PCSTR, PVOID, DWORD) PURE;
+ };
+
+typedef ISRSpeakerA FAR *PISRSPEAKERA;
+
+
+#ifdef _S_UNICODE
+ #define ISRSpeaker ISRSpeakerW
+ #define IID_ISRSpeaker IID_ISRSpeakerW
+ #define PISRSPEAKER PISRSPEAKERW
+
+#else
+ #define ISRSpeaker ISRSpeakerA
+ #define IID_ISRSpeaker IID_ISRSpeakerA
+ #define PISRSPEAKER PISRSPEAKERA
+
+#endif // _S_UNICODE
+
+
+/*
+ * ISRSpeaker2
+ */
+
+#undef INTERFACE
+#define INTERFACE ISRSpeaker2W
+
+// {9B445333-E39F-11d1-BED7-006008317CE8}
+DEFINE_GUID(IID_ISRSpeaker2W,
+0x9b445333, 0xe39f, 0x11d1, 0xbe, 0xd7, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (ISRSpeaker2W, ISRSpeakerW) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRSpeaker2W members
+ STDMETHOD (Delete) (THIS_ PCWSTR) PURE;
+ STDMETHOD (Enum) (THIS_ PWSTR *, DWORD *) PURE;
+ STDMETHOD (Merge) (THIS_ PCWSTR, PVOID, DWORD) PURE;
+ STDMETHOD (New) (THIS_ PCWSTR) PURE;
+ STDMETHOD (Query) (THIS_ PWSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (Read) (THIS_ PCWSTR, PVOID *, DWORD *) PURE;
+ STDMETHOD (Revert) (THIS_ PCWSTR) PURE;
+ STDMETHOD (Select) (THIS_ PCWSTR, BOOL) PURE;
+ STDMETHOD (Write) (THIS_ PCWSTR, PVOID, DWORD) PURE;
+
+ STDMETHOD (Commit) (THIS) PURE;
+ STDMETHOD (Rename) (THIS_ PCWSTR, PCWSTR) PURE;
+ STDMETHOD (GetChangedInfo) (THIS_ BOOL *, FILETIME*) PURE;
+ };
+
+typedef ISRSpeaker2W FAR *PISRSPEAKER2W;
+
+
+#undef INTERFACE
+#define INTERFACE ISRSpeaker2A
+
+// {9B445334-E39F-11d1-BED7-006008317CE8}
+DEFINE_GUID(IID_ISRSpeaker2A,
+0x9b445334, 0xe39f, 0x11d1, 0xbe, 0xd7, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (ISRSpeaker2A, ISRSpeakerA) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISRSpeaker2A members
+ STDMETHOD (Delete) (THIS_ PCSTR) PURE;
+ STDMETHOD (Enum) (THIS_ PSTR *, DWORD *) PURE;
+ STDMETHOD (Merge) (THIS_ PCSTR, PVOID, DWORD) PURE;
+ STDMETHOD (New) (THIS_ PCSTR) PURE;
+ STDMETHOD (Query) (THIS_ PSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (Read) (THIS_ PCSTR, PVOID *, DWORD *) PURE;
+ STDMETHOD (Revert) (THIS_ PCSTR) PURE;
+ STDMETHOD (Select) (THIS_ PCSTR, BOOL) PURE;
+ STDMETHOD (Write) (THIS_ PCSTR, PVOID, DWORD) PURE;
+
+ STDMETHOD (Commit) (THIS) PURE;
+ STDMETHOD (Rename) (THIS_ PCSTR, PCSTR) PURE;
+ STDMETHOD (GetChangedInfo) (THIS_ BOOL *, FILETIME*) PURE;
+ };
+
+typedef ISRSpeaker2A FAR *PISRSPEAKER2A;
+
+
+#ifdef _S_UNICODE
+ #define ISRSpeaker2 ISRSpeaker2W
+ #define IID_ISRSpeaker2 IID_ISRSpeaker2W
+ #define PISRSPEAKER2 PISRSPEAKER2W
+
+#else
+ #define ISRSpeaker2 ISRSpeaker2A
+ #define IID_ISRSpeaker2 IID_ISRSpeaker2A
+ #define PISRSPEAKER2 PISRSPEAKER2A
+
+#endif // _S_UNICODE
+
+
+/************************************************************************
+Low-Level text-to-speech API
+*/
+
+
+/************************************************************************
+defines */
+
+#define TTSI_NAMELEN SVFN_LEN
+#define TTSI_STYLELEN SVFN_LEN
+
+#define GENDER_NEUTRAL (0)
+#define GENDER_FEMALE (1)
+#define GENDER_MALE (2)
+
+#define TTSFEATURE_ANYWORD SETBIT(0)
+#define TTSFEATURE_VOLUME SETBIT(1)
+#define TTSFEATURE_SPEED SETBIT(2)
+#define TTSFEATURE_PITCH SETBIT(3)
+#define TTSFEATURE_TAGGED SETBIT(4)
+#define TTSFEATURE_IPAUNICODE SETBIT(5)
+#define TTSFEATURE_VISUAL SETBIT(6)
+#define TTSFEATURE_WORDPOSITION SETBIT(7)
+#define TTSFEATURE_PCOPTIMIZED SETBIT(8)
+#define TTSFEATURE_PHONEOPTIMIZED SETBIT(9)
+#define TTSFEATURE_FIXEDAUDIO SETBIT(10)
+#define TTSFEATURE_SINGLEINSTANCE SETBIT(11)
+#define TTSFEATURE_THREADSAFE SETBIT(12)
+#define TTSFEATURE_IPATEXTDATA SETBIT(13)
+#define TTSFEATURE_PREFERRED SETBIT(14)
+#define TTSFEATURE_TRANSPLANTED SETBIT(15)
+#define TTSFEATURE_SAPI4 SETBIT(16)
+
+#define TTSI_ILEXPRONOUNCE SETBIT(0)
+#define TTSI_ITTSATTRIBUTES SETBIT(1)
+#define TTSI_ITTSCENTRAL SETBIT(2)
+#define TTSI_ITTSDIALOGS SETBIT(3)
+#define TTSI_ATTRIBUTES SETBIT(4)
+#define TTSI_IATTRIBUTES SETBIT(4)
+#define TTSI_ILEXPRONOUNCE2 SETBIT(5)
+
+#define TTSDATAFLAG_TAGGED SETBIT(0)
+
+#define TTSBNS_ABORTED SETBIT(0)
+
+// ITTSNotifySink
+#define TTSNSAC_REALTIME 0
+#define TTSNSAC_PITCH 1
+#define TTSNSAC_SPEED 2
+#define TTSNSAC_VOLUME 3
+
+
+#define TTSNSHINT_QUESTION SETBIT(0)
+#define TTSNSHINT_STATEMENT SETBIT(1)
+#define TTSNSHINT_COMMAND SETBIT(2)
+#define TTSNSHINT_EXCLAMATION SETBIT(3)
+#define TTSNSHINT_EMPHASIS SETBIT(4)
+
+
+// Ages
+#define TTSAGE_BABY 1
+#define TTSAGE_TODDLER 3
+#define TTSAGE_CHILD 6
+#define TTSAGE_ADOLESCENT 14
+#define TTSAGE_ADULT 30
+#define TTSAGE_ELDERLY 70
+
+// Attribute minimums and maximums
+#define TTSATTR_MINPITCH 0
+#define TTSATTR_MAXPITCH 0xffff
+#define TTSATTR_MINREALTIME 0
+#define TTSATTR_MAXREALTIME 0xffffffff
+#define TTSATTR_MINSPEED 0
+#define TTSATTR_MAXSPEED 0xffffffff
+#define TTSATTR_MINVOLUME 0
+#define TTSATTR_MAXVOLUME 0xffffffff
+
+
+/************************************************************************
+typedefs */
+
+typedef struct {
+ BYTE bMouthHeight;
+ BYTE bMouthWidth;
+ BYTE bMouthUpturn;
+ BYTE bJawOpen;
+ BYTE bTeethUpperVisible;
+ BYTE bTeethLowerVisible;
+ BYTE bTonguePosn;
+ BYTE bLipTension;
+ } TTSMOUTH, *PTTSMOUTH;
+
+
+
+typedef struct {
+ GUID gEngineID;
+ WCHAR szMfgName[TTSI_NAMELEN];
+ WCHAR szProductName[TTSI_NAMELEN];
+ GUID gModeID;
+ WCHAR szModeName[TTSI_NAMELEN];
+ LANGUAGEW language;
+ WCHAR szSpeaker[TTSI_NAMELEN];
+ WCHAR szStyle[TTSI_STYLELEN];
+ WORD wGender;
+ WORD wAge;
+ DWORD dwFeatures;
+ DWORD dwInterfaces;
+ DWORD dwEngineFeatures;
+ } TTSMODEINFOW, *PTTSMODEINFOW;
+
+typedef struct {
+ GUID gEngineID;
+ CHAR szMfgName[TTSI_NAMELEN];
+ CHAR szProductName[TTSI_NAMELEN];
+ GUID gModeID;
+ CHAR szModeName[TTSI_NAMELEN];
+ LANGUAGEA language;
+ CHAR szSpeaker[TTSI_NAMELEN];
+ CHAR szStyle[TTSI_STYLELEN];
+ WORD wGender;
+ WORD wAge;
+ DWORD dwFeatures;
+ DWORD dwInterfaces;
+ DWORD dwEngineFeatures;
+ } TTSMODEINFOA, *PTTSMODEINFOA;
+
+#ifdef _S_UNICODE
+ #define TTSMODEINFO TTSMODEINFOW
+ #define PTTSMODEINFO PTTSMODEINFOW
+
+#else
+ #define TTSMODEINFO TTSMODEINFOA
+ #define PTTSMODEINFO PTTSMODEINFOA
+
+#endif // _S_UNICODE
+
+
+
+typedef struct {
+ DWORD dwEngineID;
+ DWORD dwMfgName;
+ DWORD dwProductName;
+ DWORD dwModeID;
+ DWORD dwModeName;
+ DWORD dwLanguage;
+ DWORD dwDialect;
+ DWORD dwSpeaker;
+ DWORD dwStyle;
+ DWORD dwGender;
+ DWORD dwAge;
+ DWORD dwFeatures;
+ DWORD dwInterfaces;
+ DWORD dwEngineFeatures;
+ } TTSMODEINFORANK, * PTTSMODEINFORANK;
+
+/************************************************************************
+Class IDs */
+// {D67C0280-C743-11cd-80E5-00AA003E4B50}
+DEFINE_GUID(CLSID_TTSEnumerator,
+0xd67c0280, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
+
+/************************************************************************
+interfaces */
+
+// ITTSAttributes
+
+#undef INTERFACE
+#define INTERFACE ITTSAttributesW
+
+DEFINE_GUID(IID_ITTSAttributesW, 0x1287A280L, 0x4A47, 0x101B, 0x93, 0x1A, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ITTSAttributesW, IUnknown) {
+
+// IUnknown members
+
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+// ITTSAttributes members
+
+ STDMETHOD (PitchGet) (THIS_ WORD *) PURE;
+ STDMETHOD (PitchSet) (THIS_ WORD) PURE;
+ STDMETHOD (RealTimeGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (RealTimeSet) (THIS_ DWORD) PURE;
+ STDMETHOD (SpeedGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (SpeedSet) (THIS_ DWORD) PURE;
+ STDMETHOD (VolumeGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (VolumeSet) (THIS_ DWORD) PURE;
+ };
+
+typedef ITTSAttributesW FAR * PITTSATTRIBUTESW;
+
+
+#undef INTERFACE
+#define INTERFACE ITTSAttributesA
+
+DEFINE_GUID(IID_ITTSAttributesA,
+0x0FD6E2A1L, 0xE77D, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ITTSAttributesA, IUnknown) {
+
+// IUnknown members
+
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+// ITTSAttributes members
+
+ STDMETHOD (PitchGet) (THIS_ WORD *) PURE;
+ STDMETHOD (PitchSet) (THIS_ WORD) PURE;
+ STDMETHOD (RealTimeGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (RealTimeSet) (THIS_ DWORD) PURE;
+ STDMETHOD (SpeedGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (SpeedSet) (THIS_ DWORD) PURE;
+ STDMETHOD (VolumeGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (VolumeSet) (THIS_ DWORD) PURE;
+ };
+
+typedef ITTSAttributesA FAR * PITTSATTRIBUTESA;
+
+
+#ifdef _S_UNICODE
+ #define ITTSAttributes ITTSAttributesW
+ #define IID_ITTSAttributes IID_ITTSAttributesW
+ #define PITTSATTRIBUTES PITTSATTRIBUTESW
+
+#else
+ #define ITTSAttributes ITTSAttributesA
+ #define IID_ITTSAttributes IID_ITTSAttributesA
+ #define PITTSATTRIBUTES PITTSATTRIBUTESA
+
+#endif // _S_UNICODE
+
+
+
+// ITTSBufNotifySink
+
+#undef INTERFACE
+#define INTERFACE ITTSBufNotifySink
+
+// {E4963D40-C743-11cd-80E5-00AA003E4B50}
+DEFINE_GUID(IID_ITTSBufNotifySink,
+0xe4963d40, 0xc743, 0x11cd, 0x80, 0xe5, 0x0, 0xaa, 0x0, 0x3e, 0x4b, 0x50);
+
+DECLARE_INTERFACE_ (ITTSBufNotifySink, IUnknown) {
+
+// IUnknown members
+
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+// ITTSBufNotifySink members
+
+ STDMETHOD (TextDataDone) (THIS_ QWORD, DWORD) PURE;
+ STDMETHOD (TextDataStarted)(THIS_ QWORD) PURE;
+ STDMETHOD (BookMark) (THIS_ QWORD, DWORD) PURE;
+ STDMETHOD (WordPosition) (THIS_ QWORD, DWORD) PURE;
+ };
+
+typedef ITTSBufNotifySink FAR * PITTSBUFNOTIFYSINK;
+
+// In case anyone uses the W or A interface
+#define ITTSBufNotifySinkW ITTSBufNotifySink
+#define IID_ITTSBufNotifySinkW IID_ITTSBufNotifySink
+#define PITTSBUFNOTIFYSINKW PITTSBUFNOTIFYSINK
+#define ITTSBufNotifySinkA ITTSBufNotifySink
+#define IID_ITTSBufNotifySinkA IID_ITTSBufNotifySink
+#define PITTSBUFNOTIFYSINKA PITTSBUFNOTIFYSINK
+
+
+
+/*
+ * ITTSCentral
+ */
+
+#undef INTERFACE
+#define INTERFACE ITTSCentralW
+
+DEFINE_GUID(IID_ITTSCentralW, 0x28016060L, 0x4A47, 0x101B, 0x93, 0x1A, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ITTSCentralW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ITTSCentralW members
+ STDMETHOD (Inject) (THIS_ PCWSTR) PURE;
+ STDMETHOD (ModeGet) (THIS_ PTTSMODEINFOW) PURE;
+ STDMETHOD (Phoneme) (THIS_ VOICECHARSET, DWORD, SDATA, PSDATA) PURE;
+ STDMETHOD (PosnGet) (THIS_ PQWORD) PURE;
+ STDMETHOD (TextData) (THIS_ VOICECHARSET, DWORD, SDATA, PVOID, IID) PURE;
+ STDMETHOD (ToFileTime) (THIS_ PQWORD, FILETIME *) PURE;
+ STDMETHOD (AudioPause) (THIS) PURE;
+ STDMETHOD (AudioResume) (THIS) PURE;
+ STDMETHOD (AudioReset) (THIS) PURE;
+ STDMETHOD (Register) (THIS_ PVOID, IID, DWORD*) PURE;
+ STDMETHOD (UnRegister) (THIS_ DWORD) PURE;
+ };
+
+typedef ITTSCentralW FAR * PITTSCENTRALW;
+
+
+#undef INTERFACE
+#define INTERFACE ITTSCentralA
+
+DEFINE_GUID(IID_ITTSCentralA, 0x05EB6C6AL, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ITTSCentralA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ITTSCentralA members
+ STDMETHOD (Inject) (THIS_ PCSTR) PURE;
+ STDMETHOD (ModeGet) (THIS_ PTTSMODEINFOA) PURE;
+ STDMETHOD (Phoneme) (THIS_ VOICECHARSET, DWORD, SDATA, PSDATA) PURE;
+ STDMETHOD (PosnGet) (THIS_ PQWORD) PURE;
+ STDMETHOD (TextData) (THIS_ VOICECHARSET, DWORD, SDATA, PVOID, IID) PURE;
+ STDMETHOD (ToFileTime) (THIS_ PQWORD, FILETIME *) PURE;
+ STDMETHOD (AudioPause) (THIS) PURE;
+ STDMETHOD (AudioResume) (THIS) PURE;
+ STDMETHOD (AudioReset) (THIS) PURE;
+ STDMETHOD (Register) (THIS_ PVOID, IID, DWORD*) PURE;
+ STDMETHOD (UnRegister) (THIS_ DWORD) PURE;
+ };
+
+typedef ITTSCentralA FAR * PITTSCENTRALA;
+
+
+#ifdef _S_UNICODE
+ #define ITTSCentral ITTSCentralW
+ #define IID_ITTSCentral IID_ITTSCentralW
+ #define PITTSCENTRAL PITTSCENTRALW
+
+#else
+ #define ITTSCentral ITTSCentralA
+ #define IID_ITTSCentral IID_ITTSCentralA
+ #define PITTSCENTRAL PITTSCENTRALA
+
+#endif // _S_UNICODE
+
+
+
+/*
+ * ITTSDialogsW
+ */
+
+#undef INTERFACE
+#define INTERFACE ITTSDialogsW
+
+DEFINE_GUID(IID_ITTSDialogsW, 0x47F59D00L, 0x4A47, 0x101B, 0x93, 0x1A, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ITTSDialogsW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ITTSDialogsW members
+ STDMETHOD (AboutDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (LexiconDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (GeneralDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (TranslateDlg) (THIS_ HWND, PCWSTR) PURE;
+ };
+
+typedef ITTSDialogsW FAR * PITTSDIALOGSW;
+
+
+#undef INTERFACE
+#define INTERFACE ITTSDialogsA
+
+DEFINE_GUID(IID_ITTSDialogsA, 0x05EB6C6BL, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ITTSDialogsA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ITTSDialogsA members
+ STDMETHOD (AboutDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (LexiconDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (GeneralDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (TranslateDlg) (THIS_ HWND, PCSTR) PURE;
+ };
+
+typedef ITTSDialogsA FAR * PITTSDIALOGSA;
+
+
+#ifdef _S_UNICODE
+ #define ITTSDialogs ITTSDialogsW
+ #define IID_ITTSDialogs IID_ITTSDialogsW
+ #define PITTSDIALOGS PITTSDIALOGSW
+
+#else
+ #define ITTSDialogs ITTSDialogsA
+ #define IID_ITTSDialogs IID_ITTSDialogsA
+ #define PITTSDIALOGS PITTSDIALOGSA
+
+#endif
+
+
+
+/*
+ * ITTSEnum
+ */
+
+#undef INTERFACE
+#define INTERFACE ITTSEnumW
+
+DEFINE_GUID(IID_ITTSEnumW, 0x6B837B20L, 0x4A47, 0x101B, 0x93, 0x1A, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ITTSEnumW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ITTSEnumW members
+ STDMETHOD (Next) (THIS_ ULONG, PTTSMODEINFOW, ULONG *) PURE;
+ STDMETHOD (Skip) (THIS_ ULONG) PURE;
+ STDMETHOD (Reset) (THIS) PURE;
+ STDMETHOD (Clone) (THIS_ ITTSEnumW * FAR *) PURE;
+ STDMETHOD (Select) (THIS_ GUID, PITTSCENTRALW *, LPUNKNOWN) PURE;
+ };
+
+typedef ITTSEnumW FAR * PITTSENUMW;
+
+
+#undef INTERFACE
+#define INTERFACE ITTSEnumA
+
+DEFINE_GUID(IID_ITTSEnumA, 0x05EB6C6DL, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ITTSEnumA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ITTSEnumA members
+ STDMETHOD (Next) (THIS_ ULONG, PTTSMODEINFOA, ULONG *) PURE;
+ STDMETHOD (Skip) (THIS_ ULONG) PURE;
+ STDMETHOD (Reset) (THIS) PURE;
+ STDMETHOD (Clone) (THIS_ ITTSEnumA * FAR *) PURE;
+ STDMETHOD (Select) (THIS_ GUID, PITTSCENTRALA *, LPUNKNOWN) PURE;
+ };
+
+typedef ITTSEnumA FAR * PITTSENUMA;
+
+
+#ifdef _S_UNICODE
+ #define ITTSEnum ITTSEnumW
+ #define IID_ITTSEnum IID_ITTSEnumW
+ #define PITTSENUM PITTSENUMW
+
+#else
+ #define ITTSEnum ITTSEnumA
+ #define IID_ITTSEnum IID_ITTSEnumA
+ #define PITTSENUM PITTSENUMA
+
+#endif
+
+
+
+/*
+ * ITTSFind
+ */
+
+#undef INTERFACE
+#define INTERFACE ITTSFindW
+
+DEFINE_GUID(IID_ITTSFindW, 0x7AA42960L, 0x4A47, 0x101B, 0x93, 0x1A, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ITTSFindW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ITTSFindW members
+ STDMETHOD (Find) (THIS_ PTTSMODEINFOW, PTTSMODEINFORANK, PTTSMODEINFOW) PURE;
+ STDMETHOD (Select) (THIS_ GUID, PITTSCENTRALW *, LPUNKNOWN) PURE;
+ };
+
+typedef ITTSFindW FAR * PITTSFINDW;
+
+
+#undef INTERFACE
+#define INTERFACE ITTSFindA
+
+DEFINE_GUID(IID_ITTSFindA, 0x05EB6C6EL, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ITTSFindA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ITTSFindA members
+ STDMETHOD (Find) (THIS_ PTTSMODEINFOA, PTTSMODEINFORANK, PTTSMODEINFOA) PURE;
+ STDMETHOD (Select) (THIS_ GUID, PITTSCENTRALA *, LPUNKNOWN) PURE;
+ };
+
+typedef ITTSFindA FAR * PITTSFINDA;
+
+
+#ifdef _S_UNICODE
+ #define ITTSFind ITTSFindW
+ #define IID_ITTSFind IID_ITTSFindW
+ #define PITTSFIND PITTSFINDW
+
+#else
+ #define ITTSFind ITTSFindA
+ #define IID_ITTSFind IID_ITTSFindA
+ #define PITTSFIND PITTSFINDA
+
+#endif
+
+
+
+/*
+ * ITTSNotifySink
+ */
+
+#undef INTERFACE
+#define INTERFACE ITTSNotifySinkW
+
+DEFINE_GUID(IID_ITTSNotifySinkW, 0xC0FA8F40L, 0x4A46, 0x101B, 0x93, 0x1A, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ITTSNotifySinkW, IUnknown) {
+
+// IUnknown members
+
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+// ITTSNotifySinkW members
+
+ STDMETHOD (AttribChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (AudioStart) (THIS_ QWORD) PURE;
+ STDMETHOD (AudioStop) (THIS_ QWORD) PURE;
+ STDMETHOD (Visual) (THIS_ QWORD, WCHAR, WCHAR, DWORD, PTTSMOUTH) PURE;
+ };
+
+typedef ITTSNotifySinkW FAR * PITTSNOTIFYSINKW;
+
+
+#undef INTERFACE
+#define INTERFACE ITTSNotifySinkA
+
+DEFINE_GUID(IID_ITTSNotifySinkA, 0x05EB6C6FL, 0xDBAB, 0x11CD, 0xB3, 0xCA, 0x00, 0xAA, 0x00, 0x47, 0xBA, 0x4F);
+
+DECLARE_INTERFACE_ (ITTSNotifySinkA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ITTSNotifySinkA members
+ STDMETHOD (AttribChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (AudioStart) (THIS_ QWORD) PURE;
+ STDMETHOD (AudioStop) (THIS_ QWORD) PURE;
+ STDMETHOD (Visual) (THIS_ QWORD, CHAR, CHAR, DWORD, PTTSMOUTH) PURE;
+ };
+
+typedef ITTSNotifySinkA FAR * PITTSNOTIFYSINKA;
+
+
+#ifdef _S_UNICODE
+ #define ITTSNotifySink ITTSNotifySinkW
+ #define IID_ITTSNotifySink IID_ITTSNotifySinkW
+ #define PITTSNOTIFYSINK PITTSNOTIFYSINKW
+
+#else
+ #define ITTSNotifySink ITTSNotifySinkA
+ #define IID_ITTSNotifySink IID_ITTSNotifySinkA
+ #define PITTSNOTIFYSINK PITTSNOTIFYSINKA
+
+#endif
+
+
+/* ITTSNotifySink2 */
+
+#undef INTERFACE
+#define INTERFACE ITTSNotifySink2W
+
+// {599F77E1-E42E-11d1-BED8-006008317CE8}
+DEFINE_GUID(IID_ITTSNotifySink2W,
+0x599f77e1, 0xe42e, 0x11d1, 0xbe, 0xd8, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (ITTSNotifySink2W, ITTSNotifySinkW) {
+
+// IUnknown members
+
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+// ITTSNotifySink2W members
+
+ STDMETHOD (AttribChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (AudioStart) (THIS_ QWORD) PURE;
+ STDMETHOD (AudioStop) (THIS_ QWORD) PURE;
+ STDMETHOD (Visual) (THIS_ QWORD, WCHAR, WCHAR, DWORD, PTTSMOUTH) PURE;
+
+ STDMETHOD (Error) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (Warning) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (VisualFuture) (THIS_ DWORD, QWORD, WCHAR, WCHAR, DWORD, PTTSMOUTH) PURE;
+ };
+
+typedef ITTSNotifySink2W FAR * PITTSNOTIFYSINK2W;
+
+
+#undef INTERFACE
+#define INTERFACE ITTSNotifySink2A
+
+// {599F77E2-E42E-11d1-BED8-006008317CE8}
+DEFINE_GUID(IID_ITTSNotifySink2A,
+0x599f77e2, 0xe42e, 0x11d1, 0xbe, 0xd8, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (ITTSNotifySink2A, ITTSNotifySinkA) {
+
+ // IUnknown members
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ITTSNotifySink2A members
+ STDMETHOD (AttribChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (AudioStart) (THIS_ QWORD) PURE;
+ STDMETHOD (AudioStop) (THIS_ QWORD) PURE;
+ STDMETHOD (Visual) (THIS_ QWORD, CHAR, CHAR, DWORD, PTTSMOUTH) PURE;
+
+ STDMETHOD (Error) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (Warning) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (VisualFuture) (THIS_ DWORD, QWORD, CHAR, CHAR, DWORD, PTTSMOUTH) PURE;
+ };
+
+typedef ITTSNotifySink2A FAR * PITTSNOTIFYSINK2A;
+
+
+#ifdef _S_UNICODE
+ #define ITTSNotifySink2 ITTSNotifySink2W
+ #define IID_ITTSNotifySink2 IID_ITTSNotifySink2W
+ #define PITTSNOTIFYSINK2 PITTSNOTIFYSINK2W
+
+#else
+ #define ITTSNotifySink2 ITTSNotifySink2A
+ #define IID_ITTSNotifySink2 IID_ITTSNotifySink2A
+ #define PITTSNOTIFYSINK2 PITTSNOTIFYSINK2A
+
+#endif
+
+
+/************************************************************************
+High-Level command and control speech recognition API
+*/
+
+/************************************************************************
+defines */
+
+
+// VCMDNAME member lengths
+#define VCMD_APPLEN ((DWORD)32)
+#define VCMD_STATELEN VCMD_APPLEN
+#define VCMD_MICLEN VCMD_APPLEN
+#define VCMD_SPEAKERLEN VCMD_APPLEN
+
+// dwFlags parameter of IVoiceCmd::MenuCreate
+#define VCMDMC_CREATE_TEMP 0x00000001
+#define VCMDMC_CREATE_NEW 0x00000002
+#define VCMDMC_CREATE_ALWAYS 0x00000004
+#define VCMDMC_OPEN_ALWAYS 0x00000008
+#define VCMDMC_OPEN_EXISTING 0x00000010
+
+// dwFlags parameter of IVoiceCmd::Register
+#define VCMDRF_NOMESSAGES 0
+#define VCMDRF_ALLBUTVUMETER 0x00000001
+#define VCMDRF_VUMETER 0x00000002
+#define VCMDRF_ALLMESSAGES (VCMDRF_ALLBUTVUMETER | VCMDRF_VUMETER)
+
+// dwFlags parameter of IVoiceCmd::MenuEnum
+#define VCMDEF_DATABASE 0x00000000
+#define VCMDEF_ACTIVE 0x00000001
+#define VCMDEF_SELECTED 0x00000002
+#define VCMDEF_PERMANENT 0x00000004
+#define VCMDEF_TEMPORARY 0x00000008
+
+// dwFlags parameter of IVCmdMenu::Activate
+#define VWGFLAG_ASLEEP 0x00000001
+
+// wPriority parameter of IVCmdMenu::Activate
+#define VCMDACT_NORMAL (0x8000)
+#define VCMDACT_LOW (0x4000)
+#define VCMDACT_HIGH (0xC000)
+
+// dwFlags of the VCMDCOMMAND structure
+#define VCMDCMD_VERIFY 0x00000001
+#define VCMDCMD_DISABLED_TEMP 0x00000002
+#define VCMDCMD_DISABLED_PERM 0x00000004
+#define VCMDCMD_CANTRENAME 0x00000008
+
+// parameter to any function that processes individual commands
+#define VCMD_BY_POSITION 0x00000001
+#define VCMD_BY_IDENTIFIER 0x00000002
+
+
+// values for dwAttributes field of IVCmdNotifySink::AttribChanged
+#define IVCNSAC_AUTOGAINENABLE 0x00000001
+#define IVCNSAC_ENABLED 0x00000002
+#define IVCNSAC_AWAKE 0x00000004
+#define IVCNSAC_DEVICE 0x00000008
+#define IVCNSAC_MICROPHONE 0x00000010
+#define IVCNSAC_SPEAKER 0x00000020
+#define IVCNSAC_SRMODE 0x00000040
+#define IVCNSAC_THRESHOLD 0x00000080
+#define IVCNSAC_ORIGINAPP 0x00010000
+
+// values for dwAttributes field of IVTxtNotifySink::AttribChanged
+#define IVTNSAC_DEVICE 0x00000001
+#define IVTNSAC_ENABLED 0x00000002
+#define IVTNSAC_SPEED 0x00000004
+#define IVTNSAC_VOLUME 0x00000008
+#define IVTNSAC_TTSMODE 0x00000010
+
+
+// values used by IVXxxAttributes::SetMode to set the global speech
+// recognition mode
+#define VSRMODE_OFF 0x00000002
+#define VSRMODE_DISABLED 0x00000001
+#define VSRMODE_CMDPAUSED 0x00000004
+#define VSRMODE_CMDONLY 0x00000010
+#define VSRMODE_DCTONLY 0x00000020
+#define VSRMODE_CMDANDDCT 0x00000040
+
+
+/************************************************************************
+typedefs */
+
+// voice command structure - passed to command menu functions (IVCmdMenu)
+typedef struct {
+ DWORD dwSize; // size of struct including amount of abAction
+ DWORD dwFlags;
+ DWORD dwID; // Command ID
+ DWORD dwCommand; // DWORD aligned offset of command string
+ DWORD dwDescription; // DWORD aligned offset of description string
+ DWORD dwCategory; // DWORD aligned offset of category string
+ DWORD dwCommandText; // DWORD aligned offset of command text string
+ DWORD dwAction; // DWORD aligned offset of action data
+ DWORD dwActionSize; // size of the action data (could be string or binary)
+ BYTE abData[1]; // command, description, category, and action data
+ // (action data is NOT interpreted by voice command)
+} VCMDCOMMAND, * PVCMDCOMMAND;
+
+
+
+// site information structure - possible parameter to IVoiceCmd::Register
+typedef struct {
+ DWORD dwAutoGainEnable;
+ DWORD dwAwakeState;
+ DWORD dwThreshold;
+ DWORD dwDevice;
+ DWORD dwEnable;
+ WCHAR szMicrophone[VCMD_MICLEN];
+ WCHAR szSpeaker[VCMD_SPEAKERLEN];
+ GUID gModeID;
+} VCSITEINFOW, *PVCSITEINFOW;
+
+typedef struct {
+ DWORD dwAutoGainEnable;
+ DWORD dwAwakeState;
+ DWORD dwThreshold;
+ DWORD dwDevice;
+ DWORD dwEnable;
+ CHAR szMicrophone[VCMD_MICLEN];
+ CHAR szSpeaker[VCMD_SPEAKERLEN];
+ GUID gModeID;
+} VCSITEINFOA, *PVCSITEINFOA;
+
+
+
+// menu name structure
+typedef struct {
+ WCHAR szApplication[VCMD_APPLEN]; // unique application name
+ WCHAR szState[VCMD_STATELEN]; // unique application state
+} VCMDNAMEW, *PVCMDNAMEW;
+
+typedef struct {
+ CHAR szApplication[VCMD_APPLEN]; // unique application name
+ CHAR szState[VCMD_STATELEN]; // unique application state
+} VCMDNAMEA, *PVCMDNAMEA;
+
+
+
+#ifdef _S_UNICODE
+ #define VCSITEINFO VCSITEINFOW
+ #define PVCSITEINFO PVCSITEINFOW
+ #define VCMDNAME VCMDNAMEW
+ #define PVCMDNAME PVCMDNAMEW
+#else
+ #define VCSITEINFO VCSITEINFOA
+ #define PVCSITEINFO PVCSITEINFOA
+ #define VCMDNAME VCMDNAMEA
+ #define PVCMDNAME PVCMDNAMEA
+#endif // _S_UNICODE
+
+/************************************************************************
+interfaces */
+
+/*
+ * IVCmdNotifySink
+ */
+#undef INTERFACE
+#define INTERFACE IVCmdNotifySinkW
+
+DEFINE_GUID(IID_IVCmdNotifySinkW, 0xCCFD7A60L, 0x604D, 0x101B, 0x99, 0x26, 0x00, 0xAA, 0x00, 0x3C, 0xFC, 0x2C);
+
+DECLARE_INTERFACE_ (IVCmdNotifySinkW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVCmdNotifySink members
+
+ STDMETHOD (CommandRecognize) (THIS_ DWORD, PVCMDNAMEW, DWORD, DWORD, PVOID,
+ DWORD, PWSTR, PWSTR) PURE;
+ STDMETHOD (CommandOther) (THIS_ PVCMDNAMEW, PWSTR) PURE;
+ STDMETHOD (CommandStart) (THIS) PURE;
+ STDMETHOD (MenuActivate) (THIS_ PVCMDNAMEW, BOOL) PURE;
+ STDMETHOD (UtteranceBegin) (THIS) PURE;
+ STDMETHOD (UtteranceEnd) (THIS) PURE;
+ STDMETHOD (VUMeter) (THIS_ WORD) PURE;
+ STDMETHOD (AttribChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (Interference) (THIS_ DWORD) PURE;
+};
+
+typedef IVCmdNotifySinkW FAR * PIVCMDNOTIFYSINKW;
+
+
+#undef INTERFACE
+#define INTERFACE IVCmdNotifySinkA
+
+// {80B25CC0-5540-11b9-C000-5611722E1D15}
+DEFINE_GUID(IID_IVCmdNotifySinkA, 0x80b25cc0, 0x5540, 0x11b9, 0xc0, 0x0, 0x56, 0x11, 0x72, 0x2e, 0x1d, 0x15);
+
+DECLARE_INTERFACE_ (IVCmdNotifySinkA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVCmdNotifySinkA members
+
+ STDMETHOD (CommandRecognize) (THIS_ DWORD, PVCMDNAMEA, DWORD, DWORD, PVOID,
+ DWORD, PSTR, PSTR) PURE;
+ STDMETHOD (CommandOther) (THIS_ PVCMDNAMEA, PSTR) PURE;
+ STDMETHOD (CommandStart) (THIS) PURE;
+ STDMETHOD (MenuActivate) (THIS_ PVCMDNAMEA, BOOL) PURE;
+ STDMETHOD (UtteranceBegin) (THIS) PURE;
+ STDMETHOD (UtteranceEnd) (THIS) PURE;
+ STDMETHOD (VUMeter) (THIS_ WORD) PURE;
+ STDMETHOD (AttribChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (Interference) (THIS_ DWORD) PURE;
+};
+
+typedef IVCmdNotifySinkA FAR * PIVCMDNOTIFYSINKA;
+
+
+#ifdef _S_UNICODE
+ #define IVCmdNotifySink IVCmdNotifySinkW
+ #define IID_IVCmdNotifySink IID_IVCmdNotifySinkW
+ #define PIVCMDNOTIFYSINK PIVCMDNOTIFYSINKW
+
+#else
+ #define IVCmdNotifySink IVCmdNotifySinkA
+ #define IID_IVCmdNotifySink IID_IVCmdNotifySinkA
+ #define PIVCMDNOTIFYSINK PIVCMDNOTIFYSINKA
+
+#endif // _S_UNICODE
+
+
+/*
+ * IVCmdEnum
+ */
+#undef INTERFACE
+#define INTERFACE IVCmdEnumW
+
+DEFINE_GUID(IID_IVCmdEnumW, 0xD3CC0820L, 0x604D, 0x101B, 0x99, 0x26, 0x00, 0xAA, 0x00, 0x3C, 0xFC, 0x2C);
+
+DECLARE_INTERFACE_ (IVCmdEnumW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVCmdEnum members
+ STDMETHOD (Next) (THIS_ ULONG, PVCMDNAMEW, ULONG *) PURE;
+ STDMETHOD (Skip) (THIS_ ULONG) PURE;
+ STDMETHOD (Reset) (THIS) PURE;
+ STDMETHOD (Clone) (THIS_ IVCmdEnumW * FAR *) PURE;
+};
+typedef IVCmdEnumW FAR * PIVCMDENUMW;
+
+
+#undef INTERFACE
+#define INTERFACE IVCmdEnumA
+
+// {E86F9540-DCA2-11CD-A166-00AA004CD65C}
+DEFINE_GUID(IID_IVCmdEnumA,
+0xE86F9540, 0xDCA2, 0x11CD, 0xA1, 0x66, 0x0, 0xAA, 0x0, 0x4C, 0xD6, 0x5C);
+
+DECLARE_INTERFACE_ (IVCmdEnumA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVCmdEnum members
+ STDMETHOD (Next) (THIS_ ULONG, PVCMDNAMEA, ULONG *) PURE;
+ STDMETHOD (Skip) (THIS_ ULONG) PURE;
+ STDMETHOD (Reset) (THIS) PURE;
+ STDMETHOD (Clone) (THIS_ IVCmdEnumA * FAR *) PURE;
+};
+typedef IVCmdEnumA FAR * PIVCMDENUMA;
+
+
+#ifdef _S_UNICODE
+ #define IVCmdEnum IVCmdEnumW
+ #define IID_IVCmdEnum IID_IVCmdEnumW
+ #define PIVCMDENUM PIVCMDENUMW
+
+#else
+ #define IVCmdEnum IVCmdEnumA
+ #define IID_IVCmdEnum IID_IVCmdEnumA
+ #define PIVCMDENUM PIVCMDENUMA
+
+#endif // _S_UNICODE
+
+
+
+
+/*
+ * IEnumSRShare
+ */
+#undef INTERFACE
+#define INTERFACE IEnumSRShareW
+
+// {E97F05C0-81B3-11ce-B763-00AA004CD65C}
+DEFINE_GUID(IID_IEnumSRShareW,
+0xe97f05c0, 0x81b3, 0x11ce, 0xb7, 0x63, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+
+DECLARE_INTERFACE_ (IEnumSRShareW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IEnumSRShare members
+ STDMETHOD (Next) (THIS_ ULONG, PSRSHAREW, ULONG *) PURE;
+ STDMETHOD (Skip) (THIS_ ULONG) PURE;
+ STDMETHOD (Reset) (THIS) PURE;
+ STDMETHOD (Clone) (THIS_ IEnumSRShareW * FAR *) PURE;
+ STDMETHOD (New) (THIS_ DWORD, GUID, PISRCENTRALW *, QWORD *) PURE;
+ STDMETHOD (Share) (THIS_ QWORD, PISRCENTRALW *) PURE;
+ STDMETHOD (Detach) (THIS_ QWORD) PURE;
+};
+typedef IEnumSRShareW FAR * PIENUMSRSHAREW;
+
+
+#undef INTERFACE
+#define INTERFACE IEnumSRShareA
+
+// {E97F05C1-81B3-11ce-B763-00AA004CD65C}
+DEFINE_GUID(IID_IEnumSRShareA,
+0xe97f05c1, 0x81b3, 0x11ce, 0xb7, 0x63, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+
+DECLARE_INTERFACE_ (IEnumSRShareA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IEnumSRShare members
+ STDMETHOD (Next) (THIS_ ULONG, PSRSHAREA, ULONG *) PURE;
+ STDMETHOD (Skip) (THIS_ ULONG) PURE;
+ STDMETHOD (Reset) (THIS) PURE;
+ STDMETHOD (Clone) (THIS_ IEnumSRShareA * FAR *) PURE;
+ STDMETHOD (New) (THIS_ DWORD, GUID, PISRCENTRALA *, QWORD *) PURE;
+ STDMETHOD (Share) (THIS_ QWORD, PISRCENTRALA *) PURE;
+ STDMETHOD (Detach) (THIS_ QWORD) PURE;
+};
+typedef IEnumSRShareA FAR * PIENUMSRSHAREA;
+
+
+#ifdef _S_UNICODE
+ #define IEnumSRShare IEnumSRShareW
+ #define IID_IEnumSRShare IID_IEnumSRShareW
+ #define PIENUMSRSHARE PIENUMSRSHAREW
+
+#else
+ #define IEnumSRShare IEnumSRShareA
+ #define IID_IEnumSRShare IID_IEnumSRShareA
+ #define PIENUMSRSHARE PIENUMSRSHAREA
+
+#endif // _S_UNICODE
+
+
+
+
+/*
+ * IVCmdMenu
+ */
+#undef INTERFACE
+#define INTERFACE IVCmdMenuW
+
+DEFINE_GUID(IID_IVCmdMenuW, 0xDAC54F60L, 0x604D, 0x101B, 0x99, 0x26, 0x00, 0xAA, 0x00, 0x3C, 0xFC, 0x2C);
+
+DECLARE_INTERFACE_ (IVCmdMenuW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVCmdMenu members
+ STDMETHOD (Activate) (THIS_ HWND, DWORD) PURE;
+ STDMETHOD (Deactivate) (THIS) PURE;
+ STDMETHOD (TrainMenuDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (Num) (THIS_ DWORD *) PURE;
+ STDMETHOD (Get) (THIS_ DWORD, DWORD, DWORD, PSDATA, DWORD *) PURE;
+ STDMETHOD (Set) (THIS_ DWORD, DWORD, DWORD, SDATA) PURE;
+ STDMETHOD (Add) (THIS_ DWORD, SDATA, DWORD *) PURE;
+ STDMETHOD (Remove) (THIS_ DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (ListGet) (THIS_ PCWSTR, PSDATA, DWORD *) PURE;
+ STDMETHOD (ListSet) (THIS_ PCWSTR, DWORD, SDATA) PURE;
+ STDMETHOD (EnableItem) (THIS_ DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (SetItem) (THIS_ DWORD, DWORD, DWORD) PURE;
+};
+
+typedef IVCmdMenuW FAR * PIVCMDMENUW;
+
+
+#undef INTERFACE
+#define INTERFACE IVCmdMenuA
+
+// {746141E0-5543-11b9-C000-5611722E1D15}
+DEFINE_GUID(IID_IVCmdMenuA, 0x746141e0, 0x5543, 0x11b9, 0xc0, 0x0, 0x56, 0x11, 0x72, 0x2e, 0x1d, 0x15);
+
+DECLARE_INTERFACE_ (IVCmdMenuA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVCmdMenu members
+ STDMETHOD (Activate) (THIS_ HWND, DWORD) PURE;
+ STDMETHOD (Deactivate) (THIS) PURE;
+ STDMETHOD (TrainMenuDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (Num) (THIS_ DWORD *) PURE;
+ STDMETHOD (Get) (THIS_ DWORD, DWORD, DWORD, PSDATA, DWORD *) PURE;
+ STDMETHOD (Set) (THIS_ DWORD, DWORD, DWORD, SDATA) PURE;
+ STDMETHOD (Add) (THIS_ DWORD, SDATA, DWORD *) PURE;
+ STDMETHOD (Remove) (THIS_ DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (ListGet) (THIS_ PCSTR, PSDATA, DWORD *) PURE;
+ STDMETHOD (ListSet) (THIS_ PCSTR, DWORD, SDATA) PURE;
+ STDMETHOD (EnableItem) (THIS_ DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (SetItem) (THIS_ DWORD, DWORD, DWORD) PURE;
+};
+
+typedef IVCmdMenuA FAR * PIVCMDMENUA;
+
+
+#ifdef _S_UNICODE
+ #define IVCmdMenu IVCmdMenuW
+ #define IID_IVCmdMenu IID_IVCmdMenuW
+ #define PIVCMDMENU PIVCMDMENUW
+
+#else
+ #define IVCmdMenu IVCmdMenuA
+ #define IID_IVCmdMenu IID_IVCmdMenuA
+ #define PIVCMDMENU PIVCMDMENUA
+
+#endif // _S_UNICODE
+
+
+
+/*
+ * IVoiceCmd
+ */
+#undef INTERFACE
+#define INTERFACE IVoiceCmdW
+
+DEFINE_GUID(IID_IVoiceCmdW, 0xE0DCC220L, 0x604D, 0x101B, 0x99, 0x26, 0x00, 0xAA, 0x00, 0x3C, 0xFC, 0x2C);
+
+DECLARE_INTERFACE_ (IVoiceCmdW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVoiceCmd members
+ STDMETHOD (Register) (THIS_ PCWSTR, LPUNKNOWN, GUID, DWORD,
+ PVCSITEINFOW) PURE;
+ STDMETHOD (MenuEnum) (THIS_ DWORD, PCWSTR, PCWSTR, PIVCMDENUMW *) PURE;
+ STDMETHOD (MenuCreate) (THIS_ PVCMDNAMEW, PLANGUAGEW, DWORD,
+ PIVCMDMENUW *) PURE;
+ STDMETHOD (MenuDelete) (THIS_ PVCMDNAMEW) PURE;
+ STDMETHOD (CmdMimic) (THIS_ PVCMDNAMEW, PCWSTR) PURE;
+};
+
+typedef IVoiceCmdW FAR * PIVOICECMDW;
+
+
+#undef INTERFACE
+#define INTERFACE IVoiceCmdA
+
+// {C63A2B30-5543-11b9-C000-5611722E1D15}
+DEFINE_GUID(IID_IVoiceCmdA, 0xc63a2b30, 0x5543, 0x11b9, 0xc0, 0x0, 0x56, 0x11, 0x72, 0x2e, 0x1d, 0x15);
+
+DECLARE_INTERFACE_ (IVoiceCmdA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVoiceCmd members
+ STDMETHOD (Register) (THIS_ PCSTR, LPUNKNOWN, GUID, DWORD,
+ PVCSITEINFOA) PURE;
+ STDMETHOD (MenuEnum) (THIS_ DWORD, PCSTR, PCSTR, PIVCMDENUMA *) PURE;
+ STDMETHOD (MenuCreate) (THIS_ PVCMDNAMEA, PLANGUAGEA, DWORD,
+ PIVCMDMENUA *) PURE;
+ STDMETHOD (MenuDelete) (THIS_ PVCMDNAMEA) PURE;
+ STDMETHOD (CmdMimic) (THIS_ PVCMDNAMEA, PCSTR) PURE;
+};
+
+typedef IVoiceCmdA FAR * PIVOICECMDA;
+
+
+#ifdef _S_UNICODE
+ #define IVoiceCmd IVoiceCmdW
+ #define IID_IVoiceCmd IID_IVoiceCmdW
+ #define PIVOICECMD PIVOICECMDW
+
+#else
+ #define IVoiceCmd IVoiceCmdA
+ #define IID_IVoiceCmd IID_IVoiceCmdA
+ #define PIVOICECMD PIVOICECMDA
+
+#endif //_S_UNICODE
+
+
+/*
+ * IVCmdAttributes
+ */
+#undef INTERFACE
+#define INTERFACE IVCmdAttributesW
+
+DEFINE_GUID(IID_IVCmdAttributesW, 0xE5F24680L, 0x6053, 0x101B, 0x99, 0x26, 0x00, 0xAA, 0x00, 0x3C, 0xFC, 0x2C);
+
+DECLARE_INTERFACE_ (IVCmdAttributesW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVCmdAttributes members
+ STDMETHOD (AutoGainEnableGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (AutoGainEnableSet) (THIS_ DWORD) PURE;
+ STDMETHOD (AwakeStateGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (AwakeStateSet) (THIS_ DWORD) PURE;
+ STDMETHOD (ThresholdGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (ThresholdSet) (THIS_ DWORD) PURE;
+ STDMETHOD (DeviceGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (DeviceSet) (THIS_ DWORD) PURE;
+ STDMETHOD (EnabledGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (EnabledSet) (THIS_ DWORD) PURE;
+ STDMETHOD (MicrophoneGet) (THIS_ PWSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (MicrophoneSet) (THIS_ PCWSTR) PURE;
+ STDMETHOD (SpeakerGet) (THIS_ PWSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (SpeakerSet) (THIS_ PCWSTR) PURE;
+ STDMETHOD (SRModeGet) (THIS_ GUID *) PURE;
+ STDMETHOD (SRModeSet) (THIS_ GUID) PURE;
+};
+
+typedef IVCmdAttributesW FAR * PIVCMDATTRIBUTESW;
+
+
+#undef INTERFACE
+#define INTERFACE IVCmdAttributesA
+
+// {FFF5DF80-5544-11b9-C000-5611722E1D15}
+DEFINE_GUID(IID_IVCmdAttributesA, 0xfff5df80, 0x5544, 0x11b9, 0xc0, 0x0, 0x56, 0x11, 0x72, 0x2e, 0x1d, 0x15);
+
+DECLARE_INTERFACE_ (IVCmdAttributesA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVCmdAttributes members
+ STDMETHOD (AutoGainEnableGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (AutoGainEnableSet) (THIS_ DWORD) PURE;
+ STDMETHOD (AwakeStateGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (AwakeStateSet) (THIS_ DWORD) PURE;
+ STDMETHOD (ThresholdGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (ThresholdSet) (THIS_ DWORD) PURE;
+ STDMETHOD (DeviceGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (DeviceSet) (THIS_ DWORD) PURE;
+ STDMETHOD (EnabledGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (EnabledSet) (THIS_ DWORD) PURE;
+ STDMETHOD (MicrophoneGet) (THIS_ PSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (MicrophoneSet) (THIS_ PCSTR) PURE;
+ STDMETHOD (SpeakerGet) (THIS_ PSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (SpeakerSet) (THIS_ PCSTR) PURE;
+ STDMETHOD (SRModeGet) (THIS_ GUID *) PURE;
+ STDMETHOD (SRModeSet) (THIS_ GUID) PURE;
+};
+
+typedef IVCmdAttributesA FAR * PIVCMDATTRIBUTESA;
+
+
+#ifdef _S_UNICODE
+ #define IVCmdAttributes IVCmdAttributesW
+ #define IID_IVCmdAttributes IID_IVCmdAttributesW
+ #define PIVCMDATTRIBUTES PIVCMDATTRIBUTESW
+
+#else
+ #define IVCmdAttributes IVCmdAttributesA
+ #define IID_IVCmdAttributes IID_IVCmdAttributesA
+ #define PIVCMDATTRIBUTES PIVCMDATTRIBUTESA
+
+#endif // _S_UNICODE
+
+
+
+/*
+ * IVCmdDialog
+ */
+#undef INTERFACE
+#define INTERFACE IVCmdDialogsW
+
+DEFINE_GUID(IID_IVCmdDialogsW, 0xEE39B8A0L, 0x6053, 0x101B, 0x99, 0x26, 0x00, 0xAA, 0x00, 0x3C, 0xFC, 0x2C);
+
+DECLARE_INTERFACE_ (IVCmdDialogsW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVCmdDialogs members
+ STDMETHOD (AboutDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (GeneralDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (LexiconDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (TrainGeneralDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (TrainMicDlg) (THIS_ HWND, PCWSTR) PURE;
+};
+
+typedef IVCmdDialogsW FAR * PIVCMDDIALOGSW;
+
+
+#undef INTERFACE
+#define INTERFACE IVCmdDialogsA
+
+// {AA8FE260-5545-11b9-C000-5611722E1D15}
+DEFINE_GUID(IID_IVCmdDialogsA, 0xaa8fe260, 0x5545, 0x11b9, 0xc0, 0x0, 0x56, 0x11, 0x72, 0x2e, 0x1d, 0x15);
+
+DECLARE_INTERFACE_ (IVCmdDialogsA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVCmdDialogs members
+ STDMETHOD (AboutDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (GeneralDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (LexiconDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (TrainGeneralDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (TrainMicDlg) (THIS_ HWND, PCSTR) PURE;
+};
+
+typedef IVCmdDialogsA FAR * PIVCMDDIALOGSA;
+
+
+#ifdef _S_UNICODE
+ #define IVCmdDialogs IVCmdDialogsW
+ #define IID_IVCmdDialogs IID_IVCmdDialogsW
+ #define PIVCMDDIALOGS PIVCMDDIALOGSW
+
+#else
+ #define IVCmdDialogs IVCmdDialogsA
+ #define IID_IVCmdDialogs IID_IVCmdDialogsA
+ #define PIVCMDDIALOGS PIVCMDDIALOGSA
+
+#endif // _S_UNICODE
+
+
+
+/************************************************************************
+class guids */
+
+// DEFINE_GUID(CLSID_VCmd, 0x93898800L, 0x604D, 0x101B, 0x99, 0x26, 0x00, 0xAA, 0x00, 0x3C, 0xFC, 0x2C);
+// {6D40D820-0BA7-11ce-A166-00AA004CD65C}
+DEFINE_GUID(CLSID_VCmd,
+0x6d40d820, 0xba7, 0x11ce, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+// {89F70C30-8636-11ce-B763-00AA004CD65C}
+DEFINE_GUID(CLSID_SRShare,
+0x89f70c30, 0x8636, 0x11ce, 0xb7, 0x63, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+
+
+
+/************************************************************************
+High-Level dictation speech recognition API
+*/
+
+/************************************************************************
+defines */
+#define VDCT_TOPICNAMELEN 32
+
+// bit flags for the dwReason field of IVDctNotifySink::TextChanged
+#define VDCT_TEXTADDED 0x00000001
+#define VDCT_TEXTREMOVED 0x00000002
+#define VDCT_TEXTREPLACED 0x00000004
+
+// bit flags for the dwReason field of IVDctText::TextRemove/TextSet
+#define VDCT_TEXTCLEAN 0x00010000
+#define VDCT_TEXTKEEPRESULTS 0x00020000
+
+// bit flags for dwFlags of IVDctGUI::FlagsSet
+#define VDCTGUIF_VISIBLE 0x00000001
+#define VDCTGUIF_DONTMOVE 0x00000002
+#define VDCTGUIF_ADDWORD 0x00000004
+
+// bit flags for dwFX of IVDctText::FX
+#define VDCTFX_CAPFIRST 0x00000001
+#define VDCTFX_LOWERFIRST 0x00000002
+#define VDCTFX_TOGGLEFIRST 0x00000003
+#define VDCTFX_CAPALL 0x00000004
+#define VDCTFX_LOWERALL 0x00000005
+#define VDCTFX_REMOVESPACES 0x00000006
+#define VDCTFX_KEEPONLYFIRSTLETTER 0x00000007
+
+/************************************************************************
+typedefs */
+
+// site information structure - used for IVoiceDictation::SiteInfoGet/Set
+typedef struct {
+ DWORD dwAutoGainEnable;
+ DWORD dwAwakeState;
+ DWORD dwThreshold;
+ DWORD dwDevice;
+ DWORD dwEnable;
+ WCHAR szMicrophone[VCMD_MICLEN];
+ WCHAR szSpeaker[VCMD_SPEAKERLEN];
+ GUID gModeID;
+} VDSITEINFOW, *PVDSITEINFOW;
+
+typedef struct {
+ DWORD dwAutoGainEnable;
+ DWORD dwAwakeState;
+ DWORD dwThreshold;
+ DWORD dwDevice;
+ DWORD dwEnable;
+ CHAR szMicrophone[VCMD_MICLEN];
+ CHAR szSpeaker[VCMD_SPEAKERLEN];
+ GUID gModeID;
+} VDSITEINFOA, *PVDSITEINFOA;
+
+
+// topic structure used by the IVoiceDictation object
+typedef struct {
+ WCHAR szTopic[VDCT_TOPICNAMELEN];
+ LANGUAGEW language;
+} VDCTTOPICW, *PVDCTTOPICW;
+
+typedef struct {
+ CHAR szTopic[VDCT_TOPICNAMELEN];
+ LANGUAGEA language;
+} VDCTTOPICA, *PVDCTTOPICA;
+
+
+#ifdef _S_UNICODE
+ #define VDSITEINFO VDSITEINFOW
+ #define PVDSITEINFO PVDSITEINFOW
+ #define VDCTTOPIC VDCTTOPICW
+ #define PVDCTTOPIC PVDCTTOPICW
+#else
+ #define VDSITEINFO VDSITEINFOA
+ #define PVDSITEINFO PVDSITEINFOA
+ #define VDCTTOPIC VDCTTOPICA
+ #define PVDCTTOPIC PVDCTTOPICA
+#endif // _S_UNICODE
+
+
+// memory maintenance structure used by MemoryGet/Set in IVDctAttributes
+typedef struct {
+ DWORD dwMaxRAM;
+ DWORD dwMaxTime;
+ DWORD dwMaxWords;
+ BOOL fKeepAudio;
+ BOOL fKeepCorrection;
+ BOOL fKeepEval;
+} VDCTMEMORY, *PVDCTMEMORY;
+
+
+// bookmark definition
+typedef struct {
+ DWORD dwID;
+ DWORD dwPosn;
+} VDCTBOOKMARK, *PVDCTBOOKMARK;
+
+
+
+/************************************************************************
+interfaces */
+
+/*
+ * IVDctNotifySink
+ */
+#undef INTERFACE
+#define INTERFACE IVDctNotifySinkW
+
+// {5FEB8800-67D5-11cf-9B8B-08005AFC3A41}
+DEFINE_GUID(IID_IVDctNotifySinkW,
+0x5feb8800, 0x67d5, 0x11cf, 0x9b, 0x8b, 0x8, 0x0, 0x5a, 0xfc, 0x3a, 0x41);
+
+DECLARE_INTERFACE_ (IVDctNotifySinkW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctNotifySink members
+ STDMETHOD (CommandBuiltIn) (THIS_ PWSTR) PURE;
+ STDMETHOD (CommandOther) (THIS_ PWSTR) PURE;
+ STDMETHOD (CommandRecognize) (THIS_ DWORD, DWORD, DWORD, PVOID, PWSTR) PURE;
+ STDMETHOD (TextSelChanged) (THIS) PURE;
+ STDMETHOD (TextChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (TextBookmarkChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (PhraseStart) (THIS) PURE;
+ STDMETHOD (PhraseFinish) (THIS_ DWORD, PSRPHRASEW) PURE;
+ STDMETHOD (PhraseHypothesis) (THIS_ DWORD, PSRPHRASEW) PURE;
+ STDMETHOD (UtteranceBegin) (THIS) PURE;
+ STDMETHOD (UtteranceEnd) (THIS) PURE;
+ STDMETHOD (VUMeter) (THIS_ WORD) PURE;
+ STDMETHOD (AttribChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (Interference) (THIS_ DWORD) PURE;
+ STDMETHOD (Training) (THIS_ DWORD) PURE;
+ STDMETHOD (Dictating) (THIS_ PCWSTR, BOOL) PURE;
+};
+
+typedef IVDctNotifySinkW FAR * PIVDCTNOTIFYSINKW;
+
+
+#undef INTERFACE
+#define INTERFACE IVDctNotifySinkA
+
+// {88AD7DC0-67D5-11cf-9B8B-08005AFC3A41}
+DEFINE_GUID(IID_IVDctNotifySinkA,
+0x88ad7dc0, 0x67d5, 0x11cf, 0x9b, 0x8b, 0x8, 0x0, 0x5a, 0xfc, 0x3a, 0x41);
+
+DECLARE_INTERFACE_ (IVDctNotifySinkA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctNotifySinkA members
+ STDMETHOD (CommandBuiltIn) (THIS_ PSTR) PURE;
+ STDMETHOD (CommandOther) (THIS_ PSTR) PURE;
+ STDMETHOD (CommandRecognize) (THIS_ DWORD, DWORD, DWORD, PVOID, PSTR) PURE;
+ STDMETHOD (TextSelChanged) (THIS) PURE;
+ STDMETHOD (TextChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (TextBookmarkChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (PhraseStart) (THIS) PURE;
+ STDMETHOD (PhraseFinish) (THIS_ DWORD, PSRPHRASEA) PURE;
+ STDMETHOD (PhraseHypothesis) (THIS_ DWORD, PSRPHRASEA) PURE;
+ STDMETHOD (UtteranceBegin) (THIS) PURE;
+ STDMETHOD (UtteranceEnd) (THIS) PURE;
+ STDMETHOD (VUMeter) (THIS_ WORD) PURE;
+ STDMETHOD (AttribChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (Interference) (THIS_ DWORD) PURE;
+ STDMETHOD (Training) (THIS_ DWORD) PURE;
+ STDMETHOD (Dictating) (THIS_ PCSTR, BOOL) PURE;
+};
+
+typedef IVDctNotifySinkA FAR * PIVDCTNOTIFYSINKA;
+
+
+#ifdef _S_UNICODE
+ #define IVDctNotifySink IVDctNotifySinkW
+ #define IID_IVDctNotifySink IID_IVDctNotifySinkW
+ #define PIVDCTNOTIFYSINK PIVDCTNOTIFYSINKW
+
+#else
+ #define IVDctNotifySink IVDctNotifySinkA
+ #define IID_IVDctNotifySink IID_IVDctNotifySinkA
+ #define PIVDCTNOTIFYSINK PIVDCTNOTIFYSINKA
+
+#endif // _S_UNICODE
+
+
+
+
+/*
+ * IVDctNotifySink2
+ */
+#undef INTERFACE
+#define INTERFACE IVDctNotifySink2W
+
+// {599F77E3-E42E-11d1-BED8-006008317CE8}
+DEFINE_GUID(IID_IVDctNotifySink2W,
+0x599f77e3, 0xe42e, 0x11d1, 0xbe, 0xd8, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (IVDctNotifySink2W, IVDctNotifySinkW) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctNotifySink2 members
+ STDMETHOD (CommandBuiltIn) (THIS_ PWSTR) PURE;
+ STDMETHOD (CommandOther) (THIS_ PWSTR) PURE;
+ STDMETHOD (CommandRecognize) (THIS_ DWORD, DWORD, DWORD, PVOID, PWSTR) PURE;
+ STDMETHOD (TextSelChanged) (THIS) PURE;
+ STDMETHOD (TextChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (TextBookmarkChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (PhraseStart) (THIS) PURE;
+ STDMETHOD (PhraseFinish) (THIS_ DWORD, PSRPHRASEW) PURE;
+ STDMETHOD (PhraseHypothesis) (THIS_ DWORD, PSRPHRASEW) PURE;
+ STDMETHOD (UtteranceBegin) (THIS) PURE;
+ STDMETHOD (UtteranceEnd) (THIS) PURE;
+ STDMETHOD (VUMeter) (THIS_ WORD) PURE;
+ STDMETHOD (AttribChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (Interference) (THIS_ DWORD) PURE;
+ STDMETHOD (Training) (THIS_ DWORD) PURE;
+ STDMETHOD (Dictating) (THIS_ PCWSTR, BOOL) PURE;
+
+ STDMETHOD (Error) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (Warning) (THIS_ LPUNKNOWN) PURE;
+};
+
+typedef IVDctNotifySink2W FAR * PIVDCTNOTIFYSINK2W;
+
+
+#undef INTERFACE
+#define INTERFACE IVDctNotifySink2A
+
+// {599F77E4-E42E-11d1-BED8-006008317CE8}
+DEFINE_GUID(IID_IVDctNotifySink2A,
+0x599f77e4, 0xe42e, 0x11d1, 0xbe, 0xd8, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (IVDctNotifySink2A, IVDctNotifySinkA) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctNotifySink2A members
+ STDMETHOD (CommandBuiltIn) (THIS_ PSTR) PURE;
+ STDMETHOD (CommandOther) (THIS_ PSTR) PURE;
+ STDMETHOD (CommandRecognize) (THIS_ DWORD, DWORD, DWORD, PVOID, PSTR) PURE;
+ STDMETHOD (TextSelChanged) (THIS) PURE;
+ STDMETHOD (TextChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (TextBookmarkChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (PhraseStart) (THIS) PURE;
+ STDMETHOD (PhraseFinish) (THIS_ DWORD, PSRPHRASEA) PURE;
+ STDMETHOD (PhraseHypothesis) (THIS_ DWORD, PSRPHRASEA) PURE;
+ STDMETHOD (UtteranceBegin) (THIS) PURE;
+ STDMETHOD (UtteranceEnd) (THIS) PURE;
+ STDMETHOD (VUMeter) (THIS_ WORD) PURE;
+ STDMETHOD (AttribChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (Interference) (THIS_ DWORD) PURE;
+ STDMETHOD (Training) (THIS_ DWORD) PURE;
+ STDMETHOD (Dictating) (THIS_ PCSTR, BOOL) PURE;
+
+ STDMETHOD (Error) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (Warning) (THIS_ LPUNKNOWN) PURE;
+};
+
+typedef IVDctNotifySink2A FAR * PIVDCTNOTIFYSINK2A;
+
+
+#ifdef _S_UNICODE
+ #define IVDctNotifySink2 IVDctNotifySink2W
+ #define IID_IVDctNotifySink2 IID_IVDctNotifySink2W
+ #define PIVDCTNOTIFYSINK2 PIVDCTNOTIFYSINK2W
+
+#else
+ #define IVDctNotifySink2 IVDctNotifySink2A
+ #define IID_IVDctNotifySink2 IID_IVDctNotifySink2A
+ #define PIVDCTNOTIFYSINK2 PIVDCTNOTIFYSINK2A
+
+#endif // _S_UNICODE
+
+
+
+/*
+ * IVoiceDictation
+ */
+#undef INTERFACE
+#define INTERFACE IVoiceDictationW
+
+// {88AD7DC3-67D5-11cf-9B8B-08005AFC3A41}
+DEFINE_GUID(IID_IVoiceDictationW,
+0x88ad7dc3, 0x67d5, 0x11cf, 0x9b, 0x8b, 0x8, 0x0, 0x5a, 0xfc, 0x3a, 0x41);
+
+DECLARE_INTERFACE_ (IVoiceDictationW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVoiceDictation members
+ STDMETHOD (Register) (THIS_ PCWSTR, PCWSTR, LPSTORAGE, PCWSTR,
+ PIVDCTNOTIFYSINK, GUID, DWORD) PURE;
+ STDMETHOD (SiteInfoGet) (THIS_ PCWSTR, PVDSITEINFOW) PURE;
+ STDMETHOD (SiteInfoSet) (THIS_ PCWSTR, PVDSITEINFOW) PURE;
+ STDMETHOD (SessionSerialize) (THIS_ LPSTORAGE) PURE;
+ STDMETHOD (SessionDeserialize) (THIS_ LPSTORAGE) PURE;
+ STDMETHOD (TopicEnum) (THIS_ PSDATA) PURE;
+ STDMETHOD (TopicAddString) (THIS_ PCWSTR, LANGUAGEW *) PURE;
+ STDMETHOD (TopicRemove) (THIS_ PCWSTR) PURE;
+ STDMETHOD (TopicSerialize) (THIS_ LPSTORAGE) PURE;
+ STDMETHOD (TopicDeserialize) (THIS_ LPSTORAGE) PURE;
+ STDMETHOD (Activate) (THIS_ HWND) PURE;
+ STDMETHOD (Deactivate) (THIS) PURE;
+ STDMETHOD (TopicAddGrammar) (THIS_ PCWSTR, SDATA) PURE;
+ STDMETHOD (CFGSet) (THIS_ LANGID, PCWSTR, PCWSTR) PURE;
+};
+
+typedef IVoiceDictationW FAR * PIVOICEDICTATIONW;
+
+
+#undef INTERFACE
+#define INTERFACE IVoiceDictationA
+
+// {88AD7DC4-67D5-11cf-9B8B-08005AFC3A41}
+DEFINE_GUID(IID_IVoiceDictationA,
+0x88ad7dc4, 0x67d5, 0x11cf, 0x9b, 0x8b, 0x8, 0x0, 0x5a, 0xfc, 0x3a, 0x41);
+
+DECLARE_INTERFACE_ (IVoiceDictationA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVoiceDictation members
+ STDMETHOD (Register) (THIS_ PCSTR, PCSTR, LPSTORAGE, PCSTR,
+ PIVDCTNOTIFYSINK, GUID, DWORD) PURE;
+ STDMETHOD (SiteInfoGet) (THIS_ PCSTR, PVDSITEINFOA) PURE;
+ STDMETHOD (SiteInfoSet) (THIS_ PCSTR, PVDSITEINFOA) PURE;
+ STDMETHOD (SessionSerialize) (THIS_ LPSTORAGE) PURE;
+ STDMETHOD (SessionDeserialize) (THIS_ LPSTORAGE) PURE;
+ STDMETHOD (TopicEnum) (THIS_ PSDATA) PURE;
+ STDMETHOD (TopicAddString) (THIS_ PCSTR, LANGUAGEA *) PURE;
+ STDMETHOD (TopicRemove) (THIS_ PCSTR) PURE;
+ STDMETHOD (TopicSerialize) (THIS_ LPSTORAGE) PURE;
+ STDMETHOD (TopicDeserialize) (THIS_ LPSTORAGE) PURE;
+ STDMETHOD (Activate) (THIS_ HWND) PURE;
+ STDMETHOD (Deactivate) (THIS) PURE;
+ STDMETHOD (TopicAddGrammar) (THIS_ PCSTR, SDATA) PURE;
+ STDMETHOD (CFGSet) (THIS_ LANGID, PCSTR, PCSTR) PURE;
+};
+
+typedef IVoiceDictationA FAR * PIVOICEDICTATIONA;
+
+
+#ifdef _S_UNICODE
+ #define IVoiceDictation IVoiceDictationW
+ #define IID_IVoiceDictation IID_IVoiceDictationW
+ #define PIVOICEDICTATION PIVOICEDICTATIONW
+
+#else
+ #define IVoiceDictation IVoiceDictationA
+ #define IID_IVoiceDictation IID_IVoiceDictationA
+ #define PIVOICEDICTATION PIVOICEDICTATIONA
+
+#endif //_S_UNICODE
+
+
+
+/*
+ * IVDctText
+ */
+#undef INTERFACE
+#define INTERFACE IVDctTextW
+
+// {6D62B3A0-6893-11cf-9B8B-08005AFC3A41}
+DEFINE_GUID(IID_IVDctTextW,
+0x6d62b3a0, 0x6893, 0x11cf, 0x9b, 0x8b, 0x8, 0x0, 0x5a, 0xfc, 0x3a, 0x41);
+
+DECLARE_INTERFACE_ (IVDctTextW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctText members
+ STDMETHOD (Lock) (THIS) PURE;
+ STDMETHOD (UnLock) (THIS) PURE;
+ STDMETHOD (TextGet) (THIS_ DWORD, DWORD, PSDATA) PURE;
+ STDMETHOD (TextSet) (THIS_ DWORD, DWORD, PCWSTR, DWORD) PURE;
+ STDMETHOD (TextMove) (THIS_ DWORD, DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (TextRemove) (THIS_ DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (TextSelSet) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (TextSelGet) (THIS_ DWORD *, DWORD *) PURE;
+ STDMETHOD (TextLengthGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (GetChanges) (THIS_ DWORD *, DWORD *, DWORD *, DWORD *) PURE;
+ STDMETHOD (BookmarkAdd) (THIS_ PVDCTBOOKMARK) PURE;
+ STDMETHOD (BookmarkRemove) (THIS_ DWORD) PURE;
+ STDMETHOD (BookmarkMove) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (BookmarkQuery) (THIS_ DWORD, PVDCTBOOKMARK) PURE;
+ STDMETHOD (BookmarkEnum) (THIS_ DWORD, DWORD, PVDCTBOOKMARK *,
+ DWORD *) PURE;
+ STDMETHOD (Hint) (THIS_ PCWSTR) PURE;
+ STDMETHOD (Words) (THIS_ PCWSTR) PURE;
+ STDMETHOD (ResultsGet) (THIS_ DWORD, DWORD, DWORD *, DWORD *,
+ LPUNKNOWN *) PURE;
+ STDMETHOD (FX) (THIS_ DWORD) PURE;
+};
+typedef IVDctTextW FAR * PIVDCTTEXTW;
+
+
+#undef INTERFACE
+#define INTERFACE IVDctTextA
+
+// {6D62B3A1-6893-11cf-9B8B-08005AFC3A41}
+DEFINE_GUID(IID_IVDctTextA,
+0x6d62b3a1, 0x6893, 0x11cf, 0x9b, 0x8b, 0x8, 0x0, 0x5a, 0xfc, 0x3a, 0x41);
+
+DECLARE_INTERFACE_ (IVDctTextA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctText members
+ STDMETHOD (Lock) (THIS) PURE;
+ STDMETHOD (UnLock) (THIS) PURE;
+ STDMETHOD (TextGet) (THIS_ DWORD, DWORD, PSDATA) PURE;
+ STDMETHOD (TextSet) (THIS_ DWORD, DWORD, PCSTR, DWORD) PURE;
+ STDMETHOD (TextMove) (THIS_ DWORD, DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (TextRemove) (THIS_ DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (TextSelSet) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (TextSelGet) (THIS_ DWORD *, DWORD *) PURE;
+ STDMETHOD (TextLengthGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (GetChanges) (THIS_ DWORD *, DWORD *, DWORD *, DWORD *) PURE;
+ STDMETHOD (BookmarkAdd) (THIS_ PVDCTBOOKMARK) PURE;
+ STDMETHOD (BookmarkRemove) (THIS_ DWORD) PURE;
+ STDMETHOD (BookmarkMove) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (BookmarkQuery) (THIS_ DWORD, PVDCTBOOKMARK) PURE;
+ STDMETHOD (BookmarkEnum) (THIS_ DWORD, DWORD, PVDCTBOOKMARK *,
+ DWORD *) PURE;
+ STDMETHOD (Hint) (THIS_ PCSTR) PURE;
+ STDMETHOD (Words) (THIS_ PCSTR) PURE;
+ STDMETHOD (ResultsGet) (THIS_ DWORD, DWORD, DWORD *, DWORD *,
+ LPUNKNOWN *) PURE;
+ STDMETHOD (FX) (THIS_ DWORD) PURE;
+};
+typedef IVDctTextA FAR * PIVDCTTEXTA;
+
+
+#ifdef _S_UNICODE
+ #define IVDctText IVDctTextW
+ #define IID_IVDctText IID_IVDctTextW
+ #define PIVDCTTEXT PIVDCTTEXTW
+
+#else
+ #define IVDctText IVDctTextA
+ #define IID_IVDctText IID_IVDctTextA
+ #define PIVDCTTEXT PIVDCTTEXTA
+
+#endif //_S_UNICODE
+
+
+
+/*
+ * IVDctText2
+ */
+#undef INTERFACE
+#define INTERFACE IVDctText2W
+
+// {238004E1-F0C4-11d1-BED9-006008317CE8}
+DEFINE_GUID(IID_IVDctText2W,
+0x238004e1, 0xf0c4, 0x11d1, 0xbe, 0xd9, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (IVDctText2W, IVDctTextW) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctText members
+ STDMETHOD (Lock) (THIS) PURE;
+ STDMETHOD (UnLock) (THIS) PURE;
+ STDMETHOD (TextGet) (THIS_ DWORD, DWORD, PSDATA) PURE;
+ STDMETHOD (TextSet) (THIS_ DWORD, DWORD, PCWSTR, DWORD) PURE;
+ STDMETHOD (TextMove) (THIS_ DWORD, DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (TextRemove) (THIS_ DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (TextSelSet) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (TextSelGet) (THIS_ DWORD *, DWORD *) PURE;
+ STDMETHOD (TextLengthGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (GetChanges) (THIS_ DWORD *, DWORD *, DWORD *, DWORD *) PURE;
+ STDMETHOD (BookmarkAdd) (THIS_ PVDCTBOOKMARK) PURE;
+ STDMETHOD (BookmarkRemove) (THIS_ DWORD) PURE;
+ STDMETHOD (BookmarkMove) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (BookmarkQuery) (THIS_ DWORD, PVDCTBOOKMARK) PURE;
+ STDMETHOD (BookmarkEnum) (THIS_ DWORD, DWORD, PVDCTBOOKMARK *,
+ DWORD *) PURE;
+ STDMETHOD (Hint) (THIS_ PCWSTR) PURE;
+ STDMETHOD (Words) (THIS_ PCWSTR) PURE;
+ STDMETHOD (ResultsGet) (THIS_ DWORD, DWORD, DWORD *, DWORD *,
+ LPUNKNOWN *) PURE;
+ STDMETHOD (FX) (THIS_ DWORD) PURE;
+
+ // IVDctText2
+ STDMETHOD (ITNApply) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (ITNExpand) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (ResultsGet2) (THIS_ DWORD, DWORD, DWORD *, DWORD *,
+ LPUNKNOWN *, DWORD*, DWORD*) PURE;
+ STDMETHOD (ResultsSet) (THIS_ DWORD, DWORD,
+ LPUNKNOWN, DWORD, DWORD) PURE;
+
+};
+typedef IVDctText2W FAR * PIVDCTTEXT2W;
+
+
+#undef INTERFACE
+#define INTERFACE IVDctText2A
+
+// {238004E2-F0C4-11d1-BED9-006008317CE8}
+DEFINE_GUID(IID_IVDctText2A,
+0x238004e2, 0xf0c4, 0x11d1, 0xbe, 0xd9, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (IVDctText2A, IVDctTextA) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctText members
+ STDMETHOD (Lock) (THIS) PURE;
+ STDMETHOD (UnLock) (THIS) PURE;
+ STDMETHOD (TextGet) (THIS_ DWORD, DWORD, PSDATA) PURE;
+ STDMETHOD (TextSet) (THIS_ DWORD, DWORD, PCSTR, DWORD) PURE;
+ STDMETHOD (TextMove) (THIS_ DWORD, DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (TextRemove) (THIS_ DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (TextSelSet) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (TextSelGet) (THIS_ DWORD *, DWORD *) PURE;
+ STDMETHOD (TextLengthGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (GetChanges) (THIS_ DWORD *, DWORD *, DWORD *, DWORD *) PURE;
+ STDMETHOD (BookmarkAdd) (THIS_ PVDCTBOOKMARK) PURE;
+ STDMETHOD (BookmarkRemove) (THIS_ DWORD) PURE;
+ STDMETHOD (BookmarkMove) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (BookmarkQuery) (THIS_ DWORD, PVDCTBOOKMARK) PURE;
+ STDMETHOD (BookmarkEnum) (THIS_ DWORD, DWORD, PVDCTBOOKMARK *,
+ DWORD *) PURE;
+ STDMETHOD (Hint) (THIS_ PCSTR) PURE;
+ STDMETHOD (Words) (THIS_ PCSTR) PURE;
+ STDMETHOD (ResultsGet) (THIS_ DWORD, DWORD, DWORD *, DWORD *,
+ LPUNKNOWN *) PURE;
+ STDMETHOD (FX) (THIS_ DWORD) PURE;
+
+ // IVDctText2
+ STDMETHOD (ITNApply) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (ITNExpand) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (ResultsGet2) (THIS_ DWORD, DWORD, DWORD *, DWORD *,
+ LPUNKNOWN *, DWORD*, DWORD*) PURE;
+ STDMETHOD (ResultsSet) (THIS_ DWORD, DWORD,
+ LPUNKNOWN, DWORD, DWORD) PURE;
+};
+typedef IVDctText2A FAR * PIVDCTTEXT2A;
+
+
+#ifdef _S_UNICODE
+ #define IVDctText2 IVDctText2W
+ #define IID_IVDctText2 IID_IVDctText2W
+ #define PIVDCTTEXT2 PIVDCTTEXT2W
+
+#else
+ #define IVDctText2 IVDctText2A
+ #define IID_IVDctText2 IID_IVDctText2A
+ #define PIVDCTTEXT2 PIVDCTTEXT2A
+
+#endif //_S_UNICODE
+
+
+
+
+/*
+ * IVDctTextCache
+ */
+#undef INTERFACE
+#define INTERFACE IVDctTextCache
+
+// {238004E3-F0C4-11d1-BED9-006008317CE8}
+DEFINE_GUID(IID_IVDctTextCache,
+0x238004e3, 0xf0c4, 0x11d1, 0xbe, 0xd9, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+DECLARE_INTERFACE_ (IVDctTextCache, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctTextCache members
+ STDMETHOD (CopyToBin) (THIS_ DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (CopyToMemory) (THIS_ DWORD, DWORD, PVOID*, DWORD*, LPUNKNOWN**, DWORD*) PURE;
+ STDMETHOD (PasteFromBin) (THIS_ DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (PasteFromMemory) (THIS_ DWORD, DWORD, PVOID, DWORD, LPUNKNOWN*, DWORD) PURE;
+};
+typedef IVDctTextCache FAR * PIVDCTTEXTCACHE;
+
+
+
+/*
+ * IVDctInvTextNorm
+ */
+#undef INTERFACE
+#define INTERFACE IVDctInvTextNormW
+
+// {90A84EA0-6E51-11d0-9BC2-08005AFC3A41}
+DEFINE_GUID(IID_IVDctInvTextNormW,
+0x90a84ea0, 0x6e51, 0x11d0, 0x9b, 0xc2, 0x8, 0x0, 0x5a, 0xfc, 0x3a, 0x41);
+
+DECLARE_INTERFACE_ (IVDctInvTextNormW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctInvTextNorm members
+ STDMETHOD (OptionsEnum) (THIS_ PWSTR *, DWORD *) PURE;
+ STDMETHOD (OptionsGet) (THIS_ PCWSTR, BOOL *) PURE;
+ STDMETHOD (OptionsSet) (THIS_ PCWSTR, BOOL) PURE;
+};
+
+typedef IVDctInvTextNormW FAR * PIVDCTINVTEXTNORMW;
+
+
+#undef INTERFACE
+#define INTERFACE IVDctInvTextNormA
+
+// {90A84EA1-6E51-11d0-9BC2-08005AFC3A41}
+DEFINE_GUID(IID_IVDctInvTextNormA,
+0x90a84ea1, 0x6e51, 0x11d0, 0x9b, 0xc2, 0x8, 0x0, 0x5a, 0xfc, 0x3a, 0x41);
+
+DECLARE_INTERFACE_ (IVDctInvTextNormA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctInvTextNorm members
+ STDMETHOD (OptionsEnum) (THIS_ PSTR *, DWORD *) PURE;
+ STDMETHOD (OptionsGet) (THIS_ PCSTR, BOOL *) PURE;
+ STDMETHOD (OptionsSet) (THIS_ PCSTR, BOOL) PURE;
+};
+
+typedef IVDctInvTextNormA FAR * PIVDCTINVTEXTNORMA;
+
+
+#ifdef _S_UNICODE
+ #define IVDctInvTextNorm IVDctInvTextNormW
+ #define IID_IVDctInvTextNorm IID_IVDctInvTextNormW
+ #define PIVDCTINVTEXTNORM PIVDCTINVTEXTNORMW
+
+#else
+ #define IVDctInvTextNorm IVDctInvTextNormA
+ #define IID_IVDctInvTextNorm IID_IVDctInvTextNormA
+ #define PIVDCTINVTEXTNORM PIVDCTINVTEXTNORMA
+
+#endif // _S_UNICODE
+
+
+
+/*
+ * IVDctAttributes
+ */
+#undef INTERFACE
+#define INTERFACE IVDctAttributesW
+
+// {88AD7DC5-67D5-11cf-9B8B-08005AFC3A41}
+DEFINE_GUID(IID_IVDctAttributesW,
+0x88ad7dc5, 0x67d5, 0x11cf, 0x9b, 0x8b, 0x8, 0x0, 0x5a, 0xfc, 0x3a, 0x41);
+
+DECLARE_INTERFACE_ (IVDctAttributesW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctAttributes members
+ STDMETHOD (AutoGainEnableGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (AutoGainEnableSet) (THIS_ DWORD) PURE;
+ STDMETHOD (AwakeStateGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (AwakeStateSet) (THIS_ DWORD) PURE;
+ STDMETHOD (ThresholdGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (ThresholdSet) (THIS_ DWORD) PURE;
+ STDMETHOD (EchoGet) (THIS_ BOOL *) PURE;
+ STDMETHOD (EchoSet) (THIS_ BOOL) PURE;
+ STDMETHOD (EnergyFloorGet) (THIS_ WORD *) PURE;
+ STDMETHOD (EnergyFloorSet) (THIS_ WORD) PURE;
+ STDMETHOD (RealTimeGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (RealTimeSet) (THIS_ DWORD) PURE;
+ STDMETHOD (TimeOutGet) (THIS_ DWORD *, DWORD *) PURE;
+ STDMETHOD (TimeOutSet) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (ModeGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (ModeSet) (THIS_ DWORD) PURE;
+ STDMETHOD (MemoryGet) (THIS_ VDCTMEMORY *) PURE;
+ STDMETHOD (MemorySet) (THIS_ VDCTMEMORY *) PURE;
+ STDMETHOD (IsAnyoneDictating) (THIS_ HWND, PWSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (MicrophoneGet) (THIS_ PWSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (MicrophoneSet) (THIS_ PCWSTR) PURE;
+ STDMETHOD (SpeakerGet) (THIS_ PWSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (SpeakerSet) (THIS_ PCWSTR) PURE;
+};
+
+typedef IVDctAttributesW FAR * PIVDCTATTRIBUTESW;
+
+
+#undef INTERFACE
+#define INTERFACE IVDctAttributesA
+
+// {88AD7DC6-67D5-11cf-9B8B-08005AFC3A41}
+DEFINE_GUID(IID_IVDctAttributesA,
+0x88ad7dc6, 0x67d5, 0x11cf, 0x9b, 0x8b, 0x8, 0x0, 0x5a, 0xfc, 0x3a, 0x41);
+
+DECLARE_INTERFACE_ (IVDctAttributesA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctAttributes members
+ STDMETHOD (AutoGainEnableGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (AutoGainEnableSet) (THIS_ DWORD) PURE;
+ STDMETHOD (AwakeStateGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (AwakeStateSet) (THIS_ DWORD) PURE;
+ STDMETHOD (ThresholdGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (ThresholdSet) (THIS_ DWORD) PURE;
+ STDMETHOD (EchoGet) (THIS_ BOOL *) PURE;
+ STDMETHOD (EchoSet) (THIS_ BOOL) PURE;
+ STDMETHOD (EnergyFloorGet) (THIS_ WORD *) PURE;
+ STDMETHOD (EnergyFloorSet) (THIS_ WORD) PURE;
+ STDMETHOD (RealTimeGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (RealTimeSet) (THIS_ DWORD) PURE;
+ STDMETHOD (TimeOutGet) (THIS_ DWORD *, DWORD *) PURE;
+ STDMETHOD (TimeOutSet) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD (ModeGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (ModeSet) (THIS_ DWORD) PURE;
+ STDMETHOD (MemoryGet) (THIS_ VDCTMEMORY *) PURE;
+ STDMETHOD (MemorySet) (THIS_ VDCTMEMORY *) PURE;
+ STDMETHOD (IsAnyoneDictating) (THIS_ HWND, PSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (MicrophoneGet) (THIS_ PSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (MicrophoneSet) (THIS_ PCSTR) PURE;
+ STDMETHOD (SpeakerGet) (THIS_ PSTR, DWORD, DWORD *) PURE;
+ STDMETHOD (SpeakerSet) (THIS_ PCSTR) PURE;
+};
+
+typedef IVDctAttributesA FAR * PIVDCTATTRIBUTESA;
+
+
+#ifdef _S_UNICODE
+ #define IVDctAttributes IVDctAttributesW
+ #define IID_IVDctAttributes IID_IVDctAttributesW
+ #define PIVDCTATTRIBUTES PIVDCTATTRIBUTESW
+
+#else
+ #define IVDctAttributes IVDctAttributesA
+ #define IID_IVDctAttributes IID_IVDctAttributesA
+ #define PIVDCTATTRIBUTES PIVDCTATTRIBUTESA
+
+#endif // _S_UNICODE
+
+
+
+
+/*
+ * IVDctCommandsBuiltInW Interface
+ */
+// {D4E3F8E0-6521-11d1-8C35-006097DF5D01}
+DEFINE_GUID(IID_IVDctCommandsBuiltInW,
+0xd4e3f8e0, 0x6521, 0x11d1, 0x8c, 0x35, 0x0, 0x60, 0x97, 0xdf, 0x5d, 0x1);
+
+// {8763AFD1-7ADE-11d1-BEA7-006008317CE8}
+DEFINE_GUID(IID_IVDctCommandsBuiltInA,
+0x8763afd1, 0x7ade, 0x11d1, 0xbe, 0xa7, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+#undef INTERFACE
+#define INTERFACE IVDctCommandsBuiltInW
+
+DECLARE_INTERFACE_ (IVDctCommandsBuiltInW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctCommandsBuiltInW members
+ STDMETHOD (Activate) (THIS_ HWND, DWORD) PURE;
+ STDMETHOD (Deactivate) (THIS) PURE;
+ STDMETHOD (FromMemory) (THIS_ PVOID, DWORD) PURE;
+ STDMETHOD (FromFile) (THIS_ PCWSTR) PURE;
+ STDMETHOD (FromStream) (THIS_ IStream *) PURE;
+ STDMETHOD (ListSet) (THIS_ PCWSTR, PVOID, DWORD) PURE;
+ STDMETHOD (TextGet) (THIS_ LPWSTR*, DWORD*) PURE;
+ STDMETHOD (ToMemory) (THIS_ PVOID*, DWORD*) PURE;
+ STDMETHOD (ToFile) (THIS_ PCWSTR) PURE;
+ STDMETHOD (ToStream) (THIS_ IStream *) PURE;
+};
+
+typedef IVDctCommandsBuiltInW * PIVDCTCOMMANDSBUILTINW;
+
+
+#undef INTERFACE
+#define INTERFACE IVDctCommandsBuiltInA
+
+DECLARE_INTERFACE_ (IVDctCommandsBuiltInA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctCommandsBuiltInA members
+ STDMETHOD (Activate) (THIS_ HWND, DWORD) PURE;
+ STDMETHOD (Deactivate) (THIS) PURE;
+ STDMETHOD (FromMemory) (THIS_ PVOID, DWORD) PURE;
+ STDMETHOD (FromFile) (THIS_ PCSTR) PURE;
+ STDMETHOD (FromStream) (THIS_ IStream *) PURE;
+ STDMETHOD (ListSet) (THIS_ PCSTR, PVOID, DWORD) PURE;
+ STDMETHOD (TextGet) (THIS_ LPSTR*, DWORD*) PURE;
+ STDMETHOD (ToMemory) (THIS_ PVOID*, DWORD*) PURE;
+ STDMETHOD (ToFile) (THIS_ PCSTR) PURE;
+ STDMETHOD (ToStream) (THIS_ IStream *) PURE;
+};
+
+typedef IVDctCommandsBuiltInA * PIVDCTCOMMANDSBUILTINA;
+
+#ifdef _S_UNICODE
+ #define IVDctCommandsBuiltIn IVDctCommandsBuiltInW
+ #define IID_IVDctCommandsBuiltIn IID_IVDctCommandsBuiltInW
+ #define PIVDCTCOMMANDSBUILTIN PIVDCTCOMMANDSBUILTINW
+
+#else
+ #define IVDctCommandsBuiltIn IVDctCommandsBuiltInA
+ #define IID_IVDctCommandsBuiltIn IID_IVDctCommandsBuiltInA
+ #define PIVDCTCOMMANDSBUILTIN PIVDCTCOMMANDSBUILTINA
+
+#endif // _S_UNICODE
+
+
+
+/*
+ * IVDctCommandsApp Interface
+ */
+// {D4E3F8E1-6521-11d1-8C35-006097DF5D01}
+DEFINE_GUID(IID_IVDctCommandsAppW,
+0xd4e3f8e1, 0x6521, 0x11d1, 0x8c, 0x35, 0x0, 0x60, 0x97, 0xdf, 0x5d, 0x1);
+
+// {8763AFD2-7ADE-11d1-BEA7-006008317CE8}
+DEFINE_GUID(IID_IVDctCommandsAppA,
+0x8763afd2, 0x7ade, 0x11d1, 0xbe, 0xa7, 0x0, 0x60, 0x8, 0x31, 0x7c, 0xe8);
+
+typedef IVDctCommandsBuiltInA IVDctCommandsAppA;
+typedef IVDctCommandsAppA * PIVDCTCOMMANDSAPPA;
+typedef IVDctCommandsBuiltInW IVDctCommandsAppW;
+typedef IVDctCommandsAppW * PIVDCTCOMMANDSAPPW;
+
+#ifdef _S_UNICODE
+ #define IVDctCommandsApp IVDctCommandsAppW
+ #define IID_IVDctCommandsApp IID_IVDctCommandsAppW
+ #define PIVDCTCOMMANDSAPP PIVDCTCOMMANDSAPPW
+#else
+ #define IVDctCommandsApp IVDctCommandsAppA
+ #define IID_IVDctCommandsApp IID_IVDctCommandsAppA
+ #define PIVDCTCOMMANDSAPP PIVDCTCOMMANDSAPPA
+#endif // _S_UNICODE
+
+
+
+/*
+ * IVDctCommands
+ */
+#undef INTERFACE
+#define INTERFACE IVDctCommandsW
+
+// {A02C2CA0-AE50-11cf-833A-00AA00A21A29}
+DEFINE_GUID(IID_IVDctCommandsW,
+0xA02C2CA0, 0xAE50, 0x11cf, 0x83, 0x3A, 0x00, 0xAA, 0x00, 0xA2, 0x1A, 0x29);
+
+DECLARE_INTERFACE_ (IVDctCommandsW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctCommands members
+ STDMETHOD (Add) (THIS_ BOOL, DWORD, SDATA, DWORD *) PURE;
+ STDMETHOD (Remove) (THIS_ BOOL, DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (Get) (THIS_ BOOL, DWORD, DWORD, DWORD, SDATA*, DWORD *) PURE;
+ STDMETHOD (Set) (THIS_ BOOL, DWORD, DWORD, DWORD, SDATA) PURE;
+ STDMETHOD (EnableItem) (THIS_ BOOL, DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (Num) (THIS_ BOOL, DWORD *) PURE;
+};
+
+typedef IVDctCommandsW FAR * PIVDCTCOMMANDSW;
+
+
+#undef INTERFACE
+#define INTERFACE IVDctCommandsA
+
+// {A02C2CA1-AE50-11cf-833A-00AA00A21A29}
+DEFINE_GUID(IID_IVDctCommandsA,
+0xA02C2CA1, 0xAE50, 0x11cf, 0x83, 0x3A, 0x00, 0xAA, 0x00, 0xA2, 0x1A, 0x29);
+
+DECLARE_INTERFACE_ (IVDctCommandsA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctCommands members
+ STDMETHOD (Add) (THIS_ BOOL, DWORD, SDATA, DWORD *) PURE;
+ STDMETHOD (Remove) (THIS_ BOOL, DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (Get) (THIS_ BOOL, DWORD, DWORD, DWORD, SDATA*, DWORD *) PURE;
+ STDMETHOD (Set) (THIS_ BOOL, DWORD, DWORD, DWORD, SDATA) PURE;
+ STDMETHOD (EnableItem) (THIS_ BOOL, DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (Num) (THIS_ BOOL, DWORD *) PURE;
+};
+
+typedef IVDctCommandsA FAR * PIVDCTCOMMANDSA;
+
+
+#ifdef _S_UNICODE
+ #define IVDctCommands IVDctCommandsW
+ #define IID_IVDctCommands IID_IVDctCommandsW
+ #define PIVDCTCOMMANDS PIVDCTCOMMANDSW
+
+#else
+ #define IVDctCommands IVDctCommandsA
+ #define IID_IVDctCommands IID_IVDctCommandsA
+ #define PIVDCTCOMMANDS PIVDCTCOMMANDSA
+
+#endif // _S_UNICODE
+
+
+
+/*
+ * IVDctGlossary
+ */
+#undef INTERFACE
+#define INTERFACE IVDctGlossaryW
+
+// {A02C2CA2-AE50-11cf-833A-00AA00A21A29}
+DEFINE_GUID(IID_IVDctGlossaryW,
+0xA02C2CA2, 0xAE50, 0x11cf, 0x83, 0x3A, 0x00, 0xAA, 0x00, 0xA2, 0x1A, 0x29);
+
+DECLARE_INTERFACE_ (IVDctGlossaryW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctGlossary members
+ STDMETHOD (Add) (THIS_ BOOL, DWORD, SDATA, DWORD *) PURE;
+ STDMETHOD (Remove) (THIS_ BOOL, DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (Get) (THIS_ BOOL, DWORD, DWORD, DWORD, SDATA*, DWORD *) PURE;
+ STDMETHOD (Set) (THIS_ BOOL, DWORD, DWORD, DWORD, SDATA) PURE;
+ STDMETHOD (EnableItem) (THIS_ BOOL, DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (Num) (THIS_ BOOL, DWORD *) PURE;
+};
+
+typedef IVDctGlossaryW FAR * PIVDCTGLOSSARYW;
+
+
+#undef INTERFACE
+#define INTERFACE IVDctGlossaryA
+
+// {A02C2CA3-AE50-11cf-833A-00AA00A21A29}
+DEFINE_GUID(IID_IVDctGlossaryA,
+0xA02C2CA3, 0xAE50, 0x11cf, 0x83, 0x3A, 0x00, 0xAA, 0x00, 0xA2, 0x1A, 0x29);
+
+DECLARE_INTERFACE_ (IVDctGlossaryA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctGlossary members
+ STDMETHOD (Add) (THIS_ BOOL, DWORD, SDATA, DWORD *) PURE;
+ STDMETHOD (Remove) (THIS_ BOOL, DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (Get) (THIS_ BOOL, DWORD, DWORD, DWORD, SDATA*, DWORD *) PURE;
+ STDMETHOD (Set) (THIS_ BOOL, DWORD, DWORD, DWORD, SDATA) PURE;
+ STDMETHOD (EnableItem) (THIS_ BOOL, DWORD, DWORD, DWORD) PURE;
+ STDMETHOD (Num) (THIS_ BOOL, DWORD *) PURE;
+};
+
+typedef IVDctGlossaryA FAR * PIVDCTGLOSSARYA;
+
+
+#ifdef _S_UNICODE
+ #define IVDctGlossary IVDctGlossaryW
+ #define IID_IVDctGlossary IID_IVDctGlossaryW
+ #define PIVDCTGLOSSARY PIVDCTGLOSSARYW
+
+#else
+ #define IVDctGlossary IVDctGlossaryA
+ #define IID_IVDctGlossary IID_IVDctGlossaryA
+ #define PIVDCTGLOSSARY PIVDCTGLOSSARYA
+
+#endif // _S_UNICODE
+
+
+
+
+/*
+ * IVDctDialog
+ */
+#undef INTERFACE
+#define INTERFACE IVDctDialogsW
+
+// {88AD7DC7-67D5-11cf-9B8B-08005AFC3A41}
+DEFINE_GUID(IID_IVDctDialogsW,
+0x88ad7dc7, 0x67d5, 0x11cf, 0x9b, 0x8b, 0x8, 0x0, 0x5a, 0xfc, 0x3a, 0x41);
+
+DECLARE_INTERFACE_ (IVDctDialogsW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctDialogs members
+ STDMETHOD (AboutDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (GeneralDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (LexiconDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (TrainGeneralDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (TrainMicDlg) (THIS_ HWND, PCWSTR) PURE;
+};
+
+typedef IVDctDialogsW FAR * PIVDCTDIALOGSW;
+
+
+#undef INTERFACE
+#define INTERFACE IVDctDialogsA
+
+// {88AD7DC8-67D5-11cf-9B8B-08005AFC3A41}
+DEFINE_GUID(IID_IVDctDialogsA,
+0x88ad7dc8, 0x67d5, 0x11cf, 0x9b, 0x8b, 0x8, 0x0, 0x5a, 0xfc, 0x3a, 0x41);
+
+DECLARE_INTERFACE_ (IVDctDialogsA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctDialogs members
+ STDMETHOD (AboutDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (GeneralDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (LexiconDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (TrainGeneralDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (TrainMicDlg) (THIS_ HWND, PCSTR) PURE;
+};
+
+typedef IVDctDialogsA FAR * PIVDCTDIALOGSA;
+
+
+#ifdef _S_UNICODE
+ #define IVDctDialogs IVDctDialogsW
+ #define IID_IVDctDialogs IID_IVDctDialogsW
+ #define PIVDCTDIALOGS PIVDCTDIALOGSW
+
+#else
+ #define IVDctDialogs IVDctDialogsA
+ #define IID_IVDctDialogs IID_IVDctDialogsA
+ #define PIVDCTDIALOGS PIVDCTDIALOGSA
+
+#endif // _S_UNICODE
+
+
+#undef INTERFACE
+#define INTERFACE IVDctGUI
+
+// {8953F1A0-7E80-11cf-8D15-00A0C9034A7E}
+DEFINE_GUID(IID_IVDctGUI,
+0x8953f1a0, 0x7e80, 0x11cf, 0x8d, 0x15, 0x0, 0xa0, 0xc9, 0x3, 0x4a, 0x7e);
+
+DECLARE_INTERFACE_ (IVDctGUI, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVDctDialogs members
+ STDMETHOD (SetSelRect) (THIS_ RECT *) PURE;
+ STDMETHOD (FlagsSet) (THIS_ DWORD) PURE;
+ STDMETHOD (FlagsGet) (THIS_ DWORD *) PURE;
+};
+
+typedef IVDctGUI FAR * PIVDCTGUI;
+
+
+
+/************************************************************************
+class guids */
+
+// {25522CA0-67CE-11cf-9B8B-08005AFC3A41}
+DEFINE_GUID(CLSID_VDct,
+0x35522ca0, 0x67ce, 0x11cf, 0x9b, 0x8b, 0x8, 0x0, 0x5a, 0xfc, 0x3a, 0x41);
+
+
+
+/************************************************************************
+High-Level text-to-speech API
+*/
+
+
+/************************************************************************
+defines */
+
+#define ONE (1)
+
+// dwFlags parameter of IVoiceText::Register
+#define VTXTF_ALLMESSAGES (ONE<<0)
+
+/*
+ * dwFlags parameter of IVoiceText::Speak
+ */
+
+// type of speech
+#define VTXTST_STATEMENT 0x00000001
+#define VTXTST_QUESTION 0x00000002
+#define VTXTST_COMMAND 0x00000004
+#define VTXTST_WARNING 0x00000008
+#define VTXTST_READING 0x00000010
+#define VTXTST_NUMBERS 0x00000020
+#define VTXTST_SPREADSHEET 0x00000040
+
+// priorities
+#define VTXTSP_VERYHIGH 0x00000080
+#define VTXTSP_HIGH 0x00000100
+#define VTXTSP_NORMAL 0x00000200
+
+/************************************************************************
+typedefs */
+
+// possible parameter to IVoiceText::Register
+typedef struct {
+ DWORD dwDevice;
+ DWORD dwEnable;
+ DWORD dwSpeed;
+ GUID gModeID;
+} VTSITEINFO, *PVTSITEINFO;
+
+
+/************************************************************************
+interfaces */
+
+/*
+ * IVCmdNotifySink
+ */
+#undef INTERFACE
+#define INTERFACE IVTxtNotifySinkW
+
+// {FD3A2430-E090-11cd-A166-00AA004CD65C}
+DEFINE_GUID(IID_IVTxtNotifySinkW, 0xfd3a2430, 0xe090, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+
+DECLARE_INTERFACE_ (IVTxtNotifySinkW, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVTxtNotifySinkW members
+ STDMETHOD (AttribChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (Visual) (THIS_ WCHAR, WCHAR, DWORD, PTTSMOUTH) PURE;
+ STDMETHOD (Speak) (THIS_ PWSTR, PWSTR, DWORD) PURE;
+ STDMETHOD (SpeakingStarted) (THIS) PURE;
+ STDMETHOD (SpeakingDone) (THIS) PURE;
+};
+
+typedef IVTxtNotifySinkW FAR * PIVTXTNOTIFYSINKW;
+
+
+#undef INTERFACE
+#define INTERFACE IVTxtNotifySinkA
+
+// {D2C840E0-E092-11cd-A166-00AA004CD65C}
+DEFINE_GUID(IID_IVTxtNotifySinkA, 0xd2c840e0, 0xe092, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+
+DECLARE_INTERFACE_ (IVTxtNotifySinkA, IUnknown) {
+
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVTxtNotifySinkA members
+ STDMETHOD (AttribChanged) (THIS_ DWORD) PURE;
+ STDMETHOD (Visual) (THIS_ WCHAR, CHAR, DWORD, PTTSMOUTH) PURE;
+ STDMETHOD (Speak) (THIS_ PSTR, PSTR, DWORD) PURE;
+ STDMETHOD (SpeakingStarted) (THIS) PURE;
+ STDMETHOD (SpeakingDone) (THIS) PURE;
+};
+
+typedef IVTxtNotifySinkA FAR * PIVTXTNOTIFYSINKA;
+
+
+#ifdef _S_UNICODE
+ #define IVTxtNotifySink IVTxtNotifySinkW
+ #define IID_IVTxtNotifySink IID_IVTxtNotifySinkW
+ #define PIVTXTNOTIFYSINK PIVTXTNOTIFYSINKW
+
+#else
+ #define IVTxtNotifySink IVTxtNotifySinkA
+ #define IID_IVTxtNotifySink IID_IVTxtNotifySinkA
+ #define PIVTXTNOTIFYSINK PIVTXTNOTIFYSINKA
+
+#endif // _S_UNICODE
+
+
+
+/*
+ * IVoiceText
+ */
+#undef INTERFACE
+#define INTERFACE IVoiceTextW
+
+// {C4FE8740-E093-11cd-A166-00AA004CD65C}
+DEFINE_GUID(IID_IVoiceTextW, 0xc4fe8740, 0xe093, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+
+DECLARE_INTERFACE_ (IVoiceTextW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVoiceText members
+
+ STDMETHOD (Register) (THIS_ PCWSTR, PCWSTR,
+ PIVTXTNOTIFYSINK, GUID,
+ DWORD, PVTSITEINFO) PURE;
+ STDMETHOD (Speak) (THIS_ PCWSTR, DWORD, PCWSTR) PURE;
+ STDMETHOD (StopSpeaking) (THIS) PURE;
+ STDMETHOD (AudioFastForward) (THIS) PURE;
+ STDMETHOD (AudioPause) (THIS) PURE;
+ STDMETHOD (AudioResume) (THIS) PURE;
+ STDMETHOD (AudioRewind) (THIS) PURE;
+};
+
+typedef IVoiceTextW FAR * PIVOICETEXTW;
+
+
+#undef INTERFACE
+#define INTERFACE IVoiceTextA
+
+// {E1B7A180-E093-11cd-A166-00AA004CD65C}
+DEFINE_GUID(IID_IVoiceTextA, 0xe1b7a180, 0xe093, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+
+DECLARE_INTERFACE_ (IVoiceTextA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVoiceText members
+
+ STDMETHOD (Register) (THIS_ PCSTR, PCSTR,
+ PIVTXTNOTIFYSINK, GUID,
+ DWORD, PVTSITEINFO) PURE;
+ STDMETHOD (Speak) (THIS_ PCSTR, DWORD, PCSTR) PURE;
+ STDMETHOD (StopSpeaking) (THIS) PURE;
+ STDMETHOD (AudioFastForward) (THIS) PURE;
+ STDMETHOD (AudioPause) (THIS) PURE;
+ STDMETHOD (AudioResume) (THIS) PURE;
+ STDMETHOD (AudioRewind) (THIS) PURE;
+};
+
+typedef IVoiceTextA FAR * PIVOICETEXTA;
+
+
+#ifdef _S_UNICODE
+ #define IVoiceText IVoiceTextW
+ #define IID_IVoiceText IID_IVoiceTextW
+ #define PIVOICETEXT PIVOICETEXTW
+
+#else
+ #define IVoiceText IVoiceTextA
+ #define IID_IVoiceText IID_IVoiceTextA
+ #define PIVOICETEXT PIVOICETEXTA
+
+#endif //_S_UNICODE
+
+
+
+/*
+ * IVTxtAttributes
+ */
+#undef INTERFACE
+#define INTERFACE IVTxtAttributesW
+
+// {6A8D6140-E095-11cd-A166-00AA004CD65C}
+DEFINE_GUID(IID_IVTxtAttributesW, 0x6a8d6140, 0xe095, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+
+DECLARE_INTERFACE_ (IVTxtAttributesW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVTxtAttributes members
+ STDMETHOD (DeviceGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (DeviceSet) (THIS_ DWORD) PURE;
+ STDMETHOD (EnabledGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (EnabledSet) (THIS_ DWORD) PURE;
+ STDMETHOD (IsSpeaking) (THIS_ BOOL *) PURE;
+ STDMETHOD (SpeedGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (SpeedSet) (THIS_ DWORD) PURE;
+ STDMETHOD (TTSModeGet) (THIS_ GUID *) PURE;
+ STDMETHOD (TTSModeSet) (THIS_ GUID) PURE;
+};
+
+typedef IVTxtAttributesW FAR * PIVTXTATTRIBUTESW;
+
+
+#undef INTERFACE
+#define INTERFACE IVTxtAttributesA
+
+// {8BE9CC30-E095-11cd-A166-00AA004CD65C}
+DEFINE_GUID(IID_IVTxtAttributesA, 0x8be9cc30, 0xe095, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+
+DECLARE_INTERFACE_ (IVTxtAttributesA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVTxtAttributes members
+ STDMETHOD (DeviceGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (DeviceSet) (THIS_ DWORD) PURE;
+ STDMETHOD (EnabledGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (EnabledSet) (THIS_ DWORD) PURE;
+ STDMETHOD (IsSpeaking) (THIS_ BOOL *) PURE;
+ STDMETHOD (SpeedGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (SpeedSet) (THIS_ DWORD) PURE;
+ STDMETHOD (TTSModeGet) (THIS_ GUID *) PURE;
+ STDMETHOD (TTSModeSet) (THIS_ GUID) PURE;
+};
+
+typedef IVTxtAttributesA FAR * PIVTXTATTRIBUTESA;
+
+
+#ifdef _S_UNICODE
+ #define IVTxtAttributes IVTxtAttributesW
+ #define IID_IVTxtAttributes IID_IVTxtAttributesW
+ #define PIVTXTATTRIBUTES PIVTXTATTRIBUTESW
+
+#else
+ #define IVTxtAttributes IVTxtAttributesA
+ #define IID_IVTxtAttributes IID_IVTxtAttributesA
+ #define PIVTXTATTRIBUTES PIVTXTATTRIBUTESA
+
+#endif // _S_UNICODE
+
+
+
+/*
+ * IVTxtDialog
+ */
+#undef INTERFACE
+#define INTERFACE IVTxtDialogsW
+
+// {D6469210-E095-11cd-A166-00AA004CD65C}
+DEFINE_GUID(IID_IVTxtDialogsW, 0xd6469210, 0xe095, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+
+DECLARE_INTERFACE_ (IVTxtDialogsW, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVTxtDialogs members
+
+ STDMETHOD (AboutDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (LexiconDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (GeneralDlg) (THIS_ HWND, PCWSTR) PURE;
+ STDMETHOD (TranslateDlg) (THIS_ HWND, PCWSTR) PURE;
+};
+
+typedef IVTxtDialogsW FAR * PIVTXTDIALOGSW;
+
+
+#undef INTERFACE
+#define INTERFACE IVTxtDialogsA
+
+// {E8F6FA20-E095-11cd-A166-00AA004CD65C}
+DEFINE_GUID(IID_IVTxtDialogsA, 0xe8f6fa20, 0xe095, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+
+DECLARE_INTERFACE_ (IVTxtDialogsA, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IVTxtDialogs members
+ STDMETHOD (AboutDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (LexiconDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (GeneralDlg) (THIS_ HWND, PCSTR) PURE;
+ STDMETHOD (TranslateDlg) (THIS_ HWND, PCSTR) PURE;
+};
+
+typedef IVTxtDialogsA FAR * PIVTXTDIALOGSA;
+
+
+#ifdef _S_UNICODE
+ #define IVTxtDialogs IVTxtDialogsW
+ #define IID_IVTxtDialogs IID_IVTxtDialogsW
+ #define PIVTXTDIALOGS PIVTXTDIALOGSW
+
+#else
+ #define IVTxtDialogs IVTxtDialogsA
+ #define IID_IVTxtDialogs IID_IVTxtDialogsA
+ #define PIVTXTDIALOGS PIVTXTDIALOGSA
+
+#endif // _S_UNICODE
+
+
+
+/************************************************************************
+class guids */
+
+// {080EB9D0-E096-11cd-A166-00AA004CD65C}
+// DEFINE_GUID(CLSID_VTxt, 0x80eb9d0, 0xe096, 0x11cd, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+// {F1DC95A0-0BA7-11ce-A166-00AA004CD65C}
+DEFINE_GUID(CLSID_VTxt,
+0xf1dc95a0, 0xba7, 0x11ce, 0xa1, 0x66, 0x0, 0xaa, 0x0, 0x4c, 0xd6, 0x5c);
+
+
+// {70618F72-D1ED-11d0-8FAC-08002BE4E62A}
+DEFINE_GUID(CLSID_STGramComp,
+0x70618f72, 0xd1ed, 0x11d0, 0x8f, 0xac, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+// {EFD0E6BA-DB5F-11d0-8FAC-08002BE4E62A}
+DEFINE_GUID(CLSID_STTTSQueue,
+0xefd0e6ba, 0xdb5f, 0x11d0, 0x8f, 0xac, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+// {B3613D9F-E26E-11d0-8FAC-08002BE4E62A}
+DEFINE_GUID(CLSID_STLog,
+0xb3613d9f, 0xe26e, 0x11d0, 0x8f, 0xac, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+// {B3613DA0-E26E-11d0-8FAC-08002BE4E62A}
+DEFINE_GUID(CLSID_AudioSourceLog,
+0xb3613da0, 0xe26e, 0x11d0, 0x8f, 0xac, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+// {2EC5A8A5-E65B-11d0-8FAC-08002BE4E62A}
+DEFINE_GUID(CLSID_AudioSourceTel,
+0x2ec5a8a5, 0xe65b, 0x11d0, 0x8f, 0xac, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+// {2EC5A8A6-E65B-11d0-8FAC-08002BE4E62A}
+DEFINE_GUID(CLSID_AudioDestTel,
+0x2ec5a8a6, 0xe65b, 0x11d0, 0x8f, 0xac, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+// {61935832-FC85-11d0-8FAE-08002BE4E62A}
+DEFINE_GUID(CLSID_STRecord,
+0x61935832, 0xfc85, 0x11d0, 0x8f, 0xae, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+/* interfaces */
+// ISTRecord Interface
+
+#undef INTERFACE
+#define INTERFACE ISTRecord
+
+// {61935833-FC85-11d0-8FAE-08002BE4E62A}
+DEFINE_GUID(IID_ISTRecord,
+0x61935833, 0xfc85, 0x11d0, 0x8f, 0xae, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+typedef struct {
+ DWORD dwBetweenUtt; // acceptable time between utterance, milliseconds
+ DWORD dwInitialBuf; // milliseconds of audio in the initial buffer
+ DWORD dwReallocBuf; // amount to increase a buffer every time new audio
+ DWORD dwMaxBuf; // maximum number of milliseconds that buffer can be
+ DWORD dwNoAnswer; // milliseconds of silence before get no-answer
+} STRECORDPARAM, *PSTRECORDPARAM;
+
+DECLARE_INTERFACE_ (ISTRecord, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISTGramComp members
+ STDMETHOD (Init) (THIS_ LPUNKNOWN, DWORD, LPUNKNOWN) PURE;
+ STDMETHOD (ParamsSet) (THIS_ PSTRECORDPARAM) PURE;
+ STDMETHOD (Start) (THIS) PURE;
+ STDMETHOD (Stop) (THIS_ DWORD) PURE;
+ STDMETHOD (GetWAV) (THIS_ PVOID*, DWORD*) PURE;
+ STDMETHOD (ClearWAV) (THIS) PURE;
+ };
+
+typedef ISTRecord FAR * PISTRECORD;
+
+
+// ISTRecordNotifySink Interface
+
+#undef INTERFACE
+#define INTERFACE ISTRecordNotifySink
+
+// {61935834-FC85-11d0-8FAE-08002BE4E62A}
+DEFINE_GUID(IID_ISTRecordNotifySink,
+0x61935834, 0xfc85, 0x11d0, 0x8f, 0xae, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+DECLARE_INTERFACE_ (ISTRecordNotifySink, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISTGramComp members
+ STDMETHOD (AutoStop) (THIS) PURE;
+ STDMETHOD (VU) (THIS_ WORD) PURE;
+ };
+
+typedef ISTRecordNotifySink FAR * PISTRECORDNOTIFYSINK;
+
+
+
+// ISTGramComp Interface
+
+#undef INTERFACE
+#define INTERFACE ISTGramComp
+
+// {70618F73-D1ED-11d0-8FAC-08002BE4E62A}
+DEFINE_GUID(IID_ISTGramComp,
+0x70618f73, 0xd1ed, 0x11d0, 0x8f, 0xac, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+DECLARE_INTERFACE_ (ISTGramComp, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISTGramComp members
+ STDMETHOD (FromMemory) (THIS_ PVOID, DWORD) PURE;
+ STDMETHOD (FromResource) (THIS_ HINSTANCE, DWORD) PURE;
+ STDMETHOD (FromFile) (THIS_ PCWSTR) PURE;
+ STDMETHOD (FromStream) (THIS_ IStream *) PURE;
+ STDMETHOD (Compile) (THIS_ LPWSTR*, DWORD*) PURE;
+ STDMETHOD (IsCompiled) (THIS_ BOOL*) PURE;
+ STDMETHOD (ToMemory) (THIS_ PVOID*, DWORD*) PURE;
+ STDMETHOD (ToFile) (THIS_ PCWSTR) PURE;
+ STDMETHOD (ToStream) (THIS_ IStream *) PURE;
+ STDMETHOD (TextGet) (THIS_ LPWSTR*, DWORD*) PURE;
+ STDMETHOD (LanguageGet) (THIS_ LANGUAGEW*) PURE;
+ STDMETHOD (GrammarFormatGet) (THIS_ SRGRMFMT*) PURE;
+ STDMETHOD (GrammarDataGet) (THIS_ BOOL, PVOID*, DWORD*) PURE;
+ STDMETHOD (GrammarDataSet) (THIS_ PVOID, DWORD) PURE;
+ STDMETHOD (AutoList) (THIS_ PISRGRAMCFGW) PURE;
+ STDMETHOD (PhraseParse) (THIS_ PSRPHRASEW, DWORD *, LPWSTR *, DWORD *) PURE;
+ STDMETHOD (GrammarLoad) (THIS_ LPUNKNOWN, PVOID, IID, LPUNKNOWN *) PURE;
+ STDMETHOD (PhraseParseAlt) (THIS_ DWORD, DWORD *, LPWSTR *, DWORD *) PURE;
+ STDMETHOD (PhraseParseRule) (THIS_ PCWSTR, PSRPHRASEW, DWORD *, LPWSTR *, DWORD *) PURE;
+ };
+
+typedef ISTGramComp FAR * PISTGRAMCOMP;
+
+
+
+// ISTTTSQueue Interface
+
+#undef INTERFACE
+#define INTERFACE ISTTTSQueue
+
+// {EFD0E6BB-DB5F-11d0-8FAC-08002BE4E62A}
+DEFINE_GUID(IID_ISTTTSQueue,
+0xefd0e6bb, 0xdb5f, 0x11d0, 0x8f, 0xac, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+DECLARE_INTERFACE_ (ISTTTSQueue, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISTTTSQueue members
+ STDMETHOD (WaveAddFromFile) (THIS_ PCWSTR, PCWSTR) PURE;
+ STDMETHOD (WaveAddFromStream) (THIS_ PCWSTR, IStream *) PURE;
+ STDMETHOD (WaveAddFromMemory) (THIS_ PCWSTR, PVOID, DWORD) PURE;
+ STDMETHOD (WaveAddFromResource) (THIS_ PCWSTR, HMODULE, DWORD) PURE;
+ STDMETHOD (WaveAddFromList) (THIS_ PCWSTR, HMODULE) PURE;
+ STDMETHOD (WaveRemove) (THIS_ PCWSTR) PURE;
+ STDMETHOD (WaveAudioDestSet) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (WaveLevelSet) (THIS_ DWORD) PURE;
+ STDMETHOD (WaveLevelGet) (THIS_ DWORD *) PURE;
+ STDMETHOD (TTSAdd) (THIS_ PCWSTR, LPUNKNOWN) PURE;
+ STDMETHOD (TTSRemove) (THIS_ PCWSTR) PURE;
+ STDMETHOD (TTSGet) (THIS_ PCWSTR, LPUNKNOWN *) PURE;
+ STDMETHOD (Speak) (THIS_ PCWSTR, PCWSTR, DWORD) PURE;
+ STDMETHOD (TextData) (THIS_ VOICECHARSET, DWORD, SDATA, PCWSTR, DWORD) PURE;
+ STDMETHOD (AudioPause) (THIS) PURE;
+ STDMETHOD (AudioResume) (THIS) PURE;
+ STDMETHOD (AudioReset) (THIS) PURE;
+ STDMETHOD (Register) (THIS_ PVOID, REFIID) PURE;
+ STDMETHOD (UseLogging) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (IsSpeaking) (THIS_ DWORD*) PURE;
+ };
+
+typedef ISTTTSQueue FAR * PISTTTSQUEUE;
+
+
+// ISTTTSQueueNotifySink Interface
+
+#undef INTERFACE
+#define INTERFACE ISTTTSQueueNotifySink
+
+// {8412FA0C-DB6A-11d0-8FAC-08002BE4E62A}
+DEFINE_GUID(IID_ISTTTSQueueNotifySink,
+0x8412fa0c, 0xdb6a, 0x11d0, 0x8f, 0xac, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+DECLARE_INTERFACE_ (ISTTTSQueueNotifySink, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISTTTSQueueNotifySink members
+ STDMETHOD (Start) (THIS) PURE;
+ STDMETHOD (Stop) (THIS) PURE;
+ STDMETHOD (SpeakID) (THIS_ DWORD) PURE;
+ STDMETHOD (Error) (THIS_ HRESULT) PURE;
+ STDMETHOD (Bookmark) (THIS_ DWORD) PURE;
+ };
+
+typedef ISTTTSQueueNotifySink FAR * PISTTTSQUEUENOTIFYSINK;
+
+
+// ISTLog Interface
+
+#undef INTERFACE
+#define INTERFACE ISTLog
+
+// {B3613DA1-E26E-11d0-8FAC-08002BE4E62A}
+DEFINE_GUID(IID_ISTLog,
+0xb3613da1, 0xe26e, 0x11d0, 0x8f, 0xac, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+DECLARE_INTERFACE_ (ISTLog, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // ISTLog members
+ STDMETHOD (ToFile) (THIS_ PCWSTR) PURE;
+ STDMETHOD (ToStream) (THIS_ IStream *) PURE;
+ STDMETHOD (Text) (THIS_ PCWSTR, PCWSTR, WORD) PURE;
+ STDMETHOD (Data) (THIS_ PCWSTR, PCWSTR, WORD, PVOID, DWORD) PURE;
+ STDMETHOD (MaxDetailSet) (THIS_ WORD) PURE;
+ STDMETHOD (MaxDetailGet) (THIS_ WORD*) PURE;
+ STDMETHOD (ShowOutput) (THIS_ BOOL) PURE;
+ };
+
+typedef ISTLog FAR * PISTLOG;
+
+
+// IAudioSourceLog Interface
+
+#undef INTERFACE
+#define INTERFACE IAudioSourceLog
+
+// {B3613DA2-E26E-11d0-8FAC-08002BE4E62A}
+DEFINE_GUID(IID_IAudioSourceLog,
+0xb3613da2, 0xe26e, 0x11d0, 0x8f, 0xac, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+DECLARE_INTERFACE_ (IAudioSourceLog, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IAudioSourceLog members
+ STDMETHOD (AudioSource) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (UseLogging) (THIS_ LPUNKNOWN) PURE;
+ };
+
+typedef IAudioSourceLog FAR * PIAUDIOSOURCELOG;
+
+
+
+// IAudioTel Interface
+
+#undef INTERFACE
+#define INTERFACE IAudioTel
+
+// {2EC5A8A7-E65B-11d0-8FAC-08002BE4E62A}
+DEFINE_GUID(IID_IAudioTel,
+0x2ec5a8a7, 0xe65b, 0x11d0, 0x8f, 0xac, 0x8, 0x0, 0x2b, 0xe4, 0xe6, 0x2a);
+
+DECLARE_INTERFACE_ (IAudioTel, IUnknown) {
+ // IUnknown members
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // IAudioTel members
+ STDMETHOD (AudioObject) (THIS_ LPUNKNOWN) PURE;
+ STDMETHOD (WaveFormatSet) (THIS_ SDATA) PURE;
+ };
+
+typedef IAudioTel FAR * PIAUDIOTEL;
+
+
+
+
+
+/************************************************************************
+External speech synthesizer - This is for using external, hardware
+based speech synthesizers with SAPI */
+
+
+/************************************************************************
+defines */
+
+
+// Synthesizer Attributes
+#define TTS_LANGUAGE SETBIT(0)
+#define TTS_VOICE SETBIT(1)
+#define TTS_GENDER SETBIT(2)
+#define TTS_VOLUME SETBIT(3)
+#define TTS_PITCH SETBIT(4)
+#define TTS_SPEED SETBIT(5)
+#define TTS_ABBREVIATION SETBIT(6)
+#define TTS_PUNCTUATION SETBIT(7)
+#define TTS_PAUSEWORD SETBIT(8)
+#define TTS_PAUSEPHRASE SETBIT(9)
+#define TTS_PAUSESENTENCE SETBIT(10)
+#define TTS_SPELLING SETBIT(11)
+#define TTS_QUALITY SETBIT(12)
+#define TTS_FRICATION SETBIT(13)
+#define TTS_ASPIRATION SETBIT(14)
+#define TTS_INTONATION SETBIT(15)
+
+
+// Attribute minimums and maximums
+#define TTSATTR_MINPAUSEWORD 0x00000000
+#define TTSATTR_MAXPAUSEWORD 0xffffffff
+#define TTSATTR_MINPAUSEPHRASE 0x00000000
+#define TTSATTR_MAXPAUSEPHRASE 0xffffffff
+#define TTSATTR_MINPAUSESENTENCE 0x00000000
+#define TTSATTR_MAXPAUSESENTENCE 0xffffffff
+#define TTSATTR_MINASPIRATION 0x00000000
+#define TTSATTR_MAXASPIRATION 0xffffffff
+#define TTSATTR_MINFRICATION 0x00000000
+#define TTSATTR_MAXFRICATION 0xffffffff
+#define TTSATTR_MININTONATION 0x00000000
+#define TTSATTR_MAXINTONATION 0xffffffff
+
+
+// ITTSNotifySink
+#define TTSNSAC_LANGUAGE 100
+#define TTSNSAC_VOICE 101
+#define TTSNSAC_GENDER 102
+#define TTSNSAC_ABBREVIATION 103
+#define TTSNSAC_PUNCTUATION 104
+#define TTSNSAC_PAUSEWORD 105
+#define TTSNSAC_PAUSEPHRASE 106
+#define TTSNSAC_PAUSESENTENCE 107
+#define TTSNSAC_SPELLING 108
+#define TTSNSAC_QUALITY 109
+#define TTSNSAC_FRICATION 110
+#define TTSNSAC_ASPIRATION 111
+#define TTSNSAC_INTONATION 112
+
+
+// Interfaces
+#define TTSI_ITTSEXTERNALSYNTHESIZER SETBIT(4)
+
+
+// TTSERR Result codes
+#define TTSERR_SYNTHESIZERBUSY TTSERROR(100)
+#define TTSERR_ALREADYDISPLAYED TTSERROR(101)
+#define TTSERR_INVALIDATTRIB TTSERROR(102)
+#define TTSERR_SYNTHESIZERACCESSERROR TTSERROR(103)
+#define TTSERR_DRIVERERROR TTSERROR(104)
+#define TTSERR_UNRECOVERABLEERROR TTSERROR(105)
+#define TTSERR_DRIVERACCESSERROR TTSERROR(106)
+#define TTSERR_BUFFERTOOSMALL TTSERROR(107)
+#define TTSERR_DRIVERNOTFOUND TTSERROR(108)
+#define TTSERR_CANNOTREGISTER TTSERROR(109)
+#define TTSERR_LANGUAGENOTSUPPORTED TTSERROR(110)
+
+
+/************************************************************************
+Class IDs */
+
+// {479DFDCB-01A8-11d1-A7A5-00C04FBBE8AB}
+DEFINE_GUID(CLSID_SynthAudioDest,
+0x479dfdcb, 0x1a8, 0x11d1, 0xa7, 0xa5, 0x0, 0xc0, 0x4f, 0xbb, 0xe8, 0xab);
+
+// {26C328C1-F26F-11d0-9DFF-006097622195}
+DEFINE_GUID(CLSID_SynthEngine,
+0x26c328c1, 0xf26f, 0x11d0, 0x9d, 0xff, 0x0, 0x60, 0x97, 0x62, 0x21, 0x95);
+
+// {AC8FCCA1-FFD7-11d0-9E22-006097622195}
+DEFINE_GUID(CLSID_SynthEngineEnumerator,
+0xac8fcca1, 0xffd7, 0x11d0, 0x9e, 0x22, 0x0, 0x60, 0x97, 0x62, 0x21, 0x95);
+
+
+
+/************************************************************************
+typedefs */
+
+// Definition of Preset
+typedef struct
+{
+ LANGID Language;
+ DWORD Voice;
+ DWORD Gender;
+
+ DWORD Volume;
+ DWORD Pitch;
+ DWORD Speed;
+
+ DWORD Abbreviation;
+ DWORD Punctuation;
+ DWORD PauseWord;
+ DWORD PausePhrase;
+ DWORD PauseSentence;
+
+ DWORD Spelling;
+ DWORD Quality;
+
+ DWORD Frication;
+ DWORD Aspiration;
+ DWORD Intonation;
+}
+TTSPRESET, *PTTSPRESET;
+
+
+/************************************************************************
+interfaces */
+
+
+/*
+ * ITTSExternalSynthesizer
+ */
+
+
+#undef INTERFACE
+#define INTERFACE ITTSExternalSynthesizerW
+
+// {A3F8B9C0-2010-11d1-A306-006097622195}
+DEFINE_GUID(IID_ITTSExternalSynthesizerW,
+0xa3f8b9c0, 0x2010, 0x11d1, 0xa3, 0x6, 0x0, 0x60, 0x97, 0x62, 0x21, 0x95);
+
+DECLARE_INTERFACE_(ITTSExternalSynthesizerW, IUnknown)
+{
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ STDMETHOD (AttributeGet) (THIS_ DWORD dwAttribute, DWORD *pdwValue) PURE;
+ STDMETHOD (AttributeSet) (THIS_ DWORD dwAttribute, DWORD dwValue) PURE;
+ STDMETHOD (PresetGet) (THIS_ PTTSPRESET pPreset, DWORD *pdwResult) PURE;
+ STDMETHOD (PresetSet) (THIS_ TTSPRESET Preset, DWORD *pdwResult) PURE;
+
+ STDMETHOD (GetAttributeElements) (THIS_ DWORD dwAttr, DWORD *pdwNumElems) PURE;
+ STDMETHOD (GetAttributeRange) (THIS_ DWORD dwAttr, DWORD *pdwMin, DWORD *pdwMax) PURE;
+ STDMETHOD (GetAttributeValue) (THIS_ DWORD dwAttr, DWORD dwIndex, DWORD *pdwValue, PWSTR szText, DWORD dwMaxChars) PURE;
+ STDMETHOD (GetAttributeIndex) (THIS_ DWORD dwAttr, DWORD dwValue, DWORD *pdwIndex, PWSTR szText, DWORD dwMaxChars) PURE;
+
+ STDMETHOD (AudioFlush) (THIS) PURE;
+
+ STDMETHOD (TextDataInterrupt)(THIS_ VOICECHARSET eCharacterSet, DWORD dwFlags, SDATA dText, PVOID pNotifyInterface, IID IIDNotifyInterface) PURE;
+ STDMETHOD (TextDataCritical) (THIS_ SDATA) PURE;
+
+ STDMETHOD (MiscellaneousDlg) (THIS_ HWND hWndParent, PCWSTR pszTitle) PURE;
+};
+typedef ITTSExternalSynthesizerW *PITTSEXTERNALSYNTHESIZERW;
+
+
+#undef INTERFACE
+#define INTERFACE ITTSExternalSynthesizerA
+
+// {3D11C963-F210-11d0-A788-00C04FBBE8AB}
+DEFINE_GUID(IID_ITTSExternalSynthesizerA,
+0x3d11c963, 0xf210, 0x11d0, 0xa7, 0x88, 0x0, 0xc0, 0x4f, 0xbb, 0xe8, 0xab);
+
+DECLARE_INTERFACE_(ITTSExternalSynthesizerA, IUnknown)
+{
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ STDMETHOD (AttributeGet) (THIS_ DWORD dwAttribute, DWORD *pdwValue) PURE;
+ STDMETHOD (AttributeSet) (THIS_ DWORD dwAttribute, DWORD dwValue) PURE;
+ STDMETHOD (PresetGet) (THIS_ PTTSPRESET pPreset, DWORD *pdwResult) PURE;
+ STDMETHOD (PresetSet) (THIS_ TTSPRESET Preset, DWORD *pdwResult) PURE;
+
+ STDMETHOD (GetAttributeElements) (THIS_ DWORD dwAttr, DWORD *pdwNumElems) PURE;
+ STDMETHOD (GetAttributeRange) (THIS_ DWORD dwAttr, DWORD *pdwMin, DWORD *pdwMax) PURE;
+ STDMETHOD (GetAttributeValue) (THIS_ DWORD dwAttr, DWORD dwIndex, DWORD *pdwValue, PSTR szText, DWORD dwMaxChars) PURE;
+ STDMETHOD (GetAttributeIndex) (THIS_ DWORD dwAttr, DWORD dwValue, DWORD *pdwIndex, PSTR szText, DWORD dwMaxChars) PURE;
+
+ STDMETHOD (AudioFlush) (THIS) PURE;
+
+ STDMETHOD (TextDataInterrupt)(THIS_ VOICECHARSET eCharacterSet, DWORD dwFlags, SDATA dText, PVOID pNotifyInterface, IID IIDNotifyInterface) PURE;
+ STDMETHOD (TextDataCritical) (THIS_ SDATA) PURE;
+
+ STDMETHOD (MiscellaneousDlg) (THIS_ HWND hWndParent, PCSTR pszTitle) PURE;
+};
+typedef ITTSExternalSynthesizerA *PITTSEXTERNALSYNTHESIZERA;
+
+
+#ifdef _S_UNICODE
+ #define ITTSExternalSynthesizer ITTSExternalSynthesizerW
+ #define IID_ITTSExternalSynthesizer IID_ITTSExternalSynthesizerW
+ #define PITTSEXTERNALSYNTHESIZER PITTSEXTERNALSYNTHESIZERW
+
+#else
+ #define ITTSExternalSynthesizer ITTSExternalSynthesizerA
+ #define IID_ITTSExternalSynthesizer IID_ITTSExternalSynthesizerA
+ #define PITTSEXTERNALSYNTHESIZER PITTSEXTERNALSYNTHESIZERA
+
+#endif // _S_UNICODE
+
+
+
+/*
+ * IAudioExternalSynthesizer
+ */
+
+#undef INTERFACE
+#define INTERFACE IAudioExternalSynthesizer
+
+// {33E0E76B-70CE-11d1-A826-00C04FBBE8AB}
+DEFINE_GUID(IID_IAudioExternalSynthesizer,
+0x33e0e76b, 0x70ce, 0x11d1, 0xa8, 0x26, 0x0, 0xc0, 0x4f, 0xbb, 0xe8, 0xab);
+
+DECLARE_INTERFACE_(IAudioExternalSynthesizer, IUnknown)
+{
+ STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+};
+typedef IAudioExternalSynthesizer *PIAUDIOEXTERNALSYNTHESIZER;
+
+
+#endif // _SPEECH_
diff --git a/plugins/WinterSpeak/src/SAPI 4.0/Lib/spchwrap.lib b/plugins/WinterSpeak/src/SAPI 4.0/Lib/spchwrap.lib
new file mode 100644
index 0000000000..7e73f8bd18
--- /dev/null
+++ b/plugins/WinterSpeak/src/SAPI 4.0/Lib/spchwrap.lib
Binary files differ