From 834dbc5fd5ba42f101e2266b197f2774e950f757 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Wed, 22 Jan 2003 02:24:36 +0000 Subject: [PATCH] Fixed some warnings. Added missing stubs. Implemented GetThreadPriotityBoost() and SetThreadPriorityBoost(). svn path=/trunk/; revision=4052 --- reactos/lib/kernel32/misc/stubs.c | 130 +++++++++----------- reactos/lib/kernel32/process/create.c | 16 +-- reactos/lib/kernel32/process/proc.c | 80 ++++++++----- reactos/lib/kernel32/thread/thread.c | 163 ++++++++++++++++++-------- 4 files changed, 223 insertions(+), 166 deletions(-) diff --git a/reactos/lib/kernel32/misc/stubs.c b/reactos/lib/kernel32/misc/stubs.c index 794279f6bf6..6aa1a2d1014 100644 --- a/reactos/lib/kernel32/misc/stubs.c +++ b/reactos/lib/kernel32/misc/stubs.c @@ -1,4 +1,4 @@ -/* $Id: stubs.c,v 1.43 2003/01/21 20:50:51 robd Exp $ +/* $Id: stubs.c,v 1.44 2003/01/22 02:23:48 ekohl Exp $ * * KERNEL32.DLL stubs (unimplemented functions) * Remove from this file, if you implement them. @@ -25,6 +25,14 @@ BaseAttachCompleteThunk (VOID) } +BOOL STDCALL +CancelIo(HANDLE hFile) +{ + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + + BOOL STDCALL CmdBatNotification ( @@ -593,32 +601,6 @@ GetThreadLocale (VOID) #endif -WINBOOL -STDCALL -GetThreadPriorityBoost ( - HANDLE hThread, - DWORD dwSelector, - LPLDT_ENTRY lpSelectorEntry - ) -{ - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; -} - - -WINBOOL -STDCALL -GetThreadSelectorEntry ( - HANDLE hThread, - DWORD dwSelector, - LPLDT_ENTRY lpSelectorEntry - ) -{ - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; -} - - int STDCALL GetTimeFormatW ( @@ -870,6 +852,47 @@ SetComputerNameW ( } +#ifndef _OLE2NLS_IN_BUILD_ + +WINBOOL +STDCALL +SetLocaleInfoA ( + LCID Locale, + LCTYPE LCType, + LPCSTR lpLCData + ) +{ + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + + +WINBOOL +STDCALL +SetLocaleInfoW ( + LCID Locale, + LCTYPE LCType, + LPCWSTR lpLCData + ) +{ + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + + +WINBOOL +STDCALL +SetThreadLocale ( + LCID Locale + ) +{ + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +#endif + + WINBOOL STDCALL SetSystemPowerState ( @@ -884,16 +907,8 @@ SetSystemPowerState ( WINBOOL STDCALL -SetThreadIdealProcessor(VOID) -{ - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return 0; -} - - -WINBOOL -STDCALL -SetThreadPriorityBoost(VOID) +SetThreadIdealProcessor(HANDLE hThread, + DWORD dwIdealProcessor) { SetLastError(ERROR_CALL_NOT_IMPLEMENTED); return 0; @@ -945,45 +960,9 @@ VDMOperationStarted ( return 0; } + #ifndef _OLE2NLS_IN_BUILD_ -WINBOOL -STDCALL -SetLocaleInfoA ( - LCID Locale, - LCTYPE LCType, - LPCSTR lpLCData - ) -{ - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; -} - - -WINBOOL -STDCALL -SetLocaleInfoW ( - LCID Locale, - LCTYPE LCType, - LPCWSTR lpLCData - ) -{ - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; -} - - -WINBOOL -STDCALL -SetThreadLocale ( - LCID Locale - ) -{ - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; -} - - DWORD STDCALL VerLanguageNameA ( @@ -1023,6 +1002,7 @@ VirtualBufferExceptionHandler ( return 0; } + BOOL STDCALL GetFileAttributesExA( @@ -1035,6 +1015,7 @@ GetFileAttributesExA( return 0; } + BOOL STDCALL GetFileAttributesExW( @@ -1047,5 +1028,4 @@ GetFileAttributesExW( return 0; } - /* EOF */ diff --git a/reactos/lib/kernel32/process/create.c b/reactos/lib/kernel32/process/create.c index dcc8ec55113..859a3cfaafd 100644 --- a/reactos/lib/kernel32/process/create.c +++ b/reactos/lib/kernel32/process/create.c @@ -1,4 +1,4 @@ -/* $Id: create.c,v 1.60 2003/01/19 01:13:04 gvg Exp $ +/* $Id: create.c,v 1.61 2003/01/22 02:24:10 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -823,13 +823,13 @@ CreateProcessW(LPCWSTR lpApplicationName, DPRINT("Launching VDM...\n"); return CreateProcessW(L"ntvdm.exe", - lpApplicationName, + (LPWSTR)lpApplicationName, lpProcessAttributes, lpThreadAttributes, bInheritHandles, - dwCreationFlags, - lpEnvironment, - lpCurrentDirectory, + dwCreationFlags, + lpEnvironment, + lpCurrentDirectory, lpStartupInfo, lpProcessInformation); } @@ -865,7 +865,7 @@ CreateProcessW(LPCWSTR lpApplicationName, RuntimeInfo_U.Buffer = RtlAllocateHeap(GetProcessHeap(), 0, RuntimeInfo_U.Length); memcpy(RuntimeInfo_U.Buffer, lpStartupInfo->lpReserved2, lpStartupInfo->cbReserved2); } - } + } /* * Create the PPB @@ -883,14 +883,14 @@ CreateProcessW(LPCWSTR lpApplicationName, if (lpStartupInfo && lpStartupInfo->lpReserved2) RtlFreeHeap(GetProcessHeap(), 0, RuntimeInfo_U.Buffer); - + /* * Translate some handles for the new process */ if (Ppb->CurrentDirectoryHandle) { - Status = NtDuplicateObject (NtCurrentProcess(), + Status = NtDuplicateObject (NtCurrentProcess(), Ppb->CurrentDirectoryHandle, hProcess, &Ppb->CurrentDirectoryHandle, diff --git a/reactos/lib/kernel32/process/proc.c b/reactos/lib/kernel32/process/proc.c index a8ed9732a07..7f48126e6e6 100644 --- a/reactos/lib/kernel32/process/proc.c +++ b/reactos/lib/kernel32/process/proc.c @@ -1,4 +1,4 @@ -/* $Id: proc.c,v 1.50 2003/01/15 21:24:35 chorns Exp $ +/* $Id: proc.c,v 1.51 2003/01/22 02:24:10 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -25,14 +25,14 @@ WaitForInputIdleType lpfnGlobalRegisterWaitForInputIdle; LPSTARTUPINFO lpLocalStartupInfo = NULL; VOID STDCALL -RegisterWaitForInputIdle (WaitForInputIdleType lpfnRegisterWaitForInputIdle); +RegisterWaitForInputIdle(WaitForInputIdleType lpfnRegisterWaitForInputIdle); + +WINBOOL STDCALL +GetProcessId (HANDLE hProcess, LPDWORD lpProcessId); /* FUNCTIONS ****************************************************************/ -WINBOOL STDCALL -GetProcessId (HANDLE hProcess, LPDWORD lpProcessId); - WINBOOL STDCALL GetProcessAffinityMask(HANDLE hProcess, LPDWORD lpProcessAffinityMask, @@ -54,6 +54,14 @@ GetProcessAffinityMask(HANDLE hProcess, } +BOOL STDCALL +SetProcessAffinityMask(HANDLE hProcess, + DWORD dwProcessAffinityMask) +{ + return(FALSE); +} + + WINBOOL STDCALL GetProcessShutdownParameters(LPDWORD lpdwLevel, LPDWORD lpdwFlags) @@ -111,8 +119,24 @@ GetProcessWorkingSetSize(HANDLE hProcess, LPDWORD lpMinimumWorkingSetSize, LPDWORD lpMaximumWorkingSetSize) { - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return(FALSE); + QUOTA_LIMITS QuotaLimits; + NTSTATUS Status; + + Status = NtQueryInformationProcess(hProcess, + ProcessQuotaLimits, + &QuotaLimits, + sizeof(QUOTA_LIMITS), + NULL); + if (!NT_SUCCESS(Status)) + { + SetLastErrorByStatus(Status); + return(FALSE); + } + + *lpMinimumWorkingSetSize = (DWORD)QuotaLimits.MinimumWorkingSetSize; + *lpMaximumWorkingSetSize = (DWORD)QuotaLimits.MaximumWorkingSetSize; + + return(TRUE); } @@ -147,7 +171,7 @@ GetProcessTimes(HANDLE hProcess, return(FALSE); } - lpCreationTime->dwLowDateTime = Kut.CreateTime.u.LowPart; + lpCreationTime->dwLowDateTime = Kut.CreateTime.u.LowPart; lpCreationTime->dwHighDateTime = Kut.CreateTime.u.HighPart; lpExitTime->dwLowDateTime = Kut.ExitTime.u.LowPart; @@ -213,22 +237,24 @@ WINBOOL STDCALL GetProcessId(HANDLE hProcess, LPDWORD lpProcessId) { - NTSTATUS errCode; - PROCESS_BASIC_INFORMATION ProcessBasic; - ULONG BytesWritten; + PROCESS_BASIC_INFORMATION ProcessBasic; + ULONG BytesWritten; + NTSTATUS Status; - errCode = NtQueryInformationProcess(hProcess, - ProcessBasicInformation, - &ProcessBasic, - sizeof(PROCESS_BASIC_INFORMATION), - &BytesWritten); - if (!NT_SUCCESS(errCode)) - { - SetLastErrorByStatus (errCode); - return FALSE; - } - memcpy( lpProcessId ,&ProcessBasic.UniqueProcessId,sizeof(DWORD)); - return TRUE; + Status = NtQueryInformationProcess(hProcess, + ProcessBasicInformation, + &ProcessBasic, + sizeof(PROCESS_BASIC_INFORMATION), + &BytesWritten); + if (!NT_SUCCESS(Status)) + { + SetLastErrorByStatus(Status); + return(FALSE); + } + + memcpy(lpProcessId, &ProcessBasic.UniqueProcessId, sizeof(DWORD)); + + return(TRUE); } @@ -690,12 +716,4 @@ GetProcessVersion (DWORD ProcessId) return (Version); } - -BOOL STDCALL -SetProcessAffinityMask(HANDLE hProcess, DWORD dwProcessAffinityMask) -{ - return FALSE; -} - - /* EOF */ diff --git a/reactos/lib/kernel32/thread/thread.c b/reactos/lib/kernel32/thread/thread.c index 140ca3d9296..1167b5a58ed 100644 --- a/reactos/lib/kernel32/thread/thread.c +++ b/reactos/lib/kernel32/thread/thread.c @@ -1,4 +1,4 @@ -/* $Id: thread.c,v 1.33 2003/01/15 21:24:36 chorns Exp $ +/* $Id: thread.c,v 1.34 2003/01/22 02:24:36 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -18,7 +18,7 @@ #include -static VOID ThreadAttachDlls (VOID); +//static VOID ThreadAttachDlls (VOID); /* FUNCTIONS *****************************************************************/ @@ -62,13 +62,13 @@ CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwCreationFlags, LPDWORD lpThreadId) { - return(CreateRemoteThread(NtCurrentProcess(), - lpThreadAttributes, - dwStackSize, - lpStartAddress, - lpParameter, - dwCreationFlags, - lpThreadId)); + return(CreateRemoteThread(NtCurrentProcess(), + lpThreadAttributes, + dwStackSize, + lpStartAddress, + lpParameter, + dwCreationFlags, + lpThreadId)); } @@ -258,34 +258,33 @@ GetCurrentThreadId(VOID) VOID STDCALL ExitThread(DWORD uExitCode) { - NTSTATUS errCode; - BOOLEAN LastThread; - NTSTATUS Status; + BOOLEAN LastThread; + NTSTATUS Status; - /* - * Terminate process if this is the last thread - * of the current process - */ - Status = NtQueryInformationThread(NtCurrentThread(), - ThreadAmILastThread, - &LastThread, - sizeof(BOOLEAN), - NULL); - if (NT_SUCCESS(Status) && LastThread == TRUE) - { - ExitProcess (uExitCode); - } + /* + * Terminate process if this is the last thread + * of the current process + */ + Status = NtQueryInformationThread(NtCurrentThread(), + ThreadAmILastThread, + &LastThread, + sizeof(BOOLEAN), + NULL); + if (NT_SUCCESS(Status) && LastThread == TRUE) + { + ExitProcess(uExitCode); + } - /* FIXME: notify csrss of thread termination */ + /* FIXME: notify csrss of thread termination */ - LdrShutdownThread(); + LdrShutdownThread(); - errCode = NtTerminateThread(NtCurrentThread(), - uExitCode); - if (!NT_SUCCESS(errCode)) - { - SetLastErrorByStatus(errCode); - } + Status = NtTerminateThread(NtCurrentThread(), + uExitCode); + if (!NT_SUCCESS(Status)) + { + SetLastErrorByStatus(Status); + } } @@ -296,25 +295,27 @@ GetThreadTimes(HANDLE hThread, LPFILETIME lpKernelTime, LPFILETIME lpUserTime) { - NTSTATUS errCode; - KERNEL_USER_TIMES KernelUserTimes; - ULONG ReturnLength; - - errCode = NtQueryInformationThread(hThread, - ThreadTimes, - &KernelUserTimes, - sizeof(KERNEL_USER_TIMES), - &ReturnLength); - if (!NT_SUCCESS(errCode)) - { - SetLastErrorByStatus(errCode); - return FALSE; - } - memcpy(lpCreationTime, &KernelUserTimes.CreateTime, sizeof(FILETIME)); - memcpy(lpExitTime, &KernelUserTimes.ExitTime, sizeof(FILETIME)); - memcpy(lpKernelTime, &KernelUserTimes.KernelTime, sizeof(FILETIME)); - memcpy(lpUserTime, &KernelUserTimes.UserTime, sizeof(FILETIME)); - return TRUE; + KERNEL_USER_TIMES KernelUserTimes; + ULONG ReturnLength; + NTSTATUS Status; + + Status = NtQueryInformationThread(hThread, + ThreadTimes, + &KernelUserTimes, + sizeof(KERNEL_USER_TIMES), + &ReturnLength); + if (!NT_SUCCESS(Status)) + { + SetLastErrorByStatus(Status); + return(FALSE); + } + + memcpy(lpCreationTime, &KernelUserTimes.CreateTime, sizeof(FILETIME)); + memcpy(lpExitTime, &KernelUserTimes.ExitTime, sizeof(FILETIME)); + memcpy(lpKernelTime, &KernelUserTimes.KernelTime, sizeof(FILETIME)); + memcpy(lpUserTime, &KernelUserTimes.UserTime, sizeof(FILETIME)); + + return(TRUE); } @@ -528,4 +529,62 @@ GetThreadPriority(HANDLE hThread) return(ThreadBasic.BasePriority); } + +WINBOOL STDCALL +GetThreadPriorityBoost(IN HANDLE hThread, + OUT PBOOL pDisablePriorityBoost) +{ + ULONG PriorityBoost; + ULONG DataWritten; + NTSTATUS Status; + + Status = NtQueryInformationThread(hThread, + ThreadPriorityBoost, + &PriorityBoost, + sizeof(ULONG), + &DataWritten); + if (!NT_SUCCESS(Status)) + { + SetLastErrorByStatus(Status); + return(FALSE); + } + + *pDisablePriorityBoost = !((WINBOOL)PriorityBoost); + + return(TRUE); +} + + +WINBOOL STDCALL +SetThreadPriorityBoost(IN HANDLE hThread, + IN WINBOOL bDisablePriorityBoost) +{ + ULONG PriorityBoost; + NTSTATUS Status; + + PriorityBoost = (ULONG)!bDisablePriorityBoost; + + Status = NtSetInformationThread(hThread, + ThreadPriorityBoost, + &PriorityBoost, + sizeof(ULONG)); + if (!NT_SUCCESS(Status)) + { + SetLastErrorByStatus(Status); + return(FALSE); + } + + return(TRUE); +} + + +WINBOOL STDCALL +GetThreadSelectorEntry(IN HANDLE hThread, + IN DWORD dwSelector, + OUT LPLDT_ENTRY lpSelectorEntry) +{ + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return(FALSE); +} + /* EOF */