Rebase against bf83d755d987fec552cd1dce30638c31c49ab760.

This commit is contained in:
Zebediah Figura 2020-05-29 19:13:43 -05:00
parent 4e692b5301
commit 06877e55b1
22 changed files with 785 additions and 1065 deletions

View File

@ -9,4 +9,6 @@ Depends: server-Realtime_Priority
Depends: advapi32-Token_Integrity_Level
Depends: ntdll-Junction_Points
Depends: kernel32-K32GetPerformanceInfo
Depends: user32-rawinput-mouse
Depends: user32-rawinput-mouse
Depends: server-Desktop_Refcount
Disabled: true

View File

@ -1,4 +1,4 @@
From 5ee2cbd7b66c190eae47785907fd40562b05379b Mon Sep 17 00:00:00 2001
From e171bdbabedaeaafc0181ee156bf08ef180809da Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Thu, 16 Jan 2014 20:56:49 -0700
Subject: [PATCH] ntdll: Add support for junction point creation.
@ -18,10 +18,10 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
create mode 100644 libs/port/renameat2.c
diff --git a/configure.ac b/configure.ac
index 395992046e8..6ea81e0641a 100644
index 816e3684510..a1b6096b9b7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2210,6 +2210,8 @@ AC_CHECK_FUNCS(\
@@ -2202,6 +2202,8 @@ AC_CHECK_FUNCS(\
pwrite \
readdir \
readlink \
@ -31,7 +31,7 @@ index 395992046e8..6ea81e0641a 100644
select \
setproctitle \
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index 1adc1e094ec..3e10703c5da 100644
index 013706889bb..37dca75651c 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -21,6 +21,7 @@
@ -72,7 +72,7 @@ index 1adc1e094ec..3e10703c5da 100644
+ NTSTATUS status;
+ int i;
+
+ if ((status = server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
+ if ((status = unix_funcs->server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
+ return status;
+
+ if ((status = server_get_unix_name( handle, &unix_src )))
@ -181,7 +181,7 @@ index 1adc1e094ec..3e10703c5da 100644
return server_ioctl_file( handle, event, apc, apc_context, io, code,
in_buffer, in_size, out_buffer, out_size );
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index 33b8ead5528..e6fea0ff7fe 100644
index 31c18454f0e..046b49c2d2b 100644
--- a/dlls/ntdll/tests/file.c
+++ b/dlls/ntdll/tests/file.c
@@ -38,6 +38,7 @@
@ -192,7 +192,7 @@ index 33b8ead5528..e6fea0ff7fe 100644
#ifndef IO_COMPLETION_ALL_ACCESS
#define IO_COMPLETION_ALL_ACCESS 0x001F0003
@@ -4951,6 +4952,105 @@ static void test_file_readonly_access(void)
@@ -4953,6 +4954,105 @@ static void test_file_readonly_access(void)
DeleteFileW(path);
}
@ -298,17 +298,17 @@ index 33b8ead5528..e6fea0ff7fe 100644
START_TEST(file)
{
HMODULE hkernel32 = GetModuleHandleA("kernel32.dll");
@@ -5021,4 +5121,5 @@ START_TEST(file)
@@ -5023,4 +5123,5 @@ START_TEST(file)
test_query_attribute_information_file();
test_ioctl();
test_flush_buffers_file();
+ test_reparse_points();
}
diff --git a/include/Makefile.in b/include/Makefile.in
index 3f29a374144..daeb92cd13b 100644
index 9796dd8e5d9..410ae718e99 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -510,6 +510,7 @@ SOURCES = \
@@ -517,6 +517,7 @@ SOURCES = \
ntddvdeo.h \
ntdef.h \
ntdsapi.h \
@ -365,7 +365,7 @@ index 00000000000..21d42e17325
+
+#endif /* __WINE_NTIFS_H */
diff --git a/include/wine/port.h b/include/wine/port.h
index 8514a4a43bf..a17ffe7ab84 100644
index 928730a41d7..e8434c73cca 100644
--- a/include/wine/port.h
+++ b/include/wine/port.h
@@ -334,6 +334,15 @@ double rint(double x);
@ -385,10 +385,10 @@ index 8514a4a43bf..a17ffe7ab84 100644
int statvfs( const char *path, struct statvfs *buf );
#endif
diff --git a/libs/port/Makefile.in b/libs/port/Makefile.in
index 08e143d26d0..1c850116785 100644
index 7bc67fa3fee..1963afe2423 100644
--- a/libs/port/Makefile.in
+++ b/libs/port/Makefile.in
@@ -15,6 +15,7 @@ C_SRCS = \
@@ -14,6 +14,7 @@ C_SRCS = \
pread.c \
pwrite.c \
readlink.c \
@ -458,5 +458,5 @@ index 00000000000..f46f407ec71
+}
+#endif /* HAVE_RENAMEAT2 */
--
2.25.1
2.26.2

View File

@ -1,7 +1,7 @@
From 102451499f5de1148d55df7c7bdfe91257a13cef Mon Sep 17 00:00:00 2001
From daf6a4fc8ae19ab9f9df39f958109c09232b5426 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Thu, 16 Jan 2014 20:57:57 -0700
Subject: ntdll: Add support for reading junction points.
Subject: [PATCH] ntdll: Add support for reading junction points.
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
---
@ -10,10 +10,10 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
2 files changed, 119 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index 693caecffa..b9087cbf4d 100644
index 37dca75651c..5a05217102d 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -1739,6 +1739,106 @@ cleanup:
@@ -1763,6 +1763,106 @@ cleanup:
}
@ -35,7 +35,7 @@ index 693caecffa..b9087cbf4d 100644
+ char *p;
+ int i;
+
+ if ((status = server_get_unix_fd( handle, FILE_ANY_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
+ if ((status = unix_funcs->server_get_unix_fd( handle, FILE_ANY_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
+ return status;
+
+ if ((status = server_get_unix_name( handle, &unix_src )))
@ -120,7 +120,7 @@ index 693caecffa..b9087cbf4d 100644
/**************************************************************************
* NtFsControlFile [NTDLL.@]
* ZwFsControlFile [NTDLL.@]
@@ -1824,6 +1924,12 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
@@ -1848,6 +1948,12 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
status = STATUS_SUCCESS;
break;
@ -134,10 +134,10 @@ index 693caecffa..b9087cbf4d 100644
{
REPARSE_DATA_BUFFER *buffer = (REPARSE_DATA_BUFFER *)in_buffer;
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index 322dadefe3..cdb608d305 100644
index 046b49c2d2b..9197a234703 100644
--- a/dlls/ntdll/tests/file.c
+++ b/dlls/ntdll/tests/file.c
@@ -4868,9 +4868,10 @@ static void test_reparse_points(void)
@@ -4990,9 +4990,10 @@ static void test_reparse_points(void)
static const WCHAR dotW[] = {'.',0};
REPARSE_DATA_BUFFER *buffer = NULL;
DWORD dwret, dwLen, dwFlags;
@ -149,7 +149,7 @@ index 322dadefe3..cdb608d305 100644
BOOL bret;
/* Create a temporary folder for the junction point tests */
@@ -4918,6 +4919,17 @@ static void test_reparse_points(void)
@@ -5040,6 +5041,17 @@ static void test_reparse_points(void)
buffer_len = build_reparse_buffer(nameW.Buffer, &buffer);
bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0);
ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError());
@ -168,5 +168,5 @@ index 322dadefe3..cdb608d305 100644
cleanup:
--
2.17.1
2.26.2

View File

@ -1,7 +1,7 @@
From b544a9cd5b1d8abe456125652e1a78b20bdc4a27 Mon Sep 17 00:00:00 2001
From 10508a815ca734c8a94472f82e6c0f5ebe5fbbd9 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Thu, 16 Jan 2014 21:00:21 -0700
Subject: ntdll: Add support for deleting junction points.
Subject: [PATCH] ntdll: Add support for deleting junction points.
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
---
@ -11,10 +11,10 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
3 files changed, 131 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index b9087cbf4d..dbbb54768b 100644
index 5a05217102d..98f37af8793 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -1839,6 +1839,87 @@ cleanup:
@@ -1863,6 +1863,87 @@ cleanup:
}
@ -31,7 +31,7 @@ index b9087cbf4d..dbbb54768b 100644
+ NTSTATUS status;
+ struct stat st;
+
+ if ((status = server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
+ if ((status = unix_funcs->server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
+ return status;
+
+ if ((status = server_get_unix_name( handle, &unix_name )))
@ -102,7 +102,7 @@ index b9087cbf4d..dbbb54768b 100644
/**************************************************************************
* NtFsControlFile [NTDLL.@]
* ZwFsControlFile [NTDLL.@]
@@ -1924,6 +2005,22 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
@@ -1948,6 +2029,22 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
status = STATUS_SUCCESS;
break;
@ -126,10 +126,10 @@ index b9087cbf4d..dbbb54768b 100644
{
REPARSE_DATA_BUFFER *buffer = (REPARSE_DATA_BUFFER *)out_buffer;
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index cdb608d305..bc6961bc61 100644
index 9197a234703..6f6a49afd46 100644
--- a/dlls/ntdll/tests/file.c
+++ b/dlls/ntdll/tests/file.c
@@ -4863,12 +4863,15 @@ static void test_reparse_points(void)
@@ -4985,12 +4985,15 @@ static void test_reparse_points(void)
static const WCHAR reparseW[] = {'\\','r','e','p','a','r','s','e',0};
WCHAR path[MAX_PATH], reparse_path[MAX_PATH], target_path[MAX_PATH];
static const WCHAR targetW[] = {'\\','t','a','r','g','e','t',0};
@ -145,7 +145,7 @@ index cdb608d305..bc6961bc61 100644
UNICODE_STRING nameW;
HANDLE handle;
WCHAR *dest;
@@ -4916,6 +4919,8 @@ static void test_reparse_points(void)
@@ -5038,6 +5041,8 @@ static void test_reparse_points(void)
win_skip("Failed to open junction point directory handle (0x%x).\n", GetLastError());
goto cleanup;
}
@ -154,7 +154,7 @@ index cdb608d305..bc6961bc61 100644
buffer_len = build_reparse_buffer(nameW.Buffer, &buffer);
bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0);
ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError());
@@ -4930,6 +4935,22 @@ static void test_reparse_points(void)
@@ -5052,6 +5057,22 @@ static void test_reparse_points(void)
dest = &buffer->MountPointReparseBuffer.PathBuffer[buffer->MountPointReparseBuffer.SubstituteNameOffset/sizeof(WCHAR)];
ok((memcmp(dest, nameW.Buffer, string_len) == 0), "Junction point destination does not match ('%s' != '%s')!\n",
wine_dbgstr_w(dest), wine_dbgstr_w(nameW.Buffer));
@ -177,7 +177,7 @@ index cdb608d305..bc6961bc61 100644
CloseHandle(handle);
cleanup:
@@ -4937,7 +4958,7 @@ cleanup:
@@ -5059,7 +5080,7 @@ cleanup:
pRtlFreeUnicodeString(&nameW);
HeapFree(GetProcessHeap(), 0, buffer);
bret = RemoveDirectoryW(reparse_path);
@ -187,7 +187,7 @@ index cdb608d305..bc6961bc61 100644
ok(bret, "Failed to remove temporary target directory!\n");
RemoveDirectoryW(path);
diff --git a/include/ntifs.h b/include/ntifs.h
index 21d42e1732..4539b89d58 100644
index 21d42e17325..4539b89d583 100644
--- a/include/ntifs.h
+++ b/include/ntifs.h
@@ -39,4 +39,16 @@ typedef struct _REPARSE_DATA_BUFFER {
@ -208,5 +208,5 @@ index 21d42e1732..4539b89d58 100644
+
#endif /* __WINE_NTIFS_H */
--
2.17.1
2.26.2

View File

@ -1,7 +1,7 @@
From 5706d02d2bb68f87d4687f8acef96dd59978b6f8 Mon Sep 17 00:00:00 2001
From d1024118fbb0a73abd19ef937d13d4378a61992b Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Thu, 16 Jan 2014 21:06:24 -0700
Subject: ntdll: Add support for absolute symlink creation.
Subject: [PATCH] ntdll: Add support for absolute symlink creation.
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
---
@ -11,10 +11,10 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
3 files changed, 143 insertions(+), 19 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index dbbb54768b..62941774ec 100644
index 98f37af8793..825344dab86 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -1648,17 +1648,33 @@ NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE handle, HANDLE event,
@@ -1672,17 +1672,33 @@ NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE handle, HANDLE event,
NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer)
{
BOOL src_allocated = FALSE, dest_allocated = FALSE, tempdir_created = FALSE;
@ -48,10 +48,10 @@ index dbbb54768b..62941774ec 100644
+ return STATUS_NOT_IMPLEMENTED;
+ }
+
if ((status = server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
if ((status = unix_funcs->server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
return status;
@@ -1682,6 +1698,18 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer)
@@ -1706,6 +1722,18 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer)
strcat( magic_dest, "." );
strcat( magic_dest, "/" );
}
@ -70,7 +70,7 @@ index dbbb54768b..62941774ec 100644
strcat( magic_dest, unix_dest.Buffer );
/* Produce the link in a temporary location in the same folder */
@@ -2034,6 +2062,7 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
@@ -2058,6 +2086,7 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
switch(buffer->ReparseTag)
{
case IO_REPARSE_TAG_MOUNT_POINT:
@ -79,10 +79,10 @@ index dbbb54768b..62941774ec 100644
break;
default:
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index 71e7dd56f3..05ba0fc57e 100644
index 89f291536b2..92f03ab3d34 100644
--- a/dlls/ntdll/tests/file.c
+++ b/dlls/ntdll/tests/file.c
@@ -4832,26 +4832,50 @@ static void test_file_readonly_access(void)
@@ -4954,26 +4954,50 @@ static void test_file_readonly_access(void)
DeleteFileW(path);
}
@ -141,7 +141,7 @@ index 71e7dd56f3..05ba0fc57e 100644
lstrcpyW(subst_dest, filename);
lstrcpyW(print_dest, &filename[prefix_len]);
*pbuffer = buffer;
@@ -4871,10 +4895,12 @@ static void test_reparse_points(void)
@@ -4993,10 +5017,12 @@ static void test_reparse_points(void)
REPARSE_DATA_BUFFER *buffer = NULL;
DWORD dwret, dwLen, dwFlags, err;
INT buffer_len, string_len;
@ -155,7 +155,7 @@ index 71e7dd56f3..05ba0fc57e 100644
BOOL bret;
/* Create a temporary folder for the junction point tests */
@@ -4921,7 +4947,7 @@ static void test_reparse_points(void)
@@ -5043,7 +5069,7 @@ static void test_reparse_points(void)
}
dwret = NtQueryInformationFile(handle, &iosb, &old_attrib, sizeof(old_attrib), FileBasicInformation);
ok(dwret == STATUS_SUCCESS, "Failed to get junction point folder's attributes (0x%x).\n", dwret);
@ -164,7 +164,7 @@ index 71e7dd56f3..05ba0fc57e 100644
bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0);
ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError());
@@ -4962,7 +4988,7 @@ static void test_reparse_points(void)
@@ -5084,7 +5110,7 @@ static void test_reparse_points(void)
HeapFree(GetProcessHeap(), 0, buffer);
handle = CreateFileW(reparse_path, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, 0);
@ -173,7 +173,7 @@ index 71e7dd56f3..05ba0fc57e 100644
bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0);
ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError());
CloseHandle(handle);
@@ -4977,7 +5003,7 @@ static void test_reparse_points(void)
@@ -5099,7 +5125,7 @@ static void test_reparse_points(void)
ok(bret, "Failed to create junction point target directory.\n");
handle = CreateFileW(reparse_path, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, 0);
@ -182,7 +182,7 @@ index 71e7dd56f3..05ba0fc57e 100644
bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0);
ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError());
CloseHandle(handle);
@@ -4990,14 +5016,73 @@ static void test_reparse_points(void)
@@ -5112,14 +5138,73 @@ static void test_reparse_points(void)
ok(dwret != (DWORD)~0, "Junction point doesn't exist (attributes: 0x%x)!\n", dwret);
ok(dwret & FILE_ATTRIBUTE_REPARSE_POINT, "File is not a junction point! (attributes: 0x%x)\n", dwret);
@ -261,7 +261,7 @@ index 71e7dd56f3..05ba0fc57e 100644
}
diff --git a/include/ntifs.h b/include/ntifs.h
index 4539b89d58..ab3273d3f8 100644
index 4539b89d583..ab3273d3f81 100644
--- a/include/ntifs.h
+++ b/include/ntifs.h
@@ -21,11 +21,20 @@
@ -294,5 +294,5 @@ index 4539b89d58..ab3273d3f8 100644
typedef struct _REPARSE_GUID_DATA_BUFFER {
DWORD ReparseTag;
--
2.17.1
2.26.2

View File

@ -1,4 +1,4 @@
From 4906830101f0de0e165def16ff869ecc8a307b57 Mon Sep 17 00:00:00 2001
From 22a440051f4dd3b63977a384735cf60fad7f28f5 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Sat, 30 Mar 2019 12:00:51 -0600
Subject: [PATCH] ntdll: Correctly report file symbolic links as files.
@ -10,7 +10,7 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
2 files changed, 84 insertions(+), 44 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index 29a928153b9..4902dff190a 100644
index 74df2aed687..7483c71a8db 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -123,6 +123,9 @@ mode_t FILE_umask = 0;
@ -73,7 +73,7 @@ index 29a928153b9..4902dff190a 100644
- char *p;
int i;
- if ((status = server_get_unix_fd( handle, FILE_ANY_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
- if ((status = unix_funcs->server_get_unix_fd( handle, FILE_ANY_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
- return status;
-
- if ((status = server_get_unix_name( handle, &unix_src )))
@ -174,7 +174,7 @@ index 29a928153b9..4902dff190a 100644
+ ULONG flags = 0;
+ INT prefix_len;
+
+ if ((status = server_get_unix_fd( handle, FILE_ANY_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
+ if ((status = unix_funcs->server_get_unix_fd( handle, FILE_ANY_ACCESS, &dest_fd, &needs_close, NULL, NULL )))
+ return status;
+
+ if ((status = server_get_unix_name( handle, &unix_src )))
@ -191,10 +191,10 @@ index 29a928153b9..4902dff190a 100644
/* convert the relative path into an absolute path */
if (flags == SYMLINK_FLAG_RELATIVE)
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index 21bd72c7358..a1654fb8e9b 100644
index e0116491eee..7f983583268 100644
--- a/dlls/ntdll/tests/file.c
+++ b/dlls/ntdll/tests/file.c
@@ -5185,13 +5185,13 @@ static void test_reparse_points(void)
@@ -5187,13 +5187,13 @@ static void test_reparse_points(void)
/* Check deleting a file symlink as if it were a directory */
bret = RemoveDirectoryW(reparse_path);
@ -210,7 +210,7 @@ index 21bd72c7358..a1654fb8e9b 100644
ok(dwret & FILE_ATTRIBUTE_REPARSE_POINT, "File is not a symlink! (attributes: 0x%x)\n", dwret);
/* Delete the symlink as a file */
@@ -5200,10 +5200,10 @@ static void test_reparse_points(void)
@@ -5202,10 +5202,10 @@ static void test_reparse_points(void)
/* Create a blank slate for directory symlink tests */
bret = CreateDirectoryW(reparse_path, NULL);
@ -224,5 +224,5 @@ index 21bd72c7358..a1654fb8e9b 100644
/* Create the directory symlink */
HeapFree(GetProcessHeap(), 0, buffer);
--
2.25.1
2.26.2

View File

@ -1,4 +1,4 @@
From 1111d9a53405b19b57a4385f7e2815b9c62238fa Mon Sep 17 00:00:00 2001
From 157385f6bdf23c65b1375126f73dad87fcb503f4 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 6 Jun 2015 07:03:33 +0800
Subject: [PATCH] ntdll: Improve stub of NtQueryEaFile.
@ -10,10 +10,10 @@ Based on a patch by Qian Hong.
2 files changed, 98 insertions(+), 4 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index 2269ae311a..bed55c6fe7 100644
index 7a49cb5d8db..b940201c5a8 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -3962,14 +3962,25 @@ NTSTATUS WINAPI NtQueryVolumeInformationFile( HANDLE handle, PIO_STATUS_BLOCK io
@@ -4041,14 +4041,25 @@ NTSTATUS WINAPI NtQueryVolumeInformationFile( HANDLE handle, PIO_STATUS_BLOCK io
* Success: 0. Attributes read into buffer
* Failure: An NTSTATUS error code describing the error.
*/
@ -32,7 +32,7 @@ index 2269ae311a..bed55c6fe7 100644
ea_list_len, ea_index, restart);
- return STATUS_ACCESS_DENIED;
+
+ if ((status = server_get_unix_fd( handle, 0, &fd, &needs_close, NULL, NULL )) != STATUS_SUCCESS)
+ if ((status = unix_funcs->server_get_unix_fd( handle, 0, &fd, &needs_close, NULL, NULL )) != STATUS_SUCCESS)
+ return status;
+
+ if (buffer && length)
@ -44,7 +44,7 @@ index 2269ae311a..bed55c6fe7 100644
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index 1c3d0bc9a9..e210cbe9f2 100644
index 44335514761..abd5903e804 100644
--- a/dlls/ntdll/tests/file.c
+++ b/dlls/ntdll/tests/file.c
@@ -85,6 +85,7 @@ static NTSTATUS (WINAPI *pNtQueryDirectoryFile)(HANDLE,HANDLE,PIO_APC_ROUTINE,PV
@ -55,7 +55,7 @@ index 1c3d0bc9a9..e210cbe9f2 100644
static WCHAR fooW[] = {'f','o','o',0};
@@ -4994,6 +4995,86 @@ static void test_flush_buffers_file(void)
@@ -4886,6 +4887,86 @@ static void test_flush_buffers_file(void)
DeleteFileA(buffer);
}
@ -142,7 +142,7 @@ index 1c3d0bc9a9..e210cbe9f2 100644
static void test_file_readonly_access(void)
{
static const DWORD default_sharing = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE;
@@ -5483,6 +5564,7 @@ START_TEST(file)
@@ -5375,6 +5456,7 @@ START_TEST(file)
pNtQueryVolumeInformationFile = (void *)GetProcAddress(hntdll, "NtQueryVolumeInformationFile");
pNtQueryFullAttributesFile = (void *)GetProcAddress(hntdll, "NtQueryFullAttributesFile");
pNtFlushBuffersFile = (void *)GetProcAddress(hntdll, "NtFlushBuffersFile");
@ -150,7 +150,7 @@ index 1c3d0bc9a9..e210cbe9f2 100644
test_read_write();
test_NtCreateFile();
@@ -5513,6 +5595,7 @@ START_TEST(file)
@@ -5404,6 +5486,7 @@ START_TEST(file)
test_query_volume_information_file();
test_query_attribute_information_file();
test_ioctl();
@ -159,5 +159,5 @@ index 1c3d0bc9a9..e210cbe9f2 100644
test_reparse_points();
}
--
2.23.0
2.26.2

View File

@ -1,4 +1,4 @@
From 1a7a4c790294dc0eddd3202853c17967d6bb8e1a Mon Sep 17 00:00:00 2001
From 325be924c400a713b5122b7de800e197ddc3f8b7 Mon Sep 17 00:00:00 2001
From: Andrew Wesie <awesie@gmail.com>
Date: Fri, 27 Jul 2018 01:22:59 -0500
Subject: [PATCH] ntdll: Refactor RtlCreateUserThread into NtCreateThreadEx.
@ -12,7 +12,7 @@ reported version), and expects it to be called whenever a thread is created.
3 files changed, 187 insertions(+), 36 deletions(-)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index cb6a8ec8c4..16ec96bc56 100644
index 42532bd9f1c..65fdc30d7a4 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -182,7 +182,7 @@
@ -25,10 +25,10 @@ index cb6a8ec8c4..16ec96bc56 100644
@ stdcall NtCreateTimer(ptr long ptr long)
@ stub NtCreateToken
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index ceadcff1b2..2c4a9c4949 100644
index 20934448fa3..9deb4397ba9 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -413,34 +413,18 @@ static void start_thread( struct startup_info *info )
@@ -390,34 +390,18 @@ static void start_thread( struct startup_info *info )
/***********************************************************************
* NtCreateThreadEx (NTDLL.@)
*/
@ -68,7 +68,7 @@ index ceadcff1b2..2c4a9c4949 100644
HANDLE handle = 0, actctx = 0;
TEB *teb = NULL;
DWORD tid = 0;
@@ -451,6 +435,33 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
@@ -428,6 +412,33 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
struct object_attributes *objattr = NULL;
INITIAL_TEB stack;
@ -102,7 +102,7 @@ index ceadcff1b2..2c4a9c4949 100644
if (process != NtCurrentProcess())
{
apc_call_t call;
@@ -476,12 +487,7 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
@@ -453,12 +464,7 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
return result.create_thread.status;
}
@ -114,9 +114,9 @@ index ceadcff1b2..2c4a9c4949 100644
- }
+ if ((status = alloc_object_attributes( thread_attr, &objattr, &len ))) return status;
if (server_pipe( request_pipe ) == -1)
if (unix_funcs->server_pipe( request_pipe ) == -1)
{
@@ -493,7 +499,7 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
@@ -470,7 +476,7 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
SERVER_START_REQ( new_thread )
{
req->process = wine_server_obj_handle( process );
@ -125,7 +125,7 @@ index ceadcff1b2..2c4a9c4949 100644
req->suspend = suspended;
req->request_fd = request_pipe[0];
wine_server_add_data( req, objattr, len );
@@ -552,20 +558,20 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
@@ -529,20 +535,20 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr,
thread_data->wait_fd[1] = -1;
thread_data->start_stack = (char *)teb->Tib.StackBase;
@ -153,7 +153,7 @@ index ceadcff1b2..2c4a9c4949 100644
pthread_sigmask( SIG_SETMASK, &sigset, NULL );
if (id) id->UniqueThread = ULongToHandle(tid);
@@ -582,6 +588,124 @@ error:
@@ -559,6 +565,124 @@ error:
return status;
}
@ -279,10 +279,10 @@ index ceadcff1b2..2c4a9c4949 100644
/******************************************************************************
* RtlGetNtGlobalFlags (NTDLL.@)
diff --git a/include/winternl.h b/include/winternl.h
index 733c8a33f6..5c3f7a05ff 100644
index 199b8fc52f2..489b145937c 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2250,6 +2250,33 @@ typedef struct _NLSTABLEINFO
@@ -2274,6 +2274,33 @@ typedef struct _NLSTABLEINFO
USHORT *LowerCaseTable;
} NLSTABLEINFO, *PNLSTABLEINFO;

View File

@ -1,4 +1,4 @@
From de02412f5e105f162e2e457d5bec698575fffc10 Mon Sep 17 00:00:00 2001
From 5ea68740395cd0ae34fb4d74d540b30170645ac3 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 4 Oct 2014 02:35:44 +0200
Subject: [PATCH] ntdll: Trigger write watches before passing userdata pointer
@ -10,7 +10,7 @@ Subject: [PATCH] ntdll: Trigger write watches before passing userdata pointer
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 381062cceb1..e7c6ca63fe2 100644
index 825f8451904..b414401634a 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -1557,7 +1557,6 @@ todo_wine
@ -22,28 +22,25 @@ index 381062cceb1..e7c6ca63fe2 100644
"Access and/or AccessStatus were changed!\n");
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
index 046cf601ebf..3d88b47a744 100644
index ed4e3f25531..921dec86c82 100644
--- a/dlls/ntdll/server.c
+++ b/dlls/ntdll/server.c
@@ -406,9 +406,18 @@ unsigned int server_call_unlocked( void *req_ptr )
@@ -166,6 +166,15 @@ static DECLSPEC_NORETURN void server_protocol_perror( const char *err )
*/
unsigned int CDECL wine_server_call( void *req_ptr )
{
+ struct __server_request_info * const req = req_ptr;
sigset_t old_set;
unsigned int ret;
+
+ /* trigger write watches, otherwise read() might return EFAULT */
+ if (req->u.req.request_header.reply_size &&
+ !virtual_check_buffer_for_write( req->reply_data, req->u.req.request_header.reply_size ))
+ {
+ ret = STATUS_ACCESS_VIOLATION;
+ return ret;
+ return STATUS_ACCESS_VIOLATION;
+ }
+
pthread_sigmask( SIG_BLOCK, &server_block_set, &old_set );
ret = server_call_unlocked( req_ptr );
pthread_sigmask( SIG_SETMASK, &old_set, NULL );
return unix_funcs->server_call( req_ptr );
}
--
2.26.2

View File

@ -1,4 +1,4 @@
From acdd5aaf5d4f618a96f21710a8ee2f44a994194c Mon Sep 17 00:00:00 2001
From 627618459891aa36fc9a9ac0c04b7035d2272fb1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gabriel=20Iv=C4=83ncescu?= <gabrielopcode@gmail.com>
Date: Fri, 24 May 2019 15:09:35 +0300
Subject: [PATCH] ntdll/server: Mark drive_c as case-insensitive when created
@ -9,14 +9,14 @@ Content-Transfer-Encoding: 8bit
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47099
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
---
dlls/ntdll/server.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
dlls/ntdll/unix/server.c | 45 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
index bc25e242a77..f2109dd1ef0 100644
--- a/dlls/ntdll/server.c
+++ b/dlls/ntdll/server.c
@@ -54,6 +54,12 @@
diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c
index 8dc3f33bc80..0e6c9d90281 100644
--- a/dlls/ntdll/unix/server.c
+++ b/dlls/ntdll/unix/server.c
@@ -55,6 +55,12 @@
#ifdef HAVE_SYS_MMAN_H
#include <sys/mman.h>
#endif
@ -29,7 +29,7 @@ index bc25e242a77..f2109dd1ef0 100644
#ifdef HAVE_SYS_PRCTL_H
# include <sys/prctl.h>
#endif
@@ -87,6 +93,22 @@
@@ -93,6 +99,22 @@
WINE_DEFAULT_DEBUG_CHANNEL(server);
@ -49,10 +49,10 @@ index bc25e242a77..f2109dd1ef0 100644
+
+#endif
+
/* Some versions of glibc don't define this */
#ifndef SCM_RIGHTS
#define SCM_RIGHTS 1
@@ -1380,6 +1402,28 @@ void init_paths(void)
#ifndef MSG_CMSG_CLOEXEC
#define MSG_CMSG_CLOEXEC 0
#endif
@@ -729,6 +751,28 @@ static const char *init_server_dir( dev_t dev, ino_t ino )
}
@ -81,7 +81,7 @@ index bc25e242a77..f2109dd1ef0 100644
/***********************************************************************
* setup_config_dir
*
@@ -1416,6 +1460,7 @@ static int setup_config_dir(void)
@@ -765,6 +809,7 @@ static int setup_config_dir(void)
if (!mkdir( "dosdevices", 0777 ))
{
mkdir( "drive_c", 0777 );

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
From 600ea7fc2412aab4970a3c7c54cd00c801a79f7f Mon Sep 17 00:00:00 2001
From adbfc52aca7f4bd1b103dde52f0beb3e6ea52c14 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 4 Dec 2015 10:36:47 +0100
Subject: [PATCH] server: Introduce a new alloc_handle object callback. (v2)
@ -14,7 +14,6 @@ Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
server/debugger.c | 2 ++
server/device.c | 4 ++++
server/directory.c | 2 ++
server/esync.c | 1 +
server/event.c | 2 ++
server/fd.c | 4 ++++
server/file.c | 1 +
@ -40,13 +39,13 @@ Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
server/timer.c | 1 +
server/token.c | 1 +
server/winstation.c | 2 ++
35 files changed, 79 insertions(+), 4 deletions(-)
34 files changed, 78 insertions(+), 4 deletions(-)
diff --git a/server/async.c b/server/async.c
index cadd3563232..4d39c4896f6 100644
index 03994e8fac2..9feafd01847 100644
--- a/server/async.c
+++ b/server/async.c
@@ -82,6 +82,7 @@ static const struct object_ops async_ops =
@@ -81,6 +81,7 @@ static const struct object_ops async_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -54,7 +53,7 @@ index cadd3563232..4d39c4896f6 100644
no_close_handle, /* close_handle */
async_destroy /* destroy */
};
@@ -496,6 +497,7 @@ static const struct object_ops iosb_ops =
@@ -494,6 +495,7 @@ static const struct object_ops iosb_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -63,10 +62,10 @@ index cadd3563232..4d39c4896f6 100644
iosb_destroy /* destroy */
};
diff --git a/server/atom.c b/server/atom.c
index a3b0d83f68d..96717a154f0 100644
index 57aff7b8918..04e301b0bc9 100644
--- a/server/atom.c
+++ b/server/atom.c
@@ -92,6 +92,7 @@ static const struct object_ops atom_table_ops =
@@ -91,6 +91,7 @@ static const struct object_ops atom_table_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -75,10 +74,10 @@ index a3b0d83f68d..96717a154f0 100644
atom_table_destroy /* destroy */
};
diff --git a/server/change.c b/server/change.c
index 9f07be705d7..1c384310d59 100644
index a8f3329c722..d0744e72f07 100644
--- a/server/change.c
+++ b/server/change.c
@@ -127,6 +127,7 @@ static const struct object_ops dir_ops =
@@ -126,6 +126,7 @@ static const struct object_ops dir_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -87,10 +86,10 @@ index 9f07be705d7..1c384310d59 100644
dir_destroy /* destroy */
};
diff --git a/server/clipboard.c b/server/clipboard.c
index 673aabbd080..588875439a5 100644
index e6884dd75fa..dcc92507bc1 100644
--- a/server/clipboard.c
+++ b/server/clipboard.c
@@ -89,6 +89,7 @@ static const struct object_ops clipboard_ops =
@@ -88,6 +88,7 @@ static const struct object_ops clipboard_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -99,10 +98,10 @@ index 673aabbd080..588875439a5 100644
clipboard_destroy /* destroy */
};
diff --git a/server/completion.c b/server/completion.c
index 4da2ed844aa..857662afb29 100644
index db04727b93b..e72a155eeeb 100644
--- a/server/completion.c
+++ b/server/completion.c
@@ -76,6 +76,7 @@ static const struct object_ops completion_ops =
@@ -75,6 +75,7 @@ static const struct object_ops completion_ops =
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -111,10 +110,10 @@ index 4da2ed844aa..857662afb29 100644
completion_destroy /* destroy */
};
diff --git a/server/console.c b/server/console.c
index fdf3d3c6889..806293a546a 100644
index 302be6a1c1a..26545baea47 100644
--- a/server/console.c
+++ b/server/console.c
@@ -97,6 +97,7 @@ static const struct object_ops console_input_ops =
@@ -95,6 +95,7 @@ static const struct object_ops console_input_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -122,7 +121,7 @@ index fdf3d3c6889..806293a546a 100644
no_close_handle, /* close_handle */
console_input_destroy /* destroy */
};
@@ -135,6 +136,7 @@ static const struct object_ops console_input_events_ops =
@@ -130,6 +131,7 @@ static const struct object_ops console_input_events_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -130,7 +129,7 @@ index fdf3d3c6889..806293a546a 100644
no_close_handle, /* close_handle */
console_input_events_destroy /* destroy */
};
@@ -197,6 +199,7 @@ static const struct object_ops screen_buffer_ops =
@@ -191,6 +193,7 @@ static const struct object_ops screen_buffer_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -139,10 +138,10 @@ index fdf3d3c6889..806293a546a 100644
screen_buffer_destroy /* destroy */
};
diff --git a/server/debugger.c b/server/debugger.c
index ad581be8458..0bab7485101 100644
index 401ce36a47a..b7746d55c0e 100644
--- a/server/debugger.c
+++ b/server/debugger.c
@@ -85,6 +85,7 @@ static const struct object_ops debug_event_ops =
@@ -84,6 +84,7 @@ static const struct object_ops debug_event_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -150,7 +149,7 @@ index ad581be8458..0bab7485101 100644
no_close_handle, /* close_handle */
debug_event_destroy /* destroy */
};
@@ -113,6 +114,7 @@ static const struct object_ops debug_ctx_ops =
@@ -111,6 +112,7 @@ static const struct object_ops debug_ctx_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -159,10 +158,10 @@ index ad581be8458..0bab7485101 100644
debug_ctx_destroy /* destroy */
};
diff --git a/server/device.c b/server/device.c
index 17260340aad..3380d00fd54 100644
index 01e08f295f7..90150e1b251 100644
--- a/server/device.c
+++ b/server/device.c
@@ -81,6 +81,7 @@ static const struct object_ops irp_call_ops =
@@ -79,6 +79,7 @@ static const struct object_ops irp_call_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -170,7 +169,7 @@ index 17260340aad..3380d00fd54 100644
no_close_handle, /* close_handle */
irp_call_destroy /* destroy */
};
@@ -123,6 +124,7 @@ static const struct object_ops device_manager_ops =
@@ -118,6 +119,7 @@ static const struct object_ops device_manager_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -178,7 +177,7 @@ index 17260340aad..3380d00fd54 100644
no_close_handle, /* close_handle */
device_manager_destroy /* destroy */
};
@@ -167,6 +169,7 @@ static const struct object_ops device_ops =
@@ -161,6 +163,7 @@ static const struct object_ops device_ops =
default_unlink_name, /* unlink_name */
device_open_file, /* open_file */
device_get_kernel_obj_list, /* get_kernel_obj_list */
@ -186,7 +185,7 @@ index 17260340aad..3380d00fd54 100644
no_close_handle, /* close_handle */
device_destroy /* destroy */
};
@@ -217,6 +220,7 @@ static const struct object_ops device_file_ops =
@@ -210,6 +213,7 @@ static const struct object_ops device_file_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
device_file_get_kernel_obj_list, /* get_kernel_obj_list */
@ -195,10 +194,10 @@ index 17260340aad..3380d00fd54 100644
device_file_destroy /* destroy */
};
diff --git a/server/directory.c b/server/directory.c
index 8083c686e11..a1e631d435f 100644
index 74cbb3ca974..0092b37b0be 100644
--- a/server/directory.c
+++ b/server/directory.c
@@ -69,6 +69,7 @@ static const struct object_ops object_type_ops =
@@ -68,6 +68,7 @@ static const struct object_ops object_type_ops =
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -206,7 +205,7 @@ index 8083c686e11..a1e631d435f 100644
no_close_handle, /* close_handle */
no_destroy /* destroy */
};
@@ -106,6 +107,7 @@ static const struct object_ops directory_ops =
@@ -104,6 +105,7 @@ static const struct object_ops directory_ops =
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -214,31 +213,19 @@ index 8083c686e11..a1e631d435f 100644
no_close_handle, /* close_handle */
directory_destroy /* destroy */
};
diff --git a/server/esync.c b/server/esync.c
index 1b035bdb066..4563b97573a 100644
--- a/server/esync.c
+++ b/server/esync.c
@@ -140,6 +140,7 @@ const struct object_ops esync_ops =
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
+ no_alloc_handle, /* alloc_handle */
no_close_handle, /* close_handle */
esync_destroy /* destroy */
};
diff --git a/server/event.c b/server/event.c
index 79287e7edc0..ad8fddbfade 100644
index d339d85aa45..a78d73d9e78 100644
--- a/server/event.c
+++ b/server/event.c
@@ -76,6 +76,7 @@ static const struct object_ops event_ops =
@@ -71,6 +71,7 @@ static const struct object_ops event_ops =
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
event_get_kernel_obj_list, /* get_kernel_obj_list */
+ no_alloc_handle, /* alloc_handle */
no_close_handle, /* close_handle */
event_destroy /* destroy */
no_destroy /* destroy */
};
@@ -111,6 +112,7 @@ static const struct object_ops keyed_event_ops =
@@ -105,6 +106,7 @@ static const struct object_ops keyed_event_ops =
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -247,10 +234,10 @@ index 79287e7edc0..ad8fddbfade 100644
no_destroy /* destroy */
};
diff --git a/server/fd.c b/server/fd.c
index 34e925f0ed7..6a539a282d7 100644
index 06d1d81bdb0..81089321e53 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -226,6 +226,7 @@ static const struct object_ops fd_ops =
@@ -220,6 +220,7 @@ static const struct object_ops fd_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -258,7 +245,7 @@ index 34e925f0ed7..6a539a282d7 100644
no_close_handle, /* close_handle */
fd_destroy /* destroy */
};
@@ -267,6 +268,7 @@ static const struct object_ops device_ops =
@@ -260,6 +261,7 @@ static const struct object_ops device_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -266,7 +253,7 @@ index 34e925f0ed7..6a539a282d7 100644
no_close_handle, /* close_handle */
device_destroy /* destroy */
};
@@ -307,6 +309,7 @@ static const struct object_ops inode_ops =
@@ -299,6 +301,7 @@ static const struct object_ops inode_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -274,7 +261,7 @@ index 34e925f0ed7..6a539a282d7 100644
no_close_handle, /* close_handle */
inode_destroy /* destroy */
};
@@ -349,6 +352,7 @@ static const struct object_ops file_lock_ops =
@@ -340,6 +343,7 @@ static const struct object_ops file_lock_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -283,10 +270,10 @@ index 34e925f0ed7..6a539a282d7 100644
no_destroy /* destroy */
};
diff --git a/server/file.c b/server/file.c
index 8ab254d1abf..7d36ad8e1fb 100644
index bce202138e0..d4697c953ac 100644
--- a/server/file.c
+++ b/server/file.c
@@ -98,6 +98,7 @@ static const struct object_ops file_ops =
@@ -97,6 +97,7 @@ static const struct object_ops file_ops =
NULL, /* unlink_name */
file_open_file, /* open_file */
file_get_kernel_obj_list, /* get_kernel_obj_list */
@ -295,10 +282,10 @@ index 8ab254d1abf..7d36ad8e1fb 100644
file_destroy /* destroy */
};
diff --git a/server/handle.c b/server/handle.c
index 6ca4489a828..879098aee85 100644
index a2a8bb5479c..47378259df4 100644
--- a/server/handle.c
+++ b/server/handle.c
@@ -135,6 +135,7 @@ static const struct object_ops handle_table_ops =
@@ -134,6 +134,7 @@ static const struct object_ops handle_table_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -306,7 +293,7 @@ index 6ca4489a828..879098aee85 100644
no_close_handle, /* close_handle */
handle_table_destroy /* destroy */
};
@@ -234,7 +235,7 @@ static int grow_handle_table( struct handle_table *table )
@@ -233,7 +234,7 @@ static int grow_handle_table( struct handle_table *table )
}
/* allocate the first free entry in the handle table */
@ -315,7 +302,7 @@ index 6ca4489a828..879098aee85 100644
{
struct handle_entry *entry = table->entries + table->free;
int i;
@@ -250,6 +251,10 @@ static obj_handle_t alloc_entry( struct handle_table *table, void *obj, unsigned
@@ -249,6 +250,10 @@ static obj_handle_t alloc_entry( struct handle_table *table, void *obj, unsigned
table->free = i + 1;
entry->ptr = grab_object_for_handle( obj );
entry->access = access;
@ -326,7 +313,7 @@ index 6ca4489a828..879098aee85 100644
return index_to_handle(i);
}
@@ -375,7 +380,11 @@ struct handle_table *copy_handle_table( struct process *process, struct process
@@ -374,7 +379,11 @@ struct handle_table *copy_handle_table( struct process *process, struct process
for (i = 0; i <= table->last; i++, ptr++)
{
if (!ptr->ptr) continue;
@ -340,10 +327,10 @@ index 6ca4489a828..879098aee85 100644
}
}
diff --git a/server/hook.c b/server/hook.c
index f5d7639fd74..22b14828977 100644
index ec6be582482..c2a26eb4dff 100644
--- a/server/hook.c
+++ b/server/hook.c
@@ -93,6 +93,7 @@ static const struct object_ops hook_table_ops =
@@ -92,6 +92,7 @@ static const struct object_ops hook_table_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -352,10 +339,10 @@ index f5d7639fd74..22b14828977 100644
hook_table_destroy /* destroy */
};
diff --git a/server/mailslot.c b/server/mailslot.c
index 3523e18d8f6..f3e69f0b34f 100644
index 781e6f3141a..6f0321393e2 100644
--- a/server/mailslot.c
+++ b/server/mailslot.c
@@ -90,6 +90,7 @@ static const struct object_ops mailslot_ops =
@@ -89,6 +89,7 @@ static const struct object_ops mailslot_ops =
default_unlink_name, /* unlink_name */
mailslot_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -363,7 +350,7 @@ index 3523e18d8f6..f3e69f0b34f 100644
fd_close_handle, /* close_handle */
mailslot_destroy /* destroy */
};
@@ -148,6 +149,7 @@ static const struct object_ops mail_writer_ops =
@@ -146,6 +147,7 @@ static const struct object_ops mail_writer_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -371,7 +358,7 @@ index 3523e18d8f6..f3e69f0b34f 100644
fd_close_handle, /* close_handle */
mail_writer_destroy /* destroy */
};
@@ -207,6 +209,7 @@ static const struct object_ops mailslot_device_ops =
@@ -204,6 +206,7 @@ static const struct object_ops mailslot_device_ops =
default_unlink_name, /* unlink_name */
mailslot_device_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -380,10 +367,10 @@ index 3523e18d8f6..f3e69f0b34f 100644
mailslot_device_destroy /* destroy */
};
diff --git a/server/mapping.c b/server/mapping.c
index b19403b18f9..a882d0cda00 100644
index 0941dd87c05..42c207b3367 100644
--- a/server/mapping.c
+++ b/server/mapping.c
@@ -103,6 +103,7 @@ static const struct object_ops ranges_ops =
@@ -79,6 +79,7 @@ static const struct object_ops ranges_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -391,7 +378,7 @@ index b19403b18f9..a882d0cda00 100644
no_close_handle, /* close_handle */
ranges_destroy /* destroy */
};
@@ -139,6 +140,7 @@ static const struct object_ops shared_map_ops =
@@ -114,6 +115,7 @@ static const struct object_ops shared_map_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -399,7 +386,7 @@ index b19403b18f9..a882d0cda00 100644
no_close_handle, /* close_handle */
shared_map_destroy /* destroy */
};
@@ -196,6 +198,7 @@ static const struct object_ops mapping_ops =
@@ -171,6 +173,7 @@ static const struct object_ops mapping_ops =
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -408,10 +395,10 @@ index b19403b18f9..a882d0cda00 100644
mapping_destroy /* destroy */
};
diff --git a/server/mutex.c b/server/mutex.c
index f5f969b3d6e..a4ab6bdb3df 100644
index 8a8f7248eae..3754c35acbb 100644
--- a/server/mutex.c
+++ b/server/mutex.c
@@ -73,6 +73,7 @@ static const struct object_ops mutex_ops =
@@ -72,6 +72,7 @@ static const struct object_ops mutex_ops =
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -420,10 +407,10 @@ index f5f969b3d6e..a4ab6bdb3df 100644
mutex_destroy /* destroy */
};
diff --git a/server/named_pipe.c b/server/named_pipe.c
index 51a43e24404..6cd6c0623e0 100644
index f97b1416415..ef611f49918 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -130,6 +130,7 @@ static const struct object_ops named_pipe_ops =
@@ -129,6 +129,7 @@ static const struct object_ops named_pipe_ops =
default_unlink_name, /* unlink_name */
named_pipe_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -431,7 +418,7 @@ index 51a43e24404..6cd6c0623e0 100644
no_close_handle, /* close_handle */
named_pipe_destroy /* destroy */
};
@@ -173,6 +174,7 @@ static const struct object_ops pipe_server_ops =
@@ -171,6 +172,7 @@ static const struct object_ops pipe_server_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -439,7 +426,7 @@ index 51a43e24404..6cd6c0623e0 100644
fd_close_handle, /* close_handle */
pipe_server_destroy /* destroy */
};
@@ -216,6 +218,7 @@ static const struct object_ops pipe_client_ops =
@@ -213,6 +215,7 @@ static const struct object_ops pipe_client_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -447,7 +434,7 @@ index 51a43e24404..6cd6c0623e0 100644
fd_close_handle, /* close_handle */
pipe_end_destroy /* destroy */
};
@@ -263,7 +266,8 @@ static const struct object_ops named_pipe_device_ops =
@@ -259,7 +262,8 @@ static const struct object_ops named_pipe_device_ops =
default_unlink_name, /* unlink_name */
named_pipe_device_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -457,7 +444,7 @@ index 51a43e24404..6cd6c0623e0 100644
named_pipe_device_destroy /* destroy */
};
@@ -293,6 +297,7 @@ static const struct object_ops named_pipe_device_file_ops =
@@ -288,6 +292,7 @@ static const struct object_ops named_pipe_device_file_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -481,10 +468,10 @@ index dacfe1d71a0..55321dddd87 100644
{
return 1; /* ok to close */
diff --git a/server/object.h b/server/object.h
index e0e8515ba15..c983d1667a8 100644
index 3144eb56678..a903479bb69 100644
--- a/server/object.h
+++ b/server/object.h
@@ -93,8 +93,10 @@ struct object_ops
@@ -91,8 +91,10 @@ struct object_ops
unsigned int options);
/* return list of kernel objects */
struct list *(*get_kernel_obj_list)(struct object *);
@ -496,7 +483,7 @@ index e0e8515ba15..c983d1667a8 100644
/* destroy on refcount == 0 */
void (*destroy)(struct object *);
};
@@ -170,6 +172,7 @@ extern void default_unlink_name( struct object *obj, struct object_name *name );
@@ -168,6 +170,7 @@ extern void default_unlink_name( struct object *obj, struct object_name *name );
extern struct object *no_open_file( struct object *obj, unsigned int access, unsigned int sharing,
unsigned int options );
extern struct list *no_kernel_obj_list( struct object *obj );
@ -505,10 +492,10 @@ index e0e8515ba15..c983d1667a8 100644
extern void no_destroy( struct object *obj );
#ifdef DEBUG_OBJECTS
diff --git a/server/process.c b/server/process.c
index 69e5a37eccb..d497723fea5 100644
index 76bb6faa91a..f76bc7167bf 100644
--- a/server/process.c
+++ b/server/process.c
@@ -91,6 +91,7 @@ static const struct object_ops process_ops =
@@ -88,6 +88,7 @@ static const struct object_ops process_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
process_get_kernel_obj_list, /* get_kernel_obj_list */
@ -516,7 +503,7 @@ index 69e5a37eccb..d497723fea5 100644
no_close_handle, /* close_handle */
process_destroy /* destroy */
};
@@ -142,6 +143,7 @@ static const struct object_ops startup_info_ops =
@@ -138,6 +139,7 @@ static const struct object_ops startup_info_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -524,7 +511,7 @@ index 69e5a37eccb..d497723fea5 100644
no_close_handle, /* close_handle */
startup_info_destroy /* destroy */
};
@@ -187,6 +189,7 @@ static const struct object_ops job_ops =
@@ -182,6 +184,7 @@ static const struct object_ops job_ops =
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -533,10 +520,10 @@ index 69e5a37eccb..d497723fea5 100644
job_destroy /* destroy */
};
diff --git a/server/queue.c b/server/queue.c
index ad3ed008f61..3b3cc3910aa 100644
index 84ee0f9a4ea..a963c68c45d 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -194,6 +194,7 @@ static const struct object_ops msg_queue_ops =
@@ -182,6 +182,7 @@ static const struct object_ops msg_queue_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -544,7 +531,7 @@ index ad3ed008f61..3b3cc3910aa 100644
no_close_handle, /* close_handle */
msg_queue_destroy /* destroy */
};
@@ -231,6 +232,7 @@ static const struct object_ops thread_input_ops =
@@ -218,6 +219,7 @@ static const struct object_ops thread_input_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -553,10 +540,10 @@ index ad3ed008f61..3b3cc3910aa 100644
thread_input_destroy /* destroy */
};
diff --git a/server/registry.c b/server/registry.c
index ec30b7b2355..db15f225714 100644
index dcbb3f791e1..6e5eddcd257 100644
--- a/server/registry.c
+++ b/server/registry.c
@@ -171,6 +171,7 @@ static const struct object_ops key_ops =
@@ -170,6 +170,7 @@ static const struct object_ops key_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -565,10 +552,10 @@ index ec30b7b2355..db15f225714 100644
key_destroy /* destroy */
};
diff --git a/server/request.c b/server/request.c
index 4807ca9398f..6d2011fb444 100644
index 4c1f30a5fe7..42cc83c3037 100644
--- a/server/request.c
+++ b/server/request.c
@@ -108,6 +108,7 @@ static const struct object_ops master_socket_ops =
@@ -107,6 +107,7 @@ static const struct object_ops master_socket_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -577,10 +564,10 @@ index 4807ca9398f..6d2011fb444 100644
master_socket_destroy /* destroy */
};
diff --git a/server/semaphore.c b/server/semaphore.c
index 36e3e79e5d6..1913871859a 100644
index 6e2415fd79a..457cd6f4558 100644
--- a/server/semaphore.c
+++ b/server/semaphore.c
@@ -70,6 +70,7 @@ static const struct object_ops semaphore_ops =
@@ -69,6 +69,7 @@ static const struct object_ops semaphore_ops =
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -589,10 +576,10 @@ index 36e3e79e5d6..1913871859a 100644
no_destroy /* destroy */
};
diff --git a/server/serial.c b/server/serial.c
index 2848e1dc795..966b8bc6b81 100644
index 4292472613a..ecb9a9350ad 100644
--- a/server/serial.c
+++ b/server/serial.c
@@ -104,6 +104,7 @@ static const struct object_ops serial_ops =
@@ -103,6 +103,7 @@ static const struct object_ops serial_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -601,10 +588,10 @@ index 2848e1dc795..966b8bc6b81 100644
serial_destroy /* destroy */
};
diff --git a/server/signal.c b/server/signal.c
index ca200394f7e..a2e0efef121 100644
index c81f6b8e989..b8dd87d86f1 100644
--- a/server/signal.c
+++ b/server/signal.c
@@ -79,6 +79,7 @@ static const struct object_ops handler_ops =
@@ -78,6 +78,7 @@ static const struct object_ops handler_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -613,10 +600,10 @@ index ca200394f7e..a2e0efef121 100644
handler_destroy /* destroy */
};
diff --git a/server/snapshot.c b/server/snapshot.c
index 7d0d742ee9e..2ad9d5d7809 100644
index a0f2ea17a3e..d5ba720980a 100644
--- a/server/snapshot.c
+++ b/server/snapshot.c
@@ -73,6 +73,7 @@ static const struct object_ops snapshot_ops =
@@ -72,6 +72,7 @@ static const struct object_ops snapshot_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -625,10 +612,10 @@ index 7d0d742ee9e..2ad9d5d7809 100644
snapshot_destroy /* destroy */
};
diff --git a/server/sock.c b/server/sock.c
index 4a10aaccf94..f951f23d64a 100644
index 5095a6ef9f0..7b10b74cc4e 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -156,6 +156,7 @@ static const struct object_ops sock_ops =
@@ -155,6 +155,7 @@ static const struct object_ops sock_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -636,7 +623,7 @@ index 4a10aaccf94..f951f23d64a 100644
fd_close_handle, /* close_handle */
sock_destroy /* destroy */
};
@@ -972,6 +973,7 @@ static const struct object_ops ifchange_ops =
@@ -970,6 +971,7 @@ static const struct object_ops ifchange_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -645,10 +632,10 @@ index 4a10aaccf94..f951f23d64a 100644
ifchange_destroy /* destroy */
};
diff --git a/server/symlink.c b/server/symlink.c
index b4b6a44616e..44237bc8b18 100644
index e5ee09f015a..d60611d592a 100644
--- a/server/symlink.c
+++ b/server/symlink.c
@@ -72,6 +72,7 @@ static const struct object_ops symlink_ops =
@@ -71,6 +71,7 @@ static const struct object_ops symlink_ops =
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -657,10 +644,10 @@ index b4b6a44616e..44237bc8b18 100644
symlink_destroy /* destroy */
};
diff --git a/server/thread.c b/server/thread.c
index 874555bd7b4..92b83ea7f79 100644
index e2bfa50c7ba..9faef2dcd34 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -123,6 +123,7 @@ static const struct object_ops thread_apc_ops =
@@ -121,6 +121,7 @@ static const struct object_ops thread_apc_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -668,7 +655,7 @@ index 874555bd7b4..92b83ea7f79 100644
no_close_handle, /* close_handle */
thread_apc_destroy /* destroy */
};
@@ -160,6 +161,7 @@ static const struct object_ops context_ops =
@@ -157,6 +158,7 @@ static const struct object_ops context_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -676,7 +663,7 @@ index 874555bd7b4..92b83ea7f79 100644
no_close_handle, /* close_handle */
no_destroy /* destroy */
};
@@ -196,6 +198,7 @@ static const struct object_ops thread_ops =
@@ -191,6 +193,7 @@ static const struct object_ops thread_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
thread_get_kernel_obj_list, /* get_kernel_obj_list */
@ -685,10 +672,10 @@ index 874555bd7b4..92b83ea7f79 100644
destroy_thread /* destroy */
};
diff --git a/server/timer.c b/server/timer.c
index 0499080fd0c..279417b9f4c 100644
index 6460acbf519..2b5ae29a45a 100644
--- a/server/timer.c
+++ b/server/timer.c
@@ -80,6 +80,7 @@ static const struct object_ops timer_ops =
@@ -76,6 +76,7 @@ static const struct object_ops timer_ops =
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -697,10 +684,10 @@ index 0499080fd0c..279417b9f4c 100644
timer_destroy /* destroy */
};
diff --git a/server/token.c b/server/token.c
index 5e47d76ef40..1cdab79da70 100644
index 2fa95e17aaf..8464eaf83eb 100644
--- a/server/token.c
+++ b/server/token.c
@@ -162,6 +162,7 @@ static const struct object_ops token_ops =
@@ -157,6 +157,7 @@ static const struct object_ops token_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -709,10 +696,10 @@ index 5e47d76ef40..1cdab79da70 100644
token_destroy /* destroy */
};
diff --git a/server/winstation.c b/server/winstation.c
index d7c1a8ca8bf..32772d4805b 100644
index 43d112334d4..993a41178c6 100644
--- a/server/winstation.c
+++ b/server/winstation.c
@@ -76,6 +76,7 @@ static const struct object_ops winstation_ops =
@@ -75,6 +75,7 @@ static const struct object_ops winstation_ops =
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -720,7 +707,7 @@ index d7c1a8ca8bf..32772d4805b 100644
winstation_close_handle, /* close_handle */
winstation_destroy /* destroy */
};
@@ -101,6 +102,7 @@ static const struct object_ops desktop_ops =
@@ -99,6 +100,7 @@ static const struct object_ops desktop_ops =
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
no_kernel_obj_list, /* get_kernel_obj_list */
@ -729,5 +716,5 @@ index d7c1a8ca8bf..32772d4805b 100644
desktop_destroy /* destroy */
};
--
2.26.0
2.26.2

View File

@ -1,5 +1,4 @@
Fixes: Fix possible leak of explorer.exe processes and implement proper desktop refcounting
Fixes: Assign random name when trying to create Window Station without name
Fixes: [46967] GOG Galaxy doesn't run in virtual desktop.
Depends: eventfd_synchronization
Depends: ws2_32-WSACleanup

View File

@ -1,26 +1,27 @@
From 3b5ea5ff15907d1d8f1902a08451b0a03eb11dc9 Mon Sep 17 00:00:00 2001
From ed63a76dc481da8af510fb8f9ae6c399ca0ca0ac Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Fri, 21 Aug 2015 21:58:51 +0800
Subject: ntdll: Set EOF on file which has a memory mapping should fail.
Subject: [PATCH] ntdll: Set EOF on file which has a memory mapping should
fail.
---
dlls/ntdll/file.c | 27 +++++++-------------------
server/fd.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++
server/protocol.def | 7 +++++++
dlls/ntdll/file.c | 27 ++++++----------------
server/fd.c | 55 +++++++++++++++++++++++++++++++++++++++++++++
server/protocol.def | 7 ++++++
3 files changed, 69 insertions(+), 20 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index be6b591..8c9b076 100644
index 013706889bb..a28ae265687 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -2650,30 +2650,17 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io,
@@ -2747,30 +2747,17 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io,
case FileEndOfFileInformation:
if (len >= sizeof(FILE_END_OF_FILE_INFORMATION))
{
- struct stat st;
const FILE_END_OF_FILE_INFORMATION *info = ptr;
- if ((io->u.Status = server_get_unix_fd( handle, 0, &fd, &needs_close, NULL, NULL )))
- if ((io->u.Status = unix_funcs->server_get_unix_fd( handle, 0, &fd, &needs_close, NULL, NULL )))
- return io->u.Status;
-
- /* first try normal truncate */
@ -52,10 +53,10 @@ index be6b591..8c9b076 100644
case FilePipeInformation:
diff --git a/server/fd.c b/server/fd.c
index fef4827..62373d8 100644
index 06d1d81bdb0..7b016acb382 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -2353,6 +2353,50 @@ failed:
@@ -2534,6 +2534,50 @@ failed:
free( name );
}
@ -106,7 +107,7 @@ index fef4827..62373d8 100644
struct completion *fd_get_completion( struct fd *fd, apc_param_t *p_key )
{
*p_key = fd->comp_key;
@@ -2593,3 +2637,14 @@ DECL_HANDLER(set_fd_name_info)
@@ -2812,3 +2856,14 @@ DECL_HANDLER(set_fd_name_info)
}
if (root_fd) release_object( root_fd );
}
@ -122,10 +123,10 @@ index fef4827..62373d8 100644
+ }
+}
diff --git a/server/protocol.def b/server/protocol.def
index c313006..8d197f0 100644
index 423e6079009..c6110fc675e 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3541,6 +3541,13 @@ enum coords_relative
@@ -3821,6 +3821,13 @@ struct handle_info
@END
@ -140,5 +141,5 @@ index c313006..8d197f0 100644
@REQ(get_window_layered_info)
user_handle_t handle; /* handle to the window */
--
2.5.0
2.26.2

View File

@ -1,4 +1,4 @@
From 276db2921f3643686de6360d882c344fe86e6d99 Mon Sep 17 00:00:00 2001
From 3f37e21dc1ff1cbd971b5bf7307b6898c2339b29 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 8 Mar 2017 03:32:43 +0100
Subject: [PATCH] server: Register types during startup.
@ -40,7 +40,7 @@ index db04727b93b..f8561172b70 100644
}
diff --git a/server/directory.c b/server/directory.c
index 28aec30304a..0a591ed6d9a 100644
index 75f1e8f117d..b39a4606277 100644
--- a/server/directory.c
+++ b/server/directory.c
@@ -121,8 +121,7 @@ static void object_type_dump( struct object *obj, int verbose )
@ -116,22 +116,22 @@ index 781e6f3141a..42350048877 100644
}
diff --git a/server/main.c b/server/main.c
index 43297a3e93d..0a628c30e2d 100644
index efb205f5292..fee10ea3d37 100644
--- a/server/main.c
+++ b/server/main.c
@@ -146,6 +146,7 @@ int main( int argc, char *argv[] )
@@ -145,6 +145,7 @@ int main( int argc, char *argv[] )
init_signals();
init_directories();
init_registry();
init_shared_memory();
+ init_types();
main_loop();
return 0;
}
diff --git a/server/mapping.c b/server/mapping.c
index 2a2803404cc..24ab0f63e48 100644
index 0941dd87c05..88894661025 100644
--- a/server/mapping.c
+++ b/server/mapping.c
@@ -979,8 +979,7 @@ static void mapping_dump( struct object *obj, int verbose )
@@ -915,8 +915,7 @@ static void mapping_dump( struct object *obj, int verbose )
static struct object_type *mapping_get_type( struct object *obj )
{
@ -249,7 +249,7 @@ index 3144eb56678..5cc593f5c52 100644
extern struct object *create_obj_symlink( struct object *root, const struct unicode_str *name,
diff --git a/server/process.c b/server/process.c
index 6722addb091..aded1da8901 100644
index 76bb6faa91a..be5caaecd7e 100644
--- a/server/process.c
+++ b/server/process.c
@@ -215,8 +215,7 @@ static struct job *get_job_obj( struct process *process, obj_handle_t handle, un
@ -315,10 +315,10 @@ index e5ee09f015a..287432f692e 100644
}
diff --git a/server/thread.c b/server/thread.c
index 0226e744d7b..7fb902c9648 100644
index e2bfa50c7ba..4d518a93403 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -454,8 +454,7 @@ static void dump_thread( struct object *obj, int verbose )
@@ -445,8 +445,7 @@ static void dump_thread( struct object *obj, int verbose )
static struct object_type *thread_get_type( struct object *obj )
{

View File

@ -1,3 +1,3 @@
Fixes: [44629] Process Hacker can't enumerate handles
Fixes: [45374] Yet Another Process Monitor (.NET 2.0 app) reports System.AccessViolationException
Depends: server-Shared_Memory
#Depends: server-Shared_Memory

View File

@ -7,3 +7,5 @@ Depends: server-PeekMessage
Depends: server-Signal_Thread
Depends: user32-rawinput-nolegacy
Depends: ntdll-ext4-case-folder
# This is not worth rebasing right now.
Disabled: true

View File

@ -1,4 +1,4 @@
From c7d08fae58702256a3034521632553740f590750 Mon Sep 17 00:00:00 2001
From 738b377c97704144b9e750c284155d0c7ac7bd4a Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Mon, 25 May 2015 06:07:50 +0200
Subject: [PATCH] wineboot: Assign a drive serial number during prefix
@ -9,10 +9,10 @@ Subject: [PATCH] wineboot: Assign a drive serial number during prefix
1 file changed, 32 insertions(+)
diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c
index e1dbe6630..f8b0c4d74 100644
index 21be0f55fb0..b67b60974b4 100644
--- a/programs/wineboot/wineboot.c
+++ b/programs/wineboot/wineboot.c
@@ -71,6 +71,7 @@
@@ -76,6 +76,7 @@
#include <shlwapi.h>
#include <shellapi.h>
#include <setupapi.h>
@ -20,7 +20,7 @@ index e1dbe6630..f8b0c4d74 100644
#include <newdev.h>
#include "resource.h"
@@ -537,6 +538,36 @@ done:
@@ -580,6 +581,36 @@ done:
RegCloseKey( bios_key );
}
@ -57,14 +57,14 @@ index e1dbe6630..f8b0c4d74 100644
/* create the volatile hardware registry keys */
static void create_hardware_registry_keys(void)
{
@@ -1694,6 +1725,7 @@ int __cdecl main( int argc, char *argv[] )
@@ -1590,6 +1621,7 @@ int __cdecl main( int argc, char *argv[] )
ResetEvent( event ); /* in case this is a restart */
create_user_shared_data();
+ create_disk_serial_number();
create_hardware_registry_keys();
create_dynamic_registry_keys();
create_environment_registry_keys();
--
2.25.0
2.26.2

View File

@ -1,4 +1,4 @@
From b72a4fc5697e18fab51553bf182e10352893b09f Mon Sep 17 00:00:00 2001
From 45598a4fa2472c7df34c472fb0c193d9948a469d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 7 Sep 2017 00:38:09 +0200
Subject: [PATCH] tools/winebuild: Add syscall thunks for 64 bit.
@ -6,11 +6,12 @@ Subject: [PATCH] tools/winebuild: Add syscall thunks for 64 bit.
---
dlls/kernel32/tests/loader.c | 7 +-
dlls/ntdll/signal_x86_64.c | 2 +
dlls/ntdll/thread.c | 17 ++-
dlls/ntdll/thread.c | 13 +-
libs/wine/loader.c | 4 +
programs/wineboot/wineboot.c | 4 +
tools/winebuild/parser.c | 2 +-
tools/winebuild/spec32.c | 285 ++++++++++++++++++++++++++++++++++-
6 files changed, 307 insertions(+), 10 deletions(-)
7 files changed, 307 insertions(+), 10 deletions(-)
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
index 95939ba6bde..ae5462f6e55 100644
@ -40,7 +41,7 @@ index 95939ba6bde..ae5462f6e55 100644
todo_wine ok(0, "%s: Export is a stub-function, skipping\n", func_name);
continue;
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
index 31af1e98d3f..324a92b41a9 100644
index e92470e9606..e089afd71f5 100644
--- a/dlls/ntdll/signal_x86_64.c
+++ b/dlls/ntdll/signal_x86_64.c
@@ -354,6 +354,7 @@ static inline void set_sigcontext( const CONTEXT *context, ucontext_t *sigcontex
@ -60,7 +61,7 @@ index 31af1e98d3f..324a92b41a9 100644
}
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 9fcbd8310ed..ed1183b0512 100644
index fb5320603dc..20934448fa3 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -54,6 +54,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(thread);
@ -72,18 +73,7 @@ index 9fcbd8310ed..ed1183b0512 100644
void (WINAPI *kernel32_start_process)(LPTHREAD_START_ROUTINE,void*) = NULL;
/* info passed to a starting thread */
@@ -206,6 +208,10 @@ static void fill_user_shared_data( struct _KUSER_SHARED_DATA *data )
data->NumberOfPhysicalPages = sbi.MmNumberOfPhysicalPages;
wcscpy( data->NtSystemRoot, windows_dir );
+ /* Pretend we don't support the SYSCALL instruction on x86-64. Needed for
+ * Chromium; see output_syscall_thunks_x64() in winebuild. */
+ data->SystemCallPad[0] = 1;
+
switch (sci.Architecture)
{
case PROCESSOR_ARCHITECTURE_INTEL:
@@ -312,9 +318,9 @@ TEB *thread_init(void)
@@ -230,9 +232,9 @@ TEB *thread_init(void)
/* reserve space for shared user data */
addr = (void *)0x7ffe0000;
@ -95,7 +85,7 @@ index 9fcbd8310ed..ed1183b0512 100644
if (status)
{
MESSAGE( "wine: failed to map the shared user data: %08x\n", status );
@@ -322,6 +328,13 @@ TEB *thread_init(void)
@@ -240,6 +242,13 @@ TEB *thread_init(void)
}
user_shared_data = addr;
@ -125,6 +115,21 @@ index 4597a6cb324..3d0d75e9c6d 100644
sec->Characteristics = (IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ);
sec++;
diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c
index 21be0f55fb0..f84a7fe8a0c 100644
--- a/programs/wineboot/wineboot.c
+++ b/programs/wineboot/wineboot.c
@@ -235,6 +235,10 @@ static void create_user_shared_data(void)
data->NumberOfPhysicalPages = sbi.MmNumberOfPhysicalPages;
wcscpy( data->NtSystemRoot, L"C:\\windows" );
+ /* Pretend we don't support the SYSCALL instruction on x86-64. Needed for
+ * Chromium; see output_syscall_thunks_x64() in winebuild. */
+ data->SystemCallPad[0] = 1;
+
features = data->ProcessorFeatures;
switch (sci.Architecture)
{
diff --git a/tools/winebuild/parser.c b/tools/winebuild/parser.c
index 74216f8bb6e..820516329a4 100644
--- a/tools/winebuild/parser.c

View File

@ -1,21 +1,26 @@
From 380a706bf10f26de9a1cd1a440b427f01f012285 Mon Sep 17 00:00:00 2001
From e5ee1bec04910d5109591ee82177cdddaab60da7 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 6 Sep 2015 12:41:17 +0200
Subject: ws2_32: Invalidate client-side file descriptor cache in WSACleanup.
Subject: [PATCH] ws2_32: Invalidate client-side file descriptor cache in
WSACleanup.
---
dlls/ntdll/ntdll.spec | 1 +
dlls/ntdll/server.c | 24 ++++++++++++++++++++++++
dlls/ws2_32/socket.c | 1 +
dlls/ws2_32/tests/sock.c | 5 +----
include/wine/server.h | 1 +
5 files changed, 28 insertions(+), 4 deletions(-)
dlls/ntdll/ntdll.spec | 1 +
dlls/ntdll/server.c | 8 ++++++++
dlls/ntdll/unix/loader.c | 1 +
dlls/ntdll/unix/server.c | 20 ++++++++++++++++++++
dlls/ntdll/unix/unix_private.h | 1 +
dlls/ntdll/unixlib.h | 3 ++-
dlls/ws2_32/socket.c | 1 +
dlls/ws2_32/tests/sock.c | 5 +----
include/wine/server.h | 1 +
9 files changed, 36 insertions(+), 5 deletions(-)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index c3b6bf0..2b52562 100644
index 42532bd9f1c..ba46f170670 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1458,6 +1458,7 @@
@@ -1575,6 +1575,7 @@
# Server interface
@ cdecl -norelay wine_server_call(ptr)
@ -24,19 +29,49 @@ index c3b6bf0..2b52562 100644
@ cdecl wine_server_handle_to_fd(long long ptr ptr)
@ cdecl wine_server_release_fd(long long)
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
index 356d631..381d5aa 100644
index ed4e3f25531..ae1e41a485e 100644
--- a/dlls/ntdll/server.c
+++ b/dlls/ntdll/server.c
@@ -915,6 +915,30 @@ int server_remove_fd_from_cache( HANDLE handle )
@@ -687,6 +687,14 @@ void CDECL wine_server_release_fd( HANDLE handle, int unix_fd )
unix_funcs->server_release_fd( handle, unix_fd );
}
/***********************************************************************
+ /***********************************************************************
+ * wine_server_close_fds_by_type
+ *
+ * Needed for a proper implementation of WSACleanup.
+ */
+void CDECL wine_server_close_fds_by_type( enum server_fd_type type )
+{
+ unix_funcs->server_remove_fds_from_cache_by_type( type );
+}
+
/***********************************************************************
* server_init_process
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index 4a3f101d301..8b10964603e 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -1000,6 +1000,7 @@ static struct unix_funcs unix_funcs =
wine_server_call,
server_send_fd,
server_remove_fd_from_cache,
+ server_remove_fds_from_cache_by_type,
server_get_unix_fd,
server_fd_to_handle,
server_handle_to_fd,
diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c
index 8dc3f33bc80..dd2cb6cf5e2 100644
--- a/dlls/ntdll/unix/server.c
+++ b/dlls/ntdll/unix/server.c
@@ -559,6 +559,26 @@ int CDECL server_remove_fd_from_cache( HANDLE handle )
return fd;
}
+/***********************************************************************
+ * server_remove_fds_from_cache_by_type
+ */
+void CDECL server_remove_fds_from_cache_by_type( enum server_fd_type type )
+{
+ union fd_cache_entry cache;
+ unsigned int entry, idx;
+
@ -52,17 +87,47 @@ index 356d631..381d5aa 100644
+ }
+ }
+}
+
+
+/***********************************************************************
/***********************************************************************
* server_get_unix_fd
*
* The returned unix_fd should be closed iff needs_close is non-zero.
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index 2bf39f85371..32c03fd8983 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -63,6 +63,7 @@ extern void CDECL dbg_init(void) DECLSPEC_HIDDEN;
extern unsigned int CDECL server_call_unlocked( void *req_ptr ) DECLSPEC_HIDDEN;
extern void CDECL server_send_fd( int fd ) DECLSPEC_HIDDEN;
extern int CDECL server_remove_fd_from_cache( HANDLE handle ) DECLSPEC_HIDDEN;
+extern void CDECL server_remove_fds_from_cache_by_type( enum server_fd_type type ) DECLSPEC_HIDDEN;
extern int CDECL server_get_unix_fd( HANDLE handle, unsigned int wanted_access, int *unix_fd,
int *needs_close, enum server_fd_type *type,
unsigned int *options ) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index 142e8956e7e..452c725dfde 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -25,7 +25,7 @@
#include "wine/debug.h"
/* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 10
+#define NTDLL_UNIXLIB_VERSION 11
struct unix_funcs
{
@@ -55,6 +55,7 @@ struct unix_funcs
unsigned int (CDECL *server_call)( void *req_ptr );
void (CDECL *server_send_fd)( int fd );
int (CDECL *server_remove_fd_from_cache)( HANDLE handle );
+ void (CDECL *server_remove_fds_from_cache_by_type)( enum server_fd_type type );
int (CDECL *server_get_unix_fd)( HANDLE handle, unsigned int wanted_access, int *unix_fd,
int *needs_close, enum server_fd_type *type, unsigned int *options );
NTSTATUS (CDECL *server_fd_to_handle)( int fd, unsigned int access, unsigned int attributes,
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index ea45397..c50d2b6 100644
index bbc44ca2c20..37d110d216f 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -1495,6 +1495,7 @@ INT WINAPI WSACleanup(void)
@@ -1729,6 +1729,7 @@ INT WINAPI WSACleanup(void)
if (!--num_startup)
{
@ -71,10 +136,10 @@ index ea45397..c50d2b6 100644
{
wine_server_call( req );
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index e3732a3..9ed71aa 100644
index 9fe89d9dba3..c2e1379fe6f 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -1179,10 +1179,7 @@ static void test_WithWSAStartup(void)
@@ -1250,10 +1250,7 @@ static void test_WithWSAStartup(void)
SetLastError(0xdeadbeef);
res = getsockname(sock, (struct sockaddr *)&saddr, &size);
error = WSAGetLastError();
@ -87,7 +152,7 @@ index e3732a3..9ed71aa 100644
}
}
diff --git a/include/wine/server.h b/include/wine/server.h
index d573d1f..02d9c7b 100644
index ac5dcc6f8bc..5cf52887516 100644
--- a/include/wine/server.h
+++ b/include/wine/server.h
@@ -54,6 +54,7 @@ extern void CDECL wine_server_send_fd( int fd );
@ -99,5 +164,5 @@ index d573d1f..02d9c7b 100644
/* do a server call and set the last error code */
static inline unsigned int wine_server_call_err( void *req_ptr )
--
2.6.2
2.26.2

View File

@ -1,4 +1,4 @@
From 6122f1c9de4a8e595c15034753c2838579548254 Mon Sep 17 00:00:00 2001
From 3e86366ed3ab3aca555d2457e930cf7dbd08a105 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 22 Jun 2014 19:04:38 +0200
Subject: [PATCH] wtsapi32: Partial implementation of WTSEnumerateProcessesW.
@ -9,7 +9,7 @@ Subject: [PATCH] wtsapi32: Partial implementation of WTSEnumerateProcessesW.
2 files changed, 74 insertions(+), 5 deletions(-)
diff --git a/dlls/wtsapi32/tests/wtsapi.c b/dlls/wtsapi32/tests/wtsapi.c
index 67f56bbd7f5..5b4e28a1a30 100644
index c9312cd97c5..72b57c16ffa 100644
--- a/dlls/wtsapi32/tests/wtsapi.c
+++ b/dlls/wtsapi32/tests/wtsapi.c
@@ -85,7 +85,6 @@ static void test_WTSEnumerateProcessesW(void)
@ -21,7 +21,7 @@ index 67f56bbd7f5..5b4e28a1a30 100644
WTSFreeMemory(info);
}
diff --git a/dlls/wtsapi32/wtsapi32.c b/dlls/wtsapi32/wtsapi32.c
index 2f5e73d05af..c3a483af10f 100644
index ef3e0d10a0f..06ce384a337 100644
--- a/dlls/wtsapi32/wtsapi32.c
+++ b/dlls/wtsapi32/wtsapi32.c
@@ -17,8 +17,11 @@
@ -33,10 +33,10 @@ index 2f5e73d05af..c3a483af10f 100644
#include "windef.h"
#include "winbase.h"
+#include "winternl.h"
#include "winnls.h"
#include "wtsapi32.h"
#include "wine/debug.h"
#include "wine/heap.h"
@@ -93,8 +96,13 @@ BOOL WINAPI WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved, DWORD Version
@@ -115,8 +118,13 @@ BOOL WINAPI WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved, DWORD Version
BOOL WINAPI WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version,
PWTS_PROCESS_INFOW* ppProcessInfo, DWORD* pCount)
{
@ -52,7 +52,7 @@ index 2f5e73d05af..c3a483af10f 100644
if (!ppProcessInfo || !pCount || Reserved != 0 || Version != 1)
{
@@ -102,9 +110,71 @@ BOOL WINAPI WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version
@@ -124,9 +132,71 @@ BOOL WINAPI WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version
return FALSE;
}
@ -127,5 +127,5 @@ index 2f5e73d05af..c3a483af10f 100644
}
--
2.20.1
2.26.2

View File

@ -1 +1 @@
e48fabff525061c8eea9558084a97308cebe6b7b
bf83d755d987fec552cd1dce30638c31c49ab760