Nt式过滤驱动 keyfilter 键盘过滤驱动源码


Nt式过滤驱动 keyfilter 键盘过滤驱动,付驱动安装说明,和用户端读取按键的方法。
资源截图
代码片段和文件信息
/************************************************************************
*************************************************************************/

#include “KeyFilter.h“

/************************************************************************
* 函数名称:DriverEntry
* 功能描述:初始化驱动程序,定位和申请硬件资源,创建内核对象
* 参数列表:
      pDriverobject:从I/O管理器中传进来的驱动对象
      pRegistryPath:驱动程序在注册表的中的路径
* 返回 值:返回初始化驱动状态
*************************************************************************/
#pragma INITCODE 
extern “C“ NTSTATUS DriverEntry(IN PDRIVER_object pDriverobject
IN PUNICODE_STRING pRegistryPath)
{
KdPrint((“Enter DriverEntry
“));

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
“));
return STATUS_SUCCESS;
}

/************************************************************************
* 函数名称:KeyFilterAddDevice
* 功能描述:添加新设备
* 参数列表:
      Driverobject:从I/O管理器中传进来的驱动对象
      PhysicalDeviceobject:从I/O管理器中传进来的物理设备对象
* 返回 值:返回添加新设备状态
*************************************************************************/
#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
“));
//
PFILE_object Fileobject = NULL;
RtlInitUnicodeString(&kbdclassnameL“\Device\KeyboardClass0“);
//通过classname得到设备对象
status = IoGetDeviceobjectPointer(&kbdclassnameFILE_ALL_ACCESS&Fileobject&kbdDevice);
if (!NT_SUCCESS(status))
{
KdPrint((“ObReferenceobjectByName error0x%x
“status));
return status;
}

do{
RtlInitUnicodeString(&strnumL“strnum“);
RtlIntegerToUnicodeString(index10&strnum);

RtlInitUnicodeString(&devNameDevnamebase);
RtlAppendUnicodeStringToString(&devName&strnum);
//创建设备
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

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       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  ipchdriverdev-36610be0driverdev-84e5d0c9.ipch

     文件         86  2014-07-24 15:41  MyDriver_CheckDriverDev.log

     文件       3754  2014-07-24 15:41  ShowInputKeyDebugShowInputKey.Build.CppClean.log

     文件        511  2014-07-24 15:41  ShowInputKeyDebugShowInputKey.log

     文件        301  2014-07-16 11:09  ShowInputKeyIoCode.h

     文件       4531  2014-07-08 09:14  ShowInputKeyReadMe.txt

     文件      67777  2009-08-31 02:31  ShowInputKey
esShowInputKey.ico

     文件        808  2014-07-08 09:14  ShowInputKey
esShowInputKey.rc2

     文件       1922  2014-07-17 14:46  ShowInputKey
esource.h

     文件      90832  2014-07-18 10:15  ShowInputKeyShowInputKey.aps

     文件       2547  2014-07-08 09:14  ShowInputKeyShowInputKey.cpp

     文件        541  2014-07-08 09:14  ShowInputKeyShowInputKey.h

     文件      11748  2014-07-17 15:51  ShowInputKeyShowInputKey.rc

     文件       6385  2014-07-16 17:04  ShowInputKeyShowInputKey.vcxproj

     文件       2152  2014-07-16 11:09  ShowInputKeyShowInputKey.vcxproj.filters

     文件        143  2014-07-08 09:14  ShowInputKeyShowInputKey.vcxproj.user

     文件       9468  2014-07-18 15:15  ShowInputKeyShowInputKeyDlg.cpp

     文件       1595  2014-07-18 15:15  ShowInputKeyShowInputKeyDlg.h

     文件        214  2014-07-08 09:14  ShowInputKeystdafx.cpp

     文件       1807  2014-07-08 09:14  ShowInputKeystdafx.h

     文件        314  2014-07-08 09:14  ShowInputKey argetver.h

     文件       4140  2007-11-05 20:04  DriverDev.dsp

............此处省略12个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)