请问大虾:如何在增加硬件后用程序进行硬件扫描?

charlie_hit 2003-11-25 03:58:55
就是增加了一个新硬件后想用程序进行硬件扫描,然后用程序自动安装该硬件对应的驱动程序
...全文
44 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2004-02-10
  • 打赏
  • 举报
回复
RegisterDeviceNotification

The RegisterDeviceNotification function registers the device or type of device for which a window will receive notifications.


HDEVNOTIFY RegisterDeviceNotification(
HANDLE hRecipient,
LPVOID NotificationFilter,
DWORD Flags
);

Applications send event notifications using the BroadcastSystemMessage function. Any application with a top-level window can receive basic notifications by processing the WM_DEVICECHANGE message. Applications can use the RegisterDeviceNotification function to register to receive device notifications.


WM_DEVICECHANGE

The WM_DEVICECHANGE device message notifies an application of a change to the hardware configuration of a device or the computer.

For devices that offer software-controllable features, such as ejection and locking, the system typically sends a DBT_DEVICEREMOVEPENDING message to let applications and device drivers end their use of the device gracefully. If the system forcibly removes a device, it may not send a DBT_DEVICEQUERYREMOVE message before doing so
yintongshun 2004-02-09
  • 打赏
  • 举报
回复

CSDN - 专家门诊 关闭窗口


主 题: 关于硬件扫描......
作 者: Ljfeng (长工)
信 誉 值: 104
所属论坛: VC/MFC 硬件/系统
问题点数: 100
回复次数: 28
发表时间: 2003-5-29 11:56:16





我遇到了如下问题:

1、在Win2000中,在设备管理器中将某一硬件卸载,并在winnt\inf目录下将其INF文件删除,在winnt\system32\drivers目录下将其.sys文件删除。

2、这时用UpdateDriverForPlugAndPlayDevices安装这一硬件的驱动不成功,但我可以用SetupCopyOEMInf来安装其INF文件,这时重启系统或在设备管理器中进行扫描硬件改动,此硬件的驱动才能装上。



请问用程序怎样实现扫描硬件改动的功能?

或者用什么其它的方法来实现我的第二个步骤可以不重启系统或扫描就可以实现驱动的安装?






回复人: AthlonxpX86(一滴水) ( ) 信誉:139 2003-5-29 13:23:51 得分:0



gz




Top

回复人: Ljfeng(长工) ( ) 信誉:104 2003-6-2 11:50:27 得分:100



本人亲自搞定它了!看来分数我自己拿了。




Top

回复人: jjjtang(小桂子) ( ) 信誉:100 2003-6-2 11:53:08 得分:0



up




Top

回复人: AthlonxpX86(一滴水) ( ) 信誉:139 2003-6-2 16:48:39 得分:0



楼主能不能介绍一下这方面的知识,或者是贴出代码,大家都很关注这个问题,




Top

回复人: Ljfeng(长工) ( ) 信誉:104 2003-6-2 17:48:42 得分:0



先用CM_Locate_DevNode得到设备管理树的根结点,然后用CM_Reenumerate_DevNode以这个根结点为参数刷新它就搞定!在MSDN里面可以查到这两个函数的用法,相关的知识里面也有。




Top

回复人: AthlonxpX86(一滴水) ( ) 信誉:139 2003-6-2 17:57:03 得分:0



楼主能说详细一点吗?能不能贴上代码,我把它整理到精华贴和FAQ并把分反结给你




Top

回复人: poplv(凭海临风) ( ) 信誉:100 2003-6-2 19:21:15 得分:0



对呀,我先谢谢你!




Top

回复人: Ljfeng(长工) ( ) 信誉:104 2003-6-3 9:33:52 得分:0



#include <cfgmgr32.h>



BOOL ScanForHardwareChange()

{

DEVINST devInst;

CONFIGERT status;



//得到设备管理树的根结点

status = CM_Locate_DevNode(&devInst,NULL,CM_LOCATE_DEVNODE_NARMAL);

if (status!=CR_SUCCESS)

{

printf("CM_Locate_DevNode failed: %x\n",status);

return FALSE;

}



//刷新

status = CM_Reenumerate_DevNode(devInst,0);

if (status !=CR_SUCCESS)

{

printf("CM_Reenumerate_DevNode failed: %x\n",status);

return FALSE;

}

return TRUE;

}

直接使用这个函数就可以了。



如果电脑上没有安装DDK,也可以通过引用cfgmgr32.dll,里面已经封装了这两个函数。










Top

回复人: winthegame(120斤重的大青蛙) ( ) 信誉:105 2003-6-3 10:25:00 得分:0



GZ




Top

回复人: de177(蓝色阳光) ( ) 信誉:100 2003-6-4 11:25:30 得分:0



UP




Top

回复人: xiaohedou(小黑豆) ( ) 信誉:100 2003-6-6 16:59:18 得分:0



关于硬件扫描...... 学习




Top

回复人: matlab7(bill) ( ) 信誉:100 2003-6-10 12:28:09 得分:0



mark first




Top

回复人: zhaoweidf(ZhaoWeiH) ( ) 信誉:100 2003-6-11 9:13:20 得分:0



学习




Top

回复人: mainmaster(小于) ( ) 信誉:100 2003-6-12 11:28:16 得分:0



学习




Top

回复人: lj0425(冰芝麻) ( ) 信誉:100 2003-6-23 16:10:53 得分:0



mk




Top

回复人: elyta(流连忘返) ( ) 信誉:99 2003-6-24 17:27:30 得分:0



dos下呢?




Top

回复人: aovi(滨子) ( ) 信誉:100 2003-6-25 16:05:39 得分:0



学习




Top

回复人: realdreamer(楼主英明,贫僧久仰大名,特来拜见) ( ) 信誉:101 2003-6-28 12:45:39 得分:0



good




Top

回复人: cadinfo(无语清风) ( ) 信誉:100 2003-6-29 23:08:10 得分:0



原来分数还可以给自己的哦




Top

回复人: jiadrun(MustBeSuccess) ( ) 信誉:86 2003-6-30 10:25:15 得分:0



为什么能给自己放分??




Top

回复人: AthlonxpX86(一滴水) ( ) 信誉:139 2003-6-30 11:47:24 得分:0



不要误会,因为问题最终是楼主自己解决的,所以我就把分反结给了楼主




Top

回复人: zgh266(寒风) ( ) 信誉:100 2003-7-10 17:25:10 得分:0



mark




Top

回复人: giant_legend22(weiwei) ( ) 信誉:100 2003-7-12 2:11:20 得分:0



我想把api for windows 全看一遍好么?






Top

回复人: mifu(游客) ( ) 信誉:100 2003-7-13 9:32:37 得分:0



签名报到




Top

回复人: ILP(水草) ( ) 信誉:95 2003-7-15 13:29:20 得分:0



自己怎么能给自己分呢?!




Top

回复人: crystal_heart(笑看风云) ( ) 信誉:105 2003-7-15 21:06:13 得分:0



up




Top

回复人: harry202(harry) ( ) 信誉:105 2003-7-17 10:58:17 得分:0



xp啊,偶有很多帖子自己回答的,还代解决方案/代码的,可是上次清贴,都被CSDN作为没有解题的帖子,扣了信誉分。。。5555




Top

回复人: ggjj(在线宽带) ( ) 信誉:100 2003-8-3 14:36:24 得分:0



还行吧。




Top



theone 2003-12-23
  • 打赏
  • 举报
回复
可以参考DDK中的sample code
haowh 2003-12-23
  • 打赏
  • 举报
回复
开2000下的setupapi
UpdateDriverForPlugAndPlayDevices
然后自己用setupapi 自己写一个安装程序
warton 2003-12-23
  • 打赏
  • 举报
回复
好久没人回答!
up一下,增加硬件应该会有相应的消息可以判断吧

2,641

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧