void VirtualizationInstance::StopVirtualizing()

in ProjectedFSLib.Managed.API/VirtualizationInstance.cpp [706:740]


void VirtualizationInstance::StopVirtualizing()
{
    HRESULT hr = S_OK;
    if (m_apiHelper->UseBetaApi)
    {
        hr = m_apiHelper->_PrjStopVirtualizationInstance(m_virtualizationContext);
    }
    else
    {
        try
        {
            // The underlying native API throws a structured exception if the instance is in an invalid
            // state.
            m_apiHelper->_PrjStopVirtualizing(m_virtualizationContext);
        }
        catch (...)
        {
            // Catch the structured exception and remember that we had a failure.
            hr = E_FAIL;
        }
    }

    if (SUCCEEDED(hr))
    {
        m_virtualizationContext = nullptr;

        delete m_virtualizationContextGc;
        m_virtualizationContextGc = nullptr;
    }
    else
    {
        // Since this is a resource-releasing routine we don't return an error code.  Instead we throw.
        throw gcnew InvalidOperationException("Virtualization instance in invalid state.");
    }
}