После вставки носителя я получу сначала событие dbch_devicetype с deviceinterface, а затем с volume и если накопитель вставлялся 1, то очевидно оба события будут вызваны одним устройством. Сначала его физической вставкой в порт, а затем выделения точки монтирования. Но так как эти два события независимы друг от друга хотелось бы иметь возможность точно установить что получаемая в ветке volume "mount point" соответствует устройству DVINST которого я могу получить в ветке deviceinterface. Мне это нужно по следующим соображениям, к примеру я хочу вставить накопитель и осуществить его валидацию по некоторой базе серийных номеров, но пока эта валидация будет осуществляться мне необходимо его размонтировать и в случае успеха снова замонтировать. Но для этого мне нужно наверняка знать что именно за этим конкретным устройством закреплена конкретная точка монтирования. Если есть какой-то другой путь решения этой проблемы, то хотел бы так же о нём узнать.
switch (wParam)
{
case DBT_DEVICEARRIVAL:
{
if (((PDEV_BROADCAST_HDR)lParam)->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
{
PDEV_BROADCAST_DEVICEINTERFACE deviceinterface = (PDEV_BROADCAST_DEVICEINTERFACE)lParam;
}
else if (((PDEV_BROADCAST_HDR)lParam)->dbch_devicetype == DBT_DEVTYP_VOLUME)
{
PDEV_BROADCAST_VOLUME volume = (PDEV_BROADCAST_VOLUME)lParam;
wchar_t vol[MAX_PATH];
QString mount_path;
getDriveLetter(volume->dbcv_unitmask, &mount_path);
GetVolumeNameForVolumeMountPoint(mount_path.toStdWString().data(), vol, MAX_PATH);
}
break;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Доброе! Есть следющий код:
Я получаю параметры с командной строки cmd и вывожу их, затем нужно найти в этой папке с которой запущен скрипт файл с наибольшим размером,...
Кто сталкивался с данной проблемой при работе с OpenCV? Язык С++, работаю в VS2013
Как организовать многопоточную обработку файлов (открытие, сбор данных, закрытие) из массива QFileInfoList?