source: cmedia/trunk/Runtime/strategy.h

Last change on this file was 354, checked in by stevenhl, 17 years ago

Import untested baseline cmedia sources, work products and binaries
Binaries and work products should be deleted from repository.
once new builds are verified to work.

File size: 3.9 KB
Line 
1/* $Id: strategy.h,v 1.1 2000/04/23 14:55:40 ktk Exp $ */
2
3/* SCCSID = %W% %E% */
4/****************************************************************************
5 * *
6 * Copyright (c) IBM Corporation 1994 - 1997. *
7 * *
8 * The following IBM OS/2 source code is provided to you solely for the *
9 * the purpose of assisting you in your development of OS/2 device drivers. *
10 * You may use this code in accordance with the IBM License Agreement *
11 * provided in the IBM Device Driver Source Kit for OS/2. *
12 * *
13 ****************************************************************************/
14/**@internal %W%
15 * Defines, and prototypes for the strategy entry point and it's functions.
16 * @version %I%
17 * @context Unless otherwise noted, all interfaces are Ring-0, 16-bit,
18 * <stack context>.
19 * @history
20 *
21 */
22#ifndef STRATEGY_INCLUDED
23#define STRATEGY_INCLUDED
24
25#ifndef OS2_INCLUDED
26#define INCL_NOPMAPI
27#include <os2.h>
28#endif
29
30#pragma pack(1);
31
32typedef struct { /* template for request header */
33 BYTE bLength; /* request packet length */
34 BYTE bUnit; /* unit code for block DD only */
35 BYTE bCommand; /* command code */
36 USHORT usStatus; /* return status */
37 ULONG dwReserved; /* reserved bytes */
38 ULONG ulQlink; /* queue linkage */
39 union { /* command-specific data */
40 struct {
41 BYTE b;
42 PFN ulDevHlp; /* dev help address */
43 char __far *szArgs; /* argument pointer */
44 BYTE bDrive;
45 } init_in;
46 struct {
47 BYTE bUnits;
48 USHORT usCodeEnd; // final code offset
49 USHORT usDataEnd; // final data offset
50 ULONG ul;
51 } init_out;
52 struct {
53 BYTE bMedia;
54 ULONG ulAddress;
55 USHORT usCount;
56 ULONG ulStartSector;
57 USHORT usSysFileNum;
58 } io;
59 struct {
60 BYTE bData;
61 } peek;
62 struct {
63 BYTE bCategory; // category code
64 BYTE bCode; // function code
65 void __far *pvParm; // address of parameter buffer
66 void __far *pvData; // address of data buffer
67 USHORT usSysFileNum; // system file number
68 USHORT usPLength; // length of parameter buffer
69 USHORT usDLength; // length of data buffer
70 } ioctl;
71 struct {
72 USHORT usSysFileNum; // system file number
73 } open_close;
74 } s;
75} REQPACKET, __far *PREQPACKET;
76
77#pragma pack();
78
79/* Constants relating to the Strategy Routines
80*/
81
82#define RPDONE 0x0100 // return successful, must be set
83#define RPBUSY 0x0200 // device is busy (or has no data to return)
84#define RPDEV 0x4000 // user-defined error
85#define RPERR 0x8000 // return error
86
87// List of error codes, from chapter 8 of PDD reference
88#define RPNOTREADY 0x0002
89#define RPBADCMD 0x0003
90#define RPGENFAIL 0x000c
91#define RPBADPARAM 0x0013 // Rudi
92#define RPDEVINUSE 0x0014
93#define RPINITFAIL 0x0015
94
95// list of Strategy commands from PDD reference
96// Note this is only the list of commands audio device drivers care about
97#define STRATEGY_INIT 0x00
98#define STRATEGY_OPEN 0x0D
99#define STRATEGY_CLOSE 0x0E
100#define STRATEGY_GENIOCTL 0x10
101#define STRATEGY_DEINSTALL 0x14
102#define STRATEGY_INITCOMPLETE 0x1F
103
104#endif
Note: See TracBrowser for help on using the repository browser.