Listing 7: The Prolog() method.

HRESULT CUltraMaxService::Prolog()
{
    HRESULT hr;
    CComVariant var;
    // Retrieve existing or create new session
    if ( SUCCEEDED(hr = EnsureSession()) &&
        // Instantiate UltraMax COM component
        SUCCEEDED(hr = m_pUltraMax.CreateInstance("UltraMax.UltraMax")))
    {
        CComVariant var;
        // Retrieve object state from session storage
        if ( SUCCEEDED(m_spSession->GetVariable("state", &var)) )
        {
            var.ChangeType(VT_BSTR);
            m_pUltraMax->InitFromString(var.bstrVal);
        }
        return S_OK;
    }
    else
        return hr;
}