logo
Фролов Александр

Листинг 3.1. Файл TestFile.Cpp

// Включаемый файл для MFC

#include <afxwin.h>

//=====================================================

// Главный класс приложения CMFStartApp

//=====================================================

class CMFStartApp : public CWinApp {

public:

 virtual BOOL InitInstance();

 void FileSystemInfo();

};

// Создаем объект приложение класса CMFStartApp

CMFStartApp MFStartApp;

//=====================================================

// Переопределяем виртуальный метод InitInstance

// класса 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 \n", VolumeNameBuffer);

  file.WriteString(strTmpOut);

  // Записываем в файл серийный номер

  strTmpOut.Format("Серийный номер: %X \n", VolumeSerialNumber);

  file.WriteString(strTmpOut);

  // Записываем в файл тип файловой системы

  strTmpOut.Format("Тип файловой системы: %s \n", FileSystemNameBuffer);

  file.WriteString(strTmpOut);

  // Записываем в файл максимальную длину имени файла

  strTmpOut.Format("Максимальная длина имени файла: %d \n", MaximumComponentLength);

  file.WriteString(strTmpOut);

  // Записываем в файл свойства файловой системы

  strTmpOut = "Свойства файловой системы \n";

  if (FileSystemFlags & FS_CASE_IS_PRESERVED) strTmpOut += " FS_CASE_IS_PRESERVED\n";

  if (FileSystemFlags & FS_CASE_SENSITIVE) strTmpOut += " FS_CASE_SENSITIVE\n";

  if (FileSystemFlags & FS_UNICODE_STORED_ON_DISK) strTmpOut += " FS_UNICODE_STORED_ON_DISK\n";

  if (FileSystemFlags & FS_PERSISTENT_ACLS) strTmpOut += " FS_PERSISTENT_ACLS\n";

  if (FileSystemFlags & FS_FILE_COMPRESSION) strTmpOut += " FS_FILE_COMPRESSION\n";

  if (FileSystemFlags & FS_VOL_IS_COMPRESSED) strTmpOut += " FS_VOL_IS_COMPRESSED\n";

  file.WriteString(strTmpOut);

  // Закрываем файл

  file.Close();

  // Отображаем сообщение об успешном завершении приложения

  MessageBox(NULL, "File fsystem.dat", "Message", MB_OK);

 }

 // Обработчик исключения. Вызывается при ошибках

 // работы с файлами

 catch(...) {

  // Отображаем сообщение о возникшей ошибке

  MessageBox(NULL, "File I/O Error", "Error", MB_OK);

 }

 return;

}

Файл fsystem.dat, созданный приложением, можно просмотреть в любом текстовом редакторе, например Notepad или WordPad. В листинге 3.2 приведен пример файла, полученного при помощи приложения TestFile на нашем компьютере, на котором установлена операционная система Windows 95.