gpt4 book ai didi

c++ - 驱动器号重复

转载 作者:行者123 更新时间:2023-11-28 08:28:40 31 4
gpt4 key购买 nike

我从 WM_DEVICECHANGE 收到设备插入和移除通知

我从 DBT_DEVTYP_DEVICEINTERFACE 获取 dbcc_name

我从DBT_DEVTYP_VOLUME中得到对应的盘符

如果我将设备一个接一个地插入,它会正常工作

但是如果我一次插入两个设备,我会得到重复的驱动器号

我该如何解决

请给我一些想法

我的代码片段

if ( DBT_DEVICEARRIVAL == wParam || DBT_DEVICEREMOVECOMPLETE == wParam )
{
PDEV_BROADCAST_HDR pHdr = ( PDEV_BROADCAST_HDR )lParam;

PDEV_BROADCAST_DEVICEINTERFACE pDevInf;

PDEV_BROADCAST_VOLUME pDevVolume = reinterpret_cast<PDEV_BROADCAST_VOLUME>(lParam);

switch( pHdr->dbch_devicetype )

{
case DBT_DEVTYP_DEVICEINTERFACE:
pDevInf = ( PDEV_BROADCAST_DEVICEINTERFACE )pHdr;
updateDevice( pDevInf, wParam , pDevVolume );
break;

case DBT_DEVTYP_VOLUME:
pDevVolume = ( PDEV_BROADCAST_VOLUME )pHdr;
QString aDrive = FirstDriveFromMask( pDevVolume->dbcv_unitmask );
break;

}

}

最佳答案

DEV_BROADCAST_VOLUME文档提到了这条信息:

Although the dbcv_unitmask member may specify more than one volume in any message, this does not guarantee that only one message is generated for a specified event. Multiple system components may independently generate messages for logical volumes at the same time.

换句话说 - 一条消息可以携带有关(几乎)同时添加的多个卷的信息,但这并不能保证只会为这些卷生成一条消息。您应该为多个卷检查 dbcv_unitmask

关于c++ - 驱动器号重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3090694/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com