/// <summary> /// /// </summary> /// <param name="result">0 - head определен. 1 - Заголовки не найдены. 2 - Заголовок найден, но он не TR-DOS</param> /// <param name="track"></param> /// <param name="trackFormat"></param> /// <returns></returns> private int ScanHeadParameter(ref UpperSideHead result, int track, TrackFormat trackFormat) { tagFD_READ_ID_PARAMS pars = new tagFD_READ_ID_PARAMS() { flags = Driver.FD_OPTION_MFM, head = (byte)(track & 1) }; tagFD_CMD_RESULT cmdResult = new tagFD_CMD_RESULT(); if (!Driver.ReadId(DriverHandle, pars, out cmdResult)) { Log.Trace?.Out($"Функция ReadId вернула false. Cylinder: {cmdResult.cyl} | Sector: {cmdResult.sector} | Size: {cmdResult.size} | Head: {cmdResult.head} | LastError: {Marshal.GetLastWin32Error()}"); return(1); } //if (cmdResult.sector < 1 || cmdResult.sector > 16 || cmdResult.size != 1) //{ // Log.Trace?.Out($"Формат не TR-DOS. Cylinder: {cmdResult.cyl} | Sector: {cmdResult.sector} | Size: {cmdResult.size} | Head: {cmdResult.head}"); // return 2; //} trackFormat.SyncByHeader(track, cmdResult.sector); Log.Trace?.Out($"Cylinder: {cmdResult.cyl} | Sector: {cmdResult.sector} | Size: {cmdResult.size} | Head: {cmdResult.head}"); result = (UpperSideHead)cmdResult.head; return(0); }