Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 03.01.2017
Сообщений: 2
1

Формат дискет через IOCTL_Disk_Format_Tracks_Ex под ХР

24.01.2010, 00:06. Показов 793. Ответов 0
Метки нет (Все метки)

Хочу отформатировать дискеты в нестандартном формате под ХР. Раньше под ДОСом форматировал с помощью FFormat 2.29f и все нормально работало, но теперь из-за большой скорости проца на этой проге выскакивает ошибка 200. Поменять значения в модуле CRT для исправления этой ошибки, как многократно рекомендовалось, нет возможности - там искомая последовательность не встречается.

Залез на MSDN, взял все, что нужно. Но мне не понятны назначения полей FormatGapLength и SectorNumber в структуре FORMAT_EX_PARAMETERS. Привожу описание из MSDN по этим двум параметрам:

FormatGapLength - Length of the gap between two successive sectors on a track.
SectorNumber - Array of WORD values specifying the sector numbers of the sectors to be included in the track to be formatted.

Теперь пример кода, который я написал:

type
TMediaType = (Unknown,F5_1Pt2_512,F3_1Pt44_512,F3_2Pt88_512,F3_20Pt8_512,
F3_720_512,F5_360_512,F5_320_512,F5_320_1024,F5_180_512,
F5_160_512,RemovableMedia,FixedMedia);

TFormatParametersEx = packed record
MEDIA_TYPE: TMediaType;
StartCylinderNumber: DWORD;
EndCylinderNumber: DWORD;
StartHeadNumber: DWORD;
EndHeadNumber: DWORD;
FormatGapLength: WORD;
SectorsPerTrack: WORD;
SectorNumber: array[0..0] of WORD;
end;

var
H: THandle;
FPE: TFormatParametersEx;
BTN: array[0..82] of word; // BAD_TRACK_NUMBER array
BR: cardinal;

...

begin
// Открываем устройство для варианта NT
H:=CreateFile('\.A:',GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if H=INVALID_HANDLE_VALUE then Exit;

// Заполняем структуру для форматирования дискеты 1.74 Мб - 83 дорожки, 2 стороны, 21 сектор на дорожку
FPE.MEDIA_TYPE:=F3_1Pt44_512;
FPE.StartCylinderNumber:=0;
FPE.EndCylinderNumber:=82;
FPE.StartHeadNumber:=0;
FPE.EndHeadNumber:=1;
FPE.FormatGapLength:=0; // ??
FPE.SectorsPerTrack:=21;

// Далее нужно заполнить поле SectorNumber, но я не знаю чем. Пробовал:
// 1) SectorNumber: WORD и обнулял значение
// 2) SectorNumber: array[0..82] of WORD - по числу дорожек

DeviceIOControl(H,IOCTL_Disk_Format_Tracks_Ex,@FPE,sizeof(FP E),@BTN,sizeof(BTN),BR,nil);
BR:=GetLastError;
CloseHandle(H);
end;

GetLastError всегда возвращает ошибку 87 - Invalid Parameter. В чем замес? Что не нравится в параметрах - не пойму. Ткните носом в примеры или укажете где я неправ, плз...

PS: Выставление параметров на стандартный формат (80 дорожек, 2 стороны, 17 секторов) тоже возвращает код 87. А вызов IOCTL_Disk_Format_Tracks форматирует нормально весь диск.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2010, 00:06
Ответы с готовыми решениями:

Чтение дискет через RDP
столкнулся с проблемой: удаленный рабочий стол видит USB FDD, но отказывается читать дискеты....

UNIX формат под Windows
Суть: Надо настраивать много роутеров, меняется в конфигурации (файл config1.dat) только пароль(361...

Оптимальный формат парсера под 1С
У нас есть парсера, которые собирают информацию о товарах с площадок Яндекс маркет, хотлайн,...

Неизвестный формат данных под МК MC68336
Добрый день! Где можно почитать об этом формате записи данных в микрокотроллер /flash memory/ ? ...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2010, 00:06

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

GCC:Компиляция в формат elf под Windows
Можно ли при помощи gcc создать в Windows исполняемый файл в формате elf? Если можно, то как?

Форматирование дискет в DOS.
Всем доброго время суток подскажите пожалуйста как, какие команды надо использовать, чтобы...

Как подвести значения в столбце под один формат?
Добрый день. Возникла необходимость в excel подогнать\отредактировать значения поля под один...

Процедура копирования на несколько дискет
Задание: Написать процедуру организующую копирование указанных шаблоном файлов на произвольное...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.