// Сохраняем номер первого такого устройства
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");
// Открываем устройство
iStatus = DeviceOpen(bLetters[0]);
if(iStatus & 0x8000)
{
printf("DeviceOpen status: %04.4X\n", iStatus);
return -1;
}
// Запускаем проигрывание
iStatus =
PlayAudioTrack(dwStartTrack, 0xffffffff, bLetters[0]);
if(iStatus & 0x8000)
{
printf("PlayAudioTrack status: %04.4X\n", iStatus);
return -1;
}
printf("Started. Press any key to stop and eject CD\n");
// Ожидаем, пока пользователь не нажмет клавишу
getch();
// Останавливаем проигрывание
iStatus = StopAudio(bLetters[0]);
if(iStatus & 0x8000)
{
printf("StopAudio status: %04.4X\n", iStatus);
return -1;
}
// Извлекаем диск
iStatus = EjectCD(bLetters[0]);
if(iStatus & 0x8000)
{
printf("EjectCD status: %04.4X\n", iStatus);
return -1;
}
// Закрываем устройство
iStatus = DeviceClose(bLetters[0]);
if(iStatus & 0x8000)
{
printf("DeviceClose status: %04.4X\n", iStatus);
return -1;
}
return 0;
}
// ---------------------------------------------------
// PlayAudioTrack