mirror of
https://github.com/reactos/reactos.git
synced 2025-07-12 21:04:13 +00:00
more prototype fixes
svn path=/trunk/; revision=11422
This commit is contained in:
parent
b69a77aa97
commit
0402fbbd25
23 changed files with 339 additions and 343 deletions
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -1428,7 +1428,7 @@ NtIsProcessInJob(
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtMakePermanentObject(
|
NtMakePermanentObject(
|
||||||
IN HANDLE Object
|
IN HANDLE ObjectHandle
|
||||||
);
|
);
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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
|
||||||
);
|
);
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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))
|
||||||
{
|
{
|
||||||
|
|
|
@ -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(),
|
||||||
|
|
|
@ -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))
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue