⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 create_filter.c

📁 国内文件驱动编程知名人物蔡大侠的教程源代码
💻 C
字号:
#include "fsfe/fsfe.h"
#include "wdf/wd_file_to_name.h"

#define wd_printf10 DbgPrint

wd_int 
my_create(	in_ wd_dev *cur,
				in_ wd_dev *next,
				in_ wd_irp *irp,
				out_ wd_stat *status,
				out_ wd_void **context)
{
	wd_irpsp *irpsp = wd_irp_cur_sp(irp); 
	wd_file *file = wd_irpsp_file(irpsp);
	*context = (wd_void *)file;
	return WDFF_CB_SYN_COMP;
}

wd_stat
my_create_comp(	in_ wd_dev *cur,
					in_ wd_dev *dev,
					in_ wd_irp *irp,
					in_ wd_void *context)
{
	wd_file *file = (wd_file *)context;
	wd_irpsp *irpsp = wd_irp_cur_sp(irp);
	wd_stat status;
	wd_ustr_h path = NULL;

	if(file && wd_suc(wd_irp_stat(irp)))
	{
		// 成功的时候,我保存文件名字.
		if(wd_file_fton_create(file))
		{
			path = wd_file_ftop(file);
			if(path != NULL)
			{
				wd_printf10("CREATE:[%wZ]\r\n", 
					wd_ustr_h_ustr(path));
				wd_ustr_h_free(path);
			}
		}
	}

	return STATUS_SUCCESS;
}

wd_int
my_close_clean_up(in_ wd_dev *cur,
				  in_ wd_dev *next,
				  in_ wd_irp *irp,
				  out_ wd_stat *status,
				  out_ wd_void **context)
{
	wd_irpsp *irpsp = wd_irp_cur_sp(irp); 
	wd_file *file = wd_irpsp_file(irpsp);
	*context = NULL;
	if(file != NULL && wd_irpsp_major( irpsp ) ==  IRP_MJ_CLEANUP)
	{
		wd_file_fton_close(file);
	}
	return WDFF_CB_GO_ON;
}


wd_void fsfe_exit()
{

}

wd_void fsfe_main()
{
	ULONG ip;
	fsfe_set_cdo_name(L"\\FileSystem\\Filters\\create_filter_cdo");
	fsfe_set_cdo_link(L"\\DosDevices\\create_filter_cdo");
	fsfe_set_cdo_name_2k(L"\\FileSystem\\create_filter_cdo");
	fsfe_set_cdo_link_2k(L"\\DosDevices\\create_filter");
	fsfe_set_create(my_create);
	fsfe_set_create_comp(my_create_comp);
	fsfe_set_close_clean_up(my_close_clean_up);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -