IClassFactory::LockServer
Called by the
client of a class object to keep a server open in memory, allowing instances to
be created more quickly.
HRESULT LockServer(
BOOL fLock |
//Increments or decrements the lock count |
); |
|
Parameter
fLock
[in] If TRUE,
increments the lock count; if FALSE, decrements the lock count.
Return Values
This method
supports the standard return values E_FAIL, E_OUTOFMEMORY, and E_UNEXPECTED, as
well as the following:
S_OK
The specified
object was either locked ( fLock =
TRUE) or unlocked from memory ( fLock =
FALSE).
Remarks
IClassFactory::LockServer controls whether an object s server is kept in
memory. Keeping the application alive in memory allows instances to be created
more quickly.
Notes to Callers
Most clients
do not need to call this function. It is provided only for those clients that
require special performance in creating multiple instances of their objects.
Notes to Implementers
If the lock
count is zero, there are no more objects in use, and the application is not
under user control, the server can be closed. One way to implement IClassFactory::LockServer
is to call CoLockObjectExternal
The process
that locks the object application is responsible for unlocking it. Once the
class object is released, there is no mechanism that guarantees the caller
connection to the same class later (as in the case where a class object is
registered as single-use). It is important to count all calls, not just the
last one, to IClassFactory::LockServer, because calls must be balanced
before attempting to release the pointer to the IClassFactory interface on
the class object or an error results. For every call to LockServer with fLock
set to TRUE, there must be a call to LockServer with fLock set to
FALSE. When the lock count and the class object reference count are both zero,
the class object can be freed.
See Also