Перед вами
очередной выпуск рассылки "Программирование на WinApi" Переводы многих функций Win32API, которые часто используются
в данной рассылке, вы можете получать, подписавшись на дружественную
рассылку "WinAPI на
русском". Справочник по функциям Win32API вы
можете посмотреть на сайте BcbDev.ru в разделе MSDN
по-русски.
Как узнать путь к флоппи
диску в стиле "A:\"и как определить есть ли в нем
дискета?
Значится так. Будем считать,
что у нас не может быть более 2х девайсов типа флопа в системе. И,
основываясь на коде Сергея Андык, делаем некоторые дополнения. Собственно
сам код:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
BOOL IsDiskInDrive ( LPTSTR lpszDrive )
{
UINT errmode;
TCHAR szVolName[256];
DWORD dwMaxComSize;
DWORD dwFlags;
TCHAR szFS[256];
BOOL bRes;
errmode = SetErrorMode ( SEM_FAILCRITICALERRORS );
bRes = GetVolumeInformation ( lpszDrive, szVolName, sizeof(szVolName), NULL, &dwMaxComSize, &dwFlags, szFS, sizeof(szFS) );
SetErrorMode ( errmode );
return bRes;
}
BOOL DriveExists(int nDrive)
{
UINT uType;
char DriveName[]="#:\\";
DriveName[0]=(char)65+nDrive;
;
uType = GetDriveType (DriveName);
if (uType!=DRIVE_NO_ROOT_DIR)
return TRUE;
else
return FALSE;
}
int main()
{
if(DriveExists(0))
{
if(IsDiskInDrive("A:\\"))
printf("Drive A:\\ exists. Disk in drive\n");
else
printf("Drive A:\\ exists. Disk not in drive\n");
}
else
printf("Drive A:\\ not exists\n");
if(DriveExists(1))
{
if(IsDiskInDrive("B:\\"))
printf("Drive B:\\ exists. Disk in drive\n");
else
printf("Drive B:\\ exists. Disk not in drive\n");
}
else
printf("Drive B:\\ not exists\n");
getch();
return 0;
}