// класса CWinApp
//=====================================================
BOOL CMFStartApp::InitInstance() {
// Определяем характеристики файловой системы
FileSystemInfo();
// Завершаем приложение
return FALSE;
}
//=====================================================
// Метод FileSystemInfo главного класса приложения
// Определяет характеристики текущего тома и записывает
// их в файл
//=====================================================
void CMFStartApp::FileSystemInfo() {
// Метка тома
CString VolumeNameBuffer;
// Максимальная длина метки тома
DWORD nVolumeNameSize = 100;
// Серийный номер тома
DWORD VolumeSerialNumber;
// Максимальная длина имени файла
DWORD MaximumComponentLength;
// Характеристики файловой системы
DWORD FileSystemFlags;
// Тип файловой системы
CString FileSystemNameBuffer;
// Максимальная длина строки типа файловой системы
DWORD nFileSystemNameSize = 100;
// Получаем данные о файловой системе и текущем устройстве
GetVolumeInformation(NULL, VolumeNameBuffer.GetBuffer(nVolumeNameSize), nVolumeNameSize, &VolumeSerialNumber, &MaximumComponentLength, &FileSystemFlags, FileSystemNameBuffer.GetBuffer(nFileSystemNameSize), nFileSystemNameSize);
// Снимаем блокировку буферов
VolumeNameBuffer.ReleaseBuffer();
FileSystemNameBuffer.ReleaseBuffer();
// Обрабатываем ошибочные ситуации, которые могут
// возникнуть при работе с файлами
try {
// Создаем файл fsystem.dat и открываем его для записи
CStdioFile file('fsystem.dat', CFile::modeCreate | CFile::modeWrite | CFile::typeText);
// Временная строка, используемая для записи в файл
CString strTmpOut;
// Увеличиваем размер буфера до 512 байт
strTmpOut.GetBuffer(512);
// Записываем в файл метку тома
strTmpOut.Format('Метка тома: %s
', VolumeNameBuffer);
file.WriteString(strTmpOut);
// Записываем в файл серийный номер
strTmpOut.Format('Серийный номер: %X
', VolumeSerialNumber);
file.WriteString(strTmpOut);
// Записываем в файл тип файловой системы
strTmpOut.Format('Тип файловой системы: %s
', FileSystemNameBuffer);
file.WriteString(strTmpOut);
// Записываем в файл максимальную длину имени файла
strTmpOut.Format('Максимальная длина имени файла: %d
', MaximumComponentLength);
file.WriteString(strTmpOut);
// Записываем в файл свойства файловой системы
strTmpOut = 'Свойства файловой системы
';
if (FileSystemFlags & FS_CASE_IS_PRESERVED) strTmpOut += ' FS_CASE_IS_PRESERVED
';
if (FileSystemFlags & FS_CASE_SENSITIVE) strTmpOut += ' FS_CASE_SENSITIVE
';
if (FileSystemFlags & FS_UNICODE_STORED_ON_DISK) strTmpOut += ' FS_UNICODE_STORED_ON_DISK
';
if (FileSystemFlags & FS_PERSISTENT_ACLS) strTmpOut += ' FS_PERSISTENT_ACLS
';
if (FileSystemFlags & FS_FILE_COMPRESSION) strTmpOut += ' FS_FILE_COMPRESSION
';
if (FileSystemFlags & FS_VOL_IS_COMPRESSED) strTmpOut += ' FS_VOL_IS_COMPRESSED
';
file.WriteString(strTmpOut);
// Закрываем файл
file.Close();
// Отображаем сообщение об успешном завершении приложения