亚洲欧美第一页_禁久久精品乱码_粉嫩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电影| 国产一区二区三区精品视频| 欧美性生活一区| 国产精品人妖ts系列视频| 视频在线观看91| 91在线你懂得| 国产亚洲制服色| 免费在线成人网| 欧美在线综合视频| 中文字幕一区二区三中文字幕| 久久99久久99精品免视看婷婷 | 最近中文字幕一区二区三区| 国产做a爰片久久毛片| 欧美日韩在线三区| 亚洲午夜精品网| 色哟哟国产精品| 亚洲天堂福利av| 色一区在线观看| 天天色图综合网| 色噜噜狠狠色综合中国| 国产69精品久久777的优势| 欧美一区午夜精品| 亚洲一区二区三区小说| 色94色欧美sute亚洲线路一ni| 国产精品视频免费看| 国产乱码精品一区二区三区五月婷| 欧美一区二区三区色| 亚洲综合免费观看高清完整版| 不卡视频免费播放| 日本一区二区三区电影| 老司机精品视频导航| 日韩亚洲欧美综合| 日韩av一级电影| 欧美精品v日韩精品v韩国精品v| 亚洲成在线观看| 欧美日韩免费视频| 亚洲va韩国va欧美va| 欧美人与禽zozo性伦| 亚洲bt欧美bt精品| 欧美日本在线播放| 五月激情综合网| 日韩亚洲欧美成人一区| 日韩av一级片| 欧美精品一区二区三区蜜桃视频 | 亚洲国产成人私人影院tom| 国产成人小视频| 欧美国产在线观看| 91女神在线视频| 亚洲欧美自拍偷拍色图| 色综合久久久久综合| 欧美性猛片xxxx免费看久爱| 国产一区在线不卡| 亚洲一区在线播放| 中文字幕第一区二区| 欧美日韩国产一级二级| 国产成人在线视频网址| 日韩制服丝袜先锋影音| 国产精品国产三级国产aⅴ中文 | 精品久久久久久久一区二区蜜臀| 婷婷国产v国产偷v亚洲高清| 日韩午夜激情视频| 国产精品自在在线| 国产人久久人人人人爽| av在线不卡网| 亚洲一区二区四区蜜桃| 日韩手机在线导航| 国产一区二区精品在线观看| 国产精品少妇自拍| 在线观看免费亚洲| 卡一卡二国产精品 | 久久午夜电影网| 成人av电影免费观看| 一区二区三区四区蜜桃| 欧美高清视频在线高清观看mv色露露十八 | 国产精品久久久久一区二区三区 | 精品久久久久久久人人人人传媒 | 亚洲午夜一区二区| 日韩欧美一级精品久久| 国产精品欧美一区二区三区| 久久新电视剧免费观看| 中文字幕第一区综合| 日韩一区有码在线| 国产精品美日韩| 国产精品入口麻豆九色| 国产欧美精品在线观看| 久久久久久麻豆| 日本一二三四高清不卡| 国产精品家庭影院| 亚洲精品亚洲人成人网在线播放| 午夜欧美电影在线观看| 日本一区二区在线不卡| 91首页免费视频| 欧美aaaaaa午夜精品| 国产精品视频在线看| 欧美精品乱码久久久久久按摩| 国产激情91久久精品导航 | 欧美一区永久视频免费观看| 成人免费福利片| 日韩成人dvd| 亚洲品质自拍视频网站| 精品久久久网站| 欧美性感一区二区三区| 国产成人精品一区二区三区四区| 午夜欧美在线一二页| 日韩理论片在线| 久久这里只有精品首页| 欧美视频完全免费看| 高清日韩电视剧大全免费| 日韩电影一区二区三区四区| 一区免费观看视频| 久久综合九色综合97_久久久| 在线免费观看成人短视频| 寂寞少妇一区二区三区| 午夜私人影院久久久久| 亚洲欧美中日韩| 久久精品综合网| 日韩欧美的一区| 欧美日韩国产精品自在自线| 99精品在线免费| 国产麻豆日韩欧美久久| 欧美aaa在线| 亚洲h在线观看| 一区二区三区中文字幕| 国产精品视频第一区| 久久久综合九色合综国产精品| 欧美一级夜夜爽| 欧美色精品在线视频| 91小视频免费观看| 成人免费毛片嘿嘿连载视频| 狠狠狠色丁香婷婷综合久久五月| 天堂一区二区在线免费观看| 亚洲精品国产高清久久伦理二区| 欧美国产视频在线| 日韩欧美高清在线| 91精品在线观看入口| 欧美三区在线视频| 欧美午夜片在线观看| 色婷婷一区二区三区四区| www.成人在线| 波多野结衣亚洲一区| 国产福利精品导航| 国产乱一区二区| 国产美女精品一区二区三区| 精品在线观看免费| 精品综合免费视频观看| 免费看日韩精品| 日韩不卡一区二区三区| 丝袜亚洲精品中文字幕一区| 亚洲va天堂va国产va久| 天堂一区二区在线| 蜜桃视频免费观看一区| 日本网站在线观看一区二区三区| 丝袜脚交一区二区| 青青青伊人色综合久久| 美腿丝袜在线亚洲一区| 麻豆91在线看| 精品写真视频在线观看| 国产一区二区精品久久| 国产福利一区二区| bt欧美亚洲午夜电影天堂| 99久久综合99久久综合网站| 色www精品视频在线观看| 欧美三级在线看| 欧美久久婷婷综合色| 91精品国产品国语在线不卡 | 成人动漫一区二区在线| 成人午夜激情在线| 91在线小视频| 欧美少妇xxx| 在线不卡的av| 337p粉嫩大胆噜噜噜噜噜91av | 91精品国产综合久久福利软件| 欧美不卡视频一区| 久久精品一区四区| 综合在线观看色| 亚洲高清视频在线| 麻豆精品精品国产自在97香蕉| 精品亚洲成a人在线观看| 成人动漫在线一区| 欧美在线影院一区二区| 91麻豆精品国产自产在线观看一区 | 欧美午夜一区二区| 欧美一区二区三区免费视频| 精品国产乱码久久久久久闺蜜| 国产欧美综合在线观看第十页| 亚洲欧洲在线观看av| 亚洲国产综合91精品麻豆 | 亚洲欧美综合色| 亚洲成人av电影| 韩国av一区二区三区在线观看| 不卡高清视频专区| 欧美高清一级片在线| 久久精品日韩一区二区三区| 亚洲精品亚洲人成人网| 日韩中文字幕亚洲一区二区va在线| 国产一区二区三区四区五区美女| 9i在线看片成人免费|