Аппаратное обеспечение персонального компьютера


           

Если удалось получить информацию


   

      if(iRetry == 3)

      {

        printf("GetDiskInfo failed\n");

        break;

      }

      iStatus = GetDiskInfo(bLetters[i]);

    }

 

    // Если удалось получить информацию о компакт-диске,

    // исследуем его дорожки

    if(iRetry != 3)

    {

      // Выводим номера дорожек

      printf("Tracks: (%d - %d) %d\n",

        di.bLowest, di.bHighest, di.dwTotal);

      // Цикл по всем дорожкам диска

      for(j = di.bLowest; j <= di.bHighest; j++)

      {

        // Получаем информацию о дорожке и отображаем ее

        GetTrackInfo(j, bLetters[i]);

        printf("track %d: location: %ld, info: %02.2X",

          j, ti.dwLoc, ti.bInfo);

     

        // Определяем тип дорожки - звуковая дорожка

        // или дорожка с данными

        if(ti.bInfo & 0x40)

          printf(" * digital");

        else

          printf(" * audio");

        // Определяем, разрашено ли копирование дорожки

        if(ti.bInfo & 0x20)

          printf(", copy permitted *\n");

        else

          printf(", copy prohibited *\n");

      }

    } 

  }

  return 0;

}

// ---------------------------------------------------

// GetDiskInfo

// Получение информации о компакт-диске

// ---------------------------------------------------

int GetDiskInfo(int nCDUnit)

{

  // Заголовок команды IOCTL Input

  IOCTL_Input cmd;

 

  // Очищаем заголовок

  memset(&cmd, 0, sizeof(IOCTL_Input ));

 

  // Заполняем заголовок

  cmd.rh.bSize    = 26;

  cmd.rh.bSubUnit = 0;

  cmd.rh.bCmd     = 3;

 

  cmd.bMediaDescriptor  = 0;

  cmd.lpTransferAddress = (DWORD)(void far *)&di;

  cmd.wDataSize         = 7;

  cmd.wStartSector      = 0;

  cmd.lpVolID           = (DWORD)(void far *)NULL;

 

  di.bControl = 10;

 

  // Вызываем драйвер

  CallCDDriver(&cmd, nCDUnit);

 

  return cmd.rh.wStatus;



// ---------------------------------------------------


Содержание  Назад  Вперед