資源簡介
Nt式過濾驅(qū)動 keyfilter 鍵盤過濾驅(qū)動,付驅(qū)動安裝說明,和用戶端讀取按鍵的方法。
代碼片段和文件信息
/************************************************************************
*************************************************************************/
#include?“KeyFilter.h“
/************************************************************************
*?函數(shù)名稱:DriverEntry
*?功能描述:初始化驅(qū)動程序,定位和申請硬件資源,創(chuàng)建內(nèi)核對象
*?參數(shù)列表:
??????pDriverobject:從I/O管理器中傳進(jìn)來的驅(qū)動對象
??????pRegistryPath:驅(qū)動程序在注冊表的中的路徑
*?返回?值:返回初始化驅(qū)動狀態(tài)
*************************************************************************/
#pragma?INITCODE?
extern?“C“?NTSTATUS?DriverEntry(IN?PDRIVER_object?pDriverobject
IN?PUNICODE_STRING?pRegistryPath)
{
KdPrint((“Enter?DriverEntry\n“));
pDriverobject->DriverExtension->AddDevice?=?KeyFilterAddDevice;
pDriverobject->MajorFunction[IRP_MJ_PNP]?=?KeyFilterPnp;
pDriverobject->MajorFunction[IRP_MJ_DEVICE_CONTROL]?=?KeyFilterDeviceIoCtl;
pDriverobject->MajorFunction[IRP_MJ_CREATE]?=?KeyFilterDispatchRoutine;
pDriverobject->MajorFunction[IRP_MJ_CLOSE]?=?KeyFilterDispatchRoutine;
pDriverobject->MajorFunction[IRP_MJ_READ]?=?KeyFilterRead;
pDriverobject->MajorFunction[IRP_MJ_WRITE]?=?KeyFilterDispatchRoutine;
pDriverobject->DriverUnload?=?KeyFilterUnload;
pDriverobject->DriverStartIo?=?KeyFilterStartIO;
KdPrint((“Leave?DriverEntry\n“));
return?STATUS_SUCCESS;
}
/************************************************************************
*?函數(shù)名稱:KeyFilterAddDevice
*?功能描述:添加新設(shè)備
*?參數(shù)列表:
??????Driverobject:從I/O管理器中傳進(jìn)來的驅(qū)動對象
??????PhysicalDeviceobject:從I/O管理器中傳進(jìn)來的物理設(shè)備對象
*?返回?值:返回添加新設(shè)備狀態(tài)
*************************************************************************/
#pragma?PAGEDCODE
NTSTATUS?KeyFilterAddDevice(IN?PDRIVER_object?Driverobject
???????????????????????????IN?PDEVICE_object?PhysicalDeviceobject)
{?
PAGED_CODE();
_asm?int?3;
NTSTATUS?status;
PDEVICE_object?PDeviceobject;
UNICODE_STRING?strnum;
UNICODE_STRING?devName;
UNICODE_STRING?kbdclassname;
UNICODE_STRING?symlinkName;
//PDRIVER_object?kbdDriver;
PDEVICE_object?kbdDevice;
int?index?=?0;
PDEVICE_EXTENSION?pdx;
WCHAR?Devnamebase[100]?=??L“\\Device\\KeyFilterDevice“;
KdPrint((“Enter?KeyFilterAddDevice\n“));
//
PFILE_object?Fileobject?=?NULL;
RtlInitUnicodeString(&kbdclassnameL“\\Device\\KeyboardClass0“);
//通過classname得到設(shè)備對象
status?=?IoGetDeviceobjectPointer(&kbdclassnameFILE_ALL_ACCESS&Fileobject&kbdDevice);
if?(!NT_SUCCESS(status))
{
KdPrint((“ObReferenceobjectByName?error0x%x\n“status));
return?status;
}
do{
RtlInitUnicodeString(&strnumL“strnum“);
RtlIntegerToUnicodeString(index10&strnum);
RtlInitUnicodeString(&devNameDevnamebase);
RtlAppendUnicodeStringToString(&devName&strnum);
//創(chuàng)建設(shè)備
status?=?IoCreateDevice(
Driverobject
sizeof(DEVICE_EXTENSION)
&devName
kbdDevice->DeviceType
kbdDevice->Characteristics
FALSE
&PDeviceobject);
if(?!NT_SUCCESS(status))
break;
pdx?=?(PDEVICE_EXTENSION)PDeviceobject->DeviceExtension;
pdx->NextSt
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????7769??2014-07-17?10:04??DriverDev.vcxproj
?????文件???????1189??2014-07-17?10:04??DriverDev.vcxproj.filters
?????文件????????143??2014-06-16?09:16??DriverDev.vcxproj.user
?????文件???????2731??2014-07-14?15:31??HelloWDM.inf
?????文件????????282??2014-07-16?11:07??IoCode.h
?????文件??????19066??2014-07-21?11:06??KeyFilter.cpp
?????文件???????2386??2014-07-21?10:20??KeyFilter.h
?????文件?????????20??2007-11-06?09:54??說明.txt
?????文件????8257536??2014-07-24?15:16??ipch\driverdev-36610be0\driverdev-84e5d0c9.ipch
?????文件?????????86??2014-07-24?15:41??MyDriver_Check\DriverDev.log
?????文件???????3754??2014-07-24?15:41??ShowInputKey\Debug\ShowInputKey.Build.CppClean.log
?????文件????????511??2014-07-24?15:41??ShowInputKey\Debug\ShowInputKey.log
?????文件????????301??2014-07-16?11:09??ShowInputKey\IoCode.h
?????文件???????4531??2014-07-08?09:14??ShowInputKey\ReadMe.txt
?????文件??????67777??2009-08-31?02:31??ShowInputKey\res\ShowInputKey.ico
?????文件????????808??2014-07-08?09:14??ShowInputKey\res\ShowInputKey.rc2
?????文件???????1922??2014-07-17?14:46??ShowInputKey\resource.h
?????文件??????90832??2014-07-18?10:15??ShowInputKey\ShowInputKey.aps
?????文件???????2547??2014-07-08?09:14??ShowInputKey\ShowInputKey.cpp
?????文件????????541??2014-07-08?09:14??ShowInputKey\ShowInputKey.h
?????文件??????11748??2014-07-17?15:51??ShowInputKey\ShowInputKey.rc
?????文件???????6385??2014-07-16?17:04??ShowInputKey\ShowInputKey.vcxproj
?????文件???????2152??2014-07-16?11:09??ShowInputKey\ShowInputKey.vcxproj.filters
?????文件????????143??2014-07-08?09:14??ShowInputKey\ShowInputKey.vcxproj.user
?????文件???????9468??2014-07-18?15:15??ShowInputKey\ShowInputKeyDlg.cpp
?????文件???????1595??2014-07-18?15:15??ShowInputKey\ShowInputKeyDlg.h
?????文件????????214??2014-07-08?09:14??ShowInputKey\stdafx.cpp
?????文件???????1807??2014-07-08?09:14??ShowInputKey\stdafx.h
?????文件????????314??2014-07-08?09:14??ShowInputKey\targetver.h
?????文件???????4140??2007-11-05?20:04??DriverDev.dsp
............此處省略12個(gè)文件信息
評論
共有 條評論