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

Last change on this file since 4164 was 4164, checked in by bird, 25 years ago

Merged in the Grace branch. New Win32k!

File size: 5.1 KB
Line 
1/* $Id: dev16.h,v 1.9 2000-09-02 21:08:00 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#if 0 /*ndef CODE16_INIT*/
116#pragma alloc_text(CODE16_INIT, dev0Init, dev1Init, R0Init16, initGetDosTableData)
117#endif
118
119/*
120 * Thunking "functions" prototypes
121 */
122USHORT NEAR CallR0Init32(LIN pRpInit);
123USHORT NEAR CallGetKernelInfo32(ULONG addressKrnlInfoBuf);
124USHORT NEAR CallVerifyImportTab32(void);
125USHORT NEAR CallElfIOCtl(LIN pRpIOCtl);
126USHORT NEAR CallWin32kIOCtl(LIN pRpIOCtl);
127#if 0 /*ndef CODE16_INIT*/
128#pragma alloc_text(CODE16_INIT, CallR0Init32, CallVerifyImportTab32, CallGetKernelInfo32)
129#endif
130
131
132/*
133 * These are only for use in the 'aDevHdrs'.
134 */
135extern void NEAR strategyAsm0(void);
136extern void NEAR strategyAsm1(void);
137
138/*
139 * Global data.
140 */
141extern DDHDR aDevHdrs[2];
142extern PFN Device_Help;
143extern ULONG TKSSBase16;
144extern USHORT R0FlatCS16;
145extern USHORT R0FlatDS16;
146extern BOOL fInitTime;
147
148
149/*
150 * Stack to Flat DS - 16-bit version.
151 */
152/*#define SSToDS_16(pStackVar) ((LIN)(getTKSSBaseValue() + (ULONG)(USHORT)(pStackVar)))*/
153#define SSToDS_16(pStackVar) (SSToDS_16a((void NEAR *)pStackVar))
154
155extern LIN NEAR SSToDS_16a(void NEAR *pStackVar);
156
157/*
158 * START and END labels. NOTE: these are not bytes only assembly labels.
159 */
160extern char PASCAL DATA16START ;
161extern char PASCAL DATA16_BSSSTART ;
162extern char PASCAL DATA16_CONSTSTART;
163extern char PASCAL DATA16_INITSTART ;
164extern char PASCAL DATA16_INIT_BSSSTART ;
165extern char PASCAL DATA16_INIT_CONSTSTART;
166extern char PASCAL CODE16START ;
167extern char PASCAL CODE16_INITSTART ;
168extern char PASCAL CODE32START ;
169extern char PASCAL DATA32START ;
170extern char PASCAL BSS32START ;
171extern char PASCAL CONST32_ROSTART ;
172extern char PASCAL _VFTSTART ;
173extern char PASCAL EH_DATASTART ;
174
175extern char PASCAL CODE16END ;
176extern char PASCAL DATA16END ;
177extern char PASCAL DATA16_BSSEND ;
178extern char PASCAL DATA16_CONSTEND;
179extern char PASCAL DATA16_INITEND ;
180extern char PASCAL DATA16_INIT_BSSEND ;
181extern char PASCAL DATA16_INIT_CONSTEND;
182extern char PASCAL CODE16END ;
183extern char PASCAL CODE16_INITEND ;
184extern char PASCAL CODE32END ;
185extern char PASCAL DATA32END ;
186extern char PASCAL BSS32END ;
187extern char PASCAL CONST32_ROEND ;
188extern char PASCAL _VFTEND ;
189extern char PASCAL EH_DATAEND ;
190
191
192#endif
Note: See TracBrowser for help on using the repository browser.