Share via


ISpRecoGrammar::LoadCmdFromProprietaryGrammar (SAPI 5.4)

Microsoft Speech API 5.4

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
S_OK
E_INVALIDARG
FAILED(hr)

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 (see ISpSREngine::LoadProprietaryGrammar). 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.
}