source: trunk/src/win32k/kKrnlLib/include/dev16.h

Last change on this file was 9514, checked in by bird, 23 years ago

Cleanup/Backup.

File size: 4.7 KB
Line 
1/* $Id: dev16.h,v 1.5 2002-12-16 02:25:06 bird Exp $
2 *
3 * 16 bit device stuff.
4 *
5 * Copyright (c) 2002 knut st. osmundsen <bird@anduin.net>
6 *
7 *
8 * This file is part of kKrnlLib.
9 *
10 * kKrnlLib is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * kKrnlLib is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with kKrnlLib; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 *
24 */
25
26#ifndef _d16_h_
27#define _d16_h_
28
29#ifndef VMDHA_USEHIGHMEM /* macro from dhcalls.h where LIN and PLIN normally is declared. */
30typedef ULONG LIN;
31typedef ULONG FAR *PLIN;
32#endif
33#ifndef MAX_DISKDD_CMD /* macro from reqpkt.h where these normally is declared. */
34typedef void FAR *PRPINITIN;
35typedef void FAR *PRPINITOUT;
36typedef void FAR *PRP_GENIOCTL;
37typedef ULONG DDHDR;
38#endif
39
40
41/**
42 * Regards goes to Matthieu Willm for (parts of) this!
43 */
44#ifdef INCL_16
45 typedef void FAR * FPVOID;
46#else
47 typedef ULONG FPVOID;
48#endif
49typedef struct _DosTable /* dt */
50{
51 UCHAR cul; /* count of entries (dwords) in this table.*/
52 FPVOID fph_HardError;
53 FPVOID fph_UCase;
54 ULONG UnknownOrReserved1;
55 ULONG UnknownOrReserved2;
56 ULONG UnknownOrReserved3;
57 FPVOID fph_MemMapAlias;
58 FPVOID fph_MemUnmapAlias;
59 FPVOID fph_GoProtAll;
60 FPVOID fph_GoRealAll;
61 FPVOID fph_doshlp_RedirDev;
62 ULONG UnknownOrReserved4;
63 ULONG UnknownOrReserved5;
64 FPVOID fph_SFFromSFN;
65 FPVOID fph_SegGetInfo;
66 FPVOID fph_AsgCheckDrive;
67 ULONG UnknownOrReserved6;
68 ULONG UnknownOrReserved7;
69} DOSTABLE, FAR *PDOSTABLE , NEAR *NPDOSTABLE;
70
71typedef struct _DosTable2 /* dt2 */
72{
73 UCHAR cul; /* count of entries (dwords) in this table.*/
74 FPVOID fpErrMap24;
75 FPVOID fpErrMap24End;
76 FPVOID fpErr_Table_24;
77 FPVOID fpCDSAddr;
78 FPVOID fpGDT_RDR1;
79 FPVOID fpInterrupLevel;
80 FPVOID fp_cInDos;
81 ULONG UnknownOrReserved1;
82 ULONG UnknownOrReserved2;
83 ULONG R0FlatCS;
84 ULONG R0FlatDS;
85 LIN pTKSSBase;
86 LIN pintSwitchStack;
87 LIN pprivatStack;
88 FPVOID fpPhysDiskTablePtr;
89 LIN pforceEMHandler;
90 LIN pReserveVM;
91 LIN p_pgpPageDir;
92 ULONG UnknownOrReserved3;
93} DOSTABLE2, FAR *PDOSTABLE2 , NEAR *NPDOSTABLE2;
94
95
96/*
97 * init functions
98 */
99USHORT NEAR devInit(PRPINITIN pRpIn, PRPINITOUT pRpOut);
100USHORT NEAR R0Init16(PRP_GENIOCTL pRp);
101USHORT NEAR initGetDosTableData(void);
102ULONG NEAR GetR0InitPtr(void);
103ULONG NEAR GetVerifyImportTab32Ptr(void);
104ULONG NEAR GetGetKernelInfo32Ptr(void);
105ULONG NEAR GetLookupKrnlEntry32Ptr(void);
106
107/*
108 * Thunking "functions" prototypes
109 */
110ULONG NEAR CallR0Addr32bit(LIN ulAddr, ULONG ulParam);
111
112/*
113 * These are only for use in the 'aDevHdrs'.
114 */
115extern void NEAR strategyAsm0(void);
116extern void NEAR strategyAsm1(void);
117
118/*
119 * Global data.
120 */
121extern DDHDR aDevHdrs[2];
122extern PFN Device_Help;
123extern ULONG pulTKSSBase32;
124extern USHORT R0FlatCS16;
125extern USHORT R0FlatDS16;
126extern LIN linDT;
127extern LIN linDT2;
128extern BOOL fInitTime;
129extern unsigned long DATA16Base;
130
131
132/*
133 * Stack to Flat DS - 16-bit version.
134 */
135/*#define SSToDS_16(pStackVar) ((LIN)(getTKSSBaseValue() + (ULONG)(USHORT)(pStackVar)))*/
136#define SSToDS_16(pStackVar) (SSToDS_16a((void NEAR *)pStackVar))
137
138extern LIN NEAR SSToDS_16a(void NEAR *pStackVar);
139
140/*
141 * START and END labels. NOTE: these are not bytes only assembly labels.
142 */
143extern char PASCAL DATA16START ;
144extern char PASCAL DATA16_BSSSTART ;
145extern char PASCAL DATA16_CONSTSTART;
146extern char PASCAL CODE16START ;
147extern char PASCAL CODE32START ;
148extern char PASCAL DATA32START ;
149extern char PASCAL BSS32START ;
150extern char PASCAL CONST32_ROSTART ;
151extern char PASCAL _VFTSTART ;
152extern char PASCAL EH_DATASTART ;
153
154extern char PASCAL CODE16END ;
155extern char PASCAL DATA16END ;
156extern char PASCAL DATA16_BSSEND ;
157extern char PASCAL DATA16_CONSTEND;
158extern char PASCAL DATA16_ENDEND ;
159extern char PASCAL CODE16END ;
160extern char PASCAL CODE16_ENDEND ;
161extern char PASCAL CODE32END ;
162extern char PASCAL DATA32END ;
163extern char PASCAL BSS32END ;
164extern char PASCAL CONST32_ROEND ;
165extern char PASCAL _VFTEND ;
166extern char PASCAL EH_DATAEND ;
167
168
169#endif
Note: See TracBrowser for help on using the repository browser.