驱动过滤设备
A. 台式电脑开机后显示"打开usb过滤驱动失败,请查看设备管理器中,通用
这是装了抄usb密码保护软件,却没袭有有效的装载或设置完善,开机时那个设置过密码的usb接口中的u盘不见了,造成查找提示。。
卸载软件,重启。
如果还恢复不了就是流氓软件,如果想干干净净,只有重装系统。。或者临时使用360启动管理,关闭启动项中这个软件的启动运行及服务运行。
B. 请教USB过滤驱动如何写端点
我的电抄脑——右键属性——硬件——设备管理器——通用串行总线控制器 ——下面会显示USB的一些相关程序。 驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。
C. 过滤驱动中打开文件时如何避免重入
在处理IRP_MJ_CREATE请求时,过滤驱动可能会使用不同的属性/权限等打开这个文件。这种情况经常发生在第二次调用ZwCreatefile时。这会导致生成一个对FSD 过滤驱动的回调(就是重入了).因而,正常的过滤驱动就要有能力检测这种重入的问题。
There are several ways of dealing with reentrancy ring an IRP_MJ_CREATE operation, and the appropriate solution for your particular driver will depend upon the circumstances. In addition, there are a number of techniques that might work for a single file system filter driver, but that fail when used in a multi-filter environment.
在处理IRP_MJ_CREATE操作过程中,有几种方法可以处理重入,处理你的驱动(中的重入)的适当方法取决于你的环境。另外,有许多种技术可以在单个文件系统过滤驱动上工作,但在多层过滤的环境下可能会失效。
For Windows XP and newer versions of Windows, the best mechanism for opening a file within the filter is to use . A filter driver can call this function and specify a given device object. The IRP_MJ_CREATE that is built will be passed to the specified device object. This technique avo
ids reentrancy issues and is the best mechanism available for a filter to open a file.
对Windows xp或者更新版的Windows来说,在过滤驱动中打开一个文件的最好方法是使用.文件过滤驱动可以调用这个函数并且指定一个给定的设备对象。
For versions of Windows prior to Windows XP, this mechanism is not available. The best mechanism in this environment is to implement your own functional equivalent of . This can be done by creating a second device object for each device you are filtering.
对Windows xp以前的Windows操作系统,这种方法无效。在这种环境下最好的方法是实现你自己的与等价的功能。这可以通过给你要过滤的设备创建第二个设备对象来实现。
For example, suppose you decide to filter some given file system device object, FSDVolumeDeviceObject. You then create a device object MyFilterDeviceObject and attach it using IoAttachDeviceToDeviceStack (of course, in Windows XP you would use instead). In addition, you create a second device object MyFilterShadowDeviceObject. This device object must be assigned a name ("DeviceMyFilterDevice27", for example). The name can be anything, but it must obviously be unique. In your device extension for your two device objects, you need to track this name, and you need to maintain pointers to the respective device objects (that is, the device extension for MyFilterShadowDeviceObject should point to MyFilterDeviceObject and the device object extension for MyFilterDeviceObject should point to yFilterShadowDeviceObject). Don't forget to set the StackSize field of the device object correctly!)
例如,假设你要过滤某个特定的文件系统设备对象,FSDVolumeDeviceObject(文件系统卷设备对象).这时你要创建一个设备对象MyFilterDeviceObject 并且使用IoAttachDeviceToDeviceStack 函数(在windows xp下使用 )来挂接它。另外,你还要创建第二个设备对象yFilterShadowDeviceObject.这个设备对象必须被指定一个名字(例如"DeviceMyFilterDevice27",注: 这里指的第二个设备对象,即Shadow device object )。名字可以是任意的,但必须唯一的。在这两个设备的设备扩展结构中,你需要跟踪这个名字
(注,其实就是做标志,你要知道你当前是处在哪个设备中,是第一个设备对象还是Shadow object )你需要维护一些指向相应的设备对象的指针(也就是说,MyFilterShadowDeviceObject的设备扩展要指向MyFilterDeviceObject,MyFilterDeviceObject的设备扩展对象要指向MyFilterShadowDeviceObject.不要忘了正确设置设备对象的StackSize成员变量。
Now, an IRP_MJ_CREATE request arrives in your filter, specifying MyFilterDeviceObject. To open the file without experiencing reentrancy problems, you call IoCreateFile (or ZwCreateFile). Since you must pass the name of the file being opened, you construct that by using both the name you gave MyFilterShadowDeviceObject and the name that is in the FileObject of the I/O stack Location (IoGetCurrentIr
pStackLocation(Irp)->FileObject).
现在,当IRP_MJ_CREATE 请求到达你的过滤驱动时,指定了 MyFilterDeviceObject.你调用IoCreateFile(或ZwCreateFile) 打开文件就没有重入的问题了.以后,你必须传递这个打开的文件的名字,这个名字是用你设置在MyFilterShadowDeviceObject中的名字和从I/O 堆栈区域中得到的文件对象中的名字一起构造的。
Since you are passing a name in that points to your second device object, the I/O Manager will build the IRP_MJ_CREATE and pass the resulting I/O request packet to your driver, but specifying MyFilterShadowDeviceObject.
当你传递一个指向你的第二个设备对象的名字,I/O管理器会构建IRP_MJ_CREATE 并且传递I/O请求的结果到你的驱动,但指定了MyFilterShadowDeviceObject.
In your IRP_MJ_CREATE dispatch handler you must detect that this is a "shadow" device object, rather than a typical filter device object. In this case, you should send the IRP_MJ_CREATE operation down to the device being filtered by MyFilterDeviceObject. Indeed, since you should not need to do any further processing, you can use IoSkipCurrentIrpStackLocation (rather than ).
在你的IRP_MJ_CREATE 分发例程处理函数中,你必须检测它是一个"Sahdow"设备对象而不是是一个典型的过滤设备对象。在这种情况下,你必须将IRP_MJ_CREATE操作下传到已经被 MyFilterDeviceObject过滤了的设备中。确实,此后你不需要作进一步的处理,你可以用IoSkipCurrentIrpStackLocation函数(不是).
D. 打开usb过滤驱动失败,请查看设备管理器中,通用串行总线控制器 是否存在
这是装了usb密码保护复软件制,却没有有效的装载或设置完善,开机时那个设置过密码的usb接口中的u盘不见了,造成查找提示。。
卸载软件,重启。
如果还恢复不了就是流氓软件,如果想干干净净,只有重装系统。。或者临时使用360启动管理,关闭启动项中这个软件的启动运行及服务运行。
E. 什么是过滤驱动
过滤驱动就是挂载在其他驱动上,对某设备的irp进行拦截过滤作用,可以对设备进行功能版扩展,或是数据加权密等的驱动程序。
比如:
1. 可以对写入硬盘的数据做加密,然后读取的时候解密,这样对于用户来说,根本不知道有加密解密的过程,然后存在硬盘上的数据是加密的。
2. 可以对已有驱动做一些扩展,或者改变已有驱动的功能。比如已有驱动一次只能写1024字节的数据,那么过滤驱动可以扩展到任何长度,然后分段调用已有驱动就是了。
过滤驱动可以在功能型驱动的上面,称之为上层过滤驱动,或者高层,反正就这个意思。过滤驱动在功能型驱动下面,称之为下层过滤驱动。看示意图:
F. 如何构造一个简单的USB过滤驱动程序
一、基本原理 我们知道,WDM(和KDM)是分层的,在构造设备栈时,IO管理器可以使一个设备对象专附加到属另外一个初始驱动程序创建的设备对象上。与初始设备对象相关的驱动程序决定的IRP,也将被发送到附加的设备对象相关的驱动程序上。
G. USB过滤驱动如何识别插入的设备是U盘还是移动硬盘
你好,制
1、你把你的Filter驱动加载到系统 的Mass Storage上面就可以了,这个驱动是USB 移动设备的驱动程序,因此他只可能是USB的移动存储设备。
2、蓝屏的时候,你通过WinDBG可以看到你哪个代码、哪行蓝屏就OK了。
H. amd主板的usb过滤器驱动有什么作用卸载了会对电脑有什么影响
AMD的USB过滤器驱动程序是抄AMD用来提供增强USB多媒体功能的驱动,但是在Windows7操作系统下安装VMware7后发现USB设备不能正常加载,提示31错误,发现是服务里面的“VMware USB Arbitration Service”无法启动导致,手动启动总是报31错误,这就是因为系统安装了AMD的USB过滤器驱动的原因,只要是使用AMD平台的Windows7系统应该都存在这个问题,解决问题的办法就是把USB过滤器驱动移除。
移除USB过滤器的步骤:
开始->控制面板->卸载程序,(或者这运行对话框里面输入:“control”,也能进入控制面板里面)找到”ATI Catalyst Install Manager”,右键点击更改,然后选择自定义,“下一步”后就会在第一行发现“AMD USB 过滤器驱动”,然后选择卸载,就OK了!
I. USB总线过滤驱动中获取设备描述符后哪个标识表示设备是蓝牙
推测是设备要求的usb接口版本较高造成的。
现在很多笔记本电脑都是两个usb3.0或者3.1接口内搭一个容usb2.0接口。
usb设备是要求usb3.0以上的,而那个接口是usb2.0的,所以无法读龋 除此之外,也有可能是接触不良等故障
J. linux怎样加载文件过滤驱动
文件系统过滤驱动是一种可选的,为文件系统提供具有附加值功能的驱动程序。文件系统过滤驱动是一种核心模式组件,它作为Windows NT执行体的一部分运行。
文件系统过滤驱动可以过滤一个或多个文件系统或文件系统卷的I/O操作。按不同的种类划分,文件系统过滤驱动可以分成日志记录、系统监测、数据修改或事件预防几类。通常,以文件系统过滤驱动为核心的应用程序有防毒软件、加密程序、分级存储管理系统等。
二、文件系统过滤驱动并不是设备驱动
设备驱动是用来控制特定硬件I/O设备的软件组件。例如:DVD存储设备驱动是一个DVD驱动。
相反,文件系统过滤驱动与一个或多个文件系统协同工作来处理文件I/O操作。这些操作包括:创建、打开、关闭、枚举文件和目录;获取和设置文件、目录、卷的相关信息;向文件中读取或写入数据。另外,文件系统过滤驱动必须支持文件系统特定的功能,例如缓存、锁定、稀疏文件、磁盘配额、压缩、安全、可恢复性、还原点和卷装载等。
下面两部分详细的阐述了文件系统过滤驱动和设备驱动之间的相似点与不同点。
三、安装文件系统过滤驱动
对于Windows XP和后续操作系统来说,可以通过INI文件或安装应用程序来安装文件系统过滤驱动(对于Windows 2000和更早的操作系统,过滤驱动通常通过服务控制管理器Service Control Manager来进行安装)。
四、初始化文件系统过滤驱动
与设备驱动类似,文件系统过滤驱动也使用DriverEntry例程进行初始化工作。在驱动程序加载后,加载驱动相同的组件将通过调用驱动程序的 DriverEntry例程来对驱动程序进行初始化工作。对于文件系统过滤驱动来说,加载和初始化过滤驱动的系统组件为I/O管理器。
DriverEntry例程运行于系统线程上下文中,其IRQL = PASSIVE_LEVEL。本例程可分页,详细信息参见MmLockPagableCodeSection。
DriverEntry例程定义如下:
NTSTATUS
DriverEntry (
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
本例程有两个输入参数。第一个参数,DriverObject为系统在文件系统过滤驱动加载时所创建的驱动对象;第二个参数,RegistryPath为包含驱动程序注册键路径的Unicode字符串。
文件系统过滤驱动按如下顺序执行DriverEntry例程:
01、创建控制设备对象:
文件系统过滤驱动的DriverEntry例程通常以创建控制设备对象作为该例程的起始。创建控制设备对象的目的在于允许应用程序即使在过滤驱动加载到文件系统或卷设备对象之前也能够直接与过滤驱动进行通信。
注意:文件系统也会创建控制设备对象。当文件系统过滤驱动将其自身附加到文件系统之上时(而不是附加到某一特定文件系统卷),过滤驱动同样将其自身附加到文件系统的控制设备对象之上。
在FileSpy驱动范例中,控制设备对象按如下方式创建:
RtlInitUnicodeString(&nameString, FILESPY_FULLDEVICE_NAME);
status = IoCreateDevice(
DriverObject, //DriverObject
0, //DeviceExtensionSize
&nameString, //DeviceName
FILE_DEVICE_DISK_FILE_SYSTEM, //DeviceType
FILE_DEVICE_SECURE_OPEN, //DeviceCharacteristics
FALSE, //Exclusive
&gControlDeviceObject); //DeviceObject
RtlInitUnicodeString(&linkString, FILESPY_DOSDEVICE_NAME);
status = IoCreateSymbolicLink(&linkString, &nameString);
与文件系统不同,文件系统过滤驱动并不是一定要为其控制设备对象命名。如果传递给DeviceName参数一个非空(Non-NULL)值,该值将作为控制设备对象的名称。接下来,在前面的代码范例中DriverEntry可以调用IoCreateSymbolicLink例程来将该对象的核心模式名称与应用程序可见的用户模式名称关联到一起(同样可以通过调用IoRegisterDeviceInterface来使设备对象对应用程序可见)。
注意:由于控制设备对象是唯一不会附加到设备堆栈中的设备对象,因此控制设备对象是唯一的可安全命名的设备对象。由此,是否为文件系统过滤驱动的控制设备对象是否命名是可选的。
注意:文件系统的控制设备对象必须命名。过滤设备对象从不命名。