tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
阅读:3464回复:10

[原创]工作了.只有周末才有闲功夫作点小程序了.源代码含

楼主#
更多 发布于:2005-04-02 19:16
刚刚论坛上有朋友问怎么获取某个设备对应的volume的名字

就像windows的safely remove device所完成的那样

其实很简单

稍微跟踪下就知道windows是怎么完成的
作驱动的,softice难道还不够熟练么..就那么点汇编代码一下子就跟踪出来了..呵呵

源代码参上....
没有使用什么未公开的函数
每个函数都能用msdn搜索到.

这个代码作为一个例子演示一下windows是怎么完成这个功能的
在他的基础上要实现一些比如给定一个盘符删除对应的设备的程序那自然易如反掌...

stobject.dll是windows那个任务栏小图标控制代码的dll
要找到他很简单
addr explorer.记录下pid
bpx shell_notifyicon if(pid == xxx)
然后插拔一下u盘
softice就跳出来了...
记录下hwnd跟messageid
用spy++一类的工具看看hwnd的窗口函数
map32看看地址
就能知道那个dll的名字了
然后bpx 到窗口函数 if(*(esp+8) == msgid)
然后鼠标移动到那个小图标上面去
softice又跳出来了
跟踪进去就能如何如何

再然后随便用个什么反汇编的工具分析一下就行了.
附件名称/大小 下载次数 最后更新
2005-04-02_DriveLetterMap.rar (5KB)  190

最新喜欢:

asdfslwasdfsl...
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
沙发#
发布于:2005-04-02 20:59
源代码里面只是获取了第一个volume的盘符

要获取全部的盘符很简单
用个缓冲区保存所有的盘符
每找到一个就放一个进去
这样就能收集全部的盘符了

一时疏忽忘记这个了....不好意思
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
板凳#
发布于:2005-04-02 21:32
修改了几个bug.现在能收集全部的盘符

大家下载这个版本的吧
附件名称/大小 下载次数 最后更新
2005-04-02_DriveLetterMap.rar (5KB)  234
游客

返回顶部