windows-VC++捕获驱动被禁用或启用的消息(事件、信号)的Windows API函数

问题描述

VC++捕获驱动被禁用或启用的消息(事件、信号)的Windows API函数

如果我通过程序禁用或启用了某个设备(比如网卡),从设备管理器就可以看到该设备被禁用或启用,这样看来,设备管理器应该是捕获了操作系统的某个消息或是等到了某个事件或信号,有没有哪位大神知道设备管理器是如何实现这一块的?具体用了哪个Win API函数?

解决方案

ON_WM_DEVICECHANGE()
里面扑捉
驱动启用 相当于虚拟device认到

BOOL OnDeviceChange(UINT nEventType,DWORD dwData)

{

//DEV_BROADCAST_DEVICEINTERFACE* dbd = (DEV_BROADCAST_DEVICEINTERFACE*) dwData;
PDEV_BROADCAST_HDR devHdr;
PDEV_BROADCAST_DEVICEINTERFACE devInterface;
switch (nEventType)

{

case DBT_DEVICEREMOVECOMPLETE://移除设备
break;
case DBT_DEVICEARRIVAL://添加设备

if (m_bAuto_Flash_wvkey)
{
devHdr = (PDEV_BROADCAST_HDR)dwData;
devInterface = (PDEV_BROADCAST_DEVICEINTERFACE)devHdr;
if (CheckPidVidByGuid(WceusbshGUID))
OnStartCallFlashWVKey();

    }
    break;  

default:
    break;
}  

return TRUE;

}

解决方案二:

可以自己查询服务对应的状态 轮询

解决方案三:

如果你是驱动的开发者就好办了,加广播,给运行的程序发送一个消息。否则,就需要动态查询设备状态了。

时间: 2024-08-31 09:33:26

windows-VC++捕获驱动被禁用或启用的消息(事件、信号)的Windows API函数的相关文章

Linux与Windows的设备驱动模型对比:架构、API 和开发环境比较

名词缩写: API 应用程序接口(Application Program Interface ) ABI 应用系统二进制接口(Application Binary Interface) 设备驱动是操作系统的一部分,它能够通过一些特定的编程接口便于硬件设备的使用,这样软件就可以控制并且运行那些设备了.因为每个驱动都对应不同的操作系统,所以你就需要不同的 Linux.Windows 或 Unix 设备驱动,以便能够在不同的计算机上使用你的设备.这就是为什么当你雇佣一个驱动开发者或者选择一个研发服务商

Linux 与 Windows 的设备驱动模型对比:架构、API 和开发环境比较

名词缩写: API 应用程序接口Application Program Interface ABI 应用系统二进制接口Application Binary Interface 设备驱动是操作系统的一部分,它能够通过一些特定的编程接口便于硬件设备的使用,这样软件就可以控制并且运行那些设备了.因为每个驱动都对应不同的操作系统,所以你就需要不同的 Linux.Windows 或 Unix 设备驱动,以便能够在不同的计算机上使用你的设备.这就是为什么当你雇佣一个驱动开发者或者选择一个研发服务商提供者的时

win7系统安装驱动后提示“无法启用这个硬件”怎么办?

win7系统安装驱动后提示"无法启用这个硬件"怎么办?   1.查看日志文件C:Windowssetupact.log 提示HKLMSoftwareMicrosoftWindowsCurrentVersionRunRTHDCPL 拒绝访问5 2.打开注册表regedit 查找; 3.点开始---运行---输入"regedit"回车就看到注册表了,HKLMSoftwareMicrosoftWindowsCurrentVersionRunRTHDCPL 无RTHDCPL

怎样在BIOS中禁用或启用设备

有些用户使用鲁大师检测系统硬件信息的时候,会得到存在未正常工作的设备的提示.出现这种情况的原因有可能是该设备在BIOS中被禁用了,需要在BIOS中打开. 另外也有用户需要禁用某些不常用的设备,如光驱等,以达到节能的目的.下面就以光驱为例,讲解如何在BIOS中禁用或启用设备. 1要在BIOS中禁用或启用设备,需要重启机器,然后按热键来进入BIOS,通常在计算机启动自检的时候会在屏幕上显示进入BIOS的热键,通常是类似":PressF1toenterBIOS":之类的提示,这个时候按下提示

Windows 8的驱动是否能给Windows 8.1用

  故障现象: 当电脑的系统已经升级至Windows8.1,原来支持Windows 8系统的驱动是否支持Windows8.1? 解决方案: 本文档将提供原Windows 8驱动可以支持Windows 8.1的机型信息.如果您的机型信息符合,那么当您的电脑安装或升级Windows 8.1后,可以使用原机配套的Windows 8驱动光盘或者联想官方网站下载对应机型的Windows 8驱动来进行设备驱动的安装. 如果你的机型信息不在我们提供的机型信息之列,建议您谨慎考虑升级至Windows 8.1.

Windows XP声卡驱动安装方法

使用Conexant HD声卡芯片的笔记本在Windows XP下驱动安装方法 提示:REALTEK声卡在XP下如果也提示无法安装声卡,也可参照下列的方案安装声卡补丁,再安装声卡驱动,只是声卡安装界面会有不同. 改装成Windows XP系统后,经常出现声卡驱动安装不上,安装声卡提示找不到设备的状况 需要安装声卡补丁 http://think.lenovo.com.cn/CommercialTP/driver/DriverDetail.html?ID=DR1249896448559 提醒:补丁程

在BIOS中如何禁用或启用设备

  1 要在BIOS中禁用或启用设备,需要重启机器,然后按热键来进入BIOS,通常在计算机启动自检的时候会在屏幕上显示进入BIOS的热键,通常是类似";Press F1 to enter BIOS";之类的提示,这个时候按下提示说明的F1键就可以进入BIOS设置界面.由于主板型号和BIOS版本的不同,BIOS设置界面会稍有区别,但大致都差不多. 2 进入BIOS后,出现的是全英文的界面(目前大部分BIOS界面都是英文的),请不要慌,我会告诉你该怎么做,选择integrated peri

BIOS中禁用或启用设备方法

  很多人可能都不太清楚,BIOS到底是什么.简单来说,它就是一组程序,保存着基本输入输出,开机后后自检,系统自动启动三大程序.有用户反映,想在BIOS中禁用或启用设备.下面,就和小编一起来看看BIOS中禁用或启用设备方法吧. BIOS中禁用或启用设备方法 1 要在BIOS中禁用或启用设备,需要重启机器,然后按热键来进入BIOS,通常在计算机启动自检的时候会在屏幕上显示进入BIOS的热键,通常是类似";Press F1 to enter BIOS";之类的提示,这个时候按下提示说明的F

azure-账户启用 “Azure Benefit“同时 ,在Windows Azure 中国也能使用么?

问题描述 账户启用 "Azure Benefit"同时 ,在Windows Azure 中国也能使用么? 我有一个MSDN的订阅,当我为我的账户启用 "Azure Benefit"的同时 ,这个服务在Windows Azure 中国也能使用么? 解决方案 当然不行,山寨Azure和微软Azure互不统属,没有任何关系.就好比你在麦当劳领到的优惠券,去对面的沙县小吃馆吃饭,人家当然是不认的. 解决方案二: 您好,MSDN订阅暂时不适用用China Azure的账户.更