zhiyuan19840428
驱动小牛
驱动小牛
  • 注册日期2004-05-11
  • 最后登录2005-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3337回复:29

高分请指教,关于软驱状态的获得

楼主#
更多 发布于:2004-05-11 21:50
我现在在做一个网管软件,想实现对光驱、软驱的控制,
我光驱是通过获得光驱的是否有盘如有盘并开始读时就锁定机器,
当光盘取出时,我也想通过些方法来实现对软驱的控制,但没能成功
,我现在想用C\\C++中断函数来实现,但不知怎么获得软驱的读盘状态,请指教,先谢了

[编辑 -  5/11/04 by  zhiyuan19840428]

最新喜欢:

zhleonixzhleon...
x-star
驱动小牛
驱动小牛
  • 注册日期2007-04-26
  • 最后登录2018-11-17
  • 粉丝0
  • 关注0
  • 积分65分
  • 威望664点
  • 贡献值1点
  • 好评度39点
  • 原创分1分
  • 专家分1分
  • 社区居民
沙发#
发布于:2009-03-03 16:54
waqis 这样搞不好  不正规 影响效率而且不稳定
在产品中还是应该用正规的方法
ysz_oo
驱动牛犊
驱动牛犊
  • 注册日期2003-03-08
  • 最后登录2014-11-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望40点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-21 08:54
我是新手,用了一下waqis的例子,觉得很奇怪,真不知他怎么实现的,厉害,佩服
waqis
驱动牛犊
驱动牛犊
  • 注册日期2003-06-03
  • 最后登录2017-08-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-07-21 08:43
自己反汇编吧。。。。。


行,你够狠! ;)
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地下室#
发布于:2004-07-20 19:06
自己反汇编吧。。。。。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
ysz_oo
驱动牛犊
驱动牛犊
  • 注册日期2003-03-08
  • 最后登录2014-11-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望40点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-20 18:20
谁知道上面那个例子怎么实现的吗?一个驱动就做了这么多事
zhiyuan19840428
驱动小牛
驱动小牛
  • 注册日期2004-05-11
  • 最后登录2005-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-05-28 09:31
IOCTL_SIIMON_SETENABLEDEVICEFILTER
的作用是什么?你这个驱动好像要解除禁用一下子要解除好几,
如果我想按这个按钮解除光驱按另一个按钮解除软驱好像就不行
了还有我在我机器上出现过死机蓝屏现象

waqis
驱动牛犊
驱动牛犊
  • 注册日期2003-06-03
  • 最后登录2017-08-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2004-05-28 08:27
不要调用
DeviceIoControl(SysHandle, IOCTL_SIIMON_STOPSPY,
0, 0, 0, 0, &dwRet, NULL );
仅重新调用一次
DeviceIoControl(SysHandle, IOCTL_SIIMON_SETDISABLEDEVICEFILTER,
pdf, sizeof(_DEVICE_INFO)*2, 0, 0, &dwRet, NULL );
就可以了.
zhiyuan19840428
驱动小牛
驱动小牛
  • 注册日期2004-05-11
  • 最后登录2005-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-05-27 23:08
//关闭
if(LoadDeviceDriver( SYS_NAME, SYS_FILE, &SysHandle, &error )){
//删除禁用设备
DeviceIoControl(SysHandle, IOCTL_SIIMON_SETDISABLEDEVICEFILTER,
0, 0, 0, 0, &dwRet, NULL );

//停止监控
DeviceIoControl(SysHandle, IOCTL_SIIMON_STOPSPY,
0, 0, 0, 0, &dwRet, NULL );
}
这个好像把所有的设备都解除禁用了如果我想仅解除某一设备的禁用我用了如下语句但不行:
//禁用
if(LoadDeviceDriver( SYS_NAME, driverfile, &SysHandle, &error ))
{
//删除禁用设备(光驱)
_DEVICE_INFO* pdf = new _DEVICE_INFO[1];
if(pdf)
{
pdf[0].Type = _MULTI_DEVICE;
strcpy(pdf[0].DeviceName, \"\\\\Device\\\\CdRom\");
DeviceIoControl(SysHandle, IOCTL_SIIMON_SETENABLEDEVICEFILTER,
pdf, sizeof(_DEVICE_INFO), 0, 0, &dwRet, NULL );
delete pdf;
}
flag = DeviceIoControl(SysHandle, IOCTL_SIIMON_STOPSPY,
0, 0, 0, 0, &dwRet, NULL );
waqis
驱动牛犊
驱动牛犊
  • 注册日期2003-06-03
  • 最后登录2017-08-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2004-05-18 08:50
qq:293331
zhiyuan19840428
驱动小牛
驱动小牛
  • 注册日期2004-05-11
  • 最后登录2005-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-05-17 19:44
waqis你的QQ是多少我有几个问题要问你,能加我一下吗?
zhiyuan19840428
驱动小牛
驱动小牛
  • 注册日期2004-05-11
  • 最后登录2005-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-05-17 16:32
是不是说IoCreateService()创建一个驱动对象而AddDevice()创建一个设备对象并使用IoCreateService()创建的设备,其实说白了,也就这个设备使用同一个驱动
zhiyuan19840428
驱动小牛
驱动小牛
  • 注册日期2004-05-11
  • 最后登录2005-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-05-17 16:19
能说说驱动程序对象和设备对象之间的区别吗?
zhiyuan19840428
驱动小牛
驱动小牛
  • 注册日期2004-05-11
  • 最后登录2005-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-05-17 16:02
兄弟你就给我一段做为参考吧就算是为中国软件事业做贡献吧

[编辑 -  5/17/04 by  zhiyuan19840428]
waqis
驱动牛犊
驱动牛犊
  • 注册日期2003-06-03
  • 最后登录2017-08-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
14楼#
发布于:2004-05-17 15:59
拦截相关设备的irp就是了.
zhiyuan19840428
驱动小牛
驱动小牛
  • 注册日期2004-05-11
  • 最后登录2005-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-05-17 15:53
能把关于处理IOCTL_SIIMON_STARTSPY,IOCTL_SIIMON_STOPSPY的代码给我吗、?谢谢,让我明白是怎么回事,分我给我
waqis
驱动牛犊
驱动牛犊
  • 注册日期2003-06-03
  • 最后登录2017-08-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
16楼#
发布于:2004-05-17 15:49
i服了you!

源码不能给你,因为是公司产品中的一部分.(虽然是我写的,但版权应该属于公司吧,我怕被告呀.)
zhiyuan19840428
驱动小牛
驱动小牛
  • 注册日期2004-05-11
  • 最后登录2005-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-05-17 15:44
能不能把siimon.sys的源码给我呀,或告诉我在那里能下到,谢谢了
zhiyuan19840428
驱动小牛
驱动小牛
  • 注册日期2004-05-11
  • 最后登录2005-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-05-17 15:42
怎么给呀,我不会!
zhiyuan19840428
驱动小牛
驱动小牛
  • 注册日期2004-05-11
  • 最后登录2005-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-05-17 15:32
我们对第一个例子稍做修改,如图2-9。这次我们的读请求将发往一个USB设备(USB设备插入USB hub,USB hub再插入主机控制器),因此,USB设备堆栈、hub设备堆栈、主机控制器设备堆栈将加入设备树。IRP_MJ_READ请求先穿过FiDO到达功能驱动程序,然后功能驱动程序生成一个或多个不同种类的IRP并发送到自己的PDO。USB设备的PDO驱动程序就是USBHUB.SYS,该驱动程序把这些IRP送到主机控制器堆栈的最上层驱动程序,跳过中间的USB集线器堆栈(含有两个驱动程序)。


我不明白为什么说USB设备的就是USBHUB.SYS,它是为什么能这些IRP送到直接主机控制器堆栈的最上层驱动程序
上一页
游客

返回顶部