mirror of
https://github.com/reactos/reactos.git
synced 2024-08-02 17:40:58 +00:00
More NDK fixes/additions
svn path=/trunk/; revision=16105
This commit is contained in:
parent
93d9bcad1a
commit
3ff128077e
|
@ -38,6 +38,37 @@ extern NTOSAPI POBJECT_TYPE PsThreadType;
|
||||||
|
|
||||||
#define USER_SHARED_DATA (0x7FFE0000)
|
#define USER_SHARED_DATA (0x7FFE0000)
|
||||||
|
|
||||||
|
#define PROCESS_PRIORITY_CLASS_NORMAL (2) /* FIXME */
|
||||||
|
|
||||||
|
/* Global Flags */
|
||||||
|
#define FLG_STOP_ON_EXCEPTION 0x00000001
|
||||||
|
#define FLG_SHOW_LDR_SNAPS 0x00000002
|
||||||
|
#define FLG_DEBUG_INITIAL_COMMAND 0x00000004
|
||||||
|
#define FLG_STOP_ON_HUNG_GUI 0x00000008
|
||||||
|
#define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
|
||||||
|
#define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
|
||||||
|
#define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
|
||||||
|
#define FLG_HEAP_VALIDATE_ALL 0x00000080
|
||||||
|
#define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100
|
||||||
|
#define FLG_POOL_ENABLE_FREE_CHECK 0x00000200
|
||||||
|
#define FLG_POOL_ENABLE_TAGGING 0x00000400
|
||||||
|
#define FLG_HEAP_ENABLE_TAGGING 0x00000800
|
||||||
|
#define FLG_USER_STACK_TRACE_DB 0x00001000
|
||||||
|
#define FLG_KERNEL_STACK_TRACE_DB 0x00002000
|
||||||
|
#define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
|
||||||
|
#define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
|
||||||
|
#define FLG_IGNORE_DEBUG_PRIV 0x00010000
|
||||||
|
#define FLG_ENABLE_CSRDEBUG 0x00020000
|
||||||
|
#define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
|
||||||
|
#define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
|
||||||
|
#define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000
|
||||||
|
#define FLG_HEAP_DISABLE_COALESCING 0x00200000
|
||||||
|
#define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
|
||||||
|
#define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
|
||||||
|
#define FLG_ENABLE_HANDLE_TYPE_TAGGING 0x01000000
|
||||||
|
#define FLG_HEAP_PAGE_ALLOCS 0x02000000
|
||||||
|
#define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000
|
||||||
|
|
||||||
/* ENUMERATIONS **************************************************************/
|
/* ENUMERATIONS **************************************************************/
|
||||||
|
|
||||||
/* FUNCTION TYPES ************************************************************/
|
/* FUNCTION TYPES ************************************************************/
|
||||||
|
@ -72,13 +103,13 @@ typedef struct _PEB_FREE_BLOCK
|
||||||
ULONG Size;
|
ULONG Size;
|
||||||
} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;
|
} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;
|
||||||
|
|
||||||
typedef struct _PEB
|
typedef struct _PEB
|
||||||
{
|
{
|
||||||
UCHAR InheritedAddressSpace; /* 00h */
|
UCHAR InheritedAddressSpace; /* 00h */
|
||||||
UCHAR ReadImageFileExecOptions; /* 01h */
|
UCHAR ReadImageFileExecOptions; /* 01h */
|
||||||
UCHAR BeingDebugged; /* 02h */
|
UCHAR BeingDebugged; /* 02h */
|
||||||
UCHAR Spare; /* 03h */
|
BOOLEAN SpareBool; /* 03h */
|
||||||
PVOID Mutant; /* 04h */
|
HANDLE Mutant; /* 04h */
|
||||||
PVOID ImageBaseAddress; /* 08h */
|
PVOID ImageBaseAddress; /* 08h */
|
||||||
PPEB_LDR_DATA Ldr; /* 0Ch */
|
PPEB_LDR_DATA Ldr; /* 0Ch */
|
||||||
PRTL_USER_PROCESS_PARAMETERS ProcessParameters; /* 10h */
|
PRTL_USER_PROCESS_PARAMETERS ProcessParameters; /* 10h */
|
||||||
|
@ -103,7 +134,6 @@ typedef struct _PEB
|
||||||
PVOID UnicodeCaseTableData; /* 60h */
|
PVOID UnicodeCaseTableData; /* 60h */
|
||||||
ULONG NumberOfProcessors; /* 64h */
|
ULONG NumberOfProcessors; /* 64h */
|
||||||
ULONG NtGlobalFlag; /* 68h */
|
ULONG NtGlobalFlag; /* 68h */
|
||||||
UCHAR _Spare2[0x4]; /* 6Ch */
|
|
||||||
LARGE_INTEGER CriticalSectionTimeout; /* 70h */
|
LARGE_INTEGER CriticalSectionTimeout; /* 70h */
|
||||||
ULONG HeapSegmentReserve; /* 78h */
|
ULONG HeapSegmentReserve; /* 78h */
|
||||||
ULONG HeapSegmentCommit; /* 7Ch */
|
ULONG HeapSegmentCommit; /* 7Ch */
|
||||||
|
@ -111,7 +141,7 @@ typedef struct _PEB
|
||||||
ULONG HeapDeCommitFreeBlockThreshold; /* 84h */
|
ULONG HeapDeCommitFreeBlockThreshold; /* 84h */
|
||||||
ULONG NumberOfHeaps; /* 88h */
|
ULONG NumberOfHeaps; /* 88h */
|
||||||
ULONG MaximumNumberOfHeaps; /* 8Ch */
|
ULONG MaximumNumberOfHeaps; /* 8Ch */
|
||||||
PVOID** ProcessHeaps; /* 90h */
|
PVOID* ProcessHeaps; /* 90h */
|
||||||
PVOID GdiSharedHandleTable; /* 94h */
|
PVOID GdiSharedHandleTable; /* 94h */
|
||||||
PVOID ProcessStarterHelper; /* 98h */
|
PVOID ProcessStarterHelper; /* 98h */
|
||||||
PVOID GdiDCAttributeList; /* 9Ch */
|
PVOID GdiDCAttributeList; /* 9Ch */
|
||||||
|
@ -119,13 +149,19 @@ typedef struct _PEB
|
||||||
ULONG OSMajorVersion; /* A4h */
|
ULONG OSMajorVersion; /* A4h */
|
||||||
ULONG OSMinorVersion; /* A8h */
|
ULONG OSMinorVersion; /* A8h */
|
||||||
USHORT OSBuildNumber; /* ACh */
|
USHORT OSBuildNumber; /* ACh */
|
||||||
UCHAR SPMajorVersion; /* AEh */
|
USHORT OSCSDVersion; /* AEh */
|
||||||
UCHAR SPMinorVersion; /* AFh */
|
|
||||||
ULONG OSPlatformId; /* B0h */
|
ULONG OSPlatformId; /* B0h */
|
||||||
ULONG ImageSubSystem; /* B4h */
|
ULONG ImageSubSystem; /* B4h */
|
||||||
ULONG ImageSubSystemMajorVersion; /* B8h */
|
ULONG ImageSubSystemMajorVersion; /* B8h */
|
||||||
ULONG ImageSubSystemMinorVersion; /* C0h */
|
ULONG ImageSubSystemMinorVersion; /* BCh */
|
||||||
|
ULONG ImageProcessAffinityMask; /* C0h */
|
||||||
ULONG GdiHandleBuffer[0x22]; /* C4h */
|
ULONG GdiHandleBuffer[0x22]; /* C4h */
|
||||||
|
PVOID PostProcessInitRoutine; /* 14Ch */
|
||||||
|
PVOID *TlsExpansionBitmap; /* 150h */
|
||||||
|
ULONG TlsExpansionBitmapBits[0x20]; /* 154h */
|
||||||
|
ULONG SessionId; /* 1D4h */
|
||||||
|
PVOID AppCompatInfo; /* 1D8h */
|
||||||
|
UNICODE_STRING CSDVersion; /* 1DCh */
|
||||||
} PEB;
|
} PEB;
|
||||||
|
|
||||||
typedef struct _GDI_TEB_BATCH
|
typedef struct _GDI_TEB_BATCH
|
||||||
|
|
|
@ -15,6 +15,218 @@
|
||||||
/*FIXME: REORGANIZE THIS */
|
/*FIXME: REORGANIZE THIS */
|
||||||
/* FIXME: SOME FUNCTIONS MUST BE PROTECTED AGAINST DDK/IFS. */
|
/* FIXME: SOME FUNCTIONS MUST BE PROTECTED AGAINST DDK/IFS. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VOID
|
||||||
|
* InitializeListHead (
|
||||||
|
* PLIST_ENTRY ListHead
|
||||||
|
* );
|
||||||
|
*
|
||||||
|
* FUNCTION: Initializes a double linked list
|
||||||
|
* ARGUMENTS:
|
||||||
|
* ListHead = Caller supplied storage for the head of the list
|
||||||
|
*/
|
||||||
|
static __inline VOID
|
||||||
|
InitializeListHead(
|
||||||
|
IN PLIST_ENTRY ListHead)
|
||||||
|
{
|
||||||
|
ListHead->Flink = ListHead->Blink = ListHead;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VOID
|
||||||
|
* InsertHeadList (
|
||||||
|
* PLIST_ENTRY ListHead,
|
||||||
|
* PLIST_ENTRY Entry
|
||||||
|
* );
|
||||||
|
*
|
||||||
|
* FUNCTION: Inserts an entry in a double linked list
|
||||||
|
* ARGUMENTS:
|
||||||
|
* ListHead = Head of the list
|
||||||
|
* Entry = Entry to insert
|
||||||
|
*/
|
||||||
|
static __inline VOID
|
||||||
|
InsertHeadList(
|
||||||
|
IN PLIST_ENTRY ListHead,
|
||||||
|
IN PLIST_ENTRY Entry)
|
||||||
|
{
|
||||||
|
PLIST_ENTRY OldFlink;
|
||||||
|
OldFlink = ListHead->Flink;
|
||||||
|
Entry->Flink = OldFlink;
|
||||||
|
Entry->Blink = ListHead;
|
||||||
|
OldFlink->Blink = Entry;
|
||||||
|
ListHead->Flink = Entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VOID
|
||||||
|
* InsertTailList (
|
||||||
|
* PLIST_ENTRY ListHead,
|
||||||
|
* PLIST_ENTRY Entry
|
||||||
|
* );
|
||||||
|
*
|
||||||
|
* FUNCTION:
|
||||||
|
* Inserts an entry in a double linked list
|
||||||
|
*
|
||||||
|
* ARGUMENTS:
|
||||||
|
* ListHead = Head of the list
|
||||||
|
* Entry = Entry to insert
|
||||||
|
*/
|
||||||
|
static __inline VOID
|
||||||
|
InsertTailList(
|
||||||
|
IN PLIST_ENTRY ListHead,
|
||||||
|
IN PLIST_ENTRY Entry)
|
||||||
|
{
|
||||||
|
PLIST_ENTRY OldBlink;
|
||||||
|
OldBlink = ListHead->Blink;
|
||||||
|
Entry->Flink = ListHead;
|
||||||
|
Entry->Blink = OldBlink;
|
||||||
|
OldBlink->Flink = Entry;
|
||||||
|
ListHead->Blink = Entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BOOLEAN
|
||||||
|
* IsListEmpty (
|
||||||
|
* PLIST_ENTRY ListHead
|
||||||
|
* );
|
||||||
|
*
|
||||||
|
* FUNCTION:
|
||||||
|
* Checks if a double linked list is empty
|
||||||
|
*
|
||||||
|
* ARGUMENTS:
|
||||||
|
* ListHead = Head of the list
|
||||||
|
*/
|
||||||
|
#define IsListEmpty(ListHead) \
|
||||||
|
((ListHead)->Flink == (ListHead))
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PSINGLE_LIST_ENTRY
|
||||||
|
* PopEntryList (
|
||||||
|
* PSINGLE_LIST_ENTRY ListHead
|
||||||
|
* );
|
||||||
|
*
|
||||||
|
* FUNCTION:
|
||||||
|
* Removes an entry from the head of a single linked list
|
||||||
|
*
|
||||||
|
* ARGUMENTS:
|
||||||
|
* ListHead = Head of the list
|
||||||
|
*
|
||||||
|
* RETURNS:
|
||||||
|
* The removed entry
|
||||||
|
*/
|
||||||
|
#define PopEntryList(ListHead) \
|
||||||
|
(ListHead)->Next; \
|
||||||
|
{ \
|
||||||
|
PSINGLE_LIST_ENTRY _FirstEntry; \
|
||||||
|
_FirstEntry = (ListHead)->Next; \
|
||||||
|
if (_FirstEntry != NULL) \
|
||||||
|
(ListHead)->Next = _FirstEntry->Next; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define PushEntryList(_ListHead, _Entry) \
|
||||||
|
(_Entry)->Next = (_ListHead)->Next; \
|
||||||
|
(_ListHead)->Next = (_Entry); \
|
||||||
|
|
||||||
|
/*
|
||||||
|
*BOOLEAN
|
||||||
|
*RemoveEntryList (
|
||||||
|
* PLIST_ENTRY Entry
|
||||||
|
* );
|
||||||
|
*
|
||||||
|
* FUNCTION:
|
||||||
|
* Removes an entry from a double linked list
|
||||||
|
*
|
||||||
|
* ARGUMENTS:
|
||||||
|
* ListEntry = Entry to remove
|
||||||
|
*/
|
||||||
|
static __inline BOOLEAN
|
||||||
|
RemoveEntryList(
|
||||||
|
IN PLIST_ENTRY Entry)
|
||||||
|
{
|
||||||
|
PLIST_ENTRY OldFlink;
|
||||||
|
PLIST_ENTRY OldBlink;
|
||||||
|
|
||||||
|
OldFlink = Entry->Flink;
|
||||||
|
OldBlink = Entry->Blink;
|
||||||
|
OldFlink->Blink = OldBlink;
|
||||||
|
OldBlink->Flink = OldFlink;
|
||||||
|
return (OldFlink == OldBlink);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PLIST_ENTRY
|
||||||
|
* RemoveHeadList (
|
||||||
|
* PLIST_ENTRY ListHead
|
||||||
|
* );
|
||||||
|
*
|
||||||
|
* FUNCTION:
|
||||||
|
* Removes the head entry from a double linked list
|
||||||
|
*
|
||||||
|
* ARGUMENTS:
|
||||||
|
* ListHead = Head of the list
|
||||||
|
*
|
||||||
|
* RETURNS:
|
||||||
|
* The removed entry
|
||||||
|
*/
|
||||||
|
static __inline PLIST_ENTRY
|
||||||
|
RemoveHeadList(
|
||||||
|
IN PLIST_ENTRY ListHead)
|
||||||
|
{
|
||||||
|
PLIST_ENTRY Flink;
|
||||||
|
PLIST_ENTRY Entry;
|
||||||
|
|
||||||
|
Entry = ListHead->Flink;
|
||||||
|
Flink = Entry->Flink;
|
||||||
|
ListHead->Flink = Flink;
|
||||||
|
Flink->Blink = ListHead;
|
||||||
|
return Entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PLIST_ENTRY
|
||||||
|
* RemoveTailList (
|
||||||
|
* PLIST_ENTRY ListHead
|
||||||
|
* );
|
||||||
|
*
|
||||||
|
* FUNCTION:
|
||||||
|
* Removes the tail entry from a double linked list
|
||||||
|
*
|
||||||
|
* ARGUMENTS:
|
||||||
|
* ListHead = Head of the list
|
||||||
|
*
|
||||||
|
* RETURNS:
|
||||||
|
* The removed entry
|
||||||
|
*/
|
||||||
|
static __inline PLIST_ENTRY
|
||||||
|
RemoveTailList(
|
||||||
|
IN PLIST_ENTRY ListHead)
|
||||||
|
{
|
||||||
|
PLIST_ENTRY Blink;
|
||||||
|
PLIST_ENTRY Entry;
|
||||||
|
|
||||||
|
Entry = ListHead->Blink;
|
||||||
|
Blink = Entry->Blink;
|
||||||
|
ListHead->Blink = Blink;
|
||||||
|
Blink->Flink = ListHead;
|
||||||
|
return Entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BOOLEAN
|
||||||
|
* IsXstEntry (
|
||||||
|
* PLIST_ENTRY ListHead,
|
||||||
|
* PLIST_ENTRY Entry
|
||||||
|
* );
|
||||||
|
*/
|
||||||
|
#define IsFirstEntry(ListHead, Entry) ((ListHead)->Flink == Entry)
|
||||||
|
|
||||||
|
#define IsLastEntry(ListHead, Entry) ((ListHead)->Blink == Entry)
|
||||||
|
|
||||||
|
|
||||||
#define RtlGetProcessHeap() (NtCurrentPeb()->ProcessHeap)
|
#define RtlGetProcessHeap() (NtCurrentPeb()->ProcessHeap)
|
||||||
|
|
||||||
|
@ -247,6 +459,17 @@ RtlCreateAcl(
|
||||||
ULONG AclSize,
|
ULONG AclSize,
|
||||||
ULONG AclRevision
|
ULONG AclRevision
|
||||||
);
|
);
|
||||||
|
|
||||||
|
PVOID
|
||||||
|
STDCALL
|
||||||
|
RtlCreateHeap(
|
||||||
|
IN ULONG Flags,
|
||||||
|
IN PVOID BaseAddress OPTIONAL,
|
||||||
|
IN ULONG SizeToReserve OPTIONAL,
|
||||||
|
IN ULONG SizeToCommit OPTIONAL,
|
||||||
|
IN PVOID Lock OPTIONAL,
|
||||||
|
IN PRTL_HEAP_DEFINITION Definition OPTIONAL
|
||||||
|
);
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
|
@ -418,6 +641,21 @@ RtlOemStringToUnicodeSize (
|
||||||
POEM_STRING AnsiString
|
POEM_STRING AnsiString
|
||||||
);
|
);
|
||||||
|
|
||||||
|
PVOID
|
||||||
|
STDCALL
|
||||||
|
RtlImageDirectoryEntryToData (
|
||||||
|
PVOID BaseAddress,
|
||||||
|
BOOLEAN bFlag,
|
||||||
|
ULONG Directory,
|
||||||
|
PULONG Size
|
||||||
|
);
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
STDCALL
|
||||||
|
RtlOpenCurrentUser(
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
OUT PHANDLE KeyHandle);
|
||||||
|
|
||||||
WCHAR STDCALL
|
WCHAR STDCALL
|
||||||
RtlDowncaseUnicodeChar(IN WCHAR Source);
|
RtlDowncaseUnicodeChar(IN WCHAR Source);
|
||||||
|
|
||||||
|
@ -473,6 +711,14 @@ RtlUnicodeStringToAnsiSize (
|
||||||
IN PUNICODE_STRING UnicodeString
|
IN PUNICODE_STRING UnicodeString
|
||||||
);
|
);
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
STDCALL
|
||||||
|
RtlUnicodeStringToInteger (
|
||||||
|
IN PUNICODE_STRING String,
|
||||||
|
IN ULONG Base,
|
||||||
|
OUT PULONG Value
|
||||||
|
);
|
||||||
|
|
||||||
#ifndef _NTIFS_
|
#ifndef _NTIFS_
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
STDCALL
|
STDCALL
|
||||||
|
|
Loading…
Reference in a new issue