Nt式过滤驱动 keyfilter 键盘过滤驱动,付驱动安装说明,和用户端读取按键的方法。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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个文件信息
/************************************************************************
*************************************************************************/
#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个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)