<C/C++>USB设备注册与插拔监听

原创 2015年07月09日 16:19:01

设备注册:

#include <DBT.h>
#include <comdefs.h>

void RegisterDevice()
{
	const GUID GUID_DEVINTERFACE_LIST[] = { 
		{ 0xA5DCBF10, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } },
		{ 0x53f56307, 0xb6bf, 0x11d0, { 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b } },
		{ 0x4D1E55B2, 0xF16F, 0x11CF, { 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } },	/* HID */
		{ 0xad498944, 0x762f, 0x11d0, { 0x8d, 0xcb, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c } }};

	HDEVNOTIFY   hDevNotify;

	DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
	ZeroMemory( &NotificationFilter, sizeof(NotificationFilter) );
	NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
	NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
	for(int i=0; i<sizeof(GUID_DEVINTERFACE_LIST)/sizeof(GUID); i++)
	{
		NotificationFilter.dbcc_classguid = GUID_DEVINTERFACE_LIST[i];
		hDevNotify = RegisterDeviceNotification(m_hWnd, &NotificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE);
		if( !hDevNotify ) {
			MessageBox(m_hWnd, TEXT("注册USB设备通知失败"), TEXT("错误"), MB_ICONERROR);
			break;
		}
	}

}


插拔监听:

LRESULT CShuajiBaoDlg::HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
	PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;
	switch (uMsg)
	{
	case WM_DEVICECHANGE:
		if (lpdb)
		{
			bHandled = TRUE;
			if (wParam == DBT_DEVICEARRIVAL)
			{
				// 设备插入
			}
			else if (wParam == DBT_DEVICEREMOVECOMPLETE)
			{
				// 设备拔出
			}
		}
		break;

	}
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

Netlink监听usb设备的插拔

  • 2014年09月18日 16:22
  • 48KB
  • 下载

USB 设备热插拔检测C/C++代码

  • 2017年06月12日 14:25
  • 4KB
  • 下载

QT5 检测 usb设备插拔

上来直接贴代码 完整工程文件下载 QT5 USB 插拔检测完整工程mainwindow.h#ifndef MAINWINDOW_H #define MAINWINDOW_H#include #i...
  • mhpmii
  • mhpmii
  • 2015年12月09日 20:07
  • 4420

USB设备插拔检测

  • 2016年10月20日 18:53
  • 25KB
  • 下载

Qt上USB设备热插拔检测

Qt上USB设备热插拔检测1 头文件#include #include #include 2 示例代码对于类 Form_usb头文件 #ifndef FORM_USB_H #define FOR...

介绍Windows侦测遍历Usb设备(PID&VID)及相应其插拔状态的方法

当程序需要判断当前USB端口上是否插入某个USB设备时可用此方法。大概原理是遍历USB端口得到当前连接设备的PID和VID,从而可判断指定设备是否存在。      大致流程介绍:      1.在Wi...
  • mdcire
  • mdcire
  • 2017年11月03日 11:36
  • 68

WM_DEVICECHANGE实现USB设备热插拔

实现某些功能的时候使用到了USB设备,需要根据USB设备的插拔来更改程序的状态,这个时候就用到了WM_DEVICECHANGE消息。 需要注意的是: 1. WM_DEVICECHANGE消息只能手动添...
  • rankun1
  • rankun1
  • 2016年03月24日 10:13
  • 1521

java调用c编写的dll来监听usb设备

  • 2013年08月19日 16:53
  • 11.85MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:<C/C++>USB设备注册与插拔监听
举报原因:
原因补充:

(最多只允许输入30个字)