|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Функції для роботи з дисковими накопичувачамиДля визначення інформації щодо вільного місця на певному диску можна використовувати функції WinAPI GetDiskFreeSpace і GetDiskFreeSpaceEx. Для використання обох функцій необхідно підключити до своєї програми модуль Windows.h, якщо він ще не був підключений. Розглянемо більш детально роботу цих функцій. Функція BOOL GetDiskFreeSpace (LPCTSTR lpRootPathName, LPDWORD lpSectorsPerCluster, LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters, LPDWORD lpTotalNumberOfClusters);
повертає інформацію про кількість секторів на один кластер (lpSectorsPerCluster), розмір кластера в байтах (lpBytesPerSector), кількість вільних кластерів (lpNumberOfFreeCluster), загальну кількість кластерів (lpTotalNumberOfClusters). В якості вхідного параметра функція приймає покажчик на нуль-термінований рядок, який визначає кореневий каталог диску, інформацію про який необхідно повернути. Визначення диску має завершуватися зворотнім слешем (наприклад, C:\). В разі успіху функція повертає ненульове значення. Слід відзначити, що ця функція повертає некоректну інформацію для дисків обсягом більше ніж 2 ГБ. Для отримання коректної інформації про диски великого обсягу слід використовувати функцію BOOL GetDiskFreeSpaceEx (LPCTSTR lpDirectoryName, PULARGE_INTEGER lpFreeBytesAvailable, PULARGE_INTEGER lpTotalNumberOfBytes, PULARGE_INTEGER lpTotalNumberOfFreeBytes);
Ця функція повертає кількість вільних і доступних користувачеві байт (lpFreeBytesAvailable), загальну кількість доступних користувачеві байт (lpTotalNumberOfBytes), загальну кількість вільних байт (lpTotalNumberOfFreeBytes). В якості вхідного параметра lpDirectoryName функція може приймати не тільки кореневий каталог, але й будь-який каталог на диску. Необхідно відмітити, що значення, які повертаються функціями GetDiskFreeSpace і GetDiskFreeSpaceEx, можуть бути відмінними від фактичних значень, якщо використовуються дискові квоти. Також слід відзначити, що функція GetDiskFreeSpaceEx повертає 64-бітні значення, тому треба бути уважними при роботі з ними, щоб не усікти до 32-бітних значень. Для визначення типу диску може використовуватись функція UINT GetDriveType (LPCTSTR lpRootPathName);
Вона приймає, аналогічно попереднім функціям, визначення кореневого каталогу диску, і повертає одне з наступних значень: DRIVE_UNKNOWN – якщо тип диску не може бути визначений; DRIVE_NO_ROOT_DIR – вказаний корень не є коректним; DRIVE_REMOVABLE – диск знімний; DRIVE_ FIXED – диск незнімний; DRIVE_REMOTE – диск в мережі; DRIVE_CDROM – диск є CD-ROM-диском; DRIVE_RAM – диск є RAM-диском. Для визначення мітки диску і його серійного номеру використовують функцію GetVolumeInformation. Перелік дисків, наявних у системі, можна отримати за допомогою однієї із функцій GetLogicalDrives або GetLogicalDrivesStrings. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |