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

📄 wdf_filter_disp.h

📁 国内文件驱动编程知名人物蔡大侠的教程源代码
💻 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 + -