Всем большое спасибо! Выручили)
Вот рабочий код, пробовал и на студии и на Qt Creator:
#include <iostream>
#include <windows.h>
using namespace std;
VOID LogicalToPhysical(TCHAR *szDrive)
{
LPCTSTR szPhysical; // was CString
HANDLE h = CreateFile(szDrive, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (INVALID_HANDLE_VALUE != h)
{
STORAGE_DEVICE_NUMBER sd = { 0 };
DWORD dwRet;
if (DeviceIoControl(h, IOCTL_STORAGE_GET_DEVICE_NUMBER, NULL, 0, &sd, sizeof(STORAGE_DEVICE_NUMBER), &dwRet, NULL))
{
cout << "Physical disk: " << sd.DeviceNumber;
}
else {
cout << GetLastError();
}
CloseHandle(h);
}
else {
cout << "Invalid handle value\n";
}
}
int main(int argc, char *argv[])
{
LogicalToPhysical(TEXT("\\\\.\\\\E:"));
return 0;
}
Как раз то, что нужно ... номер физического диска на букву логического.
зы: для студии сыпалась куча ошибок из-за того, что я не поменял в настройках проекта используемую кодировку с Unicode на WideChar )
еще раз всем СПАСИБО!)