//+------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1997. // // File: ObjMgr.h // // Contents: Keeps track of our applications dialog objects // and lifetime // // Classes: // // Notes: // // History: 05-Nov-97 rogerg Created. // //-------------------------------------------------------------------------- #ifndef _OBJMGR_ #define _OBJMGR_ class CBaseDlg; class CChoiceDlg; class CProgressDlg; typedef enum _tagDLGTYPE // type of dialog. { DLGTYPE_CHOICE = 0x1, DLGTYPE_PROGRESS = 0x2, } DLGTYPE; enum EAutoDialState { eQuiescedOn, // Quiesced state and auto dial is on eQuiescedOff, // Quiesced state and auto dial is off eAutoDialOn, // During a sync session and auto dial is on eAutoDialOff // During a sync session and auto dial is off }; typedef struct _tagDLGLISTITEM { _tagDLGLISTITEM *pDlgNextListItem; // pointer to the next dialog in the list. DLGTYPE dlgType; // type of dialog this is. ULONG cRefs; // number of references on this object ULONG cLocks; // number of locks on this object CLSID clsid; // clsid of this dialog, only applicable to choice. CBaseDlg *pDlg; DWORD dwThreadID; // Thread the dialog is on. HANDLE hThread; // Handle to the thread the dialog belongs too BOOL fHasReleaseDlgCmdId; // boolean to indicate if there is a callback WORD wCommandID; // CommandID to pass to the callback. } DLGLISTITEM; typedef struct _tagOBJECTMGRDATA { DLGLISTITEM *DlgList; // Ptr to Dialog list HANDLE hClassRegisteredEvent; // Event created by process that has registered the classFactory. DWORD dwRegClassFactCookie; // registered OLE Class Factory Cooke BOOL fRegClassFactCookieValid; // registered OLE Class Factory Cooke DWORD LockCountInternal; // Internal lock count on Application DWORD LockCountExternal; // External lock count on Application BOOL fCloseAll; // Set if told to CloseAll, used in ReleaseOneStopLifetime DWORD dwSettingsLockCount; // number of lock counts on the settings dialog,. DWORD dwHandlerPropertiesLockCount; // number of lock counts on any handler properties dialogs open BOOL fDead; // set in release call to avoid multiple releases. DWORD dwMainThreadID; // Id of Main Thrad HWND hWndMainThreadMsg; //hwnd of Main Thread Message Hwnd. BOOL fIdleHandlerRunning; // SyncMgr is currently processing Idle. EAutoDialState eAutoDialState; // State machine for supporting autodial BOOL fRasAutoDial; // Is Ras auto dial on ? BOOL fWininetAutoDial; // Is Wininet auto dial on ? BOOL fFirstSyncItem; // Is the first PrepareForSyncItem being processed ULONG cNestedStartCalls; // Count of nested start calls } OBJECTMGRDATA; typedef struct _tagDlgThreadArgs { HANDLE hEvent; // used to know when the message loop has been created. HRESULT hr; // inidicates if creation was successfull DLGTYPE dlgType; // requested dialog type to create. CLSID clsid; // clsid identifies the dialog. int nCmdShow; // how to display the dialog CBaseDlg *pDlg; // pointer to the created dialog. } DlgThreadArgs; DWORD WINAPI DialogThread( LPVOID lpArg ); // onetime initialization routiens STDAPI InitObjectManager(CMsgServiceHwnd *pMsgService); // determines main threads response to WM_QUERYENDSESSION STDAPI ObjMgr_HandleQueryEndSession(HWND *hwnd,UINT *uMessageId,BOOL *fLetUserDecide); STDAPI_(ULONG) ObjMgr_AddRefHandlerPropertiesLockCount(DWORD dwNumRefs); STDAPI_(ULONG) ObjMgr_ReleaseHandlerPropertiesLockCount(DWORD dwNumRefs); STDAPI ObjMgr_CloseAll(); // idle managmenent STDAPI RequestIdleLock(); STDAPI ReleaseIdleLock(); // routines for handling dialog lifetime STDAPI FindChoiceDialog(REFCLSID rclsid,BOOL fCreate,int nCmdShow,CChoiceDlg **pChoiceDlg); STDAPI_(ULONG) AddRefChoiceDialog(REFCLSID rclsid,CChoiceDlg *pChoiceDlg); STDAPI_(ULONG) ReleaseChoiceDialog(REFCLSID rclsid,CChoiceDlg *pChoiceDlg); STDAPI SetChoiceReleaseDlgCmdId(REFCLSID rclsid,CChoiceDlg *pChoiceDlg,WORD wCommandId); STDAPI FindProgressDialog(REFCLSID rclsid,BOOL fCreate,int nCmdShow,CProgressDlg **pProgressDlg); STDAPI_(ULONG) AddRefProgressDialog(REFCLSID rclsid,CProgressDlg *pProgressDlg); STDAPI_(ULONG) ReleaseProgressDialog(REFCLSID rclsid,CProgressDlg *pProgressDlg,BOOL fForce); STDAPI SetProgressReleaseDlgCmdId(REFCLSID rclsid,CProgressDlg *pProgressDlg,WORD wCommandId); STDAPI LockProgressDialog(REFCLSID rclsid,CProgressDlg *pProgressDlg,BOOL fLock); // helper routines called by dialog lifetime. STDAPI FindDialog(DLGTYPE dlgType,REFCLSID rclsid,BOOL fCreate,int nCmdShow,CBaseDlg **pDlg); STDAPI_(ULONG) AddRefDialog(DLGTYPE dlgType,REFCLSID rclsid,CBaseDlg *pDlg); STDAPI_(ULONG) ReleaseDialog(DLGTYPE dlgType,REFCLSID rclsid,CBaseDlg *pDlg,BOOL fForce); STDAPI SetReleaseDlgCmdId(DLGTYPE dlgType,REFCLSID rclsid,CBaseDlg *pDlg,WORD wCommandId); // Routines called for dial support STDAPI BeginSyncSession(); STDAPI EndSyncSession(); STDAPI ApplySyncItemDialState( BOOL fAutoDialDisable ); STDAPI GetAutoDialState(); STDAPI LokDisableAutoDial(); STDAPI LokEnableAutoDial(); typedef struct _tagDlgSettingsArgs { HANDLE hEvent; // used to know when thread has been initialized. HWND hwndParent; // hwnd to use the parent as. DWORD dwParentThreadId; } DlgSettingsArgs; DWORD WINAPI SettingsThread( LPVOID lpArg ); STDAPI ShowOptionsDialog(HWND hwndParent); // helper routine for OLE classes. STDAPI RegisterOneStopClassFactory(BOOL fForce); // routines for managing lifetime of application STDAPI_(ULONG) AddRefOneStopLifetime(BOOL fExternal); STDAPI_(ULONG) ReleaseOneStopLifetime(BOOL fExternal); // routines for routing messages BOOL IsOneStopDlgMessage(MSG *msg); // declarations for CSingletonNetapi class. //+------------------------------------------------------------------------- // // Class: CSingletonNetApi // // Purpose: Singleton net api object // // History: 31-Jul-98 SitaramR Created // //-------------------------------------------------------------------------- class CSingletonNetApi : CLockHandler { public: CSingletonNetApi() : m_pNetApi(0) { } ~CSingletonNetApi(); LPNETAPI GetNetApiObj(); void DeleteNetApiObj(); private: LPNETAPI m_pNetApi; // Actual net api object }; extern CSingletonNetApi gSingleNetApiObj; // Global singleton NetApi object #endif // _OBJMGR_