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

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

?? create.cpp

?? 一個文件過濾驅動的實例
?? CPP
字號:
#include "FsTPM.h"


NTSTATUS FsTPMCreateCompleted(IN PDEVICE_OBJECT pHookDevice, IN PIRP pIrp, IN PVOID Context)
{
   PIO_STACK_LOCATION  pCurrentIrpStack = IoGetCurrentIrpStackLocation(pIrp);
   PFILE_OBJECT        pFileObject=pCurrentIrpStack->FileObject;
   WCHAR *WideSource=(WCHAR *) Context;
   PFILE_PROTECT_LIST_ITEM pItem;
   
   
   if (!NT_SUCCESS(pIrp->IoStatus.Status))
      return STATUS_SUCCESS;

   if (pIrp->PendingReturned)
   {
      IoMarkIrpPending(pIrp);
   }

   if (ProtectList_Is_In( &ProtectControlBlock.FileProtectList, WideSource, &pItem))
   {
      //刷新緩沖
      CACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent;
      NTSTATUS WaitStatus;
      LARGE_INTEGER LargeZero = {0,0};
      
      KeInitializeEvent( &UninitializeCompleteEvent.Event,
                     SynchronizationEvent,
                     FALSE);
      
      CcUninitializeCacheMap( pFileObject,
         &LargeZero,
         &UninitializeCompleteEvent );
      
      //
      //  Now wait for the cache manager to finish purging the file.
      //  This will garentee that Mm gets the purge before we
      //  delete the Vcb.
      //
      
      WaitStatus = KeWaitForSingleObject( &UninitializeCompleteEvent.Event,
                                 Executive,
                                 KernelMode,
                                 FALSE,
                                 NULL);
   }

   
   return STATUS_SUCCESS; 
}   



BOOL Notify_User_Thread()
{
	ExAcquireFastMutex(&Guard_Mutex);

	KeSetEvent(pReq_Event,1,FALSE);

	LARGE_INTEGER times;
	times.u.LowPart = (10000000 * 2);
	times.u.HighPart = 0;
	
	// NTSTATUS ret= KeWaitForSingleObject(pAck_Event, Executive, KernelMode , FALSE, NULL);
	while (gAck==0);
		
	gAck=0;

	//KeClearEvent(pAck_Event);
	KeClearEvent(pReq_Event);

	if ( gUser_Command==TRUE)
	{
		ExReleaseFastMutex(&Guard_Mutex);
		return TRUE;
	}
	else
	{
		ExReleaseFastMutex(&Guard_Mutex);		
		return FALSE;
	}

//	ExReleaseFastMutex(&Guard_Mutex);
	return FALSE;
}




//++
// Function:	FsTPMCreateRoutine
//
// Description:
//		處理Create操作
//
// Arguments:
//		HookDevice - pointer to a device object
//	    pIrp        - pointer to an I/O Request Packet
//
//
// Return value:
//		STATUS_SUCCESS if successful,
//		STATUS_UNSUCCESSFUL otherwise
//--
NTSTATUS 
FsTPMCreateRoutine( 
				   PDEVICE_OBJECT pHookDevice, 
				   IN PIRP pIrp 
				   )

{
	// 
	// 獲得當前堆棧,以及下一個處理IRP的堆棧
	//
	PIO_STACK_LOCATION  pCurrentIrpStack = IoGetCurrentIrpStackLocation(pIrp);
	PIO_STACK_LOCATION  pNextIrpStack    = IoGetNextIrpStackLocation(pIrp);
	//
	// 指向我定義的擴展結構,該結構中包括了我所需要的關于下層文件系統的信息
	//
	PHOOK_EXTENSION     pHookExt=(PHOOK_EXTENSION)pHookDevice->DeviceExtension;

	PFILE_OBJECT        pFileObject=pCurrentIrpStack->FileObject;

	PDEVICE_OBJECT		pNextLowerDevice=pHookExt->Vcb.NextLowerDevice;

	WCHAR Temp[256] = L"";

	WCHAR WideSource[256]={0};

	NTSTATUS ntStatus;

	BYTE TempHash[HASH_LENGTH];

	ULONG disposition,Options=pCurrentIrpStack->Parameters.Create.Options;
	disposition = (Options >> 24) & 0xFF;
	

	PFILE_PROTECT_LIST_ITEM pItem;

	ASSERT(pCurrentIrpStack->MajorFunction==IRP_MJ_CREATE);

	if (pHookExt->Type==GUIINTERFACE)
	{
		pIrp->IoStatus.Information = 0;
		pIrp->IoStatus.Status = STATUS_SUCCESS;

		IoCompleteRequest( pIrp, IO_NO_INCREMENT );
		return STATUS_SUCCESS;
	}


	GetFileFullNameByObjectW(pFileObject,pHookExt,(WCHAR*)WideSource,256);
	UpperWordW(WideSource);

	FsTPM_DbgPrint(("IRP_Create: %S Enter!\n",WideSource));

	if (ProtectList_Is_In( &ProtectControlBlock.FileProtectList, WideSource, &pItem))
	{		
		FsTPM_DbgPrint(("IRP_Create: Found %S in the protected list!\n",WideSource));

		// 我們不處理一些特殊文件(如注冊表數據文件 ),并且也不處理那些不要檢測保護的文件
		if (IsSomeSpecialFile(WideSource, pFileObject, pCurrentIrpStack) || !(IS_CHECK_PROTECT(pItem->ProtectedFlag)) )
			goto L_Pass;



		if ( ProtectControlBlock.EnableStaticProtect && 
			 IS_STATIC_PROTECT(pItem->ProtectedFlag) &&
			 (disposition == FILE_SUPERSEDE || disposition == FILE_OVERWRITE || disposition == FILE_OVERWRITE_IF )
			)
		{
			pIrp->IoStatus.Information = 0;
			pIrp->IoStatus.Status = STATUS_ACCESS_DENIED;
			
			IoCompleteRequest( pIrp, IO_NO_INCREMENT );
			
			return STATUS_ACCESS_DENIED;
		}

		// 下面,我們將
		// 1。計算文件的Hash值
		// 2。如果計算Hash正常,我們就把請求放過去
		// 3。Hash不正常,則通知給用戶線程,請求用戶裁決

		ntStatus = CalHash( WideSource, TempHash, HASH_LENGTH);
		if ( NT_SUCCESS(ntStatus) && EqualHash( TempHash , pItem->Hash, HASH_LENGTH) )
			goto L_Pass;

		if  (!Notify_User_Thread())
		{
			// 如果Notify_User_Thread 返回FALSE,則有兩種情況,
			// 1。用戶線程無響應
			// 2。用戶要求取消操作
			// 無論是那種情況,我們都將拒絕請求
			pIrp->IoStatus.Information = 0;
			pIrp->IoStatus.Status = STATUS_ACCESS_DENIED;

			IoCompleteRequest( pIrp, IO_NO_INCREMENT );
			return STATUS_ACCESS_DENIED;
		}
	}

L_Pass:

	FsTPM_DbgPrint(("IRP_CREATE: %S is not listed in protected list , now pass it to the next device\n",WideSource));

	IoCopyCurrentIrpStackLocationToNext(pIrp);

    IoSetCompletionRoutine(pIrp, FsTPMCreateCompleted, WideSource,TRUE,TRUE,TRUE);

    ntStatus=IoCallDriver( pNextLowerDevice, pIrp );


	return ntStatus;
}
































































?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品视频一区| 美美哒免费高清在线观看视频一区二区| 亚洲综合色网站| 黑人巨大精品欧美一区| 91国产福利在线| 国产日韩精品一区二区三区在线| 亚洲在线免费播放| 99在线热播精品免费| 久久综合成人精品亚洲另类欧美 | 99久久99久久精品免费观看 | 美腿丝袜亚洲综合| 日本乱码高清不卡字幕| 国产亚洲综合av| 蜜臀av性久久久久av蜜臀妖精| 91黄视频在线观看| 国产精品成人午夜| 不卡一区二区三区四区| 国产欧美一区视频| 久久国产精品72免费观看| 欧美一级欧美三级在线观看| 自拍偷拍亚洲综合| 成人在线一区二区三区| 久久久国产午夜精品| 免费在线看一区| 欧美精品色综合| 午夜精品aaa| 欧美日韩国产在线播放网站| 亚洲国产中文字幕| 欧美综合在线视频| 亚洲国产人成综合网站| 在线免费观看日韩欧美| 一区二区三区 在线观看视频| 91欧美激情一区二区三区成人| 国产精品情趣视频| 成人av在线影院| 亚洲精品欧美综合四区| 在线精品视频一区二区| 亚洲一区电影777| 欧美日韩国产一级| 蜜臀精品久久久久久蜜臀 | 色欧美日韩亚洲| 亚洲综合视频在线| 欧美精品一二三| 久久66热偷产精品| 欧美国产激情二区三区| 91视视频在线直接观看在线看网页在线看| 国产精品伦理一区二区| 99久久国产综合精品色伊| 一区二区三区在线播放| 欧美日韩卡一卡二| 精品一区二区成人精品| 国产拍揄自揄精品视频麻豆| 99精品国产99久久久久久白柏| 一区二区在线观看av| 制服.丝袜.亚洲.另类.中文| 久久精品国产99| 国产精品国产三级国产三级人妇 | 樱桃视频在线观看一区| 欧美日韩你懂的| 免费高清在线一区| 日本一区二区高清| 在线免费观看日韩欧美| 麻豆极品一区二区三区| 成人免费在线观看入口| 欧美精品久久天天躁| 国产美女主播视频一区| 一区二区三区成人在线视频| 日韩女优av电影在线观看| 成人黄色777网| 日韩中文字幕不卡| 国产精品久久久久久亚洲毛片| 欧美亚洲禁片免费| 国产精品一卡二卡在线观看| 一区二区三区四区中文字幕| 日韩你懂的电影在线观看| 一本大道久久精品懂色aⅴ| 麻豆91精品91久久久的内涵| 国产精品家庭影院| 2022国产精品视频| 欧美久久免费观看| 91浏览器打开| 国产精品一区三区| 青青草91视频| 亚洲蜜臀av乱码久久精品| 久久久亚洲精品石原莉奈 | 日本道精品一区二区三区| 韩国成人精品a∨在线观看| 樱桃视频在线观看一区| 国产精品伦一区| 2021久久国产精品不只是精品| 欧美日韩一区成人| 91在线你懂得| 国产91高潮流白浆在线麻豆| 麻豆freexxxx性91精品| 亚洲18影院在线观看| 一区二区三区中文字幕精品精品 | 午夜精品久久久久| 一区二区三区电影在线播| 亚洲精品自拍动漫在线| 国产日韩欧美在线一区| 日韩免费观看高清完整版 | 中文字幕免费不卡| 欧美电视剧在线观看完整版| 欧美精品xxxxbbbb| 欧美视频三区在线播放| 在线免费不卡视频| 日本道精品一区二区三区| 大陆成人av片| 成人的网站免费观看| 成人深夜福利app| 成人开心网精品视频| 国产99久久久国产精品| 丁香激情综合国产| 国产成人免费xxxxxxxx| 丁香激情综合五月| 99re这里只有精品首页| 色婷婷av一区二区三区大白胸 | 国产精品自拍一区| 激情综合色播五月| 国产在线看一区| 国产精品69久久久久水密桃| 国产一区二区视频在线播放| 国产一区二区三区免费播放| 国产精品一区二区久久不卡| 高清日韩电视剧大全免费| 成人美女在线视频| 色婷婷久久久综合中文字幕 | 老司机精品视频一区二区三区| 午夜精品福利一区二区蜜股av| 视频一区在线视频| 久久 天天综合| 成av人片一区二区| 欧美日韩一区二区在线视频| 日韩一级完整毛片| 久久精品在线观看| 樱花草国产18久久久久| 日韩和欧美一区二区三区| 久久国产日韩欧美精品| 色综合一个色综合亚洲| 欧美图区在线视频| 欧美tickle裸体挠脚心vk| 国产精品国模大尺度视频| 亚洲18女电影在线观看| 国产精品一区久久久久| 91麻豆视频网站| 91精品婷婷国产综合久久| 国产人成一区二区三区影院| 亚洲综合偷拍欧美一区色| 久久99深爱久久99精品| 不卡av在线网| 欧美一区日韩一区| 国产精品久久久久久久浪潮网站| 一区二区三区波多野结衣在线观看| 日本v片在线高清不卡在线观看| 国产盗摄一区二区| 欧美日韩国产bt| 国产精品少妇自拍| 日本色综合中文字幕| 成人精品gif动图一区| 欧美精品久久99| 亚洲欧洲在线观看av| 久久99久久精品| 欧美在线看片a免费观看| 久久久九九九九| 日本在线播放一区二区三区| 99久久国产综合精品女不卡| 精品久久久久一区二区国产| 亚洲大片免费看| 91啪在线观看| 国产精品网友自拍| 蜜芽一区二区三区| 在线观看不卡视频| 国产精品短视频| 国产aⅴ综合色| 精品电影一区二区| 图片区日韩欧美亚洲| 91麻豆国产自产在线观看| 久久久综合九色合综国产精品| 视频一区欧美日韩| 欧美视频日韩视频| 一区二区三区免费| 91亚洲精品乱码久久久久久蜜桃| 国产亚洲福利社区一区| 精品一区二区三区香蕉蜜桃| 欧美另类z0zxhd电影| 亚洲黄色小说网站| 色综合天天综合| 亚洲色欲色欲www| 99久久精品国产一区二区三区| 久久精品男人天堂av| 国产精品99久久久久久久女警| 欧美变态tickling挠脚心| 久久精品国产在热久久| 日韩亚洲欧美综合| 免费成人av在线| 精品国产免费一区二区三区香蕉| 日韩高清不卡一区二区三区| 制服丝袜中文字幕亚洲| 理论片日本一区| 日韩精品中文字幕在线不卡尤物|