📄 wdf_filter_disp.h
字号:
// 头文件: wdf_filter_disp.h
//
// 代码文件: wdf_filter_disp.c
//
// 说明: 这两个文件中含有所有wdf_filter所用到dispatch函
// 数的声明和实现。开发filesys filter驱动的时候需
// 要用到这个.
//
// 依赖: 这个头文件依赖于wdf.h
#ifndef _WDF_FILTER_DISP_8789eiuie_uf9io3409f_984j_893kcn_
#define _WDF_FILTER_DISP_8789eiuie_uf9io3409f_984j_893kcn_
#include "wdf_filter.h"
#include "wdf_filter_fsctl.h"
#define WDFF_SHADOW_POSTFIX L"_34W71BG0O3K"
enum {
wd_irp_mn_mount = IRP_MN_MOUNT_VOLUME,
wd_irp_mn_load_filesys = IRP_MN_LOAD_FILE_SYSTEM,
wd_irp_mn_user_req = IRP_MN_USER_FS_REQUEST
};
enum {
wdf_fsctl_dismount = FSCTL_DISMOUNT_VOLUME
};
// 得到绑定的设备
_inline wd_dev *wdff_dev_attached(wd_dev *dev)
{
if(dev == NULL || wd_dev_ext(dev) == NULL)
return NULL;
return ((wdff_dev_ext *)wd_dev_ext(dev))->attached_to;
}
_inline wd_bool wdff_care(wd_ulong type)
{
return (((type) == wd_dev_disk_fs) ||
((type) == wd_dev_cdrom_fs) ||
((type) == wd_dev_network_fs));
}
// 绑定一个文件系统驱动设备.
wd_stat wdff_attach_fs_dev(wd_dev *fs_dev);
wd_stat wdff_attach_fs_vols(wd_drv *fs_drv);
wd_void wdff_unload(in wd_drv *driver);
wd_stat wdff_disp_default(in wd_dev *dev,in wd_pirp irp);
wd_stat wdff_disp_create(in wd_dev *dev,in wd_pirp irp);
wd_stat wdff_disp_close_clean_up(in wd_dev *dev,in wd_pirp irp);
wd_stat wdff_disp_file_sys_ctl(in wd_dev *dev,in wd_pirp irp);
wd_stat wdff_disp_read_write(in wd_dev *dev,in wd_pirp irp);
wd_stat wdff_disp_device_io_ctrl(in wd_dev *dev,in wd_pirp irp);
wd_void wdff_init_buf();
// 本函数枚举所有可能的文件系统对象,并判断A-Z的卷设备,如果
// 符合该驱动对象,那么则绑定之。无论XP还是2k都可以调用本函数。
// 这个函数仅仅能在DriverEntry中调用。
wd_void wdff_attach_all_fs();
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -