winapi_ui_automation/um/
sapiddk.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6use ctypes::{c_float, c_int, c_void};
7use shared::guiddef::CLSID;
8use shared::minwindef::{BOOL, DWORD, ULONG};
9use um::sapi::*;
10use um::unknwnbase::{IUnknown, IUnknownVtbl};
11use um::winnt::{HRESULT, LPCWSTR, ULONGLONG, WCHAR};
12pub use um::sapiddk51::{
13    SPRECOEXTENSION,
14    SPALTERNATESCLSID,
15};
16pub const SR_LOCALIZED_DESCRIPTION: &'static str = "Description";
17pub use um::sapiddk51::{
18    ISpTokenUI, ISpTokenUIVtbl,
19    ISpObjectTokenEnumBuilder, ISpObjectTokenEnumBuilderVtbl,
20    SPWORDHANDLE,
21    SPRULEHANDLE,
22    SPGRAMMARHANDLE,
23    SPRECOCONTEXTHANDLE,
24    SPPHRASERULEHANDLE,
25    SPPHRASEPROPERTYHANDLE,
26    SPTRANSITIONID,
27    ISpErrorLog, ISpErrorLogVtbl,
28    ISpGrammarCompiler, ISpGrammarCompilerVtbl,
29    ISpGramCompBackend, ISpGramCompBackendVtbl,
30    ISpITNProcessor, ISpITNProcessorVtbl,
31    ISpPhraseBuilder, ISpPhraseBuilderVtbl,
32    ISpTask,
33    ISpThreadTask,
34    ISpThreadControl, ISpThreadControlVtbl,
35    SPTMTHREADINFO,
36    ISpTaskManager, ISpTaskManagerVtbl,
37    SPVSKIPTYPE,
38    SPVST_SENTENCE,
39    SPVESACTIONS,
40    SPVES_CONTINUE,
41    SPVES_ABORT,
42    SPVES_SKIP,
43    SPVES_RATE,
44    SPVES_VOLUME,
45    ISpTTSEngineSite, ISpTTSEngineSiteVtbl,
46    SPVTEXTFRAG,
47    ISpTTSEngine, ISpTTSEngineVtbl,
48    SPWORDENTRY,
49    SPRULEENTRY,
50    SPTRANSITIONTYPE,
51    SPTRANSEPSILON,
52    SPTRANSWORD,
53    SPTRANSRULE,
54    SPTRANSTEXTBUF,
55    SPTRANSWILDCARD,
56    SPTRANSDICTATION,
57    SPTRANSITIONENTRY,
58    SPTRANSITIONPROPERTY,
59    SPSTATEINFO,
60    SPPATHENTRY,
61    ISpCFGInterpreterSite, ISpCFGInterpreterSiteVtbl,
62    ISpCFGInterpreter, ISpCFGInterpreterVtbl,
63    SPCFGNOTIFY,
64    SPCFGN_ADD,
65    SPCFGN_REMOVE,
66    SPCFGN_INVALIDATE,
67    SPCFGN_ACTIVATE,
68    SPCFGN_DEACTIVATE,
69    SPRESULTTYPE,
70    SPRT_CFG,
71    SPRT_SLM,
72    SPRT_PROPRIETARY,
73    SPRT_FALSE_RECOGNITION,
74};
75pub const SPRT_TYPE_MASK: SPRESULTTYPE = 3;
76pub const SPRT_EMULATED: SPRESULTTYPE = 1 << 3;
77pub const SPRT_EXTENDABLE_PARSE: SPRESULTTYPE = 1 << 4;
78pub use um::sapiddk51::{
79    SPPHRASEALT,
80    SPRECORESULTINFO,
81};
82STRUCT!{struct SPRECORESULTINFOEX {
83    cbSize: ULONG,
84    eResultType: SPRESULTTYPE,
85    fHypothesis: BOOL,
86    fProprietaryAutoPause: BOOL,
87    ullStreamPosStart: ULONGLONG,
88    ullStreamPosEnd: ULONGLONG,
89    hGrammar: SPGRAMMARHANDLE,
90    ulSizeEngineData: ULONG,
91    pvEngineData: *mut c_void,
92    pPhrase: *mut ISpPhraseBuilder,
93    aPhraseAlts: *mut SPPHRASEALT,
94    ulNumAlts: ULONG,
95    ullStreamTimeStart: ULONGLONG,
96    ullStreamTimeEnd: ULONGLONG,
97}}
98pub use um::sapiddk51::{
99    SPWORDINFOOPT,
100    SPWIO_NONE,
101    SPWIO_WANT_TEXT,
102    SPRULEINFOOPT,
103    SPRIO_NONE,
104    SPPARSEINFO,
105    ISpSREngineSite, ISpSREngineSiteVtbl,
106};
107RIDL!{#[uuid(0x7bc6e012, 0x684a, 0x493e, 0xbd, 0xd4, 0x2b, 0xf5, 0xfb, 0xf4, 0x8c, 0xfe)]
108interface ISpSREngineSite2(ISpSREngineSite2Vtbl): ISpSREngineSite(ISpSREngineSiteVtbl) {
109    fn AddEventEx(
110        pEvent: *const SPEVENTEX,
111        hSAPIRecoContext: SPRECOCONTEXTHANDLE,
112    ) -> HRESULT,
113    fn UpdateRecoPosEx(
114        ullCurrentRecoPos: ULONGLONG,
115        ullCurrentRecoTime: ULONGLONG,
116    ) -> HRESULT,
117    fn GetRuleTransition(
118        ulGrammarID: ULONG,
119        RuleIndex: ULONG,
120        pTrans: *mut SPTRANSITIONENTRY,
121    ) -> HRESULT,
122    fn RecognitionEx(
123        pResultInfo: *const SPRECORESULTINFOEX,
124    ) -> HRESULT,
125}}
126pub use um::sapiddk51::{
127    SPPROPSRC,
128    SPPROPSRC_RECO_INST,
129    SPPROPSRC_RECO_CTX,
130    SPPROPSRC_RECO_GRAMMAR,
131    ISpSREngine, ISpSREngineVtbl,
132};
133RIDL!{#[uuid(0x7ba627d8, 0x33f9, 0x4375, 0x90, 0xc5, 0x99, 0x85, 0xae, 0xe5, 0xed, 0xe5)]
134interface ISpSREngine2(ISpSREngine2Vtbl): ISpSREngine(ISpSREngineVtbl) {
135    fn PrivateCallImmediate(
136        pvEngineContext: *mut c_void,
137        pInCallFrame: *const c_void,
138        ulInCallFrameSize: ULONG,
139        ppvCoMemResponse: *mut *mut c_void,
140        pulResponseSize: *mut ULONG,
141    ) -> HRESULT,
142    fn SetAdaptationData2(
143        pvEngineContext: *mut c_void,
144        pAdaptationData: *const WCHAR,
145        cch: ULONG,
146        pTopicName: LPCWSTR,
147        eSettings: SPADAPTATIONSETTINGS,
148        eRelevance: SPADAPTATIONRELEVANCE,
149    ) -> HRESULT,
150    fn SetGrammarPrefix(
151        pvEngineGrammar: *mut c_void,
152        pszPrefix: LPCWSTR,
153        fIsPrefixRequired: BOOL,
154    ) -> HRESULT,
155    fn SetRulePriority(
156        hRule: SPRULEHANDLE,
157        pvClientRuleContext: *mut c_void,
158        nRulePriority: c_int,
159    ) -> HRESULT,
160    fn EmulateRecognition(
161        pPhrase: *mut ISpPhrase,
162        dwCompareFlags: DWORD,
163    ) -> HRESULT,
164    fn SetSLMWeight(
165        pvEngineGrammar: *mut c_void,
166        flWeight: c_float,
167    ) -> HRESULT,
168    fn SetRuleWeight(
169        hRule: SPRULEHANDLE,
170        pvClientRuleContext: *mut c_void,
171        flWeight: c_float,
172    ) -> HRESULT,
173    fn SetTrainingState(
174        fDoingTraining: BOOL,
175        fAdaptFromTrainingData: BOOL,
176    ) -> HRESULT,
177    fn ResetAcousticModelAdaptation() -> HRESULT,
178    fn OnLoadCFG(
179        pvEngineGrammar: *mut c_void,
180        pvGrammarData: *const SPBINARYGRAMMAR,
181        ulGrammarID: ULONG,
182    ) -> HRESULT,
183    fn OnUnloadCFG(
184        pvEngineGrammar: *mut c_void,
185        ulGrammarID: ULONG,
186    ) -> HRESULT,
187}}
188pub use um::sapiddk51::SPPHRASEALTREQUEST;
189RIDL!{#[uuid(0xfece8294, 0x2be1, 0x408f, 0x8e, 0x68, 0x2d, 0xe3, 0x77, 0x09, 0x2f, 0x0e)]
190interface ISpSRAlternates(ISpSRAlternatesVtbl): IUnknown(IUnknownVtbl) {
191    fn GetAlternates(
192        pAltRequest: *mut SPPHRASEALTREQUEST,
193        ppAlts: *mut *mut SPPHRASEALT,
194        pcAlts: *mut ULONG,
195    ) -> HRESULT,
196    fn Commit(
197        pAltRequest: *mut SPPHRASEALTREQUEST,
198        pAlt: *mut SPPHRASEALT,
199        ppvResultExtra: *mut c_void,
200        pcbResultExtra: *mut ULONG,
201    ) -> HRESULT,
202}}
203RIDL!{#[uuid(0xf338f437, 0xcb33, 0x4020, 0x9c, 0xab, 0xc7, 0x1f, 0xf9, 0xce, 0x12, 0xd3)]
204interface ISpSRAlternates2(ISpSRAlternates2Vtbl): ISpSRAlternates(ISpSRAlternatesVtbl) {
205    fn CommitText(
206        pAltRequest: *mut SPPHRASEALTREQUEST,
207        pcszNewText: LPCWSTR,
208        commitFlags: SPCOMMITFLAGS,
209    ) -> HRESULT,
210}}
211pub use um::sapiddk51::{_ISpPrivateEngineCall, _ISpPrivateEngineCallVtbl};
212RIDL!{#[uuid(0xdefd682a, 0xfe0a, 0x42b9, 0xbf, 0xa1, 0x56, 0xd3, 0xd6, 0xce, 0xcf, 0xaf)]
213interface ISpPrivateEngineCallEx(ISpPrivateEngineCallExVtbl): IUnknown(IUnknownVtbl) {
214    fn CallEngineSynchronize(
215        pInFrame: *const c_void,
216        ulInFrameSize: ULONG,
217        ppCoMemOutFrame: *mut *mut c_void,
218        pulOutFrameSize: *mut ULONG,
219    ) -> HRESULT,
220    fn CallEngineImmediate(
221        pInFrame: *const c_void,
222        ulInFrameSize: ULONG,
223        ppCoMemOutFrame: *mut *mut c_void,
224        pulOutFrameSize: *mut ULONG,
225    ) -> HRESULT,
226}}
227pub use um::sapiddk51::{
228    LIBID_SpeechDDKLib,
229    CLSID_SpDataKey,
230    CLSID_SpObjectTokenEnum,
231    CLSID_SpPhraseBuilder,
232    CLSID_SpITNProcessor,
233    CLSID_SpGrammarCompiler,
234};
235extern {
236    pub static CLSID_SpW3CGrammarCompiler: CLSID;
237}
238pub use um::sapiddk51::CLSID_SpGramCompBackend;