参考一下,或许有用:
RegisterDeviceNotification
SetupDiCreateDeviceInfoList
SetupDiCreateDeviceInfoListEx
SetupDiCreateDeviceInterfaceRegKey
SetupDiDeleteDeviceInterfaceData
SetupDiDeleteDeviceInterfaceRegKey
SetupDiDestroyDeviceInfoList
SetupDiEnumDeviceInterfaces
SetupDiGetClassDevs
SetupDiGetClassDevsEx 
SetupDiGetDeviceInterfaceAlias
SetupDiGetDeviceInterfaceDetail
SetupDiOpenClassRegKeyEx
SetupDiOpenDeviceInterface
SetupDiOpenDeviceInterfaceRegKey
UnregisterDeviceNotification 

解决方案 »

  1.   

    哎,你仔细看看MSDN嘛,里面有详细的介绍。
      

  2.   

    站个队,也给点吧,哈哈
    CWnd::OnDeviceChange
    afx_msg BOOL OnDeviceChange( UINT nEventType, DWORD dwData );The nEvent parameter can be one of these values :DBT_CONFIGCHANGECANCELED  
    DBT_CONFIGCHANGED  
    DBT_DEVICEARRIVAL  
    DBT_DEVICEQUERYREMOVE  
    DBT_DEVICEQUERYREMOVEFAILED  
    DBT_DEVICEREMOVECOMPLETE  
    DBT_DEVICEREMOVEPENDING  
    DBT_DEVICETYPESPECIFIC  
    DBT_QUERYCHANGECONFIG  
    DBT_USERDEFINED  
    WM_DEVICECHANGEdwData parameter is The address of a structure that contains event-specific data. Its meaning depends on the given event.这样可以得分了吧,哈哈
    不知道你是怎样作的?说来听听
      

  3.   

    现在我就把我的解决方法贴出来
    就用串口为例子吧
    比如我们要禁用串口com1
    我们可以在设备列表里面选中Com1然后在他的属性里面选择禁用
    这个时候在其实windows就会发出WM_DEVICECHANGE这消息,最重要的是也在注册表
    里面产生了如下的键
    在\HKEY_LOCAL_MACHINE\Config\0001\Enum\BIOS\*PNP0501\下出现用户变更设备配置的
    键值,在握的机器里面是0B(不同的机器可能会不同),这个时候他的键CSConfigFlags的键值
    为 01 00 00 00
    如果我们现在把com1启用,这个时候再来看看CSConfigFlags的键值,这时候变成了
     00 00 00 00
    所以我在程序中只要修改这个CSConfigFlags的键值就可以实现了com1的禁用和启用了.
      

  4.   

    wildinghorse,100分都给你啊,太狠了点吧
      

  5.   

    少了点吧,这么抠门啊,哈哈
    我kao,我们在这里讨价还价啊,嘿嘿
    随你了,没什么的
      

  6.   

    哎呀,我都忘了,我为了这个问题还发了一个这样的贴子,也给了100
    现在怎么办啊?
    难道又要见者有份阿???

    http://www.csdn.net/expert/Topic/49885.shtm