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

📄 wd_shadow_io.h

📁 国内文件驱动编程知名人物蔡大侠的教程源代码
💻 H
字号:
///
///	@file		wd_shadow_io.h
///	@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


#ifndef _WD_SHADOW_IO_HEADER_

#define _WD_SHADOW_IO_HEADER_

#include "wdf.h"

/// 在DriverEntry中调用这个函数.
wd_bool wd_sdio_driver_entry();

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

/// 在Dispatch函数中,最先调用这个函数来处理irp.如果返回true,则
/// 立刻返回*status结束处理.如果为false,继续按原路径处理.
wd_bool wd_sdio_irp_disp(wd_dev *dev, wd_irp *irp, wd_stat *status);

/// 生成影设备.调用这个函数可以给任何有名设备生成影设备.在过
/// 滤系统中,如果有设备需要影设备,则在生成改设备后调用它.
wd_dev *wd_sdio_shadow_create(
			    wd_drv *drv,
				wd_ustr *dev_name,
				wd_dev *dev, 
				const wd_wchar *postfix);

/// 删除某个设备的影设备.如果该设备本身并没有影设备,那么不删除
/// 它.在过滤系统中,任何需要影子设备的设备删除之前调用这个函数.
wd_bool wd_sdio_shadow_delete(
				 wd_dev *dev);

/// 得到一个影设备的本设备.如果该设备本身不是一个影设备,那
/// 么返回NULL.如果是,那么返回该设备的本设备.
wd_dev *wd_sdio_get_real_dev(
					wd_dev *shadow_dev);


#endif //_WD_SHADOW_IO_HEADER_

⌨️ 快捷键说明

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