d CD Unit, start unit:
nCDUnits = rg.x.bx;
// Сохраняем номер первого такого устройства
nCDStartUnit = rg.x.cx;
// Определяем и отображаем вресию MSCDEX
rg.x.ax = 0x150c;
int86(0x2f, &rg, &rg);
printf("MSCDEX version: %d.%d\n", rg.h.bh, rg.h.bl);
// Отображаем количество найденных устройств чтения
// CD-ROM и номер первого устройства
printf("Found % d CD Unit, start unit: %c\n",
nCDUnits, nCDStartUnit + 'A');
}
// Получаем массив номеров устройств чтения CD-ROM
GetCDLetters(bLetters);
// Отображаем обозначения всех устройств CD-ROM
printf("CD-ROM letters: ");
for(i = 0; i < nCDUnits; i++)
{
printf("%c ", bLetters[i] + 'A');
}
printf("\n");
// Цикл по всем устройствам чтения CD-ROM
for(i = 0; i < nCDUnits; i++)
{
// Определяем и отображаем состояние устройства
iStatus = GetDeviceStatus(bLetters[i]);
if(iStatus != 0x0100)
{
printf("GetDeviceStatus status: %04.4X\n", iStatus);
printf("GetDeviceStatus failed\n");
exit(1);
}
printf("\nStatus of CD Drive %c: %08.8X\n",
bLetters[i] + 'A', ds.dwParam);
// Определяем и отображаем объем устройства
iStatus = GetVolumeSize(bLetters[i]);
if(iStatus != 0x0100)
{
printf("GetVolumeSize status: %04.4X\n", iStatus);
printf("GetVolumeSize failed\n");
}
else
printf("VolumeSize: %ld blocks\n", vs.dwVolumeSize);
// Определяем и отображаем информацию о
// компакт-диске
iStatus = GetDiskInfo(bLetters[i]);
// Делаем три попытки получения информации
iRetry = 0;
while(iStatus != 0x0100)
{
printf("GetDiskInfo status: %04.4X\n", iStatus);
// Задержка длительностью 1 с
delay(1000);
iRetry++;
Содержание Назад Вперед