CHMlib Logo Leading Translation Management System for Translation Agencies, Top Translation Management Software for Freelance Translators, Time Tracking Software, Word Count, Character Count and Line Count Software, Computer Assisted Translation Tool for Easy Word Count, Clipboard Character Count Software, User-Friendly Translation Memory Software, Terminology Management Software, Terminology Management Server, Microsoft Glossary Software, Dictionary of Acronyms, Social Network for Translators and Translation Agencies, Acronyms and Abbreviations Search Engine, Russian Translation Lab, Ukrainian Translation Lab.
You are reading help file online using chmlib.com
CrisisHelper - First Aid in Tough Times of World Economic Crisis


The Microsoft.com Speech website Microsoft Speech SDK

SAPI 5.1

ISpRecoResult::Serialize

ISpRecoResult::Serialize creates a serialized copy of the recognition result object. The serialized copy can be saved and later restored using ISpRecoContext::DeserializeResult.

HRESULT Serialize(
   SPSERIALIZEDRESULT   **ppCoMemSerializedResult
);

Parameters

ppCoMemSerializedResult
[out] Address of a pointer to the SPSERIALIZEDRESULT structure that receives the serialized result information. Call CoTaskMemFree() to free the memory associated with the serialized result object.

Return values

Value Description
S_OK Function completed successfully.
E_POINTER ppCoMemSerializedResult is an invalid pointer.
E_OUTOFMEMORY Exceeded available memory.
FAILED(hr) Appropriate error message.

Example

The following code snippet illustrates the use ISpRecoResult::Serialize to serialize a result and deserialize it back into an ISpRecoContext object.

    HRESULT hr = S_OK;

    // ... obtain a recognition result object from the recognizer...

    SPSERIALIZEDRESULT* pSerializedResult = NULL;
    ULONG cbWritten = 0;
    ULONG ulSerializedSize = 0;
    LARGE_INTEGER liseek;
    LARGE_INTEGER li;
    CComPtr<IStream> cpStreamWithResult;

    hr = CreateStreamOnHGlobal(NULL, true, &cpStreamWithResult);
    // Check hr

    // Serialize result to memory
    hr = cpRecoResult->Serialize(&pSerializedResult);
    // Check hr

    //serialized to a stream pointer
    hr = cpStreamWithResult->Write(pSerializedResult, pSerializedResult->ulSerializedSize, &cbWritten);
    // Check hr

    // free the serialized result
    if (pSerializedResult) ::CoTaskMemFree(pSerializedResult);

    // commit the stream changes
    hr = cpStreamWithResult->Commit(STGC_DEFAULT);
    // Check hr

    // ... persist stream to disk, network share, etc...
    // ... shutdown application .... 

    // ... restart application and get the persisted stream

    // reset the stream seek pointer to the start before deserialization
    li.QuadPart = 0;
    hr = cpStreamWithResult->Seek(li, STREAM_SEEK_SET, NULL);
    // Check hr

    // find the size of the stream
    hr = cpStreamWithResult->Read(&ulSerializedSize, sizeof(ULONG), NULL);
    // Check hr

    // reset the seek pointer
    liseek.QuadPart = 0 - sizeof(ULONG);
    hr = cpStreamWithResult->Seek(liseek, STREAM_SEEK_CUR, NULL);
    // Check hr

    // allocate the memory for the result
    pSerializedResult = (SPSERIALIZEDRESULT*)::CoTaskMemAlloc(ulSerializedSize);
    // Check pSerializedResult in case out "out-of-memory"

    // copy the stream into a serialized result object
    hr = cpStreamWithResult->Read(pSerializedResult, ulSerializedSize, NULL);
    // Check hr

    // Deserialize result from memory
    hr = cpRecoContext->DeserializeResult(pSerializedResult, &cpRecoResultNew);
    // Check hr

    // free the pSerializedResult memory
    if (pSerializedResult) {
        CoTaskMemFree(pSerializedResult);
    }

    // As long as the same engine was used to generate
    // the original result object, as is now being used,
    // applications can now get alternates for the cpRecoResultNew's phrase
    


You are reading help file online using chmlib.com

If you want your help file to be removed or added please send e-mail to chmlibcom@gmail.com
Partner sites: Logo Design, Simple Anti-Crisis Accounting Software, Voice Search for Web