IExternalConnection::AddConnection
Increments an
object s count of its strong external connections (links).
HRESULT AddConnection(
DWORD exconn, |
//Type of external connection |
DWORD dwreserved |
//Used by OLE to pass connection information |
); |
|
Parameters
exconn
[in] Type of
external connection to the object. The only type of external connection
currently supported by this interface is strong, which means that the object
must remain alive as long as this external connection exists. Strong external
connections are represented by the value EXTCONN_STRONG = 0x0001, which is
defined in the enumeration EXTCONN.
dwreserved
[in] Passes
information about the connection. This parameter is reserved for use by OLE.
Its value can be zero, but not necessarily. Therefore, implementations of AddConnection
should not contain blocks of code whose execution depends on whether a zero value
is returned.
Return Value
DWORD value
The number of
reference counts on the object; used for debugging purposes only.
Remarks
An object
created by a EXE object server relies on its stub manager to call IExternalConnection::AddConnection
whenever a link client activates and therefore creates an external lock on the
object. When the link client breaks the connection, the stub manager calls IExternalConnection::ReleaseConnection
Since DLL
object applications exist in the same process space as their objects, they do
not use RPC (remote procedure calls) and therefore do not have stub managers to
keep track of external connections. Therefore, DLL servers that support
external links to their objects must implement IExternalConnection so
link clients can directly call the interface to inform them when connections
are added or released.
The following
is a typical implementation for the AddConnection method:
DWORD
XX::AddConnection(DWORD extconn, DWORD dwReserved)
{
return extconn&EXTCONN_STRONG ?
++m_cStrong : 0;
}
See Also