home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
listings
/
v_02_05
/
2n05029a
< prev
next >
Wrap
Text File
|
1991-02-06
|
2KB
|
94 lines
/*
* Listing: 2
* File: Device.H
* Purpose: Contains definitions and declarations for
* device drivers
*/
#ifndef STANDARD
#include "standard.h"
#endif
/**
standard part of all driver request headers
**/
typedef struct ReqHdr {
BYTE length; /* header length */
BYTE unit; /* unit number */
BYTE command; /* command code */
WORD status; /* return status */
BYTE reserved[8];
} RH;
/**
INIT Request Header
**/
typedef struct ReqHdr_Init {
RH rh;
BYTE numUnits; /* # of units */
FPTR brkAddress; /* end of driver */
FPTR bpb;
BYTE devNumber;
} RH_INIT;
/**
IOCTL Request Header
**/
typedef struct ReqHdr_IO {
RH rh;
BYTE media; /* media type */
FPTR dta; /* data buffer */
WORD count; /* transfer count*/
WORD start; /* start location*/
FPTR vol_id; /* volume id */
} RH_IO;
/**
CDROM READ Request Header
**/
typedef struct ReqHdr_CDRead {
RH rh;
BYTE addrMode; /* HSG/Red Book */
FPTR dta; /* data buffer */
WORD count; /* sector count */
DWORD start; /* sector start */
BYTE readMode; /* Raw/Cooked */
BYTE iSize; /* interleave */
BYTE iSkip; /* interleave */
} RH_CDREAD;
/**
CDROM SEEK Request Header
**/
typedef struct ReqHdr_CDSeek {
RH rh;
BYTE addrMode; /* HSG/Red Book */
FPTR dta; /* data buffer */
WORD count; /* sector count */
DWORD start; /* sector start */
} RH_CDSEEK;
/**
Device Driver Return Statuses
**/
#define DEV_ERROR 0x8000 /* an error occurred */
#define DEV_BUSY 0x0200 /* device is busy */
#define DEV_DONE 0x0100 /* command completed */
#define DEV_EWPROTECT 0x0000 /* write protected */
#define DEV_EUNIT 0x0001 /* unknown unit */
#define DEV_EDRIVE 0x0002 /* drive not ready */
#define DEV_ECMD 0x0003 /* unknown command */
#define DEV_ECRC 0x0004 /* CRC error */
#define DEV_ERH 0x0005 /* bad request header */
#define DEV_ESEEK 0x0006 /* seek error */
#define DEV_EMEDIA 0x0007 /* unknown media */
#define DEV_ESECT 0x0008 /* sector not found */
#define DEV_EPAPER 0x0009 /* out of paper */
#define DEV_EWRITE 0x000a /* write fault */
#define DEV_EREAD 0x000b /* read fault */
#define DEV_EGEN 0x000c /* general failure */
#define DEV_ECHANGE 0x000f /* disk change error */