刚开始学习驱动开发,我现在正做一个磁盘过滤驱动,我得到整个磁盘的写操作后怎么从里面找出来D盘的写操作呢?就是说把D盘的写操作挑出来,我现在不知道要得到D盘要用什么条件? 各位,知道的帮个忙,我就想实现“在磁盘过滤驱动中要捕获指定分区(D分区)的数据”, 但是我不知道怎么区分得到的请求中的写数据是往哪个盘写的? 

解决方案 »

  1.   

    我在IRP_MJ_WRITE中用IoVolumeDeviceToDosName,但是currentIrpStack->FileObject == NULL是怎么回事?是不是这个函数只能在文件驱动中用啊?
      

  2.   

    IoVolumeDeviceToDosName 哪都能用! 
      

  3.   


    但为什么currentIrpStack->FileObject == NULL呢?
      

  4.   

    currentIrpStack->FileObject == NULL 只能说明当前irp的文件对象为空,而不能说明是IoVolumeDeviceToDosName的问题,原型:
    NTSTATUS IoVolumeDeviceToDosName( __in  PVOID VolumeDeviceObject,__out PUNICODE_STRING DosName
        );
    这个函数对象是作为输入参数进行传入,所以FileObject为NULL,跟这个函数无任何关系! 自然也就什么都没!