Drive Type
-
hi, How can I check if a drive is Zip drive (and not a floppy drive). I know floppy is checked by DRIVE_REMOVABLE == GetDriveType(). What about Zip ? regards hari Hari Krishnan
-
hi, How can I check if a drive is Zip drive (and not a floppy drive). I know floppy is checked by DRIVE_REMOVABLE == GetDriveType(). What about Zip ? regards hari Hari Krishnan
Try this: (below code detects dvd)
STORAGE_MEDIA_TYPE GetDriveType(TCHAR A_chletter) { DISK_GEOMETRY Geom[20]; DEVICE_MEDIA_INFO dinfo[20]; DWORD cb; GET_MEDIA_TYPES gmedia[20]; ZeroMemory(Geom, sizeof(Geom)); ZeroMemory(dinfo, sizeof(dinfo)); ZeroMemory(gmedia, sizeof(gmedia)); HANDLE hVolume = NULL; CString drive_argument; drive_argument.Format(_T("\\\\.\\%c:"), A_chletter); //wsprintf(szVolumeName, szVolumeFormat, cDriveLetter); hVolume = CreateFile( (TCHAR*)(LPCTSTR)drive_argument, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL ); if(DeviceIoControl (hVolume, IOCTL_STORAGE_GET_MEDIA_TYPES_EX, 0, 0, gmedia, sizeof(gmedia), &cb, 0)) { UINT MediaCharacteristics = gmedia[0].MediaInfo[0].DeviceSpecific.DiskInfo.MediaCharacteristics; MediaCharacteristics = MediaCharacteristics; CloseHandle(hVolume); if(gmedia[0].DeviceType == FILE_DEVICE_DVD)//FILE_DEVICE_CD_ROM AfxMessageBox("found dvd!"); return (STORAGE_MEDIA_TYPE)(gmedia[0].MediaInfo[0].DeviceSpecific.DiskInfo.MediaType); } CloseHandle(hVolume); return (STORAGE_MEDIA_TYPE)Unknown; }
see _STORAGE_MEDIA_TYPE enumeration type. :) -
Try this: (below code detects dvd)
STORAGE_MEDIA_TYPE GetDriveType(TCHAR A_chletter) { DISK_GEOMETRY Geom[20]; DEVICE_MEDIA_INFO dinfo[20]; DWORD cb; GET_MEDIA_TYPES gmedia[20]; ZeroMemory(Geom, sizeof(Geom)); ZeroMemory(dinfo, sizeof(dinfo)); ZeroMemory(gmedia, sizeof(gmedia)); HANDLE hVolume = NULL; CString drive_argument; drive_argument.Format(_T("\\\\.\\%c:"), A_chletter); //wsprintf(szVolumeName, szVolumeFormat, cDriveLetter); hVolume = CreateFile( (TCHAR*)(LPCTSTR)drive_argument, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL ); if(DeviceIoControl (hVolume, IOCTL_STORAGE_GET_MEDIA_TYPES_EX, 0, 0, gmedia, sizeof(gmedia), &cb, 0)) { UINT MediaCharacteristics = gmedia[0].MediaInfo[0].DeviceSpecific.DiskInfo.MediaCharacteristics; MediaCharacteristics = MediaCharacteristics; CloseHandle(hVolume); if(gmedia[0].DeviceType == FILE_DEVICE_DVD)//FILE_DEVICE_CD_ROM AfxMessageBox("found dvd!"); return (STORAGE_MEDIA_TYPE)(gmedia[0].MediaInfo[0].DeviceSpecific.DiskInfo.MediaType); } CloseHandle(hVolume); return (STORAGE_MEDIA_TYPE)Unknown; }
see _STORAGE_MEDIA_TYPE enumeration type. :)many thanks, Will check it out. Hari Krishnan