读"U盘小偷"有感
作者: sudami
嘿嘿,今天终于有时间学习自己喜欢的东西了,在kanxue里看到一篇关于U盘小偷的文章:http://bbs.pediy.com/showthread.php?p=381656#post381656读了其源码,学到一些东西:
(1) 判断移动设备的插入/拔出
嘿嘿, 以前一直觉得很神秘的"判断是否有U盘插入"其实就是这么一回事!
下面照搬作者本人的注解吧:
1.Message==WM_DEVICECHANGE
当设备被插入/拔出的时候,WINDOWS会向每个窗体发送WM_DEVICECHANGE 消息,
当消息的wParam 值等于DBT_DEVICEARRIVAL 时,表示Media设备被插入并且已经可用;
如果wParam值等于DBT_DEVICEREMOVECOMPLETE,表示Media设备已经被移出。
它们的lParam都指向一个 DEV_BROADCAST_HDR结构体,其原形如下:
typedef struct _DEV_BROADCAST_HDR {
DWORD dbch_size;
DWORD dbch_devicetype;
DWORD dbch_reserved;
} DEV_BROADCAST_HDR,
*PDEV_BROADCAST_HDR;
这个结构体仅仅是一个“头”(HDR),其后还有附加数据,
dbch_size表示结构体实例的字节数,当其中的dbch_devicetype字段值等于DBT_DEVTYP_VOLUME时,表示当前设备是逻辑驱动器,且lParam实际上指向的应该是DEV_BROADCAST_VOLUME 结构体实例
typedef struct _DEV_BROADCAST_VOLUME {
DWORD dbcv_size;
DWORD dbcv_devicetype;
DWORD dbcv_reserved;
DWORD dbcv_unitmask;
WORD dbcv_flags;
} DEV_BROADCAST_VOLUME,
*PDEV_BROADCAST_VOLUME;
其中dbcv_unitmask 字段表示当前改变的驱动器掩码,第一位表示驱动器号A,第二位表示驱动器号B,第三位表示驱动器号C,以此类推……
dbcv_flags 表示驱动器的类别,如果等于1,则是光盘驱动器;如果是2,则是网络驱动器;如果是硬盘、U盘则都等于0
读"U盘小偷"有感的更多相关文章
- 10.读google测试之道有感
(一)读google测试之道有感.
- 锻造完美U盘小偷:活用消息机制
锻造完美U盘小偷:活用消息机制作者:灰狐来源:灰狐's Blog 注:本文已发表在<黑客防线>2008年第1期,转载请注明出处. 以前经常看到有人做出一些蛮有意思的小工具,其中最多的似乎就 ...
- U盘小偷——C++实现U盘插入检测和文件扫描拷贝
前几天女朋友说老师上课的PPT不共享,没法复习,想着写个U盘小偷拷贝PPT来着,后来觉得这样的行为这是不对的,万一不小心复制了老师的专利啥的,或者一些不可描述的东西,就闹大了. 虽然没有采取实际行动, ...
- IT同行请教我如何培养读书习惯,结果就是“读了1本书,并写下'读《成交》有感'一文”
前段时间,我把CSDN博客的签名加上了"读过100+本经典书籍". 一个经常关注我CSDN博客的老乡,问我是如何做到的. 该老乡,准确来说是前辈,该前辈买了很多技术读物却没有耐心读 ...
- 【Java-Method】读《重构》有感_Java方法到底是传值调用还是传引用调用(传钥匙调用)
今天读<重构>P279, Separate Query from Modifier,将查询函数和修改函数分离. 问题的产生 突然想到 Java 的传对象作为参数的方法到底是 传引用调用,还 ...
- 学习JAVAWEB第三十七天(读构建之法有感)
读<构建之法>有感 我今年暑假回去就要升入大二了,在今年的专业分流时,我选择了软件工程专业,起初的想法很简单,做一款优秀的,能拥有大量用户的软件,甚至还想通过自己的软件改变人们的生活.读了 ...
- 【读fastclick源码有感】彻底解决tap“点透”,提升移动端点击响应速度
申明!!!最后发现判断有误,各位读读就好,正在研究中.....尼玛水太深了 前言 近期使用tap事件为老夫带来了这样那样的问题,其中一个问题是解决了点透还需要将原来一个个click变为tap,这样的话 ...
- 读IT小小鸟有感
第一次阅读<我是一只IT小小鸟>是在老师的推荐下的,我是一名软工大一新生,那天在课堂上听到了这本书,由于是10年前的老书,要找到它非常不易,终于在网上看到一些部分电子档. ...
- 如果简单的记录,就可以为这个世界创造更多的财富,那么还有什么理由不去写博客呢? — 读<<黑客与画家>> 有感
上一次博文发文时间是2016.1.15,7个月已经过去了.最近读了一本<>的书,对我触动挺大的!里面有关于技术趋势的探讨,也有关于人生和财富的思考! 开始更新iOS122的文章的初衷是,聚 ...
随机推荐
- 深入理解模型,视图和控制器(C#)
这篇文章向你提供ASP.NET MVC 模型,视图和控制的高度概览.换句话说,解释一下ASP.NET MVC中的 ‘M’, ‘V’, 和 ‘C’. 看完这篇文章以后,你应该就能理解ASP.NET MV ...
- 虚拟机配置Cognos报错CFG-ERR-0106
在虚拟机中安装Cognos 之后,启动了好多次,都启动失败,如下图所示,错误如下图所示 已确保已下信息设置正确 1:内容库配置OK 2:Java_home OK 3:字符集OK ----------- ...
- what difference between libfm and libffm
https://www.kaggle.com/users/25112/steffen-rendle/forum Congratulations to Yu-Chin, Wei-Sheng, Yong ...
- linux安装scikit-learn
原文:http://www.cnblogs.com/cyttina/archive/2013/06/08/3127345.html ubuntu的看官方的文档就好了. http://scikit-le ...
- 自定义UITableViewCell 的delete按钮
自定义UITableViewCell上的delete按钮 滑动列表行(UITableViewCell)出现删除按钮时,默认是英文“delete”,这份代码片段能够将“delete”变成中文”删除“,甚 ...
- 如何理解VB窗体中的scale类属性及width height属性之间的关系
如何理解VB窗体中的scale类属性及width height属性之间的关系 VB中的SCALEHIEGT,SCALEWIDTH,与窗体中的WIDTH,HEIGHT的区别及关系是许多VB初学者难以理解 ...
- Wide - Residual - Inception Networks for R eal - time O bject D etection
本文的提出了一个WR-inception网络结构.只需更小的内存消耗和更小的计算量. 作者使用了一种微结构,整个宏观网络都是由这个微结构组成. 微结构 微结构的种类如下: 基本的残差结构(3*3,3* ...
- openerp 7.0接收陌生邮件名称显示乱码问题解决方法
修改代码:addons\mail\mail_thread.py #858 line #msg_dict['email_from'] = decode(message.get('from')) ms ...
- oracle 批量更新表字段
(一) 将数字替换成汉字 第一步,去重查询 使用distinct关键字先对该字段值进行去重查询,看共有几种情况 --查询指定区间内表停诊字段的值 SELECT DISTINCT T.CLOSE_T ...
- 〖Android〗OK6410a的Android HAL层代码编写笔记
一.编写LED灯的Linux驱动程序代码 之所以使用存在HAL层,是为了保护对硬件驱动过程的逻辑与原理: 所以,残留在Linux驱动层的代码,只保留了基本的读写操作,而不含有关键的逻辑思维: 1. l ...