贴一段WM_DEVICECHANGE判断盘符的小代码

本文分享了一段使用WM_DEVICECHANGE消息来检测盘符变化的代码,适用于Windows编程,主要针对硬件设备插入或移除时的响应处理。
摘要由CSDN通过智能技术生成

这个函数作为SetWindowsHookEx的第二个参数 大一上写的小代码


LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
{
	if (nCode >= 0)
	{
		CWPSTRUCT *msg = (CWPSTRUCT *)lParam;
		if (msg->message == WM_DEVICECHANGE)
		{
			if (msg->wParam == DBT_DEVICEARRIVAL)
			{
				PDEV_BROADCAST_HDR pDevBroadcastHdr; 
				PDEV_BROADCAST_VOLUME pDevBroadcastVolume; 
				char strVolume;
				pDevBroadcastHdr = (PDEV_BROADCAST_HDR) ((DWORD)(lParam)); 
				if (pDevBroadcastHdr->dbch_devicetype == DBT_DEVTYP_VOLUME) 
				{ 
					pDevBroadcastVolume = (PDEV_BROADCAST_VOLUME)pDevBroadcastHdr; 
					xJudgeDeviceChangePath(pDevBroadcastVolume->dbcv_unitmask, strVolume); 
				} 
				HWND hFind =  FindWindowW(NULL, TEXT("USBMonitor"));
				SendMessage(hFind, WM_FOUND, NULL, NULL);
			} 
		}
	}
	return CallNextHookEx(g_hhook, nCode, wParam, lParam); 
}


void xJudgeDeviceChangePath(DWORD dwData, char strPath) 


{ 
	char i; 
	for (i = 0; i < 26; ++i) 
	{ 
		if (dwData & 0x1) 
		{ 
			strPath = char(i + 'A');
			break; 
		} 
		dwData = dwData >> 1; 


		if(dwData == 0x0000) 
		{
			break;
		}
	} 
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值