[PATCH 2/3] ntdll: Add NtQuerySystemInformationEx() stub

Nikolay Sivov nsivov at codeweavers.com
Sun Jan 3 16:56:47 CST 2016


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/ntdll/nt.c         | 12 ++++++++++++
 dlls/ntdll/ntdll.spec   |  2 ++
 dlls/ntdll/tests/info.c |  8 +++++---
 include/winternl.h      |  1 +
 4 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 55255a8..9ee1923 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -2172,6 +2172,18 @@ NTSTATUS WINAPI NtQuerySystemInformation(
 }
 
 /******************************************************************************
+ * NtQuerySystemInformationEx [NTDLL.@]
+ * ZwQuerySystemInformationEx [NTDLL.@]
+ */
+NTSTATUS WINAPI NtQuerySystemInformationEx(SYSTEM_INFORMATION_CLASS SystemInformationClass,
+    void *Query, ULONG QueryLength, void *SystemInformation, ULONG Length, ULONG *ResultLength)
+{
+    FIXME("(0x%08x,%p,%u,%p,%u,%p) stub\n", SystemInformationClass, Query, QueryLength, SystemInformation,
+        Length, ResultLength);
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+/******************************************************************************
  * NtSetSystemInformation [NTDLL.@]
  * ZwSetSystemInformation [NTDLL.@]
  */
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 8cabf95..a96edb1 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -274,6 +274,7 @@
 @ stdcall NtQuerySystemEnvironmentValue(ptr ptr long ptr)
 @ stdcall NtQuerySystemEnvironmentValueEx(ptr ptr ptr ptr ptr)
 @ stdcall NtQuerySystemInformation(long long long long)
+@ stdcall NtQuerySystemInformationEx(long ptr long ptr long ptr)
 @ stdcall NtQuerySystemTime(ptr)
 @ stdcall NtQueryTimer(ptr long ptr long ptr)
 @ stdcall NtQueryTimerResolution(long long long)
@@ -1193,6 +1194,7 @@
 @ stdcall ZwQuerySystemEnvironmentValue(ptr ptr long ptr) NtQuerySystemEnvironmentValue
 @ stdcall ZwQuerySystemEnvironmentValueEx(ptr ptr ptr ptr ptr) NtQuerySystemEnvironmentValueEx
 @ stdcall ZwQuerySystemInformation(long long long long) NtQuerySystemInformation
+@ stdcall ZwQuerySystemInformationEx(long ptr long ptr long ptr) NtQuerySystemInformationEx
 @ stdcall ZwQuerySystemTime(ptr) NtQuerySystemTime
 @ stdcall ZwQueryTimer(ptr long ptr long ptr) NtQueryTimer
 @ stdcall ZwQueryTimerResolution(long long long) NtQueryTimerResolution
diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c
index 199fb2d..ae907ed 100644
--- a/dlls/ntdll/tests/info.c
+++ b/dlls/ntdll/tests/info.c
@@ -88,7 +88,7 @@ static BOOL InitFunctionPtrs(void)
     /* starting with Win7 */
     pNtQuerySystemInformationEx = (void *) GetProcAddress(hntdll, "NtQuerySystemInformationEx");
     if (!pNtQuerySystemInformationEx)
-        skip("NtQuerySystemInformationEx() is not supported, some tests will be skipped.\n");
+        win_skip("NtQuerySystemInformationEx() is not supported, some tests will be skipped.\n");
 
     pGetLogicalProcessorInformationEx = (void *) GetProcAddress(hkernel32, "GetLogicalProcessorInformationEx");
 
@@ -721,15 +721,17 @@ static void test_query_logicalprocex(void)
     len = 0;
     relationship = RelationAll;
     status = pNtQuerySystemInformationEx(SystemLogicalProcessorInformationEx, &relationship, sizeof(relationship), NULL, 0, &len);
+todo_wine {
     ok(status == STATUS_INFO_LENGTH_MISMATCH, "got 0x%08x\n", status);
     ok(len > 0, "got %u\n", len);
-
+}
     len2 = 0;
     ret = pGetLogicalProcessorInformationEx(RelationAll, NULL, &len2);
+todo_wine
     ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "got %d, error %d\n", ret, GetLastError());
     ok(len == len2, "got %u, expected %u\n", len2, len);
 
-    if (len == len2) {
+    if (len && len == len2) {
         infoex = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
         infoex2 = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
 
diff --git a/include/winternl.h b/include/winternl.h
index 788e15a..42ecb5b 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2242,6 +2242,7 @@ NTSYSAPI NTSTATUS  WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PV
 NTSYSAPI NTSTATUS  WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
 NTSYSAPI NTSTATUS  WINAPI NtQuerySystemEnvironmentValue(PUNICODE_STRING,PWCHAR,ULONG,PULONG);
 NTSYSAPI NTSTATUS  WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
+NTSYSAPI NTSTATUS  WINAPI NtQuerySystemInformationEx(SYSTEM_INFORMATION_CLASS,void*,ULONG,void*,ULONG,ULONG*);
 NTSYSAPI NTSTATUS  WINAPI NtQuerySystemTime(PLARGE_INTEGER);
 NTSYSAPI NTSTATUS  WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG);
 NTSYSAPI NTSTATUS  WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG);
-- 
2.6.4




More information about the wine-patches mailing list