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


           

Слово состояния после вызова драйвера


  BYTE bLowest;

  BYTE bHighest;

  DWORD dwTotal;

} DiskInfo;

// Запрос на получение информации

// о дорожке компакт-диска

typedef struct _TrackInfo

{

  BYTE  bControl;

  BYTE  bTrack;

  DWORD dwLoc;

  BYTE  bInfo;

} TrackInfo;

// Запрос для определения текущего состояния

// устройства чтения CD-ROM

typedef struct _DeviceStatus

{

  BYTE bControl;

  DWORD dwParam;

} DeviceStatus;

// Запрос для определения общего количества

// секторов на компакт-диске

typedef struct _VolumeSize

{

  BYTE bControl;

  DWORD dwVolumeSize;

} VolumeSize;

#pragma pack()

// Прототипы функций

void GetCDLetters(BYTE *bLetters);

void CallCDDriver(void *rh, int nCDUnit);

int GetDiskInfo(int nCDUnit);

int GetDeviceStatus(int nCDUnit);

int GetVolumeSize(int nCDUnit);

int GetTrackInfo(int iTrack, int nCDUnit);

void delay(int ms);

// Регистры для вызова функции int86

union REGS rg;                     

// Количество установленных устройств чтения CD-ROM

int nCDUnits;

// Номер первого устройства чтения CD-ROM

int nCDStartUnit;

// Слово состояния после вызова драйвера CD-ROM

int iStatus;

// Информация о компакт-диске

DiskInfo     di;            

// Состояние устройства чтения CD-ROM

DeviceStatus ds;                    

// Объем компакт-диска

VolumeSize   vs;     

// Информация о дорожке

TrackInfo    ti;

BYTE bLetters[26];

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

// main

// Точка входа в программу

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

int main()

{

  int iRetry;

  int i, j;

 

  printf("CDINFO, (c) A. Frolov, 1997\n\n");

 

  // Проверяем, установлена ли программа MSCDEX

  rg.x.ax = 0x1500;

  rg.x.bx = 0;

  int86(0x2f, &rg, &rg);

  if(rg.x.bx == 0)

  {

    printf("MSCDEX is not installed\n");

    return -1;

  }

 

  else       

  {

    // Сохраняем общее количество устройств чтения CD-ROM


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