You are reading help file online using chmlib.com
|
ISpRecoGrammar::SaveCmd allows applications using dynamic grammars to save the current grammar state to a stream.
HRESULT SaveCmd(
IStream *pSaveStream,
WCHAR **ppCoMemErrorText
);
| Value | Description |
|---|---|
| S_OK | Function completed successfully. |
| E_INVALIDARG | pSaveStream is invalid or bad. |
| SPERR_NOT_DYNAMIC_GRAMMAR | Command was loaded but compiler is not available. |
| SPERR_UNINITIALIZED | Compiler is not available. |
| E_POINTER | ppCoMemErrorText is invalid or bad. |
| FAILED (hr) | Appropriate error message. |
Applications can use ::SaveCmd to serialize grammar changes that were made at run time for use at a later time. See also ISpRecoGrammar::LoadCmdFromMemory.
The following code snippet illustrates how to use ISpRecoGrammar::SaveCmd 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
You are reading help file online using chmlib.com
|