C++之Windows监听USB热插拔事件

关键词:C++、Windows、USB热插拔事件、RegisterDeviceNotification()

#include <Windows.h>
#include <tchar.h>
#include <Dbt.h>
#include <setupapi.h>
#include <iostream>
#include <atlstr.h> // CString
using namespace std;

#pragma comment (lib, "Kernel32.lib")
#pragma comment (lib, "User32.lib")

#define THRD_MESSAGE_EXIT WM_USER + 1
const _TCHAR CLASS_NAME[] = _T("Sample Window Class");

HWND hWnd;

static const GUID GUID_DEVINTERFACE_LIST[] =
{
	// GUID_DEVINTERFACE_USB_DEVICE
	{ 0xA5DCBF10, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } },
	// GUID_DEVINTERFACE_DISK
	{ 0x53f56307, 0xb6bf, 0x11d0, { 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b } },
	// GUID_DEVINTERFACE_HID, 
	{ 0x4D1E55B2, 0xF16F, 0x11CF, { 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } },
	// GUID_NDIS_LAN_CLASS
	{ 0xad498944, 0x762f, 0x11d0, { 0x8d, 0xcb, 0x00, 0xc0, 0x4f, 0xc3, 0x3
MFC(Microsoft Foundation Classes)是微软公司为了简化Windows编程而开发的一套C++类库。实现USB热插拔意味着在程序运行时,可以在不重启计算机的情况下插入或拔出USB设备,并能够正常识别和操作该设备。 要实现MFC中的USB热插拔功能,可以通过以下步骤进行: 1. 导入相关头文件:在MFC程序中,需要引入相关的头文件,例如"afxwin.h"、"usb100.h"等。 2. 初始化USB驱动程序:在程序启动时,需要初始化USB驱动程序,可以通过调用CreateFile函数打开USB设备句柄,并设置参数。 3. 监测USB事件:使用MFC的消息循环机制,通过设置WM_DEVICECHANGE消息来监测USB设备的插拔事件。可以通过重载MFC的消息处理函数来处理WM_DEVICECHANGE消息。 4. 处理USB事件:当收到WM_DEVICECHANGE消息时,可以通过DeviceNotify回调函数获取USB设备的状态,例如插入还是拔出。根据需要,可以执行特定的操作,例如打开设备、读取设备信息、发送数据等。 5. 完成USB设备的初始化和关闭:在处理USB事件时,需要根据设备的插入和拔出状态,进行相应的初始化和关闭操作。当USB设备被插入时,可以打开设备句柄,读取设备信息并进行相关处理;当USB设备被拔出时,需要关闭设备句柄并释放资源。 总之,通过MFC编程可以实现USB热插拔功能。需要注意的是,具体实现过程可能需要根据不同的USB设备和驱动程序进行调整,同时还需要对MFC消息处理和USB编程有一定的理解和经验。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值