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

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

ProbKrnl and code for importing krnl symbols has been enhanched.
Now we'll lock 32-bit segments into memory too.
And some other fixes...

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