DriveFilterExtension

DriveFilterExtension  windows驱动过滤系统文件开发

typedef struct _DEVICE_EXTENSION {undefined
 //media_in_device是指这个设备是否已经指定了一个文件作为存储媒质。
 //这是一个用文件来虚拟磁盘的驱动。那么一个磁盘应该对应一个实际存在的文件。
 //读写这个磁盘的请求最终转变为对文件的读写。
 //如果一个磁盘设备对象还没有指定文件,那么这个内容是FALSE。
    BOOLEAN                     media_in_device;

 //file_handle是文件句柄。也就是这个虚拟磁盘所对应的文件。
    HANDLE                      file_handle;

 //file_information是这个文件的一些信息。
    ANSI_STRING                 file_name;
   
 LARGE_INTEGER               file_size;
 
 //read_only是否只读
    BOOLEAN                     read_only;

 //访问文件的时候需要使用的一个线程客户安全性上下文
    PSECURITY_CLIENT_CONTEXT    security_client_context;

 //是一个链表头。一部分irp(windows发来的请求包)被放入这个链表中。
 //我们为每个磁盘对象开启一个系统线程(处理线程),专门用来处理这些请求。
    LIST_ENTRY                  list_head;

 //是为了保证链表读写同步的锁
    KSPIN_LOCK                  list_lock;

 //是一个事件。当链表中没有请求的时候,处理请求的系统线程并不做任何事情,
 //而只等待这个事件。当有请求到来,我们把请求放入链表,然后设置这个事件。
 //处理线程就会开始处理这些请求。
    KEVENT                      request_event;

 //是线程的指针,用来最后等待这个线程的结束。
    PVOID                       thread_pointer;

 //是一个标志。如果设置为TRUE,处理线程执行的时候检测到这个,就会把自己终止掉。
    BOOLEAN                     terminate_thread;

} DEVICE_EXTENSION, *PDEVICE_EXTENSION;

posted on 2022-04-11 00:03  lydstory  阅读(38)  评论(0)    收藏  举报

导航