From 2e74dd3e76d5b8714031c92485e73ddaf7e8ea7c Mon Sep 17 00:00:00 2001 From: Dmitry Gorbachev Date: Thu, 6 Aug 2009 22:53:04 +0000 Subject: [PATCH] Add GetLogicalProcessorInformation() and a stub for ReOpenFile() by Alwyn Tan's request. svn path=/trunk/; revision=42440 --- reactos/dll/win32/kernel32/kernel32.pspec | 2 ++ reactos/dll/win32/kernel32/misc/stubs.c | 9 ------ reactos/dll/win32/kernel32/misc/sysinfo.c | 36 +++++++++++++++++++++++ 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/reactos/dll/win32/kernel32/kernel32.pspec b/reactos/dll/win32/kernel32/kernel32.pspec index 631a70a4a0c..353da456ec2 100644 --- a/reactos/dll/win32/kernel32/kernel32.pspec +++ b/reactos/dll/win32/kernel32/kernel32.pspec @@ -400,6 +400,7 @@ @ stdcall GetLogicalDriveStringsA(long ptr) @ stdcall GetLogicalDriveStringsW(long ptr) @ stdcall GetLogicalDrives() +@ stdcall GetLogicalProcessorInformation(ptr ptr) @ stdcall GetLongPathNameA (str long long) @ stdcall GetLongPathNameW (wstr long long) @ stdcall GetMailslotInfo(long ptr ptr ptr ptr) @@ -710,6 +711,7 @@ @ stdcall QueueUserAPC(ptr long long) @ stdcall QueueUserWorkItem(ptr ptr long) @ stdcall RaiseException(long long long ptr) +@ stub ReOpenFile ;@ stdcall ReOpenFile(ptr long long long) @ stdcall ReadConsoleA(long ptr long ptr ptr) @ stdcall ReadConsoleInputA(long ptr long ptr) @ stdcall ReadConsoleInputExA(long ptr long ptr long) diff --git a/reactos/dll/win32/kernel32/misc/stubs.c b/reactos/dll/win32/kernel32/misc/stubs.c index 4c73e9a9505..5ecdad28638 100644 --- a/reactos/dll/win32/kernel32/misc/stubs.c +++ b/reactos/dll/win32/kernel32/misc/stubs.c @@ -992,15 +992,6 @@ GetProcessWorkingSetSizeEx(IN HANDLE hProcess, return FALSE; } -BOOL -WINAPI -GetLogicalProcessorInformation(OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION Buffer, - IN OUT PDWORD ReturnLength) -{ - STUB; - return FALSE; -} - BOOL WINAPI GetNumaAvailableMemoryNode(IN UCHAR Node, diff --git a/reactos/dll/win32/kernel32/misc/sysinfo.c b/reactos/dll/win32/kernel32/misc/sysinfo.c index c33402e5f2b..612b7eddc15 100644 --- a/reactos/dll/win32/kernel32/misc/sysinfo.c +++ b/reactos/dll/win32/kernel32/misc/sysinfo.c @@ -232,3 +232,39 @@ GetNativeSystemInfo( // GetNativeSystemInfo should return PROCESSOR_ARCHITECTURE_AMD64 GetSystemInfo(lpSystemInfo); } + +/* + * @implemented + */ +BOOL +WINAPI +GetLogicalProcessorInformation(OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION Buffer, + IN OUT PDWORD ReturnLength) +{ + NTSTATUS Status; + + if (!ReturnLength) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + Status = NtQuerySystemInformation(SystemLogicalProcessorInformation, + Buffer, + *ReturnLength, + ReturnLength); + + if (!NT_SUCCESS(Status)) + { + /* + * When NtQuerySystemInformation says STATUS_INFO_LENGTH_MISMATCH, + * return ERROR_INSUFFICIENT_BUFFER instead of ERROR_BAD_LENGTH. + */ + SetLastErrorByStatus(Status == STATUS_INFO_LENGTH_MISMATCH + ? STATUS_BUFFER_TOO_SMALL + : Status); + return FALSE; + } + + return TRUE; +}