mirror of
https://github.com/reactos/reactos.git
synced 2025-05-31 06:58:10 +00:00
Updated Ps* functions
Implemented PsGetVersion() svn path=/trunk/; revision=1170
This commit is contained in:
parent
8123995861
commit
abc6758e63
12 changed files with 177 additions and 78 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
/* $Id: psfuncs.h,v 1.7 2000/06/03 21:33:57 ekohl Exp $
|
||||||
|
*/
|
||||||
|
#ifndef _INCLUDE_DDK_PSFUNCS_H
|
||||||
|
#define _INCLUDE_DDK_PSFUNCS_H
|
||||||
|
|
||||||
PACCESS_TOKEN PsReferenceEffectiveToken(PETHREAD Thread,
|
PACCESS_TOKEN PsReferenceEffectiveToken(PETHREAD Thread,
|
||||||
PTOKEN_TYPE TokenType,
|
PTOKEN_TYPE TokenType,
|
||||||
|
@ -7,8 +11,8 @@ PACCESS_TOKEN PsReferenceEffectiveToken(PETHREAD Thread,
|
||||||
NTSTATUS PsOpenTokenOfProcess(HANDLE ProcessHandle,
|
NTSTATUS PsOpenTokenOfProcess(HANDLE ProcessHandle,
|
||||||
PACCESS_TOKEN* Token);
|
PACCESS_TOKEN* Token);
|
||||||
|
|
||||||
HANDLE PsGetCurrentProcessId(VOID);
|
HANDLE STDCALL PsGetCurrentProcessId(VOID);
|
||||||
HANDLE PsGetCurrentThreadId(VOID);
|
HANDLE STDCALL PsGetCurrentThreadId(VOID);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FUNCTION: Creates a thread which executes in kernel mode
|
* FUNCTION: Creates a thread which executes in kernel mode
|
||||||
|
@ -26,14 +30,14 @@ HANDLE PsGetCurrentThreadId(VOID);
|
||||||
* execution
|
* execution
|
||||||
* RETURNS: Success or failure status
|
* RETURNS: Success or failure status
|
||||||
*/
|
*/
|
||||||
NTSTATUS PsCreateSystemThread(PHANDLE ThreadHandle,
|
NTSTATUS STDCALL PsCreateSystemThread(PHANDLE ThreadHandle,
|
||||||
ACCESS_MASK DesiredAccess,
|
ACCESS_MASK DesiredAccess,
|
||||||
POBJECT_ATTRIBUTES ObjectAttributes,
|
POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
HANDLE ProcessHandle,
|
HANDLE ProcessHandle,
|
||||||
PCLIENT_ID ClientId,
|
PCLIENT_ID ClientId,
|
||||||
PKSTART_ROUTINE StartRoutine,
|
PKSTART_ROUTINE StartRoutine,
|
||||||
PVOID StartContext);
|
PVOID StartContext);
|
||||||
NTSTATUS PsTerminateSystemThread(NTSTATUS ExitStatus);
|
NTSTATUS STDCALL PsTerminateSystemThread(NTSTATUS ExitStatus);
|
||||||
ULONG PsSuspendThread(PETHREAD Thread,
|
ULONG PsSuspendThread(PETHREAD Thread,
|
||||||
PNTSTATUS WaitStatus,
|
PNTSTATUS WaitStatus,
|
||||||
UCHAR Alertable,
|
UCHAR Alertable,
|
||||||
|
@ -42,17 +46,31 @@ ULONG PsResumeThread(PETHREAD Thread,
|
||||||
PNTSTATUS WaitStatus);
|
PNTSTATUS WaitStatus);
|
||||||
PETHREAD PsGetCurrentThread(VOID);
|
PETHREAD PsGetCurrentThread(VOID);
|
||||||
struct _EPROCESS* PsGetCurrentProcess(VOID);
|
struct _EPROCESS* PsGetCurrentProcess(VOID);
|
||||||
PACCESS_TOKEN PsReferenceImpersonationToken(PETHREAD Thread,
|
PACCESS_TOKEN STDCALL PsReferenceImpersonationToken(PETHREAD Thread,
|
||||||
PULONG Unknown1,
|
PULONG Unknown1,
|
||||||
PULONG Unknown2,
|
PULONG Unknown2,
|
||||||
SECURITY_IMPERSONATION_LEVEL*
|
SECURITY_IMPERSONATION_LEVEL*
|
||||||
Level);
|
Level);
|
||||||
PACCESS_TOKEN PsReferencePrimaryToken(PEPROCESS Process);
|
PACCESS_TOKEN STDCALL PsReferencePrimaryToken(PEPROCESS Process);
|
||||||
NTSTATUS PsAssignImpersonationToken(PETHREAD Thread,
|
NTSTATUS STDCALL PsAssignImpersonationToken(PETHREAD Thread,
|
||||||
HANDLE TokenHandle);
|
HANDLE TokenHandle);
|
||||||
|
|
||||||
VOID PsImpersonateClient(PETHREAD Thread,
|
VOID STDCALL PsImpersonateClient(PETHREAD Thread,
|
||||||
PACCESS_TOKEN Token,
|
PACCESS_TOKEN Token,
|
||||||
UCHAR b,
|
UCHAR b,
|
||||||
UCHAR c,
|
UCHAR c,
|
||||||
SECURITY_IMPERSONATION_LEVEL Level);
|
SECURITY_IMPERSONATION_LEVEL Level);
|
||||||
|
VOID STDCALL PsRevertToSelf(PETHREAD Thread);
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
STDCALL
|
||||||
|
PsGetVersion (
|
||||||
|
PULONG MajorVersion OPTIONAL,
|
||||||
|
PULONG MinorVersion OPTIONAL,
|
||||||
|
PULONG BuildNumber OPTIONAL,
|
||||||
|
PUNICODE_STRING CSDVersion OPTIONAL
|
||||||
|
);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* EOF */
|
||||||
|
|
|
@ -316,4 +316,14 @@ typedef struct _EPROCESS
|
||||||
#define MAXIMUM_PRIORITY (32)
|
#define MAXIMUM_PRIORITY (32)
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __NTOSKRNL__
|
||||||
|
extern PEPROCESS EXPORTED PsInitialSystemProcess;
|
||||||
|
extern POBJECT_TYPE EXPORTED PsProcessType;
|
||||||
|
extern POBJECT_TYPE EXPORTED PsThreadType;
|
||||||
|
#else
|
||||||
|
extern PEPROCESS IMPORTED PsInitialSystemProcess;
|
||||||
|
extern POBJECT_TYPE IMPORTED PsProcessType;
|
||||||
|
extern POBJECT_TYPE IMPORTED PsThreadType;
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __INCLUDE_DDK_PSTYPES_H */
|
#endif /* __INCLUDE_DDK_PSTYPES_H */
|
||||||
|
|
|
@ -4,6 +4,11 @@
|
||||||
#define NtCurrentProcess() ( (HANDLE) 0xFFFFFFFF )
|
#define NtCurrentProcess() ( (HANDLE) 0xFFFFFFFF )
|
||||||
#define NtCurrentThread() ( (HANDLE) 0xFFFFFFFE )
|
#define NtCurrentThread() ( (HANDLE) 0xFFFFFFFE )
|
||||||
|
|
||||||
|
#ifdef __NTOSKRNL__
|
||||||
|
extern ULONG EXPORTED NtBuildNumber;
|
||||||
|
#else
|
||||||
|
extern ULONG IMPORTED NtBuildNumber;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// event access mask
|
// event access mask
|
||||||
|
|
|
@ -3,12 +3,9 @@
|
||||||
|
|
||||||
#include <internal/hal.h>
|
#include <internal/hal.h>
|
||||||
|
|
||||||
extern PEPROCESS SystemProcess;
|
|
||||||
extern HANDLE SystemProcessHandle;
|
extern HANDLE SystemProcessHandle;
|
||||||
|
|
||||||
/* ntoskrnl/ps/thread.c */
|
/* ntoskrnl/ps/thread.c */
|
||||||
extern POBJECT_TYPE PsThreadType;
|
|
||||||
extern POBJECT_TYPE PsProcessType;
|
|
||||||
extern PETHREAD CurrentThread;
|
extern PETHREAD CurrentThread;
|
||||||
|
|
||||||
VOID PiInitProcessManager(VOID);
|
VOID PiInitProcessManager(VOID);
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
|
|
||||||
#include <internal/hal.h>
|
#include <internal/hal.h>
|
||||||
|
|
||||||
extern EPROCESS SystemProcess;
|
|
||||||
extern HANDLE SystemProcessHandle;
|
extern HANDLE SystemProcessHandle;
|
||||||
|
|
||||||
void PsInitThreadManagment(void);
|
void PsInitThreadManagment(void);
|
||||||
|
|
|
@ -68,7 +68,7 @@ typedef struct _RTL_USER_PROCESS_PARAMETERS
|
||||||
typedef struct _PEB_LDR_DATA
|
typedef struct _PEB_LDR_DATA
|
||||||
{
|
{
|
||||||
ULONG Length;
|
ULONG Length;
|
||||||
UCHAR Initialized;
|
BOOLEAN Initialized;
|
||||||
PVOID SsHandle;
|
PVOID SsHandle;
|
||||||
LIST_ENTRY InLoadOrderModuleList;
|
LIST_ENTRY InLoadOrderModuleList;
|
||||||
LIST_ENTRY InMemoryOrderModuleList;
|
LIST_ENTRY InMemoryOrderModuleList;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: main.c,v 1.44 2000/05/13 14:56:46 ea Exp $
|
/* $Id: main.c,v 1.45 2000/06/03 21:35:51 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
/* DATA *********************************************************************/
|
/* DATA *********************************************************************/
|
||||||
|
|
||||||
USHORT EXPORTED NtBuildNumber = KERNEL_VERSION_BUILD;
|
ULONG EXPORTED NtBuildNumber = KERNEL_VERSION_BUILD;
|
||||||
ULONG EXPORTED NtGlobalFlag = 0;
|
ULONG EXPORTED NtGlobalFlag = 0;
|
||||||
|
|
||||||
/* FUNCTIONS ****************************************************************/
|
/* FUNCTIONS ****************************************************************/
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: create.c,v 1.15 2000/05/13 13:51:07 dwelch Exp $
|
/* $Id: create.c,v 1.16 2000/06/03 21:36:32 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -43,8 +43,10 @@ extern LIST_ENTRY PiThreadListHead;
|
||||||
|
|
||||||
/* FUNCTIONS ***************************************************************/
|
/* FUNCTIONS ***************************************************************/
|
||||||
|
|
||||||
NTSTATUS PsAssignImpersonationToken(PETHREAD Thread,
|
NTSTATUS
|
||||||
HANDLE TokenHandle)
|
STDCALL
|
||||||
|
PsAssignImpersonationToken(PETHREAD Thread,
|
||||||
|
HANDLE TokenHandle)
|
||||||
{
|
{
|
||||||
PACCESS_TOKEN Token;
|
PACCESS_TOKEN Token;
|
||||||
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
|
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
|
||||||
|
@ -82,7 +84,7 @@ NTSTATUS PsAssignImpersonationToken(PETHREAD Thread,
|
||||||
return(STATUS_SUCCESS);
|
return(STATUS_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID PsRevertToSelf(PETHREAD Thread)
|
VOID STDCALL PsRevertToSelf(PETHREAD Thread)
|
||||||
{
|
{
|
||||||
if (Thread->ActiveImpersonationInfo != 0)
|
if (Thread->ActiveImpersonationInfo != 0)
|
||||||
{
|
{
|
||||||
|
@ -91,11 +93,11 @@ VOID PsRevertToSelf(PETHREAD Thread)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID PsImpersonateClient(PETHREAD Thread,
|
VOID STDCALL PsImpersonateClient(PETHREAD Thread,
|
||||||
PACCESS_TOKEN Token,
|
PACCESS_TOKEN Token,
|
||||||
UCHAR b,
|
UCHAR b,
|
||||||
UCHAR c,
|
UCHAR c,
|
||||||
SECURITY_IMPERSONATION_LEVEL Level)
|
SECURITY_IMPERSONATION_LEVEL Level)
|
||||||
{
|
{
|
||||||
if (Token == 0)
|
if (Token == 0)
|
||||||
{
|
{
|
||||||
|
@ -230,11 +232,11 @@ NTSTATUS STDCALL NtOpenThreadToken(IN HANDLE ThreadHandle,
|
||||||
return(STATUS_UNSUCCESSFUL);
|
return(STATUS_UNSUCCESSFUL);
|
||||||
}
|
}
|
||||||
|
|
||||||
PACCESS_TOKEN PsReferenceImpersonationToken(PETHREAD Thread,
|
PACCESS_TOKEN STDCALL PsReferenceImpersonationToken(PETHREAD Thread,
|
||||||
PULONG Unknown1,
|
PULONG Unknown1,
|
||||||
PULONG Unknown2,
|
PULONG Unknown2,
|
||||||
SECURITY_IMPERSONATION_LEVEL*
|
SECURITY_IMPERSONATION_LEVEL*
|
||||||
Level)
|
Level)
|
||||||
{
|
{
|
||||||
if (Thread->ActiveImpersonationInfo == 0)
|
if (Thread->ActiveImpersonationInfo == 0)
|
||||||
{
|
{
|
||||||
|
@ -339,7 +341,7 @@ NTSTATUS PsInitializeThread(HANDLE ProcessHandle,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Process = SystemProcess;
|
Process = PsInitialSystemProcess;
|
||||||
ObReferenceObjectByPointer(Process,
|
ObReferenceObjectByPointer(Process,
|
||||||
PROCESS_CREATE_THREAD,
|
PROCESS_CREATE_THREAD,
|
||||||
PsProcessType,
|
PsProcessType,
|
||||||
|
@ -584,13 +586,13 @@ NTSTATUS STDCALL NtCreateThread (PHANDLE ThreadHandle,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS PsCreateSystemThread(PHANDLE ThreadHandle,
|
NTSTATUS STDCALL PsCreateSystemThread(PHANDLE ThreadHandle,
|
||||||
ACCESS_MASK DesiredAccess,
|
ACCESS_MASK DesiredAccess,
|
||||||
POBJECT_ATTRIBUTES ObjectAttributes,
|
POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
HANDLE ProcessHandle,
|
HANDLE ProcessHandle,
|
||||||
PCLIENT_ID ClientId,
|
PCLIENT_ID ClientId,
|
||||||
PKSTART_ROUTINE StartRoutine,
|
PKSTART_ROUTINE StartRoutine,
|
||||||
PVOID StartContext)
|
PVOID StartContext)
|
||||||
/*
|
/*
|
||||||
* FUNCTION: Creates a thread which executes in kernel mode
|
* FUNCTION: Creates a thread which executes in kernel mode
|
||||||
* ARGUMENTS:
|
* ARGUMENTS:
|
||||||
|
|
|
@ -255,7 +255,7 @@ NTSTATUS STDCALL NtTerminateThread(IN HANDLE ThreadHandle,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS PsTerminateSystemThread(NTSTATUS ExitStatus)
|
NTSTATUS STDCALL PsTerminateSystemThread(NTSTATUS ExitStatus)
|
||||||
/*
|
/*
|
||||||
* FUNCTION: Terminates the current thread
|
* FUNCTION: Terminates the current thread
|
||||||
* ARGUMENTS:
|
* ARGUMENTS:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: process.c,v 1.42 2000/05/14 09:34:14 ea Exp $
|
/* $Id: process.c,v 1.43 2000/06/03 21:36:32 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -30,10 +30,10 @@
|
||||||
|
|
||||||
/* GLOBALS ******************************************************************/
|
/* GLOBALS ******************************************************************/
|
||||||
|
|
||||||
PEPROCESS SystemProcess = NULL;
|
PEPROCESS EXPORTED PsInitialSystemProcess = NULL;
|
||||||
HANDLE SystemProcessHandle = NULL;
|
HANDLE SystemProcessHandle = NULL;
|
||||||
|
|
||||||
POBJECT_TYPE PsProcessType = NULL;
|
POBJECT_TYPE EXPORTED PsProcessType = NULL;
|
||||||
|
|
||||||
static LIST_ENTRY PsProcessListHead;
|
static LIST_ENTRY PsProcessListHead;
|
||||||
static KSPIN_LOCK PsProcessListLock;
|
static KSPIN_LOCK PsProcessListLock;
|
||||||
|
@ -63,7 +63,7 @@ NTSTATUS STDCALL NtOpenProcessToken(IN HANDLE ProcessHandle,
|
||||||
return(Status);
|
return(Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
PACCESS_TOKEN PsReferencePrimaryToken(PEPROCESS Process)
|
PACCESS_TOKEN STDCALL PsReferencePrimaryToken(PEPROCESS Process)
|
||||||
{
|
{
|
||||||
ObReferenceObjectByPointer(Process->Token,
|
ObReferenceObjectByPointer(Process->Token,
|
||||||
GENERIC_ALL,
|
GENERIC_ALL,
|
||||||
|
@ -108,7 +108,7 @@ VOID PiKillMostProcesses(VOID)
|
||||||
Pcb.ProcessListEntry);
|
Pcb.ProcessListEntry);
|
||||||
current_entry = current_entry->Flink;
|
current_entry = current_entry->Flink;
|
||||||
|
|
||||||
if (current->UniqueProcessId != SystemProcess->UniqueProcessId &&
|
if (current->UniqueProcessId != PsInitialSystemProcess->UniqueProcessId &&
|
||||||
current->UniqueProcessId != (ULONG)PsGetCurrentProcessId())
|
current->UniqueProcessId != (ULONG)PsGetCurrentProcessId())
|
||||||
{
|
{
|
||||||
PiTerminateProcess(current, STATUS_SUCCESS);
|
PiTerminateProcess(current, STATUS_SUCCESS);
|
||||||
|
@ -155,22 +155,22 @@ VOID PsInitProcessManagment(VOID)
|
||||||
/*
|
/*
|
||||||
* Initialize the system process
|
* Initialize the system process
|
||||||
*/
|
*/
|
||||||
SystemProcess = ObCreateObject(NULL,
|
PsInitialSystemProcess = ObCreateObject(NULL,
|
||||||
PROCESS_ALL_ACCESS,
|
PROCESS_ALL_ACCESS,
|
||||||
NULL,
|
NULL,
|
||||||
PsProcessType);
|
PsProcessType);
|
||||||
SystemProcess->Pcb.BasePriority = PROCESS_PRIO_NORMAL;
|
PsInitialSystemProcess->Pcb.BasePriority = PROCESS_PRIO_NORMAL;
|
||||||
KeInitializeDispatcherHeader(&SystemProcess->Pcb.DispatcherHeader,
|
KeInitializeDispatcherHeader(&PsInitialSystemProcess->Pcb.DispatcherHeader,
|
||||||
InternalProcessType,
|
InternalProcessType,
|
||||||
sizeof(EPROCESS),
|
sizeof(EPROCESS),
|
||||||
FALSE);
|
FALSE);
|
||||||
KProcess = &SystemProcess->Pcb;
|
KProcess = &PsInitialSystemProcess->Pcb;
|
||||||
|
|
||||||
MmInitializeAddressSpace(SystemProcess,
|
MmInitializeAddressSpace(PsInitialSystemProcess,
|
||||||
&SystemProcess->Pcb.AddressSpace);
|
&PsInitialSystemProcess->Pcb.AddressSpace);
|
||||||
ObCreateHandleTable(NULL,FALSE,SystemProcess);
|
ObCreateHandleTable(NULL,FALSE,PsInitialSystemProcess);
|
||||||
KProcess->PageTableDirectory = get_page_directory();
|
KProcess->PageTableDirectory = get_page_directory();
|
||||||
SystemProcess->UniqueProcessId =
|
PsInitialSystemProcess->UniqueProcessId =
|
||||||
InterlockedIncrement(&PiNextProcessUniqueId);
|
InterlockedIncrement(&PiNextProcessUniqueId);
|
||||||
|
|
||||||
KeAcquireSpinLock(&PsProcessListLock, &oldIrql);
|
KeAcquireSpinLock(&PsProcessListLock, &oldIrql);
|
||||||
|
@ -178,10 +178,10 @@ VOID PsInitProcessManagment(VOID)
|
||||||
InitializeListHead( &KProcess->ThreadListHead );
|
InitializeListHead( &KProcess->ThreadListHead );
|
||||||
KeReleaseSpinLock(&PsProcessListLock, oldIrql);
|
KeReleaseSpinLock(&PsProcessListLock, oldIrql);
|
||||||
|
|
||||||
strcpy(SystemProcess->ImageFileName, "SYSTEM");
|
strcpy(PsInitialSystemProcess->ImageFileName, "SYSTEM");
|
||||||
|
|
||||||
ObCreateHandle(SystemProcess,
|
ObCreateHandle(PsInitialSystemProcess,
|
||||||
SystemProcess,
|
PsInitialSystemProcess,
|
||||||
PROCESS_ALL_ACCESS,
|
PROCESS_ALL_ACCESS,
|
||||||
FALSE,
|
FALSE,
|
||||||
&SystemProcessHandle);
|
&SystemProcessHandle);
|
||||||
|
@ -249,7 +249,7 @@ PKPROCESS KeGetCurrentProcess(VOID)
|
||||||
return(&(PsGetCurrentProcess()->Pcb));
|
return(&(PsGetCurrentProcess()->Pcb));
|
||||||
}
|
}
|
||||||
|
|
||||||
HANDLE PsGetCurrentProcessId(VOID)
|
HANDLE STDCALL PsGetCurrentProcessId(VOID)
|
||||||
{
|
{
|
||||||
return((HANDLE)PsGetCurrentProcess()->UniqueProcessId);
|
return((HANDLE)PsGetCurrentProcess()->UniqueProcessId);
|
||||||
}
|
}
|
||||||
|
@ -262,7 +262,7 @@ struct _EPROCESS* PsGetCurrentProcess(VOID)
|
||||||
if (PsGetCurrentThread() == NULL ||
|
if (PsGetCurrentThread() == NULL ||
|
||||||
PsGetCurrentThread()->ThreadsProcess == NULL)
|
PsGetCurrentThread()->ThreadsProcess == NULL)
|
||||||
{
|
{
|
||||||
return(SystemProcess);
|
return(PsInitialSystemProcess);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
/*
|
/* $Id: psmgr.c,v 1.7 2000/06/03 21:36:32 ekohl Exp $
|
||||||
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
* FILE: ntoskrnl/ps/psmgr.c
|
* FILE: ntoskrnl/ps/psmgr.c
|
||||||
|
@ -10,6 +11,7 @@
|
||||||
|
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
#include <internal/ps.h>
|
#include <internal/ps.h>
|
||||||
|
#include <reactos/version.h>
|
||||||
|
|
||||||
#include <internal/debug.h>
|
#include <internal/debug.h>
|
||||||
|
|
||||||
|
@ -29,3 +31,69 @@ VOID PiInitProcessManager(VOID)
|
||||||
PsInitIdleThread();
|
PsInitIdleThread();
|
||||||
PiInitApcManagement();
|
PiInitApcManagement();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* NAME EXPORTED
|
||||||
|
* PsGetVersion
|
||||||
|
*
|
||||||
|
* DESCRIPTION
|
||||||
|
* Retrieves the current OS version.
|
||||||
|
*
|
||||||
|
* ARGUMENTS
|
||||||
|
* MajorVersion Pointer to a variable that will be set to the
|
||||||
|
* major version of the OS. Can be NULL.
|
||||||
|
*
|
||||||
|
* MinorVersion Pointer to a variable that will be set to the
|
||||||
|
* minor version of the OS. Can be NULL.
|
||||||
|
*
|
||||||
|
* BuildNumber Pointer to a variable that will be set to the
|
||||||
|
* build number of the OS. Can be NULL.
|
||||||
|
*
|
||||||
|
* CSDVersion Pointer to a variable that will be set to the
|
||||||
|
* CSD string of the OS. Can be NULL.
|
||||||
|
*
|
||||||
|
* RETURN VALUE
|
||||||
|
* TRUE OS is a checked build.
|
||||||
|
* FALSE OS is a free build.
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* The DDK docs say something about a 'CmCSDVersionString'.
|
||||||
|
* How do we determine in the build is checked or free??
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
STDCALL
|
||||||
|
PsGetVersion (
|
||||||
|
PULONG MajorVersion OPTIONAL,
|
||||||
|
PULONG MinorVersion OPTIONAL,
|
||||||
|
PULONG BuildNumber OPTIONAL,
|
||||||
|
PUNICODE_STRING CSDVersion OPTIONAL
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (MajorVersion)
|
||||||
|
*MajorVersion = KERNEL_VERSION_MAJOR;
|
||||||
|
|
||||||
|
if (MinorVersion)
|
||||||
|
*MinorVersion = KERNEL_VERSION_MINOR;
|
||||||
|
|
||||||
|
if (BuildNumber)
|
||||||
|
*BuildNumber = NtBuildNumber;
|
||||||
|
|
||||||
|
if (CSDVersion)
|
||||||
|
{
|
||||||
|
CSDVersion->Length = 0;
|
||||||
|
CSDVersion->MaximumLength = 0;
|
||||||
|
CSDVersion->Buffer = NULL;
|
||||||
|
#if 0
|
||||||
|
CSDVersion->Length = CmCSDVersionString.Length;
|
||||||
|
CSDVersion->MaximumLength = CmCSDVersionString.Maximum;
|
||||||
|
CSDVersion->Buffer = CmCSDVersionString.Buffer;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FIXME: How do we determine if build is checked or free? */
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: thread.c,v 1.46 2000/05/13 13:51:08 dwelch Exp $
|
/* $Id: thread.c,v 1.47 2000/06/03 21:36:32 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
/* GLOBALS ******************************************************************/
|
/* GLOBALS ******************************************************************/
|
||||||
|
|
||||||
POBJECT_TYPE PsThreadType = NULL;
|
POBJECT_TYPE EXPORTED PsThreadType = NULL;
|
||||||
|
|
||||||
#define NR_THREAD_PRIORITY_LEVELS (32)
|
#define NR_THREAD_PRIORITY_LEVELS (32)
|
||||||
#define THREAD_PRIORITY_MAX (15)
|
#define THREAD_PRIORITY_MAX (15)
|
||||||
|
@ -116,7 +116,7 @@ PETHREAD PsGetCurrentThread(VOID)
|
||||||
return(CurrentThread);
|
return(CurrentThread);
|
||||||
}
|
}
|
||||||
|
|
||||||
HANDLE PsGetCurrentThreadId(VOID)
|
HANDLE STDCALL PsGetCurrentThreadId(VOID)
|
||||||
{
|
{
|
||||||
return(CurrentThread->Cid.UniqueThread);
|
return(CurrentThread->Cid.UniqueThread);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue