有効なドライブを取得する。
void xxxxxx::GetDrive( CStringArray& strArrDrive, int iDriveType )
{
//0:ALL
//1:ハードディスク
//2:リムーバブルディスク( FD / MO 等 )
//3:CD-ROM/CD-RW
int iDTypes = iDriveType; // 検索対象:HDD
DWORD drv;
char SvDrv[8];
CStringArray CSAdrives;
drv = GetLogicalDrives();
if(drv==0) return;
for (int lpcnt = 0;lpcnt < 26;lpcnt++){ //a->Zまで
if (drv & (1L << lpcnt)){ //i番目のビットを取り出し(マスク)
wsprintfW( (LPWSTR)SvDrv, _T("%c:\\"),lpcnt + 'A');
switch( iDTypes )
{
case 0://ALL DriveGet
//pListView->AddString(SvDrv);
strArrDrive.Add( (LPCTSTR)SvDrv );
break;
case 1:
// HDD
if ( GetDriveTypeW( (LPCWSTR)SvDrv) == DRIVE_FIXED ){
strArrDrive.Add( (LPCTSTR)SvDrv );
}
break;
case 2:
// リムーバルディスク
if ( GetDriveTypeW((LPCWSTR)SvDrv) == DRIVE_REMOVABLE){
strArrDrive.Add( (LPCTSTR)SvDrv );
}
break;
case 3:
// CD-ROM
if ( GetDriveTypeW((LPCWSTR)SvDrv) == DRIVE_CDROM ){
strArrDrive.Add( (LPCTSTR)SvDrv );
}
break;
default:
strArrDrive.Add( (LPCTSTR)SvDrv );
break;
}
}
}
}
void xxxxxx::GetDrive( CStringArray& strArrDrive, int iDriveType )
{
//0:ALL
//1:ハードディスク
//2:リムーバブルディスク( FD / MO 等 )
//3:CD-ROM/CD-RW
int iDTypes = iDriveType; // 検索対象:HDD
DWORD drv;
char SvDrv[8];
CStringArray CSAdrives;
drv = GetLogicalDrives();
if(drv==0) return;
for (int lpcnt = 0;lpcnt < 26;lpcnt++){ //a->Zまで
if (drv & (1L << lpcnt)){ //i番目のビットを取り出し(マスク)
wsprintfW( (LPWSTR)SvDrv, _T("%c:\\"),lpcnt + 'A');
switch( iDTypes )
{
case 0://ALL DriveGet
//pListView->AddString(SvDrv);
strArrDrive.Add( (LPCTSTR)SvDrv );
break;
case 1:
// HDD
if ( GetDriveTypeW( (LPCWSTR)SvDrv) == DRIVE_FIXED ){
strArrDrive.Add( (LPCTSTR)SvDrv );
}
break;
case 2:
// リムーバルディスク
if ( GetDriveTypeW((LPCWSTR)SvDrv) == DRIVE_REMOVABLE){
strArrDrive.Add( (LPCTSTR)SvDrv );
}
break;
case 3:
// CD-ROM
if ( GetDriveTypeW((LPCWSTR)SvDrv) == DRIVE_CDROM ){
strArrDrive.Add( (LPCTSTR)SvDrv );
}
break;
default:
strArrDrive.Add( (LPCTSTR)SvDrv );
break;
}
}
}
}
PR
この記事にコメントする