阅读:1788回复:4
请教Kbfiltr的IOCTL 关于Create another device object的问题
在做键盘过滤驱动的时候,想用DeviceIoControl函数操作键盘的IOCTL的时候,老不成功,感觉是没有明白Kbfiltr_IOCTL前面那段说明
// If you are planning on using this function, you must create another // device object to send the requests to. Please see the considerations // comments for KbFilter_DispatchPassThrough for implementation details. // // DriverObject->MajorFunction [IRP_MJ_DEVICE_CONTROL] = KbFilter_IoCtl; 那位朋友能不能帮忙解释一下关于IOCTL的程序流程 |
|
沙发#
发布于:2008-09-09 08:59
就是你需要另外创建一个自己的设备对象,
如果是WDM的使用IoCreateDevice就可以完成你的功能, 如果是KMDF的则使用WdfDeviceCreate等函数 |
|
|
板凳#
发布于:2008-09-09 09:11
DDK的kbfiltr.c中有用IoCreateDevice创建了一个设备,对于Kbfilter_Ioctl是否还要创建一个设备进行操作
|
|
地板#
发布于:2008-09-10 11:03
默认的是过滤设备,你得下传,所以你需要创建个自己的设备和联接和自己的应用通信,道理就跟SFILTER 和FILESPY的关系一样.
|
|
|
地下室#
发布于:2008-09-10 11:15
谢谢了,我先创建了一个自己的带符号链接的设备后,没有放到设备堆栈(没有调用Attach),还如同KbFilter.c一样创建了一个过滤设备,这个设备放到了设备堆栈,我用CreateFile获得句柄,用DeviceIoControl调用,这个IOCTL放到如果就是我自己用后就结束,我可以完成,但我想把IOCTL处理后下传到Kbdclass的内部IOCTL,这给地方就不太明白,老大,能不能帮帮忙了
|
|