ISpRecoGrammar::LoadCmdFromProprietaryGrammar (Microsoft Speech Platform)

Microsoft Speech Platform SDK 11

Microsoft Speech Platform

ISpRecoGrammar::LoadCmdFromProprietaryGrammar

ISpRecoGrammar::LoadCmdFromProprietaryGrammar loads a proprietary grammar.

HRESULT LoadCmdFromProprietaryGrammar(
   REFGUID         rguidParam,
   LPCWSTR        *pszStringParam,
   const void     *pvDataParam,
   ULONG           cbDataSize,
   SPLOADOPTIONS   Options
);

Parameters

rguidParam
[in] Unique identifier of the grammar. The GUID will be used by the application and the SR engine to uniquely identify the SR engine for verifying support.
pszStringParam
[in, string] The null-terminated string command. The string can be used by the application and the SR engine to specify which part of a grammar to utilize.
pvDataParam
[in] Additional information for the process. SAPI will handle the marshaling of the data to the SR engine.
cbDataSize
[in] The size, in bytes, of pvDataParam. SAPI will handle the marshaling of the data to the SR engine.
Options
[in] Flag of type SPLOADOPTIONS indicating whether the file should be loaded statically or dynamically. This value must be SPLO_STATIC.

Return values

Value Description
S_OK Function completed successfully.
E_INVALIDARG pszStringParam or pvDataParam is invalid or bad. Alternatively, Options is not SPLO_STATIC.
FAILED(hr) Appropriate error message.

Remarks

When an application calls ::LoadCmdFromProprietaryGrammar, the currently loaded CFG or proprietary will be unloaded.

Applications should use ::LoadCmdFromProprietaryGrammar when using a proprietary grammar format that the SR engine supports. If the current SR engine does not support the proprietary grammar format (specified using rguidParam and pszStringParam), the SR engine may return E_NOTIMPL.

Example


// Declare local identifiers:
HRESULT                      hr = S_OK;
CComPtr<ISpRecoGrammar>      cpRecoGrammar;
CComPtr<ISpRecoContext>      cpRecoContext;
ULONGLONG                    ullGramId = 1;
GUID                         rguidParam;

// Create a new grammar object.
hr = cpRecoContext->CreateGrammar(ullGramId, &cpRecoGrammar;);

if (SUCCEEDED(hr))
{
   // Load a proprietary grammar.
   hr = cpRecoGrammar->LoadCmdFromProprietaryGrammar(rguidParam, L"Rule1", NULL, NULL, SPLO_STATIC);
}

if (SUCCEEDED(hr))
{
   // Do stuff here.
}