ReactOS 0.4.16-dev-2104-gb84fa49
NtUserProcessConnect.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS api tests
3 * LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
4 * PURPOSE: Test for NtUserProcessConnect
5 * COPYRIGHT: Copyright 2008-2020 Timo Kreuzer
6 * Copyright 2021 Hermes Belusca-Maito
7 */
8
9#include "../win32nt.h"
10
11#define NTOS_MODE_USER
12#include <ndk/exfuncs.h>
13
15{
18 USERCONNECT UserConnect = {0};
19 SYSTEM_BASIC_INFORMATION SystemInformation;
20 ULONG_PTR MaximumUserModeAddress;
21
23
24 UserConnect.ulVersion = MAKELONG(0, 5); // == USER_VERSION
25 // UserConnect.dwDispatchCount;
26 Status = NtUserProcessConnect(hProcess, &UserConnect, sizeof(UserConnect));
27
29 {
31 skip("NtUserProcessConnect can only be called by CSRSS on Vista and later.\n");
32 return;
33 }
34
36
37 printf("UserConnect.ulVersion = 0x%lx\n", UserConnect.ulVersion);
38 printf("UserConnect.ulCurrentVersion = 0x%lx\n", UserConnect.ulCurrentVersion);
39 printf("UserConnect.dwDispatchCount = 0x%lx\n", UserConnect.dwDispatchCount);
40 printf("UserConnect.siClient.psi = 0x%p\n", UserConnect.siClient.psi);
41 printf("UserConnect.siClient.aheList = 0x%p\n", UserConnect.siClient.aheList);
42 printf("UserConnect.siClient.pDispInfo = 0x%p\n", UserConnect.siClient.pDispInfo);
43 printf("UserConnect.siClient.ulSharedDelta = 0x%Ix\n", UserConnect.siClient.ulSharedDelta);
44
45 /* Verify the validity of some mandatory fields */
46 TEST(UserConnect.ulVersion == MAKELONG(0, 5));
47 TEST(UserConnect.ulCurrentVersion == 0);
48 TEST(UserConnect.siClient.ulSharedDelta != 0);
49
50 /* Get the max um address */
52 &SystemInformation,
53 sizeof(SystemInformation),
54 NULL);
56
57 MaximumUserModeAddress = SystemInformation.MaximumUserModeAddress;
58
59 /* Verify the validity of pointers -- They must be in client space */
60 TEST(UserConnect.siClient.psi != NULL);
61 TEST(UserConnect.siClient.aheList != NULL);
62 // TEST(UserConnect.siClient.pDispInfo != NULL);
63 TEST((ULONG_PTR)UserConnect.siClient.psi < MaximumUserModeAddress);
64 TEST((ULONG_PTR)UserConnect.siClient.aheList < MaximumUserModeAddress);
65 // TEST((ULONG_PTR)UserConnect.siClient.pDispInfo < MaximumUserModeAddress);
66}
#define GetNTVersion()
Definition: apitest.h:17
#define ok_ntstatus(status, expected)
Definition: atltest.h:135
#define skip(...)
Definition: atltest.h:64
#define START_TEST(x)
Definition: atltest.h:75
LONG NTSTATUS
Definition: precomp.h:26
#define NULL
Definition: types.h:112
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
#define GetCurrentProcess()
Definition: compat.h:759
@ SystemBasicInformation
Definition: ntddk_ex.h:11
#define printf
Definition: freeldr.h:97
Status
Definition: gdiplustypes.h:25
NTSTATUS NTAPI NtUserProcessConnect(IN HANDLE ProcessHandle, OUT PUSERCONNECT pUserConnect, IN ULONG Size)
Definition: ntstubs.c:476
_In_ BOOL _In_ HANDLE hProcess
Definition: mapping.h:71
#define TEST(x)
Definition: precomp.h:20
#define _WIN32_WINNT_VISTA
Definition: sdkddkver.h:25
#define STATUS_SUCCESS
Definition: shellext.h:65
NTSYSAPI NTSTATUS NTAPI NtQuerySystemInformation(IN SYSTEM_INFORMATION_CLASS SystemInfoClass, OUT PVOID SystemInfoBuffer, IN ULONG SystemInfoBufferSize, OUT PULONG BytesReturned OPTIONAL)
PVOID aheList
Definition: ntuser.h:1131
PSERVERINFO psi
Definition: ntuser.h:1130
PVOID pDispInfo
Definition: ntuser.h:1132
ULONG_PTR ulSharedDelta
Definition: ntuser.h:1133
ULONG ulVersion
Definition: ntuser.h:1142
DWORD dwDispatchCount
Definition: ntuser.h:1144
ULONG ulCurrentVersion
Definition: ntuser.h:1143
SHAREDINFO siClient
Definition: ntuser.h:1145
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define MAKELONG(a, b)
Definition: typedefs.h:249
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132