[MEDIA][FONTS] Add Arabic MS Sans Serif (ssee1256.fon)
[reactos.git] / boot / freeldr / freeldr / include / winldr.h
1 /*
2 * FreeLoader
3 * Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
4 * Copyright (C) 2006 Aleksey Bragin <aleksey@reactos.org>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 */
20
21 #pragma once
22
23 #include <arc/setupblk.h>
24
25 // See freeldr/ntldr/winldr.h
26 #define TAG_WLDR_DTE 'eDlW'
27 #define TAG_WLDR_BDE 'dBlW'
28 #define TAG_WLDR_NAME 'mNlW'
29
30
31 // Some definitions
32
33 // FIXME: This one has nothing to do here!!
34 #define SECTOR_SIZE 512
35
36 // Descriptors
37 #define NUM_GDT 128 // Must be 128
38 #define NUM_IDT 0x100 // Only 16 are used though. Must be 0x100
39
40 #include <pshpack1.h>
41 typedef struct /* Root System Descriptor Pointer */
42 {
43 CHAR signature [8]; /* contains "RSD PTR " */
44 UCHAR checksum; /* to make sum of struct == 0 */
45 CHAR oem_id [6]; /* OEM identification */
46 UCHAR revision; /* Must be 0 for 1.0, 2 for 2.0 */
47 ULONG rsdt_physical_address; /* 32-bit physical address of RSDT */
48 ULONG length; /* XSDT Length in bytes including hdr */
49 ULONGLONG xsdt_physical_address; /* 64-bit physical address of XSDT */
50 UCHAR extended_checksum; /* Checksum of entire table */
51 CHAR reserved [3]; /* reserved field must be 0 */
52 } RSDP_DESCRIPTOR, *PRSDP_DESCRIPTOR;
53 #include <poppack.h>
54
55 typedef struct _ARC_DISK_SIGNATURE_EX
56 {
57 ARC_DISK_SIGNATURE DiskSignature;
58 CHAR ArcName[MAX_PATH];
59 } ARC_DISK_SIGNATURE_EX, *PARC_DISK_SIGNATURE_EX;
60
61 ////////////////////////////////////////////////////////////////////////////////
62 //
63 // ReactOS Loading Functions
64 //
65 ////////////////////////////////////////////////////////////////////////////////
66
67 ARC_STATUS
68 LoadAndBootWindows(
69 IN ULONG Argc,
70 IN PCHAR Argv[],
71 IN PCHAR Envp[]);
72
73 ARC_STATUS
74 LoadReactOSSetup(
75 IN ULONG Argc,
76 IN PCHAR Argv[],
77 IN PCHAR Envp[]);
78
79
80 // conversion.c and conversion.h
81 PVOID VaToPa(PVOID Va);
82 PVOID PaToVa(PVOID Pa);
83 VOID List_PaToVa(_In_ LIST_ENTRY *ListEntry);
84
85
86 // peloader.c
87 BOOLEAN
88 WinLdrLoadImage(IN PCHAR FileName,
89 TYPE_OF_MEMORY MemoryType,
90 OUT PVOID *ImageBasePA);
91
92 BOOLEAN
93 WinLdrAllocateDataTableEntry(IN OUT PLIST_ENTRY ModuleListHead,
94 IN PCCH BaseDllName,
95 IN PCCH FullDllName,
96 IN PVOID BasePA,
97 OUT PLDR_DATA_TABLE_ENTRY *NewEntry);
98
99 BOOLEAN
100 WinLdrScanImportDescriptorTable(IN OUT PLIST_ENTRY ModuleListHead,
101 IN PCCH DirectoryPath,
102 IN PLDR_DATA_TABLE_ENTRY ScanDTE);
103
104 BOOLEAN
105 WinLdrCheckForLoadedDll(IN OUT PLIST_ENTRY ModuleListHead,
106 IN PCH DllName,
107 OUT PLDR_DATA_TABLE_ENTRY *LoadedEntry);
108
109
110 // arch/xxx/winldr.c
111 BOOLEAN
112 MempSetupPaging(IN PFN_NUMBER StartPage,
113 IN PFN_NUMBER NumberOfPages,
114 IN BOOLEAN KernelMapping);
115
116 VOID
117 MempUnmapPage(PFN_NUMBER Page);
118
119 VOID
120 MempDump(VOID);
121
122 VOID
123 WinLdrSetupMachineDependent(PLOADER_PARAMETER_BLOCK LoaderBlock);
124
125 VOID
126 WinLdrSetProcessorContext(VOID);