Source code of Windows XP (NT5)
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.
|
|
//+---------------------------------------------------------------------
//
// File: rotutils.cxx
//
// Contents: Running Object Table helper functions
//
//----------------------------------------------------------------------
#include "headers.hxx"
#pragma hdrstop
//+---------------------------------------------------------------
//
// Function: RegisterAsRunning
//
// Synopsis: Registers the object in the Running Object Table
//
// Arguments: [lpUnk] -- the object being registered
// [lpmkFull] -- the full moniker to the object
// [lpdwRegister] -- where the registration value will be
// returned.
//
// Notes: c.f. RevokeAsRunning
//
//----------------------------------------------------------------
void RegisterAsRunning(LPUNKNOWN lpUnk, LPMONIKER lpmkFull, DWORD FAR* lpdwRegister) { LPRUNNINGOBJECTTABLE pROT; HRESULT r;
if (OK(r = GetRunningObjectTable(0,(LPRUNNINGOBJECTTABLE FAR*)&pROT))) { // if already registered, revoke
if (*lpdwRegister != NULL) { pROT->Revoke(*lpdwRegister); *lpdwRegister = NULL; }
// register as running if a valid moniker is passed
if (lpmkFull) { pROT->Register(NULL, lpUnk, lpmkFull, lpdwRegister); }
pROT->Release(); } }
//+---------------------------------------------------------------
//
// Function: RevokeAsRunning
//
// Synopsis: Revokes an objects registration in the Running Object Table
//
// Arguments: [lpdwRegister] -- points to where the registration value is
// for the object. Will be set to NULL.
//
// Notes: c.f. RegisterAsRunning
//
//----------------------------------------------------------------
void RevokeAsRunning(DWORD FAR* lpdwRegister) { LPRUNNINGOBJECTTABLE pROT; HRESULT r;
// if still registered, then revoke
if (*lpdwRegister != NULL) { if (OK(r = GetRunningObjectTable(0,(LPRUNNINGOBJECTTABLE FAR*)&pROT))) { pROT->Revoke(*lpdwRegister); *lpdwRegister = NULL; pROT->Release(); } } }
|