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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? create.cpp

?? 一個(gè)過濾層文件系統(tǒng)驅(qū)動(dòng)的完整代碼
?? 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 
				   )

{
	// 
	// 獲得當(dāng)前堆棧,以及下一個(gè)處理IRP的堆棧
	//
	PIO_STACK_LOCATION  pCurrentIrpStack = IoGetCurrentIrpStackLocation(pIrp);
	PIO_STACK_LOCATION  pNextIrpStack    = IoGetNextIrpStackLocation(pIrp);
	//
	// 指向我定義的擴(kuò)展結(jié)構(gòu),該結(jié)構(gòu)中包括了我所需要的關(guān)于下層文件系統(tǒng)的信息
	//
	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));

		// 我們不處理一些特殊文件(如注冊表數(shù)據(jù)文件 ),并且也不處理那些不要檢測保護(hù)的文件
		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。計(jì)算文件的Hash值
		// 2。如果計(jì)算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。用戶線程無響應(yīng)
			// 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;
}
































































?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91激情在线视频| 久久av中文字幕片| av中文字幕在线不卡| 国产欧美日韩综合精品一区二区| 久久精品99国产精品| 亚洲精品一线二线三线无人区| 蜜桃视频一区二区| 久久亚洲私人国产精品va媚药| 蜜臀av性久久久久蜜臀aⅴ| 日韩欧美一级精品久久| 久热成人在线视频| 国产欧美日韩另类视频免费观看| 粉嫩嫩av羞羞动漫久久久 | 亚洲自拍与偷拍| 一本大道av一区二区在线播放| 一区二区三区成人在线视频| 国产亚洲一区字幕| av一区二区三区黑人| 亚洲黄色小视频| 日韩久久免费av| 国产ts人妖一区二区| 亚洲欧美经典视频| 制服.丝袜.亚洲.中文.综合| 国产在线精品国自产拍免费| 国产精品高潮呻吟久久| 欧美视频一区二区在线观看| 麻豆91精品视频| 中文字幕亚洲综合久久菠萝蜜| 欧美优质美女网站| 激情五月婷婷综合| 亚洲精品欧美综合四区| 欧美一区二区三区四区在线观看| 国产乱码一区二区三区| 亚洲综合一区二区三区| 精品盗摄一区二区三区| 91亚洲国产成人精品一区二区三| 日韩高清在线电影| 国产精品美日韩| 欧美女孩性生活视频| 成人av电影在线观看| 日一区二区三区| 亚洲欧洲日产国码二区| 日韩女同互慰一区二区| 色婷婷久久久亚洲一区二区三区| 蜜桃视频在线观看一区| 一区二区三区在线观看视频| 亚洲精品一区二区在线观看| 欧美性大战xxxxx久久久| 国产盗摄精品一区二区三区在线 | 成人h动漫精品一区二区| 午夜av区久久| 亚洲美女电影在线| 国产午夜精品美女毛片视频| 欧美日韩国产一级片| av在线播放一区二区三区| 久久丁香综合五月国产三级网站| 椎名由奈av一区二区三区| 26uuu欧美| 在线播放中文字幕一区| 欧美主播一区二区三区| 国产69精品久久99不卡| 美女看a上一区| 亚洲午夜激情av| 亚洲欧美日韩人成在线播放| 中文字幕国产一区| 精品国产污污免费网站入口 | 激情另类小说区图片区视频区| 亚洲午夜一区二区三区| 亚洲色图欧美在线| 国产精品美女久久久久久久久 | 国产精品天美传媒沈樵| 精品久久久久久综合日本欧美| 欧美三级电影精品| 91小视频免费观看| 91在线视频免费91| 99国产精品久久久久| 国产福利91精品| 国产精品一区二区不卡| 国产九色sp调教91| 国产精品一区二区x88av| 国产麻豆精品95视频| 精品系列免费在线观看| 久久99精品国产麻豆不卡| 免费黄网站欧美| 麻豆精品在线观看| 国产一区二区三区黄视频| 免费久久99精品国产| 美脚の诱脚舐め脚责91| 国产一区二区在线免费观看| 国产一区久久久| 国产成人日日夜夜| 北岛玲一区二区三区四区| 91丝袜呻吟高潮美腿白嫩在线观看| 成人永久免费视频| 99精品视频一区| 91黄视频在线| 欧美日高清视频| 日韩欧美国产电影| 中文无字幕一区二区三区 | 国产蜜臀97一区二区三区| 国产女同互慰高潮91漫画| 国产精品毛片久久久久久久| 亚洲天堂av老司机| 一区二区三区在线视频免费观看| 亚洲一区二区三区四区在线免费观看| 亚洲一区二区三区四区的| 免费观看91视频大全| 国产乱码精品一区二区三| 99久久久无码国产精品| 在线免费观看日本一区| 欧美一级日韩一级| 国产嫩草影院久久久久| 一区二区国产视频| 免费高清在线一区| av电影在线不卡| 欧美男人的天堂一二区| 国产调教视频一区| 亚洲精品综合在线| 毛片av一区二区| 成人av在线资源网站| 色婷婷精品久久二区二区蜜臀av | 日本欧美在线观看| 国产a视频精品免费观看| 91成人在线观看喷潮| 日韩午夜激情电影| 国产精品素人一区二区| 午夜精品久久一牛影视| 国产suv精品一区二区6| 3751色影院一区二区三区| 国产欧美日韩综合| 奇米色一区二区| 99热精品一区二区| 久久亚洲综合av| 亚洲国产美女搞黄色| 国产精品自产自拍| 欧美日韩精品福利| 国产精品国产精品国产专区不片| 亚洲图片有声小说| 99久久99久久精品免费看蜜桃| 日韩欧美专区在线| 亚洲综合清纯丝袜自拍| 丰满白嫩尤物一区二区| 日韩欧美一卡二卡| 亚洲国产精品一区二区www | 国产91精品露脸国语对白| 欧美日本在线看| 亚洲色图20p| 春色校园综合激情亚洲| 精品国产乱码久久久久久免费 | 亚洲欧洲综合另类在线| 韩日精品视频一区| 51精品久久久久久久蜜臀| 一区二区三区四区视频精品免费| 国产成人综合在线| 久久影院午夜论| 美女脱光内衣内裤视频久久影院| 欧美日韩小视频| 亚洲综合久久久久| 91看片淫黄大片一级| 国产精品美女久久久久高潮| 精品一区二区三区日韩| 91精品福利在线一区二区三区 | 青青草精品视频| 在线一区二区三区四区五区| 国产精品久久久久影院| 成人一区在线看| 久久久久久一级片| 国产美女精品在线| 精品国产一区二区三区久久影院| 日本欧美在线看| 91精品国产aⅴ一区二区| 图片区小说区国产精品视频| 欧美性受xxxx黑人xyx性爽| 亚洲乱码国产乱码精品精98午夜| www.欧美日韩国产在线| 亚洲视频一区在线| 97国产一区二区| 最新中文字幕一区二区三区| av成人免费在线| 亚洲免费毛片网站| 色婷婷综合中文久久一本| 亚洲欧美日韩精品久久久久| 91久久线看在观草草青青| 亚洲国产美女搞黄色| 69堂成人精品免费视频| 麻豆精品视频在线观看视频| 精品福利在线导航| 粉嫩一区二区三区性色av| 亚洲欧洲美洲综合色网| 在线精品亚洲一区二区不卡| 亚洲一区二区三区四区的| 欧美一区二区在线不卡| 国内精品伊人久久久久av影院| 久久影院午夜论| www.欧美日韩国产在线| 亚洲成人先锋电影| 精品粉嫩超白一线天av| 国产成人精品www牛牛影视| 一区在线播放视频| 欧美亚洲综合在线|