RT
用磁盘过滤?完全不对。我要监视有新磁盘的加入,就执行我的一些代码,在驱动下该怎么做呢?
能监视到各种类型的磁盘加入吗?不局限于USB设备对Tr0j4n的内核实力有所耳闻,但未曾见过出招。还请不吝赐教

解决方案 »

  1.   

    文件系统过滤驱动,绑定好FileSystem之后,写一个回调函数,在其中绑定FS CDO。IoRegisterFsRegistrationChange注册监视回调。
    就这么简单
      

  2.   

    不知道你有没有看过SFilter的例子,里面其实已经说得很清楚了当新的设备生成的时候,FS CDO会得到一个IRP_MJ_FILE_SYSTEM_CONTROL,小IRP为IRP_MN_MOUNT。
    其实主要就是那个注册回调的API比较关键,没什么技术含量的
      

  3.   

    这玩意没什么说头,《Windows 文件系统过滤驱动开发教程》里面都有讲过,SFilter也是现成的源代码。你自己去看看吧
      

  4.   

    额回调函数就这样嘛VOID
    SfFsNotification (
    IN PDEVICE_OBJECT DeviceObject,
    IN BOOLEAN FsActive)
    {
    UNICODE_STRING name;
    WCHAR nameBuffer[MAX_DEVNAME_LENGTH];
    PAGED_CODE();
    RtlInitEmptyUnicodeString( &name, nameBuffer, sizeof(nameBuffer) );
    SfGetObjectName( DeviceObject, &name );
    SF_LOG_PRINT( SFDEBUG_DISPLAY_ATTACHMENT_NAMES,
    ("SFilter!SfFsNotification: %s %p \"%wZ\" (%s)\n",
    (FsActive) ? "Activating file system " : "Deactivating file system",
    DeviceObject,
    &name,
    GET_DEVICE_TYPE_NAME(DeviceObject->DeviceType)) );
    if (FsActive) {
    SfAttachToFileSystemDevice( DeviceObject, &name );
    } else {
    SfDetachFromFileSystemDevice( DeviceObject );
    }
    }文件系统过滤驱动我想你会写的咯,FastIo怎么写随你高兴了调用注册就这样
    status = IoRegisterFsRegistrationChange( DriverObject, SfFsNotification );
      

  5.   

    貌似很多函数和宏很陌生,不是API....GET_DEVICE_TYPE_NAME是什么,SfAttachToFileSystemDevice又是什么啊?
      

  6.   

    杯具,SFilter里面都有的,你Google下都一堆。怎么这么懒~
      

  7.   

    顺便问下IoRegisterFsRegistrationChange 这是说当系统中有任何文件系统被激活和注销时才调用,
    新的磁盘什么也没有,也会调用回调