wd_shadow_io.c in windows_file_monitor


A better filter paper-driven book, word format, and source Liezi pay procedures....Original Link
    Sponsored links

			
///
///	@file		wd_shadow_io.c
///	@brief	通过 shadow device 来进行文件io.
///
///	在文件过滤驱动中做文件io是非常困难的事情.因为你始终要
///	考虑ZwCreateFile,ZwReadFile等函数的重入.否则你要自己发Irp
///	,会更加痛苦.	使用wdff_shadow_open打开文件后得到文件句
///	柄,用ZwXxx系列读写内容和设置属性都会直接发到下层设备.
///	而且open本身也会直接发到下层设备(通过shadow device.).这
///	就解决了在文件过滤驱动中做文件io操作的困难.
///
///	@author tan wen 谭文
///	@date	2005-12-23
///

//	以下的代码仅仅做示范用。你可以修改和使用,但仅仅限于非商业
//	的应用。本代码不做任何质量和安全上的保证。任何商业使用必须
//	得到作者的许可。可以以以下方式与作者联系:
//  MSN:	walled_river@hotmail.com
//	EMail:	mfc_tan_wen@163.com
//	QQ:		16191935


#include <wdf.h>
#include <wd_sys.h>
#include <wd_list.h>
#include <wd_dev.h>

/// 一条记录,保存从shadow_dev到真实设备的对应关系.
typedef struct shadow_of_dev_record_
{
	wd_dev *shadow_dev;
	wd_dev *real_dev;
} shadow_of_dev_record;

wd_list *s_shadow_dev_records = NULL;
wd_spin s_lock;

/// 在DriverEntry中调用这个函数.
wd_bool wd_sdio_driver_entry()
{
	wd_spin_init(&s_lock);
	s_shadow_dev_records = wd_list_create();
	if(s_shadow_dev_records == NULL)
		return wd_false;
	return wd_true;
}

/// 在Unload中,所有设备生成完毕后,调用这个函数清理所有的
/// 影设备.但是这里有两种情况.有些驱动会在Unload的时候自己
/// 删除所有生成的设备,有些不会.所以当你自己已经删除了那些
/// 设备的时候,传入参数del_devs应该为false,也就是没有必要由
/// 本函数删除所有影设备.反过来则表示由本函数删除.
wd_void wd_sdio_driver_unload(wd_bool del_devs)
{
	wd_list_node *node = NULL;
	wd_list_node *next_node;
	shadow_of_dev_record *rs = NULL;
				

			...
			...
			... to be continued.

  This is a preview. To get the complete source file, 
  please click here to download the whole source code package.

			
			


Project Files

    Sponsored links
NameSizeDate
 <01.Windows文件系统过滤驱动开发教程(1)>0.00 B19% 13-10-05
 <02.Windows文件系统过滤驱动开发教程(2)>0.00 B22% 27-07-06
 <03.Windows文件系统过滤驱动开发教程(3)>0.00 B17% 08-12-05
 04.Windows文件系统过滤驱动开发教程(4).doc29.50 kB19-10-05 16:30
 05.Windows文件系统过滤驱动开发教程(5).doc32.50 kB10-01-06 10:39
 06.Windows文件系统过滤驱动程序教程(6).doc33.50 kB10-01-06 12:03
 07.Windows文件系统过滤驱动程序教程(7).doc40.00 kB01-11-05 17:36
 08.Windows文件系统过滤驱动程序教程(8).doc33.50 kB27-07-06 14:26
 09.Windows文件系统过滤驱动程序教程(9).doc30.00 kB13-10-05 11:52
 10.Windows文件系统过滤驱动程序教程(10).doc29.50 kB13-10-05 11:53
 <11.Windows文件系统过滤驱动开发教程(11)>0.00 B17% 13-10-05
 fsfe.c2.36 kB08-03-06 09:05
 fsfe.dsp3.38 kB08-03-06 09:05
 fsfe.h3.40 kB08-03-06 09:03
 fsfe.vcproj2.02 kB02-03-06 17:48
 makefile374.00 B07-09-05 15:41
 mybuild.bat966.00 B06-03-06 23:41
 mylib.lib312.67 kB08-03-06 09:25
 sources108.00 B02-03-06 16:30
 wdf_filter.c6.15 kB08-03-06 09:05
 wdf_filter.h3.23 kB08-03-06 09:03
 wdf_filter_disp.c12.88 kB08-03-06 09:05
 wdf_filter_disp.h1.98 kB08-03-06 09:03
 wdf_filter_fio.c5.49 kB08-03-06 09:05
 wdf_filter_fio.h5.34 kB08-03-06 09:03
 wdf_filter_fsctl.c8.14 kB08-03-06 09:05
 wdf_filter_fsctl.h2.38 kB08-03-06 09:03
 fsfe.h3.40 kB08-03-06 09:03
 wdf_filter.h3.23 kB08-03-06 09:03
 wdf_filter_disp.h1.98 kB08-03-06 09:03
 wdf_filter_fio.h5.34 kB08-03-06 09:03
 wdf_filter_fsctl.h2.38 kB08-03-06 09:03
 wdf.h4.02 kB02-03-06 17:29
 wd_dev.h14.93 kB28-02-06 17:57
 wd_file_to_name.h904.00 B20-12-05 19:26
 wd_fs.h1.01 kB21-12-05 15:07
 wd_irp.h6.97 kB28-02-06 14:45
 wd_list.h1.55 kB28-02-06 09:40
 wd_mem.h2.07 kB21-12-05 15:01
 wd_set.h1.59 kB20-12-05 18:58
 wd_shadow_io.h2.03 kB04-03-06 10:36
 wd_syn.h2.38 kB20-12-05 19:54
 wd_sys.h3.57 kB04-03-06 10:42
 wd_ustr.h2.32 kB23-12-05 13:33
 fsfed.lib312.67 kB08-03-06 09:25
 wdfd.lib258.02 kB08-03-06 09:25
 create_filter.c2.05 kB08-03-06 09:07
 create_filter.dsp2.89 kB08-03-06 09:24
 makefile374.00 B07-09-05 15:41
 mybuild.bat712.00 B06-03-06 23:55
 CreateFilter.sys20.00 kB07-03-06 00:10
 sources179.00 B07-03-06 00:08
 file_filter.c3.17 kB08-03-06 09:26
 file_filter.dsp2.84 kB08-03-06 09:24
 makefile374.00 B07-09-05 15:41
 mybuild.bat710.00 B08-03-06 09:24
 FileFilter.sys20.50 kB08-03-06 09:26
 sources177.00 B08-03-06 08:55
 makefile374.00 B07-09-05 15:41
 mybuild.bat949.00 B02-03-06 16:30
 mylib.lib258.02 kB08-03-06 09:25
 sources108.00 B02-03-06 15:45
 wdf.dsp3.63 kB04-03-06 10:34
 wdf.h4.02 kB02-03-06 17:29
 wdf.vcproj2.30 kB02-03-06 17:48
 wd_dev.h14.93 kB28-02-06 17:57
 wd_file_to_name.c7.12 kB08-03-06 09:03
 wd_file_to_name.h904.00 B20-12-05 19:26
 wd_fs.h1.01 kB21-12-05 15:07
 wd_irp.h6.97 kB28-02-06 14:45
 wd_list.c2.68 kB08-03-06 09:03
 wd_list.h1.55 kB28-02-06 09:40
 wd_mem.h2.07 kB21-12-05 15:01
 wd_set.h1.59 kB20-12-05 18:58
 wd_shadow_io.c10.22 kB04-03-06 10:35
 wd_shadow_io.h2.03 kB04-03-06 10:36
 wd_syn.h2.38 kB20-12-05 19:54
 wd_sys.c21.22 kB08-03-06 09:03
 wd_sys.h3.57 kB04-03-06 10:42
 wd_ustr.c8.15 kB08-03-06 09:03
 wd_ustr.h2.32 kB23-12-05 13:33
 wdf_filter.dsw1.47 kB08-03-06 09:24
 如何编译.txt346.00 B08-03-06 08:52
 文件过滤系统设计.txt17.27 kB08-03-06 09:36
 wdf_filter1.rar297.71 kB26-07-06 17:28
 心得.txt1.30 kB27-07-06 14:41
 <i386>0.00 B17-10-06 09:02
 <i386>0.00 B17-10-06 09:02
 <i386>0.00 B17-10-06 09:02
 <objchk_wnet_x86>0.00 B17-10-06 09:02
 <objchk_wnet_x86>0.00 B17-10-06 09:02
 <i386>0.00 B17-10-06 09:02
 <Debug>0.00 B17-10-06 09:02
 <objchk_wnet_x86>0.00 B17-10-06 09:02
 <Release>0.00 B17-10-06 09:02
 <fsfe>0.00 B17-10-06 09:02
 <wdf>0.00 B17-10-06 09:02
 <create_filter>0.00 B17-10-06 09:02
 <file_filter>0.00 B17-10-06 09:02
 <Debug>0.00 B17-10-06 09:02
 <objchk_wnet_x86>0.00 B17-10-06 09:02
 <Debug>0.00 B17-10-06 09:02
 <fsfe>0.00 B17-10-06 09:02
 <inc>0.00 B17-10-06 09:02
 <lib>0.00 B17-10-06 09:02
 <samples>0.00 B17-10-06 09:02
 <wdf>0.00 B17-10-06 09:02
 <wdf_filter1>0.00 B17-10-06 09:02
 <wdf_filter1>0.00 B17-10-06 09:02
 <文件系统过滤驱动开发教程>0.00 B05-09-08 09:10
...

Related Items

    Sponsored links