Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  sapiddk51.rs   Sprache: unbekannt

 
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
use ctypes::{c_char, c_float, c_long, c_void};
use shared::guiddef::{CLSID, GUID, IID, REFGUID};
use shared::minwindef::{BOOL, BYTE, DWORD, ULONG, USHORT, WORD};
use shared::mmreg::WAVEFORMATEX;
use shared::windef::HWND;
use um::oaidl::VARIANT;
use um::objidlbase::IStream;
use um::sapi::*;
use um::unknwnbase::{IUnknown, IUnknownVtbl};
use um::winnt::{HANDLE, HRESULT, LONG, LPCWSTR, LPWSTR, PVOID, ULONGLONG, WCHAR};
pub const SPRECOEXTENSION: &'static str = "RecoExtension";
pub const SPALTERNATESCLSID: &'static str = "AlternatesCLSID";
RIDL!{#[uuid(0xf8e690f0, 0x39cb, 0x4843, 0xb8, 0xd7, 0xc8, 0x46, 0x96, 0xe1, 0x11, 0x9d)]
interface ISpTokenUI(ISpTokenUIVtbl): IUnknown(IUnknownVtbl) {
    fn IsUISupported(
        pszTypeOfUI: LPCWSTR,
        pvExtraData: *mut c_void,
        cbExtraData: ULONG,
        punkObject: *mut IUnknown,
        pfSupported: *mut BOOL,
    ) -> HRESULT,
    fn DisplayUI(
        hwndParent: HWND,
        pszTitle: LPCWSTR,
        pszTypeOfUI: LPCWSTR,
        pvExtraData: *mut c_void,
        cbExtraData: ULONG,
        pToken: *mut ISpObjectToken,
        punkObject: *mut IUnknown,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x06b64f9f, 0x7fda, 0x11d2, 0xb4, 0xf2, 0x00, 0xc0, 0x4f, 0x79, 0x73, 0x96)]
interface ISpObjectTokenEnumBuilder(ISpObjectTokenEnumBuilderVtbl):
    IEnumSpObjectTokens(IEnumSpObjectTokensVtbl) {
    fn SetAttribs(
        pszReqAttribs: LPCWSTR,
        pszOptAttribs: LPCWSTR,
    ) -> HRESULT,
    fn AddTokens(
        cTokens: ULONG,
        pToken: *mut *mut ISpObjectToken,
    ) -> HRESULT,
    fn AddTokensFromDataKey(
        pDataKey: *mut ISpDataKey,
        pszSubKey: LPCWSTR,
        pszCategoryId: LPCWSTR,
    ) -> HRESULT,
    fn AddTokensFromTokenEnum(
        pTokenEnum: *mut IEnumSpObjectTokens,
    ) -> HRESULT,
    fn Sort(
        pszTokenIdToListFirst: LPCWSTR,
    ) -> HRESULT,
}}
DECLARE_HANDLE!{SPWORDHANDLE, SPWORDHANDLE__}
DECLARE_HANDLE!{SPRULEHANDLE, SPRULEHANDLE__}
DECLARE_HANDLE!{SPGRAMMARHANDLE, SPGRAMMARHANDLE__}
DECLARE_HANDLE!{SPRECOCONTEXTHANDLE, SPRECOCONTEXTHANDLE__}
DECLARE_HANDLE!{SPPHRASERULEHANDLE, SPPHRASERULEHANDLE__}
DECLARE_HANDLE!{SPPHRASEPROPERTYHANDLE, SPPHRASEPROPERTYHANDLE__}
DECLARE_HANDLE!{SPTRANSITIONID, SPTRANSITIONID__}
RIDL!{#[uuid(0xf4711347, 0xe608, 0x11d2, 0xa0, 0x86, 0x00, 0xc0, 0x4f, 0x8e, 0xf9, 0xb5)]
interface ISpErrorLog(ISpErrorLogVtbl): IUnknown(IUnknownVtbl) {
    fn AddError(
        lLineNumber: c_long,
        hr: HRESULT,
        pszDescription: LPCWSTR,
        pszHelpFile: LPCWSTR,
        dwHelpContext: DWORD,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0xb1e29d58, 0xa675, 0x11d2, 0x83, 0x02, 0x00, 0xc0, 0x4f, 0x8e, 0xe6, 0xc0)]
interface ISpGrammarCompiler(ISpGrammarCompilerVtbl): IUnknown(IUnknownVtbl) {
    fn CompileStream(
        pSource: *mut IStream,
        pDest: *mut IStream,
        pHeader: *mut IStream,
        pReserved: *mut IUnknown,
        pErrorLog: *mut ISpErrorLog,
        dwFlags: DWORD,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x3ddca27c, 0x665c, 0x4786, 0x9f, 0x97, 0x8c, 0x90, 0xc3, 0x48, 0x8b, 0x61)]
interface ISpGramCompBackend(ISpGramCompBackendVtbl): ISpGrammarBuilder(ISpGrammarBuilderVtbl) {
    fn SetSaveObjects(
        pStream: *mut IStream,
        pErrorLog: *mut ISpErrorLog,
    ) -> HRESULT,
    fn InitFromBinaryGrammar(
        pBinaryData: *const SPBINARYGRAMMAR,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x12d7360f, 0xa1c9, 0x11d3, 0xbc, 0x90, 0x00, 0xc0, 0x4f, 0x72, 0xdf, 0x9f)]
interface ISpITNProcessor(ISpITNProcessorVtbl): IUnknown(IUnknownVtbl) {
    fn LoadITNGrammar(
        pszCLSID: LPWSTR,
    ) -> HRESULT,
    fn ITNPhrase(
        pPhrase: *mut ISpPhraseBuilder,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x88a3342a, 0x0bed, 0x4834, 0x92, 0x2b, 0x88, 0xd4, 0x31, 0x73, 0x16, 0x2f)]
interface ISpPhraseBuilder(ISpPhraseBuilderVtbl): ISpPhrase(ISpPhraseVtbl) {
    fn InitFromPhrase(
        pPhrase: *const SPPHRASE,
    ) -> HRESULT,
    fn InitFromSerializedPhrase(
        pPhrase: *const SPSERIALIZEDPHRASE,
    ) -> HRESULT,
    fn AddElements(
        cElements: ULONG,
        pElement: *const SPPHRASEELEMENT,
    ) -> HRESULT,
    fn AddRules(
        hParent: SPPHRASERULEHANDLE,
        pRule: *const SPPHRASERULE,
        phNewRule: *mut SPPHRASERULEHANDLE,
    ) -> HRESULT,
    fn AddProperties(
        hParent: SPPHRASEPROPERTYHANDLE,
        pProperty: *const SPPHRASEPROPERTY,
        phNewProperty: *mut SPPHRASEPROPERTYHANDLE,
    ) -> HRESULT,
    fn AddReplacements(
        cReplacements: ULONG,
        pReplacements: *const SPPHRASEREPLACEMENT,
    ) -> HRESULT,
}}
pub type ISpTask = *mut c_void;
pub type ISpThreadTask = *mut c_void;
RIDL!{#[uuid(0xa6be4d73, 0x4403, 0x4358, 0xb2, 0x2d, 0x03, 0x46, 0xe2, 0x3b, 0x17, 0x64)]
interface ISpThreadControl(ISpThreadControlVtbl): ISpNotifySink(ISpNotifySinkVtbl) {
    fn StartThread(
        dwFlags: DWORD,
        phwnd: *mut HWND,
    ) -> HRESULT,
    fn WaitForThreadDone(
        fForceStop: BOOL,
        phrThreadResult: *mut HRESULT,
        msTimeOut: ULONG,
    ) -> HRESULT,
    fn TerminateThread() -> HRESULT,
    fn ThreadHandle() -> HANDLE,
    fn ThreadId() -> DWORD,
    fn NotifyEvent() -> HANDLE,
    fn WindowHandle() -> HWND,
    fn ThreadCompleteEvent() -> HANDLE,
    fn ExitThreadEvent() -> HANDLE,
}}
STRUCT!{struct SPTMTHREADINFO {
    lPoolSize: c_long,
    lPriority: c_long,
    ulConcurrencyLimit: ULONG,
    ulMaxQuickAllocThreads: ULONG,
}}
RIDL!{#[uuid(0x2baeef81, 0x2ca3, 0x4331, 0x98, 0xf3, 0x26, 0xec, 0x5a, 0xbe, 0xfb, 0x03)]
interface ISpTaskManager(ISpTaskManagerVtbl): IUnknown(IUnknownVtbl) {
    fn SetThreadPoolInfo(
        pPoolInfo: *const SPTMTHREADINFO,
    ) -> HRESULT,
    fn GetThreadPoolInfo(
        pPoolInfo: *mut SPTMTHREADINFO,
    ) -> HRESULT,
    fn QueueTask(
        pTask: *mut ISpTask,
        pvTaskData: *mut c_void,
        hCompEvent: HANDLE,
        pdwGroupId: *mut DWORD,
        pTaskID: *mut DWORD,
    ) -> HRESULT,
    fn CreateReoccurringTask(
        pTask: *mut ISpTask,
        pvTaskData: *mut c_void,
        hCompEvent: HANDLE,
        ppTaskCtrl: *mut *mut ISpNotifySink,
    ) -> HRESULT,
    fn CreateThreadControl(
        pTask: *mut ISpThreadTask,
        pvTaskData: *mut c_void,
        nPriority: c_long,
        ppTaskCtrl: *mut *mut ISpThreadControl,
    ) -> HRESULT,
    fn TerminateTask(
        dwGroupId: DWORD,
        ulWaitPeriod: ULONG,
    ) -> HRESULT,
}}
ENUM!{enum SPVSKIPTYPE {
    SPVST_SENTENCE = 1 << 0,
}}
ENUM!{enum SPVESACTIONS {
    SPVES_CONTINUE = 0,
    SPVES_ABORT = 1 << 0,
    SPVES_SKIP = 1 << 1,
    SPVES_RATE = 1 << 2,
    SPVES_VOLUME = 1 << 3,
}}
RIDL!{#[uuid(0x9880499b, 0xcce9, 0x11d2, 0xb5, 0x03, 0x00, 0xc0, 0x4f, 0x79, 0x73, 0x96)]
interface ISpTTSEngineSite(ISpTTSEngineSiteVtbl): ISpEventSink(ISpEventSinkVtbl) {
    fn GetActions() -> DWORD,
    fn Write(
        pBuff: *const c_void,
        cb: ULONG,
        pcbWritten: *mut ULONG,
    ) -> HRESULT,
    fn GetRate(
        pRateAdjust: *mut c_long,
    ) -> HRESULT,
    fn GetVolume(pusVolume: *mut USHORT,
    ) -> HRESULT,
    fn GetSkipInfo(
        peType: *mut SPVSKIPTYPE,
        plNumItems: *mut c_long,
    ) -> HRESULT,
    fn CompleteSkip(
        ulNumSkipped: c_long,
    ) -> HRESULT,
}}
STRUCT!{struct SPVTEXTFRAG {
    pNext: *mut SPVTEXTFRAG,
    State: SPVSTATE,
    pTextStart: LPCWSTR,
    ulTextLen: ULONG,
    ulTextSrcOffset: ULONG,
}}
RIDL!{#[uuid(0xa74d7c8e, 0x4cc5, 0x4f2f, 0xa6, 0xeb, 0x80, 0x4d, 0xee, 0x18, 0x50, 0x0e)]
interface ISpTTSEngine(ISpTTSEngineVtbl): IUnknown(IUnknownVtbl) {
    fn Speak(
        dwSpeakFlags: DWORD,
        rguidFormatId: REFGUID,
        pWaveFormatEx: *const WAVEFORMATEX,
        pTextFragList: *const SPVTEXTFRAG,
        pOutputSite: *mut ISpTTSEngineSite,
    ) -> HRESULT,
    fn GetOutputFormat(
        pTargetFmtId: *const GUID,
        pTargetWaveFormatEx: *const WAVEFORMATEX,
        pOutputFormatId: *mut GUID,
        ppCoMemOutputWaveFormatEx: *mut WAVEFORMATEX,
    ) -> HRESULT,
}}
STRUCT!{struct SPWORDENTRY {
    hWord: SPWORDHANDLE,
    LangID: WORD,
    pszDisplayText: *mut WCHAR,
    pszLexicalForm: *mut WCHAR,
    aPhoneId: *mut SPPHONEID,
    pvClientContext: *mut c_void,
}}
STRUCT!{struct SPRULEENTRY {
    hRule: SPRULEHANDLE,
    hInitialState: SPSTATEHANDLE,
    Attributes: DWORD,
    pvClientRuleContext: *mut c_void,
    pvClientGrammarContext: *mut c_void,
}}
ENUM!{enum SPTRANSITIONTYPE {
    SPTRANSEPSILON = 0,
    SPTRANSWORD,
    SPTRANSRULE,
    SPTRANSTEXTBUF,
    SPTRANSWILDCARD,
    SPTRANSDICTATION,
}}
STRUCT!{struct SPTRANSITIONENTRY_u_s1 {
    hRuleInitialState: SPSTATEHANDLE,
    hRule: SPRULEHANDLE,
    pvClientRuleContext: *mut c_void,
}}
STRUCT!{struct SPTRANSITIONENTRY_u_s2 {
    hWord: SPWORDHANDLE,
    pvClientWordContext: *mut c_void,
}}
UNION!{union SPTRANSITIONENTRY_u {
    [usize; 3],
    s1 s1_mut: SPTRANSITIONENTRY_u_s1,
    s2 s2_mut: SPTRANSITIONENTRY_u_s2,
    pvGrammarCookie pvGrammarCookie_mut: *mut c_void,
}}
STRUCT!{struct SPTRANSITIONENTRY {
    ID: SPTRANSITIONID,
    hNextState: SPSTATEHANDLE,
    Type: BYTE,
    RequiredConfidence: c_char,
    fHasProperty: DWORD,
    Weight: c_float,
    u: SPTRANSITIONENTRY_u,
}}
STRUCT!{struct SPTRANSITIONPROPERTY {
    pszName: LPCWSTR,
    ulId: ULONG,
    pszValue: LPCWSTR,
    vValue: VARIANT,
}}
STRUCT!{struct SPSTATEINFO {
    cAllocatedEntries: ULONG,
    pTransitions: *mut SPTRANSITIONENTRY,
    cEpsilons: ULONG,
    cRules: ULONG,
    cWords: ULONG,
    cSpecialTransitions: ULONG,
}}
STRUCT!{struct SPPATHENTRY {
    hTransition: SPTRANSITIONID,
    elem: SPPHRASEELEMENT,
}}
RIDL!{#[uuid(0x6a6ffad8, 0x78b6, 0x473d, 0xb8, 0x44, 0x98, 0x15, 0x2e, 0x4f, 0xb1, 0x6b)]
interface ISpCFGInterpreterSite(ISpCFGInterpreterSiteVtbl): IUnknown(IUnknownVtbl) {
    fn AddTextReplacement(
        pReplace: *mut SPPHRASEREPLACEMENT,
    ) -> HRESULT,
    fn AddProperty(
        pProperty: *const SPPHRASEPROPERTY,
    ) -> HRESULT,
    fn GetResourceValue(
        pszResourceName: LPCWSTR,
        ppCoMemResource: *mut LPWSTR,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0xf3d3f926, 0x11fc, 0x11d3, 0xbb, 0x97, 0x00, 0xc0, 0x4f, 0x8e, 0xe6, 0xc0)]
interface ISpCFGInterpreter(ISpCFGInterpreterVtbl): IUnknown(IUnknownVtbl) {
    fn InitGrammar(
        pszGrammarName: LPCWSTR,
        pvGrammarData: *mut *const c_void,
    ) -> HRESULT,
    fn Interpret(
        pPhrase: *mut ISpPhraseBuilder,
        ulFirstElement: *const ULONG,
        ulCountOfElements: *const ULONG,
        pSite: *mut ISpCFGInterpreterSite,
    ) -> HRESULT,
}}
ENUM!{enum SPCFGNOTIFY {
    SPCFGN_ADD,
    SPCFGN_REMOVE,
    SPCFGN_INVALIDATE,
    SPCFGN_ACTIVATE,
    SPCFGN_DEACTIVATE,
}}
ENUM!{enum SPRESULTTYPE {
    SPRT_CFG = 0,
    SPRT_SLM = 1,
    SPRT_PROPRIETARY = 2,
    SPRT_FALSE_RECOGNITION = 1 << 2,
}}
STRUCT!{struct SPPHRASEALT {
    pPhrase: *mut ISpPhraseBuilder,
    ulStartElementInParent: ULONG,
    cElementsInParent: ULONG,
    cElementsInAlternate: ULONG,
    pvAltExtra: *mut c_void,
    cbAltExtra: ULONG,
}}
STRUCT!{struct SPRECORESULTINFO {
    cbSize: ULONG,
    eResultType: SPRESULTTYPE,
    fHypothesis: BOOL,
    fProprietaryAutoPause: BOOL,
    ullStreamPosStart: ULONGLONG,
    ullStreamPosEnd: ULONGLONG,
    hGrammar: SPGRAMMARHANDLE,
    ulSizeEngineData: ULONG,
    pvEngineData: *mut c_void,
    pPhrase: *mut ISpPhraseBuilder,
    aPhraseAlts: *mut SPPHRASEALT,
    ulNumAlts: ULONG,
}}
ENUM!{enum SPWORDINFOOPT {
    SPWIO_NONE = 0,
    SPWIO_WANT_TEXT = 1,
}}
ENUM!{enum SPRULEINFOOPT {
    SPRIO_NONE = 0,
}}
STRUCT!{struct SPPARSEINFO {
    cbSize: ULONG,
    hRule: SPRULEHANDLE,
    ullAudioStreamPosition: ULONGLONG,
    ulAudioSize: ULONG,
    cTransitions: ULONG,
    pPath: *mut SPPATHENTRY,
    SREngineID: GUID,
    ulSREnginePrivateDataSize: ULONG,
    pSREnginePrivateData: *const BYTE,
    fHypothesis: BOOL,
}}
RIDL!{#[uuid(0x3b414aec, 0x720c, 0x4883, 0xb9, 0xef, 0x17, 0x8c, 0xd3, 0x94, 0xfb, 0x3a)]
interface ISpSREngineSite(ISpSREngineSiteVtbl): IUnknown(IUnknownVtbl) {
    fn Read(
        pv: *mut c_void,
        cb: ULONG,
        pcbRead: *mut ULONG,
    ) -> HRESULT,
    fn DataAvailable(
        pcb: *mut ULONG,
    ) -> HRESULT,
    fn SetBufferNotifySize(
        cbSize: ULONG,
    ) -> HRESULT,
    fn ParseFromTransitions(
        pParseInfo: *const SPPARSEINFO,
        ppNewPhrase: *mut *mut ISpPhraseBuilder,
    ) -> HRESULT,
    fn Recognition(
        pResultInfo: *const SPRECORESULTINFO,
    ) -> HRESULT,
    fn AddEvent(
        pEvent: *const SPEVENT,
        hSAPIRecoContext: SPRECOCONTEXTHANDLE,
    ) -> HRESULT,
    fn Synchronize(
        ullProcessedThruPos: ULONGLONG,
    ) -> HRESULT,
    fn GetWordInfo(
        pWordEntry: *mut SPWORDENTRY,
        Options: SPWORDINFOOPT,
    ) -> HRESULT,
    fn SetWordClientContext(
        hWord: SPWORDHANDLE,
        pvClientContext: *mut c_void,
    ) -> HRESULT,
    fn GetRuleInfo(
        pRuleEntry: *mut SPRULEENTRY,
        Options: SPRULEINFOOPT,
    ) -> HRESULT,
    fn SetRuleClientContext(
        hRule: SPRULEHANDLE,
        pvClientContext: *mut c_void,
    ) -> HRESULT,
    fn GetStateInfo(
        hState: SPSTATEHANDLE,
        pStateInfo: *mut SPSTATEINFO,
    ) -> HRESULT,
    fn GetResource(
        hRule: SPRULEHANDLE,
        pszResourceName: LPCWSTR,
        ppCoMemResource: *mut LPWSTR,
    ) -> HRESULT,
    fn GetTransitionProperty(
        ID: SPTRANSITIONID,
        ppCoMemProperty: *mut *mut SPTRANSITIONPROPERTY,
    ) -> HRESULT,
    fn IsAlternate(
        hRule: SPRULEHANDLE,
        hAltRule: SPRULEHANDLE,
    ) -> HRESULT,
    fn GetMaxAlternates(
        hRule: SPRULEHANDLE,
        pulNumAlts: *mut ULONG,
    ) -> HRESULT,
    fn GetContextMaxAlternates(
        hContext: SPRECOCONTEXTHANDLE,
        pulNumAlts: *mut ULONG,
    ) -> HRESULT,
    fn UpdateRecoPos(
        ullCurrentRecoPos: ULONGLONG,
    ) -> HRESULT,
}}
ENUM!{enum SPPROPSRC {
    SPPROPSRC_RECO_INST,
    SPPROPSRC_RECO_CTX,
    SPPROPSRC_RECO_GRAMMAR,
}}
RIDL!{#[uuid(0x2f472991, 0x854b, 0x4465, 0xb6, 0x13, 0xfb, 0xaf, 0xb3, 0xad, 0x8e, 0xd8)]
interface ISpSREngine(ISpSREngineVtbl): IUnknown(IUnknownVtbl) {
    fn SetSite(
        pSite: *mut ISpSREngineSite,
    ) -> HRESULT,
    fn GetInputAudioFormat(
        pguidSourceFormatId: *const GUID,
        pSourceWaveFormatEx: *const WAVEFORMATEX,
        pguidDesiredFormatId: *mut GUID,
        ppCoMemDesiredWaveFormatEx: *mut WAVEFORMATEX,
    ) -> HRESULT,
    fn RecognizeStream(
        rguidFmtId: REFGUID,
        pWaveFormatEx: *const WAVEFORMATEX,
        hRequestSync: HANDLE,
        hDataAvailable: HANDLE,
        hExit: HANDLE,
        fNewAudioStream: BOOL,
        fRealTimeAudio: BOOL,
        pAudioObjectToken: *mut ISpObjectToken,
    ) -> HRESULT,
    fn SetRecoProfile(
        pProfile: *mut ISpObjectToken,
    ) -> HRESULT,
    fn OnCreateGrammar(
        pvEngineRecoContext: *mut c_void,
        hSAPIGrammar: SPGRAMMARHANDLE,
        ppvEngineGrammarContext: *mut *mut c_void,
    ) -> HRESULT,
    fn OnDeleteGrammar(
        pvEngineGrammar: *mut c_void,
    ) -> HRESULT,
    fn LoadProprietaryGrammar(
        pvEngineGrammar: *mut c_void,
        rguidParam: REFGUID,
        pszStringParam: LPCWSTR,
        pvDataParam: *const c_void,
        ulDataSize: ULONG,
        Options: SPLOADOPTIONS,
    ) -> HRESULT,
    fn UnloadProprietaryGrammar(
        pvEngineGrammar: *mut c_void,
    ) -> HRESULT,
    fn SetProprietaryRuleState(
        pvEngineGrammar: *mut c_void,
        pszName: LPCWSTR,
        pReserved: *mut c_void,
        NewState: SPRULESTATE,
        pcRulesChanged: *mut ULONG,
    ) -> HRESULT,
    fn SetProprietaryRuleIdState(
        pvEngineGrammar: *mut c_void,
        dwRuleId: DWORD,
        NewState: SPRULESTATE,
    ) -> HRESULT,
    fn LoadSLM(
        pvEngineGrammar: *mut c_void,
        pszTopicName: LPCWSTR,
    ) -> HRESULT,
    fn UnloadSLM(
        pvEngineGrammar: *mut c_void,
    ) -> HRESULT,
    fn SetSLMState(
        pvEngineGrammar: *mut c_void,
        NewState: SPRULESTATE,
    ) -> HRESULT,
    fn SetWordSequenceData(
        pvEngineGrammar: *mut c_void,
        pText: *const WCHAR,
        cchText: ULONG,
        pInfo: *const SPTEXTSELECTIONINFO,
    ) -> HRESULT,
    fn SetTextSelection(
        pvEngineGrammar: *mut c_void,
        pInfo: *const SPTEXTSELECTIONINFO,
    ) -> HRESULT,
    fn IsPronounceable(
        pvEngineGrammar: *mut c_void,
        pszWord: LPCWSTR,
        pWordPronounceable: *mut SPWORDPRONOUNCEABLE,
    ) -> HRESULT,
    fn OnCreateRecoContext(
        hSAPIRecoContext: SPRECOCONTEXTHANDLE,
        ppvEngineContext: *mut *mut c_void,
    ) -> HRESULT,
    fn OnDeleteRecoContext(
        pvEngineContext: *mut c_void,
    ) -> HRESULT,
    fn OnPrivateCall(
        pvEngineContext: *mut c_void,
        pCallFrame: PVOID,
        ulCallFrameSize: ULONG,
    ) -> HRESULT,
    fn SetAdaptationData(
        pvEngineContext: *mut c_void,
        pAdaptationData: *const WCHAR,
        cch: ULONG,
    ) -> HRESULT,
    fn SetPropertyNum(
        eSrc: SPPROPSRC,
        pvSrcObj: *mut c_void,
        pName: *const WCHAR,
        lValue: LONG,
    ) -> HRESULT,
    fn GetPropertyNum(
        eSrc: SPPROPSRC,
        pvSrcObj: *mut c_void,
        pName: *const WCHAR,
        lValue: *mut LONG,
    ) -> HRESULT,
    fn SetPropertyString(
        eSrc: SPPROPSRC,
        pvSrcObj: *mut c_void,
        pName: LPCWSTR,
        pValue: LPCWSTR,
    ) -> HRESULT,
    fn GetPropertyString(
        eSrc: SPPROPSRC,
        pvSrcObj: *mut c_void,
        pName: LPCWSTR,
        ppCoMemValue: *mut LPWSTR,
    ) -> HRESULT,
    fn SetGrammarState(
        pvEngineGrammar: *mut c_void,
        eGrammarState: SPGRAMMARSTATE,
    ) -> HRESULT,
    fn WordNotify(
        Action: SPCFGNOTIFY,
        cWords: ULONG,
        pWords: *const SPWORDENTRY,
    ) -> HRESULT,
    fn RuleNotify(
        Action: SPCFGNOTIFY,
        cRules: ULONG,
        pRules: *const SPRULEENTRY,
    ) -> HRESULT,
    fn PrivateCallEx(
        pvEngineContext: *mut c_void,
        pInCallFrame: *const c_void,
        ulInCallFrameSize: ULONG,
        ppvCoMemResponse: *mut *mut c_void,
        pulResponseSize: *mut ULONG,
    ) -> HRESULT,
    fn SetContextState(
        pvEngineContext: *mut c_void,
        eContextState: SPCONTEXTSTATE,
    ) -> HRESULT,
}}
STRUCT!{struct SPPHRASEALTREQUEST {
    ulStartElement: ULONG,
    cElements: ULONG,
    ulRequestAltCount: ULONG,
    pvResultExtra: *mut c_void,
    cbResultExtra: ULONG,
    pPhrase: *mut ISpPhrase,
    pRecoContext: *mut ISpRecoContext,
}}
RIDL!{#[uuid(0x8e7c791e, 0x4467, 0x11d3, 0x97, 0x23, 0x00, 0xc0, 0x4f, 0x72, 0xdb, 0x08)]
interface _ISpPrivateEngineCall(_ISpPrivateEngineCallVtbl): IUnknown(IUnknownVtbl) {
    fn CallEngine(
        pCallFrame: *mut c_void,
        ulCallFrameSize: ULONG,
    ) -> HRESULT,
    fn CallEngineEx(
        pInFrame: *const c_void,
        ulInFrameSize: ULONG,
        ppCoMemOutFrame: *mut *mut c_void,
        pulOutFrameSize: *mut ULONG,
    ) -> HRESULT,
}}
extern {
    pub static LIBID_SpeechDDKLib: IID;
    pub static CLSID_SpDataKey: CLSID;
}
RIDL!{#[uuid(0xd9f6ee60, 0x58c9, 0x458b, 0x88, 0xe1, 0x2f, 0x90, 0x8f, 0xd7, 0xf8, 0x7c)]
class SpDataKey;}
extern {
    pub static CLSID_SpObjectTokenEnum: CLSID;
    pub static CLSID_SpPhraseBuilder: CLSID;
    pub static CLSID_SpITNProcessor: CLSID;
    pub static CLSID_SpGrammarCompiler: CLSID;
    pub static CLSID_SpGramCompBackend: CLSID;
}

[ Dauer der Verarbeitung: 0.3 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge