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

Last change on this file since 8266 was 6227, checked in by bird, 24 years ago

Declared Win32k Open/Close thunking procedures.

File size: 5.3 KB
Line 
1/* $Id: dev16.h,v 1.11 2001-07-08 03:05:28 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);
132USHORT NEAR CallWin32kOpen(LIN pRpOpen);
133USHORT NEAR CallWin32kClose(LIN pRpClose);
134#if 0 /*ndef CODE16_INIT*/
135#pragma alloc_text(CODE16_INIT, CallR0Init32, CallVerifyImportTab32, CallGetKernelInfo32)
136#endif
137
138
139/*
140 * These are only for use in the 'aDevHdrs'.
141 */
142extern void NEAR strategyAsm0(void);
143extern void NEAR strategyAsm1(void);
144
145/*
146 * Global data.
147 */
148extern DDHDR aDevHdrs[2];
149extern PFN Device_Help;
150extern ULONG TKSSBase16;
151extern USHORT R0FlatCS16;
152extern USHORT R0FlatDS16;
153extern BOOL fInitTime;
154
155
156/*
157 * Stack to Flat DS - 16-bit version.
158 */
159/*#define SSToDS_16(pStackVar) ((LIN)(getTKSSBaseValue() + (ULONG)(USHORT)(pStackVar)))*/
160#define SSToDS_16(pStackVar) (SSToDS_16a((void NEAR *)pStackVar))
161
162extern LIN NEAR SSToDS_16a(void NEAR *pStackVar);
163
164/*
165 * START and END labels. NOTE: these are not bytes only assembly labels.
166 */
167extern char PASCAL DATA16START ;
168extern char PASCAL DATA16_BSSSTART ;
169extern char PASCAL DATA16_CONSTSTART;
170extern char PASCAL DATA16_INITSTART ;
171extern char PASCAL DATA16_INIT_BSSSTART ;
172extern char PASCAL DATA16_INIT_CONSTSTART;
173extern char PASCAL CODE16START ;
174extern char PASCAL CODE16_INITSTART ;
175extern char PASCAL CODE32START ;
176extern char PASCAL DATA32START ;
177extern char PASCAL BSS32START ;
178extern char PASCAL CONST32_ROSTART ;
179extern char PASCAL _VFTSTART ;
180extern char PASCAL EH_DATASTART ;
181
182extern char PASCAL CODE16END ;
183extern char PASCAL DATA16END ;
184extern char PASCAL DATA16_BSSEND ;
185extern char PASCAL DATA16_CONSTEND;
186extern char PASCAL DATA16_INITEND ;
187extern char PASCAL DATA16_INIT_BSSEND ;
188extern char PASCAL DATA16_INIT_CONSTEND;
189extern char PASCAL CODE16END ;
190extern char PASCAL CODE16_INITEND ;
191extern char PASCAL CODE32END ;
192extern char PASCAL DATA32END ;
193extern char PASCAL BSS32END ;
194extern char PASCAL CONST32_ROEND ;
195extern char PASCAL _VFTEND ;
196extern char PASCAL EH_DATAEND ;
197
198
199#endif
Note: See TracBrowser for help on using the repository browser.