This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/samples/os2/pdd/devreqp.h

135 lines
4.3 KiB
C

/*
* Some type definitions for OS/2 2.x/3.x driver request packets.
*/
#ifdef __cplusplus
extern "C" {
#endif
#if __WATCOMC__ >= 1000
#pragma pack(push,1);
#else
#pragma pack(1);
#endif
/*
* Look at \WATCOM\H\OS2\DEVSYM.INC for a description
* of the Device Driver Request Packet Definitions
*/
typedef struct REQP_HEADER REQP_HEADER;
struct REQP_HEADER {
BYTE length; // Length of request packet
BYTE unit; // Unit code (B)
BYTE command; // Command code
USHORT status; // Status code
ULONG res1; // Flags
REQP_HEADER FAR *next; // Link to next request packet in queue
};
typedef struct {
REQP_HEADER header;
union{
struct{
BYTE res; // Unused
ULONG devhlp; // Address of Dev Help entry point
PCHAR parms; // Command-line arguments
BYTE drive; // Drive number of first unit
} in;
struct {
BYTE units; // Number of supported units
USHORT finalcs; // Offset to end of code
USHORT finalds; // Offset of end of data
PVOID bpb; // BIOS parameter block
} out;
};
} REQP_INIT;
typedef struct {
REQP_HEADER header;
BYTE media; // Media descriptor
ULONG transaddr; // Transfer physical address
USHORT count; // bytes/sectors count
ULONG start; // Starting sector for block device
HFILE fileid; // System file number
} REQP_RWV;
typedef struct{
REQP_HEADER header;
HFILE fileid; // System file number
} REQP_OPENCLOSE;
typedef enum {
RPERR = 0x8000, // Error
RPDEV = 0x4000, // Device-specific error code
RPBUSY = 0x0200, // Device is busy
RPDONE = 0x0100, // Command complete
RPERR_PROTECT = 0x8000, // Write-protect error
RPERR_UNIT = 0x8001, // Unknown unit
RPERR_READY = 0x8002, // Not ready
RPERR_COMMAND = 0x8003, // Unknown command
RPERR_CRC = 0x8004, // CRC error
RPERR_LENGTH = 0x8005, // Bad request length
RPERR_SEEK = 0x8006, // Seek error
RPERR_FORMAT = 0x8007, // Unknown media
RPERR_SECTOR = 0x8008, // Sector not found
RPERR_PAPER = 0x8009, // Out of paper
RPERR_WRITE = 0x800A, // Write fault
RPERR_READ = 0x800B, // Read fault
RPERR_GENERAL = 0x800C, // General failure
RPERR_DISK = 0x800D, // Disk change
RPERR_MEDIA = 0x8010, // Uncertain media
RPERR_INTERRUPTED = 0x8011, // Call interrupted (character)
RPERR_MONITOR = 0x8012, // Monitors unsupported
RPERR_PARAMETER = 0x8013, // Invalid parameter
RPERR_USE = 0x8014, // Device in use
RPERR_INIT = 0x8015, // Non-critical init failure
} REQP_status;
typedef union {
REQP_HEADER header;
REQP_INIT init;
REQP_RWV rwv;
REQP_OPENCLOSE openclose;
} REQP_ANY;
/*
* Look at \WATCOM\H\OS2\DEVCMD.INC for a list
* of the Device Driver Request Packet Commands
*/
typedef enum {
RP_INIT = 0x00,
RP_MEDIA_CHECK = 0x01,
RP_BUILD_BPB = 0x02,
RP_READ = 0x04,
RP_READ_NO_WAIT = 0x05,
RP_INPUT_STATUS = 0x06,
RP_INPUT_FLUSH = 0x07,
RP_WRITE = 0x08,
RP_WRITE_VERIFY = 0x09,
RP_OUTPUT_STATUS = 0x0a,
RP_OUTPUT_FLUSH = 0x0b,
RP_OPEN = 0x0d,
RP_CLOSE = 0x0e,
RP_REMOVABLE = 0x0f,
RP_IOCTL = 0x10,
RP_RESET = 0x11,
RP_GET_DRIVE_MAP = 0x12,
RP_SET_DRIVE_MAP = 0x13,
RP_DEINSTALL = 0x14,
RP_PARTITIONABLE = 0x16,
RP_GET_FIXED_MAP = 0x17,
RP_SHUTDOWN = 0x1c,
RP_GET_DRIVER_CAPS = 0x1d,
RP_END
} REQP_command;
#if __WATCOMC__ >= 1000
#pragma pack(pop);
#else
#pragma pack();
#endif
#ifdef __cplusplus
};
#endif