ReactOS 0.4.16-dev-974-g5022a45
ldrtypes.h
Go to the documentation of this file.
1/*++ NDK Version: 0098
2
3Copyright (c) Alex Ionescu. All rights reserved.
4
5Header Name:
6
7 ldrtypes.h
8
9Abstract:
10
11 Type definitions for the Loader.
12
13Author:
14
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
16
17--*/
18
19#ifndef _LDRTYPES_H
20#define _LDRTYPES_H
21
22//
23// Dependencies
24//
25#include <umtypes.h>
26
27//
28// Resource Type Levels
29//
30#define RESOURCE_TYPE_LEVEL 0
31#define RESOURCE_NAME_LEVEL 1
32#define RESOURCE_LANGUAGE_LEVEL 2
33#define RESOURCE_DATA_LEVEL 3
34
35//
36// Loader Data Table Entry Flags
37//
38#define LDRP_STATIC_LINK 0x00000002
39#define LDRP_IMAGE_DLL 0x00000004
40#if (NTDDI_VERSION < NTDDI_WIN8)
41#define LDRP_SHIMENG_SUPPRESSED_ENTRY 0x00000008
42#else
43#define LDRP_LOAD_NOTIFICATIONS_SENT 0x00000008
44#endif
45#define LDRP_IMAGE_INTEGRITY_FORCED 0x00000020
46#define LDRP_LOAD_IN_PROGRESS 0x00001000
47#define LDRP_UNLOAD_IN_PROGRESS 0x00002000
48#define LDRP_ENTRY_PROCESSED 0x00004000
49#define LDRP_ENTRY_INSERTED 0x00008000
50#define LDRP_CURRENT_LOAD 0x00010000
51#define LDRP_FAILED_BUILTIN_LOAD 0x00020000
52#define LDRP_DONT_CALL_FOR_THREADS 0x00040000
53#define LDRP_PROCESS_ATTACH_CALLED 0x00080000
54#define LDRP_DEBUG_SYMBOLS_LOADED 0x00100000
55#define LDRP_IMAGE_NOT_AT_BASE 0x00200000
56#define LDRP_COR_IMAGE 0x00400000
57#define LDR_COR_OWNS_UNMAP 0x00800000
58#define LDRP_SYSTEM_MAPPED 0x01000000
59#define LDRP_IMAGE_VERIFYING 0x02000000
60#define LDRP_DRIVER_DEPENDENT_DLL 0x04000000
61#define LDRP_ENTRY_NATIVE 0x08000000
62#define LDRP_REDIRECTED 0x10000000
63#define LDRP_NON_PAGED_DEBUG_INFO 0x20000000
64#define LDRP_MM_LOADED 0x40000000
65#define LDRP_COMPAT_DATABASE_PROCESSED 0x80000000
66
67//
68// Dll Characteristics for LdrLoadDll
69//
70#define LDR_IGNORE_CODE_AUTHZ_LEVEL 0x00001000
71
72//
73// LdrAddRef Flags
74//
75#define LDR_ADDREF_DLL_PIN 0x00000001
76
77//
78// LdrLockLoaderLock Flags
79//
80#define LDR_LOCK_LOADER_LOCK_FLAG_RAISE_ON_ERRORS 0x00000001
81#define LDR_LOCK_LOADER_LOCK_FLAG_TRY_ONLY 0x00000002
82
83//
84// LdrUnlockLoaderLock Flags
85//
86#define LDR_UNLOCK_LOADER_LOCK_FLAG_RAISE_ON_ERRORS 0x00000001
87
88//
89// LdrGetDllHandleEx Flags
90//
91#define LDR_GET_DLL_HANDLE_EX_UNCHANGED_REFCOUNT 0x00000001
92#define LDR_GET_DLL_HANDLE_EX_PIN 0x00000002
93
94
95#define LDR_LOCK_LOADER_LOCK_DISPOSITION_INVALID 0
96#define LDR_LOCK_LOADER_LOCK_DISPOSITION_LOCK_ACQUIRED 1
97#define LDR_LOCK_LOADER_LOCK_DISPOSITION_LOCK_NOT_ACQUIRED 2
98
99//
100// FIXME: THIS SHOULD *NOT* BE USED!
101//
102#define IMAGE_SCN_TYPE_NOLOAD 0x00000002
103
104//
105// Loader datafile/imagemapping macros
106//
107#define LDR_IS_DATAFILE(handle) (((ULONG_PTR)(handle)) & (ULONG_PTR)1)
108#define LDR_IS_IMAGEMAPPING(handle) (((ULONG_PTR)(handle)) & (ULONG_PTR)2)
109#define LDR_IS_RESOURCE(handle) (LDR_IS_IMAGEMAPPING(handle) || LDR_IS_DATAFILE(handle))
110
111//
112// Activation Context
113//
115
116//
117// Loader Data stored in the PEB
118//
119typedef struct _PEB_LDR_DATA
120{
128#if (NTDDI_VERSION >= NTDDI_WIN7)
131#endif
133
134//
135// Loader Data Table Entry
136//
137// NOTE: The field 'InMemoryOrderLinks' MUST have that name.
138// It's hard-coded into WinDbg for PEB dumping!
139//
140typedef struct _LDR_DATA_TABLE_ENTRY
141{
150 ULONG Flags;
153 union
154 {
156 struct
157 {
160 };
161 };
162 union
163 {
166 };
170
171//
172// Loaded Imports Reference Counting in Kernel
173//
174typedef struct _LOAD_IMPORTS
175{
179
180//
181// Loader Resource Information
182//
183typedef struct _LDR_RESOURCE_INFO
184{
189
191{
199
200//
201// DLL Notifications
202//
203#define LDR_DLL_NOTIFICATION_REASON_LOADED 1
204#define LDR_DLL_NOTIFICATION_REASON_UNLOADED 2
205
207{
214
216{
223
225{
230
231typedef VOID
233 _In_ ULONG NotificationReason,
236
237//
238// Alternate Resources Support
239//
241{
244#if (NTDDI_VERSION >= NTDDI_LONGHORN)
246#endif
248#if (NTDDI_VERSION >= NTDDI_LONGHORN)
252#endif
254
255//
256// Callback function for LdrEnumerateLoadedModules
257//
258typedef VOID (NTAPI LDR_ENUM_CALLBACK)(_In_ PLDR_DATA_TABLE_ENTRY ModuleInformation, _In_opt_ PVOID Context, _Out_ BOOLEAN *Stop);
259typedef LDR_ENUM_CALLBACK *PLDR_ENUM_CALLBACK;
260
261//
262// Manifest prober routine set via LdrSetDllManifestProber
263//
264typedef NTSTATUS (NTAPI LDR_MANIFEST_PROBER_ROUTINE)(_In_ PVOID DllHandle, _In_ PCWSTR FullDllName, _Out_ PVOID *ActCtx);
265typedef LDR_MANIFEST_PROBER_ROUTINE *PLDR_MANIFEST_PROBER_ROUTINE;
266
267//
268// DLL Main Routine
269//
270typedef BOOLEAN
272 _In_ PVOID DllHandle,
275);
276
277#endif
unsigned char BOOLEAN
#define VOID
Definition: acefi.h:82
#define NTSTATUS
Definition: precomp.h:19
struct _LDR_DLL_LOADED_NOTIFICATION_DATA * PLDR_DLL_LOADED_NOTIFICATION_DATA
struct _LDR_RESOURCE_INFO * PLDR_RESOURCE_INFO
struct _ALT_RESOURCE_MODULE * PALT_RESOURCE_MODULE
_In_opt_ PVOID _Out_ BOOLEAN * Stop
Definition: ldrtypes.h:258
struct _LDR_ENUM_RESOURCE_INFO LDR_ENUM_RESOURCE_INFO
BOOLEAN(NTAPI * PDLL_INIT_ROUTINE)(_In_ PVOID DllHandle, _In_ ULONG Reason, _In_opt_ PCONTEXT Context)
Definition: ldrtypes.h:271
_In_opt_ PVOID Context
Definition: ldrtypes.h:258
struct _ALT_RESOURCE_MODULE ALT_RESOURCE_MODULE
_In_ PCWSTR _Out_ PVOID * ActCtx
Definition: ldrtypes.h:264
struct _LDR_DLL_LOADED_NOTIFICATION_DATA LDR_DLL_LOADED_NOTIFICATION_DATA
struct _LDR_DATA_TABLE_ENTRY * PLDR_DATA_TABLE_ENTRY
struct _LDR_DATA_TABLE_ENTRY LDR_DATA_TABLE_ENTRY
struct _LOAD_IMPORTS LOAD_IMPORTS
struct _PEB_LDR_DATA * PPEB_LDR_DATA
struct _LDR_RESOURCE_INFO LDR_RESOURCE_INFO
union _LDR_DLL_NOTIFICATION_DATA LDR_DLL_NOTIFICATION_DATA
struct _LDR_DLL_UNLOADED_NOTIFICATION_DATA * PLDR_DLL_UNLOADED_NOTIFICATION_DATA
LDR_MANIFEST_PROBER_ROUTINE * PLDR_MANIFEST_PROBER_ROUTINE
Definition: ldrtypes.h:265
_In_ PCWSTR FullDllName
Definition: ldrtypes.h:264
union _LDR_DLL_NOTIFICATION_DATA * PLDR_DLL_NOTIFICATION_DATA
struct _LDR_ENUM_RESOURCE_INFO * PLDR_ENUM_RESOURCE_INFO
struct _LDR_DLL_UNLOADED_NOTIFICATION_DATA LDR_DLL_UNLOADED_NOTIFICATION_DATA
const LDR_DLL_NOTIFICATION_DATA * PCLDR_DLL_NOTIFICATION_DATA
Definition: ldrtypes.h:229
VOID(NTAPI * PLDR_DLL_NOTIFICATION_FUNCTION)(_In_ ULONG NotificationReason, _In_ PCLDR_DLL_NOTIFICATION_DATA NotificationData, _In_opt_ PVOID Context)
Definition: ldrtypes.h:232
LDR_ENUM_CALLBACK * PLDR_ENUM_CALLBACK
Definition: ldrtypes.h:259
struct _PEB_LDR_DATA PEB_LDR_DATA
PVOID PACTIVATION_CONTEXT
Definition: ldrtypes.h:114
struct _LOAD_IMPORTS * PLOAD_IMPORTS
USHORT LANGID
Definition: mui.h:9
PVOID PVOID PWCHAR PVOID USHORT PULONG Reason
Definition: env.c:47
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _In_opt_
Definition: no_sal2.h:212
#define BOOLEAN
Definition: pedump.c:73
unsigned short USHORT
Definition: pedump.c:61
base of all file and directory entries
Definition: entries.h:83
HANDLE AlternateFileHandle
Definition: ldrtypes.h:249
Definition: btrfs_drv.h:1876
PACTIVATION_CONTEXT EntryPointActivationContext
Definition: ldrtypes.h:167
USHORT LoadCount
Definition: ntddk_ex.h:208
PVOID EntryPoint
Definition: ntddk_ex.h:203
UNICODE_STRING FullDllName
Definition: btrfs_drv.h:1882
ULONG SizeOfImage
Definition: ldrtypes.h:147
LIST_ENTRY InLoadOrderLinks
Definition: ldrtypes.h:142
LIST_ENTRY InInitializationOrderLinks
Definition: ldrtypes.h:144
PVOID DllBase
Definition: btrfs_drv.h:1880
LIST_ENTRY InMemoryOrderLinks
Definition: btrfs_drv.h:1878
PVOID LoadedImports
Definition: ldrtypes.h:165
USHORT TlsIndex
Definition: ntddk_ex.h:209
ULONG Flags
Definition: ntddk_ex.h:207
ULONG TimeDateStamp
Definition: btrfs_drv.h:1889
PVOID SectionPointer
Definition: ntddk_ex.h:213
LIST_ENTRY HashLinks
Definition: ldrtypes.h:155
UNICODE_STRING BaseDllName
Definition: ldrtypes.h:149
ULONG CheckSum
Definition: btrfs_drv.h:1886
PVOID PatchInformation
Definition: ldrtypes.h:168
PCUNICODE_STRING BaseDllName
Definition: ldrtypes.h:210
PCUNICODE_STRING FullDllName
Definition: ldrtypes.h:209
ULONG_PTR Language
Definition: ldrtypes.h:187
ULONG_PTR Name
Definition: ldrtypes.h:186
ULONG_PTR Type
Definition: ldrtypes.h:185
Definition: typedefs.h:120
SIZE_T Count
Definition: ldrtypes.h:176
PVOID EntryInProgress
Definition: ldrtypes.h:127
UCHAR ShutdownInProgress
Definition: ldrtypes.h:129
PVOID ShutdownThreadId
Definition: ldrtypes.h:130
LIST_ENTRY InInitializationOrderModuleList
Definition: ldrtypes.h:126
LIST_ENTRY InMemoryOrderModuleList
Definition: btrfs_drv.h:1895
PVOID SsHandle
Definition: ldrtypes.h:123
ULONG Length
Definition: ntddk_ex.h:221
LIST_ENTRY InLoadOrderModuleList
Definition: ldrtypes.h:124
BOOLEAN Initialized
Definition: ntddk_ex.h:222
const uint16_t * PCWSTR
Definition: typedefs.h:57
#define NTAPI
Definition: typedefs.h:36
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint32_t ULONG_PTR
Definition: typedefs.h:65
uint32_t ULONG
Definition: typedefs.h:59
LDR_DLL_LOADED_NOTIFICATION_DATA Loaded
Definition: ldrtypes.h:226
LDR_DLL_UNLOADED_NOTIFICATION_DATA Unloaded
Definition: ldrtypes.h:227
_In_ PCWDF_DEVICE_PNP_NOTIFICATION_DATA NotificationData
Definition: wdfdevice.h:782
unsigned char UCHAR
Definition: xmlstorage.h:181