12#define READY_EVENT L"user32_apitest_UserHandleGrantAccess_ready"
13#define QUIT_EVENT L"user32_apitest_UserHandleGrantAccess_quit"
15#define GrantAccess(handle, job) UserHandleGrantAccess((handle), (job), TRUE)
16#define RevokeAccess(handle, job) UserHandleGrantAccess((handle), (job), FALSE)
23#define JOB_LOCKDOWN_UI (JOB_OBJECT_UILIMIT_HANDLES | \
24 JOB_OBJECT_UILIMIT_READCLIPBOARD | \
25 JOB_OBJECT_UILIMIT_WRITECLIPBOARD | \
26 JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS| \
27 JOB_OBJECT_UILIMIT_DISPLAYSETTINGS | \
28 JOB_OBJECT_UILIMIT_GLOBALATOMS | \
29 JOB_OBJECT_UILIMIT_DESKTOP | \
30 JOB_OBJECT_UILIMIT_EXITWINDOWS)
46 if (Restrictions != 0)
48 Info.UIRestrictionsClass = Restrictions;
54 skip(
"Setting restrictions 0x%lx failed with %lu\n",
74 L"UserHandleGrantAccess",
81 skip(
"No window to grant access to\n");
91 ok(
Success ==
FALSE,
"Granting to an unrestricted job succeeded\n");
103 ok(
Success !=
FALSE,
"Granting to a restricted job failed with %lu\n",
133 ok(
Success ==
FALSE,
"Granting a handle that does not exist succeeded\n");
142 if (hWndGone !=
NULL)
171 if (Windows[
i] ==
NULL)
202 if (Windows[
i] ==
NULL)
237 ok(
Success ==
FALSE,
"Granting against a process handle succeeded\n");
258 L"\"%ls\" UserHandleGrantAccess child",
261 ZeroMemory(&StartupInfo,
sizeof(StartupInfo));
262 StartupInfo.
cb =
sizeof(StartupInfo);
328 skip(
"The test is already running in a job\n");
332 ok(
Success !=
FALSE,
"AssignProcessToJobObject failed with %lu\n",
346 ok(
Success !=
FALSE,
"Restricting a populated job failed with %lu\n",
349 Info.UIRestrictionsClass = 0;
355 ok(
Success !=
FALSE,
"Clearing the restrictions failed with %lu\n",
381 if (hReady !=
NULL && hQuit !=
NULL)
static HANDLE CreateRestrictedJob(_In_ ULONG Restrictions)
static HANDLE StartChild(_Out_ PHANDLE Thread)
#define GrantAccess(handle, job)
#define RevokeAccess(handle, job)
static void test_ProcessInJob(_In_ BOOL RestrictFirst)
static void RunChild(void)
static void test_GrantAccess(void)
static void RunProcessInJob(_In_ BOOL RestrictFirst, _In_ HANDLE hReady, _In_ HANDLE hQuit)
#define ERROR_INVALID_PARAMETER
#define GetCurrentProcess()
#define ERROR_ACCESS_DENIED
BOOL WINAPI SetInformationJobObject(_In_ HANDLE hJob, _In_ JOBOBJECTINFOCLASS JobObjectInformationClass, _In_reads_bytes_(cbJobObjectInformationLength) LPVOID lpJobObjectInformation, _In_ DWORD cbJobObjectInformationLength)
HANDLE WINAPI CreateJobObjectW(_In_ LPSECURITY_ATTRIBUTES lpJobAttributes, _In_ LPCWSTR lpName)
BOOL WINAPI AssignProcessToJobObject(_In_ HANDLE hJob, _In_ HANDLE hProcess)
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
BOOL WINAPI TerminateProcess(IN HANDLE hProcess, IN UINT uExitCode)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
@ JobObjectBasicUIRestrictions
#define JOB_OBJECT_UILIMIT_HANDLES
#define JOB_OBJECT_UILIMIT_EXITWINDOWS
_In_ BOOL _In_ HANDLE hProcess
int winetest_get_mainargs(char ***pargv)
STRSAFEAPI StringCbPrintfW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszFormat,...)
HANDLE WINAPI DECLSPEC_HOTPATCH OpenEventW(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCWSTR lpName)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
BOOL WINAPI DECLSPEC_HOTPATCH ResetEvent(IN HANDLE hEvent)
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
_In_ WDFDPC _In_ BOOLEAN Wait
BOOL WINAPI UserHandleGrantAccess(HANDLE handle, HANDLE job, BOOL grant)
DWORD WINAPI GetLastError(void)
#define EVENT_MODIFY_STATE
#define STARTF_USESTDHANDLES
HWND WINAPI GetDesktopWindow(void)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI DestroyWindow(_In_ HWND)