阅读:2686回复:4
求教USB过滤驱动如何限制某类设备的使用(如U盘)
我写了个过滤驱动,想限制U盘的使用,但是在限制完后,所有USB设备均不能使用,我是想在IRP_MN_START_DEVICE过程中就来判断设备类型,如果是U盘,就返回加载失败.
哪会大侠指点一下如何在IRP_MN_START_DEVICE判断U盘设备,本人为初学者,请附上代码,谢谢. |
|
沙发#
发布于:2011-04-02 15:47
难道没有清楚或搞过的大牛吗
|
|
板凳#
发布于:2011-04-02 16:53
判断设备的类,比如usbstor之类,u盘之类是usbstor,键盘是hid
|
|
|
地板#
发布于:2011-04-02 16:53
代码就免了,多简单的,而且是商业代码,也不方便帖。但是只要你细心,就会明白。
|
|
|
地下室#
发布于:2011-04-08 09:19
在卷加载的实际判断 是否为USB STORAGE类型来区分是否为U盘
发送IRP查询总线类型 区分本地和U盘类型(是区分本地和U盘) 论坛有贴代码的 不过要自己改 你搜索下 就是ZNSOFT发的查询BUSTYPE 论坛也有很多禁止USB 存储设备的代码 区分USB和U盘的话 获得设备的DRIVER类型是否为USB STORAGE也可以区分U盘和其他USB 网络转载如下:(注意字符长度 这个代码似乎没注意宽字符长度) 我完全是用DDK的例子修改的,就是src\general\toaster\filter做的修改,在 IRP_MJ_INTERNAL_DEVICE_CONTROL的分发例程中,比较驱动的名称是否为usbstor,如果是的话即为 存储设备,将IRP返回即可 if (_wcsnicmp(DeviceObject->AttachedDevice->DriverObject->DriverName.Buffer,L"\Driver\USBSTOR",15)==0) ...{ DbgPrint("Find USB StorIRP_MJ_DEVICE_INTERL_CONTROL::Cmp Result is %d ", _wcsnicmp(DeviceObject->AttachedDevice->DriverObject->DriverName.Buffer,L"\Driver\USBSTOR",15)); Irp->IoStatus.Status = STATUS_ACCESS_DENIED; Irp->IoStatus.Information = 0; IoCompleteRequest( Irp, IO_NO_INCREMENT ); return STATUS_ACCESS_DENIED; } else ...{ Irp->IoStatus.Status = STATUS_SUCCESS; return FilterPass(DeviceObject, Irp); } |
|