Microsoft Speech SDK
SAPI 5.1
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 | Description |
---|---|
S_OK | Function completed successfully. |
E_INVALIDARG | Either pBinaryData or one of its members is invalid or bad. It may also indicate pBinaryData->FormatId is not SPGDF_ContextFree. Alternatively, Options is neither SPLO_STATIC nor SPLO_DYNAMIC. |
FAILED(hr) | Appropriate error message. |
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.
HRESULT hr = S_OK; // ... build and use a SpRecoGrammar object // create a Win32 global stream hr = ::CreateStreamOnHGlobal(NULL, true, &cpHStream); // Check hr // save the current grammar to the global stream hr = cpRecoGrammar->SaveCmd(cpHStream, NULL); // Check hr // create the second grammar to deserialize into hr = cpRecoContext->CreateGrammar(0, &cpReloadedGrammar); // Check hr // get a handle to the stream with the serialized grammar ::GetHGlobalFromStream(cpHStream, &hGrammar); // Check hr // deserialize the CFG into a new grammar object hr = cpReloadedGrammar->LoadCmdFromMemory((SPBINARYGRAMMAR *)::GlobalLock(hGrammar), SPLO_DYNAMIC); // Check hr