首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

USB资料过滤驱动

2013-01-05 
USB文件过滤驱动我通过截取Irp_MJ_CREATE来实现对U盘的禁用代码如下NTSTATUS USBFilterDispatchCreate(IN

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代码没有问题的,很规范的教科书代码啊

热点排行