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.
This method allows applications using dynamic grammars to save the current grammar state to a stream.
Applications can use this method to serialize grammar changes that were made at run time for use at a later time. See also ISpRecoGrammar::LoadCmdFromMemory.
HRESULT SaveCmd(IStream* pSaveStream,WCHAR** ppCoMemErrorText);
Parameters
- pSaveStream
[in] Pointer to an object implementing IStream that represents the stream to which to save the compiler binary grammar. - ppCoMemErrorText
[out, optional] Address of a pointer to a null-terminated string specifying error messages that occurred during the save operation.
Return Values
The following table shows the possible return values.
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. |
Example
The following code snippet illustrates how to use this method to serialize the CFG from one grammar object, and deserialize it into another grammar 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
Requirements
OS Versions: Windows CE .NET 4.1 and later.
Header: Sapi.h, Sapi.idl.
Link Library: Sapilib.lib.
See Also
ISpRecoGrammar | SAPI Interfaces
Send Feedback on this topic to the authors