ドライブ情報を取得する。
void xxxxxx::GetDriveInformation( CString strDrive, CString* strDriveName )
{
CUtils mc_utils;
CString DiskSerialNumber; // Diskシリアル番号
CString VolumeName; // 指定ドライブのボリューム名
CString FormatStyle; // フォーマット形式
CString FindDrive= strDrive; //デフォルト値
UINT oldMode=SetErrorMode(SEM_NOOPENFILEERRORBOX);
TCHAR lpNameBuffer[255], //指定したDISKのボリューム名
lpFileSystemNameBuffer[255]; //フォーマット形式
DWORD SerialNumber= 0, // ボリュームシリアルナンバーを格納する変数へのポインタ
MaximumComponentLength, // ファイル名構成要素の最大長を格納する変数へのポインタ
lpFileSystemFlags; // ファイルシステムフラグを格納する変数へのポインタ
if (FindDrive == ""){
/*ドライブ指定*/
FindDrive = "c:\\";
}
if(::GetVolumeInformation( FindDrive,
lpNameBuffer,
255,&SerialNumber,
&MaximumComponentLength,
&lpFileSystemFlags,lpFileSystemNameBuffer,255) == 0)
{
return;
}
else{
CString wStr = _T("");
wStr.Format( _T("%u") ,SerialNumber); //unsigned
DiskSerialNumber = wStr; //Diskシリアル番号
VolumeName = lpNameBuffer; //Cドライブのボリューム名
FormatStyle = lpFileSystemNameBuffer; //フォーマット形式
}
SetErrorMode(oldMode);
mc_utils.LpstrToString( (char*)mc_utils.CStringToLptstr( lpNameBuffer), *strDriveName );
}
void xxxxxx::GetDriveInformation( CString strDrive, CString* strDriveName )
{
CUtils mc_utils;
CString DiskSerialNumber; // Diskシリアル番号
CString VolumeName; // 指定ドライブのボリューム名
CString FormatStyle; // フォーマット形式
CString FindDrive= strDrive; //デフォルト値
UINT oldMode=SetErrorMode(SEM_NOOPENFILEERRORBOX);
TCHAR lpNameBuffer[255], //指定したDISKのボリューム名
lpFileSystemNameBuffer[255]; //フォーマット形式
DWORD SerialNumber= 0, // ボリュームシリアルナンバーを格納する変数へのポインタ
MaximumComponentLength, // ファイル名構成要素の最大長を格納する変数へのポインタ
lpFileSystemFlags; // ファイルシステムフラグを格納する変数へのポインタ
if (FindDrive == ""){
/*ドライブ指定*/
FindDrive = "c:\\";
}
if(::GetVolumeInformation( FindDrive,
lpNameBuffer,
255,&SerialNumber,
&MaximumComponentLength,
&lpFileSystemFlags,lpFileSystemNameBuffer,255) == 0)
{
return;
}
else{
CString wStr = _T("");
wStr.Format( _T("%u") ,SerialNumber); //unsigned
DiskSerialNumber = wStr; //Diskシリアル番号
VolumeName = lpNameBuffer; //Cドライブのボリューム名
FormatStyle = lpFileSystemNameBuffer; //フォーマット形式
}
SetErrorMode(oldMode);
mc_utils.LpstrToString( (char*)mc_utils.CStringToLptstr( lpNameBuffer), *strDriveName );
}
PR
この記事にコメントする