当前位置: 代码迷 >> 驱动开发 >> USB资料过滤驱动
  详细解决方案

USB资料过滤驱动

热度:104   发布时间:2016-04-28 10:38:06.0
USB文件过滤驱动
我通过截取Irp_MJ_CREATE来实现对U盘的禁用代码如下
NTSTATUS USBFilterDispatchCreate( 
    IN PDEVICE_OBJECT DeviceObject, 
    IN PIRP Irp )
{
    PDEVICE_EXTENSION   devExt;
    PIO_STACK_LOCATION  currentIrpStack;
    PIO_STACK_LOCATION  nextIrpStack;
    devExt = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
    currentIrpStack = IoGetCurrentIrpStackLocation(Irp);
    nextIrpStack = IoGetNextIrpStackLocation(Irp);    
    *nextIrpStack = *currentIrpStack;
    Irp->IoStatus.Information=0;
    Irp->IoStatus.Status=STATUS_ACCESS_DENIED;
    IoCompleteRequest(Irp,IO_NO_INCREMENT);
    return IoCallDriver( devExt->TopOfStack, Irp );
}
编译过程没有问题但是安装好后U盘还是照常加载,怎么回事是不是我绑定的设备有问题?我绑定的设备是"\\Device\\USBFDO-1"以前试过"\\Device\\USBFDO-0"也不行。求指教
------解决方案--------------------
你需要把你如何做的介绍得更加仔细一些。

你确认你的Filter驱动被对应的U盘加载了么?
试着用WinDBG调试一下?
------解决方案--------------------
修改irp
------解决方案--------------------
USB禁用跟文件驱动没什么关系

简单点的使用SETUPAPI设置设备管理器 就可以了

驱动下面 从卷监控 发送IOCTL查询加载的设备类型 是USB就返回失败禁用
从设备监控 也行
不过应该不是你的那个设备名\\Device\\USBFDO-0 这个是错误的名字
------解决方案--------------------
U盘不可读是可以用文件驱动的
对于文件路径在U盘上的创建和写入操作可以返回失败禁止 
注意还有SETFILEINFORMATION 派遣函数 这个会改变文件的长度和删除 重命名 也要监控
------解决方案--------------------
引用:
另外我的AddDevice函数是这样的
NTSTATUS AddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT pdo)
{ // AddDevice
KdPrint((DRIVERNAME " - Entering AddDevice: DriverObject %8.8lX\n", DriverObject)……


反正我觉得这个AddDevice代码没有问题的,很规范的教科书代码啊
  相关解决方案