home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC-Online 1998 February
/
PCOnline_02_1998.iso
/
filesbbs
/
os2
/
dsksl096.arj
/
DSKSL096.ZIP
/
dskslpub.h
< prev
next >
Wrap
C/C++ Source or Header
|
1997-11-23
|
5KB
|
152 lines
/*
* $Source: E:/source/driver/sleep/RCS/dskslpub.h,v $
* $Revision: 1.6 $
* $Date: 1997/08/24 01:53:44 $
* $Author: vitus $
*
* Describes IOCtl interface to dsksleep.flt
*
* $Log: dskslpub.h,v $
* Revision 1.6 1997/08/24 01:53:44 vitus
* Added DSKSL_GET_LASTSTATUS
*
* Revision 1.5 1997/06/03 23:07:52 vitus
* Removed syntax error
*
* Revision 1.4 1997/04/05 01:56:25 vitus
* Expanded QUERY_VERSION to return additional bitfield
*
* Revision 1.3 1997/03/03 01:21:15 vitus
* Added DSKSL_MSGS_* IOCtls and structure
*
* Revision 1.2 1997/02/26 01:49:54 vitus
* Added SET/QUERY_DEVSTATE, Changed timeout units to seconds
*
* Revision 1.1 1997/02/06 01:07:05 vitus
* Initial revision
* -------------------------------------------
* This code is Copyright Vitus Jensen 1996-97
*/
#if !defined(_DSKSLPUB_H)
#define _DSKSLPUB_H
#pragma pack(1) /* all structures packed */
/*
* IOCtl category and function codes
*/
#define IOCTL_DSKSLEEP_CATEGORY 0xC0 /* a user-defined category */
#define DSKSL_QUERY_VERSION 0x60 /* returns version and more */
#define DSKSL_QUERY_TIMEOUT 0x61 /* return device list */
#define DSKSL_SET_TIMEOUT 0x41 /* changes single entry */
#define DSKSL_QUERY_DEVSTATE 0x62 /* stopped? */
#define DSKSL_SET_DEVSTATE 0x42 /* stop now! */
#define DSKSL_READ_MSGS 0x63 /* read startup messages */
#define DSKSL_CLEAR_MSGS 0x43 /* forget all messages */
#define DSKSL_GET_LASTSTATUS 0x64 /* reads statusblock + sense */
/* Describes installed DSKSleep.flt */
typedef struct _DSKSL_VER_DATA {
USHORT version; /* as in PC-DOS */
USHORT flags; /* BIT0: registered */
} DSKSL_VER_DATA;
/* Defines device settings */
typedef struct _DEVICE_TIMEOUT {
UCHAR adapter; /* adapter index */
UCHAR unit; /* unit index */
UCHAR reserved[2]; /* (padding) */
ULONG seconds; /* 0 -> no sleep */
} DEVICE_TIMEOUT;
/* Returned by DSKSL_QUERY_TIMEOUT */
typedef struct _DSKSL_QL_DATA {
USHORT cb; /* byte count driver wants
to return (may be larger
than application buffer) */
UCHAR reserved[2]; /* (padding) */
DEVICE_TIMEOUT list[1]; /* some compiler don't
support '[]' ... */
} DSKSL_QL_DATA, * PDSKSL_QL_DATA;
/* Passed to DSKSL_SET_TIMEOUT */
typedef struct _DSKSL_SETTO_PARM {
USHORT cb; /* size of complete structure */
UCHAR reserved[2]; /* (padding) */
DEVICE_TIMEOUT list[1]; /* see above */
} DSKSL_SETTO_PARM, * PDSKSL_SETTO_PARM;
/* Passed to DSKSL_QUERY_DEVSTATE, DSKSL_SET_DEVSTATE and DSKSL_GET_LASTSTATUS */
typedef struct _DSKSL_DEVSTATE_PARM {
UCHAR adapter; /* adapter index */
UCHAR unit; /* unit index */
} DSKSL_DEVSTATE_PARM, * PDSKSL_DEVSTATE_PARM;
/* Returned from DSKSL_QUERY_DEVSTATE
* -- x seconds until device is stopped
* Passed to DSKSL_SET_DEVSTATE
* -- change current timeout to x seconds
* setting this value to 0 will immediately stop the
* device.
* OBS: any disk I/O will reset the device timeout to it's maximum. */
typedef struct _DSKSL_DEVSTATE_DATA {
ULONG seconds; /* seconds still to go
until device is stopped */
} DSKSL_DEVSTATE_DATA, * PDSKSL_DEVSTATE_DATA;
/* Returned by DSKSL_READ_MSGS
* 'msg' will contain a buffer filled with ASCIIZ strings. Strings
* usually don't contain newlines.
* Some time in the future this buffer might even contain messages
* added after system startup.
* To clear the buffer just issue DSKSL_CLEAR_MSGS w/o parameter or
* data buffer. */
typedef struct _DSKSL_MSGS_DATA {
USHORT cb; /* byte count driver wants
to return */
char msg[1]; /* some compiler don't
support '[]' */
} DSKSL_MSGS_DATA;
/* Reads statusblock and sense data from last I/O issued. See DDK
* information for format of status block and a SCSI II+ spec for
* sense data.
* Warning: this data may not be consistent, i.e. status and statusblock
* may come from different I/Os if you happen to call this IOCtl during
* device start or stop. */
typedef struct _DSKSL_STATUS_DATA {
UCHAR iotype; /* DSKIO_* */
UCHAR reserved; /* 0 */
USHORT status; /* see DDK */
USHORT error; /* see DDK */
UCHAR statusblock[23]; /* see DDK */
UCHAR sensedata[18]; /* see SCSI spec */
} DSKSL_STATUS_DATA, * PDSKSL_STATUS_DATA;
#define DSKIO_ALLOC 1
#define DSKIO_DEALLOC 2
#define DSKIO_CHANGEUI 3
#define DSKIO_START 4
#define DSKIO_STOP 5
#define DSKIO_VERIFY 6
#define DSKIO_TESTREADY 7
#pragma pack()
#endif /* _DSKSLPUB_H */