]> git.proxmox.com Git - rustc.git/blob - vendor/winapi/src/um/sapiddk51.rs
New upstream version 1.41.1+dfsg1
[rustc.git] / vendor / winapi / src / um / sapiddk51.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.
6 use ctypes::{c_char, c_float, c_long, c_void};
7 use shared::guiddef::{CLSID, GUID, IID, REFGUID};
8 use shared::minwindef::{BOOL, BYTE, DWORD, ULONG, USHORT, WORD};
9 use shared::mmreg::WAVEFORMATEX;
10 use shared::windef::HWND;
11 use um::oaidl::VARIANT;
12 use um::objidlbase::IStream;
13 use um::sapi::*;
14 use um::unknwnbase::{IUnknown, IUnknownVtbl};
15 use um::winnt::{HANDLE, HRESULT, LONG, LPCWSTR, LPWSTR, PVOID, ULONGLONG, WCHAR};
16 pub const SPRECOEXTENSION: &'static str = "RecoExtension";
17 pub const SPALTERNATESCLSID: &'static str = "AlternatesCLSID";
18 RIDL!{#[uuid(0xf8e690f0, 0x39cb, 0x4843, 0xb8, 0xd7, 0xc8, 0x46, 0x96, 0xe1, 0x11, 0x9d)]
19 interface ISpTokenUI(ISpTokenUIVtbl): IUnknown(IUnknownVtbl) {
20 fn IsUISupported(
21 pszTypeOfUI: LPCWSTR,
22 pvExtraData: *mut c_void,
23 cbExtraData: ULONG,
24 punkObject: *mut IUnknown,
25 pfSupported: *mut BOOL,
26 ) -> HRESULT,
27 fn DisplayUI(
28 hwndParent: HWND,
29 pszTitle: LPCWSTR,
30 pszTypeOfUI: LPCWSTR,
31 pvExtraData: *mut c_void,
32 cbExtraData: ULONG,
33 pToken: *mut ISpObjectToken,
34 punkObject: *mut IUnknown,
35 ) -> HRESULT,
36 }}
37 RIDL!{#[uuid(0x06b64f9f, 0x7fda, 0x11d2, 0xb4, 0xf2, 0x00, 0xc0, 0x4f, 0x79, 0x73, 0x96)]
38 interface ISpObjectTokenEnumBuilder(ISpObjectTokenEnumBuilderVtbl):
39 IEnumSpObjectTokens(IEnumSpObjectTokensVtbl) {
40 fn SetAttribs(
41 pszReqAttribs: LPCWSTR,
42 pszOptAttribs: LPCWSTR,
43 ) -> HRESULT,
44 fn AddTokens(
45 cTokens: ULONG,
46 pToken: *mut *mut ISpObjectToken,
47 ) -> HRESULT,
48 fn AddTokensFromDataKey(
49 pDataKey: *mut ISpDataKey,
50 pszSubKey: LPCWSTR,
51 pszCategoryId: LPCWSTR,
52 ) -> HRESULT,
53 fn AddTokensFromTokenEnum(
54 pTokenEnum: *mut IEnumSpObjectTokens,
55 ) -> HRESULT,
56 fn Sort(
57 pszTokenIdToListFirst: LPCWSTR,
58 ) -> HRESULT,
59 }}
60 DECLARE_HANDLE!{SPWORDHANDLE, SPWORDHANDLE__}
61 DECLARE_HANDLE!{SPRULEHANDLE, SPRULEHANDLE__}
62 DECLARE_HANDLE!{SPGRAMMARHANDLE, SPGRAMMARHANDLE__}
63 DECLARE_HANDLE!{SPRECOCONTEXTHANDLE, SPRECOCONTEXTHANDLE__}
64 DECLARE_HANDLE!{SPPHRASERULEHANDLE, SPPHRASERULEHANDLE__}
65 DECLARE_HANDLE!{SPPHRASEPROPERTYHANDLE, SPPHRASEPROPERTYHANDLE__}
66 DECLARE_HANDLE!{SPTRANSITIONID, SPTRANSITIONID__}
67 RIDL!{#[uuid(0xf4711347, 0xe608, 0x11d2, 0xa0, 0x86, 0x00, 0xc0, 0x4f, 0x8e, 0xf9, 0xb5)]
68 interface ISpErrorLog(ISpErrorLogVtbl): IUnknown(IUnknownVtbl) {
69 fn AddError(
70 lLineNumber: c_long,
71 hr: HRESULT,
72 pszDescription: LPCWSTR,
73 pszHelpFile: LPCWSTR,
74 dwHelpContext: DWORD,
75 ) -> HRESULT,
76 }}
77 RIDL!{#[uuid(0xb1e29d58, 0xa675, 0x11d2, 0x83, 0x02, 0x00, 0xc0, 0x4f, 0x8e, 0xe6, 0xc0)]
78 interface ISpGrammarCompiler(ISpGrammarCompilerVtbl): IUnknown(IUnknownVtbl) {
79 fn CompileStream(
80 pSource: *mut IStream,
81 pDest: *mut IStream,
82 pHeader: *mut IStream,
83 pReserved: *mut IUnknown,
84 pErrorLog: *mut ISpErrorLog,
85 dwFlags: DWORD,
86 ) -> HRESULT,
87 }}
88 RIDL!{#[uuid(0x3ddca27c, 0x665c, 0x4786, 0x9f, 0x97, 0x8c, 0x90, 0xc3, 0x48, 0x8b, 0x61)]
89 interface ISpGramCompBackend(ISpGramCompBackendVtbl): ISpGrammarBuilder(ISpGrammarBuilderVtbl) {
90 fn SetSaveObjects(
91 pStream: *mut IStream,
92 pErrorLog: *mut ISpErrorLog,
93 ) -> HRESULT,
94 fn InitFromBinaryGrammar(
95 pBinaryData: *const SPBINARYGRAMMAR,
96 ) -> HRESULT,
97 }}
98 RIDL!{#[uuid(0x12d7360f, 0xa1c9, 0x11d3, 0xbc, 0x90, 0x00, 0xc0, 0x4f, 0x72, 0xdf, 0x9f)]
99 interface ISpITNProcessor(ISpITNProcessorVtbl): IUnknown(IUnknownVtbl) {
100 fn LoadITNGrammar(
101 pszCLSID: LPWSTR,
102 ) -> HRESULT,
103 fn ITNPhrase(
104 pPhrase: *mut ISpPhraseBuilder,
105 ) -> HRESULT,
106 }}
107 RIDL!{#[uuid(0x88a3342a, 0x0bed, 0x4834, 0x92, 0x2b, 0x88, 0xd4, 0x31, 0x73, 0x16, 0x2f)]
108 interface ISpPhraseBuilder(ISpPhraseBuilderVtbl): ISpPhrase(ISpPhraseVtbl) {
109 fn InitFromPhrase(
110 pPhrase: *const SPPHRASE,
111 ) -> HRESULT,
112 fn InitFromSerializedPhrase(
113 pPhrase: *const SPSERIALIZEDPHRASE,
114 ) -> HRESULT,
115 fn AddElements(
116 cElements: ULONG,
117 pElement: *const SPPHRASEELEMENT,
118 ) -> HRESULT,
119 fn AddRules(
120 hParent: SPPHRASERULEHANDLE,
121 pRule: *const SPPHRASERULE,
122 phNewRule: *mut SPPHRASERULEHANDLE,
123 ) -> HRESULT,
124 fn AddProperties(
125 hParent: SPPHRASEPROPERTYHANDLE,
126 pProperty: *const SPPHRASEPROPERTY,
127 phNewProperty: *mut SPPHRASEPROPERTYHANDLE,
128 ) -> HRESULT,
129 fn AddReplacements(
130 cReplacements: ULONG,
131 pReplacements: *const SPPHRASEREPLACEMENT,
132 ) -> HRESULT,
133 }}
134 pub type ISpTask = *mut c_void;
135 pub type ISpThreadTask = *mut c_void;
136 RIDL!{#[uuid(0xa6be4d73, 0x4403, 0x4358, 0xb2, 0x2d, 0x03, 0x46, 0xe2, 0x3b, 0x17, 0x64)]
137 interface ISpThreadControl(ISpThreadControlVtbl): ISpNotifySink(ISpNotifySinkVtbl) {
138 fn StartThread(
139 dwFlags: DWORD,
140 phwnd: *mut HWND,
141 ) -> HRESULT,
142 fn WaitForThreadDone(
143 fForceStop: BOOL,
144 phrThreadResult: *mut HRESULT,
145 msTimeOut: ULONG,
146 ) -> HRESULT,
147 fn TerminateThread() -> HRESULT,
148 fn ThreadHandle() -> HANDLE,
149 fn ThreadId() -> DWORD,
150 fn NotifyEvent() -> HANDLE,
151 fn WindowHandle() -> HWND,
152 fn ThreadCompleteEvent() -> HANDLE,
153 fn ExitThreadEvent() -> HANDLE,
154 }}
155 STRUCT!{struct SPTMTHREADINFO {
156 lPoolSize: c_long,
157 lPriority: c_long,
158 ulConcurrencyLimit: ULONG,
159 ulMaxQuickAllocThreads: ULONG,
160 }}
161 RIDL!{#[uuid(0x2baeef81, 0x2ca3, 0x4331, 0x98, 0xf3, 0x26, 0xec, 0x5a, 0xbe, 0xfb, 0x03)]
162 interface ISpTaskManager(ISpTaskManagerVtbl): IUnknown(IUnknownVtbl) {
163 fn SetThreadPoolInfo(
164 pPoolInfo: *const SPTMTHREADINFO,
165 ) -> HRESULT,
166 fn GetThreadPoolInfo(
167 pPoolInfo: *mut SPTMTHREADINFO,
168 ) -> HRESULT,
169 fn QueueTask(
170 pTask: *mut ISpTask,
171 pvTaskData: *mut c_void,
172 hCompEvent: HANDLE,
173 pdwGroupId: *mut DWORD,
174 pTaskID: *mut DWORD,
175 ) -> HRESULT,
176 fn CreateReoccurringTask(
177 pTask: *mut ISpTask,
178 pvTaskData: *mut c_void,
179 hCompEvent: HANDLE,
180 ppTaskCtrl: *mut *mut ISpNotifySink,
181 ) -> HRESULT,
182 fn CreateThreadControl(
183 pTask: *mut ISpThreadTask,
184 pvTaskData: *mut c_void,
185 nPriority: c_long,
186 ppTaskCtrl: *mut *mut ISpThreadControl,
187 ) -> HRESULT,
188 fn TerminateTask(
189 dwGroupId: DWORD,
190 ulWaitPeriod: ULONG,
191 ) -> HRESULT,
192 }}
193 ENUM!{enum SPVSKIPTYPE {
194 SPVST_SENTENCE = 1 << 0,
195 }}
196 ENUM!{enum SPVESACTIONS {
197 SPVES_CONTINUE = 0,
198 SPVES_ABORT = 1 << 0,
199 SPVES_SKIP = 1 << 1,
200 SPVES_RATE = 1 << 2,
201 SPVES_VOLUME = 1 << 3,
202 }}
203 RIDL!{#[uuid(0x9880499b, 0xcce9, 0x11d2, 0xb5, 0x03, 0x00, 0xc0, 0x4f, 0x79, 0x73, 0x96)]
204 interface ISpTTSEngineSite(ISpTTSEngineSiteVtbl): ISpEventSink(ISpEventSinkVtbl) {
205 fn GetActions() -> DWORD,
206 fn Write(
207 pBuff: *const c_void,
208 cb: ULONG,
209 pcbWritten: *mut ULONG,
210 ) -> HRESULT,
211 fn GetRate(
212 pRateAdjust: *mut c_long,
213 ) -> HRESULT,
214 fn GetVolume(pusVolume: *mut USHORT,
215 ) -> HRESULT,
216 fn GetSkipInfo(
217 peType: *mut SPVSKIPTYPE,
218 plNumItems: *mut c_long,
219 ) -> HRESULT,
220 fn CompleteSkip(
221 ulNumSkipped: c_long,
222 ) -> HRESULT,
223 }}
224 STRUCT!{struct SPVTEXTFRAG {
225 pNext: *mut SPVTEXTFRAG,
226 State: SPVSTATE,
227 pTextStart: LPCWSTR,
228 ulTextLen: ULONG,
229 ulTextSrcOffset: ULONG,
230 }}
231 RIDL!{#[uuid(0xa74d7c8e, 0x4cc5, 0x4f2f, 0xa6, 0xeb, 0x80, 0x4d, 0xee, 0x18, 0x50, 0x0e)]
232 interface ISpTTSEngine(ISpTTSEngineVtbl): IUnknown(IUnknownVtbl) {
233 fn Speak(
234 dwSpeakFlags: DWORD,
235 rguidFormatId: REFGUID,
236 pWaveFormatEx: *const WAVEFORMATEX,
237 pTextFragList: *const SPVTEXTFRAG,
238 pOutputSite: *mut ISpTTSEngineSite,
239 ) -> HRESULT,
240 fn GetOutputFormat(
241 pTargetFmtId: *const GUID,
242 pTargetWaveFormatEx: *const WAVEFORMATEX,
243 pOutputFormatId: *mut GUID,
244 ppCoMemOutputWaveFormatEx: *mut WAVEFORMATEX,
245 ) -> HRESULT,
246 }}
247 STRUCT!{struct SPWORDENTRY {
248 hWord: SPWORDHANDLE,
249 LangID: WORD,
250 pszDisplayText: *mut WCHAR,
251 pszLexicalForm: *mut WCHAR,
252 aPhoneId: *mut SPPHONEID,
253 pvClientContext: *mut c_void,
254 }}
255 STRUCT!{struct SPRULEENTRY {
256 hRule: SPRULEHANDLE,
257 hInitialState: SPSTATEHANDLE,
258 Attributes: DWORD,
259 pvClientRuleContext: *mut c_void,
260 pvClientGrammarContext: *mut c_void,
261 }}
262 ENUM!{enum SPTRANSITIONTYPE {
263 SPTRANSEPSILON = 0,
264 SPTRANSWORD,
265 SPTRANSRULE,
266 SPTRANSTEXTBUF,
267 SPTRANSWILDCARD,
268 SPTRANSDICTATION,
269 }}
270 STRUCT!{struct SPTRANSITIONENTRY_u_s1 {
271 hRuleInitialState: SPSTATEHANDLE,
272 hRule: SPRULEHANDLE,
273 pvClientRuleContext: *mut c_void,
274 }}
275 STRUCT!{struct SPTRANSITIONENTRY_u_s2 {
276 hWord: SPWORDHANDLE,
277 pvClientWordContext: *mut c_void,
278 }}
279 UNION!{union SPTRANSITIONENTRY_u {
280 [usize; 3],
281 s1 s1_mut: SPTRANSITIONENTRY_u_s1,
282 s2 s2_mut: SPTRANSITIONENTRY_u_s2,
283 pvGrammarCookie pvGrammarCookie_mut: *mut c_void,
284 }}
285 STRUCT!{struct SPTRANSITIONENTRY {
286 ID: SPTRANSITIONID,
287 hNextState: SPSTATEHANDLE,
288 Type: BYTE,
289 RequiredConfidence: c_char,
290 fHasProperty: DWORD,
291 Weight: c_float,
292 u: SPTRANSITIONENTRY_u,
293 }}
294 STRUCT!{struct SPTRANSITIONPROPERTY {
295 pszName: LPCWSTR,
296 ulId: ULONG,
297 pszValue: LPCWSTR,
298 vValue: VARIANT,
299 }}
300 STRUCT!{struct SPSTATEINFO {
301 cAllocatedEntries: ULONG,
302 pTransitions: *mut SPTRANSITIONENTRY,
303 cEpsilons: ULONG,
304 cRules: ULONG,
305 cWords: ULONG,
306 cSpecialTransitions: ULONG,
307 }}
308 STRUCT!{struct SPPATHENTRY {
309 hTransition: SPTRANSITIONID,
310 elem: SPPHRASEELEMENT,
311 }}
312 RIDL!{#[uuid(0x6a6ffad8, 0x78b6, 0x473d, 0xb8, 0x44, 0x98, 0x15, 0x2e, 0x4f, 0xb1, 0x6b)]
313 interface ISpCFGInterpreterSite(ISpCFGInterpreterSiteVtbl): IUnknown(IUnknownVtbl) {
314 fn AddTextReplacement(
315 pReplace: *mut SPPHRASEREPLACEMENT,
316 ) -> HRESULT,
317 fn AddProperty(
318 pProperty: *const SPPHRASEPROPERTY,
319 ) -> HRESULT,
320 fn GetResourceValue(
321 pszResourceName: LPCWSTR,
322 ppCoMemResource: *mut LPWSTR,
323 ) -> HRESULT,
324 }}
325 RIDL!{#[uuid(0xf3d3f926, 0x11fc, 0x11d3, 0xbb, 0x97, 0x00, 0xc0, 0x4f, 0x8e, 0xe6, 0xc0)]
326 interface ISpCFGInterpreter(ISpCFGInterpreterVtbl): IUnknown(IUnknownVtbl) {
327 fn InitGrammar(
328 pszGrammarName: LPCWSTR,
329 pvGrammarData: *mut *const c_void,
330 ) -> HRESULT,
331 fn Interpret(
332 pPhrase: *mut ISpPhraseBuilder,
333 ulFirstElement: *const ULONG,
334 ulCountOfElements: *const ULONG,
335 pSite: *mut ISpCFGInterpreterSite,
336 ) -> HRESULT,
337 }}
338 ENUM!{enum SPCFGNOTIFY {
339 SPCFGN_ADD,
340 SPCFGN_REMOVE,
341 SPCFGN_INVALIDATE,
342 SPCFGN_ACTIVATE,
343 SPCFGN_DEACTIVATE,
344 }}
345 ENUM!{enum SPRESULTTYPE {
346 SPRT_CFG = 0,
347 SPRT_SLM = 1,
348 SPRT_PROPRIETARY = 2,
349 SPRT_FALSE_RECOGNITION = 1 << 2,
350 }}
351 STRUCT!{struct SPPHRASEALT {
352 pPhrase: *mut ISpPhraseBuilder,
353 ulStartElementInParent: ULONG,
354 cElementsInParent: ULONG,
355 cElementsInAlternate: ULONG,
356 pvAltExtra: *mut c_void,
357 cbAltExtra: ULONG,
358 }}
359 STRUCT!{struct SPRECORESULTINFO {
360 cbSize: ULONG,
361 eResultType: SPRESULTTYPE,
362 fHypothesis: BOOL,
363 fProprietaryAutoPause: BOOL,
364 ullStreamPosStart: ULONGLONG,
365 ullStreamPosEnd: ULONGLONG,
366 hGrammar: SPGRAMMARHANDLE,
367 ulSizeEngineData: ULONG,
368 pvEngineData: *mut c_void,
369 pPhrase: *mut ISpPhraseBuilder,
370 aPhraseAlts: *mut SPPHRASEALT,
371 ulNumAlts: ULONG,
372 }}
373 ENUM!{enum SPWORDINFOOPT {
374 SPWIO_NONE = 0,
375 SPWIO_WANT_TEXT = 1,
376 }}
377 ENUM!{enum SPRULEINFOOPT {
378 SPRIO_NONE = 0,
379 }}
380 STRUCT!{struct SPPARSEINFO {
381 cbSize: ULONG,
382 hRule: SPRULEHANDLE,
383 ullAudioStreamPosition: ULONGLONG,
384 ulAudioSize: ULONG,
385 cTransitions: ULONG,
386 pPath: *mut SPPATHENTRY,
387 SREngineID: GUID,
388 ulSREnginePrivateDataSize: ULONG,
389 pSREnginePrivateData: *const BYTE,
390 fHypothesis: BOOL,
391 }}
392 RIDL!{#[uuid(0x3b414aec, 0x720c, 0x4883, 0xb9, 0xef, 0x17, 0x8c, 0xd3, 0x94, 0xfb, 0x3a)]
393 interface ISpSREngineSite(ISpSREngineSiteVtbl): IUnknown(IUnknownVtbl) {
394 fn Read(
395 pv: *mut c_void,
396 cb: ULONG,
397 pcbRead: *mut ULONG,
398 ) -> HRESULT,
399 fn DataAvailable(
400 pcb: *mut ULONG,
401 ) -> HRESULT,
402 fn SetBufferNotifySize(
403 cbSize: ULONG,
404 ) -> HRESULT,
405 fn ParseFromTransitions(
406 pParseInfo: *const SPPARSEINFO,
407 ppNewPhrase: *mut *mut ISpPhraseBuilder,
408 ) -> HRESULT,
409 fn Recognition(
410 pResultInfo: *const SPRECORESULTINFO,
411 ) -> HRESULT,
412 fn AddEvent(
413 pEvent: *const SPEVENT,
414 hSAPIRecoContext: SPRECOCONTEXTHANDLE,
415 ) -> HRESULT,
416 fn Synchronize(
417 ullProcessedThruPos: ULONGLONG,
418 ) -> HRESULT,
419 fn GetWordInfo(
420 pWordEntry: *mut SPWORDENTRY,
421 Options: SPWORDINFOOPT,
422 ) -> HRESULT,
423 fn SetWordClientContext(
424 hWord: SPWORDHANDLE,
425 pvClientContext: *mut c_void,
426 ) -> HRESULT,
427 fn GetRuleInfo(
428 pRuleEntry: *mut SPRULEENTRY,
429 Options: SPRULEINFOOPT,
430 ) -> HRESULT,
431 fn SetRuleClientContext(
432 hRule: SPRULEHANDLE,
433 pvClientContext: *mut c_void,
434 ) -> HRESULT,
435 fn GetStateInfo(
436 hState: SPSTATEHANDLE,
437 pStateInfo: *mut SPSTATEINFO,
438 ) -> HRESULT,
439 fn GetResource(
440 hRule: SPRULEHANDLE,
441 pszResourceName: LPCWSTR,
442 ppCoMemResource: *mut LPWSTR,
443 ) -> HRESULT,
444 fn GetTransitionProperty(
445 ID: SPTRANSITIONID,
446 ppCoMemProperty: *mut *mut SPTRANSITIONPROPERTY,
447 ) -> HRESULT,
448 fn IsAlternate(
449 hRule: SPRULEHANDLE,
450 hAltRule: SPRULEHANDLE,
451 ) -> HRESULT,
452 fn GetMaxAlternates(
453 hRule: SPRULEHANDLE,
454 pulNumAlts: *mut ULONG,
455 ) -> HRESULT,
456 fn GetContextMaxAlternates(
457 hContext: SPRECOCONTEXTHANDLE,
458 pulNumAlts: *mut ULONG,
459 ) -> HRESULT,
460 fn UpdateRecoPos(
461 ullCurrentRecoPos: ULONGLONG,
462 ) -> HRESULT,
463 }}
464 ENUM!{enum SPPROPSRC {
465 SPPROPSRC_RECO_INST,
466 SPPROPSRC_RECO_CTX,
467 SPPROPSRC_RECO_GRAMMAR,
468 }}
469 RIDL!{#[uuid(0x2f472991, 0x854b, 0x4465, 0xb6, 0x13, 0xfb, 0xaf, 0xb3, 0xad, 0x8e, 0xd8)]
470 interface ISpSREngine(ISpSREngineVtbl): IUnknown(IUnknownVtbl) {
471 fn SetSite(
472 pSite: *mut ISpSREngineSite,
473 ) -> HRESULT,
474 fn GetInputAudioFormat(
475 pguidSourceFormatId: *const GUID,
476 pSourceWaveFormatEx: *const WAVEFORMATEX,
477 pguidDesiredFormatId: *mut GUID,
478 ppCoMemDesiredWaveFormatEx: *mut WAVEFORMATEX,
479 ) -> HRESULT,
480 fn RecognizeStream(
481 rguidFmtId: REFGUID,
482 pWaveFormatEx: *const WAVEFORMATEX,
483 hRequestSync: HANDLE,
484 hDataAvailable: HANDLE,
485 hExit: HANDLE,
486 fNewAudioStream: BOOL,
487 fRealTimeAudio: BOOL,
488 pAudioObjectToken: *mut ISpObjectToken,
489 ) -> HRESULT,
490 fn SetRecoProfile(
491 pProfile: *mut ISpObjectToken,
492 ) -> HRESULT,
493 fn OnCreateGrammar(
494 pvEngineRecoContext: *mut c_void,
495 hSAPIGrammar: SPGRAMMARHANDLE,
496 ppvEngineGrammarContext: *mut *mut c_void,
497 ) -> HRESULT,
498 fn OnDeleteGrammar(
499 pvEngineGrammar: *mut c_void,
500 ) -> HRESULT,
501 fn LoadProprietaryGrammar(
502 pvEngineGrammar: *mut c_void,
503 rguidParam: REFGUID,
504 pszStringParam: LPCWSTR,
505 pvDataParam: *const c_void,
506 ulDataSize: ULONG,
507 Options: SPLOADOPTIONS,
508 ) -> HRESULT,
509 fn UnloadProprietaryGrammar(
510 pvEngineGrammar: *mut c_void,
511 ) -> HRESULT,
512 fn SetProprietaryRuleState(
513 pvEngineGrammar: *mut c_void,
514 pszName: LPCWSTR,
515 pReserved: *mut c_void,
516 NewState: SPRULESTATE,
517 pcRulesChanged: *mut ULONG,
518 ) -> HRESULT,
519 fn SetProprietaryRuleIdState(
520 pvEngineGrammar: *mut c_void,
521 dwRuleId: DWORD,
522 NewState: SPRULESTATE,
523 ) -> HRESULT,
524 fn LoadSLM(
525 pvEngineGrammar: *mut c_void,
526 pszTopicName: LPCWSTR,
527 ) -> HRESULT,
528 fn UnloadSLM(
529 pvEngineGrammar: *mut c_void,
530 ) -> HRESULT,
531 fn SetSLMState(
532 pvEngineGrammar: *mut c_void,
533 NewState: SPRULESTATE,
534 ) -> HRESULT,
535 fn SetWordSequenceData(
536 pvEngineGrammar: *mut c_void,
537 pText: *const WCHAR,
538 cchText: ULONG,
539 pInfo: *const SPTEXTSELECTIONINFO,
540 ) -> HRESULT,
541 fn SetTextSelection(
542 pvEngineGrammar: *mut c_void,
543 pInfo: *const SPTEXTSELECTIONINFO,
544 ) -> HRESULT,
545 fn IsPronounceable(
546 pvEngineGrammar: *mut c_void,
547 pszWord: LPCWSTR,
548 pWordPronounceable: *mut SPWORDPRONOUNCEABLE,
549 ) -> HRESULT,
550 fn OnCreateRecoContext(
551 hSAPIRecoContext: SPRECOCONTEXTHANDLE,
552 ppvEngineContext: *mut *mut c_void,
553 ) -> HRESULT,
554 fn OnDeleteRecoContext(
555 pvEngineContext: *mut c_void,
556 ) -> HRESULT,
557 fn OnPrivateCall(
558 pvEngineContext: *mut c_void,
559 pCallFrame: PVOID,
560 ulCallFrameSize: ULONG,
561 ) -> HRESULT,
562 fn SetAdaptationData(
563 pvEngineContext: *mut c_void,
564 pAdaptationData: *const WCHAR,
565 cch: ULONG,
566 ) -> HRESULT,
567 fn SetPropertyNum(
568 eSrc: SPPROPSRC,
569 pvSrcObj: *mut c_void,
570 pName: *const WCHAR,
571 lValue: LONG,
572 ) -> HRESULT,
573 fn GetPropertyNum(
574 eSrc: SPPROPSRC,
575 pvSrcObj: *mut c_void,
576 pName: *const WCHAR,
577 lValue: *mut LONG,
578 ) -> HRESULT,
579 fn SetPropertyString(
580 eSrc: SPPROPSRC,
581 pvSrcObj: *mut c_void,
582 pName: LPCWSTR,
583 pValue: LPCWSTR,
584 ) -> HRESULT,
585 fn GetPropertyString(
586 eSrc: SPPROPSRC,
587 pvSrcObj: *mut c_void,
588 pName: LPCWSTR,
589 ppCoMemValue: *mut LPWSTR,
590 ) -> HRESULT,
591 fn SetGrammarState(
592 pvEngineGrammar: *mut c_void,
593 eGrammarState: SPGRAMMARSTATE,
594 ) -> HRESULT,
595 fn WordNotify(
596 Action: SPCFGNOTIFY,
597 cWords: ULONG,
598 pWords: *const SPWORDENTRY,
599 ) -> HRESULT,
600 fn RuleNotify(
601 Action: SPCFGNOTIFY,
602 cRules: ULONG,
603 pRules: *const SPRULEENTRY,
604 ) -> HRESULT,
605 fn PrivateCallEx(
606 pvEngineContext: *mut c_void,
607 pInCallFrame: *const c_void,
608 ulInCallFrameSize: ULONG,
609 ppvCoMemResponse: *mut *mut c_void,
610 pulResponseSize: *mut ULONG,
611 ) -> HRESULT,
612 fn SetContextState(
613 pvEngineContext: *mut c_void,
614 eContextState: SPCONTEXTSTATE,
615 ) -> HRESULT,
616 }}
617 STRUCT!{struct SPPHRASEALTREQUEST {
618 ulStartElement: ULONG,
619 cElements: ULONG,
620 ulRequestAltCount: ULONG,
621 pvResultExtra: *mut c_void,
622 cbResultExtra: ULONG,
623 pPhrase: *mut ISpPhrase,
624 pRecoContext: *mut ISpRecoContext,
625 }}
626 RIDL!{#[uuid(0x8e7c791e, 0x4467, 0x11d3, 0x97, 0x23, 0x00, 0xc0, 0x4f, 0x72, 0xdb, 0x08)]
627 interface _ISpPrivateEngineCall(_ISpPrivateEngineCallVtbl): IUnknown(IUnknownVtbl) {
628 fn CallEngine(
629 pCallFrame: *mut c_void,
630 ulCallFrameSize: ULONG,
631 ) -> HRESULT,
632 fn CallEngineEx(
633 pInFrame: *const c_void,
634 ulInFrameSize: ULONG,
635 ppCoMemOutFrame: *mut *mut c_void,
636 pulOutFrameSize: *mut ULONG,
637 ) -> HRESULT,
638 }}
639 extern {
640 pub static LIBID_SpeechDDKLib: IID;
641 pub static CLSID_SpDataKey: CLSID;
642 }
643 RIDL!{#[uuid(0xd9f6ee60, 0x58c9, 0x458b, 0x88, 0xe1, 0x2f, 0x90, 0x8f, 0xd7, 0xf8, 0x7c)]
644 class SpDataKey;}
645 extern {
646 pub static CLSID_SpObjectTokenEnum: CLSID;
647 pub static CLSID_SpPhraseBuilder: CLSID;
648 pub static CLSID_SpITNProcessor: CLSID;
649 pub static CLSID_SpGrammarCompiler: CLSID;
650 pub static CLSID_SpGramCompBackend: CLSID;
651 }