diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2011-08-16 20:08:34 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2011-08-16 20:08:34 +0000 |
commit | 833db5481f1f86745979d3ceda580c2d8fdd24a8 (patch) | |
tree | b7aca64ec232f5fd51b5a4c84187b9fb10e8ce7e /winsup/cygwin/ntdll.h | |
parent | 9d3b795b47430b4518e5fafb6fb29a96d4bb8f0c (diff) | |
download | cygnal-833db5481f1f86745979d3ceda580c2d8fdd24a8.tar.gz cygnal-833db5481f1f86745979d3ceda580c2d8fdd24a8.tar.bz2 cygnal-833db5481f1f86745979d3ceda580c2d8fdd24a8.zip |
* dlfcn.cc (dlopen): Reimplement RTLD_NODELETE for Windows 2000 using
internal datastructures. Explain the code.
* ntdll.h (struct _LDR_DATA_TABLE_ENTRY): Define.
(struct _PEB_LDR_DATA): Define.
(struct _PEB): Change PVOID LoaderData to PPEB_LDR_DATA Ldr.
* fhandler_process.cc (format_process_maps): Call NtQueryVirtualMemory
with valid return length pointer. Explain why.
Diffstat (limited to 'winsup/cygwin/ntdll.h')
-rw-r--r-- | winsup/cygwin/ntdll.h | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/winsup/cygwin/ntdll.h b/winsup/cygwin/ntdll.h index c5b3597a7..ce1a87a34 100644 --- a/winsup/cygwin/ntdll.h +++ b/winsup/cygwin/ntdll.h @@ -579,6 +579,34 @@ typedef struct _KERNEL_USER_TIMES LARGE_INTEGER UserTime; } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES; +typedef struct _LDR_DATA_TABLE_ENTRY +{ + LIST_ENTRY InLoadOrderLinks; + LIST_ENTRY InMemoryOrderLinks; + LIST_ENTRY InInitializationOrderLinks; + PVOID DllBase; + PVOID EntryPoint; + ULONG SizeOfImage; + UNICODE_STRING FullDllName; + UNICODE_STRING BaseDllName; + ULONG Flags; + WORD LoadCount; + /* More follows. Left out since it's just not used. The aforementioned + part of the structure is stable from at least NT4 up to Windows 7, + including WOW64. */ +} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY; + +typedef struct _PEB_LDR_DATA +{ + ULONG Length; + UCHAR Initialized; + PVOID SsHandle; + LIST_ENTRY InLoadOrderModuleList; + LIST_ENTRY InMemoryOrderModuleList; + LIST_ENTRY InInitializationOrderModuleList; + PVOID EntryInProgress; +} PEB_LDR_DATA, *PPEB_LDR_DATA; + typedef struct _RTL_USER_PROCESS_PARAMETERS { ULONG AllocationSize; @@ -616,7 +644,7 @@ typedef struct _PEB BYTE Reserved1[2]; BYTE BeingDebugged; BYTE Reserved2[9]; - PVOID LoaderData; + PPEB_LDR_DATA Ldr; PRTL_USER_PROCESS_PARAMETERS ProcessParameters; BYTE Reserved3[4]; PVOID ProcessHeap; |