Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (C) 1993-1999 Microsoft Corporation
Module Name:
iextconn.cpp
Abstract:
Implementation of IExternalConnection as required for an in-process object that supports linking to embedding. Specifically, this will call IOleObject::Close when there are no more strong locks on the object.
--*/
#include "polyline.h"
#include "unkhlpr.h"
// CImpIExternalConnection interface implementation
CImpIExternalConnection::CImpIExternalConnection( PCPolyline pObj, LPUNKNOWN pUnkOuter ) { m_cRef=0; m_pObj=pObj; m_pUnkOuter=pUnkOuter; m_cLockStrong=0L; }
IMPLEMENT_CONTAINED_DESTRUCTOR(CImpIExternalConnection) IMPLEMENT_CONTAINED_IUNKNOWN(CImpIExternalConnection)
/*
* CImpIExternalConnection::AddConnection * * Purpose: * Informs the object that a strong connection has been made to it. * * Parameters: * dwConn DWORD identifying the type of connection, taken * from the EXTCONN enumeration. * dwReserved DWORD reserved. This is used inside OLE and * should not be validated. * * Return Value: * DWORD The number of connection counts on the * object, used for debugging purposes only. */
STDMETHODIMP_(DWORD) CImpIExternalConnection::AddConnection( DWORD dwConn, DWORD /* dwReserved */ ) { if (EXTCONN_STRONG & dwConn) return ++m_cLockStrong;
return 0; }
/*
* CImpIExternalConnection::ReleaseConnection * * Purpose: * Informs an object that a connection has been taken away from * it in which case the object may need to shut down. * * Parameters: * dwConn DWORD identifying the type of connection, * taken from the EXTCONN enumeration. * dwReserved DWORD reserved. This is used inside OLE and * should not be validated. * dwRerved DWORD reserved * fLastReleaseCloses BOOL indicating if the last call to this * function should close the object. * * Return Value: * DWORD The number of remaining connection counts on * the object, used for debugging purposes only. */
STDMETHODIMP_(DWORD) CImpIExternalConnection::ReleaseConnection( DWORD dwConn, DWORD /* dwReserved */, BOOL fLastReleaseCloses ) { if (EXTCONN_STRONG==dwConn) { if (0==--m_cLockStrong && fLastReleaseCloses) m_pObj->m_pImpIOleObject->Close(OLECLOSE_SAVEIFDIRTY);
return m_cLockStrong; }
return 0L; }
|