Compare commits

..

184 Commits
v3.7 ... v3.17

Author SHA1 Message Date
Zebediah Figura
dc83f04f04 Release v3.17 2018-09-29 21:15:51 -05:00
Zebediah Figura
761ca063a0 Rebase against f11563c65fa50e2f8b7e39cade34bb7a998b26f7. 2018-09-28 16:57:12 -05:00
Zebediah Figura
732d40058d Rebase against d8f3f1b71726b793f2f9a86225a73a7d286e62b3. 2018-09-28 11:01:58 -05:00
Zebediah Figura
64561065d2 Rebase against dbaaee8e4d72b929e86c590a9e40c48ea86468c4. 2018-09-25 15:47:42 -05:00
Zebediah Figura
1bd95055a7 Rebase against 52fecef1a237368eee84ebc9b366107ee2509562. 2018-09-24 20:14:52 -05:00
Zebediah Figura
3f082c2d0a Rebase against b1a3b9e5ce74990777fca94658833802cb7b7a09. 2018-09-20 18:18:30 -05:00
Zebediah Figura
42312b1e3f Compiler_Warnings: Remove workarounds for older GCC version. 2018-09-19 16:52:37 -05:00
Zebediah Figura
a840ce50e7 ntoskrnl-Synchronization: Add patchset. 2018-09-18 21:31:16 -05:00
Zebediah Figura
912b650b76 Rebase against 93994dfc0b99789e3a9c1490b4d93082f34b8dcc. 2018-09-18 20:42:30 -05:00
Zebediah Figura
5ae728e2ec Rebase against 8a985174ebc1b041d9a4f1abbdc184fe692d25bf.
Also fix wined3d-Indexed_Vertex_Blending rebase, again.
2018-09-17 20:55:00 -05:00
Alistair Leslie-Hughes
9517e98320 Removed dsound-Revert_Cleanup patchset
This patchset appears not to correct anything and is just here
to make applying other patchsets easier.
2018-09-17 18:15:46 +10:00
Alistair Leslie-Hughes
bd3794c11e Removed opengl32-Revert_Disable_Ext patchset
All regression this was attempted to work around appear to be fixed.
Infact this is now causing a regression of its own
https://bugs.winehq.org/show_bug.cgi?id=45826
2018-09-17 18:15:46 +10:00
Alistair Leslie-Hughes
7cfceb78b2 Release v3.16 2018-09-15 20:05:19 +10:00
Zebediah Figura
1ee9d7c6e8 Rebase against 64d9f309b7f74d4154e685c5d1d78c1b8335c0bc. 2018-09-14 21:10:12 -05:00
Alistair Leslie-Hughes
5d3992d777 Rebase against 0799550075654094a3bed080aac722b9bea01307 2018-09-14 08:12:23 +10:00
Alistair Leslie-Hughes
d4710fd098 Added hnetcfg-NATUPnP patchset 2018-09-13 08:18:29 +10:00
Alistair Leslie-Hughes
6587db3575 Rebase against f274a198d21e5c89ea1dc6abdb5de5ad730c1233 2018-09-13 08:12:46 +10:00
Alistair Leslie-Hughes
8f0e72776f Rebase against b29cdbd5f23548d9631e5c98ec923b6d2d16a3f8 2018-09-12 08:28:34 +10:00
Zebediah Figura
6e0d8f18d9 Rebase against 18e2df401eb545f0ce490daaaf12a6c1c248119f. 2018-09-10 20:28:36 -05:00
Zebediah Figura
28e66e552f patchutils: Be less silent about patches that don't apply. 2018-09-10 19:32:35 -05:00
Zebediah Figura
3cc8f97398 Rebase against bfe8510ec0c7bcef0be1f6990c56ad235d8bccd6. 2018-09-07 18:44:22 -05:00
Alistair Leslie-Hughes
1cbabaac9d Rebase against d99f6821183ef16457f5cedb13289bc715d11f09 2018-09-06 08:51:44 +10:00
Alistair Leslie-Hughes
b9ae1089c7 Rebase against c4131f69d3b5fde9954cc11609e6f19196399d46 2018-09-05 07:49:07 +10:00
Alistair Leslie-Hughes
5a71716118 Rebase against 279ac253e5aa7132ec4960af175115befcdfefd0 2018-09-04 08:28:47 +10:00
Alistair Leslie-Hughes
214a0fd7bd Release v3.15 2018-09-02 13:05:52 +10:00
Zebediah Figura
94f314ccaa Rebase against 2346a4012aed5a150cd971ca1e929528722a4d12. 2018-08-31 19:16:27 -05:00
Alistair Leslie-Hughes
90c47aa854 Added winex11-mouse-movements patchset 2018-08-31 08:44:58 +10:00
Alistair Leslie-Hughes
51cfdc619e Rebase against a1e0a029b0ce80e6561e0656ae4530fb1a8d4316 2018-08-30 09:25:58 +10:00
Alistair Leslie-Hughes
d7154d5d3f Updated user32-Mouse_Message_Hwnd patchset 2018-08-28 22:13:18 +10:00
Alistair Leslie-Hughes
412e20cd9a Updated mfplat-MFCreateSample patchset 2018-08-28 19:28:13 +10:00
Alistair Leslie-Hughes
a043977b12 Added mfplat-MFCreateMemoryBuffer patchset 2018-08-28 10:47:04 +10:00
Alistair Leslie-Hughes
b64814b44a Updated winepulse-PulseAudio_Support patchset 2018-08-28 09:31:25 +10:00
Alistair Leslie-Hughes
f3b9983a5e Updated mfplat-MFCreateMFByteStreamOnStream patchset 2018-08-28 09:25:28 +10:00
Alistair Leslie-Hughes
d205b5f8e9 Rebase against 96a6053feda4e16480c21d01b3688a8d38e5ad6d 2018-08-28 08:27:10 +10:00
Alistair Leslie-Hughes
ab69e65646 Added mfplat-MFCreateSample patchset 2018-08-27 10:10:10 +10:00
Alistair Leslie-Hughes
965002dc53 Added mfplat-MFCreateMFByteStreamOnStream patchset 2018-08-27 10:10:10 +10:00
Alistair Leslie-Hughes
a6eddc4c25 Added mfplat-MFTRegisterLocal patchset 2018-08-27 10:10:10 +10:00
Alistair Leslie-Hughes
7a9913e0a9 Added xaudio2_7-CreateFX-FXEcho patchset 2018-08-27 10:09:34 +10:00
Alistair Leslie-Hughes
e8ba49a434 Remove crypt32-ECDSA_Cert_Chains
These test are what remains of the origial patchset, and they
are very unlikly to upstreamed.
2018-08-27 09:02:58 +10:00
Zebediah Figura
3dcb983637 Rebase against 70fbfa2cb8198f86efa19eda91cf769056b7da2c. 2018-08-24 17:37:59 -05:00
Zebediah Figura
74e9c4f8ce Rebase against f0ad5b5c546d17b281aef13fde996cda08d0c14e. 2018-08-23 17:35:08 -05:00
Zebediah Figura
8ff32873d6 ntdll-RtlCreateUserThread: Fix ARM64 compile, for real this time. 2018-08-23 16:57:18 -05:00
Alistair Leslie-Hughes
9190e30a15 Rebase against 18564c76fc613f61a3e13b7497dde4b29b35194e 2018-08-23 09:25:39 +10:00
Alistair Leslie-Hughes
8cf0e5c285 Rebase against 83e481fee20bc5c6598e65f8295be1b3f11fb70b 2018-08-22 09:09:03 +10:00
Zebediah Figura
110a6f6016 Rebase against 8204d04b7fd416c1b6296708937e3c06e058809b. 2018-08-20 20:20:07 -05:00
Zebediah Figura
720db34b6e ntdll-RtlCreateUserThread: Fix compilation for ARM.
* Fix field dereferencing, should fix bug 45678.
* Don't use __syscall_ wrappers on architectures where syscall thunks aren't
  implemented. (Ideally we'd just redirect them, but it turns out that this
  is very hard to do with the current infrastructure.) This should fix bug
  45677.
2018-08-20 19:33:26 -05:00
Alistair Leslie-Hughes
a701f0ed4c Release 3.14 2018-08-20 08:21:50 +10:00
Zebediah Figura
c58c70e961 Rebase against c698682b3286d72cc7c4c4624b4d14b03dbe6908. 2018-08-18 11:37:45 -05:00
Zebediah Figura
93e4c328d7 Rebase against ccf6211c0ae6e86218f7e6c1f2fe725a23e568b9. 2018-08-16 23:11:33 -05:00
Zebediah Figura
06c1bde586 patchutils.py: fix crash when a patch deletes a file 2018-08-16 22:05:28 -05:00
Alistair Leslie-Hughes
ec47c04ab3 Rebase against d744f367d263a131feee96e103fb8220e8400b53 2018-08-16 10:22:07 +10:00
Alistair Leslie-Hughes
e7bff1bb4f Rebase against ba9f3dc198dfc81bb40159077b73b797006bb73c 2018-08-15 10:06:08 +10:00
Alistair Leslie-Hughes
39cafb1db1 Updated ML-patchset
Dropped the FILE_FLAG_WRITE_THROUGH patches since they appear to be breaking multiple applications.
Bug 45599, 45604.
2018-08-10 20:17:50 +10:00
Alistair Leslie-Hughes
49f93040fe Updated ntdll-futex-condition-var patchset 2018-08-10 19:59:21 +10:00
Zebediah Figura
af0347a0f2 ntdll-SystemModuleInformation: Add patchset. 2018-08-09 14:25:29 -05:00
Zebediah Figura
0e828a225e wow64cpu-Wow64Transition: Remove wow64cpu -> kernel32 dependencies. 2018-08-09 14:23:15 -05:00
Zebediah Figura
eb5196c132 winebuild-Fake_Dlls: Fix __wine_syscall_dispatcher to return to the ntdll syscall thunk on i386.
Based on a patch by Andrew Wesie.

League of Legends hooks the RET instruction in some cases, so we need to
return to that frame.

Fixes https://bugs.winehq.org/show_bug.cgi?id=45573
2018-08-09 00:22:03 -05:00
Zebediah Figura
f45bfd8af7 ntdll-RtlCreateUserThread: Add patchset. 2018-08-09 00:17:55 -05:00
Zebediah Figura
d9dc36f879 ntdll-LdrInitializeThunk: Add patchset. 2018-08-09 00:11:16 -05:00
Zebediah Figura
2c7a662655 wow64cpu-Wow64Transition: Add patchset. 2018-08-09 00:11:16 -05:00
Zebediah Figura
ec218012c3 winepulse-PulseAudio_Support: Add patch.
Should fix https://bugs.winehq.org/show_bug.cgi?id=45589.
2018-08-08 23:37:48 -05:00
Zebediah Figura
c2d58dc59a ntdll-futex-condition-var: Update.
With extended thanks to Andrew Wesie.

Should finally put https://bugs.winehq.org/show_bug.cgi?id=45558 to rest.
2018-08-08 22:54:50 -05:00
Alistair Leslie-Hughes
2f3ba1fb46 Update ntdll-futex-condition-var patch
Correct MacOS build error
2018-08-04 17:37:00 +10:00
Alistair Leslie-Hughes
9a1a1f02fb Release 3.13.1 2018-08-04 15:46:13 +10:00
Alistair Leslie-Hughes
f7210fb07e Updated ml-patches patchset 2018-08-04 15:22:30 +10:00
Alistair Leslie-Hughes
9d12bd013b Updated ntdll-futex-condition-var patchset
Fixes the lockup in League of Legends.
2018-08-03 11:51:38 +10:00
Alistair Leslie-Hughes
7da7ae71d2 Added ml-patches patchset
Patches directly from the mailing list with second sign-off if
supplied.
2018-08-03 10:39:36 +10:00
Alistair Leslie-Hughes
f23105a6d8 Added Mailing list - ARRAY_SIZE patchset
These patches are directly from the mailing list with second
sign-off if one was provided.
2018-08-03 09:28:34 +10:00
Alistair Leslie-Hughes
a7ae3783c5 Added winex11-compile-vulkan patchset 2018-08-03 09:21:52 +10:00
Alistair Leslie-Hughes
12d22ddfd7 Reenable dwrite-FontFallback patchset update 2018-08-01 09:42:48 +10:00
Alistair Leslie-Hughes
b6649197d6 Added dwrite-layout-check patchset 2018-08-01 09:34:07 +10:00
Alistair Leslie-Hughes
e1fb783018 Correct Author of DXTn patches
The changes to make it a local library doesn't justify changing
the origial author.
2018-07-31 08:30:09 +10:00
Alistair Leslie-Hughes
1de1a96f1e Updated ntdll-NtContinue patchset 2018-07-30 18:09:31 +10:00
Alistair Leslie-Hughes
00de4984f6 Added ntdll-NtQueryInformationProcess-ProcessCookie patchset 2018-07-30 18:09:31 +10:00
Alistair Leslie-Hughes
87b63971e9 Added ntdll-RtlSetUnhandledExceptionFilter patchset 2018-07-30 18:09:31 +10:00
Alistair Leslie-Hughes
f07947d41c Updated ntdll-NtQueryVirtualMemory patchset
Added patch ntdll: Unsupported stub for MemoryWorkingSetExInformation
2018-07-30 18:09:31 +10:00
Alistair Leslie-Hughes
ea7016fe39 Added dinput8-shared-code patchset 2018-07-30 18:09:31 +10:00
Alistair Leslie-Hughes
a5044d57dd Correct Author of AttachConsole patch 2018-07-30 18:09:31 +10:00
Alistair Leslie-Hughes
ba9e6db9f3 Updated dwrite-FontFallback patchset 2018-07-28 18:13:02 +10:00
Alistair Leslie-Hughes
925645e710 Added ntdll-futex-condition-var patchset 2018-07-28 13:09:17 +10:00
Alistair Leslie-Hughes
2e982e862f Added kernel32-AttachConsole patchset 2018-07-28 12:24:21 +10:00
Alistair Leslie-Hughes
8b65c06f30 Updated xaudio2_7-WMA_support patchset 2018-07-25 16:34:35 +10:00
Alistair Leslie-Hughes
f0d3ae8cf2 Updated winepulse-PulseAudio_Support patchset
Fixes: https://bugs.winehq.org/show_bug.cgi?id=45502
2018-07-24 11:32:16 +10:00
Alistair Leslie-Hughes
44aadc3afc Release 3.13 2018-07-21 09:54:00 +10:00
Alistair Leslie-Hughes
18f4be0e03 Updated winepulse-PulseAudio_Support patchset 2018-07-20 08:34:16 +10:00
Alistair Leslie-Hughes
49025c255b Rebase against d265dd88cd93ce6ffe56c9cfd640b064d7c14e29 2018-07-19 09:41:42 +10:00
Alistair Leslie-Hughes
12be01bfc1 Updated winepulse-PulseAudio_Support 2018-07-18 09:47:02 +10:00
Alistair Leslie-Hughes
79f6a17908 Rebase against adb926d5a5032130d55e4d39316efdb11cc1fe1d 2018-07-17 08:25:25 +10:00
Alistair Leslie-Hughes
2b85113f61 Rebase against 414fe80aebe3850fd016da5cb883f4bfeab1c543 2018-07-14 11:41:23 +10:00
Alistair Leslie-Hughes
60e4f489f6 Rebase against 053a7e225c8190fd7416b3f3c3186f1ac230eeb3 2018-07-13 10:59:13 +10:00
Alistair Leslie-Hughes
fd81bd7755 Rebase against acb879c9d2feae69e8b5b1ede28523a29aef1b89 2018-07-12 10:17:14 +10:00
Alistair Leslie-Hughes
292a0e67f4 Added ddraw-Prevent_viewport_crash patchset 2018-07-11 10:57:01 +10:00
Alistair Leslie-Hughes
7993325086 Added wined3d-WINED3DFMT_B8G8R8X8_UNORM patchset 2018-07-11 09:41:05 +10:00
Alistair Leslie-Hughes
77ecb8ba3f Updated kernelbase-PathCchCombineEx patchset 2018-07-11 09:39:32 +10:00
Alistair Leslie-Hughes
d3bb80f8eb Updated xaudio2_7-WMA_support patchset 2018-07-11 09:38:22 +10:00
Alistair Leslie-Hughes
0b4011d95c Rebase against 3d5d8903b89803f5b2ec12a2d20ae9a171047fdc 2018-07-11 08:40:24 +10:00
Alistair Leslie-Hughes
23fd2d0f93 Release 3.12 2018-07-10 09:38:48 +10:00
Alistair Leslie-Hughes
f61b8570b8 Rebase against 8ef224fa43869a8c977921d6bec08863382d6e11 2018-07-10 09:02:41 +10:00
Zebediah Figura
738fd3fd35 Rebase against 80205232d3ece73d4cc6c7589cea893583aae0b1. 2018-07-07 01:01:40 +02:00
Zebediah Figura
8ed2ef6f5c Rebase against cb468b682d2b7d088d0607259affe1680b558e24.
Thanks to Henri Verbeet for his assistance.
2018-07-06 16:02:29 +02:00
Alistair Leslie-Hughes
686ab91ec6 Rebase against e7f5dc194aeb586bb516b5fd191ad6924c4fcdd3 2018-07-05 09:19:21 +10:00
Zebediah Figura
d53fc8ece0 Rebase against 3edbb2a4fdd2fb46a7af13c921bcd4bf8b7ab718. 2018-07-04 00:13:50 +02:00
Alistair Leslie-Hughes
a505e3815f Correct upstream commit sha 2018-07-03 08:57:59 +10:00
Zebediah Figura
51b6a46ce0 xaudio2_7-WMA_support: Also include libavcodec/libavutil CFLAGS.
Should hopefully fix build on some systems.

Also add dependency on other xaudio2 patch.
2018-07-02 21:07:42 +02:00
Alistair Leslie-Hughes
729a9ebadd Rebase against 86864486be64a277f6edf8e66709cd0f17a4eed9 2018-06-29 08:35:27 +10:00
Alistair Leslie-Hughes
4e57013325 Added wined3d-texture-blt-device patchset 2018-06-28 14:27:13 +10:00
Alistair Leslie-Hughes
19db07f062 Added xaudio2-WMA_support patchset 2018-06-28 14:26:16 +10:00
Alistair Leslie-Hughes
74b35082b3 Rebase against 6a04cf4a69205ddf6827fb2a4b97862fd1947c62 2018-06-28 08:30:08 +10:00
Alistair Leslie-Hughes
24f0fcf07d Remove Coverity patches
These patches are never going to be accepted upstream.

https://www.winehq.org/pipermail/wine-devel/2015-November/110396.html
2018-06-27 08:22:21 +10:00
Alistair Leslie-Hughes
59948639b6 Rebase against 85f1a79be8bbb9b62ad88e0d0fbf1e005fd3ba16 2018-06-27 08:20:14 +10:00
Alistair Leslie-Hughes
2bf4df0d11 Updated wintab32-improvements patchset 2018-06-26 21:07:52 +10:00
Alistair Leslie-Hughes
ba6b6642fb Rebase against 6d801377055911d914226a3c6af8d8637a63fa13 2018-06-26 08:16:59 +10:00
Alistair Leslie-Hughes
da5cec25df Release 3.11 2018-06-24 17:27:35 +10:00
Alistair Leslie-Hughes
5e51e13900 Rebase against 58c49279f5d5ac11c0af25053f47845203dffdec 2018-06-23 16:38:58 +10:00
Alistair Leslie-Hughes
82eedec6ed Updated d3dx9_36-DXTn patchset
Make dxtn library internal.
2018-06-23 15:28:52 +10:00
Alistair Leslie-Hughes
7c9f9bc0c1 Rebase against 9ef8fa2a0bfb559475e17d2562892085f0e2a90f 2018-06-22 11:30:35 +10:00
Zebediah Figura
c3a5e9290e Revert "winebuild-Fake_Dlls: Get rid of dependency on ntdll-User_Shared_Data."
This reverts commit c9eaabbba9.

ntdll-User_Shared_Data touches basically everything that uses shared data.
Trying to avoid any interdependency between these two is futile.
2018-06-20 21:52:57 -05:00
Zebediah Figura
01a9cda461 Revert "winebuild-Fake_Dlls: Reorder some lines to avoid collision with ntdll-User_Shared_Data."
This reverts commit b27ebc675a.
2018-06-20 21:52:32 -05:00
Zebediah Figura
7d7e852679 msi-Deferral: Add patchset. 2018-06-20 18:04:07 -05:00
Zebediah Figura
78878ee3b9 Rebase against cba24001e482fa8a8a1fbf5d5390539e2792b1aa 2018-06-20 17:58:17 -05:00
Zebediah Figura
b27ebc675a winebuild-Fake_Dlls: Reorder some lines to avoid collision with ntdll-User_Shared_Data. 2018-06-20 17:45:35 -05:00
Zebediah Figura
6499b77447 winebuild-Fake_Dlls: Restore changes to krnl386.exe/wowthunk.c removed by bdf29b7cd.
"Don't know if the code modification was correct"—indeed, it was not.
2018-06-20 17:20:31 -05:00
Zebediah Figura
c9eaabbba9 winebuild-Fake_Dlls: Get rid of dependency on ntdll-User_Shared_Data.
By using the marginally documented 'SystemCall' field rather than adding our own.

Note that the SystemCall field is only 32 bits wide even on 64-bit systems, so we have to write over the SystemCallReturn field as well. Since we don't need return thunks this should be fine.
2018-06-20 17:20:31 -05:00
Zebediah Figura
ae4862e0fb Update several definition files 2018-06-19 16:29:27 -05:00
Zebediah Figura
a755842e30 patchupdate.py: All of the bugs linking to wine-compholio have been moved, remove the exception. 2018-06-19 16:11:56 -05:00
Zebediah Figura
3168a74745 patchupdate.py: Allow linking to specific patches. 2018-06-19 16:10:43 -05:00
Alistair Leslie-Hughes
91b1d2470a Rebase against b6c7b2d322e0cd61eaeaac0d936dfc78c850f61b 2018-06-16 14:02:13 +10:00
Alistair Leslie-Hughes
03cdc2f2c8 Rebase against 83f845dfa1bb4a6ec6e8b7f65e9469dc9a8a7787 2018-06-15 08:57:38 +10:00
Alistair Leslie-Hughes
12fb928da8 Rebase against 8c48c632fc66c8420331ed9c14f7fd3764aa8a0d 2018-06-14 09:16:59 +10:00
Alistair Leslie-Hughes
4592d28a7a Release 3.10 2018-06-12 10:22:26 +10:00
Alistair Leslie-Hughes
122a110c7a Rebase against e470221dcaaadf10f222551997ff837f1e7557de 2018-06-12 10:22:06 +10:00
Alistair Leslie-Hughes
d78f0a5a7b Added bcrypt-BCryptGenerateKeyPair patchset 2018-06-12 08:28:09 +10:00
Alistair Leslie-Hughes
95d74e37bd Updated uianimation-stubs patchset
Thanks Louis Lenders
2018-06-12 08:11:17 +10:00
Alistair Leslie-Hughes
e884abcd88 Add uianimation-stubs patchset 2018-06-08 09:16:42 +10:00
Alistair Leslie-Hughes
f98bff1805 Rebase against 868fb05e7710dbaa94569fa7d2c3736580aec438 2018-06-08 08:21:29 +10:00
Alistair Leslie-Hughes
6b93eac6ad Rebase against 5fd3090f522a9c2a4cfb077c9b7cdc1ae1304c4c 2018-06-06 08:44:57 +10:00
Alistair Leslie-Hughes
5ffb34bc71 Updated virtdisk-GetStorageDependencyInformation patchset 2018-06-05 09:46:50 +10:00
Alistair Leslie-Hughes
cf3c3e93e5 Rebase against 11e3cf091d8ec70a9d6004ac6a51d5c827d9ddff
No changes. This is to ensure the build includes the
upstream dbghelp which include "wine/heap.h".
2018-06-05 09:08:05 +10:00
Alistair Leslie-Hughes
7997379312 Added wintab32-improvements patchset 2018-06-03 08:45:19 +10:00
Alistair Leslie-Hughes
26bb2b21f2 Added winex11-Vulkan_support patchset 2018-06-03 08:45:19 +10:00
Alistair Leslie-Hughes
8df70b8b0c Rebase against 185d9ee7ebf56e0663f715e532f2ee2c27289f12 2018-06-01 09:07:56 +10:00
Alistair Leslie-Hughes
b69aa1fa72 Rebase against d3a71dec7ee99e9c65630d080c02d7d4182e61a6 2018-05-31 09:12:45 +10:00
Alistair Leslie-Hughes
d28e1388c0 Rebase against 37e837113ce6654c436211031712719e8f9f29a2 2018-05-30 08:48:14 +10:00
Alistair Leslie-Hughes
b305d85b78 Updated d3d11-Deferred_Context patchset 2018-05-27 11:52:08 +10:00
Alistair Leslie-Hughes
d0cc6096d1 Added wined3d-CompareInterpolationMode patchset 2018-05-27 11:46:46 +10:00
Alistair Leslie-Hughes
eb816d477a Updated windowscodecs-GIF_Encoder patchset.
Added test for function GetEncoderInfo.
2018-05-27 11:24:37 +10:00
Alistair Leslie-Hughes
69650f38d8 Release 3.9 2018-05-26 16:47:41 +10:00
Alistair Leslie-Hughes
06caa35518 Rebase against b70f0d723a768b9fdc89cd835b23718f6cd61f31 2018-05-25 09:05:36 +10:00
Alistair Leslie-Hughes
51557bbf6e Rebase against bf4d0982fd88f9c8848b9e27bb1391d45d18b68e 2018-05-24 10:15:30 +10:00
Zebediah Figura
1121536608 d3d11-Depth_Bias: Add tests for depth bias clamp. 2018-05-22 16:36:40 -05:00
Zebediah Figura
deac22809d Rebase against da5112c74313b5236183135204cab38a8b0169ed. 2018-05-22 16:36:18 -05:00
Zebediah Figura
da46ed3444 Rebase against 8b9ba16e9ad9ca85b93b05c13d6c5044a1a5ecf3. 2018-05-21 20:30:37 -05:00
Zebediah Figura
53a402bde4 Rebase against 8e9ea7a8a163147012908bad696a539454654d8f 2018-05-18 18:56:01 -05:00
Alistair Leslie-Hughes
41b4cfa2c4 Rebase against 48aeef69fc99ff1460da934f4933f0499ff33b13 2018-05-18 11:31:57 +10:00
Alistair Leslie-Hughes
7715ae4be5 Rebase against ba1d9f3aad85303997635ce8328caffa08992c14 2018-05-17 08:57:30 +10:00
Alistair Leslie-Hughes
f5bb52ba01 Disbale d3d11-dynamic-cpu-access patchset
Causing regressions.
2018-05-17 08:15:08 +10:00
Alistair Leslie-Hughes
584fc68f0e Rebase against 9321aa40f5ba79352d346c04f4d428d143575fb9 2018-05-16 08:02:03 +10:00
Alistair Leslie-Hughes
93d16ba18b Updated ntdll-Loader_Machine_Type patchset 2018-05-16 07:53:04 +10:00
Gijs Vermeulen
a6526e647f Update server-Realtime_Priority patchset 2018-05-15 09:01:25 +10:00
Alistair Leslie-Hughes
7966caf282 Rebase against 09bf88092d0748ceac355098a942b01b267e8773 2018-05-15 08:53:14 +10:00
Zebediah Figura
7348f0b12b Merge pull request #62 from gverm/master
Fix LsaLookUpPrivilegeName patchset folder name
2018-05-12 10:30:52 -05:00
Gijs Vermeulen
501012afe2 Fix LsaLookUpPrivilegeName patchset folder name 2018-05-12 15:12:11 +02:00
Alistair Leslie-Hughes
eb684dd939 Release 3.8 2018-05-12 17:19:45 +10:00
Alistair Leslie-Hughes
3851931e1c Added wined3d-Implement-oMask patchset 2018-05-12 13:55:47 +10:00
Alistair Leslie-Hughes
054b0f6db6 Added dxgi-IDXGIDevice2 patchset 2018-05-12 13:49:45 +10:00
Alistair Leslie-Hughes
fcff4a78ba Rebase against 7280f7fb744e951281e7f051c347fb8fef5ab36b 2018-05-12 09:24:56 +10:00
Alistair Leslie-Hughes
44ee738e8b Updated ntdll-Loader_Machine_Type patchset 2018-05-11 19:57:03 +10:00
Alistair Leslie-Hughes
fd7f8c9f16 Rebase against 6d6b4bffb3f619ae298669b888775350223e281f 2018-05-11 11:32:38 +10:00
Alistair Leslie-Hughes
54122cc23e Updated ntdll-Loader_Machine_Type patchset
- Resource only DLLs need to be excluded from the Architecture test.
2018-05-10 08:29:54 +10:00
Alistair Leslie-Hughes
31a33b08ad Rebase against 8f46ac233ed96f7286f6aacd1f8fb2626d3ed1c2 2018-05-10 08:26:38 +10:00
Zebediah Figura
ec4fd3ebdc Rebase against 7f955f22d317cad1e7d5323179e9a0ee635c9768. 2018-05-08 17:53:51 -05:00
Alistair Leslie-Hughes
e9ce651159 Added d3d11-dynamic-cpu-access patchset 2018-05-08 15:35:51 +10:00
Alistair Leslie-Hughes
9f3d2b6601 Disabled dwrite-FontFallback patchset
The tests pass without the implementaion.
2018-05-08 15:31:50 +10:00
Alistair Leslie-Hughes
eaebccd0b8 Rebase against 540c48b91175b11c7b8646d0a036b20c46425080 2018-05-05 09:01:04 +10:00
Alistair Leslie-Hughes
3c3993fdfa Updated shell32-NewMenu_Interface patchset 2018-05-04 18:45:15 +10:00
Alistair Leslie-Hughes
cc3e8145ba Updated shell32-NewMenu_Interface patchset 2018-05-04 10:32:47 +10:00
Alistair Leslie-Hughes
5571baf8cc Rebase against e637a6f0bf1eeba3e6be62c4e1c5688bb8f6102e 2018-05-04 10:25:05 +10:00
Alistair Leslie-Hughes
c7b329f9f1 Added dwrite-FontFallback patch 2018-05-04 09:32:17 +10:00
Alistair Leslie-Hughes
a022e6ff69 Added d3d11-shader-count patchset 2018-05-04 09:27:24 +10:00
Alistair Leslie-Hughes
f9342fe22e Added d2d1-ID2D1Factory1 patchset 2018-05-04 09:20:44 +10:00
Zebediah Figura
797372c132 ntoskrnl-DriverTest: Merge tests with appropriate patches in ntoskrnl-Stubs and winedevice-Default_Drivers. 2018-05-02 18:37:53 -05:00
Zebediah Figura
27c94566e3 Rebase against 8dca6c35e11a104385242ed8346ee05707b78ef7 2018-05-02 17:29:44 -05:00
Zebediah Figura
c6a90a954b Rebase against dbce559df683b7831861c747f1f4d28614eedbe2 2018-05-01 18:26:01 -05:00
Alistair Leslie-Hughes
d13e9fa487 Rebase against 784b617ae936f97118e18624da85cc9de900e3a7 2018-05-01 12:33:16 +10:00
407 changed files with 16860 additions and 18312 deletions

View File

@@ -1,24 +0,0 @@
From 560a25c662f7b56d2b895759be1ea65c64d0f5af Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 4 Jun 2017 12:57:17 +0200
Subject: ws2_32/tests: Work around an incorrect detection in GCC 7.
---
dlls/ws2_32/tests/sock.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 677a750ec6b..65c82e36524 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -3601,6 +3601,7 @@ static DWORD WINAPI SelectReadThread(void *param)
struct sockaddr_in addr;
struct timeval select_timeout;
+ memset(&readfds, 0, sizeof(readfds));
FD_ZERO(&readfds);
FD_SET(par->s, &readfds);
select_timeout.tv_sec=5;
--
2.13.0

View File

@@ -1,67 +0,0 @@
From cd34de81164087b3593d0ec9416e2f157a5df40d Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Fri, 8 Aug 2014 19:33:14 -0600
Subject: Appease the blessed version of gcc (4.5) when -Werror is enabled.
---
dlls/d3d9/tests/visual.c | 2 +-
dlls/netapi32/netapi32.c | 2 +-
dlls/wined3d/glsl_shader.c | 2 +-
tools/makedep.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index c8a6a1fa5a8..0261d3708e6 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -12304,7 +12304,7 @@ static void yuv_layout_test(void)
IDirect3D9 *d3d;
D3DCOLOR color;
DWORD ref_color;
- BYTE *buf, *chroma_buf, *u_buf, *v_buf;
+ BYTE *buf, *chroma_buf, *u_buf = NULL, *v_buf = NULL;
UINT width = 20, height = 16;
IDirect3DDevice9 *device;
ULONG refcount;
diff --git a/dlls/netapi32/netapi32.c b/dlls/netapi32/netapi32.c
index 278d4528b01..1c5f110b828 100644
--- a/dlls/netapi32/netapi32.c
+++ b/dlls/netapi32/netapi32.c
@@ -780,7 +780,7 @@ static NET_API_STATUS share_info_to_samba( DWORD level, const BYTE *buf, unsigne
static NET_API_STATUS share_add( LMSTR servername, DWORD level, LPBYTE buf, LPDWORD parm_err )
{
char *server = NULL;
- unsigned char *info;
+ unsigned char *info = NULL;
NET_API_STATUS status;
if (servername && !(server = strdup_unixcp( servername ))) return ERROR_OUTOFMEMORY;
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index f96f48d97d1..8fe3318cd78 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -9721,7 +9721,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
GLuint ds_id = 0;
GLuint gs_id = 0;
GLuint ps_id = 0;
- struct list *ps_list, *vs_list;
+ struct list *ps_list = NULL, *vs_list = NULL;
WORD attribs_map;
struct wined3d_string_buffer *tmp_name;
diff --git a/tools/makedep.c b/tools/makedep.c
index 296356b0a57..5a2873b56f1 100644
--- a/tools/makedep.c
+++ b/tools/makedep.c
@@ -1608,7 +1608,7 @@ static const char *get_make_variable( const struct makefile *make, const char *n
static char *get_expanded_make_variable( const struct makefile *make, const char *name )
{
const char *var;
- char *p, *end, *expand, *tmp;
+ char *p, *end, *expand, *tmp = NULL;
var = get_make_variable( make, name );
if (!var) return NULL;
--
2.13.1

View File

@@ -1,26 +0,0 @@
From de9dbd542143b13741886c3e4b9f96ffcbfaa432 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Wed, 16 Mar 2016 05:46:33 +0100
Subject: dsound: Avoid implicit cast of interface pointer.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
---
dlls/dsound/primary.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/dsound/primary.c b/dlls/dsound/primary.c
index 3f8a478..6f280f8 100644
--- a/dlls/dsound/primary.c
+++ b/dlls/dsound/primary.c
@@ -626,7 +626,7 @@ out:
static inline IDirectSoundBufferImpl *impl_from_IDirectSoundBuffer(IDirectSoundBuffer *iface)
{
/* IDirectSoundBuffer and IDirectSoundBuffer8 use the same iface. */
- return CONTAINING_RECORD(iface, IDirectSoundBufferImpl, IDirectSoundBuffer8_iface);
+ return CONTAINING_RECORD((IDirectSoundBuffer8 *)iface, IDirectSoundBufferImpl, IDirectSoundBuffer8_iface);
}
/* This sets this format for the primary buffer only */
--
2.7.1

View File

@@ -1,4 +1,4 @@
From 79ff79dba6d5c8008c53e4bcf5e38c3a54271091 Mon Sep 17 00:00:00 2001
From e8bc998c7b00a18a724f6cfd2823aefcd8b1b15c Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 22 Mar 2016 21:54:26 +0100
Subject: d2d1: Avoid implicit cast of interface pointer.
@@ -9,10 +9,10 @@ Subject: d2d1: Avoid implicit cast of interface pointer.
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/dlls/d2d1/brush.c b/dlls/d2d1/brush.c
index 7f4c7bbb763..30d25fec4b4 100644
index b03af89..319a188 100644
--- a/dlls/d2d1/brush.c
+++ b/dlls/d2d1/brush.c
@@ -251,7 +251,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
@@ -256,7 +256,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
static inline struct d2d_brush *impl_from_ID2D1SolidColorBrush(ID2D1SolidColorBrush *iface)
{
@@ -21,7 +21,7 @@ index 7f4c7bbb763..30d25fec4b4 100644
}
static HRESULT STDMETHODCALLTYPE d2d_solid_color_brush_QueryInterface(ID2D1SolidColorBrush *iface,
@@ -394,7 +394,7 @@ HRESULT d2d_solid_color_brush_create(ID2D1Factory *factory, const D2D1_COLOR_F *
@@ -399,7 +399,7 @@ HRESULT d2d_solid_color_brush_create(ID2D1Factory *factory, const D2D1_COLOR_F *
static inline struct d2d_brush *impl_from_ID2D1LinearGradientBrush(ID2D1LinearGradientBrush *iface)
{
@@ -30,7 +30,7 @@ index 7f4c7bbb763..30d25fec4b4 100644
}
static HRESULT STDMETHODCALLTYPE d2d_linear_gradient_brush_QueryInterface(ID2D1LinearGradientBrush *iface,
@@ -580,7 +580,7 @@ HRESULT d2d_linear_gradient_brush_create(ID2D1Factory *factory, const D2D1_LINEA
@@ -586,7 +586,7 @@ HRESULT d2d_linear_gradient_brush_create(ID2D1Factory *factory,
static inline struct d2d_brush *impl_from_ID2D1RadialGradientBrush(ID2D1RadialGradientBrush *iface)
{
@@ -39,20 +39,20 @@ index 7f4c7bbb763..30d25fec4b4 100644
}
static HRESULT STDMETHODCALLTYPE d2d_radial_gradient_brush_QueryInterface(ID2D1RadialGradientBrush *iface,
@@ -776,7 +776,7 @@ HRESULT d2d_radial_gradient_brush_create(ID2D1Factory *factory, const D2D1_BRUSH
@@ -818,7 +818,7 @@ HRESULT d2d_radial_gradient_brush_create(ID2D1Factory *factory,
static inline struct d2d_brush *impl_from_ID2D1BitmapBrush(ID2D1BitmapBrush *iface)
static inline struct d2d_brush *impl_from_ID2D1BitmapBrush1(ID2D1BitmapBrush1 *iface)
{
- return CONTAINING_RECORD(iface, struct d2d_brush, ID2D1Brush_iface);
+ return CONTAINING_RECORD((ID2D1Brush *)iface, struct d2d_brush, ID2D1Brush_iface);
}
static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface(ID2D1BitmapBrush *iface,
static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface(ID2D1BitmapBrush1 *iface,
diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c
index a9588985642..b8457a9e1ea 100644
index d716fb1..18d8deb 100644
--- a/dlls/d2d1/geometry.c
+++ b/dlls/d2d1/geometry.c
@@ -3024,7 +3024,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
@@ -2987,7 +2987,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
static inline struct d2d_geometry *impl_from_ID2D1PathGeometry(ID2D1PathGeometry *iface)
{
@@ -61,7 +61,7 @@ index a9588985642..b8457a9e1ea 100644
}
static HRESULT STDMETHODCALLTYPE d2d_path_geometry_QueryInterface(ID2D1PathGeometry *iface, REFIID iid, void **out)
@@ -3540,7 +3540,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory
@@ -3503,7 +3503,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory
static inline struct d2d_geometry *impl_from_ID2D1RectangleGeometry(ID2D1RectangleGeometry *iface)
{
@@ -70,7 +70,7 @@ index a9588985642..b8457a9e1ea 100644
}
static HRESULT STDMETHODCALLTYPE d2d_rectangle_geometry_QueryInterface(ID2D1RectangleGeometry *iface,
@@ -3876,7 +3876,7 @@ fail:
@@ -3839,7 +3839,7 @@ fail:
static inline struct d2d_geometry *impl_from_ID2D1TransformedGeometry(ID2D1TransformedGeometry *iface)
{
@@ -80,5 +80,5 @@ index a9588985642..b8457a9e1ea 100644
static HRESULT STDMETHODCALLTYPE d2d_transformed_geometry_QueryInterface(ID2D1TransformedGeometry *iface,
--
2.14.1
2.7.4

View File

@@ -1,7 +1,8 @@
From 59f0bb786dc3ec4e77cb43ea4410743ecd317bbf Mon Sep 17 00:00:00 2001
From 42dbdf9479e2e09734fa183b854d5ddfe987f203 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 22 Mar 2016 23:08:30 +0100
Subject: include: Check element type in CONTAINING_RECORD and similar macros.
Subject: [PATCH] include: Check element type in CONTAINING_RECORD and
similar macros.
---
include/wine/list.h | 10 ++++++++--
@@ -30,10 +31,10 @@ index b4d681f..287ad39 100644
#endif /* __WINE_SERVER_LIST_H */
diff --git a/include/wine/rbtree.h b/include/wine/rbtree.h
index 13452d9..554d239 100644
index dc50b5e..8130deb 100644
--- a/include/wine/rbtree.h
+++ b/include/wine/rbtree.h
@@ -22,8 +22,14 @@
@@ -23,8 +23,14 @@
#ifndef __WINE_WINE_RBTREE_H
#define __WINE_WINE_RBTREE_H
@@ -51,10 +52,10 @@ index 13452d9..554d239 100644
struct wine_rb_entry
{
diff --git a/include/winnt.h b/include/winnt.h
index 559a719..4a711f4 100644
index 7f822c4..ccfe73b 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -753,8 +753,14 @@ typedef struct _MEMORY_BASIC_INFORMATION
@@ -756,8 +756,14 @@ typedef struct _MEMORY_BASIC_INFORMATION
#define FIELD_OFFSET(type, field) ((LONG)offsetof(type, field))
@@ -69,8 +70,8 @@ index 559a719..4a711f4 100644
+ ((type *)((PCHAR)(address) - offsetof(type, field)))
+#endif
/* Types */
#ifdef __WINESRC__
# define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
--
2.7.1
1.9.1

View File

@@ -1,29 +0,0 @@
From 6f561502fe458837f3a5b27f477b1a52f33d88ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Hentschel?= <nerv@dawncrow.de>
Date: Mon, 16 Nov 2015 22:36:40 +0100
Subject: sfnt2fon: Don't leak output name if specified multiple times
(Coverity)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: André Hentschel <nerv@dawncrow.de>
---
tools/sfnt2fon/sfnt2fon.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/sfnt2fon/sfnt2fon.c b/tools/sfnt2fon/sfnt2fon.c
index 7612bc2..f825ae4 100644
--- a/tools/sfnt2fon/sfnt2fon.c
+++ b/tools/sfnt2fon/sfnt2fon.c
@@ -654,6 +654,7 @@ static char **parse_options( int argc, char **argv )
option_defchar = atoi( optarg );
break;
case 'o':
+ free( option_output );
option_output = strdup( optarg );
break;
case 'q':
--
2.6.2

View File

@@ -1,30 +0,0 @@
From 792e99d66b40481fb81042d51a12c861d8b33b51 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Hentschel?= <nerv@dawncrow.de>
Date: Mon, 16 Nov 2015 22:36:38 +0100
Subject: winedump: Free debug string in case it was not freed in for-loop
(Coverity)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: André Hentschel <nerv@dawncrow.de>
---
tools/winedump/msc.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c
index 5890b29..3f1fd98 100644
--- a/tools/winedump/msc.c
+++ b/tools/winedump/msc.c
@@ -1378,6 +1378,8 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
dump_data((const void*)sym, sym->generic.len + 2, " ");
}
}
+
+ free(curr_func);
return TRUE;
}
--
2.6.2

View File

@@ -1,4 +1,4 @@
From 3f314cc8251f62f592013abe7b1c3b977de0699a Mon Sep 17 00:00:00 2001
From 1eb8acd819f9eee8fdf154d0ef43881008265916 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 4 Aug 2017 02:33:14 +0200
Subject: ntdll: Implement NtFilterToken.
@@ -15,10 +15,10 @@ Subject: ntdll: Implement NtFilterToken.
8 files changed, 162 insertions(+), 5 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 93554e929be..5822dec9b15 100644
index c3f5df3..59a08de 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -136,6 +136,65 @@ NTSTATUS WINAPI NtDuplicateToken(
@@ -119,6 +119,65 @@ NTSTATUS WINAPI NtDuplicateToken(
}
/******************************************************************************
@@ -85,10 +85,10 @@ index 93554e929be..5822dec9b15 100644
* ZwOpenProcessToken [NTDLL.@]
*/
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 4f7ee496437..275fda57970 100644
index c260b0d..3c5e69c 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -179,7 +179,7 @@
@@ -176,7 +176,7 @@
# @ stub NtEnumerateSystemEnvironmentValuesEx
@ stdcall NtEnumerateValueKey(long long long ptr long ptr)
@ stub NtExtendSection
@@ -98,10 +98,10 @@ index 4f7ee496437..275fda57970 100644
@ stdcall NtFlushBuffersFile(long ptr)
@ stdcall NtFlushInstructionCache(long ptr long)
diff --git a/include/winnt.h b/include/winnt.h
index f91f81eb559..891c9b6d4bb 100644
index 16d96d8..4e238f9 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -3844,6 +3844,11 @@ typedef enum _TOKEN_INFORMATION_CLASS {
@@ -3904,6 +3904,11 @@ typedef enum _TOKEN_INFORMATION_CLASS {
TOKEN_ADJUST_SESSIONID | \
TOKEN_ADJUST_DEFAULT )
@@ -114,10 +114,10 @@ index f91f81eb559..891c9b6d4bb 100644
#define _SECURITY_DEFINED
diff --git a/include/winternl.h b/include/winternl.h
index 140669b0105..899e8324d67 100644
index c84e6d7..288f93e 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2348,6 +2348,7 @@ NTSYSAPI NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES
@@ -2303,6 +2303,7 @@ NTSYSAPI NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES
NTSYSAPI NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
NTSYSAPI NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
NTSYSAPI NTSTATUS WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER);
@@ -126,10 +126,10 @@ index 140669b0105..899e8324d67 100644
NTSYSAPI NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
NTSYSAPI NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
diff --git a/server/process.c b/server/process.c
index cbe726afe81..f0f60edcd3f 100644
index f8739d0..71d9d6d 100644
--- a/server/process.c
+++ b/server/process.c
@@ -571,7 +571,7 @@ struct thread *create_process( int fd, struct thread *parent_thread, int inherit
@@ -566,7 +566,7 @@ struct thread *create_process( int fd, struct thread *parent_thread, int inherit
: alloc_handle_table( process, 0 );
/* Note: for security reasons, starting a new process does not attempt
* to use the current impersonation token for the new process */
@@ -139,10 +139,10 @@ index cbe726afe81..f0f60edcd3f 100644
}
if (!process->handles || !process->token) goto error;
diff --git a/server/protocol.def b/server/protocol.def
index fc6e343af52..b3dce66eb9c 100644
index 35824ae..6ee6d28 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3391,6 +3391,16 @@ enum caret_state
@@ -3356,6 +3356,16 @@ enum caret_state
obj_handle_t new_handle; /* duplicated handle */
@END
@@ -160,10 +160,10 @@ index fc6e343af52..b3dce66eb9c 100644
obj_handle_t handle; /* handle to the token */
unsigned int desired_access; /* desired access to the object */
diff --git a/server/security.h b/server/security.h
index 606dbb2ab2c..6c337143c3d 100644
index 873bbc6..bc4a8f6 100644
--- a/server/security.h
+++ b/server/security.h
@@ -56,7 +56,9 @@ extern const PSID security_high_label_sid;
@@ -55,7 +55,9 @@ extern const PSID security_high_label_sid;
extern struct token *token_create_admin(void);
extern int token_assign_label( struct token *token, PSID label );
extern struct token *token_duplicate( struct token *src_token, unsigned primary,
@@ -175,10 +175,10 @@ index 606dbb2ab2c..6c337143c3d 100644
const LUID_AND_ATTRIBUTES *reqprivs,
unsigned int count, LUID_AND_ATTRIBUTES *usedprivs);
diff --git a/server/token.c b/server/token.c
index 74db66e1e24..acd7a4dedb5 100644
index 0810a61..2f6a467 100644
--- a/server/token.c
+++ b/server/token.c
@@ -299,6 +299,19 @@ static int acl_is_valid( const ACL *acl, data_size_t size )
@@ -276,6 +276,19 @@ static int acl_is_valid( const ACL *acl, data_size_t size )
return TRUE;
}
@@ -198,7 +198,7 @@ index 74db66e1e24..acd7a4dedb5 100644
/* checks whether all members of a security descriptor fit inside the size
* of memory specified */
int sd_is_valid( const struct security_descriptor *sd, data_size_t size )
@@ -639,8 +652,36 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -619,8 +632,36 @@ static struct token *create_token( unsigned primary, const SID *user,
return token;
}
@@ -236,7 +236,7 @@ index 74db66e1e24..acd7a4dedb5 100644
{
const luid_t *modified_id =
primary || (impersonation_level == src_token->impersonation_level) ?
@@ -676,6 +717,12 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
@@ -656,6 +697,12 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
return NULL;
}
memcpy( newgroup, group, size );
@@ -248,8 +248,8 @@ index 74db66e1e24..acd7a4dedb5 100644
+ }
list_add_tail( &token->groups, &newgroup->entry );
if (src_token->primary_group == &group->sid)
token->primary_group = &newgroup->sid;
@@ -684,11 +731,14 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
{
@@ -667,11 +714,14 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
/* copy privileges */
LIST_FOR_EACH_ENTRY( privilege, &src_token->privileges, struct privilege, entry )
@@ -264,7 +264,7 @@ index 74db66e1e24..acd7a4dedb5 100644
if (sd) default_set_sd( &token->obj, sd, OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION |
DACL_SECURITY_INFORMATION | SACL_SECURITY_INFORMATION );
@@ -1322,7 +1372,7 @@ DECL_HANDLER(duplicate_token)
@@ -1304,7 +1354,7 @@ DECL_HANDLER(duplicate_token)
TOKEN_DUPLICATE,
&token_ops )))
{
@@ -273,7 +273,7 @@ index 74db66e1e24..acd7a4dedb5 100644
if (token)
{
reply->new_handle = alloc_handle_no_access_check( current->process, token, req->access, objattr->attributes );
@@ -1332,6 +1382,36 @@ DECL_HANDLER(duplicate_token)
@@ -1314,6 +1364,36 @@ DECL_HANDLER(duplicate_token)
}
}
@@ -311,5 +311,5 @@ index 74db66e1e24..acd7a4dedb5 100644
DECL_HANDLER(check_token_privileges)
{
--
2.13.1
2.7.4

View File

@@ -1,2 +1 @@
Depends: server-Misc_ACL
Depends: server-CreateProcess_ACLs

View File

@@ -1,267 +0,0 @@
From e950724c38a4f81efb97bb9595dc59c5fb925da0 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Wed, 12 Apr 2017 12:33:31 +0800
Subject: advapi32/tests: Add more tests for performance counters.
---
dlls/advapi32/tests/registry.c | 196 ++++++++++++++++++++++++++++++++++++++++-
include/winreg.h | 2 +
2 files changed, 194 insertions(+), 4 deletions(-)
diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c
index 846f1c49628..d850f6a3aa7 100644
--- a/dlls/advapi32/tests/registry.c
+++ b/dlls/advapi32/tests/registry.c
@@ -3520,35 +3520,73 @@ static void test_RegNotifyChangeKeyValue(void)
CloseHandle(event);
}
+static const char *dbgstr_longlong(ULONGLONG ll)
+{
+ static char buf[16][64];
+ static int idx;
+
+ idx &= 0x0f;
+
+ if (sizeof(ll) > sizeof(unsigned long) && ll >> 32)
+ sprintf(buf[idx], "0x%lx%08lx", (unsigned long)(ll >> 32), (unsigned long)ll);
+ else
+ sprintf(buf[idx], "0x%08lx", (unsigned long)ll);
+
+ return buf[idx++];
+}
+
+#define cmp_li(a, b, c) cmp_li_real(a, b, c, __LINE__)
+static void cmp_li_real(LARGE_INTEGER *l1, LARGE_INTEGER *l2, LONGLONG slack, int line)
+{
+ LONGLONG diff = l2->QuadPart - l1->QuadPart;
+ if (diff < 0) diff = -diff;
+ ok_(__FILE__, line)(diff <= slack, "values don't match: %s/%s\n",
+ dbgstr_longlong(l1->QuadPart), dbgstr_longlong(l2->QuadPart));
+}
+
static void test_RegQueryValueExPerformanceData(void)
{
- DWORD cbData, len;
+ static const WCHAR globalW[] = { 'G','l','o','b','a','l',0 };
+ static const WCHAR dummyW[5] = { 'd','u','m','m','y' };
+ static const char * const names[] = { NULL, "", "Global", "2" "invalid counter name" };
+ DWORD cbData, len, i, type;
BYTE *value;
DWORD dwret;
LONG limit = 6;
PERF_DATA_BLOCK *pdb;
+ HKEY hkey;
+ BYTE buf[256 + sizeof(PERF_DATA_BLOCK)];
/* Test with data == NULL */
dwret = RegQueryValueExA( HKEY_PERFORMANCE_DATA, "Global", NULL, NULL, NULL, &cbData );
todo_wine ok( dwret == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %d\n", dwret );
+ dwret = RegQueryValueExW( HKEY_PERFORMANCE_DATA, globalW, NULL, NULL, NULL, &cbData );
+ todo_wine ok( dwret == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %d\n", dwret );
+
/* Test ERROR_MORE_DATA, start with small buffer */
len = 10;
value = HeapAlloc(GetProcessHeap(), 0, len);
cbData = len;
- dwret = RegQueryValueExA( HKEY_PERFORMANCE_DATA, "Global", NULL, NULL, value, &cbData );
+ type = 0xdeadbeef;
+ dwret = RegQueryValueExA( HKEY_PERFORMANCE_DATA, "Global", NULL, &type, value, &cbData );
todo_wine ok( dwret == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %d\n", dwret );
+todo_wine
+ ok(type == REG_BINARY, "got %u\n", type);
while( dwret == ERROR_MORE_DATA && limit)
{
len = len * 10;
value = HeapReAlloc( GetProcessHeap(), 0, value, len );
cbData = len;
- dwret = RegQueryValueExA( HKEY_PERFORMANCE_DATA, "Global", NULL, NULL, value, &cbData );
+ type = 0xdeadbeef;
+ dwret = RegQueryValueExA( HKEY_PERFORMANCE_DATA, "Global", NULL, &type, value, &cbData );
limit--;
}
ok(limit > 0, "too many times ERROR_MORE_DATA returned\n");
todo_wine ok(dwret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", dwret);
+todo_wine
+ ok(type == REG_BINARY, "got %u\n", type);
/* Check returned data */
if (dwret == ERROR_SUCCESS)
@@ -3565,8 +3603,158 @@ static void test_RegQueryValueExPerformanceData(void)
}
HeapFree(GetProcessHeap(), 0, value);
-}
+ for (i = 0; i < sizeof(names)/sizeof(names[0]); i++)
+ {
+ cbData = 0xdeadbeef;
+ dwret = RegQueryValueExA(HKEY_PERFORMANCE_DATA, names[i], NULL, NULL, NULL, &cbData);
+todo_wine
+ ok(dwret == ERROR_MORE_DATA, "%u/%s: got %u\n", i, names[i], dwret);
+ ok(cbData == 0, "got %u\n", cbData);
+
+ cbData = 0;
+ dwret = RegQueryValueExA(HKEY_PERFORMANCE_DATA, names[i], NULL, NULL, NULL, &cbData);
+todo_wine
+ ok(dwret == ERROR_MORE_DATA, "%u/%s: got %u\n", i, names[i], dwret);
+ ok(cbData == 0, "got %u\n", cbData);
+
+ cbData = 0xdeadbeef;
+ dwret = RegQueryValueExA(HKEY_PERFORMANCE_TEXT, names[i], NULL, NULL, NULL, &cbData);
+todo_wine
+ ok(dwret == ERROR_MORE_DATA, "%u/%s: got %u\n", i, names[i], dwret);
+ ok(cbData == 0, "got %u\n", cbData);
+
+ cbData = 0;
+ dwret = RegQueryValueExA(HKEY_PERFORMANCE_TEXT, names[i], NULL, NULL, NULL, &cbData);
+todo_wine
+ ok(dwret == ERROR_MORE_DATA, "%u/%s: got %u\n", i, names[i], dwret);
+ ok(cbData == 0, "got %u\n", cbData);
+
+ cbData = 0xdeadbeef;
+ dwret = RegQueryValueExA(HKEY_PERFORMANCE_NLSTEXT, names[i], NULL, NULL, NULL, &cbData);
+todo_wine
+ ok(dwret == ERROR_MORE_DATA, "%u/%s: got %u\n", i, names[i], dwret);
+ ok(cbData == 0, "got %u\n", cbData);
+
+ cbData = 0;
+ dwret = RegQueryValueExA(HKEY_PERFORMANCE_NLSTEXT, names[i], NULL, NULL, NULL, &cbData);
+todo_wine
+ ok(dwret == ERROR_MORE_DATA, "%u/%s: got %u\n", i, names[i], dwret);
+ ok(cbData == 0, "got %u\n", cbData);
+ }
+
+ memset(buf, 0x77, sizeof(buf));
+ type = 0xdeadbeef;
+ cbData = sizeof(buf);
+ dwret = RegQueryValueExA(HKEY_PERFORMANCE_DATA, "invalid counter name", NULL, &type, buf, &cbData);
+todo_wine
+ ok(dwret == ERROR_SUCCESS, "got %u\n", dwret);
+todo_wine
+ ok(type == REG_BINARY, "got %u\n", type);
+ if (dwret == ERROR_SUCCESS)
+ {
+ SYSTEMTIME st;
+ WCHAR sysname[MAX_COMPUTERNAME_LENGTH + 1];
+ DWORD sysname_len;
+ LARGE_INTEGER counter, freq, ftime;
+
+ GetSystemTime(&st);
+ GetSystemTimeAsFileTime((FILETIME *)&ftime);
+ QueryPerformanceCounter(&counter);
+ QueryPerformanceFrequency(&freq);
+
+ sysname_len = MAX_COMPUTERNAME_LENGTH + 1;
+ GetComputerNameW(sysname, &sysname_len);
+
+ pdb = (PERF_DATA_BLOCK *)buf;
+ ok(pdb->Signature[0] == 'P', "got '%c'\n", pdb->Signature[0]);
+ ok(pdb->Signature[1] == 'E', "got '%c'\n", pdb->Signature[1]);
+ ok(pdb->Signature[2] == 'R', "got '%c'\n", pdb->Signature[2]);
+ ok(pdb->Signature[3] == 'F', "got '%c'\n", pdb->Signature[3]);
+
+ ok(pdb->LittleEndian == 1, "got %u\n", pdb->LittleEndian);
+ ok(pdb->Version == 1, "got %u\n", pdb->Version);
+ ok(pdb->Revision == 1, "got %u\n", pdb->Revision);
+ len = (sizeof(*pdb) + pdb->SystemNameLength + 7) & ~7;
+ ok(pdb->TotalByteLength == len, "got %u vs %u\n", pdb->TotalByteLength, len);
+ ok(pdb->HeaderLength == pdb->TotalByteLength, "got %u\n", pdb->HeaderLength);
+ ok(pdb->NumObjectTypes == 0, "got %u\n", pdb->NumObjectTypes);
+ ok(pdb->DefaultObject != 0, "got %u\n", pdb->DefaultObject);
+ ok(pdb->SystemTime.wYear == st.wYear, "got %u\n", pdb->SystemTime.wYear);
+ ok(pdb->SystemTime.wMonth == st.wMonth, "got %u\n", pdb->SystemTime.wMonth);
+ ok(pdb->SystemTime.wDayOfWeek == st.wDayOfWeek, "got %u\n", pdb->SystemTime.wDayOfWeek);
+ ok(pdb->SystemTime.wDay == st.wDay, "got %u\n", pdb->SystemTime.wDay);
+ if (U(pdb->PerfTime).LowPart != 0x77777777) /* TestBot is broken */
+ cmp_li(&pdb->PerfTime, &counter, freq.QuadPart);
+ if (U(pdb->PerfFreq).LowPart != 0x77777777) /* TestBot is broken */
+ cmp_li(&pdb->PerfFreq, &freq, 0);
+ cmp_li(&pdb->PerfTime100nSec, &ftime, 200000); /* TestBot needs huge slack value */
+ ok(pdb->SystemNameLength == (sysname_len + 1) * sizeof(WCHAR), "expected %u, got %u\n",
+ (sysname_len + 1) * sizeof(WCHAR), pdb->SystemNameLength);
+ ok(pdb->SystemNameOffset == sizeof(*pdb), "got %u\n", pdb->SystemNameOffset);
+ ok(!lstrcmpW(sysname, (LPCWSTR)(pdb + 1)), "%s != %s\n",
+ wine_dbgstr_w(sysname), wine_dbgstr_w((LPCWSTR)(pdb + 1)));
+
+ len = pdb->TotalByteLength - (sizeof(*pdb) + pdb->SystemNameLength);
+ if (len)
+ {
+ BYTE remainder[8], *p;
+
+ memset(remainder, 0x77, sizeof(remainder));
+ p = buf + sizeof(*pdb) + pdb->SystemNameLength;
+ ok(!memcmp(p, remainder, len), "remainder: %02x,%02x...\n", p[0], p[1]);
+ }
+ }
+
+ dwret = RegOpenKeyA(HKEY_PERFORMANCE_DATA, NULL, &hkey);
+todo_wine
+ ok(dwret == ERROR_INVALID_HANDLE, "got %u\n", dwret);
+
+ dwret = RegOpenKeyA(HKEY_PERFORMANCE_DATA, "Global", &hkey);
+todo_wine
+ ok(dwret == ERROR_INVALID_HANDLE, "got %u\n", dwret);
+
+ dwret = RegOpenKeyExA(HKEY_PERFORMANCE_DATA, "Global", 0, KEY_READ, &hkey);
+todo_wine
+ ok(dwret == ERROR_INVALID_HANDLE, "got %u\n", dwret);
+
+ dwret = RegQueryValueA(HKEY_PERFORMANCE_DATA, "Global", NULL, (LONG *)&cbData);
+todo_wine
+ ok(dwret == ERROR_INVALID_HANDLE, "got %u\n", dwret);
+
+ dwret = RegSetValueA(HKEY_PERFORMANCE_DATA, "Global", REG_SZ, "dummy", 4);
+todo_wine
+ ok(dwret == ERROR_INVALID_HANDLE, "got %u\n", dwret);
+
+ dwret = RegSetValueExA(HKEY_PERFORMANCE_DATA, "Global", 0, REG_SZ, (const BYTE *)"dummy", 40);
+todo_wine
+ ok(dwret == ERROR_INVALID_HANDLE, "got %u\n", dwret);
+
+ cbData = sizeof(buf);
+ dwret = RegEnumKeyA(HKEY_PERFORMANCE_DATA, 0, (LPSTR)buf, cbData);
+todo_wine
+ ok(dwret == ERROR_INVALID_HANDLE, "got %u\n", dwret);
+
+ cbData = sizeof(buf);
+ dwret = RegEnumValueA(HKEY_PERFORMANCE_DATA, 0, (LPSTR)buf, &cbData, NULL, NULL, NULL, NULL);
+todo_wine
+ ok(dwret == ERROR_MORE_DATA, "got %u\n", dwret);
+todo_wine
+ ok(cbData == sizeof(buf), "got %u\n", cbData);
+
+ dwret = RegEnumValueA(HKEY_PERFORMANCE_DATA, 0, NULL, &cbData, NULL, NULL, NULL, NULL);
+ ok(dwret == ERROR_INVALID_PARAMETER, "got %u\n", dwret);
+
+ if (pRegSetKeyValueW)
+ {
+ dwret = pRegSetKeyValueW(HKEY_PERFORMANCE_DATA, NULL, globalW, REG_SZ, dummyW, sizeof(dummyW));
+todo_wine
+ ok(dwret == ERROR_INVALID_HANDLE, "got %u\n", dwret);
+ }
+
+ dwret = RegCloseKey(HKEY_PERFORMANCE_DATA);
+ ok(dwret == ERROR_SUCCESS, "got %u\n", dwret);
+}
START_TEST(registry)
{
diff --git a/include/winreg.h b/include/winreg.h
index 42b77251ae4..ddbd9293783 100644
--- a/include/winreg.h
+++ b/include/winreg.h
@@ -32,6 +32,8 @@ extern "C" {
#define HKEY_PERFORMANCE_DATA ((HKEY)(LONG_PTR)(LONG)0x80000004)
#define HKEY_CURRENT_CONFIG ((HKEY)(LONG_PTR)(LONG)0x80000005)
#define HKEY_DYN_DATA ((HKEY)(LONG_PTR)(LONG)0x80000006)
+#define HKEY_PERFORMANCE_TEXT ((HKEY)(LONG_PTR)(LONG)0x80000050)
+#define HKEY_PERFORMANCE_NLSTEXT ((HKEY)(LONG_PTR)(LONG)0x80000060)
/*
* registry provider structs
--
2.13.1

View File

@@ -1,139 +0,0 @@
From f72de28ee3a7a3cb25165f0aaee0c7e17eb7e6d7 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Wed, 12 Apr 2017 12:48:29 +0800
Subject: include: Add more definitions for performance counters.
---
include/winperf.h | 113 ++++++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 97 insertions(+), 16 deletions(-)
diff --git a/include/winperf.h b/include/winperf.h
index dce1a6d648d..113bfbae40f 100644
--- a/include/winperf.h
+++ b/include/winperf.h
@@ -67,25 +67,106 @@
#define PERF_DETAIL_EXPERT 300
#define PERF_DETAIL_WIZARD 400
+#include <pshpack8.h>
+
/* Performance data structure header
* returned in answer to HKEY_PERFORMANCE_DATA request
*/
-typedef struct _PERF_DATA_BLOCK {
- WCHAR Signature[4];
- DWORD LittleEndian;
- DWORD Version;
- DWORD Revision;
- DWORD TotalByteLength;
- DWORD HeaderLength;
- DWORD NumObjectTypes;
- DWORD DefaultObject;
- SYSTEMTIME SystemTime;
- LARGE_INTEGER PerfTime;
- LARGE_INTEGER PerfFreq;
- LARGE_INTEGER PerfTime100nSec;
- DWORD SystemNameLength;
- DWORD SystemNameOffset;
-} PERF_DATA_BLOCK, *PPERF_DATA_BLOCK, *LPPERF_DATA_BLOCK;
+#define PERF_DATA_VERSION 1
+#define PERF_DATA_REVISION 1
+
+typedef struct _PERF_DATA_BLOCK
+{
+ WCHAR Signature[4];
+ DWORD LittleEndian;
+ DWORD Version;
+ DWORD Revision;
+ DWORD TotalByteLength;
+ DWORD HeaderLength;
+ DWORD NumObjectTypes;
+ DWORD DefaultObject;
+ SYSTEMTIME SystemTime;
+ LARGE_INTEGER PerfTime;
+ LARGE_INTEGER PerfFreq;
+ LARGE_INTEGER PerfTime100nSec;
+ DWORD SystemNameLength;
+ DWORD SystemNameOffset;
+} PERF_DATA_BLOCK, *PPERF_DATA_BLOCK;
+
+#define PERF_NO_INSTANCES -1
+
+typedef struct _PERF_OBJECT_TYPE
+{
+ DWORD TotalByteLength;
+ DWORD DefinitionLength;
+ DWORD HeaderLength;
+ DWORD ObjectNameTitleIndex;
+#ifdef _WIN64
+ DWORD ObjectNameTitle;
+#else
+ LPWSTR ObjectNameTitle;
+#endif
+ DWORD ObjectHelpTitleIndex;
+#ifdef _WIN64
+ DWORD ObjectHelpTitle;
+#else
+ LPWSTR ObjectHelpTitle;
+#endif
+ DWORD DetailLevel;
+ DWORD NumCounters;
+ LONG DefaultCounter;
+ LONG NumInstances;
+ DWORD CodePage;
+ LARGE_INTEGER PerfTime;
+ LARGE_INTEGER PerfFreq;
+} PERF_OBJECT_TYPE, *PPERF_OBJECT_TYPE;
+
+typedef struct _PERF_COUNTER_DEFINITION
+{
+ DWORD ByteLength;
+ DWORD CounterNameTitleIndex;
+#ifdef _WIN64
+ DWORD CounterNameTitle;
+#else
+ LPWSTR CounterNameTitle;
+#endif
+ DWORD CounterHelpTitleIndex;
+#ifdef _WIN64
+ DWORD CounterHelpTitle;
+#else
+ LPWSTR CounterHelpTitle;
+#endif
+ LONG DefaultScale;
+ DWORD DetailLevel;
+ DWORD CounterType;
+ DWORD CounterSize;
+ DWORD CounterOffset;
+} PERF_COUNTER_DEFINITION, *PPERF_COUNTER_DEFINITION;
+
+#define PERF_NO_UNIQUE_ID -1
+
+typedef struct _PERF_INSTANCE_DEFINITION
+{
+ DWORD ByteLength;
+ DWORD ParentObjectTitleIndex;
+ DWORD ParentObjectInstance;
+ LONG UniqueID;
+ DWORD NameOffset;
+ DWORD NameLength;
+} PERF_INSTANCE_DEFINITION, *PPERF_INSTANCE_DEFINITION;
+
+typedef struct _PERF_COUNTER_BLOCK
+{
+ DWORD ByteLength;
+} PERF_COUNTER_BLOCK, *PPERF_COUNTER_BLOCK;
+
+
+#include <poppack.h>
+
+typedef DWORD (APIENTRY PM_OPEN_PROC)(LPWSTR);
+typedef DWORD (APIENTRY PM_COLLECT_PROC)(LPWSTR,LPVOID *,LPDWORD,LPDWORD);
+typedef DWORD (APIENTRY PM_CLOSE_PROC)(void);
+typedef DWORD (APIENTRY PM_QUERY_PROC)(LPDWORD,LPVOID *,LPDWORD,LPDWORD);
#endif /* _WINPERF_ */
--
2.13.1

View File

@@ -1,380 +0,0 @@
From 4fc763b4564cf0dc7e9e27826d785255133c8187 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Wed, 12 Apr 2017 13:59:20 +0800
Subject: advapi32: Add initial support for querying performance counters data.
(v2)
---
dlls/advapi32/registry.c | 244 ++++++++++++++++++++++++++++++++++++++++-
dlls/advapi32/tests/registry.c | 17 +--
2 files changed, 249 insertions(+), 12 deletions(-)
diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c
index 7a26fffc55e..4dd29d3ba72 100644
--- a/dlls/advapi32/registry.c
+++ b/dlls/advapi32/registry.c
@@ -2,6 +2,7 @@
* Registry management
*
* Copyright (C) 1999 Alexandre Julliard
+ * Copyright (C) 2017 Dmitry Timoshkov
*
* Based on misc/registry.c code
* Copyright (C) 1996 Marcus Meissner
@@ -36,6 +37,7 @@
#include "winreg.h"
#include "winerror.h"
#include "winternl.h"
+#include "winperf.h"
#include "winuser.h"
#include "sddl.h"
#include "advapi32_misc.h"
@@ -1482,6 +1484,234 @@ LONG WINAPI RegSetKeyValueA( HKEY hkey, LPCSTR subkey, LPCSTR name, DWORD type,
return ret;
}
+struct perf_provider
+{
+ HMODULE perflib;
+ PM_OPEN_PROC *pOpen;
+ PM_CLOSE_PROC *pClose;
+ PM_COLLECT_PROC *pCollect;
+};
+
+static void *get_provider_entry(HKEY perf, HMODULE perflib, const char *name)
+{
+ char buf[MAX_PATH];
+ DWORD err, type, len;
+
+ len = sizeof(buf) - 1;
+ err = RegQueryValueExA(perf, name, NULL, &type, (BYTE *)buf, &len);
+ if (err != ERROR_SUCCESS || type != REG_SZ)
+ return NULL;
+
+ buf[len] = 0;
+ TRACE("Loading function pointer for %s: %s\n", name, debugstr_a(buf));
+
+ return GetProcAddress(perflib, buf);
+}
+
+static BOOL load_provider(HKEY root, const WCHAR *name, struct perf_provider *provider)
+{
+ static const WCHAR performanceW[] = { 'P','e','r','f','o','r','m','a','n','c','e',0 };
+ static const WCHAR libraryW[] = { 'L','i','b','r','a','r','y',0 };
+ WCHAR buf[MAX_PATH], buf2[MAX_PATH];
+ DWORD err, type, len;
+ HKEY service, perf;
+
+ err = RegOpenKeyExW(root, name, 0, KEY_READ, &service);
+ if (err != ERROR_SUCCESS)
+ return FALSE;
+
+ err = RegOpenKeyExW(service, performanceW, 0, KEY_READ, &perf);
+ RegCloseKey(service);
+ if (err != ERROR_SUCCESS)
+ return FALSE;
+
+ len = sizeof(buf) - sizeof(WCHAR);
+ err = RegQueryValueExW(perf, libraryW, NULL, &type, (BYTE *)buf, &len);
+ if (err != ERROR_SUCCESS || !(type == REG_SZ || type == REG_EXPAND_SZ))
+ goto error;
+
+ buf[len / sizeof(WCHAR)] = 0;
+ if (type == REG_EXPAND_SZ)
+ {
+ len = ExpandEnvironmentStringsW(buf, buf2, MAX_PATH);
+ if (!len || len > MAX_PATH) goto error;
+ strcpyW(buf, buf2);
+ }
+
+ if (!(provider->perflib = LoadLibraryW(buf)))
+ {
+ WARN("Failed to load %s\n", debugstr_w(buf));
+ goto error;
+ }
+
+ GetModuleFileNameW(provider->perflib, buf, MAX_PATH);
+ TRACE("Loaded provider %s\n", wine_dbgstr_w(buf));
+
+ provider->pOpen = get_provider_entry(perf, provider->perflib, "Open");
+ provider->pClose = get_provider_entry(perf, provider->perflib, "Close");
+ provider->pCollect = get_provider_entry(perf, provider->perflib, "Collect");
+ if (provider->pOpen && provider->pClose && provider->pCollect)
+ {
+ RegCloseKey(perf);
+ return TRUE;
+ }
+
+ TRACE("Provider is missing required exports\n");
+ FreeLibrary(provider->perflib);
+
+error:
+ RegCloseKey(perf);
+ return FALSE;
+}
+
+static DWORD collect_data(struct perf_provider *provider, const WCHAR *query, void **data, DWORD *size, DWORD *obj_count)
+{
+ DWORD err;
+
+ err = provider->pOpen(NULL);
+ if (err != ERROR_SUCCESS)
+ {
+ TRACE("Open error %u (%#x)\n", err, err);
+ return err;
+ }
+
+ *obj_count = 0;
+ err = provider->pCollect((WCHAR *)query, data, size, obj_count);
+ if (err != ERROR_SUCCESS)
+ {
+ TRACE("Collect error %u (%#x)\n", err, err);
+ *obj_count = 0;
+ }
+
+ provider->pClose();
+ return err;
+}
+
+#define MAX_SERVICE_NAME 260
+
+static DWORD query_perf_data(const WCHAR *query, DWORD *type, void *data, DWORD *ret_size)
+{
+ static const WCHAR SZ_SERVICES_KEY[] = { 'S','y','s','t','e','m','\\',
+ 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\',
+ 'S','e','r','v','i','c','e','s',0 };
+ DWORD err, i, data_size;
+ HKEY root;
+ PERF_DATA_BLOCK *pdb;
+
+ if (!ret_size)
+ return ERROR_INVALID_PARAMETER;
+
+ data_size = *ret_size;
+ *ret_size = 0;
+
+ if (type)
+ *type = REG_BINARY;
+
+ if (!data || data_size < sizeof(*pdb))
+ return ERROR_MORE_DATA;
+
+ pdb = data;
+
+ pdb->Signature[0] = 'P';
+ pdb->Signature[1] = 'E';
+ pdb->Signature[2] = 'R';
+ pdb->Signature[3] = 'F';
+#ifdef WORDS_BIGENDIAN
+ pdb->LittleEndian = FALSE;
+#else
+ pdb->LittleEndian = TRUE;
+#endif
+ pdb->Version = PERF_DATA_VERSION;
+ pdb->Revision = PERF_DATA_REVISION;
+ pdb->TotalByteLength = 0;
+ pdb->HeaderLength = sizeof(*pdb);
+ pdb->NumObjectTypes = 0;
+ pdb->DefaultObject = 0;
+ QueryPerformanceCounter(&pdb->PerfTime);
+ QueryPerformanceFrequency(&pdb->PerfFreq);
+
+ data = pdb + 1;
+ pdb->SystemNameOffset = sizeof(*pdb);
+ pdb->SystemNameLength = (data_size - sizeof(*pdb)) / sizeof(WCHAR);
+ if (!GetComputerNameW(data, &pdb->SystemNameLength))
+ return ERROR_MORE_DATA;
+
+ pdb->SystemNameLength++;
+ pdb->SystemNameLength *= sizeof(WCHAR);
+
+ pdb->HeaderLength += pdb->SystemNameLength;
+
+ /* align to 8 bytes */
+ if (pdb->SystemNameLength & 7)
+ pdb->HeaderLength += 8 - (pdb->SystemNameLength & 7);
+
+ if (data_size < pdb->HeaderLength)
+ return ERROR_MORE_DATA;
+
+ pdb->TotalByteLength = pdb->HeaderLength;
+
+ data_size -= pdb->HeaderLength;
+ data = (char *)data + pdb->HeaderLength;
+
+ err = RegOpenKeyExW(HKEY_LOCAL_MACHINE, SZ_SERVICES_KEY, 0, KEY_READ, &root);
+ if (err != ERROR_SUCCESS)
+ return err;
+
+ i = 0;
+ for (;;)
+ {
+ DWORD collected_size = data_size, obj_count = 0;
+ struct perf_provider provider;
+ WCHAR name[MAX_SERVICE_NAME];
+ void *collected_data = data;
+
+ err = RegEnumKeyW(root, i++, name, MAX_SERVICE_NAME);
+ if (err == ERROR_NO_MORE_ITEMS)
+ {
+ err = ERROR_SUCCESS;
+ break;
+ }
+
+ if (err != ERROR_SUCCESS)
+ continue;
+
+ if (!load_provider(root, name, &provider))
+ continue;
+
+ err = collect_data(&provider, query, &collected_data, &collected_size, &obj_count);
+ FreeLibrary(provider.perflib);
+
+ if (err == ERROR_MORE_DATA)
+ break;
+
+ if (err == ERROR_SUCCESS)
+ {
+ PERF_OBJECT_TYPE *obj = (PERF_OBJECT_TYPE *)data;
+
+ TRACE("Collect: obj->TotalByteLength %u, collected_size %u\n",
+ obj->TotalByteLength, collected_size);
+
+ data_size -= collected_size;
+ data = collected_data;
+
+ pdb->TotalByteLength += collected_size;
+ pdb->NumObjectTypes += obj_count;
+ }
+ }
+
+ RegCloseKey(root);
+
+ if (err == ERROR_SUCCESS)
+ {
+ *ret_size = pdb->TotalByteLength;
+
+ GetSystemTime(&pdb->SystemTime);
+ GetSystemTimeAsFileTime((FILETIME *)&pdb->PerfTime100nSec);
+ }
+
+ return err;
+}
+
/******************************************************************************
* RegQueryValueExW [ADVAPI32.@]
*
@@ -1502,6 +1732,10 @@ LSTATUS WINAPI RegQueryValueExW( HKEY hkey, LPCWSTR name, LPDWORD reserved, LPDW
(count && data) ? *count : 0 );
if ((data && !count) || reserved) return ERROR_INVALID_PARAMETER;
+
+ if (hkey == HKEY_PERFORMANCE_DATA)
+ return query_perf_data(name, type, data, count);
+
if (!(hkey = get_special_root_hkey( hkey, 0 ))) return ERROR_INVALID_HANDLE;
RtlInitUnicodeString( &name_str, name );
@@ -1592,7 +1826,8 @@ LSTATUS WINAPI DECLSPEC_HOTPATCH RegQueryValueExA( HKEY hkey, LPCSTR name, LPDWO
hkey, debugstr_a(name), reserved, type, data, count, count ? *count : 0 );
if ((data && !count) || reserved) return ERROR_INVALID_PARAMETER;
- if (!(hkey = get_special_root_hkey( hkey, 0 ))) return ERROR_INVALID_HANDLE;
+ if (hkey != HKEY_PERFORMANCE_DATA && !(hkey = get_special_root_hkey( hkey, 0 )))
+ return ERROR_INVALID_HANDLE;
if (count) datalen = *count;
if (!data && count) *count = 0;
@@ -1604,6 +1839,13 @@ LSTATUS WINAPI DECLSPEC_HOTPATCH RegQueryValueExA( HKEY hkey, LPCSTR name, LPDWO
if ((status = RtlAnsiStringToUnicodeString( &nameW, &nameA, TRUE )))
return RtlNtStatusToDosError(status);
+ if (hkey == HKEY_PERFORMANCE_DATA)
+ {
+ DWORD ret = query_perf_data( nameW.Buffer, type, data, count );
+ RtlFreeUnicodeString( &nameW );
+ return ret;
+ }
+
status = NtQueryValueKey( hkey, &nameW, KeyValuePartialInformation,
buffer, sizeof(buffer), &total_size );
if (status && status != STATUS_BUFFER_OVERFLOW) goto done;
diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c
index 43599359ac6..9706478a135 100644
--- a/dlls/advapi32/tests/registry.c
+++ b/dlls/advapi32/tests/registry.c
@@ -3520,10 +3520,10 @@ static void test_RegQueryValueExPerformanceData(void)
/* Test with data == NULL */
dwret = RegQueryValueExA( HKEY_PERFORMANCE_DATA, "Global", NULL, NULL, NULL, &cbData );
- todo_wine ok( dwret == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %d\n", dwret );
+ ok( dwret == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %d\n", dwret );
dwret = RegQueryValueExW( HKEY_PERFORMANCE_DATA, globalW, NULL, NULL, NULL, &cbData );
- todo_wine ok( dwret == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %d\n", dwret );
+ ok( dwret == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %d\n", dwret );
/* Test ERROR_MORE_DATA, start with small buffer */
len = 10;
@@ -3531,8 +3531,7 @@ static void test_RegQueryValueExPerformanceData(void)
cbData = len;
type = 0xdeadbeef;
dwret = RegQueryValueExA( HKEY_PERFORMANCE_DATA, "Global", NULL, &type, value, &cbData );
- todo_wine ok( dwret == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %d\n", dwret );
-todo_wine
+ ok( dwret == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %d\n", dwret );
ok(type == REG_BINARY, "got %u\n", type);
while( dwret == ERROR_MORE_DATA && limit)
{
@@ -3545,14 +3544,13 @@ todo_wine
}
ok(limit > 0, "too many times ERROR_MORE_DATA returned\n");
- todo_wine ok(dwret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", dwret);
-todo_wine
+ ok(dwret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", dwret);
ok(type == REG_BINARY, "got %u\n", type);
/* Check returned data */
if (dwret == ERROR_SUCCESS)
{
- todo_wine ok(len >= sizeof(PERF_DATA_BLOCK), "got size %d\n", len);
+ ok(len >= sizeof(PERF_DATA_BLOCK), "got size %d\n", len);
if (len >= sizeof(PERF_DATA_BLOCK)) {
pdb = (PERF_DATA_BLOCK*) value;
ok(pdb->Signature[0] == 'P', "expected Signature[0] = 'P', got 0x%x\n", pdb->Signature[0]);
@@ -3569,13 +3567,11 @@ todo_wine
{
cbData = 0xdeadbeef;
dwret = RegQueryValueExA(HKEY_PERFORMANCE_DATA, names[i], NULL, NULL, NULL, &cbData);
-todo_wine
ok(dwret == ERROR_MORE_DATA, "%u/%s: got %u\n", i, names[i], dwret);
ok(cbData == 0, "got %u\n", cbData);
cbData = 0;
dwret = RegQueryValueExA(HKEY_PERFORMANCE_DATA, names[i], NULL, NULL, NULL, &cbData);
-todo_wine
ok(dwret == ERROR_MORE_DATA, "%u/%s: got %u\n", i, names[i], dwret);
ok(cbData == 0, "got %u\n", cbData);
@@ -3608,9 +3604,7 @@ todo_wine
type = 0xdeadbeef;
cbData = sizeof(buf);
dwret = RegQueryValueExA(HKEY_PERFORMANCE_DATA, "invalid counter name", NULL, &type, buf, &cbData);
-todo_wine
ok(dwret == ERROR_SUCCESS, "got %u\n", dwret);
-todo_wine
ok(type == REG_BINARY, "got %u\n", type);
if (dwret == ERROR_SUCCESS)
{
@@ -3640,6 +3634,7 @@ todo_wine
ok(pdb->TotalByteLength == len, "got %u vs %u\n", pdb->TotalByteLength, len);
ok(pdb->HeaderLength == pdb->TotalByteLength, "got %u\n", pdb->HeaderLength);
ok(pdb->NumObjectTypes == 0, "got %u\n", pdb->NumObjectTypes);
+todo_wine
ok(pdb->DefaultObject != 0, "got %u\n", pdb->DefaultObject);
ok(pdb->SystemTime.wYear == st.wYear, "got %u\n", pdb->SystemTime.wYear);
ok(pdb->SystemTime.wMonth == st.wMonth, "got %u\n", pdb->SystemTime.wMonth);
--
2.13.1

View File

@@ -1,93 +0,0 @@
From efdcec40d501c6b27e3f3460ad0ad5fe26643e9d Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Wed, 12 Apr 2017 15:04:03 +0800
Subject: winspool.drv: Add performance counters service stubs.
---
dlls/winspool.drv/info.c | 29 +++++++++++++++++++++++++++++
dlls/winspool.drv/winspool.drv.spec | 6 +++---
loader/wine.inf.in | 7 +++++++
3 files changed, 39 insertions(+), 3 deletions(-)
diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index f09745d1e6b..330ce236b45 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -8681,3 +8681,32 @@ HRESULT WINAPI UploadPrinterDriverPackageW( LPCWSTR server, LPCWSTR path, LPCWST
flags, hwnd, dst, dstlen);
return E_NOTIMPL;
}
+
+/*****************************************************************************
+ * PerfOpen [WINSPOOL.@]
+ */
+DWORD WINAPI PerfOpen(LPWSTR context)
+{
+ FIXME("%s: stub\n", debugstr_w(context));
+ return ERROR_SUCCESS;
+}
+
+/*****************************************************************************
+ * PerfClose [WINSPOOL.@]
+ */
+DWORD WINAPI PerfClose(void)
+{
+ FIXME("stub\n");
+ return ERROR_SUCCESS;
+}
+
+/*****************************************************************************
+ * PerfCollect [WINSPOOL.@]
+ */
+DWORD WINAPI PerfCollect(LPWSTR query, LPVOID *data, LPDWORD size, LPDWORD obj_count)
+{
+ FIXME("%s,%p,%p,%p: stub\n", debugstr_w(query), data, size, obj_count);
+ *size = 0;
+ *obj_count = 0;
+ return ERROR_SUCCESS;
+}
diff --git a/dlls/winspool.drv/winspool.drv.spec b/dlls/winspool.drv/winspool.drv.spec
index 58dc60bcc9f..a23ea2ced99 100644
--- a/dlls/winspool.drv/winspool.drv.spec
+++ b/dlls/winspool.drv/winspool.drv.spec
@@ -2,9 +2,9 @@
101 stub -noname ClusterSplOpen
102 stub -noname ClusterSplClose
103 stub -noname ClusterSplIsAlive
-104 stub PerfClose
-105 stub PerfCollect
-106 stub PerfOpen
+104 stdcall PerfClose()
+105 stdcall PerfCollect(wstr ptr ptr ptr)
+106 stdcall PerfOpen(wstr)
201 stdcall GetDefaultPrinterA(ptr ptr)
202 stdcall SetDefaultPrinterA(str)
203 stdcall GetDefaultPrinterW(ptr ptr)
diff --git a/loader/wine.inf.in b/loader/wine.inf.in
index 176647b8beb..a83cc209a96 100644
--- a/loader/wine.inf.in
+++ b/loader/wine.inf.in
@@ -3353,6 +3353,7 @@ StartType=3
ErrorControl=1
[SpoolerService]
+AddReg=SpoolerServiceKeys
Description="Loads files to memory for later printing"
DisplayName="Print Spooler"
ServiceBinary="%11%\spoolsv.exe"
@@ -3361,6 +3362,12 @@ StartType=3
ErrorControl=1
LoadOrderGroup="SpoolerGroup"
+[SpoolerServiceKeys]
+HKLM,"System\CurrentControlSet\Services\Spooler\Performance","Library",,"winspool.drv"
+HKLM,"System\CurrentControlSet\Services\Spooler\Performance","Open",,"PerfOpen"
+HKLM,"System\CurrentControlSet\Services\Spooler\Performance","Close",,"PerfClose"
+HKLM,"System\CurrentControlSet\Services\Spooler\Performance","Collect",,"PerfCollect"
+
[TerminalServices]
Description="Remote desktop access"
DisplayName="Terminal Services"
--
2.13.1

View File

@@ -1,72 +0,0 @@
From ea1f7f191b65313ed472e660a10d75e609a31dfc Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 14 Apr 2017 16:39:21 +0800
Subject: advapi32: Performance providers' Open() expects to see the configured
name as its parameter.
---
dlls/advapi32/registry.c | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c
index a6e5c7903cf..37462380c40 100644
--- a/dlls/advapi32/registry.c
+++ b/dlls/advapi32/registry.c
@@ -1487,6 +1487,7 @@ LONG WINAPI RegSetKeyValueA( HKEY hkey, LPCSTR subkey, LPCSTR name, DWORD type,
struct perf_provider
{
HMODULE perflib;
+ WCHAR linkage[MAX_PATH];
PM_OPEN_PROC *pOpen;
PM_CLOSE_PROC *pClose;
PM_COLLECT_PROC *pCollect;
@@ -1512,6 +1513,8 @@ static BOOL load_provider(HKEY root, const WCHAR *name, struct perf_provider *pr
{
static const WCHAR performanceW[] = { 'P','e','r','f','o','r','m','a','n','c','e',0 };
static const WCHAR libraryW[] = { 'L','i','b','r','a','r','y',0 };
+ static const WCHAR linkageW[] = { 'L','i','n','k','a','g','e',0 };
+ static const WCHAR exportW[] = { 'E','x','p','o','r','t',0 };
WCHAR buf[MAX_PATH], buf2[MAX_PATH];
DWORD err, type, len;
HKEY service, perf;
@@ -1520,6 +1523,21 @@ static BOOL load_provider(HKEY root, const WCHAR *name, struct perf_provider *pr
if (err != ERROR_SUCCESS)
return FALSE;
+ provider->linkage[0] = 0;
+ err = RegOpenKeyExW(service, linkageW, 0, KEY_READ, &perf);
+ if (err == ERROR_SUCCESS)
+ {
+ len = sizeof(buf) - sizeof(WCHAR);
+ err = RegQueryValueExW(perf, exportW, NULL, &type, (BYTE *)buf, &len);
+ if (err == ERROR_SUCCESS && (type == REG_SZ || type == REG_MULTI_SZ))
+ {
+ memcpy(provider->linkage, buf, len);
+ provider->linkage[len / sizeof(WCHAR)] = 0;
+ TRACE("Export: %s\n", debugstr_w(provider->linkage));
+ }
+ RegCloseKey(perf);
+ }
+
err = RegOpenKeyExW(service, performanceW, 0, KEY_READ, &perf);
RegCloseKey(service);
if (err != ERROR_SUCCESS)
@@ -1563,12 +1581,13 @@ error:
static DWORD collect_data(struct perf_provider *provider, const WCHAR *query, void **data, DWORD *size, DWORD *obj_count)
{
+ WCHAR *linkage = provider->linkage[0] ? provider->linkage : NULL;
DWORD err;
- err = provider->pOpen(NULL);
+ err = provider->pOpen(linkage);
if (err != ERROR_SUCCESS)
{
- TRACE("Open error %u (%#x)\n", err, err);
+ TRACE("Open(%s) error %u (%#x)\n", debugstr_w(linkage), err, err);
return err;
}
--
2.13.1

View File

@@ -1,31 +0,0 @@
From f734e1d94b068a78cc10600c190bb2d527ab4866 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 14 Apr 2017 16:40:43 +0800
Subject: advapi32: If the query is not specified the default query is
"Global".
---
dlls/advapi32/registry.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c
index 37462380c40..0aa38c5b9b3 100644
--- a/dlls/advapi32/registry.c
+++ b/dlls/advapi32/registry.c
@@ -1581,9 +1581,13 @@ error:
static DWORD collect_data(struct perf_provider *provider, const WCHAR *query, void **data, DWORD *size, DWORD *obj_count)
{
+ static const WCHAR globalW[] = { 'G','l','o','b','a','l',0 };
WCHAR *linkage = provider->linkage[0] ? provider->linkage : NULL;
DWORD err;
+ if (!query || !query[0])
+ query = globalW;
+
err = provider->pOpen(linkage);
if (err != ERROR_SUCCESS)
{
--
2.13.1

View File

@@ -1,53 +0,0 @@
From de80831314ecb76ac22b19b249467a600129a9e3 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 14 Apr 2017 16:43:31 +0800
Subject: advapi32: Read the configured object list for the performance
provider.
FIXME: it's not currently used, but the queries should be matched
against the configured object lists, and the providers should be
loaded and called only in case of a match.
---
dlls/advapi32/registry.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c
index 0aa38c5b9b3..5af8128748b 100644
--- a/dlls/advapi32/registry.c
+++ b/dlls/advapi32/registry.c
@@ -1488,6 +1488,7 @@ struct perf_provider
{
HMODULE perflib;
WCHAR linkage[MAX_PATH];
+ WCHAR objects[MAX_PATH];
PM_OPEN_PROC *pOpen;
PM_CLOSE_PROC *pClose;
PM_COLLECT_PROC *pCollect;
@@ -1511,6 +1512,7 @@ static void *get_provider_entry(HKEY perf, HMODULE perflib, const char *name)
static BOOL load_provider(HKEY root, const WCHAR *name, struct perf_provider *provider)
{
+ static const WCHAR object_listW[] = { 'O','b','j','e','c','t',' ','L','i','s','t',0 };
static const WCHAR performanceW[] = { 'P','e','r','f','o','r','m','a','n','c','e',0 };
static const WCHAR libraryW[] = { 'L','i','b','r','a','r','y',0 };
static const WCHAR linkageW[] = { 'L','i','n','k','a','g','e',0 };
@@ -1543,6 +1545,16 @@ static BOOL load_provider(HKEY root, const WCHAR *name, struct perf_provider *pr
if (err != ERROR_SUCCESS)
return FALSE;
+ provider->objects[0] = 0;
+ len = sizeof(buf) - sizeof(WCHAR);
+ err = RegQueryValueExW(perf, object_listW, NULL, &type, (BYTE *)buf, &len);
+ if (err == ERROR_SUCCESS && (type == REG_SZ || type == REG_MULTI_SZ))
+ {
+ memcpy(provider->objects, buf, len);
+ provider->objects[len / sizeof(WCHAR)] = 0;
+ TRACE("Object List: %s\n", debugstr_w(provider->objects));
+ }
+
len = sizeof(buf) - sizeof(WCHAR);
err = RegQueryValueExW(perf, libraryW, NULL, &type, (BYTE *)buf, &len);
if (err != ERROR_SUCCESS || !(type == REG_SZ || type == REG_EXPAND_SZ))
--
2.13.1

View File

@@ -1 +0,0 @@
Fixes: [33037] Add support for querying performance counters data

View File

@@ -1,4 +1,4 @@
From 77c9e6c6f408a2b59a79f3773a379a43b6994f2c Mon Sep 17 00:00:00 2001
From 48f4c131f9e8ffc091dde12437ad0772ed1c5ca6 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 6 Aug 2017 15:16:33 +0200
Subject: server: Use all group attributes in create_token.
@@ -8,10 +8,10 @@ Subject: server: Use all group attributes in create_token.
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/server/token.c b/server/token.c
index 8d2de6ab58e..e61fe97bfa0 100644
index 0019b3a..2a56664 100644
--- a/server/token.c
+++ b/server/token.c
@@ -613,13 +613,13 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -592,13 +592,13 @@ static struct token *create_token( unsigned primary, const SID *user,
return NULL;
}
memcpy( &group->sid, groups[i].Sid, security_sid_len( groups[i].Sid ));
@@ -29,9 +29,9 @@ index 8d2de6ab58e..e61fe97bfa0 100644
+ group->logon = (groups[i].Attributes & SE_GROUP_LOGON_ID) != 0;
+ group->resource = (groups[i].Attributes & SE_GROUP_RESOURCE) != 0;
list_add_tail( &token->groups, &group->entry );
/* Use first owner capable group as an owner */
/* Use first owner capable group as owner and primary group */
if (!token->primary_group && group->owner)
@@ -1628,8 +1628,8 @@ DECL_HANDLER(get_token_groups)
@@ -1603,8 +1603,8 @@ DECL_HANDLER(get_token_groups)
if (group->enabled) *attr_ptr |= SE_GROUP_ENABLED;
if (group->owner) *attr_ptr |= SE_GROUP_OWNER;
if (group->deny_only) *attr_ptr |= SE_GROUP_USE_FOR_DENY_ONLY;
@@ -42,5 +42,5 @@ index 8d2de6ab58e..e61fe97bfa0 100644
memcpy(sid_ptr, &group->sid, security_sid_len( &group->sid ));
--
2.13.1
2.7.4

Some files were not shown because too many files have changed in this diff Show More