📄 create_filter.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 + -