Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Microsoft Speech API 5.3
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.
}