Share via


ISpGrammarBuilder::AddResource (SAPI 5.4)

Microsoft Speech API 5.4

ISpGrammarBuilder::AddResource

ISpGrammarBuilder::AddResource adds a resource (name and string value) to the grammar rule specified in hRuleState. The resource can be queried by a rule interpreter using ISpCFGInterpreterSite::GetResourceValue().

  
    HRESULT AddResource(
   SPSTATEHANDLE      hRuleState,
   LPCWSTR           *pszResourceName,
   LPCWSTR           *pszResourceValue
);

Parameters

  • hRuleState
    [in] Handle of a state in the rule to which the resource is to be added.
  • pszResourceName
    [in] Address of a null-terminated string specifying the resource name.
  • pszResourceValue
    [in] Address of a null-terminated string specifying the resource value.

Return values

Value
S_OK
E_INVALIDARG
SPERR_DUPLICATE_RESOURCE_NAME
E_OUTOFMEMORY
FAILED(hr)

Example

The following code snippet illustrates the use of AddResource.

  
// Declare local identifiers:
HRESULT                       hr = S_OK;
CComPtr<ISpGrammarBuilder>    cpGrammarBuilder;
SPSTATEHANDLE                 hInit;
SPSTATEHANDLE                 hState;

hr = cpGrammarBuilder->GetRule(L"rule1", 1, 0, TRUE, &hInit;);

if (SUCCEEDED (hr))
{
   hr = cpGrammarBuilder->CreateNewState(hInit, &hState;);
}

if (SUCCEEDED (hr))
{
   // Call AddResource using the hInitState.
   hr = cpGrammarBuilder->AddResource(hInit, L"ResName1", L"ResValue1");
}

if (SUCCEEDED(hr))
{
   // Call AddResource using hState != hInit.
   hr = cpGrammarBuilder->AddResource(hState, L"ResName2", L"ResValue2");
}

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