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

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

?? fstpm.cpp

?? 文件過濾系統
?? CPP
字號:
/*++
Copyright (c) 2004 By LiGen , All right reserved
Module Name:
	fstpm.cpp

Abstract:
	本驅程序實現文件改寫保護,文件完整性檢測,文件加密
	
Environment:
	Windows XP, Compiler Ver > 13.00

Notes:
   	

Revision History:
	created: 16:7:2004 

Author:
	李根	13574849558@hnmcc.com

--*/

#include "FsTPM.h"

WCHAR gRequestEventNameStr[] = L"\\BaseNamedObjects\\tpmreq";
WCHAR gAckEventNameStr[]	 = L"\\BaseNamedObjects\\tpmack";

UNICODE_STRING gRequestEventName = {0};
UNICODE_STRING gAckEventName = {0};

BOOL gUser_Command = FALSE;
ULONG  gAck=0;

// Define a event whose name is the same as the event in our User Thread, 
// so we can notify user by this event object
HANDLE HReq_Event = NULL;
HANDLE HAck_Event = NULL;

PKEVENT pReq_Event = NULL;
PKEVENT pAck_Event;
FAST_MUTEX Guard_Mutex = {0};


WCHAR gSymbol[] = L"\\Device\\FsTPM";
WCHAR gSymbolDos[] = L"\\DosDevices\\FsTPM";

ULONG CurrentDriveSet = 0;

//
// Table of our hook devices for each drive letter. This makes it
// easy to look up the device object that was created to hook a 
// particular drive.
//
PDEVICE_OBJECT      DriveHookDevices[26] = {0};

// 
//  保存系統分配給我的驅動對象的指針
//
PDRIVER_OBJECT FsTPMDriverObject = NULL;

// Save pointer to GUI
PDEVICE_OBJECT pGUIDevice = NULL;

//
// Current bitmask of hooked devices
//
ULONG         CurrentDeviceSet = 0;

ULONG ProcessNameOffset = 0; 

FSTPM_CONTROL_BLOCK ProtectControlBlock = {0};

// define a spin lock
// 
KSPIN_LOCK IoDatabaseLock = {0};
PKSPIN_LOCK IopDatabaseLock = &IoDatabaseLock;




NTSTATUS
DriverEntry(
    IN PDRIVER_OBJECT  pDriverObject,
    IN PUNICODE_STRING pRegistryPath
    )
/*++
Follow Routine Description:

    Installable driver initialization entry point.
    This entry point is called directly by the I/O system.

Arguments:

    pDriverObject - pointer to the driver object

    pRegistryPath - pointer to a unicode string representing the path
                   to driver-specific key in the registry

Return Value:

    STATUS_SUCCESS if successful,
    STATUS_UNSUCCESSFUL otherwise

--*/
{
	NTSTATUS	ntStatus;
	int			i;
	
	FsTPM_DbgPrint(("FsTPM.SYS: entering DriverEntry\n")); 
	FsTPM_DbgPrint(("Enter Entry : RegPath=%S\n",pRegistryPath->Buffer));

	// 讀入配置信息
//	ReadParamFromReg(pRegistryPath,pDriverObject);

	ProcessNameOffset=FsTPMGetProcessNameOffset();

	FsTPMDriverObject = pDriverObject;

	CreateList( &ProtectControlBlock.FileProtectList , MAX_LIST_ITEM_NUM );
		
	RtlInitUnicodeString(&gRequestEventName,gRequestEventNameStr);
	RtlInitUnicodeString(&gAckEventName,gAckEventNameStr);

	// Initial event
	pReq_Event = IoCreateSynchronizationEvent(&gRequestEventName,&HReq_Event);
	pAck_Event = IoCreateSynchronizationEvent(&gAckEventName,&HAck_Event);
	ExInitializeFastMutex(&Guard_Mutex);
	

	KeClearEvent (pReq_Event);
	KeClearEvent (pAck_Event);
	
	//
	// Create dispatch points for all routines that must be handled. 
    // All entry points are registered since we might filter a
	// file system that processes all of them.
    //
    for( i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; i++ ) {
	    pDriverObject->MajorFunction[i] = FsTPMDispatch;
    }

	pDriverObject->MajorFunction[IRP_MJ_CREATE]=FsTPMCreateRoutine;
	pDriverObject->MajorFunction[IRP_MJ_WRITE]=FsTPMWriteRoutine;
	pDriverObject->MajorFunction[IRP_MJ_READ]=FsTPMReadRoutine;
	pDriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION]=FsTPMQueryInformationRoutine;
	pDriverObject->MajorFunction[IRP_MJ_SET_INFORMATION]=FsTPMSetInformationRoutine;

	//
    // 置 Fast I/O dispatch 表
    //
    pDriverObject->FastIoDispatch = &FastIOHook;

	pDriverObject->DriverUnload = FsTPMUnload;

	ntStatus=CreateDevice(pDriverObject);          //創建一個與USER下的GUI程序通信的設備

	if (!NT_SUCCESS(ntStatus))
	{
		FsTPM_DbgPrint(("Creating Device Failed !\n"));
		return ntStatus;
	}

	// 掛載所有文件系統設備
	CurrentDriveSet=0;
	HookDeviceSet(0x3FFFFFC,pDriverObject);

	return STATUS_SUCCESS;
}


NTSTATUS CreateDevice (
		IN PDRIVER_OBJECT	pDriverObject
		) 
//++
// Function:	CreateDevice
//
// Description:
//		創建一個我自己的設備對象,這樣我就有了一個與WIN32溝通的橋梁
//
// Arguments:
//		pDriverObject - Passed from I/O Manager
//
// Return value:
//		STATUS_SUCCESS if successful,
//		STATUS_UNSUCCESSFUL otherwise
//--
{
	NTSTATUS status;
	PDEVICE_OBJECT         pGUIObject        = NULL;

	UNICODE_STRING		   GUIObjectNameString;
	UNICODE_STRING		   GUIObjectLinkString;
    PHOOK_EXTENSION        pGUIExt;	
	
	RtlInitUnicodeString( &GUIObjectNameString , gSymbol);
	RtlInitUnicodeString( &GUIObjectLinkString , gSymbolDos);

	// Now create the device
	status = IoCreateDevice( pDriverObject,
							sizeof(HOOK_EXTENSION),
							&GUIObjectNameString,
							FILE_DEVICE_FSTPM,
							0, TRUE,
							&pGUIObject );
	if (!NT_SUCCESS(status))
	{
		FsTPM_DbgPrint(("FsTPM.SYS: IoCreateDevice failed\n"));	
		return status;
	}
	
	pGUIDevice=pGUIObject;

	
	// Initialize the Device Extension
	// Get the Device Extension Pointer
	pGUIExt=(PHOOK_EXTENSION) pGUIObject->DeviceExtension;
	//
    // Mark this as our GUI device
    //
    pGUIExt->Type = GUIINTERFACE;
	pGUIExt->thisDriver=FsTPMDriverObject;

	// Now create the link name
	status = 
		IoCreateSymbolicLink( &GUIObjectLinkString,
							  &GUIObjectNameString);
	if (!NT_SUCCESS(status)) {
		// if it fails now, must delete Device object
		FsTPM_DbgPrint(("FsTPM.SYS: IoCreateSymbolicLink failed\n"));
		IoDeleteDevice( pGUIObject );
		return status;
	}

	
	// Made it
	return STATUS_SUCCESS;
}


VOID FsTPMUnload (
		IN PDRIVER_OBJECT	pDriverObject	
		) 
//++
// Function:	FsTPMUnload
//
// Description:
//		一般的,在文件系統編程中,我們并不提供UnLoad函數,
//      但為了測試方便,故提供之。
//
// Arguments:
//		pDriverObject - Passed from I/O Manager
//
// Return value:
//		none
//--
{	
	UNICODE_STRING wstrGuiLinkName;

	RtlInitUnicodeString( &wstrGuiLinkName, gSymbolDos);

	FsTPM_DbgPrint(("FsTPM.SYS: Unloading...\n"));

    //
    // Delete the symbolic link for our GUI device
    //
    IoDeleteSymbolicLink( &wstrGuiLinkName );
	FsTPM_DbgPrint(("FsTPM.SYS: Deleteing GUI Link ... OK\n"));
	
	//
	// Delete the Device Drivers that we've attached to...
	//
	UnloadDetach();
	FsTPM_DbgPrint(("FsTPM.SYS: Devices are detached ... OK \n"));

	IoDeleteDevice( pGUIDevice );
	FsTPM_DbgPrint(("FsTPM.SYS: I/O Control Device deleted ... OK \n"));

	ZwClose(HReq_Event);
	ZwClose(HAck_Event);

	FsTPM_DbgPrint(("FsTPM.SYS: Close event ... OK \n"));

	FsTPM_DbgPrint(("FsTPM.SYS:  Unload All, Completed ! \n"));
}
//#endif


NTSTATUS
FsTPMDispatch(
    IN PDEVICE_OBJECT pDeviceObject,
    IN PIRP           pIrp
    )
/*++

Followed Routine Description:

    Process the IRPs sent to this device.

Arguments:

    pDeviceObject - pointer to a device object

    pIrp          - pointer to an I/O Request Packet

Return Value:

--*/
{
	
	// 
	// 獲得當前堆棧,以及下一個處理IRP的堆棧
	//
    PIO_STACK_LOCATION  pCurrentIrpStack = IoGetCurrentIrpStackLocation(pIrp);
    PIO_STACK_LOCATION  pNextIrpStack    = IoGetNextIrpStackLocation(pIrp);

    //
    // 指向我定義的擴展結構,該結構中包括了我所需要的關于下層文件系統的信息
    //
	PHOOK_EXTENSION     pHookExt=(PHOOK_EXTENSION)pDeviceObject->DeviceExtension;
	
	PDEVICE_OBJECT		pNextLowerDevice=pHookExt->Vcb.NextLowerDevice;

	PFILE_OBJECT        pFileObject=pCurrentIrpStack->FileObject;

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

		IoCompleteRequest( pIrp, IO_NO_INCREMENT );
		return STATUS_SUCCESS;
	}
	
	//
	// 其他情況我們不作處理直接交給下方的設備處理
	//
	IoSkipCurrentIrpStackLocation(pIrp);

	NTSTATUS ntStatus=IoCallDriver( pNextLowerDevice, pIrp );

	return ntStatus;
}


VOID
ReadParamFromReg        (
						 IN     PUNICODE_STRING  RegistryPath,
						 IN     PDRIVER_OBJECT   DriverObject
						 )
						 /*++

						 Routine Description:

						 This routine tries to read the FsTPM-specific parameters from
						 the registry.  These values will be found in the registry location
						 indicated by the RegistryPath passed in.

						 Arguments:

						 RegistryPath - the path key which contains the values that are
						 the FsTPM parameters

						 Return Value:

						 None.

						 --*/
{

	return;
}






















?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲免费大片在线观看| 日韩免费视频一区二区| 国产激情偷乱视频一区二区三区 | 理论电影国产精品| 视频在线观看一区二区三区| 亚洲第一主播视频| 免费一级欧美片在线观看| 男男成人高潮片免费网站| 天天影视网天天综合色在线播放| 无码av免费一区二区三区试看| 午夜精品久久一牛影视| 免费看黄色91| 国产一区二区三区| 91尤物视频在线观看| 一本色道久久综合精品竹菊| 在线观看亚洲成人| 日韩一区二区在线观看| 久久嫩草精品久久久久| 国产精品超碰97尤物18| 亚洲v精品v日韩v欧美v专区| 蜜芽一区二区三区| 懂色中文一区二区在线播放| 91九色02白丝porn| 精品国一区二区三区| 国产精品麻豆99久久久久久| 亚洲图片欧美综合| 国产呦萝稀缺另类资源| 91日韩精品一区| 91精品午夜视频| 国产精品乱码一区二区三区软件 | 日韩欧美久久一区| 国产精品护士白丝一区av| 亚洲福利电影网| 国产精品亚洲午夜一区二区三区 | 国产精品一区免费在线观看| 日本精品视频一区二区| 欧美mv日韩mv| 一区二区三区鲁丝不卡| 激情欧美一区二区三区在线观看| av电影天堂一区二区在线观看| 欧美日韩美女一区二区| 国产精品久久久久久久久图文区| 日韩中文字幕亚洲一区二区va在线| 国产黄色精品网站| 欧美日韩精品一区二区| 亚洲欧洲99久久| 久久99久久久久| 欧美怡红院视频| 国产精品三级av| 激情图片小说一区| 制服.丝袜.亚洲.另类.中文| 中文成人综合网| 韩国欧美国产1区| 欧美二区在线观看| 亚洲精品久久嫩草网站秘色| 风间由美性色一区二区三区| 日韩一区二区在线免费观看| 亚洲综合免费观看高清在线观看| 国产99久久久久久免费看农村| 91精品国产一区二区三区| 一区二区三区免费看视频| 99久久亚洲一区二区三区青草| 精品福利一区二区三区| 麻豆成人免费电影| 国产一区二区久久| 国产成人自拍在线| 精品粉嫩超白一线天av| 一本一道久久a久久精品综合蜜臀| 99久久久国产精品免费蜜臀| 欧美美女一区二区在线观看| 亚洲日本韩国一区| www.亚洲免费av| 中文字幕不卡在线观看| 成人永久aaa| 国产欧美精品一区二区色综合朱莉| 九色综合国产一区二区三区| 日韩一本二本av| 精品中文字幕一区二区小辣椒| 日韩欧美不卡一区| 精品一区二区三区的国产在线播放 | 国内外成人在线| 精品免费国产二区三区| 日韩精品一级二级| 亚洲一区在线观看免费观看电影高清 | 国产精品一区二区x88av| 精品欧美一区二区在线观看| 美女被吸乳得到大胸91| www久久久久| 粉嫩一区二区三区性色av| 国产日韩在线不卡| 91免费版在线看| 亚洲一二三区在线观看| 正在播放亚洲一区| 另类欧美日韩国产在线| 国产免费成人在线视频| 色哟哟国产精品| 日韩精品午夜视频| 精品伦理精品一区| 成人性视频网站| 亚洲制服丝袜在线| 欧美成人r级一区二区三区| 国产精品中文欧美| 亚洲卡通动漫在线| 欧美一区二区三区电影| 丰满亚洲少妇av| 亚洲小说欧美激情另类| 日韩欧美一区中文| 99国产精品久久久久| 石原莉奈在线亚洲二区| 国产网红主播福利一区二区| 色哟哟精品一区| 国产一区二区三区视频在线播放| 中文字幕一区免费在线观看| 亚洲在线观看免费视频| 日日夜夜精品视频天天综合网| 精品免费日韩av| 一本色道久久综合精品竹菊| 另类小说欧美激情| 亚洲男同性恋视频| 久久你懂得1024| 欧美午夜精品一区二区三区| 国产精品自在欧美一区| 亚洲国产综合在线| 国产精品久久久久一区二区三区共| 777奇米成人网| 色综合天天性综合| 91视频你懂的| 国产美女精品在线| 麻豆精品视频在线观看视频| 亚洲免费观看视频| 国产精品情趣视频| 精品国产免费久久| 91精品国产91久久久久久一区二区| 97精品久久久久中文字幕 | 美腿丝袜亚洲色图| 亚洲成年人影院| 亚洲自拍偷拍麻豆| 精品三级在线观看| 4438成人网| 欧美日韩久久一区二区| 日本精品免费观看高清观看| 国产精品一区二区男女羞羞无遮挡| 日本aⅴ免费视频一区二区三区 | 色综合婷婷久久| 国产91对白在线观看九色| 黑人精品欧美一区二区蜜桃| 日本成人在线网站| 日韩成人午夜电影| 丝袜美腿成人在线| 日韩精品亚洲专区| 日韩电影在线免费看| 日韩av一区二区在线影视| 视频一区二区欧美| 污片在线观看一区二区| 污片在线观看一区二区| 亚洲国产精品影院| 亚洲1区2区3区4区| 日本最新不卡在线| 九九视频精品免费| 国产成人高清视频| 成人午夜又粗又硬又大| 91在线视频观看| 色狠狠av一区二区三区| 欧美日韩中文精品| 欧美一区二区视频在线观看2020| 日韩午夜在线观看| 久久精品男人天堂av| 一区精品在线播放| 亚洲一区在线视频观看| 日本美女视频一区二区| 国产一区二区免费看| a亚洲天堂av| 欧美日韩一区二区不卡| 精品久久久久久久久久久久久久久| 精品国产麻豆免费人成网站| 国产精品视频第一区| 一区二区三区日韩欧美精品| 日本在线观看不卡视频| 国产美女视频91| 色婷婷av久久久久久久| 日韩一区二区在线观看| 国产日韩综合av| 亚洲成人1区2区| 国产在线播放一区二区三区| 91老司机福利 在线| 欧美一区二区国产| 欧美国产成人精品| 天天亚洲美女在线视频| 国产乱一区二区| 欧美色涩在线第一页| 久久先锋影音av| 亚洲观看高清完整版在线观看| 精品无码三级在线观看视频| 91蜜桃网址入口| 欧美精品一区二区不卡| 亚洲一卡二卡三卡四卡五卡| 国产suv一区二区三区88区| 欧美精品一卡两卡| 专区另类欧美日韩| 国产一区在线不卡|