Любые предложения по получению типа интерфейса устройства для тома, учитывая его букву диска (например, G :)? В частности, я ищу решение, которое не зависит от WMI.Тип интерфейса для буквы диска
спасибо.
Любые предложения по получению типа интерфейса устройства для тома, учитывая его букву диска (например, G :)? В частности, я ищу решение, которое не зависит от WMI.Тип интерфейса для буквы диска
спасибо.
Вы можете использовать GetDriveType, чтобы получить базовый тип интерфейса (например, съемное устройство, CDROM, RAMDisk) для буквы диска. Также см. Окончательный комментарий внизу этой страницы для получения дополнительной информации об съемных устройствах. Также проверьте SetupDiGetDeviceRegistryProperty и DeviceIoControl
Ее лучший пример, который я могу придумать (непроверенных, как я не имею WDK/DDK)
bool IsUSBDevice(const char* szDrivePath, bool& bRemovable)
{
if(GetDriveType(szDrivePath) != DRIVE_REMOVABLE)
return false;
HANDLE hDevice = CreateFile(szDrivePath,0,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);
if(hDevice == INVALID_HANDLE_VALUE)
return false;
STORAGE_PROPERTY_QUERY pQuery = {0};
pQuery.PropertyId = StorageDeviceProperty;
pQuery.QueryType = PropertyStandardQuery;
STORAGE_DEVICE_DESCRIPTOR pDeviceDesc = {0};
pDeviceDesc.Size = sizeof(pDeviceDesc);
DWORD dwWritten = 0;
if(DeviceIoControl(hDevice,IOCTL_STORAGE_QUERY_PROPERTY,&pQuery,sizeof(STORAGE_PROPERTY_QUERY),pDeviceDesc,sizeof(pDeviceDesc),&dwWritten,NULL))
{
CloseHandle(hDevice);
return ((bRemovable = pDeviceDesc.RemovableMedia) && pDeviceDesc.BusType == BusTypeUsb);
}
else
CloseHandle(hDevice);
return false;
}
привет ... Мне нужно фильтровать устройства USB тип интерфейса – user198725878
см. комментарии внизу и/или SetupDiGetDeviceRegistryProperty для дисков usb, DeviceIoControl также предоставит некоторую информацию о политике удаления и т. д. – Necrolis
вы можете показать мне пример с буквой диска – user198725878