ReactOS
0.4.15-dev-5853-gcb454ef
peloader.h
Go to the documentation of this file.
1
/*
2
* PROJECT: FreeLoader
3
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4
* PURPOSE: Provides routines for loading PE files.
5
* (Deprecated remark) To be merged with arch/i386/loader.c in future.
6
*
7
* COPYRIGHT: Copyright 1998-2003 Brian Palmer <brianp@sginet.com>
8
* Copyright 2006-2019 Aleksey Bragin <aleksey@reactos.org>
9
*
10
* NOTES: The source code in this file is based on the work of respective
11
* authors of PE loading code in ReactOS and Brian Palmer and
12
* Alex Ionescu's arch/i386/loader.c, and my research project
13
* (creating a native EFI loader for Windows).
14
*
15
* This article was very handy during development:
16
* http://msdn.microsoft.com/msdnmag/issues/02/03/PE2/
17
*/
18
19
#pragma once
20
21
/* Optional user-provided callback used by the PE loader
22
* when it loads DLLs imported by a main image. */
23
typedef
VOID
24
(
NTAPI
*
PELDR_IMPORTDLL_LOAD_CALLBACK
)(
25
_In_
PCSTR
FileName
);
26
27
extern
PELDR_IMPORTDLL_LOAD_CALLBACK
PeLdrImportDllLoadCallback
;
28
29
BOOLEAN
30
PeLdrLoadImage
(
31
IN
PCHAR
FileName
,
32
IN
TYPE_OF_MEMORY
MemoryType,
33
OUT
PVOID
*ImageBasePA);
34
35
BOOLEAN
36
PeLdrAllocateDataTableEntry
(
37
IN
OUT
PLIST_ENTRY
ModuleListHead
,
38
IN
PCCH
BaseDllName,
39
IN
PCCH
FullDllName
,
40
IN
PVOID
BasePA,
41
OUT
PLDR_DATA_TABLE_ENTRY
*NewEntry);
42
43
VOID
44
PeLdrFreeDataTableEntry
(
45
// _In_ PLIST_ENTRY ModuleListHead,
46
_In_
PLDR_DATA_TABLE_ENTRY
Entry
);
47
48
BOOLEAN
49
PeLdrScanImportDescriptorTable
(
50
IN
OUT
PLIST_ENTRY
ModuleListHead
,
51
IN
PCCH
DirectoryPath,
52
IN
PLDR_DATA_TABLE_ENTRY
ScanDTE);
53
54
BOOLEAN
55
PeLdrCheckForLoadedDll
(
56
IN
OUT
PLIST_ENTRY
ModuleListHead
,
57
IN
PCH
DllName,
58
OUT
PLDR_DATA_TABLE_ENTRY
*LoadedEntry);
BOOLEAN
unsigned char BOOLEAN
Definition:
ProcessorBind.h:185
VOID
#define VOID
Definition:
acefi.h:82
FileName
struct _FileName FileName
Definition:
fatprocs.h:896
void
Definition:
nsiface.idl:2307
ModuleListHead
LIST_ENTRY * ModuleListHead
Definition:
kdpacket.c:23
FullDllName
_In_ PCWSTR FullDllName
Definition:
ldrtypes.h:247
_In_
#define _In_
Definition:
ms_sal.h:308
PCH
CHAR * PCH
Definition:
ntbasedef.h:391
PCCH
CONST CHAR * PCCH
Definition:
ntbasedef.h:392
PeLdrScanImportDescriptorTable
BOOLEAN PeLdrScanImportDescriptorTable(IN OUT PLIST_ENTRY ModuleListHead, IN PCCH DirectoryPath, IN PLDR_DATA_TABLE_ENTRY ScanDTE)
Definition:
peloader.c:522
PeLdrFreeDataTableEntry
VOID PeLdrFreeDataTableEntry(_In_ PLDR_DATA_TABLE_ENTRY Entry)
Definition:
peloader.c:715
PeLdrCheckForLoadedDll
BOOLEAN PeLdrCheckForLoadedDll(IN OUT PLIST_ENTRY ModuleListHead, IN PCH DllName, OUT PLDR_DATA_TABLE_ENTRY *LoadedEntry)
Definition:
peloader.c:478
PeLdrImportDllLoadCallback
PELDR_IMPORTDLL_LOAD_CALLBACK PeLdrImportDllLoadCallback
Definition:
peloader.c:28
PeLdrLoadImage
BOOLEAN PeLdrLoadImage(IN PCHAR FileName, IN TYPE_OF_MEMORY MemoryType, OUT PVOID *ImageBasePA)
Definition:
peloader.c:736
PELDR_IMPORTDLL_LOAD_CALLBACK
VOID(NTAPI * PELDR_IMPORTDLL_LOAD_CALLBACK)(_In_ PCSTR FileName)
Definition:
peloader.h:24
PeLdrAllocateDataTableEntry
BOOLEAN PeLdrAllocateDataTableEntry(IN OUT PLIST_ENTRY ModuleListHead, IN PCCH BaseDllName, IN PCCH FullDllName, IN PVOID BasePA, OUT PLDR_DATA_TABLE_ENTRY *NewEntry)
Definition:
peloader.c:598
TYPE_OF_MEMORY
enum _TYPE_OF_MEMORY TYPE_OF_MEMORY
Entry
base of all file and directory entries
Definition:
entries.h:83
_FileName
Definition:
filecomp.c:348
_LDR_DATA_TABLE_ENTRY
Definition:
btrfs_drv.h:1876
_LIST_ENTRY
Definition:
typedefs.h:120
NTAPI
#define NTAPI
Definition:
typedefs.h:36
PCSTR
const char * PCSTR
Definition:
typedefs.h:52
IN
#define IN
Definition:
typedefs.h:39
OUT
#define OUT
Definition:
typedefs.h:40
PCHAR
char * PCHAR
Definition:
typedefs.h:51
boot
freeldr
freeldr
include
peloader.h
Generated on Tue Mar 21 2023 06:02:51 for ReactOS by
1.9.6