CodeForge.comFree Open Source Codes Forge and Sharing |
///
/// @file wd_shadow_io.c
/// @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
#include <wdf.h>
#include <wd_sys.h>
#include <wd_list.h>
#include <wd_dev.h>
/// 一条记录,保存从shadow_dev到真实设备的对应关系.
typedef struct shadow_of_dev_record_
{
wd_dev *shadow_dev;
wd_dev *real_dev;
} shadow_of_dev_record;
wd_list *s_shadow_dev_records = NULL;
wd_spin s_lock;
/// 在DriverEntry中调用这个函数.
wd_bool wd_sdio_driver_entry()
{
wd_spin_init(&s_lock);
s_shadow_dev_records = wd_list_create();
if(s_shadow_dev_records == NULL)
return wd_false;
return wd_true;
}
/// 在Unload中,所有设备生成完毕后,调用这个函数清理所有的
/// 影设备.但是这里有两种情况.有些驱动会在Unload的时候自己
/// 删除所有生成的设备,有些不会.所以当你自己已经删除了那些
/// 设备的时候,传入参数del_devs应该为false,也就是没有必要由
/// 本函数删除所有影设备.反过来则表示由本函数删除.
wd_void wd_sdio_driver_unload(wd_bool del_devs)
{
wd_list_node *node = NULL;
wd_list_node *next_node;
shadow_of_dev_record *rs = NULL;
...
...
... to be continued.
This is a preview. To get the complete source file,
please click here to download the whole source code package.
| Name | Size | Date |
| 0.00 B | 19% 13-10-05 | |
| 0.00 B | 22% 27-07-06 | |
| 0.00 B | 17% 08-12-05 | |
| 29.50 kB | 19-10-05 16:30 | |
| 32.50 kB | 10-01-06 10:39 | |
| 33.50 kB | 10-01-06 12:03 | |
| 40.00 kB | 01-11-05 17:36 | |
| 33.50 kB | 27-07-06 14:26 | |
| 30.00 kB | 13-10-05 11:52 | |
| 29.50 kB | 13-10-05 11:53 | |
| 0.00 B | 17% 13-10-05 | |
| 2.36 kB | 08-03-06 09:05 | |
| 3.38 kB | 08-03-06 09:05 | |
| 3.40 kB | 08-03-06 09:03 | |
| 2.02 kB | 02-03-06 17:48 | |
| 374.00 B | 07-09-05 15:41 | |
| 966.00 B | 06-03-06 23:41 | |
| 312.67 kB | 08-03-06 09:25 | |
| 108.00 B | 02-03-06 16:30 | |
| 6.15 kB | 08-03-06 09:05 | |
| 3.23 kB | 08-03-06 09:03 | |
| 12.88 kB | 08-03-06 09:05 | |
| 1.98 kB | 08-03-06 09:03 | |
| 5.49 kB | 08-03-06 09:05 | |
| 5.34 kB | 08-03-06 09:03 | |
| 8.14 kB | 08-03-06 09:05 | |
| 2.38 kB | 08-03-06 09:03 | |
| 3.40 kB | 08-03-06 09:03 | |
| 3.23 kB | 08-03-06 09:03 | |
| 1.98 kB | 08-03-06 09:03 | |
| 5.34 kB | 08-03-06 09:03 | |
| 2.38 kB | 08-03-06 09:03 | |
| 4.02 kB | 02-03-06 17:29 | |
| 14.93 kB | 28-02-06 17:57 | |
| 904.00 B | 20-12-05 19:26 | |
| 1.01 kB | 21-12-05 15:07 | |
| 6.97 kB | 28-02-06 14:45 | |
| 1.55 kB | 28-02-06 09:40 | |
| 2.07 kB | 21-12-05 15:01 | |
| 1.59 kB | 20-12-05 18:58 | |
| 2.03 kB | 04-03-06 10:36 | |
| 2.38 kB | 20-12-05 19:54 | |
| 3.57 kB | 04-03-06 10:42 | |
| 2.32 kB | 23-12-05 13:33 | |
| 312.67 kB | 08-03-06 09:25 | |
| 258.02 kB | 08-03-06 09:25 | |
| 2.05 kB | 08-03-06 09:07 | |
| 2.89 kB | 08-03-06 09:24 | |
| 374.00 B | 07-09-05 15:41 | |
| 712.00 B | 06-03-06 23:55 | |
| 20.00 kB | 07-03-06 00:10 | |
| 179.00 B | 07-03-06 00:08 | |
| 3.17 kB | 08-03-06 09:26 | |
| 2.84 kB | 08-03-06 09:24 | |
| 374.00 B | 07-09-05 15:41 | |
| 710.00 B | 08-03-06 09:24 | |
| 20.50 kB | 08-03-06 09:26 | |
| 177.00 B | 08-03-06 08:55 | |
| 374.00 B | 07-09-05 15:41 | |
| 949.00 B | 02-03-06 16:30 | |
| 258.02 kB | 08-03-06 09:25 | |
| 108.00 B | 02-03-06 15:45 | |
| 3.63 kB | 04-03-06 10:34 | |
| 4.02 kB | 02-03-06 17:29 | |
| 2.30 kB | 02-03-06 17:48 | |
| 14.93 kB | 28-02-06 17:57 | |
| 7.12 kB | 08-03-06 09:03 | |
| 904.00 B | 20-12-05 19:26 | |
| 1.01 kB | 21-12-05 15:07 | |
| 6.97 kB | 28-02-06 14:45 | |
| 2.68 kB | 08-03-06 09:03 | |
| 1.55 kB | 28-02-06 09:40 | |
| 2.07 kB | 21-12-05 15:01 | |
| 1.59 kB | 20-12-05 18:58 | |
| 10.22 kB | 04-03-06 10:35 | |
| 2.03 kB | 04-03-06 10:36 | |
| 2.38 kB | 20-12-05 19:54 | |
| 21.22 kB | 08-03-06 09:03 | |
| 3.57 kB | 04-03-06 10:42 | |
| 8.15 kB | 08-03-06 09:03 | |
| 2.32 kB | 23-12-05 13:33 | |
| 1.47 kB | 08-03-06 09:24 | |
| 346.00 B | 08-03-06 08:52 | |
| 17.27 kB | 08-03-06 09:36 | |
| 297.71 kB | 26-07-06 17:28 | |
| 1.30 kB | 27-07-06 14:41 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 17-10-06 09:02 | |
| 0.00 B | 05-09-08 09:10 |