403Webshell
Server IP : 209.209.40.120  /  Your IP : 216.73.217.112
Web Server : Microsoft-IIS/10.0
System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586
User : NEWWWW$ ( 0)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um/sapiddk.idl
/****************************************************************************
*   sapiddk.idl
*
*   This is the interface definition file for the Microsoft Speech API DLL's
*   Version 5.4.
*
*   It contains definitions for the DDI layer between SAPI.DLL and both
*   TTS and SR engines.
*
*   Copyright (c) Microsoft Corporation. All rights reserved.
*****************************************************************************/

cpp_quote("#include <winapifamily.h>")

#pragma region Desktop Family
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")

//-- Header file selection --------------------------------------------------
// This section must be at the beginning of this file
#ifndef _SAPI_BUILD_VER
#define _SAPI_BUILD_VER 0x054
#endif

#if _SAPI_BUILD_VER >= 0x053
cpp_quote("#ifndef _SAPI_VER")

cpp_quote("// Use SAPI 5.4 by default if target Windows 7")
cpp_quote("#if _WIN32_WINNT >= 0x0601")
cpp_quote("#define _SAPI_VER 0x054")
cpp_quote("#elif _WIN32_WINNT >= 0x0600")
cpp_quote("#define _SAPI_VER 0x053")
cpp_quote("#else // _WIN32_WINNT < 0x0600")
cpp_quote("#define _SAPI_VER 0x051")
cpp_quote("#endif // _WIN32_WINNT >= 0x0601")

cpp_quote("#endif // _SAPI_VER")

cpp_quote("// The following definitions are for SAPI 5.3 and newer")
cpp_quote("#if  _SAPI_VER >= 0x053")
#endif 
// -- End of header file selection ------------------------------------------

//--- Includes --------------------------------------------------------------
import "oaidl.idl";
import "ocidl.idl";
import "sapi.idl";

//--- Locally scoped define for LANGID
#ifndef LANGID
#define LANGID WORD
#endif

#if defined(NO_SAL)
#define annotation(x)
#endif

//--- ITN Processor
interface ISpITNProcessor;

//--- Grammar compiler and dynamic manipulation
interface ISpErrorLog;
interface ISpGrammarCompiler;
interface ISpGramCompBackend;

//--- Phrase builder
interface ISpPhraseBuilder;

//--- Token String Key Names
cpp_quote("#define SPRECOEXTENSION   L\"RecoExtension\"")
cpp_quote("#define SPALTERNATESCLSID L\"AlternatesCLSID\"")
#if _SAPI_BUILD_VER >= 0x053
cpp_quote("#define SR_LOCALIZED_DESCRIPTION L\"Description\"") 
#endif // _SAPI_BUILD_VER >= 0x053
//--- ISpTokenUI -----------------------------------------------------------
[
    object,
    uuid(F8E690F0-39CB-4843-B8D7-C84696E1119D),
    helpstring("ISpTokenUI Interface"),
    pointer_default(unique),
    restricted
]
interface ISpTokenUI : IUnknown
{
    [local] HRESULT IsUISupported(
                [in] LPCWSTR pszTypeOfUI,
                [in] void* pvExtraData,
                [in] ULONG cbExtraData,
                [in] IUnknown* punkObject,
                [out] BOOL *pfSupported);
    [local] HRESULT DisplayUI(
                [in] HWND hwndParent,
                [annotation("_In_opt_")] [in] LPCWSTR pszTitle,
                [in] LPCWSTR pszTypeOfUI,
                [in] void* pvExtraData,
                [in] ULONG cbExtraData,
                [in] ISpObjectToken* pToken,
                [in] IUnknown* punkObject);
};

//--- ISpObjectTokenEnumBuilder ---------------------------------------------
[
    object,
    uuid(06B64F9F-7FDA-11D2-B4F2-00C04F797396),
    helpstring("ISpObjectTokensEnumBuilder Interface"),
    pointer_default(unique),
    local,
    restricted
]
interface ISpObjectTokenEnumBuilder : IEnumSpObjectTokens
{
    HRESULT SetAttribs(
                [annotation("_In_opt_")] [in] LPCWSTR pszReqAttribs, 
                [annotation("_In_opt_")] [in] LPCWSTR pszOptAttribs);
    HRESULT AddTokens(
                [in] ULONG cTokens, 
                [in] ISpObjectToken** pToken);
    HRESULT AddTokensFromDataKey(
                [in] ISpDataKey* pDataKey, 
                [in] LPCWSTR pszSubKey, 
                [in] LPCWSTR pszCategoryId);
    HRESULT AddTokensFromTokenEnum(
                [in] IEnumSpObjectTokens* pTokenEnum);
    HRESULT Sort(
                [in] LPCWSTR pszTokenIdToListFirst);
};

//--- Handles for SR grammars and results
cpp_quote("#if 0")
typedef void* SPWORDHANDLE;
typedef void* SPRULEHANDLE;
typedef void* SPGRAMMARHANDLE;
typedef void* SPRECOCONTEXTHANDLE;
typedef void* SPPHRASERULEHANDLE;
typedef void* SPPHRASEPROPERTYHANDLE;
typedef void* SPTRANSITIONID;
cpp_quote("#else")
cpp_quote("DECLARE_HANDLE(SPWORDHANDLE);")
cpp_quote("DECLARE_HANDLE(SPRULEHANDLE);")
cpp_quote("DECLARE_HANDLE(SPGRAMMARHANDLE);")
cpp_quote("DECLARE_HANDLE(SPRECOCONTEXTHANDLE);")
cpp_quote("DECLARE_HANDLE(SPPHRASERULEHANDLE);")
cpp_quote("DECLARE_HANDLE(SPPHRASEPROPERTYHANDLE);")
cpp_quote("DECLARE_HANDLE(SPTRANSITIONID);")
cpp_quote("#endif")


//--- ISpErrorLog -----------------------------------------------------------
// This interface is used to log error information.

[
    object,
    uuid(F4711347-E608-11D2-A086-00C04F8EF9B5),
    helpstring("ISpErrorLog Interface"),
    pointer_default(unique),
    local,
    restricted
]
interface ISpErrorLog : IUnknown
{
    HRESULT AddError(
                [in] const long lLineNumber,
                [in] HRESULT hr, 
                [in] LPCWSTR pszDescription, 
                [annotation("_In_opt_")] [in] LPCWSTR pszHelpFile, 
                [in] DWORD dwHelpContext);
};

//--- ISpGrammarCompiler ----------------------------------------------------

[
    object,
    uuid(B1E29D58-A675-11D2-8302-00C04F8EE6C0),
    helpstring("ISpGrammarCompiler Interface"),
    pointer_default(unique),
    local,
    restricted
]
interface ISpGrammarCompiler : IUnknown
{
    HRESULT CompileStream(
                [in] IStream* pSource, 
                [out] IStream* pDest, 
                [annotation("_In_opt_")] [in] IStream* pHeader, 
                [annotation("_In_opt_")] [in] IUnknown* pReserved, 
                [annotation("_In_opt_")] [in] ISpErrorLog* pErrorLog, 
                [in] DWORD dwFlags);
};

[
    object,
    uuid(3DDCA27C-665C-4786-9F97-8C90C3488B61),
    helpstring("ISpGramCompBackend Interface"),
    pointer_default(unique),
    restricted
]
interface ISpGramCompBackend : ISpGrammarBuilder
{
    HRESULT SetSaveObjects(
                [in] IStream* pStream, 
                [in] ISpErrorLog* pErrorLog);
    HRESULT InitFromBinaryGrammar(
                [in] const SPBINARYGRAMMAR* pBinaryData);
};

//--- ISpITNProcessor ----------------------------------------------------------
[
    object,
    uuid(12D7360F-A1C9-11D3-BC90-00C04F72DF9F),
    helpstring("ISpITNProcessor Interface"),
    pointer_default(unique),
    local,
    restricted
]
interface ISpITNProcessor : IUnknown
{
    HRESULT LoadITNGrammar(
                [annotation("_In_")] [in] LPWSTR pszCLSID);
    HRESULT ITNPhrase(
                [in] ISpPhraseBuilder *pPhrase);
};


[
    object,
    uuid(88A3342A-0BED-4834-922B-88D43173162F),
    local,
    helpstring("ISpPhraseBuilder Interface"),
    pointer_default(unique),
    restricted
]
interface ISpPhraseBuilder : ISpPhrase
{
    HRESULT InitFromPhrase(
                [in] const SPPHRASE* pPhrase);
    HRESULT InitFromSerializedPhrase(
                [in] const SPSERIALIZEDPHRASE* pPhrase);
    HRESULT AddElements(
                [in] ULONG cElements, 
                [in] const SPPHRASEELEMENT *pElement);
    HRESULT AddRules(
                [in] const SPPHRASERULEHANDLE hParent, 
                [in] const SPPHRASERULE* pRule, 
                [out] SPPHRASERULEHANDLE* phNewRule);
    HRESULT AddProperties(
                [in] const SPPHRASEPROPERTYHANDLE hParent, 
                [in] const SPPHRASEPROPERTY* pProperty, 
                [out] SPPHRASEPROPERTYHANDLE* phNewProperty);
    HRESULT AddReplacements(
                [in] ULONG cReplacements, 
                [in] const SPPHRASEREPLACEMENT* pReplacements);
};



//--- ISpTask ---------------------------------------------------------------

cpp_quote("#if defined(__cplusplus)")
cpp_quote("interface ISpTask")
cpp_quote("{")
cpp_quote("virtual HRESULT STDMETHODCALLTYPE Execute(")
cpp_quote("                 void *pvTaskData,")
cpp_quote("                 volatile const BOOL* pfContinueProcessing) = 0;")
cpp_quote("};")
cpp_quote("#else")
typedef void* ISpTask;
cpp_quote("#endif")

//--- ISpThreadTask ---------------------------------------------------------

cpp_quote("#if defined(__cplusplus)")
cpp_quote("interface ISpThreadTask")
cpp_quote("{")
cpp_quote("virtual HRESULT STDMETHODCALLTYPE InitThread(")
cpp_quote("                 void* pvTaskData,")
cpp_quote("                 HWND hwnd) = 0;")
cpp_quote("virtual HRESULT STDMETHODCALLTYPE ThreadProc(")
cpp_quote("                 void *pvTaskData,")
cpp_quote("                 HANDLE hExitThreadEvent,")
cpp_quote("                 HANDLE hNotifyEvent,")
cpp_quote("                 HWND hwndWorker,")
cpp_quote("                 volatile const BOOL* pfContinueProcessing) = 0;")
cpp_quote("virtual LRESULT STDMETHODCALLTYPE WindowMessage(")
cpp_quote("                 void *pvTaskData,")
cpp_quote("                 HWND hWnd,")
cpp_quote("                 UINT Msg,")
cpp_quote("                 WPARAM wParam,")
cpp_quote("                 LPARAM lParam) = 0;")
cpp_quote("};")
cpp_quote("#else")
typedef void* ISpThreadTask;
cpp_quote("#endif")

//--- ISpThreadControl ------------------------------------------------------
[
    object,
    uuid(A6BE4D73-4403-4358-B22D-0346E23B1764),
    helpstring("ISpThreadControl Interface"),
    pointer_default(unique),
    local,
    restricted
]
interface ISpThreadControl : ISpNotifySink
{
    HRESULT StartThread(
                [in] DWORD dwFlags, 
                [out] HWND* phwnd);
    HRESULT WaitForThreadDone(
                [in] BOOL fForceStop, 
                [out] HRESULT* phrThreadResult, 
                [in] ULONG msTimeOut);
    HRESULT TerminateThread(void);
    HANDLE  ThreadHandle(void);
    DWORD   ThreadId(void);
    HANDLE  NotifyEvent(void);
    HWND    WindowHandle(void);
    HANDLE  ThreadCompleteEvent(void);
    HANDLE  ExitThreadEvent(void);
};

//--- ISpTaskManager --------------------------------------------------------
// This interface is used to implement a task managment service provider
// to optimize thread usage.

typedef [restricted] struct SPTMTHREADINFO
{
    long    lPoolSize;              // Number of threads in pool (-1 default)
    long    lPriority;              // Priority of threads in pool
    ULONG   ulConcurrencyLimit;     // Number of threads allowed to concurrently execute (0 default)
    ULONG   ulMaxQuickAllocThreads; // Maximum number of dedicated threads retained
} SPTMTHREADINFO;

[
    local,
    uuid(2BAEEF81-2CA3-4331-98F3-26EC5ABEFB03),
    helpstring("ISpTaskManager Interface"),
    pointer_default(unique),
    restricted
]
interface ISpTaskManager : IUnknown
{
    HRESULT SetThreadPoolInfo(
                [in] const SPTMTHREADINFO* pPoolInfo);
    HRESULT GetThreadPoolInfo(
                [out] SPTMTHREADINFO* pPoolInfo);
    HRESULT QueueTask(
                [in] ISpTask* pTask, 
                [in] void* pvTaskData, 
                [in] HANDLE hCompEvent, 
                [in, out] DWORD* pdwGroupId, 
                [out] DWORD* pTaskID);
    HRESULT CreateReoccurringTask(
                [in] ISpTask* pTask, 
                [in] void* pvTaskData, 
                [in] HANDLE hCompEvent, 
                [out] ISpNotifySink** ppTaskCtrl);
    HRESULT CreateThreadControl(
                [in] ISpThreadTask* pTask, 
                [in] void* pvTaskData, 
                [in] long nPriority, 
                [annotation("_Outptr_")] [out] ISpThreadControl** ppTaskCtrl);
    HRESULT TerminateTask(
                [in] DWORD dwTaskId, 
                [in] ULONG ulWaitPeriod);
    HRESULT TerminateTaskGroup(
                [in] DWORD dwGroupId, 
                [in] ULONG ulWaitPeriod);
};


//--- ISpTTSEngineSite ------------------------------------------------------

typedef enum SPVSKIPTYPE
{
    SPVST_SENTENCE  = (1L << 0)           // Skip sentences
} SPVSKIPTYPE;

typedef enum SPVESACTIONS
{
    SPVES_CONTINUE = 0,
    SPVES_ABORT    = ( 1L << 0 ),
    SPVES_SKIP     = ( 1L << 1 ),
    SPVES_RATE     = ( 1L << 2 ),
    SPVES_VOLUME   = ( 1L << 3 )
} SPVESACTIONS;

[
    object,
    local,
    uuid(9880499B-CCE9-11D2-B503-00C04F797396),
    helpstring("ISpTTSEngineSite Interface"),
    pointer_default(unique)
]
interface ISpTTSEngineSite : ISpEventSink
{
    DWORD   GetActions( void );
    HRESULT Write(
                [in] const void* pBuff, 
                [in] ULONG cb, 
                [out] ULONG *pcbWritten );
    HRESULT GetRate(
                [out] long* pRateAdjust );
    HRESULT GetVolume(
                [out] USHORT* pusVolume );
    HRESULT GetSkipInfo(
                [out] SPVSKIPTYPE* peType, 
                [out] long* plNumItems );
    HRESULT CompleteSkip(
                [in] long ulNumSkipped );
};

//--- ISpTTSEngine ----------------------------------------------------------

typedef struct SPVTEXTFRAG
{
    struct SPVTEXTFRAG* pNext;   // Next text fragment in list, NULL == end of list
    SPVSTATE  State;             // Current XML attribute state
    LPCWSTR  pTextStart;
    ULONG     ulTextLen;
    ULONG     ulTextSrcOffset;   // Original source position of the fragment text
} SPVTEXTFRAG;

[
    object,
    local,
    uuid(A74D7C8E-4CC5-4F2F-A6EB-804DEE18500E),
    helpstring("ISpTTSEngine Interface"),
    pointer_default(unique)
]
interface ISpTTSEngine : IUnknown
{
    HRESULT Speak(
                [in] DWORD dwSpeakFlags,
                [in] REFGUID rguidFormatId, 
                [in] const WAVEFORMATEX* pWaveFormatEx,
                [in] const SPVTEXTFRAG* pTextFragList, 
                [in] ISpTTSEngineSite* pOutputSite );
    HRESULT GetOutputFormat(
                [in] const GUID* pTargetFmtId, 
                [in] const WAVEFORMATEX* pTargetWaveFormatEx,
                [out] GUID* pOutputFormatId, 
                [annotation("_Outptr_")] [out] WAVEFORMATEX** ppCoMemOutputWaveFormatEx);
};

//--- SR Engine data structures ----------------------------------------


typedef [restricted] struct SPWORDENTRY
{
    SPWORDHANDLE    hWord;
    LANGID          LangID;
    WCHAR*          pszDisplayText;
    WCHAR*          pszLexicalForm;
    SPPHONEID*      aPhoneId;
    void*           pvClientContext;
} SPWORDENTRY;

typedef [restricted] struct SPRULEENTRY
{
    SPRULEHANDLE    hRule;
    SPSTATEHANDLE   hInitialState;
    DWORD           Attributes;     // SPCFGRULEATTRIBUTES   
    void*           pvClientRuleContext;
    void*           pvClientGrammarContext;
} SPRULEENTRY;

typedef enum SPTRANSITIONTYPE
{
    SPTRANSEPSILON,
    SPTRANSWORD,
    SPTRANSRULE,
    SPTRANSTEXTBUF,
    SPTRANSWILDCARD,
    SPTRANSDICTATION
} SPTRANSITIONTYPE;

typedef [restricted] struct SPTRANSITIONENTRY
{
    SPTRANSITIONID      ID;
    SPSTATEHANDLE       hNextState;
    BYTE                Type;       // SPTRANSITIONTYPE
    char                RequiredConfidence;
    struct
    {
    	DWORD fHasProperty;         // Boolean type
    };
    float               Weight;
    union
    {
        struct
        {
            SPSTATEHANDLE   hRuleInitialState;  // Only if Type == SPTRANSRULE
            SPRULEHANDLE    hRule;
            void*           pvClientRuleContext;
        };
        struct
        {
            SPWORDHANDLE    hWord;              // Only if Type == SPTRANSWORD
            void*           pvClientWordContext;
        };
        struct
        {
            void*           pvGrammarCookie;    // Only if Type == SPTRANSTEXTBUF or SPTRANSWILDCARD or SPTRANSDICTATION
        };
    };
} SPTRANSITIONENTRY;

typedef [restricted] struct  SPTRANSITIONPROPERTY
{
    LPCWSTR                 pszName;     
    ULONG                   ulId;
    LPCWSTR                 pszValue;   
    VARIANT                 vValue;     // Will be VT_BOOL, VT_I4, VT_R4, VT_R8, or VT_BYREF (only for dynamic grammars)
} SPTRANSITIONPROPERTY;

typedef [restricted] struct SPSTATEINFO
{
    ULONG               cAllocatedEntries;
    SPTRANSITIONENTRY*  pTransitions;
    ULONG               cEpsilons;
    ULONG               cRules;
    ULONG               cWords;
    ULONG               cSpecialTransitions;
} SPSTATEINFO;

typedef [restricted] struct SPPATHENTRY
{
    SPTRANSITIONID      hTransition;
    SPPHRASEELEMENT     elem;
} SPPATHENTRY;





//--- ISpCFGInterpreterSite -------------------------------------------------
[
    object,
    uuid(6A6FFAD8-78B6-473D-B844-98152E4FB16B),
    helpstring("ISpCFGInterpreterSite Interface"),
    pointer_default(unique),
    local,
    restricted
]
interface ISpCFGInterpreterSite : IUnknown
{
    HRESULT AddTextReplacement(
                [in] SPPHRASEREPLACEMENT* pReplace);
    HRESULT AddProperty(
                [in] const SPPHRASEPROPERTY *pProperty);
    HRESULT GetResourceValue(
                [in] LPCWSTR pszResourceName,
                [annotation("_Outptr_")] [out] LPWSTR* ppCoMemResource);
};


//--- ISpCFGInterpreter -----------------------------------------------------

[
    object,
    uuid(F3D3F926-11FC-11D3-BB97-00C04F8EE6C0),
    helpstring("ISpCFGInterpreter Interface"),
    pointer_default(unique),
    local,
    restricted
]
interface ISpCFGInterpreter : IUnknown
{
    HRESULT InitGrammar(
                [in] LPCWSTR pszGrammarName, 
                [in] const void** pvGrammarData);
    HRESULT Interpret(
                [in] ISpPhraseBuilder* pPhrase,
                [in] const ULONG ulFirstElement,
                [in] const ULONG ulCountOfElements,
                [in] ISpCFGInterpreterSite* pSite);
};


typedef enum SPCFGNOTIFY
{
    SPCFGN_ADD,
    SPCFGN_REMOVE,
    SPCFGN_INVALIDATE,
    SPCFGN_ACTIVATE,
    SPCFGN_DEACTIVATE
} SPCFGNOTIFY;

//--- ISpSREngineSite -------------------------------------------------------

typedef enum SPRESULTTYPE
{
    SPRT_CFG                = 0,
    SPRT_SLM                = 1,
    SPRT_PROPRIETARY        = 2,
    SPRT_FALSE_RECOGNITION  = ( 1L << 2 ), // Flag used to indicate a false recognition
#if _SAPI_BUILD_VER >= 0x053
    SPRT_TYPE_MASK          = 3,
    SPRT_EMULATED           = ( 1L << 3 ),
    SPRT_EXTENDABLE_PARSE   = ( 1L << 4 )
#endif // _SAPI_BUILD_VER >= 0x053
} SPRESULTTYPE;

typedef struct tagSPPHRASEALT
{
    ISpPhraseBuilder* pPhrase;
    ULONG              ulStartElementInParent;
    ULONG              cElementsInParent;
    ULONG              cElementsInAlternate;
    void*             pvAltExtra;
    ULONG              cbAltExtra;
} SPPHRASEALT;

// Result structure passed from engine to SAPI
typedef struct SPRECORESULTINFO
{
    ULONG             cbSize;               // Total size of this structure
    SPRESULTTYPE      eResultType;          // Type of result object (CFG, SLM, or Proprietary)
    BOOL              fHypothesis;          // If true then this recognition is a hypothesis
    BOOL              fProprietaryAutoPause;// This field is only used for SPERT_PROPRIETARY grammars.  If true, recognition will pause.
    ULONGLONG         ullStreamPosStart;    // Start and end stream positions of recognition
    ULONGLONG         ullStreamPosEnd;
    SPGRAMMARHANDLE   hGrammar;             // Required for SPERT_SLM and SPERT_PROPRIETARY else NULL
    ULONG             ulSizeEngineData;     // Size of pvEngineData
    void*             pvEngineData;         // Extra engine specific data
    ISpPhraseBuilder* pPhrase;              // Pointer to phrase object
    SPPHRASEALT*      aPhraseAlts;          // Alternates array
    ULONG             ulNumAlts;            // Number of alternates in the array
} SPRECORESULTINFO;


#if _SAPI_BUILD_VER >= 0x053
cpp_quote("#if 0")
// Result structure passed from engine to SAPI
typedef struct SPRECORESULTINFOEX
{
    ULONG             cbSize;               // Total size of this structure
    SPRESULTTYPE      eResultType;          // Type of result object (CFG, SLM, or Proprietary)
    BOOL              fHypothesis;          // If true then this recognition is a hypothesis
    BOOL              fProprietaryAutoPause;// This field is only used for SPERT_PROPRIETARY grammars.  If true, recognition will pause.
    ULONGLONG         ullStreamPosStart;    // Start and end stream positions of recognition
    ULONGLONG         ullStreamPosEnd;
    SPGRAMMARHANDLE   hGrammar;             // Required for SPERT_SLM and SPERT_PROPRIETARY else NULL
    ULONG             ulSizeEngineData;     // Size of pvEngineData
    void*             pvEngineData;         // Extra engine specific data
    ISpPhraseBuilder* pPhrase;              // Pointer to phrase object
    SPPHRASEALT*      aPhraseAlts;          // Alternates array
    ULONG             ulNumAlts;            // Number of alternates in the array
    ULONGLONG         ullStreamTimeStart;   // Value set in RecoResultTimes ullStart
    ULONGLONG         ullStreamTimeEnd;
} SPRECORESULTINFOEX;
cpp_quote("#else")
//This typedef is used for C++ to include the header
cpp_quote("typedef struct SPRECORESULTINFOEX : public SPRECORESULTINFO")
cpp_quote("{")
cpp_quote("    ULONGLONG         ullStreamTimeStart;")
cpp_quote("    ULONGLONG         ullStreamTimeEnd;")
cpp_quote("} SPRECORESULTINFOEX;")
cpp_quote("#endif")
#endif // _SAPI_BUILD_VER >= 0x053



typedef enum SPWORDINFOOPT
{
    SPWIO_NONE      = 0,
    SPWIO_WANT_TEXT = 1
} SPWORDINFOOPT;


typedef enum SPRULEINFOOPT
{
    SPRIO_NONE      = 0,
} SPRULEINFOOPT;

typedef struct SPPARSEINFO
{
    ULONG           cbSize;
    SPRULEHANDLE    hRule;
    ULONGLONG       ullAudioStreamPosition;
    ULONG           ulAudioSize;
    ULONG           cTransitions;
    SPPATHENTRY*    pPath;
    GUID            SREngineID;
    ULONG           ulSREnginePrivateDataSize;
    const BYTE*     pSREnginePrivateData;
    BOOL            fHypothesis;
} SPPARSEINFO;



[
    object,
    uuid(3B414AEC-720C-4883-B9EF-178CD394FB3A),
    helpstring("ISpSREngineSite Interface"),
    pointer_default(unique),
    local
]
interface ISpSREngineSite : IUnknown
{
    HRESULT Read(
                [in] void* pv, 
                [in] ULONG cb, 
                [out] ULONG* pcbRead);
    HRESULT DataAvailable(
                [out] ULONG* pcb);
    HRESULT SetBufferNotifySize(
                [in] ULONG cbSize);
    HRESULT ParseFromTransitions(
                [in] const SPPARSEINFO* pParseInfo,
                [out] ISpPhraseBuilder** ppNewPhrase);
    HRESULT Recognition(
                [in] const SPRECORESULTINFO* pResultInfo);
    HRESULT AddEvent(
                [in] const SPEVENT* pEvent, 
                [in] SPRECOCONTEXTHANDLE hSAPIRecoContext);
    HRESULT Synchronize(
                [in] ULONGLONG ullProcessedThruPos);
    HRESULT GetWordInfo(
                [in, out] SPWORDENTRY* pWordEntry, 
                [in] SPWORDINFOOPT Options);    // Caller must fill in hWord.  if fWantWordText then caller must CoTaskMemFree the pszWord.
    HRESULT SetWordClientContext(
                [in] SPWORDHANDLE hWord, 
                [in] void* pvClientContext);
    HRESULT GetRuleInfo(
                [in, out] SPRULEENTRY* pRuleEntry, 
                [in] SPRULEINFOOPT Options); // Caller must fill in hRule.SPRULEHANDLE hRule, BOOL* pfActive, BOOL *pfAutoPause, SPSTATEHANDLE* phInitialState, void** ppvClientContext);
    HRESULT SetRuleClientContext(
                [in] SPRULEHANDLE hRule, 
                [in] void* pvClientContext);
    HRESULT GetStateInfo(
                [in] SPSTATEHANDLE hState, 
                [out] SPSTATEINFO* pStateInfo);
    HRESULT GetResource( 
                [in] SPRULEHANDLE hRule, 
                [in] LPCWSTR pszResourceName, 
                [annotation("_Outptr_")] [out] LPWSTR* ppCoMemResource );
    HRESULT GetTransitionProperty(
                [in] SPTRANSITIONID ID, 
                [annotation("_Outptr_")] [out] SPTRANSITIONPROPERTY **ppCoMemProperty);
    HRESULT IsAlternate(
                [in] SPRULEHANDLE hRule, 
                [in] SPRULEHANDLE hAltRule );
    HRESULT GetMaxAlternates(
                [in]SPRULEHANDLE hRule, 
                [out] ULONG* pulNumAlts);
    HRESULT GetContextMaxAlternates(
                [in] SPRECOCONTEXTHANDLE hContext, 
                [out] ULONG* pulNumAlts);
    HRESULT UpdateRecoPos(
                [in] ULONGLONG ullCurrentRecoPos);
};

#if _SAPI_BUILD_VER >= 0x053
[
    object,
    uuid(7BC6E012-684A-493E-BDD4-2BF5FBF48CFE),
    helpstring("ISpSREngineSite2 Interface"),
    pointer_default(unique),
    local
]
interface ISpSREngineSite2 : ISpSREngineSite
{
    HRESULT AddEventEx(
                [in] const SPEVENTEX* pEvent, 
                [in] SPRECOCONTEXTHANDLE hSAPIRecoContext);
    HRESULT UpdateRecoPosEx(
                [in] ULONGLONG ullCurrentRecoPos, 
                [in] ULONGLONG ullCurrentRecoTime);    
    HRESULT GetRuleTransition(
                [in] ULONG ulGrammarID, 
                [in] ULONG RuleIndex, 
                [out] SPTRANSITIONENTRY* pTrans);    
    HRESULT RecognitionEx(
                [in] const SPRECORESULTINFOEX* pResultInfo);
};
#endif // _SAPI_BUILD_VER >= 0x053

//--- ISpSREngine -----------------------------------------------------------
typedef enum SPPROPSRC
{
    SPPROPSRC_RECO_INST,
    SPPROPSRC_RECO_CTX,
    SPPROPSRC_RECO_GRAMMAR
} SPPROPSRC;

[
    object,
    uuid(2F472991-854B-4465-B613-FBAFB3AD8ED8),
    helpstring("ISpSREngine Interface"),
    pointer_default(unique),
    local
]
interface ISpSREngine : IUnknown
{
    HRESULT SetSite(
                [in] ISpSREngineSite *pSite);
    HRESULT GetInputAudioFormat(
                [in] const GUID* pguidSourceFormatId,
                [in] const WAVEFORMATEX* pSourceWaveFormatEx,
                [out] GUID* pguidDesiredFormatId, 
                [annotation("_Outptr_")] [out] WAVEFORMATEX** ppCoMemDesiredWaveFormatEx);
    HRESULT RecognizeStream(
                [in] REFGUID rguidFmtId, 
                [in] const WAVEFORMATEX* pWaveFormatEx,
                [in] HANDLE hRequestSync, 
                [in] HANDLE hDataAvailable,
                [in] HANDLE hExit, 
                [in] BOOL fNewAudioStream, 
                [in] BOOL fRealTimeAudio,
                [in] ISpObjectToken* pAudioObjectToken);
    HRESULT SetRecoProfile(
                [in] ISpObjectToken* pProfile);
    HRESULT OnCreateGrammar(
                [in] void* pvEngineRecoContext,
                [in] SPGRAMMARHANDLE hSAPIGrammar,
                [annotation("_Outptr_")] [out] void** ppvEngineGrammarContext);
    HRESULT OnDeleteGrammar(
                [in] void* pvEngineGrammar);
    HRESULT LoadProprietaryGrammar(
                [in] void* pvEngineGrammar,
                [in] REFGUID rguidParam,
                [in, string] LPCWSTR pszStringParam,
                [in] const void* pvDataParam,
                [in] ULONG ulDataSize,
                [in] SPLOADOPTIONS Options);    // Note for SAPI 5.0 this is always SPLO_NONE
    HRESULT UnloadProprietaryGrammar(
                [in] void* pvEngineGrammar);
    HRESULT SetProprietaryRuleState(
                [in] void* pvEngineGrammar, 
                [in, string] LPCWSTR pszName,
                [in] void* pReserved,
                [in] SPRULESTATE NewState,
                [out] ULONG* pcRulesChanged);
    HRESULT SetProprietaryRuleIdState(
                [in] void* pvEngineGrammar, 
                [in] DWORD dwRuleId,
                [in] SPRULESTATE NewState);
    HRESULT LoadSLM(
                [in] void* pvEngineGrammar, 
                [in, string] LPCWSTR pszTopicName);
    HRESULT UnloadSLM(
                [in] void* pvEngineGrammar);
    HRESULT SetSLMState(
                [in] void* pvEngineGrammar, 
                [in] SPRULESTATE NewState);
    HRESULT SetWordSequenceData(
                [in] void* pvEngineGrammar, 
                [annotation("_In_reads_(cchText)"),in] const WCHAR* pText, 
                [in] ULONG cchText, 
                [in] const SPTEXTSELECTIONINFO* pInfo);
    HRESULT SetTextSelection(
                [in] void* pvEngineGrammar, 
                [in] const SPTEXTSELECTIONINFO* pInfo);
    HRESULT IsPronounceable(
                [in] void* pvEngineGrammar, 
                [in, string] LPCWSTR pszWord, 
                [out] SPWORDPRONOUNCEABLE *pWordPronounceable);
    HRESULT OnCreateRecoContext(
                [in] SPRECOCONTEXTHANDLE hSAPIRecoContext, 
                [out] void** ppvEngineContext);
    HRESULT OnDeleteRecoContext(
                [in] void* pvEngineContext);
    HRESULT PrivateCall(
                [in] void* pvEngineContext, 
                [in, out] PVOID pCallFrame, 
                [in] ULONG ulCallFrameSize);
    HRESULT SetAdaptationData(
                [in] void* pvEngineContext, 
                [annotation("_In_reads_(cch)")] const WCHAR* pAdaptationData, 
                [in] const ULONG cch);
    HRESULT SetPropertyNum(
                [in] SPPROPSRC eSrc, 
                [in] void* pvSrcObj,
                [in] const WCHAR* pName, 
                [in] LONG lValue );
    HRESULT GetPropertyNum(
                [in] SPPROPSRC eSrc, 
                [in] void* pvSrcObj,
                [in] const WCHAR* pName, 
                [out] LONG* lValue );
    HRESULT SetPropertyString(
                [in] SPPROPSRC eSrc, 
                [in] void* pvSrcObj,
                [in] LPCWSTR pName, 
                [in] LPCWSTR pValue );
    HRESULT GetPropertyString(
                [in] SPPROPSRC eSrc, 
                [in] void* pvSrcObj,
                [in] LPCWSTR pName, 
                [annotation("_Outptr_")] [out] LPWSTR* ppCoMemValue );
    HRESULT SetGrammarState(
                [in] void* pvEngineGrammar, 
                [in] SPGRAMMARSTATE eGrammarState);
    HRESULT WordNotify(
                [in] SPCFGNOTIFY Action, 
                [in] ULONG cWords, 
                [in] const SPWORDENTRY* pWords);
    HRESULT RuleNotify(
                [in] SPCFGNOTIFY Action, 
                [in] ULONG cRules, 
                [in] const SPRULEENTRY* pRules);
    HRESULT PrivateCallEx(
                [in] void* pvEngineContext, 
                [in] const void* pInCallFrame, 
                [in] ULONG ulInCallFrameSize,
                [out] void** ppvCoMemResponse, 
                [out] ULONG* pulResponseSize);
    HRESULT SetContextState(
                [in] void* pvEngineContext, 
                [in] SPCONTEXTSTATE eContextState);
};

#if _SAPI_BUILD_VER >= 0x053
[
    object,
    uuid(7BA627D8-33F9-4375-90C5-9985AEE5EDE5),
    helpstring("ISpSREngine2 Interface"),
    pointer_default(unique),
    local
]
interface ISpSREngine2 : ISpSREngine
{
    HRESULT PrivateCallImmediate(
                [in] void* pvEngineContext,
                [in] const void* pInCallFrame,
                [in] ULONG ulInCallFrameSize,
                [annotation("_Outptr_")] [out] void** ppvCoMemResponse,
                [out] ULONG* pulResponseSize);
    HRESULT SetAdaptationData2(
                [in] void* pvEngineContext, 
                [annotation("_In_reads_(cch)"), in] const WCHAR* pAdaptationData, 
                [in] const ULONG cch, 
                [in] LPCWSTR pTopicName, 
                [in] SPADAPTATIONSETTINGS eSettings, 
                [in] SPADAPTATIONRELEVANCE eRelevance);
    HRESULT SetGrammarPrefix(
                [in] void *pvEngineGrammar, 
                [annotation("_In_opt_"), in, string] LPCWSTR pszPrefix, 
                [in] BOOL fIsPrefixRequired);
    HRESULT SetRulePriority(
                [in] SPRULEHANDLE hRule,
                [in] void *pvClientRuleContext,
                [in] int nRulePriority);
    HRESULT EmulateRecognition(
                [in] ISpPhrase *pPhrase, 
                [in] DWORD dwCompareFlags);
    HRESULT SetSLMWeight(
                [in] void *pvEngineGrammar, 
                [in] float flWeight);
    HRESULT SetRuleWeight(
                [in] SPRULEHANDLE hRule,
                [in] void *pvClientRuleContext,
                [in] float flWeight);
    HRESULT SetTrainingState(
                [in] BOOL fDoingTraining, 
                [in] BOOL fAdaptFromTrainingData);
    HRESULT ResetAcousticModelAdaptation();
    HRESULT OnLoadCFG(
                [in] void* pvEngineGrammar, 
                [in] const SPBINARYGRAMMAR* pGrammarData,  // actually an SPCFGSERIALIZEDHEADER
                [in] ULONG ulGrammarID);
    HRESULT OnUnloadCFG(
                [in] void* pvEngineGrammar,
                [in] ULONG ulGrammarID);
}
#endif // _SAPI_BUILD_VER >= 0x053


//--- ISpSRAlternates

typedef struct tagSPPHRASEALTREQUEST
{
    ULONG            ulStartElement;
    ULONG            cElements;
    ULONG            ulRequestAltCount;

    void*            pvResultExtra;
    ULONG            cbResultExtra;

    ISpPhrase*       pPhrase;
    ISpRecoContext*  pRecoContext;
} SPPHRASEALTREQUEST;

#if _SAPI_BUILD_VER >= 0x053
[
    object,
    uuid(FECE8294-2BE1-408F-8E68-2DE377092F0E),
    helpstring("ISpSRAlternates Interface"),
    pointer_default(unique),
    local
]
interface ISpSRAlternates : IUnknown
{
    HRESULT GetAlternates(
                [in] SPPHRASEALTREQUEST* pAltRequest,
                [out] SPPHRASEALT **ppAlts,
                [out] ULONG *pcAlts);
    HRESULT Commit(
                [in] SPPHRASEALTREQUEST* pAltRequest,
                [in] SPPHRASEALT* pAlt,
                [out] void **ppvResultExtra,
                [out] ULONG *pcbResultExtra);
}
#endif // _SAPI_BUILD_VER >= 0x053

#if _SAPI_BUILD_VER >= 0x053
[
    object,
    uuid(F338F437-CB33-4020-9CAB-C71FF9CE12D3),
    helpstring("ISpSRAlternates Interface"),
    pointer_default(unique),
    local
]
interface ISpSRAlternates2 : ISpSRAlternates
{
    // Used when app Commits particular text. The original phrase, and start and count of elements being replaced are stored in the pAltRequest.
    HRESULT CommitText(
                [in] SPPHRASEALTREQUEST* pAltRequest, 
                [annotation("_In_opt_")] LPCWSTR pcszNewText, 
                [in] SPCOMMITFLAGS commitFlags);
}
#endif // _SAPI_BUILD_VER >= 0x053


// Interface used by engine specific recoctxt extension object to call into engine
[
    object,
    uuid(8E7C791E-4467-11D3-9723-00C04F72DB08),
    helpstring("_ISpPrivateEngineCall Interface"),
    pointer_default(unique),
    local
]
interface _ISpPrivateEngineCall : IUnknown
{
    HRESULT CallEngine(
                [annotation("_Inout_updates_bytes_(ulCallFrameSize)")] [in, out] void* pCallFrame, 
                [in] ULONG ulCallFrameSize);
    HRESULT CallEngineEx(
                [annotation("_In_reads_bytes_(ulInFrameSize)")] [in] const void* pInFrame, 
                [in] ULONG ulInFrameSize,
                [annotation("_Outptr_result_buffer_maybenull_(*pulOutFrameSize)")] [out] void** ppCoMemOutFrame, 
                [annotation("_Out_writes_(1)")] [out] ULONG* pulOutFrameSize);
}

#if _SAPI_BUILD_VER >= 0x053
// Interface used by engine specific recoctxt extension object to call into engine
[
    object,
    uuid(DEFD682A-FE0A-42B9-BFA1-56D3D6CECFAF),
    helpstring("ISpPrivateEngineCallEx Interface"),
    pointer_default(unique),
    local
]
interface ISpPrivateEngineCallEx : IUnknown
{
    HRESULT CallEngineSynchronize(
                [annotation("_In_reads_bytes_(ulInFrameSize)")] [in] const void* pInFrame, 
                [in] ULONG ulInFrameSize,
                [annotation("_Outptr_result_bytebuffer_(*pulOutFrameSize)")] [out] void** ppCoMemOutFrame, 
                [annotation("_Out_writes_(1)")] [out] ULONG* pulOutFrameSize);
    HRESULT CallEngineImmediate(
                [annotation("_In_reads_bytes_(ulInFrameSize)")] [in] const void* pInFrame, 
                [in] ULONG ulInFrameSize,
                [annotation("_Outptr_result_bytebuffer_(*pulOutFrameSize)")] [out] void** ppCoMemOutFrame, 
                [annotation("_Out_writes_(1)")] [out] ULONG* pulOutFrameSize);
}
#endif // _SAPI_BUILD_VER >= 0x053

//
//--- CoClass definitions ---------------------------------------------------
//

[
    helpstring("Microsoft Speech Object DDK Library"),
    uuid(9903F14C-12CE-4C99-9986-2EE3D7D588A8),
    version(5.4)
]
library SpeechDDKLib
{
    importlib("stdole32.tlb");
    importlib("stdole2.tlb");

    //--- SpDataKey ---------------------------------------------------------
    [
        uuid(D9F6EE60-58C9-458B-88E1-2F908FD7F87C),
        helpstring("Data Key")
    ]
    coclass SpDataKey
    {
        interface ISpRegDataKey;
        [default] interface ISpDataKey;
    }

    //--- SpObjectTokenEnum --------------------------------------------------
    [
        uuid(3918D75F-0ACB-41F2-B733-92AA15BCECF6),
        helpstring("Object Token Enumerator")
    ]
    coclass SpObjectTokenEnum
    {
        interface ISpObjectTokenEnumBuilder;
        [default] interface IEnumSpObjectTokens;
    }
        
    //--- SpPhraseBuilder ---------------------------------------------------
    [
        uuid(777B6BBD-2FF2-11D3-88FE-00C04F8EF9B5),
        helpstring("Phrase Builder Class")
    ]
    coclass SpPhraseBuilder
    {
        [default] interface ISpPhraseBuilder;
    }
    //--- SpITNProcessor ----------------------------------------------------
    [
        uuid(12D73610-A1C9-11D3-BC90-00C04F72DF9F),
        helpstring("SpITNProcessor Class"),
        restricted
    ]
    coclass SpITNProcessor
    {
        [default] interface ISpITNProcessor;
    };
    //--- SpGrammarCompiler ---------------------------------------------
    [
        uuid(B1E29D59-A675-11D2-8302-00C04F8EE6C0),
        helpstring("Microsoft Speech Grammar Compiler")
    ]
    coclass SpGrammarCompiler
    {
        [default] interface ISpGrammarCompiler;
    };

#if _SAPI_BUILD_VER >= 0x053
    //--- SpW3CGrammarCompiler ---------------------------------------------
    [
        uuid(D2C13906-51EF-454E-BC67-A52475FF074C),
        helpstring("Microsoft Speech Grammar Compiler For W3C Grammar Format")
    ]
    coclass SpW3CGrammarCompiler
    {
        [default] interface ISpGrammarCompiler;
    };
#endif // _SAPI_BUILD_VER >= 0x053

    //--- SpGramCompBackend ---------------------------------------------
    [
        uuid(DA93E903-C843-11D2-A084-00C04F8EF9B5),
        helpstring("Grammar Class"),
        restricted
    ]
    coclass SpGramCompBackend
    {
        [default] interface ISpGramCompBackend;
    };

}

// This must be at the end of this file
#if _SAPI_BUILD_VER >= 0x053
cpp_quote("#else")
cpp_quote("#include \"sapiddk51.h\"")
cpp_quote("#endif  // _SAPI_VER >= 0x053")
#endif

cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */")
#pragma endregion

Youez - 2016 - github.com/yon3zu
LinuXploit