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) 2000 Microsoft Corporation * * Module Name: * evthandler.h * * Abstract: * CEventHandler class definition * * Revision History: * Brijesh Krishnaswami (brijeshk) 03/17/2000 * created * *****************************************************************************/
#ifndef _EVTHANDLER_H_
#define _EVTHANDLER_H_
#include "srrestoreptapi.h"
#include "counter.h"
typedef DWORD (WINAPI* WORKITEMFUNC)(PVOID);
// shell notifications
DWORD WINAPI OnDiskFree_200(PVOID pszDrive); DWORD WINAPI OnDiskFree_80(PVOID pszDrive); DWORD WINAPI OnDiskFree_50(PVOID pszDrive);
DWORD WINAPI PostFilterIo(PVOID pNum); extern "C" void CALLBACK TimerCallback(PVOID, BOOLEAN); extern "C" void CALLBACK IoCompletionCallback(DWORD dwErrorCode, DWORD dwBytesTrns, LPOVERLAPPED pOverlapped);
extern "C" void CALLBACK IdleRequestCallback(PVOID pContext, BOOLEAN fTimerFired); extern "C" void CALLBACK IdleStartCallback(PVOID pContext, BOOLEAN fTimerFired); extern "C" void CALLBACK IdleStopCallback(PVOID pContext, BOOLEAN fTimerFired);
#define MAX_IOCTLS 5
typedef struct _SR_OVERLAPPED { OVERLAPPED m_overlapped; HANDLE m_hDriver; DWORD m_dwRecordLength; PSR_NOTIFICATION_RECORD m_pRecord;
} SR_OVERLAPPED, *LPSR_OVERLAPPED;
class CEventHandler {
public: CEventHandler(); ~CEventHandler();
// rpc functions
DWORD DisableSRS(LPWSTR szDrive); DWORD EnableSRS(LPWSTR szDrive); DWORD DisableFIFOS(DWORD); DWORD EnableFIFOS();
DWORD SRUpdateMonitoredListS(LPWSTR); DWORD SRUpdateDSSizeS(LPWSTR pszDrive, UINT64 ullSizeLimit); DWORD SRSwitchLogS();
BOOL SRSetRestorePointS(PRESTOREPOINTINFOW, PSTATEMGRSTATUS); DWORD SRRemoveRestorePointS(DWORD); DWORD SRPrintStateS();
// actions on the datastore
DWORD OnReset(LPWSTR pszDrive); // filter initiated or DisableSRS/EnableSRS initiated
DWORD OnFreeze(LPWSTR pszDrive); // filter initiated or OnLowDisk initiated
DWORD OnThaw(LPWSTR pszDrive); // OnTimer initiated
DWORD OnCompress(LPWSTR pszDrive); // OnIdle initiated
DWORD OnFifo(LPWSTR pszDrive, DWORD dwTargetRp, int nPercent, BOOL fIncludeCurrentRp, BOOL fFifoAtleastOneRp); // filter initiated or timer initiated
DWORD OnBoot(); // initialize all activity
DWORD OnFirstRun(); DWORD OnTimer(LPVOID, BOOL); // timer callback
DWORD OnIdle(); void OnStop(); // stop all activity
// filter notifications
void OnAny_Notification(DWORD dwErrorCode, DWORD dwBytesTrns, LPOVERLAPPED pOverlapped); void OnFirstWrite_Notification(LPWSTR pszDrive); void OnVolumeError_Notification(LPWSTR pszDrive, ULONG ulError); void OnSize_Notification(LPWSTR pszDrive, ULONG ulSize);
DWORD WaitForStop( ); void SignalStop( ); DWORD XmlToBlob(LPWSTR); DWORD QueueWorkItem(WORKITEMFUNC pFunc, PVOID pv); void RefreshCurrentRp(BOOL fScanAllDrives); CCounter* GetCounter() { return &m_Counter; }
CLock* GetLock() { return &m_DSLock; }
CRestorePoint m_CurRp; HANDLE m_hIdleStartHandle; HANDLE m_hIdleRequestHandle; HANDLE m_hIdleStopHandle; private: CLock m_DSLock; HANDLE m_hTimerQueue; HANDLE m_hTimer; HINSTANCE m_hIdle; CCounter m_Counter; BOOL m_fNoRpOnSystem; FILETIME m_ftFreeze; BOOL m_fIdleSrvStarted; int m_nNestedCallCount; HMODULE m_hCOMDll; BOOL m_fCreateRpASAP;
DWORD InitIdleDetection(); BOOL EndIdleDetection(); DWORD InitTimer(); BOOL EndTimer(); BOOL IsMachineIdle(); BOOL IsTimeForAutoRp(); DWORD WriteRestorePointLog(LPWSTR pszFullPath, PRESTOREPOINTINFOW pRPInfo); };
extern CEventHandler *g_pEventHandler;
#endif
|