ntdll: Implement SystemRecommendedSharedDataAlignment class in NtQuerySystemInformation.

Sebastian Lackner sebastian at fds-team.de
Fri Feb 12 01:37:32 CST 2016


From: Michael Müller <michael at fds-team.de>

Signed-off-by: Michael Müller <michael at fds-team.de>
Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
---
 dlls/ntdll/nt.c         |   11 +++++++++++
 dlls/ntdll/tests/info.c |   16 ++++++++++++++++
 include/winternl.h      |    2 +-
 3 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index a18dfae..47d7b31 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -2317,6 +2317,17 @@ NTSTATUS WINAPI NtQuerySystemInformation(
             RtlFreeHeap(GetProcessHeap(), 0, buf);
         }
         break;
+    case SystemRecommendedSharedDataAlignment:
+        {
+            len = sizeof(DWORD);
+            if (Length >= len)
+            {
+                if (!SystemInformation) ret = STATUS_ACCESS_VIOLATION;
+                else *((DWORD *)SystemInformation) = 64;
+            }
+            else ret = STATUS_INFO_LENGTH_MISMATCH;
+        }
+        break;
     default:
 	FIXME("(0x%08x,%p,0x%08x,%p) stub\n",
 	      SystemInformationClass,SystemInformation,Length,ResultLength);
diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c
index c9b6703..be355fb 100644
--- a/dlls/ntdll/tests/info.c
+++ b/dlls/ntdll/tests/info.c
@@ -1984,6 +1984,19 @@ static void test_thread_start_address(void)
     CloseHandle(thread);
 }
 
+static void test_query_data_alignment(void)
+{
+    ULONG ReturnLength;
+    NTSTATUS status;
+    DWORD value;
+
+    value = 0xdeadbeef;
+    status = pNtQuerySystemInformation(SystemRecommendedSharedDataAlignment, &value, sizeof(value), &ReturnLength);
+    ok(status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status);
+    ok(sizeof(value) == ReturnLength, "Inconsistent length %u\n", ReturnLength);
+    ok(value == 64, "Expected 64, got %u\n", value);
+}
+
 START_TEST(info)
 {
     char **argv;
@@ -2116,4 +2129,7 @@ START_TEST(info)
 
     trace("Starting test_thread_start_address()\n");
     test_thread_start_address();
+
+    trace("Starting test_query_data_alignment()\n");
+    test_query_data_alignment();
 }
diff --git a/include/winternl.h b/include/winternl.h
index 51320f2..9b40fd4 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -826,7 +826,7 @@ typedef enum _SYSTEM_INFORMATION_CLASS {
     Unknown55,
     Unknown56,
     Unknown57,
-    Unknown58,
+    SystemRecommendedSharedDataAlignment = 58,
     Unknown59,
     Unknown60,
     Unknown61,
-- 
2.7.1



More information about the wine-patches mailing list