Учебное пособие: Файловая система

// если возникла ошибка (не хватило памяти для получения списка устройств)

// то просто выводим текст с сообщением, но не заканчиваем, что бы не

// заботиться об уничтожении временного файла досрочно

_lwrite(hf, "NOT ENOUGHT MEMORY TO GET INFORMATION!\r\n", 40);}

// пишемвторойзаголовок

_lwrite(hf, "\r\n******** READ DOS DEVICES MAP ********\r\n\r\n", 44);

// просто для примера назначаем Z: как каталог, содержащий win.com

GetWindowsDirectory(buffer, sizeof(buffer));

SetLastError(ERROR_SUCCESS);

DefineDosDevice(0, devZ, buffer);

if (GetLastError() != ERROR_SUCCESS) {

// функция DefineDosDevice нереализована - этоне Windows NT!

_lwrite(hf, "NOTE: DefineDosDevice() is not implemented!\r\n", 45);

} else {

// если назначить удалось - это NT, получаем полный список и выводим его

// хотя может быть и Windows 98

buffer[ QueryDosDevice(NULL, buffer, 1024) ] = ‘\0’;

// функция QueryDosDevice возвращает число символов, скопированных в буфер

// и в случае Windows 98 мы получим 0, хотя сам буфер может содержать мусор.

for (p = buffer; *p; p += lstrlen(p) + 1) {

_lwrite(hf, " ", 15 - lstrlen(p));

_lwrite(hf, p, lstrlen(p));

_lwrite(hf, " = ", 3);

// используем массив file_system в качестве временной строки

QueryDosDevice(p, file_system, sizeof(file_system));

_lwrite(hf, file_system, lstrlen(file_system));

_lwrite(hf, "\r\n", 2);}

GetWindowsDirectory(buffer, sizeof(buffer));

// удаляем назначенное нами устройство

К-во Просмотров: 533
Бесплатно скачать Учебное пособие: Файловая система