亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? applicationscope.cpp

?? 這是一本學習 window編程的很好的參考教材
?? CPP
字號:
//---------------------------------------------------------------------------
//
// ApplicationScope.cpp
//
// SUBSYSTEM:   
//              Monitoring process creation and termination  
//				
// MODULE:      
//              Main interface of the user-mode app
//             
// DESCRIPTION: 
//              A class that wraps up different implementations and provide 
//              single interface
// 				
// AUTHOR:		Ivo Ivanov
//
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
//
// Includes
//
//---------------------------------------------------------------------------
#include "ApplicationScope.h"
#include "NtDriverController.h"
#include "ThreadMonitor.h"
#include "WinUtils.h"
#include "ThreadMonitor.h"
#include "QueueContainer.h"

//---------------------------------------------------------------------------
//
// class CApplicationScope 
//
//---------------------------------------------------------------------------

//
// Structure for holding info about activating/deactivating the driver
//
typedef struct _ActivateInfo
{
    BOOLEAN  bActivate;
} ACTIVATE_INFO, *PACTIVATE_INFO;


//---------------------------------------------------------------------------
//
// Static memeber declarations
//
//---------------------------------------------------------------------------
CApplicationScope* CApplicationScope::sm_pInstance = NULL;

//---------------------------------------------------------------------------
//
// Constructor
//
//---------------------------------------------------------------------------
CApplicationScope::CApplicationScope(
	CCallbackHandler* pHandler       // User-supplied object for handling notifications
	):
	m_pDriverCtl(NULL),
	m_bIsActive(FALSE),
	m_pProcessMonitor(NULL),
	m_pRequestManager(NULL)
{
	m_pRequestManager = new CQueueContainer(pHandler);	
	//
	// An instance of the class responsible for loading and unloading
	// the kernel driver
	//
	m_pDriverCtl = new CNtDriverController();
}

//---------------------------------------------------------------------------
//
// Destructor 
//
//---------------------------------------------------------------------------
CApplicationScope::~CApplicationScope()
{
	StopMonitoring();
	if (m_bIsActive)
		m_pDriverCtl->StopAndRemove();
	delete m_pDriverCtl;
	delete m_pRequestManager;
}

//---------------------------------------------------------------------------
//
// Copy constructor
//
//---------------------------------------------------------------------------
CApplicationScope::CApplicationScope(const CApplicationScope& rhs)
{

}

//---------------------------------------------------------------------------
//
// Assignment operator
//
//---------------------------------------------------------------------------
CApplicationScope& CApplicationScope::operator=(const CApplicationScope& rhs)
{
	if (this == &rhs) 
		return *this;

	return *this; // return reference to left-hand object
}



//---------------------------------------------------------------------------
// GetInstance
//
// Implements the "double-checking" locking pattern combined with 
// Scott Meyers single instance
// For more details see - 
// 1. "Modern C++ Design" by Andrei Alexandrescu - 6.9 Living in a 
//     Multithreaded World
// 2. "More Effective C++" by Scott Meyers - Item 26
//---------------------------------------------------------------------------
CApplicationScope& CApplicationScope::GetInstance(
	CCallbackHandler* pHandler       // User-supplied object for handling notifications
	) 
{
	VerifyIsWindowsNtRequired();
	if (!sm_pInstance)
	{
		CLockMgr<CCSWrapper> guard(g_AppSingeltonLock, TRUE);
		if (!sm_pInstance)
		{
			assert( NULL != pHandler );
			static CApplicationScope instance(pHandler);
			sm_pInstance = &instance;
		}
	} // if

	return *sm_pInstance;
}

//
// Activate/deactivate the monitoring process
//
BOOL CApplicationScope::SetActive(BOOL bActive)
{
	BOOL bResult     = FALSE;
	//
	// Verify the system hasn't been activate before
	//
	if (m_bIsActive != bActive)
	{
		BOOL           bReturnCode = FALSE;
		ACTIVATE_INFO  activateInfo;
		HANDLE         hDriverFile;
		DWORD          dwBytesReturned = 0;     // byte count

		if (bActive)
		{
			if (!m_pRequestManager->StartReceivingNotifications())
				return FALSE;
		}
		else
			m_pRequestManager->StopReceivingNotifications();
		//
		// Try opening the device driver
		//
		hDriverFile = ::CreateFile(
			TEXT("\\\\.\\ProcObsrv"),
			GENERIC_READ | GENERIC_WRITE, 
			FILE_SHARE_READ | FILE_SHARE_WRITE,
			0,                     // Default security
			OPEN_EXISTING,
			0,                     // Perform synchronous I/O
			0);                    // No template
 		if (INVALID_HANDLE_VALUE == hDriverFile)
			return FALSE;
		//
		// and if the driver can be opened activate the monitoring
		// thread
		//
		if (NULL == m_pProcessMonitor)
		{
			m_pProcessMonitor = new CProcessThreadMonitor(
				TEXT("{30F8934F-F57F-4ced-93A6-AF68CD0F6E79}"), 
				m_pDriverCtl,
				m_pRequestManager
				);
			m_pProcessMonitor->SetActive( TRUE );
		}
		else
		{
			//
			// Stop and release the monitoring thread
			//
			delete m_pProcessMonitor;
			m_pProcessMonitor = NULL;
		}
		//
		// Inform the driver only when it has to be activated or
		// deactivated 
		//
		if (bActive)
		{
			//
			// Set input parameters for the driver routine
			//
			activateInfo.bActivate = bActive;
			//
			// Activate/Deactivate the process
			//
			bReturnCode = ::DeviceIoControl(
				hDriverFile,
				IOCTL_PROCOBSRV_ACTIVATE_MONITORING,
				&activateInfo, 
				sizeof(activateInfo),
				NULL, 
				0,
				&dwBytesReturned,
				NULL
				);
		} // if
		m_bIsActive = bActive;
		bResult   = TRUE;
		if (INVALID_HANDLE_VALUE != hDriverFile)
			::CloseHandle(hDriverFile);
	} // if
	return bResult;
}

//
// Initiates process of monitoring process creation/termination
//
BOOL CApplicationScope::StartMonitoring(
	PVOID pvParam        // Pointer to a parameter value passed to the object 
	)
{
	CLockMgr<CCSWrapper> guard(m_Lock, TRUE);
	BOOL bResult = FALSE;
	//
	// Verify the system hasn't been activate before
	//
	if (!m_bIsActive)
	{
		m_pRequestManager->SetExternalParam( pvParam );
		//
		// Activate the monitoring process
		//
		bResult = SetActive( TRUE ); 
	} // if
	
	return bResult;
}

//
// Ends up the whole process of monitoring
//
void CApplicationScope::StopMonitoring()
{
	CLockMgr<CCSWrapper> guard(m_Lock, TRUE);
	//
	// Deactivate the monitoring process
	//
	SetActive( FALSE );
	return;
}

//----------------------------End of the file -------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕av一区二区三区高| 久久99精品久久久久久久久久久久 | 亚洲精品菠萝久久久久久久| 亚洲一区二区三区在线| 麻豆视频观看网址久久| 色综合色狠狠综合色| 日韩三级中文字幕| 中文成人综合网| 蜜桃传媒麻豆第一区在线观看| 91精品国产91综合久久蜜臀| 国产精品大尺度| 韩国中文字幕2020精品| 欧美网站大全在线观看| 国产日韩欧美高清在线| 蜜桃视频一区二区三区在线观看| 欧美一级欧美一级在线播放| 极品美女销魂一区二区三区| 亚洲国产精品激情在线观看| 99re热视频精品| 久久久综合视频| 日本午夜精品视频在线观看 | 久久精品国产99国产精品| 欧美在线视频日韩| 17c精品麻豆一区二区免费| 国产综合色产在线精品 | 国产亚洲综合在线| 美女视频黄 久久| 欧美激情在线观看视频免费| 91国偷自产一区二区开放时间 | 国产精品一二三在| 欧洲生活片亚洲生活在线观看| 午夜av电影一区| 欧美色手机在线观看| 亚洲精品乱码久久久久久黑人 | 欧美美女网站色| 天天综合网 天天综合色| 2020国产成人综合网| 精品在线免费视频| 日韩美女视频一区二区 | 精品久久国产字幕高潮| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品久久久久久久久搜平片 | 亚洲福利视频一区二区| 欧美羞羞免费网站| 国产高清不卡一区| 欧美激情一区二区三区不卡| 欧美日韩国产高清一区二区三区| 婷婷开心激情综合| 亚洲国产精品精华液ab| 7777精品伊人久久久大香线蕉完整版 | 在线观看91精品国产入口| 精品一区二区三区欧美| 亚洲狠狠丁香婷婷综合久久久| 欧美精品一区二区三区高清aⅴ | 国产在线一区观看| 五月综合激情婷婷六月色窝| 中文字幕在线不卡一区| 亚洲精品一区二区精华| 欧美精品一级二级| 91黄色免费版| 91免费国产视频网站| 亚洲一区二区三区视频在线播放 | 国产精品天美传媒| 久久影视一区二区| 91精品在线观看入口| 91在线一区二区| 成人免费三级在线| 亚洲一二三四在线| 亚洲欧美韩国综合色| 91精品欧美久久久久久动漫| 色婷婷精品久久二区二区蜜臂av| 大胆欧美人体老妇| 国产福利不卡视频| 国产伦精品一区二区三区免费迷 | 99在线精品视频| 日韩精品三区四区| 日本一区二区在线不卡| 日韩欧美综合一区| 欧美一区二区在线免费播放| 欧美亚洲一区二区三区四区| 91女厕偷拍女厕偷拍高清| 99精品国产视频| 91小视频在线| 色天天综合色天天久久| 91美女片黄在线观看91美女| 97精品久久久午夜一区二区三区| 99精品久久只有精品| av在线免费不卡| 色婷婷综合激情| 欧美日韩国产一二三| 欧美日韩一区久久| 欧美一级二级三级乱码| 日韩一区二区三区在线| www国产精品av| 国产精品嫩草影院com| 中文字幕亚洲在| 亚洲综合无码一区二区| 午夜一区二区三区在线观看| 中文字幕巨乱亚洲| 日韩理论片一区二区| 亚洲一区二区综合| 蜜臀va亚洲va欧美va天堂| 国模无码大尺度一区二区三区| 国产高清久久久久| 色呦呦日韩精品| 91精品国产综合久久久蜜臀粉嫩 | 日韩一级完整毛片| 久久精品人人爽人人爽| 亚洲特黄一级片| 日韩高清一级片| 国产91对白在线观看九色| 国内精品久久久久影院薰衣草| 国产不卡在线播放| 欧美日韩一本到| 精品国产凹凸成av人导航| 中文字幕第一区| 日韩精彩视频在线观看| 国产传媒欧美日韩成人| 在线观看国产精品网站| 欧美大度的电影原声| 日韩午夜在线影院| 成人欧美一区二区三区1314| 爽爽淫人综合网网站| 国产高清精品在线| 精品视频123区在线观看| 久久日韩粉嫩一区二区三区| 伊人婷婷欧美激情| 国产盗摄一区二区三区| 欧美视频你懂的| 国产精品久久久久影院色老大| 亚洲第一久久影院| 99这里只有久久精品视频| 日韩欧美视频在线| 一区二区三区四区亚洲| 亚洲福利一区二区| www.欧美日韩| 久久久国产午夜精品 | 欧美一级日韩不卡播放免费| 国产精品久久久久久亚洲毛片| 日韩不卡在线观看日韩不卡视频| eeuss影院一区二区三区| 日韩精品专区在线影院重磅| 一区二区三区蜜桃| 成人av免费在线| 91国偷自产一区二区开放时间 | 不卡av在线网| 精品999在线播放| 日韩精品91亚洲二区在线观看| 在线观看一区二区视频| 国产色一区二区| 精品写真视频在线观看| 欧美精品久久一区二区三区| 亚洲综合免费观看高清完整版在线| 成人动漫视频在线| 欧美激情中文字幕| 国产精品一区2区| 精品国产免费一区二区三区四区| 日日嗨av一区二区三区四区| 在线观看91视频| 一区二区三区中文在线观看| 不卡的av电影在线观看| 中文字幕二三区不卡| 成人小视频在线观看| 国产三级精品三级在线专区| 久久成人免费日本黄色| 精品日韩成人av| 蜜桃av噜噜一区| 精品国产一区二区三区久久久蜜月| 青青草国产精品亚洲专区无| 成人激情动漫在线观看| 亚洲国产高清不卡| 99久久er热在这里只有精品15| 国产精品视频一二三区| 99久久精品免费看国产| 亚洲私人黄色宅男| 91黄色免费观看| 午夜精品久久久久久久蜜桃app| 欧美日韩在线亚洲一区蜜芽| 亚洲午夜电影在线| 91精品久久久久久久久99蜜臂| 免费精品99久久国产综合精品| 日韩欧美精品在线| 国产乱人伦偷精品视频免下载| 国产农村妇女精品| 91在线无精精品入口| 亚洲成av人片一区二区梦乃 | 欧美麻豆精品久久久久久| 奇米影视一区二区三区| 亚洲精品一区二区三区在线观看 | 亚洲天堂2016| 欧美日韩色一区| 精品一区二区三区免费观看 | 中文字幕一区不卡| 欧美在线观看你懂的| 日本视频一区二区三区| 久久久国产午夜精品| 91视频一区二区| 青青草国产精品亚洲专区无| 国产欧美日韩综合精品一区二区| 欧美丝袜丝交足nylons图片|