Witam, mam kolejny problem związany z tym archaicznym już napędem... Otóż próbuje sformatować dyskietkę do rozmiaru 720kB. Do tego celu używam funkcji DeviceIoControl z parametrem IOCTL_DISK_FORMAT_TRACKS_EX i strukturą FORMAT_EX_PARAMETERS wypełnioną w taki sposób:

fmt.StartHeadNumber = 0;
fmt.EndHeadNumber = 1;
fmt.StartCylinderNumber = 0;
fmt.EndCylinderNumber = 79;
fmt.SectorsPerTrack = 9;
fmt.FormatGapLength = 0;
fmt.SectorNumber[0] = 0;

Wywołanie wygląda tak:

DeviceIoControl(hDevice, IOCTL_DISK_FORMAT_TRACKS_EX,&fmt,sizeof(FORMAT_EX_PARAMETERS),bufor,NULL,&bytesread,NULL); 

Niestety nie wiem za co odpowiada ostatni parametr i co do niego podstawić. W dokumentacji http://msdn.microsoft.com/en-us/library/aa364551%28v=vs.85%29.aspx pisze coś takiego:

An array of values specifying the sector numbers of the sectors to be included in the track to be formatted.

Niestety nie za bardzo wiem co to oznacza, gdyż jest to niejasno napisane. Nie jestem też pewien za co odpowiada parametr FormatGapLength i jaką wartość tu podać.

Jeżeli wywołam tą funkcje z powyższymi parametrami dostaję błąd: ERROR_INVALID_PARAMETER. Natomiast jeżeli zmienie wartość SectorsPerTrack na 1 to funkcją uruchamia się bez błędów niestety dyskietka jest wtedy formatowana w całkiem inny sposób niż potrzeba.

Czy ktoś wie czemu tak jest i jak to naprawić lub jakie są poprawne wartości?