more prototype fixes

svn path=/trunk/; revision=11422
This commit is contained in:
Thomas Bluemel 2004-10-24 20:37:27 +00:00
parent b69a77aa97
commit 0402fbbd25
23 changed files with 339 additions and 343 deletions

View file

@ -74,6 +74,7 @@ typedef struct _STACK_INFORMATION
} STACK_INFORMATION, *PSTACK_INFORMATION; } STACK_INFORMATION, *PSTACK_INFORMATION;
typedef ULONG THREADINFOCLASS; typedef ULONG THREADINFOCLASS;
typedef ULONG PROCESSINFOCLASS;
struct _KPROCESS; struct _KPROCESS;

View file

@ -1428,7 +1428,7 @@ NtIsProcessInJob(
NTSTATUS NTSTATUS
STDCALL STDCALL
NtMakePermanentObject( NtMakePermanentObject(
IN HANDLE Object IN HANDLE ObjectHandle
); );
NTSTATUS NTSTATUS

View file

@ -1,4 +1,4 @@
/* $Id: rtl.h,v 1.36 2004/10/23 23:43:23 ion Exp $ /* $Id: rtl.h,v 1.37 2004/10/24 20:37:25 weiden Exp $
* *
*/ */
#ifndef __DDK_RTL_H #ifndef __DDK_RTL_H
@ -1535,10 +1535,10 @@ NTSTATUS
STDCALL STDCALL
RtlInitializeContext ( RtlInitializeContext (
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
IN PCONTEXT Context, OUT PCONTEXT ThreadContext,
IN PVOID Parameter, IN PVOID ThreadStartParam OPTIONAL,
IN PTHREAD_START_ROUTINE StartAddress, IN PTHREAD_START_ROUTINE ThreadStartAddress,
IN OUT PUSER_STACK UserStack IN PINITIAL_TEB InitialTeb
); );
VOID VOID

View file

@ -1,4 +1,4 @@
/* $Id: rtltypes.h,v 1.15 2004/08/05 18:17:36 ion Exp $ /* $Id: rtltypes.h,v 1.16 2004/10/24 20:37:26 weiden Exp $
* *
*/ */
@ -189,14 +189,14 @@ typedef struct _RANGE_LIST_ITERATOR
} RTL_RANGE_LIST_ITERATOR, *PRTL_RANGE_LIST_ITERATOR; } RTL_RANGE_LIST_ITERATOR, *PRTL_RANGE_LIST_ITERATOR;
typedef struct _USER_STACK typedef struct _INITIAL_TEB
{ {
PVOID FixedStackBase; PVOID StackBase;
PVOID FixedStackLimit; PVOID StackLimit;
PVOID ExpandableStackBase; PVOID StackCommit;
PVOID ExpandableStackLimit; PVOID StackCommitMax;
PVOID ExpandableStackBottom; PVOID StackReserved;
} USER_STACK, *PUSER_STACK; } INITIAL_TEB, *PINITIAL_TEB;
#else /* __USE_W32API */ #else /* __USE_W32API */

View file

@ -1,5 +1,5 @@
/* $Id: zw.h,v 1.33 2004/10/24 17:14:26 weiden Exp $ /* $Id: zw.h,v 1.34 2004/10/24 20:37:26 weiden Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -997,19 +997,19 @@ ZwCreateSemaphore(
NTSTATUS NTSTATUS
STDCALL STDCALL
NtCreateSymbolicLinkObject( NtCreateSymbolicLinkObject(
OUT PHANDLE SymbolicLinkHandle, OUT PHANDLE LinkHandle,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes, IN POBJECT_ATTRIBUTES ObjectAttributes,
IN PUNICODE_STRING Name IN PUNICODE_STRING LinkTarget
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwCreateSymbolicLinkObject( ZwCreateSymbolicLinkObject(
OUT PHANDLE SymbolicLinkHandle, OUT PHANDLE LinkHandle,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes, IN POBJECT_ATTRIBUTES ObjectAttributes,
IN PUNICODE_STRING Name IN PUNICODE_STRING LinkTarget
); );
/* /*
@ -1532,7 +1532,7 @@ ZwFsControlFile(
* FUNCTION: Retrieves the processor context of a thread * FUNCTION: Retrieves the processor context of a thread
* ARGUMENTS: * ARGUMENTS:
* ThreadHandle = Handle to a thread * ThreadHandle = Handle to a thread
* Context (OUT) = Caller allocated storage for the processor context * ThreadContext (OUT) = Caller allocated storage for the processor context
* RETURNS: Status * RETURNS: Status
*/ */
@ -1540,14 +1540,14 @@ NTSTATUS
STDCALL STDCALL
NtGetContextThread( NtGetContextThread(
IN HANDLE ThreadHandle, IN HANDLE ThreadHandle,
OUT PCONTEXT Context OUT PCONTEXT ThreadContext
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwGetContextThread( ZwGetContextThread(
IN HANDLE ThreadHandle, IN HANDLE ThreadHandle,
OUT PCONTEXT Context OUT PCONTEXT ThreadContext
); );
@ -1587,19 +1587,19 @@ ZwImpersonateThread(
NTSTATUS NTSTATUS
STDCALL STDCALL
NtInitiatePowerAction ( NtInitiatePowerAction (
POWER_ACTION SystemAction, IN POWER_ACTION SystemAction,
SYSTEM_POWER_STATE MinSystemState, IN SYSTEM_POWER_STATE MinSystemState,
ULONG Flags, IN ULONG Flags,
BOOLEAN Asynchronous IN BOOLEAN Asynchronous
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwInitiatePowerAction ( ZwInitiatePowerAction (
POWER_ACTION SystemAction, IN POWER_ACTION SystemAction,
SYSTEM_POWER_STATE MinSystemState, IN SYSTEM_POWER_STATE MinSystemState,
ULONG Flags, IN ULONG Flags,
BOOLEAN Asynchronous IN BOOLEAN Asynchronous
); );
/* /*
* FUNCTION: Initializes the registry. * FUNCTION: Initializes the registry.
@ -1722,25 +1722,25 @@ ZwLockFile(
NTSTATUS NTSTATUS
STDCALL STDCALL
NtMakePermanentObject( NtMakePermanentObject(
IN HANDLE Object IN HANDLE ObjectHandle
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwMakePermanentObject( ZwMakePermanentObject(
IN HANDLE Object IN HANDLE ObjectHandle
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
NtMakeTemporaryObject( NtMakeTemporaryObject(
IN HANDLE Handle IN HANDLE ObjectHandle
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwMakeTemporaryObject( ZwMakeTemporaryObject(
IN HANDLE Handle IN HANDLE ObjectHandle
); );
/* /*
* FUNCTION: Maps a view of a section into the virtual address space of a * FUNCTION: Maps a view of a section into the virtual address space of a
@ -2228,14 +2228,14 @@ ZwOpenSemaphore(
NTSTATUS NTSTATUS
STDCALL STDCALL
NtOpenSymbolicLinkObject( NtOpenSymbolicLinkObject(
OUT PHANDLE SymbolicLinkHandle, OUT PHANDLE LinkHandle,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes IN POBJECT_ATTRIBUTES ObjectAttributes
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwOpenSymbolicLinkObject( ZwOpenSymbolicLinkObject(
OUT PHANDLE SymbolicLinkHandle, OUT PHANDLE LinkHandle,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes IN POBJECT_ATTRIBUTES ObjectAttributes
); );
@ -2342,21 +2342,21 @@ ZwOpenTimer(
NTSTATUS NTSTATUS
STDCALL STDCALL
NtPowerInformation( NtPowerInformation(
POWER_INFORMATION_LEVEL PowerInformationLevel, IN POWER_INFORMATION_LEVEL PowerInformationLevel,
PVOID InputBuffer, IN PVOID InputBuffer OPTIONAL,
ULONG InputBufferLength, IN ULONG InputBufferLength,
PVOID OutputBuffer, OUT PVOID OutputBuffer OPTIONAL,
ULONG OutputBufferLength IN ULONG OutputBufferLength
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwPowerInformation( ZwPowerInformation(
POWER_INFORMATION_LEVEL PowerInformationLevel, IN POWER_INFORMATION_LEVEL PowerInformationLevel,
PVOID InputBuffer, IN PVOID InputBuffer OPTIONAL,
ULONG InputBufferLength, IN ULONG InputBufferLength,
PVOID OutputBuffer, OUT PVOID OutputBuffer OPTIONAL,
ULONG OutputBufferLength IN ULONG OutputBufferLength
); );
NTSTATUS NTSTATUS
@ -2834,17 +2834,17 @@ NtQueryInformationThread(
IN THREADINFOCLASS ThreadInformationClass, IN THREADINFOCLASS ThreadInformationClass,
OUT PVOID ThreadInformation, OUT PVOID ThreadInformation,
IN ULONG ThreadInformationLength, IN ULONG ThreadInformationLength,
OUT PULONG ReturnLength OUT PULONG ReturnLength OPTIONAL
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwQueryInformationThread( ZwQueryInformationThread(
IN HANDLE ThreadHandle, IN HANDLE ThreadHandle,
IN THREADINFOCLASS ThreadInformationClass, IN THREADINFOCLASS ThreadInformationClass,
OUT PVOID ThreadInformation, OUT PVOID ThreadInformation,
IN ULONG ThreadInformationLength, IN ULONG ThreadInformationLength,
OUT PULONG ReturnLength OUT PULONG ReturnLength OPTIONAL
); );
@ -3081,17 +3081,17 @@ ZwQuerySemaphore(
NTSTATUS NTSTATUS
STDCALL STDCALL
NtQuerySymbolicLinkObject( NtQuerySymbolicLinkObject(
IN HANDLE SymLinkObjHandle, IN HANDLE LinkHandle,
OUT PUNICODE_STRING LinkTarget, OUT PUNICODE_STRING LinkTarget,
OUT PULONG DataWritten OPTIONAL OUT PULONG ResultLength OPTIONAL
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwQuerySymbolicLinkObject( ZwQuerySymbolicLinkObject(
IN HANDLE SymLinkObjHandle, IN HANDLE LinkHandle,
OUT PUNICODE_STRING LinkName, OUT PUNICODE_STRING LinkTarget,
OUT PULONG DataWritten OPTIONAL OUT PULONG ResultLength OPTIONAL
); );
@ -3500,12 +3500,12 @@ ZwReadVirtualMemory(
NTSTATUS NTSTATUS
STDCALL STDCALL
NtRegisterThreadTerminatePort( NtRegisterThreadTerminatePort(
HANDLE TerminationPort HANDLE PortHandle
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwRegisterThreadTerminatePort( ZwRegisterThreadTerminatePort(
HANDLE TerminationPort HANDLE PortHandle
); );
/* /*
@ -3706,13 +3706,13 @@ NTSTATUS
STDCALL STDCALL
NtResumeThread( NtResumeThread(
IN HANDLE ThreadHandle, IN HANDLE ThreadHandle,
OUT PULONG SuspendCount OUT PULONG SuspendCount OPTIONAL
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwResumeThread( ZwResumeThread(
IN HANDLE ThreadHandle, IN HANDLE ThreadHandle,
OUT PULONG SuspendCount OUT PULONG SuspendCount OPTIONAL
); );
/* /*
* FUNCTION: Writes the content of a registry key to ascii file * FUNCTION: Writes the content of a registry key to ascii file
@ -3786,7 +3786,7 @@ ZwSetBootOptions(
* FUNCTION: Sets the context of a specified thread. * FUNCTION: Sets the context of a specified thread.
* ARGUMENTS: * ARGUMENTS:
* ThreadHandle = Handle to the thread * ThreadHandle = Handle to the thread
* Context = The processor context. * ThreadContext = The processor context.
* RETURNS: Status * RETURNS: Status
*/ */
@ -3794,13 +3794,13 @@ NTSTATUS
STDCALL STDCALL
NtSetContextThread( NtSetContextThread(
IN HANDLE ThreadHandle, IN HANDLE ThreadHandle,
IN PCONTEXT Context IN PCONTEXT ThreadContext
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwSetContextThread( ZwSetContextThread(
IN HANDLE ThreadHandle, IN HANDLE ThreadHandle,
IN PCONTEXT Context IN PCONTEXT ThreadContext
); );
/* /*
@ -4501,13 +4501,13 @@ ZwStopProfile(
NTSTATUS NTSTATUS
STDCALL STDCALL
NtTerminateProcess( NtTerminateProcess(
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle OPTIONAL,
IN NTSTATUS ExitStatus IN NTSTATUS ExitStatus
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwTerminateProcess( ZwTerminateProcess(
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle OPTIONAL,
IN NTSTATUS ExitStatus IN NTSTATUS ExitStatus
); );
@ -4870,14 +4870,14 @@ NTSTATUS
STDCALL STDCALL
NtSuspendThread( NtSuspendThread(
IN HANDLE ThreadHandle, IN HANDLE ThreadHandle,
IN PULONG PreviousSuspendCount OUT PULONG PreviousSuspendCount OPTIONAL
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwSuspendThread( ZwSuspendThread(
IN HANDLE ThreadHandle, IN HANDLE ThreadHandle,
IN PULONG PreviousSuspendCount OUT PULONG PreviousSuspendCount OPTIONAL
); );
/* /*
@ -5226,7 +5226,7 @@ NtCreateThread(
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
OUT PCLIENT_ID ClientId, OUT PCLIENT_ID ClientId,
IN PCONTEXT ThreadContext, IN PCONTEXT ThreadContext,
IN PUSER_STACK UserStack, IN PINITIAL_TEB InitialTeb,
IN BOOLEAN CreateSuspended IN BOOLEAN CreateSuspended
); );
@ -5827,7 +5827,7 @@ ZwCreateThread(
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
OUT PCLIENT_ID ClientId, OUT PCLIENT_ID ClientId,
IN PCONTEXT ThreadContext, IN PCONTEXT ThreadContext,
IN PUSER_STACK UserStack, IN PINITIAL_TEB InitialTeb,
IN BOOLEAN CreateSuspended IN BOOLEAN CreateSuspended
); );
@ -6098,20 +6098,20 @@ NTSTATUS
STDCALL STDCALL
NtQueryInformationProcess( NtQueryInformationProcess(
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
IN CINT ProcessInformationClass, IN PROCESSINFOCLASS ProcessInformationClass,
OUT PVOID ProcessInformation, OUT PVOID ProcessInformation,
IN ULONG ProcessInformationLength, IN ULONG ProcessInformationLength,
OUT PULONG ReturnLength OUT PULONG ReturnLength OPTIONAL
); );
NTSTATUS NTSTATUS
STDCALL STDCALL
ZwQueryInformationProcess( ZwQueryInformationProcess(
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
IN CINT ProcessInformationClass, IN PROCESSINFOCLASS ProcessInformationClass,
OUT PVOID ProcessInformation, OUT PVOID ProcessInformation,
IN ULONG ProcessInformationLength, IN ULONG ProcessInformationLength,
OUT PULONG ReturnLength OUT PULONG ReturnLength OPTIONAL
); );
/* /*
@ -6152,7 +6152,7 @@ ZwQueryObject(
IN OBJECT_INFORMATION_CLASS ObjectInformationClass, IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
OUT PVOID ObjectInformation, OUT PVOID ObjectInformation,
IN ULONG Length, IN ULONG Length,
OUT PULONG ResultLength OPTIONAL OUT PULONG ResultLength OPTIONAL
); );
NTSTATUS NTSTATUS
@ -6295,7 +6295,7 @@ NTSTATUS
STDCALL STDCALL
NtSetInformationProcess( NtSetInformationProcess(
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
IN CINT ProcessInformationClass, IN PROCESSINFOCLASS ProcessInformationClass,
IN PVOID ProcessInformation, IN PVOID ProcessInformation,
IN ULONG ProcessInformationLength IN ULONG ProcessInformationLength
); );
@ -6304,7 +6304,7 @@ NTSTATUS
STDCALL STDCALL
ZwSetInformationProcess( ZwSetInformationProcess(
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
IN CINT ProcessInformationClass, IN PROCESSINFOCLASS ProcessInformationClass,
IN PVOID ProcessInformation, IN PVOID ProcessInformation,
IN ULONG ProcessInformationLength IN ULONG ProcessInformationLength
); );
@ -6553,7 +6553,7 @@ NtQueryObject(
IN OBJECT_INFORMATION_CLASS ObjectInformationClass, IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
OUT PVOID ObjectInformation, OUT PVOID ObjectInformation,
IN ULONG Length, IN ULONG Length,
OUT PULONG ResultLength OPTIONAL OUT PULONG ResultLength OPTIONAL
); );
/* BEGIN REACTOS ONLY */ /* BEGIN REACTOS ONLY */

View file

@ -1,4 +1,4 @@
/* $Id: thread.h,v 1.4 2003/12/30 05:10:31 hyperion Exp $ /* $Id: thread.h,v 1.5 2004/10/24 20:37:26 weiden Exp $
*/ */
#ifdef __cplusplus #ifdef __cplusplus
@ -44,17 +44,17 @@ __declspec(noreturn) VOID NTAPI RtlRosExitUserThread
NTSTATUS NTAPI RtlRosInitializeContext NTSTATUS NTAPI RtlRosInitializeContext
( (
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
OUT PCONTEXT Context, OUT PCONTEXT ThreadContext,
IN PVOID StartAddress, IN PVOID ThreadStartAddress,
IN PUSER_STACK UserStack, IN PINITIAL_TEB InitialTeb,
IN ULONG ParameterCount, IN ULONG ParameterCount,
IN ULONG_PTR * Parameters IN ULONG_PTR *Parameters
); );
NTSTATUS NTAPI RtlRosCreateStack NTSTATUS NTAPI RtlRosCreateStack
( (
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
OUT PUSER_STACK UserStack, OUT PINITIAL_TEB InitialTeb,
IN LONG StackZeroBits, IN LONG StackZeroBits,
IN OUT PULONG StackReserve OPTIONAL, IN OUT PULONG StackReserve OPTIONAL,
IN OUT PULONG StackCommit OPTIONAL IN OUT PULONG StackCommit OPTIONAL
@ -63,7 +63,7 @@ NTSTATUS NTAPI RtlRosCreateStack
NTSTATUS NTAPI RtlRosDeleteStack NTSTATUS NTAPI RtlRosDeleteStack
( (
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
IN PUSER_STACK UserStack IN PINITIAL_TEB InitialTeb
); );
NTSTATUS NTAPI RtlRosFreeUserThreadStack NTSTATUS NTAPI RtlRosFreeUserThreadStack
@ -83,7 +83,7 @@ NTSTATUS NTAPI RtlRosSwitchStackForExit
/* Private functions - for ROSRTL internal use only */ /* Private functions - for ROSRTL internal use only */
NTSTATUS NTAPI RtlpRosGetStackLimits NTSTATUS NTAPI RtlpRosGetStackLimits
( (
IN PUSER_STACK UserStack, IN PINITIAL_TEB InitialTeb,
OUT PVOID * StackBase, OUT PVOID * StackBase,
OUT PVOID * StackLimit OUT PVOID * StackLimit
); );

View file

@ -1,4 +1,4 @@
/* $Id: fiber.c,v 1.11 2004/06/13 20:04:56 navaraf Exp $ /* $Id: fiber.c,v 1.12 2004/10/24 20:37:26 weiden Exp $
* *
* FILE: lib/kernel32/thread/fiber.c * FILE: lib/kernel32/thread/fiber.c
* *
@ -146,7 +146,7 @@ LPVOID WINAPI CreateFiberEx
NTSTATUS nErrCode; NTSTATUS nErrCode;
PSIZE_T pnStackReserve = NULL; PSIZE_T pnStackReserve = NULL;
PSIZE_T pnStackCommit = NULL; PSIZE_T pnStackCommit = NULL;
USER_STACK usFiberStack; INITIAL_TEB usFiberInitialTeb;
CONTEXT ctxFiberContext; CONTEXT ctxFiberContext;
PTEB pTeb = NtCurrentTeb(); PTEB pTeb = NtCurrentTeb();
@ -168,7 +168,7 @@ LPVOID WINAPI CreateFiberEx
nErrCode = RtlRosCreateStack nErrCode = RtlRosCreateStack
( (
NtCurrentProcess(), NtCurrentProcess(),
&usFiberStack, &usFiberInitialTeb,
0, 0,
pnStackReserve, pnStackReserve,
pnStackCommit pnStackCommit
@ -183,7 +183,7 @@ LPVOID WINAPI CreateFiberEx
NtCurrentProcess(), NtCurrentProcess(),
&ctxFiberContext, &ctxFiberContext,
FiberStartup, FiberStartup,
&usFiberStack, &usFiberInitialTeb,
1, 1,
(ULONG_PTR *)&lpStartAddress (ULONG_PTR *)&lpStartAddress
); );
@ -194,23 +194,23 @@ LPVOID WINAPI CreateFiberEx
/* copy the data into the fiber */ /* copy the data into the fiber */
/* fixed-size stack */ /* fixed-size stack */
if(usFiberStack.FixedStackBase && usFiberStack.FixedStackLimit) if(usFiberInitialTeb.StackBase && usFiberInitialTeb.StackLimit)
{ {
pfCurFiber->StackBase = usFiberStack.FixedStackBase; pfCurFiber->StackBase = usFiberInitialTeb.StackBase;
pfCurFiber->StackLimit = usFiberStack.FixedStackLimit; pfCurFiber->StackLimit = usFiberInitialTeb.StackLimit;
pfCurFiber->DeallocationStack = usFiberStack.FixedStackLimit; pfCurFiber->DeallocationStack = usFiberInitialTeb.StackLimit;
} }
/* expandable stack */ /* expandable stack */
else if else if
( (
usFiberStack.ExpandableStackBase && usFiberInitialTeb.StackCommit &&
usFiberStack.ExpandableStackLimit && usFiberInitialTeb.StackCommitMax &&
usFiberStack.ExpandableStackBottom usFiberInitialTeb.StackReserved
) )
{ {
pfCurFiber->StackBase = usFiberStack.ExpandableStackBase; pfCurFiber->StackBase = usFiberInitialTeb.StackCommit;
pfCurFiber->StackLimit = usFiberStack.ExpandableStackLimit; pfCurFiber->StackLimit = usFiberInitialTeb.StackCommitMax;
pfCurFiber->DeallocationStack = usFiberStack.ExpandableStackBottom; pfCurFiber->DeallocationStack = usFiberInitialTeb.StackReserved;
} }
/* bad initial stack */ /* bad initial stack */
else goto l_CleanupStack; else goto l_CleanupStack;
@ -239,7 +239,7 @@ LPVOID WINAPI CreateFiberEx
l_CleanupStack: l_CleanupStack:
/* free the stack */ /* free the stack */
RtlRosDeleteStack(NtCurrentProcess(), &usFiberStack); RtlRosDeleteStack(NtCurrentProcess(), &usFiberInitialTeb);
l_CleanupFiber: l_CleanupFiber:
/* free the fiber */ /* free the fiber */

View file

@ -73,23 +73,22 @@ NTSTATUS STDCALL RtlCreateUserThread
/* /*
@implemented @implemented
*/ */
NTSTATUS STDCALL RtlInitializeContext NTSTATUS STDCALL
( RtlInitializeContext(
HANDLE ProcessHandle, IN HANDLE ProcessHandle,
PCONTEXT Context, OUT PCONTEXT ThreadContext,
PVOID Parameter, IN PVOID ThreadStartParam OPTIONAL,
PTHREAD_START_ROUTINE StartAddress, IN PTHREAD_START_ROUTINE ThreadStartAddress,
PUSER_STACK UserStack IN PINITIAL_TEB InitialTeb)
)
{ {
return RtlRosInitializeContext return RtlRosInitializeContext
( (
ProcessHandle, ProcessHandle,
Context, ThreadContext,
StartAddress, ThreadStartAddress,
UserStack, InitialTeb,
1, 1,
(ULONG_PTR *)&Parameter (ULONG_PTR *)&ThreadStartParam
); );
} }

View file

@ -1,4 +1,4 @@
/* $Id: create.c,v 1.6 2004/03/02 17:16:04 navaraf Exp $ /* $Id: create.c,v 1.7 2004/10/24 20:37:26 weiden Exp $
*/ */
/* /*
*/ */
@ -28,7 +28,7 @@ RtlRosCreateUserThread
IN ULONG_PTR * Parameters IN ULONG_PTR * Parameters
) )
{ {
USER_STACK usUserStack; INITIAL_TEB usUserInitialTeb;
CONTEXT ctxInitialContext; CONTEXT ctxInitialContext;
NTSTATUS nErrCode; NTSTATUS nErrCode;
HANDLE hThread; HANDLE hThread;
@ -41,7 +41,7 @@ RtlRosCreateUserThread
nErrCode = RtlRosCreateStack nErrCode = RtlRosCreateStack
( (
ProcessHandle, ProcessHandle,
&usUserStack, &usUserInitialTeb,
StackZeroBits, StackZeroBits,
StackReserve, StackReserve,
StackCommit StackCommit
@ -56,7 +56,7 @@ RtlRosCreateUserThread
ProcessHandle, ProcessHandle,
&ctxInitialContext, &ctxInitialContext,
StartAddress, StartAddress,
&usUserStack, &usUserInitialTeb,
ParameterCount, ParameterCount,
Parameters Parameters
); );
@ -73,7 +73,7 @@ RtlRosCreateUserThread
ProcessHandle, ProcessHandle,
ClientId, ClientId,
&ctxInitialContext, &ctxInitialContext,
&usUserStack, &usUserInitialTeb,
CreateSuspended CreateSuspended
); );
@ -88,7 +88,7 @@ l_Fail:
ASSERT(!NT_SUCCESS(nErrCode)); ASSERT(!NT_SUCCESS(nErrCode));
/* deallocate the stack */ /* deallocate the stack */
RtlRosDeleteStack(ProcessHandle, &usUserStack); RtlRosDeleteStack(ProcessHandle, &usUserInitialTeb);
return nErrCode; return nErrCode;
} }

View file

@ -1,4 +1,4 @@
/* $Id: context.c,v 1.2 2003/08/07 03:35:06 royce Exp $ /* $Id: context.c,v 1.3 2004/10/24 20:37:26 weiden Exp $
*/ */
/* /*
*/ */
@ -19,7 +19,7 @@ RtlRosInitializeContext
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
OUT PCONTEXT Context, OUT PCONTEXT Context,
IN PVOID StartAddress, IN PVOID StartAddress,
IN PUSER_STACK UserStack, IN PINITIAL_TEB InitialTeb,
IN ULONG ParameterCount, IN ULONG ParameterCount,
IN ULONG_PTR * Parameters IN ULONG_PTR * Parameters
) )
@ -34,7 +34,7 @@ RtlRosInitializeContext
/* Intel x86: linear top-down stack, all parameters passed on the stack */ /* Intel x86: linear top-down stack, all parameters passed on the stack */
/* get the stack base and limit */ /* get the stack base and limit */
nErrCode = RtlpRosGetStackLimits(UserStack, &pStackBase, &pStackLimit); nErrCode = RtlpRosGetStackLimits(InitialTeb, &pStackBase, &pStackLimit);
/* failure */ /* failure */
if(!NT_SUCCESS(nErrCode)) return nErrCode; if(!NT_SUCCESS(nErrCode)) return nErrCode;

View file

@ -1,4 +1,4 @@
/* $Id: stack.c,v 1.6 2004/03/02 17:16:04 navaraf Exp $ /* $Id: stack.c,v 1.7 2004/10/24 20:37:26 weiden Exp $
*/ */
/* /*
*/ */
@ -14,7 +14,7 @@
NTSTATUS NTAPI RtlRosCreateStack NTSTATUS NTAPI RtlRosCreateStack
( (
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
OUT PUSER_STACK UserStack, OUT PINITIAL_TEB InitialTeb,
IN LONG StackZeroBits, IN LONG StackZeroBits,
IN OUT PULONG StackReserve OPTIONAL, IN OUT PULONG StackReserve OPTIONAL,
IN OUT PULONG StackCommit OPTIONAL IN OUT PULONG StackCommit OPTIONAL
@ -44,17 +44,17 @@ NTSTATUS NTAPI RtlRosCreateStack
/* fixed stack */ /* fixed stack */
if(*StackCommit == *StackReserve) if(*StackCommit == *StackReserve)
{ {
UserStack->ExpandableStackBase = NULL; InitialTeb->StackCommit = NULL;
UserStack->ExpandableStackLimit = NULL; InitialTeb->StackCommitMax = NULL;
UserStack->ExpandableStackBottom = NULL; InitialTeb->StackReserved = NULL;
UserStack->FixedStackLimit = NULL; InitialTeb->StackLimit = NULL;
/* allocate the stack */ /* allocate the stack */
nErrCode = NtAllocateVirtualMemory nErrCode = NtAllocateVirtualMemory
( (
ProcessHandle, ProcessHandle,
&(UserStack->FixedStackLimit), &(InitialTeb->StackLimit),
StackZeroBits, StackZeroBits,
StackReserve, StackReserve,
MEM_RESERVE | MEM_COMMIT, MEM_RESERVE | MEM_COMMIT,
@ -65,8 +65,8 @@ NTSTATUS NTAPI RtlRosCreateStack
if(!NT_SUCCESS(nErrCode)) goto l_Fail; if(!NT_SUCCESS(nErrCode)) goto l_Fail;
/* store the highest (first) address of the stack */ /* store the highest (first) address of the stack */
UserStack->FixedStackBase = InitialTeb->StackBase =
(PUCHAR)(UserStack->FixedStackLimit) + *StackReserve; (PUCHAR)(InitialTeb->StackLimit) + *StackReserve;
*StackCommit = *StackReserve; *StackCommit = *StackReserve;
} }
@ -78,16 +78,16 @@ NTSTATUS NTAPI RtlRosCreateStack
DPRINT("Expandable stack\n"); DPRINT("Expandable stack\n");
UserStack->FixedStackBase = NULL; InitialTeb->StackBase = NULL;
UserStack->FixedStackLimit = NULL; InitialTeb->StackLimit = NULL;
UserStack->ExpandableStackBottom = NULL; InitialTeb->StackReserved = NULL;
/* reserve the stack */ /* reserve the stack */
nErrCode = NtAllocateVirtualMemory nErrCode = NtAllocateVirtualMemory
( (
ProcessHandle, ProcessHandle,
&(UserStack->ExpandableStackBottom), &(InitialTeb->StackReserved),
StackZeroBits, StackZeroBits,
StackReserve, StackReserve,
MEM_RESERVE, MEM_RESERVE,
@ -100,22 +100,22 @@ NTSTATUS NTAPI RtlRosCreateStack
DPRINT("Reserved %08X bytes\n", *StackReserve); DPRINT("Reserved %08X bytes\n", *StackReserve);
/* expandable stack base - the highest address of the stack */ /* expandable stack base - the highest address of the stack */
UserStack->ExpandableStackBase = InitialTeb->StackCommit =
(PUCHAR)(UserStack->ExpandableStackBottom) + *StackReserve; (PUCHAR)(InitialTeb->StackReserved) + *StackReserve;
/* expandable stack limit - the lowest committed address of the stack */ /* expandable stack limit - the lowest committed address of the stack */
UserStack->ExpandableStackLimit = InitialTeb->StackCommitMax =
(PUCHAR)(UserStack->ExpandableStackBase) - *StackCommit; (PUCHAR)(InitialTeb->StackCommit) - *StackCommit;
DPRINT("Stack base %p\n", UserStack->ExpandableStackBase); DPRINT("Stack commit %p\n", InitialTeb->StackCommit);
DPRINT("Stack limit %p\n", UserStack->ExpandableStackLimit); DPRINT("Stack commit max %p\n", InitialTeb->StackCommitMax);
DPRINT("Stack bottom %p\n", UserStack->ExpandableStackBottom); DPRINT("Stack reserved %p\n", InitialTeb->StackReserved);
/* commit as much stack as requested */ /* commit as much stack as requested */
nErrCode = NtAllocateVirtualMemory nErrCode = NtAllocateVirtualMemory
( (
ProcessHandle, ProcessHandle,
&(UserStack->ExpandableStackLimit), &(InitialTeb->StackCommitMax),
0, 0,
StackCommit, StackCommit,
MEM_COMMIT, MEM_COMMIT,
@ -128,9 +128,9 @@ NTSTATUS NTAPI RtlRosCreateStack
ASSERT((*StackReserve - *StackCommit) >= PAGE_SIZE); ASSERT((*StackReserve - *StackCommit) >= PAGE_SIZE);
ASSERT((*StackReserve - *StackCommit) % PAGE_SIZE == 0); ASSERT((*StackReserve - *StackCommit) % PAGE_SIZE == 0);
pGuardBase = (PUCHAR)(UserStack->ExpandableStackLimit) - PAGE_SIZE; pGuardBase = (PUCHAR)(InitialTeb->StackCommitMax) - PAGE_SIZE;
DPRINT("Guard base %p\n", UserStack->ExpandableStackBase); DPRINT("Guard base %p\n", InitialTeb->StackCommit);
/* set up the guard page */ /* set up the guard page */
nErrCode = NtAllocateVirtualMemory nErrCode = NtAllocateVirtualMemory
@ -146,7 +146,7 @@ NTSTATUS NTAPI RtlRosCreateStack
/* failure */ /* failure */
if(!NT_SUCCESS(nErrCode)) goto l_Cleanup; if(!NT_SUCCESS(nErrCode)) goto l_Cleanup;
DPRINT("Guard base %p\n", UserStack->ExpandableStackBase); DPRINT("Guard base %p\n", InitialTeb->StackCommit);
} }
@ -155,7 +155,7 @@ NTSTATUS NTAPI RtlRosCreateStack
/* deallocate the stack */ /* deallocate the stack */
l_Cleanup: l_Cleanup:
RtlRosDeleteStack(ProcessHandle, UserStack); RtlRosDeleteStack(ProcessHandle, InitialTeb);
/* failure */ /* failure */
l_Fail: l_Fail:
@ -166,16 +166,16 @@ l_Fail:
NTSTATUS NTAPI RtlRosDeleteStack NTSTATUS NTAPI RtlRosDeleteStack
( (
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
IN PUSER_STACK UserStack IN PINITIAL_TEB InitialTeb
) )
{ {
PVOID pStackLowest = NULL; PVOID pStackLowest = NULL;
ULONG_PTR nSize; ULONG_PTR nSize;
if(UserStack->FixedStackLimit) if(InitialTeb->StackLimit)
pStackLowest = UserStack->FixedStackLimit; pStackLowest = InitialTeb->StackLimit;
else if(UserStack->ExpandableStackBottom) else if(InitialTeb->StackReserved)
pStackLowest = UserStack->ExpandableStackBottom; pStackLowest = InitialTeb->StackReserved;
/* free the stack, if it was allocated */ /* free the stack, if it was allocated */
if(pStackLowest != NULL) if(pStackLowest != NULL)
@ -238,22 +238,22 @@ NTSTATUS NTAPI RtlRosFreeUserThreadStack
NTSTATUS NTAPI RtlpRosGetStackLimits NTSTATUS NTAPI RtlpRosGetStackLimits
( (
IN PUSER_STACK UserStack, IN PINITIAL_TEB InitialTeb,
OUT PVOID * StackBase, OUT PVOID * StackBase,
OUT PVOID * StackLimit OUT PVOID * StackLimit
) )
{ {
/* fixed-size stack */ /* fixed-size stack */
if(UserStack->FixedStackBase && UserStack->FixedStackLimit) if(InitialTeb->StackBase && InitialTeb->StackLimit)
{ {
*StackBase = UserStack->FixedStackBase; *StackBase = InitialTeb->StackBase;
*StackLimit = UserStack->FixedStackLimit; *StackLimit = InitialTeb->StackLimit;
} }
/* expandable stack */ /* expandable stack */
else if(UserStack->ExpandableStackBase && UserStack->ExpandableStackLimit) else if(InitialTeb->StackCommit && InitialTeb->StackCommitMax)
{ {
*StackBase = UserStack->ExpandableStackBase; *StackBase = InitialTeb->StackCommit;
*StackLimit = UserStack->ExpandableStackLimit; *StackLimit = InitialTeb->StackCommitMax;
} }
/* can't determine the type of stack: failure */ /* can't determine the type of stack: failure */
else else

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/* $Id: init.c,v 1.47 2004/09/25 06:41:16 arty Exp $ /* $Id: init.c,v 1.48 2004/10/24 20:37:26 weiden Exp $
* *
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
* FILE: ntoskrnl/ldr/init.c * FILE: ntoskrnl/ldr/init.c
@ -230,7 +230,7 @@ LdrpCreateProcessEnvironment(HANDLE ProcessHandle,
static NTSTATUS LdrpCreateStack static NTSTATUS LdrpCreateStack
( (
HANDLE ProcessHandle, HANDLE ProcessHandle,
PUSER_STACK UserStack, PINITIAL_TEB InitialTeb,
PULONG_PTR StackReserve, PULONG_PTR StackReserve,
PULONG_PTR StackCommit PULONG_PTR StackCommit
) )
@ -245,11 +245,11 @@ static NTSTATUS LdrpCreateStack
/* FIXME: no SEH, no guard pages */ /* FIXME: no SEH, no guard pages */
*StackCommit = *StackReserve; *StackCommit = *StackReserve;
UserStack->FixedStackBase = NULL; InitialTeb->StackBase = NULL;
UserStack->FixedStackLimit = NULL; InitialTeb->StackLimit = NULL;
UserStack->ExpandableStackBase = NULL; InitialTeb->StackCommit = NULL;
UserStack->ExpandableStackLimit = NULL; InitialTeb->StackCommitMax = NULL;
UserStack->ExpandableStackBottom = NULL; InitialTeb->StackReserved = NULL;
/* FIXME: this code assumes a stack growing downwards */ /* FIXME: this code assumes a stack growing downwards */
/* fixed stack */ /* fixed stack */
@ -257,13 +257,13 @@ static NTSTATUS LdrpCreateStack
{ {
DPRINT("Fixed stack\n"); DPRINT("Fixed stack\n");
UserStack->FixedStackLimit = NULL; InitialTeb->StackLimit = NULL;
/* allocate the stack */ /* allocate the stack */
nErrCode = NtAllocateVirtualMemory nErrCode = NtAllocateVirtualMemory
( (
ProcessHandle, ProcessHandle,
&(UserStack->FixedStackLimit), &(InitialTeb->StackLimit),
0, 0,
StackReserve, StackReserve,
MEM_RESERVE | MEM_COMMIT, MEM_RESERVE | MEM_COMMIT,
@ -274,8 +274,8 @@ static NTSTATUS LdrpCreateStack
if(!NT_SUCCESS(nErrCode)) return nErrCode; if(!NT_SUCCESS(nErrCode)) return nErrCode;
/* store the highest (first) address of the stack */ /* store the highest (first) address of the stack */
UserStack->FixedStackBase = InitialTeb->StackBase =
(PUCHAR)(UserStack->FixedStackLimit) + *StackReserve; (PUCHAR)(InitialTeb->StackLimit) + *StackReserve;
} }
/* expandable stack */ /* expandable stack */
else else
@ -285,15 +285,15 @@ static NTSTATUS LdrpCreateStack
DPRINT("Expandable stack\n"); DPRINT("Expandable stack\n");
UserStack->FixedStackLimit = NULL; InitialTeb->StackLimit = NULL;
UserStack->FixedStackBase = NULL; InitialTeb->StackBase = NULL;
UserStack->ExpandableStackBottom = NULL; InitialTeb->StackReserved = NULL;
/* reserve the stack */ /* reserve the stack */
nErrCode = NtAllocateVirtualMemory nErrCode = NtAllocateVirtualMemory
( (
ProcessHandle, ProcessHandle,
&(UserStack->ExpandableStackBottom), &(InitialTeb->StackReserved),
0, 0,
StackReserve, StackReserve,
MEM_RESERVE, MEM_RESERVE,
@ -306,21 +306,21 @@ static NTSTATUS LdrpCreateStack
DPRINT("Reserved %08X bytes\n", *StackReserve); DPRINT("Reserved %08X bytes\n", *StackReserve);
/* expandable stack base - the highest address of the stack */ /* expandable stack base - the highest address of the stack */
UserStack->ExpandableStackBase = InitialTeb->StackCommit =
(PUCHAR)(UserStack->ExpandableStackBottom) + *StackReserve; (PUCHAR)(InitialTeb->StackReserved) + *StackReserve;
/* expandable stack limit - the lowest committed address of the stack */ /* expandable stack limit - the lowest committed address of the stack */
UserStack->ExpandableStackLimit = InitialTeb->StackCommitMax =
(PUCHAR)(UserStack->ExpandableStackBase) - *StackCommit; (PUCHAR)(InitialTeb->StackCommit) - *StackCommit;
DPRINT("Stack base %p\n", UserStack->ExpandableStackBase); DPRINT("Stack commit %p\n", InitialTeb->StackCommit);
DPRINT("Stack limit %p\n", UserStack->ExpandableStackLimit); DPRINT("Stack commit max %p\n", InitialTeb->StackCommitMax);
/* commit as much stack as requested */ /* commit as much stack as requested */
nErrCode = NtAllocateVirtualMemory nErrCode = NtAllocateVirtualMemory
( (
ProcessHandle, ProcessHandle,
&(UserStack->ExpandableStackLimit), &(InitialTeb->StackCommitMax),
0, 0,
StackCommit, StackCommit,
MEM_COMMIT, MEM_COMMIT,
@ -330,11 +330,11 @@ static NTSTATUS LdrpCreateStack
/* failure */ /* failure */
if(!NT_SUCCESS(nErrCode)) goto l_Cleanup; if(!NT_SUCCESS(nErrCode)) goto l_Cleanup;
DPRINT("Stack limit %p\n", UserStack->ExpandableStackLimit); DPRINT("Stack commit max %p\n", InitialTeb->StackCommitMax);
pGuardBase = (PUCHAR)(UserStack->ExpandableStackLimit) - PAGE_SIZE; pGuardBase = (PUCHAR)(InitialTeb->StackCommitMax) - PAGE_SIZE;
DPRINT("Guard base %p\n", UserStack->ExpandableStackBase); DPRINT("Guard base %p\n", InitialTeb->StackCommit);
/* set up the guard page */ /* set up the guard page */
nErrCode = NtAllocateVirtualMemory nErrCode = NtAllocateVirtualMemory
@ -350,17 +350,17 @@ static NTSTATUS LdrpCreateStack
/* failure */ /* failure */
if(!NT_SUCCESS(nErrCode)) goto l_Cleanup; if(!NT_SUCCESS(nErrCode)) goto l_Cleanup;
DPRINT("Guard base %p\n", UserStack->ExpandableStackBase); DPRINT("Guard base %p\n", InitialTeb->StackCommit);
} }
return STATUS_SUCCESS; return STATUS_SUCCESS;
/* cleanup in case of failure */ /* cleanup in case of failure */
l_Cleanup: l_Cleanup:
if(UserStack->FixedStackLimit) if(InitialTeb->StackLimit)
pStackLowest = UserStack->FixedStackLimit; pStackLowest = InitialTeb->StackLimit;
else if(UserStack->ExpandableStackBottom) else if(InitialTeb->StackReserved)
pStackLowest = UserStack->ExpandableStackBottom; pStackLowest = InitialTeb->StackReserved;
/* free the stack, if it was allocated */ /* free the stack, if it was allocated */
if(pStackLowest != NULL) if(pStackLowest != NULL)
@ -378,7 +378,7 @@ LdrLoadInitialProcess(PHANDLE ProcessHandle,
UNICODE_STRING ImagePath; UNICODE_STRING ImagePath;
HANDLE SectionHandle; HANDLE SectionHandle;
CONTEXT Context; CONTEXT Context;
USER_STACK UserStack; INITIAL_TEB InitialTeb;
ULONG_PTR nStackReserve = 0; ULONG_PTR nStackReserve = 0;
ULONG_PTR nStackCommit = 0; ULONG_PTR nStackCommit = 0;
PVOID pStackLowest; PVOID pStackLowest;
@ -468,7 +468,7 @@ LdrLoadInitialProcess(PHANDLE ProcessHandle,
Status = LdrpCreateStack Status = LdrpCreateStack
( (
*ProcessHandle, *ProcessHandle,
&UserStack, &InitialTeb,
&nStackReserve, &nStackReserve,
&nStackCommit &nStackCommit
); );
@ -480,15 +480,15 @@ LdrLoadInitialProcess(PHANDLE ProcessHandle,
return(Status); return(Status);
} }
if(UserStack.FixedStackBase && UserStack.FixedStackLimit) if(InitialTeb.StackBase && InitialTeb.StackLimit)
{ {
pStackBase = UserStack.FixedStackBase; pStackBase = InitialTeb.StackBase;
pStackLowest = UserStack.FixedStackLimit; pStackLowest = InitialTeb.StackLimit;
} }
else else
{ {
pStackBase = UserStack.ExpandableStackBase; pStackBase = InitialTeb.StackCommit;
pStackLowest = UserStack.ExpandableStackBottom; pStackLowest = InitialTeb.StackReserved;
} }
DPRINT("pStackBase = %p\n", pStackBase); DPRINT("pStackBase = %p\n", pStackBase);
@ -549,7 +549,7 @@ LdrLoadInitialProcess(PHANDLE ProcessHandle,
*ProcessHandle, *ProcessHandle,
NULL, NULL,
&Context, &Context,
&UserStack, &InitialTeb,
FALSE); FALSE);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {

View file

@ -1,4 +1,4 @@
/* $Id: ntobj.c,v 1.23 2004/08/15 16:39:10 chorns Exp $ /* $Id: ntobj.c,v 1.24 2004/10/24 20:37:26 weiden Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -82,7 +82,7 @@ NtQueryObject (IN HANDLE ObjectHandle,
IN OBJECT_INFORMATION_CLASS ObjectInformationClass, IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
OUT PVOID ObjectInformation, OUT PVOID ObjectInformation,
IN ULONG Length, IN ULONG Length,
OUT PULONG ReturnLength OPTIONAL) OUT PULONG ResultLength OPTIONAL)
{ {
OBJECT_HANDLE_INFORMATION HandleInfo; OBJECT_HANDLE_INFORMATION HandleInfo;
POBJECT_HEADER ObjectHeader; POBJECT_HEADER ObjectHeader;
@ -199,8 +199,8 @@ NtQueryObject (IN HANDLE ObjectHandle,
ObDereferenceObject (Object); ObDereferenceObject (Object);
if (ReturnLength != NULL) if (ResultLength != NULL)
*ReturnLength = InfoLength; *ResultLength = InfoLength;
return Status; return Status;
} }
@ -243,13 +243,13 @@ ObMakeTemporaryObject(IN PVOID ObjectBody)
* REVISIONS * REVISIONS
*/ */
NTSTATUS STDCALL NTSTATUS STDCALL
NtMakeTemporaryObject(IN HANDLE Handle) NtMakeTemporaryObject(IN HANDLE ObjectHandle)
{ {
POBJECT_HEADER ObjectHeader; POBJECT_HEADER ObjectHeader;
PVOID Object; PVOID Object;
NTSTATUS Status; NTSTATUS Status;
Status = ObReferenceObjectByHandle(Handle, Status = ObReferenceObjectByHandle(ObjectHandle,
0, 0,
NULL, NULL,
(KPROCESSOR_MODE)KeGetPreviousMode(), (KPROCESSOR_MODE)KeGetPreviousMode(),
@ -284,13 +284,13 @@ NtMakeTemporaryObject(IN HANDLE Handle)
* @implemented * @implemented
*/ */
NTSTATUS STDCALL NTSTATUS STDCALL
NtMakePermanentObject(IN HANDLE Handle) NtMakePermanentObject(IN HANDLE ObjectHandle)
{ {
POBJECT_HEADER ObjectHeader; POBJECT_HEADER ObjectHeader;
PVOID Object; PVOID Object;
NTSTATUS Status; NTSTATUS Status;
Status = ObReferenceObjectByHandle(Handle, Status = ObReferenceObjectByHandle(ObjectHandle,
0, 0,
NULL, NULL,
(KPROCESSOR_MODE)KeGetPreviousMode(), (KPROCESSOR_MODE)KeGetPreviousMode(),

View file

@ -1,4 +1,4 @@
/* $Id: symlink.c,v 1.10 2004/10/22 20:43:58 ekohl Exp $ /* $Id: symlink.c,v 1.11 2004/10/24 20:37:26 weiden Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -202,10 +202,10 @@ ObInitSymbolicLinkImplementation (VOID)
* *
*/ */
NTSTATUS STDCALL NTSTATUS STDCALL
NtCreateSymbolicLinkObject(OUT PHANDLE SymbolicLinkHandle, NtCreateSymbolicLinkObject(OUT PHANDLE LinkHandle,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes, IN POBJECT_ATTRIBUTES ObjectAttributes,
IN PUNICODE_STRING DeviceName) IN PUNICODE_STRING LinkTarget)
{ {
PSYMLINK_OBJECT SymbolicLink; PSYMLINK_OBJECT SymbolicLink;
NTSTATUS Status; NTSTATUS Status;
@ -237,7 +237,7 @@ NtCreateSymbolicLinkObject(OUT PHANDLE SymbolicLinkHandle,
DesiredAccess, DesiredAccess,
0, 0,
NULL, NULL,
SymbolicLinkHandle); LinkHandle);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
ObDereferenceObject (SymbolicLink); ObDereferenceObject (SymbolicLink);
@ -246,13 +246,13 @@ NtCreateSymbolicLinkObject(OUT PHANDLE SymbolicLinkHandle,
SymbolicLink->TargetName.Length = 0; SymbolicLink->TargetName.Length = 0;
SymbolicLink->TargetName.MaximumLength = SymbolicLink->TargetName.MaximumLength =
((wcslen(DeviceName->Buffer) + 1) * sizeof(WCHAR)); ((wcslen(LinkTarget->Buffer) + 1) * sizeof(WCHAR));
SymbolicLink->TargetName.Buffer = SymbolicLink->TargetName.Buffer =
ExAllocatePoolWithTag(NonPagedPool, ExAllocatePoolWithTag(NonPagedPool,
SymbolicLink->TargetName.MaximumLength, SymbolicLink->TargetName.MaximumLength,
TAG_SYMLINK_TARGET); TAG_SYMLINK_TARGET);
RtlCopyUnicodeString(&SymbolicLink->TargetName, RtlCopyUnicodeString(&SymbolicLink->TargetName,
DeviceName); LinkTarget);
DPRINT("DeviceName %S\n", SymbolicLink->TargetName.Buffer); DPRINT("DeviceName %S\n", SymbolicLink->TargetName.Buffer);
@ -311,8 +311,8 @@ NtOpenSymbolicLinkObject(OUT PHANDLE LinkHandle,
*/ */
NTSTATUS STDCALL NTSTATUS STDCALL
NtQuerySymbolicLinkObject(IN HANDLE LinkHandle, NtQuerySymbolicLinkObject(IN HANDLE LinkHandle,
IN OUT PUNICODE_STRING LinkTarget, OUT PUNICODE_STRING LinkTarget,
OUT PULONG ReturnedLength OPTIONAL) OUT PULONG ResultLength OPTIONAL)
{ {
PSYMLINK_OBJECT SymlinkObject; PSYMLINK_OBJECT SymlinkObject;
NTSTATUS Status; NTSTATUS Status;
@ -328,9 +328,9 @@ NtQuerySymbolicLinkObject(IN HANDLE LinkHandle,
return Status; return Status;
} }
if (ReturnedLength != NULL) if (ResultLength != NULL)
{ {
*ReturnedLength = (ULONG)SymlinkObject->TargetName.Length + sizeof(WCHAR); *ResultLength = (ULONG)SymlinkObject->TargetName.Length + sizeof(WCHAR);
} }
if (LinkTarget->MaximumLength >= SymlinkObject->TargetName.Length + sizeof(WCHAR)) if (LinkTarget->MaximumLength >= SymlinkObject->TargetName.Length + sizeof(WCHAR))

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/* $Id: power.c,v 1.11 2004/08/15 16:39:10 chorns Exp $ /* $Id: power.c,v 1.12 2004/10/24 20:37:26 weiden Exp $
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
* FILE: ntoskrnl/po/power.c * FILE: ntoskrnl/po/power.c
* PURPOSE: Power Manager * PURPOSE: Power Manager
@ -223,10 +223,10 @@ PoInit(VOID)
NTSTATUS NTSTATUS
STDCALL STDCALL
NtInitiatePowerAction ( NtInitiatePowerAction (
POWER_ACTION SystemAction, IN POWER_ACTION SystemAction,
SYSTEM_POWER_STATE MinSystemState, IN SYSTEM_POWER_STATE MinSystemState,
ULONG Flags, IN ULONG Flags,
BOOLEAN Asynchronous) IN BOOLEAN Asynchronous)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
@ -238,17 +238,15 @@ NtInitiatePowerAction (
NTSTATUS NTSTATUS
STDCALL STDCALL
NtPowerInformation( NtPowerInformation(
POWER_INFORMATION_LEVEL PowerInformationLevel, IN POWER_INFORMATION_LEVEL PowerInformationLevel,
PVOID InputBuffer, IN PVOID InputBuffer OPTIONAL,
ULONG InputBufferLength, IN ULONG InputBufferLength,
PVOID OutputBuffer, OUT PVOID OutputBuffer OPTIONAL,
ULONG OutputBufferLength IN ULONG OutputBufferLength
) )
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }
/* EOF */ /* EOF */

View file

@ -1,4 +1,4 @@
/* $Id: create.c,v 1.83 2004/10/22 20:45:46 ekohl Exp $ /* $Id: create.c,v 1.84 2004/10/24 20:37:27 weiden Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -502,7 +502,7 @@ static NTSTATUS
PsCreateTeb(HANDLE ProcessHandle, PsCreateTeb(HANDLE ProcessHandle,
PTEB *TebPtr, PTEB *TebPtr,
PETHREAD Thread, PETHREAD Thread,
PUSER_STACK UserStack) PINITIAL_TEB InitialTeb)
{ {
PEPROCESS Process; PEPROCESS Process;
NTSTATUS Status; NTSTATUS Status;
@ -584,22 +584,22 @@ PsCreateTeb(HANDLE ProcessHandle,
} }
DPRINT("Teb.Peb %x\n", Teb.Peb); DPRINT("Teb.Peb %x\n", Teb.Peb);
/* store stack information from UserStack */ /* store stack information from InitialTeb */
if(UserStack != NULL) if(InitialTeb != NULL)
{ {
/* fixed-size stack */ /* fixed-size stack */
if(UserStack->FixedStackBase && UserStack->FixedStackLimit) if(InitialTeb->StackBase && InitialTeb->StackLimit)
{ {
Teb.Tib.StackBase = UserStack->FixedStackBase; Teb.Tib.StackBase = InitialTeb->StackBase;
Teb.Tib.StackLimit = UserStack->FixedStackLimit; Teb.Tib.StackLimit = InitialTeb->StackLimit;
Teb.DeallocationStack = UserStack->FixedStackLimit; Teb.DeallocationStack = InitialTeb->StackLimit;
} }
/* expandable stack */ /* expandable stack */
else else
{ {
Teb.Tib.StackBase = UserStack->ExpandableStackBase; Teb.Tib.StackBase = InitialTeb->StackCommit;
Teb.Tib.StackLimit = UserStack->ExpandableStackLimit; Teb.Tib.StackLimit = InitialTeb->StackCommitMax;
Teb.DeallocationStack = UserStack->ExpandableStackBottom; Teb.DeallocationStack = InitialTeb->StackReserved;
} }
} }
@ -664,14 +664,14 @@ LdrInitApcKernelRoutine(PKAPC Apc,
NTSTATUS STDCALL NTSTATUS STDCALL
NtCreateThread(PHANDLE ThreadHandle, NtCreateThread(OUT PHANDLE ThreadHandle,
ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
POBJECT_ATTRIBUTES ObjectAttributes, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
HANDLE ProcessHandle, IN HANDLE ProcessHandle,
PCLIENT_ID Client, OUT PCLIENT_ID Client,
PCONTEXT ThreadContext, IN PCONTEXT ThreadContext,
PUSER_STACK UserStack, IN PINITIAL_TEB InitialTeb,
BOOLEAN CreateSuspended) IN BOOLEAN CreateSuspended)
{ {
PEPROCESS Process; PEPROCESS Process;
PETHREAD Thread; PETHREAD Thread;
@ -716,7 +716,7 @@ NtCreateThread(PHANDLE ThreadHandle,
Status = PsCreateTeb(ProcessHandle, Status = PsCreateTeb(ProcessHandle,
&TebBase, &TebBase,
Thread, Thread,
UserStack); InitialTeb);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
return(Status); return(Status);

View file

@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/* $Id: debug.c,v 1.13 2004/08/15 16:39:10 chorns Exp $ /* $Id: debug.c,v 1.14 2004/10/24 20:37:27 weiden Exp $
* *
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
* FILE: ntoskrnl/ps/debug.c * FILE: ntoskrnl/ps/debug.c
@ -185,7 +185,7 @@ KeGetContextKernelRoutine(PKAPC Apc,
NTSTATUS STDCALL NTSTATUS STDCALL
NtGetContextThread(IN HANDLE ThreadHandle, NtGetContextThread(IN HANDLE ThreadHandle,
OUT PCONTEXT UnsafeContext) OUT PCONTEXT ThreadContext)
{ {
PETHREAD Thread; PETHREAD Thread;
NTSTATUS Status; NTSTATUS Status;
@ -194,7 +194,7 @@ NtGetContextThread(IN HANDLE ThreadHandle,
KEVENT Event; KEVENT Event;
NTSTATUS AStatus; NTSTATUS AStatus;
Status = MmCopyFromCaller(&Context, UnsafeContext, sizeof(CONTEXT)); Status = MmCopyFromCaller(&Context, ThreadContext, sizeof(CONTEXT));
if (! NT_SUCCESS(Status)) if (! NT_SUCCESS(Status))
{ {
return Status; return Status;
@ -256,7 +256,7 @@ NtGetContextThread(IN HANDLE ThreadHandle,
} }
if (NT_SUCCESS(Status)) if (NT_SUCCESS(Status))
{ {
Status = MmCopyToCaller(UnsafeContext, &Context, sizeof(Context)); Status = MmCopyToCaller(ThreadContext, &Context, sizeof(Context));
} }
ObDereferenceObject(Thread); ObDereferenceObject(Thread);
@ -290,7 +290,7 @@ KeSetContextKernelRoutine(PKAPC Apc,
NTSTATUS STDCALL NTSTATUS STDCALL
NtSetContextThread(IN HANDLE ThreadHandle, NtSetContextThread(IN HANDLE ThreadHandle,
IN PCONTEXT UnsafeContext) IN PCONTEXT ThreadContext)
{ {
PETHREAD Thread; PETHREAD Thread;
NTSTATUS Status; NTSTATUS Status;
@ -299,7 +299,7 @@ NtSetContextThread(IN HANDLE ThreadHandle,
NTSTATUS AStatus; NTSTATUS AStatus;
CONTEXT Context; CONTEXT Context;
Status = MmCopyFromCaller(&Context, UnsafeContext, sizeof(CONTEXT)); Status = MmCopyFromCaller(&Context, ThreadContext, sizeof(CONTEXT));
if (! NT_SUCCESS(Status)) if (! NT_SUCCESS(Status))
{ {
return Status; return Status;

View file

@ -1,4 +1,4 @@
/* $Id: kill.c,v 1.79 2004/10/03 21:03:03 gvg Exp $ /* $Id: kill.c,v 1.80 2004/10/24 20:37:27 weiden Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -305,7 +305,7 @@ PiTerminateProcess(PEPROCESS Process,
} }
NTSTATUS STDCALL NTSTATUS STDCALL
NtTerminateProcess(IN HANDLE ProcessHandle, NtTerminateProcess(IN HANDLE ProcessHandle OPTIONAL,
IN NTSTATUS ExitStatus) IN NTSTATUS ExitStatus)
{ {
NTSTATUS Status; NTSTATUS Status;
@ -417,7 +417,7 @@ NtCallTerminatePorts(PETHREAD Thread)
} }
NTSTATUS STDCALL NTSTATUS STDCALL
NtRegisterThreadTerminatePort(HANDLE TerminationPortHandle) NtRegisterThreadTerminatePort(HANDLE PortHandle)
{ {
NTSTATUS Status; NTSTATUS Status;
PEPORT_TERMINATION_REQUEST Request; PEPORT_TERMINATION_REQUEST Request;
@ -425,7 +425,7 @@ NtRegisterThreadTerminatePort(HANDLE TerminationPortHandle)
KIRQL oldIrql; KIRQL oldIrql;
PETHREAD Thread; PETHREAD Thread;
Status = ObReferenceObjectByHandle(TerminationPortHandle, Status = ObReferenceObjectByHandle(PortHandle,
PORT_ALL_ACCESS, PORT_ALL_ACCESS,
ExPortType, ExPortType,
KeGetCurrentThread()->PreviousMode, KeGetCurrentThread()->PreviousMode,

View file

@ -1,4 +1,4 @@
/* $Id: locale.c,v 1.11 2004/09/16 11:45:06 ekohl Exp $ /* $Id: locale.c,v 1.12 2004/10/24 20:37:27 weiden Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -198,22 +198,22 @@ PiInitThreadLocale(VOID)
* FUNCTION: * FUNCTION:
* Returns the default locale. * Returns the default locale.
* ARGUMENTS: * ARGUMENTS:
* ThreadOrSystem = If TRUE then the locale for this thread is returned, * UserProfile = If TRUE then the locale for this thread is returned,
* otherwise the locale for the system is returned. * otherwise the locale for the system is returned.
* DefaultLocaleId = Points to a variable that receives the locale id. * DefaultLocaleId = Points to a variable that receives the locale id.
* Returns: * Returns:
* Status. * Status.
*/ */
NTSTATUS STDCALL NTSTATUS STDCALL
NtQueryDefaultLocale(IN BOOLEAN ThreadOrSystem, NtQueryDefaultLocale(IN BOOLEAN UserProfile,
OUT PLCID DefaultLocaleId) OUT PLCID DefaultLocaleId)
{ {
if (DefaultLocaleId == NULL) if (DefaultLocaleId == NULL)
return STATUS_UNSUCCESSFUL; return STATUS_UNSUCCESSFUL;
if (ThreadOrSystem == TRUE) if (UserProfile)
{ {
if (PsDefaultThreadLocaleInitialized == FALSE) if (!PsDefaultThreadLocaleInitialized)
{ {
PiInitThreadLocale(); PiInitThreadLocale();
} }
@ -242,7 +242,7 @@ NtQueryDefaultLocale(IN BOOLEAN ThreadOrSystem,
* Status. * Status.
*/ */
NTSTATUS STDCALL NTSTATUS STDCALL
NtSetDefaultLocale(IN BOOLEAN ThreadOrSystem, NtSetDefaultLocale(IN BOOLEAN UserProfile,
IN LCID DefaultLocaleId) IN LCID DefaultLocaleId)
{ {
OBJECT_ATTRIBUTES ObjectAttributes; OBJECT_ATTRIBUTES ObjectAttributes;
@ -254,7 +254,7 @@ NtSetDefaultLocale(IN BOOLEAN ThreadOrSystem,
HANDLE UserKey = NULL; HANDLE UserKey = NULL;
NTSTATUS Status; NTSTATUS Status;
if (ThreadOrSystem == TRUE) if (UserProfile)
{ {
/* thread locale */ /* thread locale */
Status = RtlOpenCurrentUser(KEY_WRITE, Status = RtlOpenCurrentUser(KEY_WRITE,
@ -315,7 +315,7 @@ NtSetDefaultLocale(IN BOOLEAN ThreadOrSystem,
return(Status); return(Status);
} }
if (ThreadOrSystem == TRUE) if (UserProfile)
{ {
/* set thread locale */ /* set thread locale */
DPRINT("Thread locale: %08lu\n", DefaultLocaleId); DPRINT("Thread locale: %08lu\n", DefaultLocaleId);

View file

@ -1,4 +1,4 @@
/* $Id: process.c,v 1.145 2004/10/22 20:45:46 ekohl Exp $ /* $Id: process.c,v 1.146 2004/10/24 20:37:27 weiden Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -114,14 +114,18 @@ PsGetNextProcess(PEPROCESS OldProcess)
} }
/*
* @implemented
*/
NTSTATUS STDCALL NTSTATUS STDCALL
_NtOpenProcessToken(IN HANDLE ProcessHandle, NtOpenProcessToken(IN HANDLE ProcessHandle,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
OUT PHANDLE TokenHandle) OUT PHANDLE TokenHandle)
{ {
PACCESS_TOKEN Token; PACCESS_TOKEN Token;
HANDLE hToken;
NTSTATUS Status; NTSTATUS Status;
Status = PsOpenTokenOfProcess(ProcessHandle, Status = PsOpenTokenOfProcess(ProcessHandle,
&Token); &Token);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
@ -132,23 +136,17 @@ _NtOpenProcessToken(IN HANDLE ProcessHandle,
Token, Token,
DesiredAccess, DesiredAccess,
FALSE, FALSE,
TokenHandle); &hToken);
ObDereferenceObject(Token); ObDereferenceObject(Token);
if(NT_SUCCESS(Status))
{
Status = MmCopyToCaller(TokenHandle, &hToken, sizeof(HANDLE));
}
return(Status); return(Status);
} }
/*
* @implemented
*/
NTSTATUS STDCALL
NtOpenProcessToken(IN HANDLE ProcessHandle,
IN ACCESS_MASK DesiredAccess,
OUT PHANDLE TokenHandle)
{
return _NtOpenProcessToken(ProcessHandle, DesiredAccess, TokenHandle);
}
/* /*
* @unimplemented * @unimplemented
*/ */
@ -166,7 +164,6 @@ NtOpenProcessTokenEx(
} }
/* /*
* @implemented * @implemented
*/ */
@ -577,12 +574,12 @@ PsCreateSystemProcess(PHANDLE ProcessHandle,
NTSTATUS STDCALL NTSTATUS STDCALL
NtCreateProcess(OUT PHANDLE ProcessHandle, NtCreateProcess(OUT PHANDLE ProcessHandle,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN HANDLE ParentProcessHandle, IN HANDLE ParentProcess,
IN BOOLEAN InheritObjectTable, IN BOOLEAN InheritObjectTable,
IN HANDLE SectionHandle OPTIONAL, IN HANDLE SectionHandle OPTIONAL,
IN HANDLE DebugPortHandle OPTIONAL, IN HANDLE DebugPort OPTIONAL,
IN HANDLE ExceptionPortHandle OPTIONAL) IN HANDLE ExceptionPort OPTIONAL)
/* /*
* FUNCTION: Creates a process. * FUNCTION: Creates a process.
* ARGUMENTS: * ARGUMENTS:
@ -606,14 +603,14 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
*/ */
{ {
PEPROCESS Process; PEPROCESS Process;
PEPROCESS ParentProcess; PEPROCESS pParentProcess;
PKPROCESS KProcess; PKPROCESS KProcess;
NTSTATUS Status; NTSTATUS Status;
KIRQL oldIrql; KIRQL oldIrql;
PVOID LdrStartupAddr; PVOID LdrStartupAddr;
PVOID ImageBase; PVOID ImageBase;
PEPORT DebugPort; PEPORT pDebugPort;
PEPORT ExceptionPort; PEPORT pExceptionPort;
PVOID BaseAddress; PVOID BaseAddress;
PMEMORY_AREA MemoryArea; PMEMORY_AREA MemoryArea;
PHYSICAL_ADDRESS BoundaryAddressMultiple; PHYSICAL_ADDRESS BoundaryAddressMultiple;
@ -622,11 +619,11 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
BoundaryAddressMultiple.QuadPart = 0; BoundaryAddressMultiple.QuadPart = 0;
Status = ObReferenceObjectByHandle(ParentProcessHandle, Status = ObReferenceObjectByHandle(ParentProcess,
PROCESS_CREATE_PROCESS, PROCESS_CREATE_PROCESS,
PsProcessType, PsProcessType,
ExGetPreviousMode(), ExGetPreviousMode(),
(PVOID*)&ParentProcess, (PVOID*)&pParentProcess,
NULL); NULL);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
@ -645,7 +642,7 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
(PVOID*)&Process); (PVOID*)&Process);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
ObDereferenceObject(ParentProcess); ObDereferenceObject(pParentProcess);
DPRINT("ObCreateObject() = %x\n",Status); DPRINT("ObCreateObject() = %x\n",Status);
return(Status); return(Status);
} }
@ -659,7 +656,7 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
ObDereferenceObject (Process); ObDereferenceObject (Process);
ObDereferenceObject (ParentProcess); ObDereferenceObject (pParentProcess);
DPRINT("ObInsertObject() = %x\n",Status); DPRINT("ObInsertObject() = %x\n",Status);
return Status; return Status;
} }
@ -670,7 +667,7 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
FALSE); FALSE);
KProcess = &Process->Pcb; KProcess = &Process->Pcb;
/* Inherit parent process's affinity. */ /* Inherit parent process's affinity. */
KProcess->Affinity = ParentProcess->Pcb.Affinity; KProcess->Affinity = pParentProcess->Pcb.Affinity;
KProcess->BasePriority = PROCESS_PRIO_NORMAL; KProcess->BasePriority = PROCESS_PRIO_NORMAL;
KProcess->IopmOffset = 0xffff; KProcess->IopmOffset = 0xffff;
KProcess->LdtDescriptor[0] = 0; KProcess->LdtDescriptor[0] = 0;
@ -680,18 +677,18 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
&Process->AddressSpace); &Process->AddressSpace);
Process->UniqueProcessId = InterlockedIncrement((LONG *)&PiNextProcessUniqueId); /* TODO */ Process->UniqueProcessId = InterlockedIncrement((LONG *)&PiNextProcessUniqueId); /* TODO */
Process->InheritedFromUniqueProcessId = Process->InheritedFromUniqueProcessId =
(HANDLE)ParentProcess->UniqueProcessId; (HANDLE)pParentProcess->UniqueProcessId;
ObCreateHandleTable(ParentProcess, ObCreateHandleTable(pParentProcess,
InheritObjectTable, InheritObjectTable,
Process); Process);
MmCopyMmInfo(ParentProcess, Process); MmCopyMmInfo(pParentProcess, Process);
if (ParentProcess->Win32WindowStation != (HANDLE)0) if (pParentProcess->Win32WindowStation != (HANDLE)0)
{ {
/* Always duplicate the process window station. */ /* Always duplicate the process window station. */
Process->Win32WindowStation = 0; Process->Win32WindowStation = 0;
Status = ObDuplicateObject(ParentProcess, Status = ObDuplicateObject(pParentProcess,
Process, Process,
ParentProcess->Win32WindowStation, pParentProcess->Win32WindowStation,
&Process->Win32WindowStation, &Process->Win32WindowStation,
0, 0,
FALSE, FALSE,
@ -705,13 +702,13 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
{ {
Process->Win32WindowStation = (HANDLE)0; Process->Win32WindowStation = (HANDLE)0;
} }
if (ParentProcess->Win32Desktop != (HANDLE)0) if (pParentProcess->Win32Desktop != (HANDLE)0)
{ {
/* Always duplicate the process window station. */ /* Always duplicate the process window station. */
Process->Win32Desktop = 0; Process->Win32Desktop = 0;
Status = ObDuplicateObject(ParentProcess, Status = ObDuplicateObject(pParentProcess,
Process, Process,
ParentProcess->Win32Desktop, pParentProcess->Win32Desktop,
&Process->Win32Desktop, &Process->Win32Desktop,
0, 0,
FALSE, FALSE,
@ -737,45 +734,45 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
/* /*
* Add the debug port * Add the debug port
*/ */
if (DebugPortHandle != NULL) if (DebugPort != NULL)
{ {
Status = ObReferenceObjectByHandle(DebugPortHandle, Status = ObReferenceObjectByHandle(DebugPort,
PORT_ALL_ACCESS, PORT_ALL_ACCESS,
ExPortType, ExPortType,
UserMode, UserMode,
(PVOID*)&DebugPort, (PVOID*)&pDebugPort,
NULL); NULL);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
ObDereferenceObject(Process); ObDereferenceObject(Process);
ObDereferenceObject(ParentProcess); ObDereferenceObject(pParentProcess);
ZwClose(*ProcessHandle); ZwClose(*ProcessHandle);
*ProcessHandle = NULL; *ProcessHandle = NULL;
return(Status); return(Status);
} }
Process->DebugPort = DebugPort; Process->DebugPort = pDebugPort;
} }
/* /*
* Add the exception port * Add the exception port
*/ */
if (ExceptionPortHandle != NULL) if (ExceptionPort != NULL)
{ {
Status = ObReferenceObjectByHandle(ExceptionPortHandle, Status = ObReferenceObjectByHandle(ExceptionPort,
PORT_ALL_ACCESS, PORT_ALL_ACCESS,
ExPortType, ExPortType,
UserMode, UserMode,
(PVOID*)&ExceptionPort, (PVOID*)&pExceptionPort,
NULL); NULL);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
ObDereferenceObject(Process); ObDereferenceObject(Process);
ObDereferenceObject(ParentProcess); ObDereferenceObject(pParentProcess);
ZwClose(*ProcessHandle); ZwClose(*ProcessHandle);
*ProcessHandle = NULL; *ProcessHandle = NULL;
return(Status); return(Status);
} }
Process->ExceptionPort = ExceptionPort; Process->ExceptionPort = pExceptionPort;
} }
/* /*
@ -871,7 +868,7 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
{ {
DbgPrint("LdrpMapSystemDll failed (Status %x)\n", Status); DbgPrint("LdrpMapSystemDll failed (Status %x)\n", Status);
ObDereferenceObject(Process); ObDereferenceObject(Process);
ObDereferenceObject(ParentProcess); ObDereferenceObject(pParentProcess);
return(Status); return(Status);
} }
@ -888,7 +885,7 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
{ {
DbgPrint("LdrpMapImage failed (Status %x)\n", Status); DbgPrint("LdrpMapImage failed (Status %x)\n", Status);
ObDereferenceObject(Process); ObDereferenceObject(Process);
ObDereferenceObject(ParentProcess); ObDereferenceObject(pParentProcess);
return(Status); return(Status);
} }
} }
@ -900,12 +897,12 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
/* /*
* Duplicate the token * Duplicate the token
*/ */
Status = SepInitializeNewProcess(Process, ParentProcess); Status = SepInitializeNewProcess(Process, pParentProcess);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
DbgPrint("SepInitializeNewProcess failed (Status %x)\n", Status); DbgPrint("SepInitializeNewProcess failed (Status %x)\n", Status);
ObDereferenceObject(Process); ObDereferenceObject(Process);
ObDereferenceObject(ParentProcess); ObDereferenceObject(pParentProcess);
return(Status); return(Status);
} }
@ -920,7 +917,7 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
{ {
DbgPrint("NtCreateProcess() Peb creation failed: Status %x\n",Status); DbgPrint("NtCreateProcess() Peb creation failed: Status %x\n",Status);
ObDereferenceObject(Process); ObDereferenceObject(Process);
ObDereferenceObject(ParentProcess); ObDereferenceObject(pParentProcess);
ZwClose(*ProcessHandle); ZwClose(*ProcessHandle);
*ProcessHandle = NULL; *ProcessHandle = NULL;
return(Status); return(Status);
@ -930,7 +927,7 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
* Maybe send a message to the creator process's debugger * Maybe send a message to the creator process's debugger
*/ */
#if 0 #if 0
if (ParentProcess->DebugPort != NULL) if (pParentProcess->DebugPort != NULL)
{ {
LPC_DBG_MESSAGE Message; LPC_DBG_MESSAGE Message;
HANDLE FileHandle; HANDLE FileHandle;
@ -949,7 +946,7 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
Message.Data.CreateProcess.Base = ImageBase; Message.Data.CreateProcess.Base = ImageBase;
Message.Data.CreateProcess.EntryPoint = NULL; // Message.Data.CreateProcess.EntryPoint = NULL; //
Status = LpcSendDebugMessagePort(ParentProcess->DebugPort, Status = LpcSendDebugMessagePort(pParentProcess->DebugPort,
&Message); &Message);
} }
#endif #endif
@ -957,7 +954,7 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
PspRunCreateProcessNotifyRoutines(Process, TRUE); PspRunCreateProcessNotifyRoutines(Process, TRUE);
ObDereferenceObject(Process); ObDereferenceObject(Process);
ObDereferenceObject(ParentProcess); ObDereferenceObject(pParentProcess);
return(STATUS_SUCCESS); return(STATUS_SUCCESS);
} }
@ -1063,10 +1060,10 @@ NtOpenProcess(OUT PHANDLE ProcessHandle,
*/ */
NTSTATUS STDCALL NTSTATUS STDCALL
NtQueryInformationProcess(IN HANDLE ProcessHandle, NtQueryInformationProcess(IN HANDLE ProcessHandle,
IN CINT ProcessInformationClass, IN PROCESSINFOCLASS ProcessInformationClass,
OUT PVOID ProcessInformation, OUT PVOID ProcessInformation,
IN ULONG ProcessInformationLength, IN ULONG ProcessInformationLength,
OUT PULONG ReturnLength OPTIONAL) OUT PULONG ReturnLength OPTIONAL)
{ {
PEPROCESS Process; PEPROCESS Process;
NTSTATUS Status; NTSTATUS Status;
@ -1311,7 +1308,7 @@ PspAssignPrimaryToken(PEPROCESS Process,
*/ */
NTSTATUS STDCALL NTSTATUS STDCALL
NtSetInformationProcess(IN HANDLE ProcessHandle, NtSetInformationProcess(IN HANDLE ProcessHandle,
IN CINT ProcessInformationClass, IN PROCESSINFOCLASS ProcessInformationClass,
IN PVOID ProcessInformation, IN PVOID ProcessInformation,
IN ULONG ProcessInformationLength) IN ULONG ProcessInformationLength)
{ {

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/* $Id: suspend.c,v 1.15 2004/08/15 16:39:10 chorns Exp $ /* $Id: suspend.c,v 1.16 2004/10/24 20:37:27 weiden Exp $
* *
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
* FILE: ntoskrnl/ps/suspend.c * FILE: ntoskrnl/ps/suspend.c
@ -135,7 +135,7 @@ PsSuspendThread(PETHREAD Thread, PULONG PreviousSuspendCount)
NTSTATUS STDCALL NTSTATUS STDCALL
NtResumeThread(IN HANDLE ThreadHandle, NtResumeThread(IN HANDLE ThreadHandle,
IN PULONG SuspendCount) IN PULONG SuspendCount OPTIONAL)
/* /*
* FUNCTION: Decrements a thread's resume count * FUNCTION: Decrements a thread's resume count
* ARGUMENTS: * ARGUMENTS:
@ -182,7 +182,7 @@ NtResumeThread(IN HANDLE ThreadHandle,
NTSTATUS STDCALL NTSTATUS STDCALL
NtSuspendThread(IN HANDLE ThreadHandle, NtSuspendThread(IN HANDLE ThreadHandle,
IN PULONG PreviousSuspendCount) IN PULONG PreviousSuspendCount OPTIONAL)
/* /*
* FUNCTION: Increments a thread's suspend count * FUNCTION: Increments a thread's suspend count
* ARGUMENTS: * ARGUMENTS:

View file

@ -1,4 +1,4 @@
/* $Id: tinfo.c,v 1.29 2004/09/28 15:02:29 weiden Exp $ /* $Id: tinfo.c,v 1.30 2004/10/24 20:37:27 weiden Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -222,7 +222,7 @@ NtQueryInformationThread (IN HANDLE ThreadHandle,
IN THREADINFOCLASS ThreadInformationClass, IN THREADINFOCLASS ThreadInformationClass,
OUT PVOID ThreadInformation, OUT PVOID ThreadInformation,
IN ULONG ThreadInformationLength, IN ULONG ThreadInformationLength,
OUT PULONG ReturnLength) OUT PULONG ReturnLength OPTIONAL)
{ {
PETHREAD Thread; PETHREAD Thread;
NTSTATUS Status; NTSTATUS Status;

View file

@ -1163,26 +1163,27 @@ ZwAreMappedFilesTheSame(
/* Threads */ /* Threads */
typedef struct _USER_STACK { typedef struct _INITIAL_TEB
PVOID FixedStackBase; {
PVOID FixedStackLimit; PVOID StackBase;
PVOID ExpandableStackBase; PVOID StackLimit;
PVOID ExpandableStackLimit; PVOID StackCommit;
PVOID ExpandableStackBottom; PVOID StackCommitMax;
} USER_STACK, *PUSER_STACK; PVOID StackReserved;
} INITIAL_TEB, *PINITIAL_TEB;
NTOSAPI NTOSAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
ZwCreateThread( ZwCreateThread(
OUT PHANDLE ThreadHandle, OUT PHANDLE ThreadHandle,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN HANDLE ProcessHandle, IN HANDLE ProcessHandle,
OUT PCLIENT_ID ClientId, OUT PCLIENT_ID ClientId,
IN PCONTEXT ThreadContext, IN PCONTEXT ThreadContext,
IN PUSER_STACK UserStack, IN PINITIAL_TEB InitialTeb,
IN BOOLEAN CreateSuspended); IN BOOLEAN CreateSuspended);
NTOSAPI NTOSAPI
NTSTATUS NTSTATUS