USB鼠标的上层过滤型驱动程序

本文详细介绍了USB鼠标上层过滤驱动程序的AddDevice例程,包括如何创建设备对象、初始化设备扩展,并将过滤设备对象附加到设备堆栈。同时,展示了INF文件配置,用于驱动安装和注册。
摘要由CSDN通过智能技术生成

AddDevice例程内容如下:

NTSTATUS&nbspVA_AddDevice
(
IN&nbspPDRIVER_OBJECT&nbspdriverObj,
IN&nbspPDEVICE_OBJECT&nbspphysicalDevObj

)
{
NTSTATUS&nbspstatus;
PDEVICE_OBJECT&nbspfilterDevObj =&nbspNULL;

PAGED_CODE();

DBGOUT(("VA_AddDevice: 驱动对象=%ph, 物理设备对象=%ph",&nbspdriverObj,&nbspphysicalDevObj));

status =&nbspIoCreateDevice(
driverObj,
sizeof(struct&nbspDEVICE_EXTENSION),
NULL, //&nbspname&nbspfor&nbspthis&nbspdevice
FILE_DEVICE_MOUSE,
0, //&nbspdevice&nbspcharacteristics
FALSE, //&nbspnot&nbspexclusive
&filterDevObj); //&nbspour&nbspdevice&nbspobject

if (&nbspNT_SUCCESS(status) ){
struct&nbspDEVICE_EXTENSION *devExt;

ASSERT(&nbspfilterDevObj );

/*
*&nbspInitialize&nbspdevice&nbspextension&nbspfor&nbspnew&nbspdevice&nbspobject
*/
devExt = (&nbspstruct&nbspDEVICE_EXTENSION * )filterDevObj->DeviceExtension;
RtlZeroMemory(&nbspdevExt,&nbspsizeof(struct&nbspDEVICE_EXTENSION) );
devExt->signature =&nbspDEVICE_EXTENSION_SIGNATURE;
devExt->state =&nbspSTATE_INITIALIZED;
devExt->filterDevObj =&nbspfilterDevObj;
devExt->physicalDevObj =&nbspphysicalDevObj;

 

devExt->pendingActionCount =&nbsp0;
KeInitializeEvent( &devExt->removeEvent,&nbspNotificationEvent,&nbspFALSE );
#ifdef&nbspHANDLE_DEVICE_USAG

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值