ISpRecoContext::CreateGrammar

Microsoft Speech SDK

The Microsoft.com Speech website Microsoft Speech SDK SAPI 5.1

ISpRecoContext::CreateGrammar

ISpRecoContext::CreateGrammar creates an SpRecoGrammar object.

HRESULT CreateGrammar(
   ULONGLONG          ullGrammarId,
   ISpRecoGrammar   **ppGrammar
);

Parameters

ullGrammarId
[in] Specifies the grammar identifier. The identifier is used by the application and is not required. This identifier is associated with all result objects from the grammar (see SPPHRASE.ullGrammarID).
ppGrammar
[out] Address of a pointer which receives the ISpRecoGrammar object. The application must call IUnknown::Release on the object when finished using it.

Return values

Value Description
S_OK Function completed successfully.
E_POINTER ppGrammar is invalid.
E_OUTOFMEMORY Not enough system memory to create a grammar object.
SPERR_SR_ENGINE_EXCEPTION An exception was thrown by the SR engine during OnCreateGrammar.
FAILED(hr) Appropriate error message.

Example

The following code snippet illustrates the use of ISpRecoContext::CreateGrammar.

    HRESULT hr = S_OK;

    hr = cpRecoContext->CreateGrammar(GRAM_ID, &cpRecoGrammar);
    // Check hr

    // load a cfg from a file
    hr = cpRecoGrammar->LoadCmdFromFile(MY_CFG_FILENAME, SPLO_STATIC);
    // Check hr

    // activate the top-level rules
    hr = cpRecoGrammar->SetRuleState(NULL, NULL, SPRS_ACTIVE);
    // Check hr

    // get a recognition
    // ...

    // get the recognized phrase from the recognition result object
    hr = cpRecoResult->GetPhrase(&pPhrase);
    // Check hr

    // check the grammar id of the recognition result
    SPDBG_ASSERT(GRAM_ID == pPhrase->ullGrammarID);