Как связать dbcc_name из PDEV_BROADCAST_DEVICEINTERFACE и mount point?

140
19 января 2020, 19:30

После вставки носителя я получу сначала событие 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;
}
READ ALSO
Как можно получить размер файла

Как можно получить размер файла

Я получаю параметры с командной строки cmd и вывожу их, затем нужно найти в этой папке с которой запущен скрипт файл с наибольшим размером,...

153
Ошибка C2864 при работе с OpenCV

Ошибка C2864 при работе с OpenCV

Кто сталкивался с данной проблемой при работе с OpenCV? Язык С++, работаю в VS2013

155
Многопоточная обработка файлов в Qt C ++

Многопоточная обработка файлов в Qt C ++

Как организовать многопоточную обработку файлов (открытие, сбор данных, закрытие) из массива QFileInfoList?

153