阅读:3423回复:29
高分请指教,关于软驱状态的获得
我现在在做一个网管软件,想实现对光驱、软驱的控制,
我光驱是通过获得光驱的是否有盘如有盘并开始读时就锁定机器, 当光盘取出时,我也想通过些方法来实现对软驱的控制,但没能成功 ,我现在想用C\\C++中断函数来实现,但不知怎么获得软驱的读盘状态,请指教,先谢了 [编辑 - 5/11/04 by zhiyuan19840428] |
|
最新喜欢:zhleon... |
沙发#
发布于:2004-05-11 23:31
参考FILEMON
|
|
|
板凳#
发布于:2004-05-12 09:29
能说的详细的吗?filemom是什么在那里能找到呀
|
|
地板#
发布于:2004-05-12 10:43
本站就有
|
|
|
地下室#
发布于:2004-05-12 14:06
在什么地方呀是不是要用到文件驱动呀,有没有比较简单的实现方法呀
|
|
5楼#
发布于:2004-05-12 16:33
可以用下面方法来禁用光驱,和软驱.
DWORD error; HANDLE SysHandle = INVALID_HANDLE_VALUE; DWORD dwRet; //禁用 if(LoadDeviceDriver( SYS_NAME, SYS_FILE, &SysHandle, &error )){ //打开监控 DeviceIoControl(SysHandle, IOCTL_SIIMON_STARTSPY, 0, 0, 0, 0, &dwRet, NULL ); //添加禁用设备 _DEVICE_INFO* pdf = new _DEVICE_INFO[2]; if(pdf){ pdf[0].Type = _MULTI_DEVICE; strcpy(pdf[0].DeviceName, \"\\\\Device\\\\CdRom\"); pdf[1].Type = _MULTI_DEVICE; strcpy(pdf[1].DeviceName, \"\\\\Device\\\\Floppy\"); DeviceIoControl(SysHandle, IOCTL_SIIMON_SETDISABLEDEVICEFILTER, pdf, sizeof(_DEVICE_INFO)*2, 0, 0, &dwRet, NULL ); delete pdf; } } //关闭 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 ); } |
|
|
6楼#
发布于:2004-05-17 10:22
你好
我用你说的方法做了,但在LoadDeviceDriver()时系统提示找不到文件,但我已siimon.sys放在system32\\drivers\\,以及程序执行目录下了 |
|
7楼#
发布于:2004-05-17 12:49
CHAR driverPath[ MAX_PATH ];
TCHAR systemRoot[ MAX_PATH ]; GetEnvironmentVariable( \"SYSTEMROOT\", systemRoot, sizeof(systemRoot)); sprintf( driverPath, \"%s\\\\system32\\\\drivers\\\\%s\", systemRoot, SYS_FILE ); LoadDeviceDriver( SYS_NAME, driverPath, &SysHandle, &error ); |
|
8楼#
发布于:2004-05-17 15:10
谢谢我已经做好了,但我还是不太明白其中的原理,能把siimon.sys的源码给我吗、我的eamil:zhiyuan19840428@163.com
|
|
9楼#
发布于:2004-05-17 15:11
我现在正在学习驱动的编写,能给出一点学习意见吗?谢谢
|
|
10楼#
发布于:2004-05-17 15:30
用siimon.sys你还可以控制usb口(\"\\\\Device\\\\USBPDO\"),串口(\"\\\\Device\\\\Serial\"),并口(\"\\\\Device\\\\Parallel\")等.
兄弟,给分呀. |
|
11楼#
发布于: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送到直接主机控制器堆栈的最上层驱动程序 |
|
12楼#
发布于:2004-05-17 15:42
怎么给呀,我不会!
|
|
13楼#
发布于:2004-05-17 15:44
能不能把siimon.sys的源码给我呀,或告诉我在那里能下到,谢谢了
|
|
14楼#
发布于:2004-05-17 15:49
i服了you!
源码不能给你,因为是公司产品中的一部分.(虽然是我写的,但版权应该属于公司吧,我怕被告呀.) |
|
15楼#
发布于:2004-05-17 15:53
能把关于处理IOCTL_SIIMON_STARTSPY,IOCTL_SIIMON_STOPSPY的代码给我吗、?谢谢,让我明白是怎么回事,分我给我
|
|
16楼#
发布于:2004-05-17 15:59
拦截相关设备的irp就是了.
|
|
17楼#
发布于:2004-05-17 16:02
兄弟你就给我一段做为参考吧就算是为中国软件事业做贡献吧
[编辑 - 5/17/04 by zhiyuan19840428] |
|
18楼#
发布于:2004-05-17 16:19
能说说驱动程序对象和设备对象之间的区别吗?
|
|
19楼#
发布于:2004-05-17 16:32
是不是说IoCreateService()创建一个驱动对象而AddDevice()创建一个设备对象并使用IoCreateService()创建的设备,其实说白了,也就这个设备使用同一个驱动
|
|
上一页
下一页