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

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

Corrected FATAL error in k32QueryOptionsStatus.cpp. (Forgot SSToDS...)
Improved error messages during init.

File size: 5.2 KB
Line 
1/* $Id: dev16.h,v 1.10 2000-09-04 16:40:50 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 usRcInit32;
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
51typedef struct _D16VERIFYIMPORTTABDATA
52{
53 USHORT usRc;
54} D16VERIFYIMPORTTABDATA;
55typedef D16VERIFYIMPORTTABDATA FAR *PD16VERIFYIMPORTTABDATA;
56
57
58/**
59 * Regards goes to Matthieu Willm for (parts of) this!
60 */
61#ifdef INCL_16
62 typedef void FAR * FPVOID;
63#else
64 typedef ULONG FPVOID;
65#endif
66typedef struct _DosTable /* dt */
67{
68 UCHAR cul; /* count of entries (dwords) in this table.*/
69 FPVOID fph_HardError;
70 FPVOID fph_UCase;
71 ULONG UnknownOrReserved1;
72 ULONG UnknownOrReserved2;
73 ULONG UnknownOrReserved3;
74 FPVOID fph_MemMapAlias;
75 FPVOID fph_MemUnmapAlias;
76 FPVOID fph_GoProtAll;
77 FPVOID fph_GoRealAll;
78 FPVOID fph_doshlp_RedirDev;
79 ULONG UnknownOrReserved4;
80 ULONG UnknownOrReserved5;
81 FPVOID fph_SFFromSFN;
82 FPVOID fph_SegGetInfo;
83 FPVOID fph_AsgCheckDrive;
84 ULONG UnknownOrReserved6;
85 ULONG UnknownOrReserved7;
86} DOSTABLE, FAR *PDOSTABLE , NEAR *NPDOSTABLE;
87
88typedef struct _DosTable2 /* dt2 */
89{
90 UCHAR cul; /* count of entries (dwords) in this table.*/
91 FPVOID fpErrMap24;
92 FPVOID fpErrMap24End;
93 FPVOID fpErr_Table_24;
94 FPVOID fpCDSAddr;
95 FPVOID fpGDT_RDR1;
96 FPVOID fpInterrupLevel;
97 FPVOID fp_cInDos;
98 ULONG UnknownOrReserved1;
99 ULONG UnknownOrReserved2;
100 ULONG R0FlatCS;
101 ULONG R0FlatDS;
102 LIN pTKSSBase;
103 LIN pintSwitchStack;
104 LIN pprivatStack;
105 FPVOID fpPhysDiskTablePtr;
106 LIN pforceEMHandler;
107 LIN pReserveVM;
108 LIN p_pgpPageDir;
109 ULONG UnknownOrReserved3;
110} DOSTABLE2, FAR *PDOSTABLE2 , NEAR *NPDOSTABLE2;
111
112
113/*
114 * init functions
115 */
116USHORT NEAR dev0Init(PRPINITIN pRpIn, PRPINITOUT pRpOut);
117USHORT NEAR dev1Init(PRPINITIN pRpIn, PRPINITOUT pRpOut);
118USHORT NEAR R0Init16(PRP_GENIOCTL pRp);
119USHORT NEAR initGetDosTableData(void);
120#if 0 /*ndef CODE16_INIT*/
121#pragma alloc_text(CODE16_INIT, dev0Init, dev1Init, R0Init16, initGetDosTableData)
122#endif
123
124/*
125 * Thunking "functions" prototypes
126 */
127USHORT NEAR CallR0Init32(LIN pRpInit);
128USHORT NEAR CallGetKernelInfo32(ULONG addressKrnlInfoBuf);
129USHORT NEAR CallVerifyImportTab32(void);
130USHORT NEAR CallElfIOCtl(LIN pRpIOCtl);
131USHORT NEAR CallWin32kIOCtl(LIN pRpIOCtl);
132#if 0 /*ndef CODE16_INIT*/
133#pragma alloc_text(CODE16_INIT, CallR0Init32, CallVerifyImportTab32, CallGetKernelInfo32)
134#endif
135
136
137/*
138 * These are only for use in the 'aDevHdrs'.
139 */
140extern void NEAR strategyAsm0(void);
141extern void NEAR strategyAsm1(void);
142
143/*
144 * Global data.
145 */
146extern DDHDR aDevHdrs[2];
147extern PFN Device_Help;
148extern ULONG TKSSBase16;
149extern USHORT R0FlatCS16;
150extern USHORT R0FlatDS16;
151extern BOOL fInitTime;
152
153
154/*
155 * Stack to Flat DS - 16-bit version.
156 */
157/*#define SSToDS_16(pStackVar) ((LIN)(getTKSSBaseValue() + (ULONG)(USHORT)(pStackVar)))*/
158#define SSToDS_16(pStackVar) (SSToDS_16a((void NEAR *)pStackVar))
159
160extern LIN NEAR SSToDS_16a(void NEAR *pStackVar);
161
162/*
163 * START and END labels. NOTE: these are not bytes only assembly labels.
164 */
165extern char PASCAL DATA16START ;
166extern char PASCAL DATA16_BSSSTART ;
167extern char PASCAL DATA16_CONSTSTART;
168extern char PASCAL DATA16_INITSTART ;
169extern char PASCAL DATA16_INIT_BSSSTART ;
170extern char PASCAL DATA16_INIT_CONSTSTART;
171extern char PASCAL CODE16START ;
172extern char PASCAL CODE16_INITSTART ;
173extern char PASCAL CODE32START ;
174extern char PASCAL DATA32START ;
175extern char PASCAL BSS32START ;
176extern char PASCAL CONST32_ROSTART ;
177extern char PASCAL _VFTSTART ;
178extern char PASCAL EH_DATASTART ;
179
180extern char PASCAL CODE16END ;
181extern char PASCAL DATA16END ;
182extern char PASCAL DATA16_BSSEND ;
183extern char PASCAL DATA16_CONSTEND;
184extern char PASCAL DATA16_INITEND ;
185extern char PASCAL DATA16_INIT_BSSEND ;
186extern char PASCAL DATA16_INIT_CONSTEND;
187extern char PASCAL CODE16END ;
188extern char PASCAL CODE16_INITEND ;
189extern char PASCAL CODE32END ;
190extern char PASCAL DATA32END ;
191extern char PASCAL BSS32END ;
192extern char PASCAL CONST32_ROEND ;
193extern char PASCAL _VFTEND ;
194extern char PASCAL EH_DATAEND ;
195
196
197#endif
Note: See TracBrowser for help on using the repository browser.