Четверг, 02.05.2024, 17:49
Главная Регистрация RSS
Приветствую Вас, Гость
Главная » Работа с файлами и каталогами

Информацию о файловой системе, расположенной на диске, можно получить функцией GetVolumelnformation, которая в VCL Win32 объявленна следующим образом:

function 
GetVolumelnformation(lpRootPathName: PChar;
lpVolumeNameBuffer: PChar; nVolumeNameSize: DWORD;
lpVolumeSerialNumber: PDWORD;
var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
lpFileSystemNameBuffer: PChar; nFileSystemNameSize: DWORD): BOOL; stdcall;
В VCL .NET функция объявлена так:
function 
GetVolumelnformation(lpRootPathName: string; 
lpVolumeNameBuffer: StringBuilder; nVolumeNameSize: DWORD;
out lpVolumeSerialNumber: DWORD;
out lpMaximumComponentLength, lpFileSystemFlags: DWORD;
lpFileSystemNameBuffer: StringBuilder;
nFileSystemNameSize: DWORD): BOOL; external;

Параметр lpRootPathName — корневой каталог диска. Параметр lpVolumeNameBuffer — буфер размера nVolumeNameSize, в который возвращается имя диска. В параметр lpVolumeSerialNumber возвращается серийный номер диска. Учтите, что это отнюдь не заводской номер винчестера. Это чисто служебный номер логического диска. В параметр pMaximumComponentLength ... Читать всю статью»

Дата: 01.08.2010 | Комментарии (1)

Список всех доступных дисков можно получить функцией GetLogicalDriveStrings, объявленной в VCL Win32 в модуле Windows следующим образом:

function
GetLogicalDriveStrings(nBufferLength: DWORD; lpBuffer:
PAnsiChar): DWORD; stdcall;

В VCL .NET в модуле Borland.VcLWindows объявление функции выглядит так:

function GetLogicalDriveStrings(nBufferLength: DWORD;
[out] lpBuffer: TBytes): DWORD;

Параметр nBufferLength определяет длину буфера lpBuffer, в который функция заносит список дисков. Функция возвращает длину буфера, которая нужна была бы для размещения всей информации. Если возвращенная длина больше nBufferLength, значит, список не удалось занести полностью. Если функция вернула 0, значит, произошла ошибка.

Список размещается в буфере в виде строк, обозначающих корневые каталоги.Например, "С:\". Отдельные строки отделяются друг от друга нулевыми символами. В конец списка заносится два нулевых символа. Обратите внимание на то, что в VCL Win32 параметр lpBuffer является указателем на строку, а в VCL .NET этот параметр — массив байтов. Каждые 2 байта соответствуют одному символу типа Char. Так что при необходимости иметь в результате вызова функции строку, ее еще надо сформировать из массива байтов. Определить тип конкретного диска можно функцией GetDriveType, ... Читать всю статью»

Дата: 14.07.2010 | Комментарии (1)