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



           

Программа CDPLAY


Программа CDPLAY предназначена для проигрывания дорожек звуковых компакт-дисков. При запуске этой программы необходимо указать параметр – номер блока, с которого должно выполняться проигрывание.

Ниже мы привели пример запуска программы, передав ей адрес 512:

CDPLAY, (c) A. Frolov, 1997

Track Red book: 512

Track Sierra: 0

MSCDEX version: 2.95

Found 1 CD Unit, start unit: G

CD-ROM letters: G

Started. Press any key to stop and eject CD

Этот адрес мы взяли из листинга, полученного программой CDINFO, описанной в предыдущем разделе. Он был пересчитан программой CDPLAY в формат Sierra, в результате чего программа запустила проигрывание самой первой звуковой дорожки диска.

Если после запуска программы и начала проигрывания нажать любую клавишу, проигрывание будет остановлено, а компакт-диск - извлечен из устройства чтения CD-ROM.

Исходный текст программы CDPLAY приведен в листинге 9.2.

Листинг 9.2. Файл cdplay\cdplay.с

// =====================================================

// Проигрывание звуковых компакт-дисков

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

// =====================================================

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <dos.h>

#include <memory.h>

 

typedef unsigned char BYTE;

typedef unsigned int  WORD;

typedef unsigned long DWORD;

// Необходимо для обеспечения выравнивания

// полей структур на границу байта

#pragma pack(1)

// Заголовок запроса для обращения к драйверу

typedef struct _ReqHdr

{

  BYTE bSize;

  BYTE bSubUnit;

  BYTE bCmd;

  WORD wStatus;

  BYTE bReserved[8];   

} ReqHdr;

 

typedef struct _PlayAudio

{

  ReqHdr rh;

  BYTE bMode;

  DWORD dwLoc;

  DWORD dwSectorNum;

} PlayAudio;

// Запрос IOCTL Output

typedef struct _IOCTL_Output

{            

  ReqHdr rh;

  BYTE   bMediaDescriptor;




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