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::LoadCmdFromMemory
ISpRecoGrammar::LoadCmdFromMemory loads a compiled CFG binary from memory.
HRESULT LoadCmdFromMemory(
const SPBINARYGRAMMAR *pBinaryData,
SPLOADOPTIONS Options
);
Parameters
- pBinaryData
[in] The serialized header buffer of type SPBINARYGRAMMAR. - Options
[in] Flag of type SPLOADOPTIONS indicating whether the file should be loaded statically or dynamically.
Remarks
When an application calls ::LoadCmdFromMemory, the currently loaded CFG or proprietary grammar will be unloaded.
Return values
Value |
S_OK |
E_INVALIDARG |
FAILED(hr) |
Example
The following code snippet illustrates how to use ISpRecoGrammar::LoadCmdFromMemory to serialize the CFG from one SpRecoGrammar object and deserialize it into another SpRecoGrammar object.
// Declare local identifiers:
HRESULT hr = S_OK;
CComPtr<ISpRecoGrammar> cpRecoGrammar;
CComPtr<ISpRecoGrammar> cpReloadedGrammar;
CComPtr<ISpRecoContext> cpRecoContext;
CComPtr<IStream> cpHStream;
HGLOBAL hGrammar;
// Build and use a SpRecoGrammar object...
// Create a Win32 global stream.
hr = ::CreateStreamOnHGlobal(NULL, true, &cpHStream;);
if (SUCCEEDED(hr))
{
// Save the current grammar to the global stream.
hr = cpRecoGrammar->SaveCmd(cpHStream, NULL);
}
if (SUCCEEDED(hr))
{
// Create the second grammar to deserialize into.
hr = cpRecoContext->CreateGrammar(0, &cpReloadedGrammar;);
}
if (SUCCEEDED(hr))
{
// Get a handle to the stream with the serialized grammar.
::GetHGlobalFromStream(cpHStream, &hGrammar;);
}
// Deserialize the CFG into a new grammar object.
hr = cpReloadedGrammar->LoadCmdFromMemory((SPBINARYGRAMMAR *)::GlobalLock(hGrammar), SPLO_DYNAMIC);
if (SUCCEEDED(hr))
{
// Do stuff here.
}