Compare commits

...

14 Commits

Author SHA1 Message Date
Thomas Faber
3575086811 [0.3.17]
- Addendum to r65049: update start menu banner.

svn path=/branches/0.3.17/; revision=65177
2014-11-02 06:45:04 +00:00
Ziliang Guo
6aa4e564dc [KERNEL32]
Merge English fallback for unlocalized text.
CORE-8720

svn path=/branches/0.3.17/; revision=65155
2014-10-31 17:47:32 +00:00
Ziliang Guo
49d4e58f50 [BOOTDATA]
Merge theme switching fix.
CORE-8718

svn path=/branches/0.3.17/; revision=65126
2014-10-30 19:00:33 +00:00
Ziliang Guo
af6d8b9f7e [WIN32SS]
Merge in workaround for freetype rendering issue.

CORE-8525, CORE-6023, CORE-7735 and CORE-8635

svn path=/branches/0.3.17/; revision=65101
2014-10-29 16:03:21 +00:00
Ziliang Guo
aaf904d84c [WIN32SS]
Fix icon selection regression caused by cascading fix. In this case, this should probably go into trunk.

CORE-8574

svn path=/branches/0.3.17/; revision=65091
2014-10-28 22:01:57 +00:00
Ziliang Guo
72e480c82f [0.3.17]
Set version number for release.

svn path=/branches/0.3.17/; revision=65049
2014-10-27 17:23:05 +00:00
Ziliang Guo
e2a4ce772f [NTFS]
Cherrypick additional NTFS related fixes, including ability to browse NTFS volume.

svn path=/branches/0.3.17/; revision=65048
2014-10-27 17:18:17 +00:00
Ziliang Guo
0a58d8b96a [WIN32K]
Cherrypick margin fix for menus.

CORE-8667

svn path=/branches/0.3.17/; revision=65047
2014-10-27 17:15:09 +00:00
Ziliang Guo
7c6256087f [UNIATA]
Update version of UNIATA to 45b1 for 0.3.17.

svn path=/branches/0.3.17/; revision=65046
2014-10-27 17:10:31 +00:00
Ziliang Guo
e7eb27c6cd [WIN32K]
Incorporate fix for keyboard indicator lights.

CORE-8547

svn path=/branches/0.3.17/; revision=64973
2014-10-24 21:27:13 +00:00
Ziliang Guo
4571891449 [WIN32SS]
Cherrypick fix for OffByOne browser where parent desktop handle is null for 0.3.17.

CORE-8665

svn path=/branches/0.3.17/; revision=64944
2014-10-23 20:52:25 +00:00
Ziliang Guo
f112613d39 [CRT]
Cherrypick fix for CRT that broke LMarbles/LBreakout. Games are important.

CORE-8670

svn path=/branches/0.3.17/; revision=64928
2014-10-23 15:55:03 +00:00
Ziliang Guo
122fe51263 [NTFS]
Cherrypick NTFS related changes from trunk for 0.3.17.

svn path=/branches/0.3.17/; revision=64927
2014-10-23 15:45:12 +00:00
Ziliang Guo
d8434fa72f [TCPIP]
Merge in Jerome's fix for Firefox crash.

CORE-8648

svn path=/branches/0.3.17/; revision=64848
2014-10-20 15:59:52 +00:00
26 changed files with 739 additions and 570 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,4 +1,4 @@
[Version]
[Version]
Signature="$ReactOS$"
[AddReg]
@@ -301,6 +301,15 @@ HKCU,"Control Panel\Appearance\New Schemes\0\Sizes\0","Color #28",0x00010001,0x0
HKCU,"Control Panel\Appearance\New Schemes\0\Sizes\0","Color #29",0x00010001,0x006a240a
HKCU,"Control Panel\Appearance\New Schemes\0\Sizes\0","Color #30",0x00010001,0x00c8d0d4
HKCU,"Control Panel\Appearance\New Schemes\0\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\0\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\0\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\0\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\0\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\0\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\0\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\0\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\0\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\0\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Brick
HKCU,"Control Panel\Appearance\New Schemes\1","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\1","LegacyName",0x00020000,"%DESKTOP_SCHEME_1%"
@@ -363,6 +372,15 @@ HKCU,"Control Panel\Appearance\New Schemes\1\Sizes\0","Color #28",0x00010001,0x0
HKCU,"Control Panel\Appearance\New Schemes\1\Sizes\0","Color #29",0x00010001,0x00808000
HKCU,"Control Panel\Appearance\New Schemes\1\Sizes\0","Color #30",0x00010001,0x00a5bfc2
HKCU,"Control Panel\Appearance\New Schemes\1\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\1\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\1\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\1\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\1\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\1\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\1\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\1\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\1\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\1\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Eggplant
HKCU,"Control Panel\Appearance\New Schemes\2","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\2","LegacyName",0x00020000,"%DESKTOP_SCHEME_2%"
@@ -425,6 +443,15 @@ HKCU,"Control Panel\Appearance\New Schemes\2\Sizes\0","Color #28",0x00010001,0x0
HKCU,"Control Panel\Appearance\New Schemes\2\Sizes\0","Color #29",0x00010001,0x00788058
HKCU,"Control Panel\Appearance\New Schemes\2\Sizes\0","Color #30",0x00010001,0x00a8b090
HKCU,"Control Panel\Appearance\New Schemes\2\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\2\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\2\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\2\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\2\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\2\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\2\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\2\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\2\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\2\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Green Olive
HKCU,"Control Panel\Appearance\New Schemes\3","DisplayName",0x00020000,"@themeui.dll,-877"
HKCU,"Control Panel\Appearance\New Schemes\3","LegacyName",0x00020000,"%DESKTOP_SCHEME_3%"
@@ -487,6 +514,15 @@ HKCU,"Control Panel\Appearance\New Schemes\3\Sizes\0","Color #28",0x00010001,0x0
HKCU,"Control Panel\Appearance\New Schemes\3\Sizes\0","Color #29",0x00010001,0x00649759
HKCU,"Control Panel\Appearance\New Schemes\3\Sizes\0","Color #30",0x00010001,0x00a9c8a2
HKCU,"Control Panel\Appearance\New Schemes\3\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\3\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\3\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\3\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\3\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\3\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\3\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\3\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\3\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\3\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; High Contrast 1
HKCU,"Control Panel\Appearance\New Schemes\4","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\4","LegacyName",0x00020000,"%DESKTOP_SCHEME_4%"
@@ -549,6 +585,15 @@ HKCU,"Control Panel\Appearance\New Schemes\4\Sizes\0","Color #28",0x00010001,0x0
HKCU,"Control Panel\Appearance\New Schemes\4\Sizes\0","Color #29",0x00010001,0x00008000
HKCU,"Control Panel\Appearance\New Schemes\4\Sizes\0","Color #30",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\4\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\4\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\4\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\4\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\4\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\4\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\4\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\4\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\4\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\4\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; High Contrast 2
HKCU,"Control Panel\Appearance\New Schemes\5","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\5","LegacyName",0x00020000,"%DESKTOP_SCHEME_5%"
@@ -611,6 +656,15 @@ HKCU,"Control Panel\Appearance\New Schemes\5\Sizes\0","Color #28",0x00010001,0x0
HKCU,"Control Panel\Appearance\New Schemes\5\Sizes\0","Color #29",0x00010001,0x00ff0000
HKCU,"Control Panel\Appearance\New Schemes\5\Sizes\0","Color #30",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\5\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\5\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\5\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\5\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\5\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\5\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\5\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\5\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\5\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\5\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; High Contrast Black
HKCU,"Control Panel\Appearance\New Schemes\6","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\6\","LegacyName",0x00020000,"%DESKTOP_SCHEME_6%"
@@ -673,6 +727,15 @@ HKCU,"Control Panel\Appearance\New Schemes\6\Sizes\0","Color #28",0x00010001,0x0
HKCU,"Control Panel\Appearance\New Schemes\6\Sizes\0","Color #29",0x00010001,0x00800080
HKCU,"Control Panel\Appearance\New Schemes\6\Sizes\0","Color #30",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\6\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\6\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\6\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\6\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\6\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\6\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\6\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\6\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\6\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\6\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; High Contrast White
HKCU,"Control Panel\Appearance\New Schemes\7","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\7","LegacyName",0x00020000,"%DESKTOP_SCHEME_7%"
@@ -735,6 +798,15 @@ HKCU,"Control Panel\Appearance\New Schemes\7\Sizes\0","Color #28",0x00010001,0x0
HKCU,"Control Panel\Appearance\New Schemes\7\Sizes\0","Color #29",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\7\Sizes\0","Color #30",0x00010001,0x00ffffff
HKCU,"Control Panel\Appearance\New Schemes\7\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\7\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\7\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\7\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\7\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\7\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\7\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\7\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\7\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\7\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Lilac
HKCU,"Control Panel\Appearance\New Schemes\8","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\8","LegacyName",0x00020000,"%DESKTOP_SCHEME_8%"
@@ -797,6 +869,15 @@ HKCU,"Control Panel\Appearance\New Schemes\8\Sizes\0","Color #28",0x00010001,0x0
HKCU,"Control Panel\Appearance\New Schemes\8\Sizes\0","Color #29",0x00010001,0x00b14e5a
HKCU,"Control Panel\Appearance\New Schemes\8\Sizes\0","Color #30",0x00010001,0x00d9a8ae
HKCU,"Control Panel\Appearance\New Schemes\8\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\8\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\8\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\8\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\8\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\8\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\8\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\8\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\8\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\8\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Maple
HKCU,"Control Panel\Appearance\New Schemes\9","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\9","LegacyName",0x00020000,"%DESKTOP_SCHEME_9%"
@@ -859,6 +940,15 @@ HKCU,"Control Panel\Appearance\New Schemes\9\Sizes\0","Color #28",0x00010001,0x0
HKCU,"Control Panel\Appearance\New Schemes\9\Sizes\0","Color #29",0x00010001,0x0046a6c6
HKCU,"Control Panel\Appearance\New Schemes\9\Sizes\0","Color #30",0x00010001,0x00aed8e6
HKCU,"Control Panel\Appearance\New Schemes\9\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\9\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\9\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\9\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\9\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\9\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\9\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\9\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\9\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\9\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Marine
HKCU,"Control Panel\Appearance\New Schemes\10","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\10","LegacyName",0x00020000,"%DESKTOP_SCHEME_10%"
@@ -921,6 +1011,15 @@ HKCU,"Control Panel\Appearance\New Schemes\10\Sizes\0","Color #28",0x00010001,0x
HKCU,"Control Panel\Appearance\New Schemes\10\Sizes\0","Color #29",0x00010001,0x00800000
HKCU,"Control Panel\Appearance\New Schemes\10\Sizes\0","Color #30",0x00010001,0x00b8c088
HKCU,"Control Panel\Appearance\New Schemes\10\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\10\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\10\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\10\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\10\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\10\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\10\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\10\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\10\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\10\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Plum
HKCU,"Control Panel\Appearance\New Schemes\11","DisplayName",0x00020000,"@themeui.dll,-869"
HKCU,"Control Panel\Appearance\New Schemes\11","LegacyName",0x00020000,"%DESKTOP_SCHEME_11%"
@@ -983,6 +1082,15 @@ HKCU,"Control Panel\Appearance\New Schemes\11\Sizes\0","Color #28",0x00010001,0x
HKCU,"Control Panel\Appearance\New Schemes\11\Sizes\0","Color #29",0x00010001,0x00808000
HKCU,"Control Panel\Appearance\New Schemes\11\Sizes\0","Color #30",0x00010001,0x009098a8
HKCU,"Control Panel\Appearance\New Schemes\11\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\11\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\11\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\11\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\11\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\11\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\11\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\11\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\11\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\11\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Pumpkin
HKCU,"Control Panel\Appearance\New Schemes\12","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\12","LegacyName",0x00020000,"%DESKTOP_SCHEME_12%"
@@ -1045,6 +1153,15 @@ HKCU,"Control Panel\Appearance\New Schemes\12\Sizes\0","Color #28",0x00010001,0x
HKCU,"Control Panel\Appearance\New Schemes\12\Sizes\0","Color #29",0x00010001,0x00800080
HKCU,"Control Panel\Appearance\New Schemes\12\Sizes\0","Color #30",0x00010001,0x009dd5ec
HKCU,"Control Panel\Appearance\New Schemes\12\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\12\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\12\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\12\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\12\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\12\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\12\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\12\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\12\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\12\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Rainy Day
HKCU,"Control Panel\Appearance\New Schemes\13","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\13","LegacyName",0x00020000,"%DESKTOP_SCHEME_13%"
@@ -1107,6 +1224,15 @@ HKCU,"Control Panel\Appearance\New Schemes\13\Sizes\0","Color #28",0x00010001,0x
HKCU,"Control Panel\Appearance\New Schemes\13\Sizes\0","Color #29",0x00010001,0x007d654f
HKCU,"Control Panel\Appearance\New Schemes\13\Sizes\0","Color #30",0x00010001,0x00b19983
HKCU,"Control Panel\Appearance\New Schemes\13\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\13\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\13\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\13\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\13\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\13\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\13\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\13\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\13\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\13\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; ReactOS Classic
HKCU,"Control Panel\Appearance\New Schemes\14","DisplayName",0x00020000,"@themeui.dll,-880"
HKCU,"Control Panel\Appearance\New Schemes\14","LegacyName",0x00020000,"%DESKTOP_SCHEME_14%"
@@ -1169,6 +1295,15 @@ HKCU,"Control Panel\Appearance\New Schemes\14\Sizes\0","Color #28",0x00010001,0x
HKCU,"Control Panel\Appearance\New Schemes\14\Sizes\0","Color #29",0x00010001,0x00800000
HKCU,"Control Panel\Appearance\New Schemes\14\Sizes\0","Color #30",0x00010001,0x00c0c0c0
HKCU,"Control Panel\Appearance\New Schemes\14\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\14\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\14\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\14\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\14\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\14\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\14\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\14\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\14\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\14\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Rose
HKCU,"Control Panel\Appearance\New Schemes\15","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\15","LegacyName",0x00020000,"%DESKTOP_SCHEME_15%"
@@ -1231,6 +1366,15 @@ HKCU,"Control Panel\Appearance\New Schemes\15\Sizes\0","Color #28",0x00010001,0x
HKCU,"Control Panel\Appearance\New Schemes\15\Sizes\0","Color #29",0x00010001,0x0070609f
HKCU,"Control Panel\Appearance\New Schemes\15\Sizes\0","Color #30",0x00010001,0x00b7afcf
HKCU,"Control Panel\Appearance\New Schemes\15\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\15\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\15\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\15\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\15\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\15\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\15\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\15\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\15\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\15\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Sand
HKCU,"Control Panel\Appearance\New Schemes\16","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\16","LegacyName",0x00020000,"%DESKTOP_SCHEME_16%"
@@ -1293,6 +1437,15 @@ HKCU,"Control Panel\Appearance\New Schemes\16\Sizes\0","Color #28",0x00010001,0x
HKCU,"Control Panel\Appearance\New Schemes\16\Sizes\0","Color #29",0x00010001,0x00808000
HKCU,"Control Panel\Appearance\New Schemes\16\Sizes\0","Color #30",0x00010001,0x00bbccd5
HKCU,"Control Panel\Appearance\New Schemes\16\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\16\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\16\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\16\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\16\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\16\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\16\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\16\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\16\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\16\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Sky (WinXP-like)
HKCU,"Control Panel\Appearance\New Schemes\17","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\17","LegacyName",0x00020000,"%DESKTOP_SCHEME_17%"
@@ -1355,6 +1508,15 @@ HKCU,"Control Panel\Appearance\New Schemes\17\Sizes\0","Color #28",0x00010001,0x
HKCU,"Control Panel\Appearance\New Schemes\17\Sizes\0","Color #29",0x00010001,0x00c56a31
HKCU,"Control Panel\Appearance\New Schemes\17\Sizes\0","Color #30",0x00010001,0x00d8e9ec
HKCU,"Control Panel\Appearance\New Schemes\17\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\17\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\17\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\17\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\17\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\17\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\17\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\17\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\17\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\17\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Slate
HKCU,"Control Panel\Appearance\New Schemes\18","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\18","LegacyName",0x00020000,"%DESKTOP_SCHEME_18%"
@@ -1417,6 +1579,15 @@ HKCU,"Control Panel\Appearance\New Schemes\18\Sizes\0","Color #28",0x00010001,0x
HKCU,"Control Panel\Appearance\New Schemes\18\Sizes\0","Color #29",0x00010001,0x00978055
HKCU,"Control Panel\Appearance\New Schemes\18\Sizes\0","Color #30",0x00010001,0x00c8b99d
HKCU,"Control Panel\Appearance\New Schemes\18\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\18\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\18\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\18\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\18\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\18\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\18\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\18\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\18\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\18\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Storm
HKCU,"Control Panel\Appearance\New Schemes\19","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\19","LegacyName",0x00020000,"%DESKTOP_SCHEME_19%"
@@ -1479,6 +1650,15 @@ HKCU,"Control Panel\Appearance\New Schemes\19\Sizes\0","Color #28",0x00010001,0x
HKCU,"Control Panel\Appearance\New Schemes\19\Sizes\0","Color #29",0x00010001,0x00800080
HKCU,"Control Panel\Appearance\New Schemes\19\Sizes\0","Color #30",0x00010001,0x00c0c0c0
HKCU,"Control Panel\Appearance\New Schemes\19\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\19\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\19\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\19\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\19\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\19\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\19\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\19\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\19\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\19\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Teal
HKCU,"Control Panel\Appearance\New Schemes\20","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\20","LegacyName",0x00020000,"%DESKTOP_SCHEME_20%"
@@ -1541,6 +1721,15 @@ HKCU,"Control Panel\Appearance\New Schemes\20\Sizes\0","Color #28",0x00010001,0x
HKCU,"Control Panel\Appearance\New Schemes\20\Sizes\0","Color #29",0x00010001,0x00808000
HKCU,"Control Panel\Appearance\New Schemes\20\Sizes\0","Color #30",0x00010001,0x00c0c0c0
HKCU,"Control Panel\Appearance\New Schemes\20\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\20\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\20\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\20\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\20\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\20\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\20\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\20\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\20\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\20\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
; Wheat
HKCU,"Control Panel\Appearance\New Schemes\21","DisplayName",0x00020000,"@themeui.dll,-851"
HKCU,"Control Panel\Appearance\New Schemes\21","LegacyName",0x00020000,"%DESKTOP_SCHEME_21%"
@@ -1603,6 +1792,15 @@ HKCU,"Control Panel\Appearance\New Schemes\21\Sizes\0","Color #28",0x00010001,0x
HKCU,"Control Panel\Appearance\New Schemes\21\Sizes\0","Color #29",0x00010001,0x00008080
HKCU,"Control Panel\Appearance\New Schemes\21\Sizes\0","Color #30",0x00010001,0x00a0dede
HKCU,"Control Panel\Appearance\New Schemes\21\Sizes\0","Contrast",0x00010001,0x00000000
HKCU,"Control Panel\Appearance\New Schemes\21\Sizes\0","Size #0",0x000b0001,01,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\21\Sizes\0","Size #1",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\21\Sizes\0","Size #2",0x000b0001,10,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\21\Sizes\0","Size #3",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\21\Sizes\0","Size #4",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\21\Sizes\0","Size #5",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\21\Sizes\0","Size #6",0x000b0001,0c,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\21\Sizes\0","Size #7",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Appearance\New Schemes\21\Sizes\0","Size #8",0x000b0001,12,00,00,00,00,00,00,00
HKCU,"Control Panel\Sound","Beep",2,"yes"
HKCU,"Control Panel\Sound","ExtendedSounds",2,"yes"

View File

@@ -1704,6 +1704,16 @@ GetLocalisedText(DWORD dwResId, WCHAR *lpszDest)
(LPWSTR)RT_STRING,
MAKEINTRESOURCEW((dwId >> 4) + 1),
langId);
/* english fallback */
if(!hrsrc)
{
hrsrc = FindResourceExW(hCurrentModule,
(LPWSTR)RT_STRING,
MAKEINTRESOURCEW((dwId >> 4) + 1),
MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
if (hrsrc)
{
HGLOBAL hmem = LoadResource(hCurrentModule, hrsrc);

View File

@@ -287,16 +287,25 @@ NtfsDumpFileAttributes(PFILE_RECORD_HEADER FileRecord)
}
PFILENAME_ATTRIBUTE
GetFileNameFromRecord(PFILE_RECORD_HEADER FileRecord)
GetFileNameFromRecord(PFILE_RECORD_HEADER FileRecord, UCHAR NameType)
{
PNTFS_ATTR_RECORD Attribute;
PFILENAME_ATTRIBUTE Name;
Attribute = (PNTFS_ATTR_RECORD)((ULONG_PTR)FileRecord + FileRecord->AttributeOffset);
while (Attribute < (PNTFS_ATTR_RECORD)((ULONG_PTR)FileRecord + FileRecord->BytesInUse) &&
Attribute->Type != AttributeEnd)
{
if (Attribute->Type == AttributeFileName)
return (PFILENAME_ATTRIBUTE)((ULONG_PTR)Attribute + Attribute->Resident.ValueOffset);
{
Name = (PFILENAME_ATTRIBUTE)((ULONG_PTR)Attribute + Attribute->Resident.ValueOffset);
if (Name->NameType == NameType ||
(Name->NameType == NTFS_FILE_NAME_WIN32_AND_DOS && NameType == NTFS_FILE_NAME_WIN32) ||
(Name->NameType == NTFS_FILE_NAME_WIN32_AND_DOS && NameType == NTFS_FILE_NAME_DOS))
{
return Name;
}
}
Attribute = (PNTFS_ATTR_RECORD)((ULONG_PTR)Attribute + Attribute->Length);
}

View File

@@ -120,401 +120,218 @@ CdfsGetEntryName(PDEVICE_EXTENSION DeviceExt,
return(STATUS_SUCCESS);
}
#endif
static NTSTATUS
CdfsFindFile(PDEVICE_EXTENSION DeviceExt,
PFCB Fcb,
PFCB Parent,
PWSTR FileToFind,
PULONG pDirIndex,
PULONG pDirIndex2)
/*
* FUNCTION: Find a file
*/
{
WCHAR name[256];
WCHAR TempStr[2];
PVOID Block;
NTSTATUS Status;
ULONG len;
ULONG DirIndex;
ULONG Offset;
ULONG Read;
BOOLEAN IsRoot;
PVOID Context = NULL;
ULONG DirSize;
PUCHAR Ptr;
PDIR_RECORD Record;
LARGE_INTEGER StreamOffset;
DPRINT("FindFile(Parent %x, FileToFind '%S', DirIndex: %d)\n",
Parent, FileToFind, pDirIndex ? *pDirIndex : 0);
DPRINT("FindFile: old Pathname %x, old Objectname %x)\n",
Fcb->PathName, Fcb->ObjectName);
IsRoot = FALSE;
DirIndex = 0;
if (wcslen (FileToFind) == 0)
{
CHECKPOINT;
TempStr[0] = (WCHAR) '.';
TempStr[1] = 0;
FileToFind = (PWSTR)&TempStr;
}
if (Parent)
{
if (Parent->Entry.ExtentLocationL == DeviceExt->CdInfo.RootStart)
{
IsRoot = TRUE;
}
}
else
{
IsRoot = TRUE;
}
if (IsRoot == TRUE)
{
StreamOffset.QuadPart = (LONGLONG)DeviceExt->CdInfo.RootStart * (LONGLONG)BLOCKSIZE;
DirSize = DeviceExt->CdInfo.RootSize;
if (FileToFind[0] == 0 || (FileToFind[0] == '\\' && FileToFind[1] == 0)
|| (FileToFind[0] == '.' && FileToFind[1] == 0))
{
/* it's root : complete essentials fields then return ok */
RtlZeroMemory(Fcb, sizeof(FCB));
Fcb->PathName[0]='\\';
Fcb->ObjectName = &Fcb->PathName[1];
Fcb->Entry.ExtentLocationL = DeviceExt->CdInfo.RootStart;
Fcb->Entry.DataLengthL = DeviceExt->CdInfo.RootSize;
Fcb->Entry.FileFlags = 0x02; //FILE_ATTRIBUTE_DIRECTORY;
if (pDirIndex)
*pDirIndex = 0;
if (pDirIndex2)
*pDirIndex2 = 0;
DPRINT("CdfsFindFile: new Pathname %S, new Objectname %S)\n",Fcb->PathName, Fcb->ObjectName);
return (STATUS_SUCCESS);
}
}
else
{
StreamOffset.QuadPart = (LONGLONG)Parent->Entry.ExtentLocationL * (LONGLONG)BLOCKSIZE;
DirSize = Parent->Entry.DataLengthL;
}
DPRINT("StreamOffset %I64u DirSize %lu\n", StreamOffset.QuadPart, DirSize);
if (pDirIndex && (*pDirIndex))
DirIndex = *pDirIndex;
if(!CcMapData(DeviceExt->StreamFileObject, &StreamOffset,
BLOCKSIZE, TRUE, &Context, &Block))
{
DPRINT("CcMapData() failed\n");
return(STATUS_UNSUCCESSFUL);
}
Ptr = (PUCHAR)Block;
while(TRUE)
{
Record = (PDIR_RECORD)Ptr;
if (Record->RecordLength == 0)
{
DPRINT1("Stopped!\n");
break;
}
DPRINT("RecordLength %u ExtAttrRecordLength %u NameLength %u\n",
Record->RecordLength, Record->ExtAttrRecordLength, Record->FileIdLength);
Status = CdfsGetEntryName(DeviceExt, &Context, &Block, &StreamOffset,
DirSize, (PVOID*)&Ptr, name, &DirIndex, pDirIndex2);
if (Status == STATUS_NO_MORE_ENTRIES)
{
break;
}
else if (Status == STATUS_UNSUCCESSFUL)
{
/* Note: the directory cache has already been unpinned */
return(Status);
}
DPRINT("Name '%S'\n", name);
if (wstrcmpjoki(name, FileToFind)) /* || wstrcmpjoki (name2, FileToFind)) */
{
if (Parent && Parent->PathName)
{
len = wcslen(Parent->PathName);
memcpy(Fcb->PathName, Parent->PathName, len*sizeof(WCHAR));
Fcb->ObjectName=&Fcb->PathName[len];
if (len != 1 || Fcb->PathName[0] != '\\')
{
Fcb->ObjectName[0] = '\\';
Fcb->ObjectName = &Fcb->ObjectName[1];
}
}
else
{
Fcb->ObjectName=Fcb->PathName;
Fcb->ObjectName[0]='\\';
Fcb->ObjectName=&Fcb->ObjectName[1];
}
DPRINT("PathName '%S' ObjectName '%S'\n", Fcb->PathName, Fcb->ObjectName);
memcpy(&Fcb->Entry, Ptr, sizeof(DIR_RECORD));
wcsncpy(Fcb->ObjectName, name, MAX_PATH);
if (pDirIndex)
*pDirIndex = DirIndex;
DPRINT("FindFile: new Pathname %S, new Objectname %S, DirIndex %d\n",
Fcb->PathName, Fcb->ObjectName, DirIndex);
CcUnpinData(Context);
return(STATUS_SUCCESS);
}
Ptr = Ptr + Record->RecordLength;
DirIndex++;
if (((ULONG)Ptr - (ULONG)Block) >= DirSize)
{
DPRINT("Stopped!\n");
break;
}
}
CcUnpinData(Context);
if (pDirIndex)
*pDirIndex = DirIndex;
return(STATUS_UNSUCCESSFUL);
}
static NTSTATUS
CdfsGetNameInformation(PFCB Fcb,
PDEVICE_EXTENSION DeviceExt,
NtfsGetNameInformation(PDEVICE_EXTENSION DeviceExt,
PFILE_RECORD_HEADER FileRecord,
PNTFS_ATTR_CONTEXT DataContext,
PFILE_NAMES_INFORMATION Info,
ULONG BufferLength)
{
ULONG Length;
PFILENAME_ATTRIBUTE FileName;
DPRINT("CdfsGetNameInformation() called\n");
DPRINT("NtfsGetNameInformation() called\n");
Length = wcslen(Fcb->ObjectName) * sizeof(WCHAR);
if ((sizeof (FILE_BOTH_DIRECTORY_INFORMATION) + Length) > BufferLength)
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
ASSERT(FileName != NULL);
Length = FileName->NameLength * sizeof (WCHAR);
if ((sizeof(FILE_NAMES_INFORMATION) + Length) > BufferLength)
return(STATUS_BUFFER_OVERFLOW);
Info->FileNameLength = Length;
Info->NextEntryOffset =
ROUND_UP(sizeof(FILE_BOTH_DIRECTORY_INFORMATION) + Length, 4);
memcpy(Info->FileName, Fcb->ObjectName, Length);
ROUND_UP(sizeof(FILE_NAMES_INFORMATION) + Length, sizeof(ULONG));
RtlCopyMemory(Info->FileName, FileName->Name, Length);
return(STATUS_SUCCESS);
}
static NTSTATUS
CdfsGetDirectoryInformation(PFCB Fcb,
PDEVICE_EXTENSION DeviceExt,
NtfsGetDirectoryInformation(PDEVICE_EXTENSION DeviceExt,
PFILE_RECORD_HEADER FileRecord,
PNTFS_ATTR_CONTEXT DataContext,
PFILE_DIRECTORY_INFORMATION Info,
ULONG BufferLength)
{
ULONG Length;
PFILENAME_ATTRIBUTE FileName;
DPRINT("CdfsGetDirectoryInformation() called\n");
DPRINT("NtfsGetDirectoryInformation() called\n");
Length = wcslen(Fcb->ObjectName) * sizeof(WCHAR);
if ((sizeof (FILE_BOTH_DIRECTORY_INFORMATION) + Length) > BufferLength)
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
ASSERT(FileName != NULL);
Length = FileName->NameLength * sizeof (WCHAR);
if ((sizeof(FILE_DIRECTORY_INFORMATION) + Length) > BufferLength)
return(STATUS_BUFFER_OVERFLOW);
Info->FileNameLength = Length;
Info->NextEntryOffset =
ROUND_UP(sizeof(FILE_BOTH_DIRECTORY_INFORMATION) + Length, 4);
memcpy(Info->FileName, Fcb->ObjectName, Length);
ROUND_UP(sizeof(FILE_DIRECTORY_INFORMATION) + Length, sizeof(ULONG));
RtlCopyMemory(Info->FileName, FileName->Name, Length);
/* Convert file times */
CdfsDateTimeToFileTime(Fcb,
&Info->CreationTime);
CdfsDateTimeToFileTime(Fcb,
&Info->LastAccessTime);
CdfsDateTimeToFileTime(Fcb,
&Info->LastWriteTime);
CdfsDateTimeToFileTime(Fcb,
&Info->ChangeTime);
Info->CreationTime.QuadPart = FileName->CreationTime;
Info->LastAccessTime.QuadPart = FileName->LastAccessTime;
Info->LastWriteTime.QuadPart = FileName->LastWriteTime;
Info->ChangeTime.QuadPart = FileName->ChangeTime;
/* Convert file flags */
CdfsFileFlagsToAttributes(Fcb,
&Info->FileAttributes);
NtfsFileFlagsToAttributes(FileName->FileAttributes, &Info->FileAttributes);
Info->EndOfFile.QuadPart = Fcb->Entry.DataLengthL;
/* Make AllocSize a rounded up multiple of the sector size */
Info->AllocationSize.QuadPart = ROUND_UP(Fcb->Entry.DataLengthL, BLOCKSIZE);
Info->EndOfFile.QuadPart = FileName->AllocatedSize;
Info->AllocationSize.QuadPart = ROUND_UP(FileName->AllocatedSize, DeviceExt->NtfsInfo.BytesPerCluster);
// Info->FileIndex=;
return(STATUS_SUCCESS);
return STATUS_SUCCESS;
}
static NTSTATUS
CdfsGetFullDirectoryInformation(PFCB Fcb,
PDEVICE_EXTENSION DeviceExt,
NtfsGetFullDirectoryInformation(PDEVICE_EXTENSION DeviceExt,
PFILE_RECORD_HEADER FileRecord,
PNTFS_ATTR_CONTEXT DataContext,
PFILE_FULL_DIRECTORY_INFORMATION Info,
ULONG BufferLength)
{
ULONG Length;
PFILENAME_ATTRIBUTE FileName;
DPRINT("CdfsGetFullDirectoryInformation() called\n");
DPRINT("NtfsGetFullDirectoryInformation() called\n");
Length = wcslen(Fcb->ObjectName) * sizeof(WCHAR);
if ((sizeof (FILE_BOTH_DIRECTORY_INFORMATION) + Length) > BufferLength)
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
ASSERT(FileName != NULL);
Length = FileName->NameLength * sizeof (WCHAR);
if ((sizeof(FILE_FULL_DIRECTORY_INFORMATION) + Length) > BufferLength)
return(STATUS_BUFFER_OVERFLOW);
Info->FileNameLength = Length;
Info->NextEntryOffset =
ROUND_UP(sizeof(FILE_BOTH_DIRECTORY_INFORMATION) + Length, 4);
memcpy(Info->FileName, Fcb->ObjectName, Length);
ROUND_UP(sizeof(FILE_FULL_DIRECTORY_INFORMATION) + Length, sizeof(ULONG));
RtlCopyMemory(Info->FileName, FileName->Name, Length);
/* Convert file times */
CdfsDateTimeToFileTime(Fcb,
&Info->CreationTime);
CdfsDateTimeToFileTime(Fcb,
&Info->LastAccessTime);
CdfsDateTimeToFileTime(Fcb,
&Info->LastWriteTime);
CdfsDateTimeToFileTime(Fcb,
&Info->ChangeTime);
Info->CreationTime.QuadPart = FileName->CreationTime;
Info->LastAccessTime.QuadPart = FileName->LastAccessTime;
Info->LastWriteTime.QuadPart = FileName->LastWriteTime;
Info->ChangeTime.QuadPart = FileName->ChangeTime;
/* Convert file flags */
CdfsFileFlagsToAttributes(Fcb,
&Info->FileAttributes);
NtfsFileFlagsToAttributes(FileName->FileAttributes, &Info->FileAttributes);
Info->EndOfFile.QuadPart = Fcb->Entry.DataLengthL;
/* Make AllocSize a rounded up multiple of the sector size */
Info->AllocationSize.QuadPart = ROUND_UP(Fcb->Entry.DataLengthL, BLOCKSIZE);
Info->EndOfFile.QuadPart = FileName->AllocatedSize;
Info->AllocationSize.QuadPart = ROUND_UP(FileName->AllocatedSize, DeviceExt->NtfsInfo.BytesPerCluster);
// Info->FileIndex=;
Info->EaSize = 0;
return(STATUS_SUCCESS);
return STATUS_SUCCESS;
}
static NTSTATUS
CdfsGetBothDirectoryInformation(PFCB Fcb,
PDEVICE_EXTENSION DeviceExt,
PFILE_BOTH_DIRECTORY_INFORMATION Info,
NtfsGetBothDirectoryInformation(PDEVICE_EXTENSION DeviceExt,
PFILE_RECORD_HEADER FileRecord,
PNTFS_ATTR_CONTEXT DataContext,
PFILE_BOTH_DIR_INFORMATION Info,
ULONG BufferLength)
{
ULONG Length;
PFILENAME_ATTRIBUTE FileName, ShortFileName;
DPRINT("CdfsGetBothDirectoryInformation() called\n");
DPRINT("NtfsGetBothDirectoryInformation() called\n");
Length = wcslen(Fcb->ObjectName) * sizeof(WCHAR);
if ((sizeof (FILE_BOTH_DIRECTORY_INFORMATION) + Length) > BufferLength)
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
ASSERT(FileName != NULL);
ShortFileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
Length = FileName->NameLength * sizeof (WCHAR);
if ((sizeof(FILE_BOTH_DIR_INFORMATION) + Length) > BufferLength)
return(STATUS_BUFFER_OVERFLOW);
Info->FileNameLength = Length;
Info->NextEntryOffset =
ROUND_UP(sizeof(FILE_BOTH_DIRECTORY_INFORMATION) + Length, 4);
memcpy(Info->FileName, Fcb->ObjectName, Length);
ROUND_UP(sizeof(FILE_BOTH_DIR_INFORMATION) + Length, sizeof(ULONG));
RtlCopyMemory(Info->FileName, FileName->Name, Length);
/* Convert file times */
CdfsDateTimeToFileTime(Fcb,
&Info->CreationTime);
CdfsDateTimeToFileTime(Fcb,
&Info->LastAccessTime);
CdfsDateTimeToFileTime(Fcb,
&Info->LastWriteTime);
CdfsDateTimeToFileTime(Fcb,
&Info->ChangeTime);
/* Convert file flags */
CdfsFileFlagsToAttributes(Fcb,
&Info->FileAttributes);
Info->EndOfFile.QuadPart = Fcb->Entry.DataLengthL;
/* Make AllocSize a rounded up multiple of the sector size */
Info->AllocationSize.QuadPart = ROUND_UP(Fcb->Entry.DataLengthL, BLOCKSIZE);
// Info->FileIndex=;
Info->EaSize = 0;
if (DeviceExt->CdInfo.JolietLevel == 0)
if (ShortFileName)
{
/* Standard ISO-9660 format */
Info->ShortNameLength = Length;
memcpy(Info->ShortName, Fcb->ObjectName, Length);
/* Should we upcase the filename? */
ASSERT(ShortFileName->NameLength <= ARRAYSIZE(Info->ShortName));
Info->ShortNameLength = ShortFileName->NameLength * sizeof(WCHAR);
RtlCopyMemory(Info->ShortName, ShortFileName->Name, Info->ShortNameLength);
}
else
{
/* Joliet extension */
/* FIXME: Copy or create a short file name */
Info->ShortName[0] = 0;
Info->ShortNameLength = 0;
}
return(STATUS_SUCCESS);
Info->CreationTime.QuadPart = FileName->CreationTime;
Info->LastAccessTime.QuadPart = FileName->LastAccessTime;
Info->LastWriteTime.QuadPart = FileName->LastWriteTime;
Info->ChangeTime.QuadPart = FileName->ChangeTime;
/* Convert file flags */
NtfsFileFlagsToAttributes(FileName->FileAttributes, &Info->FileAttributes);
Info->EndOfFile.QuadPart = FileName->AllocatedSize;
Info->AllocationSize.QuadPart = ROUND_UP(FileName->AllocatedSize, DeviceExt->NtfsInfo.BytesPerCluster);
// Info->FileIndex=;
Info->EaSize = 0;
return STATUS_SUCCESS;
}
#endif
NTSTATUS
NtfsQueryDirectory(PNTFS_IRP_CONTEXT IrpContext)
{
PIRP Irp;
//PDEVICE_OBJECT DeviceObject;
//PDEVICE_EXTENSION DeviceExtension;
//LONG BufferLength = 0;
PDEVICE_OBJECT DeviceObject;
PDEVICE_EXTENSION DeviceExtension;
LONG BufferLength = 0;
PUNICODE_STRING SearchPattern = NULL;
//FILE_INFORMATION_CLASS FileInformationClass;
FILE_INFORMATION_CLASS FileInformationClass;
ULONG FileIndex = 0;
PUCHAR Buffer = NULL;
PFILE_NAMES_INFORMATION Buffer0 = NULL;
//PNTFS_FCB Fcb;
PNTFS_FCB Fcb;
PNTFS_CCB Ccb;
// FCB TempFcb;
BOOLEAN First = FALSE;
PIO_STACK_LOCATION Stack;
PFILE_OBJECT FileObject;
//NTSTATUS Status = STATUS_SUCCESS;
NTSTATUS Status = STATUS_SUCCESS;
PFILE_RECORD_HEADER FileRecord;
PNTFS_ATTR_CONTEXT DataContext;
ULONGLONG MFTRecord;
UNICODE_STRING Pattern;
DPRINT1("NtfsQueryDirectory() called\n");
ASSERT(IrpContext);
Irp = IrpContext->Irp;
// DeviceObject = IrpContext->DeviceObject;
DeviceObject = IrpContext->DeviceObject;
// DeviceExtension = DeviceObject->DeviceExtension;
DeviceExtension = DeviceObject->DeviceExtension;
Stack = IoGetCurrentIrpStackLocation(Irp);
FileObject = Stack->FileObject;
Ccb = (PNTFS_CCB)FileObject->FsContext2;
// Fcb = (PNTFS_FCB)FileObject->FsContext;
Fcb = (PNTFS_FCB)FileObject->FsContext;
/* Obtain the callers parameters */
//BufferLength = Stack->Parameters.QueryDirectory.Length;
BufferLength = Stack->Parameters.QueryDirectory.Length;
SearchPattern = Stack->Parameters.QueryDirectory.FileName;
//FileInformationClass = Stack->Parameters.QueryDirectory.FileInformationClass;
FileInformationClass = Stack->Parameters.QueryDirectory.FileInformationClass;
FileIndex = Stack->Parameters.QueryDirectory.FileIndex;
if (SearchPattern != NULL)
{
if (!Ccb->DirectorySearchPattern)
@@ -546,7 +363,10 @@ NtfsQueryDirectory(PNTFS_IRP_CONTEXT IrpContext)
Ccb->DirectorySearchPattern[1] = 0;
}
DPRINT("Search pattern '%S'\n", Ccb->DirectorySearchPattern);
RtlInitUnicodeString(&Pattern, Ccb->DirectorySearchPattern);
DPRINT1("Search pattern '%S'\n", Ccb->DirectorySearchPattern);
DPRINT1("In: '%S'\n", Fcb->PathName);
/* Determine directory index */
if (Stack->Flags & SL_INDEX_SPECIFIED)
@@ -570,47 +390,50 @@ NtfsQueryDirectory(PNTFS_IRP_CONTEXT IrpContext)
DPRINT("Buffer=%p tofind=%S\n", Buffer, Ccb->DirectorySearchPattern);
#if 0
TempFcb.ObjectName = TempFcb.PathName;
while (Status == STATUS_SUCCESS && BufferLength > 0)
{
Status = CdfsFindFile(DeviceExtension,
&TempFcb,
Fcb,
Ccb->DirectorySearchPattern,
Status = NtfsFindFileAt(DeviceExtension,
&Pattern,
&Ccb->Entry,
NULL);
DPRINT("Found %S, Status=%x, entry %x\n", TempFcb.ObjectName, Status, Ccb->Entry);
&FileRecord,
&DataContext,
&MFTRecord,
Fcb->MFTIndex);
//DPRINT("Found %S, Status=%x, entry %x\n", TempFcb.ObjectName, Status, Ccb->Entry);
if (NT_SUCCESS(Status))
{
switch (FileInformationClass)
{
case FileNameInformation:
Status = CdfsGetNameInformation(&TempFcb,
DeviceExtension,
Status = NtfsGetNameInformation(DeviceExtension,
FileRecord,
DataContext,
(PFILE_NAMES_INFORMATION)Buffer,
BufferLength);
break;
case FileDirectoryInformation:
Status = CdfsGetDirectoryInformation(&TempFcb,
DeviceExtension,
Status = NtfsGetDirectoryInformation(DeviceExtension,
FileRecord,
DataContext,
(PFILE_DIRECTORY_INFORMATION)Buffer,
BufferLength);
break;
case FileFullDirectoryInformation:
Status = CdfsGetFullDirectoryInformation(&TempFcb,
DeviceExtension,
Status = NtfsGetFullDirectoryInformation(DeviceExtension,
FileRecord,
DataContext,
(PFILE_FULL_DIRECTORY_INFORMATION)Buffer,
BufferLength);
break;
case FileBothDirectoryInformation:
Status = NtfsGetBothDirectoryInformation(&TempFcb,
DeviceExtension,
(PFILE_BOTH_DIRECTORY_INFORMATION)Buffer,
Status = NtfsGetBothDirectoryInformation(DeviceExtension,
FileRecord,
DataContext,
(PFILE_BOTH_DIR_INFORMATION)Buffer,
BufferLength);
break;
@@ -655,8 +478,8 @@ NtfsQueryDirectory(PNTFS_IRP_CONTEXT IrpContext)
}
BufferLength -= Buffer0->NextEntryOffset;
Buffer += Buffer0->NextEntryOffset;
ExFreePoolWithTag(FileRecord, TAG_NTFS);
}
#endif
if (Buffer0)
{
@@ -665,11 +488,10 @@ NtfsQueryDirectory(PNTFS_IRP_CONTEXT IrpContext)
if (FileIndex > 0)
{
//Status = STATUS_SUCCESS;
Status = STATUS_SUCCESS;
}
// return Status;
return STATUS_NO_MORE_FILES;
return Status;
}

View File

@@ -289,7 +289,7 @@ NtfsMakeRootFCB(PNTFS_VCB Vcb)
return NULL;
}
FileName = GetFileNameFromRecord(MftRecord);
FileName = GetFileNameFromRecord(MftRecord, NTFS_FILE_NAME_WIN32);
if (!FileName)
{
ExFreePoolWithTag(MftRecord, TAG_NTFS);
@@ -391,7 +391,7 @@ NtfsMakeFCBFromDirEntry(PNTFS_VCB Vcb,
DPRINT1("NtfsMakeFCBFromDirEntry(%p, %p, %wZ, %p, %p)\n", Vcb, DirectoryFCB, Name, Record, fileFCB);
FileName = GetFileNameFromRecord(Record);
FileName = GetFileNameFromRecord(Record, NTFS_FILE_NAME_WIN32);
if (!FileName)
{
return STATUS_OBJECT_NAME_NOT_FOUND; // Not sure that's the best here

View File

@@ -34,8 +34,6 @@
#define NDEBUG
#include <debug.h>
UNICODE_STRING EmptyName = RTL_CONSTANT_STRING(L"");
/* FUNCTIONS ****************************************************************/
/*
@@ -274,7 +272,7 @@ NtfsGetVolumeData(PDEVICE_OBJECT DeviceObject,
return Status;
}
Status = FindAttribute(DeviceExt, DeviceExt->MasterFileTable, AttributeData, &EmptyName, &DeviceExt->MFTContext);
Status = FindAttribute(DeviceExt, DeviceExt->MasterFileTable, AttributeData, L"", 0, &DeviceExt->MFTContext);
if (!NT_SUCCESS(Status))
{
DPRINT1("Can't find data attribute for Master File Table.\n");
@@ -312,7 +310,7 @@ NtfsGetVolumeData(PDEVICE_OBJECT DeviceObject,
NtfsDumpFileAttributes(VolumeRecord);
/* Get volume name */
Status = FindAttribute(DeviceExt, VolumeRecord, AttributeVolumeName, &EmptyName, &AttrCtxt);
Status = FindAttribute(DeviceExt, VolumeRecord, AttributeVolumeName, L"", 0, &AttrCtxt);
if (NT_SUCCESS(Status) && AttrCtxt->Record.Resident.ValueLength != 0)
{
@@ -348,7 +346,7 @@ NtfsGetVolumeData(PDEVICE_OBJECT DeviceObject,
DeviceExt->VolumeFcb = VolumeFcb;
/* Get volume information */
Status = FindAttribute(DeviceExt, VolumeRecord, AttributeVolumeInformation, &EmptyName, &AttrCtxt);
Status = FindAttribute(DeviceExt, VolumeRecord, AttributeVolumeInformation, L"", 0, &AttrCtxt);
if (NT_SUCCESS(Status) && AttrCtxt->Record.Resident.ValueLength != 0)
{

View File

@@ -31,8 +31,6 @@
#define NDEBUG
#include <debug.h>
UNICODE_STRING IndexOfFileNames = RTL_CONSTANT_STRING(L"$I30");
/* FUNCTIONS ****************************************************************/
PNTFS_ATTR_CONTEXT
@@ -84,10 +82,10 @@ FindAttributeHelper(PDEVICE_EXTENSION Vcb,
PNTFS_ATTR_RECORD AttrRecord,
PNTFS_ATTR_RECORD AttrRecordEnd,
ULONG Type,
const WCHAR *Name,
PCWSTR Name,
ULONG NameLength)
{
DPRINT("FindAttributeHelper(%p, %p, %p, 0x%x, %s, %u)\n", Vcb, AttrRecord, AttrRecordEnd, Type, Name, NameLength);
DPRINT("FindAttributeHelper(%p, %p, %p, 0x%x, %S, %u)\n", Vcb, AttrRecord, AttrRecordEnd, Type, Name, NameLength);
while (AttrRecord < AttrRecordEnd)
{
@@ -143,13 +141,12 @@ FindAttributeHelper(PDEVICE_EXTENSION Vcb,
if (AttrRecord->Type == Type)
{
DPRINT("%d, %d\n", AttrRecord->NameLength, NameLength);
if (AttrRecord->NameLength == NameLength)
{
PWCHAR AttrName;
AttrName = (PWCHAR)((PCHAR)AttrRecord + AttrRecord->NameOffset);
DPRINT("%s, %s\n", AttrName, Name);
DPRINT("%.*S, %.*S\n", AttrRecord->NameLength, AttrName, NameLength, Name);
if (RtlCompareMemory(AttrName, Name, NameLength << 1) == (NameLength << 1))
{
/* Found it, fill up the context and return. */
@@ -176,18 +173,19 @@ NTSTATUS
FindAttribute(PDEVICE_EXTENSION Vcb,
PFILE_RECORD_HEADER MftRecord,
ULONG Type,
PUNICODE_STRING Name,
PCWSTR Name,
ULONG NameLength,
PNTFS_ATTR_CONTEXT * AttrCtx)
{
PNTFS_ATTR_RECORD AttrRecord;
PNTFS_ATTR_RECORD AttrRecordEnd;
DPRINT("NtfsFindAttribute(%p, %p, %u, %s)\n", Vcb, MftRecord, Type, Name);
DPRINT("FindAttribute(%p, %p, 0x%x, %S, %u, %p)\n", Vcb, MftRecord, Type, Name, NameLength, AttrCtx);
AttrRecord = (PNTFS_ATTR_RECORD)((PCHAR)MftRecord + MftRecord->AttributeOffset);
AttrRecordEnd = (PNTFS_ATTR_RECORD)((PCHAR)MftRecord + Vcb->NtfsInfo.BytesPerFileRecord);
*AttrCtx = FindAttributeHelper(Vcb, AttrRecord, AttrRecordEnd, Type, Name->Buffer, Name->Length);
*AttrCtx = FindAttributeHelper(Vcb, AttrRecord, AttrRecordEnd, Type, Name, NameLength);
if (*AttrCtx == NULL)
{
return STATUS_OBJECT_NAME_NOT_FOUND;
@@ -399,10 +397,12 @@ ReadFileRecord(PDEVICE_EXTENSION Vcb,
{
ULONGLONG BytesRead;
DPRINT("ReadFileRecord(%p, %I64x, %p)\n", Vcb, index, file);
BytesRead = ReadAttribute(Vcb, Vcb->MFTContext, index * Vcb->NtfsInfo.BytesPerFileRecord, (PCHAR)file, Vcb->NtfsInfo.BytesPerFileRecord);
if (BytesRead != Vcb->NtfsInfo.BytesPerFileRecord)
{
DPRINT1("ReadFileRecord failed: %u read, %u expected\n", BytesRead, Vcb->NtfsInfo.BytesPerFileRecord);
DPRINT1("ReadFileRecord failed: %I64u read, %u expected\n", BytesRead, Vcb->NtfsInfo.BytesPerFileRecord);
return STATUS_PARTIAL_COPY;
}
@@ -469,7 +469,7 @@ CompareFileName(PUNICODE_STRING FileName,
EntryName.Buffer = IndexEntry->FileName.Name;
EntryName.Length =
EntryName.MaximumLength = IndexEntry->FileName.NameLength;
EntryName.MaximumLength = IndexEntry->FileName.NameLength * sizeof(WCHAR);
if (DirSearch)
{
@@ -477,7 +477,7 @@ CompareFileName(PUNICODE_STRING FileName,
}
else
{
return (RtlCompareUnicodeString(FileName, &EntryName, (IndexEntry->FileName.NameType != NTFS_FILE_NAME_POSIX)) == TRUE);
return (RtlCompareUnicodeString(FileName, &EntryName, (IndexEntry->FileName.NameType != NTFS_FILE_NAME_POSIX)) == 0);
}
}
@@ -488,8 +488,7 @@ NtfsFindMftRecord(PDEVICE_EXTENSION Vcb,
PUNICODE_STRING FileName,
PULONG FirstEntry,
BOOLEAN DirSearch,
ULONGLONG *OutMFTIndex,
PWSTR OutName)
ULONGLONG *OutMFTIndex)
{
PFILE_RECORD_HEADER MftRecord;
//ULONG Magic;
@@ -497,6 +496,7 @@ NtfsFindMftRecord(PDEVICE_EXTENSION Vcb,
PNTFS_ATTR_CONTEXT IndexBitmapCtx;
PNTFS_ATTR_CONTEXT IndexAllocationCtx;
PINDEX_ROOT_ATTRIBUTE IndexRoot;
PINDEX_BUFFER IndexBuffer;
ULONGLONG BitmapDataSize;
ULONGLONG IndexAllocationSize;
PCHAR BitmapData;
@@ -507,6 +507,8 @@ NtfsFindMftRecord(PDEVICE_EXTENSION Vcb,
NTSTATUS Status;
ULONG CurrentEntry = 0;
DPRINT("NtfsFindMftRecord(%p, %I64d, %wZ, %p, %u, %p)\n", Vcb, MFTIndex, FileName, FirstEntry, DirSearch, OutMFTIndex);
MftRecord = ExAllocatePoolWithTag(NonPagedPool,
Vcb->NtfsInfo.BytesPerFileRecord,
TAG_NTFS);
@@ -519,7 +521,7 @@ NtfsFindMftRecord(PDEVICE_EXTENSION Vcb,
{
//Magic = MftRecord->Magic;
Status = FindAttribute(Vcb, MftRecord, AttributeIndexRoot, &IndexOfFileNames, &IndexRootCtx);
Status = FindAttribute(Vcb, MftRecord, AttributeIndexRoot, L"$I30", 4, &IndexRootCtx);
if (!NT_SUCCESS(Status))
{
ExFreePoolWithTag(MftRecord, TAG_NTFS);
@@ -545,12 +547,12 @@ NtfsFindMftRecord(PDEVICE_EXTENSION Vcb,
while (IndexEntry < IndexEntryEnd &&
!(IndexEntry->Flags & NTFS_INDEX_ENTRY_END))
{
if (CurrentEntry >= *FirstEntry && CompareFileName(FileName, IndexEntry, DirSearch))
if ((IndexEntry->Data.Directory.IndexedFile & NTFS_MFT_MASK) > 0x10 &&
CurrentEntry >= *FirstEntry &&
CompareFileName(FileName, IndexEntry, DirSearch))
{
*OutMFTIndex = IndexEntry->Data.Directory.IndexedFile;
*OutMFTIndex = (IndexEntry->Data.Directory.IndexedFile & NTFS_MFT_MASK);
*FirstEntry = CurrentEntry;
RtlCopyMemory(OutName, IndexEntry->FileName.Name, IndexEntry->FileName.NameLength);
OutName[IndexEntry->FileName.NameLength / sizeof(WCHAR)] = UNICODE_NULL;
ExFreePoolWithTag(IndexRecord, TAG_NTFS);
ExFreePoolWithTag(MftRecord, TAG_NTFS);
return STATUS_SUCCESS;
@@ -566,10 +568,10 @@ NtfsFindMftRecord(PDEVICE_EXTENSION Vcb,
IndexBlockSize = IndexRoot->SizeOfEntry;
Status = FindAttribute(Vcb, MftRecord, AttributeBitmap, &IndexOfFileNames, &IndexBitmapCtx);
Status = FindAttribute(Vcb, MftRecord, AttributeBitmap, L"$I30", 4, &IndexBitmapCtx);
if (!NT_SUCCESS(Status))
{
DPRINT("Corrupted filesystem!\n");
DPRINT1("Corrupted filesystem!\n");
ExFreePoolWithTag(MftRecord, TAG_NTFS);
return Status;
}
@@ -589,7 +591,7 @@ NtfsFindMftRecord(PDEVICE_EXTENSION Vcb,
ReadAttribute(Vcb, IndexBitmapCtx, 0, BitmapData, (ULONG)BitmapDataSize);
ReleaseAttributeContext(IndexBitmapCtx);
Status = FindAttribute(Vcb, MftRecord, AttributeIndexAllocation, &IndexOfFileNames, &IndexAllocationCtx);
Status = FindAttribute(Vcb, MftRecord, AttributeIndexAllocation, L"$I30", 4, &IndexAllocationCtx);
if (!NT_SUCCESS(Status))
{
DPRINT("Corrupted filesystem!\n");
@@ -621,25 +623,28 @@ NtfsFindMftRecord(PDEVICE_EXTENSION Vcb,
ReadAttribute(Vcb, IndexAllocationCtx, RecordOffset, IndexRecord, IndexBlockSize);
if (!FixupUpdateSequenceArray(Vcb, &((PFILE_RECORD_HEADER)IndexRecord)->Ntfs))
if (!NT_SUCCESS(FixupUpdateSequenceArray(Vcb, &((PFILE_RECORD_HEADER)IndexRecord)->Ntfs)))
{
break;
}
/* FIXME */
IndexEntry = (PINDEX_ENTRY_ATTRIBUTE)(IndexRecord + 0x18 + *(USHORT *)(IndexRecord + 0x18));
IndexEntryEnd = (PINDEX_ENTRY_ATTRIBUTE)(IndexRecord + IndexBlockSize);
IndexBuffer = (PINDEX_BUFFER)IndexRecord;
ASSERT(IndexBuffer->Ntfs.Type == 'XDNI');
ASSERT(IndexBuffer->Header.AllocatedSize + 0x18 == IndexBlockSize);
IndexEntry = (PINDEX_ENTRY_ATTRIBUTE)((ULONG_PTR)&IndexBuffer->Header + IndexBuffer->Header.FirstEntryOffset);
IndexEntryEnd = (PINDEX_ENTRY_ATTRIBUTE)((ULONG_PTR)&IndexBuffer->Header + IndexBuffer->Header.TotalSizeOfEntries);
ASSERT(IndexEntryEnd <= (PINDEX_ENTRY_ATTRIBUTE)((ULONG_PTR)IndexBuffer + IndexBlockSize));
while (IndexEntry < IndexEntryEnd &&
!(IndexEntry->Flags & NTFS_INDEX_ENTRY_END))
{
if (CurrentEntry >= *FirstEntry && CompareFileName(FileName, IndexEntry, DirSearch))
if ((IndexEntry->Data.Directory.IndexedFile & NTFS_MFT_MASK) > 0x10 &&
CurrentEntry >= *FirstEntry &&
CompareFileName(FileName, IndexEntry, DirSearch))
{
DPRINT("File found\n");
*OutMFTIndex = IndexEntry->Data.Directory.IndexedFile;
*OutMFTIndex = (IndexEntry->Data.Directory.IndexedFile & NTFS_MFT_MASK);
*FirstEntry = CurrentEntry;
RtlCopyMemory(OutName, IndexEntry->FileName.Name, IndexEntry->FileName.NameLength);
OutName[IndexEntry->FileName.NameLength / sizeof(WCHAR)] = UNICODE_NULL;
ExFreePoolWithTag(BitmapData, TAG_NTFS);
ExFreePoolWithTag(IndexRecord, TAG_NTFS);
ExFreePoolWithTag(MftRecord, TAG_NTFS);
@@ -648,6 +653,7 @@ NtfsFindMftRecord(PDEVICE_EXTENSION Vcb,
}
++CurrentEntry;
ASSERT(IndexEntry->Length >= sizeof(INDEX_ENTRY_ATTRIBUTE));
IndexEntry = (PINDEX_ENTRY_ATTRIBUTE)((PCHAR)IndexEntry + IndexEntry->Length);
}
@@ -677,26 +683,28 @@ NtfsLookupFileAt(PDEVICE_EXTENSION Vcb,
PULONGLONG MFTIndex,
ULONGLONG CurrentMFTIndex)
{
UNICODE_STRING Current, Remaining, Found;
UNICODE_STRING Current, Remaining;
NTSTATUS Status;
WCHAR FoundName[MAX_PATH + 1];
ULONG FirstEntry = 0;
DPRINT1("NtfsLookupFileAt(%p, %wZ, %p, %p, %I64x)\n", Vcb, PathName, FileRecord, DataContext, CurrentMFTIndex);
DPRINT("NtfsLookupFileAt(%p, %wZ, %p, %p, %I64x)\n", Vcb, PathName, FileRecord, DataContext, CurrentMFTIndex);
FsRtlDissectName(*PathName, &Current, &Remaining);
while (Current.Length != 0)
{
DPRINT1("Lookup: %wZ\n", &Current);
DPRINT("Current: %wZ\n", &Current);
Status = NtfsFindMftRecord(Vcb, CurrentMFTIndex, &Current, &FirstEntry, FALSE, &CurrentMFTIndex, FoundName);
Status = NtfsFindMftRecord(Vcb, CurrentMFTIndex, &Current, &FirstEntry, FALSE, &CurrentMFTIndex);
if (!NT_SUCCESS(Status))
{
return Status;
}
FsRtlDissectName(*PathName, &Current, &Remaining);
if (Remaining.Length == 0)
break;
FsRtlDissectName(Current, &Current, &Remaining);
}
*FileRecord = ExAllocatePoolWithTag(NonPagedPool, Vcb->NtfsInfo.BytesPerFileRecord, TAG_NTFS);
@@ -710,19 +718,24 @@ NtfsLookupFileAt(PDEVICE_EXTENSION Vcb,
if (!NT_SUCCESS(Status))
{
DPRINT("NtfsLookupFileAt: Can't read MFT record\n");
ExFreePoolWithTag(FileRecord, TAG_NTFS);
ExFreePoolWithTag(*FileRecord, TAG_NTFS);
return Status;
}
RtlInitUnicodeString(&Found, FoundName);
Status = FindAttribute(Vcb, *FileRecord, AttributeData, &Found, DataContext);
if (!((*FileRecord)->Flags & FRH_DIRECTORY))
{
Status = FindAttribute(Vcb, *FileRecord, AttributeData, L"", 0, DataContext);
if (!NT_SUCCESS(Status))
{
DPRINT("NtfsLookupFileAt: Can't find data attribute\n");
ExFreePoolWithTag(FileRecord, TAG_NTFS);
ExFreePoolWithTag(*FileRecord, TAG_NTFS);
return Status;
}
}
else
{
*DataContext = NULL;
}
*MFTIndex = CurrentMFTIndex;
@@ -748,15 +761,14 @@ NtfsFindFileAt(PDEVICE_EXTENSION Vcb,
PULONGLONG MFTIndex,
ULONGLONG CurrentMFTIndex)
{
UNICODE_STRING Found;
NTSTATUS Status;
WCHAR FoundName[MAX_PATH + 1];
DPRINT1("NtfsFindFileAt(%p, %wZ, %p, %p, %p, %p, %I64x)\n", Vcb, SearchPattern, FirstEntry, FileRecord, DataContext, MFTIndex, CurrentMFTIndex);
DPRINT("NtfsFindFileAt(%p, %wZ, %p, %p, %p, %p, %I64x)\n", Vcb, SearchPattern, FirstEntry, FileRecord, DataContext, MFTIndex, CurrentMFTIndex);
Status = NtfsFindMftRecord(Vcb, CurrentMFTIndex, SearchPattern, FirstEntry, TRUE, &CurrentMFTIndex, FoundName);
Status = NtfsFindMftRecord(Vcb, CurrentMFTIndex, SearchPattern, FirstEntry, TRUE, &CurrentMFTIndex);
if (!NT_SUCCESS(Status))
{
DPRINT("NtfsFindFileAt: NtfsFindMftRecord() failed with status 0x%08lx\n", Status);
return Status;
}
@@ -771,19 +783,24 @@ NtfsFindFileAt(PDEVICE_EXTENSION Vcb,
if (!NT_SUCCESS(Status))
{
DPRINT("NtfsFindFileAt: Can't read MFT record\n");
ExFreePoolWithTag(FileRecord, TAG_NTFS);
ExFreePoolWithTag(*FileRecord, TAG_NTFS);
return Status;
}
RtlInitUnicodeString(&Found, FoundName);
Status = FindAttribute(Vcb, *FileRecord, AttributeData, &Found, DataContext);
if (!((*FileRecord)->Flags & FRH_DIRECTORY))
{
Status = FindAttribute(Vcb, *FileRecord, AttributeData, L"", 0, DataContext);
if (!NT_SUCCESS(Status))
{
DPRINT("NtfsFindFileAt: Can't find data attribute\n");
ExFreePoolWithTag(FileRecord, TAG_NTFS);
ExFreePoolWithTag(*FileRecord, TAG_NTFS);
return Status;
}
}
else
{
*DataContext = NULL;
}
*MFTIndex = CurrentMFTIndex;

View File

@@ -97,4 +97,19 @@ NtfsAllocateIrpContext(PDEVICE_OBJECT DeviceObject,
return IrpContext;
}
VOID
NtfsFileFlagsToAttributes(ULONG NtfsAttributes,
PULONG FileAttributes)
{
*FileAttributes = NtfsAttributes;
if ((NtfsAttributes & NTFS_FILE_TYPE_DIRECTORY) == NTFS_FILE_TYPE_DIRECTORY)
{
*FileAttributes = NtfsAttributes & ~NTFS_FILE_TYPE_DIRECTORY;
*FileAttributes |= FILE_ATTRIBUTE_DIRECTORY;
}
if (NtfsAttributes == 0)
*FileAttributes = FILE_ATTRIBUTE_NORMAL;
}
/* EOF */

View File

@@ -169,6 +169,8 @@ typedef enum
#define NTFS_FILE_UPCASE 10
#define NTFS_FILE_EXTEND 11
#define NTFS_MFT_MASK 0x0000FFFFFFFFFFFFULL
#define COLLATION_BINARY 0x00
#define COLLATION_FILE_NAME 0x01
#define COLLATION_UNICODE_STRING 0x02
@@ -329,6 +331,13 @@ typedef struct
INDEX_HEADER_ATTRIBUTE Header;
} INDEX_ROOT_ATTRIBUTE, *PINDEX_ROOT_ATTRIBUTE;
typedef struct
{
NTFS_RECORD_HEADER Ntfs;
ULONGLONG VCN;
INDEX_HEADER_ATTRIBUTE Header;
} INDEX_BUFFER, *PINDEX_BUFFER;
typedef struct
{
union
@@ -439,7 +448,7 @@ VOID
NtfsDumpFileAttributes(PFILE_RECORD_HEADER FileRecord);
PFILENAME_ATTRIBUTE
GetFileNameFromRecord(PFILE_RECORD_HEADER FileRecord);
GetFileNameFromRecord(PFILE_RECORD_HEADER FileRecord, UCHAR NameType);
/* blockdev.c */
@@ -613,7 +622,8 @@ NTSTATUS
FindAttribute(PDEVICE_EXTENSION Vcb,
PFILE_RECORD_HEADER MftRecord,
ULONG Type,
PUNICODE_STRING Name,
PCWSTR Name,
ULONG NameLength,
PNTFS_ATTR_CONTEXT * AttrCtx);
VOID
@@ -680,16 +690,12 @@ VOID
CdfsSwapString(PWCHAR Out,
PUCHAR In,
ULONG Count);
VOID
CdfsDateTimeToFileTime(PFCB Fcb,
TIME *FileTime);
VOID
CdfsFileFlagsToAttributes(PFCB Fcb,
PULONG FileAttributes);
#endif
VOID
NtfsFileFlagsToAttributes(ULONG NtfsAttributes,
PULONG FileAttributes);
/* rw.c */

View File

@@ -32,6 +32,14 @@
/* FUNCTIONS ****************************************************************/
static
ULONGLONG
NtfsGetFreeClusters(PDEVICE_EXTENSION DeviceExt)
{
UNIMPLEMENTED;
return 0;
}
static
NTSTATUS
NtfsGetFsVolumeInformation(PDEVICE_OBJECT DeviceObject,
@@ -130,8 +138,8 @@ NtfsGetFsSizeInformation(PDEVICE_OBJECT DeviceObject,
DeviceExt = DeviceObject->DeviceExtension;
FsSizeInfo->AvailableAllocationUnits.QuadPart = 0;
FsSizeInfo->TotalAllocationUnits.QuadPart = DeviceExt->NtfsInfo.SectorCount; /* ?? */
FsSizeInfo->AvailableAllocationUnits.QuadPart = NtfsGetFreeClusters(DeviceExt);
FsSizeInfo->TotalAllocationUnits.QuadPart = DeviceExt->NtfsInfo.SectorCount / DeviceExt->NtfsInfo.SectorsPerCluster;
FsSizeInfo->SectorsPerAllocationUnit = DeviceExt->NtfsInfo.SectorsPerCluster;
FsSizeInfo->BytesPerSector = DeviceExt->NtfsInfo.BytesPerSector;
@@ -145,7 +153,8 @@ NtfsGetFsSizeInformation(PDEVICE_OBJECT DeviceObject,
static
NTSTATUS
NtfsGetFsDeviceInformation(PFILE_FS_DEVICE_INFORMATION FsDeviceInfo,
NtfsGetFsDeviceInformation(PDEVICE_OBJECT DeviceObject,
PFILE_FS_DEVICE_INFORMATION FsDeviceInfo,
PULONG BufferLength)
{
DPRINT("NtfsGetFsDeviceInformation()\n");
@@ -157,7 +166,7 @@ NtfsGetFsDeviceInformation(PFILE_FS_DEVICE_INFORMATION FsDeviceInfo,
return STATUS_BUFFER_OVERFLOW;
FsDeviceInfo->DeviceType = FILE_DEVICE_DISK;
FsDeviceInfo->Characteristics = 0; /* FIXME: fix this !! */
FsDeviceInfo->Characteristics = DeviceObject->Characteristics;
DPRINT("NtfsGetFsDeviceInformation() finished.\n");
@@ -215,7 +224,8 @@ NtfsQueryVolumeInformation(PNTFS_IRP_CONTEXT IrpContext)
break;
case FileFsDeviceInformation:
Status = NtfsGetFsDeviceInformation(SystemBuffer,
Status = NtfsGetFsDeviceInformation(DeviceObject,
SystemBuffer,
&BufferLength);
break;

View File

@@ -694,7 +694,7 @@ cleanup:
{
TRACE_(I8042PRT, "IRP_MJ_INTERNAL_DEVICE_CONTROL / IOCTL_KEYBOARD_QUERY_INDICATORS\n");
if (Stack->Parameters.DeviceIoControl.InputBufferLength < sizeof(KEYBOARD_INDICATOR_PARAMETERS))
if (Stack->Parameters.DeviceIoControl.OutputBufferLength < sizeof(KEYBOARD_INDICATOR_PARAMETERS))
{
Status = STATUS_BUFFER_TOO_SMALL;
}

View File

@@ -1692,7 +1692,7 @@ IssueIdentify(
deviceExtension->FullIdentifyData.NVCache_Version
));
KdPrint2((PRINT_PREFIX "R-rate %#x\n",
KdPrint2((PRINT_PREFIX "R-rate %d\n",
deviceExtension->FullIdentifyData.NominalMediaRotationRate
));
@@ -5071,9 +5071,9 @@ continue_err:
if(AtaReq->retry < MAX_RETRIES) {
//fallback_pio:
if(!(deviceExtension->HwFlags & UNIATA_AHCI)) {
AtaReq->Flags &= ~REQ_FLAG_DMA_OPERATION;
//AtaReq->Flags &= ~REQ_FLAG_DMA_OPERATION;
// Downrate will happen in AtapiDmaReinit(), try UDMA-2 for HDD only
AtaReq->Flags |= REQ_FLAG_FORCE_DOWNRATE;
// LunExt->DeviceFlags |= DFLAGS_FORCE_DOWNRATE;
}
AtaReq->ReqState = REQ_STATE_QUEUED;
goto reenqueue_req;
@@ -5093,6 +5093,7 @@ continue_err:
((error >> 4) == SCSI_SENSE_HARDWARE_ERROR)) {
if(AtaReq->retry < MAX_RETRIES) {
//fallback_pio:
// Downrate will happen in AtapiDmaReinit(), use PIO immediately for ATAPI
AtaReq->Flags &= ~REQ_FLAG_DMA_OPERATION;
AtaReq->Flags |= REQ_FLAG_FORCE_DOWNRATE;
// LunExt->DeviceFlags |= DFLAGS_FORCE_DOWNRATE;
@@ -5449,6 +5450,7 @@ IntrPrepareResetController:
chan->ChannelCtrlFlags &= ~CTRFLAGS_DMA_OPERATION;
goto CompleteRequest;
}
continue_read_drq:
// Ensure that this is a read command.
if (srb->SrbFlags & SRB_FLAGS_DATA_IN) {
@@ -5489,7 +5491,6 @@ IntrPrepareResetController:
}
}
}
} else {
KdPrint2((PRINT_PREFIX
"IdeIntr: Read %#x Dwords\n", wordCount/2));
@@ -5581,6 +5582,12 @@ IntrPrepareResetController:
status = SRB_STATUS_SUCCESS;
goto CompleteRequest;
}
} else {
if(!atapiDev && !DataOverrun && (srb->SrbFlags & SRB_FLAGS_DATA_IN) &&
(statusByte == (IDE_STATUS_IDLE | IDE_STATUS_DRQ))) {
KdPrint2((PRINT_PREFIX " HDD read data ready \n"));
goto continue_read_drq;
}
}
}
@@ -6689,6 +6696,7 @@ IdeReadWrite(
// Adjust buffer address and words left count.
AtaReq->WordsLeft -= wordCount;
AtaReq->DataBuffer += wordCount;
AtaReq->WordsTransfered += wordCount;
// Wait for interrupt.
return SRB_STATUS_PENDING;

View File

@@ -587,10 +587,8 @@ AtapiDmaStart(
case ATA_PROMISE_ID:
if(ChipType == PRNEW) {
ULONG Channel = deviceExtension->Channel + lChannel;
if(chan->ChannelCtrlFlags & CTRFLAGS_LBA48) {
AtapiWritePortEx1(chan, (ULONGIO_PTR)(&deviceExtension->BaseIoAddressBM_0),0x11,
AtapiReadPortEx1(chan, (ULONGIO_PTR)(&deviceExtension->BaseIoAddressBM_0),0x11) |
(Channel ? 0x08 : 0x02));
AtapiWritePortEx4(chan, (ULONGIO_PTR)(&deviceExtension->BaseIoAddressBM_0),(Channel ? 0x24 : 0x20),
((Srb->SrbFlags & SRB_FLAGS_DATA_IN) ? 0x05000000 : 0x06000000) | (Srb->DataTransferLength >> 1)
);
@@ -659,10 +657,12 @@ AtapiDmaDone(
case ATA_PROMISE_ID:
if(ChipType == PRNEW) {
ULONG Channel = deviceExtension->Channel + lChannel;
if(chan->ChannelCtrlFlags & CTRFLAGS_LBA48) {
/*
AtapiWritePortEx1(chan, (ULONGIO_PTR)(&deviceExtension->BaseIoAddressBM_0),0x11,
AtapiReadPortEx1(chan, (ULONGIO_PTR)(&deviceExtension->BaseIoAddressBM_0),0x11) &
~(Channel ? 0x08 : 0x02));
*/
if(chan->ChannelCtrlFlags & CTRFLAGS_LBA48) {
AtapiWritePortEx4(chan, (ULONGIO_PTR)(&deviceExtension->BaseIoAddressBM_0),(Channel ? 0x24 : 0x20),
0
);
@@ -1555,10 +1555,13 @@ set_new_acard:
return;
break; }
case ATA_PROMISE_ID:
case ATA_PROMISE_ID: {
/***********/
/* Promise */
/***********/
UCHAR sel66 = Channel ? 0x08: 0x02;
if(ChipType < PRTX) {
if (isAtapi) {
udmamode =
@@ -1566,12 +1569,29 @@ set_new_acard:
}
}
for(i=udmamode; i>=0; i--) {
if(ChipType == PRNEW) {
if(i>2) {
AtapiWritePortEx1(chan, (ULONGIO_PTR)(&deviceExtension->BaseIoAddressBM_0),0x11,
AtapiReadPortEx1(chan, (ULONGIO_PTR)(&deviceExtension->BaseIoAddressBM_0),0x11) |
sel66);
} else {
AtapiWritePortEx1(chan, (ULONGIO_PTR)(&deviceExtension->BaseIoAddressBM_0),0x11,
AtapiReadPortEx1(chan, (ULONGIO_PTR)(&deviceExtension->BaseIoAddressBM_0),0x11) &
~sel66);
}
}
if(AtaSetTransferMode(deviceExtension, DeviceNumber, lChannel, LunExt, ATA_UDMA0 + i)) {
promise_timing(deviceExtension, dev, (UCHAR)(ATA_UDMA + i)); // ???
return;
}
}
if(ChipType == PRNEW) {
AtapiWritePortEx1(chan, (ULONGIO_PTR)(&deviceExtension->BaseIoAddressBM_0),0x11,
AtapiReadPortEx1(chan, (ULONGIO_PTR)(&deviceExtension->BaseIoAddressBM_0),0x11) &
~sel66);
}
for(i=wdmamode; i>=0; i--) {
if(AtaSetTransferMode(deviceExtension, DeviceNumber, lChannel, LunExt, ATA_WDMA0 + i)) {
promise_timing(deviceExtension, dev, (UCHAR)(ATA_WDMA0+i));
@@ -1587,7 +1607,7 @@ set_new_acard:
AtaSetTransferMode(deviceExtension, DeviceNumber, lChannel, LunExt, ATA_PIO0 + apiomode);
promise_timing(deviceExtension, dev, ATA_PIO0 + apiomode);
return;
break;
break; }
case ATA_ATI_ID:
KdPrint2((PRINT_PREFIX "ATI\n"));

View File

@@ -968,6 +968,12 @@ UniataAhciDetect(
KdPrint2((PRINT_PREFIX "\n"));
/* get the number of HW channels */
/* CAP.NOP sometimes indicate the index of the last enabled
* port, at other times, that of the last possible port, so
* determining the maximum port number requires looking at
* both CAP.NOP and PI.
*/
PI = UniataAhciReadHostPort4(deviceExtension, IDX_AHCI_PI);
deviceExtension->AHCI_PI = PI;
KdPrint2((PRINT_PREFIX " AHCI PI %#x\n", PI));

View File

@@ -1,10 +1,10 @@
#define UNIATA_VER_STR "45a8"
#define UNIATA_VER_DOT 0.45.1.8
#define UNIATA_VER_STR "45b1"
#define UNIATA_VER_DOT 0.45.2.1
#define UNIATA_VER_MJ 0
#define UNIATA_VER_MN 45
#define UNIATA_VER_SUB_MJ 1
#define UNIATA_VER_SUB_MN 8
#define UNIATA_VER_DOT_COMMA 0,45,1,8
#define UNIATA_VER_DOT_STR "0.45.1.8"
#define UNIATA_VER_SUB_MJ 2
#define UNIATA_VER_SUB_MN 1
#define UNIATA_VER_DOT_COMMA 0,45,2,1
#define UNIATA_VER_DOT_STR "0.45.2.1"
#define UNIATA_VER_YEAR 2014
#define UNIATA_VER_YEAR_STR "2014"

View File

@@ -32,11 +32,11 @@ endmacro()
today(KERNEL_VERSION_BUILD)
set(KERNEL_VERSION_MAJOR "0")
set(KERNEL_VERSION_MINOR "4")
set(KERNEL_VERSION_PATCH_LEVEL "0")
set(KERNEL_VERSION_MINOR "3")
set(KERNEL_VERSION_PATCH_LEVEL "17")
set(COPYRIGHT_YEAR "2014")
# KERNEL_VERSION_BUILD_TYPE is "SVN", "RC1", "RC2" or "" (for the release)
set(KERNEL_VERSION_BUILD_TYPE "SVN")
set(KERNEL_VERSION_BUILD_TYPE "")
set(KERNEL_VERSION "${KERNEL_VERSION_MAJOR}.${KERNEL_VERSION_MINOR}")

View File

@@ -679,8 +679,12 @@ TCPSetNoDelay(
PCONNECTION_ENDPOINT Connection,
BOOLEAN Set)
{
if (!Connection)
return STATUS_UNSUCCESSFUL;
if (Connection->SocketContext == NULL)
return STATUS_UNSUCCESSFUL;
LibTCPSetNoDelay(Connection->SocketContext, Set);
return STATUS_SUCCESS;
}

View File

@@ -141,7 +141,9 @@ void __cdecl _invalid_parameter(const wchar_t *expr, const wchar_t *func,
else
{
ERR( "%s:%u %s: %s %lx\n", debugstr_w(file), line, debugstr_w(func), debugstr_w(expr), arg );
#if _MSVCR_VER > 0 // FIXME: possible improvement: use a global variable in the DLL
RaiseException( STATUS_INVALID_CRUNTIME_PARAMETER, EXCEPTION_NONCONTINUABLE, 0, NULL );
#endif
}
}

View File

@@ -2664,15 +2664,42 @@ GetFontScore(LOGFONTW *LogFont, PUNICODE_STRING FaceName, PFONTGDI FontGDI)
Status = RtlAnsiStringToUnicodeString(&EntryFaceNameW, &EntryFaceNameA, TRUE);
if (NT_SUCCESS(Status))
{
static const UNICODE_STRING MarlettFaceNameW = RTL_CONSTANT_STRING(L"Marlett");
static const UNICODE_STRING SymbolFaceNameW = RTL_CONSTANT_STRING(L"Symbol");
static const UNICODE_STRING VGAFaceNameW = RTL_CONSTANT_STRING(L"VGA");
if ((LF_FACESIZE - 1) * sizeof(WCHAR) < EntryFaceNameW.Length)
{
EntryFaceNameW.Length = (LF_FACESIZE - 1) * sizeof(WCHAR);
EntryFaceNameW.Buffer[LF_FACESIZE - 1] = L'\0';
}
if (0 == RtlCompareUnicodeString(FaceName, &EntryFaceNameW, TRUE))
if (!RtlCompareUnicodeString(FaceName, &EntryFaceNameW, TRUE))
{
Score += 49;
}
/* FIXME: this is a work around to counter weird fonts on weird places.
A proper fix would be to score fonts on more attributes than
the ones in this function */
if (!RtlCompareUnicodeString(&MarlettFaceNameW, &EntryFaceNameW, TRUE) &&
RtlCompareUnicodeString(&MarlettFaceNameW, FaceName, TRUE))
{
Score = 0;
}
if (!RtlCompareUnicodeString(&SymbolFaceNameW, &EntryFaceNameW, TRUE) &&
RtlCompareUnicodeString(&SymbolFaceNameW, FaceName, TRUE))
{
Score = 0;
}
if (!RtlCompareUnicodeString(&VGAFaceNameW, &EntryFaceNameW, TRUE) &&
RtlCompareUnicodeString(&VGAFaceNameW, FaceName, TRUE))
{
Score = 0;
}
RtlFreeUnicodeString(&EntryFaceNameW);
}

View File

@@ -7,6 +7,7 @@
*/
#include <win32k.h>
DBG_DEFAULT_CHANNEL(UserClass);
/* CALLPROC ******************************************************************/
@@ -110,6 +111,7 @@ UserGetCPD(
{
PCLS pCls;
PWND pWnd;
PDESKTOP pDesk;
PCALLPROCDATA CallProc = NULL;
PTHREADINFO pti;
@@ -131,7 +133,14 @@ UserGetCPD(
// No luck, create a new one for the requested proc.
if (!CallProc)
{
CallProc = CreateCallProc( pCls->rpdeskParent,
if (!pCls->rpdeskParent)
{
TRACE("Null DESKTOP Atom %d\n",pCls->atomClassName);
pDesk = pti->rpdesk;
}
else
pDesk = pCls->rpdeskParent;
CallProc = CreateCallProc( pDesk,
(WNDPROC)ProcIn,
!!(Flags & UserGetCPDA2U),
pti->ppi);

View File

@@ -61,7 +61,7 @@ IntKeyboardGetIndicatorTrans(HANDLE hKeyboardDevice,
while (pRet)
{
Status = NtDeviceIoControlFile(hKeyboardDevice,
Status = ZwDeviceIoControlFile(hKeyboardDevice,
NULL,
NULL,
NULL,
@@ -104,8 +104,7 @@ static
NTSTATUS APIENTRY
IntKeyboardUpdateLeds(HANDLE hKeyboardDevice,
WORD wVk,
WORD wScanCode,
BOOL bEnabled)
WORD wScanCode)
{
NTSTATUS Status;
UINT i;
@@ -133,13 +132,10 @@ IntKeyboardUpdateLeds(HANDLE hKeyboardDevice,
if (LedFlag)
{
if (bEnabled)
gIndicators.LedFlags |= LedFlag;
else
gIndicators.LedFlags = ~LedFlag;
gIndicators.LedFlags ^= LedFlag;
/* Update the lights on the hardware */
Status = NtDeviceIoControlFile(hKeyboardDevice,
Status = ZwDeviceIoControlFile(hKeyboardDevice,
NULL,
NULL,
NULL,
@@ -164,10 +160,10 @@ UserInitKeyboard(HANDLE hKeyboardDevice)
{
NTSTATUS Status;
IO_STATUS_BLOCK Block;
/*
IntKeyboardGetIndicatorTrans(hKeyboardDevice, &gpKeyboardIndicatorTrans);
Status = NtDeviceIoControlFile(hKeyboardDevice,
Status = ZwDeviceIoControlFile(hKeyboardDevice,
NULL,
NULL,
NULL,
@@ -186,9 +182,9 @@ UserInitKeyboard(HANDLE hKeyboardDevice)
gIndicators.LedFlags & KEYBOARD_NUM_LOCK_ON);
SET_KEY_LOCKED(gafAsyncKeyState, VK_SCROLL,
gIndicators.LedFlags & KEYBOARD_SCROLL_LOCK_ON);
*/
// FIXME: Need device driver to work! HID support more than one!!!!
Status = NtDeviceIoControlFile(hKeyboardDevice,
Status = ZwDeviceIoControlFile(hKeyboardDevice,
NULL,
NULL,
NULL,
@@ -808,8 +804,7 @@ ProcessKeyEvent(WORD wVk, WORD wScanCode, DWORD dwFlags, BOOL bInjected, DWORD d
/* Update keyboard LEDs */
IntKeyboardUpdateLeds(ghKeyboardDevice,
wSimpleVk,
wScanCode,
IS_KEY_LOCKED(gafAsyncKeyState, wSimpleVk));
wScanCode);
}
/* Call WH_KEYBOARD_LL hook */

View File

@@ -649,7 +649,7 @@ IntGetMenuInfo(PMENU Menu, PROSMENUINFO lpmi)
lpmi->cyMenu = Menu->cyMenu;
lpmi->spwndNotify = Menu->spwndNotify;
lpmi->cxTextAlign = Menu->cxTextAlign;
lpmi->iTop = Menu->iMaxTop;
lpmi->iTop = Menu->iTop;
lpmi->iMaxTop = Menu->iMaxTop;
lpmi->dwArrowsOn = Menu->dwArrowsOn;

View File

@@ -1676,6 +1676,19 @@ co_MsqPeekMouseMove(IN PTHREADINFO pti,
MSG msg;
PUSER_MESSAGE_QUEUE MessageQueue = pti->MessageQueue;
// First look for any buttons downs or ups before testing for the move.
if (pti->nCntsQBits[QSRosMouseButton])
{
if (co_MsqPeekHardwareMessage( pti,
Remove,
Window,
MsgFilterLow,
MsgFilterHigh,
QS_MOUSEBUTTON,
pMsg))
return TRUE; // Have one and return.
}
if(!(MessageQueue->MouseMoved))
return FALSE;

View File

@@ -43,7 +43,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(menu);
#define MENU_COL_SPACE 4
/* top and bottom margins for popup menus */
#define MENU_TOP_MARGIN 3
#define MENU_TOP_MARGIN 2 //3
#define MENU_BOTTOM_MARGIN 2
#define MENU_TYPE_MASK (MF_STRING | MF_BITMAP | MF_OWNERDRAW | MF_SEPARATOR)
@@ -395,7 +395,7 @@ MenuGetRosMenuInfo(PROSMENUINFO MenuInfo, HMENU Menu)
MenuInfo->cyMenu = pMenu->cyMenu;
MenuInfo->spwndNotify = pMenu->spwndNotify;
MenuInfo->cxTextAlign = pMenu->cxTextAlign;
MenuInfo->iTop = pMenu->iMaxTop;
MenuInfo->iTop = pMenu->iTop;
MenuInfo->iMaxTop = pMenu->iMaxTop;
MenuInfo->dwArrowsOn = pMenu->dwArrowsOn;
@@ -1301,7 +1301,7 @@ static void FASTCALL MenuPopupMenuCalcSize(PROSMENUINFO MenuInfo, HWND WndOwner)
orgX = maxX;
//if( lpitem.fType & (MF_MENUBREAK | MF_MENUBARBREAK))
// orgX += MENU_COL_SPACE;
orgY = 2;//MENU_TOP_MARGIN;
orgY = MENU_TOP_MARGIN;
maxTab = maxTabWidth = 0;
/* Parse items until column break or end of menu */