📄 cdaudio.h
字号:
struct _PNR_START_STOP {
UCHAR OperationCode;
UCHAR Immediate : 1;
UCHAR Reserved1 : 4;
UCHAR Lun : 3;
UCHAR Reserved2 : 7;
UCHAR PCF : 1;
UCHAR Reserved3;
UCHAR Start : 1;
UCHAR Eject : 1;
UCHAR Reserved4 : 6;
UCHAR Link : 1;
UCHAR Flag : 1;
UCHAR Reserved5 : 4;
UCHAR Vendor : 2;
} PNR_START_STOP, *PPNR_START_STOP;
//
// Pioneer Read TOC CDB
//
struct _PNR_READ_TOC {
UCHAR OperationCode;
UCHAR Reserved1 : 5;
UCHAR Lun : 3;
UCHAR Reserved2[3];
UCHAR TrackNumber;
UCHAR Reserved3;
UCHAR AssignedLength[2];
UCHAR Link : 1;
UCHAR Flag : 1;
UCHAR Reserved4 : 4;
UCHAR Type : 2;
} PNR_READ_TOC, *PPNR_READ_TOC;
//
// Pioneer Play CDB
//
struct _PNR_PLAY_AUDIO {
UCHAR OperationCode;
UCHAR PlayMode : 4;
UCHAR StopAddr : 1;
UCHAR Lun : 3;
UCHAR Reserved1;
UCHAR Minute;
UCHAR Second;
UCHAR Frame;
UCHAR Reserved2[3];
UCHAR Link : 1;
UCHAR Flag : 1;
UCHAR Reserved3 : 4;
UCHAR Type : 2;
} PNR_PLAY_AUDIO, *PPNR_PLAY_AUDIO;
//
// Pioneer Seek Audio
//
struct _PNR_SEEK_AUDIO {
UCHAR OperationCode;
UCHAR PlayMode : 4;
UCHAR PlayBack : 1;
UCHAR Lun : 3;
UCHAR Reserved1;
UCHAR Minute;
UCHAR Second;
UCHAR Frame;
UCHAR Reserved2[3];
UCHAR Link : 1;
UCHAR Flag : 1;
UCHAR Reserved3 : 4;
UCHAR Type : 2;
} PNR_SEEK_AUDIO, *PPNR_SEEK_AUDIO;
//
// Pioneer Pause Audio
//
struct _PNR_PAUSE_AUDIO {
UCHAR OperationCode;
UCHAR Reserved1 : 4;
UCHAR Pause : 1;
UCHAR Lun : 3;
UCHAR Reserved2[7];
UCHAR Link : 1;
UCHAR Flag : 1;
UCHAR Reserved3 : 4;
UCHAR Reserved4 : 2;
} PNR_PAUSE_AUDIO, *PPNR_PAUSE_AUDIO;
//
// Pioneer Audio Status
//
struct _PNR_AUDIO_STATUS {
UCHAR OperationCode;
UCHAR Reserved1 : 4;
UCHAR Reserved2 : 1;
UCHAR Lun : 3;
UCHAR Reserved3[6];
UCHAR AssignedLength;
UCHAR Link : 1;
UCHAR Flag : 1;
UCHAR Reserved4 : 4;
UCHAR Reserved5 : 2;
} PNR_AUDIO_STATUS, *PPNR_AUDIO_STATUS;
//
// Pioneer Read Q Channel
//
struct _PNR_READ_Q_CHANNEL {
UCHAR OperationCode;
UCHAR Reserved1 : 4;
UCHAR Reserved2 : 1;
UCHAR Lun : 3;
UCHAR Reserved3[6];
UCHAR AssignedLength;
UCHAR Link : 1;
UCHAR Flag : 1;
UCHAR Reserved4 : 4;
UCHAR Reserved5 : 2;
} PNR_READ_Q_CHANNEL, *PPNR_READ_Q_CHANNEL;
//
// Pioneer Eject Disc
//
struct _PNR_EJECT {
UCHAR OperationCode;
UCHAR Immediate : 1;
UCHAR Reserved1 : 4;
UCHAR Lun : 3;
UCHAR Reserved2[7];
UCHAR Link : 1;
UCHAR Flag : 1;
UCHAR Reserved4 : 4;
UCHAR Reserved5 : 2;
} PNR_EJECT, *PPNR_EJECT;
struct _PNR_READ_STATUS {
UCHAR OperationCode;
UCHAR Reserved1 : 4;
UCHAR Lun : 3;
UCHAR PageCode : 5;
UCHAR PCField : 1;
UCHAR Reserved2[5];
UCHAR AllocationLengthMsb;
UCHAR AllocationLengthLsb;
UCHAR Link : 1;
UCHAR Flag : 1;
UCHAR Reserved3 : 4;
UCHAR Reserved4 : 2;
} PNR_READ_STATUS, *PPNR_READ_STATUS;
} PNR_CDB, *PPNR_CDB;
//
// Defines for DENON DRD-253
//
#define DENON_READ_TOC_CODE 0xE9
#define DENON_EJECT_CODE 0xE6
#define DENON_PLAY_AUDIO_EXTENDED_CODE 0x22
#define DENON_STOP_AUDIO_CODE 0xE7
#define DENON_READ_SUB_Q_CHANNEL_CODE 0xEB
//
// Defines for HITACHI 1750s
//
#define HITACHI_READ_TOC_CODE 0xE8
#define HITACHI_EJECT_CODE 0xE4
#define HITACHI_PLAY_AUDIO_MSF_CODE 0xE0
#define HITACHI_PAUSE_AUDIO_CODE 0xE1
#define HITACHI_READ_SUB_Q_CHANNEL_CODE 0xE5
//
// 12 byte cdbs for Hitachi and Atapi
//
typedef union _HITACHICDB {
//
// Disc Information
//
struct _READ_DISC_INFO {
UCHAR OperationCode;
UCHAR Reserved : 5;
UCHAR LogicalUnitNumber : 3;
UCHAR Reserved1[7];
UCHAR AllocationLength[2];
UCHAR Link : 1;
UCHAR Flag : 1;
UCHAR Reserved2 : 4;
UCHAR VendorUniqueBits : 2;
} READ_DISC_INFO, *PREAD_DISC_INFO;
//
// Play Audio
//
struct {
UCHAR OperationCode;
UCHAR Immediate : 1;
UCHAR Right : 1;
UCHAR Left : 1;
UCHAR Reserved : 2;
UCHAR Lun : 3;
UCHAR StartingM;
UCHAR StartingS;
UCHAR StartingF;
UCHAR Reserved1[2];
UCHAR EndingM;
UCHAR EndingS;
UCHAR EndingF;
UCHAR Reserved2;
UCHAR Link : 1;
UCHAR Flag : 1;
UCHAR Reserved3 : 4;
UCHAR VendorUniqueBits : 2;
} PLAY_AUDIO, *PPLAY_AUDIO;
//
// Pause Audio
//
struct _PAUSE {
UCHAR OperationCode;
UCHAR Reserved : 5;
UCHAR Lun : 3;
UCHAR Reserved1[9];
UCHAR Link : 1;
UCHAR Flag : 1;
UCHAR Reserved2 : 4;
UCHAR VendorUnqiueBits : 2;
} PAUSE_AUDIO, *PPAUSE_AUDIO;
//
// Eject media
//
struct _EJECT {
UCHAR OperationCode;
UCHAR Reserved : 5;
UCHAR Lun : 3;
UCHAR Reserved1[8];
UCHAR Eject : 1;
UCHAR Mode : 1;
UCHAR Reserved2 : 6;
UCHAR Link : 1;
UCHAR Flag : 1;
UCHAR Reserved3 : 4;
UCHAR VendorUnqiueBits : 2;
} EJECT, *PEJECT;
//
// Audio Status
//
struct _AUDIO_STATUS {
UCHAR OperationCode;
UCHAR Reserved : 5;
UCHAR Lun : 3;
UCHAR Reserved1[9];
UCHAR Link : 1;
UCHAR Flag : 1;
UCHAR Reserved2 : 4;
UCHAR VendorUnqiueBits : 2;
} AUDIO_STATUS, *PAUDIO_STATUS;
//
// Stop play
//
struct _STOP_PLAY {
UCHAR OperationCode;
UCHAR Reserved[11];
} STOP_PLAY, *PSTOP_PLAY;
} HITACHICDB, *PHITACHICDB;
//
// Defines for Chinon CDS-535 CDROM Drive
//
#define CDS535_READ_TOC_CODE 0x43
#define CDS535_EJECT_CODE 0xC0
#define CDS535_READ_SUB_Q_CHANNEL_CODE 0x42
#define CDS535_STOP_AUDIO 0xC6
#define CDS535_GET_LAST_SESSION 0x26
//
// Defines for Chinon CDS-435 CDROM Drive
//
#define CDS435_READ_TOC_CODE 0x43
#define CDS435_EJECT_CODE 0xC0
#define CDS435_STOP_AUDIO_CODE 0xC6
#define CDS435_PLAY_AUDIO_EXTENDED_CODE 0x47
#define CDS435_READ_SUB_Q_CHANNEL_CODE 0x42
//
// Define for Fujitsu CDROM device.
//
#define FUJITSU_READ_TOC_CODE 0xE3
//
// Algebraically equal to:
// 75*60*Minutes +
// 75*Seconds +
// Frames - 150
//
#define MSF_TO_LBA(Minutes,Seconds,Frames) \
(ULONG)(75 * ((60 * (Minutes)) + (Seconds)) + (Frames) - 150)
#define LBA_TO_MSF(Lba,Minutes,Seconds,Frames) \
{ \
(Minutes) = (UCHAR)( (Lba) / (60 * 75) ); \
(Seconds) = (UCHAR)(((Lba) % (60 * 75)) / 75); \
(Frames) = (UCHAR)(((Lba) % (60 * 75)) % 75); \
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -