source: trunk/src/win32k/include/dev16.h@ 2898

Last change on this file since 2898 was 2898, checked in by bird, 26 years ago

Symbol Database is implemented.
No scanning of the os2krnl file, the loaded image is now scaned to determin
which build, debug/retail and smp/uni.
And yet some more enhanchments like 16-bit logging.

File size: 4.6 KB
Line 
1/* $Id: dev16.h,v 1.8 2000-02-25 18:15:04 bird Exp $
2 * dev16 - 16-bit specific. Should not be used in 32-bit C/C++.
3 *
4 * Copyright (c) 1999 knut st. osmundsen
5 *
6 * Project Odin Software License can be found in LICENSE.TXT
7 *
8 */
9#ifndef _d16_h_
10#define _d16_h_
11
12#ifndef VMDHA_USEHIGHMEM /* macro from dhcalls.h where LIN and PLIN normally is declared. */
13typedef ULONG LIN;
14typedef ULONG FAR *PLIN;
15#endif
16#ifndef MAX_DISKDD_CMD /* macro from reqpkt.h where these normally is declared. */
17typedef void FAR *PRPINITIN;
18typedef void FAR *PRPINITOUT;
19typedef void FAR *PRP_GENIOCTL;
20typedef ULONG DDHDR;
21#endif
22
23/*
24 * Ring 0 init IOCtl (dev1 -> dev0)
25 */
26#define D16_IOCTL_CAT 0xC0
27#define D16_IOCTL_RING0INIT 0x40
28typedef struct _D16R0INITDATA
29{
30 USHORT Status;
31} D16R0INITDATA;
32typedef D16R0INITDATA FAR *PD16R0INITDATA;
33
34typedef struct _D16R0INITPARAM
35{
36 PRPINITIN pRpInitIn;
37} D16R0INITPARAM;
38typedef D16R0INITPARAM FAR *PD16R0INITPARAM;
39
40
41/*
42 * Get Kernel OTEs. No params. Data is KRNLOBJTABLE (dev1632.h).
43 */
44#define D16_IOCTL_GETKRNLINFO 0x41
45
46
47/*
48 * Verify aImportTab. No params. No data (aImportTab is used).
49 */
50#define D16_IOCTL_VERIFYIMPORTTAB 0x42
51
52
53/**
54 * Regards goes to Matthieu Willm for (parts of) this!
55 */
56#ifdef INCL_16
57 typedef void FAR * FPVOID;
58#else
59 typedef ULONG FPVOID;
60#endif
61typedef struct _DosTable /* dt */
62{
63 UCHAR cul; /* count of entries (dwords) in this table.*/
64 FPVOID fph_HardError;
65 FPVOID fph_UCase;
66 ULONG UnknownOrReserved1;
67 ULONG UnknownOrReserved2;
68 ULONG UnknownOrReserved3;
69 FPVOID fph_MemMapAlias;
70 FPVOID fph_MemUnmapAlias;
71 FPVOID fph_GoProtAll;
72 FPVOID fph_GoRealAll;
73 FPVOID fph_doshlp_RedirDev;
74 ULONG UnknownOrReserved4;
75 ULONG UnknownOrReserved5;
76 FPVOID fph_SFFromSFN;
77 FPVOID fph_SegGetInfo;
78 FPVOID fph_AsgCheckDrive;
79 ULONG UnknownOrReserved6;
80 ULONG UnknownOrReserved7;
81} DOSTABLE, FAR *PDOSTABLE , NEAR *NPDOSTABLE;
82
83typedef struct _DosTable2 /* dt2 */
84{
85 UCHAR cul; /* count of entries (dwords) in this table.*/
86 FPVOID fpErrMap24;
87 FPVOID fpErrMap24End;
88 FPVOID fpErr_Table_24;
89 FPVOID fpCDSAddr;
90 FPVOID fpGDT_RDR1;
91 FPVOID fpInterrupLevel;
92 FPVOID fp_cInDos;
93 ULONG UnknownOrReserved1;
94 ULONG UnknownOrReserved2;
95 ULONG R0FlatCS;
96 ULONG R0FlatDS;
97 LIN pTKSSBase;
98 LIN pintSwitchStack;
99 LIN pprivatStack;
100 FPVOID fpPhysDiskTablePtr;
101 LIN pforceEMHandler;
102 LIN pReserveVM;
103 LIN p_pgpPageDir;
104 ULONG UnknownOrReserved3;
105} DOSTABLE2, FAR *PDOSTABLE2 , NEAR *NPDOSTABLE2;
106
107
108/*
109 * init functions
110 */
111USHORT NEAR dev0Init(PRPINITIN pRpIn, PRPINITOUT pRpOut);
112USHORT NEAR dev1Init(PRPINITIN pRpIn, PRPINITOUT pRpOut);
113USHORT NEAR R0Init16(PRP_GENIOCTL pRp);
114USHORT NEAR initGetDosTableData(void);
115
116
117/*
118 * Thunking "functions" prototypes
119 */
120USHORT NEAR CallR0Init32(LIN pRpInit);
121USHORT NEAR CallGetKernelInfo32(ULONG addressKrnlInfoBuf);
122USHORT NEAR CallVerifyImportTab32(void);
123USHORT NEAR CallElfIOCtl(LIN pRpIOCtl);
124USHORT NEAR CallWin32kIOCtl(LIN pRpIOCtl);
125
126
127/*
128 * These are only for use in the 'aDevHdrs'.
129 */
130extern void NEAR strategyAsm0(void);
131extern void NEAR strategyAsm1(void);
132
133/*
134 * Global data.
135 */
136extern DDHDR aDevHdrs[2];
137extern PFN Device_Help;
138extern ULONG TKSSBase16;
139extern USHORT R0FlatCS16;
140extern USHORT R0FlatDS16;
141extern BOOL fInitTime;
142
143
144/*
145 * Stack to Flat DS - 16-bit version.
146 */
147/*#define SSToDS_16(pStackVar) ((LIN)(getTKSSBaseValue() + (ULONG)(USHORT)(pStackVar)))*/
148#define SSToDS_16(pStackVar) (SSToDS_16a((void NEAR *)pStackVar))
149
150extern LIN SSToDS_16a(void NEAR *pStackVar);
151
152/*
153 * START and END labels. NOTE: these are not bytes only assembly labels.
154 */
155extern char PASCAL CODE16START ;
156extern char PASCAL DATA16START ;
157extern char PASCAL DATA16START ;
158extern char PASCAL DATA16_BSSSTART ;
159extern char PASCAL DATA16_CONSTSTART;
160extern char PASCAL CODE16START ;
161extern char PASCAL CODE32START ;
162extern char PASCAL DATA32START ;
163extern char PASCAL BSS32START ;
164extern char PASCAL CONST32_ROSTART ;
165extern char PASCAL _VFTSTART ;
166extern char PASCAL EH_DATASTART ;
167
168extern char PASCAL CODE16END ;
169extern char PASCAL DATA16END ;
170extern char PASCAL DATA16END ;
171extern char PASCAL DATA16_BSSEND ;
172extern char PASCAL DATA16_CONSTEND;
173extern char PASCAL CODE16END ;
174extern char PASCAL CODE32END ;
175extern char PASCAL DATA32END ;
176extern char PASCAL BSS32END ;
177extern char PASCAL CONST32_ROEND ;
178extern char PASCAL _VFTEND ;
179extern char PASCAL EH_DATAEND ;
180
181
182
183
184#endif
Note: See TracBrowser for help on using the repository browser.