winAPI 检查系统设备拔插使用 WM_DEVICECHANGE 消息

if(message->message == WM_DEVICECHANGE)
{
/*if (message->wParam == DBT_DEVICEARRIVAL || message->wParam == DBT_DEVICEREMOVECOMPLETE)
{
PDEV_BROADCAST_HDR pHeader = (PDEV_BROADCAST_HDR)message->lParam;
if (pHeader->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
{
hotplug_onSystemDeviceChanged();
}
}*/
//DBT_DEVNODES_CHANGED:: The system broadcasts the DBT_DEVNODES_CHANGED device event when a device has been added to or removed from the system.
//Applications that maintain lists of devices in the system should refresh their lists.
if (message->wParam == DBT_DEVNODES_CHANGED && message->lParam == 0)
{
hotplug_onSystemDeviceChanged();
}
}

时间: 2024-11-23 09:23:39

winAPI 检查系统设备拔插使用 WM_DEVICECHANGE 消息的相关文章

WinCE 系统下移动存贮设备Storage 的拔插检测

今天在编程检测 Storage(SD/USB) 时,使用了一个消息:WM_DEVICECHANGE 来检测,测试了一下插入/拔出 Storage 设备时确实可以接收到消息. 但后继的处理出现问题:在 Storage 设备拔出时,立刻调用 FindFirstStore/FindNextStore 和 FindFirstPartition/FindNextPartition 时正常: 但在 Storage 设备插入时,立刻调用 FindFirstStore/FindNextStore 和 FindF

iOS开发——Swift实用技术篇&检查系统版本

Swift如何检查系统版本 指责Swift是“没有C的Objective-C”的说法不够准确,是因为Swift和Objective-C缺少相似之处,而不是没有C.Swift根本不是类C语言. 毫无疑问Swift从Haskell.Rust.Python.D语言等现代编程语言里获得灵感,但你最好把它理解成拒绝了C语言中一些坏掉地方的语言: · C语言是默认类型不安全的.Swift则默认为安全(因此Swift中的指针操作函数命名中加上unsafe)(译者注:见在Swift中使用遗留的C API). ·

STM32 软件复位并模拟USB拔插

最近做了个USB跟上位机的通信,需要软件对MCU进行复位,复位后如果USB没有拔插,PC就不会重新枚举USB为了解决这个问题,我做了软件复位跟,软件模拟USB拔插. 这里我用的是HAL库的软件复位,复位前先把中断关掉,再复位,代码如下: __set_FAULTMASK(1); //关中断 NVIC_SystemReset(); //复位 至于怎么实现模拟USB拔插,则只需要在USB初始化前把PA12进行一个拉低--延时--拉高的操作即可,一般PC机可以通过检查USB的D+引脚来判断USB是否有变

聊聊iOS开发中耳机的那点事(监听耳机拔插、耳机线控)-b

如果说一个项目出现的最重大的事故,那无疑就是开发人员使用了不可控的元素. 前言 iOS开发当中有关于视音频播放的开发不在少数,用户时常会使用到一种输出设备,那就是"耳机",这一篇博客写的就是关于耳机的一些开发相关的技术点. 检测耳机是否插入 看到上面的标题的时候一定要注意,这里说的是"检测耳机是否插入",这里只是一次性的检测,不是实时监控耳机的拔插,但是有一些时候,下面的这个方法已经足够满足我们的开发需求了. 首先,我们需要导入AVFoundation.framew

linux驱动程序之电源管理之新版linux系统设备架构中关于电源管理方式的变更

新版linux系统设备架构中关于电源管理方式的变更 based on linux-2.6.32 一.设备模型各数据结构中电源管理的部分 linux的设备模型通过诸多结构体来联合描述,如struct device,struct device_type,struct class, struct device_driver,struct bus_type等. @kernel/include/linux/devices.h中有这几中结构体的定义,这里只列出和PM有关的项,其余查看源码: struct d

安装Oracle客户端时,检查系统要求时状态为错误的解决办法

这是我自己安装oracle11g至win7的错误记录: 正在检查操作系统要求...要求的结果: 5.0,5.1,5.2,6.0 之一实际结果: 6.1 我换了 10g,11g从32bit到64bit折腾了好多次,最后终于找到了解决的方法-- 看到那一个错误了么?实际上是因为配置文件引起的 找到 refhost.xml 文件(位置:database/stage/prereq/db,打开 refhost.xml 配置文件并找到 <CERTIFIED_SYSTEMS> 节点,接着在节点后面修改6.0

Python检查系统可疑用户

最近一台服务器被攻击了,攻击者在服务器上替换了一个系统命令,如ps,ss,netstat,lsof等文件.怎么排查的就不说了.本文的主要目的是写一个检查系统用户的一个脚本,检查哪些系统用户有家目录,哪些用户没有家目录,以及哪些用户可以登录系统. 我们这里的环境有点乱,有的服务器上的web用户可以登录系统,有的系统上却不能登录系统,很是不规范,因此写了这么一个脚本来做检查.接下来,就直接上代码了,主要用到了pwd及spwd模块, # encoding: utf8 # written by lave

Oracle EBS-SQL (BOM-9):检查系统BOM总数.sql

SELECT      ITM.SEGMENT1                         物料编码     ,ITM.DESCRIPTION                     物料描述     ,bom2.CREATION_DATE              创建日期     ,BOM2.ALTERNATE_BOM_DESIGNATOR  替代BOM     ,FU.description                           操作者FROM INV.MTL_SYST

Delphi在Android下实现BroadcastReceiver功能(举例在Delphi下获取USB外设拔插消息)

在Android里,用java通过实现BroadcastReceiver接口,就可以获得Intent消息.可是Delphi程序不能直接实现JBroadcastReceiver,如何能够实现类似Java的BroadcastReceiver功能呢? 幸运的是Delphi提供了TJFMXBroadcastReceiver类实现了BroadcastReceiver,我们便可以以此达到目的. 下面的程序片段举例,实现如何在Delphi下获取USB外设拔插的消息. uses System.SysUtils,