include: Rename LDR_MODULE to LDR_DATA_TABLE_ENTRY.
This name is used in Microsoft's public winternl.h. Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
01f640556f
commit
feeb1c7c24
|
@ -104,7 +104,7 @@ static BOOL process_attach( HMODULE module )
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LDR_MODULE *ldr;
|
LDR_DATA_TABLE_ENTRY *ldr;
|
||||||
|
|
||||||
if (LdrFindEntryForAddress( GetModuleHandleW( 0 ), &ldr ) || !(ldr->Flags & LDR_WINE_INTERNAL))
|
if (LdrFindEntryForAddress( GetModuleHandleW( 0 ), &ldr ) || !(ldr->Flags & LDR_WINE_INTERNAL))
|
||||||
LoadLibraryA( "krnl386.exe16" );
|
LoadLibraryA( "krnl386.exe16" );
|
||||||
|
|
|
@ -390,7 +390,7 @@ typedef struct _UNICODE_STRING32
|
||||||
DWORD Buffer;
|
DWORD Buffer;
|
||||||
} UNICODE_STRING32;
|
} UNICODE_STRING32;
|
||||||
|
|
||||||
typedef struct _LDR_MODULE32
|
typedef struct _LDR_DATA_TABLE_ENTRY32
|
||||||
{
|
{
|
||||||
LIST_ENTRY32 InLoadOrderModuleList;
|
LIST_ENTRY32 InLoadOrderModuleList;
|
||||||
LIST_ENTRY32 InMemoryOrderModuleList;
|
LIST_ENTRY32 InMemoryOrderModuleList;
|
||||||
|
@ -400,14 +400,14 @@ typedef struct _LDR_MODULE32
|
||||||
ULONG SizeOfImage;
|
ULONG SizeOfImage;
|
||||||
UNICODE_STRING32 FullDllName;
|
UNICODE_STRING32 FullDllName;
|
||||||
UNICODE_STRING32 BaseDllName;
|
UNICODE_STRING32 BaseDllName;
|
||||||
} LDR_MODULE32;
|
} LDR_DATA_TABLE_ENTRY32;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
HANDLE process;
|
HANDLE process;
|
||||||
PLIST_ENTRY head, current;
|
PLIST_ENTRY head, current;
|
||||||
LDR_MODULE ldr_module;
|
LDR_DATA_TABLE_ENTRY ldr_module;
|
||||||
BOOL wow64;
|
BOOL wow64;
|
||||||
LDR_MODULE32 ldr_module32;
|
LDR_DATA_TABLE_ENTRY32 ldr_module32;
|
||||||
} MODULE_ITERATOR;
|
} MODULE_ITERATOR;
|
||||||
|
|
||||||
static BOOL init_module_iterator(MODULE_ITERATOR *iter, HANDLE process)
|
static BOOL init_module_iterator(MODULE_ITERATOR *iter, HANDLE process)
|
||||||
|
@ -479,7 +479,7 @@ static int module_iterator_next(MODULE_ITERATOR *iter)
|
||||||
LIST_ENTRY32 *entry32 = (LIST_ENTRY32 *)iter->current;
|
LIST_ENTRY32 *entry32 = (LIST_ENTRY32 *)iter->current;
|
||||||
|
|
||||||
if (!ReadProcessMemory(iter->process,
|
if (!ReadProcessMemory(iter->process,
|
||||||
CONTAINING_RECORD(entry32, LDR_MODULE32, InLoadOrderModuleList),
|
CONTAINING_RECORD(entry32, LDR_DATA_TABLE_ENTRY32, InLoadOrderModuleList),
|
||||||
&iter->ldr_module32, sizeof(iter->ldr_module32), NULL))
|
&iter->ldr_module32, sizeof(iter->ldr_module32), NULL))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
@ -488,7 +488,7 @@ static int module_iterator_next(MODULE_ITERATOR *iter)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ReadProcessMemory(iter->process,
|
if (!ReadProcessMemory(iter->process,
|
||||||
CONTAINING_RECORD(iter->current, LDR_MODULE, InLoadOrderModuleList),
|
CONTAINING_RECORD(iter->current, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList),
|
||||||
&iter->ldr_module, sizeof(iter->ldr_module), NULL))
|
&iter->ldr_module, sizeof(iter->ldr_module), NULL))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
@ -496,7 +496,7 @@ static int module_iterator_next(MODULE_ITERATOR *iter)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL get_ldr_module(HANDLE process, HMODULE module, LDR_MODULE *ldr_module)
|
static BOOL get_ldr_module(HANDLE process, HMODULE module, LDR_DATA_TABLE_ENTRY *ldr_module)
|
||||||
{
|
{
|
||||||
MODULE_ITERATOR iter;
|
MODULE_ITERATOR iter;
|
||||||
INT ret;
|
INT ret;
|
||||||
|
@ -519,7 +519,7 @@ static BOOL get_ldr_module(HANDLE process, HMODULE module, LDR_MODULE *ldr_modul
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL get_ldr_module32(HANDLE process, HMODULE module, LDR_MODULE32 *ldr_module)
|
static BOOL get_ldr_module32(HANDLE process, HMODULE module, LDR_DATA_TABLE_ENTRY32 *ldr_module)
|
||||||
{
|
{
|
||||||
MODULE_ITERATOR iter;
|
MODULE_ITERATOR iter;
|
||||||
INT ret;
|
INT ret;
|
||||||
|
@ -568,8 +568,8 @@ BOOL WINAPI K32EnumProcessModules(HANDLE process, HMODULE *lphModule,
|
||||||
}
|
}
|
||||||
while (entry != head)
|
while (entry != head)
|
||||||
{
|
{
|
||||||
PLDR_MODULE table_entry = (PLDR_MODULE)
|
PLDR_DATA_TABLE_ENTRY table_entry = (PLDR_DATA_TABLE_ENTRY)
|
||||||
((PBYTE)entry - offsetof(LDR_MODULE, InLoadOrderModuleList));
|
((PBYTE)entry - offsetof(LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList));
|
||||||
if (cb >= sizeof(HMODULE))
|
if (cb >= sizeof(HMODULE))
|
||||||
{
|
{
|
||||||
*lphModule++ = table_entry->BaseAddress;
|
*lphModule++ = table_entry->BaseAddress;
|
||||||
|
@ -641,7 +641,7 @@ BOOL WINAPI K32EnumProcessModulesEx(HANDLE process, HMODULE *lphModule,
|
||||||
DWORD WINAPI K32GetModuleBaseNameW(HANDLE process, HMODULE module,
|
DWORD WINAPI K32GetModuleBaseNameW(HANDLE process, HMODULE module,
|
||||||
LPWSTR base_name, DWORD size)
|
LPWSTR base_name, DWORD size)
|
||||||
{
|
{
|
||||||
LDR_MODULE ldr_module;
|
LDR_DATA_TABLE_ENTRY ldr_module;
|
||||||
BOOL wow64;
|
BOOL wow64;
|
||||||
|
|
||||||
if (!IsWow64Process(process, &wow64))
|
if (!IsWow64Process(process, &wow64))
|
||||||
|
@ -649,7 +649,7 @@ DWORD WINAPI K32GetModuleBaseNameW(HANDLE process, HMODULE module,
|
||||||
|
|
||||||
if (sizeof(void *) == 8 && wow64)
|
if (sizeof(void *) == 8 && wow64)
|
||||||
{
|
{
|
||||||
LDR_MODULE32 ldr_module32;
|
LDR_DATA_TABLE_ENTRY32 ldr_module32;
|
||||||
|
|
||||||
if (!get_ldr_module32(process, module, &ldr_module32))
|
if (!get_ldr_module32(process, module, &ldr_module32))
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -710,7 +710,7 @@ DWORD WINAPI K32GetModuleBaseNameA(HANDLE process, HMODULE module,
|
||||||
DWORD WINAPI K32GetModuleFileNameExW(HANDLE process, HMODULE module,
|
DWORD WINAPI K32GetModuleFileNameExW(HANDLE process, HMODULE module,
|
||||||
LPWSTR file_name, DWORD size)
|
LPWSTR file_name, DWORD size)
|
||||||
{
|
{
|
||||||
LDR_MODULE ldr_module;
|
LDR_DATA_TABLE_ENTRY ldr_module;
|
||||||
BOOL wow64;
|
BOOL wow64;
|
||||||
DWORD len;
|
DWORD len;
|
||||||
|
|
||||||
|
@ -721,7 +721,7 @@ DWORD WINAPI K32GetModuleFileNameExW(HANDLE process, HMODULE module,
|
||||||
|
|
||||||
if (sizeof(void *) == 8 && wow64)
|
if (sizeof(void *) == 8 && wow64)
|
||||||
{
|
{
|
||||||
LDR_MODULE32 ldr_module32;
|
LDR_DATA_TABLE_ENTRY32 ldr_module32;
|
||||||
|
|
||||||
if (!get_ldr_module32(process, module, &ldr_module32))
|
if (!get_ldr_module32(process, module, &ldr_module32))
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -805,7 +805,7 @@ DWORD WINAPI K32GetModuleFileNameExA(HANDLE process, HMODULE module,
|
||||||
BOOL WINAPI K32GetModuleInformation(HANDLE process, HMODULE module,
|
BOOL WINAPI K32GetModuleInformation(HANDLE process, HMODULE module,
|
||||||
MODULEINFO *modinfo, DWORD cb)
|
MODULEINFO *modinfo, DWORD cb)
|
||||||
{
|
{
|
||||||
LDR_MODULE ldr_module;
|
LDR_DATA_TABLE_ENTRY ldr_module;
|
||||||
BOOL wow64;
|
BOOL wow64;
|
||||||
|
|
||||||
if (cb < sizeof(MODULEINFO))
|
if (cb < sizeof(MODULEINFO))
|
||||||
|
@ -819,7 +819,7 @@ BOOL WINAPI K32GetModuleInformation(HANDLE process, HMODULE module,
|
||||||
|
|
||||||
if (sizeof(void *) == 8 && wow64)
|
if (sizeof(void *) == 8 && wow64)
|
||||||
{
|
{
|
||||||
LDR_MODULE32 ldr_module32;
|
LDR_DATA_TABLE_ENTRY32 ldr_module32;
|
||||||
|
|
||||||
if (!get_ldr_module32(process, module, &ldr_module32))
|
if (!get_ldr_module32(process, module, &ldr_module32))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
@ -3807,7 +3807,7 @@ static void test_InMemoryOrderModuleList(void)
|
||||||
PEB_LDR_DATA *ldr = NtCurrentTeb()->Peb->LdrData;
|
PEB_LDR_DATA *ldr = NtCurrentTeb()->Peb->LdrData;
|
||||||
LIST_ENTRY *entry1, *mark1 = &ldr->InLoadOrderModuleList;
|
LIST_ENTRY *entry1, *mark1 = &ldr->InLoadOrderModuleList;
|
||||||
LIST_ENTRY *entry2, *mark2 = &ldr->InMemoryOrderModuleList;
|
LIST_ENTRY *entry2, *mark2 = &ldr->InMemoryOrderModuleList;
|
||||||
LDR_MODULE *module1, *module2;
|
LDR_DATA_TABLE_ENTRY *module1, *module2;
|
||||||
|
|
||||||
ok(ldr->Initialized == TRUE, "expected TRUE, got %u\n", ldr->Initialized);
|
ok(ldr->Initialized == TRUE, "expected TRUE, got %u\n", ldr->Initialized);
|
||||||
|
|
||||||
|
@ -3815,8 +3815,8 @@ static void test_InMemoryOrderModuleList(void)
|
||||||
entry1 != mark1 && entry2 != mark2;
|
entry1 != mark1 && entry2 != mark2;
|
||||||
entry1 = entry1->Flink, entry2 = entry2->Flink)
|
entry1 = entry1->Flink, entry2 = entry2->Flink)
|
||||||
{
|
{
|
||||||
module1 = CONTAINING_RECORD(entry1, LDR_MODULE, InLoadOrderModuleList);
|
module1 = CONTAINING_RECORD(entry1, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
|
||||||
module2 = CONTAINING_RECORD(entry2, LDR_MODULE, InMemoryOrderModuleList);
|
module2 = CONTAINING_RECORD(entry2, LDR_DATA_TABLE_ENTRY, InMemoryOrderModuleList);
|
||||||
ok(module1 == module2, "expected module1 == module2, got %p and %p\n", module1, module2);
|
ok(module1 == module2, "expected module1 == module2, got %p and %p\n", module1, module2);
|
||||||
}
|
}
|
||||||
ok(entry1 == mark1, "expected entry1 == mark1, got %p and %p\n", entry1, mark1);
|
ok(entry1 == mark1, "expected entry1 == mark1, got %p and %p\n", entry1, mark1);
|
||||||
|
|
|
@ -73,7 +73,7 @@ static WCHAR *fetch_string( HANDLE hProcess, UNICODE_STRING* us)
|
||||||
return local;
|
return local;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL fetch_module( DWORD process, DWORD flags, LDR_MODULE** ldr_mod, ULONG* num )
|
static BOOL fetch_module( DWORD process, DWORD flags, LDR_DATA_TABLE_ENTRY **ldr_mod, ULONG *num )
|
||||||
{
|
{
|
||||||
HANDLE hProcess;
|
HANDLE hProcess;
|
||||||
PROCESS_BASIC_INFORMATION pbi;
|
PROCESS_BASIC_INFORMATION pbi;
|
||||||
|
@ -109,19 +109,19 @@ static BOOL fetch_module( DWORD process, DWORD flags, LDR_MODULE** ldr_mod, ULON
|
||||||
while (curr != head)
|
while (curr != head)
|
||||||
{
|
{
|
||||||
if (!*num)
|
if (!*num)
|
||||||
*ldr_mod = HeapAlloc( GetProcessHeap(), 0, sizeof(LDR_MODULE) );
|
*ldr_mod = HeapAlloc( GetProcessHeap(), 0, sizeof(LDR_DATA_TABLE_ENTRY) );
|
||||||
else
|
else
|
||||||
*ldr_mod = HeapReAlloc( GetProcessHeap(), 0, *ldr_mod,
|
*ldr_mod = HeapReAlloc( GetProcessHeap(), 0, *ldr_mod,
|
||||||
(*num + 1) * sizeof(LDR_MODULE) );
|
(*num + 1) * sizeof(LDR_DATA_TABLE_ENTRY) );
|
||||||
if (!*ldr_mod) break;
|
if (!*ldr_mod) break;
|
||||||
if (!ReadProcessMemory( hProcess,
|
if (!ReadProcessMemory( hProcess,
|
||||||
CONTAINING_RECORD(curr, LDR_MODULE,
|
CONTAINING_RECORD(curr, LDR_DATA_TABLE_ENTRY,
|
||||||
InLoadOrderModuleList),
|
InLoadOrderModuleList),
|
||||||
&(*ldr_mod)[*num],
|
&(*ldr_mod)[*num],
|
||||||
sizeof(LDR_MODULE), NULL))
|
sizeof(LDR_DATA_TABLE_ENTRY), NULL))
|
||||||
break;
|
break;
|
||||||
curr = (*ldr_mod)[*num].InLoadOrderModuleList.Flink;
|
curr = (*ldr_mod)[*num].InLoadOrderModuleList.Flink;
|
||||||
/* if we cannot fetch the strings, then just ignore this LDR_MODULE
|
/* if we cannot fetch the strings, then just ignore this LDR_DATA_TABLE_ENTRY
|
||||||
* and continue loading the other ones in the list
|
* and continue loading the other ones in the list
|
||||||
*/
|
*/
|
||||||
if (!fetch_string( hProcess, &(*ldr_mod)[*num].BaseDllName )) continue;
|
if (!fetch_string( hProcess, &(*ldr_mod)[*num].BaseDllName )) continue;
|
||||||
|
@ -140,7 +140,7 @@ static BOOL fetch_module( DWORD process, DWORD flags, LDR_MODULE** ldr_mod, ULON
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fill_module( struct snapshot* snap, ULONG* offset, ULONG process,
|
static void fill_module( struct snapshot* snap, ULONG* offset, ULONG process,
|
||||||
LDR_MODULE* ldr_mod, ULONG num )
|
LDR_DATA_TABLE_ENTRY* ldr_mod, ULONG num )
|
||||||
{
|
{
|
||||||
MODULEENTRY32W* mod;
|
MODULEENTRY32W* mod;
|
||||||
ULONG i;
|
ULONG i;
|
||||||
|
@ -293,7 +293,7 @@ static void fill_thread( struct snapshot* snap, ULONG* offset, LPVOID info, ULON
|
||||||
HANDLE WINAPI CreateToolhelp32Snapshot( DWORD flags, DWORD process )
|
HANDLE WINAPI CreateToolhelp32Snapshot( DWORD flags, DWORD process )
|
||||||
{
|
{
|
||||||
SYSTEM_PROCESS_INFORMATION* spi = NULL;
|
SYSTEM_PROCESS_INFORMATION* spi = NULL;
|
||||||
LDR_MODULE* mod = NULL;
|
LDR_DATA_TABLE_ENTRY *mod = NULL;
|
||||||
ULONG num_pcs, num_thd, num_mod;
|
ULONG num_pcs, num_thd, num_mod;
|
||||||
HANDLE hSnapShot = 0;
|
HANDLE hSnapShot = 0;
|
||||||
|
|
||||||
|
|
|
@ -301,7 +301,7 @@ DWORD WINAPI DECLSPEC_HOTPATCH GetModuleFileNameW( HMODULE module, LPWSTR filena
|
||||||
{
|
{
|
||||||
ULONG len = 0;
|
ULONG len = 0;
|
||||||
ULONG_PTR magic;
|
ULONG_PTR magic;
|
||||||
LDR_MODULE *pldr;
|
LDR_DATA_TABLE_ENTRY *pldr;
|
||||||
WIN16_SUBSYSTEM_TIB *win16_tib;
|
WIN16_SUBSYSTEM_TIB *win16_tib;
|
||||||
|
|
||||||
if (!module && ((win16_tib = NtCurrentTeb()->Tib.SubSystemTib)) && win16_tib->exe_name)
|
if (!module && ((win16_tib = NtCurrentTeb()->Tib.SubSystemTib)) && win16_tib->exe_name)
|
||||||
|
|
|
@ -971,7 +971,7 @@ static HINSTANCE16 MODULE_LoadModule16( LPCSTR libname, BOOL implicit, BOOL lib_
|
||||||
/* if module has a 32-bit owner, match the load order of the owner */
|
/* if module has a 32-bit owner, match the load order of the owner */
|
||||||
if ((main_module = (void *)GetProcAddress( mod32, "__wine_spec_main_module" )))
|
if ((main_module = (void *)GetProcAddress( mod32, "__wine_spec_main_module" )))
|
||||||
{
|
{
|
||||||
LDR_MODULE *ldr;
|
LDR_DATA_TABLE_ENTRY *ldr;
|
||||||
HMODULE main_owner = LoadLibraryA( main_module );
|
HMODULE main_owner = LoadLibraryA( main_module );
|
||||||
|
|
||||||
if (!main_owner)
|
if (!main_owner)
|
||||||
|
|
|
@ -821,7 +821,7 @@ static NTSTATUS get_module_filename( HMODULE module, UNICODE_STRING *str, unsign
|
||||||
{
|
{
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
ULONG_PTR magic;
|
ULONG_PTR magic;
|
||||||
LDR_MODULE *pldr;
|
LDR_DATA_TABLE_ENTRY *pldr;
|
||||||
|
|
||||||
LdrLockLoaderLock(0, NULL, &magic);
|
LdrLockLoaderLock(0, NULL, &magic);
|
||||||
status = LdrFindEntryForAddress( module, &pldr );
|
status = LdrFindEntryForAddress( module, &pldr );
|
||||||
|
@ -3375,7 +3375,7 @@ static NTSTATUS find_query_actctx( HANDLE *handle, DWORD flags, ULONG class )
|
||||||
else if (flags & (QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS|QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE))
|
else if (flags & (QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS|QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE))
|
||||||
{
|
{
|
||||||
ULONG_PTR magic;
|
ULONG_PTR magic;
|
||||||
LDR_MODULE *pldr;
|
LDR_DATA_TABLE_ENTRY *pldr;
|
||||||
|
|
||||||
if (!*handle) return STATUS_INVALID_PARAMETER;
|
if (!*handle) return STATUS_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
|
|
@ -581,7 +581,7 @@ static RUNTIME_FUNCTION *find_function_info( ULONG_PTR pc, ULONG_PTR base,
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* lookup_function_info
|
* lookup_function_info
|
||||||
*/
|
*/
|
||||||
RUNTIME_FUNCTION *lookup_function_info( ULONG_PTR pc, ULONG_PTR *base, LDR_MODULE **module )
|
RUNTIME_FUNCTION *lookup_function_info( ULONG_PTR pc, ULONG_PTR *base, LDR_DATA_TABLE_ENTRY **module )
|
||||||
{
|
{
|
||||||
RUNTIME_FUNCTION *func = NULL;
|
RUNTIME_FUNCTION *func = NULL;
|
||||||
struct dynamic_unwind_entry *entry;
|
struct dynamic_unwind_entry *entry;
|
||||||
|
@ -628,7 +628,7 @@ RUNTIME_FUNCTION *lookup_function_info( ULONG_PTR pc, ULONG_PTR *base, LDR_MODUL
|
||||||
PRUNTIME_FUNCTION WINAPI RtlLookupFunctionEntry( ULONG_PTR pc, ULONG_PTR *base,
|
PRUNTIME_FUNCTION WINAPI RtlLookupFunctionEntry( ULONG_PTR pc, ULONG_PTR *base,
|
||||||
UNWIND_HISTORY_TABLE *table )
|
UNWIND_HISTORY_TABLE *table )
|
||||||
{
|
{
|
||||||
LDR_MODULE *module;
|
LDR_DATA_TABLE_ENTRY *module;
|
||||||
RUNTIME_FUNCTION *func;
|
RUNTIME_FUNCTION *func;
|
||||||
|
|
||||||
/* FIXME: should use the history table to make things faster */
|
/* FIXME: should use the history table to make things faster */
|
||||||
|
|
|
@ -69,7 +69,7 @@ WINE_DECLARE_DEBUG_CHANNEL(imports);
|
||||||
#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID ((ULONG_PTR)2)
|
#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID ((ULONG_PTR)2)
|
||||||
|
|
||||||
typedef DWORD (CALLBACK *DLLENTRYPROC)(HMODULE,DWORD,LPVOID);
|
typedef DWORD (CALLBACK *DLLENTRYPROC)(HMODULE,DWORD,LPVOID);
|
||||||
typedef void (CALLBACK *LDRENUMPROC)(LDR_MODULE *, void *, BOOLEAN *);
|
typedef void (CALLBACK *LDRENUMPROC)(LDR_DATA_TABLE_ENTRY *, void *, BOOLEAN *);
|
||||||
|
|
||||||
/* system directory with trailing backslash */
|
/* system directory with trailing backslash */
|
||||||
const WCHAR system_dir[] = {'C',':','\\','w','i','n','d','o','w','s','\\',
|
const WCHAR system_dir[] = {'C',':','\\','w','i','n','d','o','w','s','\\',
|
||||||
|
@ -125,7 +125,7 @@ static const WCHAR dllW[] = {'.','d','l','l',0};
|
||||||
/* internal representation of 32bit modules. per process. */
|
/* internal representation of 32bit modules. per process. */
|
||||||
typedef struct _wine_modref
|
typedef struct _wine_modref
|
||||||
{
|
{
|
||||||
LDR_MODULE ldr;
|
LDR_DATA_TABLE_ENTRY ldr;
|
||||||
dev_t dev;
|
dev_t dev;
|
||||||
ino_t ino;
|
ino_t ino;
|
||||||
void *so_handle;
|
void *so_handle;
|
||||||
|
@ -209,7 +209,7 @@ static RTL_UNLOAD_EVENT_TRACE unload_traces[RTL_UNLOAD_EVENT_TRACE_NUMBER];
|
||||||
static RTL_UNLOAD_EVENT_TRACE *unload_trace_ptr;
|
static RTL_UNLOAD_EVENT_TRACE *unload_trace_ptr;
|
||||||
static unsigned int unload_trace_seq;
|
static unsigned int unload_trace_seq;
|
||||||
|
|
||||||
static void module_push_unload_trace( const LDR_MODULE *ldr )
|
static void module_push_unload_trace( const LDR_DATA_TABLE_ENTRY *ldr )
|
||||||
{
|
{
|
||||||
RTL_UNLOAD_EVENT_TRACE *ptr = &unload_traces[unload_trace_seq];
|
RTL_UNLOAD_EVENT_TRACE *ptr = &unload_traces[unload_trace_seq];
|
||||||
unsigned int len = min(sizeof(ptr->ImageName) - sizeof(WCHAR), ldr->BaseDllName.Length);
|
unsigned int len = min(sizeof(ptr->ImageName) - sizeof(WCHAR), ldr->BaseDllName.Length);
|
||||||
|
@ -439,7 +439,7 @@ static inline ULONG_PTR allocate_stub( const char *dll, const char *name ) { ret
|
||||||
#endif /* __i386__ */
|
#endif /* __i386__ */
|
||||||
|
|
||||||
/* call ldr notifications */
|
/* call ldr notifications */
|
||||||
static void call_ldr_notifications( ULONG reason, LDR_MODULE *module )
|
static void call_ldr_notifications( ULONG reason, LDR_DATA_TABLE_ENTRY *module )
|
||||||
{
|
{
|
||||||
struct ldr_notification *notify, *notify_next;
|
struct ldr_notification *notify, *notify_next;
|
||||||
LDR_DLL_NOTIFICATION_DATA data;
|
LDR_DLL_NOTIFICATION_DATA data;
|
||||||
|
@ -471,14 +471,14 @@ static void call_ldr_notifications( ULONG reason, LDR_MODULE *module )
|
||||||
static WINE_MODREF *get_modref( HMODULE hmod )
|
static WINE_MODREF *get_modref( HMODULE hmod )
|
||||||
{
|
{
|
||||||
PLIST_ENTRY mark, entry;
|
PLIST_ENTRY mark, entry;
|
||||||
PLDR_MODULE mod;
|
PLDR_DATA_TABLE_ENTRY mod;
|
||||||
|
|
||||||
if (cached_modref && cached_modref->ldr.BaseAddress == hmod) return cached_modref;
|
if (cached_modref && cached_modref->ldr.BaseAddress == hmod) return cached_modref;
|
||||||
|
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
|
||||||
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
||||||
{
|
{
|
||||||
mod = CONTAINING_RECORD(entry, LDR_MODULE, InMemoryOrderModuleList);
|
mod = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY, InMemoryOrderModuleList);
|
||||||
if (mod->BaseAddress == hmod)
|
if (mod->BaseAddress == hmod)
|
||||||
return cached_modref = CONTAINING_RECORD(mod, WINE_MODREF, ldr);
|
return cached_modref = CONTAINING_RECORD(mod, WINE_MODREF, ldr);
|
||||||
}
|
}
|
||||||
|
@ -505,7 +505,7 @@ static WINE_MODREF *find_basename_module( LPCWSTR name )
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
|
||||||
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
||||||
{
|
{
|
||||||
LDR_MODULE *mod = CONTAINING_RECORD(entry, LDR_MODULE, InLoadOrderModuleList);
|
LDR_DATA_TABLE_ENTRY *mod = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
|
||||||
if (RtlEqualUnicodeString( &name_str, &mod->BaseDllName, TRUE ))
|
if (RtlEqualUnicodeString( &name_str, &mod->BaseDllName, TRUE ))
|
||||||
{
|
{
|
||||||
cached_modref = CONTAINING_RECORD(mod, WINE_MODREF, ldr);
|
cached_modref = CONTAINING_RECORD(mod, WINE_MODREF, ldr);
|
||||||
|
@ -537,7 +537,7 @@ static WINE_MODREF *find_fullname_module( const UNICODE_STRING *nt_name )
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
|
||||||
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
||||||
{
|
{
|
||||||
LDR_MODULE *mod = CONTAINING_RECORD(entry, LDR_MODULE, InLoadOrderModuleList);
|
LDR_DATA_TABLE_ENTRY *mod = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
|
||||||
if (RtlEqualUnicodeString( &name, &mod->FullDllName, TRUE ))
|
if (RtlEqualUnicodeString( &name, &mod->FullDllName, TRUE ))
|
||||||
{
|
{
|
||||||
cached_modref = CONTAINING_RECORD(mod, WINE_MODREF, ldr);
|
cached_modref = CONTAINING_RECORD(mod, WINE_MODREF, ldr);
|
||||||
|
@ -564,7 +564,7 @@ static WINE_MODREF *find_fileid_module( struct stat *st )
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
|
||||||
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
||||||
{
|
{
|
||||||
LDR_MODULE *mod = CONTAINING_RECORD( entry, LDR_MODULE, InLoadOrderModuleList );
|
LDR_DATA_TABLE_ENTRY *mod = CONTAINING_RECORD( entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList );
|
||||||
WINE_MODREF *wm = CONTAINING_RECORD( mod, WINE_MODREF, ldr );
|
WINE_MODREF *wm = CONTAINING_RECORD( mod, WINE_MODREF, ldr );
|
||||||
|
|
||||||
if (wm->dev == st->st_dev && wm->ino == st->st_ino)
|
if (wm->dev == st->st_dev && wm->ino == st->st_ino)
|
||||||
|
@ -590,7 +590,7 @@ static WINE_MODREF *find_so_module( void *handle )
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
|
||||||
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
||||||
{
|
{
|
||||||
LDR_MODULE *mod = CONTAINING_RECORD( entry, LDR_MODULE, InLoadOrderModuleList );
|
LDR_DATA_TABLE_ENTRY *mod = CONTAINING_RECORD( entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList );
|
||||||
WINE_MODREF *wm = CONTAINING_RECORD( mod, WINE_MODREF, ldr );
|
WINE_MODREF *wm = CONTAINING_RECORD( mod, WINE_MODREF, ldr );
|
||||||
|
|
||||||
if (wm->so_handle == handle) return wm;
|
if (wm->so_handle == handle) return wm;
|
||||||
|
@ -918,7 +918,7 @@ done:
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* create_module_activation_context
|
* create_module_activation_context
|
||||||
*/
|
*/
|
||||||
static NTSTATUS create_module_activation_context( LDR_MODULE *module )
|
static NTSTATUS create_module_activation_context( LDR_DATA_TABLE_ENTRY *module )
|
||||||
{
|
{
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
LDR_RESOURCE_INFO info;
|
LDR_RESOURCE_INFO info;
|
||||||
|
@ -948,7 +948,7 @@ static NTSTATUS create_module_activation_context( LDR_MODULE *module )
|
||||||
* Some dlls (corpol.dll from IE6 for instance) are incorrectly marked as native
|
* Some dlls (corpol.dll from IE6 for instance) are incorrectly marked as native
|
||||||
* while being perfectly normal DLLs. This heuristic should catch such breakages.
|
* while being perfectly normal DLLs. This heuristic should catch such breakages.
|
||||||
*/
|
*/
|
||||||
static BOOL is_dll_native_subsystem( LDR_MODULE *mod, const IMAGE_NT_HEADERS *nt, LPCWSTR filename )
|
static BOOL is_dll_native_subsystem( LDR_DATA_TABLE_ENTRY *mod, const IMAGE_NT_HEADERS *nt, LPCWSTR filename )
|
||||||
{
|
{
|
||||||
static const WCHAR ntdllW[] = {'n','t','d','l','l','.','d','l','l',0};
|
static const WCHAR ntdllW[] = {'n','t','d','l','l','.','d','l','l',0};
|
||||||
static const WCHAR kernel32W[] = {'k','e','r','n','e','l','3','2','.','d','l','l',0};
|
static const WCHAR kernel32W[] = {'k','e','r','n','e','l','3','2','.','d','l','l',0};
|
||||||
|
@ -985,7 +985,7 @@ static BOOL is_dll_native_subsystem( LDR_MODULE *mod, const IMAGE_NT_HEADERS *nt
|
||||||
* Allocate a TLS slot for a newly-loaded module.
|
* Allocate a TLS slot for a newly-loaded module.
|
||||||
* The loader_section must be locked while calling this function.
|
* The loader_section must be locked while calling this function.
|
||||||
*/
|
*/
|
||||||
static SHORT alloc_tls_slot( LDR_MODULE *mod )
|
static SHORT alloc_tls_slot( LDR_DATA_TABLE_ENTRY *mod )
|
||||||
{
|
{
|
||||||
const IMAGE_TLS_DIRECTORY *dir;
|
const IMAGE_TLS_DIRECTORY *dir;
|
||||||
ULONG i, size;
|
ULONG i, size;
|
||||||
|
@ -1070,7 +1070,7 @@ static SHORT alloc_tls_slot( LDR_MODULE *mod )
|
||||||
* Free the module TLS slot on unload.
|
* Free the module TLS slot on unload.
|
||||||
* The loader_section must be locked while calling this function.
|
* The loader_section must be locked while calling this function.
|
||||||
*/
|
*/
|
||||||
static void free_tls_slot( LDR_MODULE *mod )
|
static void free_tls_slot( LDR_DATA_TABLE_ENTRY *mod )
|
||||||
{
|
{
|
||||||
ULONG i = (USHORT)mod->TlsIndex;
|
ULONG i = (USHORT)mod->TlsIndex;
|
||||||
|
|
||||||
|
@ -1526,7 +1526,7 @@ static void attach_implicitly_loaded_dlls( LPVOID reserved )
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
|
||||||
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
||||||
{
|
{
|
||||||
LDR_MODULE *mod = CONTAINING_RECORD(entry, LDR_MODULE, InLoadOrderModuleList);
|
LDR_DATA_TABLE_ENTRY *mod = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
|
||||||
|
|
||||||
if (!(mod->Flags & LDR_IMAGE_IS_DLL)) continue;
|
if (!(mod->Flags & LDR_IMAGE_IS_DLL)) continue;
|
||||||
if (mod->Flags & (LDR_LOAD_IN_PROGRESS | LDR_PROCESS_ATTACHED)) continue;
|
if (mod->Flags & (LDR_LOAD_IN_PROGRESS | LDR_PROCESS_ATTACHED)) continue;
|
||||||
|
@ -1549,14 +1549,14 @@ static void attach_implicitly_loaded_dlls( LPVOID reserved )
|
||||||
static void process_detach(void)
|
static void process_detach(void)
|
||||||
{
|
{
|
||||||
PLIST_ENTRY mark, entry;
|
PLIST_ENTRY mark, entry;
|
||||||
PLDR_MODULE mod;
|
PLDR_DATA_TABLE_ENTRY mod;
|
||||||
|
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InInitializationOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InInitializationOrderModuleList;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
for (entry = mark->Blink; entry != mark; entry = entry->Blink)
|
for (entry = mark->Blink; entry != mark; entry = entry->Blink)
|
||||||
{
|
{
|
||||||
mod = CONTAINING_RECORD(entry, LDR_MODULE,
|
mod = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY,
|
||||||
InInitializationOrderModuleList);
|
InInitializationOrderModuleList);
|
||||||
/* Check whether to detach this DLL */
|
/* Check whether to detach this DLL */
|
||||||
if ( !(mod->Flags & LDR_PROCESS_ATTACHED) )
|
if ( !(mod->Flags & LDR_PROCESS_ATTACHED) )
|
||||||
|
@ -1587,12 +1587,12 @@ static void process_detach(void)
|
||||||
static void thread_attach(void)
|
static void thread_attach(void)
|
||||||
{
|
{
|
||||||
PLIST_ENTRY mark, entry;
|
PLIST_ENTRY mark, entry;
|
||||||
PLDR_MODULE mod;
|
PLDR_DATA_TABLE_ENTRY mod;
|
||||||
|
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InInitializationOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InInitializationOrderModuleList;
|
||||||
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
||||||
{
|
{
|
||||||
mod = CONTAINING_RECORD(entry, LDR_MODULE,
|
mod = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY,
|
||||||
InInitializationOrderModuleList);
|
InInitializationOrderModuleList);
|
||||||
if ( !(mod->Flags & LDR_PROCESS_ATTACHED) )
|
if ( !(mod->Flags & LDR_PROCESS_ATTACHED) )
|
||||||
continue;
|
continue;
|
||||||
|
@ -1630,15 +1630,15 @@ NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE hModule)
|
||||||
*
|
*
|
||||||
* The loader_section must be locked while calling this function
|
* The loader_section must be locked while calling this function
|
||||||
*/
|
*/
|
||||||
NTSTATUS WINAPI LdrFindEntryForAddress(const void* addr, PLDR_MODULE* pmod)
|
NTSTATUS WINAPI LdrFindEntryForAddress( const void *addr, PLDR_DATA_TABLE_ENTRY *pmod )
|
||||||
{
|
{
|
||||||
PLIST_ENTRY mark, entry;
|
PLIST_ENTRY mark, entry;
|
||||||
PLDR_MODULE mod;
|
PLDR_DATA_TABLE_ENTRY mod;
|
||||||
|
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
|
||||||
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
||||||
{
|
{
|
||||||
mod = CONTAINING_RECORD(entry, LDR_MODULE, InMemoryOrderModuleList);
|
mod = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY, InMemoryOrderModuleList);
|
||||||
if (mod->BaseAddress <= addr &&
|
if (mod->BaseAddress <= addr &&
|
||||||
(const char *)addr < (char*)mod->BaseAddress + mod->SizeOfImage)
|
(const char *)addr < (char*)mod->BaseAddress + mod->SizeOfImage)
|
||||||
{
|
{
|
||||||
|
@ -1655,7 +1655,7 @@ NTSTATUS WINAPI LdrFindEntryForAddress(const void* addr, PLDR_MODULE* pmod)
|
||||||
NTSTATUS WINAPI LdrEnumerateLoadedModules( void *unknown, LDRENUMPROC callback, void *context )
|
NTSTATUS WINAPI LdrEnumerateLoadedModules( void *unknown, LDRENUMPROC callback, void *context )
|
||||||
{
|
{
|
||||||
LIST_ENTRY *mark, *entry;
|
LIST_ENTRY *mark, *entry;
|
||||||
LDR_MODULE *mod;
|
LDR_DATA_TABLE_ENTRY *mod;
|
||||||
BOOLEAN stop = FALSE;
|
BOOLEAN stop = FALSE;
|
||||||
|
|
||||||
TRACE( "(%p, %p, %p)\n", unknown, callback, context );
|
TRACE( "(%p, %p, %p)\n", unknown, callback, context );
|
||||||
|
@ -1668,7 +1668,7 @@ NTSTATUS WINAPI LdrEnumerateLoadedModules( void *unknown, LDRENUMPROC callback,
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
|
||||||
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
||||||
{
|
{
|
||||||
mod = CONTAINING_RECORD( entry, LDR_MODULE, InMemoryOrderModuleList );
|
mod = CONTAINING_RECORD( entry, LDR_DATA_TABLE_ENTRY, InMemoryOrderModuleList );
|
||||||
callback( mod, context, &stop );
|
callback( mod, context, &stop );
|
||||||
if (stop) break;
|
if (stop) break;
|
||||||
}
|
}
|
||||||
|
@ -3483,7 +3483,7 @@ NTSTATUS WINAPI LdrQueryProcessModuleInformation(PSYSTEM_MODULE_INFORMATION smi,
|
||||||
ANSI_STRING str;
|
ANSI_STRING str;
|
||||||
char* ptr;
|
char* ptr;
|
||||||
PLIST_ENTRY mark, entry;
|
PLIST_ENTRY mark, entry;
|
||||||
PLDR_MODULE mod;
|
LDR_DATA_TABLE_ENTRY *mod;
|
||||||
WORD id = 0;
|
WORD id = 0;
|
||||||
|
|
||||||
smi->ModulesCount = 0;
|
smi->ModulesCount = 0;
|
||||||
|
@ -3492,7 +3492,7 @@ NTSTATUS WINAPI LdrQueryProcessModuleInformation(PSYSTEM_MODULE_INFORMATION smi,
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
|
||||||
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
for (entry = mark->Flink; entry != mark; entry = entry->Flink)
|
||||||
{
|
{
|
||||||
mod = CONTAINING_RECORD(entry, LDR_MODULE, InLoadOrderModuleList);
|
mod = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
|
||||||
size += sizeof(*sm);
|
size += sizeof(*sm);
|
||||||
if (size <= buf_size)
|
if (size <= buf_size)
|
||||||
{
|
{
|
||||||
|
@ -3743,7 +3743,7 @@ void WINAPI RtlExitUserProcess( DWORD status )
|
||||||
void WINAPI LdrShutdownThread(void)
|
void WINAPI LdrShutdownThread(void)
|
||||||
{
|
{
|
||||||
PLIST_ENTRY mark, entry;
|
PLIST_ENTRY mark, entry;
|
||||||
PLDR_MODULE mod;
|
LDR_DATA_TABLE_ENTRY *mod;
|
||||||
UINT i;
|
UINT i;
|
||||||
void **pointers;
|
void **pointers;
|
||||||
|
|
||||||
|
@ -3757,7 +3757,7 @@ void WINAPI LdrShutdownThread(void)
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InInitializationOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InInitializationOrderModuleList;
|
||||||
for (entry = mark->Blink; entry != mark; entry = entry->Blink)
|
for (entry = mark->Blink; entry != mark; entry = entry->Blink)
|
||||||
{
|
{
|
||||||
mod = CONTAINING_RECORD(entry, LDR_MODULE,
|
mod = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY,
|
||||||
InInitializationOrderModuleList);
|
InInitializationOrderModuleList);
|
||||||
if ( !(mod->Flags & LDR_PROCESS_ATTACHED) )
|
if ( !(mod->Flags & LDR_PROCESS_ATTACHED) )
|
||||||
continue;
|
continue;
|
||||||
|
@ -3828,13 +3828,13 @@ static void free_modref( WINE_MODREF *wm )
|
||||||
static void MODULE_FlushModrefs(void)
|
static void MODULE_FlushModrefs(void)
|
||||||
{
|
{
|
||||||
PLIST_ENTRY mark, entry, prev;
|
PLIST_ENTRY mark, entry, prev;
|
||||||
PLDR_MODULE mod;
|
LDR_DATA_TABLE_ENTRY *mod;
|
||||||
WINE_MODREF*wm;
|
WINE_MODREF*wm;
|
||||||
|
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InInitializationOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InInitializationOrderModuleList;
|
||||||
for (entry = mark->Blink; entry != mark; entry = prev)
|
for (entry = mark->Blink; entry != mark; entry = prev)
|
||||||
{
|
{
|
||||||
mod = CONTAINING_RECORD(entry, LDR_MODULE, InInitializationOrderModuleList);
|
mod = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY, InInitializationOrderModuleList);
|
||||||
wm = CONTAINING_RECORD(mod, WINE_MODREF, ldr);
|
wm = CONTAINING_RECORD(mod, WINE_MODREF, ldr);
|
||||||
prev = entry->Blink;
|
prev = entry->Blink;
|
||||||
if (!mod->LoadCount) free_modref( wm );
|
if (!mod->LoadCount) free_modref( wm );
|
||||||
|
@ -3844,7 +3844,7 @@ static void MODULE_FlushModrefs(void)
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
|
||||||
for (entry = mark->Blink; entry != mark; entry = prev)
|
for (entry = mark->Blink; entry != mark; entry = prev)
|
||||||
{
|
{
|
||||||
mod = CONTAINING_RECORD(entry, LDR_MODULE, InLoadOrderModuleList);
|
mod = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
|
||||||
wm = CONTAINING_RECORD(mod, WINE_MODREF, ldr);
|
wm = CONTAINING_RECORD(mod, WINE_MODREF, ldr);
|
||||||
prev = entry->Blink;
|
prev = entry->Blink;
|
||||||
if (!mod->LoadCount) free_modref( wm );
|
if (!mod->LoadCount) free_modref( wm );
|
||||||
|
@ -4189,7 +4189,7 @@ PVOID WINAPI RtlImageRvaToVa( const IMAGE_NT_HEADERS *nt, HMODULE module,
|
||||||
*/
|
*/
|
||||||
PVOID WINAPI RtlPcToFileHeader( PVOID pc, PVOID *address )
|
PVOID WINAPI RtlPcToFileHeader( PVOID pc, PVOID *address )
|
||||||
{
|
{
|
||||||
LDR_MODULE *module;
|
LDR_DATA_TABLE_ENTRY *module;
|
||||||
PVOID ret = NULL;
|
PVOID ret = NULL;
|
||||||
|
|
||||||
RtlEnterCriticalSection( &loader_section );
|
RtlEnterCriticalSection( &loader_section );
|
||||||
|
|
|
@ -69,7 +69,7 @@ extern NTSTATUS get_thread_ldt_entry( HANDLE handle, void *data, ULONG len, ULON
|
||||||
extern LONG WINAPI call_unhandled_exception_filter( PEXCEPTION_POINTERS eptr ) DECLSPEC_HIDDEN;
|
extern LONG WINAPI call_unhandled_exception_filter( PEXCEPTION_POINTERS eptr ) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
#if defined(__x86_64__) || defined(__arm__) || defined(__aarch64__)
|
#if defined(__x86_64__) || defined(__arm__) || defined(__aarch64__)
|
||||||
extern RUNTIME_FUNCTION *lookup_function_info( ULONG_PTR pc, ULONG_PTR *base, LDR_MODULE **module ) DECLSPEC_HIDDEN;
|
extern RUNTIME_FUNCTION *lookup_function_info( ULONG_PTR pc, ULONG_PTR *base, LDR_DATA_TABLE_ENTRY **module ) DECLSPEC_HIDDEN;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* debug helpers */
|
/* debug helpers */
|
||||||
|
|
|
@ -609,7 +609,7 @@ static NTSTATUS libunwind_virtual_unwind( ULONG_PTR ip, ULONG_PTR *frame, CONTEX
|
||||||
*/
|
*/
|
||||||
static NTSTATUS virtual_unwind( ULONG type, DISPATCHER_CONTEXT *dispatch, CONTEXT *context )
|
static NTSTATUS virtual_unwind( ULONG type, DISPATCHER_CONTEXT *dispatch, CONTEXT *context )
|
||||||
{
|
{
|
||||||
LDR_MODULE *module;
|
LDR_DATA_TABLE_ENTRY *module;
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
|
|
||||||
dispatch->ImageBase = 0;
|
dispatch->ImageBase = 0;
|
||||||
|
|
|
@ -1578,7 +1578,7 @@ static NTSTATUS libunwind_virtual_unwind( ULONG64 ip, BOOL* got_info, ULONG64 *f
|
||||||
*/
|
*/
|
||||||
static NTSTATUS virtual_unwind( ULONG type, DISPATCHER_CONTEXT *dispatch, CONTEXT *context )
|
static NTSTATUS virtual_unwind( ULONG type, DISPATCHER_CONTEXT *dispatch, CONTEXT *context )
|
||||||
{
|
{
|
||||||
LDR_MODULE *module;
|
LDR_DATA_TABLE_ENTRY *module;
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
|
|
||||||
dispatch->ImageBase = 0;
|
dispatch->ImageBase = 0;
|
||||||
|
|
|
@ -3329,7 +3329,7 @@ struct ldr_enum_context
|
||||||
int count;
|
int count;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void WINAPI ldr_enum_callback(LDR_MODULE *module, void *context, BOOLEAN *stop)
|
static void WINAPI ldr_enum_callback(LDR_DATA_TABLE_ENTRY *module, void *context, BOOLEAN *stop)
|
||||||
{
|
{
|
||||||
static const WCHAR ntdllW[] = {'n','t','d','l','l','.','d','l','l',0};
|
static const WCHAR ntdllW[] = {'n','t','d','l','l','.','d','l','l',0};
|
||||||
struct ldr_enum_context *ctx = context;
|
struct ldr_enum_context *ctx = context;
|
||||||
|
@ -3435,9 +3435,9 @@ static void CALLBACK ldr_notify_callback1(ULONG reason, LDR_DLL_NOTIFICATION_DAT
|
||||||
const IMAGE_IMPORT_DESCRIPTOR *imports;
|
const IMAGE_IMPORT_DESCRIPTOR *imports;
|
||||||
const IMAGE_THUNK_DATA *import_list;
|
const IMAGE_THUNK_DATA *import_list;
|
||||||
IMAGE_THUNK_DATA *thunk_list;
|
IMAGE_THUNK_DATA *thunk_list;
|
||||||
|
LDR_DATA_TABLE_ENTRY *mod;
|
||||||
DWORD *calls = context;
|
DWORD *calls = context;
|
||||||
LIST_ENTRY *mark;
|
LIST_ENTRY *mark;
|
||||||
LDR_MODULE *mod;
|
|
||||||
ULONG size;
|
ULONG size;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
|
@ -3455,7 +3455,7 @@ static void CALLBACK ldr_notify_callback1(ULONG reason, LDR_DLL_NOTIFICATION_DAT
|
||||||
|
|
||||||
/* expect module to be last module listed in LdrData load order list */
|
/* expect module to be last module listed in LdrData load order list */
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
|
||||||
mod = CONTAINING_RECORD(mark->Blink, LDR_MODULE, InMemoryOrderModuleList);
|
mod = CONTAINING_RECORD(mark->Blink, LDR_DATA_TABLE_ENTRY, InMemoryOrderModuleList);
|
||||||
ok(mod->BaseAddress == data->Loaded.DllBase, "Expected base address %p, got %p\n",
|
ok(mod->BaseAddress == data->Loaded.DllBase, "Expected base address %p, got %p\n",
|
||||||
data->Loaded.DllBase, mod->BaseAddress);
|
data->Loaded.DllBase, mod->BaseAddress);
|
||||||
ok(!lstrcmpiW(mod->BaseDllName.Buffer, expected_dll), "Expected %s, got %s\n",
|
ok(!lstrcmpiW(mod->BaseDllName.Buffer, expected_dll), "Expected %s, got %s\n",
|
||||||
|
@ -3507,7 +3507,7 @@ static void CALLBACK ldr_notify_callback_dll_main(ULONG reason, LDR_DLL_NOTIFICA
|
||||||
{
|
{
|
||||||
DWORD *calls = context;
|
DWORD *calls = context;
|
||||||
LIST_ENTRY *mark;
|
LIST_ENTRY *mark;
|
||||||
LDR_MODULE *mod;
|
LDR_DATA_TABLE_ENTRY *mod;
|
||||||
|
|
||||||
*calls <<= 4;
|
*calls <<= 4;
|
||||||
*calls |= reason;
|
*calls |= reason;
|
||||||
|
@ -3516,7 +3516,7 @@ static void CALLBACK ldr_notify_callback_dll_main(ULONG reason, LDR_DLL_NOTIFICA
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
|
||||||
mod = CONTAINING_RECORD(mark->Blink, LDR_MODULE, InMemoryOrderModuleList);
|
mod = CONTAINING_RECORD(mark->Blink, LDR_DATA_TABLE_ENTRY, InMemoryOrderModuleList);
|
||||||
ok(mod->BaseAddress == data->Loaded.DllBase, "Expected base address %p, got %p\n",
|
ok(mod->BaseAddress == data->Loaded.DllBase, "Expected base address %p, got %p\n",
|
||||||
data->Loaded.DllBase, mod->BaseAddress);
|
data->Loaded.DllBase, mod->BaseAddress);
|
||||||
if (mod->BaseAddress != data->Loaded.DllBase)
|
if (mod->BaseAddress != data->Loaded.DllBase)
|
||||||
|
@ -3546,7 +3546,7 @@ static void CALLBACK ldr_notify_callback_fail(ULONG reason, LDR_DLL_NOTIFICATION
|
||||||
{
|
{
|
||||||
DWORD *calls = context;
|
DWORD *calls = context;
|
||||||
LIST_ENTRY *mark;
|
LIST_ENTRY *mark;
|
||||||
LDR_MODULE *mod;
|
LDR_DATA_TABLE_ENTRY *mod;
|
||||||
|
|
||||||
*calls <<= 4;
|
*calls <<= 4;
|
||||||
*calls |= reason;
|
*calls |= reason;
|
||||||
|
@ -3555,7 +3555,7 @@ static void CALLBACK ldr_notify_callback_fail(ULONG reason, LDR_DLL_NOTIFICATION
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
|
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
|
||||||
mod = CONTAINING_RECORD(mark->Blink, LDR_MODULE, InMemoryOrderModuleList);
|
mod = CONTAINING_RECORD(mark->Blink, LDR_DATA_TABLE_ENTRY, InMemoryOrderModuleList);
|
||||||
ok(mod->BaseAddress == data->Loaded.DllBase, "Expected base address %p, got %p\n",
|
ok(mod->BaseAddress == data->Loaded.DllBase, "Expected base address %p, got %p\n",
|
||||||
data->Loaded.DllBase, mod->BaseAddress);
|
data->Loaded.DllBase, mod->BaseAddress);
|
||||||
if (mod->BaseAddress != data->Loaded.DllBase)
|
if (mod->BaseAddress != data->Loaded.DllBase)
|
||||||
|
|
|
@ -803,7 +803,7 @@ static void unload_driver( struct wine_rb_entry *entry, void *context )
|
||||||
{
|
{
|
||||||
struct wine_driver *driver = WINE_RB_ENTRY_VALUE( entry, struct wine_driver, entry );
|
struct wine_driver *driver = WINE_RB_ENTRY_VALUE( entry, struct wine_driver, entry );
|
||||||
SERVICE_STATUS_HANDLE service_handle = driver->service_handle;
|
SERVICE_STATUS_HANDLE service_handle = driver->service_handle;
|
||||||
LDR_MODULE *ldr;
|
LDR_DATA_TABLE_ENTRY *ldr;
|
||||||
|
|
||||||
if (!service_handle) return; /* not a service */
|
if (!service_handle) return; /* not a service */
|
||||||
|
|
||||||
|
@ -3355,10 +3355,10 @@ error:
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* find the LDR_MODULE corresponding to the driver module */
|
/* find the LDR_DATA_TABLE_ENTRY corresponding to the driver module */
|
||||||
static LDR_MODULE *find_ldr_module( HMODULE module )
|
static LDR_DATA_TABLE_ENTRY *find_ldr_module( HMODULE module )
|
||||||
{
|
{
|
||||||
LDR_MODULE *ldr;
|
LDR_DATA_TABLE_ENTRY *ldr;
|
||||||
ULONG_PTR magic;
|
ULONG_PTR magic;
|
||||||
|
|
||||||
LdrLockLoaderLock( 0, NULL, &magic );
|
LdrLockLoaderLock( 0, NULL, &magic );
|
||||||
|
|
|
@ -2317,7 +2317,7 @@ typedef enum _LDR_DLL_LOAD_REASON
|
||||||
LoadReasonUnknown = -1
|
LoadReasonUnknown = -1
|
||||||
} LDR_DLL_LOAD_REASON, *PLDR_DLL_LOAD_REASON;
|
} LDR_DLL_LOAD_REASON, *PLDR_DLL_LOAD_REASON;
|
||||||
|
|
||||||
typedef struct _LDR_MODULE
|
typedef struct _LDR_DATA_TABLE_ENTRY
|
||||||
{
|
{
|
||||||
LIST_ENTRY InLoadOrderModuleList;
|
LIST_ENTRY InLoadOrderModuleList;
|
||||||
LIST_ENTRY InMemoryOrderModuleList;
|
LIST_ENTRY InMemoryOrderModuleList;
|
||||||
|
@ -2348,7 +2348,7 @@ typedef struct _LDR_MODULE
|
||||||
LDR_DLL_LOAD_REASON LoadReason;
|
LDR_DLL_LOAD_REASON LoadReason;
|
||||||
ULONG ImplicitPathOptions;
|
ULONG ImplicitPathOptions;
|
||||||
ULONG ReferenceCount;
|
ULONG ReferenceCount;
|
||||||
} LDR_MODULE, *PLDR_MODULE;
|
} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
|
||||||
|
|
||||||
typedef struct _LDR_DLL_LOADED_NOTIFICATION_DATA
|
typedef struct _LDR_DLL_LOADED_NOTIFICATION_DATA
|
||||||
{
|
{
|
||||||
|
@ -2376,7 +2376,7 @@ typedef union _LDR_DLL_NOTIFICATION_DATA
|
||||||
|
|
||||||
typedef void (CALLBACK *PLDR_DLL_NOTIFICATION_FUNCTION)(ULONG, LDR_DLL_NOTIFICATION_DATA*, void*);
|
typedef void (CALLBACK *PLDR_DLL_NOTIFICATION_FUNCTION)(ULONG, LDR_DLL_NOTIFICATION_DATA*, void*);
|
||||||
|
|
||||||
/* those defines are (some of the) regular LDR_MODULE.Flags values */
|
/* those defines are (some of the) regular LDR_DATA_TABLE_ENTRY.Flags values */
|
||||||
#define LDR_IMAGE_IS_DLL 0x00000004
|
#define LDR_IMAGE_IS_DLL 0x00000004
|
||||||
#define LDR_LOAD_IN_PROGRESS 0x00001000
|
#define LDR_LOAD_IN_PROGRESS 0x00001000
|
||||||
#define LDR_UNLOAD_IN_PROGRESS 0x00002000
|
#define LDR_UNLOAD_IN_PROGRESS 0x00002000
|
||||||
|
@ -2443,7 +2443,7 @@ NTSYSAPI NTSTATUS WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_EN
|
||||||
NTSYSAPI NTSTATUS WINAPI LdrAddDllDirectory(const UNICODE_STRING*,void**);
|
NTSYSAPI NTSTATUS WINAPI LdrAddDllDirectory(const UNICODE_STRING*,void**);
|
||||||
NTSYSAPI NTSTATUS WINAPI LdrAddRefDll(ULONG,HMODULE);
|
NTSYSAPI NTSTATUS WINAPI LdrAddRefDll(ULONG,HMODULE);
|
||||||
NTSYSAPI NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
|
NTSYSAPI NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
|
||||||
NTSYSAPI NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_MODULE*);
|
NTSYSAPI NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_DATA_TABLE_ENTRY*);
|
||||||
NTSYSAPI NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
|
NTSYSAPI NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
|
||||||
NTSYSAPI NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
|
NTSYSAPI NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
|
||||||
NTSYSAPI NTSTATUS WINAPI LdrGetDllDirectory(UNICODE_STRING*);
|
NTSYSAPI NTSTATUS WINAPI LdrGetDllDirectory(UNICODE_STRING*);
|
||||||
|
|
|
@ -144,7 +144,7 @@ static BOOL fill_sym_lvalue(const SYMBOL_INFO* sym, ULONG_PTR base,
|
||||||
PEB peb;
|
PEB peb;
|
||||||
PEB_LDR_DATA ldr_data;
|
PEB_LDR_DATA ldr_data;
|
||||||
PLIST_ENTRY head, current;
|
PLIST_ENTRY head, current;
|
||||||
LDR_MODULE ldr_module;
|
LDR_DATA_TABLE_ENTRY ldr_module;
|
||||||
unsigned tlsindex = -1;
|
unsigned tlsindex = -1;
|
||||||
|
|
||||||
if (NtQueryInformationProcess(dbg_curr_process->handle, ProcessBasicInformation,
|
if (NtQueryInformationProcess(dbg_curr_process->handle, ProcessBasicInformation,
|
||||||
|
@ -165,7 +165,7 @@ static BOOL fill_sym_lvalue(const SYMBOL_INFO* sym, ULONG_PTR base,
|
||||||
head = &((PEB_LDR_DATA*)peb.LdrData)->InLoadOrderModuleList;
|
head = &((PEB_LDR_DATA*)peb.LdrData)->InLoadOrderModuleList;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (!dbg_read_memory(CONTAINING_RECORD(current, LDR_MODULE, InLoadOrderModuleList),
|
if (!dbg_read_memory(CONTAINING_RECORD(current, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList),
|
||||||
&ldr_module, sizeof(ldr_module))) goto tls_error;
|
&ldr_module, sizeof(ldr_module))) goto tls_error;
|
||||||
if ((DWORD_PTR)ldr_module.BaseAddress == sym->ModBase)
|
if ((DWORD_PTR)ldr_module.BaseAddress == sym->ModBase)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3408,7 +3408,7 @@ PIO_APC_ROUTINE
|
||||||
PIO_STATUS_BLOCK
|
PIO_STATUS_BLOCK
|
||||||
PKEY_MULTIPLE_VALUE_INFORMATION
|
PKEY_MULTIPLE_VALUE_INFORMATION
|
||||||
PLARGE_INTEGER
|
PLARGE_INTEGER
|
||||||
PLDR_MODULE *
|
PLDR_DATA_TABLE_ENTRY *
|
||||||
PLONG
|
PLONG
|
||||||
PLPC_MESSAGE
|
PLPC_MESSAGE
|
||||||
PLPC_SECTION_READ
|
PLPC_SECTION_READ
|
||||||
|
|
Loading…
Reference in New Issue