[PSDK]: Add missing QUOTA_LIMITS_EX.

[NDK]: Fix certain SxS functions.
[RTL]: "Implement" RtlActivateActivationContextEx which lets you specify a TEB. RtlActivateActivationContext uses the current TEB. NOTE: All these functions are broken because they copy-paste Win32 wine code into NT Native functions (with different parameters/structures).
[NDK]: Fix pstypes.h -- it was a #define mess, and worked by luck because we are a < Vista OS.
[NDK]: Add RtlInitEmptyAnsiString.

svn path=/trunk/; revision=52736
This commit is contained in:
Alex Ionescu 2011-07-20 14:46:15 +00:00
parent 825444af66
commit 3013167a9d
5 changed files with 83 additions and 21 deletions

View file

@ -117,7 +117,6 @@ Author:
#define PSP_LONG_QUANTUMS 16 #define PSP_LONG_QUANTUMS 16
#ifndef NTOS_MODE_USER #ifndef NTOS_MODE_USER
// //
// Thread Access Types // Thread Access Types
// //
@ -149,6 +148,7 @@ Author:
#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
SYNCHRONIZE | \ SYNCHRONIZE | \
0xFFF) 0xFFF)
#endif
// //
// Thread Base Priorities // Thread Base Priorities
@ -162,7 +162,6 @@ Author:
// TLS Slots // TLS Slots
// //
#define TLS_MINIMUM_AVAILABLE 64 #define TLS_MINIMUM_AVAILABLE 64
#endif
// //
// Job Access Types // Job Access Types
@ -194,7 +193,6 @@ Author:
#define JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK 0x1000 #define JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK 0x1000
#define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 0x2000 #define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 0x2000
// //
// Cross Thread Flags // Cross Thread Flags
// //
@ -223,9 +221,7 @@ Author:
#define STA_LPC_EXIT_THREAD_CALLED_BIT 0x2 #define STA_LPC_EXIT_THREAD_CALLED_BIT 0x2
#define STA_ADDRESS_SPACE_OWNER_BIT 0x4 #define STA_ADDRESS_SPACE_OWNER_BIT 0x4
#define STA_OWNS_WORKING_SET_BITS 0x1F8 #define STA_OWNS_WORKING_SET_BITS 0x1F8
#endif
#define TLS_EXPANSION_SLOTS 1024
// //
// Process Flags // Process Flags
// //
@ -261,8 +257,22 @@ Author:
// Vista Process Flags // Vista Process Flags
// //
#define PSF2_PROTECTED_BIT 0x800 #define PSF2_PROTECTED_BIT 0x800
#endif
//
// TLS/FLS Defines
//
#define TLS_EXPANSION_SLOTS 1024
#ifdef NTOS_MODE_USER #ifdef NTOS_MODE_USER
//
// Thread Native Base Priorities
//
#define LOW_PRIORITY 0
#define LOW_REALTIME_PRIORITY 16
#define HIGH_PRIORITY 31
#define MAXIMUM_PRIORITY 32
// //
// Current Process/Thread built-in 'special' handles // Current Process/Thread built-in 'special' handles
// //

View file

@ -172,6 +172,17 @@ RtlInitEmptyUnicodeString(OUT PUNICODE_STRING UnicodeString,
UnicodeString->Buffer = Buffer; UnicodeString->Buffer = Buffer;
} }
FORCEINLINE
VOID
RtlInitEmptyAnsiString(OUT PANSI_STRING AnsiString,
IN PSTR Buffer,
IN USHORT BufferSize)
{
AnsiString->Length = 0;
AnsiString->MaximumLength = BufferSize;
AnsiString->Buffer = Buffer;
}
// //
// LUID Macros // LUID Macros
// //
@ -3046,12 +3057,21 @@ LdrRelocateImageWithBias(
// Activation Context Functions // Activation Context Functions
// //
#ifdef NTOS_MODE_USER #ifdef NTOS_MODE_USER
NTSYSAPI
NTSTATUS
NTAPI
RtlActivateActivationContextEx(
IN ULONG Flags,
IN PTEB Teb,
IN PVOID Context,
IN PULONG_PTR Cookie
);
NTSYSAPI NTSYSAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
RtlActivateActivationContext( RtlActivateActivationContext(
IN ULONG Unknown, IN ULONG Flags,
IN HANDLE Handle, IN HANDLE Handle,
OUT PULONG_PTR Cookie OUT PULONG_PTR Cookie
); );
@ -3063,7 +3083,6 @@ RtlAddRefActivationContext(
PVOID Context PVOID Context
); );
NTSYSAPI NTSYSAPI
PRTL_ACTIVATION_CONTEXT_STACK_FRAME PRTL_ACTIVATION_CONTEXT_STACK_FRAME
FASTCALL FASTCALL

View file

@ -256,6 +256,11 @@ C_ASSERT(HEAP_CREATE_VALID_MASK == 0x0007F0FF);
#define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag #define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
#define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo #define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
//
// Activation Contexts
//
#define INVALID_ACTIVATION_CONTEXT (PVOID)0xFFFFFFFF
// //
// C++ CONST casting // C++ CONST casting
// //
@ -758,20 +763,28 @@ typedef struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME
struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME *Previous; struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME *Previous;
PACTIVATION_CONTEXT ActivationContext; PACTIVATION_CONTEXT ActivationContext;
ULONG Flags; ULONG Flags;
} RTL_ACTIVATION_CONTEXT_STACK_FRAME, } RTL_ACTIVATION_CONTEXT_STACK_FRAME, *PRTL_ACTIVATION_CONTEXT_STACK_FRAME;
*PRTL_ACTIVATION_CONTEXT_STACK_FRAME;
typedef struct _RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_BASIC
{
SIZE_T Size;
ULONG Format;
RTL_ACTIVATION_CONTEXT_STACK_FRAME Frame;
} RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_BASIC, *PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_BASIC;
typedef struct _RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED typedef struct _RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED
{ {
ULONG Size; SIZE_T Size;
ULONG Format; ULONG Format;
RTL_ACTIVATION_CONTEXT_STACK_FRAME Frame; RTL_ACTIVATION_CONTEXT_STACK_FRAME Frame;
PVOID Extra1; PVOID Extra1;
PVOID Extra2; PVOID Extra2;
PVOID Extra3; PVOID Extra3;
PVOID Extra4; PVOID Extra4;
} RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED, } RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED, *PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED;
*PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED;
typedef RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME;
typedef PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME;
#if (NTDDI_VERSION >= NTDDI_WS03) #if (NTDDI_VERSION >= NTDDI_WS03)
typedef struct _ACTIVATION_CONTEXT_STACK typedef struct _ACTIVATION_CONTEXT_STACK
@ -781,8 +794,7 @@ typedef struct _ACTIVATION_CONTEXT_STACK
ULONG Flags; ULONG Flags;
ULONG NextCookieSequenceNumber; ULONG NextCookieSequenceNumber;
ULONG StackId; ULONG StackId;
} ACTIVATION_CONTEXT_STACK, } ACTIVATION_CONTEXT_STACK, *PACTIVATION_CONTEXT_STACK;
*PACTIVATION_CONTEXT_STACK;
#else #else
typedef struct _ACTIVATION_CONTEXT_STACK typedef struct _ACTIVATION_CONTEXT_STACK
{ {

View file

@ -3303,6 +3303,21 @@ typedef struct _QUOTA_LIMITS {
LARGE_INTEGER TimeLimit; LARGE_INTEGER TimeLimit;
} QUOTA_LIMITS,*PQUOTA_LIMITS; } QUOTA_LIMITS,*PQUOTA_LIMITS;
typedef struct _QUOTA_LIMITS_EX {
SIZE_T PagedPoolLimit;
SIZE_T NonPagedPoolLimit;
SIZE_T MinimumWorkingSetSize;
SIZE_T MaximumWorkingSetSize;
SIZE_T PagefileLimit;
LARGE_INTEGER TimeLimit;
SIZE_T Reserved1;
SIZE_T Reserved2;
SIZE_T Reserved3;
SIZE_T Reserved4;
ULONG Flags;
ULONG Reserved5;
} QUOTA_LIMITS_EX, *PQUOTA_LIMITS_EX;
typedef struct _IO_COUNTERS { typedef struct _IO_COUNTERS {
ULONGLONG ReadOperationCount; ULONGLONG ReadOperationCount;
ULONGLONG WriteOperationCount; ULONGLONG WriteOperationCount;

View file

@ -2370,18 +2370,18 @@ RtlReleaseActivationContext( HANDLE handle )
} }
NTSTATUS NTSTATUS
NTAPI RtlActivateActivationContext( ULONG unknown, HANDLE handle, PULONG_PTR cookie ) NTAPI RtlActivateActivationContextEx( ULONG flags, PTEB tebAddress, HANDLE handle, PULONG_PTR cookie )
{ {
RTL_ACTIVATION_CONTEXT_STACK_FRAME *frame; RTL_ACTIVATION_CONTEXT_STACK_FRAME *frame;
if (!(frame = RtlAllocateHeap( RtlGetProcessHeap(), 0, sizeof(*frame) ))) if (!(frame = RtlAllocateHeap( RtlGetProcessHeap(), 0, sizeof(*frame) )))
return STATUS_NO_MEMORY; return STATUS_NO_MEMORY;
frame->Previous = NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame; frame->Previous = tebAddress->ActivationContextStackPointer->ActiveFrame;
frame->ActivationContext = handle; frame->ActivationContext = handle;
frame->Flags = 0; frame->Flags = 0;
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = frame; tebAddress->ActivationContextStackPointer->ActiveFrame = frame;
RtlAddRefActivationContext( handle ); RtlAddRefActivationContext( handle );
*cookie = (ULONG_PTR)frame; *cookie = (ULONG_PTR)frame;
@ -2390,6 +2390,12 @@ NTAPI RtlActivateActivationContext( ULONG unknown, HANDLE handle, PULONG_PTR coo
} }
NTSTATUS
NTAPI RtlActivateActivationContext( ULONG flags, HANDLE handle, PULONG_PTR cookie )
{
return RtlActivateActivationContextEx(flags, NtCurrentTeb(), handle, cookie);
}
NTSTATUS NTSTATUS
NTAPI NTAPI
RtlDeactivateActivationContext( ULONG flags, ULONG_PTR cookie ) RtlDeactivateActivationContext( ULONG flags, ULONG_PTR cookie )