From 039975e952c7224cb9e8f3c6623df44bab94f130 Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Sat, 29 Dec 2012 10:33:51 +0000 Subject: [PATCH 01/96] Update RAPPS Database to recent versions / fix dead links. svn path=/trunk/; revision=58035 --- .../applications/rapps/rapps/abiword28x.txt | 6 ++-- .../applications/rapps/rapps/bittorrent.txt | 6 ++-- reactos/base/applications/rapps/rapps/fap.txt | 4 +-- .../applications/rapps/rapps/firefox5.txt | 24 ++++++------- .../applications/rapps/rapps/irfanview.txt | 4 +-- .../rapps/rapps/irfanviewplugins.txt | 4 +-- .../applications/rapps/rapps/libreoffice.txt | 4 +-- .../applications/rapps/rapps/mirandaim.txt | 4 +-- .../base/applications/rapps/rapps/mirc.txt | 4 +-- reactos/base/applications/rapps/rapps/mpc.txt | 4 +-- .../base/applications/rapps/rapps/openttd.txt | 4 +-- .../base/applications/rapps/rapps/opera.txt | 4 +-- .../base/applications/rapps/rapps/rosbe.txt | 6 ++-- .../base/applications/rapps/rapps/scite.txt | 4 +-- .../applications/rapps/rapps/seamonkey.txt | 36 +++++++++---------- .../applications/rapps/rapps/smplayer.txt | 4 +-- .../applications/rapps/rapps/sumatrapdf.txt | 6 ++-- .../applications/rapps/rapps/thunderbird5.txt | 20 +++++------ .../applications/rapps/rapps/ultravnc.txt | 4 +-- .../applications/rapps/rapps/utorrent.txt | 6 ++-- reactos/base/applications/rapps/rapps/vlc.txt | 6 ++-- 21 files changed, 82 insertions(+), 82 deletions(-) diff --git a/reactos/base/applications/rapps/rapps/abiword28x.txt b/reactos/base/applications/rapps/rapps/abiword28x.txt index d7e66b7ec9c..1f5952ce9fb 100644 --- a/reactos/base/applications/rapps/rapps/abiword28x.txt +++ b/reactos/base/applications/rapps/rapps/abiword28x.txt @@ -2,13 +2,13 @@ [Section] Name = AbiWord -Version = 2.9.2 +Version = 2.9.4 Licence = GPL Description = Word processor. -Size = 9.33MB +Size = 9.4MB Category = 6 URLSite = http://www.abisource.com/ -URLDownload = http://www.abisource.com/downloads/abiword/2.9.2/Windows/abiword-setup-2.9.2.exe +URLDownload = http://www.abisource.com/downloads/abiword/2.9.4/Windows/abiword-setup-2.9.4.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/bittorrent.txt b/reactos/base/applications/rapps/rapps/bittorrent.txt index a17000b4bfc..fa7e5f38cc6 100644 --- a/reactos/base/applications/rapps/rapps/bittorrent.txt +++ b/reactos/base/applications/rapps/rapps/bittorrent.txt @@ -2,13 +2,13 @@ [Section] Name = BitTorrent -Version = 7.7 +Version = 7.7.2 Licence = Freeware for non-commercial uses Description = The Original BitTorrent Client. -Size = 5.78MB +Size = 956KB Category = 5 URLSite = http://www.bittorrent.com/ -URLDownload = http://download.bittorrent.com/7.7/BitTorrent3.exe +URLDownload = http://download.bittorrent.com/7.7.2/BitTorrent.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/fap.txt b/reactos/base/applications/rapps/rapps/fap.txt index 46de57f9c3e..3fc27416923 100644 --- a/reactos/base/applications/rapps/rapps/fap.txt +++ b/reactos/base/applications/rapps/rapps/fap.txt @@ -2,13 +2,13 @@ [Section] Name = Fox Audio Player -Version = 0.9.1 +Version = 0.9.2 Licence = GPL Description = Simple and lightweight audio player. Size = 1.86MB Category = 1 URLSite = http://foxaudioplayer.sourceforge.net/ -URLDownload = http://svn.reactos.org/packages/fap-0.9.1-win32-bin.exe +URLDownload = http://svn.reactos.org/packages/fap-0.9.2-win32-bin.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/firefox5.txt b/reactos/base/applications/rapps/rapps/firefox5.txt index 5d235de8bb2..aef55463f0a 100644 --- a/reactos/base/applications/rapps/rapps/firefox5.txt +++ b/reactos/base/applications/rapps/rapps/firefox5.txt @@ -1,33 +1,33 @@ ; UTF-8 [Section] -Name = Mozilla Firefox 15 -Version = 15.0.1 +Name = Mozilla Firefox 17 +Version = 17.0.1 Licence = MPL/GPL/LGPL Description = The most popular and one of the best free Web Browsers out there. Size = 15.8MB Category = 5 URLSite = http://www.mozilla.com/en-US/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/15.0.1/win32/en-US/Firefox%20Setup%2015.0.1.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/17.0.1/win32/en-US/Firefox%20Setup%2017.0.1.exe CDPath = none [Section.0407] Description = Der populärste und einer der besten freien Webbrowser. Size = 15.7MB URLSite = http://www.mozilla-europe.org/de/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/15.0.1/win32/de/Firefox%20Setup%2015.0.1.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/17.0.1/win32/de/Firefox%20Setup%2017.0.1.exe [Section.040a] Description = El más popular y uno de los mejores navegadores web gratuitos que hay. Size = 15.6MB URLSite = http://www.mozilla-europe.org/es/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/15.0.1/win32/es-ES/Firefox%20Setup%2015.0.1.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/17.0.1/win32/es-ES/Firefox%20Setup%2017.0.1.exe [Section.040c] Description = Le navigateur web gratuit le plus populaire et l'un des meilleurs. Size = 15.9MB URLSite = http://www.mozilla-europe.org/fr/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/15.0.1/win32/fr/Firefox%20Setup%2015.0.1.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/17.0.1/win32/fr/Firefox%20Setup%2017.0.1.exe [Section.0413] Description = De meest populaire en een van de beste gratis Web browsers. @@ -38,34 +38,34 @@ URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/14.0. Description = Mest populære og best også gratis nettleserene der ute. Size = 15.6MB URLSite = http://www.mozilla-europe.org/no/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/15.0.1/win32/nb-NO/Firefox%20Setup%2015.0.1.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/17.0.1/win32/nb-NO/Firefox%20Setup%2017.0.1.exe [Section.0415] Description = Najpopularniejsza i jedna z najlepszych darmowych przeglądarek internetowych. Size = 16.5MB URLSite = http://www.mozilla-europe.org/pl/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/15.0.1/win32/pl/Firefox%20Setup%2015.0.1.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/17.0.1/win32/pl/Firefox%20Setup%2017.0.1.exe [Section.0418] Description = Cel mai popular și unul dintre cele mai bune navigatoare web gratuite existente. Size = 16.1Mo URLSite = http://www.mozilla-europe.org/ro/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/15.0.1/win32/ro/Firefox%20Setup%2015.0.1.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/17.0.1/win32/ro/Firefox%20Setup%2017.0.1.exe [Section.0419] Description = Один из самых популярных и лучших бесплатных браузеров. Size = 16.1MB URLSite = http://www.mozilla-europe.org/ru/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/15.0.1/win32/ru/Firefox%20Setup%2015.0.1.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/17.0.1/win32/ru/Firefox%20Setup%2017.0.1.exe [Section.041b] Description = Najpopulárnejší a jeden z najlepších slobodný webových prehliadačov. Size = 16.3MB URLSite = http://www.mozilla-europe.org/sk/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/15.0.1/win32/sk/Firefox%20Setup%2015.0.1.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/17.0.1/win32/sk/Firefox%20Setup%2017.0.1.exe [Section.0422] Description = Найпопулярніший та один з кращих безплатних веб-браузерів. Size = 16.1MB URLSite = http://www.mozilla-europe.org/uk/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/15.0.1/win32/uk/Firefox%20Setup%2015.0.1.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/17.0.1/win32/uk/Firefox%20Setup%2017.0.1.exe diff --git a/reactos/base/applications/rapps/rapps/irfanview.txt b/reactos/base/applications/rapps/rapps/irfanview.txt index b5ac214cb03..e19cf9f477c 100644 --- a/reactos/base/applications/rapps/rapps/irfanview.txt +++ b/reactos/base/applications/rapps/rapps/irfanview.txt @@ -2,13 +2,13 @@ [Section] Name = IrfanView -Version = 4.33 +Version = 4.35 Licence = Freeware (for personal use) Description = Viewer for all kinds of graphics/audio files/video files. Size = 1.46MB Category = 3 URLSite = http://www.irfanview.com/ -URLDownload = http://irfanview.tuwien.ac.at/iview433_setup.exe +URLDownload = http://irfanview.tuwien.ac.at/iview435_setup.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/irfanviewplugins.txt b/reactos/base/applications/rapps/rapps/irfanviewplugins.txt index f1071855767..0f84ba779f0 100644 --- a/reactos/base/applications/rapps/rapps/irfanviewplugins.txt +++ b/reactos/base/applications/rapps/rapps/irfanviewplugins.txt @@ -2,13 +2,13 @@ [Section] Name = IrfanView Plugins -Version = 4.33 +Version = 4.35 Licence = Freeware (for personal use) Description = Additional Plugins for supporting more file types. Size = 8.92MB Category = 3 URLSite = http://www.irfanview.com/ -URLDownload = http://irfanview.tuwien.ac.at/plugins/irfanview_plugins_433_setup.exe +URLDownload = http://irfanview.tuwien.ac.at/plugins/irfanview_plugins_435_setup.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/libreoffice.txt b/reactos/base/applications/rapps/rapps/libreoffice.txt index 0717dfd1051..5ee9a4c0710 100644 --- a/reactos/base/applications/rapps/rapps/libreoffice.txt +++ b/reactos/base/applications/rapps/rapps/libreoffice.txt @@ -2,13 +2,13 @@ [Section] Name = LibreOffice -Version = 3.6.1 +Version = 3.6.4 Licence = LGPL Description = Former called OpenOffice. Open Source Office Suite. Size = 200.0MB Category = 6 URLSite = http://www.documentfoundation.org/ -URLDownload = http://download.documentfoundation.org/libreoffice/stable/3.6.1/win/x86/LibO_3.6.1_Win_x86_install_multi.msi +URLDownload = http://download.documentfoundation.org/libreoffice/stable/3.6.4/win/x86/LibO_3.6.4_Win_x86_install_multi.msi CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/mirandaim.txt b/reactos/base/applications/rapps/rapps/mirandaim.txt index e6b4733730f..f48489096af 100644 --- a/reactos/base/applications/rapps/rapps/mirandaim.txt +++ b/reactos/base/applications/rapps/rapps/mirandaim.txt @@ -2,13 +2,13 @@ [Section] Name = Miranda IM -Version = 0.10.2 +Version = 0.10.9 Licence = GPL Description = Open source multiprotocol instant messaging application - May not work completely. Size = 3.1MB Category = 5 URLSite = http://www.miranda-im.org/ -URLDownload = http://miranda.googlecode.com/files/miranda-im-v0.10.2-unicode.exe +URLDownload = http://miranda.googlecode.com/files/miranda-im-v0.10.9-unicode.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/mirc.txt b/reactos/base/applications/rapps/rapps/mirc.txt index fdad9617028..e5a80706ec0 100644 --- a/reactos/base/applications/rapps/rapps/mirc.txt +++ b/reactos/base/applications/rapps/rapps/mirc.txt @@ -2,13 +2,13 @@ [Section] Name = mIRC 7 -Version = 7.25 +Version = 7.27 Licence = Shareware Description = The most popular client for the Internet Relay Chat (IRC). Size = 1.82MB Category = 5 URLSite = http://www.mirc.com/ -URLDownload = http://download.mirc.com/5/mirc725.exe +URLDownload = http://download.mirc.com/6/mirc727.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/mpc.txt b/reactos/base/applications/rapps/rapps/mpc.txt index 0134630b561..22958be4be7 100644 --- a/reactos/base/applications/rapps/rapps/mpc.txt +++ b/reactos/base/applications/rapps/rapps/mpc.txt @@ -2,13 +2,13 @@ [Section] Name = Media Player Classic Home Cinema -Version = 1.6.3.5818 +Version = 1.6.5.6366 Licence = GPL Description = A media player. Size = 7.0MB Category = 1 URLSite = http://mpc-hc.sourceforge.net/ -URLDownload = http://heanet.dl.sourceforge.net/project/mpc-hc/MPC%20HomeCinema%20-%20Win32/MPC-HC_v1.6.3.5818_x86/MPC-HC.1.6.3.5818.x86.exe +URLDownload = http://heanet.dl.sourceforge.netproject/mpc-hc/MPC%20HomeCinema%20-%20Win32/MPC-HC_v1.6.5.6366_x86/MPC-HC.1.6.5.6366.x86.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/openttd.txt b/reactos/base/applications/rapps/rapps/openttd.txt index 3e0b754d6d2..dc7bd11f948 100644 --- a/reactos/base/applications/rapps/rapps/openttd.txt +++ b/reactos/base/applications/rapps/rapps/openttd.txt @@ -2,13 +2,13 @@ [Section] Name = OpenTTD -Version = 1.2.2 +Version = 1.2.3 Licence = GPL v2 Description = Open Source clone of the "Transport Tycoon Deluxe" game engine. You need a copy of Transport Tycoon. Size = 4.4MB Category = 4 URLSite = http://www.openttd.org/ -URLDownload = http://binaries.openttd.org/releases/1.2.2/openttd-1.2.2-windows-win32.exe +URLDownload = http://binaries.openttd.org/releases/1.2.3/openttd-1.2.3-windows-win32.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/opera.txt b/reactos/base/applications/rapps/rapps/opera.txt index 2a7609f0449..890e9c0956f 100644 --- a/reactos/base/applications/rapps/rapps/opera.txt +++ b/reactos/base/applications/rapps/rapps/opera.txt @@ -2,13 +2,13 @@ [Section] Name = Opera -Version = 12.02 +Version = 12.12 Licence = Freeware Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client. Size = 12.00MB Category = 5 URLSite = http://www.opera.com/ -URLDownload = http://ftp.opera.com/pub/opera/win/1202/int/Opera_1202_int_Setup.exe +URLDownload = http://ftp.opera.com/pub/opera/win/1212/int/Opera_1212_int_Setup.exe CDPath = none [Section.0405] diff --git a/reactos/base/applications/rapps/rapps/rosbe.txt b/reactos/base/applications/rapps/rapps/rosbe.txt index 9050c89e95e..f36b537ae3d 100644 --- a/reactos/base/applications/rapps/rapps/rosbe.txt +++ b/reactos/base/applications/rapps/rapps/rosbe.txt @@ -2,13 +2,13 @@ [Section] Name = ReactOS Build Environment -Version = 2.0 +Version = 2.1 Licence = GPL Description = Allows you to build the ReactOS Source. For more instructions see ReactOS wiki. -Size = 17.8MB +Size = 30.8MB Category = 7 URLSite = http://reactos.org/wiki/Build_Environment -URLDownload = http://heanet.dl.sourceforge.net/project/reactos/RosBE-Windows/i386/2.0/RosBE-2.0.exe +URLDownload = http://heanet.dl.sourceforge.net/project/reactos/RosBE-Windows/i386/2.1/RosBE-2.1.exe CDPath = none [Section.0405] diff --git a/reactos/base/applications/rapps/rapps/scite.txt b/reactos/base/applications/rapps/rapps/scite.txt index 33fb386caa8..df366ac0d4f 100644 --- a/reactos/base/applications/rapps/rapps/scite.txt +++ b/reactos/base/applications/rapps/rapps/scite.txt @@ -2,13 +2,13 @@ [Section] Name = SciTE -Version = 3.2.2 +Version = 3.2.3 Licence = Freeware Description = SciTE is a SCIntilla based Text Editor. Originally built to demonstrate Scintilla, it has grown to be a generally useful editor with facilities for building and running programs. Size = 685kB Category = 7 URLSite = http://www.scintilla.org/ -URLDownload = http://heanet.dl.sourceforge.net/project/scintilla/SciTE/3.2.2/Sc322.exe +URLDownload = http://heanet.dl.sourceforge.net/project/scintilla/SciTE/3.2.3/Sc323.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/seamonkey.txt b/reactos/base/applications/rapps/rapps/seamonkey.txt index 08e3647f22a..b04482c4bdc 100644 --- a/reactos/base/applications/rapps/rapps/seamonkey.txt +++ b/reactos/base/applications/rapps/rapps/seamonkey.txt @@ -2,50 +2,50 @@ [Section] Name = Mozilla SeaMonkey -Version = 2.12 +Version = 2.14.1 Licence = MPL/GPL/LGPL Description = Mozilla Suite is alive. This is the one and only Browser, Mail, Chat, and Composer bundle you will ever need. -Size = 19.0MB +Size = 20.0MB Category = 5 URLSite = http://www.seamonkey-project.org/ -URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.12/win32/en-US/SeaMonkey%20Setup%202.12.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/en-US/SeaMonkey%20Setup%202.14.1.exe CDPath = none [Section.0407] Description = Mozilla Suite lebt. Dies ist das einzige Browser-, Mail-, Chat- and Composerwerkzeug-Bundle welches Sie benötigen. -Size = 19.0MB -URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.12/win32/de/SeaMonkey%20Setup%202.12.exe +Size = 20.0MB +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/de/SeaMonkey%20Setup%202.14.1.exe [Section.040a] Description = La suite de Mozilla está viva. Es el primero y único navegador web, gestor de correo, lector de noticias, Chat y editor HTML que necesitarás. -Size = 18.9MB -URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.12/win32/es-ES/SeaMonkey%20Setup%202.12.exe +Size = 19.9MB +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/es-ES/SeaMonkey%20Setup%202.14.1.exe [Section.040c] Description = La suite Mozilla est en vie. Ceci est le seul et l'unique package navigateur, client mail, client chat et composer dont vous aurez besoin. -Size = 19.2MB -URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.12/win32/fr/SeaMonkey%20Setup%202.12.exe +Size = 20.2MB +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/fr/SeaMonkey%20Setup%202.14.1.exe [Section.0413] Description = Mozilla Suite bundelt alle applicaties voor het Web: Browser, Mail, Chat, Composer. -Size = 19.6MB -URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.11/win32/nl/SeaMonkey%20Setup%202.11.exe +Size = 20.6MB +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/nl/SeaMonkey%20Setup%202.14.1.exe [Section.0415] Description = Pakiet Mozilla żyje. W zestawie: przeglądarka, klient poczty, IRC oraz Edytor HTML - wszystko, czego potrzebujesz. -Size = 19.8MB -URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.12/win32/pl/SeaMonkey%20Setup%202.12.exe +Size = 20.8MB +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/pl/SeaMonkey%20Setup%202.14.1.exe [Section.0418] Description = Suita Mozilla. Acest pachet ce încorporează navigator, poștă electronică, client IRC și editor HTML, acoperind astfel o arie largă de necesități. -Size = 17.59Mo +Size = 20.59Mo [Section.0419] Description = Продолжение Mozilla Suite. Включает браузер, почтовый клиент, IRC-клиент и HTML-редактор. -Size = 19.5MB -URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.12/win32/ru/SeaMonkey%20Setup%202.12.exe +Size = 20.5MB +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/ru/SeaMonkey%20Setup%202.14.1.exe [Section.0422] Description = Продовження Mozilla Suite. Включає в себе браузер, поштовий клієнт, IRC-клієнт та HTML-редактор. -Size = 19.5MB -URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.12/win32/ru/SeaMonkey%20Setup%202.12.exe +Size = 20.5MB +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/ru/SeaMonkey%20Setup%202.14.1.exe diff --git a/reactos/base/applications/rapps/rapps/smplayer.txt b/reactos/base/applications/rapps/rapps/smplayer.txt index b25c37ed6a2..d7d8804ac50 100644 --- a/reactos/base/applications/rapps/rapps/smplayer.txt +++ b/reactos/base/applications/rapps/rapps/smplayer.txt @@ -2,13 +2,13 @@ [Section] Name = SMPlayer -Version = 0.8.0 +Version = 0.8.3 Licence = GPL Description = SMPlayer. Size = 15.7MB Category = 1 URLSite = http://smplayer.sourceforge.net/ -URLDownload = http://freefr.dl.sourceforge.net/project/smplayer/SMPlayer/0.8.0/smplayer-0.8.0-win32.exe +URLDownload = http://freefr.dl.sourceforge.net/project/smplayer/SMPlayer/0.8.3/smplayer-0.8.3-win32.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/sumatrapdf.txt b/reactos/base/applications/rapps/rapps/sumatrapdf.txt index 41939896916..597d37cd1e4 100644 --- a/reactos/base/applications/rapps/rapps/sumatrapdf.txt +++ b/reactos/base/applications/rapps/rapps/sumatrapdf.txt @@ -2,13 +2,13 @@ [Section] Name = SumatraPDF -Version = 2.1.1 +Version = 2.2 Licence = GPLv3 Description = Sumatra PDF is a slim, free, open-source PDF reader. Portable out of the box. -Size = 4.2MB +Size = 4.8MB Category = 6 URLSite = http://blog.kowalczyk.info/software/sumatrapdf/free-pdf-reader.html -URLDownload = https://kjkpub.s3.amazonaws.com/sumatrapdf/rel/SumatraPDF-2.1.1-install.exe +URLDownload = https://kjkpub.s3.amazonaws.com/sumatrapdf/rel/SumatraPDF-2.2-install.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/thunderbird5.txt b/reactos/base/applications/rapps/rapps/thunderbird5.txt index 8f3f05fa88a..c3df57d03ec 100644 --- a/reactos/base/applications/rapps/rapps/thunderbird5.txt +++ b/reactos/base/applications/rapps/rapps/thunderbird5.txt @@ -1,33 +1,33 @@ ; UTF-8 [Section] -Name = Mozilla Thunderbird 15 -Version = 15.0 +Name = Mozilla Thunderbird 17 +Version = 17.0 Licence = MPL/GPL/LGPL Description = The most popular and one of the best free Mail Clients out there. Size = 17.6MB Category = 5 URLSite = http://www.mozilla-europe.org/en/products/thunderbird/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/15.0/win32/en-US/Thunderbird%20Setup%2015.0.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/17.0/win32/en-US/Thunderbird%20Setup%2017.0.exe CDPath = none [Section.0407] Description = Der populärste und einer der besten freien Mail-Clients. Size = 17.5MB URLSite = http://www.mozilla-europe.org/de/products/thunderbird/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/15.0/win32/de/Thunderbird%20Setup%2015.0.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/17.0/win32/de/Thunderbird%20Setup%2017.0.exe [Section.040a] Description = El más popular y uno de los mejores clientes mail que hay. Size = 17.4MB URLSite = http://www.mozilla-europe.org/es/products/thunderbird/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/15.0/win32/es-ES/Thunderbird%20Setup%2015.0.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/17.0/win32/es-ES/Thunderbird%20Setup%2017.0.exe [Section.040c] Description = Le plus populaire et l'un des meilleurs clients mail gratuits disponible. Size = 17.8MB URLSite = http://www.mozilla-europe.org/fr/products/thunderbird/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/15.0/win32/fr/Thunderbird%20Setup%2015.0.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/17.0/win32/fr/Thunderbird%20Setup%2017.0.exe [Section.0413] Description = De meest populaire en een van de beste gratis e-mail-programma's. @@ -39,22 +39,22 @@ URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/1 Description = Najpopularniejszy i jeden z najlepszych darmowych klientów poczty. Size = 18.3MB URLSite = http://www.mozilla-europe.org/pl/products/thunderbird/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/15.0/win32/pl/Thunderbird%20Setup%2015.0.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/17.0/win32/pl/Thunderbird%20Setup%2017.0.exe [Section.0418] Description = Cel mai popular și unul dintre cele mai bune clientele gratuite de poștă electronică. Size = 18.0Mo URLSite = http://www.mozilla-europe.org/ro/products/thunderbird/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/15.0/win32/ro/Thunderbird%20Setup%2015.0.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/17.0/win32/ro/Thunderbird%20Setup%2017.0.exe [Section.0419] Description = Один из самых популярных и лучших бесплатных почтовых клиентов. Size = 17.9MB URLSite = http://www.mozilla-europe.org/ru/products/thunderbird/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/15.0/win32/ru/Thunderbird%20Setup%2015.0.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/17.0/win32/ru/Thunderbird%20Setup%2017.0.exe [Section.0422] Description = Найпопулярніший та один з кращих поштових клієнтів. Size = 17.9MB URLSite = http://www.mozillamessaging.com/uk/thunderbird/ -URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/15.0/win32/uk/Thunderbird%20Setup%2015.0.exe +URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/17.0/win32/uk/Thunderbird%20Setup%2017.0.exe diff --git a/reactos/base/applications/rapps/rapps/ultravnc.txt b/reactos/base/applications/rapps/rapps/ultravnc.txt index 614cb177a47..9121c28ecb5 100644 --- a/reactos/base/applications/rapps/rapps/ultravnc.txt +++ b/reactos/base/applications/rapps/rapps/ultravnc.txt @@ -2,13 +2,13 @@ [Section] Name = UltraVNC -Version = 1.0.9.6.2 +Version = 1.1.8.0 Licence = GPL Description = Open-source VNC client/server. Size = 2.19MB Category = 5 URLSite = http://www.uvnc.com/ -URLDownload = http://www.uvnc.eu/download/10962/UltraVNC_1.0.9.6.2_Setup.exe +URLDownload = http://www.uvnc.eu/download/1180/UltraVNC_1_1_8_X86_Setup.exe CDPath = none [Section.040a] diff --git a/reactos/base/applications/rapps/rapps/utorrent.txt b/reactos/base/applications/rapps/rapps/utorrent.txt index 1ee74872678..2c40d85d54e 100644 --- a/reactos/base/applications/rapps/rapps/utorrent.txt +++ b/reactos/base/applications/rapps/rapps/utorrent.txt @@ -2,13 +2,13 @@ [Section] Name = µTorrent -Version = 3.2 +Version = 3.2.3 Licence = Freeware for non-commercial uses Description = Small and fast BitTorrent Client. -Size = 874.87kB +Size = 946.00kB Category = 5 URLSite = http://www.utorrent.com/ -URLDownload = http://download.utorrent.com/3.2/uTorrent.exe +URLDownload = http://download.utorrent.com/3.2.3/uTorrent.exe CDPath = none diff --git a/reactos/base/applications/rapps/rapps/vlc.txt b/reactos/base/applications/rapps/rapps/vlc.txt index 0331cc79b95..21cdb4e8e30 100644 --- a/reactos/base/applications/rapps/rapps/vlc.txt +++ b/reactos/base/applications/rapps/rapps/vlc.txt @@ -2,13 +2,13 @@ [Section] Name = VLC media player -Version = 2.0.3 +Version = 2.0.5 Licence = GPL Description = A media player. -Size = 21.6MB +Size = 21.9MB Category = 1 URLSite = http://www.videolan.org/vlc/ -URLDownload = http://garr.dl.sourceforge.net/project/vlc/2.0.3/win32/vlc-2.0.3-win32.exe +URLDownload = http://garr.dl.sourceforge.net/project/vlc/2.0.5/win32/vlc-2.0.5-win32.exe CDPath = none [Section.0407] From 39b3d23f4b0c21ebf26601932567d69168c38cd1 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 29 Dec 2012 11:50:56 +0000 Subject: [PATCH 02/96] [SAMSRV] SamrQueryInformationDomain (DomainGeneralInformation/DomainGeneralInformation2): Count the number of Aliases, Groups and Users. svn path=/trunk/; revision=58036 --- reactos/dll/win32/samsrv/samrpc.c | 105 ++++++++++++++++++++++++++++-- 1 file changed, 99 insertions(+), 6 deletions(-) diff --git a/reactos/dll/win32/samsrv/samrpc.c b/reactos/dll/win32/samsrv/samrpc.c index 68b886a7e11..7ec81e198ff 100644 --- a/reactos/dll/win32/samsrv/samrpc.c +++ b/reactos/dll/win32/samsrv/samrpc.c @@ -469,6 +469,7 @@ done: return Status; } + /* Function 7 */ NTSTATUS NTAPI @@ -589,6 +590,45 @@ done: } +static NTSTATUS +SampGetNumberOfAccounts(PSAM_DB_OBJECT DomainObject, + LPCWSTR AccountType, + PULONG Count) +{ + HANDLE AccountKeyHandle = NULL; + HANDLE NamesKeyHandle = NULL; + NTSTATUS Status; + + *Count = 0; + + Status = SampRegOpenKey(DomainObject->KeyHandle, + AccountType, + KEY_READ, + &AccountKeyHandle); + if (!NT_SUCCESS(Status)) + return Status; + + Status = SampRegOpenKey(AccountKeyHandle, + L"Names", + KEY_READ, + &NamesKeyHandle); + if (!NT_SUCCESS(Status)) + goto done; + + Status = SampRegQueryKeyInfo(NamesKeyHandle, + NULL, + Count); +done: + if (NamesKeyHandle != NULL) + SampRegCloseKey(NamesKeyHandle); + + if (AccountKeyHandle != NULL) + SampRegCloseKey(AccountKeyHandle); + + return Status; +} + + static NTSTATUS SampQueryDomainGeneral(PSAM_DB_OBJECT DomainObject, PSAMPR_DOMAIN_INFO_BUFFER *Buffer) @@ -651,9 +691,35 @@ SampQueryDomainGeneral(PSAM_DB_OBJECT DomainObject, goto done; } - InfoBuffer->General.UserCount = 0; /* FIXME */ - InfoBuffer->General.GroupCount = 0; /* FIXME */ - InfoBuffer->General.AliasCount = 0; /* FIXME */ + /* Get the number of Users in the Domain */ + Status = SampGetNumberOfAccounts(DomainObject, + L"Users", + &InfoBuffer->General.UserCount); + if (!NT_SUCCESS(Status)) + { + TRACE("Status 0x%08lx\n", Status); + goto done; + } + + /* Get the number of Groups in the Domain */ + Status = SampGetNumberOfAccounts(DomainObject, + L"Groups", + &InfoBuffer->General.GroupCount); + if (!NT_SUCCESS(Status)) + { + TRACE("Status 0x%08lx\n", Status); + goto done; + } + + /* Get the number of Aliases in the Domain */ + Status = SampGetNumberOfAccounts(DomainObject, + L"Aliases", + &InfoBuffer->General.AliasCount); + if (!NT_SUCCESS(Status)) + { + TRACE("Status 0x%08lx\n", Status); + goto done; + } *Buffer = InfoBuffer; @@ -1036,9 +1102,35 @@ SampQueryDomainGeneral2(PSAM_DB_OBJECT DomainObject, goto done; } - InfoBuffer->General2.I1.UserCount = 0; /* FIXME */ - InfoBuffer->General2.I1.GroupCount = 0; /* FIXME */ - InfoBuffer->General2.I1.AliasCount = 0; /* FIXME */ + /* Get the number of Users in the Domain */ + Status = SampGetNumberOfAccounts(DomainObject, + L"Users", + &InfoBuffer->General2.I1.UserCount); + if (!NT_SUCCESS(Status)) + { + TRACE("Status 0x%08lx\n", Status); + goto done; + } + + /* Get the number of Groups in the Domain */ + Status = SampGetNumberOfAccounts(DomainObject, + L"Groups", + &InfoBuffer->General2.I1.GroupCount); + if (!NT_SUCCESS(Status)) + { + TRACE("Status 0x%08lx\n", Status); + goto done; + } + + /* Get the number of Aliases in the Domain */ + Status = SampGetNumberOfAccounts(DomainObject, + L"Aliases", + &InfoBuffer->General2.I1.AliasCount); + if (!NT_SUCCESS(Status)) + { + TRACE("Status 0x%08lx\n", Status); + goto done; + } *Buffer = InfoBuffer; @@ -1535,6 +1627,7 @@ SamrSetInformationDomain(IN SAMPR_HANDLE DomainHandle, return Status; } + /* Function 10 */ NTSTATUS NTAPI From dfa3ce1995e4877600a0a1ee500143ba573c4dd5 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 29 Dec 2012 12:55:05 +0000 Subject: [PATCH 03/96] [SAMSRV] Fix two incorrect failure checks in the object database code. svn path=/trunk/; revision=58037 --- reactos/dll/win32/samsrv/database.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/samsrv/database.c b/reactos/dll/win32/samsrv/database.c index 95811fb14b9..904208e3b66 100644 --- a/reactos/dll/win32/samsrv/database.c +++ b/reactos/dll/win32/samsrv/database.c @@ -223,7 +223,7 @@ SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject, NewObject->Name = RtlAllocateHeap(RtlGetProcessHeap(), 0, (wcslen(ObjectName) + 1) * sizeof(WCHAR)); - if (NewObject == NULL) + if (NewObject->Name == NULL) { if (MembersKeyHandle != NULL) NtClose(MembersKeyHandle); @@ -374,7 +374,7 @@ SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject, NewObject->Name = RtlAllocateHeap(RtlGetProcessHeap(), 0, (wcslen(ObjectName) + 1) * sizeof(WCHAR)); - if (NewObject == NULL) + if (NewObject->Name == NULL) { if (MembersKeyHandle != NULL) NtClose(MembersKeyHandle); From e0021330643bfbe609d8b8814ee9f350941e4af3 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 29 Dec 2012 14:44:42 +0000 Subject: [PATCH 04/96] [SAMSRV] Store an objects relative id in the database object. This will later be used to protect pre-defined objects from being deleted. svn path=/trunk/; revision=58038 --- reactos/dll/win32/samsrv/database.c | 4 ++++ reactos/dll/win32/samsrv/samrpc.c | 10 ++++++++++ reactos/dll/win32/samsrv/samsrv.h | 3 +++ 3 files changed, 17 insertions(+) diff --git a/reactos/dll/win32/samsrv/database.c b/reactos/dll/win32/samsrv/database.c index 904208e3b66..59b99697dad 100644 --- a/reactos/dll/win32/samsrv/database.c +++ b/reactos/dll/win32/samsrv/database.c @@ -97,6 +97,7 @@ NTSTATUS SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject, IN LPWSTR ContainerName, IN LPWSTR ObjectName, + IN ULONG RelativeId, IN SAM_DB_OBJECT_TYPE ObjectType, IN ACCESS_MASK DesiredAccess, OUT PSAM_DB_OBJECT *DbObject) @@ -240,6 +241,7 @@ SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject, NewObject->Access = DesiredAccess; NewObject->KeyHandle = ObjectKeyHandle; NewObject->MembersKeyHandle = MembersKeyHandle; + NewObject->RelativeId = RelativeId; NewObject->ParentObject = ParentObject; if (ParentObject != NULL) @@ -255,6 +257,7 @@ NTSTATUS SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject, IN LPWSTR ContainerName, IN LPWSTR ObjectName, + IN ULONG RelativeId, IN SAM_DB_OBJECT_TYPE ObjectType, IN ACCESS_MASK DesiredAccess, OUT PSAM_DB_OBJECT *DbObject) @@ -390,6 +393,7 @@ SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject, NewObject->Access = DesiredAccess; NewObject->KeyHandle = ObjectKeyHandle; NewObject->MembersKeyHandle = MembersKeyHandle; + NewObject->RelativeId = RelativeId; NewObject->ParentObject = ParentObject; if (ParentObject != NULL) diff --git a/reactos/dll/win32/samsrv/samrpc.c b/reactos/dll/win32/samsrv/samrpc.c index 7ec81e198ff..edb6dc2ce4f 100644 --- a/reactos/dll/win32/samsrv/samrpc.c +++ b/reactos/dll/win32/samsrv/samrpc.c @@ -88,6 +88,7 @@ SamrConnect(IN PSAMPR_SERVER_NAME ServerName, Status = SampOpenDbObject(NULL, NULL, L"SAM", + 0, SamDbServerObject, DesiredAccess, &ServerObject); @@ -509,6 +510,7 @@ SamrOpenDomain(IN SAMPR_HANDLE ServerHandle, Status = SampOpenDbObject(ServerObject, L"Domains", L"Builtin", + 0, SamDbDomainObject, DesiredAccess, &DomainObject); @@ -524,6 +526,7 @@ SamrOpenDomain(IN SAMPR_HANDLE ServerHandle, Status = SampOpenDbObject(ServerObject, L"Domains", L"Account", + 0, SamDbDomainObject, DesiredAccess, &DomainObject); @@ -1709,6 +1712,7 @@ SamrCreateGroupInDomain(IN SAMPR_HANDLE DomainHandle, Status = SampCreateDbObject(DomainObject, L"Groups", szRid, + ulRid, SamDbGroupObject, DesiredAccess, &GroupObject); @@ -2074,6 +2078,7 @@ SamrCreateUserInDomain(IN SAMPR_HANDLE DomainHandle, Status = SampCreateDbObject(DomainObject, L"Users", szRid, + ulRid, SamDbUserObject, DesiredAccess, &UserObject); @@ -2527,6 +2532,7 @@ SamrCreateAliasInDomain(IN SAMPR_HANDLE DomainHandle, Status = SampCreateDbObject(DomainObject, L"Aliases", szRid, + ulRid, SamDbAliasObject, DesiredAccess, &AliasObject); @@ -3464,6 +3470,7 @@ SamrOpenGroup(IN SAMPR_HANDLE DomainHandle, Status = SampOpenDbObject(DomainObject, L"Groups", szRid, + GroupId, SamDbGroupObject, DesiredAccess, &GroupObject); @@ -3911,6 +3918,7 @@ SamrOpenAlias(IN SAMPR_HANDLE DomainHandle, Status = SampOpenDbObject(DomainObject, L"Aliases", szRid, + AliasId, SamDbAliasObject, DesiredAccess, &AliasObject); @@ -4575,6 +4583,7 @@ SamrOpenUser(IN SAMPR_HANDLE DomainHandle, Status = SampOpenDbObject(DomainObject, L"Users", szRid, + UserId, SamDbUserObject, DesiredAccess, &UserObject); @@ -6335,6 +6344,7 @@ SamrCreateUser2InDomain(IN SAMPR_HANDLE DomainHandle, Status = SampCreateDbObject(DomainObject, L"Users", szRid, + ulRid, SamDbUserObject, DesiredAccess, &UserObject); diff --git a/reactos/dll/win32/samsrv/samsrv.h b/reactos/dll/win32/samsrv/samsrv.h index c7e54add732..609a4029bd7 100644 --- a/reactos/dll/win32/samsrv/samsrv.h +++ b/reactos/dll/win32/samsrv/samsrv.h @@ -46,6 +46,7 @@ typedef struct _SAM_DB_OBJECT LPWSTR Name; HANDLE KeyHandle; HANDLE MembersKeyHandle; // only used by Aliases and Groups + ULONG RelativeId; struct _SAM_DB_OBJECT *ParentObject; } SAM_DB_OBJECT, *PSAM_DB_OBJECT; @@ -117,6 +118,7 @@ NTSTATUS SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject, IN LPWSTR ContainerName, IN LPWSTR ObjectName, + IN ULONG RelativeId, IN SAM_DB_OBJECT_TYPE ObjectType, IN ACCESS_MASK DesiredAccess, OUT PSAM_DB_OBJECT *DbObject); @@ -125,6 +127,7 @@ NTSTATUS SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject, IN LPWSTR ContainerName, IN LPWSTR ObjectName, + IN ULONG RelativeId, IN SAM_DB_OBJECT_TYPE ObjectType, IN ACCESS_MASK DesiredAccess, OUT PSAM_DB_OBJECT *DbObject); From 92a7f3c0f5498f9f391926ab4816d3154e275a16 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sat, 29 Dec 2012 15:18:09 +0000 Subject: [PATCH 05/96] [WIDL] - Apply Wine commit "widl: Print large enum constants in hex." by Alexandre Julliard (756d33ddae316c71b1241e7c8684c07cd82b9e05) - Remove some minor differences to Wine svn path=/trunk/; revision=58039 --- reactos/tools/widl/header.c | 3 +- reactos/tools/widl/parser.tab.c | 439 ++++++++++++++++---------------- reactos/tools/widl/parser.y | 5 +- reactos/tools/widl/proxy.c | 2 +- reactos/tools/widl/typegen.c | 1 - 5 files changed, 228 insertions(+), 222 deletions(-) diff --git a/reactos/tools/widl/header.c b/reactos/tools/widl/header.c index 98301d2a52d..2f275c7ac24 100644 --- a/reactos/tools/widl/header.c +++ b/reactos/tools/widl/header.c @@ -1223,7 +1223,8 @@ static void write_com_interface_end(FILE *header, type_t *iface) write_method_macro(header, dispinterface ? type_iface_get_inherit(iface) : iface, iface->name); fprintf(header, "#else\n"); write_inline_wrappers(header, dispinterface ? type_iface_get_inherit(iface) : iface, iface->name); - fprintf(header, "#endif\n"); fprintf(header, "#endif\n"); + fprintf(header, "#endif\n"); + fprintf(header, "#endif\n"); fprintf(header, "\n"); fprintf(header, "#endif\n"); fprintf(header, "\n"); diff --git a/reactos/tools/widl/parser.tab.c b/reactos/tools/widl/parser.tab.c index 65c3c227e1d..333f094f945 100644 --- a/reactos/tools/widl/parser.tab.c +++ b/reactos/tools/widl/parser.tab.c @@ -960,28 +960,28 @@ static const yytype_uint16 yyrline[] = 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 585, 586, 591, 592, 593, 594, 597, - 598, 601, 605, 611, 612, 613, 616, 620, 629, 633, - 638, 641, 642, 645, 646, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, - 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, - 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, - 684, 685, 686, 688, 690, 691, 694, 695, 698, 704, - 710, 711, 714, 719, 726, 727, 730, 731, 735, 736, - 739, 743, 749, 757, 761, 766, 767, 770, 771, 772, - 775, 777, 780, 781, 782, 783, 784, 785, 786, 787, - 788, 789, 790, 793, 794, 797, 798, 799, 800, 801, - 802, 803, 804, 807, 808, 816, 822, 826, 827, 831, - 834, 835, 838, 847, 848, 851, 852, 855, 861, 867, - 868, 871, 872, 875, 885, 892, 898, 902, 903, 906, - 907, 910, 915, 922, 923, 924, 928, 932, 935, 936, - 939, 940, 944, 945, 949, 950, 951, 955, 957, 959, - 963, 964, 965, 966, 974, 976, 978, 983, 985, 990, - 991, 996, 997, 998, 999, 1004, 1013, 1015, 1016, 1021, - 1023, 1027, 1028, 1035, 1036, 1037, 1038, 1039, 1044, 1052, - 1053, 1056, 1057, 1060, 1067, 1068, 1073, 1074, 1078, 1079, - 1080, 1081, 1082, 1086, 1087, 1088, 1091, 1094, 1095, 1096, - 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1106, 1112, 1114, - 1120, 1121 + 598, 601, 605, 611, 612, 613, 616, 620, 632, 636, + 641, 644, 645, 648, 649, 652, 653, 654, 655, 656, + 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, + 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, + 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, + 687, 688, 689, 691, 693, 694, 697, 698, 701, 707, + 713, 714, 717, 722, 729, 730, 733, 734, 738, 739, + 742, 746, 752, 760, 764, 769, 770, 773, 774, 775, + 778, 780, 783, 784, 785, 786, 787, 788, 789, 790, + 791, 792, 793, 796, 797, 800, 801, 802, 803, 804, + 805, 806, 807, 810, 811, 819, 825, 829, 830, 834, + 837, 838, 841, 850, 851, 854, 855, 858, 864, 870, + 871, 874, 875, 878, 888, 895, 901, 905, 906, 909, + 910, 913, 918, 925, 926, 927, 931, 935, 938, 939, + 942, 943, 947, 948, 952, 953, 954, 958, 960, 962, + 966, 967, 968, 969, 977, 979, 981, 986, 988, 993, + 994, 999, 1000, 1001, 1002, 1007, 1016, 1018, 1019, 1024, + 1026, 1030, 1031, 1038, 1039, 1040, 1041, 1042, 1047, 1055, + 1056, 1059, 1060, 1063, 1070, 1071, 1076, 1077, 1081, 1082, + 1083, 1084, 1085, 1089, 1090, 1091, 1094, 1097, 1098, 1099, + 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1109, 1115, 1117, + 1123, 1124 }; #endif @@ -4033,7 +4033,10 @@ yyreduce: { if (!(yyvsp[(3) - (3)].var)->eval) { var_t *last = LIST_ENTRY( list_tail((yyval.var_list)), var_t, entry ); - (yyvsp[(3) - (3)].var)->eval = make_exprl(EXPR_NUM, last->eval->cval + 1); + enum expr_type type = EXPR_NUM; + if (last->eval->type == EXPR_HEXNUM) type = EXPR_HEXNUM; + if (last->eval->cval + 1 < 0) type = EXPR_HEXNUM; + (yyvsp[(3) - (3)].var)->eval = make_exprl(type, last->eval->cval + 1); } (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(3) - (3)].var) ); } @@ -4042,7 +4045,7 @@ yyreduce: case 178: /* Line 1806 of yacc.c */ -#line 629 "parser.y" +#line 632 "parser.y" { (yyval.var) = reg_const((yyvsp[(1) - (3)].var)); (yyval.var)->eval = (yyvsp[(3) - (3)].expr); (yyval.var)->type = type_new_int(TYPE_BASIC_INT, 0); @@ -4052,7 +4055,7 @@ yyreduce: case 179: /* Line 1806 of yacc.c */ -#line 633 "parser.y" +#line 636 "parser.y" { (yyval.var) = reg_const((yyvsp[(1) - (1)].var)); (yyval.var)->type = type_new_int(TYPE_BASIC_INT, 0); } @@ -4061,336 +4064,336 @@ yyreduce: case 180: /* Line 1806 of yacc.c */ -#line 638 "parser.y" +#line 641 "parser.y" { (yyval.type) = type_new_enum((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); } break; case 181: /* Line 1806 of yacc.c */ -#line 641 "parser.y" +#line 644 "parser.y" { (yyval.expr_list) = append_expr( NULL, (yyvsp[(1) - (1)].expr) ); } break; case 182: /* Line 1806 of yacc.c */ -#line 642 "parser.y" +#line 645 "parser.y" { (yyval.expr_list) = append_expr( (yyvsp[(1) - (3)].expr_list), (yyvsp[(3) - (3)].expr) ); } break; case 183: /* Line 1806 of yacc.c */ -#line 645 "parser.y" +#line 648 "parser.y" { (yyval.expr) = make_expr(EXPR_VOID); } break; case 185: /* Line 1806 of yacc.c */ -#line 649 "parser.y" +#line 652 "parser.y" { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[(1) - (1)].num)); } break; case 186: /* Line 1806 of yacc.c */ -#line 650 "parser.y" +#line 653 "parser.y" { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[(1) - (1)].num)); } break; case 187: /* Line 1806 of yacc.c */ -#line 651 "parser.y" +#line 654 "parser.y" { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[(1) - (1)].dbl)); } break; case 188: /* Line 1806 of yacc.c */ -#line 652 "parser.y" +#line 655 "parser.y" { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); } break; case 189: /* Line 1806 of yacc.c */ -#line 653 "parser.y" +#line 656 "parser.y" { (yyval.expr) = make_exprl(EXPR_NUM, 0); } break; case 190: /* Line 1806 of yacc.c */ -#line 654 "parser.y" +#line 657 "parser.y" { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); } break; case 191: /* Line 1806 of yacc.c */ -#line 655 "parser.y" +#line 658 "parser.y" { (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[(1) - (1)].str)); } break; case 192: /* Line 1806 of yacc.c */ -#line 656 "parser.y" +#line 659 "parser.y" { (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[(1) - (1)].str)); } break; case 193: /* Line 1806 of yacc.c */ -#line 657 "parser.y" +#line 660 "parser.y" { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[(1) - (1)].str)); } break; case 194: /* Line 1806 of yacc.c */ -#line 658 "parser.y" +#line 661 "parser.y" { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[(1) - (1)].str)); } break; case 195: /* Line 1806 of yacc.c */ -#line 659 "parser.y" +#line 662 "parser.y" { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[(1) - (5)].expr), (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].expr)); } break; case 196: /* Line 1806 of yacc.c */ -#line 660 "parser.y" +#line 663 "parser.y" { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 197: /* Line 1806 of yacc.c */ -#line 661 "parser.y" +#line 664 "parser.y" { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 198: /* Line 1806 of yacc.c */ -#line 662 "parser.y" +#line 665 "parser.y" { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 199: /* Line 1806 of yacc.c */ -#line 663 "parser.y" +#line 666 "parser.y" { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 200: /* Line 1806 of yacc.c */ -#line 664 "parser.y" +#line 667 "parser.y" { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 201: /* Line 1806 of yacc.c */ -#line 665 "parser.y" +#line 668 "parser.y" { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 202: /* Line 1806 of yacc.c */ -#line 666 "parser.y" +#line 669 "parser.y" { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 203: /* Line 1806 of yacc.c */ -#line 667 "parser.y" +#line 670 "parser.y" { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 204: /* Line 1806 of yacc.c */ -#line 668 "parser.y" +#line 671 "parser.y" { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 205: /* Line 1806 of yacc.c */ -#line 669 "parser.y" +#line 672 "parser.y" { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 206: /* Line 1806 of yacc.c */ -#line 670 "parser.y" +#line 673 "parser.y" { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 207: /* Line 1806 of yacc.c */ -#line 671 "parser.y" +#line 674 "parser.y" { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 208: /* Line 1806 of yacc.c */ -#line 672 "parser.y" +#line 675 "parser.y" { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 209: /* Line 1806 of yacc.c */ -#line 673 "parser.y" +#line 676 "parser.y" { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 210: /* Line 1806 of yacc.c */ -#line 674 "parser.y" +#line 677 "parser.y" { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 211: /* Line 1806 of yacc.c */ -#line 675 "parser.y" +#line 678 "parser.y" { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 212: /* Line 1806 of yacc.c */ -#line 676 "parser.y" +#line 679 "parser.y" { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 213: /* Line 1806 of yacc.c */ -#line 677 "parser.y" +#line 680 "parser.y" { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } break; case 214: /* Line 1806 of yacc.c */ -#line 678 "parser.y" +#line 681 "parser.y" { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[(2) - (2)].expr)); } break; case 215: /* Line 1806 of yacc.c */ -#line 679 "parser.y" +#line 682 "parser.y" { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[(2) - (2)].expr)); } break; case 216: /* Line 1806 of yacc.c */ -#line 680 "parser.y" +#line 683 "parser.y" { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[(2) - (2)].expr)); } break; case 217: /* Line 1806 of yacc.c */ -#line 681 "parser.y" +#line 684 "parser.y" { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[(2) - (2)].expr)); } break; case 218: /* Line 1806 of yacc.c */ -#line 682 "parser.y" +#line 685 "parser.y" { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[(2) - (2)].expr)); } break; case 219: /* Line 1806 of yacc.c */ -#line 683 "parser.y" +#line 686 "parser.y" { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[(2) - (2)].expr)); } break; case 220: /* Line 1806 of yacc.c */ -#line 684 "parser.y" +#line 687 "parser.y" { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[(1) - (3)].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[(3) - (3)].str))); } break; case 221: /* Line 1806 of yacc.c */ -#line 685 "parser.y" +#line 688 "parser.y" { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[(1) - (3)].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[(3) - (3)].str))); } break; case 222: /* Line 1806 of yacc.c */ -#line 687 "parser.y" +#line 690 "parser.y" { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[(2) - (5)].declspec), (yyvsp[(3) - (5)].declarator), 0), (yyvsp[(5) - (5)].expr)); free((yyvsp[(2) - (5)].declspec)); free((yyvsp[(3) - (5)].declarator)); } break; case 223: /* Line 1806 of yacc.c */ -#line 689 "parser.y" +#line 692 "parser.y" { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[(3) - (5)].declspec), (yyvsp[(4) - (5)].declarator), 0), NULL); free((yyvsp[(3) - (5)].declspec)); free((yyvsp[(4) - (5)].declarator)); } break; case 224: /* Line 1806 of yacc.c */ -#line 690 "parser.y" +#line 693 "parser.y" { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[(1) - (4)].expr), (yyvsp[(3) - (4)].expr)); } break; case 225: /* Line 1806 of yacc.c */ -#line 691 "parser.y" +#line 694 "parser.y" { (yyval.expr) = (yyvsp[(2) - (3)].expr); } break; case 226: /* Line 1806 of yacc.c */ -#line 694 "parser.y" +#line 697 "parser.y" { (yyval.expr_list) = append_expr( NULL, (yyvsp[(1) - (1)].expr) ); } break; case 227: /* Line 1806 of yacc.c */ -#line 695 "parser.y" +#line 698 "parser.y" { (yyval.expr_list) = append_expr( (yyvsp[(1) - (3)].expr_list), (yyvsp[(3) - (3)].expr) ); } break; case 228: /* Line 1806 of yacc.c */ -#line 698 "parser.y" +#line 701 "parser.y" { (yyval.expr) = (yyvsp[(1) - (1)].expr); if (!(yyval.expr)->is_const) error_loc("expression is not an integer constant\n"); @@ -4400,7 +4403,7 @@ yyreduce: case 229: /* Line 1806 of yacc.c */ -#line 704 "parser.y" +#line 707 "parser.y" { (yyval.expr) = (yyvsp[(1) - (1)].expr); if (!(yyval.expr)->is_const && (yyval.expr)->type != EXPR_STRLIT && (yyval.expr)->type != EXPR_WSTRLIT) error_loc("expression is not constant\n"); @@ -4410,21 +4413,21 @@ yyreduce: case 230: /* Line 1806 of yacc.c */ -#line 710 "parser.y" +#line 713 "parser.y" { (yyval.var_list) = NULL; } break; case 231: /* Line 1806 of yacc.c */ -#line 711 "parser.y" +#line 714 "parser.y" { (yyval.var_list) = append_var_list((yyvsp[(1) - (2)].var_list), (yyvsp[(2) - (2)].var_list)); } break; case 232: /* Line 1806 of yacc.c */ -#line 715 "parser.y" +#line 718 "parser.y" { const char *first = LIST_ENTRY(list_head((yyvsp[(3) - (4)].declarator_list)), declarator_t, entry)->var->name; check_field_attrs(first, (yyvsp[(1) - (4)].attr_list)); (yyval.var_list) = set_var_types((yyvsp[(1) - (4)].attr_list), (yyvsp[(2) - (4)].declspec), (yyvsp[(3) - (4)].declarator_list)); @@ -4434,7 +4437,7 @@ yyreduce: case 233: /* Line 1806 of yacc.c */ -#line 719 "parser.y" +#line 722 "parser.y" { var_t *v = make_var(NULL); v->type = (yyvsp[(2) - (3)].type); v->attrs = (yyvsp[(1) - (3)].attr_list); (yyval.var_list) = append_var(NULL, v); @@ -4444,49 +4447,49 @@ yyreduce: case 234: /* Line 1806 of yacc.c */ -#line 726 "parser.y" +#line 729 "parser.y" { (yyval.var) = (yyvsp[(1) - (2)].var); } break; case 235: /* Line 1806 of yacc.c */ -#line 727 "parser.y" +#line 730 "parser.y" { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[(1) - (2)].attr_list); } break; case 236: /* Line 1806 of yacc.c */ -#line 730 "parser.y" +#line 733 "parser.y" { (yyval.var_list) = NULL; } break; case 237: /* Line 1806 of yacc.c */ -#line 731 "parser.y" +#line 734 "parser.y" { (yyval.var_list) = append_var( (yyvsp[(1) - (2)].var_list), (yyvsp[(2) - (2)].var) ); } break; case 238: /* Line 1806 of yacc.c */ -#line 735 "parser.y" +#line 738 "parser.y" { (yyval.var) = (yyvsp[(1) - (2)].var); } break; case 239: /* Line 1806 of yacc.c */ -#line 736 "parser.y" +#line 739 "parser.y" { (yyval.var) = NULL; } break; case 240: /* Line 1806 of yacc.c */ -#line 739 "parser.y" +#line 742 "parser.y" { (yyval.var) = declare_var(check_field_attrs((yyvsp[(3) - (3)].declarator)->var->name, (yyvsp[(1) - (3)].attr_list)), (yyvsp[(2) - (3)].declspec), (yyvsp[(3) - (3)].declarator), FALSE); free((yyvsp[(3) - (3)].declarator)); @@ -4496,7 +4499,7 @@ yyreduce: case 241: /* Line 1806 of yacc.c */ -#line 743 "parser.y" +#line 746 "parser.y" { var_t *v = make_var(NULL); v->type = (yyvsp[(2) - (2)].type); v->attrs = (yyvsp[(1) - (2)].attr_list); (yyval.var) = v; @@ -4506,7 +4509,7 @@ yyreduce: case 242: /* Line 1806 of yacc.c */ -#line 749 "parser.y" +#line 752 "parser.y" { (yyval.var) = (yyvsp[(1) - (1)].var); if (type_get_type((yyval.var)->type) != TYPE_FUNCTION) error_loc("only methods may be declared inside the methods section of a dispinterface\n"); @@ -4517,7 +4520,7 @@ yyreduce: case 243: /* Line 1806 of yacc.c */ -#line 758 "parser.y" +#line 761 "parser.y" { (yyval.var) = declare_var((yyvsp[(1) - (3)].attr_list), (yyvsp[(2) - (3)].declspec), (yyvsp[(3) - (3)].declarator), FALSE); free((yyvsp[(3) - (3)].declarator)); } @@ -4526,7 +4529,7 @@ yyreduce: case 244: /* Line 1806 of yacc.c */ -#line 761 "parser.y" +#line 764 "parser.y" { (yyval.var) = declare_var(NULL, (yyvsp[(1) - (2)].declspec), (yyvsp[(2) - (2)].declarator), FALSE); free((yyvsp[(2) - (2)].declarator)); } @@ -4535,182 +4538,182 @@ yyreduce: case 245: /* Line 1806 of yacc.c */ -#line 766 "parser.y" +#line 769 "parser.y" { (yyval.var) = NULL; } break; case 247: /* Line 1806 of yacc.c */ -#line 770 "parser.y" +#line 773 "parser.y" { (yyval.str) = NULL; } break; case 248: /* Line 1806 of yacc.c */ -#line 771 "parser.y" +#line 774 "parser.y" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 249: /* Line 1806 of yacc.c */ -#line 772 "parser.y" +#line 775 "parser.y" { (yyval.str) = (yyvsp[(1) - (1)].str); } break; case 250: /* Line 1806 of yacc.c */ -#line 775 "parser.y" +#line 778 "parser.y" { (yyval.var) = make_var((yyvsp[(1) - (1)].str)); } break; case 251: /* Line 1806 of yacc.c */ -#line 777 "parser.y" +#line 780 "parser.y" { (yyval.var) = make_var((yyvsp[(1) - (1)].str)); } break; case 252: /* Line 1806 of yacc.c */ -#line 780 "parser.y" +#line 783 "parser.y" { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); } break; case 253: /* Line 1806 of yacc.c */ -#line 781 "parser.y" +#line 784 "parser.y" { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); } break; case 255: /* Line 1806 of yacc.c */ -#line 783 "parser.y" +#line 786 "parser.y" { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[(2) - (2)].type)), -1); } break; case 256: /* Line 1806 of yacc.c */ -#line 784 "parser.y" +#line 787 "parser.y" { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[(2) - (2)].type)), 1); } break; case 257: /* Line 1806 of yacc.c */ -#line 785 "parser.y" +#line 788 "parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); } break; case 258: /* Line 1806 of yacc.c */ -#line 786 "parser.y" +#line 789 "parser.y" { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); } break; case 259: /* Line 1806 of yacc.c */ -#line 787 "parser.y" +#line 790 "parser.y" { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); } break; case 260: /* Line 1806 of yacc.c */ -#line 788 "parser.y" +#line 791 "parser.y" { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); } break; case 261: /* Line 1806 of yacc.c */ -#line 789 "parser.y" +#line 792 "parser.y" { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); } break; case 262: /* Line 1806 of yacc.c */ -#line 790 "parser.y" +#line 793 "parser.y" { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); } break; case 265: /* Line 1806 of yacc.c */ -#line 797 "parser.y" +#line 800 "parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); } break; case 266: /* Line 1806 of yacc.c */ -#line 798 "parser.y" +#line 801 "parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); } break; case 267: /* Line 1806 of yacc.c */ -#line 799 "parser.y" +#line 802 "parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); } break; case 268: /* Line 1806 of yacc.c */ -#line 800 "parser.y" +#line 803 "parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); } break; case 269: /* Line 1806 of yacc.c */ -#line 801 "parser.y" +#line 804 "parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); } break; case 270: /* Line 1806 of yacc.c */ -#line 802 "parser.y" +#line 805 "parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); } break; case 271: /* Line 1806 of yacc.c */ -#line 803 "parser.y" +#line 806 "parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); } break; case 272: /* Line 1806 of yacc.c */ -#line 804 "parser.y" +#line 807 "parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); } break; case 273: /* Line 1806 of yacc.c */ -#line 807 "parser.y" +#line 810 "parser.y" { (yyval.type) = type_new_coclass((yyvsp[(2) - (2)].str)); } break; case 274: /* Line 1806 of yacc.c */ -#line 808 "parser.y" +#line 811 "parser.y" { (yyval.type) = find_type((yyvsp[(2) - (2)].str), 0); if (type_get_type_detect_alias((yyval.type)) != TYPE_COCLASS) error_loc("%s was not declared a coclass at %s:%d\n", @@ -4722,7 +4725,7 @@ yyreduce: case 275: /* Line 1806 of yacc.c */ -#line 816 "parser.y" +#line 819 "parser.y" { (yyval.type) = (yyvsp[(2) - (2)].type); check_def((yyval.type)); (yyval.type)->attrs = check_coclass_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list)); @@ -4732,49 +4735,49 @@ yyreduce: case 276: /* Line 1806 of yacc.c */ -#line 823 "parser.y" +#line 826 "parser.y" { (yyval.type) = type_coclass_define((yyvsp[(1) - (5)].type), (yyvsp[(3) - (5)].ifref_list)); } break; case 277: /* Line 1806 of yacc.c */ -#line 826 "parser.y" +#line 829 "parser.y" { (yyval.ifref_list) = NULL; } break; case 278: /* Line 1806 of yacc.c */ -#line 827 "parser.y" +#line 830 "parser.y" { (yyval.ifref_list) = append_ifref( (yyvsp[(1) - (2)].ifref_list), (yyvsp[(2) - (2)].ifref) ); } break; case 279: /* Line 1806 of yacc.c */ -#line 831 "parser.y" +#line 834 "parser.y" { (yyval.ifref) = make_ifref((yyvsp[(2) - (2)].type)); (yyval.ifref)->attrs = (yyvsp[(1) - (2)].attr_list); } break; case 280: /* Line 1806 of yacc.c */ -#line 834 "parser.y" +#line 837 "parser.y" { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); } break; case 281: /* Line 1806 of yacc.c */ -#line 835 "parser.y" +#line 838 "parser.y" { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); } break; case 282: /* Line 1806 of yacc.c */ -#line 838 "parser.y" +#line 841 "parser.y" { attr_t *attrs; (yyval.type) = (yyvsp[(2) - (2)].type); check_def((yyval.type)); @@ -4787,35 +4790,35 @@ yyreduce: case 283: /* Line 1806 of yacc.c */ -#line 847 "parser.y" +#line 850 "parser.y" { (yyval.var_list) = NULL; } break; case 284: /* Line 1806 of yacc.c */ -#line 848 "parser.y" +#line 851 "parser.y" { (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(2) - (3)].var) ); } break; case 285: /* Line 1806 of yacc.c */ -#line 851 "parser.y" +#line 854 "parser.y" { (yyval.var_list) = NULL; } break; case 286: /* Line 1806 of yacc.c */ -#line 852 "parser.y" +#line 855 "parser.y" { (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(2) - (3)].var) ); } break; case 287: /* Line 1806 of yacc.c */ -#line 858 "parser.y" +#line 861 "parser.y" { (yyval.type) = (yyvsp[(1) - (5)].type); type_dispinterface_define((yyval.type), (yyvsp[(3) - (5)].var_list), (yyvsp[(4) - (5)].var_list)); } @@ -4824,7 +4827,7 @@ yyreduce: case 288: /* Line 1806 of yacc.c */ -#line 862 "parser.y" +#line 865 "parser.y" { (yyval.type) = (yyvsp[(1) - (5)].type); type_dispinterface_define_from_iface((yyval.type), (yyvsp[(3) - (5)].type)); } @@ -4833,35 +4836,35 @@ yyreduce: case 289: /* Line 1806 of yacc.c */ -#line 867 "parser.y" +#line 870 "parser.y" { (yyval.type) = NULL; } break; case 290: /* Line 1806 of yacc.c */ -#line 868 "parser.y" +#line 871 "parser.y" { (yyval.type) = find_type_or_error2((yyvsp[(2) - (2)].str), 0); } break; case 291: /* Line 1806 of yacc.c */ -#line 871 "parser.y" +#line 874 "parser.y" { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); } break; case 292: /* Line 1806 of yacc.c */ -#line 872 "parser.y" +#line 875 "parser.y" { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); } break; case 293: /* Line 1806 of yacc.c */ -#line 875 "parser.y" +#line 878 "parser.y" { (yyval.ifinfo).interface = (yyvsp[(2) - (2)].type); (yyval.ifinfo).old_pointer_default = pointer_default; if (is_attr((yyvsp[(1) - (2)].attr_list), ATTR_POINTERDEFAULT)) @@ -4875,7 +4878,7 @@ yyreduce: case 294: /* Line 1806 of yacc.c */ -#line 886 "parser.y" +#line 889 "parser.y" { (yyval.type) = (yyvsp[(1) - (6)].ifinfo).interface; type_interface_define((yyval.type), (yyvsp[(2) - (6)].type), (yyvsp[(4) - (6)].stmt_list)); pointer_default = (yyvsp[(1) - (6)].ifinfo).old_pointer_default; @@ -4885,7 +4888,7 @@ yyreduce: case 295: /* Line 1806 of yacc.c */ -#line 894 "parser.y" +#line 897 "parser.y" { (yyval.type) = (yyvsp[(1) - (8)].ifinfo).interface; type_interface_define((yyval.type), find_type_or_error2((yyvsp[(3) - (8)].str), 0), (yyvsp[(6) - (8)].stmt_list)); pointer_default = (yyvsp[(1) - (8)].ifinfo).old_pointer_default; @@ -4895,42 +4898,42 @@ yyreduce: case 296: /* Line 1806 of yacc.c */ -#line 898 "parser.y" +#line 901 "parser.y" { (yyval.type) = (yyvsp[(1) - (2)].type); } break; case 297: /* Line 1806 of yacc.c */ -#line 902 "parser.y" +#line 905 "parser.y" { (yyval.type) = (yyvsp[(1) - (2)].type); } break; case 298: /* Line 1806 of yacc.c */ -#line 903 "parser.y" +#line 906 "parser.y" { (yyval.type) = (yyvsp[(1) - (2)].type); } break; case 299: /* Line 1806 of yacc.c */ -#line 906 "parser.y" +#line 909 "parser.y" { (yyval.type) = type_new_module((yyvsp[(2) - (2)].str)); } break; case 300: /* Line 1806 of yacc.c */ -#line 907 "parser.y" +#line 910 "parser.y" { (yyval.type) = type_new_module((yyvsp[(2) - (2)].str)); } break; case 301: /* Line 1806 of yacc.c */ -#line 910 "parser.y" +#line 913 "parser.y" { (yyval.type) = (yyvsp[(2) - (2)].type); (yyval.type)->attrs = check_module_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list)); } @@ -4939,7 +4942,7 @@ yyreduce: case 302: /* Line 1806 of yacc.c */ -#line 916 "parser.y" +#line 919 "parser.y" { (yyval.type) = (yyvsp[(1) - (5)].type); type_module_define((yyval.type), (yyvsp[(3) - (5)].stmt_list)); } @@ -4948,105 +4951,105 @@ yyreduce: case 303: /* Line 1806 of yacc.c */ -#line 922 "parser.y" +#line 925 "parser.y" { (yyval.stgclass) = STG_EXTERN; } break; case 304: /* Line 1806 of yacc.c */ -#line 923 "parser.y" +#line 926 "parser.y" { (yyval.stgclass) = STG_STATIC; } break; case 305: /* Line 1806 of yacc.c */ -#line 924 "parser.y" +#line 927 "parser.y" { (yyval.stgclass) = STG_REGISTER; } break; case 306: /* Line 1806 of yacc.c */ -#line 928 "parser.y" +#line 931 "parser.y" { (yyval.attr) = make_attr(ATTR_INLINE); } break; case 307: /* Line 1806 of yacc.c */ -#line 932 "parser.y" +#line 935 "parser.y" { (yyval.attr) = make_attr(ATTR_CONST); } break; case 308: /* Line 1806 of yacc.c */ -#line 935 "parser.y" +#line 938 "parser.y" { (yyval.attr_list) = NULL; } break; case 309: /* Line 1806 of yacc.c */ -#line 936 "parser.y" +#line 939 "parser.y" { (yyval.attr_list) = append_attr((yyvsp[(1) - (2)].attr_list), (yyvsp[(2) - (2)].attr)); } break; case 310: /* Line 1806 of yacc.c */ -#line 939 "parser.y" +#line 942 "parser.y" { (yyval.declspec) = make_decl_spec((yyvsp[(1) - (2)].type), (yyvsp[(2) - (2)].declspec), NULL, NULL, STG_NONE); } break; case 311: /* Line 1806 of yacc.c */ -#line 941 "parser.y" +#line 944 "parser.y" { (yyval.declspec) = make_decl_spec((yyvsp[(2) - (3)].type), (yyvsp[(1) - (3)].declspec), (yyvsp[(3) - (3)].declspec), NULL, STG_NONE); } break; case 312: /* Line 1806 of yacc.c */ -#line 944 "parser.y" +#line 947 "parser.y" { (yyval.declspec) = NULL; } break; case 314: /* Line 1806 of yacc.c */ -#line 949 "parser.y" +#line 952 "parser.y" { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, (yyvsp[(1) - (2)].attr), STG_NONE); } break; case 315: /* Line 1806 of yacc.c */ -#line 950 "parser.y" +#line 953 "parser.y" { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, (yyvsp[(1) - (2)].attr), STG_NONE); } break; case 316: /* Line 1806 of yacc.c */ -#line 951 "parser.y" +#line 954 "parser.y" { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, NULL, (yyvsp[(1) - (2)].stgclass)); } break; case 317: /* Line 1806 of yacc.c */ -#line 956 "parser.y" +#line 959 "parser.y" { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); } break; case 318: /* Line 1806 of yacc.c */ -#line 957 "parser.y" +#line 960 "parser.y" { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); } break; @@ -5054,28 +5057,28 @@ yyreduce: case 320: /* Line 1806 of yacc.c */ -#line 963 "parser.y" +#line 966 "parser.y" { (yyval.declarator) = make_declarator((yyvsp[(1) - (1)].var)); } break; case 321: /* Line 1806 of yacc.c */ -#line 964 "parser.y" +#line 967 "parser.y" { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); } break; case 322: /* Line 1806 of yacc.c */ -#line 965 "parser.y" +#line 968 "parser.y" { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); } break; case 323: /* Line 1806 of yacc.c */ -#line 966 "parser.y" +#line 969 "parser.y" { (yyval.declarator) = (yyvsp[(1) - (4)].declarator); (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(3) - (4)].var_list))); (yyval.declarator)->type = NULL; @@ -5085,14 +5088,14 @@ yyreduce: case 324: /* Line 1806 of yacc.c */ -#line 975 "parser.y" +#line 978 "parser.y" { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); } break; case 325: /* Line 1806 of yacc.c */ -#line 976 "parser.y" +#line 979 "parser.y" { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); } break; @@ -5100,14 +5103,14 @@ yyreduce: case 327: /* Line 1806 of yacc.c */ -#line 984 "parser.y" +#line 987 "parser.y" { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); } break; case 328: /* Line 1806 of yacc.c */ -#line 985 "parser.y" +#line 988 "parser.y" { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); } break; @@ -5115,35 +5118,35 @@ yyreduce: case 329: /* Line 1806 of yacc.c */ -#line 990 "parser.y" +#line 993 "parser.y" { (yyval.declarator) = make_declarator(NULL); } break; case 331: /* Line 1806 of yacc.c */ -#line 996 "parser.y" +#line 999 "parser.y" { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); } break; case 332: /* Line 1806 of yacc.c */ -#line 997 "parser.y" +#line 1000 "parser.y" { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); } break; case 333: /* Line 1806 of yacc.c */ -#line 998 "parser.y" +#line 1001 "parser.y" { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(1) - (1)].expr)); } break; case 334: /* Line 1806 of yacc.c */ -#line 1000 "parser.y" +#line 1003 "parser.y" { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(2) - (3)].var_list))); (yyval.declarator)->type = NULL; @@ -5153,7 +5156,7 @@ yyreduce: case 335: /* Line 1806 of yacc.c */ -#line 1005 "parser.y" +#line 1008 "parser.y" { (yyval.declarator) = (yyvsp[(1) - (4)].declarator); (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(3) - (4)].var_list))); (yyval.declarator)->type = NULL; @@ -5163,70 +5166,70 @@ yyreduce: case 336: /* Line 1806 of yacc.c */ -#line 1014 "parser.y" +#line 1017 "parser.y" { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); } break; case 337: /* Line 1806 of yacc.c */ -#line 1015 "parser.y" +#line 1018 "parser.y" { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); } break; case 339: /* Line 1806 of yacc.c */ -#line 1022 "parser.y" +#line 1025 "parser.y" { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); } break; case 340: /* Line 1806 of yacc.c */ -#line 1023 "parser.y" +#line 1026 "parser.y" { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); } break; case 341: /* Line 1806 of yacc.c */ -#line 1027 "parser.y" +#line 1030 "parser.y" { (yyval.declarator) = make_declarator(NULL); } break; case 343: /* Line 1806 of yacc.c */ -#line 1035 "parser.y" +#line 1038 "parser.y" { (yyval.declarator) = make_declarator((yyvsp[(1) - (1)].var)); } break; case 344: /* Line 1806 of yacc.c */ -#line 1036 "parser.y" +#line 1039 "parser.y" { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); } break; case 345: /* Line 1806 of yacc.c */ -#line 1037 "parser.y" +#line 1040 "parser.y" { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); } break; case 346: /* Line 1806 of yacc.c */ -#line 1038 "parser.y" +#line 1041 "parser.y" { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(1) - (1)].expr)); } break; case 347: /* Line 1806 of yacc.c */ -#line 1040 "parser.y" +#line 1043 "parser.y" { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(2) - (3)].var_list))); (yyval.declarator)->type = NULL; @@ -5236,7 +5239,7 @@ yyreduce: case 348: /* Line 1806 of yacc.c */ -#line 1045 "parser.y" +#line 1048 "parser.y" { (yyval.declarator) = (yyvsp[(1) - (4)].declarator); (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(3) - (4)].var_list))); (yyval.declarator)->type = NULL; @@ -5246,35 +5249,35 @@ yyreduce: case 349: /* Line 1806 of yacc.c */ -#line 1052 "parser.y" +#line 1055 "parser.y" { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[(1) - (1)].declarator) ); } break; case 350: /* Line 1806 of yacc.c */ -#line 1053 "parser.y" +#line 1056 "parser.y" { (yyval.declarator_list) = append_declarator( (yyvsp[(1) - (3)].declarator_list), (yyvsp[(3) - (3)].declarator) ); } break; case 351: /* Line 1806 of yacc.c */ -#line 1056 "parser.y" +#line 1059 "parser.y" { (yyval.expr) = NULL; } break; case 352: /* Line 1806 of yacc.c */ -#line 1057 "parser.y" +#line 1060 "parser.y" { (yyval.expr) = (yyvsp[(2) - (2)].expr); } break; case 353: /* Line 1806 of yacc.c */ -#line 1060 "parser.y" +#line 1063 "parser.y" { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->bits = (yyvsp[(2) - (2)].expr); if (!(yyval.declarator)->bits && !(yyval.declarator)->var->name) error_loc("unnamed fields are not allowed\n"); @@ -5284,168 +5287,168 @@ yyreduce: case 354: /* Line 1806 of yacc.c */ -#line 1067 "parser.y" +#line 1070 "parser.y" { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[(1) - (1)].declarator) ); } break; case 355: /* Line 1806 of yacc.c */ -#line 1069 "parser.y" +#line 1072 "parser.y" { (yyval.declarator_list) = append_declarator( (yyvsp[(1) - (3)].declarator_list), (yyvsp[(3) - (3)].declarator) ); } break; case 356: /* Line 1806 of yacc.c */ -#line 1073 "parser.y" +#line 1076 "parser.y" { (yyval.declarator) = (yyvsp[(1) - (1)].declarator); } break; case 357: /* Line 1806 of yacc.c */ -#line 1074 "parser.y" +#line 1077 "parser.y" { (yyval.declarator) = (yyvsp[(1) - (3)].declarator); (yyvsp[(1) - (3)].declarator)->var->eval = (yyvsp[(3) - (3)].expr); } break; case 358: /* Line 1806 of yacc.c */ -#line 1078 "parser.y" +#line 1081 "parser.y" { (yyval.num) = THREADING_APARTMENT; } break; case 359: /* Line 1806 of yacc.c */ -#line 1079 "parser.y" +#line 1082 "parser.y" { (yyval.num) = THREADING_NEUTRAL; } break; case 360: /* Line 1806 of yacc.c */ -#line 1080 "parser.y" +#line 1083 "parser.y" { (yyval.num) = THREADING_SINGLE; } break; case 361: /* Line 1806 of yacc.c */ -#line 1081 "parser.y" +#line 1084 "parser.y" { (yyval.num) = THREADING_FREE; } break; case 362: /* Line 1806 of yacc.c */ -#line 1082 "parser.y" +#line 1085 "parser.y" { (yyval.num) = THREADING_BOTH; } break; case 363: /* Line 1806 of yacc.c */ -#line 1086 "parser.y" +#line 1089 "parser.y" { (yyval.num) = RPC_FC_RP; } break; case 364: /* Line 1806 of yacc.c */ -#line 1087 "parser.y" +#line 1090 "parser.y" { (yyval.num) = RPC_FC_UP; } break; case 365: /* Line 1806 of yacc.c */ -#line 1088 "parser.y" +#line 1091 "parser.y" { (yyval.num) = RPC_FC_FP; } break; case 366: /* Line 1806 of yacc.c */ -#line 1091 "parser.y" +#line 1094 "parser.y" { (yyval.type) = type_new_struct((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); } break; case 367: /* Line 1806 of yacc.c */ -#line 1094 "parser.y" +#line 1097 "parser.y" { (yyval.type) = type_new_void(); } break; case 368: /* Line 1806 of yacc.c */ -#line 1095 "parser.y" +#line 1098 "parser.y" { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); } break; case 369: /* Line 1806 of yacc.c */ -#line 1096 "parser.y" +#line 1099 "parser.y" { (yyval.type) = (yyvsp[(1) - (1)].type); } break; case 370: /* Line 1806 of yacc.c */ -#line 1097 "parser.y" +#line 1100 "parser.y" { (yyval.type) = (yyvsp[(1) - (1)].type); } break; case 371: /* Line 1806 of yacc.c */ -#line 1098 "parser.y" +#line 1101 "parser.y" { (yyval.type) = type_new_enum((yyvsp[(2) - (2)].str), FALSE, NULL); } break; case 372: /* Line 1806 of yacc.c */ -#line 1099 "parser.y" +#line 1102 "parser.y" { (yyval.type) = (yyvsp[(1) - (1)].type); } break; case 373: /* Line 1806 of yacc.c */ -#line 1100 "parser.y" +#line 1103 "parser.y" { (yyval.type) = type_new_struct((yyvsp[(2) - (2)].str), FALSE, NULL); } break; case 374: /* Line 1806 of yacc.c */ -#line 1101 "parser.y" +#line 1104 "parser.y" { (yyval.type) = (yyvsp[(1) - (1)].type); } break; case 375: /* Line 1806 of yacc.c */ -#line 1102 "parser.y" +#line 1105 "parser.y" { (yyval.type) = type_new_nonencapsulated_union((yyvsp[(2) - (2)].str), FALSE, NULL); } break; case 376: /* Line 1806 of yacc.c */ -#line 1103 "parser.y" +#line 1106 "parser.y" { (yyval.type) = make_safearray((yyvsp[(3) - (4)].type)); } break; case 377: /* Line 1806 of yacc.c */ -#line 1107 "parser.y" +#line 1110 "parser.y" { reg_typedefs((yyvsp[(3) - (4)].declspec), (yyvsp[(4) - (4)].declarator_list), check_typedef_attrs((yyvsp[(2) - (4)].attr_list))); (yyval.statement) = make_statement_typedef((yyvsp[(4) - (4)].declarator_list)); } @@ -5454,35 +5457,35 @@ yyreduce: case 378: /* Line 1806 of yacc.c */ -#line 1113 "parser.y" +#line 1116 "parser.y" { (yyval.type) = type_new_nonencapsulated_union((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); } break; case 379: /* Line 1806 of yacc.c */ -#line 1116 "parser.y" +#line 1119 "parser.y" { (yyval.type) = type_new_encapsulated_union((yyvsp[(2) - (10)].str), (yyvsp[(5) - (10)].var), (yyvsp[(7) - (10)].var), (yyvsp[(9) - (10)].var_list)); } break; case 380: /* Line 1806 of yacc.c */ -#line 1120 "parser.y" +#line 1123 "parser.y" { (yyval.num) = MAKEVERSION((yyvsp[(1) - (1)].num), 0); } break; case 381: /* Line 1806 of yacc.c */ -#line 1121 "parser.y" +#line 1124 "parser.y" { (yyval.num) = MAKEVERSION((yyvsp[(1) - (3)].num), (yyvsp[(3) - (3)].num)); } break; /* Line 1806 of yacc.c */ -#line 5486 "parser.tab.c" +#line 5489 "parser.tab.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -5713,7 +5716,7 @@ yyreturn: /* Line 2067 of yacc.c */ -#line 1124 "parser.y" +#line 1127 "parser.y" static void decl_builtin_basic(const char *name, enum type_basic_type type) diff --git a/reactos/tools/widl/parser.y b/reactos/tools/widl/parser.y index 20a74c36e9e..9f2ea4e4e47 100644 --- a/reactos/tools/widl/parser.y +++ b/reactos/tools/widl/parser.y @@ -620,7 +620,10 @@ enum_list: enum { if (!$1->eval) | enum_list ',' enum { if (!$3->eval) { var_t *last = LIST_ENTRY( list_tail($$), var_t, entry ); - $3->eval = make_exprl(EXPR_NUM, last->eval->cval + 1); + enum expr_type type = EXPR_NUM; + if (last->eval->type == EXPR_HEXNUM) type = EXPR_HEXNUM; + if (last->eval->cval + 1 < 0) type = EXPR_HEXNUM; + $3->eval = make_exprl(type, last->eval->cval + 1); } $$ = append_var( $1, $3 ); } diff --git a/reactos/tools/widl/proxy.c b/reactos/tools/widl/proxy.c index 3ec4201a016..c9dc0bc232a 100644 --- a/reactos/tools/widl/proxy.c +++ b/reactos/tools/widl/proxy.c @@ -787,7 +787,7 @@ int need_stub(const type_t *iface) int need_proxy_file(const statement_list_t *stmts) { - return does_any_iface(stmts, need_proxy); + return does_any_iface(stmts, need_proxy); } int need_inline_stubs(const type_t *iface) diff --git a/reactos/tools/widl/typegen.c b/reactos/tools/widl/typegen.c index 5c891c4501f..5804946c111 100644 --- a/reactos/tools/widl/typegen.c +++ b/reactos/tools/widl/typegen.c @@ -2344,7 +2344,6 @@ static void write_array_element_type(FILE *file, const type_t *type, } } write_member_type(file, type, cont_is_complex, NULL, elem, NULL, tfsoff); - return; } static void write_end(FILE *file, unsigned int *tfsoff) From 8873d1a4bed0c4c76625a50fffce19b93f6ccf9a Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 29 Dec 2012 16:22:00 +0000 Subject: [PATCH 06/96] [INCLUDE] Add some domain information types to ntsam.h and fix sam.idl accordingly. svn path=/trunk/; revision=58040 --- reactos/include/ddk/ntsam.h | 57 +++++++++++++++++++++++++++++ reactos/include/reactos/idl/sam.idl | 4 +- 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/reactos/include/ddk/ntsam.h b/reactos/include/ddk/ntsam.h index 9a8c3a185b2..ba0771ec9ff 100644 --- a/reactos/include/ddk/ntsam.h +++ b/reactos/include/ddk/ntsam.h @@ -262,11 +262,68 @@ typedef enum _DOMAIN_SERVER_ROLE DomainServerRolePrimary } DOMAIN_SERVER_ROLE, *PDOMAIN_SERVER_ROLE; +#include "pshpack4.h" +typedef struct _DOMAIN_GENERAL_INFORMATION +{ + LARGE_INTEGER ForceLogoff; + UNICODE_STRING OemInformation; + UNICODE_STRING DomainName; + UNICODE_STRING ReplicaSourceNodeName; + LARGE_INTEGER DomainModifiedCount; + DOMAIN_SERVER_ENABLE_STATE DomainServerState; + DOMAIN_SERVER_ROLE DomainServerRole; + BOOLEAN UasCompatibilityRequired; + ULONG UserCount; + ULONG GroupCount; + ULONG AliasCount; +} DOMAIN_GENERAL_INFORMATION, *PDOMAIN_GENERAL_INFORMATION; +#include "poppack.h" + +typedef struct _DOMAIN_LOGOFF_INFORMATION +{ + LARGE_INTEGER ForceLogoff; +} DOMAIN_LOGOFF_INFORMATION, *PDOMAIN_LOGOFF_INFORMATION; + +typedef struct _DOMAIN_OEM_INFORMATION +{ + UNICODE_STRING OemInformation; +} DOMAIN_OEM_INFORMATION, *PDOMAIN_OEM_INFORMATION; + typedef struct _DOMAIN_NAME_INFORMATION { UNICODE_STRING DomainName; } DOMAIN_NAME_INFORMATION, *PDOMAIN_NAME_INFORMATION; +typedef struct _DOMAIN_REPLICATION_INFORMATION +{ + UNICODE_STRING ReplicaSourceNodeName; +} DOMAIN_REPLICATION_INFORMATION, *PDOMAIN_REPLICATION_INFORMATION; + +typedef struct _DOMAIN_SERVER_ROLE_INFORMATION +{ + DOMAIN_SERVER_ROLE DomainServerRole; +} DOMAIN_SERVER_ROLE_INFORMATION, *PDOMAIN_SERVER_ROLE_INFORMATION; + +typedef struct _DOMAIN_STATE_INFORMATION +{ + DOMAIN_SERVER_ENABLE_STATE DomainServerState; +} DOMAIN_STATE_INFORMATION, *PDOMAIN_STATE_INFORMATION; + +typedef struct _DOMAIN_UAS_INFORMATION +{ + BOOLEAN UasCompatibilityRequired; +} DOMAIN_UAS_INFORMATION; + +#include "pshpack4.h" +typedef struct _DOMAIN_GENERAL_INFORMATION2 +{ + DOMAIN_GENERAL_INFORMATION I1; + LARGE_INTEGER LockoutDuration; + LARGE_INTEGER LockoutObservationWindow; + USHORT LockoutThreshold; +} DOMAIN_GENERAL_INFORMATION2, *PDOMAIN_GENERAL_INFORMATION2; +#include "poppack.h" + typedef enum _GROUP_INFORMATION_CLASS { GroupGeneralInformation = 1, diff --git a/reactos/include/reactos/idl/sam.idl b/reactos/include/reactos/idl/sam.idl index dbecb57ec2a..6bfdaa97f62 100644 --- a/reactos/include/reactos/idl/sam.idl +++ b/reactos/include/reactos/idl/sam.idl @@ -143,12 +143,12 @@ typedef enum _DOMAIN_SERVER_ENABLE_STATE DomainServerEnabled = 1, DomainServerDisabled } DOMAIN_SERVER_ENABLE_STATE, *PDOMAIN_SERVER_ENABLE_STATE; -cpp_quote("#endif") typedef struct _DOMAIN_STATE_INFORMATION { DOMAIN_SERVER_ENABLE_STATE DomainServerState; } DOMAIN_STATE_INFORMATION, *PDOMAIN_STATE_INFORMATION; +cpp_quote("#endif") cpp_quote("#ifndef _NTSAM_") typedef enum _DOMAIN_SERVER_ROLE @@ -169,6 +169,7 @@ typedef struct _DOMAIN_PASSWORD_INFORMATION } DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION; cpp_quote("#endif") +cpp_quote("#ifndef _NTSAM_") typedef struct _DOMAIN_LOGOFF_INFORMATION { OLD_LARGE_INTEGER ForceLogoff; @@ -178,6 +179,7 @@ typedef struct _DOMAIN_SERVER_ROLE_INFORMATION { DOMAIN_SERVER_ROLE DomainServerRole; } DOMAIN_SERVER_ROLE_INFORMATION, *PDOMAIN_SERVER_ROLE_INFORMATION; +cpp_quote("#endif") typedef struct _DOMAIN_MODIFIED_INFORMATION { From d15d5fabff8c69dd707b968e3c359a2d22440a2f Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 29 Dec 2012 19:14:30 +0000 Subject: [PATCH 07/96] [WIN32K] Use the official HANDLE_TYPE enum instead of the custom USER_OBJECT_TYPE svn path=/trunk/; revision=58041 --- reactos/win32ss/drivers/videoprt/child.c | 2 +- reactos/win32ss/gdi/ntgdi/cliprgn.h | 2 +- reactos/win32ss/include/ntuser.h | 51 ++++++----- reactos/win32ss/user/ntuser/accelerator.c | 10 +- reactos/win32ss/user/ntuser/callproc.c | 6 +- reactos/win32ss/user/ntuser/class.c | 2 +- reactos/win32ss/user/ntuser/clipboard.c | 14 +-- reactos/win32ss/user/ntuser/cursoricon.c | 12 +-- reactos/win32ss/user/ntuser/cursoricon_new.c | 10 +- reactos/win32ss/user/ntuser/event.c | 6 +- reactos/win32ss/user/ntuser/hook.c | 8 +- reactos/win32ss/user/ntuser/kbdlayout.c | 12 +-- reactos/win32ss/user/ntuser/menu.c | 8 +- reactos/win32ss/user/ntuser/monitor.c | 6 +- reactos/win32ss/user/ntuser/object.c | 96 ++++++++++---------- reactos/win32ss/user/ntuser/object.h | 12 +-- reactos/win32ss/user/ntuser/painting.c | 2 +- reactos/win32ss/user/ntuser/simplecall.c | 4 +- reactos/win32ss/user/ntuser/timer.c | 4 +- reactos/win32ss/user/ntuser/win32.h | 2 +- reactos/win32ss/user/ntuser/window.c | 10 +- reactos/win32ss/user/ntuser/winpos.c | 6 +- reactos/win32ss/user/user32/include/user_x.h | 2 +- reactos/win32ss/user/user32/misc/misc.c | 62 +++++++------ reactos/win32ss/user/user32/windows/menu.c | 4 +- 25 files changed, 180 insertions(+), 173 deletions(-) diff --git a/reactos/win32ss/drivers/videoprt/child.c b/reactos/win32ss/drivers/videoprt/child.c index 4bdc34de1fb..e6a35e996ac 100644 --- a/reactos/win32ss/drivers/videoprt/child.c +++ b/reactos/win32ss/drivers/videoprt/child.c @@ -393,4 +393,4 @@ IntVideoPortDispatchPdoPnp( IoCompleteRequest(Irp, IO_NO_INCREMENT); return Status; -} \ No newline at end of file +} diff --git a/reactos/win32ss/gdi/ntgdi/cliprgn.h b/reactos/win32ss/gdi/ntgdi/cliprgn.h index 5ee4ba6a1d2..b16039292b4 100644 --- a/reactos/win32ss/gdi/ntgdi/cliprgn.h +++ b/reactos/win32ss/gdi/ntgdi/cliprgn.h @@ -3,4 +3,4 @@ INT FASTCALL GdiGetClipBox(HDC hDC, RECTL *rc); INT FASTCALL GdiSelectVisRgn(HDC hdc, HRGN hrgn); INT FASTCALL GdiExtSelectClipRgn (PDC dc, HRGN hrgn, int fnMode); -int FASTCALL CLIPPING_UpdateGCRegion(DC* Dc); \ No newline at end of file +int FASTCALL CLIPPING_UpdateGCRegion(DC* Dc); diff --git a/reactos/win32ss/include/ntuser.h b/reactos/win32ss/include/ntuser.h index 77dce0ed0eb..be749e2cc3f 100644 --- a/reactos/win32ss/include/ntuser.h +++ b/reactos/win32ss/include/ntuser.h @@ -33,32 +33,33 @@ typedef struct _USER_HANDLE_TABLE int allocated_handles; } USER_HANDLE_TABLE, * PUSER_HANDLE_TABLE; -typedef enum _USER_OBJECT_TYPE +typedef enum _HANDLE_TYPE { - otFree = 0, - otWindow, - otMenu, - otCursorIcon, - otSMWP, - otHook, - otClipBoardData, - otCallProc, - otAccel, - otDDEaccess, - otDDEconv, - otDDExact, - otMonitor, - otKBDlayout, - otKBDfile, - otEvent, - otTimer, - otInputContext, - otHidData, - otDeviceInfo, - otTouchInput, - otGestureInfo, - USER_HANDLE_TYPE_COUNT -} USER_OBJECT_TYPE; + TYPE_FREE = 0, + TYPE_WINDOW = 1, + TYPE_MENU = 2, + TYPE_CURSOR = 3, + TYPE_SETWINDOWPOS = 4, + TYPE_HOOK = 5, + TYPE_CLIPDATA = 6, + TYPE_CALLPROC = 7, + TYPE_ACCELTABLE = 8, + TYPE_DDEACCESS = 9, + TYPE_DDECONV = 10, + TYPE_DDEXACT = 11, + TYPE_MONITOR = 12, + TYPE_KBDLAYOUT = 13, + TYPE_KBDFILE = 14, + TYPE_WINEVENTHOOK = 15, + TYPE_TIMER = 16, + TYPE_INPUTCONTEXT = 17, + TYPE_HIDDATA = 18, + TYPE_DEVICEINFO = 19, + TYPE_TOUCHINPUTINFO = 20, + TYPE_GESTUREINFOOBJ = 21, + TYPE_CTYPES, + TYPE_GENERIC = 255 +} HANDLE_TYPE, *PHANDLE_TYPE; typedef enum _USERTHREADINFOCLASS { diff --git a/reactos/win32ss/user/ntuser/accelerator.c b/reactos/win32ss/user/ntuser/accelerator.c index 24d1b61400b..4c88bfab859 100644 --- a/reactos/win32ss/user/ntuser/accelerator.c +++ b/reactos/win32ss/user/ntuser/accelerator.c @@ -28,7 +28,7 @@ PACCELERATOR_TABLE FASTCALL UserGetAccelObject(HACCEL hAccel) return NULL; } - Accel = UserGetObject(gHandleTable, hAccel, otAccel); + Accel = UserGetObject(gHandleTable, hAccel, TYPE_ACCELTABLE); if (!Accel) { EngSetLastError(ERROR_INVALID_ACCEL_HANDLE); @@ -257,7 +257,7 @@ NtUserCreateAcceleratorTable( RETURN( (HACCEL) NULL ); } - Accel = UserCreateObject(gHandleTable, NULL, NULL, (PHANDLE)&hAccel, otAccel, sizeof(ACCELERATOR_TABLE)); + Accel = UserCreateObject(gHandleTable, NULL, NULL, (PHANDLE)&hAccel, TYPE_ACCELTABLE, sizeof(ACCELERATOR_TABLE)); if (Accel == NULL) { @@ -270,7 +270,7 @@ NtUserCreateAcceleratorTable( if (Accel->Table == NULL) { UserDereferenceObject(Accel); - UserDeleteObject(hAccel, otAccel); + UserDeleteObject(hAccel, TYPE_ACCELTABLE); SetLastNtError(STATUS_NO_MEMORY); RETURN( (HACCEL) NULL); } @@ -308,7 +308,7 @@ NtUserCreateAcceleratorTable( { ExFreePoolWithTag(Accel->Table, USERTAG_ACCEL); UserDereferenceObject(Accel); - UserDeleteObject(hAccel, otAccel); + UserDeleteObject(hAccel, TYPE_ACCELTABLE); SetLastNtError(Status); RETURN( (HACCEL) NULL); } @@ -351,7 +351,7 @@ NtUserDestroyAcceleratorTable( Accel->Table = NULL; } - UserDeleteObject(hAccel, otAccel); + UserDeleteObject(hAccel, TYPE_ACCELTABLE); RETURN( TRUE); diff --git a/reactos/win32ss/user/ntuser/callproc.c b/reactos/win32ss/user/ntuser/callproc.c index 815cee50d81..a1b6356261b 100644 --- a/reactos/win32ss/user/ntuser/callproc.c +++ b/reactos/win32ss/user/ntuser/callproc.c @@ -21,7 +21,7 @@ VOID DestroyCallProc(IN PDESKTOPINFO Desktop, IN OUT PCALLPROCDATA CallProc) { - UserDeleteObject(UserHMGetHandle(CallProc), otCallProc); + UserDeleteObject(UserHMGetHandle(CallProc), TYPE_CALLPROC); } PCALLPROCDATA @@ -37,7 +37,7 @@ CreateCallProc(IN PDESKTOP Desktop, Desktop, NULL, &Handle, - otCallProc, + TYPE_CALLPROC, sizeof(CALLPROCDATA)); if (NewCallProc != NULL) { @@ -60,7 +60,7 @@ UserGetCallProcInfo(IN HANDLE hCallProc, CallProc = UserGetObject(gHandleTable, hCallProc, - otCallProc); + TYPE_CALLPROC); if (CallProc == NULL) { return FALSE; diff --git a/reactos/win32ss/user/ntuser/class.c b/reactos/win32ss/user/ntuser/class.c index a71b88982c2..9a980ce1107 100644 --- a/reactos/win32ss/user/ntuser/class.c +++ b/reactos/win32ss/user/ntuser/class.c @@ -462,7 +462,7 @@ IntSetClassWndProc(IN OUT PCLS Class, // Check if CallProc handle and retrieve previous call proc address and set. if (IsCallProcHandle(WndProc)) { - pcpd = UserGetObject(gHandleTable, WndProc, otCallProc); + pcpd = UserGetObject(gHandleTable, WndProc, TYPE_CALLPROC); if (pcpd) chWndProc = pcpd->pfnClientPrevious; } diff --git a/reactos/win32ss/user/ntuser/clipboard.c b/reactos/win32ss/user/ntuser/clipboard.c index 64b204e8eb3..28bb21325c2 100644 --- a/reactos/win32ss/user/ntuser/clipboard.c +++ b/reactos/win32ss/user/ntuser/clipboard.c @@ -58,7 +58,7 @@ IntFreeElementData(PCLIP pElement) !IS_DATA_SYNTHESIZED(pElement)) { if (pElement->fGlobalHandle) - UserDeleteObject(pElement->hData, otClipBoardData); + UserDeleteObject(pElement->hData, TYPE_CLIPDATA); else if (pElement->fmt == CF_BITMAP || pElement->fmt == CF_PALETTE || pElement->fmt == CF_DSPBITMAP) { @@ -184,7 +184,7 @@ IntSynthesizeDib( NULL, NULL, &hMem, - otClipBoardData, + TYPE_CLIPDATA, cjDataSize); if (!pClipboardData) { @@ -235,7 +235,7 @@ IntSynthesizeBitmap(PWINSTATION_OBJECT pWinStaObj, PCLIP pBmEl) if(!pDibEl->fGlobalHandle) return; - pMemObj = (PCLIPBOARDDATA)UserGetObject(gHandleTable, pDibEl->hData, otClipBoardData); + pMemObj = (PCLIPBOARDDATA)UserGetObject(gHandleTable, pDibEl->hData, TYPE_CLIPDATA); if (!pMemObj) return; @@ -297,7 +297,7 @@ IntAddSynthesizedFormats(PWINSTATION_OBJECT pWinStaObj) PCLIPBOARDDATA pMemObj; HANDLE hMem; - pMemObj = (PCLIPBOARDDATA)UserCreateObject(gHandleTable, NULL, NULL, &hMem, otClipBoardData, + pMemObj = (PCLIPBOARDDATA)UserCreateObject(gHandleTable, NULL, NULL, &hMem, TYPE_CLIPDATA, sizeof(CLIPBOARDDATA) + sizeof(LCID)); if (pMemObj) { @@ -1087,7 +1087,7 @@ NtUserConvertMemHandle( UserEnterExclusive(); /* Create Clipboard data object */ - pMemObj = UserCreateObject(gHandleTable, NULL, NULL, &hMem, otClipBoardData, sizeof(CLIPBOARDDATA) + cbData); + pMemObj = UserCreateObject(gHandleTable, NULL, NULL, &hMem, TYPE_CLIPDATA, sizeof(CLIPBOARDDATA) + cbData); if (!pMemObj) goto cleanup; @@ -1111,7 +1111,7 @@ NtUserConvertMemHandle( /* If we failed to copy data, remove handle */ if (!pMemObj) { - UserDeleteObject(hMem, otClipBoardData); + UserDeleteObject(hMem, TYPE_CLIPDATA); hMem = NULL; } @@ -1134,7 +1134,7 @@ NtUserCreateLocalMemHandle( UserEnterShared(); /* Get Clipboard data object */ - pMemObj = (PCLIPBOARDDATA)UserGetObject(gHandleTable, hMem, otClipBoardData); + pMemObj = (PCLIPBOARDDATA)UserGetObject(gHandleTable, hMem, TYPE_CLIPDATA); if (!pMemObj) { Status = STATUS_INVALID_HANDLE; diff --git a/reactos/win32ss/user/ntuser/cursoricon.c b/reactos/win32ss/user/ntuser/cursoricon.c index 04431d78635..a4dbce0f021 100644 --- a/reactos/win32ss/user/ntuser/cursoricon.c +++ b/reactos/win32ss/user/ntuser/cursoricon.c @@ -77,7 +77,7 @@ PCURICON_OBJECT FASTCALL UserGetCurIconObject(HCURSOR hCurIcon) return NULL; } - CurIcon = (PCURICON_OBJECT)UserReferenceObjectByHandle(hCurIcon, otCursorIcon); + CurIcon = (PCURICON_OBJECT)UserReferenceObjectByHandle(hCurIcon, TYPE_CURSOR); if (!CurIcon) { /* We never set ERROR_INVALID_ICON_HANDLE. lets hope noone ever checks for it */ @@ -178,7 +178,7 @@ IntFindExistingCurIconObject(HMODULE hModule, LIST_FOR_EACH(CurIcon, &gCurIconList, CURICON_OBJECT, ListEntry) { - // if (NT_SUCCESS(UserReferenceObjectByPointer(Object, otCursorIcon))) // <- huh???? + // if (NT_SUCCESS(UserReferenceObjectByPointer(Object, TYPE_CURSOR))) // <- huh???? // UserReferenceObject( CurIcon); // { if ((CurIcon->hModule == hModule) && (CurIcon->hRsrc == hRsrc)) @@ -209,7 +209,7 @@ IntCreateCurIconHandle(DWORD dwNumber) PCURICON_OBJECT CurIcon; HANDLE hCurIcon; - CurIcon = UserCreateObject(gHandleTable, NULL, NULL, &hCurIcon, otCursorIcon, sizeof(CURICON_OBJECT)); + CurIcon = UserCreateObject(gHandleTable, NULL, NULL, &hCurIcon, TYPE_CURSOR, sizeof(CURICON_OBJECT)); if (!CurIcon) { @@ -223,7 +223,7 @@ IntCreateCurIconHandle(DWORD dwNumber) if (! ReferenceCurIconByProcess(CurIcon)) { ERR("Failed to add process\n"); - UserDeleteObject(hCurIcon, otCursorIcon); + UserDeleteObject(hCurIcon, TYPE_CURSOR); UserDereferenceObject(CurIcon); return NULL; } @@ -273,7 +273,7 @@ IntDestroyCurIconObject(PCURICON_OBJECT CurIcon, PPROCESSINFO ppi) { /* Set the first process of the list as owner */ Current = CONTAINING_RECORD(CurIcon->ProcessList.Flink, CURICON_PROCESS, ListEntry); - UserSetObjectOwner(CurIcon, otCursorIcon, Current->Process); + UserSetObjectOwner(CurIcon, TYPE_CURSOR, Current->Process); } UserDereferenceObject(CurIcon); return TRUE; @@ -310,7 +310,7 @@ emptyList: /* We were given a pointer, no need to keep the reference anylonger! */ UserDereferenceObject(CurIcon); - Ret = UserDeleteObject(CurIcon->Self, otCursorIcon); + Ret = UserDeleteObject(CurIcon->Self, TYPE_CURSOR); return Ret; } diff --git a/reactos/win32ss/user/ntuser/cursoricon_new.c b/reactos/win32ss/user/ntuser/cursoricon_new.c index c80df050dd8..c481eb56653 100644 --- a/reactos/win32ss/user/ntuser/cursoricon_new.c +++ b/reactos/win32ss/user/ntuser/cursoricon_new.c @@ -84,7 +84,7 @@ PCURICON_OBJECT FASTCALL UserGetCurIconObject(HCURSOR hCurIcon) return NULL; } - CurIcon = (PCURICON_OBJECT)UserReferenceObjectByHandle(hCurIcon, otCursorIcon); + CurIcon = (PCURICON_OBJECT)UserReferenceObjectByHandle(hCurIcon, TYPE_CURSOR); if (!CurIcon) { /* We never set ERROR_INVALID_ICON_HANDLE. lets hope noone ever checks for it */ @@ -229,7 +229,7 @@ IntCreateCurIconHandle(DWORD dwNumber) if(dwNumber == 0) dwNumber = 1; - CurIcon = UserCreateObject(gHandleTable, NULL, NULL, &hCurIcon, otCursorIcon, sizeof(CURICON_OBJECT)); + CurIcon = UserCreateObject(gHandleTable, NULL, NULL, &hCurIcon, TYPE_CURSOR, sizeof(CURICON_OBJECT)); if (!CurIcon) { @@ -244,7 +244,7 @@ IntCreateCurIconHandle(DWORD dwNumber) { ERR("Failed to add process\n"); UserDereferenceObject(CurIcon); - UserDeleteObject(hCurIcon, otCursorIcon); + UserDeleteObject(hCurIcon, TYPE_CURSOR); return NULL; } @@ -309,7 +309,7 @@ IntDestroyCurIconObject(PCURICON_OBJECT CurIcon, PPROCESSINFO ppi, BOOLEAN bForc { /* Set the first process of the list as owner */ Current = CONTAINING_RECORD(CurIcon->ProcessList.Flink, CURICON_PROCESS, ListEntry); - UserSetObjectOwner(CurIcon, otCursorIcon, Current->Process); + UserSetObjectOwner(CurIcon, TYPE_CURSOR, Current->Process); } UserDereferenceObject(CurIcon); return TRUE; @@ -350,7 +350,7 @@ emptyList: /* We were given a pointer, no need to keep the reference anylonger! */ UserDereferenceObject(CurIcon); - Ret = UserDeleteObject(CurIcon->Self, otCursorIcon); + Ret = UserDeleteObject(CurIcon->Self, TYPE_CURSOR); return Ret; } diff --git a/reactos/win32ss/user/ntuser/event.c b/reactos/win32ss/user/ntuser/event.c index 964119cb53d..6a8ed663892 100644 --- a/reactos/win32ss/user/ntuser/event.c +++ b/reactos/win32ss/user/ntuser/event.c @@ -141,7 +141,7 @@ IntRemoveEvent(PEVENTHOOK pEH) RemoveEntryList(&pEH->Chain); GlobalEvents->Counts--; if (!GlobalEvents->Counts) gpsi->dwInstalledEventHooks = 0; - UserDeleteObject(UserHMGetHandle(pEH), otEvent); + UserDeleteObject(UserHMGetHandle(pEH), TYPE_WINEVENTHOOK); KeLeaveCriticalRegion(); return TRUE; } @@ -378,7 +378,7 @@ NtUserSetWinEventHook( } } // Creator, pti is set here. - pEH = UserCreateObject(gHandleTable, NULL, NULL, &Handle, otEvent, sizeof(EVENTHOOK)); + pEH = UserCreateObject(gHandleTable, NULL, NULL, &Handle, TYPE_WINEVENTHOOK, sizeof(EVENTHOOK)); if (pEH) { InsertTailList(&GlobalEvents->Events, &pEH->Chain); @@ -428,7 +428,7 @@ NtUserUnhookWinEvent( UserEnterExclusive(); - pEH = (PEVENTHOOK)UserGetObject(gHandleTable, hWinEventHook, otEvent); + pEH = (PEVENTHOOK)UserGetObject(gHandleTable, hWinEventHook, TYPE_WINEVENTHOOK); if (pEH) { Ret = IntRemoveEvent(pEH); diff --git a/reactos/win32ss/user/ntuser/hook.c b/reactos/win32ss/user/ntuser/hook.c index dc04ed878d5..a111d765968 100644 --- a/reactos/win32ss/user/ntuser/hook.c +++ b/reactos/win32ss/user/ntuser/hook.c @@ -937,7 +937,7 @@ IntGetHookObject(HHOOK hHook) return NULL; } - Hook = (PHOOK)UserGetObject(gHandleTable, hHook, otHook); + Hook = (PHOOK)UserGetObject(gHandleTable, hHook, TYPE_HOOK); if (!Hook) { EngSetLastError(ERROR_INVALID_HOOK_HANDLE); @@ -1020,7 +1020,7 @@ IntFreeHook(PHOOK Hook) Hook->ModuleName.Buffer = NULL; } /* Close handle */ - UserDeleteObject(UserHMGetHandle(Hook), otHook); + UserDeleteObject(UserHMGetHandle(Hook), TYPE_HOOK); } /* Remove a hook, freeing it from the chain */ @@ -1270,7 +1270,7 @@ co_HOOK_CallHooks( INT HookId, */ for(i = 0; pHookHandles[i]; ++i) { - Hook = (PHOOK)UserGetObject(gHandleTable, pHookHandles[i], otHook); + Hook = (PHOOK)UserGetObject(gHandleTable, pHookHandles[i], TYPE_HOOK); if(!Hook) { ERR("Invalid hook!\n"); @@ -1571,7 +1571,7 @@ NtUserSetWindowsHookEx( HINSTANCE Mod, } ObDereferenceObject(WinStaObj); - Hook = UserCreateObject(gHandleTable, NULL, NULL, (PHANDLE)&Handle, otHook, sizeof(HOOK)); + Hook = UserCreateObject(gHandleTable, NULL, NULL, (PHANDLE)&Handle, TYPE_HOOK, sizeof(HOOK)); if (!Hook) { diff --git a/reactos/win32ss/user/ntuser/kbdlayout.c b/reactos/win32ss/user/ntuser/kbdlayout.c index a04c9627f86..a6d20c555fd 100644 --- a/reactos/win32ss/user/ntuser/kbdlayout.c +++ b/reactos/win32ss/user/ntuser/kbdlayout.c @@ -131,7 +131,7 @@ UserLoadKbdFile(PUNICODE_STRING pwszKLID) L"Control\\Keyboard Layouts\\"; /* Create keyboard layout file object */ - pkf = UserCreateObject(gHandleTable, NULL, NULL, NULL, otKBDfile, sizeof(KBDFILE)); + pkf = UserCreateObject(gHandleTable, NULL, NULL, NULL, TYPE_KBDFILE, sizeof(KBDFILE)); if (!pkf) { ERR("Failed to create object!\n"); @@ -187,7 +187,7 @@ cleanup: { /* We have failed - destroy created object */ if (pkf) - UserDeleteObject(pkf->head.h, otKBDfile); + UserDeleteObject(pkf->head.h, TYPE_KBDFILE); } return pRet; @@ -206,7 +206,7 @@ UserLoadKbdLayout(PUNICODE_STRING pwszKLID, HKL hKL) PKL pKl; /* Create keyboard layout object */ - pKl = UserCreateObject(gHandleTable, NULL, NULL, NULL, otKBDlayout, sizeof(KL)); + pKl = UserCreateObject(gHandleTable, NULL, NULL, NULL, TYPE_KBDLAYOUT, sizeof(KL)); if (!pKl) { ERR("Failed to create object!\n"); @@ -223,7 +223,7 @@ UserLoadKbdLayout(PUNICODE_STRING pwszKLID, HKL hKL) if (!pKl->spkf) { ERR("UserLoadKbdFile(%wZ) failed!\n", pwszKLID); - UserDeleteObject(pKl->head.h, otKBDlayout); + UserDeleteObject(pKl->head.h, TYPE_KBDLAYOUT); return NULL; } @@ -272,7 +272,7 @@ UnloadKbdFile(_In_ PKBDFILE pkf) *ppkfLink = pkf->pkfNext; EngUnloadImage(pkf->hBase); - UserDeleteObject(pkf->head.h, otKBDfile); + UserDeleteObject(pkf->head.h, TYPE_KBDFILE); } /* @@ -308,7 +308,7 @@ UserUnloadKbl(PKL pKl) pKl->pklPrev->pklNext = pKl->pklNext; pKl->pklNext->pklPrev = pKl->pklPrev; UnloadKbdFile(pKl->spkf); - UserDeleteObject(pKl->head.h, otKBDlayout); + UserDeleteObject(pKl->head.h, TYPE_KBDLAYOUT); return TRUE; } diff --git a/reactos/win32ss/user/ntuser/menu.c b/reactos/win32ss/user/ntuser/menu.c index 1f7683326f6..1b5a0021675 100644 --- a/reactos/win32ss/user/ntuser/menu.c +++ b/reactos/win32ss/user/ntuser/menu.c @@ -63,7 +63,7 @@ PMENU_OBJECT FASTCALL UserGetMenuObject(HMENU hMenu) return NULL; } - Menu = (PMENU_OBJECT)UserGetObject(gHandleTable, hMenu, otMenu); + Menu = (PMENU_OBJECT)UserGetObject(gHandleTable, hMenu, TYPE_MENU); if (!Menu) { EngSetLastError(ERROR_INVALID_MENU_HANDLE); @@ -234,7 +234,7 @@ IntDestroyMenuObject(PMENU_OBJECT Menu, } } // UserDereferenceObject(Menu); - ret = UserDeleteObject(Menu->MenuInfo.Self, otMenu); + ret = UserDeleteObject(Menu->MenuInfo.Self, TYPE_MENU); ObDereferenceObject(WindowStation); return ret; } @@ -252,7 +252,7 @@ IntCreateMenu(PHANDLE Handle, BOOL IsMenuBar) NULL, NULL, Handle, - otMenu, + TYPE_MENU, sizeof(MENU_OBJECT)); if(!Menu) { @@ -364,7 +364,7 @@ IntCloneMenu(PMENU_OBJECT Source) NULL, NULL, &hMenu, - otMenu, + TYPE_MENU, sizeof(MENU_OBJECT)); if(!Menu) return NULL; diff --git a/reactos/win32ss/user/ntuser/monitor.c b/reactos/win32ss/user/ntuser/monitor.c index aa5cedc19e8..b0e4aa6ec9f 100644 --- a/reactos/win32ss/user/ntuser/monitor.c +++ b/reactos/win32ss/user/ntuser/monitor.c @@ -32,7 +32,7 @@ static PMONITOR IntCreateMonitorObject() { - return UserCreateObject(gHandleTable, NULL, NULL, NULL, otMonitor, sizeof(MONITOR)); + return UserCreateObject(gHandleTable, NULL, NULL, NULL, TYPE_MONITOR, sizeof(MONITOR)); } /* IntDestroyMonitorObject @@ -58,7 +58,7 @@ IntDestroyMonitorObject(IN PMONITOR pMonitor) /* Destroy monitor object */ UserDereferenceObject(pMonitor); - UserDeleteObject(UserHMGetHandle(pMonitor), otMonitor); + UserDeleteObject(UserHMGetHandle(pMonitor), TYPE_MONITOR); } /* UserGetMonitorObject @@ -81,7 +81,7 @@ UserGetMonitorObject(IN HMONITOR hMonitor) return NULL; } - pMonitor = (PMONITOR)UserGetObject(gHandleTable, hMonitor, otMonitor); + pMonitor = (PMONITOR)UserGetObject(gHandleTable, hMonitor, TYPE_MONITOR); if (!pMonitor) { EngSetLastError(ERROR_INVALID_MONITOR_HANDLE); diff --git a/reactos/win32ss/user/ntuser/object.c b/reactos/win32ss/user/ntuser/object.c index d7785754073..a341b5035bb 100644 --- a/reactos/win32ss/user/ntuser/object.c +++ b/reactos/win32ss/user/ntuser/object.c @@ -16,7 +16,7 @@ PUSER_HANDLE_TABLE gHandleTable = NULL; void DbgUserDumpHandleTable() { - int HandleCounts[USER_HANDLE_TYPE_COUNT]; + int HandleCounts[TYPE_CTYPES]; PPROCESSINFO ppiList; int i; PWCHAR TypeNames[] = {L"Free",L"Window",L"Menu", L"CursorIcon", L"SMWP", L"Hook", L"ClipBoardData", L"CallProc", @@ -33,7 +33,7 @@ void DbgUserDumpHandleTable() { ERR("Process %s (%d) handles count: %d\n\t", ppiList->peProcess->ImageFileName, ppiList->peProcess->UniqueProcessId, ppiList->UserHandleCount); - for (i = 1 ;i < USER_HANDLE_TYPE_COUNT; i++) + for (i = 1 ;i < TYPE_CTYPES; i++) { HandleCounts[i] += ppiList->DbgHandleCount[i]; @@ -48,7 +48,7 @@ void DbgUserDumpHandleTable() /* Print total type counts */ ERR("Total handles of the running processes: \n\t"); - for (i = 1 ;i < USER_HANDLE_TYPE_COUNT; i++) + for (i = 1 ;i < TYPE_CTYPES; i++) { DbgPrint("%S: %d, ", TypeNames[i], HandleCounts[i]); if (i % 6 == 0) @@ -62,7 +62,7 @@ void DbgUserDumpHandleTable() HandleCounts[gHandleTable->handles[i].type]++; ERR("Total handles count allocated: \n\t"); - for (i = 1 ;i < USER_HANDLE_TYPE_COUNT; i++) + for (i = 1 ;i < TYPE_CTYPES; i++) { DbgPrint("%S: %d, ", TypeNames[i], HandleCounts[i]); if (i % 6 == 0) @@ -174,27 +174,27 @@ __inline static void *free_user_entry(PUSER_HANDLE_TABLE ht, PUSER_HANDLE_ENTRY } static __inline PVOID -UserHandleOwnerByType(USER_OBJECT_TYPE type) +UserHandleOwnerByType(HANDLE_TYPE type) { PVOID pi; switch (type) { - case otWindow: - case otInputContext: + case TYPE_WINDOW: + case TYPE_INPUTCONTEXT: pi = GetW32ThreadInfo(); break; - case otMenu: - case otCursorIcon: - case otHook: - case otCallProc: - case otAccel: - case otSMWP: + case TYPE_MENU: + case TYPE_CURSOR: + case TYPE_HOOK: + case TYPE_CALLPROC: + case TYPE_ACCELTABLE: + case TYPE_SETWINDOWPOS: pi = GetW32ProcessInfo(); break; - case otMonitor: + case TYPE_MONITOR: pi = NULL; /* System */ break; @@ -207,7 +207,7 @@ UserHandleOwnerByType(USER_OBJECT_TYPE type) } /* allocate a user handle for a given object */ -HANDLE UserAllocHandle(PUSER_HANDLE_TABLE ht, PVOID object, USER_OBJECT_TYPE type ) +HANDLE UserAllocHandle(PUSER_HANDLE_TABLE ht, PVOID object, HANDLE_TYPE type ) { PUSER_HANDLE_ENTRY entry = alloc_user_entry(ht); if (!entry) @@ -226,7 +226,7 @@ HANDLE UserAllocHandle(PUSER_HANDLE_TABLE ht, PVOID object, USER_OBJECT_TYPE typ } /* return a pointer to a user object from its handle without setting an error */ -PVOID UserGetObjectNoErr(PUSER_HANDLE_TABLE ht, HANDLE handle, USER_OBJECT_TYPE type ) +PVOID UserGetObjectNoErr(PUSER_HANDLE_TABLE ht, HANDLE handle, HANDLE_TYPE type ) { PUSER_HANDLE_ENTRY entry; @@ -240,7 +240,7 @@ PVOID UserGetObjectNoErr(PUSER_HANDLE_TABLE ht, HANDLE handle, USER_OBJECT_TYPE } /* return a pointer to a user object from its handle */ -PVOID UserGetObject(PUSER_HANDLE_TABLE ht, HANDLE handle, USER_OBJECT_TYPE type ) +PVOID UserGetObject(PUSER_HANDLE_TABLE ht, HANDLE handle, HANDLE_TYPE type ) { PUSER_HANDLE_ENTRY entry; @@ -269,7 +269,7 @@ HANDLE get_user_full_handle(PUSER_HANDLE_TABLE ht, HANDLE handle ) /* Same as get_user_object plus set the handle to the full 32-bit value */ -void *get_user_object_handle(PUSER_HANDLE_TABLE ht, HANDLE* handle, USER_OBJECT_TYPE type ) +void *get_user_object_handle(PUSER_HANDLE_TABLE ht, HANDLE* handle, HANDLE_TYPE type ) { PUSER_HANDLE_ENTRY entry; @@ -317,7 +317,7 @@ UserCreateObject( PUSER_HANDLE_TABLE ht, PDESKTOP pDesktop, PTHREADINFO pti, HANDLE* h, - USER_OBJECT_TYPE type, + HANDLE_TYPE type, ULONG size) { HANDLE hi; @@ -336,11 +336,11 @@ UserCreateObject( PUSER_HANDLE_TABLE ht, switch (type) { - case otWindow: -// case otMenu: - case otHook: - case otCallProc: - case otInputContext: + case TYPE_WINDOW: +// case TYPE_MENU: + case TYPE_HOOK: + case TYPE_CALLPROC: + case TYPE_INPUTCONTEXT: Object = DesktopHeapAlloc(rpdesk, size); dt = TRUE; break; @@ -373,22 +373,22 @@ UserCreateObject( PUSER_HANDLE_TABLE ht, switch (type) { - case otWindow: - case otHook: - case otInputContext: + case TYPE_WINDOW: + case TYPE_HOOK: + case TYPE_INPUTCONTEXT: ((PTHRDESKHEAD)Object)->rpdesk = rpdesk; ((PTHRDESKHEAD)Object)->pSelf = Object; - case otEvent: + case TYPE_WINEVENTHOOK: ((PTHROBJHEAD)Object)->pti = pti; break; - case otMenu: - case otCallProc: + case TYPE_MENU: + case TYPE_CALLPROC: ((PPROCDESKHEAD)Object)->rpdesk = rpdesk; ((PPROCDESKHEAD)Object)->pSelf = Object; break; - case otCursorIcon: + case TYPE_CURSOR: ((PPROCMARKHEAD)Object)->ppi = ppi; break; @@ -410,7 +410,7 @@ FASTCALL UserDereferenceObject(PVOID object) { PUSER_HANDLE_ENTRY entry; - USER_OBJECT_TYPE type; + HANDLE_TYPE type; ASSERT(((PHEAD)object)->cLockObj >= 1); @@ -435,11 +435,11 @@ UserDereferenceObject(PVOID object) switch (type) { - case otWindow: -// case otMenu: - case otHook: - case otCallProc: - case otInputContext: + case TYPE_WINDOW: +// case TYPE_MENU: + case TYPE_HOOK: + case TYPE_CALLPROC: + case TYPE_INPUTCONTEXT: return DesktopHeapFree(((PTHRDESKHEAD)object)->rpdesk, object); default: @@ -482,7 +482,7 @@ UserObjectInDestroy(HANDLE h) BOOL FASTCALL -UserDeleteObject(HANDLE h, USER_OBJECT_TYPE type ) +UserDeleteObject(HANDLE h, HANDLE_TYPE type ) { PVOID body = UserGetObject(gHandleTable, h, type); @@ -504,7 +504,7 @@ UserReferenceObject(PVOID obj) PVOID FASTCALL -UserReferenceObjectByHandle(HANDLE handle, USER_OBJECT_TYPE type) +UserReferenceObjectByHandle(HANDLE handle, HANDLE_TYPE type) { PVOID object; @@ -518,7 +518,7 @@ UserReferenceObjectByHandle(HANDLE handle, USER_OBJECT_TYPE type) VOID FASTCALL -UserSetObjectOwner(PVOID obj, USER_OBJECT_TYPE type, PVOID owner) +UserSetObjectOwner(PVOID obj, HANDLE_TYPE type, PVOID owner) { PUSER_HANDLE_ENTRY entry = handle_to_entry(gHandleTable, ((PHEAD)obj)->h ); PPROCESSINFO ppi, oldppi; @@ -529,7 +529,7 @@ UserSetObjectOwner(PVOID obj, USER_OBJECT_TYPE type, PVOID owner) /* For now, only supported for CursorIcon object */ switch(type) { - case otCursorIcon: + case TYPE_CURSOR: ppi = (PPROCESSINFO)owner; entry->pi = ppi; oldppi = ((PPROCMARKHEAD)obj)->ppi; @@ -575,37 +575,37 @@ NtUserValidateHandleSecure( } switch (uType) { - case otWindow: + case TYPE_WINDOW: { if (UserGetWindowObject((HWND) handle)) return TRUE; return FALSE; } - case otMenu: + case TYPE_MENU: { if (UserGetMenuObject((HMENU) handle)) return TRUE; return FALSE; } - case otAccel: + case TYPE_ACCELTABLE: { if (UserGetAccelObject((HACCEL) handle)) return TRUE; return FALSE; } - case otCursorIcon: + case TYPE_CURSOR: { if (UserGetCurIconObject((HCURSOR) handle)) return TRUE; return FALSE; } - case otHook: + case TYPE_HOOK: { if (IntGetHookObject((HHOOK) handle)) return TRUE; return FALSE; } - case otMonitor: + case TYPE_MONITOR: { if (UserGetMonitorObject((HMONITOR) handle)) return TRUE; return FALSE; } - case otCallProc: + case TYPE_CALLPROC: { WNDPROC_INFO Proc; return UserGetCallProcInfo( handle, &Proc ); diff --git a/reactos/win32ss/user/ntuser/object.h b/reactos/win32ss/user/ntuser/object.h index 08ae96ebcb2..2ab5f36da05 100644 --- a/reactos/win32ss/user/ntuser/object.h +++ b/reactos/win32ss/user/ntuser/object.h @@ -31,16 +31,16 @@ UserAssertLastRef(PVOID obj, const char *file, int line) extern PUSER_HANDLE_TABLE gHandleTable; VOID FASTCALL UserReferenceObject(PVOID obj); -PVOID FASTCALL UserReferenceObjectByHandle(HANDLE handle, USER_OBJECT_TYPE type); +PVOID FASTCALL UserReferenceObjectByHandle(HANDLE handle, HANDLE_TYPE type); BOOL FASTCALL UserDereferenceObject(PVOID obj); -PVOID FASTCALL UserCreateObject(PUSER_HANDLE_TABLE ht, struct _DESKTOP* pDesktop, PTHREADINFO pti, HANDLE* h,USER_OBJECT_TYPE type , ULONG size); -BOOL FASTCALL UserDeleteObject(HANDLE h, USER_OBJECT_TYPE type ); -PVOID UserGetObject(PUSER_HANDLE_TABLE ht, HANDLE handle, USER_OBJECT_TYPE type ); -PVOID UserGetObjectNoErr(PUSER_HANDLE_TABLE, HANDLE, USER_OBJECT_TYPE); +PVOID FASTCALL UserCreateObject(PUSER_HANDLE_TABLE ht, struct _DESKTOP* pDesktop, PTHREADINFO pti, HANDLE* h,HANDLE_TYPE type , ULONG size); +BOOL FASTCALL UserDeleteObject(HANDLE h, HANDLE_TYPE type ); +PVOID UserGetObject(PUSER_HANDLE_TABLE ht, HANDLE handle, HANDLE_TYPE type ); +PVOID UserGetObjectNoErr(PUSER_HANDLE_TABLE, HANDLE, HANDLE_TYPE); BOOL FASTCALL UserCreateHandleTable(VOID); BOOL FASTCALL UserObjectInDestroy(HANDLE); void DbgUserDumpHandleTable(); -VOID FASTCALL UserSetObjectOwner(PVOID obj, USER_OBJECT_TYPE type, PVOID owner); +VOID FASTCALL UserSetObjectOwner(PVOID obj, HANDLE_TYPE type, PVOID owner); static __inline VOID UserRefObjectCo(PVOID obj, PUSER_REFERENCE_ENTRY UserReferenceEntry) diff --git a/reactos/win32ss/user/ntuser/painting.c b/reactos/win32ss/user/ntuser/painting.c index 5779fff20d2..e2916165a5a 100644 --- a/reactos/win32ss/user/ntuser/painting.c +++ b/reactos/win32ss/user/ntuser/painting.c @@ -1141,7 +1141,7 @@ NtUserFlashWindowEx(IN PFLASHWINFO pfwi) if (!Ret) goto Exit; - if (!( pWnd = (PWND)UserGetObject(gHandleTable, finfo.hwnd, otWindow)) || + if (!( pWnd = (PWND)UserGetObject(gHandleTable, finfo.hwnd, TYPE_WINDOW)) || finfo.cbSize != sizeof(FLASHWINFO) || finfo.dwFlags & ~(FLASHW_ALL|FLASHW_TIMER|FLASHW_TIMERNOFG) ) { diff --git a/reactos/win32ss/user/ntuser/simplecall.c b/reactos/win32ss/user/ntuser/simplecall.c index 6eff2c8d490..9f8e698486f 100644 --- a/reactos/win32ss/user/ntuser/simplecall.c +++ b/reactos/win32ss/user/ntuser/simplecall.c @@ -186,13 +186,13 @@ NtUserCallOneParam( NULL, NULL, (PHANDLE)&hDwp, - otSMWP, + TYPE_SETWINDOWPOS, sizeof(SMWP)); if (!psmwp) RETURN(0); psmwp->acvr = ExAllocatePoolWithTag(PagedPool, count * sizeof(CVR), USERTAG_SWP); if (!psmwp->acvr) { - UserDeleteObject(hDwp, otSMWP); + UserDeleteObject(hDwp, TYPE_SETWINDOWPOS); RETURN(0); } RtlZeroMemory(psmwp->acvr, count * sizeof(CVR)); diff --git a/reactos/win32ss/user/ntuser/timer.c b/reactos/win32ss/user/ntuser/timer.c index 9271eddf1d7..f113be3400b 100644 --- a/reactos/win32ss/user/ntuser/timer.c +++ b/reactos/win32ss/user/ntuser/timer.c @@ -56,7 +56,7 @@ CreateTimer(VOID) HANDLE Handle; PTIMER Ret = NULL; - Ret = UserCreateObject(gHandleTable, NULL, NULL, &Handle, otTimer, sizeof(TIMER)); + Ret = UserCreateObject(gHandleTable, NULL, NULL, &Handle, TYPE_TIMER, sizeof(TIMER)); if (Ret) { Ret->head.h = Handle; @@ -86,7 +86,7 @@ RemoveTimer(PTIMER pTmr) IntUnlockWindowlessTimerBitmap(); } UserDereferenceObject(pTmr); - Ret = UserDeleteObject( UserHMGetHandle(pTmr), otTimer); + Ret = UserDeleteObject( UserHMGetHandle(pTmr), TYPE_TIMER); } if (!Ret) ERR("Warning: Unable to delete timer\n"); diff --git a/reactos/win32ss/user/ntuser/win32.h b/reactos/win32ss/user/ntuser/win32.h index 4bec70a8772..5a7d2178e8f 100644 --- a/reactos/win32ss/user/ntuser/win32.h +++ b/reactos/win32ss/user/ntuser/win32.h @@ -225,7 +225,7 @@ typedef struct _PROCESSINFO #if DBG BYTE DbgChannelLevel[DbgChCount]; - DWORD DbgHandleCount[USER_HANDLE_TYPE_COUNT]; + DWORD DbgHandleCount[TYPE_CTYPES]; #endif } PROCESSINFO; diff --git a/reactos/win32ss/user/ntuser/window.c b/reactos/win32ss/user/ntuser/window.c index db4f50f9fa4..217d8af29f5 100644 --- a/reactos/win32ss/user/ntuser/window.c +++ b/reactos/win32ss/user/ntuser/window.c @@ -90,7 +90,7 @@ PWND FASTCALL VerifyWnd(PWND pWnd) PWND FASTCALL ValidateHwndNoErr(HWND hWnd) { - if (hWnd) return (PWND)UserGetObjectNoErr(gHandleTable, hWnd, otWindow); + if (hWnd) return (PWND)UserGetObjectNoErr(gHandleTable, hWnd, TYPE_WINDOW); return NULL; } @@ -105,7 +105,7 @@ PWND FASTCALL UserGetWindowObject(HWND hWnd) return NULL; } - Window = (PWND)UserGetObject(gHandleTable, hWnd, otWindow); + Window = (PWND)UserGetObject(gHandleTable, hWnd, TYPE_WINDOW); if (!Window || 0 != (Window->state & WNDS_DESTROYED)) { EngSetLastError(ERROR_INVALID_WINDOW_HANDLE); @@ -555,7 +555,7 @@ static LRESULT co_UserFreeWindow(PWND Window, IntUnlinkWindow(Window); UserReferenceObject(Window); - UserDeleteObject(Window->head.h, otWindow); + UserDeleteObject(Window->head.h, TYPE_WINDOW); IntDestroyScrollBars(Window); @@ -662,7 +662,7 @@ IntSetWindowProc(PWND pWnd, if (IsCallProcHandle(NewWndProc)) { - CallProc = UserGetObject(gHandleTable, NewWndProc, otCallProc); + CallProc = UserGetObject(gHandleTable, NewWndProc, TYPE_CALLPROC); if (CallProc) { // Reset new WndProc. NewWndProc = CallProc->pfnClientPrevious; @@ -1717,7 +1717,7 @@ PWND FASTCALL IntCreateWindow(CREATESTRUCTW* Cs, pdeskCreated ? pdeskCreated : pti->rpdesk, pti, (PHANDLE)&hWnd, - otWindow, + TYPE_WINDOW, sizeof(WND) + Class->cbwndExtra); if (!pWnd) diff --git a/reactos/win32ss/user/ntuser/winpos.c b/reactos/win32ss/user/ntuser/winpos.c index 78f2ed52d20..f740ec188fd 100644 --- a/reactos/win32ss/user/ntuser/winpos.c +++ b/reactos/win32ss/user/ntuser/winpos.c @@ -2472,7 +2472,7 @@ IntDeferWindowPos( HDWP hdwp, return NULL; } - if (!(pDWP = (PSMWP)UserGetObject(gHandleTable, hdwp, otSMWP))) + if (!(pDWP = (PSMWP)UserGetObject(gHandleTable, hdwp, TYPE_SETWINDOWPOS))) { EngSetLastError(ERROR_INVALID_DWP_HANDLE); return NULL; @@ -2543,7 +2543,7 @@ BOOL FASTCALL IntEndDeferWindowPosEx( HDWP hdwp, BOOL sAsync ) TRACE("%p\n", hdwp); - if (!(pDWP = (PSMWP)UserGetObject(gHandleTable, hdwp, otSMWP))) + if (!(pDWP = (PSMWP)UserGetObject(gHandleTable, hdwp, TYPE_SETWINDOWPOS))) { EngSetLastError(ERROR_INVALID_DWP_HANDLE); return FALSE; @@ -2597,7 +2597,7 @@ BOOL FASTCALL IntEndDeferWindowPosEx( HDWP hdwp, BOOL sAsync ) } ExFreePoolWithTag(pDWP->acvr, USERTAG_SWP); UserDereferenceObject(pDWP); - UserDeleteObject(hdwp, otSMWP); + UserDeleteObject(hdwp, TYPE_SETWINDOWPOS); return res; } diff --git a/reactos/win32ss/user/user32/include/user_x.h b/reactos/win32ss/user/user32/include/user_x.h index f27d4520892..b51bfcdcd1d 100644 --- a/reactos/win32ss/user/user32/include/user_x.h +++ b/reactos/win32ss/user/user32/include/user_x.h @@ -109,4 +109,4 @@ static __inline void LoadUserApiHook() #define HOOKID_TO_FLAG(HookId) (1 << ((HookId) + 1)) #define ISITHOOKED(HookId) (GetWin32ClientInfo()->fsHooks & HOOKID_TO_FLAG(HookId) ||\ (GetWin32ClientInfo()->pDeskInfo && GetWin32ClientInfo()->pDeskInfo->fsHooks & HOOKID_TO_FLAG(HookId))) - \ No newline at end of file + diff --git a/reactos/win32ss/user/user32/misc/misc.c b/reactos/win32ss/user/user32/misc/misc.c index 6763a613340..a54857067c8 100644 --- a/reactos/win32ss/user/user32/misc/misc.c +++ b/reactos/win32ss/user/user32/misc/misc.c @@ -303,24 +303,30 @@ GetUser32Handle(HANDLE handle) /* * Decide whether an object is located on the desktop or shared heap */ -static const BOOL g_ObjectHeapTypeShared[otEvent + 1] = +static const BOOL g_ObjectHeapTypeShared[TYPE_CTYPES] = { - FALSE, /* otFree (not used) */ - FALSE, /* otWindow */ - TRUE, /* otMenu FALSE */ - TRUE, /* otCursorIcon */ - TRUE, /* otSMWP */ - FALSE, /* otHook */ - FALSE, /* (not used) */ - FALSE, /* otCallProc */ - TRUE, /* otAccel */ - FALSE, /* (not used) */ - FALSE, /* (not used) */ - FALSE, /* (not used) */ - TRUE, /* otMonitor */ - FALSE, /* (not used) */ - FALSE, /* (not used) */ - TRUE /* otEvent */ + FALSE, /* TYPE_FREE (not used) */ + FALSE, /* TYPE_WINDOW */ + TRUE, /* TYPE_MENU FALSE */ + TRUE, /* TYPE_CURSOR */ + TRUE, /* TYPE_SETWINDOWPOS */ + FALSE, /* TYPE_HOOK */ + FALSE, /* TYPE_CLIPDATA */ + FALSE, /* TYPE_CALLPROC */ + TRUE, /* TYPE_ACCELTABLE */ + FALSE, /* TYPE_DDEACCESS */ + FALSE, /* TYPE_DDECONV */ + FALSE, /* TYPE_DDEXACT */ + TRUE, /* TYPE_MONITOR */ + FALSE, /* TYPE_KBDLAYOUT */ + FALSE, /* TYPE_KBDFILE */ + TRUE /* TYPE_WINEVENTHOOK */ + FALSE, /* TYPE_TIMER */ + FALSE, /* TYPE_INPUTCONTEXT */ + FALSE, /* TYPE_HIDDATA */ + FALSE, /* TYPE_DEVICEINFO */ + FALSE, /* TYPE_TOUCHINPUTINFO */ + FALSE, /* TYPE_GESTUREINFOOBJ */ }; // @@ -333,7 +339,7 @@ ValidateHandle(HANDLE handle, UINT uType) PVOID ret; PUSER_HANDLE_ENTRY pEntry; - ASSERT(uType <= otEvent); + ASSERT(uType < TYPE_CTYPES); pEntry = GetUser32Handle(handle); @@ -348,22 +354,22 @@ ValidateHandle(HANDLE handle, UINT uType) { switch ( uType ) { // Test (with wine too) confirms these results! - case otWindow: + case TYPE_WINDOW: SetLastError(ERROR_INVALID_WINDOW_HANDLE); break; - case otMenu: + case TYPE_MENU: SetLastError(ERROR_INVALID_MENU_HANDLE); break; - case otCursorIcon: + case TYPE_CURSOR: SetLastError(ERROR_INVALID_CURSOR_HANDLE); break; - case otSMWP: + case TYPE_SETWINDOWPOS: SetLastError(ERROR_INVALID_DWP_HANDLE); break; - case otHook: + case TYPE_HOOK: SetLastError(ERROR_INVALID_HOOK_HANDLE); break; - case otAccel: + case TYPE_ACCELTABLE: SetLastError(ERROR_INVALID_ACCEL_HANDLE); break; default: @@ -391,7 +397,7 @@ ValidateHandleNoErr(HANDLE handle, UINT uType) PVOID ret; PUSER_HANDLE_ENTRY pEntry; - ASSERT(uType <= otEvent); + ASSERT(uType < TYPE_CTYPES); pEntry = GetUser32Handle(handle); @@ -419,7 +425,7 @@ ValidateCallProc(HANDLE hCallProc) { PUSER_HANDLE_ENTRY pEntry; - PCALLPROCDATA CallProc = ValidateHandle(hCallProc, otCallProc); + PCALLPROCDATA CallProc = ValidateHandle(hCallProc, TYPE_CALLPROC); pEntry = GetUser32Handle(hCallProc); @@ -444,7 +450,7 @@ ValidateHwnd(HWND hwnd) if (hwnd && hwnd == ClientInfo->CallbackWnd.hWnd) return ClientInfo->CallbackWnd.pWnd; - return ValidateHandle((HANDLE)hwnd, otWindow); + return ValidateHandle((HANDLE)hwnd, TYPE_WINDOW); } // @@ -462,7 +468,7 @@ ValidateHwndNoErr(HWND hwnd) if (hwnd == ClientInfo->CallbackWnd.hWnd) return ClientInfo->CallbackWnd.pWnd; - Wnd = ValidateHandleNoErr((HANDLE)hwnd, otWindow); + Wnd = ValidateHandleNoErr((HANDLE)hwnd, TYPE_WINDOW); if (Wnd != NULL) { return Wnd; diff --git a/reactos/win32ss/user/user32/windows/menu.c b/reactos/win32ss/user/user32/windows/menu.c index 2f544a7abed..c5a2766c631 100644 --- a/reactos/win32ss/user/user32/windows/menu.c +++ b/reactos/win32ss/user/user32/windows/menu.c @@ -3241,7 +3241,7 @@ static INT FASTCALL MenuTrackMenu(HMENU hmenu, UINT wFlags, INT x, INT y, while (! fEndMenu) { BOOL ErrorExit = FALSE; - PVOID menu = ValidateHandle(mt.CurrentMenu, otMenu); + PVOID menu = ValidateHandle(mt.CurrentMenu, TYPE_MENU); if (!menu) /* sometimes happens if I do a window manager close */ break; @@ -4767,7 +4767,7 @@ WINAPI IsMenu( HMENU Menu) { - if (ValidateHandle(Menu, otMenu)) return TRUE; + if (ValidateHandle(Menu, TYPE_MENU)) return TRUE; return FALSE; } From 4cad6be248c6d80d4493bacbf1d261b69c92bbd7 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 29 Dec 2012 19:17:59 +0000 Subject: [PATCH 08/96] Fix build svn path=/trunk/; revision=58042 --- reactos/win32ss/user/user32/misc/misc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/win32ss/user/user32/misc/misc.c b/reactos/win32ss/user/user32/misc/misc.c index a54857067c8..0985de5b5dc 100644 --- a/reactos/win32ss/user/user32/misc/misc.c +++ b/reactos/win32ss/user/user32/misc/misc.c @@ -320,7 +320,7 @@ static const BOOL g_ObjectHeapTypeShared[TYPE_CTYPES] = TRUE, /* TYPE_MONITOR */ FALSE, /* TYPE_KBDLAYOUT */ FALSE, /* TYPE_KBDFILE */ - TRUE /* TYPE_WINEVENTHOOK */ + TRUE, /* TYPE_WINEVENTHOOK */ FALSE, /* TYPE_TIMER */ FALSE, /* TYPE_INPUTCONTEXT */ FALSE, /* TYPE_HIDDATA */ From be155668e0d78a8049ab4426c37254202f457a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sat, 29 Dec 2012 19:23:02 +0000 Subject: [PATCH 09/96] [CONFIGURE] Fix MSVC configure build (problem of expansion of environment variables). svn path=/trunk/; revision=58043 --- reactos/configure.cmd | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/reactos/configure.cmd b/reactos/configure.cmd index c3fa0a6af13..b4b59087186 100755 --- a/reactos/configure.cmd +++ b/reactos/configure.cmd @@ -1,5 +1,12 @@ @echo off +:: This is needed so as to avoid static expansion of environment variables +:: inside if (...) conditionals. +:: See http://stackoverflow.com/questions/305605/weird-scope-issue-in-bat-file +:: for more explanation. +:: Precisely needed for configuring Visual Studio Environment. +setlocal enabledelayedexpansion + :: Special case %1 = arm_hosttools %2 = vcvarsall.bat %3 = %CMAKE_GENERATOR% if /I "%1" == "arm_hosttools" ( echo Configuring x86 host tools for ARM cross build @@ -46,7 +53,7 @@ if defined ROS_ARCH ( set USE_WDK_HEADERS=0 ) else if defined VCINSTALLDIR ( - :: VS command prompt does not put this in enviroment vars + :: VS command prompt does not put this in environment vars cl 2>&1 | find "x86" > NUL && set ARCH=i386 cl 2>&1 | find "x64" > NUL && set ARCH=amd64 cl 2>&1 | find "ARM" > NUL && set ARCH=arm @@ -59,30 +66,30 @@ if defined ROS_ARCH ( exit /b ) - echo Detected Visual Studio Environment %BUILD_ENVIRONMENT%-%ARCH% + echo Detected Visual Studio Environment !BUILD_ENVIRONMENT!-!ARCH! if /I "%1" == "VSSolution" ( - if "%BUILD_ENVIRONMENT%" == "VS8" ( - if "%ARCH%" == "amd64" ( + if "!BUILD_ENVIRONMENT!" == "VS8" ( + if "!ARCH!" == "amd64" ( set CMAKE_GENERATOR="Visual Studio 8 2005 Win64" ) else ( set CMAKE_GENERATOR="Visual Studio 8 2005" ) - ) else if "%BUILD_ENVIRONMENT%" == "VS9" ( - if "%ARCH%" == "amd64" ( + ) else if "!BUILD_ENVIRONMENT!" == "VS9" ( + if "!ARCH!" == "amd64" ( set CMAKE_GENERATOR="Visual Studio 9 2008 Win64" ) else ( set CMAKE_GENERATOR="Visual Studio 9 2008" ) - ) else if "%BUILD_ENVIRONMENT%" == "VS10" ( - if "%ARCH%" == "amd64" ( + ) else if "!BUILD_ENVIRONMENT!" == "VS10" ( + if "!ARCH!" == "amd64" ( set CMAKE_GENERATOR="Visual Studio 10 Win64" ) else ( set CMAKE_GENERATOR="Visual Studio 10" ) - ) else if "%BUILD_ENVIRONMENT%" == "VS11" ( - if "%ARCH%" == "amd64" ( + ) else if "!BUILD_ENVIRONMENT!" == "VS11" ( + if "!ARCH!" == "amd64" ( set CMAKE_GENERATOR="Visual Studio 11 Win64" - ) else if "%ARCH%" == "arm" ( + ) else if "!ARCH!" == "arm" ( set CMAKE_GENERATOR="Visual Studio 11 ARM" ) else ( set CMAKE_GENERATOR="Visual Studio 11" @@ -111,7 +118,7 @@ if defined ROS_ARCH ( :: Checkpoint if not defined ARCH ( - echo unknown build architecture + echo Unknown build architecture exit /b ) From 2fb2a00e74adc371e306c1084ad8d8fb2a0e56b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sat, 29 Dec 2012 20:16:21 +0000 Subject: [PATCH 10/96] =?UTF-8?q?[WPP]=20Apply=20Wine=20commit=20"wpp:=20F?= =?UTF-8?q?ix=20path=20separator=20on=20Windows=20platforms."=20by=20Herm?= =?UTF-8?q?=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto=20(9dbd1969fca9c31155c6d85ea8?= =?UTF-8?q?129d249467926b)=20Indeed,=20Windows=20systems=20use=20':'=20as?= =?UTF-8?q?=20part=20of=20paths=20and=20therefore,=20use=20another=20separ?= =?UTF-8?q?ator=20character.=20This=20enables=20compiling=20ReactOS=20from?= =?UTF-8?q?=20source=20files=20located=20in=20a=20different=20disk=20parti?= =?UTF-8?q?tion=20as=20the=20generated=20(output)=20files.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CORE-6442 #resolve #comment Committed in r58044. svn path=/trunk/; revision=58044 --- reactos/tools/wpp/preproc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/tools/wpp/preproc.c b/reactos/tools/wpp/preproc.c index 99934d69944..2575b006d84 100644 --- a/reactos/tools/wpp/preproc.c +++ b/reactos/tools/wpp/preproc.c @@ -447,7 +447,7 @@ pp_entry_t *pp_add_macro(char *id, marg_t *args[], int nargs, mtext_t *exp) * Include management *------------------------------------------------------------------------- */ -#if defined(_Windows) || defined(__MSDOS__) +#if defined(_WIN32) || defined(__MSDOS__) #define INCLUDESEPARATOR ";" #else #define INCLUDESEPARATOR ":" From 56ba815b08ba0ddaf07dc2aa462c9211956cfc01 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 29 Dec 2012 20:51:38 +0000 Subject: [PATCH 11/96] [NETAPI32] Formatting! No code changes! svn path=/trunk/; revision=58045 --- reactos/dll/win32/netapi32/apibuf.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/reactos/dll/win32/netapi32/apibuf.c b/reactos/dll/win32/netapi32/apibuf.c index 4a241e23a61..2e7ad5118ce 100644 --- a/reactos/dll/win32/netapi32/apibuf.c +++ b/reactos/dll/win32/netapi32/apibuf.c @@ -54,19 +54,20 @@ NET_API_STATUS WINAPI NetApiBufferReallocate(LPVOID OldBuffer, DWORD NewByteCoun LPVOID* NewBuffer) { TRACE("(%p, %d, %p)\n", OldBuffer, NewByteCount, NewBuffer); - if (NewByteCount) + if (NewByteCount) { if (OldBuffer) *NewBuffer = HeapReAlloc(GetProcessHeap(), 0, OldBuffer, NewByteCount); else *NewBuffer = HeapAlloc(GetProcessHeap(), 0, NewByteCount); - return *NewBuffer ? NERR_Success : GetLastError(); - } - else + return *NewBuffer ? NERR_Success : GetLastError(); + } + else { - if (!HeapFree(GetProcessHeap(), 0, OldBuffer)) return GetLastError(); - *NewBuffer = 0; - return NERR_Success; + if (!HeapFree(GetProcessHeap(), 0, OldBuffer)) + return GetLastError(); + *NewBuffer = 0; + return NERR_Success; } } From 776eeb022a2e48712fa0eb133d0cc93f42ef2e12 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 29 Dec 2012 21:40:41 +0000 Subject: [PATCH 12/96] [NTOSKRNL] In NtAllocateVirtualMemory, when MEM_RESET is passed, silence the DPRINT and also return STATUS_SUCCESS, since MEM_RESET is only an optimization (tells the memory manager that the contents shouldn't be written to the pagefile) and it won't hurt (except the performance) to pretend success. On the other hand paging out is probably never done anyway due to broken Mm. This fixes spamming the log by Firefox. It does not fix the hangs that firfox suffers from. svn path=/trunk/; revision=58047 --- reactos/ntoskrnl/mm/ARM3/virtual.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/reactos/ntoskrnl/mm/ARM3/virtual.c b/reactos/ntoskrnl/mm/ARM3/virtual.c index 65f2701e173..0504471cdf2 100644 --- a/reactos/ntoskrnl/mm/ARM3/virtual.c +++ b/reactos/ntoskrnl/mm/ARM3/virtual.c @@ -3861,8 +3861,9 @@ NtAllocateVirtualMemory(IN HANDLE ProcessHandle, } if ((AllocationType & MEM_RESET) == MEM_RESET) { - DPRINT1("MEM_RESET not supported\n"); - Status = STATUS_INVALID_PARAMETER; + /// @todo HACK: pretend success + DPRINT("MEM_RESET not supported\n"); + Status = STATUS_SUCCESS; goto FailPathNoLock; } if (Process->VmTopDown == 1) From 73a5534922d86da1a5f33651454c925abe31b6da Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 30 Dec 2012 10:07:38 +0000 Subject: [PATCH 13/96] [SHELL32] - Fix exports CORE-6846 #resolve svn path=/trunk/; revision=58048 --- reactos/dll/win32/shell32/shell32.spec | 402 +++++++++++++------------ 1 file changed, 202 insertions(+), 200 deletions(-) diff --git a/reactos/dll/win32/shell32/shell32.spec b/reactos/dll/win32/shell32/shell32.spec index 589ec730ab2..e8324b5966c 100644 --- a/reactos/dll/win32/shell32/shell32.spec +++ b/reactos/dll/win32/shell32/shell32.spec @@ -1,4 +1,3 @@ -# Functions exported by the WinXP SP3 shell32.dll (6.0.2900.5686) 2 stdcall SHChangeNotifyRegister(long long long long long ptr) 3 stdcall SHDefExtractIconA(str long long ptr ptr long) 4 stdcall SHChangeNotifyDeregister(long) @@ -27,7 +26,7 @@ 27 stdcall ILSaveToStream(ptr ptr) 28 stdcall SHILCreateFromPath(ptr ptr ptr) SHILCreateFromPathAW 29 stdcall -noname PathIsRoot(ptr) PathIsRootAW -30 stdcall -noname PathBuildRoot(ptr long) PathBuildRootAW +30 stdcall -noname PathBuildRoot(ptr long) PathBuildRootAW # FIXME: should be PathBuildRootW 31 stdcall -noname PathFindExtension(wstr) PathFindExtensionW 32 stdcall -noname PathAddBackslash(wstr) PathAddBackslashW 33 stdcall -noname PathRemoveBlanks(wstr) PathRemoveBlanksW @@ -41,7 +40,6 @@ 41 stdcall IsLFNDriveA(str) 42 stdcall IsLFNDriveW(wstr) 43 stdcall PathIsExe(ptr) PathIsExeAW -44 stdcall OpenAs_RunDLL(long long str long) OpenAs_RunDLLA 45 stdcall -noname PathFileExists(ptr) PathFileExistsAW # Fixme 46 stdcall -noname PathMatchSpec(wstr wstr) PathMatchSpecW 47 stdcall PathMakeUniqueName(ptr long ptr ptr ptr) PathMakeUniqueNameAW @@ -50,7 +48,7 @@ 50 stdcall -noname PathStripToRoot(wstr) PathStripToRootW 51 stdcall PathResolve(str long long) PathResolveAW 52 stdcall -noname PathGetArgs(wstr) PathGetArgsW -53 stdcall -noname IsSuspendAllowed() +53 stdcall -noname IsSuspendAllowed() # FIXME: Wine says DoEnvironmentSubst 54 stdcall -noname LogoffWindowsDialog(ptr) 55 stdcall -noname PathQuoteSpaces(wstr) PathQuoteSpacesW 56 stdcall -noname PathUnquoteSpaces(wstr) PathUnquoteSpacesW @@ -68,27 +66,26 @@ 68 stdcall SHGetSetSettings(ptr long long) 69 stdcall -noname SHGetNetResource(ptr long ptr long) 70 stdcall -noname SHCreateDefClassObject(long long long long long) -71 stdcall -noname Shell_GetImageLists(ptr ptr) +71 stdcall Shell_GetImageLists(ptr ptr) 72 stdcall Shell_GetCachedImageIndex(ptr ptr long) Shell_GetCachedImageIndexAW 73 stdcall SHShellFolderView_Message(long long long) 74 stdcall SHCreateStdEnumFmtEtc(long ptr ptr) 75 stdcall PathYetAnotherMakeUniqueName(ptr wstr wstr wstr) -76 stdcall DragQueryInfo(ptr ptr) +76 stdcall -noname DragQueryInfo(ptr ptr) 77 stdcall SHMapPIDLToSystemImageListIndex(ptr ptr ptr) 78 stdcall -noname OleStrToStrN(str long wstr long) OleStrToStrNAW # Fixme 79 stdcall -noname StrToOleStrN(wstr long str long) StrToOleStrNAW # Fixme 80 stdcall SHOpenPropSheetW(wstr ptr long ptr ptr ptr wstr) -81 stdcall OpenAs_RunDLLA(long long str long) 82 stdcall -noname DDECreatePostNotify(ptr) 83 stdcall -noname CIDLData_CreateFromIDArray(ptr long ptr ptr) -84 stdcall SHIsBadInterfacePtr(ptr long) # Fixme +84 stdcall -noname SHIsBadInterfacePtr(ptr long) # Fixme 85 stdcall OpenRegStream(long str str long) shlwapi.SHOpenRegStreamA 86 stdcall -noname SHRegisterDragDrop(long ptr) 87 stdcall -noname SHRevokeDragDrop(long) 88 stdcall SHDoDragDrop(long ptr ptr long ptr) 89 stdcall SHCloneSpecialIDList(long long long) 90 stdcall SHFindFiles(ptr ptr) -91 stdcall SHFindComputer(ptr ptr) +91 stdcall -noname SHFindComputer(ptr ptr) 92 stdcall PathGetShortPath(ptr) PathGetShortPathAW 93 stdcall -noname Win32CreateDirectory(wstr ptr) Win32CreateDirectoryW 94 stdcall -noname Win32RemoveDirectory(wstr) Win32RemoveDirectoryW @@ -98,31 +95,12 @@ 98 stdcall SHGetRealIDL(ptr ptr ptr) 99 stdcall -noname SetAppStartingCursor(long long) # Fixme 100 stdcall SHRestricted(long) -101 stdcall OpenAs_RunDLLW(long long wstr long) 102 stdcall SHCoCreateInstance(wstr ptr long ptr ptr) -103 stdcall SignalFileOpen(long) -104 stdcall Activate_RunDLL(long ptr ptr ptr) -105 stdcall AppCompat_RunDLLW(ptr ptr wstr long) -106 stdcall CheckEscapesA(str long) -107 stdcall CheckEscapesW(wstr long) -108 stdcall CommandLineToArgvW(wstr ptr) -109 stdcall Control_FillCache_RunDLL(long long long long) Control_FillCache_RunDLLA -110 stdcall Control_FillCache_RunDLLA(long long long long) -111 stdcall Control_FillCache_RunDLLW(long long long long) -112 stdcall Control_RunDLL(ptr ptr str long) Control_RunDLLA -113 stdcall Control_RunDLLA(ptr ptr str long) -114 stdcall Control_RunDLLAsUserW(ptr ptr wstr long) -115 stdcall Control_RunDLLW(ptr ptr wstr long) -@ stdcall -private DllCanUnloadNow() -@ stdcall -private DllGetClassObject(ptr ptr ptr) -118 stdcall DllGetVersion(ptr) +103 stdcall SignalFileOpen(ptr) 119 stdcall IsLFNDrive(ptr) IsLFNDriveAW -@ stdcall -private DllInstall(long wstr) 121 stdcall SHFlushClipboard() 122 stdcall -noname RunDLL_CallEntry16(long long long str long) # Fixme #name wrong? 123 stdcall -noname SHFreeUnusedLibraries() -@ stdcall -private DllRegisterServer() -@ stdcall -private DllUnregisterServer() 126 stdcall -noname SHOutOfMemoryMessageBox(long long long) # Fixme 127 stdcall -noname SHWinHelp(long long long long) 128 stdcall -noname SHDllGetClassObject(ptr ptr ptr) DllGetClassObject @@ -130,24 +108,14 @@ 130 stdcall -noname DAD_DragEnter(long) 131 stdcall DAD_DragEnterEx(long double) 132 stdcall DAD_DragLeave() -133 stdcall DoEnvironmentSubstA(str str) 134 stdcall DAD_DragMove(double) -135 stdcall DoEnvironmentSubstW(wstr wstr) 136 stdcall DAD_SetDragImage(long long) 137 stdcall DAD_ShowDragImage(long) -138 stdcall DragAcceptFiles(long long) -139 stdcall DragFinish(long) -140 stdcall DragQueryFile(long long ptr long) DragQueryFileA -141 stdcall DragQueryFileA(long long ptr long) -142 stdcall DragQueryFileAorW(ptr long wstr long long long) -143 stdcall DragQueryFileW(long long ptr long) -144 stdcall DragQueryPoint(long ptr) 145 stdcall -noname PathFindOnPath(wstr wstr) PathFindOnPathW 146 stdcall -noname RLBuildListOfPaths() 147 stdcall SHCLSIDFromString(long long) SHCLSIDFromStringAW 148 stdcall SHMapIDListToImageListIndexAsync(ptr ptr ptr long ptr ptr ptr ptr ptr) 149 stdcall SHFind_InitMenuPopup(long long long long) -150 stdcall DuplicateIcon(long long) 151 stdcall SHLoadOLE(long) 152 stdcall ILGetSize(ptr) 153 stdcall ILGetNext(ptr) @@ -157,7 +125,7 @@ 157 stdcall ILCreateFromPath(ptr) ILCreateFromPathAW 158 stdcall -noname PathGetExtension(wstr long long) SHPathGetExtensionW 159 stdcall -noname PathIsDirectory(wstr) PathIsDirectoryW -160 stdcall SHNetConnectionDialog(ptr wstr long) # Fixme +160 stdcall -noname SHNetConnectionDialog(ptr wstr long) # Fixme 161 stdcall SHRunControlPanel(long long) 162 stdcall SHSimpleIDListFromPath(ptr) SHSimpleIDListFromPathAW # Fixme 163 stdcall -noname StrToOleStr(wstr str) StrToOleStrAW # Fixme @@ -179,8 +147,8 @@ 179 stdcall SHGetNewLinkInfoA(str str ptr long long) 180 stdcall SHGetNewLinkInfoW(wstr wstr ptr long long) 181 stdcall -noname RegisterShellHook(long long) -182 varargs ShellMessageBoxA(long long str str long) -183 varargs ShellMessageBoxW(long long wstr wstr long) +182 varargs ShellMessageBoxW(long long wstr wstr long) +183 varargs ShellMessageBoxA(long long str str long) 184 stdcall -noname ArrangeWindows(long long long long long) 185 stdcall -noname SHHandleDiskFull(ptr long) # Fixme 186 stdcall -noname ILGetDisplayNameEx(ptr ptr ptr long) @@ -196,16 +164,13 @@ 196 stdcall SHAlloc(long) 197 stdcall -noname SHGlobalDefect(long) 198 stdcall -noname SHAbortInvokeCommand() -199 stdcall ExtractAssociatedIconA(long str ptr) +# FIXME: Wine has SHGetFileIcon/SHLocalAlloc/SHLocalFree/SHLocalReAlloc from 199-202 200 stdcall -noname SHCreateDesktop(ptr) 201 stdcall -noname SHDesktopMessageLoop(ptr) 202 stub -noname DDEHandleViewFolderNotify 203 stdcall -noname AddCommasW(long wstr) 204 stdcall -noname ShortSizeFormatW(double) -205 stdcall Printer_LoadIconsW(wstr ptr ptr) -206 stdcall ExtractAssociatedIconExA(long str long long) -207 stdcall ExtractAssociatedIconExW(long wstr long long) -208 stdcall ExtractAssociatedIconW(long wstr ptr) +205 stdcall -noname Printer_LoadIconsW(wstr ptr ptr) 209 stdcall -noname Int64ToString(double wstr long long ptr long) # Fixme 210 stdcall -noname LargeIntegerToString(ptr wstr long long ptr long) # Fixme 211 stdcall -noname Printers_GetPidl(ptr str) # Fixme @@ -213,20 +178,6 @@ 213 stdcall -noname Printers_RegisterWindowW(wstr long ptr ptr) 214 stdcall -noname Printers_UnregisterWindow(long long) 215 stdcall -noname SHStartNetConnectionDialog(long str long) -216 stdcall ExtractIconA(long str long) -217 stdcall ExtractIconEx(ptr long ptr ptr long) ExtractIconExA -218 stdcall ExtractIconExA(str long ptr ptr long) -219 stdcall ExtractIconExW(wstr long ptr ptr long) -220 stdcall ExtractIconResInfoA(ptr str long ptr ptr) -221 stdcall ExtractIconResInfoW(ptr wstr long ptr ptr) -222 stdcall ExtractIconW(long wstr long) -223 stdcall ExtractVersionResource16W(wstr ptr) -224 stdcall FindExeDlgProc(ptr long ptr ptr) -225 stdcall FindExecutableA(str str ptr) -226 stdcall FindExecutableW(wstr wstr ptr) -227 stdcall FreeIconList(long) -228 stdcall InternalExtractIconListA(ptr str ptr) -229 stdcall InternalExtractIconListW(ptr wstr ptr) 230 stdcall -noname FirstUserLogon(wstr wstr) 231 stdcall -noname SHSetFolderPathA(long ptr long str) 232 stdcall -noname SHSetFolderPathW(long ptr long wstr) @@ -235,7 +186,6 @@ 235 stdcall -noname SHOpenEffectiveToken(ptr) 236 stdcall -noname SHTestTokenPrivilegeW(ptr ptr) 237 stdcall -noname SHShouldShowWizards(ptr) -238 stdcall Options_RunDLL(ptr ptr str long) 239 stdcall PathIsSlowW(wstr long) 240 stdcall PathIsSlowA(str long) 241 stdcall -noname SHGetUserDisplayName(wstr ptr) @@ -252,148 +202,10 @@ 252 stdcall -noname PathIsURL(wstr) shlwapi.PathIsURLW 253 stub -noname SHIsCurrentProcessConsoleSession 254 stub -noname DisconnectWindowsDialog -255 stdcall Options_RunDLLA(ptr ptr str long) 256 stdcall SHCreateShellFolderView(ptr ptr) 257 stdcall -noname SHGetShellFolderViewCB(ptr) 258 stdcall -noname LinkWindow_RegisterClass() 259 stdcall -noname LinkWindow_UnregisterClass() -260 stdcall Options_RunDLLW(ptr ptr wstr long) -261 stdcall PrintersGetCommand_RunDLL(ptr ptr wstr long) -262 stdcall PrintersGetCommand_RunDLLA(ptr ptr str long) -263 stdcall PrintersGetCommand_RunDLLW(ptr ptr wstr long) -264 stdcall RealShellExecuteA(ptr str str str str str str str long ptr) -265 stdcall RealShellExecuteExA(ptr str str str str str str str long ptr long) -266 stdcall RealShellExecuteExW(ptr str str str str str str str long ptr long) -267 stdcall RealShellExecuteW(ptr wstr wstr wstr wstr wstr wstr wstr long ptr) -268 stdcall RegenerateUserEnvironment(ptr long) -269 stdcall SHAddToRecentDocs(long ptr) -270 stdcall SHAppBarMessage(long ptr) -271 stdcall SHBindToParent(ptr ptr ptr ptr) -272 stdcall SHBrowseForFolder(ptr) SHBrowseForFolderA -273 stdcall SHBrowseForFolderA(ptr) -274 stdcall SHBrowseForFolderW(ptr) -275 stdcall SHChangeNotify(long long ptr ptr) -276 stdcall SHChangeNotifySuspendResume(long ptr long long) -277 stdcall SHCreateDirectoryExA(long str ptr) -278 stdcall SHCreateDirectoryExW(long wstr ptr) -279 stub SHCreateLocalServerRunDll -280 stdcall SHCreateProcessAsUserW(ptr) -281 stdcall SHCreateQueryCancelAutoPlayMoniker(ptr) -282 stdcall SHCreateShellItem(ptr ptr ptr ptr) -283 stdcall SHEmptyRecycleBinA(long str long) -284 stdcall SHEmptyRecycleBinW(long wstr long) -285 stub SHEnableServiceObject -286 stub SHEnumerateUnreadMailAccountsW -287 stdcall SHExtractIconsW(wstr long long long ptr ptr long long) user32.PrivateExtractIconsW -288 stdcall SHFileOperation(ptr) SHFileOperationA -289 stdcall SHFileOperationA(ptr) -290 stdcall SHFileOperationW(ptr) -291 stdcall SHFormatDrive(long long long long) -292 stdcall SHFreeNameMappings(ptr) -293 stdcall SHGetDataFromIDListA(ptr ptr long ptr long) -294 stdcall SHGetDataFromIDListW(ptr ptr long ptr long) -295 stdcall SHGetDesktopFolder(ptr) -296 stdcall SHGetDiskFreeSpaceA(str ptr ptr ptr) kernel32.GetDiskFreeSpaceExA -297 stdcall SHGetDiskFreeSpaceExA(str ptr ptr ptr) kernel32.GetDiskFreeSpaceExA -298 stdcall SHGetDiskFreeSpaceExW(wstr ptr ptr ptr) kernel32.GetDiskFreeSpaceExW -299 stdcall SHGetFileInfo(ptr long ptr long long) SHGetFileInfoA -300 stdcall SHGetFileInfoA(ptr long ptr long long) -301 stdcall SHGetFileInfoW(ptr long ptr long long) -302 stdcall SHGetFolderLocation(long long long long ptr) -303 stdcall SHGetFolderPathA(long long long long ptr) -304 stdcall SHGetFolderPathAndSubDirA(long long long long str ptr) -305 stdcall SHGetFolderPathAndSubDirW(long long long long wstr ptr) -306 stdcall SHGetFolderPathW(long long long long ptr) -307 stdcall SHGetIconOverlayIndexA(str long) -308 stdcall SHGetIconOverlayIndexW(wstr long) -309 stdcall SHGetInstanceExplorer(long) -310 stdcall SHGetMalloc(ptr) -311 stdcall SHGetNewLinkInfo(str str ptr long long) SHGetNewLinkInfoA -312 stdcall SHGetPathFromIDList(ptr ptr) SHGetPathFromIDListA -313 stdcall SHGetPathFromIDListA(ptr ptr) -314 stdcall SHGetPathFromIDListW(ptr ptr) -315 stdcall SHGetSettings(ptr long) -316 stdcall SHGetSpecialFolderLocation(long long ptr) -317 stdcall SHGetSpecialFolderPathA(long ptr long long) -318 stdcall SHGetSpecialFolderPathW(long ptr long long) -319 stdcall SHGetUnreadMailCountW (long wstr long ptr wstr long) -320 stdcall SHHelpShortcuts_RunDLL(long long long long) SHHelpShortcuts_RunDLLA -321 stdcall SHHelpShortcuts_RunDLLA(long long long long) -322 stdcall SHHelpShortcuts_RunDLLW(long long long long) -323 stdcall SHInvokePrinterCommandA(ptr long str str long) -324 stdcall SHInvokePrinterCommandW(ptr long wstr wstr long) -325 stdcall SHIsFileAvailableOffline(wstr ptr) -326 stdcall SHLoadInProc(long) -327 stdcall SHLoadNonloadedIconOverlayIdentifiers() -328 stdcall SHOpenFolderAndSelectItems(ptr long ptr long) -329 stdcall SHParseDisplayName(wstr ptr ptr long ptr) -330 stdcall SHPathPrepareForWriteA(long ptr str long) -331 stdcall SHPathPrepareForWriteW(long ptr wstr long) -332 stdcall SHQueryRecycleBinA(str ptr) -333 stdcall SHQueryRecycleBinW(wstr ptr) -334 stdcall SHSetLocalizedName(wstr wstr long) -335 stdcall SHSetUnreadMailCountW (wstr long wstr) -336 stdcall SHUpdateRecycleBinIcon() -337 stdcall SheChangeDirA(str) -338 stdcall SheChangeDirExA(str) -339 stdcall SheChangeDirExW(wstr) -340 stdcall SheChangeDirW(wstr) -341 stdcall SheConvertPathW(wstr wstr long) -342 stdcall SheFullPathA(str long str) -343 stdcall SheFullPathW(wstr long wstr) -344 stdcall SheGetCurDrive() -345 stdcall SheGetDirA(long long) -346 stdcall SheGetDirExW(wstr ptr wstr) -347 stdcall SheGetDirW(long long) -348 stdcall SheGetPathOffsetW(wstr) -349 stdcall SheRemoveQuotesA(str) -350 stdcall SheRemoveQuotesW(wstr) -351 stdcall SheSetCurDrive(long) -352 stdcall SheShortenPathA(str long) -353 stdcall SheShortenPathW(wstr long) -354 stdcall ShellAboutA(long str str long) -355 stdcall ShellAboutW(long wstr wstr long) -356 stdcall ShellExec_RunDLL(ptr ptr wstr long) -357 stdcall ShellExec_RunDLLA(ptr ptr str long) -358 stdcall ShellExec_RunDLLW(ptr ptr wstr long) -359 stdcall ShellExecuteA(long str str str str long) -360 stdcall ShellExecuteEx(long) ShellExecuteExA -361 stdcall ShellExecuteExA (long) -362 stdcall ShellExecuteExW (long) -363 stdcall ShellExecuteW(long wstr wstr wstr wstr long) -364 stdcall ShellHookProc(long ptr ptr) -365 stdcall Shell_NotifyIcon(long ptr) Shell_NotifyIconA -366 stdcall Shell_NotifyIconA(long ptr) -367 stdcall Shell_NotifyIconW(long ptr) -368 stdcall StrChrA(str long) shlwapi.StrChrA -369 stdcall StrChrIA(str long) shlwapi.StrChrIA -370 stdcall StrChrIW(wstr long) shlwapi.StrChrIW -371 stdcall StrChrW(wstr long) shlwapi.StrChrW -372 stdcall StrCmpNA(str str long) shlwapi.StrCmpNA -373 stdcall StrCmpNIA(str str long) shlwapi.StrCmpNIA -374 stdcall StrCmpNIW(wstr wstr long) shlwapi.StrCmpNIW -375 stdcall StrCmpNW(wstr wstr long) shlwapi.StrCmpNW -376 stdcall StrCpyNA (ptr str long) kernel32.lstrcpynA -377 stdcall StrCpyNW(wstr wstr long) shlwapi.StrCpyNW -378 stdcall StrNCmpA(str str long) shlwapi.StrCmpNA -379 stdcall StrNCmpIA(str str long) shlwapi.StrCmpNIA -380 stdcall StrNCmpIW(wstr wstr long) shlwapi.StrCmpNIW -381 stdcall StrNCmpW(wstr wstr long) shlwapi.StrCmpNW -382 stdcall StrNCpyA (ptr str long) kernel32.lstrcpynA -383 stdcall StrNCpyW(wstr wstr long) shlwapi.StrCpyNW -384 stdcall StrRChrA(str str long) shlwapi.StrRChrA -385 stdcall StrRChrIA(str str long) shlwapi.StrRChrIA -386 stdcall StrRChrIW(str str long) shlwapi.StrRChrIW -387 stdcall StrRChrW(wstr wstr long) shlwapi.StrRChrW -388 stdcall StrRStrA(str str str) -389 stdcall StrRStrIA(str str str) shlwapi.StrRStrIA -390 stdcall StrRStrIW(wstr wstr wstr) shlwapi.StrRStrIW -391 stdcall StrRStrW(wstr wstr wstr) -392 stdcall StrStrA(str str) shlwapi.StrStrA -393 stdcall StrStrIA(str str) shlwapi.StrStrIA -394 stdcall StrStrIW(wstr wstr) shlwapi.StrStrIW -395 stdcall StrStrW(wstr wstr) shlwapi.StrStrW -396 stdcall WOWShellExecute(ptr wstr wstr wstr wstr long ptr) 520 stdcall SHAllocShared(ptr long long) 521 stdcall SHLockShared(long long) 522 stdcall SHUnlockShared(ptr) @@ -465,6 +277,195 @@ 755 stdcall -noname PathIsEqualOrSubFolder(wstr wstr) 756 stub -noname DeleteFileThumbnail +@ stdcall Activate_RunDLL(long ptr ptr ptr) +@ stdcall AppCompat_RunDLLW(ptr ptr wstr long) +@ stdcall CheckEscapesA(str long) +@ stdcall CheckEscapesW(wstr long) +@ stdcall CommandLineToArgvW(wstr ptr) +@ stdcall Control_FillCache_RunDLL(long long long long) Control_FillCache_RunDLLA +@ stdcall Control_FillCache_RunDLLA(long long long long) +@ stdcall Control_FillCache_RunDLLW(long long long long) +@ stdcall Control_RunDLL(ptr ptr str long) Control_RunDLLA +@ stdcall Control_RunDLLA(ptr ptr str long) +@ stdcall Control_RunDLLAsUserW(ptr ptr wstr long) +@ stdcall Control_RunDLLW(ptr ptr wstr long) +@ stdcall -private DllCanUnloadNow() +@ stdcall -private DllGetClassObject(ptr ptr ptr) +@ stdcall -private DllGetVersion(ptr) +@ stdcall -private DllInstall(long wstr) +@ stdcall -private DllRegisterServer() +@ stdcall -private DllUnregisterServer() +@ stdcall DoEnvironmentSubstA(str str) +@ stdcall DoEnvironmentSubstW(wstr wstr) +@ stdcall DragAcceptFiles(long long) +@ stdcall DragFinish(long) +@ stdcall DragQueryFile(long long ptr long) DragQueryFileA +@ stdcall DragQueryFileA(long long ptr long) +@ stdcall DragQueryFileAorW(ptr long wstr long long long) +@ stdcall DragQueryFileW(long long ptr long) +@ stdcall DragQueryPoint(long ptr) +@ stdcall DuplicateIcon(long long) +@ stdcall ExtractAssociatedIconA(long str ptr) +@ stdcall ExtractAssociatedIconExA(long str long long) +@ stdcall ExtractAssociatedIconExW(long wstr long long) +@ stdcall ExtractAssociatedIconW(long wstr ptr) +@ stdcall ExtractIconA(long str long) +@ stdcall ExtractIconEx(ptr long ptr ptr long) ExtractIconExA +@ stdcall ExtractIconExA(str long ptr ptr long) +@ stdcall ExtractIconExW(wstr long ptr ptr long) +@ stdcall ExtractIconResInfoA(ptr str long ptr ptr) +@ stdcall ExtractIconResInfoW(ptr wstr long ptr ptr) +@ stdcall ExtractIconW(long wstr long) +@ stdcall ExtractVersionResource16W(wstr ptr) +@ stdcall FindExecutableA(str str ptr) +@ stdcall FindExecutableW(wstr wstr ptr) +@ stdcall FindExeDlgProc(ptr long ptr ptr) +@ stdcall FreeIconList(long) +@ stdcall InternalExtractIconListA(ptr str ptr) +@ stdcall InternalExtractIconListW(ptr wstr ptr) +@ stdcall OpenAs_RunDLL(long long str long) OpenAs_RunDLLA +@ stdcall OpenAs_RunDLLA(long long str long) +@ stdcall OpenAs_RunDLLW(long long wstr long) +@ stdcall Options_RunDLL(ptr ptr str long) +@ stdcall Options_RunDLLA(ptr ptr str long) +@ stdcall Options_RunDLLW(ptr ptr wstr long) +@ stdcall PrintersGetCommand_RunDLL(ptr ptr wstr long) +@ stdcall PrintersGetCommand_RunDLLA(ptr ptr str long) +@ stdcall PrintersGetCommand_RunDLLW(ptr ptr wstr long) +@ stdcall RealShellExecuteA(ptr str str str str str str str long ptr) +@ stdcall RealShellExecuteExA(ptr str str str str str str str long ptr long) +@ stdcall RealShellExecuteExW(ptr str str str str str str str long ptr long) +@ stdcall RealShellExecuteW(ptr wstr wstr wstr wstr wstr wstr wstr long ptr) +@ stdcall RegenerateUserEnvironment(ptr long) +@ stdcall SHAddToRecentDocs(long ptr) +@ stdcall SHAppBarMessage(long ptr) +@ stdcall SHBindToParent(ptr ptr ptr ptr) +@ stdcall SHBrowseForFolder(ptr) SHBrowseForFolderA +@ stdcall SHBrowseForFolderA(ptr) +@ stdcall SHBrowseForFolderW(ptr) +@ stdcall SHChangeNotify(long long ptr ptr) +@ stdcall SHChangeNotifySuspendResume(long ptr long long) +@ stdcall SHCreateDirectoryExA(long str ptr) +@ stdcall SHCreateDirectoryExW(long wstr ptr) +@ stub SHCreateLocalServerRunDll +@ stdcall SHCreateProcessAsUserW(ptr) +@ stdcall SHCreateQueryCancelAutoPlayMoniker(ptr) +@ stdcall SHCreateShellItem(ptr ptr ptr ptr) +@ stdcall SHEmptyRecycleBinA(long str long) +@ stdcall SHEmptyRecycleBinW(long wstr long) +@ stub SHEnableServiceObject +@ stub SHEnumerateUnreadMailAccountsW +@ stdcall SHExtractIconsW(wstr long long long ptr ptr long long) user32.PrivateExtractIconsW +@ stdcall SHFileOperation(ptr) SHFileOperationA +@ stdcall SHFileOperationA(ptr) +@ stdcall SHFileOperationW(ptr) +@ stdcall SHFormatDrive(long long long long) +@ stdcall SHFreeNameMappings(ptr) +@ stdcall SHGetDataFromIDListA(ptr ptr long ptr long) +@ stdcall SHGetDataFromIDListW(ptr ptr long ptr long) +@ stdcall SHGetDesktopFolder(ptr) +@ stdcall SHGetDiskFreeSpaceA(str ptr ptr ptr) kernel32.GetDiskFreeSpaceExA +@ stdcall SHGetDiskFreeSpaceExA(str ptr ptr ptr) kernel32.GetDiskFreeSpaceExA +@ stdcall SHGetDiskFreeSpaceExW(wstr ptr ptr ptr) kernel32.GetDiskFreeSpaceExW +@ stdcall SHGetFileInfo(ptr long ptr long long) SHGetFileInfoA +@ stdcall SHGetFileInfoA(ptr long ptr long long) +@ stdcall SHGetFileInfoW(ptr long ptr long long) +@ stdcall SHGetFolderLocation(long long long long ptr) +@ stdcall SHGetFolderPathA(long long long long ptr) +@ stdcall SHGetFolderPathAndSubDirA(long long long long str ptr) +@ stdcall SHGetFolderPathAndSubDirW(long long long long wstr ptr) +@ stdcall SHGetFolderPathW(long long long long ptr) +@ stdcall SHGetIconOverlayIndexA(str long) +@ stdcall SHGetIconOverlayIndexW(wstr long) +@ stdcall SHGetInstanceExplorer(long) +@ stdcall SHGetMalloc(ptr) +@ stdcall SHGetNewLinkInfo(str str ptr long long) SHGetNewLinkInfoA +@ stdcall SHGetPathFromIDList(ptr ptr) SHGetPathFromIDListA +@ stdcall SHGetPathFromIDListA(ptr ptr) +@ stdcall SHGetPathFromIDListW(ptr ptr) +@ stdcall SHGetSettings(ptr long) +@ stdcall SHGetSpecialFolderLocation(long long ptr) +@ stdcall SHGetSpecialFolderPathA(long ptr long long) +@ stdcall SHGetSpecialFolderPathW(long ptr long long) +@ stdcall SHGetUnreadMailCountW (long wstr long ptr wstr long) +@ stdcall SHHelpShortcuts_RunDLL(long long long long) SHHelpShortcuts_RunDLLA +@ stdcall SHHelpShortcuts_RunDLLA(long long long long) +@ stdcall SHHelpShortcuts_RunDLLW(long long long long) +@ stdcall SHInvokePrinterCommandA(ptr long str str long) +@ stdcall SHInvokePrinterCommandW(ptr long wstr wstr long) +@ stdcall SHIsFileAvailableOffline(wstr ptr) +@ stdcall SHLoadInProc(long) +@ stdcall SHLoadNonloadedIconOverlayIdentifiers() +@ stdcall SHOpenFolderAndSelectItems(ptr long ptr long) +@ stdcall SHParseDisplayName(wstr ptr ptr long ptr) +@ stdcall SHPathPrepareForWriteA(long ptr str long) +@ stdcall SHPathPrepareForWriteW(long ptr wstr long) +@ stdcall SHQueryRecycleBinA(str ptr) +@ stdcall SHQueryRecycleBinW(wstr ptr) +@ stdcall SHSetLocalizedName(wstr wstr long) +@ stdcall SHSetUnreadMailCountW (wstr long wstr) +@ stdcall SHUpdateRecycleBinIcon() +@ stdcall SheChangeDirA(str) +@ stdcall SheChangeDirExA(str) +@ stdcall SheChangeDirExW(wstr) +@ stdcall SheChangeDirW(wstr) +@ stdcall SheConvertPathW(wstr wstr long) +@ stdcall SheFullPathA(str long str) +@ stdcall SheFullPathW(wstr long wstr) +@ stdcall SheGetCurDrive() +@ stdcall SheGetDirA(long long) +@ stdcall SheGetDirExW(wstr ptr wstr) +@ stdcall SheGetDirW(long long) +@ stdcall SheGetPathOffsetW(wstr) +@ stdcall SheRemoveQuotesA(str) +@ stdcall SheRemoveQuotesW(wstr) +@ stdcall SheSetCurDrive(long) +@ stdcall SheShortenPathA(str long) +@ stdcall SheShortenPathW(wstr long) +@ stdcall ShellAboutA(long str str long) +@ stdcall ShellAboutW(long wstr wstr long) +@ stdcall ShellExec_RunDLL(ptr ptr wstr long) +@ stdcall ShellExec_RunDLLA(ptr ptr str long) +@ stdcall ShellExec_RunDLLW(ptr ptr wstr long) +@ stdcall ShellExecuteA(long str str str str long) +@ stdcall ShellExecuteEx(long) ShellExecuteExA +@ stdcall ShellExecuteExA (long) +@ stdcall ShellExecuteExW (long) +@ stdcall ShellExecuteW(long wstr wstr wstr wstr long) +@ stdcall ShellHookProc(long ptr ptr) +@ stdcall Shell_NotifyIcon(long ptr) Shell_NotifyIconA +@ stdcall Shell_NotifyIconA(long ptr) +@ stdcall Shell_NotifyIconW(long ptr) +@ stdcall StrChrA(str long) shlwapi.StrChrA +@ stdcall StrChrIA(str long) shlwapi.StrChrIA +@ stdcall StrChrIW(wstr long) shlwapi.StrChrIW +@ stdcall StrChrW(wstr long) shlwapi.StrChrW +@ stdcall StrCmpNA(str str long) shlwapi.StrCmpNA +@ stdcall StrCmpNIA(str str long) shlwapi.StrCmpNIA +@ stdcall StrCmpNIW(wstr wstr long) shlwapi.StrCmpNIW +@ stdcall StrCmpNW(wstr wstr long) shlwapi.StrCmpNW +@ stdcall StrCpyNA (ptr str long) kernel32.lstrcpynA +@ stdcall StrCpyNW(wstr wstr long) shlwapi.StrCpyNW +@ stdcall StrNCmpA(str str long) shlwapi.StrCmpNA +@ stdcall StrNCmpIA(str str long) shlwapi.StrCmpNIA +@ stdcall StrNCmpIW(wstr wstr long) shlwapi.StrCmpNIW +@ stdcall StrNCmpW(wstr wstr long) shlwapi.StrCmpNW +@ stdcall StrNCpyA (ptr str long) kernel32.lstrcpynA +@ stdcall StrNCpyW(wstr wstr long) shlwapi.StrCpyNW +@ stdcall StrRChrA(str str long) shlwapi.StrRChrA +@ stdcall StrRChrIA(str str long) shlwapi.StrRChrIA +@ stdcall StrRChrIW(wstr wstr long) shlwapi.StrRChrIW +@ stdcall StrRChrW(wstr wstr long) shlwapi.StrRChrW +@ stdcall StrRStrA(str str str) +@ stdcall StrRStrIA(str str str) shlwapi.StrRStrIA +@ stdcall StrRStrIW(wstr wstr wstr) shlwapi.StrRStrIW +@ stdcall StrRStrW(wstr wstr wstr) +@ stdcall StrStrA(str str) shlwapi.StrStrA +@ stdcall StrStrIA(str str) shlwapi.StrStrIA +@ stdcall StrStrIW(wstr wstr) shlwapi.StrStrIW +@ stdcall StrStrW(wstr wstr) shlwapi.StrStrW +@ stdcall WOWShellExecute(ptr str str str str long ptr) + # Functions exported by the WinVista shell32.dll @ stdcall SHCreateDefaultContextMenu(ptr ptr ptr) @ stdcall SHCreateDefaultExtractIcon(ptr ptr) @@ -495,6 +496,7 @@ @ stdcall FileMenu_GetItemExtent(long long) # 4.0 (NT) and higher. Until discontinued in 5.0 +# FIXME: ordinals 505-512? @ stdcall SHRegCloseKey(long) @ stdcall SHRegOpenKeyA(long str long) @ stdcall SHRegOpenKeyW(long wstr long) From df929fa5cf69db7d725e24c298e1e8f843c17ce9 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 30 Dec 2012 11:52:05 +0000 Subject: [PATCH 14/96] [NTOSKRNL] Fix value of MmUserProbeAddress, which is MI_USER_PROBE_ADDRESS (0x7FFF0000) and not MI_HIGHEST_USER_ADDRESS (0x7FFEFFFF)! svn path=/trunk/; revision=58049 --- reactos/ntoskrnl/mm/ARM3/mminit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/mm/ARM3/mminit.c b/reactos/ntoskrnl/mm/ARM3/mminit.c index 06db17afc6d..1211b659861 100644 --- a/reactos/ntoskrnl/mm/ARM3/mminit.c +++ b/reactos/ntoskrnl/mm/ARM3/mminit.c @@ -2043,7 +2043,7 @@ MmArmInitSystem(IN ULONG Phase, // Define the basic user vs. kernel address space separation // MmSystemRangeStart = (PVOID)MI_DEFAULT_SYSTEM_RANGE_START; - MmUserProbeAddress = (ULONG_PTR)MI_HIGHEST_USER_ADDRESS; + MmUserProbeAddress = (ULONG_PTR)MI_USER_PROBE_ADDRESS; MmHighestUserAddress = (PVOID)MI_HIGHEST_USER_ADDRESS; /* Highest PTE and PDE based on the addresses above */ From 2f067ab47a1dfc74be9790198b67787408f3cec4 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 30 Dec 2012 11:54:40 +0000 Subject: [PATCH 15/96] [NTOSKRNL] Fix a number of 64bit issues. svn path=/trunk/; revision=58050 --- reactos/ntoskrnl/mm/ARM3/pagfault.c | 11 +++++++++-- reactos/ntoskrnl/mm/ARM3/pool.c | 2 ++ reactos/ntoskrnl/mm/ARM3/procsup.c | 7 ++++++- reactos/ntoskrnl/mm/ARM3/section.c | 5 ++++- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/reactos/ntoskrnl/mm/ARM3/pagfault.c b/reactos/ntoskrnl/mm/ARM3/pagfault.c index aa45a70c97b..b99f77e04c9 100644 --- a/reactos/ntoskrnl/mm/ARM3/pagfault.c +++ b/reactos/ntoskrnl/mm/ARM3/pagfault.c @@ -876,7 +876,8 @@ MiDispatchFault(IN BOOLEAN StoreInstruction, NTSTATUS Status; PMMPTE SuperProtoPte; PMMPFN Pfn1, OutPfn = NULL; - PFN_NUMBER PageFrameIndex, PteCount, ProcessedPtes; + PFN_NUMBER PageFrameIndex; + PFN_COUNT PteCount, ProcessedPtes; DPRINT("ARM3 Page Fault Dispatcher for address: %p in process: %p\n", Address, Process); @@ -1055,7 +1056,7 @@ MiDispatchFault(IN BOOLEAN StoreInstruction, if (ProcessedPtes) { /* Bump the transition count */ - InterlockedExchangeAdd(&KeGetCurrentPrcb()->MmTransitionCount, ProcessedPtes); + InterlockedExchangeAddSizeT(&KeGetCurrentPrcb()->MmTransitionCount, ProcessedPtes); ProcessedPtes--; /* Loop all the processing we did */ @@ -1208,9 +1209,15 @@ MmArmAccessFault(IN BOOLEAN StoreInstruction, if (TrapInformation) { PKTRAP_FRAME TrapFrame = TrapInformation; +#ifdef _M_IX86 DbgPrint("MM:***EIP %p, EFL %p\n", TrapFrame->Eip, TrapFrame->EFlags); DbgPrint("MM:***EAX %p, ECX %p EDX %p\n", TrapFrame->Eax, TrapFrame->Ecx, TrapFrame->Edx); DbgPrint("MM:***EBX %p, ESI %p EDI %p\n", TrapFrame->Ebx, TrapFrame->Esi, TrapFrame->Edi); +#elif defined(_M_AMD64) + DbgPrint("MM:***RIP %p, EFL %p\n", TrapFrame->Rip, TrapFrame->EFlags); + DbgPrint("MM:***RAX %p, RCX %p RDX %p\n", TrapFrame->Rax, TrapFrame->Rcx, TrapFrame->Rdx); + DbgPrint("MM:***RBX %p, RSI %p RDI %p\n", TrapFrame->Rbx, TrapFrame->Rsi, TrapFrame->Rdi); +#endif } /* Tell the trap handler to fail */ diff --git a/reactos/ntoskrnl/mm/ARM3/pool.c b/reactos/ntoskrnl/mm/ARM3/pool.c index f31f512ac45..728949d7515 100644 --- a/reactos/ntoskrnl/mm/ARM3/pool.c +++ b/reactos/ntoskrnl/mm/ARM3/pool.c @@ -1324,8 +1324,10 @@ MiInitializeSessionPool(VOID) /* Initialize the first page table */ Index = (ULONG_PTR)MmSessionSpace->PagedPoolStart - (ULONG_PTR)MmSessionBase; Index >>= 22; +#ifndef _M_AMD64 // FIXME ASSERT(MmSessionSpace->PageTables[Index].u.Long == 0); MmSessionSpace->PageTables[Index] = *PointerPde; +#endif /* Bump up counters */ InterlockedIncrementSizeT(&MmSessionSpace->NonPageablePages); diff --git a/reactos/ntoskrnl/mm/ARM3/procsup.c b/reactos/ntoskrnl/mm/ARM3/procsup.c index 27660f72180..7cfa0b3dd49 100644 --- a/reactos/ntoskrnl/mm/ARM3/procsup.c +++ b/reactos/ntoskrnl/mm/ARM3/procsup.c @@ -1580,7 +1580,9 @@ MiReleaseProcessReferenceToSessionDataPage(IN PMM_SESSION_SPACE SessionGlobal) DPRINT1("Last process in sessino %d going down!!!\n", SessionId); /* Free the session page tables */ +#ifndef _M_AMD64 ExFreePool(SessionGlobal->PageTables); +#endif ASSERT(!MI_IS_PHYSICAL_ADDRESS(SessionGlobal)); /* Capture the data page PFNs */ @@ -1744,8 +1746,9 @@ MiSessionInitializeWorkingSetList(VOID) /* Add this into the list */ Index = ((ULONG_PTR)WorkingSetList - (ULONG_PTR)MmSessionBase) >> 22; +#ifndef _M_AMD64 MmSessionSpace->PageTables[Index] = TempPte; - +#endif /* Initialize the page directory page, and now zero the working set list itself */ MiInitializePfnForOtherProcess(PageFrameIndex, PointerPde, @@ -1977,8 +1980,10 @@ MiSessionCreateInternal(OUT PULONG SessionId) MmSessionSpace->Color = Color; MmSessionSpace->NonPageablePages = MiSessionCreateCharge; MmSessionSpace->CommittedPages = MiSessionCreateCharge; +#ifndef _M_AMD64 MmSessionSpace->PageTables = PageTables; MmSessionSpace->PageTables[PointerPde - MiAddressToPde(MmSessionBase)] = *PointerPde; +#endif InitializeListHead(&MmSessionSpace->ImageList); DPRINT1("Session %d is ready to go: 0x%p 0x%p, %lx 0x%p\n", *SessionId, MmSessionSpace, SessionGlobal, SessionPageDirIndex, PageTables); diff --git a/reactos/ntoskrnl/mm/ARM3/section.c b/reactos/ntoskrnl/mm/ARM3/section.c index 5c10f2c4ce0..b3c4674aa74 100644 --- a/reactos/ntoskrnl/mm/ARM3/section.c +++ b/reactos/ntoskrnl/mm/ARM3/section.c @@ -906,9 +906,10 @@ MiSessionCommitPageTables(IN PVOID StartVa, Index = ((ULONG_PTR)StartVa - (ULONG_PTR)MmSessionBase) >> 22; while (StartPde <= EndPde) { +#ifndef _M_AMD64 /* If we don't already have a page table for it, increment count */ if (MmSessionSpace->PageTables[Index].u.Long == 0) PageCount++; - +#endif /* Move to the next one */ StartPde++; Index++; @@ -924,6 +925,7 @@ MiSessionCommitPageTables(IN PVOID StartVa, /* Loop each PDE while holding the working set lock */ // MiLockWorkingSet(PsGetCurrentThread(), // &MmSessionSpace->GlobalVirtualAddress->Vm); +#ifndef _M_AMD64 while (StartPde <= EndPde) { /* Check if we already have a page table */ @@ -966,6 +968,7 @@ MiSessionCommitPageTables(IN PVOID StartVa, StartPde++; Index++; } +#endif /* Make sure we didn't do more pages than expected */ ASSERT(ActualPages <= PageCount); From d65327d3186ba47ebfd6e45f5d88401ccc8aae45 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 30 Dec 2012 12:56:55 +0000 Subject: [PATCH 16/96] [GDI32_APITEST] Add tests for SetDIBitsToDevice svn path=/trunk/; revision=58052 --- rostests/apitests/gdi32/CMakeLists.txt | 1 + rostests/apitests/gdi32/SetDIBitsToDevice.c | 513 ++++++++++++++++++++ rostests/apitests/gdi32/testlist.c | 2 + 3 files changed, 516 insertions(+) create mode 100644 rostests/apitests/gdi32/SetDIBitsToDevice.c diff --git a/rostests/apitests/gdi32/CMakeLists.txt b/rostests/apitests/gdi32/CMakeLists.txt index 2980df8e67c..d63a1830600 100644 --- a/rostests/apitests/gdi32/CMakeLists.txt +++ b/rostests/apitests/gdi32/CMakeLists.txt @@ -53,6 +53,7 @@ list(APPEND SOURCE SetBrushOrgEx.c SetDCPenColor.c SetDIBits.c + SetDIBitsToDevice.c SetMapMode.c SetPixel.c SetSysColors.c diff --git a/rostests/apitests/gdi32/SetDIBitsToDevice.c b/rostests/apitests/gdi32/SetDIBitsToDevice.c new file mode 100644 index 00000000000..c2c3eb0807d --- /dev/null +++ b/rostests/apitests/gdi32/SetDIBitsToDevice.c @@ -0,0 +1,513 @@ +/* + * PROJECT: ReactOS api tests + * LICENSE: GPL - See COPYING in the top level directory + * PURPOSE: Test for SetDIBitsToDevice + * PROGRAMMERS: Timo Kreuzer + */ + +#include +#include +#include +#include "init.h" + +static void +Test_SetDIBitsToDevice_Params() +{ + UCHAR ajBmiBuffer[sizeof(BITMAPINFO) + 4]; + PBITMAPINFO pbmi = (PBITMAPINFO)ajBmiBuffer; + ULONG aulBits[16]; + INT ret; + + /* Setup the bitmap info */ + pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + pbmi->bmiHeader.biWidth = 2; + pbmi->bmiHeader.biHeight = -2; + pbmi->bmiHeader.biPlanes = 1; + pbmi->bmiHeader.biBitCount = 32; + pbmi->bmiHeader.biCompression = BI_RGB; + pbmi->bmiHeader.biSizeImage = 0; + pbmi->bmiHeader.biXPelsPerMeter = 0; + pbmi->bmiHeader.biYPelsPerMeter = 0; + pbmi->bmiHeader.biClrUsed = 0; + pbmi->bmiHeader.biClrImportant = 0; + + SetLastError(0xdeadc0de); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 2, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + ok_dec(ret, 2); + ok_err(0xdeadc0de); + + SetLastError(0xdeadc0de); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 2, // cScanLines, + NULL, // lpvBits, + pbmi, + DIB_RGB_COLORS); + ok_dec(ret, 0); + ok_err(0xdeadc0de); + + /* test unaligned buffer */ + SetLastError(0xdeadc0de); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 2, // cScanLines, + (BYTE*)aulBits + 1, // lpvBits, + pbmi, + DIB_RGB_COLORS); + ok_dec(ret, 2); + ok_err(0xdeadc0de); + + /* test unaligned and huge scanline buffer */ + SetLastError(0xdeadc0de); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 2000000, // cScanLines, + (BYTE*)aulBits + 1, // lpvBits, + pbmi, + DIB_RGB_COLORS); + ok_dec(ret, 0); + ok_err(0xdeadc0de); + + /* test unaligned illegal buffer */ + SetLastError(0xdeadc0de); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 2, // cScanLines, + (BYTE*)0x7fffffff, // lpvBits, + pbmi, + DIB_RGB_COLORS); + ok_dec(ret, 0); + ok_err(0xdeadc0de); + + SetLastError(0xdeadc0de); + ret = SetDIBitsToDevice(ghdcDIB32, + -100, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 2, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + ok_dec(ret, 2); + ok_err(0xdeadc0de); + + SetLastError(0xdeadc0de); + ret = SetDIBitsToDevice(ghdcDIB32, + LONG_MAX, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 2, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + ok_dec(ret, 2); + ok_err(0xdeadc0de); + + SetLastError(0xdeadc0de); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 100, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 2, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + ok_dec(ret, 2); + ok_err(0xdeadc0de); + + SetLastError(0xdeadc0de); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 100, // YSrc, + 0, // uStartScan, + 2, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + ok_dec(ret, 2); + ok_err(0xdeadc0de); + + SetLastError(0xdeadc0de); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 66, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + ok_dec(ret, 66); + ok_err(0xdeadc0de); + + SetLastError(0xdeadc0de); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 200, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + ok_dec(ret, 0); + ok_err(0xdeadc0de); + + SetLastError(0xdeadc0de); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 2000, // uStartScan, + 66, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + ok_dec(ret, 66); + ok_err(0xdeadc0de); + + /* Test pbmi == NULL */ + SetLastError(0xdeadc0de); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 2, // cScanLines, + aulBits, // lpvBits, + NULL, + DIB_RGB_COLORS); + ok_dec(ret, 0); + ok_err(0xdeadc0de); + + /* Test illegal bitmap info */ + pbmi->bmiHeader.biSize = 0; + SetLastError(0xdeadc0de); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 2, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + ok_dec(ret, 0); + ok_err(0xdeadc0de); + +} + + +static void +Test_SetDIBitsToDevice() +{ + UCHAR ajBmiBuffer[sizeof(BITMAPINFO) + 4]; + PBITMAPINFO pbmi = (PBITMAPINFO)ajBmiBuffer; + ULONG aulBits[16]; + INT ret; + + /* Setup the bitmap info */ + pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + pbmi->bmiHeader.biWidth = 2; + pbmi->bmiHeader.biHeight = -2; + pbmi->bmiHeader.biPlanes = 1; + pbmi->bmiHeader.biBitCount = 32; + pbmi->bmiHeader.biCompression = BI_RGB; + pbmi->bmiHeader.biSizeImage = 0; + pbmi->bmiHeader.biXPelsPerMeter = 0; + pbmi->bmiHeader.biYPelsPerMeter = 0; + pbmi->bmiHeader.biClrUsed = 0; + pbmi->bmiHeader.biClrImportant = 0; + + /* Set pixels */ + aulBits[0] = 0x11000000; + aulBits[1] = 0x00000011; + aulBits[2] = 0xFF000000; + aulBits[3] = 0x000000FF; + + + memset(pulDIB32Bits, 0, 4 * 4 * sizeof(ULONG)); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 2, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + + ok_dec(ret, 2); + ok_hex(pulDIB32Bits[0], 0x11000000); + ok_hex(pulDIB32Bits[1], 0x00000011); + ok_hex(pulDIB32Bits[2], 0x00000000); + ok_hex(pulDIB32Bits[3], 0x00000000); + ok_hex(pulDIB32Bits[4], 0xFF000000); + ok_hex(pulDIB32Bits[5], 0x000000FF); + ok_hex(pulDIB32Bits[6], 0x00000000); + ok_hex(pulDIB32Bits[7], 0x00000000); + + memset(pulDIB32Bits, 0, 4 * 4 * sizeof(ULONG)); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 1, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 2, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + + ok_dec(ret, 2); + ok_hex(pulDIB32Bits[0], 0x00000000); + ok_hex(pulDIB32Bits[1], 0x00000000); + ok_hex(pulDIB32Bits[2], 0x00000000); + ok_hex(pulDIB32Bits[3], 0x00000000); + ok_hex(pulDIB32Bits[4], 0x11000000); + ok_hex(pulDIB32Bits[5], 0x00000011); + ok_hex(pulDIB32Bits[6], 0x00000000); + ok_hex(pulDIB32Bits[7], 0x00000000); + ok_hex(pulDIB32Bits[8], 0xFF000000); + ok_hex(pulDIB32Bits[9], 0x000000FF); + ok_hex(pulDIB32Bits[10], 0x00000000); + ok_hex(pulDIB32Bits[11], 0x00000000); + + memset(pulDIB32Bits, 0, 4 * 4 * sizeof(ULONG)); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 1, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + + ok_dec(ret, 1); + ok_hex(pulDIB32Bits[0], 0x00000000); + ok_hex(pulDIB32Bits[1], 0x00000000); + ok_hex(pulDIB32Bits[2], 0x00000000); + ok_hex(pulDIB32Bits[3], 0x00000000); + ok_hex(pulDIB32Bits[4], 0x11000000); + ok_hex(pulDIB32Bits[5], 0x00000011); + ok_hex(pulDIB32Bits[6], 0x00000000); + ok_hex(pulDIB32Bits[7], 0x00000000); + + + memset(pulDIB32Bits, 0, 4 * 4 * sizeof(ULONG)); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 1, // uStartScan, + 1, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + + ok_dec(ret, 1); + ok_hex(pulDIB32Bits[0], 0x11000000); + ok_hex(pulDIB32Bits[1], 0x00000011); + ok_hex(pulDIB32Bits[2], 0x00000000); + ok_hex(pulDIB32Bits[3], 0x00000000); + ok_hex(pulDIB32Bits[4], 0x00000000); + ok_hex(pulDIB32Bits[5], 0x00000000); + ok_hex(pulDIB32Bits[6], 0x00000000); + ok_hex(pulDIB32Bits[7], 0x00000000); + + /*****************/ + + /* Use bottom-up bitmap */ + pbmi->bmiHeader.biHeight = 2; + + memset(pulDIB32Bits, 0, 4 * 4 * sizeof(ULONG)); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 2, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + + ok_dec(ret, 2); + ok_hex(pulDIB32Bits[0], 0xFF000000); + ok_hex(pulDIB32Bits[1], 0x000000FF); + ok_hex(pulDIB32Bits[2], 0x00000000); + ok_hex(pulDIB32Bits[3], 0x00000000); + ok_hex(pulDIB32Bits[4], 0x11000000); + ok_hex(pulDIB32Bits[5], 0x00000011); + ok_hex(pulDIB32Bits[6], 0x00000000); + ok_hex(pulDIB32Bits[7], 0x00000000); + + memset(pulDIB32Bits, 0, 4 * 4 * sizeof(ULONG)); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 1, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 2, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + + ok_dec(ret, 2); + ok_hex(pulDIB32Bits[0], 0x00000000); + ok_hex(pulDIB32Bits[1], 0x00000000); + ok_hex(pulDIB32Bits[2], 0x00000000); + ok_hex(pulDIB32Bits[3], 0x00000000); + ok_hex(pulDIB32Bits[4], 0xFF000000); + ok_hex(pulDIB32Bits[5], 0x000000FF); + ok_hex(pulDIB32Bits[6], 0x00000000); + ok_hex(pulDIB32Bits[7], 0x00000000); + ok_hex(pulDIB32Bits[8], 0x11000000); + ok_hex(pulDIB32Bits[9], 0x00000011); + ok_hex(pulDIB32Bits[10], 0x00000000); + ok_hex(pulDIB32Bits[11], 0x00000000); + + memset(pulDIB32Bits, 0, 4 * 4 * sizeof(ULONG)); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 0, // uStartScan, + 1, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + + ok_dec(ret, 1); + ok_hex(pulDIB32Bits[0], 0x00000000); + ok_hex(pulDIB32Bits[1], 0x00000000); + ok_hex(pulDIB32Bits[2], 0x00000000); + ok_hex(pulDIB32Bits[3], 0x00000000); + ok_hex(pulDIB32Bits[4], 0x11000000); + ok_hex(pulDIB32Bits[5], 0x00000011); + ok_hex(pulDIB32Bits[6], 0x00000000); + ok_hex(pulDIB32Bits[7], 0x00000000); + + + memset(pulDIB32Bits, 0, 4 * 4 * sizeof(ULONG)); + ret = SetDIBitsToDevice(ghdcDIB32, + 0, // XDest, + 0, // YDest, + 2, // dwWidth, + 2, // dwHeight, + 0, // XSrc, + 0, // YSrc, + 1, // uStartScan, + 1, // cScanLines, + aulBits, // lpvBits, + pbmi, + DIB_RGB_COLORS); + + ok_dec(ret, 1); + ok_hex(pulDIB32Bits[0], 0x11000000); + ok_hex(pulDIB32Bits[1], 0x00000011); + ok_hex(pulDIB32Bits[2], 0x00000000); + ok_hex(pulDIB32Bits[3], 0x00000000); + ok_hex(pulDIB32Bits[4], 0x00000000); + ok_hex(pulDIB32Bits[5], 0x00000000); + ok_hex(pulDIB32Bits[6], 0x00000000); + ok_hex(pulDIB32Bits[7], 0x00000000); + +} + + +START_TEST(SetDIBitsToDevice) +{ + InitStuff(); + + Test_SetDIBitsToDevice_Params(); + Test_SetDIBitsToDevice(); + + +} diff --git a/rostests/apitests/gdi32/testlist.c b/rostests/apitests/gdi32/testlist.c index 86a2d0da077..923a9350ea6 100644 --- a/rostests/apitests/gdi32/testlist.c +++ b/rostests/apitests/gdi32/testlist.c @@ -55,6 +55,7 @@ extern void func_SelectObject(void); extern void func_SetBrushOrgEx(void); extern void func_SetDCPenColor(void); extern void func_SetDIBits(void); +extern void func_SetDIBitsToDevice(void); extern void func_SetMapMode(void); extern void func_SetPixel(void); extern void func_SetSysColors(void); @@ -113,6 +114,7 @@ const struct test winetest_testlist[] = { "SetBrushOrgEx", func_SetBrushOrgEx }, { "SetDCPenColor", func_SetDCPenColor }, { "SetDIBits", func_SetDIBits }, + { "SetDIBitsToDevice", func_SetDIBitsToDevice }, { "SetMapMode", func_SetMapMode }, { "SetPixel", func_SetPixel }, { "SetSysColors", func_SetSysColors }, From b9f59dc28a7388b7723903e72194ffd0a21f1075 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 30 Dec 2012 13:00:02 +0000 Subject: [PATCH 17/96] [SAMSRV] Enable the use of generic access rights by mapping them to object specific right. svn path=/trunk/; revision=58053 --- reactos/dll/win32/samsrv/samrpc.c | 84 +++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/reactos/dll/win32/samsrv/samrpc.c b/reactos/dll/win32/samsrv/samrpc.c index edb6dc2ce4f..88754bc5681 100644 --- a/reactos/dll/win32/samsrv/samrpc.c +++ b/reactos/dll/win32/samsrv/samrpc.c @@ -17,6 +17,46 @@ WINE_DEFAULT_DEBUG_CHANNEL(samsrv); static SID_IDENTIFIER_AUTHORITY NtSidAuthority = {SECURITY_NT_AUTHORITY}; +static GENERIC_MAPPING ServerMapping = +{ + SAM_SERVER_READ, + SAM_SERVER_WRITE, + SAM_SERVER_EXECUTE, + SAM_SERVER_ALL_ACCESS +}; + +static GENERIC_MAPPING DomainMapping = +{ + DOMAIN_READ, + DOMAIN_WRITE, + DOMAIN_EXECUTE, + DOMAIN_ALL_ACCESS +}; + +static GENERIC_MAPPING AliasMapping = +{ + ALIAS_READ, + ALIAS_WRITE, + ALIAS_EXECUTE, + ALIAS_ALL_ACCESS +}; + +static GENERIC_MAPPING GroupMapping = +{ + GROUP_READ, + GROUP_WRITE, + GROUP_EXECUTE, + GROUP_ALL_ACCESS +}; + +static GENERIC_MAPPING UserMapping = +{ + USER_READ, + USER_WRITE, + USER_EXECUTE, + USER_ALL_ACCESS +}; + /* FUNCTIONS *****************************************************************/ @@ -68,10 +108,12 @@ void __RPC_USER midl_user_free(void __RPC_FAR * ptr) HeapFree(GetProcessHeap(), 0, ptr); } + void __RPC_USER SAMPR_HANDLE_rundown(SAMPR_HANDLE hHandle) { } + /* Function 0 */ NTSTATUS NTAPI @@ -85,6 +127,11 @@ SamrConnect(IN PSAMPR_SERVER_NAME ServerName, TRACE("SamrConnect(%p %p %lx)\n", ServerName, ServerHandle, DesiredAccess); + /* Map generic access rights */ + RtlMapGenericMask(&DesiredAccess, + &ServerMapping); + + /* Open the Server Object */ Status = SampOpenDbObject(NULL, NULL, L"SAM", @@ -100,6 +147,7 @@ SamrConnect(IN PSAMPR_SERVER_NAME ServerName, return Status; } + /* Function 1 */ NTSTATUS NTAPI @@ -125,6 +173,7 @@ SamrCloseHandle(IN OUT SAMPR_HANDLE *SamHandle) return Status; } + /* Function 2 */ NTSTATUS NTAPI @@ -136,6 +185,7 @@ SamrSetSecurityObject(IN SAMPR_HANDLE ObjectHandle, return STATUS_NOT_IMPLEMENTED; } + /* Function 3 */ NTSTATUS NTAPI @@ -147,6 +197,7 @@ SamrQuerySecurityObject(IN SAMPR_HANDLE ObjectHandle, return STATUS_NOT_IMPLEMENTED; } + /* Function 4 */ NTSTATUS NTAPI @@ -486,6 +537,10 @@ SamrOpenDomain(IN SAMPR_HANDLE ServerHandle, TRACE("SamrOpenDomain(%p %lx %p %p)\n", ServerHandle, DesiredAccess, DomainId, DomainHandle); + /* Map generic access rights */ + RtlMapGenericMask(&DesiredAccess, + &DomainMapping); + /* Validate the server handle */ Status = SampValidateDbObject(ServerHandle, SamDbServerObject, @@ -1653,6 +1708,10 @@ SamrCreateGroupInDomain(IN SAMPR_HANDLE DomainHandle, TRACE("SamrCreateGroupInDomain(%p %p %lx %p %p)\n", DomainHandle, Name, DesiredAccess, GroupHandle, RelativeId); + /* Map generic access rights */ + RtlMapGenericMask(&DesiredAccess, + &GroupMapping); + /* Validate the domain handle */ Status = SampValidateDbObject(DomainHandle, SamDbDomainObject, @@ -2019,6 +2078,10 @@ SamrCreateUserInDomain(IN SAMPR_HANDLE DomainHandle, RelativeId == NULL) return STATUS_INVALID_PARAMETER; + /* Map generic access rights */ + RtlMapGenericMask(&DesiredAccess, + &UserMapping); + /* Validate the domain handle */ Status = SampValidateDbObject(DomainHandle, SamDbDomainObject, @@ -2473,6 +2536,10 @@ SamrCreateAliasInDomain(IN SAMPR_HANDLE DomainHandle, TRACE("SamrCreateAliasInDomain(%p %p %lx %p %p)\n", DomainHandle, AccountName, DesiredAccess, AliasHandle, RelativeId); + /* Map generic access rights */ + RtlMapGenericMask(&DesiredAccess, + &AliasMapping); + /* Validate the domain handle */ Status = SampValidateDbObject(DomainHandle, SamDbDomainObject, @@ -3452,6 +3519,10 @@ SamrOpenGroup(IN SAMPR_HANDLE DomainHandle, TRACE("SamrOpenGroup(%p %lx %lx %p)\n", DomainHandle, DesiredAccess, GroupId, GroupHandle); + /* Map generic access rights */ + RtlMapGenericMask(&DesiredAccess, + &GroupMapping); + /* Validate the domain handle */ Status = SampValidateDbObject(DomainHandle, SamDbDomainObject, @@ -3900,6 +3971,10 @@ SamrOpenAlias(IN SAMPR_HANDLE DomainHandle, TRACE("SamrOpenAlias(%p %lx %lx %p)\n", DomainHandle, DesiredAccess, AliasId, AliasHandle); + /* Map generic access rights */ + RtlMapGenericMask(&DesiredAccess, + &AliasMapping); + /* Validate the domain handle */ Status = SampValidateDbObject(DomainHandle, SamDbDomainObject, @@ -4565,6 +4640,10 @@ SamrOpenUser(IN SAMPR_HANDLE DomainHandle, TRACE("SamrOpenUser(%p %lx %lx %p)\n", DomainHandle, DesiredAccess, UserId, UserHandle); + /* Map generic access rights */ + RtlMapGenericMask(&DesiredAccess, + &UserMapping); + /* Validate the domain handle */ Status = SampValidateDbObject(DomainHandle, SamDbDomainObject, @@ -6100,6 +6179,7 @@ SamrSetInformationUser(IN SAMPR_HANDLE UserHandle, return Status; } + /* Function 38 */ NTSTATUS NTAPI @@ -6285,6 +6365,10 @@ SamrCreateUser2InDomain(IN SAMPR_HANDLE DomainHandle, AccountType != USER_TEMP_DUPLICATE_ACCOUNT) return STATUS_INVALID_PARAMETER; + /* Map generic access rights */ + RtlMapGenericMask(&DesiredAccess, + &UserMapping); + /* Validate the domain handle */ Status = SampValidateDbObject(DomainHandle, SamDbDomainObject, From b556d39888211d98f8db11d1ea94274051e81029 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 30 Dec 2012 13:21:52 +0000 Subject: [PATCH 18/96] [GDI32_APITEST] Fix a warning and improve code. svn path=/trunk/; revision=58054 --- rostests/apitests/gdi32/CombineTransform.c | 126 ++++++++------------- rostests/apitests/gdi32/SetDCPenColor.c | 1 + 2 files changed, 48 insertions(+), 79 deletions(-) diff --git a/rostests/apitests/gdi32/CombineTransform.c b/rostests/apitests/gdi32/CombineTransform.c index c7b0eaf1164..60bc92ba091 100644 --- a/rostests/apitests/gdi32/CombineTransform.c +++ b/rostests/apitests/gdi32/CombineTransform.c @@ -51,26 +51,21 @@ float geQNAN; void Test_CombineTransform() { XFORM xform1, xform2, xform3; - BOOL ret; /* Test NULL paramters */ set_xform(&xform1, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0); set_xform(&xform2, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0); SetLastError(ERROR_SUCCESS); - ret = CombineTransform(&xform3, &xform1, NULL); - ok_int(ret, 0); - ret = CombineTransform(&xform3, NULL, &xform2); - ok_int(ret, 0); - ret = CombineTransform(NULL, &xform1, &xform2); - ok_int(ret, 0); + ok_int(CombineTransform(&xform3, &xform1, NULL), 0); + ok_int(CombineTransform(&xform3, NULL, &xform2), 0); + ok_int(CombineTransform(NULL, &xform1, &xform2), 0); ok_int(GetLastError(), ERROR_SUCCESS); /* 2 zero matrices */ set_xform(&xform1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); set_xform(&xform2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); SetLastError(ERROR_SUCCESS); - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); ok_int(GetLastError(), ERROR_SUCCESS); @@ -78,49 +73,42 @@ void Test_CombineTransform() set_xform(&xform1, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0); set_xform(&xform2, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0); SetLastError(ERROR_SUCCESS); - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, 1.0, 0., 0., 1.0, 0., 0.); ok_int(GetLastError(), ERROR_SUCCESS); /* 2 Identity matrices with offsets */ set_xform(&xform1, 1.0, 0.0, 0.0, 1.0, 20.0, -100.0); set_xform(&xform2, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, 1.0, 0., 0., 1.0, 20.0, -100.0); xform2.eDx = -60.0; xform2.eDy = -20; - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_flt(xform3.eDx, -40.0); ok_flt(xform3.eDy, -120.0); /* add some stretching */ xform2.eM11 = 2; xform2.eM22 = 4; - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, 2.0, 0., 0., 4.0, -20.0, -420.0); /* add some more stretching */ xform1.eM11 = -2.5; xform1.eM22 = 0.5; - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, -5.0, 0., 0., 2.0, -20.0, -420.0); xform1.eM12 = 2.0; xform1.eM21 = -0.5; - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, -5.0, 8.0, -1.0, 2.0, -20.0, -420.0); xform2.eM12 = 4.0; xform2.eM21 = 6.5; - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, 8.0, -2.0, 2.25, 0.0, -670.0, -340.0); set_xform(&xform1, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0); @@ -128,124 +116,105 @@ void Test_CombineTransform() set_xform(&xform3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); xform1.eDx = (FLOAT)4294967167.999999761; ok(xform1.eDx == 4294967040.0, "float rounding error.\n"); - ret = CombineTransform(&xform3, &xform1, &xform2); - ok(ret == 1, "expected ret = 1, got %d\n", ret); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, 1.0, 0.0, 0.0, 1.0, 4294967040.0, 0.0); set_xform(&xform3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); xform1.eDx = (FLOAT)4294967167.999999762; ok(xform1.eDx == 4294967296.0, "float rounding error.\n"); - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 0); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 0); ok_int(GetLastError(), ERROR_SUCCESS); ok_xform(xform3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); xform1.eDx = (FLOAT)-4294967167.999999761; ok(xform1.eDx == -4294967040.0, "float rounding error.\n"); - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); xform1.eDx = (FLOAT)-4294967167.999999762; ok(xform1.eDx == -4294967296.0, "float rounding error.\n"); - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 0); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 0); ok_int(GetLastError(), ERROR_SUCCESS); xform1.eDx = 0; xform1.eDy = (FLOAT)4294967167.999999761; ok(xform1.eDy == 4294967040.0, "float rounding error.\n"); - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); xform2.eDy = 1; - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_flt(xform3.eDy, 4294967040.0); xform1.eDy = (FLOAT)4294967167.999999762; ok(xform1.eDy == 4294967296.0, "float rounding error.\n"); - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 0); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 0); ok_int(GetLastError(), ERROR_SUCCESS); xform1.eDy = (FLOAT)-4294967167.999999761; ok(xform1.eDy == -4294967040.0, "float rounding error.\n"); - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); xform1.eDy = (FLOAT)-4294967167.999999762; ok(xform1.eDy == -4294967296.0, "float rounding error.\n"); - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 0); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 0); ok_int(GetLastError(), ERROR_SUCCESS); xform2.eDy = 10000; - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); set_xform(&xform1, 1000.0, 0.0, 0.0, 0.0, 0.0, 0.0); xform1.eDx = (FLOAT)-4294967167.999999762; xform2.eM11 = 1000.0; - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 0); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 0); ok_int(GetLastError(), ERROR_SUCCESS); xform1.eDx = 100000.0; xform2.eM11 = 100000.0; - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 0); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 0); ok_int(GetLastError(), ERROR_SUCCESS); /* Some undefined values */ set_xform(&xform1, geIND, 0.0, 0.0, geINF, 0.0, 0.0); xform2 = xform1; SetLastError(ERROR_SUCCESS); - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, geIND, 0.0, 0.0, geINF, 0.0, 0.0); ok_int(GetLastError(), ERROR_SUCCESS); set_xform(&xform2, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, geIND, geIND, geINF, geINF, 0.0, 0.0); ok_int(GetLastError(), ERROR_SUCCESS); set_xform(&xform1, (FLOAT)18446743500000000000.0, 0.0, 1.0, 0.0, 0.0, 0.0); xform2 = xform1; - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_flt(xform3.eM11, 340282326356119260000000000000000000000.0); xform1.eM11 = (FLOAT)18446745000000000000.0; - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_flt(xform3.eM11, 340282346638528860000000000000000000000.0); xform1.eM11 = (FLOAT)18446746000000000000.0; - ret = CombineTransform(&xform3, &xform1, &xform2); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_long(*(DWORD*)&xform3.eM11, 0x7f800000); /* zero matrix + 1 invalid */ set_xform(&xform1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); set_xform(&xform2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); *(DWORD*)&xform2.eM22 = 0x7f800000; // (0.0F/0.0F) - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, 0.0, 0.0, 0.0, geIND, 0.0, 0.0); /* zero matrix + 1 invalid */ xform2 = xform1; *(DWORD*)&xform2.eM12 = 0x7f800000; // (0.0F/0.0F) - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, 0.0, geIND, 0.0, geIND, 0.0, 0.0); /* Some undefined values */ set_xform(&xform1, 0.0, geIND, 0.0, 0.0, 0.0, 0.0); set_xform(&xform2, geIND, 0.0, 0.0, geINF, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform1, &xform2); - ok_int(ret, 1); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, geIND, geIND, geIND, geIND, 0.0, 0.0); } @@ -253,70 +222,69 @@ void Test_CombineTransform() void Test_CombineTransform_Inval(float eInval, float eOut) { XFORM xform1, xform2, xform3; - BOOL ret; /* zero matrix / M11 invalid */ set_xform(&xform1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); set_xform(&xform2, eInval, 0.0, 0.0, 0.0, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform1, &xform2); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, eOut, 0.0, 0.0, 0.0, 0.0, 0.0); // -> M21 - ret = CombineTransform(&xform3, &xform2, &xform1); + ok_int(CombineTransform(&xform3, &xform2, &xform1), 1); ok_xform(xform3, eOut, 0.0, 0.0, 0.0, 0.0, 0.0); // -> M12 /* zero matrix / M12 invalid */ set_xform(&xform1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); set_xform(&xform2, 0.0, eInval, 0.0, 0.0, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform1, &xform2); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, 0.0, eOut, 0.0, eOut, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform2, &xform1); + ok_int(CombineTransform(&xform3, &xform2, &xform1), 1); ok_xform(xform3, eOut, eOut, 0.0, 0.0, 0.0, 0.0); /* zero matrix / M21 invalid */ set_xform(&xform1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); set_xform(&xform2, 0.0, 0.0, eInval, 0.0, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform1, &xform2); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, eOut, 0.0, eOut, 0.0, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform2, &xform1); + ok_int(CombineTransform(&xform3, &xform2, &xform1), 1); ok_xform(xform3, 0.0, 0.0, eOut, eOut, 0.0, 0.0); /* zero matrix / M22 invalid */ set_xform(&xform1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); set_xform(&xform2, 0.0, 0.0, 0.0, eInval, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform1, &xform2); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, 0.0, 0.0, 0.0, eOut, 0.0, 0.0); // -> M12 - ret = CombineTransform(&xform3, &xform2, &xform1); + ok_int(CombineTransform(&xform3, &xform2, &xform1), 1); ok_xform(xform3, 0.0, 0.0, 0.0, eOut, 0.0, 0.0); // -> M21 /* zero matrix / M11,M12 invalid */ set_xform(&xform1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); set_xform(&xform2, eInval, eInval, 0.0, 0.0, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform1, &xform2); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, eOut, eOut, eOut, eOut, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform2, &xform1); + ok_int(CombineTransform(&xform3, &xform2, &xform1), 1); ok_xform(xform3, eOut, eOut, 0.0, 0.0, 0.0, 0.0); /* zero matrix / M11,M21 invalid */ set_xform(&xform1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); set_xform(&xform2, eInval, 0.0, eInval, 0.0, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform1, &xform2); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, eOut, 0.0, eOut, 0.0, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform2, &xform1); + ok_int(CombineTransform(&xform3, &xform2, &xform1), 1); ok_xform(xform3, eOut, eOut, eOut, eOut, 0.0, 0.0); /* zero matrix / M11,M22 invalid */ set_xform(&xform1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); set_xform(&xform2, eInval, 0.0, 0.0, eInval, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform1, &xform2); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, eOut, 0.0, 0.0, eOut, 0.0, 0.0); // -> M12, M21 - ret = CombineTransform(&xform3, &xform2, &xform1); + ok_int(CombineTransform(&xform3, &xform2, &xform1), 1); ok_xform(xform3, eOut, 0.0, 0.0, eOut, 0.0, 0.0); /* zero matrix / M12,M21 invalid */ set_xform(&xform1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); set_xform(&xform2, 0.0, eInval, eInval, 0.0, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform1, &xform2); + ok_int(CombineTransform(&xform3, &xform1, &xform2), 1); ok_xform(xform3, eOut, eOut, eOut, eOut, 0.0, 0.0); - ret = CombineTransform(&xform3, &xform2, &xform1); + ok_int(CombineTransform(&xform3, &xform2, &xform1), 1); ok_xform(xform3, eOut, eOut, eOut, eOut, 0.0, 0.0); } diff --git a/rostests/apitests/gdi32/SetDCPenColor.c b/rostests/apitests/gdi32/SetDCPenColor.c index f0762243488..9e6468f65fd 100644 --- a/rostests/apitests/gdi32/SetDCPenColor.c +++ b/rostests/apitests/gdi32/SetDCPenColor.c @@ -60,6 +60,7 @@ void Test_SetDCPenColor() #endif // Delete the DC + SelectObject(hDC, hbmpOld); DeleteDC(hDC); } From 5171e4abb2423d7266257b03af07f04975e6b047 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 30 Dec 2012 13:35:30 +0000 Subject: [PATCH 19/96] [PSEH2_TEST] Fix build with PSEH3 svn path=/trunk/; revision=58056 --- rostests/tests/pseh2/psehtest.c | 119 +++++++++++++++++++++++++++++++- 1 file changed, 117 insertions(+), 2 deletions(-) diff --git a/rostests/tests/pseh2/psehtest.c b/rostests/tests/pseh2/psehtest.c index d8839e3c9f9..e2f155a4ba7 100644 --- a/rostests/tests/pseh2/psehtest.c +++ b/rostests/tests/pseh2/psehtest.c @@ -2410,6 +2410,112 @@ DEFINE_TEST(test_bug_4663) //}}} //}}} +DEFINE_TEST(test_unvolatile) +{ + int val = 0; + + _SEH2_TRY + { + val = return_one(); + *((char*)0xc0000000) = 0; + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + val = val + 3; + } + _SEH2_END; + + return (val == 4); +} + +DEFINE_TEST(test_unvolatile_2) +{ + int val = 0; + + _SEH2_TRY + { + val = 1; + *((char*)0xc0000000) = 0; + val = 2; + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + val = val + 3; + } + _SEH2_END; + + return (val == 3) || (val == 4) || (val == 5); +} + +DEFINE_TEST(test_finally_goto) +{ + volatile int val = 0; + + _SEH2_TRY + { + val |= 1; + _SEH2_TRY + { + val |= 2; + goto next; + } + _SEH2_FINALLY + { + val |= 4; + *((char*)0xdeadc0de) = 0; + val |= 8; + } + _SEH2_END; + + val |= 16; +next: + val |= 32; + *((char*)0xdeadc0de) = 0; + val |= 64; + } + _SEH2_EXCEPT(1) + { + val |= 128; + } + _SEH2_END; + + return (val == (128|4|2|1)); +} + +DEFINE_TEST(test_nested_exception) +{ + volatile int val = 0; + + _SEH2_TRY + { + val |= 1; + _SEH2_TRY + { + val |= 2; + *((char*)0xdeadc0de) = 0; + val |= 4; + } + _SEH2_EXCEPT(1) + { + val |= 8; + *((char*)0xdeadc0de) = 0; + val |= 16; + } + _SEH2_END; + + val |= 32; + *((char*)0xdeadc0de) = 0; + val |= 64; + } + _SEH2_EXCEPT(1) + { + val |= 128; + } + _SEH2_END; + + return (val == (1|2|8|128)); +} + static LONG WINAPI unhandled_exception(PEXCEPTION_POINTERS ExceptionInfo) { @@ -2446,11 +2552,13 @@ int sanity_check(int ret, struct volatile_context * before, struct volatile_cont return ret; } +#ifndef _PSEH3_H_ static int passthrough_handler(struct _EXCEPTION_RECORD * e, void * f, struct _CONTEXT * c, void * d) { return ExceptionContinueSearch; } +#endif static DECLSPEC_NOINLINE @@ -2459,12 +2567,14 @@ int call_test(int (* func)(void)) static int ret; static struct volatile_context before, after; static LPTOP_LEVEL_EXCEPTION_FILTER prev_unhandled_exception; +#ifndef _PSEH3_H_ static _SEH2Registration_t * prev_frame; _SEH2Registration_t passthrough_frame; +#endif prev_unhandled_exception = SetUnhandledExceptionFilter(&unhandled_exception); -#if defined(_X86_) +#if defined(_X86_) && !defined(_PSEH3_H_) prev_frame = (_SEH2Registration_t *)__readfsdword(0); passthrough_frame.SER_Prev = prev_frame; passthrough_frame.SER_Handler = passthrough_handler; @@ -2500,7 +2610,7 @@ int call_test(int (* func)(void)) ret = func(); #endif -#if defined(_X86_) +#if defined(_X86_) && !defined(_PSEH3_H_) if((_SEH2Registration_t *)__readfsdword(0) != &passthrough_frame || passthrough_frame.SER_Prev != prev_frame) { trace("exception registration list corrupted\n"); @@ -2638,6 +2748,11 @@ void testsuite_syntax(void) USE_TEST(test_bug_4004), USE_TEST(test_bug_4663), + + USE_TEST(test_unvolatile), + USE_TEST(test_unvolatile_2), + USE_TEST(test_finally_goto), + USE_TEST(test_nested_exception), }; size_t i; From b2787225fb5fe68039da830cee10f2a9c35274ec Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 30 Dec 2012 17:11:02 +0000 Subject: [PATCH 20/96] [PSEH3] Hack the hack a bit more. Should fix annoying warnings about possible uninitialized variables. Also generates smaller code, by getting rid of a stray relative jump instruction. svn path=/trunk/; revision=58057 --- reactos/include/reactos/libs/pseh/pseh3.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/reactos/include/reactos/libs/pseh/pseh3.h b/reactos/include/reactos/libs/pseh/pseh3.h index 78e248755ed..de9092c2428 100644 --- a/reactos/include/reactos/libs/pseh/pseh3.h +++ b/reactos/include/reactos/libs/pseh/pseh3.h @@ -165,10 +165,12 @@ void * __cdecl __attribute__((error("Can only be used inside an exception filter around into places that are never executed. */ #define _SEH3$_SCARE_GCC() \ void *plabel; \ + _SEH3$_ASM_GOTO("#\n", _SEH3$_l_BeforeTry); \ _SEH3$_ASM_GOTO("#\n", _SEH3$_l_HandlerTarget); \ + _SEH3$_ASM_GOTO("#\n", _SEH3$_l_OnException); \ asm volatile ("#" : "=a"(plabel) : "p"(&&_SEH3$_l_BeforeTry), "p"(&&_SEH3$_l_HandlerTarget), "p"(&&_SEH3$_l_OnException) \ : _SEH3$_CLOBBER_ON_EXCEPTION ); \ - goto *plabel; + goto _SEH3$_l_OnException; #define _SEH3_TRY \ From d855db8ef1f0a9562def0c9594fb8b7d3783a4f8 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 30 Dec 2012 17:28:21 +0000 Subject: [PATCH 21/96] [INCLUDE] Add some user information types to ntsam.h and fix sam.idl accordingly. svn path=/trunk/; revision=58058 --- reactos/include/ddk/ntsam.h | 88 +++++++++++++++++++++++++++++ reactos/include/reactos/idl/sam.idl | 2 +- 2 files changed, 89 insertions(+), 1 deletion(-) diff --git a/reactos/include/ddk/ntsam.h b/reactos/include/ddk/ntsam.h index ba0771ec9ff..4ab5ed83184 100644 --- a/reactos/include/ddk/ntsam.h +++ b/reactos/include/ddk/ntsam.h @@ -192,6 +192,39 @@ extern "C" { #define SAM_HOURS_PER_WEEK (24 * SAM_DAYS_PER_WEEK) #define SAM_MINUTES_PER_WEEK (60 * SAM_HOURS_PER_WEEK) +/* Flags used in USER_ALL_INFORMATION.WhichField */ +#define USER_ALL_USERNAME 0x00000001 +#define USER_ALL_FULLNAME 0x00000002 +#define USER_ALL_USERID 0x00000004 +#define USER_ALL_PRIMARYGROUPID 0x00000008 +#define USER_ALL_ADMINCOMMENT 0x00000010 +#define USER_ALL_USERCOMMENT 0x00000020 +#define USER_ALL_HOMEDIRECTORY 0x00000040 +#define USER_ALL_HOMEDIRECTORYDRIVE 0x00000080 +#define USER_ALL_SCRIPTPATH 0x00000100 +#define USER_ALL_PROFILEPATH 0x00000200 +#define USER_ALL_WORKSTATIONS 0x00000400 +#define USER_ALL_LASTLOGON 0x00000800 +#define USER_ALL_LASTLOGOFF 0x00001000 +#define USER_ALL_LOGONHOURS 0x00002000 +#define USER_ALL_BADPASSWORDCOUNT 0x00004000 +#define USER_ALL_LOGONCOUNT 0x00008000 +#define USER_ALL_PASSWORDCANCHANGE 0x00010000 +#define USER_ALL_PASSWORDMUSTCHANGE 0x00020000 +#define USER_ALL_PASSWORDLASTSET 0x00040000 +#define USER_ALL_ACCOUNTEXPIRES 0x00080000 +#define USER_ALL_USERACCOUNTCONTROL 0x00100000 +#define USER_ALL_PARAMETERS 0x00200000 +#define USER_ALL_COUNTRYCODE 0x00400000 +#define USER_ALL_CODEPAGE 0x00800000 +#define USER_ALL_NTPASSWORDPRESENT 0x01000000 +#define USER_ALL_LMPASSWORDPRESENT 0x02000000 +#define USER_ALL_PRIVATEDATA 0x04000000 +#define USER_ALL_PASSWORDEXPIRED 0x08000000 +#define USER_ALL_SECURITYDESCRIPTOR 0x10000000 +#define USER_ALL_OWFPASSWORD 0x20000000 +#define USER_ALL_UNDEFINED_MASK 0xC0000000 + typedef PVOID SAM_HANDLE, *PSAM_HANDLE; typedef ULONG SAM_ENUMERATE_HANDLE, *PSAM_ENUMERATE_HANDLE; @@ -345,6 +378,12 @@ typedef struct _LOGON_HOURS PUCHAR LogonHours; } LOGON_HOURS, *PLOGON_HOURS; +typedef struct _SR_SECURITY_DESCRIPTOR +{ + ULONG Length; + PUCHAR SecurityDescriptor; +} SR_SECURITY_DESCRIPTOR, *PSR_SECURITY_DESCRIPTOR; + typedef enum _USER_INFORMATION_CLASS { UserGeneralInformation = 1, @@ -506,6 +545,55 @@ typedef struct _USER_CONTROL_INFORMATION ULONG UserAccountControl; } USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION; +typedef struct _USER_EXPIRES_INFORMATION +{ + LARGE_INTEGER AccountExpires; +} USER_EXPIRES_INFORMATION, *PUSER_EXPIRES_INFORMATION; + +typedef struct _USER_PARAMETERS_INFORMATION +{ + UNICODE_STRING Parameters; +} USER_PARAMETERS_INFORMATION, *PUSER_PARAMETERS_INFORMATION; + +#include "pshpack4.h" +typedef struct _USER_ALL_INFORMATION +{ + LARGE_INTEGER LastLogon; + LARGE_INTEGER LastLogoff; + LARGE_INTEGER PasswordLastSet; + LARGE_INTEGER AccountExpires; + LARGE_INTEGER PasswordCanChange; + LARGE_INTEGER PasswordMustChange; + UNICODE_STRING UserName; + UNICODE_STRING FullName; + UNICODE_STRING HomeDirectory; + UNICODE_STRING HomeDirectoryDrive; + UNICODE_STRING ScriptPath; + UNICODE_STRING ProfilePath; + UNICODE_STRING AdminComment; + UNICODE_STRING WorkStations; + UNICODE_STRING UserComment; + UNICODE_STRING Parameters; + UNICODE_STRING LmPassword; + UNICODE_STRING NtPassword; + UNICODE_STRING PrivateData; + SR_SECURITY_DESCRIPTOR SecurityDescriptor; + ULONG UserId; + ULONG PrimaryGroupId; + ULONG UserAccountControl; + ULONG WhichFields; + LOGON_HOURS LogonHours; + USHORT BadPasswordCount; + USHORT LogonCount; + USHORT CountryCode; + USHORT CodePage; + BOOLEAN LmPasswordPresent; + BOOLEAN NtPasswordPresent; + BOOLEAN PasswordExpired; + BOOLEAN PrivateDataSensitive; +} USER_ALL_INFORMATION, *PUSER_ALL_INFORMATION; +#include "poppack.h" + #define SAM_SID_COMPATIBILITY_ALL 0 #define SAM_SID_COMPATIBILITY_LAX 1 diff --git a/reactos/include/reactos/idl/sam.idl b/reactos/include/reactos/idl/sam.idl index 6bfdaa97f62..07c792223da 100644 --- a/reactos/include/reactos/idl/sam.idl +++ b/reactos/include/reactos/idl/sam.idl @@ -459,12 +459,12 @@ typedef struct _USER_CONTROL_INFORMATION { unsigned long UserAccountControl; } USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION; -cpp_quote("#endif") typedef struct _USER_EXPIRES_INFORMATION { OLD_LARGE_INTEGER AccountExpires; } USER_EXPIRES_INFORMATION, *PUSER_EXPIRES_INFORMATION; +cpp_quote("#endif") typedef struct _SAMPR_LOGON_HOURS { From 79679fb36281f2e330f75fb4b9f72755b98026bc Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 30 Dec 2012 18:01:34 +0000 Subject: [PATCH 22/96] [PSEH3] Apply the same mechanism to prevent inlining SEH using functions that was already applied to PSEH2. svn path=/trunk/; revision=58059 --- reactos/include/reactos/libs/pseh/pseh3.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/reactos/include/reactos/libs/pseh/pseh3.h b/reactos/include/reactos/libs/pseh/pseh3.h index de9092c2428..b5ee1d874c0 100644 --- a/reactos/include/reactos/libs/pseh/pseh3.h +++ b/reactos/include/reactos/libs/pseh/pseh3.h @@ -45,6 +45,9 @@ typedef struct _SEH3$_REGISTRATION_FRAME } SEH3$_REGISTRATION_FRAME ,*PSEH3$_REGISTRATION_FRAME; +/* Prevent gcc from inlining functions that use SEH. */ +static inline __attribute__((always_inline)) __attribute__((returns_twice)) void _SEH3$_PreventInlining() {} + extern inline __attribute__((always_inline,gnu_inline)) void _SEH3$_UnregisterFrame(volatile SEH3$_REGISTRATION_FRAME *RegistrationFrame) { @@ -174,6 +177,7 @@ void * __cdecl __attribute__((error("Can only be used inside an exception filter #define _SEH3_TRY \ + _SEH3$_PreventInlining(); \ /* Enter the outer scope */ \ do { \ /* Declare local labels */ \ From 7328c943bd54bbe9c2d956ab71bd583ec8226fbf Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 30 Dec 2012 19:02:54 +0000 Subject: [PATCH 23/96] [PSEH3] Tiny asm optimization. svn path=/trunk/; revision=58060 --- reactos/include/reactos/libs/pseh/pseh3.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/reactos/include/reactos/libs/pseh/pseh3.h b/reactos/include/reactos/libs/pseh/pseh3.h index b5ee1d874c0..7e051d645de 100644 --- a/reactos/include/reactos/libs/pseh/pseh3.h +++ b/reactos/include/reactos/libs/pseh/pseh3.h @@ -95,18 +95,20 @@ void * __cdecl __attribute__((error("Can only be used inside an exception filter /* This is an asm wrapper around _SEH3$_RegisterFrame */ #define _SEH3$_RegisterFrame(_TrylevelFrame, _DataTable, _Target) \ - asm goto ("call __SEH3$_RegisterFrame\n" \ + asm goto ("leal %0, %%ecx\n" \ + "call __SEH3$_RegisterFrame\n" \ : \ - : "c" (_TrylevelFrame), "a" (_DataTable) \ - : "edx", "memory" \ + : "m" (*(_TrylevelFrame)), "a" (_DataTable) \ + : "ecx", "edx", "memory" \ : _Target) /* This is an asm wrapper around _SEH3$_EnterTryLevel */ #define _SEH3$_RegisterTryLevel(_TrylevelFrame, _DataTable, _Target) \ - asm goto ("call __SEH3$_RegisterTryLevel\n" \ + asm goto ("leal %0, %%ecx\n" \ + "call __SEH3$_RegisterTryLevel\n" \ : \ - : "c" (_TrylevelFrame), "a" (_DataTable) \ - : "edx", "memory" \ + : "m" (*(_TrylevelFrame)), "a" (_DataTable) \ + : "ecx", "edx", "memory" \ : _Target) /* On GCC the filter function is a nested function with __fastcall calling From 93be7a7d0371838e8ec5a805d1f0dc2f092c390e Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Sun, 30 Dec 2012 19:53:50 +0000 Subject: [PATCH 24/96] [RAPPS] - Fix MPC download url. Patch CORE-6849 by serrox. svn path=/trunk/; revision=58062 --- reactos/base/applications/rapps/rapps/mpc.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/base/applications/rapps/rapps/mpc.txt b/reactos/base/applications/rapps/rapps/mpc.txt index 22958be4be7..43298ad9176 100644 --- a/reactos/base/applications/rapps/rapps/mpc.txt +++ b/reactos/base/applications/rapps/rapps/mpc.txt @@ -8,7 +8,7 @@ Description = A media player. Size = 7.0MB Category = 1 URLSite = http://mpc-hc.sourceforge.net/ -URLDownload = http://heanet.dl.sourceforge.netproject/mpc-hc/MPC%20HomeCinema%20-%20Win32/MPC-HC_v1.6.5.6366_x86/MPC-HC.1.6.5.6366.x86.exe +URLDownload = http://heanet.dl.sourceforge.net/project/mpc-hc/MPC%20HomeCinema%20-%20Win32/MPC-HC_v1.6.5.6366_x86/MPC-HC.1.6.5.6366.x86.exe CDPath = none [Section.0407] From 803933e00058525b8ec741c27be3f00ba50889d6 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Mon, 31 Dec 2012 09:48:46 +0000 Subject: [PATCH 25/96] [KS] Pass a PUNICODE_STRING instead of a LPWSTR (and unused BufferSize) to FindMatchingCreateItem(), make use of the Length parameter instead of trusting on NULL termination when searching for path separators. svn path=/trunk/; revision=58065 --- reactos/drivers/ksfilter/ks/device.c | 10 +++-- reactos/drivers/ksfilter/ks/irp.c | 63 ++++++++++++++++++---------- reactos/drivers/ksfilter/ks/ksfunc.h | 3 +- 3 files changed, 49 insertions(+), 27 deletions(-) diff --git a/reactos/drivers/ksfilter/ks/device.c b/reactos/drivers/ksfilter/ks/device.c index a382c4e87d3..c93b0b9ac49 100644 --- a/reactos/drivers/ksfilter/ks/device.c +++ b/reactos/drivers/ksfilter/ks/device.c @@ -218,7 +218,7 @@ IKsDevice_fnCheckIoCapability( return STATUS_NOT_IMPLEMENTED; } -static IKsDeviceVtbl vt_IKsDevice = +static IKsDeviceVtbl vt_IKsDevice = { IKsDevice_fnQueryInterface, IKsDevice_fnAddRef, @@ -631,12 +631,16 @@ IKsDevice_Create( ASSERT(ObjectHeader); /* find a matching a create item */ - Status = FindMatchingCreateItem(&ObjectHeader->ItemList, IoStack->FileObject->FileName.Length, IoStack->FileObject->FileName.Buffer, &CreateItemEntry); + Status = FindMatchingCreateItem(&ObjectHeader->ItemList, + &IoStack->FileObject->FileName, + &CreateItemEntry); } else { /* request to create a filter */ - Status = FindMatchingCreateItem(&DeviceHeader->ItemList, IoStack->FileObject->FileName.Length, IoStack->FileObject->FileName.Buffer, &CreateItemEntry); + Status = FindMatchingCreateItem(&DeviceHeader->ItemList, + &IoStack->FileObject->FileName, + &CreateItemEntry); } if (NT_SUCCESS(Status)) diff --git a/reactos/drivers/ksfilter/ks/irp.c b/reactos/drivers/ksfilter/ks/irp.c index 307437140c9..d2ca995a699 100644 --- a/reactos/drivers/ksfilter/ks/irp.c +++ b/reactos/drivers/ksfilter/ks/irp.c @@ -1175,7 +1175,7 @@ KsDefaultDeviceIoCompletion( /* get current irp stack */ IoStack = IoGetCurrentIrpStackLocation(Irp); - if (IoStack->Parameters.DeviceIoControl.IoControlCode != IOCTL_KS_PROPERTY && + if (IoStack->Parameters.DeviceIoControl.IoControlCode != IOCTL_KS_PROPERTY && IoStack->Parameters.DeviceIoControl.IoControlCode != IOCTL_KS_METHOD && IoStack->Parameters.DeviceIoControl.IoControlCode != IOCTL_KS_PROPERTY) { @@ -1744,41 +1744,53 @@ KsCancelRoutine( NTSTATUS FindMatchingCreateItem( PLIST_ENTRY ListHead, - ULONG BufferSize, - LPWSTR Buffer, + PUNICODE_STRING String, OUT PCREATE_ITEM_ENTRY *OutCreateItem) { PLIST_ENTRY Entry; PCREATE_ITEM_ENTRY CreateItemEntry; UNICODE_STRING RefString; LPWSTR pStr; + ULONG Count; - /* get terminator */ - pStr = wcschr(Buffer, L'\\'); + /* Copy the input string */ + RefString = *String; - /* sanity check */ - ASSERT(pStr != NULL); - - if (pStr == Buffer) + /* Check if the string starts with a backslash */ + if (String->Buffer[0] == L'\\') { - // skip slash - RtlInitUnicodeString(&RefString, ++pStr); + /* Skip backslash */ + RefString.Buffer++; + RefString.Length -= sizeof(WCHAR); } else { + /* get terminator */ + pStr = String->Buffer; + Count = String->Length / sizeof(WCHAR); + while ((Count > 0) && (*pStr != L'\\')) + { + pStr++; + Count--; + } + + /* sanity check */ + ASSERT(Count != 0); + // request is for pin / node / allocator - RefString.Buffer = Buffer; - RefString.Length = BufferSize = RefString.MaximumLength = ((ULONG_PTR)pStr - (ULONG_PTR)Buffer); + RefString.Length = (USHORT)((PCHAR)pStr - (PCHAR)String->Buffer); } /* point to first entry */ Entry = ListHead->Flink; /* loop all device items */ - while(Entry != ListHead) + while (Entry != ListHead) { /* get create item entry */ - CreateItemEntry = (PCREATE_ITEM_ENTRY)CONTAINING_RECORD(Entry, CREATE_ITEM_ENTRY, Entry); + CreateItemEntry = (PCREATE_ITEM_ENTRY)CONTAINING_RECORD(Entry, + CREATE_ITEM_ENTRY, + Entry); ASSERT(CreateItemEntry->CreateItem); @@ -1796,10 +1808,11 @@ FindMatchingCreateItem( continue; } - DPRINT("CreateItem %S Length %u Request %wZ %u\n", CreateItemEntry->CreateItem->ObjectClass.Buffer, - CreateItemEntry->CreateItem->ObjectClass.Length, - &RefString, - RefString.Length); + DPRINT("CreateItem %S Length %u Request %wZ %u\n", + CreateItemEntry->CreateItem->ObjectClass.Buffer, + CreateItemEntry->CreateItem->ObjectClass.Length, + &RefString, + RefString.Length); if (CreateItemEntry->CreateItem->ObjectClass.Length > RefString.Length) { @@ -1809,7 +1822,9 @@ FindMatchingCreateItem( } /* now check if the object class is the same */ - if (!RtlCompareUnicodeString(&CreateItemEntry->CreateItem->ObjectClass, &RefString, TRUE)) + if (!RtlCompareUnicodeString(&CreateItemEntry->CreateItem->ObjectClass, + &RefString, + TRUE)) { /* found matching create item */ *OutCreateItem = CreateItemEntry; @@ -1865,12 +1880,16 @@ KspCreate( ASSERT(ObjectHeader); /* find a matching a create item */ - Status = FindMatchingCreateItem(&ObjectHeader->ItemList, IoStack->FileObject->FileName.Length, IoStack->FileObject->FileName.Buffer, &CreateItemEntry); + Status = FindMatchingCreateItem(&ObjectHeader->ItemList, + &IoStack->FileObject->FileName, + &CreateItemEntry); } else { /* request to create a filter */ - Status = FindMatchingCreateItem(&DeviceHeader->ItemList, IoStack->FileObject->FileName.Length, IoStack->FileObject->FileName.Buffer, &CreateItemEntry); + Status = FindMatchingCreateItem(&DeviceHeader->ItemList, + &IoStack->FileObject->FileName, + &CreateItemEntry); } if (NT_SUCCESS(Status)) diff --git a/reactos/drivers/ksfilter/ks/ksfunc.h b/reactos/drivers/ksfilter/ks/ksfunc.h index 1c51a8c1c80..fc039f13fe1 100644 --- a/reactos/drivers/ksfilter/ks/ksfunc.h +++ b/reactos/drivers/ksfilter/ks/ksfunc.h @@ -106,8 +106,7 @@ KspPinPropertyHandler( NTSTATUS FindMatchingCreateItem( PLIST_ENTRY ListHead, - ULONG BufferSize, - LPWSTR Buffer, + PUNICODE_STRING String, OUT PCREATE_ITEM_ENTRY *OutCreateItem); NTSTATUS From 2755e378483a072efab051c7730e5240161ec393 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Mon, 31 Dec 2012 10:08:34 +0000 Subject: [PATCH 26/96] [FREELDR] Implement MmCheckFreeldrImageFile() to check that freeldr was properly compiled and loaded. svn path=/trunk/; revision=58066 --- .../boot/freeldr/freeldr/arch/i386/i386bug.c | 8 ---- reactos/boot/freeldr/freeldr/debug.c | 10 ++++ .../freeldr/include/arch/pc/x86common.h | 1 + reactos/boot/freeldr/freeldr/include/debug.h | 15 ++++++ reactos/boot/freeldr/freeldr/include/mm.h | 7 +++ reactos/boot/freeldr/freeldr/mm/meminit.c | 47 +++++++++++++++++++ 6 files changed, 80 insertions(+), 8 deletions(-) diff --git a/reactos/boot/freeldr/freeldr/arch/i386/i386bug.c b/reactos/boot/freeldr/freeldr/arch/i386/i386bug.c index 260e39dd630..4ea6876b37f 100644 --- a/reactos/boot/freeldr/freeldr/arch/i386/i386bug.c +++ b/reactos/boot/freeldr/freeldr/arch/i386/i386bug.c @@ -171,14 +171,6 @@ i386PrintExceptionText(ULONG TrapIndex, PKTRAP_FRAME TrapFrame, PKSPECIAL_REGIST InstructionPointer[6], InstructionPointer[7]); } -char *BugCodeStrings[] = -{ - "TEST_BUGCHECK", - "MISSING_HARDWARE_REQUIREMENTS", -}; - -ULONG_PTR BugCheckInfo[5]; - void NTAPI FrLdrBugCheckEx( diff --git a/reactos/boot/freeldr/freeldr/debug.c b/reactos/boot/freeldr/freeldr/debug.c index 21b78ca2918..5ac8e10fbd0 100644 --- a/reactos/boot/freeldr/freeldr/debug.c +++ b/reactos/boot/freeldr/freeldr/debug.c @@ -427,3 +427,13 @@ RtlAssert(IN PVOID FailedAssertion, DbgBreakPoint(); } + +char *BugCodeStrings[] = +{ + "TEST_BUGCHECK", + "MISSING_HARDWARE_REQUIREMENTS", + "FREELDR_IMAGE_CORRUPTION", +}; + +ULONG_PTR BugCheckInfo[5]; + diff --git a/reactos/boot/freeldr/freeldr/include/arch/pc/x86common.h b/reactos/boot/freeldr/freeldr/include/arch/pc/x86common.h index 91f8c420a0a..e681390bc61 100644 --- a/reactos/boot/freeldr/freeldr/include/arch/pc/x86common.h +++ b/reactos/boot/freeldr/freeldr/include/arch/pc/x86common.h @@ -23,6 +23,7 @@ #define BIOSCALLBUFSEGMENT (BIOSCALLBUFFER/16) /* Buffer to store temporary data for any Int386() call */ #define BIOSCALLBUFOFFSET HEX(0000) /* Buffer to store temporary data for any Int386() call */ #define BIOSCALLBUFSIZE PAGE_SIZE /* max is sizeof(VESA_SVGA_INFO) = 512 */ +#define MAX_FREELDR_PE_SIZE (DISKREADBUFFER - FREELDR_PE_BASE) /* These addresses specify the realmode "BSS section" layout */ #define BSS_RealModeEntry (BSS_START + 0) diff --git a/reactos/boot/freeldr/freeldr/include/debug.h b/reactos/boot/freeldr/freeldr/include/debug.h index 16d04cc1780..7ab94d0491f 100644 --- a/reactos/boot/freeldr/freeldr/include/debug.h +++ b/reactos/boot/freeldr/freeldr/include/debug.h @@ -120,4 +120,19 @@ void MEMORY_WRITE_BREAKPOINT4(unsigned long addr); #endif // DBG +void +NTAPI +FrLdrBugCheck(ULONG BugCode); + +/* Bugcheck codes */ +enum _FRLDR_BUGCHECK_CODES +{ + TEST_BUGCHECK, + MISSING_HARDWARE_REQUIREMENTS, + FREELDR_IMAGE_CORRUPTION, +}; + +extern char *BugCodeStrings[]; +extern ULONG_PTR BugCheckInfo[5]; + #endif // defined __DEBUG_H diff --git a/reactos/boot/freeldr/freeldr/include/mm.h b/reactos/boot/freeldr/freeldr/include/mm.h index a453a284770..7b6ed61566a 100644 --- a/reactos/boot/freeldr/freeldr/include/mm.h +++ b/reactos/boot/freeldr/freeldr/include/mm.h @@ -19,6 +19,13 @@ #pragma once +extern char __ImageBase; +#ifdef __GNUC__ +#define FREELDR_SECTION_COUNT 3 +#else +#define FREELDR_SECTION_COUNT 1 +#endif + typedef struct _FREELDR_MEMORY_DESCRIPTOR { TYPE_OF_MEMORY MemoryType; diff --git a/reactos/boot/freeldr/freeldr/mm/meminit.c b/reactos/boot/freeldr/freeldr/mm/meminit.c index 7794f6f1639..5a8a25d4d05 100644 --- a/reactos/boot/freeldr/freeldr/mm/meminit.c +++ b/reactos/boot/freeldr/freeldr/mm/meminit.c @@ -163,6 +163,47 @@ ArcGetMemoryDescriptor(const FREELDR_MEMORY_DESCRIPTOR* Current) } +BOOLEAN +MmCheckFreeldrImageFile() +{ + PIMAGE_NT_HEADERS NtHeaders; + PIMAGE_FILE_HEADER FileHeader; + PIMAGE_OPTIONAL_HEADER OptionalHeader; + + /* Get the NT headers */ + NtHeaders = RtlImageNtHeader(&__ImageBase); + if (!NtHeaders) + { + ERR("Coult not get NtHeaders!\n"); + return FALSE; + } + + /* Check the file header */ + FileHeader = &NtHeaders->FileHeader; + if ((FileHeader->Machine != IMAGE_FILE_MACHINE_NATIVE) || + (FileHeader->NumberOfSections != FREELDR_SECTION_COUNT) || + (FileHeader->PointerToSymbolTable != 0) || + (FileHeader->NumberOfSymbols != 0) || + (FileHeader->NumberOfSymbols != 0) || + (FileHeader->SizeOfOptionalHeader != 0xE0)) + { + return FALSE; + } + + /* Check the optional header */ + OptionalHeader = &NtHeaders->OptionalHeader; + if ((OptionalHeader->Magic != IMAGE_NT_OPTIONAL_HDR_MAGIC) || + (OptionalHeader->Subsystem != 1) || // native + (OptionalHeader->ImageBase != FREELDR_PE_BASE) || + (OptionalHeader->SizeOfImage > MAX_FREELDR_PE_SIZE) || + (OptionalHeader->SectionAlignment != OptionalHeader->FileAlignment)) + { + return FALSE; + } + + return TRUE; +} + BOOLEAN MmInitializeMemoryManager(VOID) { #if DBG @@ -171,6 +212,12 @@ BOOLEAN MmInitializeMemoryManager(VOID) TRACE("Initializing Memory Manager.\n"); + /* Check the freeldr binary */ + if (!MmCheckFreeldrImageFile()) + { + FrLdrBugCheck(FREELDR_IMAGE_CORRUPTION); + } + BiosMemoryMap = MachVtbl.GetMemoryMap(&BiosMemoryMapEntryCount); #if DBG From 45c809f4514f155be2ae419f7fab8d292b3d3d42 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Mon, 31 Dec 2012 14:01:23 +0000 Subject: [PATCH 27/96] [SAMSRV] SamrSetInformationUser: Implement UserParametersInformation and UserAllInformation information classes. svn path=/trunk/; revision=58067 --- reactos/dll/win32/samsrv/samrpc.c | 196 +++++++++++++++++++++++++++++- 1 file changed, 194 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/samsrv/samrpc.c b/reactos/dll/win32/samsrv/samrpc.c index 88754bc5681..acd34d64b1e 100644 --- a/reactos/dll/win32/samsrv/samrpc.c +++ b/reactos/dll/win32/samsrv/samrpc.c @@ -5982,6 +5982,181 @@ done: } +static NTSTATUS +SampSetUserAll(PSAM_DB_OBJECT UserObject, + PSAMPR_USER_INFO_BUFFER Buffer) +{ + SAM_USER_FIXED_DATA FixedData; + ULONG Length = 0; + ULONG WhichFields; + NTSTATUS Status = STATUS_SUCCESS; + + WhichFields = Buffer->All.WhichFields; + + if (WhichFields & USER_ALL_USERNAME) + { + Status = SampSetObjectAttribute(UserObject, + L"Name", + REG_SZ, + Buffer->All.UserName.Buffer, + Buffer->All.UserName.MaximumLength); + if (!NT_SUCCESS(Status)) + goto done; + } + + if (WhichFields & USER_ALL_FULLNAME) + { + Status = SampSetObjectAttribute(UserObject, + L"FullName", + REG_SZ, + Buffer->All.FullName.Buffer, + Buffer->All.FullName.MaximumLength); + if (!NT_SUCCESS(Status)) + goto done; + } + + if (WhichFields & USER_ALL_ADMINCOMMENT) + { + Status = SampSetObjectAttribute(UserObject, + L"AdminComment", + REG_SZ, + Buffer->All.AdminComment.Buffer, + Buffer->All.AdminComment.MaximumLength); + if (!NT_SUCCESS(Status)) + goto done; + } + + if (WhichFields & USER_ALL_USERCOMMENT) + { + Status = SampSetObjectAttribute(UserObject, + L"UserComment", + REG_SZ, + Buffer->All.UserComment.Buffer, + Buffer->All.UserComment.MaximumLength); + if (!NT_SUCCESS(Status)) + goto done; + } + + if (WhichFields & USER_ALL_HOMEDIRECTORY) + { + Status = SampSetObjectAttribute(UserObject, + L"HomeDirectory", + REG_SZ, + Buffer->All.HomeDirectory.Buffer, + Buffer->All.HomeDirectory.MaximumLength); + if (!NT_SUCCESS(Status)) + goto done; + } + + if (WhichFields & USER_ALL_HOMEDIRECTORYDRIVE) + { + Status = SampSetObjectAttribute(UserObject, + L"HomeDirectoryDrive", + REG_SZ, + Buffer->All.HomeDirectoryDrive.Buffer, + Buffer->All.HomeDirectoryDrive.MaximumLength); + if (!NT_SUCCESS(Status)) + goto done; + } + + if (WhichFields & USER_ALL_SCRIPTPATH) + { + Status = SampSetObjectAttribute(UserObject, + L"ScriptPath", + REG_SZ, + Buffer->All.ScriptPath.Buffer, + Buffer->All.ScriptPath.MaximumLength); + if (!NT_SUCCESS(Status)) + goto done; + } + + if (WhichFields & USER_ALL_PROFILEPATH) + { + Status = SampSetObjectAttribute(UserObject, + L"ProfilePath", + REG_SZ, + Buffer->All.ProfilePath.Buffer, + Buffer->All.ProfilePath.MaximumLength); + if (!NT_SUCCESS(Status)) + goto done; + } + + if (WhichFields & USER_ALL_WORKSTATIONS) + { + Status = SampSetObjectAttribute(UserObject, + L"WorkStations", + REG_SZ, + Buffer->All.WorkStations.Buffer, + Buffer->All.WorkStations.MaximumLength); + if (!NT_SUCCESS(Status)) + goto done; + } + + if (WhichFields & USER_ALL_PARAMETERS) + { + Status = SampSetObjectAttribute(UserObject, + L"Parameters", + REG_SZ, + Buffer->All.Parameters.Buffer, + Buffer->All.Parameters.MaximumLength); + } + + if (WhichFields & (USER_ALL_PRIMARYGROUPID | + USER_ALL_ACCOUNTEXPIRES | + USER_ALL_USERACCOUNTCONTROL | + USER_ALL_COUNTRYCODE | + USER_ALL_CODEPAGE)) + { + Length = sizeof(SAM_USER_FIXED_DATA); + Status = SampGetObjectAttribute(UserObject, + L"F", + NULL, + (PVOID)&FixedData, + &Length); + if (!NT_SUCCESS(Status)) + goto done; + + if (WhichFields & USER_ALL_PRIMARYGROUPID) + FixedData.PrimaryGroupId = Buffer->All.PrimaryGroupId; + + if (WhichFields & USER_ALL_ACCOUNTEXPIRES) + { + FixedData.AccountExpires.LowPart = Buffer->All.AccountExpires.LowPart; + FixedData.AccountExpires.HighPart = Buffer->All.AccountExpires.HighPart; + } + + if (WhichFields & USER_ALL_USERACCOUNTCONTROL) + FixedData.UserAccountControl = Buffer->All.UserAccountControl; + + if (WhichFields & USER_ALL_COUNTRYCODE) + FixedData.CountryCode = Buffer->Preferences.CountryCode; + + if (WhichFields & USER_ALL_CODEPAGE) + FixedData.CodePage = Buffer->Preferences.CodePage; + + Status = SampSetObjectAttribute(UserObject, + L"F", + REG_BINARY, + &FixedData, + Length); + if (!NT_SUCCESS(Status)) + goto done; + } + +/* +FIXME: + USER_ALL_LOGONHOURS + USER_ALL_NTPASSWORDPRESENT + USER_ALL_LMPASSWORDPRESENT + USER_ALL_PASSWORDEXPIRED +*/ + +done: + + return Status; +} + + /* Function 37 */ NTSTATUS NTAPI @@ -6010,6 +6185,7 @@ SamrSetInformationUser(IN SAMPR_HANDLE UserHandle, case UserWorkStationsInformation: case UserControlInformation: case UserExpiresInformation: + case UserParametersInformation: DesiredAccess = USER_WRITE_ACCOUNT; break; @@ -6026,6 +6202,10 @@ SamrSetInformationUser(IN SAMPR_HANDLE UserHandle, DesiredAccess = USER_FORCE_PASSWORD_CHANGE; break; + case UserAllInformation: + DesiredAccess = 0; /* FIXME */ + break; + default: return STATUS_INVALID_INFO_CLASS; } @@ -6165,8 +6345,20 @@ SamrSetInformationUser(IN SAMPR_HANDLE UserHandle, break; // case UserInternal1Information: -// case UserParametersInformation: -// case UserAllInformation: + + case UserParametersInformation: + Status = SampSetObjectAttribute(UserObject, + L"Parameters", + REG_SZ, + Buffer->Parameters.Parameters.Buffer, + Buffer->Parameters.Parameters.MaximumLength); + break; + + case UserAllInformation: + Status = SampSetUserAll(UserObject, + Buffer); + break; + // case UserInternal4Information: // case UserInternal5Information: // case UserInternal4InformationNew: From bef50fc841d26084da9f5d1d7e0a33774e233ece Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Mon, 31 Dec 2012 14:56:11 +0000 Subject: [PATCH 28/96] [SAMLIB] Implement SamShutdownSamServer. svn path=/trunk/; revision=58068 --- reactos/dll/win32/samlib/samlib.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/samlib/samlib.c b/reactos/dll/win32/samlib/samlib.c index 000fa183714..a2afef35f76 100644 --- a/reactos/dll/win32/samlib/samlib.c +++ b/reactos/dll/win32/samlib/samlib.c @@ -1659,8 +1659,21 @@ NTSTATUS NTAPI SamShutdownSamServer(IN SAM_HANDLE ServerHandle) { - UNIMPLEMENTED; - return STATUS_NOT_IMPLEMENTED; + NTSTATUS Status; + + TRACE("(%p)\n", ServerHandle); + + RpcTryExcept + { + Status = SamrShutdownSamServer((SAMPR_HANDLE)ServerHandle); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + Status = I_RpcMapWin32Status(RpcExceptionCode()); + } + RpcEndExcept; + + return Status; } /* EOF */ From d82df6ac057cd498cbf84f9ec9c99d5b5878c81b Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Mon, 31 Dec 2012 17:10:15 +0000 Subject: [PATCH 29/96] =?UTF-8?q?[REGEDIT]=20-=20Fix=20a=20handle=20leak.?= =?UTF-8?q?=20Patch=20by=20Edijs=20Kolesnikovi=C4=8Ds.=20CORE-6853=20#reso?= =?UTF-8?q?lve?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit svn path=/trunk/; revision=58069 --- reactos/base/applications/regedit/settings.c | 74 +++++++++----------- 1 file changed, 35 insertions(+), 39 deletions(-) diff --git a/reactos/base/applications/regedit/settings.c b/reactos/base/applications/regedit/settings.c index 1d562ac1bab..10a1e552ab1 100644 --- a/reactos/base/applications/regedit/settings.c +++ b/reactos/base/applications/regedit/settings.c @@ -116,49 +116,45 @@ extern void SaveSettings(void) if (RegCreateKeyW(HKEY_CURRENT_USER, g_szGeneralRegKey, &hKey) == ERROR_SUCCESS) { - if (RegOpenKeyW(HKEY_CURRENT_USER, g_szGeneralRegKey, &hKey) == ERROR_SUCCESS) + RegistryBinaryConfig tConfig; + DWORD iBufferSize = sizeof(tConfig); + WCHAR szBuffer[MAX_PATH]; + LPCWSTR keyPath, rootName; + HKEY hRootKey; + + /* Save key position */ + keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey); + if (keyPath) { - RegistryBinaryConfig tConfig; - DWORD iBufferSize = sizeof(tConfig); - WCHAR szBuffer[MAX_PATH]; - LPCWSTR keyPath, rootName; - HKEY hRootKey; + rootName = get_root_key_name(hRootKey); - /* Save key position */ - keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey); - if (keyPath) - { - rootName = get_root_key_name(hRootKey); + /* Load "My Computer" string and complete it */ + LoadStringW(hInst, IDS_MY_COMPUTER, szBuffer, COUNT_OF(szBuffer)); + wcscat(szBuffer, L"\\"); wcscat(szBuffer, rootName); + wcscat(szBuffer, L"\\"); wcscat(szBuffer, keyPath); - /* Load "My Computer" string and complete it */ - LoadStringW(hInst, IDS_MY_COMPUTER, szBuffer, COUNT_OF(szBuffer)); - wcscat(szBuffer, L"\\"); wcscat(szBuffer, rootName); - wcscat(szBuffer, L"\\"); wcscat(szBuffer, keyPath); - - RegSetValueExW(hKey, L"LastKey", 0, REG_SZ, (LPBYTE)szBuffer, (DWORD)wcslen(szBuffer) * sizeof(WCHAR)); - } - - /* Get statusbar settings */ - tConfig.StatusBarVisible = ((GetMenuState(GetSubMenu(hMenuFrame, ID_VIEW_MENU), ID_VIEW_STATUSBAR, MF_BYCOMMAND) & MF_CHECKED) ? 1 : 0); - - /* Get splitter position */ - tConfig.TreeViewSize = g_pChildWnd->nSplitPos; - - /* Get list view column width*/ - tConfig.NameColumnSize = ListView_GetColumnWidth(g_pChildWnd->hListWnd, 0); - tConfig.TypeColumnSize = ListView_GetColumnWidth(g_pChildWnd->hListWnd, 1); - tConfig.DataColumnSize = ListView_GetColumnWidth(g_pChildWnd->hListWnd, 2); - - /* Get program window settings */ - tConfig.tPlacement.length = sizeof(WINDOWPLACEMENT); - GetWindowPlacement(hFrameWnd , &tConfig.tPlacement); - - /* Save all the data */ - RegSetValueExW(hKey, L"View", 0, REG_BINARY, (LPBYTE)&tConfig, iBufferSize); - - RegCloseKey(hKey); + RegSetValueExW(hKey, L"LastKey", 0, REG_SZ, (LPBYTE)szBuffer, (DWORD)wcslen(szBuffer) * sizeof(WCHAR)); } + + /* Get statusbar settings */ + tConfig.StatusBarVisible = ((GetMenuState(GetSubMenu(hMenuFrame, ID_VIEW_MENU), ID_VIEW_STATUSBAR, MF_BYCOMMAND) & MF_CHECKED) ? 1 : 0); + + /* Get splitter position */ + tConfig.TreeViewSize = g_pChildWnd->nSplitPos; + + /* Get list view column width*/ + tConfig.NameColumnSize = ListView_GetColumnWidth(g_pChildWnd->hListWnd, 0); + tConfig.TypeColumnSize = ListView_GetColumnWidth(g_pChildWnd->hListWnd, 1); + tConfig.DataColumnSize = ListView_GetColumnWidth(g_pChildWnd->hListWnd, 2); + + /* Get program window settings */ + tConfig.tPlacement.length = sizeof(WINDOWPLACEMENT); + GetWindowPlacement(hFrameWnd , &tConfig.tPlacement); + + /* Save all the data */ + RegSetValueExW(hKey, L"View", 0, REG_BINARY, (LPBYTE)&tConfig, iBufferSize); + + RegCloseKey(hKey); } } - /* EOF */ From e2273f3e3e56eb5c6bdf3ceee4fa530f495675e0 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Mon, 31 Dec 2012 17:59:19 +0000 Subject: [PATCH 30/96] [SAMSRV] Implement SamrSetInformationUser2. svn path=/trunk/; revision=58070 --- reactos/dll/win32/samsrv/samrpc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/samsrv/samrpc.c b/reactos/dll/win32/samsrv/samrpc.c index acd34d64b1e..184b2977c0e 100644 --- a/reactos/dll/win32/samsrv/samrpc.c +++ b/reactos/dll/win32/samsrv/samrpc.c @@ -6915,6 +6915,7 @@ SamrConnect2(IN PSAMPR_SERVER_NAME ServerName, return STATUS_NOT_IMPLEMENTED; } + /* Function 58 */ NTSTATUS NTAPI @@ -6922,10 +6923,14 @@ SamrSetInformationUser2(IN SAMPR_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, IN PSAMPR_USER_INFO_BUFFER Buffer) { - UNIMPLEMENTED; - return STATUS_NOT_IMPLEMENTED; + TRACE("(%p %lu %p)\n", UserHandle, UserInformationClass, Buffer); + + return SamrSetInformationUser(UserHandle, + UserInformationClass, + Buffer); } + /* Function 59 */ NTSTATUS NTAPI From f039f501b4043dae2cb26e9755126580a84ffa4b Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Mon, 31 Dec 2012 18:39:19 +0000 Subject: [PATCH 31/96] [NETAPI32] Implement parts of NetUserAdd. svn path=/trunk/; revision=58071 --- reactos/dll/win32/netapi32/user.c | 282 ++++++++++++++++++++++-------- 1 file changed, 212 insertions(+), 70 deletions(-) diff --git a/reactos/dll/win32/netapi32/user.c b/reactos/dll/win32/netapi32/user.c index 3022cc349d3..0def051ce74 100644 --- a/reactos/dll/win32/netapi32/user.c +++ b/reactos/dll/win32/netapi32/user.c @@ -31,7 +31,7 @@ typedef struct _ENUM_CONTEXT SAM_ENUMERATE_HANDLE EnumerationContext; PSAM_RID_ENUMERATION Buffer; - ULONG Returned; + ULONG Count; ULONG Index; BOOLEAN BuiltinDone; @@ -246,7 +246,7 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR)); } - UserInfo1->usri1_flags = UserInfo->UserAccountControl; +// UserInfo1->usri1_flags = UserInfo->UserAccountControl; if (UserInfo->ScriptPath.Length > 0) { @@ -342,7 +342,7 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR)); } - UserInfo20->usri20_flags = UserInfo->UserAccountControl; +// UserInfo20->usri20_flags = UserInfo->UserAccountControl; UserInfo20->usri20_user_id = RelativeId; break; @@ -399,6 +399,131 @@ FreeUserInfo(PUSER_ACCOUNT_INFORMATION UserInfo) } +static +NET_API_STATUS +SetUserInfo(SAM_HANDLE UserHandle, + LPBYTE UserInfo, + DWORD Level) +{ + USER_ALL_INFORMATION UserAllInfo; + PUSER_INFO_1 UserInfo1; + PUSER_INFO_3 UserInfo3; + NET_API_STATUS ApiStatus = NERR_Success; + NTSTATUS Status = STATUS_SUCCESS; + + ZeroMemory(&UserAllInfo, sizeof(USER_ALL_INFORMATION)); + + switch (Level) + { + case 1: + UserInfo1 = (PUSER_INFO_1)UserInfo; +// RtlInitUnicodeString(&UserAllInfo.UserName, +// UserInfo1->usri1_name); + + RtlInitUnicodeString(&UserAllInfo.AdminComment, + UserInfo1->usri1_comment); + + RtlInitUnicodeString(&UserAllInfo.HomeDirectory, + UserInfo1->usri1_home_dir); + + RtlInitUnicodeString(&UserAllInfo.ScriptPath, + UserInfo1->usri1_script_path); + + RtlInitUnicodeString(&UserAllInfo.NtPassword, + UserInfo1->usri1_password); + UserAllInfo.NtPasswordPresent = TRUE; + +// UserInfo1->usri1_flags +// UserInfo1->usri1_priv + + UserAllInfo.WhichFields = + USER_ALL_ADMINCOMMENT | + USER_ALL_HOMEDIRECTORY | + USER_ALL_SCRIPTPATH | + USER_ALL_NTPASSWORDPRESENT +// USER_ALL_USERACCOUNTCONTROL + ; + break; + + + case 3: + UserInfo3 = (PUSER_INFO_3)UserInfo; + +// LPWSTR usri3_name; + + RtlInitUnicodeString(&UserAllInfo.NtPassword, + UserInfo3->usri3_password); + UserAllInfo.NtPasswordPresent = TRUE; + +// DWORD usri3_password_age; // ignored +// DWORD usri3_priv; + + RtlInitUnicodeString(&UserAllInfo.HomeDirectory, + UserInfo3->usri3_home_dir); + + RtlInitUnicodeString(&UserAllInfo.AdminComment, + UserInfo3->usri3_comment); + +// DWORD usri3_flags; + + RtlInitUnicodeString(&UserAllInfo.ScriptPath, + UserInfo3->usri3_script_path); + +// DWORD usri3_auth_flags; + + RtlInitUnicodeString(&UserAllInfo.FullName, + UserInfo3->usri3_full_name); + +// LPWSTR usri3_usr_comment; +// LPWSTR usri3_parms; +// LPWSTR usri3_workstations; +// DWORD usri3_last_logon; +// DWORD usri3_last_logoff; +// DWORD usri3_acct_expires; +// DWORD usri3_max_storage; +// DWORD usri3_units_per_week; +// PBYTE usri3_logon_hours; +// DWORD usri3_bad_pw_count; +// DWORD usri3_num_logons; +// LPWSTR usri3_logon_server; +// DWORD usri3_country_code; +// DWORD usri3_code_page; +// DWORD usri3_user_id; // ignored +// DWORD usri3_primary_group_id; +// LPWSTR usri3_profile; +// LPWSTR usri3_home_dir_drive; +// DWORD usri3_password_expired; + + UserAllInfo.WhichFields = + USER_ALL_NTPASSWORDPRESENT | + USER_ALL_HOMEDIRECTORY | + USER_ALL_ADMINCOMMENT | + USER_ALL_SCRIPTPATH | + USER_ALL_FULLNAME +// USER_ALL_USERACCOUNTCONTROL + ; + break; + + default: + ERR("Unsupported level %lu!\n", Level); + return ERROR_INVALID_PARAMETER; + } + + Status = SamSetInformationUser(UserHandle, + UserAllInformation, + &UserAllInfo); + if (!NT_SUCCESS(Status)) + { + ERR("SamSetInformationUser failed (Status %08lx)\n", Status); + ApiStatus = NetpNtStatusToApiStatus(Status); + goto done; + } + +done: + return ApiStatus; +} + + /************************************************************ * NetUserAdd (NETAPI32.@) */ @@ -409,72 +534,89 @@ NetUserAdd(LPCWSTR servername, LPBYTE bufptr, LPDWORD parm_err) { - NET_API_STATUS status; - struct sam_user * su = NULL; + UNICODE_STRING ServerName; + UNICODE_STRING UserName; + SAM_HANDLE ServerHandle = NULL; + SAM_HANDLE DomainHandle = NULL; + SAM_HANDLE UserHandle = NULL; + ULONG GrantedAccess; + ULONG RelativeId; + NET_API_STATUS ApiStatus = NERR_Success; + NTSTATUS Status = STATUS_SUCCESS; - FIXME("(%s, %d, %p, %p) stub!\n", debugstr_w(servername), level, bufptr, parm_err); + FIXME("(%s, %d, %p, %p)\n", debugstr_w(servername), level, bufptr, parm_err); - if((status = NETAPI_ValidateServername(servername)) != NERR_Success) - return status; + /* Check the info level */ + if (level < 1 || level > 4) + return ERROR_INVALID_LEVEL; - switch(level) + if (servername != NULL) + RtlInitUnicodeString(&ServerName, servername); + + /* Connect to the SAM Server */ + Status = SamConnect((servername != NULL) ? &ServerName : NULL, + &ServerHandle, + SAM_SERVER_CONNECT | SAM_SERVER_LOOKUP_DOMAIN, + NULL); + if (!NT_SUCCESS(Status)) { - /* Level 3 and 4 are identical for the purposes of NetUserAdd */ - case 4: - case 3: - FIXME("Level 3 and 4 not implemented.\n"); - /* Fall through */ - case 2: - FIXME("Level 2 not implemented.\n"); - /* Fall through */ - case 1: - { - PUSER_INFO_1 ui = (PUSER_INFO_1) bufptr; - su = HeapAlloc(GetProcessHeap(), 0, sizeof(struct sam_user)); - if(!su) - { - status = NERR_InternalError; - break; - } - - if(lstrlenW(ui->usri1_name) > LM20_UNLEN) - { - status = NERR_BadUsername; - break; - } - - /*FIXME: do other checks for a valid username */ - lstrcpyW(su->user_name, ui->usri1_name); - - if(lstrlenW(ui->usri1_password) > PWLEN) - { - /* Always return PasswordTooShort on invalid passwords. */ - status = NERR_PasswordTooShort; - break; - } - lstrcpyW(su->user_password, ui->usri1_password); - - su->sec_since_passwd_change = ui->usri1_password_age; - su->user_priv = ui->usri1_priv; - su->user_flags = ui->usri1_flags; - - /*FIXME: set the other LPWSTRs to NULL for now */ - su->home_dir = NULL; - su->user_comment = NULL; - su->user_logon_script_path = NULL; - - list_add_head(&user_list, &su->entry); - return NERR_Success; - } - default: - TRACE("Invalid level %d specified.\n", level); - status = ERROR_INVALID_LEVEL; - break; + ERR("SamConnect failed (Status %08lx)\n", Status); + ApiStatus = NetpNtStatusToApiStatus(Status); + goto done; } - HeapFree(GetProcessHeap(), 0, su); + /* Open the Account Domain */ + Status = OpenAccountDomain(ServerHandle, + (servername != NULL) ? &ServerName : NULL, + DOMAIN_CREATE_USER | DOMAIN_LOOKUP, + &DomainHandle); + if (!NT_SUCCESS(Status)) + { + ERR("OpenAccountDomain failed (Status %08lx)\n", Status); + ApiStatus = NetpNtStatusToApiStatus(Status); + goto done; + } - return status; + /* Initialize the user name string */ + RtlInitUnicodeString(&UserName, + ((PUSER_INFO_1)bufptr)->usri1_name); + + /* Create the user account */ + Status = SamCreateUser2InDomain(DomainHandle, + &UserName, + USER_NORMAL_ACCOUNT, + USER_ALL_ACCESS | DELETE | WRITE_DAC, + &UserHandle, + &GrantedAccess, + &RelativeId); + if (!NT_SUCCESS(Status)) + { + ERR("SamCreateUser2InDomain failed (Status %08lx)\n", Status); + ApiStatus = NetpNtStatusToApiStatus(Status); + goto done; + } + + /* Set user information */ + ApiStatus = SetUserInfo(UserHandle, + bufptr, + level); + if (ApiStatus != NERR_Success) + { + ERR("SetUserInfo failed (Status %lu)\n", ApiStatus); + goto done; + } + +done: + if (UserHandle != NULL) + SamCloseHandle(UserHandle); + + if (DomainHandle != NULL) + SamCloseHandle(DomainHandle); + + if (ServerHandle != NULL) + SamCloseHandle(ServerHandle); + + return ApiStatus; } @@ -599,7 +741,7 @@ NetUserEnum(LPCWSTR servername, EnumContext->EnumerationContext = 0; EnumContext->Buffer = NULL; - EnumContext->Returned = 0; + EnumContext->Count = 0; EnumContext->Index = 0; EnumContext->BuiltinDone = FALSE; @@ -639,9 +781,9 @@ NetUserEnum(LPCWSTR servername, // while (TRUE) // { TRACE("EnumContext->Index: %lu\n", EnumContext->Index); - TRACE("EnumContext->Returned: %lu\n", EnumContext->Returned); + TRACE("EnumContext->Count: %lu\n", EnumContext->Count); - if (EnumContext->Index >= EnumContext->Returned) + if (EnumContext->Index >= EnumContext->Count) { // if (EnumContext->BuiltinDone == TRUE) // { @@ -655,7 +797,7 @@ NetUserEnum(LPCWSTR servername, 0, (PVOID *)&EnumContext->Buffer, prefmaxlen, - &EnumContext->Returned); + &EnumContext->Count); TRACE("SamEnumerateUsersInDomain returned (Status %08lx)\n", Status); if (!NT_SUCCESS(Status)) @@ -677,7 +819,7 @@ NetUserEnum(LPCWSTR servername, } TRACE("EnumContext: %lu\n", EnumContext); - TRACE("EnumContext->Returned: %lu\n", EnumContext->Returned); + TRACE("EnumContext->Count: %lu\n", EnumContext->Count); TRACE("EnumContext->Buffer: %p\n", EnumContext->Buffer); /* Get a pointer to the current user */ @@ -731,11 +873,11 @@ NetUserEnum(LPCWSTR servername, // } done: - if (ApiStatus == NERR_Success && EnumContext->Index < EnumContext->Returned) + if (ApiStatus == NERR_Success && EnumContext->Index < EnumContext->Count) ApiStatus = ERROR_MORE_DATA; if (EnumContext != NULL) - *totalentries = EnumContext->Returned; + *totalentries = EnumContext->Count; if (resume_handle == NULL || ApiStatus != ERROR_MORE_DATA) { @@ -752,7 +894,7 @@ done: if (EnumContext->Buffer != NULL) { - for (i = 0; i < EnumContext->Returned; i++) + for (i = 0; i < EnumContext->Count; i++) { SamFreeMemory(EnumContext->Buffer[i].Name.Buffer); } From 319425e1d9dadc7d24a4d0a0c52647c288ec5102 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Mon, 31 Dec 2012 22:04:05 +0000 Subject: [PATCH 32/96] [USRMGR] - Enable the call to NetUserAdd. This enables us to create new user accounts. A lot of stuff is still missing, so don't be surprised if something unexpected happens. It will be fixed soon. Happy new Year! svn path=/trunk/; revision=58072 --- reactos/dll/cpl/usrmgr/users.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/reactos/dll/cpl/usrmgr/users.c b/reactos/dll/cpl/usrmgr/users.c index e4d1c9b8b6c..a5492488297 100644 --- a/reactos/dll/cpl/usrmgr/users.c +++ b/reactos/dll/cpl/usrmgr/users.c @@ -261,14 +261,10 @@ UserNew(HWND hwndDlg) NewUserDlgProc, (LPARAM)&user) == IDOK) { -#if 0 status = NetUserAdd(NULL, 3, (LPBYTE)&user, NULL); -#else - status = NERR_Success; -#endif if (status != NERR_Success) { TCHAR szText[256]; @@ -434,11 +430,13 @@ UpdateUsersList(HWND hwndListView) lvi.iImage = (pBuffer[i].usri20_flags & UF_ACCOUNTDISABLE) ? 1 : 0; iItem = ListView_InsertItem(hwndListView, &lvi); - ListView_SetItemText(hwndListView, iItem, 1, - pBuffer[i].usri20_full_name); + if (pBuffer[i].usri20_full_name != NULL) + ListView_SetItemText(hwndListView, iItem, 1, + pBuffer[i].usri20_full_name); - ListView_SetItemText(hwndListView, iItem, 2, - pBuffer[i].usri20_comment); + if (pBuffer[i].usri20_comment != NULL) + ListView_SetItemText(hwndListView, iItem, 2, + pBuffer[i].usri20_comment); } NetApiBufferFree(pBuffer); From 737708cfb04decace1b3f4176942c010c47c65f4 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 1 Jan 2013 09:40:48 +0000 Subject: [PATCH 33/96] {WIN32K] - Add some annotations - Fix some 64bit issues - Fix a typo - reduce ENUM_RECT_LIMIT to 32, which is more than enough and doesn't waste as much stack space - remove some unused macros svn path=/trunk/; revision=58076 --- reactos/win32ss/gdi/eng/alphablend.c | 15 ++-- reactos/win32ss/gdi/eng/bitblt.c | 120 ++++++++++++++------------- reactos/win32ss/gdi/eng/clip.c | 57 +++++++------ reactos/win32ss/gdi/eng/copybits.c | 15 ++-- reactos/win32ss/gdi/eng/debug.c | 12 +-- reactos/win32ss/gdi/eng/device.c | 44 +++++----- reactos/win32ss/gdi/eng/driverobj.c | 17 ++-- reactos/win32ss/gdi/eng/engbrush.c | 20 ++--- reactos/win32ss/gdi/eng/engevent.c | 34 +++++--- reactos/win32ss/gdi/eng/engmisc.c | 9 +- reactos/win32ss/gdi/eng/error.c | 2 +- reactos/win32ss/gdi/eng/float.c | 6 +- reactos/win32ss/gdi/eng/gradient.c | 22 ++--- reactos/win32ss/gdi/eng/inteng.h | 2 +- reactos/win32ss/gdi/eng/ldevobj.c | 10 +-- reactos/win32ss/gdi/eng/lineto.c | 19 +++-- reactos/win32ss/gdi/eng/mapping.c | 46 +++++----- reactos/win32ss/gdi/eng/surface.c | 59 ++++++------- reactos/win32ss/gdi/eng/xlateobj.c | 43 ++++++---- reactos/win32ss/gdi/ntgdi/gdifloat.h | 9 ++ reactos/win32ss/user/ntuser/object.h | 23 ----- 21 files changed, 311 insertions(+), 273 deletions(-) diff --git a/reactos/win32ss/gdi/eng/alphablend.c b/reactos/win32ss/gdi/eng/alphablend.c index d760866223b..5b4530bc63c 100644 --- a/reactos/win32ss/gdi/eng/alphablend.c +++ b/reactos/win32ss/gdi/eng/alphablend.c @@ -17,13 +17,14 @@ */ BOOL APIENTRY -EngAlphaBlend(IN SURFOBJ *psoDest, - IN SURFOBJ *psoSource, - IN CLIPOBJ *ClipRegion, - IN XLATEOBJ *ColorTranslation, - IN PRECTL DestRect, - IN PRECTL SourceRect, - IN BLENDOBJ *BlendObj) +EngAlphaBlend( + _Inout_ SURFOBJ *psoDest, + _In_ SURFOBJ *psoSource, + _In_opt_ CLIPOBJ *ClipRegion, + _In_opt_ XLATEOBJ *ColorTranslation, + _In_ RECTL *DestRect, + _In_ RECTL *SourceRect, + _In_ BLENDOBJ *BlendObj) { RECTL InputRect; RECTL OutputRect; diff --git a/reactos/win32ss/gdi/eng/bitblt.c b/reactos/win32ss/gdi/eng/bitblt.c index 3031a8952b8..e9476c4e7d0 100644 --- a/reactos/win32ss/gdi/eng/bitblt.c +++ b/reactos/win32ss/gdi/eng/bitblt.c @@ -296,18 +296,20 @@ NtGdiEngBitBlt( /* * @implemented */ -BOOL APIENTRY -EngBitBlt(SURFOBJ *DestObj, - SURFOBJ *SourceObj, - SURFOBJ *Mask, - CLIPOBJ *ClipRegion, - XLATEOBJ *ColorTranslation, - RECTL *DestRect, - POINTL *SourcePoint, - POINTL *MaskOrigin, - BRUSHOBJ *pbo, - POINTL *BrushOrigin, - ROP4 Rop4) +BOOL +APIENTRY +EngBitBlt( + _Inout_ SURFOBJ *psoTrg, + _In_opt_ SURFOBJ *psoSrc, + _In_opt_ SURFOBJ *psoMask, + _In_opt_ CLIPOBJ *pco, + _In_opt_ XLATEOBJ *pxlo, + _In_ RECTL *prclTrg, + _When_(psoSrc, _In_) POINTL *pptlSrc, + _When_(psoMask, _In_) POINTL *pptlMask, + _In_opt_ BRUSHOBJ *pbo, + _When_(pbo, _In_) POINTL *pptlBrush, + _In_ ROP4 rop4) { BYTE clippingType; RECTL CombinedRect; @@ -321,36 +323,36 @@ EngBitBlt(SURFOBJ *DestObj, PBLTRECTFUNC BltRectFunc; BOOLEAN Ret = TRUE; RECTL ClipRect; - unsigned i; + ULONG i; POINTL Pt; ULONG Direction; BOOL UsesSource, UsesMask; POINTL AdjustedBrushOrigin; - UsesSource = ROP4_USES_SOURCE(Rop4); - UsesMask = ROP4_USES_MASK(Rop4); + UsesSource = ROP4_USES_SOURCE(rop4); + UsesMask = ROP4_USES_MASK(rop4); - if (Rop4 == ROP4_NOOP) + if (rop4 == ROP4_NOOP) { /* Copy destination onto itself: nop */ return TRUE; } - //DPRINT1("Rop4 : 0x%08x\n", Rop4); + //DPRINT1("rop4 : 0x%08x\n", rop4); - OutputRect = *DestRect; + OutputRect = *prclTrg; RECTL_vMakeWellOrdered(&OutputRect); if (UsesSource) { - if (NULL == SourcePoint) + if (!psoSrc || !pptlSrc) { return FALSE; } /* Make sure we don't try to copy anything outside the valid source region */ - InputPoint = *SourcePoint; + InputPoint = *pptlSrc; if (InputPoint.x < 0) { OutputRect.left -= InputPoint.x; @@ -361,17 +363,17 @@ EngBitBlt(SURFOBJ *DestObj, OutputRect.top -= InputPoint.y; InputPoint.y = 0; } - if (SourceObj->sizlBitmap.cx < InputPoint.x + + if (psoSrc->sizlBitmap.cx < InputPoint.x + OutputRect.right - OutputRect.left) { OutputRect.right = OutputRect.left + - SourceObj->sizlBitmap.cx - InputPoint.x; + psoSrc->sizlBitmap.cx - InputPoint.x; } - if (SourceObj->sizlBitmap.cy < InputPoint.y + + if (psoSrc->sizlBitmap.cy < InputPoint.y + OutputRect.bottom - OutputRect.top) { OutputRect.bottom = OutputRect.top + - SourceObj->sizlBitmap.cy - InputPoint.y; + psoSrc->sizlBitmap.cy - InputPoint.y; } InputRect.left = InputPoint.x; @@ -379,40 +381,40 @@ EngBitBlt(SURFOBJ *DestObj, InputRect.top = InputPoint.y; InputRect.bottom = InputPoint.y + (OutputRect.bottom - OutputRect.top); - InputObj = SourceObj; + InputObj = psoSrc; } else { InputPoint.x = InputPoint.y = 0; InputRect.left = 0; - InputRect.right = DestRect->right - DestRect->left; + InputRect.right = prclTrg->right - prclTrg->left; InputRect.top = 0; - InputRect.bottom = DestRect->bottom - DestRect->top; + InputRect.bottom = prclTrg->bottom - prclTrg->top; } - if (NULL != ClipRegion) + if (NULL != pco) { - if (OutputRect.left < ClipRegion->rclBounds.left) + if (OutputRect.left < pco->rclBounds.left) { - InputRect.left += ClipRegion->rclBounds.left - OutputRect.left; - InputPoint.x += ClipRegion->rclBounds.left - OutputRect.left; - OutputRect.left = ClipRegion->rclBounds.left; + InputRect.left += pco->rclBounds.left - OutputRect.left; + InputPoint.x += pco->rclBounds.left - OutputRect.left; + OutputRect.left = pco->rclBounds.left; } - if (ClipRegion->rclBounds.right < OutputRect.right) + if (pco->rclBounds.right < OutputRect.right) { - InputRect.right -= OutputRect.right - ClipRegion->rclBounds.right; - OutputRect.right = ClipRegion->rclBounds.right; + InputRect.right -= OutputRect.right - pco->rclBounds.right; + OutputRect.right = pco->rclBounds.right; } - if (OutputRect.top < ClipRegion->rclBounds.top) + if (OutputRect.top < pco->rclBounds.top) { - InputRect.top += ClipRegion->rclBounds.top - OutputRect.top; - InputPoint.y += ClipRegion->rclBounds.top - OutputRect.top; - OutputRect.top = ClipRegion->rclBounds.top; + InputRect.top += pco->rclBounds.top - OutputRect.top; + InputPoint.y += pco->rclBounds.top - OutputRect.top; + OutputRect.top = pco->rclBounds.top; } - if (ClipRegion->rclBounds.bottom < OutputRect.bottom) + if (pco->rclBounds.bottom < OutputRect.bottom) { - InputRect.bottom -= OutputRect.bottom - ClipRegion->rclBounds.bottom; - OutputRect.bottom = ClipRegion->rclBounds.bottom; + InputRect.bottom -= OutputRect.bottom - pco->rclBounds.bottom; + OutputRect.bottom = pco->rclBounds.bottom; } } @@ -424,12 +426,12 @@ EngBitBlt(SURFOBJ *DestObj, return TRUE; } - OutputObj = DestObj; + OutputObj = psoTrg; - if (BrushOrigin) + if (pptlBrush) { - AdjustedBrushOrigin.x = BrushOrigin->x; - AdjustedBrushOrigin.y = BrushOrigin->y; + AdjustedBrushOrigin.x = pptlBrush->x; + AdjustedBrushOrigin.y = pptlBrush->y; } else { @@ -438,20 +440,20 @@ EngBitBlt(SURFOBJ *DestObj, } /* Determine clipping type */ - if (ClipRegion == (CLIPOBJ *) NULL) + if (pco == (CLIPOBJ *) NULL) { clippingType = DC_TRIVIAL; } else { - clippingType = ClipRegion->iDComplexity; + clippingType = pco->iDComplexity; } if (UsesMask) { BltRectFunc = BltMask; } - else if ((Rop4 & 0xFF) == R3_OPINDEX_PATCOPY) + else if ((rop4 & 0xFF) == R3_OPINDEX_PATCOPY) { if (pbo && pbo->iSolidColor == 0xFFFFFFFF) BltRectFunc = CallDibBitBlt; @@ -512,10 +514,10 @@ EngBitBlt(SURFOBJ *DestObj, { Direction = CD_ANY; } - CLIPOBJ_cEnumStart(ClipRegion, FALSE, CT_RECTANGLES, Direction, 0); + CLIPOBJ_cEnumStart(pco, FALSE, CT_RECTANGLES, Direction, 0); do { - EnumMore = CLIPOBJ_bEnum(ClipRegion,(ULONG) sizeof(RectEnum), + EnumMore = CLIPOBJ_bEnum(pco, sizeof(RectEnum), (PVOID) &RectEnum); for (i = 0; i < RectEnum.c; i++) @@ -535,10 +537,16 @@ EngBitBlt(SURFOBJ *DestObj, #endif Pt.x = InputPoint.x + CombinedRect.left - OutputRect.left; Pt.y = InputPoint.y + CombinedRect.top - OutputRect.top; - Ret = (*BltRectFunc)(OutputObj, InputObj, Mask, - ColorTranslation, &CombinedRect, &Pt, - MaskOrigin, pbo, &AdjustedBrushOrigin, - Rop4) && Ret; + Ret = (*BltRectFunc)(OutputObj, + InputObj, + psoMask, + pxlo, + &CombinedRect, + &Pt, + pptlMask, + pbo, + &AdjustedBrushOrigin, + rop4) && Ret; } } } @@ -965,7 +973,7 @@ IntEngMaskBlt(SURFOBJ *psoDest, { BOOLEAN ret; RECTL OutputRect; - POINTL InputPoint; + POINTL InputPoint = {0,0}; //SURFACE *psurfDest; ASSERT(psoMask); diff --git a/reactos/win32ss/gdi/eng/clip.c b/reactos/win32ss/gdi/eng/clip.c index 28166230c78..ce48ef4d6f9 100644 --- a/reactos/win32ss/gdi/eng/clip.c +++ b/reactos/win32ss/gdi/eng/clip.c @@ -188,13 +188,15 @@ CompareSpans( return Cmp; } -VOID FASTCALL +VOID +FASTCALL IntEngDeleteClipRegion(CLIPOBJ *ClipObj) { EngFreeMem(ObjToGDI(ClipObj, CLIP)); } -CLIPOBJ* FASTCALL +CLIPOBJ* +FASTCALL IntEngCreateClipRegion(ULONG count, PRECTL pRect, PRECTL rcBounds) { CLIPGDI *Clip; @@ -250,7 +252,8 @@ IntEngCreateClipRegion(ULONG count, PRECTL pRect, PRECTL rcBounds) /* * @implemented */ -CLIPOBJ * APIENTRY +CLIPOBJ * +APIENTRY EngCreateClip(VOID) { CLIPGDI *Clip = EngAllocMem(FL_ZERO_MEMORY, sizeof(CLIPGDI), GDITAG_CLIPOBJ); @@ -265,32 +268,35 @@ EngCreateClip(VOID) /* * @implemented */ -VOID APIENTRY -EngDeleteClip(CLIPOBJ *ClipRegion) +VOID +APIENTRY +EngDeleteClip( + _In_ _Post_ptr_invalid_ CLIPOBJ *pco) { - EngFreeMem(ObjToGDI(ClipRegion, CLIP)); + EngFreeMem(ObjToGDI(pco, CLIP)); } /* * @implemented */ -ULONG APIENTRY +ULONG +APIENTRY CLIPOBJ_cEnumStart( - IN CLIPOBJ* ClipObj, - IN BOOL ShouldDoAll, - IN ULONG ClipType, - IN ULONG BuildOrder, - IN ULONG MaxRects) + _Inout_ CLIPOBJ *pco, + _In_ BOOL bAll, + _In_ ULONG iType, + _In_ ULONG iDirection, + _In_ ULONG cMaxRects) { - CLIPGDI *ClipGDI = ObjToGDI(ClipObj, CLIP); + CLIPGDI *ClipGDI = ObjToGDI(pco, CLIP); SORTCOMP CompareFunc; ClipGDI->EnumPos = 0; - ClipGDI->EnumMax = (MaxRects > 0) ? MaxRects : ClipGDI->EnumRects.c; + ClipGDI->EnumMax = (cMaxRects > 0) ? cMaxRects : ClipGDI->EnumRects.c; - if (CD_ANY != BuildOrder && ClipGDI->EnumOrder != BuildOrder) + if (CD_ANY != iDirection && ClipGDI->EnumOrder != iDirection) { - switch (BuildOrder) + switch (iDirection) { case CD_RIGHTDOWN: CompareFunc = (SORTCOMP) CompareRightDown; @@ -320,11 +326,11 @@ CLIPOBJ_cEnumStart( EngSort((PBYTE) ClipGDI->EnumRects.arcl, sizeof(RECTL), ClipGDI->EnumRects.c, CompareFunc); } - ClipGDI->EnumOrder = BuildOrder; + ClipGDI->EnumOrder = iDirection; } /* Return the number of rectangles enumerated */ - if ((MaxRects > 0) && (ClipGDI->EnumRects.c > MaxRects)) + if ((cMaxRects > 0) && (ClipGDI->EnumRects.c > cMaxRects)) { return 0xFFFFFFFF; } @@ -335,21 +341,22 @@ CLIPOBJ_cEnumStart( /* * @implemented */ -BOOL APIENTRY +BOOL +APIENTRY CLIPOBJ_bEnum( - IN CLIPOBJ* ClipObj, - IN ULONG ObjSize, - OUT ULONG *EnumRects) + _In_ CLIPOBJ *pco, + _In_ ULONG cj, + _Out_bytecap_(cj) ULONG *pulEnumRects) { RECTL *dest, *src; - CLIPGDI *ClipGDI = ObjToGDI(ClipObj, CLIP); + CLIPGDI *ClipGDI = ObjToGDI(pco, CLIP); ULONG nCopy, i; - ENUMRECTS* pERects = (ENUMRECTS*)EnumRects; + ENUMRECTS* pERects = (ENUMRECTS*)pulEnumRects; // Calculate how many rectangles we should copy nCopy = min( ClipGDI->EnumMax - ClipGDI->EnumPos, min( ClipGDI->EnumRects.c - ClipGDI->EnumPos, - (ObjSize - sizeof(ULONG)) / sizeof(RECTL))); + (cj - sizeof(ULONG)) / sizeof(RECTL))); if(nCopy == 0) { diff --git a/reactos/win32ss/gdi/eng/copybits.c b/reactos/win32ss/gdi/eng/copybits.c index 0e488f24bd9..3b673a672bf 100644 --- a/reactos/win32ss/gdi/eng/copybits.c +++ b/reactos/win32ss/gdi/eng/copybits.c @@ -15,12 +15,13 @@ * @implemented */ BOOL APIENTRY -EngCopyBits(SURFOBJ *psoDest, - SURFOBJ *psoSource, - CLIPOBJ *Clip, - XLATEOBJ *ColorTranslation, - RECTL *DestRect, - POINTL *SourcePoint) +EngCopyBits( + _In_ SURFOBJ *psoDest, + _In_ SURFOBJ *psoSource, + _In_opt_ CLIPOBJ *Clip, + _In_opt_ XLATEOBJ *ColorTranslation, + _In_ RECTL *DestRect, + _In_ POINTL *SourcePoint) { BOOL ret; BYTE clippingType; @@ -50,7 +51,7 @@ EngCopyBits(SURFOBJ *psoDest, rclDest.bottom = psoDest->sizlBitmap.cy; if (RECTL_bIsEmptyRect(&rclDest)) return TRUE; DestRect = &rclDest; - + // FIXME: Don't punt to the driver's DrvCopyBits immediately. Instead, // mark the copy block function to be DrvCopyBits instead of the // GDI's copy bit function so as to remove clipping from the diff --git a/reactos/win32ss/gdi/eng/debug.c b/reactos/win32ss/gdi/eng/debug.c index 4405a96007c..f2a136de8cc 100644 --- a/reactos/win32ss/gdi/eng/debug.c +++ b/reactos/win32ss/gdi/eng/debug.c @@ -1,4 +1,4 @@ -/* +/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * PURPOSE: @@ -14,10 +14,12 @@ /* * @implemented */ -VOID APIENTRY -EngDebugPrint(PCHAR StandardPrefix, - PCHAR DebugMessage, - va_list ap) +VOID +APIENTRY +EngDebugPrint( + _In_z_ PCHAR StandardPrefix, + _In_z_ PCHAR DebugMessage, + _In_ va_list ap) { vDbgPrintExWithPrefix(StandardPrefix, -1, diff --git a/reactos/win32ss/gdi/eng/device.c b/reactos/win32ss/gdi/eng/device.c index 61445b29250..8f3420d5bcd 100644 --- a/reactos/win32ss/gdi/eng/device.c +++ b/reactos/win32ss/gdi/eng/device.c @@ -47,6 +47,7 @@ EngpRegisterGraphicsDevice( NTSTATUS Status; PWSTR pwsz; ULONG i, cj, cModes = 0; + SIZE_T cjWritten; BOOL bEnable = TRUE; PDEVMODEINFO pdminfo; PDEVMODEW pdm, pdmEnd; @@ -77,7 +78,7 @@ EngpRegisterGraphicsDevice( } /* Enable the device */ - EngFileWrite(pFileObject, &bEnable, sizeof(BOOL), &cj); + EngFileWrite(pFileObject, &bEnable, sizeof(BOOL), &cjWritten); /* Copy the device and file object pointers */ pGraphicsDevice->DeviceObject = pDeviceObject; @@ -288,11 +289,11 @@ static NTSTATUS EngpFileIoRequest( PFILE_OBJECT pFileObject, - ULONG ulMajorFunction, - LPVOID lpBuffer, - DWORD nBufferSize, - ULONGLONG ullStartOffset, - OUT LPDWORD lpInformation) + ULONG ulMajorFunction, + LPVOID lpBuffer, + SIZE_T nBufferSize, + ULONGLONG ullStartOffset, + OUT PULONG_PTR lpInformation) { PDEVICE_OBJECT pDeviceObject; KEVENT Event; @@ -316,7 +317,7 @@ EngpFileIoRequest( pIrp = IoBuildSynchronousFsdRequest(ulMajorFunction, pDeviceObject, lpBuffer, - nBufferSize, + (ULONG)nBufferSize, &liStartOffset, &Event, &Iosb); @@ -367,7 +368,7 @@ EngFileIoControl( IN SIZE_T nInBufferSize, OUT PVOID lpOutBuffer, IN SIZE_T nOutBufferSize, - OUT LPDWORD lpInformation) + OUT PULONG_PTR lpInformation) { PDEVICE_OBJECT pDeviceObject; KEVENT Event; @@ -389,9 +390,9 @@ EngFileIoControl( pIrp = IoBuildDeviceIoControlRequest(dwIoControlCode, pDeviceObject, lpInBuffer, - nInBufferSize, + (ULONG)nInBufferSize, lpOutBuffer, - nOutBufferSize, + (ULONG)nOutBufferSize, FALSE, &Event, &Iosb); @@ -422,13 +423,13 @@ EngFileIoControl( */ DWORD APIENTRY EngDeviceIoControl( - HANDLE hDevice, - DWORD dwIoControlCode, - LPVOID lpInBuffer, - DWORD nInBufferSize, - LPVOID lpOutBuffer, - DWORD nOutBufferSize, - DWORD *lpBytesReturned) + _In_ HANDLE hDevice, + _In_ DWORD dwIoControlCode, + _In_opt_bytecount_(cjInBufferSize) LPVOID lpInBuffer, + _In_ DWORD cjInBufferSize, + _Out_opt_bytecap_(cjOutBufferSize) LPVOID lpOutBuffer, + _In_ DWORD cjOutBufferSize, + _Out_ LPDWORD lpBytesReturned) { PIRP Irp; NTSTATUS Status; @@ -445,9 +446,12 @@ EngDeviceIoControl( Irp = IoBuildDeviceIoControlRequest(dwIoControlCode, DeviceObject, lpInBuffer, - nInBufferSize, + cjInBufferSize, lpOutBuffer, - nOutBufferSize, FALSE, &Event, &Iosb); + cjOutBufferSize, + FALSE, + &Event, + &Iosb); if (!Irp) return ERROR_NOT_ENOUGH_MEMORY; Status = IoCallDriver(DeviceObject, Irp); @@ -462,7 +466,7 @@ EngDeviceIoControl( Iosb.Information); /* Return information to the caller about the operation. */ - *lpBytesReturned = Iosb.Information; + *lpBytesReturned = (DWORD)Iosb.Information; /* Convert NT status values to win32 error codes. */ switch (Status) diff --git a/reactos/win32ss/gdi/eng/driverobj.c b/reactos/win32ss/gdi/eng/driverobj.c index 239ba26007f..d3488a668e6 100644 --- a/reactos/win32ss/gdi/eng/driverobj.c +++ b/reactos/win32ss/gdi/eng/driverobj.c @@ -36,12 +36,13 @@ DRIVEROBJ_Cleanup(PVOID pObject) /** Public interface **********************************************************/ +_Must_inspect_result_ HDRVOBJ APIENTRY EngCreateDriverObj( - IN PVOID pvObj, - IN FREEOBJPROC pFreeObjProc, - IN HDEV hdev) + _In_ PVOID pvObj, + _In_opt_ FREEOBJPROC pFreeObjProc, + _In_ HDEV hdev) { PEDRIVEROBJ pedo; HDRVOBJ hdo; @@ -72,9 +73,9 @@ EngCreateDriverObj( BOOL APIENTRY EngDeleteDriverObj( - IN HDRVOBJ hdo, - IN BOOL bCallBack, - IN BOOL bLocked) + _In_ _Post_ptr_invalid_ HDRVOBJ hdo, + _In_ BOOL bCallBack, + _In_ BOOL bLocked) { PEDRIVEROBJ pedo; @@ -111,7 +112,7 @@ EngDeleteDriverObj( PDRIVEROBJ APIENTRY EngLockDriverObj( - IN HDRVOBJ hdo) + _In_ HDRVOBJ hdo) { PEDRIVEROBJ pedo; @@ -126,7 +127,7 @@ EngLockDriverObj( BOOL APIENTRY EngUnlockDriverObj( - IN HDRVOBJ hdo) + _In_ _Post_ptr_invalid_ HDRVOBJ hdo) { PEDRIVEROBJ pedo; ULONG cLocks; diff --git a/reactos/win32ss/gdi/eng/engbrush.c b/reactos/win32ss/gdi/eng/engbrush.c index 45acd94b13e..81d2a977efd 100644 --- a/reactos/win32ss/gdi/eng/engbrush.c +++ b/reactos/win32ss/gdi/eng/engbrush.c @@ -287,7 +287,7 @@ NTAPI EBRUSHOBJ_bRealizeBrush(EBRUSHOBJ *pebo, BOOL bCallDriver) { BOOL bResult; - PFN_DrvRealizeBrush pfnRealzizeBrush = NULL; + PFN_DrvRealizeBrush pfnRealizeBrush = NULL; PSURFACE psurfPattern, psurfMask; PPDEVOBJ ppdev; EXLATEOBJ exlo; @@ -303,10 +303,10 @@ EBRUSHOBJ_bRealizeBrush(EBRUSHOBJ *pebo, BOOL bCallDriver) if (!ppdev) ppdev = gppdevPrimary; if (bCallDriver) - pfnRealzizeBrush = ppdev->DriverFunctions.RealizeBrush; + pfnRealizeBrush = ppdev->DriverFunctions.RealizeBrush; - if (!pfnRealzizeBrush) - pfnRealzizeBrush = EngRealizeBrush; + if (!pfnRealizeBrush) + pfnRealizeBrush = EngRealizeBrush; /* Check if this is a hatch brush */ if (pbr->flAttrs & BR_IS_HATCH) @@ -351,12 +351,12 @@ EBRUSHOBJ_bRealizeBrush(EBRUSHOBJ *pebo, BOOL bCallDriver) pebo->crCurrentText); /* Create the realization */ - bResult = pfnRealzizeBrush(&pebo->BrushObject, - &pebo->psurfTrg->SurfObj, - &psurfPattern->SurfObj, - psurfMask ? &psurfMask->SurfObj : NULL, - &exlo.xlo, - iHatch); + bResult = pfnRealizeBrush(&pebo->BrushObject, + &pebo->psurfTrg->SurfObj, + &psurfPattern->SurfObj, + psurfMask ? &psurfMask->SurfObj : NULL, + &exlo.xlo, + iHatch); /* Cleanup the XLATEOBJ */ EXLATEOBJ_vCleanup(&exlo); diff --git a/reactos/win32ss/gdi/eng/engevent.c b/reactos/win32ss/gdi/eng/engevent.c index 51f79759979..7b3f00859bc 100644 --- a/reactos/win32ss/gdi/eng/engevent.c +++ b/reactos/win32ss/gdi/eng/engevent.c @@ -17,7 +17,8 @@ BOOL APIENTRY -EngCreateEvent(OUT PEVENT* Event) +EngCreateEvent( + _Deref_out_opt_ PEVENT* Event) { BOOLEAN Result = TRUE; PENG_EVENT EngEvent; @@ -54,7 +55,8 @@ EngCreateEvent(OUT PEVENT* Event) BOOL APIENTRY -EngDeleteEvent(IN PEVENT Event) +EngDeleteEvent( + _In_ _Post_ptr_invalid_ PEVENT Event) { DPRINT("EngDeleteEvent(%p)\n", Event); @@ -75,7 +77,8 @@ EngDeleteEvent(IN PEVENT Event) VOID APIENTRY -EngClearEvent(IN PEVENT Event) +EngClearEvent( + _In_ PEVENT Event) { /* Clear the event */ KeClearEvent(Event->pKEvent); @@ -83,7 +86,8 @@ EngClearEvent(IN PEVENT Event) LONG APIENTRY -EngSetEvent(IN PEVENT Event) +EngSetEvent( + _In_ PEVENT Event) { /* Set the event */ return KeSetEvent(Event->pKEvent, @@ -93,7 +97,8 @@ EngSetEvent(IN PEVENT Event) LONG APIENTRY -EngReadStateEvent(IN PEVENT Event) +EngReadStateEvent( + _In_ PEVENT Event) { /* Read the event state */ return KeReadStateEvent(Event->pKEvent); @@ -101,11 +106,12 @@ EngReadStateEvent(IN PEVENT Event) PEVENT APIENTRY -EngMapEvent(IN HDEV hDev, - IN HANDLE hUserObject, - IN PVOID Reserved1, - IN PVOID Reserved2, - IN PVOID Reserved3) +EngMapEvent( + _In_ HDEV hDev, + _In_ HANDLE hUserObject, + _Reserved_ PVOID Reserved1, + _Reserved_ PVOID Reserved2, + _Reserved_ PVOID Reserved3) { PENG_EVENT EngEvent; NTSTATUS Status; @@ -147,7 +153,8 @@ EngMapEvent(IN HDEV hDev, BOOL APIENTRY -EngUnmapEvent(IN PEVENT Event) +EngUnmapEvent( + _In_ PEVENT Event) { /* Must be a usermapped event */ if (!(Event->fFlags & ENG_EVENT_USERMAPPED)) return FALSE; @@ -162,8 +169,9 @@ EngUnmapEvent(IN PEVENT Event) BOOL APIENTRY -EngWaitForSingleObject(IN PEVENT Event, - IN PLARGE_INTEGER TimeOut) +EngWaitForSingleObject( + _In_ PEVENT Event, + _In_opt_ PLARGE_INTEGER TimeOut) { NTSTATUS Status; DPRINT("EngWaitForSingleObject(%p %I64d)\n", Event, TimeOut->QuadPart); diff --git a/reactos/win32ss/gdi/eng/engmisc.c b/reactos/win32ss/gdi/eng/engmisc.c index 0f4cf878d73..56d0fadd29b 100644 --- a/reactos/win32ss/gdi/eng/engmisc.c +++ b/reactos/win32ss/gdi/eng/engmisc.c @@ -229,8 +229,9 @@ EngGetProcessHandle(VOID) VOID APIENTRY -EngGetCurrentCodePage(OUT PUSHORT OemCodePage, - OUT PUSHORT AnsiCodePage) +EngGetCurrentCodePage( + _Out_ PUSHORT OemCodePage, + _Out_ PUSHORT AnsiCodePage) { /* Forward to kernel */ RtlGetDefaultCodePage(AnsiCodePage, OemCodePage); @@ -239,8 +240,8 @@ EngGetCurrentCodePage(OUT PUSHORT OemCodePage, BOOL APIENTRY EngQuerySystemAttribute( - IN ENG_SYSTEM_ATTRIBUTE CapNum, - OUT PDWORD pCapability) + _In_ ENG_SYSTEM_ATTRIBUTE CapNum, + _Out_ PDWORD pCapability) { SYSTEM_BASIC_INFORMATION sbi; SYSTEM_PROCESSOR_INFORMATION spi; diff --git a/reactos/win32ss/gdi/eng/error.c b/reactos/win32ss/gdi/eng/error.c index a844c70fea1..2ff36883b78 100644 --- a/reactos/win32ss/gdi/eng/error.c +++ b/reactos/win32ss/gdi/eng/error.c @@ -24,7 +24,7 @@ EngGetLastError(VOID) */ VOID APIENTRY -EngSetLastError(IN ULONG iError) +EngSetLastError(_In_ ULONG iError) { PTEB pTeb = NtCurrentTeb(); if (pTeb) diff --git a/reactos/win32ss/gdi/eng/float.c b/reactos/win32ss/gdi/eng/float.c index 1187b9424ab..c2030593bd0 100644 --- a/reactos/win32ss/gdi/eng/float.c +++ b/reactos/win32ss/gdi/eng/float.c @@ -18,7 +18,7 @@ BOOL APIENTRY EngRestoreFloatingPointState( - IN VOID *Buffer) + _In_ VOID *Buffer) { NTSTATUS Status; @@ -34,8 +34,8 @@ EngRestoreFloatingPointState( ULONG APIENTRY EngSaveFloatingPointState( - OUT VOID *Buffer, - IN ULONG BufferSize) + _Out_ VOID *Buffer, + _In_ ULONG BufferSize) { KFLOATING_SAVE TempBuffer; NTSTATUS Status; diff --git a/reactos/win32ss/gdi/eng/gradient.c b/reactos/win32ss/gdi/eng/gradient.c index afd81368d24..24a55cc32d4 100644 --- a/reactos/win32ss/gdi/eng/gradient.c +++ b/reactos/win32ss/gdi/eng/gradient.c @@ -1,4 +1,4 @@ -/* +/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * PURPOSE: GDI Driver Gradient Functions @@ -443,16 +443,16 @@ IntEngIsNULLTriangle(TRIVERTEX *pVertex, GRADIENT_TRIANGLE *gt) BOOL APIENTRY EngGradientFill( - IN SURFOBJ *psoDest, - IN CLIPOBJ *pco, - IN XLATEOBJ *pxlo, - IN TRIVERTEX *pVertex, - IN ULONG nVertex, - IN PVOID pMesh, - IN ULONG nMesh, - IN RECTL *prclExtents, - IN POINTL *pptlDitherOrg, - IN ULONG ulMode) + _Inout_ SURFOBJ *psoDest, + _In_ CLIPOBJ *pco, + _In_opt_ XLATEOBJ *pxlo, + _In_ TRIVERTEX *pVertex, + _In_ ULONG nVertex, + _In_ PVOID pMesh, + _In_ ULONG nMesh, + _In_ RECTL *prclExtents, + _In_ POINTL *pptlDitherOrg, + _In_ ULONG ulMode) { ULONG i; BOOL ret = FALSE; diff --git a/reactos/win32ss/gdi/eng/inteng.h b/reactos/win32ss/gdi/eng/inteng.h index 589bb8d1821..a2e48e5f7a3 100644 --- a/reactos/win32ss/gdi/eng/inteng.h +++ b/reactos/win32ss/gdi/eng/inteng.h @@ -2,7 +2,7 @@ typedef ULONG HCLIP; -#define ENUM_RECT_LIMIT 50 +#define ENUM_RECT_LIMIT 32 typedef struct _RECT_ENUM { diff --git a/reactos/win32ss/gdi/eng/ldevobj.c b/reactos/win32ss/gdi/eng/ldevobj.c index f00c01bcb26..a4afcf76eb8 100644 --- a/reactos/win32ss/gdi/eng/ldevobj.c +++ b/reactos/win32ss/gdi/eng/ldevobj.c @@ -324,7 +324,7 @@ EngLoadImageEx( WCHAR acwBuffer[MAX_PATH]; PLDEVOBJ pldev; UNICODE_STRING strDriverName; - ULONG cwcLength; + SIZE_T cwcLength; LPWSTR pwsz; DPRINT("EngLoadImageEx(%ls, %lu)\n", pwszDriverName, ldevtype); @@ -442,7 +442,7 @@ leave: HANDLE APIENTRY EngLoadImage( - LPWSTR pwszDriverName) + _In_ LPWSTR pwszDriverName) { return (HANDLE)EngLoadImageEx(pwszDriverName, LDEV_IMAGE); } @@ -451,7 +451,7 @@ EngLoadImage( VOID APIENTRY EngUnloadImage( - IN HANDLE hModule) + _In_ HANDLE hModule) { PLDEVOBJ pldev = (PLDEVOBJ)hModule; @@ -486,8 +486,8 @@ EngUnloadImage( PVOID APIENTRY EngFindImageProcAddress( - IN HANDLE hModule, - IN LPSTR lpProcName) + _In_ HANDLE hModule, + _In_ LPSTR lpProcName) { PLDEVOBJ pldev = (PLDEVOBJ)hModule; diff --git a/reactos/win32ss/gdi/eng/lineto.c b/reactos/win32ss/gdi/eng/lineto.c index e61b8e7a9fb..31b45c84dc5 100644 --- a/reactos/win32ss/gdi/eng/lineto.c +++ b/reactos/win32ss/gdi/eng/lineto.c @@ -316,15 +316,16 @@ SEtoNW(SURFOBJ* OutputObj, CLIPOBJ* Clip, * @implemented */ BOOL APIENTRY -EngLineTo(SURFOBJ *DestObj, - CLIPOBJ *Clip, - BRUSHOBJ *pbo, - LONG x1, - LONG y1, - LONG x2, - LONG y2, - RECTL *RectBounds, - MIX mix) +EngLineTo( + _Inout_ SURFOBJ *DestObj, + _In_ CLIPOBJ *Clip, + _In_ BRUSHOBJ *pbo, + _In_ LONG x1, + _In_ LONG y1, + _In_ LONG x2, + _In_ LONG y2, + _In_opt_ RECTL *RectBounds, + _In_ MIX mix) { LONG x, y, deltax, deltay, xchange, ychange, hx, vy; ULONG i; diff --git a/reactos/win32ss/gdi/eng/mapping.c b/reactos/win32ss/gdi/eng/mapping.c index e13453c83ba..be5ddb185ba 100644 --- a/reactos/win32ss/gdi/eng/mapping.c +++ b/reactos/win32ss/gdi/eng/mapping.c @@ -419,7 +419,8 @@ EngLoadModuleEx( HANDLE APIENTRY -EngLoadModule(LPWSTR pwsz) +EngLoadModule( + _In_ LPWSTR pwsz) { /* Forward to EngLoadModuleEx */ return (HANDLE)EngLoadModuleEx(pwsz, 0, FVF_READONLY | FVF_SYSTEMROOT); @@ -428,8 +429,8 @@ EngLoadModule(LPWSTR pwsz) HANDLE APIENTRY EngLoadModuleForWrite( - IN LPWSTR pwsz, - IN ULONG cjSizeOfModule) + _In_ LPWSTR pwsz, + _In_ ULONG cjSizeOfModule) { /* Forward to EngLoadModuleEx */ return (HANDLE)EngLoadModuleEx(pwsz, cjSizeOfModule, FVF_SYSTEMROOT); @@ -438,15 +439,15 @@ EngLoadModuleForWrite( PVOID APIENTRY EngMapModule( - IN HANDLE h, - OUT PULONG pulSize) + _In_ HANDLE h, + _Out_ PULONG pulSize) { PFILEVIEW pFileView = (PFILEVIEW)h; NTSTATUS Status; pFileView->cjView = 0; - /* FIXME: Use system space because ARM3 doesn't support executable sections yet */ + /* FIXME: Use system space because ARM3 doesn't support executable sections yet */ Status = MmMapViewInSystemSpace(pFileView->pSection, &pFileView->pvKView, &pFileView->cjView); @@ -457,18 +458,19 @@ EngMapModule( return NULL; } - *pulSize = pFileView->cjView; + *pulSize = (ULONG)pFileView->cjView; return pFileView->pvKView; } VOID APIENTRY -EngFreeModule(IN HANDLE h) +EngFreeModule( + _In_ HANDLE h) { PFILEVIEW pFileView = (PFILEVIEW)h; NTSTATUS Status; - /* FIXME: Use system space because ARM3 doesn't support executable sections yet */ + /* FIXME: Use system space because ARM3 doesn't support executable sections yet */ Status = MmUnmapViewInSystemSpace(pFileView->pvKView); if (!NT_SUCCESS(Status)) { @@ -483,12 +485,14 @@ EngFreeModule(IN HANDLE h) EngFreeMem(pFileView); } +_Success_(return != 0) +_When_(cjSize != 0, _At_(return, _Out_writes_bytes_(cjSize))) PVOID APIENTRY EngMapFile( - IN LPWSTR pwsz, - IN ULONG cjSize, - OUT ULONG_PTR *piFile) + _In_ LPWSTR pwsz, + _In_ ULONG cjSize, + _Out_ ULONG_PTR *piFile) { HANDLE hModule; PVOID pvBase; @@ -517,7 +521,7 @@ EngMapFile( BOOL APIENTRY EngUnmapFile( - IN ULONG_PTR iFile) + _In_ ULONG_PTR iFile) { HANDLE hModule = (HANDLE)iFile; @@ -530,9 +534,9 @@ EngUnmapFile( BOOL APIENTRY EngMapFontFileFD( - IN ULONG_PTR iFile, - OUT PULONG *ppjBuf, - OUT ULONG *pcjBuf) + _In_ ULONG_PTR iFile, + _Outptr_result_bytebuffer_(*pcjBuf) PULONG *ppjBuf, + _Out_ ULONG *pcjBuf) { // www.osr.com/ddk/graphics/gdifncs_0co7.htm UNIMPLEMENTED; @@ -542,7 +546,7 @@ EngMapFontFileFD( VOID APIENTRY EngUnmapFontFileFD( - IN ULONG_PTR iFile) + _In_ ULONG_PTR iFile) { // http://www.osr.com/ddk/graphics/gdifncs_6wbr.htm UNIMPLEMENTED; @@ -551,9 +555,9 @@ EngUnmapFontFileFD( BOOL APIENTRY EngMapFontFile( - ULONG_PTR iFile, - PULONG *ppjBuf, - ULONG *pcjBuf) + _In_ ULONG_PTR iFile, + _Outptr_result_bytebuffer_(*pcjBuf) PULONG *ppjBuf, + _Out_ ULONG *pcjBuf) { // www.osr.com/ddk/graphics/gdifncs_3up3.htm return EngMapFontFileFD(iFile, ppjBuf, pcjBuf); @@ -562,7 +566,7 @@ EngMapFontFile( VOID APIENTRY EngUnmapFontFile( - IN ULONG_PTR iFile) + _In_ ULONG_PTR iFile) { // www.osr.com/ddk/graphics/gdifncs_09wn.htm EngUnmapFontFileFD(iFile); diff --git a/reactos/win32ss/gdi/eng/surface.c b/reactos/win32ss/gdi/eng/surface.c index ce83bf1f71a..6e08c550eec 100644 --- a/reactos/win32ss/gdi/eng/surface.c +++ b/reactos/win32ss/gdi/eng/surface.c @@ -275,11 +275,11 @@ SURFACE_AllocSurface( HBITMAP APIENTRY EngCreateBitmap( - IN SIZEL sizl, - IN LONG lWidth, - IN ULONG iFormat, - IN ULONG fl, - IN PVOID pvBits) + _In_ SIZEL sizl, + _In_ LONG lWidth, + _In_ ULONG iFormat, + _In_ ULONG fl, + _In_ PVOID pvBits) { PSURFACE psurf; HBITMAP hbmp; @@ -315,9 +315,9 @@ EngCreateBitmap( HBITMAP APIENTRY EngCreateDeviceBitmap( - IN DHSURF dhsurf, - IN SIZEL sizl, - IN ULONG iFormat) + _In_ DHSURF dhsurf, + _In_ SIZEL sizl, + _In_ ULONG iFormat) { PSURFACE psurf; HBITMAP hbmp; @@ -353,9 +353,9 @@ EngCreateDeviceBitmap( HSURF APIENTRY EngCreateDeviceSurface( - IN DHSURF dhsurf, - IN SIZEL sizl, - IN ULONG iFormat) + _In_ DHSURF dhsurf, + _In_ SIZEL sizl, + _In_ ULONG iFormat) { PSURFACE psurf; HSURF hsurf; @@ -391,9 +391,9 @@ EngCreateDeviceSurface( BOOL APIENTRY EngAssociateSurface( - IN HSURF hsurf, - IN HDEV hdev, - IN FLONG flHooks) + _In_ HSURF hsurf, + _In_ HDEV hdev, + _In_ FLONG flHooks) { SURFOBJ *pso; PSURFACE psurf; @@ -431,14 +431,14 @@ EngAssociateSurface( BOOL APIENTRY EngModifySurface( - IN HSURF hsurf, - IN HDEV hdev, - IN FLONG flHooks, - IN FLONG flSurface, - IN DHSURF dhsurf, - OUT VOID *pvScan0, - IN LONG lDelta, - IN VOID *pvReserved) + _In_ HSURF hsurf, + _In_ HDEV hdev, + _In_ FLONG flHooks, + _In_ FLONG flSurface, + _In_ DHSURF dhsurf, + _In_ VOID *pvScan0, + _In_ LONG lDelta, + _Reserved_ VOID *pvReserved) { SURFOBJ *pso; PSURFACE psurf; @@ -478,7 +478,8 @@ EngModifySurface( BOOL APIENTRY -EngDeleteSurface(IN HSURF hsurf) +EngDeleteSurface( + _In_ HSURF hsurf) { PSURFACE psurf; @@ -496,9 +497,9 @@ EngDeleteSurface(IN HSURF hsurf) BOOL APIENTRY EngEraseSurface( - SURFOBJ *pso, - RECTL *prcl, - ULONG iColor) + _In_ SURFOBJ *pso, + _In_ RECTL *prcl, + _In_ ULONG iColor) { ASSERT(pso); ASSERT(prcl); @@ -517,7 +518,8 @@ NtGdiEngLockSurface(IN HSURF hsurf) SURFOBJ * APIENTRY -EngLockSurface(IN HSURF hsurf) +EngLockSurface( + _In_ HSURF hsurf) { SURFACE *psurf = SURFACE_ShareLockSurface(hsurf); @@ -534,7 +536,8 @@ NtGdiEngUnlockSurface(IN SURFOBJ *pso) VOID APIENTRY -EngUnlockSurface(IN SURFOBJ *pso) +EngUnlockSurface( + _In_ SURFOBJ *pso) { if (pso != NULL) { diff --git a/reactos/win32ss/gdi/eng/xlateobj.c b/reactos/win32ss/gdi/eng/xlateobj.c index 2308022b922..b1cb79e5590 100644 --- a/reactos/win32ss/gdi/eng/xlateobj.c +++ b/reactos/win32ss/gdi/eng/xlateobj.c @@ -42,7 +42,9 @@ _Always_(_Post_satisfies_(return==iColor)) _Function_class_(FN_XLATE) ULONG FASTCALL -EXLATEOBJ_iXlateTrivial(PEXLATEOBJ pexlo, ULONG iColor) +EXLATEOBJ_iXlateTrivial( + _In_ PEXLATEOBJ pexlo, + _In_ ULONG iColor) { return iColor; } @@ -50,7 +52,7 @@ EXLATEOBJ_iXlateTrivial(PEXLATEOBJ pexlo, ULONG iColor) _Function_class_(FN_XLATE) ULONG FASTCALL -EXLATEOBJ_iXlateToMono(PEXLATEOBJ pexlo, ULONG iColor) +EXLATEOBJ_iXlateToMono(_In_ PEXLATEOBJ pexlo, ULONG iColor) { return (iColor == pexlo->xlo.pulXlate[0]); } @@ -354,12 +356,12 @@ EXLATEOBJ_iXlateBitfieldsToPal(PEXLATEOBJ pexlo, ULONG iColor) VOID NTAPI EXLATEOBJ_vInitialize( - PEXLATEOBJ pexlo, - PALETTE *ppalSrc, - PALETTE *ppalDst, - COLORREF crSrcBackColor, - COLORREF crDstBackColor, - COLORREF crDstForeColor) + _Out_ PEXLATEOBJ pexlo, + _In_opt_ PALETTE *ppalSrc, + _In_opt_ PALETTE *ppalDst, + _In_ COLORREF crSrcBackColor, + _In_ COLORREF crDstBackColor, + _In_ COLORREF crDstForeColor) { ULONG cEntries; ULONG i, ulColor; @@ -607,9 +609,9 @@ EXLATEOBJ_vInitialize( VOID NTAPI EXLATEOBJ_vInitXlateFromDCs( - EXLATEOBJ* pexlo, - PDC pdcSrc, - PDC pdcDst) + _Out_ EXLATEOBJ* pexlo, + _In_ PDC pdcSrc, + _In_ PDC pdcDst) { PSURFACE psurfDst, psurfSrc; @@ -644,7 +646,8 @@ VOID NTAPI EXLATEOBJ_vInitSrcMonoXlate( VOID NTAPI -EXLATEOBJ_vCleanup(PEXLATEOBJ pexlo) +EXLATEOBJ_vCleanup( + _Inout_ PEXLATEOBJ pexlo) { if (pexlo->xlo.pulXlate != pexlo->aulXlate) { @@ -658,7 +661,9 @@ EXLATEOBJ_vCleanup(PEXLATEOBJ pexlo) #undef XLATEOBJ_iXlate ULONG NTAPI -XLATEOBJ_iXlate(XLATEOBJ *pxlo, ULONG iColor) +XLATEOBJ_iXlate( + _In_ XLATEOBJ *pxlo, + _In_ ULONG iColor) { PEXLATEOBJ pexlo = (PEXLATEOBJ)pxlo; @@ -671,7 +676,11 @@ XLATEOBJ_iXlate(XLATEOBJ *pxlo, ULONG iColor) ULONG NTAPI -XLATEOBJ_cGetPalette(XLATEOBJ *pxlo, ULONG iPal, ULONG cPal, ULONG *pPalOut) +XLATEOBJ_cGetPalette( + _In_ XLATEOBJ *pxlo, + _In_ ULONG iPal, + _In_ ULONG cPal, + _Out_cap_(cPal) ULONG *pPalOut) { PEXLATEOBJ pexlo = (PEXLATEOBJ)pxlo; PPALETTE ppal; @@ -741,7 +750,8 @@ XLATEOBJ_cGetPalette(XLATEOBJ *pxlo, ULONG iPal, ULONG cPal, ULONG *pPalOut) HANDLE NTAPI -XLATEOBJ_hGetColorTransform(XLATEOBJ *pxlo) +XLATEOBJ_hGetColorTransform( + _In_ XLATEOBJ *pxlo) { PEXLATEOBJ pexlo = (PEXLATEOBJ)pxlo; return pexlo->hColorTransform; @@ -749,7 +759,8 @@ XLATEOBJ_hGetColorTransform(XLATEOBJ *pxlo) PULONG NTAPI -XLATEOBJ_piVector(XLATEOBJ *pxlo) +XLATEOBJ_piVector( + _In_ XLATEOBJ *pxlo) { if (pxlo->iSrcType == PAL_INDEXED) { diff --git a/reactos/win32ss/gdi/ntgdi/gdifloat.h b/reactos/win32ss/gdi/ntgdi/gdifloat.h index 25bd1b2969b..94c590f47dc 100644 --- a/reactos/win32ss/gdi/ntgdi/gdifloat.h +++ b/reactos/win32ss/gdi/ntgdi/gdifloat.h @@ -1,5 +1,10 @@ #pragma once +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable:28110) // disable "Drivers must protect floating point hardware state" warning +#endif + typedef struct tagFLOAT_POINT { FLOAT x, y; @@ -99,3 +104,7 @@ static __inline void INTERNAL_LPTODP(DC *dc, LPPOINT point) MulDiv((tx), (pdcattr)->szlViewportExt.cx, (pdcattr)->szlWindowExt.cx) #define YLSTODS(pdcattr,ty) \ MulDiv((ty), (pdcattr)->szlViewportExt.cy, (pdcattr)->szlWindowExt.cy) + +#ifdef _MSC_VER +#pragma warning(pop) +#endif diff --git a/reactos/win32ss/user/ntuser/object.h b/reactos/win32ss/user/ntuser/object.h index 2ab5f36da05..51355746184 100644 --- a/reactos/win32ss/user/ntuser/object.h +++ b/reactos/win32ss/user/ntuser/object.h @@ -6,29 +6,6 @@ typedef struct _USER_REFERENCE_ENTRY PVOID obj; } USER_REFERENCE_ENTRY, *PUSER_REFERENCE_ENTRY; -#define USER_ASSERT(exp,file,line) \ - if (!(exp)) {RtlAssert(#exp,(PVOID)file,line,"");} - -static __inline VOID -UserAssertLastRef(PVOID obj, const char *file, int line) -{ - PTHREADINFO W32Thread; - PSINGLE_LIST_ENTRY ReferenceEntry; - PUSER_REFERENCE_ENTRY UserReferenceEntry; - - USER_ASSERT(obj != NULL, file, line); - W32Thread = PsGetCurrentThreadWin32Thread(); - USER_ASSERT(W32Thread != NULL, file, line); - ReferenceEntry = W32Thread->ReferencesList.Next; - USER_ASSERT(ReferenceEntry != NULL, file, line); - UserReferenceEntry = CONTAINING_RECORD(ReferenceEntry, USER_REFERENCE_ENTRY, Entry); - USER_ASSERT(UserReferenceEntry != NULL, file, line); - USER_ASSERT(obj == UserReferenceEntry->obj, file, line); -} -#define ASSERT_LAST_REF(_obj_) UserAssertLastRef(_obj,__FILE__,__LINE__) - -#undef USER_ASSERT - extern PUSER_HANDLE_TABLE gHandleTable; VOID FASTCALL UserReferenceObject(PVOID obj); PVOID FASTCALL UserReferenceObjectByHandle(HANDLE handle, HANDLE_TYPE type); From d2a161fbb54dfd4d8e92ed580f2613313a0cfa99 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 1 Jan 2013 09:50:33 +0000 Subject: [PATCH 34/96] Fix build svn path=/trunk/; revision=58077 --- reactos/win32ss/gdi/eng/bitblt.c | 34 ++++++++++++++++++++++---------- reactos/win32ss/gdi/eng/clip.c | 4 ++-- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/reactos/win32ss/gdi/eng/bitblt.c b/reactos/win32ss/gdi/eng/bitblt.c index e9476c4e7d0..52599dd3070 100644 --- a/reactos/win32ss/gdi/eng/bitblt.c +++ b/reactos/win32ss/gdi/eng/bitblt.c @@ -469,16 +469,23 @@ EngBitBlt( switch (clippingType) { case DC_TRIVIAL: - Ret = (*BltRectFunc)(OutputObj, InputObj, Mask, ColorTranslation, - &OutputRect, &InputPoint, MaskOrigin, pbo, - &AdjustedBrushOrigin, Rop4); + Ret = (*BltRectFunc)(OutputObj, + InputObj, + psoSrc, + pxlo, + &OutputRect, + &InputPoint, + pptlMask, + pbo, + &AdjustedBrushOrigin, + rop4); break; case DC_RECT: /* Clip the blt to the clip rectangle */ - ClipRect.left = ClipRegion->rclBounds.left; - ClipRect.right = ClipRegion->rclBounds.right; - ClipRect.top = ClipRegion->rclBounds.top; - ClipRect.bottom = ClipRegion->rclBounds.bottom; + ClipRect.left = pco->rclBounds.left; + ClipRect.right = pco->rclBounds.right; + ClipRect.top = pco->rclBounds.top; + ClipRect.bottom = pco->rclBounds.bottom; if (RECTL_bIntersectRect(&CombinedRect, &OutputRect, &ClipRect)) { #ifdef _USE_DIBLIB_ @@ -490,9 +497,16 @@ EngBitBlt( #endif Pt.x = InputPoint.x + CombinedRect.left - OutputRect.left; Pt.y = InputPoint.y + CombinedRect.top - OutputRect.top; - Ret = (*BltRectFunc)(OutputObj, InputObj, Mask, ColorTranslation, - &CombinedRect, &Pt, MaskOrigin, pbo, - &AdjustedBrushOrigin, Rop4); + Ret = (*BltRectFunc)(OutputObj, + InputObj, + psoSrc, + pxlo, + &CombinedRect, + &Pt, + pptlMask, + pbo, + &AdjustedBrushOrigin, + rop4); } break; case DC_COMPLEX: diff --git a/reactos/win32ss/gdi/eng/clip.c b/reactos/win32ss/gdi/eng/clip.c index ce48ef4d6f9..bce0502cf45 100644 --- a/reactos/win32ss/gdi/eng/clip.c +++ b/reactos/win32ss/gdi/eng/clip.c @@ -315,8 +315,8 @@ CLIPOBJ_cEnumStart( break; default: - DPRINT1("Invalid BuildOrder %lu\n", BuildOrder); - BuildOrder = ClipGDI->EnumOrder; + DPRINT1("Invalid iDirection %lu\n", iDirection); + iDirection = ClipGDI->EnumOrder; CompareFunc = NULL; break; } From 5becc492ad4dff9a36d551ac48c3482abbd55669 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 1 Jan 2013 11:02:11 +0000 Subject: [PATCH 35/96] [WIN32K] - Fix a typo from r58077 svn path=/trunk/; revision=58078 --- reactos/win32ss/gdi/eng/bitblt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/win32ss/gdi/eng/bitblt.c b/reactos/win32ss/gdi/eng/bitblt.c index 52599dd3070..20e34a034fc 100644 --- a/reactos/win32ss/gdi/eng/bitblt.c +++ b/reactos/win32ss/gdi/eng/bitblt.c @@ -471,7 +471,7 @@ EngBitBlt( case DC_TRIVIAL: Ret = (*BltRectFunc)(OutputObj, InputObj, - psoSrc, + psoMask, pxlo, &OutputRect, &InputPoint, @@ -499,7 +499,7 @@ EngBitBlt( Pt.y = InputPoint.y + CombinedRect.top - OutputRect.top; Ret = (*BltRectFunc)(OutputObj, InputObj, - psoSrc, + psoMask, pxlo, &CombinedRect, &Pt, From e54416f256042d432f31c0b1b611917288b2dcc5 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Tue, 1 Jan 2013 11:28:25 +0000 Subject: [PATCH 36/96] [REGEDIT] - Check if the new name equals the old name. In that case don't rename key. - Fixes regedit accidentaly deleting keys when a key is clicked and the rename field appears CORE-6205 #resolve #comment finally regedit is usable svn path=/trunk/; revision=58079 --- reactos/base/applications/regedit/edit.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/reactos/base/applications/regedit/edit.c b/reactos/base/applications/regedit/edit.c index 4ff2ec94844..6ff13f0e3a3 100644 --- a/reactos/base/applications/regedit/edit.c +++ b/reactos/base/applications/regedit/edit.c @@ -1399,6 +1399,12 @@ static LONG MoveKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR l if (!lpSrcSubKey) return ERROR_INVALID_FUNCTION; + if (wcscmp(lpDestSubKey, lpSrcSubKey) == 0) + { + /* destination name equals source name */ + return ERROR_SUCCESS; + } + lResult = CopyKey(hDestKey, lpDestSubKey, hSrcKey, lpSrcSubKey); if (lResult == ERROR_SUCCESS) SHDeleteKey(hSrcKey, lpSrcSubKey); From febbf7f603838bd2a497eb0ad1c81609d031eba1 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 1 Jan 2013 11:37:59 +0000 Subject: [PATCH 37/96] [FREELDR] Fix a copy pasta, noticed by r3ddr4g0n. svn path=/trunk/; revision=58080 --- reactos/boot/freeldr/freeldr/mm/meminit.c | 1 - 1 file changed, 1 deletion(-) diff --git a/reactos/boot/freeldr/freeldr/mm/meminit.c b/reactos/boot/freeldr/freeldr/mm/meminit.c index 5a8a25d4d05..b9e8877c872 100644 --- a/reactos/boot/freeldr/freeldr/mm/meminit.c +++ b/reactos/boot/freeldr/freeldr/mm/meminit.c @@ -184,7 +184,6 @@ MmCheckFreeldrImageFile() (FileHeader->NumberOfSections != FREELDR_SECTION_COUNT) || (FileHeader->PointerToSymbolTable != 0) || (FileHeader->NumberOfSymbols != 0) || - (FileHeader->NumberOfSymbols != 0) || (FileHeader->SizeOfOptionalHeader != 0xE0)) { return FALSE; From 46da7478295bbca085699d33637cda371f24f888 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 1 Jan 2013 11:57:58 +0000 Subject: [PATCH 38/96] [WIN32K] Exchange fields individually in PDEVOBJ_vSwitchPdev() instead of duplicating a full PDEV structure on the stack. This saves a lot of stack space. svn path=/trunk/; revision=58081 --- reactos/win32ss/gdi/eng/pdevobj.c | 56 ++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 19 deletions(-) diff --git a/reactos/win32ss/gdi/eng/pdevobj.c b/reactos/win32ss/gdi/eng/pdevobj.c index 5214e0b7e78..5402a84c8c6 100644 --- a/reactos/win32ss/gdi/eng/pdevobj.c +++ b/reactos/win32ss/gdi/eng/pdevobj.c @@ -341,52 +341,68 @@ EngpCreatePDEV( return ppdev; } +VOID +FORCEINLINE +SwitchPointer( + _Inout_ PVOID pvPointer1, + _Inout_ PVOID pvPointer2) +{ + PVOID *ppvPointer1 = pvPointer1; + PVOID *ppvPointer2 = pvPointer2; + PVOID pvTemp; + + pvTemp = *ppvPointer1; + *ppvPointer1 = *ppvPointer2; + *ppvPointer2 = pvTemp; +} + VOID NTAPI PDEVOBJ_vSwitchPdev( PPDEVOBJ ppdev, PPDEVOBJ ppdev2) { - PDEVOBJ pdevTmp; - DWORD tmpStateFlags; - - /* Exchange data */ - pdevTmp = *ppdev; + union + { + DRIVER_FUNCTIONS pfn; + GDIINFO gdiinfo; + DEVINFO devinfo; + DWORD StateFlags; + } temp; /* Exchange driver functions */ + temp.pfn = ppdev->pfn; ppdev->pfn = ppdev2->pfn; - ppdev2->pfn = pdevTmp.pfn; + ppdev2->pfn = temp.pfn; /* Exchange LDEVs */ - ppdev->pldev = ppdev2->pldev; - ppdev2->pldev = pdevTmp.pldev; + SwitchPointer(&ppdev->pldev, &ppdev2->pldev); /* Exchange DHPDEV */ - ppdev->dhpdev = ppdev2->dhpdev; - ppdev2->dhpdev = pdevTmp.dhpdev; + SwitchPointer(&ppdev->dhpdev, &ppdev2->dhpdev); /* Exchange surfaces and associate them with their new PDEV */ - ppdev->pSurface = ppdev2->pSurface; - ppdev2->pSurface = pdevTmp.pSurface; + SwitchPointer(&ppdev->pSurface, &ppdev2->pSurface); ppdev->pSurface->SurfObj.hdev = (HDEV)ppdev; ppdev2->pSurface->SurfObj.hdev = (HDEV)ppdev2; /* Exchange devinfo */ + temp.devinfo = ppdev->devinfo; ppdev->devinfo = ppdev2->devinfo; - ppdev2->devinfo = pdevTmp.devinfo; + ppdev2->devinfo = temp.devinfo; /* Exchange gdiinfo */ + temp.gdiinfo = ppdev->gdiinfo; ppdev->gdiinfo = ppdev2->gdiinfo; - ppdev2->gdiinfo = pdevTmp.gdiinfo; + ppdev2->gdiinfo = temp.gdiinfo; /* Exchange DEVMODE */ - ppdev->pdmwDev = ppdev2->pdmwDev; - ppdev2->pdmwDev = pdevTmp.pdmwDev; + SwitchPointer(&ppdev->pdmwDev, &ppdev2->pdmwDev); /* Exchange state flags */ - tmpStateFlags = ppdev->pGraphicsDevice->StateFlags; + temp.StateFlags = ppdev->pGraphicsDevice->StateFlags; ppdev->pGraphicsDevice->StateFlags = ppdev2->pGraphicsDevice->StateFlags; - ppdev2->pGraphicsDevice->StateFlags = tmpStateFlags; + ppdev2->pGraphicsDevice->StateFlags = temp.StateFlags; /* Notify each driver instance of its new HDEV association */ ppdev->pfn.CompletePDEV(ppdev->dhpdev, (HDEV)ppdev); @@ -407,6 +423,7 @@ PDEVOBJ_bSwitchMode( /* Lock the PDEV */ EngAcquireSemaphore(ppdev->hsemDevLock); + /* And everything else */ EngAcquireSemaphore(ghsemPDEV); @@ -613,9 +630,10 @@ PDEVOBJ_vGetDeviceCaps( /** Exported functions ********************************************************/ +_Must_inspect_result_ _Ret_z_ LPWSTR APIENTRY -EngGetDriverName(IN HDEV hdev) +EngGetDriverName(_In_ HDEV hdev) { PPDEVOBJ ppdev = (PPDEVOBJ)hdev; From 5b8a6dd3cc3e0a9c023a1c522bbd048cce631fd0 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 1 Jan 2013 12:09:53 +0000 Subject: [PATCH 39/96] [WIN32K] Rewrite EngMulDiv. svn path=/trunk/; revision=58082 --- reactos/win32ss/gdi/eng/math.c | 80 ++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 38 deletions(-) diff --git a/reactos/win32ss/gdi/eng/math.c b/reactos/win32ss/gdi/eng/math.c index 46036ee6bcc..f14abf8c943 100644 --- a/reactos/win32ss/gdi/eng/math.c +++ b/reactos/win32ss/gdi/eng/math.c @@ -21,53 +21,57 @@ #include -/* - * FIXME: Is there a better algorithm, like FT_MulDiv? - * - * @implemented - */ -INT APIENTRY EngMulDiv( - INT nMultiplicand, - INT nMultiplier, - INT nDivisor) +INT +APIENTRY +EngMulDiv( + _In_ INT iMultiplicand, + _In_ INT iMultiplier, + _In_ INT iDivisor) { -#if SIZEOF_LONG_LONG >= 8 - long long ret; + INT64 i64Multiplied, i64Result; - if (!nDivisor) return -1; - - /* We want to deal with a positive divisor to simplify the logic. */ - if (nDivisor < 0) + /* Check for divide by zero */ + if (iDivisor == 0) { - nMultiplicand = - nMultiplicand; - nDivisor = -nDivisor; + /* Quick sign check and return "infinite" */ + return ((iMultiplicand ^ iMultiplier) < 0) ? INT_MIN : INT_MAX; } - /* If the result is positive, we "add" to round. else, we subtract to round. */ - if ( ( (nMultiplicand < 0) && (nMultiplier < 0) ) || - ( (nMultiplicand >= 0) && (nMultiplier >= 0) ) ) - ret = (((long long)nMultiplicand * nMultiplier) + (nDivisor/2)) / nDivisor; + /* We want to deal with a positive divisor to simplify the logic. */ + if (iDivisor < 0) + { + iMultiplicand = -iMultiplicand; + iDivisor = -iDivisor; + } + + /* Do the multiplication */ + i64Multiplied = Int32x32To64(iMultiplicand, iMultiplier); + + /* If the result is positive, we add to round, else we subtract to round. */ + if (i64Multiplied >= 0) + { + i64Multiplied += (iDivisor / 2); + } else - ret = (((long long)nMultiplicand * nMultiplier) - (nDivisor/2)) / nDivisor; - - if ((ret > 2147483647) || (ret < -2147483647)) return -1; - return ret; -#else - if (!nDivisor) return -1; - - /* We want to deal with a positive divisor to simplify the logic. */ - if (nDivisor < 0) { - nMultiplicand = - nMultiplicand; - nDivisor = -nDivisor; + i64Multiplied -= (iDivisor / 2); } - /* If the result is positive, we "add" to round. else, we subtract to round. */ - if ( ( (nMultiplicand < 0) && (nMultiplier < 0) ) || - ( (nMultiplicand >= 0) && (nMultiplier >= 0) ) ) - return ((nMultiplicand * nMultiplier) + (nDivisor/2)) / nDivisor; + /* Now do the divide */ + i64Result = i64Multiplied / iDivisor; - return ((nMultiplicand * nMultiplier) - (nDivisor/2)) / nDivisor; + /* Check for positive overflow */ + if (i64Result > INT_MAX) + { + return INT_MAX; + } -#endif + /* Check for negative overflow. */ + if (i64Result < INT_MIN) + { + return INT_MIN; + } + + return (INT)i64Result; } + From f7c2bc2e7f113214909b9bd33968fb1b08119579 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Tue, 1 Jan 2013 12:12:19 +0000 Subject: [PATCH 40/96] [SETUP][SYSSETUP] - Restore focus after closing GPL window - Patch by vort CORE-6837 #resolve #comment fixed in rev 58083 svn path=/trunk/; revision=58083 --- reactos/dll/win32/syssetup/wizard.c | 1 + 1 file changed, 1 insertion(+) diff --git a/reactos/dll/win32/syssetup/wizard.c b/reactos/dll/win32/syssetup/wizard.c index ea1b22c335a..f1caf2ac4a7 100644 --- a/reactos/dll/win32/syssetup/wizard.c +++ b/reactos/dll/win32/syssetup/wizard.c @@ -348,6 +348,7 @@ AckPageDlgProc(HWND hwndDlg, if (HIWORD(wParam) == BN_CLICKED && IDC_VIEWGPL == LOWORD(wParam)) { DialogBox(hDllInstance, MAKEINTRESOURCE(IDD_GPL), NULL, GplDlgProc); + SetForegroundWindow(GetParent(hwndDlg)); } break; From 7ea8822b246cac5b9501f75208956c4ac2550a4e Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Tue, 1 Jan 2013 14:18:27 +0000 Subject: [PATCH 41/96] [KERNEL32] - Fix escape sequence parsing in CreateProcessInternalW. Patch by Vincenzo Cotugno. svn path=/trunk/; revision=58084 --- reactos/dll/win32/kernel32/client/proc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/dll/win32/kernel32/client/proc.c b/reactos/dll/win32/kernel32/client/proc.c index cbf5437ab81..245687bac7b 100644 --- a/reactos/dll/win32/kernel32/client/proc.c +++ b/reactos/dll/win32/kernel32/client/proc.c @@ -2625,7 +2625,7 @@ CreateProcessInternalW(HANDLE hToken, while (NULL != (ScanString = wcschr(ScanString, L'^'))) { ScanString++; - if (*ScanString == L'\"' || *ScanString == L'^' || *ScanString == L'\"') + if (*ScanString == L'\"' || *ScanString == L'^' || *ScanString == L'\\') { Escape = TRUE; break; From ae0b2b2e35c9ac7851bb7d12f72f33ac996030a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 1 Jan 2013 14:55:53 +0000 Subject: [PATCH 42/96] [REGEDIT] Fix totally broken InfoMessageBox function. ~=~=\|/ **** Happy New Year 2013 !!!! **** \|/=~=~ svn path=/trunk/; revision=58085 --- reactos/base/applications/regedit/error.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/reactos/base/applications/regedit/error.c b/reactos/base/applications/regedit/error.c index 631359154df..cd4ba993e80 100644 --- a/reactos/base/applications/regedit/error.c +++ b/reactos/base/applications/regedit/error.c @@ -40,7 +40,7 @@ int ErrorMessageBox(HWND hWnd, LPCWSTR lpTitle, DWORD dwErrorCode, ...) va_end(args); - iRet = MessageBoxW(hWnd, (Status && lpMsgBuf ? lpMsgBuf : L"Error displaying error message.\n"), lpTitle, MB_OK | MB_ICONERROR); + iRet = MessageBoxW(hWnd, (Status && lpMsgBuf ? lpMsgBuf : L"Error displaying error message."), lpTitle, MB_OK | MB_ICONERROR); if (lpMsgBuf) LocalFree(lpMsgBuf); @@ -52,22 +52,25 @@ int InfoMessageBox(HWND hWnd, UINT uType, LPCWSTR lpTitle, LPCWSTR lpMessage, .. { int iRet = 0; LPWSTR lpMsgBuf = NULL; - DWORD Status = 0; va_list args = NULL; va_start(args, lpMessage); - Status = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING, - lpMessage, - 0, - 0, - (LPWSTR)&lpMsgBuf, - 0, - &args); + if (lpMessage) + { + SIZE_T strLen = _vscwprintf(lpMessage, args); + + /* Create a buffer on the heap and zero-out it (LPTR) */ + lpMsgBuf = (LPWSTR)LocalAlloc(LPTR, (strLen + 1) * sizeof(WCHAR)); + if (lpMsgBuf) + { + _vsnwprintf(lpMsgBuf, strLen, lpMessage, args); + } + } va_end(args); - iRet = MessageBoxW(hWnd, (Status && lpMsgBuf ? lpMsgBuf : L"Error displaying error message.\n"), lpTitle, uType); + iRet = MessageBoxW(hWnd, (lpMessage && lpMsgBuf ? lpMsgBuf : L"Error displaying info message."), lpTitle, uType); if (lpMsgBuf) LocalFree(lpMsgBuf); From f4019db7f8786bb74fea0adf67a50c5f6b9aac8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 1 Jan 2013 14:57:12 +0000 Subject: [PATCH 43/96] Fix comment svn path=/trunk/; revision=58086 --- reactos/base/applications/regedit/error.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/base/applications/regedit/error.c b/reactos/base/applications/regedit/error.c index cd4ba993e80..1999ac6b2b1 100644 --- a/reactos/base/applications/regedit/error.c +++ b/reactos/base/applications/regedit/error.c @@ -60,7 +60,7 @@ int InfoMessageBox(HWND hWnd, UINT uType, LPCWSTR lpTitle, LPCWSTR lpMessage, .. { SIZE_T strLen = _vscwprintf(lpMessage, args); - /* Create a buffer on the heap and zero-out it (LPTR) */ + /* Create a buffer on the heap and zero it out (LPTR) */ lpMsgBuf = (LPWSTR)LocalAlloc(LPTR, (strLen + 1) * sizeof(WCHAR)); if (lpMsgBuf) { From 408db391be68ad46873ab183ca7f1b12304729f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 1 Jan 2013 16:06:02 +0000 Subject: [PATCH 44/96] [REGEDIT] - Use REG_OPTION_NON_VOLATILE instead of 0 in RegCreateKeyEx. - Do not rename keys when they have the same name, case-insensitive (as Windows does), fix for r58079 / CORE-6205. svn path=/trunk/; revision=58087 --- reactos/base/applications/regedit/edit.c | 12 +++++------ reactos/base/applications/regedit/find.c | 2 +- reactos/base/applications/regedit/regproc.c | 21 ++++++++++---------- reactos/base/applications/regedit/treeview.c | 2 +- 4 files changed, 18 insertions(+), 19 deletions(-) diff --git a/reactos/base/applications/regedit/edit.c b/reactos/base/applications/regedit/edit.c index 6ff13f0e3a3..f154a11b870 100644 --- a/reactos/base/applications/regedit/edit.c +++ b/reactos/base/applications/regedit/edit.c @@ -1344,7 +1344,7 @@ static LONG CopyKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR l } /* create the destination subkey */ - lResult = RegCreateKeyExW(hDestKey, lpDestSubKey, 0, NULL, 0, KEY_WRITE, NULL, + lResult = RegCreateKeyExW(hDestKey, lpDestSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hDestSubKey, &dwDisposition); if (lResult) goto done; @@ -1399,11 +1399,11 @@ static LONG MoveKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR l if (!lpSrcSubKey) return ERROR_INVALID_FUNCTION; - if (wcscmp(lpDestSubKey, lpSrcSubKey) == 0) - { - /* destination name equals source name */ - return ERROR_SUCCESS; - } + if (_wcsicmp(lpDestSubKey, lpSrcSubKey) == 0) + { + /* Destination name equals source name */ + return ERROR_SUCCESS; + } lResult = CopyKey(hDestKey, lpDestSubKey, hSrcKey, lpSrcSubKey); if (lResult == ERROR_SUCCESS) diff --git a/reactos/base/applications/regedit/find.c b/reactos/base/applications/regedit/find.c index 0a15204a924..c0a1500d83c 100644 --- a/reactos/base/applications/regedit/find.c +++ b/reactos/base/applications/regedit/find.c @@ -586,7 +586,7 @@ static void SetFindFlags(DWORD dwFlags) DWORD dwDisposition; DWORD dwData; - if (RegCreateKeyExW(HKEY_CURRENT_USER, g_szGeneralRegKey, 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS) + if (RegCreateKeyExW(HKEY_CURRENT_USER, g_szGeneralRegKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS) { dwData = (dwFlags >> 0) & 0x0000FFFF; RegSetValueExW(hKey, s_szFindFlags, 0, REG_DWORD, (const BYTE *) &dwData, sizeof(dwData)); diff --git a/reactos/base/applications/regedit/regproc.c b/reactos/base/applications/regedit/regproc.c index 69604e8e897..5ca08506c48 100644 --- a/reactos/base/applications/regedit/regproc.c +++ b/reactos/base/applications/regedit/regproc.c @@ -458,17 +458,16 @@ static LONG openKeyW(WCHAR* stdInput) if (!parseKeyName(stdInput, &keyClass, &keyPath)) return ERROR_INVALID_PARAMETER; - res = RegCreateKeyExW( - keyClass, /* Class */ - keyPath, /* Sub Key */ - 0, /* MUST BE 0 */ - NULL, /* object type */ - REG_OPTION_NON_VOLATILE, /* option, REG_OPTION_NON_VOLATILE ... */ - KEY_ALL_ACCESS, /* access mask, KEY_ALL_ACCESS */ - NULL, /* security attribute */ - ¤tKeyHandle, /* result */ - &dwDisp); /* disposition, REG_CREATED_NEW_KEY or - REG_OPENED_EXISTING_KEY */ + res = RegCreateKeyExW(keyClass, /* Class */ + keyPath, /* Sub Key */ + 0, /* MUST BE 0 */ + NULL, /* object type */ + REG_OPTION_NON_VOLATILE, /* option, REG_OPTION_NON_VOLATILE ... */ + KEY_ALL_ACCESS, /* access mask, KEY_ALL_ACCESS */ + NULL, /* security attribute */ + ¤tKeyHandle, /* result */ + &dwDisp); /* disposition, REG_CREATED_NEW_KEY or + REG_OPENED_EXISTING_KEY */ if (res == ERROR_SUCCESS) currentKeyName = GetMultiByteString(stdInput); diff --git a/reactos/base/applications/regedit/treeview.c b/reactos/base/applications/regedit/treeview.c index cd06e7b5238..471294706fc 100644 --- a/reactos/base/applications/regedit/treeview.c +++ b/reactos/base/applications/regedit/treeview.c @@ -593,7 +593,7 @@ BOOL CreateNewKey(HWND hwndTV, HTREEITEM hItem) do { wsprintf(szNewKey, szNewKeyFormat, iIndex++); - nResult = RegCreateKeyExW(hKey, szNewKey, 0, NULL, 0, KEY_WRITE, NULL, &hNewKey, &dwDisposition); + nResult = RegCreateKeyExW(hKey, szNewKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hNewKey, &dwDisposition); if (hNewKey && dwDisposition == REG_OPENED_EXISTING_KEY) { RegCloseKey(hNewKey); From 968788ebd8e0b239b69efccc9bae769ca756c11c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 1 Jan 2013 16:42:07 +0000 Subject: [PATCH 45/96] [NTOSKRNL] Display both on the screen and on the debug console that an invalid debug service was called. svn path=/trunk/; revision=58088 --- reactos/ntoskrnl/kd/kdmain.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/kd/kdmain.c b/reactos/ntoskrnl/kd/kdmain.c index 3e21f675ee7..0b13fae3b41 100644 --- a/reactos/ntoskrnl/kd/kdmain.c +++ b/reactos/ntoskrnl/kd/kdmain.c @@ -108,7 +108,8 @@ KdpServiceDispatcher(ULONG Service, #endif /* KDBG */ #endif /* DBG */ default: - HalDisplayString ("Invalid debug service call!\n"); + DPRINT1("Invalid debug service call!\n"); + HalDisplayString("Invalid debug service call!\n"); break; } From d225c3c95796f28047375c673c463c9bd03c9c77 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 1 Jan 2013 19:23:30 +0000 Subject: [PATCH 46/96] [WIN32K] - In NtGdiGetRandomRgn use the region pointers directly, instead of getting their handles. These regions might not even have a handle. - Fix last error code svn path=/trunk/; revision=58089 --- reactos/win32ss/gdi/ntgdi/dcobjs.c | 49 +++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/reactos/win32ss/gdi/ntgdi/dcobjs.c b/reactos/win32ss/gdi/ntgdi/dcobjs.c index db9bdbc8e06..85ef54bbcf9 100644 --- a/reactos/win32ss/gdi/ntgdi/dcobjs.c +++ b/reactos/win32ss/gdi/ntgdi/dcobjs.c @@ -615,12 +615,13 @@ NtGdiGetRandomRgn( INT ret = 0; PDC pdc; HRGN hrgnSrc = NULL; + PREGION prgnSrc = NULL; POINTL ptlOrg; pdc = DC_LockDc(hdc); if (!pdc) { - EngSetLastError(ERROR_INVALID_PARAMETER); + EngSetLastError(ERROR_INVALID_HANDLE); return -1; } @@ -628,34 +629,52 @@ NtGdiGetRandomRgn( { case CLIPRGN: hrgnSrc = pdc->rosdc.hClipRgn; -// if (pdc->dclevel.prgnClip) hrgnSrc = pdc->dclevel.prgnClip->BaseObject.hHmgr; +// if (pdc->dclevel.prgnClip) prgnSrc = pdc->dclevel.prgnClip; break; + case METARGN: - if (pdc->dclevel.prgnMeta) - hrgnSrc = pdc->dclevel.prgnMeta->BaseObject.hHmgr; + prgnSrc = pdc->dclevel.prgnMeta; break; + case APIRGN: - if (pdc->prgnAPI) hrgnSrc = pdc->prgnAPI->BaseObject.hHmgr; -// else if (pdc->dclevel.prgnClip) hrgnSrc = pdc->dclevel.prgnClip->BaseObject.hHmgr; - else if (pdc->rosdc.hClipRgn) hrgnSrc = pdc->rosdc.hClipRgn; - else if (pdc->dclevel.prgnMeta) hrgnSrc = pdc->dclevel.prgnMeta->BaseObject.hHmgr; - break; - case SYSRGN: - if (pdc->prgnVis) + if (pdc->prgnAPI) { - PREGION prgnDest = REGION_LockRgn(hrgnDest); - ret = IntGdiCombineRgn(prgnDest, pdc->prgnVis, 0, RGN_COPY) == ERROR ? -1 : 1; - REGION_UnlockRgn(prgnDest); + prgnSrc = pdc->prgnAPI; + } +// else if (pdc->dclevel.prgnClip) prgnSrc = pdc->dclevel.prgnClip; + else if (pdc->rosdc.hClipRgn) + { + hrgnSrc = pdc->rosdc.hClipRgn; + } + else if (pdc->dclevel.prgnMeta) + { + prgnSrc = pdc->dclevel.prgnMeta; } break; + + case SYSRGN: + prgnSrc = pdc->prgnVis; + break; + default: - hrgnSrc = NULL; + break; } if (hrgnSrc) { ret = NtGdiCombineRgn(hrgnDest, hrgnSrc, 0, RGN_COPY) == ERROR ? -1 : 1; } + else if (prgnSrc) + { + PREGION prgnDest = REGION_LockRgn(hrgnDest); + if (prgnDest) + { + ret = IntGdiCombineRgn(prgnDest, prgnSrc, 0, RGN_COPY) == ERROR ? -1 : 1; + REGION_UnlockRgn(prgnDest); + } + else + ret = -1; + } if (iCode == SYSRGN) { From 9792217df9b16dfccf2bd9e20d62a7ef580ef0db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 1 Jan 2013 19:38:47 +0000 Subject: [PATCH 47/96] [REGEDIT] - Revert lstrcpynW --> wcsncpy changes from r57471 back to lstrcpynW because this function automatically NULL-terminate strings (but I wonder if there is a replacement of lstrcpynW which has all its functionalities, in the CRT). This fixes address loading after editing it in the address bar. Caught by Edijus ;) - Unicodize a little bit more regedit. svn path=/trunk/; revision=58090 --- reactos/base/applications/regedit/childwnd.c | 28 ++++++++--------- reactos/base/applications/regedit/edit.c | 16 +++++----- reactos/base/applications/regedit/find.c | 10 +++--- reactos/base/applications/regedit/framewnd.c | 4 +-- reactos/base/applications/regedit/listview.c | 8 ++--- reactos/base/applications/regedit/treeview.c | 32 ++++++++++---------- 6 files changed, 49 insertions(+), 49 deletions(-) diff --git a/reactos/base/applications/regedit/childwnd.c b/reactos/base/applications/regedit/childwnd.c index d8b40e718ed..a55310a95b1 100644 --- a/reactos/base/applications/regedit/childwnd.c +++ b/reactos/base/applications/regedit/childwnd.c @@ -236,16 +236,16 @@ static void SuggestKeys(HKEY hRootKey, LPCWSTR pszKeyPath, LPWSTR pszSuggestions { /* Sanity check this key; it cannot be empty, nor can it be a * loop back */ - if ((szBuffer[0] != L'\0') && wcsicmp(szBuffer, pszKeyPath)) + if ((szBuffer[0] != L'\0') && _wcsicmp(szBuffer, pszKeyPath)) { if (RegOpenKeyW(hRootKey, szBuffer, &hOtherKey) == ERROR_SUCCESS) { - wcsncpy(pszSuggestions, L"HKCR\\", (int) iSuggestionsLength); + lstrcpynW(pszSuggestions, L"HKCR\\", (int) iSuggestionsLength); i = wcslen(pszSuggestions); pszSuggestions += i; iSuggestionsLength -= i; - wcsncpy(pszSuggestions, szBuffer, (int) iSuggestionsLength); + lstrcpynW(pszSuggestions, szBuffer, (int) iSuggestionsLength); i = MIN(wcslen(pszSuggestions) + 1, iSuggestionsLength); pszSuggestions += i; iSuggestionsLength -= i; @@ -266,12 +266,12 @@ static void SuggestKeys(HKEY hRootKey, LPCWSTR pszKeyPath, LPWSTR pszSuggestions if (QueryStringValue(hSubKey, L"CLSID", NULL, szBuffer, COUNT_OF(szBuffer)) == ERROR_SUCCESS) { - wcsncpy(pszSuggestions, L"HKCR\\CLSID\\", (int)iSuggestionsLength); + lstrcpynW(pszSuggestions, L"HKCR\\CLSID\\", (int)iSuggestionsLength); i = wcslen(pszSuggestions); pszSuggestions += i; iSuggestionsLength -= i; - wcsncpy(pszSuggestions, szBuffer, (int)iSuggestionsLength); + lstrcpynW(pszSuggestions, szBuffer, (int)iSuggestionsLength); i = MIN(wcslen(pszSuggestions) + 1, iSuggestionsLength); pszSuggestions += i; iSuggestionsLength -= i; @@ -286,7 +286,7 @@ LRESULT CALLBACK AddressBarProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPar { WNDPROC oldwndproc; static WCHAR s_szNode[256]; - oldwndproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(hwnd, GWL_USERDATA); + oldwndproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(hwnd, GWLP_USERDATA); switch (uMsg) { @@ -300,7 +300,7 @@ LRESULT CALLBACK AddressBarProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPar default: break; } - return CallWindowProc(oldwndproc, hwnd, uMsg, wParam, lParam); + return CallWindowProcW(oldwndproc, hwnd, uMsg, wParam, lParam); } static VOID @@ -333,8 +333,8 @@ UpdateAddress(HTREEITEM hItem, HKEY hRootKey, LPCWSTR pszPath) EnableMenuItem(GetSubMenu(hMenuFrame,0), ID_REGISTRY_LOADHIVE, MF_BYCOMMAND | MF_GRAYED); EnableMenuItem(GetSubMenu(hMenuFrame,0), ID_REGISTRY_UNLOADHIVE, MF_BYCOMMAND | MF_GRAYED); /* compare the strings to see if we should enable/disable the "Load Hive" menus accordingly */ - if (!(wcsicmp(rootName, L"HKEY_LOCAL_MACHINE") && - wcsicmp(rootName, L"HKEY_USERS"))) + if (!(_wcsicmp(rootName, L"HKEY_LOCAL_MACHINE") && + _wcsicmp(rootName, L"HKEY_USERS"))) { /* * enable the unload menu item if at the root, otherwise @@ -406,9 +406,9 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa 0); } /* Subclass the AddressBar */ - oldproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(g_pChildWnd->hAddressBarWnd, GWL_WNDPROC); - SetWindowLongPtr(g_pChildWnd->hAddressBarWnd, GWL_USERDATA, (DWORD_PTR)oldproc); - SetWindowLongPtr(g_pChildWnd->hAddressBarWnd, GWL_WNDPROC, (DWORD_PTR)AddressBarProc); + oldproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(g_pChildWnd->hAddressBarWnd, GWLP_WNDPROC); + SetWindowLongPtr(g_pChildWnd->hAddressBarWnd, GWLP_USERDATA, (DWORD_PTR)oldproc); + SetWindowLongPtr(g_pChildWnd->hAddressBarWnd, GWLP_WNDPROC, (DWORD_PTR)AddressBarProc); break; } case WM_COMMAND: @@ -660,8 +660,8 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa { TVHITTESTINFO hti; HMENU hContextMenu; - TVITEM item; - MENUITEMINFO mii; + TVITEMW item; + MENUITEMINFOW mii; WCHAR resource[256]; WCHAR buffer[256]; LPWSTR s; diff --git a/reactos/base/applications/regedit/edit.c b/reactos/base/applications/regedit/edit.c index f154a11b870..3ec9e1448bc 100644 --- a/reactos/base/applications/regedit/edit.c +++ b/reactos/base/applications/regedit/edit.c @@ -230,7 +230,7 @@ LRESULT CALLBACK DwordEditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPAR { WNDPROC oldwndproc; - oldwndproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(hwnd, GWL_USERDATA); + oldwndproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(hwnd, GWLP_USERDATA); switch (uMsg) { @@ -263,7 +263,7 @@ LRESULT CALLBACK DwordEditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPAR } } - return CallWindowProc(oldwndproc, hwnd, uMsg, wParam, lParam); + return CallWindowProcW(oldwndproc, hwnd, uMsg, wParam, lParam); } @@ -285,9 +285,9 @@ INT_PTR CALLBACK modify_dword_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LP /* subclass the edit control */ hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA); - oldproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(hwndValue, GWL_WNDPROC); - SetWindowLongPtr(hwndValue, GWL_USERDATA, (DWORD_PTR)oldproc); - SetWindowLongPtr(hwndValue, GWL_WNDPROC, (DWORD_PTR)DwordEditSubclassProc); + oldproc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(hwndValue, GWLP_WNDPROC); + SetWindowLongPtr(hwndValue, GWLP_USERDATA, (DWORD_PTR)oldproc); + SetWindowLongPtr(hwndValue, GWLP_WNDPROC, (DWORD_PTR)DwordEditSubclassProc); if (editValueName && wcscmp(editValueName, L"")) { @@ -665,7 +665,7 @@ ParseResources(HWND hwnd) HWND hwndLV; WCHAR buffer[80]; - LVITEM item; + LVITEMW item; INT iItem; pFullDescriptor = &resourceValueData->List[fullResourceIndex]; @@ -866,7 +866,7 @@ OnResourceNotify(HWND hwndDlg, NMHDR *phdr) if (lpnmlv->iItem != -1) { PCM_PARTIAL_RESOURCE_DESCRIPTOR pDescriptor; - LVITEM item; + LVITEMW item; item.mask = LVIF_PARAM; item.iItem = lpnmlv->iItem; @@ -968,7 +968,7 @@ static VOID AddFullResourcesToList(HWND hwnd) { PCM_FULL_RESOURCE_DESCRIPTOR pFullDescriptor; WCHAR buffer[80]; - LVITEM item; + LVITEMW item; ULONG i; INT iItem; diff --git a/reactos/base/applications/regedit/find.c b/reactos/base/applications/regedit/find.c index c0a1500d83c..3c3e7d4cc0c 100644 --- a/reactos/base/applications/regedit/find.c +++ b/reactos/base/applications/regedit/find.c @@ -77,7 +77,7 @@ static BOOL CompareName(LPCWSTR pszName1, LPCWSTR pszName2) if (s_dwFlags & RSF_MATCHCASE) return wcscmp(pszName1, pszName2) == 0; else - return wcsicmp(pszName1, pszName2) == 0; + return _wcsicmp(pszName1, pszName2) == 0; } else { @@ -130,7 +130,7 @@ int compare(const void *x, const void *y) { const LPCWSTR *a = (const LPCWSTR *)x; const LPCWSTR *b = (const LPCWSTR *)y; - return wcsicmp(*a, *b); + return _wcsicmp(*a, *b); } BOOL RegFindRecurse( @@ -198,7 +198,7 @@ BOOL RegFindRecurse( if (DoEvents()) goto err; - if (!fPast && wcsicmp(ppszNames[i], pszValueName) == 0) + if (!fPast && _wcsicmp(ppszNames[i], pszValueName) == 0) { fPast = TRUE; continue; @@ -390,7 +390,7 @@ BOOL RegFindWalk( } else { - wcsncpy(szKeyName, pch + 1, MAX_PATH); + lstrcpynW(szKeyName, pch + 1, MAX_PATH); *pch = 0; lResult = RegOpenKeyExW(hBaseKey, szSubKey, 0, KEY_ALL_ACCESS, &hSubKey); @@ -434,7 +434,7 @@ BOOL RegFindWalk( if (DoEvents()) goto err; - if (!fPast && wcsicmp(ppszNames[i], szKeyName) == 0) + if (!fPast && _wcsicmp(ppszNames[i], szKeyName) == 0) { fPast = TRUE; continue; diff --git a/reactos/base/applications/regedit/framewnd.c b/reactos/base/applications/regedit/framewnd.c index 19b8a8e4bfb..d94534abb0a 100644 --- a/reactos/base/applications/regedit/framewnd.c +++ b/reactos/base/applications/regedit/framewnd.c @@ -453,7 +453,7 @@ static BOOL ImportRegistryFile(HWND hWnd) { /* Look at the extension of the file to determine its type */ if (ofn.nFileExtension >= 1 && - wcsicmp(ofn.lpstrFile + ofn.nFileExtension, L"reg") == 0) /* REGEDIT4 or Windows Registry Editor Version 5.00 */ + _wcsicmp(ofn.lpstrFile + ofn.nFileExtension, L"reg") == 0) /* REGEDIT4 or Windows Registry Editor Version 5.00 */ { /* Open the file */ FILE* fp = _wfopen(ofn.lpstrFile, L"r"); @@ -1249,7 +1249,7 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) if ((LOWORD(wParam) >= ID_FAVORITES_MIN) && (LOWORD(wParam) <= ID_FAVORITES_MAX)) { HMENU hMenu; - MENUITEMINFO mii; + MENUITEMINFOW mii; WCHAR szFavorite[512]; hMenu = GetSubMenu(GetMenu(hWnd), FAVORITES_MENU_POSITION); diff --git a/reactos/base/applications/regedit/listview.c b/reactos/base/applications/regedit/listview.c index 2d7970a33c6..958c50f1550 100644 --- a/reactos/base/applications/regedit/listview.c +++ b/reactos/base/applications/regedit/listview.c @@ -56,7 +56,7 @@ static const int column_alignment[MAX_LIST_COLUMNS] = { LVCFMT_LEFT, LVCFMT_LEFT LPCWSTR GetValueName(HWND hwndLV, int iStartAt) { int item; - LVITEM LVItem; + LVITEMW LVItem; PLINE_INFO lineinfo; /* @@ -108,7 +108,7 @@ VOID SetValueName(HWND hwndLV, LPCWSTR pszValueName) BOOL IsDefaultValue(HWND hwndLV, int i) { PLINE_INFO lineinfo; - LVITEM Item; + LVITEMW Item; Item.mask = LVIF_PARAM; Item.iItem = i; @@ -126,7 +126,7 @@ BOOL IsDefaultValue(HWND hwndLV, int i) static void AddEntryToList(HWND hwndLV, LPWSTR Name, DWORD dwValType, void* ValBuf, DWORD dwCount, int Position, BOOL ValExists) { PLINE_INFO linfo; - LVITEM item; + LVITEMW item; int index; linfo = (PLINE_INFO)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(LINE_INFO) + dwCount); @@ -654,7 +654,7 @@ fail: void DestroyListView(HWND hwndLV) { INT count, i; - LVITEM item; + LVITEMW item; count = ListView_GetItemCount(hwndLV); for (i = 0; i < count; i++) diff --git a/reactos/base/applications/regedit/treeview.c b/reactos/base/applications/regedit/treeview.c index 471294706fc..f27299c9671 100644 --- a/reactos/base/applications/regedit/treeview.c +++ b/reactos/base/applications/regedit/treeview.c @@ -34,7 +34,7 @@ static LPWSTR pathBuffer; static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPWSTR* pKeyPath, int* pPathLen, int* pMaxLen) { - TVITEM item; + TVITEMW item; size_t maxLen, len; LPWSTR newStr; @@ -109,8 +109,8 @@ BOOL DeleteNode(HWND hwndTV, HTREEITEM hItem) /* Add an entry to the tree. Only give hKey for root nodes (HKEY_ constants) */ static HTREEITEM AddEntryToTree(HWND hwndTV, HTREEITEM hParent, LPWSTR label, HKEY hKey, DWORD dwChildren) { - TVITEM tvi; - TVINSERTSTRUCT tvins; + TVITEMW tvi; + TVINSERTSTRUCTW tvins; if (hKey) { @@ -140,7 +140,7 @@ BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem) LPCWSTR KeyPath; DWORD dwCount, dwIndex, dwMaxSubKeyLen; LPWSTR Name = NULL; - TVITEM tvItem; + TVITEMW tvItem; LPWSTR pszNodes = NULL; BOOL bSuccess = FALSE; LPWSTR s; @@ -332,7 +332,7 @@ HTREEITEM InsertNode(HWND hwndTV, HTREEITEM hItem, LPWSTR name) { WCHAR buf[MAX_NEW_KEY_LEN]; HTREEITEM hNewItem = 0; - TVITEMEX item; + TVITEMEXW item; /* Default to the current selection */ if (!hItem) @@ -390,8 +390,8 @@ HWND StartKeyRename(HWND hwndTV) static BOOL InitTreeViewItems(HWND hwndTV, LPWSTR pHostName) { - TVITEM tvi; - TVINSERTSTRUCT tvins; + TVITEMW tvi; + TVINSERTSTRUCTW tvins; HTREEITEM hRoot; tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_CHILDREN | TVIF_PARAM; @@ -664,7 +664,7 @@ BOOL SelectNode(HWND hwndTV, LPCWSTR keyPath) WCHAR szPathPart[128]; WCHAR szBuffer[128]; LPCWSTR s; - TVITEM tvi; + TVITEMW tvi; /* Load "My Computer" string... */ LoadStringW(hInst, IDS_MY_COMPUTER, szBuffer, COUNT_OF(szBuffer)); @@ -683,22 +683,22 @@ BOOL SelectNode(HWND hwndTV, LPCWSTR keyPath) while(keyPath[0]) { s = wcschr(keyPath, L'\\'); - wcsncpy(szPathPart, keyPath, s ? s - keyPath + 1 : wcslen(keyPath) + 1); + lstrcpynW(szPathPart, keyPath, s ? s - keyPath + 1 : wcslen(keyPath) + 1); /* Special case for root to expand root key abbreviations */ if (hItem == hRoot) { - if (!wcsicmp(szPathPart, L"HKCR")) + if (!_wcsicmp(szPathPart, L"HKCR")) wcscpy(szPathPart, L"HKEY_CLASSES_ROOT"); - else if (!wcsicmp(szPathPart, L"HKCU")) + else if (!_wcsicmp(szPathPart, L"HKCU")) wcscpy(szPathPart, L"HKEY_CURRENT_USER"); - else if (!wcsicmp(szPathPart, L"HKLM")) + else if (!_wcsicmp(szPathPart, L"HKLM")) wcscpy(szPathPart, L"HKEY_LOCAL_MACHINE"); - else if (!wcsicmp(szPathPart, L"HKU")) + else if (!_wcsicmp(szPathPart, L"HKU")) wcscpy(szPathPart, L"HKEY_USERS"); - else if (!wcsicmp(szPathPart, L"HKCC")) + else if (!_wcsicmp(szPathPart, L"HKCC")) wcscpy(szPathPart, L"HKEY_CURRENT_CONFIG"); - else if (!wcsicmp(szPathPart, L"HKDD")) + else if (!_wcsicmp(szPathPart, L"HKDD")) wcscpy(szPathPart, L"HKEY_DYN_DATA"); } @@ -713,7 +713,7 @@ BOOL SelectNode(HWND hwndTV, LPCWSTR keyPath) (void)TreeView_GetItem(hwndTV, &tvi); - if (!wcsicmp(szBuffer, szPathPart)) + if (!_wcsicmp(szBuffer, szPathPart)) break; } From 7dd6427e003cc5d8e1ca0cc61618ffbdf521d071 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 1 Jan 2013 19:41:20 +0000 Subject: [PATCH 48/96] [WIN32K] Partly revert r57691. Fixes messed up icons in 32bpp. svn path=/trunk/; revision=58091 --- reactos/win32ss/gdi/ntgdi/dib.h | 5 +- reactos/win32ss/gdi/ntgdi/dibobj.c | 123 +++++++++++++++--------- reactos/win32ss/user/ntuser/clipboard.c | 2 +- reactos/win32ss/user/ntuser/misc/file.c | 2 +- 4 files changed, 80 insertions(+), 52 deletions(-) diff --git a/reactos/win32ss/gdi/ntgdi/dib.h b/reactos/win32ss/gdi/ntgdi/dib.h index 2c679598750..7eabbdf397c 100644 --- a/reactos/win32ss/gdi/ntgdi/dib.h +++ b/reactos/win32ss/gdi/ntgdi/dib.h @@ -7,11 +7,8 @@ int FASTCALL DIB_GetBitmapInfo( const BITMAPINFOHEADER *header, LONG *width, INT APIENTRY DIB_GetDIBImageBytes (INT width, INT height, INT depth); HPALETTE FASTCALL DIB_MapPaletteColors(PPALETTE ppal, CONST BITMAPINFO* lpbmi); HPALETTE FASTCALL BuildDIBPalette (CONST BITMAPINFO *bmi); - -/* Those functions permit to tranparently work with a BITMAPCOREINFO structure */ BITMAPINFO* FASTCALL DIB_ConvertBitmapInfo(CONST BITMAPINFO* bmi, DWORD Usage); -/* Pass Usage = -1 if you don't want to convert the BITMAPINFO back to BITMAPCOREINFO */ -VOID FASTCALL DIB_FreeConvertedBitmapInfo(BITMAPINFO* converted, BITMAPINFO* orig, DWORD Usage); +VOID FASTCALL DIB_FreeConvertedBitmapInfo(BITMAPINFO* converted, BITMAPINFO* orig); INT APIENTRY diff --git a/reactos/win32ss/gdi/ntgdi/dibobj.c b/reactos/win32ss/gdi/ntgdi/dibobj.c index 1ae6311cc31..76dbeb1ba84 100644 --- a/reactos/win32ss/gdi/ntgdi/dibobj.c +++ b/reactos/win32ss/gdi/ntgdi/dibobj.c @@ -584,6 +584,7 @@ GreGetDIBitsInternal( DWORD compr, size ; USHORT i; int bitmap_type; + RGBTRIPLE* rgbTriples; RGBQUAD* rgbQuads; VOID* colorPtr; @@ -593,6 +594,7 @@ GreGetDIBitsInternal( return 0; colorPtr = (LPBYTE)Info + Info->bmiHeader.biSize; + rgbTriples = colorPtr; rgbQuads = colorPtr; bitmap_type = DIB_GetBitmapInfo(&Info->bmiHeader, @@ -641,6 +643,15 @@ GreGetDIBitsInternal( switch(bpp) { case 0: /* Only info */ + if(pbmci) + { + pbmci->bmciHeader.bcWidth = (WORD)psurf->SurfObj.sizlBitmap.cx; + pbmci->bmciHeader.bcHeight = (WORD)((psurf->SurfObj.fjBitmap & BMF_TOPDOWN) ? + -psurf->SurfObj.sizlBitmap.cy : + psurf->SurfObj.sizlBitmap.cy); + pbmci->bmciHeader.bcPlanes = 1; + pbmci->bmciHeader.bcBitCount = BitsPerFormat(psurf->SurfObj.iBitmapFormat); + } Info->bmiHeader.biWidth = psurf->SurfObj.sizlBitmap.cx; Info->bmiHeader.biHeight = (psurf->SurfObj.fjBitmap & BMF_TOPDOWN) ? -psurf->SurfObj.sizlBitmap.cy : @@ -691,6 +702,16 @@ GreGetDIBitsInternal( if(Usage == DIB_RGB_COLORS) { ULONG colors = min(psurf->ppal->NumColors, 256); + + if(pbmci) + { + for(i = 0; i < colors; i++) + { + rgbTriples[i].rgbtRed = psurf->ppal->IndexedColors[i].peRed; + rgbTriples[i].rgbtGreen = psurf->ppal->IndexedColors[i].peGreen; + rgbTriples[i].rgbtBlue = psurf->ppal->IndexedColors[i].peBlue; + } + } if(colors != 256) Info->bmiHeader.biClrUsed = colors; for(i = 0; i < colors; i++) { @@ -703,7 +724,10 @@ GreGetDIBitsInternal( else { for(i = 0; i < 256; i++) + { + if(pbmci) ((WORD*)rgbTriples)[i] = i; ((WORD*)rgbQuads)[i] = i; + } } } else @@ -712,6 +736,7 @@ GreGetDIBitsInternal( { for(i = 0; i < 256; i++) { + if(pbmci) ((WORD*)rgbTriples)[i] = i; ((WORD*)rgbQuads)[i] = i; } } @@ -728,6 +753,13 @@ GreGetDIBitsInternal( } for (i = 0; i < pDcPal->NumColors; i++) { + if (pbmci) + { + rgbTriples[i].rgbtRed = pDcPal->IndexedColors[i].peRed; + rgbTriples[i].rgbtGreen = pDcPal->IndexedColors[i].peGreen; + rgbTriples[i].rgbtBlue = pDcPal->IndexedColors[i].peBlue; + } + rgbQuads[i].rgbRed = pDcPal->IndexedColors[i].peRed; rgbQuads[i].rgbGreen = pDcPal->IndexedColors[i].peGreen; rgbQuads[i].rgbBlue = pDcPal->IndexedColors[i].peBlue; @@ -740,20 +772,55 @@ GreGetDIBitsInternal( switch (bpp) { case 1: - rgbQuads[0].rgbRed = rgbQuads[0].rgbGreen = rgbQuads[0].rgbBlue = 0; + if (pbmci) + { + rgbTriples[0].rgbtRed = rgbTriples[0].rgbtGreen = + rgbTriples[0].rgbtBlue = 0; + rgbTriples[1].rgbtRed = rgbTriples[1].rgbtGreen = + rgbTriples[1].rgbtBlue = 0xff; + } + rgbQuads[0].rgbRed = rgbQuads[0].rgbGreen = + rgbQuads[0].rgbBlue = 0; rgbQuads[0].rgbReserved = 0; - rgbQuads[1].rgbRed = rgbQuads[1].rgbGreen = rgbQuads[1].rgbBlue = 0xff; + rgbQuads[1].rgbRed = rgbQuads[1].rgbGreen = + rgbQuads[1].rgbBlue = 0xff; rgbQuads[1].rgbReserved = 0; break; case 4: + if (pbmci) + RtlCopyMemory(rgbTriples, EGAColorsTriples, sizeof(EGAColorsTriples)); RtlCopyMemory(rgbQuads, EGAColorsQuads, sizeof(EGAColorsQuads)); + break; case 8: { INT r, g, b; RGBQUAD *color; + if (pbmci) + { + RGBTRIPLE *colorTriple; + + RtlCopyMemory(rgbTriples, DefLogPaletteTriples, + 10 * sizeof(RGBTRIPLE)); + RtlCopyMemory(rgbTriples + 246, DefLogPaletteTriples + 10, + 10 * sizeof(RGBTRIPLE)); + colorTriple = rgbTriples + 10; + for(r = 0; r <= 5; r++) /* FIXME */ + { + for(g = 0; g <= 5; g++) + { + for(b = 0; b <= 5; b++) + { + colorTriple->rgbtRed = (r * 0xff) / 5; + colorTriple->rgbtGreen = (g * 0xff) / 5; + colorTriple->rgbtBlue = (b * 0xff) / 5; + colorTriple++; + } + } + } + } memcpy(rgbQuads, DefLogPaletteQuads, 10 * sizeof(RGBQUAD)); memcpy(rgbQuads + 246, DefLogPaletteQuads + 10, @@ -870,6 +937,11 @@ GreGetDIBitsInternal( RECTL_vSetRect(&rcDest, 0, 0, ScanLines, psurf->SurfObj.sizlBitmap.cx); + rcDest.left = 0; + rcDest.top = 0; + rcDest.bottom = ScanLines; + rcDest.right = psurf->SurfObj.sizlBitmap.cx; + srcPoint.x = 0; if(height < 0) @@ -918,7 +990,7 @@ done: if(pDC) DC_UnlockDc(pDC); if(psurf) SURFACE_ShareUnlockSurface(psurf); - if(pbmci) DIB_FreeConvertedBitmapInfo(Info, (BITMAPINFO*)pbmci, Usage); + if(pbmci) DIB_FreeConvertedBitmapInfo(Info, (BITMAPINFO*)pbmci); return ScanLines; } @@ -1857,51 +1929,10 @@ DIB_ConvertBitmapInfo (CONST BITMAPINFO* pbmi, DWORD Usage) /* Frees a BITMAPINFO created with DIB_ConvertBitmapInfo */ VOID FASTCALL -DIB_FreeConvertedBitmapInfo(BITMAPINFO* converted, BITMAPINFO* orig, DWORD usage) +DIB_FreeConvertedBitmapInfo(BITMAPINFO* converted, BITMAPINFO* orig) { - BITMAPCOREINFO* pbmci; - if(converted == orig) - return; - - if(usage == -1) - { - /* Caller don't want any conversion */ + if(converted != orig) ExFreePoolWithTag(converted, TAG_DIB); - return; - } - - /* Perform inverse conversion */ - pbmci = (BITMAPCOREINFO*)orig; - - ASSERT(pbmci->bmciHeader.bcSize == sizeof(BITMAPCOREHEADER)); - pbmci->bmciHeader.bcBitCount = converted->bmiHeader.biBitCount; - pbmci->bmciHeader.bcWidth = converted->bmiHeader.biWidth; - pbmci->bmciHeader.bcHeight = converted->bmiHeader.biHeight; - pbmci->bmciHeader.bcPlanes = converted->bmiHeader.biPlanes; - - if(pbmci->bmciHeader.bcBitCount <= 8) - { - UINT numColors = converted->bmiHeader.biClrUsed; - if(!numColors) numColors = 1 << pbmci->bmciHeader.bcBitCount; - if(usage == DIB_PAL_COLORS) - { - RtlZeroMemory(pbmci->bmciColors, (1 << pbmci->bmciHeader.bcBitCount) * sizeof(WORD)); - RtlCopyMemory(pbmci->bmciColors, converted->bmiColors, numColors * sizeof(WORD)); - } - else - { - UINT i; - RtlZeroMemory(pbmci->bmciColors, (1 << pbmci->bmciHeader.bcBitCount) * sizeof(RGBTRIPLE)); - for(i=0; ibmciColors[i].rgbtRed = converted->bmiColors[i].rgbRed; - pbmci->bmciColors[i].rgbtGreen = converted->bmiColors[i].rgbGreen; - pbmci->bmciColors[i].rgbtBlue = converted->bmiColors[i].rgbBlue; - } - } - } - /* Now free it, it's not needed anymore */ - ExFreePoolWithTag(converted, TAG_DIB); } /* EOF */ diff --git a/reactos/win32ss/user/ntuser/clipboard.c b/reactos/win32ss/user/ntuser/clipboard.c index 28bb21325c2..c5b2cadf935 100644 --- a/reactos/win32ss/user/ntuser/clipboard.c +++ b/reactos/win32ss/user/ntuser/clipboard.c @@ -276,7 +276,7 @@ cleanup: UserReleaseDC(NULL, hdc, FALSE); if (pConvertedBmi) - DIB_FreeConvertedBitmapInfo(pConvertedBmi, pBmi, -1); + DIB_FreeConvertedBitmapInfo(pConvertedBmi, pBmi); } VOID static NTAPI diff --git a/reactos/win32ss/user/ntuser/misc/file.c b/reactos/win32ss/user/ntuser/misc/file.c index 8b4d0e26b06..abc5a0ca651 100644 --- a/reactos/win32ss/user/ntuser/misc/file.c +++ b/reactos/win32ss/user/ntuser/misc/file.c @@ -233,7 +233,7 @@ UserLoadImage(PCWSTR pwszName) 0); NtGdiDeleteObjectApp(hdc); - DIB_FreeConvertedBitmapInfo(pConvertedInfo, pbmi, -1); + DIB_FreeConvertedBitmapInfo(pConvertedInfo, pbmi); } else { From 34412107646c3b580fc6ab6ae971bf4df0b4040e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 1 Jan 2013 19:49:55 +0000 Subject: [PATCH 49/96] [SHELL32] Fix untitled Run dialog in some languages. I wonder why it was as it since ages, in some languages but not in anothers. svn path=/trunk/; revision=58092 --- reactos/dll/win32/shell32/lang/bg-BG.rc | 2 +- reactos/dll/win32/shell32/lang/ca-ES.rc | 2 +- reactos/dll/win32/shell32/lang/cs-CZ.rc | 2 +- reactos/dll/win32/shell32/lang/el-GR.rc | 2 +- reactos/dll/win32/shell32/lang/fi-FI.rc | 2 +- reactos/dll/win32/shell32/lang/fr-FR.rc | 2 +- reactos/dll/win32/shell32/lang/hu-HU.rc | 2 +- reactos/dll/win32/shell32/lang/it-IT.rc | 2 +- reactos/dll/win32/shell32/lang/ja-JP.rc | 2 +- reactos/dll/win32/shell32/lang/ko-KR.rc | 2 +- reactos/dll/win32/shell32/lang/nl-NL.rc | 2 +- reactos/dll/win32/shell32/lang/pl-PL.rc | 2 +- reactos/dll/win32/shell32/lang/pt-BR.rc | 2 +- reactos/dll/win32/shell32/lang/pt-PT.rc | 2 +- reactos/dll/win32/shell32/lang/ru-RU.rc | 2 +- reactos/dll/win32/shell32/lang/sl-SI.rc | 2 +- reactos/dll/win32/shell32/lang/sv-SE.rc | 2 +- reactos/dll/win32/shell32/lang/zh-CN.rc | 2 +- reactos/dll/win32/shell32/lang/zh-TW.rc | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/reactos/dll/win32/shell32/lang/bg-BG.rc b/reactos/dll/win32/shell32/lang/bg-BG.rc index 64aa994d3d9..cb0d71d3659 100644 --- a/reactos/dll/win32/shell32/lang/bg-BG.rc +++ b/reactos/dll/win32/shell32/lang/bg-BG.rc @@ -155,7 +155,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/ca-ES.rc b/reactos/dll/win32/shell32/lang/ca-ES.rc index 889dd8ebc1a..adf56502f3d 100644 --- a/reactos/dll/win32/shell32/lang/ca-ES.rc +++ b/reactos/dll/win32/shell32/lang/ca-ES.rc @@ -155,7 +155,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/cs-CZ.rc b/reactos/dll/win32/shell32/lang/cs-CZ.rc index efff2daf194..f1860424eed 100644 --- a/reactos/dll/win32/shell32/lang/cs-CZ.rc +++ b/reactos/dll/win32/shell32/lang/cs-CZ.rc @@ -143,7 +143,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/el-GR.rc b/reactos/dll/win32/shell32/lang/el-GR.rc index b58f4089b9f..9b87bcca188 100644 --- a/reactos/dll/win32/shell32/lang/el-GR.rc +++ b/reactos/dll/win32/shell32/lang/el-GR.rc @@ -155,7 +155,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/fi-FI.rc b/reactos/dll/win32/shell32/lang/fi-FI.rc index c2b8f9f2a58..f86c4a73be5 100644 --- a/reactos/dll/win32/shell32/lang/fi-FI.rc +++ b/reactos/dll/win32/shell32/lang/fi-FI.rc @@ -155,7 +155,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/fr-FR.rc b/reactos/dll/win32/shell32/lang/fr-FR.rc index 767bc3a2992..2348a28247e 100644 --- a/reactos/dll/win32/shell32/lang/fr-FR.rc +++ b/reactos/dll/win32/shell32/lang/fr-FR.rc @@ -159,7 +159,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Exécuter" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/hu-HU.rc b/reactos/dll/win32/shell32/lang/hu-HU.rc index e971fc5b87e..52aa0591d31 100644 --- a/reactos/dll/win32/shell32/lang/hu-HU.rc +++ b/reactos/dll/win32/shell32/lang/hu-HU.rc @@ -158,7 +158,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/it-IT.rc b/reactos/dll/win32/shell32/lang/it-IT.rc index c1febfbfffc..efb90e477ec 100644 --- a/reactos/dll/win32/shell32/lang/it-IT.rc +++ b/reactos/dll/win32/shell32/lang/it-IT.rc @@ -156,7 +156,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/ja-JP.rc b/reactos/dll/win32/shell32/lang/ja-JP.rc index dd17a72811e..264fc372fe9 100644 --- a/reactos/dll/win32/shell32/lang/ja-JP.rc +++ b/reactos/dll/win32/shell32/lang/ja-JP.rc @@ -155,7 +155,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 9, "MS UI Gothic" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/ko-KR.rc b/reactos/dll/win32/shell32/lang/ko-KR.rc index 0dfe8745bae..f61e3dbf540 100644 --- a/reactos/dll/win32/shell32/lang/ko-KR.rc +++ b/reactos/dll/win32/shell32/lang/ko-KR.rc @@ -155,7 +155,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/nl-NL.rc b/reactos/dll/win32/shell32/lang/nl-NL.rc index 1013a6b0d71..eebea39d441 100644 --- a/reactos/dll/win32/shell32/lang/nl-NL.rc +++ b/reactos/dll/win32/shell32/lang/nl-NL.rc @@ -155,7 +155,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/pl-PL.rc b/reactos/dll/win32/shell32/lang/pl-PL.rc index b4cd60ea666..c84de9110c8 100644 --- a/reactos/dll/win32/shell32/lang/pl-PL.rc +++ b/reactos/dll/win32/shell32/lang/pl-PL.rc @@ -163,7 +163,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/pt-BR.rc b/reactos/dll/win32/shell32/lang/pt-BR.rc index 35d5098854a..d0a6a79a312 100644 --- a/reactos/dll/win32/shell32/lang/pt-BR.rc +++ b/reactos/dll/win32/shell32/lang/pt-BR.rc @@ -158,7 +158,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/pt-PT.rc b/reactos/dll/win32/shell32/lang/pt-PT.rc index f3691d5d18c..0898ee757bd 100644 --- a/reactos/dll/win32/shell32/lang/pt-PT.rc +++ b/reactos/dll/win32/shell32/lang/pt-PT.rc @@ -158,7 +158,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/ru-RU.rc b/reactos/dll/win32/shell32/lang/ru-RU.rc index 7e4fbfea97f..86bafafee9f 100644 --- a/reactos/dll/win32/shell32/lang/ru-RU.rc +++ b/reactos/dll/win32/shell32/lang/ru-RU.rc @@ -155,7 +155,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/sl-SI.rc b/reactos/dll/win32/shell32/lang/sl-SI.rc index 8a0cd0af30f..9d383276006 100644 --- a/reactos/dll/win32/shell32/lang/sl-SI.rc +++ b/reactos/dll/win32/shell32/lang/sl-SI.rc @@ -155,7 +155,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/sv-SE.rc b/reactos/dll/win32/shell32/lang/sv-SE.rc index 9f502fd8849..f7ec76d08dd 100644 --- a/reactos/dll/win32/shell32/lang/sv-SE.rc +++ b/reactos/dll/win32/shell32/lang/sv-SE.rc @@ -155,7 +155,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/zh-CN.rc b/reactos/dll/win32/shell32/lang/zh-CN.rc index 0082df8fdd4..9885effdb00 100644 --- a/reactos/dll/win32/shell32/lang/zh-CN.rc +++ b/reactos/dll/win32/shell32/lang/zh-CN.rc @@ -146,7 +146,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE diff --git a/reactos/dll/win32/shell32/lang/zh-TW.rc b/reactos/dll/win32/shell32/lang/zh-TW.rc index 54bd3019060..2944d51d48e 100644 --- a/reactos/dll/win32/shell32/lang/zh-TW.rc +++ b/reactos/dll/win32/shell32/lang/zh-TW.rc @@ -145,7 +145,7 @@ END IDD_RUN DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "" +CAPTION "Run" FONT 8, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE From 23e600a0d7b5fc83f909cc0ff34accd735f6ad84 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 1 Jan 2013 21:12:38 +0000 Subject: [PATCH 50/96] [SAMLIB] Ensure that optional parameters are handled properly. svn path=/trunk/; revision=58093 --- reactos/dll/win32/samlib/samlib.c | 35 ++++++++++++++++++------------- reactos/include/ddk/ntsam.h | 4 ++-- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/reactos/dll/win32/samlib/samlib.c b/reactos/dll/win32/samlib/samlib.c index a2afef35f76..1b28ba309ac 100644 --- a/reactos/dll/win32/samlib/samlib.c +++ b/reactos/dll/win32/samlib/samlib.c @@ -212,7 +212,7 @@ SamCloseHandle(IN SAM_HANDLE SamHandle) NTSTATUS NTAPI -SamConnect(IN OUT PUNICODE_STRING ServerName, +SamConnect(IN OUT PUNICODE_STRING ServerName OPTIONAL, OUT PSAM_HANDLE ServerHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes) @@ -682,7 +682,7 @@ SamGetAliasMembership(IN SAM_HANDLE DomainHandle, SAMPR_ULONG_ARRAY Membership; NTSTATUS Status; - TRACE("SamAliasMembership(%p %ul %p %p %p)\n", + TRACE("SamAliasMembership(%p %lu %p %p %p)\n", DomainHandle, PassedCount, Sids, MembershipCount, Aliases); if (Sids == NULL || @@ -905,7 +905,7 @@ SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle, IN ULONG Count, IN PULONG RelativeIds, OUT PUNICODE_STRING *Names, - OUT PSID_NAME_USE *Use) + OUT PSID_NAME_USE *Use OPTIONAL) { SAMPR_RETURNED_USTRING_ARRAY NamesBuffer = {0, NULL}; SAMPR_ULONG_ARRAY UseBuffer = {0, NULL}; @@ -916,7 +916,9 @@ SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle, DomainHandle, Count, RelativeIds, Names, Use); *Names = NULL; - *Use = NULL; + + if (Use != NULL) + *Use = NULL; RpcTryExcept { @@ -951,13 +953,6 @@ SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle, } } - *Use = midl_user_allocate(Count * sizeof(SID_NAME_USE)); - if (*Use == NULL) - { - Status = STATUS_INSUFFICIENT_RESOURCES; - goto done; - } - for (i = 0; i < Count; i++) { (*Names)[i].Length = NamesBuffer.Element[i].Length; @@ -968,9 +963,19 @@ SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle, NamesBuffer.Element[i].Length); } - RtlCopyMemory(*Use, - UseBuffer.Element, - Count * sizeof(SID_NAME_USE)); + if (Use != NULL) + { + *Use = midl_user_allocate(Count * sizeof(SID_NAME_USE)); + if (*Use == NULL) + { + Status = STATUS_INSUFFICIENT_RESOURCES; + goto done; + } + + RtlCopyMemory(*Use, + UseBuffer.Element, + Count * sizeof(SID_NAME_USE)); + } } done: @@ -987,7 +992,7 @@ done: midl_user_free(*Names); } - if (*Use != NULL) + if (Use != NULL && *Use != NULL) midl_user_free(*Use); } diff --git a/reactos/include/ddk/ntsam.h b/reactos/include/ddk/ntsam.h index 4ab5ed83184..886be4608bb 100644 --- a/reactos/include/ddk/ntsam.h +++ b/reactos/include/ddk/ntsam.h @@ -623,7 +623,7 @@ SamCloseHandle(IN SAM_HANDLE SamHandle); NTSTATUS NTAPI -SamConnect(IN OUT PUNICODE_STRING ServerName, +SamConnect(IN OUT PUNICODE_STRING ServerName OPTIONAL, OUT PSAM_HANDLE ServerHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes); @@ -755,7 +755,7 @@ SamLookupIdsInDomain(IN SAM_HANDLE DomainHandle, IN ULONG Count, IN PULONG RelativeIds, OUT PUNICODE_STRING *Names, - OUT PSID_NAME_USE *Use); + OUT PSID_NAME_USE *Use OPTIONAL); NTSTATUS NTAPI From cb52c27133f0cfd268692e796ac2d4466642ea9c Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 1 Jan 2013 22:04:41 +0000 Subject: [PATCH 51/96] [SAMSRV] SamrGetAliasMembership: - Change requrred access right from DOMIN_LOOKUP to DOMAIN_GET_ALIAS_MEMBERSHIP. - Handle the case properly where a user is not a member of any alias. - Retrieve an alias members RID correctly. svn path=/trunk/; revision=58094 --- reactos/dll/win32/samsrv/samrpc.c | 37 +++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/reactos/dll/win32/samsrv/samrpc.c b/reactos/dll/win32/samsrv/samrpc.c index 184b2977c0e..ebc6020faad 100644 --- a/reactos/dll/win32/samsrv/samrpc.c +++ b/reactos/dll/win32/samsrv/samrpc.c @@ -2877,6 +2877,7 @@ SamrGetAliasMembership(IN SAMPR_HANDLE DomainHandle, ULONG DataLength; ULONG i, j; NTSTATUS Status; + WCHAR NameBuffer[9]; TRACE("SamrGetAliasMembership(%p %p %p)\n", DomainHandle, SidArray, Membership); @@ -2884,7 +2885,7 @@ SamrGetAliasMembership(IN SAMPR_HANDLE DomainHandle, /* Validate the domain handle */ Status = SampValidateDbObject(DomainHandle, SamDbDomainObject, - DOMAIN_LOOKUP, + DOMAIN_GET_ALIAS_MEMBERSHIP, &DomainObject); if (!NT_SUCCESS(Status)) return Status; @@ -2902,6 +2903,13 @@ SamrGetAliasMembership(IN SAMPR_HANDLE DomainHandle, KEY_READ, &MembersKeyHandle); TRACE("SampRegOpenKey returned %08lX\n", Status); + + if (Status == STATUS_OBJECT_NAME_NOT_FOUND) + { + Status = STATUS_SUCCESS; + goto done; + } + if (!NT_SUCCESS(Status)) goto done; @@ -2926,13 +2934,21 @@ TRACE("Open %S\n", MemberSidString); MaxSidCount += ValueCount; } - NtClose(MemberKeyHandle); } + if (Status == STATUS_OBJECT_NAME_NOT_FOUND) + Status = STATUS_SUCCESS; + LocalFree(MemberSidString); } + if (MaxSidCount == 0) + { + Status = STATUS_SUCCESS; + goto done; + } + TRACE("Maximum sid count: %lu\n", MaxSidCount); RidArray = midl_user_allocate(MaxSidCount * sizeof(ULONG)); if (RidArray == NULL) @@ -2962,14 +2978,18 @@ TRACE("Open %S\n", MemberSidString); for (j = 0; j < ValueCount; j++) { - DataLength = sizeof(ULONG); + DataLength = 9 * sizeof(WCHAR); Status = SampRegEnumerateValue(MemberKeyHandle, j, - NULL, - NULL, - NULL, - (PVOID)&RidArray[j], - &DataLength); + NameBuffer, + &DataLength, + NULL, + NULL, + NULL); + if (NT_SUCCESS(Status)) + { + RidArray[j] = wcstoul(NameBuffer, NULL, 16); + } } } @@ -2979,7 +2999,6 @@ TRACE("Open %S\n", MemberSidString); LocalFree(MemberSidString); } - done: if (NT_SUCCESS(Status)) { From 0fea31f7a2e47056c74d12806c198a62560ae706 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 1 Jan 2013 22:54:39 +0000 Subject: [PATCH 52/96] [NETAPI32] NetUserGetLocalGroups: Replace the simulation by a working implementation. svn path=/trunk/; revision=58095 --- reactos/dll/win32/netapi32/user.c | 361 +++++++++++++++++++++++++++--- 1 file changed, 329 insertions(+), 32 deletions(-) diff --git a/reactos/dll/win32/netapi32/user.c b/reactos/dll/win32/netapi32/user.c index 0def051ce74..25238ae0d05 100644 --- a/reactos/dll/win32/netapi32/user.c +++ b/reactos/dll/win32/netapi32/user.c @@ -18,6 +18,18 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +/* + * TODO: + * Implement NetUserChangePassword + * Implement NetUserDel + * Implement NetUserGetGroups + * Implement NetUserSetGroups + * Implement NetUserSetInfo + * NetUserGetLocalGroups does not support LG_INCLUDE_INDIRECT yet. + * Add missing information levels. + * ... + */ + #include "netapi32.h" WINE_DEFAULT_DEBUG_CHANNEL(netapi32); @@ -107,6 +119,46 @@ static struct sam_user* NETAPI_FindUser(LPCWSTR UserName) } +static PSID +CreateSidFromSidAndRid(PSID SrcSid, + ULONG RelativeId) +{ + UCHAR RidCount; + PSID DstSid; + ULONG i; + ULONG DstSidSize; + PULONG p, q; + + RidCount = *RtlSubAuthorityCountSid(SrcSid); + if (RidCount >= 8) + return NULL; + + DstSidSize = RtlLengthRequiredSid(RidCount + 1); + + DstSid = RtlAllocateHeap(RtlGetProcessHeap(), + 0, + DstSidSize); + if (DstSid == NULL) + return NULL; + + RtlInitializeSid(DstSid, + RtlIdentifierAuthoritySid(SrcSid), + RidCount + 1); + + for (i = 0; i < (ULONG)RidCount; i++) + { + p = RtlSubAuthoritySid(SrcSid, i); + q = RtlSubAuthoritySid(DstSid, i); + *q = *p; + } + + q = RtlSubAuthoritySid(DstSid, (ULONG)RidCount); + *q = RelativeId; + + return DstSid; +} + + static NET_API_STATUS BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, @@ -544,7 +596,7 @@ NetUserAdd(LPCWSTR servername, NET_API_STATUS ApiStatus = NERR_Success; NTSTATUS Status = STATUS_SUCCESS; - FIXME("(%s, %d, %p, %p)\n", debugstr_w(servername), level, bufptr, parm_err); + TRACE("(%s, %d, %p, %p)\n", debugstr_w(servername), level, bufptr, parm_err); /* Check the info level */ if (level < 1 || level > 4) @@ -1097,53 +1149,298 @@ NetUserGetLocalGroups(LPCWSTR servername, LPDWORD entriesread, LPDWORD totalentries) { - NET_API_STATUS status; - const WCHAR admins[] = {'A','d','m','i','n','i','s','t','r','a','t','o','r','s',0}; - LPWSTR currentuser; - LOCALGROUP_USERS_INFO_0* info; - DWORD size; + UNICODE_STRING ServerName; + UNICODE_STRING UserName; + SAM_HANDLE ServerHandle = NULL; + SAM_HANDLE BuiltinDomainHandle = NULL; + SAM_HANDLE AccountDomainHandle = NULL; + PSID AccountDomainSid = NULL; + PSID UserSid = NULL; + PULONG RelativeIds = NULL; + PSID_NAME_USE Use = NULL; + ULONG BuiltinMemberCount = 0; + ULONG AccountMemberCount = 0; + PULONG BuiltinAliases = NULL; + PULONG AccountAliases = NULL; + PUNICODE_STRING BuiltinNames = NULL; + PUNICODE_STRING AccountNames = NULL; + PLOCALGROUP_USERS_INFO_0 Buffer = NULL; + ULONG Size; + ULONG Count = 0; + ULONG Index; + ULONG i; + LPWSTR StrPtr; + NET_API_STATUS ApiStatus = NERR_Success; + NTSTATUS Status = STATUS_SUCCESS; - FIXME("(%s, %s, %d, %08x, %p %d, %p, %p) stub!\n", + TRACE("(%s, %s, %d, %08x, %p %d, %p, %p) stub!\n", debugstr_w(servername), debugstr_w(username), level, flags, bufptr, prefmaxlen, entriesread, totalentries); - status = NETAPI_ValidateServername(servername); - if (status != NERR_Success) - return status; + if (level != 0) + return ERROR_INVALID_LEVEL; - size = UNLEN + 1; - NetApiBufferAllocate(size * sizeof(WCHAR), (LPVOID*)¤tuser); - GetUserNameW(currentuser, &size); + if (flags & ~LG_INCLUDE_INDIRECT) + return ERROR_INVALID_PARAMETER; - if (lstrcmpiW(username, currentuser) && NETAPI_FindUser(username)) + if (flags & LG_INCLUDE_INDIRECT) { - NetApiBufferFree(currentuser); - return NERR_UserNotFound; + WARN("The flag LG_INCLUDE_INDIRECT is not supported yet!\n"); } - NetApiBufferFree(currentuser); - *totalentries = 1; - size = sizeof(*info) + sizeof(admins); + if (servername != NULL) + RtlInitUnicodeString(&ServerName, servername); - if(prefmaxlen < size) - status = ERROR_MORE_DATA; - else - status = NetApiBufferAllocate(size, (LPVOID*)&info); + RtlInitUnicodeString(&UserName, username); - if(status != NERR_Success) + /* Connect to the SAM Server */ + Status = SamConnect((servername != NULL) ? &ServerName : NULL, + &ServerHandle, + SAM_SERVER_CONNECT | SAM_SERVER_LOOKUP_DOMAIN, + NULL); + if (!NT_SUCCESS(Status)) + { + ERR("SamConnect failed (Status %08lx)\n", Status); + ApiStatus = NetpNtStatusToApiStatus(Status); + goto done; + } + + /* Open the Builtin Domain */ + Status = OpenBuiltinDomain(ServerHandle, + DOMAIN_LOOKUP | DOMAIN_GET_ALIAS_MEMBERSHIP, + &BuiltinDomainHandle); + if (!NT_SUCCESS(Status)) + { + ERR("OpenBuiltinDomain failed (Status %08lx)\n", Status); + ApiStatus = NetpNtStatusToApiStatus(Status); + goto done; + } + + /* Get the Account Domain SID */ + Status = GetAccountDomainSid((servername != NULL) ? &ServerName : NULL, + &AccountDomainSid); + if (!NT_SUCCESS(Status)) + { + ERR("GetAccountDomainSid failed (Status %08lx)\n", Status); + ApiStatus = NetpNtStatusToApiStatus(Status); + goto done; + } + + /* Open the Account Domain */ + Status = SamOpenDomain(ServerHandle, + DOMAIN_LOOKUP | DOMAIN_GET_ALIAS_MEMBERSHIP, + AccountDomainSid, + &AccountDomainHandle); + if (!NT_SUCCESS(Status)) + { + ERR("OpenAccountDomain failed (Status %08lx)\n", Status); + ApiStatus = NetpNtStatusToApiStatus(Status); + goto done; + } + + /* Get the RID for the given user name */ + Status = SamLookupNamesInDomain(AccountDomainHandle, + 1, + &UserName, + &RelativeIds, + &Use); + if (!NT_SUCCESS(Status)) + { + ERR("SamLookupNamesInDomain failed (Status %08lx)\n", Status); + ApiStatus = NetpNtStatusToApiStatus(Status); + goto done; + } + + /* Fail, if it is not a user account */ + if (Use[0] != SidTypeUser) + { + ERR("Account is not a User!\n"); + ApiStatus = NERR_UserNotFound; + goto done; + } + + /* Build the User SID from the Account Domain SID and the users RID */ + UserSid = CreateSidFromSidAndRid(AccountDomainSid, + RelativeIds[0]); + if (UserSid == NULL) + { + ERR("CreateSidFromSidAndRid failed!\n"); + ApiStatus = ERROR_NOT_ENOUGH_MEMORY; + goto done; + } + + /* Get alias memberships in the Builtin Domain */ + Status = SamGetAliasMembership(BuiltinDomainHandle, + 1, + &UserSid, + &BuiltinMemberCount, + &BuiltinAliases); + if (!NT_SUCCESS(Status)) + { + ERR("SamGetAliasMembership failed (Status %08lx)\n", Status); + ApiStatus = NetpNtStatusToApiStatus(Status); + goto done; + } + + if (BuiltinMemberCount > 0) + { + /* Get the Names of the builtin alias members */ + Status = SamLookupIdsInDomain(BuiltinDomainHandle, + BuiltinMemberCount, + BuiltinAliases, + &BuiltinNames, + NULL); + if (!NT_SUCCESS(Status)) + { + ERR("SamLookupIdsInDomain failed (Status %08lx)\n", Status); + ApiStatus = NetpNtStatusToApiStatus(Status); + goto done; + } + } + + /* Get alias memberships in the Account Domain */ + Status = SamGetAliasMembership(AccountDomainHandle, + 1, + &UserSid, + &AccountMemberCount, + &AccountAliases); + if (!NT_SUCCESS(Status)) + { + ERR("SamGetAliasMembership failed (Status %08lx)\n", Status); + ApiStatus = NetpNtStatusToApiStatus(Status); + goto done; + } + + if (AccountMemberCount > 0) + { + /* Get the Names of the builtin alias members */ + Status = SamLookupIdsInDomain(AccountDomainHandle, + AccountMemberCount, + AccountAliases, + &AccountNames, + NULL); + if (!NT_SUCCESS(Status)) + { + ERR("SamLookupIdsInDomain failed (Status %08lx)\n", Status); + ApiStatus = NetpNtStatusToApiStatus(Status); + goto done; + } + } + + /* Calculate the required buffer size */ + Size = 0; + + for (i = 0; i < BuiltinMemberCount; i++) + { + if (BuiltinNames[i].Length > 0) + { + Size += (sizeof(LOCALGROUP_USERS_INFO_0) + BuiltinNames[i].Length + sizeof(UNICODE_NULL)); + Count++; + } + } + + for (i = 0; i < AccountMemberCount; i++) + { + if (BuiltinNames[i].Length > 0) + { + Size += (sizeof(LOCALGROUP_USERS_INFO_0) + AccountNames[i].Length + sizeof(UNICODE_NULL)); + Count++; + } + } + + if (Size == 0) + { + ApiStatus = NERR_Success; + goto done; + } + + /* Allocate buffer */ + ApiStatus = NetApiBufferAllocate(Size, (LPVOID*)&Buffer); + if (ApiStatus != NERR_Success) + goto done; + + ZeroMemory(Buffer, Size); + + StrPtr = (LPWSTR)((INT_PTR)Buffer + Count * sizeof(LOCALGROUP_USERS_INFO_0)); + + /* Copy data to the allocated buffer */ + Index = 0; + for (i = 0; i < BuiltinMemberCount; i++) + { + if (BuiltinNames[i].Length > 0) + { + CopyMemory(StrPtr, + BuiltinNames[i].Buffer, + BuiltinNames[i].Length); + Buffer[Index].lgrui0_name = StrPtr; + + StrPtr = (LPWSTR)((INT_PTR)StrPtr + BuiltinNames[i].Length + sizeof(UNICODE_NULL)); + Index++; + } + } + + for (i = 0; i < AccountMemberCount; i++) + { + if (AccountNames[i].Length > 0) + { + CopyMemory(StrPtr, + AccountNames[i].Buffer, + AccountNames[i].Length); + Buffer[Index].lgrui0_name = StrPtr; + + StrPtr = (LPWSTR)((INT_PTR)StrPtr + AccountNames[i].Length + sizeof(UNICODE_NULL)); + Index++; + } + } + +done: + if (AccountNames != NULL) + SamFreeMemory(AccountNames); + + if (BuiltinNames != NULL) + SamFreeMemory(BuiltinNames); + + if (AccountAliases != NULL) + SamFreeMemory(AccountAliases); + + if (BuiltinAliases != NULL) + SamFreeMemory(BuiltinAliases); + + if (RelativeIds != NULL) + SamFreeMemory(RelativeIds); + + if (Use != NULL) + SamFreeMemory(Use); + + if (UserSid != NULL) + RtlFreeHeap(RtlGetProcessHeap(), 0, UserSid); + + if (AccountDomainSid != NULL) + RtlFreeHeap(RtlGetProcessHeap(), 0, AccountDomainSid); + + if (AccountDomainHandle != NULL) + SamCloseHandle(AccountDomainHandle); + + if (BuiltinDomainHandle != NULL) + SamCloseHandle(BuiltinDomainHandle); + + if (ServerHandle != NULL) + SamCloseHandle(ServerHandle); + + if (ApiStatus != NERR_Success && ApiStatus != ERROR_MORE_DATA) { - *bufptr = NULL; *entriesread = 0; - return status; + *totalentries = 0; + } + else + { + *entriesread = Count; + *totalentries = Count; } - info->lgrui0_name = (LPWSTR)((LPBYTE)info + sizeof(*info)); - lstrcpyW(info->lgrui0_name, admins); + *bufptr = (LPBYTE)Buffer; - *bufptr = (LPBYTE)info; - *entriesread = 1; - - return NERR_Success; + return ApiStatus; } From aeb1964acbe3788b1f93dba8fe10d8ce11888514 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 2 Jan 2013 10:54:54 +0000 Subject: [PATCH 53/96] [GDI32] Set correct last error code in GetClipRgn. Fixes regression from r58089. svn path=/trunk/; revision=58099 --- reactos/win32ss/gdi/gdi32/objects/region.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/reactos/win32ss/gdi/gdi32/objects/region.c b/reactos/win32ss/gdi/gdi32/objects/region.c index 54140ed071d..a6866bbfb47 100644 --- a/reactos/win32ss/gdi/gdi32/objects/region.c +++ b/reactos/win32ss/gdi/gdi32/objects/region.c @@ -700,7 +700,18 @@ GetClipRgn( HRGN hrgn ) { - INT Ret = NtGdiGetRandomRgn(hdc, hrgn, CLIPRGN); + INT Ret; + + /* Check if DC handle is valid */ + if (!GdiGetDcAttr(hdc)) + { + /* Last error code differs from what NtGdiGetRandomRgn returns */ + SetLastError(ERROR_INVALID_PARAMETER); + return 0; + } + + Ret = NtGdiGetRandomRgn(hdc, hrgn, CLIPRGN); + // if (Ret) // { // if(GetLayout(hdc) & LAYOUT_RTL) MirrorRgnDC(hdc,(HRGN)Ret, NULL); From eb2bbd0d4bb21ddcfc58f4d1d050cf4d143c65f8 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 2 Jan 2013 14:52:34 +0000 Subject: [PATCH 54/96] [WIN32K] Revert the revert from r58091 and apply a correct fix (passed parameters to RECTL_vSetRect() in wrong order) svn path=/trunk/; revision=58101 --- reactos/win32ss/gdi/ntgdi/dib.h | 5 +- reactos/win32ss/gdi/ntgdi/dibobj.c | 125 +++++++++--------------- reactos/win32ss/user/ntuser/clipboard.c | 2 +- reactos/win32ss/user/ntuser/misc/file.c | 2 +- 4 files changed, 53 insertions(+), 81 deletions(-) diff --git a/reactos/win32ss/gdi/ntgdi/dib.h b/reactos/win32ss/gdi/ntgdi/dib.h index 7eabbdf397c..2c679598750 100644 --- a/reactos/win32ss/gdi/ntgdi/dib.h +++ b/reactos/win32ss/gdi/ntgdi/dib.h @@ -7,8 +7,11 @@ int FASTCALL DIB_GetBitmapInfo( const BITMAPINFOHEADER *header, LONG *width, INT APIENTRY DIB_GetDIBImageBytes (INT width, INT height, INT depth); HPALETTE FASTCALL DIB_MapPaletteColors(PPALETTE ppal, CONST BITMAPINFO* lpbmi); HPALETTE FASTCALL BuildDIBPalette (CONST BITMAPINFO *bmi); + +/* Those functions permit to tranparently work with a BITMAPCOREINFO structure */ BITMAPINFO* FASTCALL DIB_ConvertBitmapInfo(CONST BITMAPINFO* bmi, DWORD Usage); -VOID FASTCALL DIB_FreeConvertedBitmapInfo(BITMAPINFO* converted, BITMAPINFO* orig); +/* Pass Usage = -1 if you don't want to convert the BITMAPINFO back to BITMAPCOREINFO */ +VOID FASTCALL DIB_FreeConvertedBitmapInfo(BITMAPINFO* converted, BITMAPINFO* orig, DWORD Usage); INT APIENTRY diff --git a/reactos/win32ss/gdi/ntgdi/dibobj.c b/reactos/win32ss/gdi/ntgdi/dibobj.c index 76dbeb1ba84..de22ae8ca52 100644 --- a/reactos/win32ss/gdi/ntgdi/dibobj.c +++ b/reactos/win32ss/gdi/ntgdi/dibobj.c @@ -584,7 +584,6 @@ GreGetDIBitsInternal( DWORD compr, size ; USHORT i; int bitmap_type; - RGBTRIPLE* rgbTriples; RGBQUAD* rgbQuads; VOID* colorPtr; @@ -594,7 +593,6 @@ GreGetDIBitsInternal( return 0; colorPtr = (LPBYTE)Info + Info->bmiHeader.biSize; - rgbTriples = colorPtr; rgbQuads = colorPtr; bitmap_type = DIB_GetBitmapInfo(&Info->bmiHeader, @@ -643,15 +641,6 @@ GreGetDIBitsInternal( switch(bpp) { case 0: /* Only info */ - if(pbmci) - { - pbmci->bmciHeader.bcWidth = (WORD)psurf->SurfObj.sizlBitmap.cx; - pbmci->bmciHeader.bcHeight = (WORD)((psurf->SurfObj.fjBitmap & BMF_TOPDOWN) ? - -psurf->SurfObj.sizlBitmap.cy : - psurf->SurfObj.sizlBitmap.cy); - pbmci->bmciHeader.bcPlanes = 1; - pbmci->bmciHeader.bcBitCount = BitsPerFormat(psurf->SurfObj.iBitmapFormat); - } Info->bmiHeader.biWidth = psurf->SurfObj.sizlBitmap.cx; Info->bmiHeader.biHeight = (psurf->SurfObj.fjBitmap & BMF_TOPDOWN) ? -psurf->SurfObj.sizlBitmap.cy : @@ -702,16 +691,6 @@ GreGetDIBitsInternal( if(Usage == DIB_RGB_COLORS) { ULONG colors = min(psurf->ppal->NumColors, 256); - - if(pbmci) - { - for(i = 0; i < colors; i++) - { - rgbTriples[i].rgbtRed = psurf->ppal->IndexedColors[i].peRed; - rgbTriples[i].rgbtGreen = psurf->ppal->IndexedColors[i].peGreen; - rgbTriples[i].rgbtBlue = psurf->ppal->IndexedColors[i].peBlue; - } - } if(colors != 256) Info->bmiHeader.biClrUsed = colors; for(i = 0; i < colors; i++) { @@ -724,10 +703,7 @@ GreGetDIBitsInternal( else { for(i = 0; i < 256; i++) - { - if(pbmci) ((WORD*)rgbTriples)[i] = i; ((WORD*)rgbQuads)[i] = i; - } } } else @@ -736,7 +712,6 @@ GreGetDIBitsInternal( { for(i = 0; i < 256; i++) { - if(pbmci) ((WORD*)rgbTriples)[i] = i; ((WORD*)rgbQuads)[i] = i; } } @@ -753,13 +728,6 @@ GreGetDIBitsInternal( } for (i = 0; i < pDcPal->NumColors; i++) { - if (pbmci) - { - rgbTriples[i].rgbtRed = pDcPal->IndexedColors[i].peRed; - rgbTriples[i].rgbtGreen = pDcPal->IndexedColors[i].peGreen; - rgbTriples[i].rgbtBlue = pDcPal->IndexedColors[i].peBlue; - } - rgbQuads[i].rgbRed = pDcPal->IndexedColors[i].peRed; rgbQuads[i].rgbGreen = pDcPal->IndexedColors[i].peGreen; rgbQuads[i].rgbBlue = pDcPal->IndexedColors[i].peBlue; @@ -772,55 +740,20 @@ GreGetDIBitsInternal( switch (bpp) { case 1: - if (pbmci) - { - rgbTriples[0].rgbtRed = rgbTriples[0].rgbtGreen = - rgbTriples[0].rgbtBlue = 0; - rgbTriples[1].rgbtRed = rgbTriples[1].rgbtGreen = - rgbTriples[1].rgbtBlue = 0xff; - } - rgbQuads[0].rgbRed = rgbQuads[0].rgbGreen = - rgbQuads[0].rgbBlue = 0; + rgbQuads[0].rgbRed = rgbQuads[0].rgbGreen = rgbQuads[0].rgbBlue = 0; rgbQuads[0].rgbReserved = 0; - rgbQuads[1].rgbRed = rgbQuads[1].rgbGreen = - rgbQuads[1].rgbBlue = 0xff; + rgbQuads[1].rgbRed = rgbQuads[1].rgbGreen = rgbQuads[1].rgbBlue = 0xff; rgbQuads[1].rgbReserved = 0; break; case 4: - if (pbmci) - RtlCopyMemory(rgbTriples, EGAColorsTriples, sizeof(EGAColorsTriples)); RtlCopyMemory(rgbQuads, EGAColorsQuads, sizeof(EGAColorsQuads)); - break; case 8: { INT r, g, b; RGBQUAD *color; - if (pbmci) - { - RGBTRIPLE *colorTriple; - - RtlCopyMemory(rgbTriples, DefLogPaletteTriples, - 10 * sizeof(RGBTRIPLE)); - RtlCopyMemory(rgbTriples + 246, DefLogPaletteTriples + 10, - 10 * sizeof(RGBTRIPLE)); - colorTriple = rgbTriples + 10; - for(r = 0; r <= 5; r++) /* FIXME */ - { - for(g = 0; g <= 5; g++) - { - for(b = 0; b <= 5; b++) - { - colorTriple->rgbtRed = (r * 0xff) / 5; - colorTriple->rgbtGreen = (g * 0xff) / 5; - colorTriple->rgbtBlue = (b * 0xff) / 5; - colorTriple++; - } - } - } - } memcpy(rgbQuads, DefLogPaletteQuads, 10 * sizeof(RGBQUAD)); memcpy(rgbQuads + 246, DefLogPaletteQuads + 10, @@ -935,12 +868,7 @@ GreGetDIBitsInternal( psurfDest = SURFACE_ShareLockSurface(hBmpDest); - RECTL_vSetRect(&rcDest, 0, 0, ScanLines, psurf->SurfObj.sizlBitmap.cx); - - rcDest.left = 0; - rcDest.top = 0; - rcDest.bottom = ScanLines; - rcDest.right = psurf->SurfObj.sizlBitmap.cx; + RECTL_vSetRect(&rcDest, 0, 0, psurf->SurfObj.sizlBitmap.cx, ScanLines); srcPoint.x = 0; @@ -990,7 +918,7 @@ done: if(pDC) DC_UnlockDc(pDC); if(psurf) SURFACE_ShareUnlockSurface(psurf); - if(pbmci) DIB_FreeConvertedBitmapInfo(Info, (BITMAPINFO*)pbmci); + if(pbmci) DIB_FreeConvertedBitmapInfo(Info, (BITMAPINFO*)pbmci, Usage); return ScanLines; } @@ -1929,10 +1857,51 @@ DIB_ConvertBitmapInfo (CONST BITMAPINFO* pbmi, DWORD Usage) /* Frees a BITMAPINFO created with DIB_ConvertBitmapInfo */ VOID FASTCALL -DIB_FreeConvertedBitmapInfo(BITMAPINFO* converted, BITMAPINFO* orig) +DIB_FreeConvertedBitmapInfo(BITMAPINFO* converted, BITMAPINFO* orig, DWORD usage) { - if(converted != orig) + BITMAPCOREINFO* pbmci; + if(converted == orig) + return; + + if(usage == -1) + { + /* Caller don't want any conversion */ ExFreePoolWithTag(converted, TAG_DIB); + return; + } + + /* Perform inverse conversion */ + pbmci = (BITMAPCOREINFO*)orig; + + ASSERT(pbmci->bmciHeader.bcSize == sizeof(BITMAPCOREHEADER)); + pbmci->bmciHeader.bcBitCount = converted->bmiHeader.biBitCount; + pbmci->bmciHeader.bcWidth = converted->bmiHeader.biWidth; + pbmci->bmciHeader.bcHeight = converted->bmiHeader.biHeight; + pbmci->bmciHeader.bcPlanes = converted->bmiHeader.biPlanes; + + if(pbmci->bmciHeader.bcBitCount <= 8) + { + UINT numColors = converted->bmiHeader.biClrUsed; + if(!numColors) numColors = 1 << pbmci->bmciHeader.bcBitCount; + if(usage == DIB_PAL_COLORS) + { + RtlZeroMemory(pbmci->bmciColors, (1 << pbmci->bmciHeader.bcBitCount) * sizeof(WORD)); + RtlCopyMemory(pbmci->bmciColors, converted->bmiColors, numColors * sizeof(WORD)); + } + else + { + UINT i; + RtlZeroMemory(pbmci->bmciColors, (1 << pbmci->bmciHeader.bcBitCount) * sizeof(RGBTRIPLE)); + for(i=0; ibmciColors[i].rgbtRed = converted->bmiColors[i].rgbRed; + pbmci->bmciColors[i].rgbtGreen = converted->bmiColors[i].rgbGreen; + pbmci->bmciColors[i].rgbtBlue = converted->bmiColors[i].rgbBlue; + } + } + } + /* Now free it, it's not needed anymore */ + ExFreePoolWithTag(converted, TAG_DIB); } /* EOF */ diff --git a/reactos/win32ss/user/ntuser/clipboard.c b/reactos/win32ss/user/ntuser/clipboard.c index c5b2cadf935..28bb21325c2 100644 --- a/reactos/win32ss/user/ntuser/clipboard.c +++ b/reactos/win32ss/user/ntuser/clipboard.c @@ -276,7 +276,7 @@ cleanup: UserReleaseDC(NULL, hdc, FALSE); if (pConvertedBmi) - DIB_FreeConvertedBitmapInfo(pConvertedBmi, pBmi); + DIB_FreeConvertedBitmapInfo(pConvertedBmi, pBmi, -1); } VOID static NTAPI diff --git a/reactos/win32ss/user/ntuser/misc/file.c b/reactos/win32ss/user/ntuser/misc/file.c index abc5a0ca651..8b4d0e26b06 100644 --- a/reactos/win32ss/user/ntuser/misc/file.c +++ b/reactos/win32ss/user/ntuser/misc/file.c @@ -233,7 +233,7 @@ UserLoadImage(PCWSTR pwszName) 0); NtGdiDeleteObjectApp(hdc); - DIB_FreeConvertedBitmapInfo(pConvertedInfo, pbmi); + DIB_FreeConvertedBitmapInfo(pConvertedInfo, pbmi, -1); } else { From 1510c13569fbaade0272846831a68306e1035e27 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 3 Jan 2013 08:45:00 +0000 Subject: [PATCH 55/96] [WIN32K] Handle references to DC selected fonts, so we don't leak them or use fonts that are already deleted. svn path=/trunk/; revision=58102 --- reactos/win32ss/gdi/ntgdi/dc.h | 37 ++++++++++++++++++++++------ reactos/win32ss/gdi/ntgdi/dclife.c | 5 +++- reactos/win32ss/gdi/ntgdi/dcstate.c | 4 ++- reactos/win32ss/gdi/ntgdi/font.c | 2 ++ reactos/win32ss/gdi/ntgdi/gdibatch.c | 2 ++ 5 files changed, 40 insertions(+), 10 deletions(-) diff --git a/reactos/win32ss/gdi/ntgdi/dc.h b/reactos/win32ss/gdi/ntgdi/dc.h index 6817f6f0ee5..53eeaaf2c04 100644 --- a/reactos/win32ss/gdi/ntgdi/dc.h +++ b/reactos/win32ss/gdi/ntgdi/dc.h @@ -66,7 +66,7 @@ typedef struct _DCLEVEL POINTL ptlBrushOrigin; PBRUSH pbrFill; PBRUSH pbrLine; - PVOID plfnt; /* LFONTOBJ* (TEXTOBJ*) */ + _Notnull_ struct _LFONT * plfnt; /* LFONT* (TEXTOBJ*) */ HGDIOBJ hPath; /* HPATH */ FLONG flPath; LINEATTRS laPath; /* 0x20 bytes */ @@ -110,7 +110,7 @@ typedef struct _DC PVOID hsem; /* PERESOURCE aka HSEMAPHORE */ FLONG flGraphicsCaps; FLONG flGraphicsCaps2; - PDC_ATTR pdcattr; + _Notnull_ PDC_ATTR pdcattr; DCLEVEL dclevel; DC_ATTR dcattr; HDC hdcNext; @@ -155,18 +155,27 @@ VOID FASTCALL DC_vUpdateLineBrush(PDC pdc); VOID FASTCALL DC_vUpdateTextBrush(PDC pdc); VOID FASTCALL DC_vUpdateBackgroundBrush(PDC pdc); +HFONT +NTAPI +DC_hSelectFont( + _In_ PDC pdc, + _In_ HFONT hlfntNew); + HPALETTE NTAPI GdiSelectPalette( - HDC hDC, - HPALETTE hpal, - BOOL ForceBackground); + _In_ HDC hDC, + _In_ HPALETTE hpal, + _In_ BOOL ForceBackground); /* dcutil.c */ COLORREF FASTCALL -IntGdiSetBkColor (HDC hDC, COLORREF Color); +IntGdiSetBkColor( + _In_ HDC hDC, + _In_ COLORREF Color); + INT FASTCALL IntGdiSetBkMode(HDC hDC, INT backgroundMode); COLORREF FASTCALL IntGdiSetTextColor(HDC hDC, COLORREF color); UINT FASTCALL IntGdiSetTextAlign(HDC hDC, UINT Mode); @@ -211,14 +220,26 @@ FORCEINLINE PDC DC_LockDc(HDC hdc) { - //if (GDI_HANDLE_GET_TYPE(hdc) != GDILoObjType_LO_DC_TYPE) return NULL; ??? - return GDIOBJ_LockObject(hdc, GDIObjType_DC_TYPE); + PDC pdc; + + pdc = GDIOBJ_LockObject(hdc, GDIObjType_DC_TYPE); + if (pdc) + { + ASSERT(GDI_HANDLE_GET_TYPE(pdc->BaseObject.hHmgr) == GDILoObjType_LO_DC_TYPE); + ASSERT(pdc->dclevel.plfnt != NULL); + ASSERT(GDI_HANDLE_GET_TYPE(((POBJ)pdc->dclevel.plfnt)->hHmgr) == GDILoObjType_LO_FONT_TYPE); + } + + return pdc; } FORCEINLINE VOID DC_UnlockDc(PDC pdc) { + ASSERT(pdc->dclevel.plfnt != NULL); + ASSERT(GDI_HANDLE_GET_TYPE(((POBJ)pdc->dclevel.plfnt)->hHmgr) == GDILoObjType_LO_FONT_TYPE); + GDIOBJ_vUnlockObject(&pdc->BaseObject); } diff --git a/reactos/win32ss/gdi/ntgdi/dclife.c b/reactos/win32ss/gdi/ntgdi/dclife.c index 66c709be861..16a628a4998 100644 --- a/reactos/win32ss/gdi/ntgdi/dclife.c +++ b/reactos/win32ss/gdi/ntgdi/dclife.c @@ -319,7 +319,7 @@ DC_vInitDc( pdc->dcattr.lBreakExtra = 0; pdc->dcattr.cBreak = 0; pdc->dcattr.hlfntNew = StockObjects[SYSTEM_FONT]; -// pdc->dclevel.pFont = LFONT_ShareLockFont(pdc->dcattr.hlfntNew); + pdc->dclevel.plfnt = LFONT_ShareLockFont(pdc->dcattr.hlfntNew); /* Other stuff */ pdc->hdcNext = NULL; @@ -368,6 +368,9 @@ DC_Cleanup(PVOID ObjectBody) EBRUSHOBJ_vCleanup(&pdc->eboText); EBRUSHOBJ_vCleanup(&pdc->eboBackground); + /* Release font */ + LFONT_ShareUnlockFont(pdc->dclevel.plfnt); + /* Free regions */ if (pdc->rosdc.hClipRgn && GreIsHandleValid(pdc->rosdc.hClipRgn)) GreDeleteObject(pdc->rosdc.hClipRgn); diff --git a/reactos/win32ss/gdi/ntgdi/dcstate.c b/reactos/win32ss/gdi/ntgdi/dcstate.c index e0c33ae8e7a..d20018e298e 100644 --- a/reactos/win32ss/gdi/ntgdi/dcstate.c +++ b/reactos/win32ss/gdi/ntgdi/dcstate.c @@ -45,7 +45,9 @@ DC_vCopyState(PDC pdcSrc, PDC pdcDst, BOOL To) DC_vSelectLineBrush(pdcDst, pdcSrc->dclevel.pbrLine); DC_vSelectPalette(pdcDst, pdcSrc->dclevel.ppal); - // FIXME: Handle refs + /* Dereference the old font, reference the new one */ + if (pdcDst->dclevel.plfnt) LFONT_ShareUnlockFont(pdcDst->dclevel.plfnt); /// @todo should aways be != NULL + GDIOBJ_vReferenceObjectByPointer(&pdcSrc->dclevel.plfnt->BaseObject); pdcDst->dclevel.plfnt = pdcSrc->dclevel.plfnt; /* Get/SetDCState() don't change hVisRgn field ("Undoc. Windows" p.559). */ diff --git a/reactos/win32ss/gdi/ntgdi/font.c b/reactos/win32ss/gdi/ntgdi/font.c index a03c36f3730..3addda2b108 100644 --- a/reactos/win32ss/gdi/ntgdi/font.c +++ b/reactos/win32ss/gdi/ntgdi/font.c @@ -426,6 +426,8 @@ GreSelectFont( HDC hDC, HFONT hFont) { hOrgFont = pdcattr->hlfntNew; } + if (pdc->dclevel.plfnt) LFONT_ShareUnlockFont(pdc->dclevel.plfnt); + if (pNewFnt) GDIOBJ_vReferenceObjectByPointer(&pNewFnt->BaseObject); pdc->dclevel.plfnt = pNewFnt; pdc->hlfntCur = hFont; pdcattr->hlfntNew = hFont; diff --git a/reactos/win32ss/gdi/ntgdi/gdibatch.c b/reactos/win32ss/gdi/ntgdi/gdibatch.c index ae365aa670d..f3f0a7f3d75 100644 --- a/reactos/win32ss/gdi/ntgdi/gdibatch.c +++ b/reactos/win32ss/gdi/ntgdi/gdibatch.c @@ -127,6 +127,8 @@ GdiFlushUserBatch(PDC dc, PGDIBATCHHDR pHdr) /* LFONTOBJ use share and locking. */ pNewFnt = TEXTOBJ_LockText(pgO->hgdiobj); + if (dc->dclevel.plfnt) LFONT_ShareUnlockFont(dc->dclevel.plfnt); + if (pNewFnt) GDIOBJ_vReferenceObjectByPointer(&pNewFnt->BaseObject); dc->dclevel.plfnt = pNewFnt; dc->hlfntCur = pgO->hgdiobj; pdcattr->hlfntNew = pgO->hgdiobj; From 5b8fa09fc26be9d65edb9d999252c9e5928d3901 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 3 Jan 2013 20:56:00 +0000 Subject: [PATCH 56/96] [INCLUDE] Delete obsolete files svn path=/trunk/; revision=58106 --- reactos/include/reactos/ks386.inc | 947 ----------------------- reactos/include/reactos/ksamd64.inc | 1074 --------------------------- 2 files changed, 2021 deletions(-) delete mode 100644 reactos/include/reactos/ks386.inc delete mode 100644 reactos/include/reactos/ksamd64.inc diff --git a/reactos/include/reactos/ks386.inc b/reactos/include/reactos/ks386.inc deleted file mode 100644 index c7ccf36f551..00000000000 --- a/reactos/include/reactos/ks386.inc +++ /dev/null @@ -1,947 +0,0 @@ - -/* Pointer size */ -SizeofPointer = 0x4 - -/* Breakpoints */ -BREAKPOINT_BREAK = 0x0 -BREAKPOINT_PRINT = 0x1 -BREAKPOINT_PROMPT = 0x2 -BREAKPOINT_LOAD_SYMBOLS = 0x3 -BREAKPOINT_UNLOAD_SYMBOLS = 0x4 -BREAKPOINT_COMMAND_STRING = 0x5 - -/* Context Frame Flags */ -CONTEXT_FULL = 0x10007 -CONTEXT_CONTROL = 0x10001 -CONTEXT_INTEGER = 0x10002 -CONTEXT_SEGMENTS = 0x10004 -CONTEXT_FLOATING_POINT = 0x10008 -CONTEXT_DEBUG_REGISTERS = 0x10010 - -/* Exception flags */ -EXCEPTION_NONCONTINUABLE = 0x1 -EXCEPTION_UNWINDING = 0x2 -EXCEPTION_EXIT_UNWIND = 0x4 -EXCEPTION_STACK_INVALID = 0x8 -EXCEPTION_NESTED_CALL = 0x10 -EXCEPTION_TARGET_UNWIND = 0x20 -EXCEPTION_COLLIDED_UNWIND = 0x20 -EXCEPTION_UNWIND = 0x6 -EXCEPTION_EXECUTE_HANDLER = 0x1 -EXCEPTION_CONTINUE_SEARCH = 0x0 -EXCEPTION_CONTINUE_EXECUTION = 0xffffffff -EXCEPTION_CHAIN_END = 0xffffffff - -/* Exception types */ -ExceptionContinueExecution = 0x0 -ExceptionContinueSearch = 0x1 -ExceptionNestedException = 0x2 -ExceptionCollidedUnwind = 0x3 - -/* Lock Queue */ -LOCK_QUEUE_WAIT = 0x1 -LOCK_QUEUE_OWNER = 0x2 -LockQueueDispatcherLock = 0x0 - -/* Process states */ -ProcessInMemory = 0x0 -ProcessOutOfMemory = 0x1 -ProcessInTransition = 0x2 - -/* Processor mode */ -KernelMode = 0x0 -UserMode = 0x1 - -/* Status codes */ -STATUS_ACCESS_VIOLATION = 0xc0000005 -STATUS_ASSERTION_FAILURE = 0xc0000420 -STATUS_ARRAY_BOUNDS_EXCEEDED = 0xc000008c -STATUS_BAD_COMPRESSION_BUFFER = 0xc0000242 -STATUS_BREAKPOINT = 0x80000003 -STATUS_CALLBACK_POP_STACK = 0xc0000423 -STATUS_DATATYPE_MISALIGNMENT = 0x80000002 -STATUS_FLOAT_DENORMAL_OPERAND = 0xc000008d -STATUS_FLOAT_DIVIDE_BY_ZERO = 0xc000008e -STATUS_FLOAT_INEXACT_RESULT = 0xc000008f -STATUS_FLOAT_INVALID_OPERATION = 0xc0000090 -STATUS_FLOAT_OVERFLOW = 0xc0000091 -STATUS_FLOAT_STACK_CHECK = 0xc0000092 -STATUS_FLOAT_UNDERFLOW = 0xc0000093 -STATUS_FLOAT_MULTIPLE_FAULTS = 0xc00002b4 -STATUS_FLOAT_MULTIPLE_TRAPS = 0xc00002b5 -STATUS_GUARD_PAGE_VIOLATION = 0x80000001 -STATUS_ILLEGAL_FLOAT_CONTEXT = 0xc000014a -STATUS_ILLEGAL_INSTRUCTION = 0xc000001d -STATUS_INSTRUCTION_MISALIGNMENT = 0xc00000aa -STATUS_INVALID_HANDLE = 0xc0000008 -STATUS_INVALID_LOCK_SEQUENCE = 0xc000001e -STATUS_INVALID_OWNER = 0xc000005a -STATUS_INVALID_PARAMETER = 0xc000000d -STATUS_INVALID_PARAMETER_1 = 0xc00000ef -STATUS_INVALID_SYSTEM_SERVICE = 0xc000001c -STATUS_INTEGER_DIVIDE_BY_ZERO = 0xc0000094 -STATUS_INTEGER_OVERFLOW = 0xc0000095 -STATUS_IN_PAGE_ERROR = 0xc0000006 -STATUS_KERNEL_APC = 0x100 -STATUS_LONGJUMP = 0x80000026 -STATUS_NO_CALLBACK_ACTIVE = 0xc0000258 -STATUS_NO_EVENT_PAIR = 0xc000014e -STATUS_PRIVILEGED_INSTRUCTION = 0xc0000096 -STATUS_SINGLE_STEP = 0x80000004 -STATUS_STACK_BUFFER_OVERRUN = 0xc0000409 -STATUS_STACK_OVERFLOW = 0xc00000fd -STATUS_SUCCESS = 0x0 -STATUS_THREAD_IS_TERMINATING = 0xc000004b -STATUS_TIMEOUT = 0x102 -STATUS_UNWIND = 0xc0000027 -STATUS_UNWIND_CONSOLIDATE = 0x80000029 -STATUS_USER_APC = 0xc0 -STATUS_WAKE_SYSTEM_DEBUGGER = 0x80000007 - -/* TLS defines */ -TLS_MINIMUM_AVAILABLE = 0x40 -TLS_EXPANSION_SLOTS = 0x400 - -/* Thread states */ -Initialized = 0x0 -Ready = 0x1 -Running = 0x2 -Standby = 0x3 -Terminated = 0x4 -Waiting = 0x5 - -/* Wait type / reason */ -WrExecutive = 0x7 -WrMutex = 0x1d -WrDispatchInt = 0x1f -WrQuantumEnd = 0x1e -WrEventPair = 0xe -WaitAny = 0x1 -WaitAll = 0x0 - -/* Interrupt object types */ -InLevelSensitive = 0x0 -InLatched = 0x1 - -/* Bug Check Codes */ -APC_INDEX_MISMATCH = 0x1 -INVALID_AFFINITY_SET = 0x3 -INVALID_DATA_ACCESS_TRAP = 0x4 -IRQL_NOT_GREATER_OR_EQUAL = 0x9 -IRQL_NOT_LESS_OR_EQUAL = 0xa -NO_USER_MODE_CONTEXT = 0xe -SPIN_LOCK_ALREADY_OWNED = 0xf -SPIN_LOCK_NOT_OWNED = 0x10 -THREAD_NOT_MUTEX_OWNER = 0x11 -TRAP_CAUSE_UNKNOWN = 0x12 -KMODE_EXCEPTION_NOT_HANDLED = 0x1e -KERNEL_APC_PENDING_DURING_EXIT = 0x20 -PANIC_STACK_SWITCH = 0x2b -DATA_BUS_ERROR = 0x2e -INSTRUCTION_BUS_ERROR = 0x2f -SYSTEM_EXIT_OWNED_MUTEX = 0x39 -PAGE_FAULT_WITH_INTERRUPTS_OFF = 0x49 -IRQL_GT_ZERO_AT_SYSTEM_SERVICE = 0x4a -DATA_COHERENCY_EXCEPTION = 0x55 -INSTRUCTION_COHERENCY_EXCEPTION = 0x56 -HAL1_INITIALIZATION_FAILED = 0x61 -UNEXPECTED_KERNEL_MODE_TRAP = 0x7f -NMI_HARDWARE_FAILURE = 0x80 -SPIN_LOCK_INIT_FAILURE = 0x81 -ATTEMPTED_SWITCH_FROM_DPC = 0xb8 - -/* IRQL */ -PASSIVE_LEVEL = 0x0 -APC_LEVEL = 0x1 -DISPATCH_LEVEL = 0x2 -CLOCK1_LEVEL = 0x1c -CLOCK2_LEVEL = 0x1c -IPI_LEVEL = 0x1d -POWER_LEVEL = 0x1e -PROFILE_LEVEL = 0x1b -HIGH_LEVEL = 0x1f -#ifdef NT_UP -SYNCH_LEVEL = 0x2 -#else -SYNCH_LEVEL = 0x1b -#endif - -/* Stack sizes */ -KERNEL_STACK_SIZE = 0x3000 -KERNEL_LARGE_STACK_SIZE = 0xf000 -KERNEL_LARGE_STACK_COMMIT = 0x3000 - -/* Miscellaneous Definitions */ -LOW_REALTIME_PRIORITY = 0x10 -CLOCK_QUANTUM_DECREMENT = 0x3 -WAIT_QUANTUM_DECREMENT = 0x1 -MAXIMUM_PROCESSORS = 0x20 -INITIAL_STALL_COUNT = 0x64 -KI_EXCEPTION_ACCESS_VIOLATION = 0x10000004 -Executive = 0x0 -FALSE = 0x0 -TRUE = 0x1 -DBG_STATUS_CONTROL_C = 0x1 -USER_SHARED_DATA = 0xffdf0000 -PAGE_SIZE = 0x1000 -MAXIMUM_IDTVECTOR = 0xff -PRIMARY_VECTOR_BASE = 0x30 -RPL_MASK = 0x3 -MODE_MASK = 0x1 -NUMBER_SERVICE_TABLES = 0x2 -SERVICE_NUMBER_MASK = 0xfff -SERVICE_TABLE_SHIFT = 0x8 -SERVICE_TABLE_MASK = 0x10 -SERVICE_TABLE_TEST = 0x10 - -/* KAPC */ -ApType = 0x0 -ApSize = 0x2 -ApThread = 0x8 -ApApcListEntry = 0xc -ApKernelRoutine = 0x14 -ApRundownRoutine = 0x18 -ApNormalRoutine = 0x1c -ApNormalContext = 0x20 -ApSystemArgument1 = 0x24 -ApSystemArgument2 = 0x28 -ApApcStateIndex = 0x2c -ApApcMode = 0x2d -ApInserted = 0x2e -ApcObjectLength = 0x30 - -/* KAPC_STATE */ -AsApcListHead = 0x0 -AsProcess = 0x10 -AsKernelApcInProgress = 0x14 -AsKernelApcPending = 0x15 -AsUserApcPending = 0x16 - -/* CLIENT_ID */ -CidUniqueProcess = 0x0 -CidUniqueThread = 0x4 - -/* RTL_CRITICAL_SECTION */ -CsDebugInfo = 0x0 -CsLockCount = 0x4 -CsRecursionCount = 0x8 -CsOwningThread = 0xc -CsLockSemaphore = 0x10 -CsSpinCount = 0x14 - -/* RTL_CRITICAL_SECTION_DEBUG */ -CsType = 0x0 -CsCreatorBackTraceIndex = 0x2 -CsCriticalSection = 0x4 -CsProcessLocksList = 0x8 -CsEntryCount = 0x10 -CsContentionCount = 0x14 - -/* KDEVICE_QUEUE_ENTRY */ -DeDeviceListEntry = 0x0 -DeSortKey = 0x8 -DeInserted = 0xc -DeviceQueueEntryLength = 0x10 - -/* KDPC */ -DpType = 0x0 -DpImportance = 0x1 -DpNumber = 0x2 -DpDpcListEntry = 0x4 -DpDeferredRoutine = 0xc -DpDeferredContext = 0x10 -DpSystemArgument1 = 0x14 -DpSystemArgument2 = 0x18 -DpDpcData = 0x1c -DpcObjectLength = 0x20 - -/* KDEVICE_QUEUE */ -DvType = 0x0 -DvSize = 0x2 -DvDeviceListHead = 0x4 -DvSpinLock = 0xc -DvBusy = 0x10 -DeviceQueueObjectLength = 0x14 - -/* EXCEPTION_RECORD */ -ErExceptionCode = 0x0 -ErExceptionFlags = 0x4 -ErExceptionRecord = 0x8 -ErExceptionAddress = 0xc -ErNumberParameters = 0x10 -ErExceptionInformation = 0x14 -ExceptionRecordLength = 0x50 -EXCEPTION_RECORD_LENGTH = 0x50 - -/* EPROCESS */ -EpDebugPort = 0xcc -EpVdmObjects = 0x144 -ExecutiveProcessObjectLength = 0x278 - -/* KEVENT */ -EvType = 0x0 -EvSize = 0x2 -EvSignalState = 0x4 -EvWaitListHead = 0x8 -EventObjectLength = 0x10 - -/* FAST_MUTEX */ -FmCount = 0x0 -FmOwner = 0x4 -FmContention = 0x8 -FmOldIrql = 0x1c - -/* KINTERRUPT */ -InType = 0x0 -InSize = 0x2 -InInterruptListEntry = 0x4 -InServiceRoutine = 0xc -InServiceContext = 0x10 -InSpinLock = 0x14 -InTickCount = 0x18 -InActualLock = 0x1c -InDispatchAddress = 0x20 -InVector = 0x24 -InIrql = 0x28 -InSynchronizeIrql = 0x29 -InFloatingSave = 0x2a -InConnected = 0x2b -InNumber = 0x2c -InShareVector = 0x2d -InMode = 0x30 -InServiceCount = 0x34 -InDispatchCount = 0x38 -InDispatchCode = 0x3c -InterruptObjectLength = 0x1e4 - -/* IO_STATUS_BLOCK */ -IoStatus = 0x0 -IoPointer = 0x0 -IoInformation = 0x4 - -/* KNODE */ -KnPfnDereferenceSListHead = 0x8 -KnProcessorMask = 0x10 -KnColor = 0x14 -KnSeed = 0x18 -KnNodeNumber = 0x19 -KnFlags = 0x1a -knMmShiftedColor = 0x1e -KnFreeCount = 0x22 -KnPfnDeferredList = 0x2a -KNODE_SIZE = 0x2e - -/* KSPIN_LOCK_QUEUE */ -LqNext = 0x0 -LqLock = 0x4 - -/* KLOCK_QUEUE_HANDLE */ -LqhNext = 0x0 -LqhLock = 0x4 -LqhOldIrql = 0x8 -LOCK_QUEUE_HEADER_SIZE = 0xc - -/* LARGE_INTEGER */ -LiLowPart = 0x0 -LiHighPart = 0x4 - -/* LIST_ENTRY */ -LsFlink = 0x0 -LsBlink = 0x4 - -/* PEB */ -PeKernelCallbackTable = 0x2c -ProcessEnvironmentBlockLength = 0x230 - -/* KPROFILE */ -PfType = 0x0 -PfSize = 0x2 -PfProfileListEntry = 0x4 -PfProcess = 0xc -PfRangeBase = 0x10 -PfRangeLimit = 0x14 -PfBucketShift = 0x18 -PfBuffer = 0x1c -PfSegment = 0x20 -PfAffinity = 0x24 -PfSource = 0x28 -PfStarted = 0x2c -ProfileObjectLength = 0x30 - -/* PORT_MESSAGE */ -PmLength = 0x0 -PmZeroInit = 0x4 -PmClientId = 0x8 -PmProcess = 0x8 -PmThread = 0xc -PmMessageId = 0x10 -PmClientViewSize = 0x14 -PortMessageLength = 0x18 - -/* KPROCESS */ -PrType = 0x0 -PrSize = 0x2 -PrSignalState = 0x4 -PrProfileListHead = 0x10 -PrDirectoryTableBase = 0x18 -PrLdtDescriptor = 0x20 -PrIopmOffset = 0x30 -PrInt21Descriptor = 0x28 -PrVdmTrapcHandler = 0x4c -PrFlags = 0x6b -PrActiveProcessors = 0x34 -PrKernelTime = 0x38 -PrUserTime = 0x3c -PrReadyListHead = 0x40 -PrSwapListEntry = 0x48 -PrThreadListHead = 0x50 -PrProcessLock = 0x58 -PrAffinity = 0x5c -PrProcessFlags = 0x60 -PrBasePriority = 0x64 -PrQuantumReset = 0x65 -PrState = 0x66 -PrStackCount = 0x6c -KernelProcessObjectLength = 0x78 - -/* KQUEUE */ -QuType = 0x0 -QuSize = 0x2 -QuSignalState = 0x4 -QuEntryListHead = 0x10 -QuCurrentCount = 0x18 -QuMaximumCount = 0x1c -QuThreadListHead = 0x20 -QueueObjectLength = 0x28 - -/* STRING */ -StrLength = 0x0 -StrMaximumLength = 0x2 -StrBuffer = 0x4 - -/* TEB */ -TeCmTeb = 0x0 -TeExceptionList = 0x0 -TeStackBase = 0x4 -TeStackLimit = 0x8 -TeFiberData = 0x10 -TeSelf = 0x18 -TeEnvironmentPointer = 0x1c -TeClientId = 0x20 -TeActiveRpcHandle = 0x28 -TeThreadLocalStoragePointer = 0x2c -TeCountOfOwnedCriticalSections = 0x38 -TePeb = 0x30 -TeCsrClientThread = 0x3c -TeWOW32Reserved = 0xc0 -TeExceptionCode = 0x1a4 -TeActivationContextStackPointer = 0x1a8 -TeGdiClientPID = 0x6c0 -TeGdiClientTID = 0x6c4 -TeGdiThreadLocalInfo = 0x6c8 -TeglDispatchTable = 0x7c4 -TeglReserved1 = 0xb68 -TeglReserved2 = 0xbdc -TeglSectionInfo = 0xbe0 -TeglSection = 0xbe4 -TeglTable = 0xbe8 -TeglCurrentRC = 0xbec -TeglContext = 0xbf0 -TeDeallocationStack = 0xe0c -TeTlsSlots = 0xe10 -TeTlsExpansionSlots = 0xf94 -TeLastErrorValue = 0x34 -TeVdm = 0xf18 -TeInstrumentation = 0xf2c -TeGdiBatchCount = 0xf70 -TeGuaranteedStackBytes = 0xf78 -TeFlsData = 0xfb4 -TeSafeThunkCall = 0xfb8 -ThreadEnvironmentBlockLength = 0xfbc - -/* TIME_FIELDS */ -TfSecond = 0xa -TfMinute = 0x8 -TfHour = 0x6 -TfWeekday = 0xe -TfDay = 0x4 -TfMonth = 0x2 -TfYear = 0x0 -TfMilliseconds = 0xc - -/* KTHREAD */ -ThType = 0x0 -ThSize = 0x2 -ThLock = 0x0 -ThDebugActive = 0x3 -ThSignalState = 0x4 -ThInitialStack = 0x18 -ThStackLimit = 0x1c -ThKernelStack = 0x20 -ThThreadLock = 0x24 -ThAlerted = 0x5e -ThApcState = 0x28 -ThPriority = 0x5b -ThSwapBusy = 0x5d -ThNextProcessor = 0x40 -ThDeferredProcessor = 0x41 -ThApcQueueLock = 0x44 -ThContextSwitches = 0x48 -ThState = 0x4c -ThNpxState = 0x4d -ThWaitIrql = 0x4e -ThWaitMode = 0x4f -ThWaitStatus = 0x50 -ThWaitBlockList = 0x54 -ThGateObject = 0x54 -ThWaitListEntry = 0x60 -ThSwapListEntry = 0x60 -ThQueue = 0x68 -ThWaitTime = 0x6c -ThCombinedApcDisable = 0x70 -ThKernelApcDisable = 0x70 -ThSpecialApcDisable = 0x72 -ThTeb = 0x74 -ThTimer = 0x78 -ThThreadFlags = 0xa0 -ThServiceTable = 0x118 -ThWaitBlock = 0xa8 -ThResourceIndex = 0xef -ThQueueListEntry = 0x108 -ThTrapFrame = 0x110 -ThCallbackStack = 0x114 -ThApcStateIndex = 0x11c -ThIdealProcessor = 0x11d -ThBasePriority = 0x121 -ThPriorityDecrement = 0x122 -ThAdjustReason = 0x42 -ThAdjustIncrement = 0x43 -ThPreviousMode = 0xd7 -ThSaturation = 0x123 -ThFreezeCount = 0x14f -ThUserAffinity = 0x124 -ThProcess = 0x128 -ThAffinity = 0x12c -ThUserIdealProcessor = 0x151 -ThApcStatePointer = 0x130 -ThSavedApcState = 0x138 -ThWaitReason = 0x5a -ThSuspendCount = 0x150 -ThWin32Thread = 0x154 -ThStackBase = 0x158 -ThSuspendApc = 0x15c -ThPowerState = 0x18b -ThKernelTime = 0x160 -ThLegoData = 0x184 -ThLargeStack = 0x107 -ThUserTime = 0x18c -ThSuspendSemaphore = 0x190 -ThSListFaultCount = 0x1a4 -ThThreadListEntry = 0x1a8 -ThMutantListHead = 0x10 -ThSListFaultAddress = 0x1b0 -KernelThreadObjectLength = 0x1b8 -ExecutiveThreadObjectLength = 0x250 - -/* KTIMER */ -TiType = 0x0 -TiSize = 0x2 -TiInserted = 0x3 -TiSignalState = 0x4 -TiDueTime = 0x10 -TiTimerListEntry = 0x18 -TiDpc = 0x20 -TiPeriod = 0x24 -TimerObjectLength = 0x28 - -/* TIME */ - -/* KUSER_SHARED_DATA */ -UsTickCountMultiplier = 0x4 -UsInterruptTime = 0x8 -UsSystemTime = 0x14 -UsTimeZoneBias = 0x20 -UsImageNumberLow = 0x2c -UsImageNumberHigh = 0x2e -UsNtSystemRoot = 0x30 -UsMaxStackTraceDepth = 0x238 -UsCryptoExponent = 0x23c -UsTimeZoneId = 0x240 -UsLargePageMinimum = 0x244 -UsReserved2 = 0x248 -UsNtProductType = 0x264 -UsProductTypeIsValid = 0x268 -UsNtMajorVersion = 0x26c -UsNtMinorVersion = 0x270 -UsProcessorFeatures = 0x274 -UsReserved1 = 0x2b4 -UsReserved3 = 0x2b8 -UsTimeSlip = 0x2bc -UsAlternativeArchitecture = 0x2c0 -UsSystemExpirationDate = 0x2c8 -UsSuiteMask = 0x2d0 -UsKdDebuggerEnabled = 0x2d4 -UsActiveConsoleId = 0x2d8 -UsDismountCount = 0x2dc -UsComPlusPackage = 0x2e0 -UsLastSystemRITEventTickCount = 0x2e4 -UsNumberOfPhysicalPages = 0x2e8 -UsSafeBootMode = 0x2ec -UsTestRetInstruction = 0x2f8 -UsSystemCall = 0x300 -UsSystemCallReturn = 0x304 -UsSystemCallPad = 0x308 -UsTickCount = 0x320 -UsTickCountQuad = 0x320 -UsWow64SharedInformation = 0x340 - -/* KWAIT_BLOCK */ -WbWaitListEntry = 0x0 -WbThread = 0x8 -WbObject = 0xc -WbNextWaitBlock = 0x10 -WbWaitKey = 0x14 -WbWaitType = 0x16 - -/* CR0 flags */ -CR0_PE = 0x1 -CR0_MP = 0x2 -CR0_EM = 0x4 -CR0_TS = 0x8 -CR0_ET = 0x10 -CR0_NE = 0x20 -CR0_WP = 0x10000 -CR0_AM = 0x40000 -CR0_NW = 0x20000000 -CR0_CD = 0x40000000 -CR0_PG = 0x80000000 - -/* CR4 flags */ -CR4_VME = 0x1 -CR4_PVI = 0x2 -CR4_TSD = 0x4 -CR4_DE = 0x8 -CR4_PSE = 0x10 -CR4_PAE = 0x20 -CR4_MCE = 0x40 -CR4_PGE = 0x80 -CR4_FXSR = 0x200 -CR4_XMMEXCPT = 0x400 - -/* KeFeatureBits flags */ -KF_RDTSC = 0x2 -KF_CR4 = 0x4 -KF_GLOBAL_PAGE = 0x10 -KF_LARGE_PAGE = 0x20 -KF_CMPXCHG8B = 0x80 -KF_FAST_SYSCALL = 0x1000 -KF_V86_VIS = 0x1 - -/* Machine type definitions */ -MACHINE_TYPE_ISA = 0x0 -MACHINE_TYPE_EISA = 0x1 -MACHINE_TYPE_MCA = 0x2 - -/* EFLAGS */ -EFLAGS_TF = 0x100 -EFLAGS_INTERRUPT_MASK = 0x200 -EFLAGS_V86_MASK = 0x20000 -EFLAGS_ALIGN_CHECK = 0x40000 -EFLAGS_VIF = 0x80000 -EFLAGS_VIP = 0x100000 -EFLAGS_USER_SANITIZE = 0x3f4dd7 - -/* KDGT selectors */ -KGDT_R3_DATA = 0x20 -KGDT_R3_CODE = 0x18 -KGDT_R0_CODE = 0x8 -KGDT_R0_DATA = 0x10 -KGDT_R0_PCR = 0x30 -KGDT_TSS = 0x28 -KGDT_R3_TEB = 0x38 -KGDT_DF_TSS = 0x50 -KGDT_NMI_TSS = 0x58 -KGDT_LDT = 0x48 -NPX_STATE_NOT_LOADED = 0xa -NPX_STATE_LOADED = 0x0 -PF_XMMI_INSTRUCTIONS_AVAILABLE = 0x6 -EFLAG_SELECT = 0xc000 - -/* CONTEXT */ -CsContextFlags = 0x0 -CsDr0 = 0x4 -CsDr1 = 0x8 -CsDr2 = 0xc -CsDr3 = 0x10 -CsDr6 = 0x14 -CsDr7 = 0x18 -CsFloatSave = 0x1c -CsSegGs = 0x8c -CsSegFs = 0x90 -CsSegEs = 0x94 -CsSegDs = 0x98 -CsEdi = 0x9c -CsEsi = 0xa0 -CsEbx = 0xa4 -CsEdx = 0xa8 -CsEcx = 0xac -CsEax = 0xb0 -CsEbp = 0xb4 -CsEip = 0xb8 -CsSegCs = 0xbc -CsEflags = 0xc0 -CsEsp = 0xc4 -CsSegSs = 0xc8 -CsExtendedRegisters = 0xcc -ContextFrameLength = 0x2cc -CONTEXT_LENGTH = 0x2cc - -/* KGDTENTRY */ -KgdtBaseLow = 0x2 -KgdtBaseMid = 0x4 -KgdtBaseHi = 0x7 -KgdtLimitHi = 0x6 -KgdtLimitLow = 0x0 - -/* KTRAP_FRAME */ -TsExceptionList = 0x4c -TsPreviousPreviousMode = 0x48 -TsSegGs = 0x30 -TsSegFs = 0x50 -TsSegEs = 0x34 -TsSegDs = 0x38 -TsEdi = 0x54 -TsEsi = 0x58 -TsEbp = 0x60 -TsEbx = 0x5c -TsEdx = 0x3c -TsEcx = 0x40 -TsEax = 0x44 -TsErrCode = 0x64 -TsEip = 0x68 -TsSegCs = 0x6c -TsEflags = 0x70 -TsHardwareEsp = 0x74 -TsHardwareSegSs = 0x78 -TsTempSegCs = 0x10 -TsTempEsp = 0x14 -TsDbgEbp = 0x0 -TsDbgEip = 0x4 -TsDbgArgMark = 0x8 -TsDbgArgPointer = 0xc -TsDr0 = 0x18 -TsDr1 = 0x1c -TsDr2 = 0x20 -TsDr3 = 0x24 -TsDr6 = 0x28 -TsDr7 = 0x2c -TsV86Es = 0x7c -TsV86Ds = 0x80 -TsV86Fs = 0x84 -TsV86Gs = 0x88 -KTRAP_FRAME_LENGTH = 0x8c -KTRAP_FRAME_ALIGN = 0x4 -FRAME_EDITED = 0xfff8 - -/* KTSS */ -TssEsp0 = 0x4 -TssCR3 = 0x1c -TssEip = 0x20 -TssEFlags = 0x24 -TssEax = 0x28 -TssEbx = 0x34 -TssEcx = 0x2c -TssEdx = 0x30 -TssEsp = 0x38 -TssEbp = 0x3c -TssEsi = 0x40 -TssEdi = 0x44 -TssEs = 0x48 -TssCs = 0x4c -TssSs = 0x50 -TssDs = 0x54 -TssFs = 0x58 -TssGs = 0x5c -TssLDT = 0x60 -TssIoMapBase = 0x66 -TssIoMaps = 0x68 -TssLength = 0x20ac - -/* KPCR */ -KPCR_EXCEPTION_LIST = 0x0 -KPCR_PERF_GLOBAL_GROUP_MASK = 0x8 -KPCR_CONTEXT_SWITCHES = 0x10 -KPCR_TEB = 0x18 -KPCR_SELF = 0x1c -KPCR_PRCB = 0x20 -KPCR_IDT = 0x38 -KPCR_GDT = 0x3c -KPCR_TSS = 0x40 -KPCR_STALL_SCALE_FACTOR = 0x4c -KPCR_PRCB_DATA = 0x120 -KPCR_CURRENT_THREAD = 0x124 -KPCR_PRCB_NEXT_THREAD = 0x128 -KPCR_PRCB_DPC_QUEUE_DEPTH = 0xa4c -KPCR_PRCB_DPC_STACK = 0xa68 -KPCR_PRCB_MAXIMUM_DPC_QUEUE_DEPTH = 0xa6c -KPCR_PRCB_DPC_ROUTINE_ACTIVE = 0xa7a -KPCR_PRCB_TIMER_REQUEST = 0xa88 -KPCR_PRCB_QUANTUM_END = 0xaa1 -KPCR_PRCB_DEFERRED_READY_LIST_HEAD = 0xc10 -KPCR_PRCB_POWER_STATE_IDLE_FUNCTION = 0xec0 - -/* KTRAP_FRAME */ -KTRAP_FRAME_DEBUGEBP = 0x0 -KTRAP_FRAME_DEBUGEIP = 0x4 -KTRAP_FRAME_TEMPESP = 0x14 -KTRAP_FRAME_DR0 = 0x18 -KTRAP_FRAME_DR1 = 0x1c -KTRAP_FRAME_DR2 = 0x20 -KTRAP_FRAME_DR3 = 0x24 -KTRAP_FRAME_DR6 = 0x28 -KTRAP_FRAME_DR7 = 0x2c -KTRAP_FRAME_GS = 0x30 -KTRAP_FRAME_ES = 0x34 -KTRAP_FRAME_DS = 0x38 -KTRAP_FRAME_EDX = 0x3c -KTRAP_FRAME_ECX = 0x40 -KTRAP_FRAME_EAX = 0x44 -KTRAP_FRAME_PREVIOUS_MODE = 0x48 -KTRAP_FRAME_EXCEPTION_LIST = 0x4c -KTRAP_FRAME_FS = 0x50 -KTRAP_FRAME_EDI = 0x54 -KTRAP_FRAME_ESI = 0x58 -KTRAP_FRAME_EBX = 0x5c -KTRAP_FRAME_EBP = 0x60 -KTRAP_FRAME_ERROR_CODE = 0x64 -KTRAP_FRAME_EIP = 0x68 -KTRAP_FRAME_EFLAGS = 0x70 -KTRAP_FRAME_ESP = 0x74 -KTRAP_FRAME_SS = 0x78 -KTRAP_FRAME_V86_ES = 0x7c -KTRAP_FRAME_V86_DS = 0x80 -KTRAP_FRAME_V86_FS = 0x84 -KTRAP_FRAME_V86_GS = 0x88 -KTRAP_FRAME_SIZE = 0x8c -FRAME_EDITED = 0xfff8 - -/* CONTEXT */ -CONTEXT_FLAGS = 0x0 -CONTEXT_SEGGS = 0x8c -CONTEXT_SEGFS = 0x90 -CONTEXT_SEGES = 0x94 -CONTEXT_SEGDS = 0x98 -CONTEXT_EDI = 0x9c -CONTEXT_ESI = 0xa0 -CONTEXT_EBX = 0xa4 -CONTEXT_EDX = 0xa8 -CONTEXT_ECX = 0xac -CONTEXT_EAX = 0xb0 -CONTEXT_EBP = 0xb4 -CONTEXT_EIP = 0xb8 -CONTEXT_SEGCS = 0xbc -CONTEXT_EFLAGS = 0xc0 -CONTEXT_ESP = 0xc4 -CONTEXT_SEGSS = 0xc8 -CONTEXT_FRAME_LENGTH = 0x2cc - -/* FIBER */ -FIBER_PARAMETER = 0x0 -FIBER_EXCEPTION_LIST = 0x4 -FIBER_STACK_BASE = 0x8 -FIBER_STACK_LIMIT = 0xc -FIBER_DEALLOCATION_STACK = 0x10 -FIBER_CONTEXT = 0x14 -FIBER_CONTEXT_FLAGS = 0x14 -FIBER_CONTEXT_EAX = 0xc4 -FIBER_CONTEXT_EBX = 0xb8 -FIBER_CONTEXT_ECX = 0xc0 -FIBER_CONTEXT_EDX = 0xbc -FIBER_CONTEXT_ESI = 0xb4 -FIBER_CONTEXT_EDI = 0xb0 -FIBER_CONTEXT_EBP = 0xc8 -FIBER_CONTEXT_EIP = 0xcc -FIBER_CONTEXT_ESP = 0xd8 -FIBER_CONTEXT_DR6 = 0x28 -FIBER_CONTEXT_FLOAT_SAVE_CONTROL_WORD = 0x30 -FIBER_CONTEXT_FLOAT_SAVE_STATUS_WORD = 0x34 -FIBER_CONTEXT_FLOAT_SAVE_TAG_WORD = 0x38 -FIBER_GUARANTEED_STACK_BYTES = 0x2e0 -FIBER_FLS_DATA = 0x2e4 -FIBER_ACTIVATION_CONTEXT_STACK = 0x2e8 - -/* KTSS */ -KTSS_IOMAPBASE = 0x66 -KTSS_ESP0 = 0x4 - -/* EXCEPTION_RECORD */ -EXCEPTION_RECORD_EXCEPTION_CODE = 0x0 -EXCEPTION_RECORD_EXCEPTION_FLAGS = 0x4 -EXCEPTION_RECORD_EXCEPTION_RECORD = 0x8 -EXCEPTION_RECORD_EXCEPTION_ADDRESS = 0xc -EXCEPTION_RECORD_NUMBER_PARAMETERS = 0x10 -EXCEPTION_RECORD_EXCEPTION_ADDRESS = 0xc -SIZEOF_EXCEPTION_RECORD = 0x50 -EXCEPTION_RECORD_LENGTH = 0x50 - -/* KTHREAD */ -KTHREAD_DEBUG_ACTIVE = 0x3 -KTHREAD_INITIAL_STACK = 0x18 -KTHREAD_STACK_LIMIT = 0x1c -KTHREAD_TEB = 0x74 -KTHREAD_KERNEL_STACK = 0x20 -KTHREAD_APCSTATE_PROCESS = 0x38 -KTHREAD_PENDING_KERNEL_APC = 0x3d -KTHREAD_CONTEXT_SWITCHES = 0x48 -KTHREAD_STATE_ = 0x4c -KTHREAD_NPX_STATE = 0x4d -KTHREAD_WAIT_IRQL = 0x4e -KTHREAD_WAIT_REASON = 0x5a -KTHREAD_COMBINED_APC_DISABLE = 0x70 -KTHREAD_SPECIAL_APC_DISABLE = 0x72 -KTHREAD_LARGE_STACK = 0x107 -KTHREAD_TRAP_FRAME = 0x110 -KTHREAD_CALLBACK_STACK = 0x114 -KTHREAD_APC_STATE_INDEX = 0x11c -KTHREAD_STACK_BASE = 0x158 - -/* KPROCESS */ -KPROCESS_DIRECTORY_TABLE_BASE = 0x18 -KPROCESS_LDT_DESCRIPTOR0 = 0x20 -KPROCESS_LDT_DESCRIPTOR1 = 0x24 -KPROCESS_INT21_DESCRIPTOR0 = 0x28 -KPROCESS_INT21_DESCRIPTOR1 = 0x2c -KPROCESS_IOPM_OFFSET = 0x30 - -/* Teb */ -TEB_EXCEPTION_LIST = 0x0 -TEB_STACK_LIMIT = 0x8 -TEB_STACK_BASE = 0x4 -TEB_SELF = 0x18 -TEB_FIBER_DATA = 0x10 -TEB_PEB = 0x30 -TEB_EXCEPTION_CODE = 0x1a4 -PEB_KERNEL_CALLBACK_TABLE = 0x2c -TEB_FLS_DATA = 0xfb4 -TEB_ACTIVATION_CONTEXT_STACK_POINTER = 0x1a8 -TEB_GUARANTEED_STACK_BYTES = 0xf78 -TEB_DEALLOCATION_STACK = 0xe0c - -/* Misc */ -NPX_FRAME_LENGTH = 0x210 -FN_CR0_NPX_STATE = 0x20c -DR7_RESERVED_MASK = 0xdc00 -FP_CONTROL_WORD = 0x0 -FP_STATUS_WORD = 0x4 -FP_TAG_WORD = 0x8 -FP_DATA_SELECTOR = 0x18 -CBSTACK_RESULT = 0x20 -CBSTACK_RESULT_LENGTH = 0x24 -CBSTACK_TRAP_FRAME = 0x4 -CBSTACK_CALLBACK_STACK = 0x8 -SIZEOF_FX_SAVE_AREA = 0x210 -KUSER_SHARED_SYSCALL = 0x7ffe0300 -EXCEPTION_EXECUTE_HANDLER = 0x1 -STATUS_CALLBACK_POP_STACK = 0xc0000423 -CONTEXT_ALIGNED_SIZE = 0x2cc -PROCESSOR_FEATURE_FXSR = 0x7ffe0278 diff --git a/reactos/include/reactos/ksamd64.inc b/reactos/include/reactos/ksamd64.inc deleted file mode 100644 index 24caf537153..00000000000 --- a/reactos/include/reactos/ksamd64.inc +++ /dev/null @@ -1,1074 +0,0 @@ - -/* Pointer size */ -SizeofPointer = 0x8 - -/* Breakpoints */ -BREAKPOINT_BREAK = 0x0 -BREAKPOINT_PRINT = 0x1 -BREAKPOINT_PROMPT = 0x2 -BREAKPOINT_LOAD_SYMBOLS = 0x3 -BREAKPOINT_UNLOAD_SYMBOLS = 0x4 -BREAKPOINT_COMMAND_STRING = 0x5 - -/* Context Frame Flags */ -CONTEXT_FULL = 0x10000b -CONTEXT_CONTROL = 0x100001 -CONTEXT_INTEGER = 0x100002 -CONTEXT_SEGMENTS = 0x100004 -CONTEXT_FLOATING_POINT = 0x100008 -CONTEXT_DEBUG_REGISTERS = 0x100010 - -/* Exception flags */ -EXCEPTION_NONCONTINUABLE = 0x1 -EXCEPTION_UNWINDING = 0x2 -EXCEPTION_EXIT_UNWIND = 0x4 -EXCEPTION_STACK_INVALID = 0x8 -EXCEPTION_NESTED_CALL = 0x10 -EXCEPTION_TARGET_UNWIND = 0x20 -EXCEPTION_COLLIDED_UNWIND = 0x20 -EXCEPTION_UNWIND = 0x6 -EXCEPTION_EXECUTE_HANDLER = 0x1 -EXCEPTION_CONTINUE_SEARCH = 0x0 -EXCEPTION_CONTINUE_EXECUTION = 0xffffffff - -/* Exception types */ -ExceptionContinueExecution = 0x0 -ExceptionContinueSearch = 0x1 -ExceptionNestedException = 0x2 -ExceptionCollidedUnwind = 0x3 - -/* Lock Queue */ -LOCK_QUEUE_WAIT = 0x1 -LOCK_QUEUE_OWNER = 0x2 -LockQueueDispatcherLock = 0x0 - -/* Process states */ -ProcessInMemory = 0x0 -ProcessOutOfMemory = 0x1 -ProcessInTransition = 0x2 - -/* Processor mode */ -KernelMode = 0x0 -UserMode = 0x1 - -/* Status codes */ -STATUS_ACCESS_VIOLATION = 0xc0000005 -STATUS_ASSERTION_FAILURE = 0xc0000420 -STATUS_ARRAY_BOUNDS_EXCEEDED = 0xc000008c -STATUS_BAD_COMPRESSION_BUFFER = 0xc0000242 -STATUS_BREAKPOINT = 0x80000003 -STATUS_CALLBACK_POP_STACK = 0xc0000423 -STATUS_DATATYPE_MISALIGNMENT = 0x80000002 -STATUS_FLOAT_DENORMAL_OPERAND = 0xc000008d -STATUS_FLOAT_DIVIDE_BY_ZERO = 0xc000008e -STATUS_FLOAT_INEXACT_RESULT = 0xc000008f -STATUS_FLOAT_INVALID_OPERATION = 0xc0000090 -STATUS_FLOAT_OVERFLOW = 0xc0000091 -STATUS_FLOAT_STACK_CHECK = 0xc0000092 -STATUS_FLOAT_UNDERFLOW = 0xc0000093 -STATUS_FLOAT_MULTIPLE_FAULTS = 0xc00002b4 -STATUS_FLOAT_MULTIPLE_TRAPS = 0xc00002b5 -STATUS_GUARD_PAGE_VIOLATION = 0x80000001 -STATUS_ILLEGAL_FLOAT_CONTEXT = 0xc000014a -STATUS_ILLEGAL_INSTRUCTION = 0xc000001d -STATUS_INSTRUCTION_MISALIGNMENT = 0xc00000aa -STATUS_INVALID_HANDLE = 0xc0000008 -STATUS_INVALID_LOCK_SEQUENCE = 0xc000001e -STATUS_INVALID_OWNER = 0xc000005a -STATUS_INVALID_PARAMETER = 0xc000000d -STATUS_INVALID_PARAMETER_1 = 0xc00000ef -STATUS_INVALID_SYSTEM_SERVICE = 0xc000001c -STATUS_INTEGER_DIVIDE_BY_ZERO = 0xc0000094 -STATUS_INTEGER_OVERFLOW = 0xc0000095 -STATUS_IN_PAGE_ERROR = 0xc0000006 -STATUS_KERNEL_APC = 0x100 -STATUS_LONGJUMP = 0x80000026 -STATUS_NO_CALLBACK_ACTIVE = 0xc0000258 -STATUS_NO_EVENT_PAIR = 0xc000014e -STATUS_PRIVILEGED_INSTRUCTION = 0xc0000096 -STATUS_SINGLE_STEP = 0x80000004 -STATUS_STACK_BUFFER_OVERRUN = 0xc0000409 -STATUS_STACK_OVERFLOW = 0xc00000fd -STATUS_SUCCESS = 0x0 -STATUS_THREAD_IS_TERMINATING = 0xc000004b -STATUS_TIMEOUT = 0x102 -STATUS_UNWIND = 0xc0000027 -STATUS_UNWIND_CONSOLIDATE = 0x80000029 -STATUS_USER_APC = 0xc0 -STATUS_WAKE_SYSTEM_DEBUGGER = 0x80000007 - -/* TLS defines */ -TLS_MINIMUM_AVAILABLE = 0x40 -TLS_EXPANSION_SLOTS = 0x400 - -/* Thread states */ -Initialized = 0x0 -Ready = 0x1 -Running = 0x2 -Standby = 0x3 -Terminated = 0x4 -Waiting = 0x5 - -/* Wait type / reason */ -WrExecutive = 0x7 -WrMutex = 0x1d -WrDispatchInt = 0x1f -WrQuantumEnd = 0x1e -WrEventPair = 0xe -WaitAny = 0x1 -WaitAll = 0x0 - -/* Interrupt object types */ -InLevelSensitive = 0x0 -InLatched = 0x1 - -/* Bug Check Codes */ -APC_INDEX_MISMATCH = 0x1 -INVALID_AFFINITY_SET = 0x3 -INVALID_DATA_ACCESS_TRAP = 0x4 -IRQL_NOT_GREATER_OR_EQUAL = 0x9 -IRQL_NOT_LESS_OR_EQUAL = 0xa -NO_USER_MODE_CONTEXT = 0xe -SPIN_LOCK_ALREADY_OWNED = 0xf -SPIN_LOCK_NOT_OWNED = 0x10 -THREAD_NOT_MUTEX_OWNER = 0x11 -TRAP_CAUSE_UNKNOWN = 0x12 -KMODE_EXCEPTION_NOT_HANDLED = 0x1e -KERNEL_APC_PENDING_DURING_EXIT = 0x20 -PANIC_STACK_SWITCH = 0x2b -DATA_BUS_ERROR = 0x2e -INSTRUCTION_BUS_ERROR = 0x2f -SYSTEM_EXIT_OWNED_MUTEX = 0x39 -PAGE_FAULT_WITH_INTERRUPTS_OFF = 0x49 -IRQL_GT_ZERO_AT_SYSTEM_SERVICE = 0x4a -DATA_COHERENCY_EXCEPTION = 0x55 -INSTRUCTION_COHERENCY_EXCEPTION = 0x56 -HAL1_INITIALIZATION_FAILED = 0x61 -UNEXPECTED_KERNEL_MODE_TRAP = 0x7f -NMI_HARDWARE_FAILURE = 0x80 -SPIN_LOCK_INIT_FAILURE = 0x81 -ATTEMPTED_SWITCH_FROM_DPC = 0xb8 - -/* IRQL */ -PASSIVE_LEVEL = 0x0 -APC_LEVEL = 0x1 -DISPATCH_LEVEL = 0x2 -CLOCK_LEVEL = 0xd -IPI_LEVEL = 0xe -POWER_LEVEL = 0xe -PROFILE_LEVEL = 0xf -HIGH_LEVEL = 0xf -#ifdef NT_UP -SYNCH_LEVEL = 0x2 -#else -SYNCH_LEVEL = 0xc -#endif - -/* Stack sizes */ -KERNEL_STACK_SIZE = 0x6000 -KERNEL_LARGE_STACK_SIZE = 0x12000 -KERNEL_LARGE_STACK_COMMIT = 0x6000 -KERNEL_MCA_EXCEPTION_STACK_SIZE = 0x2000 -NMI_STACK_SIZE = 0x2000 - -/* Miscellaneous Definitions */ -LOW_REALTIME_PRIORITY = 0x10 -CLOCK_QUANTUM_DECREMENT = 0x3 -WAIT_QUANTUM_DECREMENT = 0x1 -MAXIMUM_PROCESSORS = 0x40 -INITIAL_STALL_COUNT = 0x64 -KI_EXCEPTION_ACCESS_VIOLATION = 0x10000004 -Executive = 0x0 -FALSE = 0x0 -TRUE = 0x1 -DBG_STATUS_CONTROL_C = 0x1 -USER_SHARED_DATA = 0xffdf0000 -PAGE_SIZE = 0x1000 -MAXIMUM_IDTVECTOR = 0xff -PRIMARY_VECTOR_BASE = 0x30 -RPL_MASK = 0x3 -MODE_MASK = 0x1 -NUMBER_SERVICE_TABLES = 0x2 -SERVICE_NUMBER_MASK = 0xfff -SERVICE_TABLE_SHIFT = 0x7 -SERVICE_TABLE_MASK = 0x20 -SERVICE_TABLE_TEST = 0x20 - -/* KAPC */ -ApType = 0x0 -ApSize = 0x2 -ApThread = 0x8 -ApApcListEntry = 0x10 -ApKernelRoutine = 0x20 -ApRundownRoutine = 0x28 -ApNormalRoutine = 0x30 -ApNormalContext = 0x38 -ApSystemArgument1 = 0x40 -ApSystemArgument2 = 0x48 -ApApcStateIndex = 0x50 -ApApcMode = 0x51 -ApInserted = 0x52 -ApcObjectLength = 0x58 - -/* KAPC_STATE */ -AsApcListHead = 0x0 -AsProcess = 0x20 -AsKernelApcInProgress = 0x28 -AsKernelApcPending = 0x29 -AsUserApcPending = 0x2a - -/* CLIENT_ID */ -CidUniqueProcess = 0x0 -CidUniqueThread = 0x8 - -/* RTL_CRITICAL_SECTION */ -CsDebugInfo = 0x0 -CsLockCount = 0x8 -CsRecursionCount = 0xc -CsOwningThread = 0x10 -CsLockSemaphore = 0x18 -CsSpinCount = 0x20 - -/* RTL_CRITICAL_SECTION_DEBUG */ -CsType = 0x0 -CsCreatorBackTraceIndex = 0x2 -CsCriticalSection = 0x8 -CsProcessLocksList = 0x10 -CsEntryCount = 0x20 -CsContentionCount = 0x24 - -/* KDEVICE_QUEUE_ENTRY */ -DeDeviceListEntry = 0x0 -DeSortKey = 0x10 -DeInserted = 0x14 -DeviceQueueEntryLength = 0x18 - -/* KDPC */ -DpType = 0x0 -DpImportance = 0x1 -DpNumber = 0x2 -DpDpcListEntry = 0x8 -DpDeferredRoutine = 0x18 -DpDeferredContext = 0x20 -DpSystemArgument1 = 0x28 -DpSystemArgument2 = 0x30 -DpDpcData = 0x38 -DpcObjectLength = 0x40 - -/* KDEVICE_QUEUE */ -DvType = 0x0 -DvSize = 0x2 -DvDeviceListHead = 0x8 -DvSpinLock = 0x18 -DvBusy = 0x20 -DeviceQueueObjectLength = 0x28 - -/* EXCEPTION_RECORD */ -ErExceptionCode = 0x0 -ErExceptionFlags = 0x4 -ErExceptionRecord = 0x8 -ErExceptionAddress = 0x10 -ErNumberParameters = 0x18 -ErExceptionInformation = 0x20 -ExceptionRecordLength = 0x98 -EXCEPTION_RECORD_LENGTH = 0x98 - -/* EPROCESS */ -EpDebugPort = 0x110 -EpVdmObjects = 0x1f0 -ExecutiveProcessObjectLength = 0x3a0 - -/* KEVENT */ -EvType = 0x0 -EvSize = 0x2 -EvSignalState = 0x4 -EvWaitListHead = 0x8 -EventObjectLength = 0x18 - -/* FAST_MUTEX */ -FmCount = 0x0 -FmOwner = 0x8 -FmContention = 0x10 -FmOldIrql = 0x30 - -/* KINTERRUPT */ -InType = 0x0 -InSize = 0x2 -InInterruptListEntry = 0x8 -InServiceRoutine = 0x18 -InServiceContext = 0x20 -InSpinLock = 0x28 -InTickCount = 0x30 -InActualLock = 0x38 -InDispatchAddress = 0x40 -InVector = 0x48 -InIrql = 0x4c -InSynchronizeIrql = 0x4d -InFloatingSave = 0x4e -InConnected = 0x4f -InNumber = 0x50 -InShareVector = 0x51 -InMode = 0x54 -InServiceCount = 0x58 -InDispatchCount = 0x5c -InDispatchCode = 0x60 -InterruptObjectLength = 0x208 - -/* IO_STATUS_BLOCK */ -IoStatus = 0x0 -IoPointer = 0x0 -IoInformation = 0x8 - -/* KNODE */ -KnPfnDereferenceSListHead = 0x10 -KnProcessorMask = 0x20 -KnColor = 0x28 -KnSeed = 0x2c -KnNodeNumber = 0x2d -KnFlags = 0x2e -knMmShiftedColor = 0x32 -KnFreeCount = 0x36 -KnPfnDeferredList = 0x3e -KNODE_SIZE = 0x46 - -/* KSPIN_LOCK_QUEUE */ -LqNext = 0x0 -LqLock = 0x8 - -/* KLOCK_QUEUE_HANDLE */ -LqhNext = 0x0 -LqhLock = 0x8 -LqhOldIrql = 0x10 -LOCK_QUEUE_HEADER_SIZE = 0x18 - -/* LARGE_INTEGER */ -LiLowPart = 0x0 -LiHighPart = 0x4 - -/* LIST_ENTRY */ -LsFlink = 0x0 -LsBlink = 0x8 - -/* PEB */ -PeKernelCallbackTable = 0x58 -ProcessEnvironmentBlockLength = 0x358 - -/* KPROFILE */ -PfType = 0x0 -PfSize = 0x2 -PfProfileListEntry = 0x8 -PfProcess = 0x18 -PfRangeBase = 0x20 -PfRangeLimit = 0x28 -PfBucketShift = 0x30 -PfBuffer = 0x38 -PfSegment = 0x40 -PfAffinity = 0x48 -PfSource = 0x50 -PfStarted = 0x54 -ProfileObjectLength = 0x58 - -/* PORT_MESSAGE */ -PmLength = 0x0 -PmZeroInit = 0x4 -PmClientId = 0x8 -PmProcess = 0x8 -PmThread = 0x10 -PmMessageId = 0x18 -PmClientViewSize = 0x1c -PortMessageLength = 0x24 - -/* KPROCESS */ -PrType = 0x0 -PrSize = 0x2 -PrSignalState = 0x4 -PrProfileListHead = 0x18 -PrDirectoryTableBase = 0x28 -PrActiveProcessors = 0x30 -PrKernelTime = 0x34 -PrUserTime = 0x38 -PrReadyListHead = 0x40 -PrSwapListEntry = 0x50 -PrThreadListHead = 0x60 -PrProcessLock = 0x70 -PrAffinity = 0x78 -PrProcessFlags = 0x80 -PrBasePriority = 0x84 -PrQuantumReset = 0x85 -PrState = 0x86 -PrStackCount = 0x8c -KernelProcessObjectLength = 0xa0 - -/* KQUEUE */ -QuType = 0x0 -QuSize = 0x2 -QuSignalState = 0x4 -QuEntryListHead = 0x18 -QuCurrentCount = 0x28 -QuMaximumCount = 0x2c -QuThreadListHead = 0x30 -QueueObjectLength = 0x40 - -/* STRING */ -StrLength = 0x0 -StrMaximumLength = 0x2 -StrBuffer = 0x8 - -/* TEB */ -TeCmTeb = 0x0 -TeStackBase = 0x8 -TeStackLimit = 0x10 -TeFiberData = 0x20 -TeSelf = 0x30 -TeEnvironmentPointer = 0x38 -TeClientId = 0x40 -TeActiveRpcHandle = 0x50 -TeThreadLocalStoragePointer = 0x58 -TeCountOfOwnedCriticalSections = 0x6c -TePeb = 0x60 -TeCsrClientThread = 0x70 -TeWOW32Reserved = 0x100 -TeExceptionCode = 0x2c0 -TeActivationContextStackPointer = 0x2c8 -TeGdiClientPID = 0x7f0 -TeGdiClientTID = 0x7f4 -TeGdiThreadLocalInfo = 0x7f8 -TeglDispatchTable = 0x9f0 -TeglReserved1 = 0x1138 -TeglReserved2 = 0x1220 -TeglSectionInfo = 0x1228 -TeglSection = 0x1230 -TeglTable = 0x1238 -TeglCurrentRC = 0x1240 -TeglContext = 0x1248 -TeDeallocationStack = 0x1478 -TeTlsSlots = 0x1480 -TeTlsExpansionSlots = 0x1780 -TeLastErrorValue = 0x68 -TeVdm = 0x1690 -TeInstrumentation = 0x16b8 -TeGdiBatchCount = 0x1740 -TeGuaranteedStackBytes = 0x1748 -TeFlsData = 0x17c8 -ThreadEnvironmentBlockLength = 0x17d8 - -/* TIME_FIELDS */ -TfSecond = 0xa -TfMinute = 0x8 -TfHour = 0x6 -TfWeekday = 0xe -TfDay = 0x4 -TfMonth = 0x2 -TfYear = 0x0 -TfMilliseconds = 0xc - -/* KTHREAD */ -ThType = 0x0 -ThSize = 0x2 -ThLock = 0x0 -ThDebugActive = 0x3 -ThSignalState = 0x4 -ThInitialStack = 0x28 -ThStackLimit = 0x30 -ThKernelStack = 0x38 -ThThreadLock = 0x40 -ThAlerted = 0x9e -ThApcState = 0x48 -ThPriority = 0x9b -ThSwapBusy = 0x9d -ThNextProcessor = 0x60 -ThDeferredProcessor = 0x61 -ThApcQueueLock = 0x78 -ThContextSwitches = 0x80 -ThState = 0x84 -ThNpxState = 0x85 -ThWaitIrql = 0x86 -ThWaitMode = 0x87 -ThWaitStatus = 0x88 -ThWaitBlockList = 0x90 -ThGateObject = 0x90 -ThWaitListEntry = 0xa0 -ThSwapListEntry = 0xa0 -ThQueue = 0xb0 -ThWaitTime = 0xb8 -ThCombinedApcDisable = 0xbc -ThKernelApcDisable = 0xbc -ThSpecialApcDisable = 0xbe -ThTeb = 0xc0 -ThTimer = 0xc8 -ThThreadFlags = 0xf0 -ThServiceTable = 0x1e8 -ThWaitBlock = 0x108 -ThResourceIndex = 0x14f -ThQueueListEntry = 0x1c8 -ThTrapFrame = 0x1d8 -ThCallbackStack = 0x1e0 -ThApcStateIndex = 0x1f0 -ThIdealProcessor = 0x1f1 -ThBasePriority = 0x1f5 -ThPriorityDecrement = 0x1f6 -ThAdjustReason = 0x62 -ThAdjustIncrement = 0x63 -ThPreviousMode = 0x137 -ThSaturation = 0x1f7 -ThFreezeCount = 0x237 -ThUserAffinity = 0x1f8 -ThProcess = 0x200 -ThAffinity = 0x208 -ThUserIdealProcessor = 0x239 -ThApcStatePointer = 0x210 -ThSavedApcState = 0x220 -ThWaitReason = 0x9a -ThSuspendCount = 0x238 -ThWin32Thread = 0x250 -ThStackBase = 0x258 -ThSuspendApc = 0x260 -ThPowerState = 0x28f -ThKernelTime = 0x264 -ThLegoData = 0x288 -ThLargeStack = 0x167 -ThUserTime = 0x290 -ThSuspendSemaphore = 0x2b8 -ThSListFaultCount = 0x2cc -ThThreadListEntry = 0x2d8 -ThMutantListHead = 0x18 -ThSListFaultAddress = 0x2e8 -KernelThreadObjectLength = 0x2f0 -ExecutiveThreadObjectLength = 0x3f8 - -/* KTIMER */ -TiType = 0x0 -TiSize = 0x2 -TiInserted = 0x3 -TiSignalState = 0x4 -TiDueTime = 0x18 -TiTimerListEntry = 0x20 -TiDpc = 0x30 -TiPeriod = 0x3c -TimerObjectLength = 0x40 - -/* TIME */ - -/* KUSER_SHARED_DATA */ -UsTickCountMultiplier = 0x4 -UsInterruptTime = 0x8 -UsSystemTime = 0x14 -UsTimeZoneBias = 0x20 -UsImageNumberLow = 0x2c -UsImageNumberHigh = 0x2e -UsNtSystemRoot = 0x30 -UsMaxStackTraceDepth = 0x238 -UsCryptoExponent = 0x23c -UsTimeZoneId = 0x240 -UsLargePageMinimum = 0x244 -UsReserved2 = 0x248 -UsNtProductType = 0x264 -UsProductTypeIsValid = 0x268 -UsNtMajorVersion = 0x26c -UsNtMinorVersion = 0x270 -UsProcessorFeatures = 0x274 -UsReserved1 = 0x2b4 -UsReserved3 = 0x2b8 -UsTimeSlip = 0x2bc -UsAlternativeArchitecture = 0x2c0 -UsSystemExpirationDate = 0x2c8 -UsSuiteMask = 0x2d0 -UsKdDebuggerEnabled = 0x2d4 -UsActiveConsoleId = 0x2d8 -UsDismountCount = 0x2dc -UsComPlusPackage = 0x2e0 -UsLastSystemRITEventTickCount = 0x2e4 -UsNumberOfPhysicalPages = 0x2e8 -UsSafeBootMode = 0x2ec -UsTestRetInstruction = 0x2f8 -UsSystemCall = 0x300 -UsSystemCallReturn = 0x304 -UsSystemCallPad = 0x308 -UsTickCount = 0x320 -UsTickCountQuad = 0x320 -UsWow64SharedInformation = 0x340 - -/* KWAIT_BLOCK */ -WbWaitListEntry = 0x0 -WbThread = 0x10 -WbObject = 0x18 -WbNextWaitBlock = 0x20 -WbWaitKey = 0x28 -WbWaitType = 0x2a - -/* CR0 flags */ -CR0_PE = 0x1 -CR0_MP = 0x2 -CR0_EM = 0x4 -CR0_TS = 0x8 -CR0_ET = 0x10 -CR0_NE = 0x20 -CR0_WP = 0x10000 -CR0_AM = 0x40000 -CR0_NW = 0x20000000 -CR0_CD = 0x40000000 -CR0_PG = 0x80000000 - -/* CR4 flags */ -CR4_VME = 0x1 -CR4_PVI = 0x2 -CR4_TSD = 0x4 -CR4_DE = 0x8 -CR4_PSE = 0x10 -CR4_PAE = 0x20 -CR4_MCE = 0x40 -CR4_PGE = 0x80 -CR4_FXSR = 0x200 -CR4_XMMEXCPT = 0x400 -CR4_CHANNELS = 0x800 - -/* KeFeatureBits flags */ -KF_RDTSC = 0x2 -KF_CR4 = 0x4 -KF_GLOBAL_PAGE = 0x10 -KF_LARGE_PAGE = 0x20 -KF_CMPXCHG8B = 0x80 -KF_FAST_SYSCALL = 0x1000 - -/* Machine type definitions */ -MACHINE_TYPE_ISA = 0x0 -MACHINE_TYPE_EISA = 0x1 -MACHINE_TYPE_MCA = 0x2 - -/* EFLAGS */ -EFLAGS_TF_MASK = 0x100 -EFLAGS_TF_SHIFT = 0x8 -EFLAGS_IF_MASK = 0x200 -EFLAGS_IF_SHIFT = 0x9 -EFLAGS_ID_MASK = 0x200000 - -/* Hypervisor Enlightenment Definitions */ - -/* KDGT selectors */ -KGDT64_NULL = 0x0 -KGDT64_R0_CODE = 0x10 -KGDT64_R0_DATA = 0x18 -KGDT64_R3_CMCODE = 0x20 -KGDT64_R3_DATA = 0x28 -KGDT64_R3_CODE = 0x30 -KGDT64_SYS_TSS = 0x40 -KGDT64_R3_CMTEB = 0x50 - -/* Machine Specific Register Numbers */ -MSR_EFER = 0xc0000080 -MSR_STAR = 0xc0000081 -MSR_LSTAR = 0xc0000082 -MSR_CSTAR = 0xc0000083 -MSR_SYSCALL_MASK = 0xc0000084 -MSR_FS_BASE = 0xc0000100 -MSR_GS_BASE = 0xc0000101 -MSR_GS_SWAP = 0xc0000102 -MSR_MCG_STATUS = 0x17a -MSR_AMD_ACCESS = 0x9c5a203a - -/* Flags for MSR_EFER */ -MSR_LMA = 0x400 -MSR_LME = 0x100 -MSR_SCE = 0x1 -MSR_NXE = 0x800 -MSR_PAT = 0x277 -MSR_DEGUG_CTL = 0x1d9 -MSR_LAST_BRANCH_FROM = 0x1db -MSR_LAST_BRANCH_TO = 0x1dc -MSR_LAST_EXCEPTION_FROM = 0x1dd -MSR_LAST_EXCEPTION_TO = 0x1de - -/* Flags for MSR_DEGUG_CTL */ - -/* Fatal exception codes */ -EXCEPTION_DIVIDED_BY_ZERO = 0x0 -EXCEPTION_DEBUG = 0x1 -EXCEPTION_NMI = 0x2 -EXCEPTION_INT3 = 0x3 -EXCEPTION_BOUND_CHECK = 0x5 -EXCEPTION_INVALID_OPCODE = 0x6 -EXCEPTION_NPX_NOT_AVAILABLE = 0x7 -EXCEPTION_DOUBLE_FAULT = 0x8 -EXCEPTION_NPX_OVERRUN = 0x9 -EXCEPTION_INVALID_TSS = 0xa -EXCEPTION_SEGMENT_NOT_PRESENT = 0xb -EXCEPTION_STACK_FAULT = 0xc -EXCEPTION_GP_FAULT = 0xd -EXCEPTION_RESERVED_TRAP = 0xf -EXCEPTION_NPX_ERROR = 0x10 -EXCEPTION_ALIGNMENT_CHECK = 0x11 - -/* Argument Home Address */ -P1Home = 0x0 -P2Home = 0x0 -P3Home = 0x0 -P4Home = 0x0 - -/* CONTEXT */ -CONTEXT_P1Home = 0x0 -CONTEXT_P2Home = 0x8 -CONTEXT_P3Home = 0x10 -CONTEXT_P4Home = 0x18 -CONTEXT_P5Home = 0x20 -CONTEXT_P6Home = 0x28 -CONTEXT_ContextFlags = 0x30 -CONTEXT_MxCsr = 0x34 -CONTEXT_SegCs = 0x38 -CONTEXT_SegDs = 0x3a -CONTEXT_SegEs = 0x3c -CONTEXT_SegFs = 0x3e -CONTEXT_SegGs = 0x40 -CONTEXT_SegSs = 0x42 -CONTEXT_EFlags = 0x44 -CONTEXT_Dr0 = 0x48 -CONTEXT_Dr1 = 0x50 -CONTEXT_Dr2 = 0x58 -CONTEXT_Dr3 = 0x60 -CONTEXT_Dr6 = 0x68 -CONTEXT_Dr7 = 0x70 -CONTEXT_Rax = 0x78 -CONTEXT_Rcx = 0x80 -CONTEXT_Rdx = 0x88 -CONTEXT_Rbx = 0x90 -CONTEXT_Rsp = 0x98 -CONTEXT_Rbp = 0xa0 -CONTEXT_Rsi = 0xa8 -CONTEXT_Rdi = 0xb0 -CONTEXT_R8 = 0xb8 -CONTEXT_R9 = 0xc0 -CONTEXT_R10 = 0xc8 -CONTEXT_R11 = 0xd0 -CONTEXT_R12 = 0xd8 -CONTEXT_R13 = 0xe0 -CONTEXT_R14 = 0xe8 -CONTEXT_R15 = 0xf0 -CONTEXT_Rip = 0xf8 -CONTEXT_FltSave = 0x100 -CONTEXT_Xmm0 = 0x1a0 -CONTEXT_Xmm1 = 0x1b0 -CONTEXT_Xmm2 = 0x1c0 -CONTEXT_Xmm3 = 0x1d0 -CONTEXT_Xmm4 = 0x1e0 -CONTEXT_Xmm5 = 0x1f0 -CONTEXT_Xmm6 = 0x200 -CONTEXT_Xmm7 = 0x210 -CONTEXT_Xmm8 = 0x220 -CONTEXT_Xmm9 = 0x230 -CONTEXT_Xmm10 = 0x240 -CONTEXT_Xmm11 = 0x250 -CONTEXT_Xmm12 = 0x260 -CONTEXT_Xmm13 = 0x270 -CONTEXT_Xmm14 = 0x280 -CONTEXT_Xmm15 = 0x290 -CONTEXT_DebugControl = 0x4a8 -CONTEXT_LastBranchToRip = 0x4b0 -CONTEXT_LastBranchFromRip = 0x4b8 -CONTEXT_LastExceptionToRip = 0x4c0 -CONTEXT_LastExceptionFromRip = 0x4c8 -CONTEXT_VectorControl = 0x4a0 -CONTEXT_VectorRegister = 0x300 -CONTEXT_FRAME_LENGTH = 0x4d0 - -/* DISPATCHER_CONTEXT */ -DcControlPc = 0x0 -DcImageBase = 0x8 -DcFunctionEntry = 0x10 -DcEstablisherFrame = 0x18 -DcTargetIp = 0x20 -DcContextRecord = 0x28 -DcLanguageHandler = 0x30 -DcHandlerData = 0x38 -DcHistoryTable = 0x40 -DcScopeIndex = 0x48 - -/* KEXCEPTION_FRAME */ -KEXCEPTION_FRAME_P1Home = 0x0 -KEXCEPTION_FRAME_P2Home = 0x8 -KEXCEPTION_FRAME_P3Home = 0x10 -KEXCEPTION_FRAME_P4Home = 0x18 -KEXCEPTION_FRAME_P5 = 0x20 -KEXCEPTION_FRAME_Xmm6 = 0x30 -KEXCEPTION_FRAME_Xmm7 = 0x40 -KEXCEPTION_FRAME_Xmm8 = 0x50 -KEXCEPTION_FRAME_Xmm9 = 0x60 -KEXCEPTION_FRAME_Xmm10 = 0x70 -KEXCEPTION_FRAME_Xmm11 = 0x80 -KEXCEPTION_FRAME_Xmm12 = 0x90 -KEXCEPTION_FRAME_Xmm13 = 0xa0 -KEXCEPTION_FRAME_Xmm14 = 0xb0 -KEXCEPTION_FRAME_Xmm15 = 0xc0 -KEXCEPTION_FRAME_MxCsr = 0xf0 -KEXCEPTION_FRAME_Rbp = 0xf8 -KEXCEPTION_FRAME_Rbx = 0x100 -KEXCEPTION_FRAME_Rdi = 0x108 -KEXCEPTION_FRAME_Rsi = 0x110 -KEXCEPTION_FRAME_R12 = 0x118 -KEXCEPTION_FRAME_R13 = 0x120 -KEXCEPTION_FRAME_R14 = 0x128 -KEXCEPTION_FRAME_R15 = 0x130 -KEXCEPTION_FRAME_Return = 0x138 -KEXCEPTION_FRAME_InitialStack = 0x28 -KEXCEPTION_FRAME_TrapFrame = 0xd0 -KEXCEPTION_FRAME_CallbackStack = 0xd8 -KEXCEPTION_FRAME_OutputBuffer = 0xe0 -KEXCEPTION_FRAME_OutputLength = 0xe8 -KEXCEPTION_FRAME_LENGTH = 0x140 - -/* JUMP_BUFFER */ -JbFrame = 0x0 -JbRbx = 0x8 -JbRsp = 0x10 -JbRbp = 0x18 -JbRsi = 0x20 -JbRdi = 0x28 -JbR12 = 0x30 -JbR13 = 0x38 -JbR14 = 0x40 -JbR15 = 0x48 -JbRip = 0x50 -JbXmm6 = 0x60 -JbXmm7 = 0x70 -JbXmm8 = 0x80 -JbXmm9 = 0x90 -JbXmm10 = 0xa0 -JbXmm11 = 0xb0 -JbXmm12 = 0xc0 -JbXmm13 = 0xd0 -JbXmm14 = 0xe0 -JbXmm15 = 0xf0 - -/* KGDTENTRY64 */ -KgdtBaseLow = 0x2 -KgdtBaseMiddle = 0x4 -KgdtBaseHigh = 0x7 -KgdtBaseUpper = 0x8 -KgdtLimitHigh = 0x6 -KgdtLimitLow = 0x0 - -/* KPRCB */ -PbMxCsr = 0x0 -PbNumber = 0x4 -PbInterruptRequest = 0x6 -PbIdleHalt = 0x7 -PbCurrentThread = 0x8 -PbNextThread = 0x10 -PbIdleThread = 0x18 -PbNestingLevel = 0x5 -PbRspBase = 0x28 -PbPrcbLock = 0x30 -PbSetMember = 0x38 -PbProcessorState = 0x40 -PbCpuType = 0x5f0 -PbCpuID = 0x5f1 -PbCpuStep = 0x5f2 -PbHalReserved = 0x5f8 -PbMinorVersion = 0x638 -PbMajorVersion = 0x63a -PbBuildType = 0x63c -PbCpuVendor = 0x63d -PbApicMask = 0x640 -PbCFlushSize = 0x644 -PbAcpiReserved = 0x648 -PbInitialApicId = 0x63e -PbLockQueue = 0x670 -PbPPLookasideList = 0x880 -PbPPNPagedLookasideList = 0x980 -PbPPPagedLookasideList = 0xb80 -PbPacketBarrier = 0xd80 -PbDeferredReadyListHead = 0xd88 -PbLookasideIrpFloat = 0xdc4 -PbTargetSet = 0xe00 -PbIpiFrozen = 0xe08 -PbRequestMailbox = 0xe80 -PbSenderSummary = 0x2680 -PbDpcStack = 0x2740 -PbMaximumDpcQueueDepth = 0x2750 -PbDpcRequestRate = 0x2754 -PbMinimumDpcRate = 0x2758 -PbDpcInterruptRequested = 0x275c -PbDpcThreadRequested = 0x275d -PbDpcRoutineActive = 0x275e -PbDpcThreadActive = 0x275f -PbTimerHand = 0x2760 -PbTimerRequest = 0x2768 -PbTickOffset = 0x2770 -PbMasterOffset = 0x2774 -PbDpcLastCount = 0x2778 -PbQuantumEnd = 0x277d -PbDpcSetEventRequest = 0x2780 -PbIdleSchedule = 0x277f -PbReadySummary = 0x2818 -PbDispatcherReadyListHead = 0x2820 -PbInterruptCount = 0x2a20 -PbKernelTime = 0x2a24 -PbUserTime = 0x2a28 -PbDpcTime = 0x2a2c -PbInterruptTime = 0x2a30 -PbAdjustDpcThreshold = 0x2a34 -PbSkipTick = 0x2a38 -PbPollSlot = 0x2a3a -PbParentNode = 0x2a48 -PbMultiThreadProcessorSet = 0x2a50 -PbMultiThreadSetMaster = 0x2a58 -PbPageColor = 0x2a6c -PbNodeColor = 0x2a70 -PbNodeShiftedColor = 0x2a74 -PbSecondaryColorMask = 0x2a78 -PbSleeping = 0x2a60 -PbVendorString = 0x2abc -PbPowerState = 0x2ad8 -ProcessorBlockLength = 0x2c88 - -/* KPCR */ -PcUserRsp = 0x10 -PcSelf = 0x18 -PcCurrentPrcb = 0x20 -PcLockArray = 0x28 -PcIrql = 0x50 -PcStallScaleFactor = 0x64 -PcHalReserved = 0xc0 - -/* KPROCESSOR_STATE */ -PsSpecialRegisters = 0x0 -PsCr0 = 0x0 -PsCr2 = 0x8 -PsCr3 = 0x10 -PsCr4 = 0x18 -PsKernelDr0 = 0x20 -PsKernelDr1 = 0x28 -PsKernelDr2 = 0x30 -PsKernelDr3 = 0x38 -PsKernelDr6 = 0x40 -PsKernelDr7 = 0x48 -PsGdtr = 0x50 -PsIdtr = 0x60 -PsTr = 0x70 -PsLdtr = 0x72 -PsMxCsr = 0x74 -PsContextFrame = 0xe0 -PsDebugControl = 0x78 -PsLastBranchToRip = 0x80 -PsLastBranchFromRip = 0x88 -PsLastExceptionToRip = 0x90 -PsLastExceptionFromRip = 0x98 -PsCr8 = 0xa0 -ProcessorStateLength = 0x5b0 - -/* KSTART_FRAME */ -SfP1Home = 0x0 -SfP2Home = 0x8 -SfP3Home = 0x10 -SfP4Home = 0x18 -SfReturn = 0x28 -KSTART_FRAME_LENGTH = 0x30 - -/* KSPECIAL_REGISTERS */ -SrKernelDr0 = 0x20 -SrKernelDr1 = 0x28 -SrKernelDr2 = 0x30 -SrKernelDr3 = 0x38 -SrKernelDr6 = 0x40 -SrKernelDr7 = 0x48 -SrGdtr = 0x50 -SrIdtr = 0x60 -SrTr = 0x70 -SrMxCsr = 0x74 -SrMsrGsBase = 0xa8 -SrMsrGsSwap = 0xb0 -SrMsrStar = 0xb8 -SrMsrLStar = 0xc0 -SrMsrCStar = 0xc8 -SrMsrSyscallMask = 0xd0 - -/* KSYSTEM_TIME */ -StLowTime = 0x0 -StHigh1Time = 0x4 -StHigh2Time = 0x8 - -/* KSWITCH_FRAME */ -SwP5Home = 0x20 -SwApcBypass = 0x28 -SwRbp = 0x30 -SwReturn = 0x38 -SwitchFrameLength = 0x40 -KSWITCH_FRAME_LENGTH = 0x40 - -/* KTRAP_FRAME */ -KTRAP_FRAME_P1Home = 0x0 -KTRAP_FRAME_P2Home = 0x8 -KTRAP_FRAME_P3Home = 0x10 -KTRAP_FRAME_P4Home = 0x18 -KTRAP_FRAME_P5 = 0x20 -KTRAP_FRAME_PreviousMode = 0x28 -KTRAP_FRAME_PreviousIrql = 0x29 -KTRAP_FRAME_FaultIndicator = 0x2a -KTRAP_FRAME_ExceptionActive = 0x2b -KTRAP_FRAME_MxCsr = 0x2c -KTRAP_FRAME_Rax = 0x30 -KTRAP_FRAME_Rcx = 0x38 -KTRAP_FRAME_Rdx = 0x40 -KTRAP_FRAME_R8 = 0x48 -KTRAP_FRAME_R9 = 0x50 -KTRAP_FRAME_R10 = 0x58 -KTRAP_FRAME_R11 = 0x60 -KTRAP_FRAME_GsBase = 0x68 -KTRAP_FRAME_GsSwap = 0x68 -KTRAP_FRAME_Xmm0 = 0x70 -KTRAP_FRAME_Xmm1 = 0x80 -KTRAP_FRAME_Xmm2 = 0x90 -KTRAP_FRAME_Xmm3 = 0xa0 -KTRAP_FRAME_Xmm4 = 0xb0 -KTRAP_FRAME_Xmm5 = 0xc0 -KTRAP_FRAME_FaultAddress = 0xd0 -KTRAP_FRAME_TimeStampCKCL = 0xd0 -KTRAP_FRAME_Dr0 = 0xd8 -KTRAP_FRAME_Dr1 = 0xe0 -KTRAP_FRAME_Dr2 = 0xe8 -KTRAP_FRAME_Dr3 = 0xf0 -KTRAP_FRAME_Dr6 = 0xf8 -KTRAP_FRAME_Dr7 = 0x100 -KTRAP_FRAME_DebugControl = 0x108 -KTRAP_FRAME_LastBranchToRip = 0x110 -KTRAP_FRAME_LastBranchFromRip = 0x118 -KTRAP_FRAME_LastExceptionToRip = 0x120 -KTRAP_FRAME_LastExceptionFromRip = 0x128 -KTRAP_FRAME_LastBranchControl = 0x108 -KTRAP_FRAME_LastBranchMSR = 0x110 -KTRAP_FRAME_SegDs = 0x130 -KTRAP_FRAME_SegEs = 0x132 -KTRAP_FRAME_SegFs = 0x134 -KTRAP_FRAME_SegGs = 0x136 -KTRAP_FRAME_TrapFrame = 0x138 -KTRAP_FRAME_Rbx = 0x140 -KTRAP_FRAME_Rdi = 0x148 -KTRAP_FRAME_Rsi = 0x150 -KTRAP_FRAME_Rbp = 0x158 -KTRAP_FRAME_ErrorCode = 0x160 -KTRAP_FRAME_TimeStampKlog = 0x160 -KTRAP_FRAME_Rip = 0x168 -KTRAP_FRAME_SegCs = 0x170 -KTRAP_FRAME_Logging = 0x173 -KTRAP_FRAME_EFlags = 0x178 -KTRAP_FRAME_Rsp = 0x180 -KTRAP_FRAME_SegSs = 0x188 -KTRAP_FRAME_CodePatchCycle = 0x18c -KTRAP_FRAME_LENGTH = 0x190 - -/* KTSS */ -TssRsp0 = 0x4 -TssRsp1 = 0xc -TssRsp2 = 0x14 -TssPanicStack = 0x24 -TssMcaStack = 0x2c -TssNmiStack = 0x34 -TssIoMapBase = 0x66 -TssLength = 0x68 - -/* EXCEPTION_RECORD */ -EXCEPTION_RECORD_ExceptionCode = 0x0 -EXCEPTION_RECORD_ExceptionFlags = 0x4 -EXCEPTION_RECORD_ExceptionRecord = 0x8 -EXCEPTION_RECORD_ExceptionAddress = 0x10 -EXCEPTION_RECORD_NumberParameters = 0x18 -EXCEPTION_RECORD_ExceptionInformation = 0x20 -KTHREAD_WAIT_IRQL = 0x86 From fd43db5558d8791e7cf4d42a29782dbdbb46ef5a Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Fri, 4 Jan 2013 01:06:51 +0000 Subject: [PATCH 57/96] [NTOSKRNL] Implement protection changing in NtAllocateVirtualMemory. Fixes "Assertion 'ChangeProtection == FALSE' failed" svn path=/trunk/; revision=58108 --- reactos/ntoskrnl/mm/ARM3/virtual.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/reactos/ntoskrnl/mm/ARM3/virtual.c b/reactos/ntoskrnl/mm/ARM3/virtual.c index 0504471cdf2..3d3b4a1f25d 100644 --- a/reactos/ntoskrnl/mm/ARM3/virtual.c +++ b/reactos/ntoskrnl/mm/ARM3/virtual.c @@ -4308,7 +4308,6 @@ NtAllocateVirtualMemory(IN HANDLE ProcessHandle, // There's a change in protection, remember this for later, but do // not yet handle it. // - DPRINT1("Protection change to: 0x%lx not implemented\n", Protect); ChangeProtection = TRUE; } @@ -4318,11 +4317,6 @@ NtAllocateVirtualMemory(IN HANDLE ProcessHandle, PointerPte++; } - // - // This path is not yet handled - // - ASSERT(ChangeProtection == FALSE); - // // Release the working set lock, unlock the address space, and detach from // the target process if it was not the current process. Also dereference the @@ -4332,6 +4326,26 @@ NtAllocateVirtualMemory(IN HANDLE ProcessHandle, Status = STATUS_SUCCESS; FailPath: MmUnlockAddressSpace(AddressSpace); + + // + // Check if we need to update the protection + // + if (ChangeProtection) + { + PVOID ProtectBaseAddress = (PVOID)StartingAddress; + SIZE_T ProtectSize = PRegionSize; + ULONG OldProtection; + + // + // Change the protection of the region + // + MiProtectVirtualMemory(Process, + &ProtectBaseAddress, + &ProtectSize, + Protect, + &OldProtection); + } + FailPathNoLock: if (Attached) KeUnstackDetachProcess(&ApcState); if (ProcessHandle != NtCurrentProcess()) ObDereferenceObject(Process); From a65f18771bd09fe386b331662b3d7cba33a8f39b Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Fri, 4 Jan 2013 11:02:43 +0000 Subject: [PATCH 58/96] [WIN32K] Implement DC_hSelectFont, use it from NtGdiSelectFont and GdiFlushUserBatch. Make sure plfnt is != NULL before dereferencing it in "TEXTOBJ_LockText" svn path=/trunk/; revision=58109 --- reactos/win32ss/gdi/ntgdi/dcobjs.c | 79 ++++++++++++++++++++++++++++ reactos/win32ss/gdi/ntgdi/font.c | 56 -------------------- reactos/win32ss/gdi/ntgdi/gdibatch.c | 38 +++++-------- reactos/win32ss/gdi/ntgdi/text.h | 7 ++- 4 files changed, 97 insertions(+), 83 deletions(-) diff --git a/reactos/win32ss/gdi/ntgdi/dcobjs.c b/reactos/win32ss/gdi/ntgdi/dcobjs.c index 85ef54bbcf9..be21fedb221 100644 --- a/reactos/win32ss/gdi/ntgdi/dcobjs.c +++ b/reactos/win32ss/gdi/ntgdi/dcobjs.c @@ -525,6 +525,85 @@ NtGdiSelectClipPath( return success; } +HFONT +NTAPI +DC_hSelectFont( + _In_ PDC pdc, + _In_ HFONT hlfntNew) +{ + PLFONT plfntNew; + HFONT hlfntOld; + + // Legacy crap that will die with font engine rewrite + if (!NT_SUCCESS(TextIntRealizeFont(hlfntNew, NULL))) + { + return NULL; + } + + /* Get the current selected font */ + hlfntOld = pdc->dclevel.plfnt->BaseObject.hHmgr; + + /* Check if a new font should be selected */ + if (hlfntNew != hlfntOld) + { + /* Lock the new font */ + plfntNew = LFONT_ShareLockFont(hlfntNew); + if (plfntNew) + { + /* Success, dereference the old font */ + LFONT_ShareUnlockFont(pdc->dclevel.plfnt); + + /* Select the new font */ + pdc->dclevel.plfnt = plfntNew; + pdc->pdcattr->hlfntNew = hlfntNew; + + /* Update dirty flags */ + pdc->pdcattr->ulDirty_ |= DIRTY_CHARSET; + pdc->pdcattr->ulDirty_ &= ~SLOW_WIDTHS; + } + else + { + /* Failed, restore old, return NULL */ + pdc->pdcattr->hlfntNew = hlfntOld; + hlfntOld = NULL; + } + } + + return hlfntOld; +} + +HFONT +APIENTRY +NtGdiSelectFont( + _In_ HDC hdc, + _In_ HFONT hfont) +{ + HFONT hfontOld; + PDC pdc; + + /* Check parameters */ + if ((hdc == NULL) || (hfont == NULL)) + { + return NULL; + } + + /* Lock the DC */ + pdc = DC_LockDc(hdc); + if (!pdc) + { + return NULL; + } + + /* Call the internal function */ + hfontOld = DC_hSelectFont(pdc, hfont); + + /* Unlock the DC */ + DC_UnlockDc(pdc); + + /* Return the previously selected font */ + return hfontOld; +} + HANDLE APIENTRY NtGdiGetDCObject(HDC hDC, INT ObjectType) diff --git a/reactos/win32ss/gdi/ntgdi/font.c b/reactos/win32ss/gdi/ntgdi/font.c index 3addda2b108..10bd73b1a8e 100644 --- a/reactos/win32ss/gdi/ntgdi/font.c +++ b/reactos/win32ss/gdi/ntgdi/font.c @@ -395,50 +395,6 @@ RealizeFontInit(HFONT hFont) return pTextObj; } -HFONT -FASTCALL -GreSelectFont( HDC hDC, HFONT hFont) -{ - PDC pdc; - PDC_ATTR pdcattr; - PTEXTOBJ pOrgFnt, pNewFnt = NULL; - HFONT hOrgFont = NULL; - - if (!hDC || !hFont) return NULL; - - pdc = DC_LockDc(hDC); - if (!pdc) - { - return NULL; - } - - if (NT_SUCCESS(TextIntRealizeFont((HFONT)hFont,NULL))) - { - /* LFONTOBJ use share and locking. */ - pNewFnt = TEXTOBJ_LockText(hFont); - pdcattr = pdc->pdcattr; - pOrgFnt = pdc->dclevel.plfnt; - if (pOrgFnt) - { - hOrgFont = pOrgFnt->BaseObject.hHmgr; - } - else - { - hOrgFont = pdcattr->hlfntNew; - } - if (pdc->dclevel.plfnt) LFONT_ShareUnlockFont(pdc->dclevel.plfnt); - if (pNewFnt) GDIOBJ_vReferenceObjectByPointer(&pNewFnt->BaseObject); - pdc->dclevel.plfnt = pNewFnt; - pdc->hlfntCur = hFont; - pdcattr->hlfntNew = hFont; - pdcattr->ulDirty_ |= DIRTY_CHARSET; - pdcattr->ulDirty_ &= ~SLOW_WIDTHS; - } - - if (pNewFnt) TEXTOBJ_UnlockText(pNewFnt); - DC_UnlockDc(pdc); - return hOrgFont; -} /** Functions ******************************************************************/ @@ -1122,17 +1078,5 @@ NtGdiHfontCreate( return hNewFont; } -/* - * @implemented - */ -HFONT -APIENTRY -NtGdiSelectFont( - IN HDC hDC, - IN HFONT hFont) -{ - return GreSelectFont(hDC, hFont); -} - /* EOF */ diff --git a/reactos/win32ss/gdi/ntgdi/gdibatch.c b/reactos/win32ss/gdi/ntgdi/gdibatch.c index f3f0a7f3d75..8602740318a 100644 --- a/reactos/win32ss/gdi/ntgdi/gdibatch.c +++ b/reactos/win32ss/gdi/ntgdi/gdibatch.c @@ -66,7 +66,6 @@ ULONG FASTCALL GdiFlushUserBatch(PDC dc, PGDIBATCHHDR pHdr) { - BOOL Hit = FALSE; ULONG Cmd = 0, Size = 0; PDC_ATTR pdcattr = NULL; @@ -82,27 +81,25 @@ GdiFlushUserBatch(PDC dc, PGDIBATCHHDR pHdr) } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { - Hit = TRUE; + DPRINT1("WARNING! GdiBatch Fault!\n"); + _SEH2_YIELD(return 0;) } _SEH2_END; - if (Hit) - { - DPRINT1("WARNING! GdiBatch Fault!\n"); - return 0; - } - - // FYI! The thread is approaching the end of sunset. switch(Cmd) { - case GdiBCPatBlt: // Highest pri first! + case GdiBCPatBlt: break; + case GdiBCPolyPatBlt: break; + case GdiBCTextOut: break; + case GdiBCExtTextOut: break; + case GdiBCSetBrushOrg: { PGDIBSSETBRHORG pgSBO; @@ -112,40 +109,31 @@ GdiFlushUserBatch(PDC dc, PGDIBATCHHDR pHdr) DC_vSetBrushOrigin(dc, pgSBO->ptlBrushOrigin.x, pgSBO->ptlBrushOrigin.y); break; } + case GdiBCExtSelClipRgn: break; + case GdiBCSelObj: { PGDIBSOBJECT pgO; - PTEXTOBJ pNewFnt = NULL; if (!dc) break; pgO = (PGDIBSOBJECT) pHdr; - if (NT_SUCCESS(TextIntRealizeFont((HFONT)pgO->hgdiobj,NULL))) - { - /* LFONTOBJ use share and locking. */ - pNewFnt = TEXTOBJ_LockText(pgO->hgdiobj); - - if (dc->dclevel.plfnt) LFONT_ShareUnlockFont(dc->dclevel.plfnt); - if (pNewFnt) GDIOBJ_vReferenceObjectByPointer(&pNewFnt->BaseObject); - dc->dclevel.plfnt = pNewFnt; - dc->hlfntCur = pgO->hgdiobj; - pdcattr->hlfntNew = pgO->hgdiobj; - pdcattr->ulDirty_ |= DIRTY_CHARSET; - pdcattr->ulDirty_ &= ~SLOW_WIDTHS; - } - if (pNewFnt) TEXTOBJ_UnlockText(pNewFnt); + DC_hSelectFont(dc, (HFONT)pgO->hgdiobj); break; } + case GdiBCDelRgn: DPRINT("Delete Region Object!\n"); + /* Fall through */ case GdiBCDelObj: { PGDIBSOBJECT pgO = (PGDIBSOBJECT) pHdr; GreDeleteObject( pgO->hgdiobj ); break; } + default: break; } diff --git a/reactos/win32ss/gdi/ntgdi/text.h b/reactos/win32ss/gdi/ntgdi/text.h index 20bfbbda0c3..2fd1bbe4f24 100644 --- a/reactos/win32ss/gdi/ntgdi/text.h +++ b/reactos/win32ss/gdi/ntgdi/text.h @@ -85,8 +85,11 @@ FORCEINLINE TEXTOBJ_LockText(HFONT hfont) { PLFONT plfnt = LFONT_ShareLockFont(hfont); - KeEnterCriticalRegion(); - ExAcquirePushLockExclusive(&plfnt->lock); + if (plfnt != 0) + { + KeEnterCriticalRegion(); + ExAcquirePushLockExclusive(&plfnt->lock); + } return plfnt; } From b70845423e53b3bceda10fc4dd43de606d21df19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Fri, 4 Jan 2013 11:47:19 +0000 Subject: [PATCH 59/96] while (TRUE); (when something is unimplemented) ---> ASSERT(FALSE); // while (TRUE); (unless we deal with a 'noreturn' function), and in some cases, return an adequate value. Part 1/2 svn path=/trunk/; revision=58110 --- reactos/dll/win32/kernel32/client/path.c | 3 +- reactos/dll/win32/kernel32/client/thread.c | 15 ++-- reactos/drivers/bus/pcix/device.c | 6 +- reactos/drivers/bus/pcix/enum.c | 25 +++---- reactos/drivers/bus/pcix/fdo.c | 26 +++---- reactos/drivers/bus/pcix/init.c | 4 +- reactos/drivers/bus/pcix/intrface/agpintrf.c | 3 +- reactos/drivers/bus/pcix/intrface/busintrf.c | 3 +- reactos/drivers/bus/pcix/intrface/cardbus.c | 17 ++--- reactos/drivers/bus/pcix/intrface/devhere.c | 3 +- reactos/drivers/bus/pcix/intrface/lddintrf.c | 3 +- reactos/drivers/bus/pcix/intrface/locintrf.c | 3 +- reactos/drivers/bus/pcix/intrface/pmeintf.c | 3 +- reactos/drivers/bus/pcix/intrface/routintf.c | 3 +- reactos/drivers/bus/pcix/pci/config.c | 2 +- reactos/drivers/bus/pcix/pci/ppbridge.c | 2 +- reactos/drivers/bus/pcix/pcivrify.c | 2 +- reactos/drivers/bus/pcix/pdo.c | 26 +++---- reactos/drivers/bus/pcix/power.c | 3 +- reactos/drivers/bus/pcix/utils.c | 5 +- .../drivers/storage/class/ramdisk/ramdisk.c | 69 +++++++++---------- reactos/drivers/usb/usbhub/fdo.c | 2 +- reactos/hal/halx86/acpi/halpnpdd.c | 2 +- reactos/hal/halx86/generic/bios.c | 2 + reactos/hal/halx86/generic/misc.c | 2 +- reactos/hal/halx86/generic/spinlock.c | 6 +- reactos/hal/halx86/legacy/bus/cmosbus.c | 4 +- reactos/hal/halx86/legacy/bus/pcibus.c | 9 +-- reactos/hal/halx86/legacy/halpnpdd.c | 2 +- reactos/ntoskrnl/io/pnpmgr/pnpmgr.c | 2 +- 30 files changed, 139 insertions(+), 118 deletions(-) diff --git a/reactos/dll/win32/kernel32/client/path.c b/reactos/dll/win32/kernel32/client/path.c index 48224db7a3a..2229d3ed835 100644 --- a/reactos/dll/win32/kernel32/client/path.c +++ b/reactos/dll/win32/kernel32/client/path.c @@ -237,7 +237,8 @@ BasepComputeProcessPath(IN PBASE_SEARCH_PATH_TYPE PathOrder, { /* This means someone added RTL_PERTHREAD_CURDIR */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); + // while (TRUE); } /* We do not. Do we have the LDR_ENTRY for the executable? */ diff --git a/reactos/dll/win32/kernel32/client/thread.c b/reactos/dll/win32/kernel32/client/thread.c index 404bd11d20e..c9d7f173978 100644 --- a/reactos/dll/win32/kernel32/client/thread.c +++ b/reactos/dll/win32/kernel32/client/thread.c @@ -241,7 +241,8 @@ CreateRemoteThread(IN HANDLE hProcess, DbgPrint("SXS: %s - Failing thread create because " "NtQueryInformationThread() failed with status %08lx\n", __FUNCTION__, Status); - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return NULL; } /* Allocate the Activation Context Stack */ @@ -252,7 +253,8 @@ CreateRemoteThread(IN HANDLE hProcess, DbgPrint("SXS: %s - Failing thread create because " "RtlAllocateActivationContextStack() failed with status %08lx\n", __FUNCTION__, Status); - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return NULL; } /* Save it */ @@ -274,7 +276,8 @@ CreateRemoteThread(IN HANDLE hProcess, DbgPrint("SXS: %s - Failing thread create because " "RtlQueryInformationActivationContext() failed with status %08lx\n", __FUNCTION__, Status); - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return NULL; } /* Does it need to be activated? */ @@ -291,7 +294,8 @@ CreateRemoteThread(IN HANDLE hProcess, DbgPrint("SXS: %s - Failing thread create because " "RtlActivateActivationContextEx() failed with status %08lx\n", __FUNCTION__, Status); - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return NULL; } } } @@ -367,7 +371,8 @@ ExitThread(IN DWORD uExitCode) /* We should never reach this place */ DPRINT1("It should not happen\n"); - while (TRUE); + ASSERT(FALSE); + while (TRUE); // 'noreturn' function. } /* diff --git a/reactos/drivers/bus/pcix/device.c b/reactos/drivers/bus/pcix/device.c index 360f5ceec5a..c8a1accdfcf 100644 --- a/reactos/drivers/bus/pcix/device.c +++ b/reactos/drivers/bus/pcix/device.c @@ -262,7 +262,7 @@ Device_GetAdditionalResourceDescriptors(IN PPCI_CONFIGURATOR_CONTEXT Context, { /* Not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -272,7 +272,7 @@ Device_ResetDevice(IN PPCI_PDO_EXTENSION PdoExtension, { /* Not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -282,7 +282,7 @@ Device_ChangeResourceSettings(IN PPCI_PDO_EXTENSION PdoExtension, { /* Not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } /* EOF */ diff --git a/reactos/drivers/bus/pcix/enum.c b/reactos/drivers/bus/pcix/enum.c index 537c78fb775..4fde88f0aa2 100644 --- a/reactos/drivers/bus/pcix/enum.c +++ b/reactos/drivers/bus/pcix/enum.c @@ -148,13 +148,13 @@ PciComputeNewCurrentSettings(IN PPCI_PDO_EXTENSION PdoExtension, /* Not used in the driver yet */ case 1: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; /* Not used in the driver yet */ case 2: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; /* A drain request */ @@ -541,7 +541,8 @@ PciQueryEjectionRelations(IN PPCI_PDO_EXTENSION PdoExtension, { /* Not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return STATUS_NOT_IMPLEMENTED; } NTSTATUS @@ -599,7 +600,7 @@ PciQueryRequirements(IN PPCI_PDO_EXTENSION PdoExtension, { /* Have not tested this on eVb's machine yet */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } /* Check if the requirements are actually the zero list */ @@ -1522,7 +1523,7 @@ PciProcessBus(IN PPCI_FDO_EXTENSION DeviceExtension) { /* Not really handling this year */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); /* Check for PCI bridges with the ISA bit set, or required */ if ((PdoExtension) && @@ -1532,7 +1533,7 @@ PciProcessBus(IN PPCI_FDO_EXTENSION DeviceExtension) { /* We'll need to do some legacy support */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } } else @@ -1547,7 +1548,7 @@ PciProcessBus(IN PPCI_FDO_EXTENSION DeviceExtension) { /* Again, some more legacy support we'll have to do */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } } } @@ -1557,7 +1558,7 @@ PciProcessBus(IN PPCI_FDO_EXTENSION DeviceExtension) { /* Not yet supported */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } } @@ -1606,7 +1607,7 @@ PciScanBus(IN PPCI_FDO_EXTENSION DeviceExtension) { DPRINT1("PCI: Bus numbers have been changed! Restoring originals.\n"); UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } } @@ -1668,7 +1669,7 @@ PciScanBus(IN PPCI_FDO_EXTENSION DeviceExtension) { /* Check if this PCI device is the ACPI Watchdog Device... */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } /* Check for non-simple devices */ @@ -1734,7 +1735,7 @@ PciScanBus(IN PPCI_FDO_EXTENSION DeviceExtension) { /* Rescan scenarios are not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } /* Bus processing will need to happen */ @@ -2197,7 +2198,7 @@ PciSetResources(IN PPCI_PDO_EXTENSION PdoExtension, { /* Don't have hotplug devices to test with yet, QEMU 0.14 should */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } /* Locate the correct resource configurator for this type of device */ diff --git a/reactos/drivers/bus/pcix/fdo.c b/reactos/drivers/bus/pcix/fdo.c index 785dfca3c52..ed80518b793 100644 --- a/reactos/drivers/bus/pcix/fdo.c +++ b/reactos/drivers/bus/pcix/fdo.c @@ -94,7 +94,7 @@ PciFdoIrpStartDevice(IN PIRP Irp, /* These resources would only be for non-root FDOs, unhandled for now */ ASSERT(Resources->Count == 1); UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } /* Initialize the arbiter for this FDO */ @@ -112,7 +112,7 @@ PciFdoIrpStartDevice(IN PIRP Irp, /* Unhandled for now */ ASSERT(Resources->Count == 1); UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } /* Commit the transition to the started state */ @@ -137,7 +137,7 @@ PciFdoIrpRemoveDevice(IN PIRP Irp, IN PPCI_FDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -148,7 +148,7 @@ PciFdoIrpCancelRemoveDevice(IN PIRP Irp, IN PPCI_FDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -159,7 +159,7 @@ PciFdoIrpStopDevice(IN PIRP Irp, IN PPCI_FDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -170,7 +170,7 @@ PciFdoIrpQueryStopDevice(IN PIRP Irp, IN PPCI_FDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -181,7 +181,7 @@ PciFdoIrpCancelStopDevice(IN PIRP Irp, IN PPCI_FDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -319,7 +319,7 @@ PciFdoIrpDeviceUsageNotification(IN PIRP Irp, IN PPCI_FDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -330,7 +330,7 @@ PciFdoIrpSurpriseRemoval(IN PIRP Irp, IN PPCI_FDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -341,7 +341,7 @@ PciFdoIrpQueryLegacyBusInformation(IN PIRP Irp, IN PPCI_FDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -393,7 +393,7 @@ PciGetHotPlugParameters(IN PPCI_FDO_EXTENSION FdoExtension) /* HotPlug PCI Support not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } while (FALSE); /* Free the buffer and return */ @@ -545,7 +545,7 @@ PciAddDevice(IN PDRIVER_OBJECT DriverObject, { /* Root PDO in ReactOS does not assign boot resources */ UNIMPLEMENTED; -// while (TRUE); + ASSERT(FALSE); // while (TRUE); DPRINT1("Encountered during setup\n"); Descriptor = NULL; } @@ -554,7 +554,7 @@ PciAddDevice(IN PDRIVER_OBJECT DriverObject, { /* Root PDO in ReactOS does not assign boot resources */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } else { diff --git a/reactos/drivers/bus/pcix/init.c b/reactos/drivers/bus/pcix/init.c index 45e02ae011f..36d1d930ee4 100644 --- a/reactos/drivers/bus/pcix/init.c +++ b/reactos/drivers/bus/pcix/init.c @@ -679,7 +679,7 @@ PciGetDebugPorts(IN HANDLE DebugKey) { /* This function is not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_SUCCESS; } @@ -690,7 +690,7 @@ PciDriverUnload(IN PDRIVER_OBJECT DriverObject) /* This function is not yet implemented */ DPRINT1("PCI: Unload\n"); UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } NTSTATUS diff --git a/reactos/drivers/bus/pcix/intrface/agpintrf.c b/reactos/drivers/bus/pcix/intrface/agpintrf.c index a860ad15bfa..e9d285dc921 100644 --- a/reactos/drivers/bus/pcix/intrface/agpintrf.c +++ b/reactos/drivers/bus/pcix/intrface/agpintrf.c @@ -59,7 +59,8 @@ agpintrf_Constructor(IN PVOID DeviceExtension, /* Not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return STATUS_NOT_IMPLEMENTED; } /* EOF */ diff --git a/reactos/drivers/bus/pcix/intrface/busintrf.c b/reactos/drivers/bus/pcix/intrface/busintrf.c index 08681cb1be7..a6dc65d561f 100644 --- a/reactos/drivers/bus/pcix/intrface/busintrf.c +++ b/reactos/drivers/bus/pcix/intrface/busintrf.c @@ -49,7 +49,8 @@ busintrf_Constructor(IN PVOID DeviceExtension, { /* Not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return STATUS_NOT_IMPLEMENTED; } /* EOF */ diff --git a/reactos/drivers/bus/pcix/intrface/cardbus.c b/reactos/drivers/bus/pcix/intrface/cardbus.c index e51fb12f308..be6ce008cdf 100644 --- a/reactos/drivers/bus/pcix/intrface/cardbus.c +++ b/reactos/drivers/bus/pcix/intrface/cardbus.c @@ -34,7 +34,7 @@ NTAPI Cardbus_SaveCurrentSettings(IN PPCI_CONFIGURATOR_CONTEXT Context) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -42,7 +42,7 @@ NTAPI Cardbus_SaveLimits(IN PPCI_CONFIGURATOR_CONTEXT Context) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -50,7 +50,7 @@ NTAPI Cardbus_MassageHeaderForLimitsDetermination(IN PPCI_CONFIGURATOR_CONTEXT Context) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -58,7 +58,7 @@ NTAPI Cardbus_RestoreCurrent(IN PPCI_CONFIGURATOR_CONTEXT Context) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -68,7 +68,7 @@ Cardbus_GetAdditionalResourceDescriptors(IN PPCI_CONFIGURATOR_CONTEXT Context, IN PIO_RESOURCE_DESCRIPTOR IoDescriptor) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -77,7 +77,7 @@ Cardbus_ResetDevice(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -86,7 +86,7 @@ Cardbus_ChangeResourceSettings(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } NTSTATUS @@ -109,7 +109,8 @@ pcicbintrf_Constructor(IN PVOID DeviceExtension, { /* Not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return STATUS_NOT_IMPLEMENTED; } /* EOF */ diff --git a/reactos/drivers/bus/pcix/intrface/devhere.c b/reactos/drivers/bus/pcix/intrface/devhere.c index 919ff30dc56..b2d4548dd21 100644 --- a/reactos/drivers/bus/pcix/intrface/devhere.c +++ b/reactos/drivers/bus/pcix/intrface/devhere.c @@ -51,7 +51,8 @@ devpresent_Constructor(IN PVOID DeviceExtension, /* Not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return STATUS_NOT_IMPLEMENTED; } /* EOF */ diff --git a/reactos/drivers/bus/pcix/intrface/lddintrf.c b/reactos/drivers/bus/pcix/intrface/lddintrf.c index 6665427f1fd..512390e66f1 100644 --- a/reactos/drivers/bus/pcix/intrface/lddintrf.c +++ b/reactos/drivers/bus/pcix/intrface/lddintrf.c @@ -49,7 +49,8 @@ lddintrf_Constructor(IN PVOID DeviceExtension, { /* Not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return STATUS_NOT_IMPLEMENTED; } /* EOF */ diff --git a/reactos/drivers/bus/pcix/intrface/locintrf.c b/reactos/drivers/bus/pcix/intrface/locintrf.c index f2ca1797ba7..814d69e808e 100644 --- a/reactos/drivers/bus/pcix/intrface/locintrf.c +++ b/reactos/drivers/bus/pcix/intrface/locintrf.c @@ -49,7 +49,8 @@ locintrf_Constructor(IN PVOID DeviceExtension, { /* Not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return STATUS_NOT_IMPLEMENTED; } /* EOF */ diff --git a/reactos/drivers/bus/pcix/intrface/pmeintf.c b/reactos/drivers/bus/pcix/intrface/pmeintf.c index 5b59e9af68b..0debb22eba4 100644 --- a/reactos/drivers/bus/pcix/intrface/pmeintf.c +++ b/reactos/drivers/bus/pcix/intrface/pmeintf.c @@ -52,7 +52,8 @@ PciPmeInterfaceConstructor(IN PVOID DeviceExtension, /* Not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return STATUS_NOT_IMPLEMENTED; } /* EOF */ diff --git a/reactos/drivers/bus/pcix/intrface/routintf.c b/reactos/drivers/bus/pcix/intrface/routintf.c index d7b7b458b4d..f7e53711be6 100644 --- a/reactos/drivers/bus/pcix/intrface/routintf.c +++ b/reactos/drivers/bus/pcix/intrface/routintf.c @@ -54,7 +54,8 @@ routeintrf_Constructor(IN PVOID DeviceExtension, /* Not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return STATUS_NOT_IMPLEMENTED; } NTSTATUS diff --git a/reactos/drivers/bus/pcix/pci/config.c b/reactos/drivers/bus/pcix/pci/config.c index 453656d2fde..c4fc3c71b6d 100644 --- a/reactos/drivers/bus/pcix/pci/config.c +++ b/reactos/drivers/bus/pcix/pci/config.c @@ -66,7 +66,7 @@ PciReadWriteConfigSpace(IN PPCI_FDO_EXTENSION DeviceExtension, { /* Currently this driver only supports the legacy HAL interface */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } else { diff --git a/reactos/drivers/bus/pcix/pci/ppbridge.c b/reactos/drivers/bus/pcix/pci/ppbridge.c index 57b660d2134..7881f1dc448 100644 --- a/reactos/drivers/bus/pcix/pci/ppbridge.c +++ b/reactos/drivers/bus/pcix/pci/ppbridge.c @@ -672,7 +672,7 @@ PPBridge_ResetDevice(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID diff --git a/reactos/drivers/bus/pcix/pcivrify.c b/reactos/drivers/bus/pcix/pcivrify.c index f51f02dba89..1d04ee73dd9 100644 --- a/reactos/drivers/bus/pcix/pcivrify.c +++ b/reactos/drivers/bus/pcix/pcivrify.c @@ -80,7 +80,7 @@ PciVerifierProfileChangeCallback(IN PVOID NotificationStructure, { /* This function is not yet implemented */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_SUCCESS; } diff --git a/reactos/drivers/bus/pcix/pdo.c b/reactos/drivers/bus/pcix/pdo.c index 4bbc524dec0..7a647d6eca8 100644 --- a/reactos/drivers/bus/pcix/pdo.c +++ b/reactos/drivers/bus/pcix/pdo.c @@ -80,7 +80,7 @@ PciPdoWaitWake(IN PIRP Irp, IN PPCI_PDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -101,7 +101,7 @@ PciPdoIrpQueryPower(IN PIRP Irp, IN PPCI_PDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -219,7 +219,7 @@ PciPdoIrpRemoveDevice(IN PIRP Irp, IN PPCI_PDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -230,7 +230,7 @@ PciPdoIrpCancelRemoveDevice(IN PIRP Irp, IN PPCI_PDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -241,7 +241,7 @@ PciPdoIrpStopDevice(IN PIRP Irp, IN PPCI_PDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -252,7 +252,7 @@ PciPdoIrpQueryStopDevice(IN PIRP Irp, IN PPCI_PDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -263,7 +263,7 @@ PciPdoIrpCancelStopDevice(IN PIRP Irp, IN PPCI_PDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -274,7 +274,7 @@ PciPdoIrpQueryInterface(IN PIRP Irp, IN PPCI_PDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -405,7 +405,7 @@ PciPdoIrpReadConfig(IN PIRP Irp, IN PPCI_PDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -416,7 +416,7 @@ PciPdoIrpWriteConfig(IN PIRP Irp, IN PPCI_PDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -437,7 +437,7 @@ PciPdoIrpDeviceUsageNotification(IN PIRP Irp, IN PPCI_PDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -448,7 +448,7 @@ PciPdoIrpSurpriseRemoval(IN PIRP Irp, IN PPCI_PDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } @@ -459,7 +459,7 @@ PciPdoIrpQueryLegacyBusInformation(IN PIRP Irp, IN PPCI_PDO_EXTENSION DeviceExtension) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_NOT_SUPPORTED; } diff --git a/reactos/drivers/bus/pcix/power.c b/reactos/drivers/bus/pcix/power.c index d57c1b78398..d52aab00ae6 100644 --- a/reactos/drivers/bus/pcix/power.c +++ b/reactos/drivers/bus/pcix/power.c @@ -192,7 +192,8 @@ PciSetPowerManagedDevicePowerState(IN PPCI_PDO_EXTENSION DeviceExtension, { /* We would normally re-assign resources after powerup */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); + Status = STATUS_NOT_IMPLEMENTED; } } diff --git a/reactos/drivers/bus/pcix/utils.c b/reactos/drivers/bus/pcix/utils.c index 5948e8a5168..d7511f769cd 100644 --- a/reactos/drivers/bus/pcix/utils.c +++ b/reactos/drivers/bus/pcix/utils.c @@ -153,7 +153,7 @@ PciIsDatacenter(VOID) { /* This scenario shouldn't happen yet, since SetupDD isn't used */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } /* Return if this is Datacenter or not */ @@ -758,7 +758,8 @@ PciIsDeviceOnDebugPath(IN PPCI_PDO_EXTENSION DeviceExtension) /* eVb has not been able to test such devices yet */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return FALSE; } NTSTATUS diff --git a/reactos/drivers/storage/class/ramdisk/ramdisk.c b/reactos/drivers/storage/class/ramdisk/ramdisk.c index 42b94c9b0a0..06f6461b2a8 100644 --- a/reactos/drivers/storage/class/ramdisk/ramdisk.c +++ b/reactos/drivers/storage/class/ramdisk/ramdisk.c @@ -773,7 +773,7 @@ RamdiskCreateDiskDevice(IN PRAMDISK_BUS_EXTENSION DeviceExtension, FailCreate: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_SUCCESS; } @@ -1068,7 +1068,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject, DPRINT1("Get drive layout request\n"); UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IOCTL_DISK_GET_PARTITION_INFO: @@ -1080,7 +1080,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject, DPRINT1("Invalid request\n"); UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; } @@ -1097,7 +1097,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject, DPRINT1("Read/Write request\n"); UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; // @@ -1107,7 +1107,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject, DPRINT1("SCSI request\n"); UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; // @@ -1117,7 +1117,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject, DPRINT1("Flush request\n"); UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; // @@ -1127,7 +1127,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject, DPRINT1("Invalid request: %lx\n", IoStackLocation->MajorFunction); UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; } @@ -1481,8 +1481,7 @@ RamdiskDeviceControl(IN PDEVICE_OBJECT DeviceObject, // // We don't handle anything else yet // - ASSERT(FALSE); - while (TRUE); + ASSERT(FALSE); // while (TRUE); } } else @@ -1498,7 +1497,7 @@ RamdiskDeviceControl(IN PDEVICE_OBJECT DeviceObject, case IOCTL_CDROM_CHECK_VERIFY: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IOCTL_STORAGE_GET_MEDIA_TYPES: @@ -1664,67 +1663,67 @@ RamdiskDeviceControl(IN PDEVICE_OBJECT DeviceObject, case IOCTL_DISK_GET_DRIVE_LAYOUT: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IOCTL_DISK_GET_LENGTH_INFO: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IOCTL_DISK_IS_WRITABLE: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IOCTL_SCSI_MINIPORT: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IOCTL_STORAGE_QUERY_PROPERTY: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IOCTL_MOUNTDEV_QUERY_UNIQUE_ID: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IOCTL_MOUNTDEV_QUERY_STABLE_GUID: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IOCTL_VOLUME_SET_GPT_ATTRIBUTES: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IOCTL_VOLUME_GET_GPT_ATTRIBUTES: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IOCTL_VOLUME_OFFLINE: UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; default: @@ -1793,7 +1792,7 @@ RamdiskQueryDeviceRelations(IN DEVICE_RELATION_TYPE Type, // FIXME: TODO // UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } // @@ -1980,7 +1979,7 @@ RamdiskDeleteDiskDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_SUCCESS; } @@ -2148,37 +2147,37 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject, case IRP_MN_START_DEVICE: DPRINT1("PnP IRP: %lx\n", Minor); - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IRP_MN_QUERY_STOP_DEVICE: DPRINT1("PnP IRP: %lx\n", Minor); - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IRP_MN_CANCEL_STOP_DEVICE: DPRINT1("PnP IRP: %lx\n", Minor); - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IRP_MN_STOP_DEVICE: DPRINT1("PnP IRP: %lx\n", Minor); - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IRP_MN_QUERY_REMOVE_DEVICE: DPRINT1("PnP IRP: %lx\n", Minor); - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IRP_MN_CANCEL_REMOVE_DEVICE: DPRINT1("PnP IRP: %lx\n", Minor); - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IRP_MN_REMOVE_DEVICE: @@ -2213,7 +2212,7 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject, case IRP_MN_SURPRISE_REMOVAL: DPRINT1("PnP IRP: %lx\n", Minor); - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IRP_MN_QUERY_ID: @@ -2224,7 +2223,7 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject, if (DeviceExtension->Type == RamdiskDrive) { DPRINT1("PnP IRP: %lx\n", Minor); - while (TRUE); + ASSERT(FALSE); // while (TRUE); } break; @@ -2236,14 +2235,14 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject, if (DeviceExtension->Type == RamdiskDrive) { DPRINT1("PnP IRP: %lx\n", Minor); - while (TRUE); + ASSERT(FALSE); // while (TRUE); } break; case IRP_MN_EJECT: DPRINT1("PnP IRP: %lx\n", Minor); - while (TRUE); + ASSERT(FALSE); // while (TRUE); break; case IRP_MN_QUERY_DEVICE_TEXT: @@ -2254,7 +2253,7 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject, if (DeviceExtension->Type == RamdiskDrive) { DPRINT1("PnP IRP: %lx\n", Minor); - while (TRUE); + ASSERT(FALSE); // while (TRUE); } break; @@ -2278,7 +2277,7 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject, if (DeviceExtension->Type == RamdiskDrive) { DPRINT1("PnP IRP: %lx\n", Minor); - while (TRUE); + ASSERT(FALSE); // while (TRUE); } break; diff --git a/reactos/drivers/usb/usbhub/fdo.c b/reactos/drivers/usb/usbhub/fdo.c index 0342b13bc17..d6c62988acf 100644 --- a/reactos/drivers/usb/usbhub/fdo.c +++ b/reactos/drivers/usb/usbhub/fdo.c @@ -1,4 +1,4 @@ -/* +/* * PROJECT: ReactOS Universal Serial Bus Hub Driver * LICENSE: GPL - See COPYING in the top level directory * FILE: drivers/usb/usbhub/fdo.c diff --git a/reactos/hal/halx86/acpi/halpnpdd.c b/reactos/hal/halx86/acpi/halpnpdd.c index a0bf7439ad5..37e13eea43c 100644 --- a/reactos/hal/halx86/acpi/halpnpdd.c +++ b/reactos/hal/halx86/acpi/halpnpdd.c @@ -814,7 +814,7 @@ HalpDispatchWmi(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { DPRINT1("HAL: PnP Driver WMI!\n"); - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_SUCCESS; } diff --git a/reactos/hal/halx86/generic/bios.c b/reactos/hal/halx86/generic/bios.c index 2fb9ef98f01..fa159e09239 100644 --- a/reactos/hal/halx86/generic/bios.c +++ b/reactos/hal/halx86/generic/bios.c @@ -216,6 +216,8 @@ HalpTrap0DHandler(IN PKTRAP_FRAME TrapFrame) /* Strange, it isn't! This can happen during NMI */ DPRINT1("HAL: Trap0D while not in V86 mode\n"); KiDumpTrapFrame(TrapFrame); + + ASSERT(FALSE); while (TRUE); } diff --git a/reactos/hal/halx86/generic/misc.c b/reactos/hal/halx86/generic/misc.c index 1c3790187e2..87be9c8a5bd 100644 --- a/reactos/hal/halx86/generic/misc.c +++ b/reactos/hal/halx86/generic/misc.c @@ -229,7 +229,7 @@ HalHandleNMI(IN PVOID NmiInfo) // // Don't recurse // - if (HalpNMIInProgress++) while (TRUE); + if (HalpNMIInProgress++) ASSERT(FALSE); // while (TRUE); // // Read the system control register B diff --git a/reactos/hal/halx86/generic/spinlock.c b/reactos/hal/halx86/generic/spinlock.c index 77aaa217113..d9cf19b4e29 100644 --- a/reactos/hal/halx86/generic/spinlock.c +++ b/reactos/hal/halx86/generic/spinlock.c @@ -182,7 +182,8 @@ KeTryToAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber, { #ifdef CONFIG_SMP ASSERT(FALSE); // FIXME: Unused - while (TRUE); + // while (TRUE); + return FALSE; #endif /* Simply raise to synch */ @@ -206,7 +207,8 @@ KeTryToAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber, { #ifdef CONFIG_SMP ASSERT(FALSE); // FIXME: Unused - while (TRUE); + // while (TRUE); + return FALSE; #endif /* Simply raise to dispatch */ diff --git a/reactos/hal/halx86/legacy/bus/cmosbus.c b/reactos/hal/halx86/legacy/bus/cmosbus.c index 279aebf9e20..5561284040f 100644 --- a/reactos/hal/halx86/legacy/bus/cmosbus.c +++ b/reactos/hal/halx86/legacy/bus/cmosbus.c @@ -26,7 +26,7 @@ HalpcGetCmosData(IN PBUS_HANDLER BusHandler, IN ULONG Length) { DPRINT1("CMOS GetData\n"); - while (TRUE); + ASSERT(FALSE); // while (TRUE); return 0; } @@ -40,7 +40,7 @@ HalpcSetCmosData(IN PBUS_HANDLER BusHandler, IN ULONG Length) { DPRINT1("CMOS SetData\n"); - while (TRUE); + ASSERT(FALSE); // while (TRUE); return 0; } diff --git a/reactos/hal/halx86/legacy/bus/pcibus.c b/reactos/hal/halx86/legacy/bus/pcibus.c index 071027920f9..b1bde8a7178 100644 --- a/reactos/hal/halx86/legacy/bus/pcibus.c +++ b/reactos/hal/halx86/legacy/bus/pcibus.c @@ -537,7 +537,7 @@ HalpPCIPin2ISALine(IN PBUS_HANDLER BusHandler, IN PPCI_COMMON_CONFIG PciData) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -549,7 +549,7 @@ HalpPCIISALine2Pin(IN PBUS_HANDLER BusHandler, IN PPCI_COMMON_CONFIG PciOldData) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } NTSTATUS @@ -643,7 +643,8 @@ HalpRegisterPciDebuggingDeviceInfo(VOID) /* FIXME: TODO */ DPRINT1("You have implemented the KD routines for searching PCI debugger" "devices, but you have forgotten to implement this routine\n"); - while (TRUE); + UNIMPLEMENTED; + ASSERT(FALSE); // while (TRUE); } static ULONG NTAPI @@ -678,7 +679,7 @@ HalpAdjustPCIResourceList(IN PBUS_HANDLER BusHandler, { /* /PCILOCK is not yet supported */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } #endif /* Now create the correct resource list based on the supported bus ranges */ diff --git a/reactos/hal/halx86/legacy/halpnpdd.c b/reactos/hal/halx86/legacy/halpnpdd.c index 62534a925b5..c79a9a387f6 100644 --- a/reactos/hal/halx86/legacy/halpnpdd.c +++ b/reactos/hal/halx86/legacy/halpnpdd.c @@ -812,7 +812,7 @@ HalpDispatchWmi(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { DPRINT1("HAL: PnP Driver WMI!\n"); - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_SUCCESS; } diff --git a/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c b/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c index ebba94d5377..cd998bb70c6 100644 --- a/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c +++ b/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c @@ -3784,7 +3784,7 @@ PiGetDeviceRegistryProperty(IN PDEVICE_OBJECT DeviceObject, #define PIP_RETURN_DATA(x, y) {ReturnLength = x; Data = y; Status = STATUS_SUCCESS; break;} #define PIP_REGISTRY_DATA(x, y) {ValueName = x; ValueType = y; break;} -#define PIP_UNIMPLEMENTED() {UNIMPLEMENTED; while(TRUE); break;} +#define PIP_UNIMPLEMENTED() {UNIMPLEMENTED; ASSERT(FALSE); break;} // while(TRUE); /* * @implemented From 4c4fd151f2812d148dc4f439d9617cfe82d46753 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Fri, 4 Jan 2013 12:31:46 +0000 Subject: [PATCH 60/96] while (TRUE); (when something is unimplemented) ---> ASSERT(FALSE); // while (TRUE); (unless we deal with a 'noreturn' function), and in some cases, return an adequate value. In some places however, I add an ASSERT(FALSE); before keeping the while (TRUE); in critical regions. (Only x86, as well as in r58110). More ASSERTS (in debug mode) or BSODs may appear, instead of having hung threads. Part 1-bis/2 svn path=/trunk/; revision=58111 --- reactos/lib/cmlib/hivecell.c | 2 +- reactos/ntoskrnl/cache/cachesub.c | 2 +- reactos/ntoskrnl/cache/copysup.c | 8 +++---- reactos/ntoskrnl/cache/fssup.c | 2 +- reactos/ntoskrnl/cache/logsup.c | 8 +++---- reactos/ntoskrnl/include/internal/i386/ke.h | 4 ++-- reactos/ntoskrnl/io/iomgr/irp.c | 5 +++-- reactos/ntoskrnl/io/pnpmgr/pnpmgr.c | 2 +- reactos/ntoskrnl/kd64/amd64/kdx64.c | 8 +++---- reactos/ntoskrnl/kd64/arm/kdarm.c | 24 ++++++++++----------- reactos/ntoskrnl/ke/bug.c | 1 + reactos/ntoskrnl/ke/dpc.c | 1 + reactos/ntoskrnl/ke/i386/context.c | 3 ++- reactos/ntoskrnl/ke/i386/traphdlr.c | 13 +++++++++-- reactos/ntoskrnl/po/povolume.c | 4 +++- 15 files changed, 51 insertions(+), 36 deletions(-) diff --git a/reactos/lib/cmlib/hivecell.c b/reactos/lib/cmlib/hivecell.c index c3e3dbea41b..3c82b450b9d 100644 --- a/reactos/lib/cmlib/hivecell.c +++ b/reactos/lib/cmlib/hivecell.c @@ -549,7 +549,7 @@ HvTrackCellRef(PHV_TRACK_CELL_REF CellRef, /* FIXME: TODO */ DPRINT1("ERROR: Too many references\n"); - while (TRUE); + ASSERT(FALSE); // while (TRUE); return FALSE; } diff --git a/reactos/ntoskrnl/cache/cachesub.c b/reactos/ntoskrnl/cache/cachesub.c index f9a949d69d0..0431a5666f6 100644 --- a/reactos/ntoskrnl/cache/cachesub.c +++ b/reactos/ntoskrnl/cache/cachesub.c @@ -132,7 +132,7 @@ CcGetFlushedValidData(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, { LARGE_INTEGER Result = {{0}}; UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return Result; } diff --git a/reactos/ntoskrnl/cache/copysup.c b/reactos/ntoskrnl/cache/copysup.c index eb344ee50b5..be2af04c983 100644 --- a/reactos/ntoskrnl/cache/copysup.c +++ b/reactos/ntoskrnl/cache/copysup.c @@ -122,7 +122,7 @@ CcFastCopyRead(IN PFILE_OBJECT FileObject, OUT PIO_STATUS_BLOCK IoStatus) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } BOOLEAN @@ -209,7 +209,7 @@ CcFastCopyWrite(IN PFILE_OBJECT FileObject, IN PVOID Buffer) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } BOOLEAN @@ -220,7 +220,7 @@ CcCanIWrite(IN PFILE_OBJECT FileObject, IN UCHAR Retrying) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return FALSE; } @@ -234,7 +234,7 @@ CcDeferWrite(IN PFILE_OBJECT FileObject, IN BOOLEAN Retrying) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } /* EOF */ diff --git a/reactos/ntoskrnl/cache/fssup.c b/reactos/ntoskrnl/cache/fssup.c index 4b4bc15cf23..f816100dfa8 100644 --- a/reactos/ntoskrnl/cache/fssup.c +++ b/reactos/ntoskrnl/cache/fssup.c @@ -399,7 +399,7 @@ CcSetDirtyPageThreshold(IN PFILE_OBJECT FileObject, IN ULONG DirtyPageThreshold) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } /* diff --git a/reactos/ntoskrnl/cache/logsup.c b/reactos/ntoskrnl/cache/logsup.c index 6c5f3540ed5..cb4f78a3f0b 100644 --- a/reactos/ntoskrnl/cache/logsup.c +++ b/reactos/ntoskrnl/cache/logsup.c @@ -24,7 +24,7 @@ CcSetAdditionalCacheAttributes(IN PFILE_OBJECT FileObject, IN BOOLEAN DisableWriteBehind) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -48,7 +48,7 @@ CcGetDirtyPages(IN PVOID LogHandle, { LARGE_INTEGER Result = {{0}}; UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return Result; } @@ -57,7 +57,7 @@ NTAPI CcIsThereDirtyData(IN PVPB Vpb) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return FALSE; } @@ -68,7 +68,7 @@ CcGetLsnForFileObject(IN PFILE_OBJECT FileObject, { LARGE_INTEGER Result = {{0}}; UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return Result; } diff --git a/reactos/ntoskrnl/include/internal/i386/ke.h b/reactos/ntoskrnl/include/internal/i386/ke.h index 8363477ab48..7e81de388aa 100644 --- a/reactos/ntoskrnl/include/internal/i386/ke.h +++ b/reactos/ntoskrnl/include/internal/i386/ke.h @@ -138,8 +138,8 @@ typedef union _KTRAP_EXIT_SKIP_BITS { \ /* Not yet handled */ \ UNIMPLEMENTED; \ - while (TRUE); \ - return TRUE; \ + ASSERT(FALSE); /* while (TRUE); */ \ + return FALSE; \ } C_ASSERT(NPX_FRAME_LENGTH == sizeof(FX_SAVE_AREA)); diff --git a/reactos/ntoskrnl/io/iomgr/irp.c b/reactos/ntoskrnl/io/iomgr/irp.c index f88e80f46d8..f19b496bb87 100644 --- a/reactos/ntoskrnl/io/iomgr/irp.c +++ b/reactos/ntoskrnl/io/iomgr/irp.c @@ -266,7 +266,8 @@ IopCompleteRequest(IN PKAPC Apc, { /* We should never get this yet */ DPRINT1("Reparse support not yet present!\n"); - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return; } } @@ -1373,7 +1374,7 @@ IofCompleteRequest(IN PIRP Irp, #else /* Not implemented yet. */ DPRINT1("Not supported!\n"); - while (TRUE); + ASSERT(FALSE); // while (TRUE); #endif } diff --git a/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c b/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c index cd998bb70c6..54e5c410f3f 100644 --- a/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c +++ b/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c @@ -3784,7 +3784,7 @@ PiGetDeviceRegistryProperty(IN PDEVICE_OBJECT DeviceObject, #define PIP_RETURN_DATA(x, y) {ReturnLength = x; Data = y; Status = STATUS_SUCCESS; break;} #define PIP_REGISTRY_DATA(x, y) {ValueName = x; ValueType = y; break;} -#define PIP_UNIMPLEMENTED() {UNIMPLEMENTED; ASSERT(FALSE); break;} // while(TRUE); +#define PIP_UNIMPLEMENTED() {UNIMPLEMENTED; ASSERT(FALSE); /* while (TRUE); */ break;} /* * @implemented diff --git a/reactos/ntoskrnl/kd64/amd64/kdx64.c b/reactos/ntoskrnl/kd64/amd64/kdx64.c index df27345bf92..a496fd74a49 100644 --- a/reactos/ntoskrnl/kd64/amd64/kdx64.c +++ b/reactos/ntoskrnl/kd64/amd64/kdx64.c @@ -140,7 +140,7 @@ KdpSysReadBusData(IN ULONG BusDataType, OUT PULONG ActualLength) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_UNSUCCESSFUL; } @@ -155,7 +155,7 @@ KdpSysWriteBusData(IN ULONG BusDataType, OUT PULONG ActualLength) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_UNSUCCESSFUL; } @@ -358,7 +358,7 @@ NTAPI KdpSysCheckLowMemory(IN ULONG Flags) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_UNSUCCESSFUL; } @@ -367,6 +367,6 @@ NTAPI KdpAllowDisable(VOID) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_ACCESS_DENIED; } diff --git a/reactos/ntoskrnl/kd64/arm/kdarm.c b/reactos/ntoskrnl/kd64/arm/kdarm.c index 32a82ebb9d0..35f9211014d 100644 --- a/reactos/ntoskrnl/kd64/arm/kdarm.c +++ b/reactos/ntoskrnl/kd64/arm/kdarm.c @@ -23,7 +23,7 @@ KdpGetStateChange(IN PDBGKD_MANIPULATE_STATE64 State, IN PCONTEXT Context) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -32,7 +32,7 @@ KdpSetContextState(IN PDBGKD_ANY_WAIT_STATE_CHANGE WaitStateChange, IN PCONTEXT Context) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } NTSTATUS @@ -41,7 +41,7 @@ KdpSysReadMsr(IN ULONG Msr, OUT PLARGE_INTEGER MsrValue) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_UNSUCCESSFUL; } @@ -51,7 +51,7 @@ KdpSysWriteMsr(IN ULONG Msr, IN PLARGE_INTEGER MsrValue) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_UNSUCCESSFUL; } @@ -66,7 +66,7 @@ KdpSysReadBusData(IN ULONG BusDataType, OUT PULONG ActualLength) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_UNSUCCESSFUL; } @@ -81,7 +81,7 @@ KdpSysWriteBusData(IN ULONG BusDataType, OUT PULONG ActualLength) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_UNSUCCESSFUL; } @@ -94,7 +94,7 @@ KdpSysReadControlSpace(IN ULONG Processor, OUT PULONG ActualLength) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_UNSUCCESSFUL; } @@ -107,7 +107,7 @@ KdpSysWriteControlSpace(IN ULONG Processor, OUT PULONG ActualLength) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_UNSUCCESSFUL; } @@ -122,7 +122,7 @@ KdpSysReadIoSpace(IN ULONG InterfaceType, OUT PULONG ActualDataSize) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_UNSUCCESSFUL; } @@ -137,7 +137,7 @@ KdpSysWriteIoSpace(IN ULONG InterfaceType, OUT PULONG ActualDataSize) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_UNSUCCESSFUL; } @@ -146,7 +146,7 @@ NTAPI KdpSysCheckLowMemory(IN ULONG Flags) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_UNSUCCESSFUL; } @@ -155,6 +155,6 @@ NTAPI KdpAllowDisable(VOID) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_ACCESS_DENIED; } diff --git a/reactos/ntoskrnl/ke/bug.c b/reactos/ntoskrnl/ke/bug.c index 641c544dfa9..d701444ae6b 100644 --- a/reactos/ntoskrnl/ke/bug.c +++ b/reactos/ntoskrnl/ke/bug.c @@ -1178,6 +1178,7 @@ KeBugCheckWithTf(IN ULONG BugCheckCode, KiBugCheckDebugBreak(DBG_STATUS_BUGCHECK_SECOND); /* Shouldn't get here */ + ASSERT(FALSE); while (TRUE); } diff --git a/reactos/ntoskrnl/ke/dpc.c b/reactos/ntoskrnl/ke/dpc.c index d507b726eb7..577fefbd587 100644 --- a/reactos/ntoskrnl/ke/dpc.c +++ b/reactos/ntoskrnl/ke/dpc.c @@ -780,6 +780,7 @@ KeInsertQueueDpc(IN PKDPC Dpc, { /* FIXME: Setup Threaded DPC */ DPRINT1("Threaded DPC not supported\n"); + ASSERT(FALSE); while (TRUE); } } diff --git a/reactos/ntoskrnl/ke/i386/context.c b/reactos/ntoskrnl/ke/i386/context.c index 085e9ae735b..cd36a145449 100644 --- a/reactos/ntoskrnl/ke/i386/context.c +++ b/reactos/ntoskrnl/ke/i386/context.c @@ -36,7 +36,8 @@ KiSwapProcess(IN PKPROCESS NewProcess, { /* Not handled yet */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return; } /* Update CR3 */ diff --git a/reactos/ntoskrnl/ke/i386/traphdlr.c b/reactos/ntoskrnl/ke/i386/traphdlr.c index 835d8e70417..2bd9a46d998 100644 --- a/reactos/ntoskrnl/ke/i386/traphdlr.c +++ b/reactos/ntoskrnl/ke/i386/traphdlr.c @@ -663,6 +663,7 @@ KiTrap06Handler(IN PKTRAP_FRAME TrapFrame) { /* Should only happen in VDM mode */ UNIMPLEMENTED; + ASSERT(FALSE); while (TRUE); } @@ -735,6 +736,7 @@ KiTrap07Handler(IN PKTRAP_FRAME TrapFrame) { /* Not implemented */ UNIMPLEMENTED; + ASSERT(FALSE); while (TRUE); } @@ -921,6 +923,7 @@ KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame) { /* Should only happen in VDM mode */ UNIMPLEMENTED; + ASSERT(FALSE); while (TRUE); } @@ -1077,6 +1080,7 @@ KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame) { /* Not implemented */ UNIMPLEMENTED; + ASSERT(FALSE); while (TRUE); } @@ -1133,6 +1137,7 @@ KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame) { /* Otherwise, this is another kind of IRET fault */ UNIMPLEMENTED; + ASSERT(FALSE); while (TRUE); } } @@ -1191,6 +1196,7 @@ KiTrap0EHandler(IN PKTRAP_FRAME TrapFrame) { /* The stack is somewhere in between frames, we need to fix it */ UNIMPLEMENTED; + ASSERT(FALSE); while (TRUE); } } @@ -1256,6 +1262,7 @@ KiTrap0EHandler(IN PKTRAP_FRAME TrapFrame) { /* Not yet implemented */ UNIMPLEMENTED; + ASSERT(FALSE); while (TRUE); } #endif @@ -1439,7 +1446,7 @@ FASTCALL KiGetTickCountHandler(IN PKTRAP_FRAME TrapFrame) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -1447,7 +1454,7 @@ FASTCALL KiCallbackReturnHandler(IN PKTRAP_FRAME TrapFrame) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } DECLSPEC_NORETURN @@ -1618,6 +1625,7 @@ KiSystemCall(IN PKTRAP_FRAME TrapFrame, { /* Access violation */ UNIMPLEMENTED; + ASSERT(FALSE); while (TRUE); } @@ -1683,6 +1691,7 @@ Kei386EoiHelper(VOID) { /* We should never see this call happening */ DPRINT1("Mismatched NT/HAL version"); + ASSERT(FALSE); while (TRUE); } diff --git a/reactos/ntoskrnl/po/povolume.c b/reactos/ntoskrnl/po/povolume.c index 77003029a43..13da03a43f2 100644 --- a/reactos/ntoskrnl/po/povolume.c +++ b/reactos/ntoskrnl/po/povolume.c @@ -300,7 +300,9 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown) { /* ReactOS only implements this routine for shutdown, which requires it */ UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); + KeReleaseGuardedMutex(&PopVolumeLock); + return; } /* Check if there were no volumes at all */ From 8f7be5bbc85fc09a8cf2a99fc9e3e212af9c0c48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Fri, 4 Jan 2013 12:54:39 +0000 Subject: [PATCH 61/96] while (TRUE); (when something is unimplemented) ---> ASSERT(FALSE); // while (TRUE); and in some cases, return an adequate value. Part 2/2 Some while(true); remain in our code, however not in critical regions. svn path=/trunk/; revision=58112 --- reactos/ntoskrnl/mm/ARM3/arm/init.c | 2 +- reactos/ntoskrnl/mm/ARM3/largepag.c | 2 +- reactos/ntoskrnl/mm/ARM3/sysldr.c | 17 ++++++++----- reactos/ntoskrnl/mm/arm/page.c | 38 ++++++++++++++--------------- reactos/ntoskrnl/mm/arm/stubs.c | 22 ++++++++--------- 5 files changed, 43 insertions(+), 38 deletions(-) diff --git a/reactos/ntoskrnl/mm/ARM3/arm/init.c b/reactos/ntoskrnl/mm/ARM3/arm/init.c index 3f1d2c2c868..0b87140b008 100644 --- a/reactos/ntoskrnl/mm/ARM3/arm/init.c +++ b/reactos/ntoskrnl/mm/ARM3/arm/init.c @@ -66,7 +66,7 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock) // Always return success for now // DPRINT1("NEVER TELL ME THE ODDS!\n"); - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_SUCCESS; } diff --git a/reactos/ntoskrnl/mm/ARM3/largepag.c b/reactos/ntoskrnl/mm/ARM3/largepag.c index 49ce25fc71a..84ef6f6f167 100644 --- a/reactos/ntoskrnl/mm/ARM3/largepag.c +++ b/reactos/ntoskrnl/mm/ARM3/largepag.c @@ -59,7 +59,7 @@ MiSyncCachedRanges(VOID) for (i = 0; i < MiLargePageRangeIndex; i++) { DPRINT1("No support for large pages\n"); - while (TRUE); + ASSERT(FALSE); // while (TRUE); } } diff --git a/reactos/ntoskrnl/mm/ARM3/sysldr.c b/reactos/ntoskrnl/mm/ARM3/sysldr.c index 59e37c1a80a..e226766a10a 100644 --- a/reactos/ntoskrnl/mm/ARM3/sysldr.c +++ b/reactos/ntoskrnl/mm/ARM3/sysldr.c @@ -106,7 +106,8 @@ MiLoadImageSection(IN OUT PVOID *SectionPtr, { /* Fail */ DPRINT1("Session loading not yet supported!\n"); - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return STATUS_NOT_IMPLEMENTED; } /* Not session load, shouldn't have an entry */ @@ -1217,7 +1218,7 @@ CheckDllState: /* We failed, unload the image */ MmUnloadSystemImage(DllEntry); DPRINT1("MmCallDllInitialize failed with status 0x%x\n", Status); - while (TRUE); + ASSERT(FALSE); // while (TRUE); Loaded = FALSE; } } @@ -1720,7 +1721,8 @@ MiReloadBootLoadedDrivers(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { /* Shouldn't happen */ DPRINT1("[Mm0]: Couldn't allocate driver section!\n"); - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return; } /* This is the new virtual address for the module */ @@ -1773,7 +1775,8 @@ MiReloadBootLoadedDrivers(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { /* This shouldn't happen */ DPRINT1("Relocations failed!\n"); - while (TRUE); + ASSERT(FALSE); // while (TRUE); + return; } } @@ -2922,7 +2925,8 @@ LoaderScan: { /* We don't support session loading yet */ DPRINT1("Unsupported Session-Load!\n"); - while (TRUE); + ASSERT(FALSE); // while (TRUE); + Status = STATUS_NOT_IMPLEMENTED; } /* Do cleanup */ @@ -3023,7 +3027,8 @@ LoaderScan: { /* We don't support session loading yet */ DPRINT1("Unsupported Session-Load!\n"); - while (TRUE); + ASSERT(FALSE); // while (TRUE); + goto Quickie; } /* Check the loader list again, we should end up in the path below */ diff --git a/reactos/ntoskrnl/mm/arm/page.c b/reactos/ntoskrnl/mm/arm/page.c index 1820d9101b8..5dda48308a7 100644 --- a/reactos/ntoskrnl/mm/arm/page.c +++ b/reactos/ntoskrnl/mm/arm/page.c @@ -125,7 +125,7 @@ MiFlushTlb(IN PMMPTE PointerPte, IN PVOID Address) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } BOOLEAN @@ -135,7 +135,7 @@ MmCreateProcessAddressSpace(IN ULONG MinWs, IN PULONG DirectoryTableBase) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return FALSE; } @@ -165,7 +165,7 @@ MmDisableVirtualMapping(IN PEPROCESS Process, OUT PPFN_NUMBER Page) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -174,7 +174,7 @@ MmEnableVirtualMapping(IN PEPROCESS Process, IN PVOID Address) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } NTSTATUS @@ -186,7 +186,7 @@ MmCreateVirtualMappingUnsafe(IN PEPROCESS Process, IN ULONG PageCount) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_SUCCESS; } @@ -199,7 +199,7 @@ MmCreateVirtualMapping(IN PEPROCESS Process, IN ULONG PageCount) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return STATUS_SUCCESS; } @@ -208,7 +208,7 @@ NTAPI MmRawDeleteVirtualMapping(IN PVOID Address) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -220,7 +220,7 @@ MmDeleteVirtualMapping(IN PEPROCESS Process, OUT PPFN_NUMBER Page) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -230,7 +230,7 @@ MmDeletePageFileMapping(IN PEPROCESS Process, IN SWAPENTRY *SwapEntry) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } NTSTATUS @@ -240,8 +240,8 @@ MmCreatePageFileMapping(IN PEPROCESS Process, IN SWAPENTRY SwapEntry) { UNIMPLEMENTED; - while (TRUE); - return 0; + ASSERT(FALSE); // while (TRUE); + return STATUS_NOT_IMPLEMENTED; } PFN_NUMBER @@ -250,7 +250,7 @@ MmGetPfnForProcess(IN PEPROCESS Process, IN PVOID Address) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return 0; } @@ -260,8 +260,8 @@ MmIsDirtyPage(IN PEPROCESS Process, IN PVOID Address) { UNIMPLEMENTED; - while (TRUE); - return 0; + ASSERT(FALSE); // while (TRUE); + return FALSE; } VOID @@ -270,7 +270,7 @@ MmSetCleanPage(IN PEPROCESS Process, IN PVOID Address) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -279,7 +279,7 @@ MmSetDirtyPage(IN PEPROCESS Process, IN PVOID Address) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } BOOLEAN @@ -288,7 +288,7 @@ MmIsPagePresent(IN PEPROCESS Process, IN PVOID Address) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return FALSE; } @@ -298,7 +298,7 @@ MmIsPageSwapEntry(IN PEPROCESS Process, IN PVOID Address) { UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return FALSE; } @@ -357,7 +357,7 @@ MmGetPhysicalAddress(IN PVOID Address) PhysicalAddress.QuadPart = 0; UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); return PhysicalAddress; } diff --git a/reactos/ntoskrnl/mm/arm/stubs.c b/reactos/ntoskrnl/mm/arm/stubs.c index 06df8b23f2b..1d71bc95969 100644 --- a/reactos/ntoskrnl/mm/arm/stubs.c +++ b/reactos/ntoskrnl/mm/arm/stubs.c @@ -375,8 +375,8 @@ Mmi386ReleaseMmInfo(IN PEPROCESS Process) // FIXME-USER: Need to delete address space // UNIMPLEMENTED; - while (TRUE); - return 0; + ASSERT(FALSE); // while (TRUE); + return STATUS_NOT_IMPLEMENTED; } PULONG @@ -400,7 +400,7 @@ MmDisableVirtualMapping(IN PEPROCESS Process, // TODO // UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -412,7 +412,7 @@ MmEnableVirtualMapping(IN PEPROCESS Process, // TODO // UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } NTSTATUS @@ -659,7 +659,7 @@ MmDeletePageFileMapping(IN PEPROCESS Process, // TODO // UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } NTSTATUS @@ -672,8 +672,8 @@ MmCreatePageFileMapping(IN PEPROCESS Process, // TODO // UNIMPLEMENTED; - while (TRUE); - return 0; + ASSERT(FALSE); // while (TRUE); + return STATUS_NOT_IMPLEMENTED; } PFN_NUMBER @@ -704,8 +704,8 @@ MmIsDirtyPage(IN PEPROCESS Process, // TODO // UNIMPLEMENTED; - while (TRUE); - return 0; + ASSERT(FALSE); // while (TRUE); + return FALSE; } VOID @@ -717,7 +717,7 @@ MmSetCleanPage(IN PEPROCESS Process, // TODO // UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } VOID @@ -729,7 +729,7 @@ MmSetDirtyPage(IN PEPROCESS Process, // TODO // UNIMPLEMENTED; - while (TRUE); + ASSERT(FALSE); // while (TRUE); } BOOLEAN From 9cde74e38c373b7bd5cc1d0767faa3c8eb1a56d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Fri, 4 Jan 2013 13:26:34 +0000 Subject: [PATCH 62/96] [TASKMGR] Fix a misspelling in French translation. svn path=/trunk/; revision=58113 --- reactos/base/applications/taskmgr/lang/fr-FR.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/base/applications/taskmgr/lang/fr-FR.rc b/reactos/base/applications/taskmgr/lang/fr-FR.rc index 3a71738ea4c..1c70373d317 100644 --- a/reactos/base/applications/taskmgr/lang/fr-FR.rc +++ b/reactos/base/applications/taskmgr/lang/fr-FR.rc @@ -513,7 +513,7 @@ STRINGTABLE DISCARDABLE BEGIN IDS_APP_TITLE "Gestionnaire des tâches" IDC_TASKMGR "Gestionnaire des tâches" - IDS_IDLE_PROCESS "Processus système en atente" + IDS_IDLE_PROCESS "Processus système en attente" END STRINGTABLE DISCARDABLE From 5cd016575734373abf3fbd38a442bfcfdc8423bd Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Sat, 5 Jan 2013 11:05:23 +0000 Subject: [PATCH 63/96] [REACTOS] - Happy New Year! This one is better than r54799 which is a good progress! svn path=/trunk/; revision=58115 --- reactos/include/reactos/version.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/include/reactos/version.cmake b/reactos/include/reactos/version.cmake index a68ee50c268..641fb00eafb 100644 --- a/reactos/include/reactos/version.cmake +++ b/reactos/include/reactos/version.cmake @@ -32,7 +32,7 @@ today(KERNEL_VERSION_BUILD) set(KERNEL_VERSION_MAJOR "0") set(KERNEL_VERSION_MINOR "4") set(KERNEL_VERSION_PATCH_LEVEL "0") -set(COPYRIGHT_YEAR "2012") +set(COPYRIGHT_YEAR "2013") # KERNEL_VERSION_BUILD_TYPE is "SVN", "RC1", "RC2" or "" (for the release) set(KERNEL_VERSION_BUILD_TYPE "SVN") From 6790ef337ff7810a3372ee14dd8f00a04248be0b Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 5 Jan 2013 19:57:59 +0000 Subject: [PATCH 64/96] [WIN32K] In NtGdiStretchDIBitsInternal check early for info dc / mem dc without surface, only allocate memory and copy bits if the caller actually passed bits (they are optional), free the allocation, when an exception happens instead of leaking the memory. svn path=/trunk/; revision=58116 --- reactos/win32ss/gdi/ntgdi/dibobj.c | 47 ++++++++++++++++++------------ 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/reactos/win32ss/gdi/ntgdi/dibobj.c b/reactos/win32ss/gdi/ntgdi/dibobj.c index de22ae8ca52..032031199e6 100644 --- a/reactos/win32ss/gdi/ntgdi/dibobj.c +++ b/reactos/win32ss/gdi/ntgdi/dibobj.c @@ -1071,6 +1071,14 @@ NtGdiStretchDIBitsInternal( return 0; } + /* Check for info / mem DC without surface */ + if (!pdc->dclevel.pSurface) + { + DC_UnlockDc(pdc); + // CHECKME + return TRUE; + } + /* Transform dest size */ sizel.cx = cxDst; sizel.cy = cyDst; @@ -1099,22 +1107,30 @@ NtGdiStretchDIBitsInternal( hcmXform); } - pvBits = ExAllocatePoolWithTag(PagedPool, cjMaxBits, 'pmeT'); - if (!pvBits) + if (pjInit && (cjMaxBits > 0)) { - return 0; - } + pvBits = ExAllocatePoolWithTag(PagedPool, cjMaxBits, 'pmeT'); + if (!pvBits) + { + return 0; + } - _SEH2_TRY - { - ProbeForRead(pjInit, cjMaxBits, 1); - RtlCopyMemory(pvBits, pjInit, cjMaxBits); + _SEH2_TRY + { + ProbeForRead(pjInit, cjMaxBits, 1); + RtlCopyMemory(pvBits, pjInit, cjMaxBits); + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + ExFreePoolWithTag(pvBits, 'pmeT'); + _SEH2_YIELD(return 0); + } + _SEH2_END } - _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + else { - _SEH2_YIELD(return 0); + pvBits = NULL; } - _SEH2_END /* FIXME: Locking twice is cheesy, coord tranlation in UM will fix it */ if (!(pdc = DC_LockDc(hdc))) @@ -1171,13 +1187,6 @@ NtGdiStretchDIBitsInternal( DC_vPrepareDCsForBlit(pdc, rcDst, NULL, rcSrc); psurfDst = pdc->dclevel.pSurface; - if (!psurfDst) - { - DC_vFinishBlit(pdc, NULL); - // CHECKME - bResult = TRUE; - goto cleanup; - } /* Initialize XLATEOBJ */ EXLATEOBJ_vInitialize(&exlo, @@ -1209,7 +1218,7 @@ cleanup: if (psurfTmp) SURFACE_ShareUnlockSurface(psurfTmp); if (hbmTmp) GreDeleteObject(hbmTmp); if (pdc) DC_UnlockDc(pdc); - ExFreePoolWithTag(pvBits, 'pmeT'); + if (pvBits) ExFreePoolWithTag(pvBits, 'pmeT'); return bResult; } From f7dbb49d4c4d562c9a605a78a054b00dfea3a4a4 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 5 Jan 2013 20:30:06 +0000 Subject: [PATCH 65/96] [SAMSRV] Implement SamrQueryInformationUser.UserParametersInformation and set the Parameters attribute when a new user is created. svn path=/trunk/; revision=58117 --- reactos/dll/win32/samsrv/samrpc.c | 67 +++++++++++++++++++++++++++++++ reactos/dll/win32/samsrv/setup.c | 7 ++++ 2 files changed, 74 insertions(+) diff --git a/reactos/dll/win32/samsrv/samrpc.c b/reactos/dll/win32/samsrv/samrpc.c index ebc6020faad..d996c8c68d6 100644 --- a/reactos/dll/win32/samsrv/samrpc.c +++ b/reactos/dll/win32/samsrv/samrpc.c @@ -2297,6 +2297,18 @@ SamrCreateUserInDomain(IN SAMPR_HANDLE DomainHandle, return Status; } + /* Set the Parameters attribute */ + Status = SampSetObjectAttribute(UserObject, + L"Parameters", + REG_SZ, + EmptyString.Buffer, + EmptyString.MaximumLength); + if (!NT_SUCCESS(Status)) + { + TRACE("failed with status 0x%08lx\n", Status); + return Status; + } + /* FIXME: Set default user attributes */ if (NT_SUCCESS(Status)) @@ -5654,6 +5666,47 @@ done: } +static NTSTATUS +SampQueryUserParameters(PSAM_DB_OBJECT UserObject, + PSAMPR_USER_INFO_BUFFER *Buffer) +{ + PSAMPR_USER_INFO_BUFFER InfoBuffer = NULL; + NTSTATUS Status; + + *Buffer = NULL; + + InfoBuffer = midl_user_allocate(sizeof(SAMPR_USER_INFO_BUFFER)); + if (InfoBuffer == NULL) + return STATUS_INSUFFICIENT_RESOURCES; + + /* Get the Parameters string */ + Status = SampGetObjectAttributeString(UserObject, + L"Parameters", + &InfoBuffer->Parameters.Parameters); + if (!NT_SUCCESS(Status)) + { + TRACE("Status 0x%08lx\n", Status); + goto done; + } + + *Buffer = InfoBuffer; + +done: + if (!NT_SUCCESS(Status)) + { + if (InfoBuffer != NULL) + { + if (InfoBuffer->Parameters.Parameters.Buffer != NULL) + midl_user_free(InfoBuffer->Parameters.Parameters.Buffer); + + midl_user_free(InfoBuffer); + } + } + + return Status; +} + + /* Function 36 */ NTSTATUS NTAPI @@ -5689,6 +5742,7 @@ SamrQueryInformationUser(IN SAMPR_HANDLE UserHandle, case UserControlInformation: case UserExpiresInformation: + case UserParametersInformation: DesiredAccess = USER_READ_ACCOUNT; break; @@ -5801,6 +5855,19 @@ SamrQueryInformationUser(IN SAMPR_HANDLE UserHandle, Buffer); break; +// case UserInternal1Information: + + case UserParametersInformation: + Status = SampQueryUserParameters(UserObject, + Buffer); + break; + +// case UserAllInformation: +// case UserInternal4Information: +// case UserInternal5Information: +// case UserInternal4InformationNew: +// case UserInternal5InformationNew: + default: Status = STATUS_INVALID_INFO_CLASS; } diff --git a/reactos/dll/win32/samsrv/setup.c b/reactos/dll/win32/samsrv/setup.c index 28a1d4bc5f3..e9944a81863 100644 --- a/reactos/dll/win32/samsrv/setup.c +++ b/reactos/dll/win32/samsrv/setup.c @@ -318,6 +318,13 @@ SampCreateUserAccount(HKEY hDomainKey, (LPVOID)lpEmptyString, sizeof(WCHAR)); + RegSetValueEx(hAccountKey, + L"Parameters", + 0, + REG_SZ, + (LPVOID)lpEmptyString, + sizeof(WCHAR)); + RegCloseKey(hAccountKey); } From 638a8ff8594e7568ffb6c9c18ef792e6ef30a63a Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 5 Jan 2013 21:04:54 +0000 Subject: [PATCH 66/96] [NETAPI32] Add information level 2 and 3 for NetUserEnum and NetUserGetInfo. svn path=/trunk/; revision=58118 --- reactos/dll/win32/netapi32/user.c | 296 +++++++++++++++++++++++++++++- 1 file changed, 290 insertions(+), 6 deletions(-) diff --git a/reactos/dll/win32/netapi32/user.c b/reactos/dll/win32/netapi32/user.c index 25238ae0d05..2e30abc7a26 100644 --- a/reactos/dll/win32/netapi32/user.c +++ b/reactos/dll/win32/netapi32/user.c @@ -169,6 +169,8 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, LPVOID LocalBuffer = NULL; PUSER_INFO_0 UserInfo0; PUSER_INFO_1 UserInfo1; + PUSER_INFO_2 UserInfo2; + PUSER_INFO_3 UserInfo3; PUSER_INFO_10 UserInfo10; PUSER_INFO_20 UserInfo20; LPWSTR Ptr; @@ -195,11 +197,67 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, Size += UserInfo->AdminComment.Length + sizeof(WCHAR); if (UserInfo->ScriptPath.Length > 0) - Size = UserInfo->ScriptPath.Length + sizeof(WCHAR); + Size += UserInfo->ScriptPath.Length + sizeof(WCHAR); + break; + + case 2: + Size = sizeof(USER_INFO_2) + + UserInfo->UserName.Length + sizeof(WCHAR); + + if (UserInfo->HomeDirectory.Length > 0) + Size += UserInfo->HomeDirectory.Length + sizeof(WCHAR); + + if (UserInfo->AdminComment.Length > 0) + Size += UserInfo->AdminComment.Length + sizeof(WCHAR); + + if (UserInfo->ScriptPath.Length > 0) + Size += UserInfo->ScriptPath.Length + sizeof(WCHAR); + + if (UserInfo->FullName.Length > 0) + Size += UserInfo->FullName.Length + sizeof(WCHAR); + + /* FIXME: usri2_usr_comment */ + /* FIXME: usri2_parms */ + + if (UserInfo->WorkStations.Length > 0) + Size += UserInfo->WorkStations.Length + sizeof(WCHAR); + + /* FIXME: usri2_logon_hours */ + /* FIXME: usri2_logon_server */ + break; + + case 3: + Size = sizeof(USER_INFO_3) + + UserInfo->UserName.Length + sizeof(WCHAR); + + if (UserInfo->HomeDirectory.Length > 0) + Size += UserInfo->HomeDirectory.Length + sizeof(WCHAR); + + if (UserInfo->AdminComment.Length > 0) + Size += UserInfo->AdminComment.Length + sizeof(WCHAR); + + if (UserInfo->ScriptPath.Length > 0) + Size += UserInfo->ScriptPath.Length + sizeof(WCHAR); + + if (UserInfo->FullName.Length > 0) + Size += UserInfo->FullName.Length + sizeof(WCHAR); + + /* FIXME: usri3_usr_comment */ + /* FIXME: usri3_parms */ + + if (UserInfo->WorkStations.Length > 0) + Size += UserInfo->WorkStations.Length + sizeof(WCHAR); + + /* FIXME: usri3_logon_hours */ + /* FIXME: usri3_logon_server */ + + if (UserInfo->ProfilePath.Length > 0) + Size += UserInfo->ProfilePath.Length + sizeof(WCHAR); + + if (UserInfo->HomeDirectoryDrive.Length > 0) + Size += UserInfo->HomeDirectoryDrive.Length + sizeof(WCHAR); break; -// case 2: -// case 3: // case 4: case 10: @@ -311,8 +369,232 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, } break; -// case 2: -// case 3: + case 2: + UserInfo2 = (PUSER_INFO_2)LocalBuffer; + + Ptr = (LPWSTR)((ULONG_PTR)UserInfo2 + sizeof(USER_INFO_2)); + + UserInfo2->usri2_name = Ptr; + + memcpy(UserInfo2->usri2_name, + UserInfo->UserName.Buffer, + UserInfo->UserName.Length); + UserInfo2->usri2_name[UserInfo->UserName.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->UserName.Length + sizeof(WCHAR)); + + /* FIXME: usri2_password */ + /* FIXME: usri2_password_age */ + /* FIXME: usri2_priv */ + + if (UserInfo->HomeDirectory.Length > 0) + { + UserInfo2->usri2_home_dir = Ptr; + + memcpy(UserInfo2->usri2_home_dir, + UserInfo->HomeDirectory.Buffer, + UserInfo->HomeDirectory.Length); + UserInfo2->usri2_home_dir[UserInfo->HomeDirectory.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->HomeDirectory.Length + sizeof(WCHAR)); + } + + if (UserInfo->AdminComment.Length > 0) + { + UserInfo2->usri2_comment = Ptr; + + memcpy(UserInfo2->usri2_comment, + UserInfo->AdminComment.Buffer, + UserInfo->AdminComment.Length); + UserInfo2->usri2_comment[UserInfo->AdminComment.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR)); + } + + /* FIXME: usri2_flags */ + + if (UserInfo->ScriptPath.Length > 0) + { + UserInfo2->usri2_script_path = Ptr; + + memcpy(UserInfo2->usri2_script_path, + UserInfo->ScriptPath.Buffer, + UserInfo->ScriptPath.Length); + UserInfo2->usri2_script_path[UserInfo->ScriptPath.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->ScriptPath.Length + sizeof(WCHAR)); + } + + /* FIXME: usri2_auth_flags */ + + if (UserInfo->FullName.Length > 0) + { + UserInfo2->usri2_full_name = Ptr; + + memcpy(UserInfo2->usri2_full_name, + UserInfo->FullName.Buffer, + UserInfo->FullName.Length); + UserInfo2->usri2_full_name[UserInfo->FullName.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->FullName.Length + sizeof(WCHAR)); + } + + /* FIXME: usri2_usr_comment */ + /* FIXME: usri2_parms */ + + if (UserInfo->WorkStations.Length > 0) + { + UserInfo2->usri2_workstations = Ptr; + + memcpy(UserInfo2->usri2_workstations, + UserInfo->WorkStations.Buffer, + UserInfo->WorkStations.Length); + UserInfo2->usri2_workstations[UserInfo->WorkStations.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->WorkStations.Length + sizeof(WCHAR)); + } + + /* FIXME: usri2_last_logon */ + /* FIXME: usri2_last_logoff */ + /* FIXME: usri2_acct_expires */ + /* FIXME: usri2_max_storage */ + /* FIXME: usri2_units_per_week */ + /* FIXME: usri2_logon_hours */ + /* FIXME: usri2_bad_pw_count */ + /* FIXME: usri2_num_logons */ + /* FIXME: usri2_logon_server */ + /* FIXME: usri2_country_code */ + /* FIXME: usri2_code_page */ + + break; + + case 3: + UserInfo3 = (PUSER_INFO_3)LocalBuffer; + + Ptr = (LPWSTR)((ULONG_PTR)UserInfo3 + sizeof(USER_INFO_3)); + + UserInfo3->usri3_name = Ptr; + + memcpy(UserInfo3->usri3_name, + UserInfo->UserName.Buffer, + UserInfo->UserName.Length); + UserInfo3->usri3_name[UserInfo->UserName.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->UserName.Length + sizeof(WCHAR)); + + /* FIXME: usri3_password */ + /* FIXME: usri3_password_age */ + /* FIXME: usri3_priv */ + + if (UserInfo->HomeDirectory.Length > 0) + { + UserInfo3->usri3_home_dir = Ptr; + + memcpy(UserInfo3->usri3_home_dir, + UserInfo->HomeDirectory.Buffer, + UserInfo->HomeDirectory.Length); + UserInfo3->usri3_home_dir[UserInfo->HomeDirectory.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->HomeDirectory.Length + sizeof(WCHAR)); + } + + if (UserInfo->AdminComment.Length > 0) + { + UserInfo3->usri3_comment = Ptr; + + memcpy(UserInfo3->usri3_comment, + UserInfo->AdminComment.Buffer, + UserInfo->AdminComment.Length); + UserInfo3->usri3_comment[UserInfo->AdminComment.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR)); + } + + /* FIXME: usri3_flags */ + + if (UserInfo->ScriptPath.Length > 0) + { + UserInfo3->usri3_script_path = Ptr; + + memcpy(UserInfo3->usri3_script_path, + UserInfo->ScriptPath.Buffer, + UserInfo->ScriptPath.Length); + UserInfo3->usri3_script_path[UserInfo->ScriptPath.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->ScriptPath.Length + sizeof(WCHAR)); + } + + /* FIXME: usri3_auth_flags */ + + if (UserInfo->FullName.Length > 0) + { + UserInfo3->usri3_full_name = Ptr; + + memcpy(UserInfo3->usri3_full_name, + UserInfo->FullName.Buffer, + UserInfo->FullName.Length); + UserInfo3->usri3_full_name[UserInfo->FullName.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->FullName.Length + sizeof(WCHAR)); + } + + /* FIXME: usri3_usr_comment */ + /* FIXME: usri3_parms */ + + if (UserInfo->WorkStations.Length > 0) + { + UserInfo3->usri3_workstations = Ptr; + + memcpy(UserInfo3->usri3_workstations, + UserInfo->WorkStations.Buffer, + UserInfo->WorkStations.Length); + UserInfo3->usri3_workstations[UserInfo->WorkStations.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->WorkStations.Length + sizeof(WCHAR)); + } + + /* FIXME: usri3_last_logon */ + /* FIXME: usri3_last_logoff */ + /* FIXME: usri3_acct_expires */ + /* FIXME: usri3_max_storage */ + /* FIXME: usri3_units_per_week */ + /* FIXME: usri3_logon_hours */ + /* FIXME: usri3_bad_pw_count */ + /* FIXME: usri3_num_logons */ + /* FIXME: usri3_logon_server */ + /* FIXME: usri3_country_code */ + /* FIXME: usri3_code_page */ + + UserInfo3->usri3_user_id = RelativeId; + UserInfo3->usri3_primary_group_id = UserInfo->PrimaryGroupId; + + if (UserInfo->ProfilePath.Length > 0) + { + UserInfo3->usri3_profile = Ptr; + + memcpy(UserInfo3->usri3_profile, + UserInfo->ProfilePath.Buffer, + UserInfo->ProfilePath.Length); + UserInfo3->usri3_profile[UserInfo->ProfilePath.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->ProfilePath.Length + sizeof(WCHAR)); + } + + if (UserInfo->HomeDirectoryDrive.Length > 0) + { + UserInfo3->usri3_home_dir_drive = Ptr; + + memcpy(UserInfo3->usri3_home_dir_drive, + UserInfo->HomeDirectoryDrive.Buffer, + UserInfo->HomeDirectoryDrive.Length); + UserInfo3->usri3_home_dir_drive[UserInfo->HomeDirectoryDrive.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->HomeDirectoryDrive.Length + sizeof(WCHAR)); + } + + /* FIXME: usri3_password_expired */ + break; + // case 4: case 10: @@ -341,7 +623,7 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR)); } - /* FIXME: UserInfo10->usri10_usr_comment */ + /* FIXME: usri10_usr_comment */ if (UserInfo->FullName.Length > 0) { @@ -351,6 +633,8 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, UserInfo->FullName.Buffer, UserInfo->FullName.Length); UserInfo10->usri10_full_name[UserInfo->FullName.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->FullName.Length + sizeof(WCHAR)); } break; From b9a482f6fdda7eead7e8e18b90c314185c138a48 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 6 Jan 2013 10:08:10 +0000 Subject: [PATCH 67/96] =?UTF-8?q?[EXPLORER=5FNEW]=20-=20Correctly=20load?= =?UTF-8?q?=20and=20save=20advanced=20setting(s).=20Patch=20by=20Edijs=20K?= =?UTF-8?q?olesnikovi=C4=8Ds.=20CORE-6835=20#resolve?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit svn path=/trunk/; revision=58122 --- .../base/shell/explorer-new/CMakeLists.txt | 1 + reactos/base/shell/explorer-new/explorer.c | 1 + reactos/base/shell/explorer-new/precomp.h | 27 ++++++-- reactos/base/shell/explorer-new/settings.c | 66 +++++++++++++++++++ reactos/base/shell/explorer-new/trayntfy.c | 19 ------ reactos/base/shell/explorer-new/trayprop.c | 3 +- 6 files changed, 89 insertions(+), 28 deletions(-) create mode 100644 reactos/base/shell/explorer-new/settings.c diff --git a/reactos/base/shell/explorer-new/CMakeLists.txt b/reactos/base/shell/explorer-new/CMakeLists.txt index b2494a84a00..173c065bbfa 100644 --- a/reactos/base/shell/explorer-new/CMakeLists.txt +++ b/reactos/base/shell/explorer-new/CMakeLists.txt @@ -5,6 +5,7 @@ list(APPEND SOURCE desktop.c dragdrop.c explorer.c + settings.c startmnu.c taskband.c taskswnd.c diff --git a/reactos/base/shell/explorer-new/explorer.c b/reactos/base/shell/explorer-new/explorer.c index cfa01d19c12..7e77ff96c54 100644 --- a/reactos/base/shell/explorer-new/explorer.c +++ b/reactos/base/shell/explorer-new/explorer.c @@ -370,6 +370,7 @@ _tWinMain(IN HINSTANCE hInstance, hExplorerInstance = hInstance; hProcessHeap = GetProcessHeap(); + LoadAdvancedSettings(); hUser32 = GetModuleHandle(TEXT("USER32.DLL")); if (hUser32 != NULL) diff --git a/reactos/base/shell/explorer-new/precomp.h b/reactos/base/shell/explorer-new/precomp.h index 4c9ddd2db6c..47c84dc4981 100644 --- a/reactos/base/shell/explorer-new/precomp.h +++ b/reactos/base/shell/explorer-new/precomp.h @@ -26,13 +26,6 @@ #include "initguid.h" #include "undoc.h" -/* Structure to hold non-default options*/ -typedef struct _ADVANCED_SETTINGS { - BOOL bShowSeconds; -} ADVANCED_SETTINGS, *PADVANCED_SETTINGS; - -extern ADVANCED_SETTINGS AdvancedSettings; - /* dynamic imports due to lack of support in msvc linker libs */ typedef INT (APIENTRY *REGSHELLHOOK)(HWND, DWORD); #ifdef UNICODE @@ -241,6 +234,26 @@ TrayProcessMessages(IN OUT ITrayWindow *Tray); VOID TrayMessageLoop(IN OUT ITrayWindow *Tray); +/* + * settings.c + */ + +/* Structure to hold non-default options*/ +typedef struct _ADVANCED_SETTINGS { + BOOL bShowSeconds; +} ADVANCED_SETTINGS, *PADVANCED_SETTINGS; + +extern ADVANCED_SETTINGS AdvancedSettings; +extern const TCHAR szAdvancedSettingsKey[]; + +VOID +LoadAdvancedSettings(VOID); + +BOOL +SaveSettingDword(IN PCTSTR pszKeyName, + IN PCTSTR pszValueName, + IN DWORD dwValue); + /* * trayprop.h */ diff --git a/reactos/base/shell/explorer-new/settings.c b/reactos/base/shell/explorer-new/settings.c new file mode 100644 index 00000000000..3c17dd2af44 --- /dev/null +++ b/reactos/base/shell/explorer-new/settings.c @@ -0,0 +1,66 @@ +/* + * ReactOS Explorer + * + * Copyright 2013 - Edijs Kolesnikovics + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +ADVANCED_SETTINGS AdvancedSettings; +const TCHAR szAdvancedSettingsKey[] = TEXT("Software\\ReactOS\\Features\\Explorer"); + + +VOID +LoadAdvancedSettings(VOID) +{ + HKEY hKey; + + /* Set defaults */ + AdvancedSettings.bShowSeconds = FALSE; + + /* Check registry */ + if (RegOpenKey(HKEY_CURRENT_USER, szAdvancedSettingsKey, &hKey) == ERROR_SUCCESS) + { + DWORD dwValue, dwValueLength, dwType; + + dwValueLength = sizeof(dwValue); + if (RegQueryValueEx(hKey, TEXT("ShowSeconds"), NULL, &dwType, (PBYTE)&dwValue, &dwValueLength) == ERROR_SUCCESS && dwType == REG_DWORD) + AdvancedSettings.bShowSeconds = dwValue != 0; + + RegCloseKey(hKey); + } +} + +BOOL +SaveSettingDword(IN PCTSTR pszKeyName, + IN PCTSTR pszValueName, + IN DWORD dwValue) +{ + BOOL ret = FALSE; + HKEY hKey; + + if (RegCreateKey(HKEY_CURRENT_USER, pszKeyName, &hKey) == ERROR_SUCCESS) + { + ret = RegSetValueEx(hKey, pszValueName, 0, REG_DWORD, (PBYTE)&dwValue, sizeof(dwValue)) == ERROR_SUCCESS; + + RegCloseKey(hKey); + } + + return ret; +} + +/* EOF */ diff --git a/reactos/base/shell/explorer-new/trayntfy.c b/reactos/base/shell/explorer-new/trayntfy.c index 023973c0dab..971400afafe 100644 --- a/reactos/base/shell/explorer-new/trayntfy.c +++ b/reactos/base/shell/explorer-new/trayntfy.c @@ -701,25 +701,6 @@ static const struct { FALSE, DATE_SHORTDATE, NULL } }; -HRESULT RegGetDWord(HKEY hKey, LPCTSTR szValueName, DWORD * lpdwResult) -{ - LONG lResult; - DWORD dwDataSize = sizeof(DWORD); - DWORD dwType = 0; - - // Check input parameters... - if (hKey == NULL || lpdwResult == NULL) return E_INVALIDARG; - - // Get dword value from the registry... - lResult = RegQueryValueEx(hKey, szValueName, 0, &dwType, (LPBYTE) lpdwResult, &dwDataSize ); - - // Check result and make sure the registry value is a DWORD(REG_DWORD)... - if (lResult != ERROR_SUCCESS) return HRESULT_FROM_WIN32(lResult); - else if (dwType != REG_DWORD) return DISP_E_TYPEMISMATCH; - - return NOERROR; -} - #define CLOCKWND_FORMAT_COUNT (sizeof(ClockWndFormats) / sizeof(ClockWndFormats[0])) #define TRAY_CLOCK_WND_SPACING_X 0 diff --git a/reactos/base/shell/explorer-new/trayprop.c b/reactos/base/shell/explorer-new/trayprop.c index 28853d0d488..9b6981898ef 100644 --- a/reactos/base/shell/explorer-new/trayprop.c +++ b/reactos/base/shell/explorer-new/trayprop.c @@ -30,8 +30,6 @@ typedef struct _PROPSHEET_INFO HBITMAP hTaskbarBitmap; } PROPSHEET_INFO, *PPROPSHEET_INFO; -ADVANCED_SETTINGS AdvancedSettings = { FALSE }; - static BOOL UpdateTaskbarBitmap(PPROPSHEET_INFO pPropInfo) @@ -225,6 +223,7 @@ AdvancedSettingsPageProc(HWND hwndDlg, case PSN_APPLY: AdvancedSettings.bShowSeconds = IsDlgButtonChecked(hwndDlg, IDC_TASKBARPROP_SECONDS); + SaveSettingDword(szAdvancedSettingsKey, TEXT("ShowSeconds"), AdvancedSettings.bShowSeconds); break; } From 6effe35b248a706447f2336ab02ac96f13b0246d Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 6 Jan 2013 10:12:39 +0000 Subject: [PATCH 68/96] [EXPLORER_NEW] - Plug a memory leak in IDropTargetImpl - Do not allocate 64x the required space in TaskSwitchWnd_AllocTaskItem - Properly free and unregister the tray window - Fix a few more style issues svn path=/trunk/; revision=58123 --- reactos/base/shell/explorer-new/dragdrop.c | 13 +++++---- reactos/base/shell/explorer-new/explorer.c | 6 +++- reactos/base/shell/explorer-new/startmnu.c | 28 +++++++++--------- reactos/base/shell/explorer-new/taskband.c | 2 +- reactos/base/shell/explorer-new/taskswnd.c | 32 ++++++++++---------- reactos/base/shell/explorer-new/trayntfy.c | 34 ++++++++++++---------- reactos/base/shell/explorer-new/trayprop.c | 6 ++-- reactos/base/shell/explorer-new/traywnd.c | 27 ++++++++--------- 8 files changed, 78 insertions(+), 70 deletions(-) diff --git a/reactos/base/shell/explorer-new/dragdrop.c b/reactos/base/shell/explorer-new/dragdrop.c index c0fc1e43bf6..2afb664d9c9 100644 --- a/reactos/base/shell/explorer-new/dragdrop.c +++ b/reactos/base/shell/explorer-new/dragdrop.c @@ -62,6 +62,9 @@ static VOID IDropTargetImpl_Free(IDropTargetImpl *This) { IDropTargetHelper_Release(This->DropTargetHelper); + HeapFree(hProcessHeap, + 0, + This); } static ULONG STDMETHODCALLTYPE @@ -127,10 +130,10 @@ CreateDropTarget(IN HWND hwndTarget, IDropTargetImpl *This; HRESULT hr; - This = (IDropTargetImpl *)HeapAlloc(hProcessHeap, - 0, - FIELD_OFFSET(IDropTargetImpl, - Formats[nSupportedFormats])); + This = HeapAlloc(hProcessHeap, + 0, + FIELD_OFFSET(IDropTargetImpl, + Formats[nSupportedFormats])); if (This != NULL) { ZeroMemory(This, @@ -159,7 +162,7 @@ CreateDropTarget(IN HWND hwndTarget, NULL, CLSCTX_INPROC_SERVER, &IID_IDropTargetHelper, - (PVOID)&This->DropTargetHelper); + (PVOID *)&This->DropTargetHelper); if (!SUCCEEDED(hr)) { diff --git a/reactos/base/shell/explorer-new/explorer.c b/reactos/base/shell/explorer-new/explorer.c index 7e77ff96c54..e4e683a1019 100644 --- a/reactos/base/shell/explorer-new/explorer.c +++ b/reactos/base/shell/explorer-new/explorer.c @@ -311,7 +311,7 @@ GetVersionInfoString(IN TCHAR *szFileName, (LPVOID *)&lpTranslate, &cbTranslate); - for (i = 0;i < (cbTranslate / sizeof(LANGCODEPAGE));i++) + for (i = 0; i < cbTranslate / sizeof(LANGCODEPAGE); i++) { /* If the bottom eight bits of the language id's match, use this version information (since this @@ -410,7 +410,11 @@ _tWinMain(IN HINSTANCE hInstance, } if (Tray != NULL) + { TrayMessageLoop(Tray); + ITrayWindow_Release(Tray); + UnregisterTrayWindowClass(); + } if (hShellDesktop != NULL) DesktopDestroyShellWindow(hShellDesktop); diff --git a/reactos/base/shell/explorer-new/startmnu.c b/reactos/base/shell/explorer-new/startmnu.c index d18b2617a55..799104c7ad7 100644 --- a/reactos/base/shell/explorer-new/startmnu.c +++ b/reactos/base/shell/explorer-new/startmnu.c @@ -59,10 +59,10 @@ CreateContextMenuFromShellFolderPidl(IN HWND hWndOwner, hRet = IShellFolder_GetUIObjectOf(psf, hWndOwner, 1, - (LPCITEMIDLIST*)&pidl, /* FIXME: shouldn't need a typecast! */ + (LPCITEMIDLIST *)&pidl, &IID_IContextMenu, NULL, - (PVOID*)&pcm); + (PVOID *)&pcm); if (SUCCEEDED(hRet)) { hPopup = CreatePopupMenu(); @@ -82,9 +82,10 @@ CreateContextMenuFromShellFolderPidl(IN HWND hWndOwner, return hPopup; } - IContextMenu_Release(pcm); DestroyMenu(hPopup); } + + IContextMenu_Release(pcm); } return NULL; @@ -96,7 +97,7 @@ OnStartContextMenuCommand(IN HWND hWndOwner, IN PVOID pcmContext OPTIONAL, IN PVOID Context OPTIONAL) { - PSTARTMNU_CTMENU_CTX psmcmc = (PSTARTMNU_CTMENU_CTX)pcmContext; + PSTARTMNU_CTMENU_CTX psmcmc = pcmContext; if (uiCmdId != 0) { @@ -231,7 +232,7 @@ CreateStartContextMenu(IN HWND hWndOwner, hRet = IShellFolder_BindToObject(psfDesktop, pidlStart, NULL, - (REFIID)&IID_IShellFolder, /* FIXME: Shouldn't require a typecast */ + &IID_IShellFolder, (PVOID*)&psfStart); if (SUCCEEDED(hRet)) { @@ -255,7 +256,7 @@ CreateStartContextMenu(IN HWND hWndOwner, AddStartContextMenuItems(hWndOwner, hPopup); - *((PSTARTMNU_CTMENU_CTX*)ppcmContext) = psmcmc; + *ppcmContext = psmcmc; return hPopup; } else @@ -815,12 +816,11 @@ UpdateStartMenu(IN OUT IMenuPopup *pMenuPopup, hRet = IMenuPopup_QueryInterface(pMenuPopup, &IID_IBanneredBar, - (PVOID)&pbb); + (PVOID *)&pbb); if (SUCCEEDED(hRet)) { hRet = IBanneredBar_SetBitmap(pbb, hbmBanner); - /* Update the icon size */ hRet = IBanneredBar_SetIconSize(pbb, bSmallIcons ? BMICON_SMALL : BMICON_LARGE); @@ -831,7 +831,7 @@ UpdateStartMenu(IN OUT IMenuPopup *pMenuPopup, return hRet; } -IMenuPopup* +IMenuPopup * CreateStartMenu(IN ITrayWindow *Tray, OUT IMenuBand **ppMenuBand, IN HBITMAP hbmBanner OPTIONAL, @@ -855,7 +855,7 @@ CreateStartMenu(IN ITrayWindow *Tray, NULL, CLSCTX_INPROC_SERVER, &IID_IMenuPopup, - (PVOID*)&pMp); + (PVOID *)&pMp); if (FAILED(hr)) { DbgPrint("CoCreateInstance failed: %x\n", hr); @@ -864,7 +864,7 @@ CreateStartMenu(IN ITrayWindow *Tray, hr = IMenuPopup_QueryInterface(pMp, &IID_IObjectWithSite, - (PVOID*)&pOws); + (PVOID *)&pOws); if (FAILED(hr)) { DbgPrint("IMenuPopup_QueryInterface failed: %x\n", hr); @@ -872,7 +872,7 @@ CreateStartMenu(IN ITrayWindow *Tray, } /* Set the menu site so we can handle messages */ - hr = IObjectWithSite_SetSite(pOws, (IUnknown*)pSms); + hr = IObjectWithSite_SetSite(pOws, (IUnknown *)pSms); if (FAILED(hr)) { DbgPrint("IObjectWithSite_SetSite failed: %x\n", hr); @@ -903,7 +903,7 @@ CreateStartMenu(IN ITrayWindow *Tray, goto cleanup; } - hr = IUnknown_QueryInterface(pUnk, &IID_IBandSite, (PVOID*)&pBs); + hr = IUnknown_QueryInterface(pUnk, &IID_IBandSite, (PVOID *)&pBs); if (FAILED(hr)) { DbgPrint("IUnknown_QueryInterface pBs failed: %x\n", hr); @@ -919,7 +919,7 @@ CreateStartMenu(IN ITrayWindow *Tray, goto cleanup; } - hr = IBandSite_GetBandObject(pBs, dwBandId, &IID_IMenuBand, (PVOID*)&pMb); + hr = IBandSite_GetBandObject(pBs, dwBandId, &IID_IMenuBand, (PVOID *)&pMb); if (FAILED(hr)) { DbgPrint("IBandSite_GetBandObject failed: %x\n", hr); diff --git a/reactos/base/shell/explorer-new/taskband.c b/reactos/base/shell/explorer-new/taskband.c index 541e214f289..bdb1425c8e2 100644 --- a/reactos/base/shell/explorer-new/taskband.c +++ b/reactos/base/shell/explorer-new/taskband.c @@ -506,7 +506,7 @@ ITaskBandImpl_SetSite(IN OUT IObjectWithSite *iface, /* Check if the site supports IOleWindow */ hRet = IUnknown_QueryInterface(pUnkSite, &IID_IOleWindow, - (PVOID*)&OleWindow); + (PVOID *)&OleWindow); if (SUCCEEDED(hRet)) { HWND hWndParent = NULL; diff --git a/reactos/base/shell/explorer-new/taskswnd.c b/reactos/base/shell/explorer-new/taskswnd.c index 19f1e5e6b3a..aed9793db3e 100644 --- a/reactos/base/shell/explorer-new/taskswnd.c +++ b/reactos/base/shell/explorer-new/taskswnd.c @@ -852,7 +852,19 @@ TaskSwitchWnd_AllocTaskItem(IN OUT PTASK_SWITCH_WND This) ASSERT(This->AllocatedTaskItems >= This->TaskItemCount); - if (This->TaskItemCount != 0) + if (This->TaskItemCount == 0) + { + This->TaskItems = HeapAlloc(hProcessHeap, + 0, + TASK_ITEM_ARRAY_ALLOC * sizeof(*This->TaskItems)); + if (This->TaskItems != NULL) + { + This->AllocatedTaskItems = TASK_ITEM_ARRAY_ALLOC; + } + else + return NULL; + } + else if (This->TaskItemCount >= This->AllocatedTaskItems) { PTASK_ITEM NewArray; SIZE_T NewArrayLength, ActiveTaskItemIndex; @@ -877,18 +889,6 @@ TaskSwitchWnd_AllocTaskItem(IN OUT PTASK_SWITCH_WND This) else return NULL; } - else - { - This->TaskItems = HeapAlloc(hProcessHeap, - 0, - TASK_ITEM_ARRAY_ALLOC * sizeof(*This->TaskItems)); - if (This->TaskItems != NULL) - { - This->AllocatedTaskItems = TASK_ITEM_ARRAY_ALLOC; - } - else - return NULL; - } return This->TaskItems + This->TaskItemCount++; } @@ -2073,9 +2073,9 @@ ForwardContextMenuMsg: case WM_NCCREATE: { LPCREATESTRUCT CreateStruct = (LPCREATESTRUCT)lParam; - This = (PTASK_SWITCH_WND)HeapAlloc(hProcessHeap, - 0, - sizeof(*This)); + This = HeapAlloc(hProcessHeap, + 0, + sizeof(*This)); if (This == NULL) return FALSE; diff --git a/reactos/base/shell/explorer-new/trayntfy.c b/reactos/base/shell/explorer-new/trayntfy.c index 971400afafe..b883a33c395 100644 --- a/reactos/base/shell/explorer-new/trayntfy.c +++ b/reactos/base/shell/explorer-new/trayntfy.c @@ -239,7 +239,6 @@ SysPagerWnd_RemoveButton(IN OUT PSYS_PAGER_WND_DATA This, PNOTIFY_ITEM updateItem; deleteItem = *NotifyPointer; - SendMessage(This->hWndToolbar, TB_DELETEBUTTON, deleteItem->Index, @@ -611,16 +610,16 @@ static HWND CreateSysPagerWnd(IN HWND hWndParent, IN BOOL bVisible) { - PSYS_PAGER_WND_DATA TcData; + PSYS_PAGER_WND_DATA SpData; DWORD dwStyle; HWND hWnd = NULL; - TcData = HeapAlloc(hProcessHeap, + SpData = HeapAlloc(hProcessHeap, 0, - sizeof(*TcData)); - if (TcData != NULL) + sizeof(*SpData)); + if (SpData != NULL) { - ZeroMemory(TcData, sizeof(*TcData)); + ZeroMemory(SpData, sizeof(*SpData)); /* Create the window. The tray window is going to move it to the correct position and resize it as needed. */ @@ -639,18 +638,20 @@ CreateSysPagerWnd(IN HWND hWndParent, hWndParent, NULL, hExplorerInstance, - TcData); + SpData); - if (hWnd == NULL) + if (hWnd != NULL) + { + SetWindowTheme(hWnd, L"TrayNotify", NULL); + } + else { HeapFree(hProcessHeap, 0, - TcData); + SpData); } } - SetWindowTheme(hWnd, L"TrayNotify", NULL); - return hWnd; } @@ -1381,16 +1382,19 @@ CreateTrayClockWnd(IN HWND hWndParent, hWndParent, NULL, hExplorerInstance, - (LPVOID)TcData); + TcData); - if (hWnd == NULL) + if (hWnd != NULL) + { + SetWindowTheme(hWnd, L"TrayNotify", NULL); + } + else { HeapFree(hProcessHeap, 0, TcData); } } - SetWindowTheme(hWnd, L"TrayNotify", NULL); return hWnd; @@ -1860,7 +1864,7 @@ CreateTrayNotifyWnd(IN OUT ITrayWindow *TrayWindow, hWndTrayWindow, NULL, hExplorerInstance, - (LPVOID)TnData); + TnData); if (hWnd == NULL) { diff --git a/reactos/base/shell/explorer-new/trayprop.c b/reactos/base/shell/explorer-new/trayprop.c index 9b6981898ef..365f177b54e 100644 --- a/reactos/base/shell/explorer-new/trayprop.c +++ b/reactos/base/shell/explorer-new/trayprop.c @@ -369,9 +369,9 @@ DisplayTrayProperties(ITrayWindow *Tray) PROPSHEETPAGE psp[5]; TCHAR szCaption[256]; - pPropInfo = (PPROPSHEET_INFO)HeapAlloc(hProcessHeap, - HEAP_ZERO_MEMORY, - sizeof(PROPSHEET_INFO)); + pPropInfo = HeapAlloc(hProcessHeap, + HEAP_ZERO_MEMORY, + sizeof(PROPSHEET_INFO)); if (!pPropInfo) { return NULL; diff --git a/reactos/base/shell/explorer-new/traywnd.c b/reactos/base/shell/explorer-new/traywnd.c index 87cfac06f53..4526aeb830e 100644 --- a/reactos/base/shell/explorer-new/traywnd.c +++ b/reactos/base/shell/explorer-new/traywnd.c @@ -2769,23 +2769,20 @@ TrayMessageLoop(IN OUT ITrayWindow *Tray) while (1) { - Ret = (GetMessage(&Msg, - NULL, - 0, - 0) != 0); + Ret = GetMessage(&Msg, + NULL, + 0, + 0); - if (Ret != -1) + if (!Ret || Ret == -1) + break; + + if (This->StartMenuBand == NULL || + IMenuBand_IsMenuMessage(This->StartMenuBand, + &Msg) != S_OK) { - if (!Ret) - break; - - if (This->StartMenuBand == NULL || - IMenuBand_IsMenuMessage(This->StartMenuBand, - &Msg) != S_OK) - { - TranslateMessage(&Msg); - DispatchMessage(&Msg); - } + TranslateMessage(&Msg); + DispatchMessage(&Msg); } } } From 81f292a1fefafebcb44c2474303733c58e31de52 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 6 Jan 2013 10:36:49 +0000 Subject: [PATCH 69/96] =?UTF-8?q?[EXPLORER=5FNEW]=20-=20Move=20"Show=20win?= =?UTF-8?q?dow=20previews=20(thumbnails)"=20option=20to=20advanced=20tab,?= =?UTF-8?q?=20as=20it=20doesn't=20exist=20in=20Windows.=20Patch=20by=20Edi?= =?UTF-8?q?js=20Kolesnikovi=C4=8Ds.=20CORE-6840=20#resolve?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit svn path=/trunk/; revision=58124 --- reactos/base/shell/explorer-new/lang/bg-BG.rc | 4 ++-- reactos/base/shell/explorer-new/lang/cs-CZ.rc | 4 ++-- reactos/base/shell/explorer-new/lang/de-DE.rc | 4 ++-- reactos/base/shell/explorer-new/lang/en-US.rc | 4 ++-- reactos/base/shell/explorer-new/lang/es-ES.rc | 4 ++-- reactos/base/shell/explorer-new/lang/fr-FR.rc | 4 ++-- reactos/base/shell/explorer-new/lang/it-IT.rc | 4 ++-- reactos/base/shell/explorer-new/lang/ja-JP.rc | 4 ++-- reactos/base/shell/explorer-new/lang/ko-KR.rc | 4 ++-- reactos/base/shell/explorer-new/lang/lt-LT.rc | 4 ++-- reactos/base/shell/explorer-new/lang/nl-NL.rc | 4 ++-- reactos/base/shell/explorer-new/lang/no-NO.rc | 4 ++-- reactos/base/shell/explorer-new/lang/pl-PL.rc | 4 ++-- reactos/base/shell/explorer-new/lang/pt-BR.rc | 4 ++-- reactos/base/shell/explorer-new/lang/ro-RO.rc | 4 ++-- reactos/base/shell/explorer-new/lang/ru-RU.rc | 4 ++-- reactos/base/shell/explorer-new/lang/sk-SK.rc | 4 ++-- reactos/base/shell/explorer-new/lang/uk-UA.rc | 4 ++-- reactos/base/shell/explorer-new/lang/zh-CN.rc | 4 ++-- 19 files changed, 38 insertions(+), 38 deletions(-) diff --git a/reactos/base/shell/explorer-new/lang/bg-BG.rc b/reactos/base/shell/explorer-new/lang/bg-BG.rc index 68de01a2363..2f1894036cb 100644 --- a/reactos/base/shell/explorer-new/lang/bg-BG.rc +++ b/reactos/base/shell/explorer-new/lang/bg-BG.rc @@ -70,14 +70,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Taskbar" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Облик на задачната лента", IDC_STATIC, 6,6,240,121 + GROUPBOX "Облик на задачната лента", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "За&ключванена задачната лента", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "Задачната лента се крие &сама", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "Задачната лента стои &върху останалите прозорци", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Скупчване на сходните бутони в задачната лента", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Показване на &бърз пуск", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "&Показване на преглед на прозорците (изображенийца)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -131,6 +130,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "&Показване на преглед на прозорците (изображенийца)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/cs-CZ.rc b/reactos/base/shell/explorer-new/lang/cs-CZ.rc index 018d15b31a7..bd80de3caac 100644 --- a/reactos/base/shell/explorer-new/lang/cs-CZ.rc +++ b/reactos/base/shell/explorer-new/lang/cs-CZ.rc @@ -74,14 +74,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Hlavní panel" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Vzhled hlavního panelu", IDC_STATIC, 6,6,240,121 + GROUPBOX "Vzhled hlavního panelu", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "Uzamknout &hlavní panel", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "&Automaticky sktývat hlavní panel", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "&Zobrazit hlavní panel nad ostatními okny", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Seskupovat podobná tlačítka hlavního panelu", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Zobrazit &panel Snadné spuštění", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "Zobrazit &náhledy oken", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -135,6 +134,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "Zobrazit &náhledy oken", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/de-DE.rc b/reactos/base/shell/explorer-new/lang/de-DE.rc index a2394109b2e..dc3ab03f3d3 100644 --- a/reactos/base/shell/explorer-new/lang/de-DE.rc +++ b/reactos/base/shell/explorer-new/lang/de-DE.rc @@ -68,14 +68,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Taskleiste" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Taskleiste", IDC_STATIC, 6,6,240,121 + GROUPBOX "Taskleiste", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "Task&leiste fixieren", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "Taskleiste a&utom. verstecken", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "&Taskleiste immer im Vordergrund halten", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "Ähnliche Buttons &gruppieren", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Schnellstartleiste &anzeigen", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "Fenstervor&schau anzeigen", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -129,6 +128,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "Fenstervor&schau anzeigen", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/en-US.rc b/reactos/base/shell/explorer-new/lang/en-US.rc index 7615992d72e..0326e713eec 100644 --- a/reactos/base/shell/explorer-new/lang/en-US.rc +++ b/reactos/base/shell/explorer-new/lang/en-US.rc @@ -68,14 +68,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Taskbar" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Taskbar appearance", IDC_STATIC, 6,6,240,121 + GROUPBOX "Taskbar appearance", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "&Lock the taskbar", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "A&uto-hide the taskbar", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "Keep the &taskbar on top of other windows", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Group similar taskbar buttons", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Show &Quick Launch", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "&Show window previews (thumbnails)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -129,6 +128,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "&Show window previews (thumbnails)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/es-ES.rc b/reactos/base/shell/explorer-new/lang/es-ES.rc index 57683585395..974b537f339 100644 --- a/reactos/base/shell/explorer-new/lang/es-ES.rc +++ b/reactos/base/shell/explorer-new/lang/es-ES.rc @@ -77,14 +77,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Barra de tareas" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Apariencia de la Barra de tareas ", IDC_STATIC, 6,6,240,121 + GROUPBOX "Apariencia de la Barra de tareas ", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "&Bloquear la barra de tareas", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "Ocultar automáticam&ente la barra de tareas", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "Mantener la barra de tareas &siempre visible", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Agrupar botones similares de la barra de tareas", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Mostrar Inicio rápi&do", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "M&ostrar vista previa de las ventanas (miniaturas)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -138,6 +137,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "M&ostrar vista previa de las ventanas (miniaturas)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/fr-FR.rc b/reactos/base/shell/explorer-new/lang/fr-FR.rc index 3343f96d67b..dc9d0899e96 100644 --- a/reactos/base/shell/explorer-new/lang/fr-FR.rc +++ b/reactos/base/shell/explorer-new/lang/fr-FR.rc @@ -77,14 +77,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Taskbar" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Taskbar appearance", IDC_STATIC, 6,6,240,121 + GROUPBOX "Taskbar appearance", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "&Lock the taskbar", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "A&uto-hide the taskbar", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "Keep the &taskbar on top of other windows", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Group similar taskbar buttons", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Show &Quick Launch", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "&Show window previews (thumbnails)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -138,6 +137,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "&Show window previews (thumbnails)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/it-IT.rc b/reactos/base/shell/explorer-new/lang/it-IT.rc index 9c578b1802f..49c0ec2adcd 100644 --- a/reactos/base/shell/explorer-new/lang/it-IT.rc +++ b/reactos/base/shell/explorer-new/lang/it-IT.rc @@ -68,14 +68,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Barra delle applicazioni" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Aspetto della Barra delle applicazioni", IDC_STATIC, 6,6,240,121 + GROUPBOX "Aspetto della Barra delle applicazioni", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "&Bloccare la Barra delle applicazioni", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "N&ascondere automaticamente", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "Mantenere la Barra delle applicazioni in &primo piano", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Raggruppare pulsanti simili", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Mostrare Avvio &veloce", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "&Mostrare anteprima delle finestre (miniature)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -129,6 +128,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "&Mostrare anteprima delle finestre (miniature)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/ja-JP.rc b/reactos/base/shell/explorer-new/lang/ja-JP.rc index e855945b9bf..87c62a1352d 100644 --- a/reactos/base/shell/explorer-new/lang/ja-JP.rc +++ b/reactos/base/shell/explorer-new/lang/ja-JP.rc @@ -68,14 +68,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "タスクバー" FONT 9, "MS UI Gothic", 0, 0, 0x1 BEGIN - GROUPBOX "タスクバーの外観", IDC_STATIC, 6,6,240,121 + GROUPBOX "タスクバーの外観", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "タスクバーを固定する(&L)", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "タスクバーを自動的に隠す(&U)", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "タスクバーを他のウインドウ上に保つ(&T)", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "類似するタスクバーボタンをグループ化する(&G)", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "クイック起動の表示(&Q)", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "ウインドウのプレビューを表示する(サムネイル)(&S)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -129,6 +128,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "ウインドウのプレビューを表示する(サムネイル)(&S)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/ko-KR.rc b/reactos/base/shell/explorer-new/lang/ko-KR.rc index ce6179af88c..cd38d0cd29e 100644 --- a/reactos/base/shell/explorer-new/lang/ko-KR.rc +++ b/reactos/base/shell/explorer-new/lang/ko-KR.rc @@ -82,14 +82,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Taskbar" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Taskbar appearance", IDC_STATIC, 6,6,240,121 + GROUPBOX "Taskbar appearance", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "&Lock the taskbar", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "A&uto-hide the taskbar", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "Keep the &taskbar on top of other windows", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Group similar taskbar buttons", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Show &Quick Launch", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "&Show window previews (thumbnails)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -143,6 +142,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "&Show window previews (thumbnails)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/lt-LT.rc b/reactos/base/shell/explorer-new/lang/lt-LT.rc index 9203d474fb5..3972b876e0f 100644 --- a/reactos/base/shell/explorer-new/lang/lt-LT.rc +++ b/reactos/base/shell/explorer-new/lang/lt-LT.rc @@ -72,14 +72,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Taskbar" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Taskbar appearance", IDC_STATIC, 6,6,240,121 + GROUPBOX "Taskbar appearance", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "&Lock the taskbar", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "A&uto-hide the taskbar", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "Keep the &taskbar on top of other windows", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Group similar taskbar buttons", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Show &Quick Launch", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "&Show window previews (thumbnails)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -133,6 +132,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Rodyti s&ekundes", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "&Show window previews (thumbnails)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END STRINGTABLE DISCARDABLE diff --git a/reactos/base/shell/explorer-new/lang/nl-NL.rc b/reactos/base/shell/explorer-new/lang/nl-NL.rc index 5f301ecd40a..fce494b493f 100644 --- a/reactos/base/shell/explorer-new/lang/nl-NL.rc +++ b/reactos/base/shell/explorer-new/lang/nl-NL.rc @@ -68,14 +68,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Taakbalk" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Taakbalkweergave", IDC_STATIC, 6,6,240,121 + GROUPBOX "Taakbalkweergave", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "Taakbalk &vergrendelen", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "Taakbalk a&utomatisch verbergen", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "Taakbalk altijd o&p voorgrond weergeven", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Gelijksoortige knoppen gegroepeerd weergeven", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Werkbalk &Snel starten weergeven", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "Venstervoorbeelden (miniatuurweergaven) &weergeven", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -129,6 +128,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "Venstervoorbeelden (miniatuurweergaven) &weergeven", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END STRINGTABLE DISCARDABLE diff --git a/reactos/base/shell/explorer-new/lang/no-NO.rc b/reactos/base/shell/explorer-new/lang/no-NO.rc index 0b9da8e3cba..e787a871f34 100644 --- a/reactos/base/shell/explorer-new/lang/no-NO.rc +++ b/reactos/base/shell/explorer-new/lang/no-NO.rc @@ -77,14 +77,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Oppgavelinje" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Oppgavelinjens egenskaper", IDC_STATIC, 6,6,240,121 + GROUPBOX "Oppgavelinjens egenskaper", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "&Lås oppgavelinjen", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "&Skjul oppgavelinjen automatisk", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "Behold &oppgavelinjen på toppen over andre vinduer", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Grupper og lignende knapper på oppgavelinjen", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Vis &hurtigstart", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "&Vis vinduforhåndvisning (miniaturbilde)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -138,6 +137,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "&Vis vinduforhåndvisning (miniaturbilde)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/pl-PL.rc b/reactos/base/shell/explorer-new/lang/pl-PL.rc index e4b4aa02d2f..0f95a009df6 100644 --- a/reactos/base/shell/explorer-new/lang/pl-PL.rc +++ b/reactos/base/shell/explorer-new/lang/pl-PL.rc @@ -77,14 +77,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Pasek zadań" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Wygląd paska zadań", IDC_STATIC, 6,6,240,121 + GROUPBOX "Wygląd paska zadań", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "&Zablokuj pasek zadań", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "A&utomatyczne ukrywanie paska zadań", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "Zawsze &na wierzchu", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Grupuj programy w pasku zadań", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Pokaż pasek &Szybkiego uruchamiania", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "&Pokaż podgląd okien (miniaturki)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -138,6 +137,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "&Pokaż podgląd okien (miniaturki)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/pt-BR.rc b/reactos/base/shell/explorer-new/lang/pt-BR.rc index e0e319d1652..c896497dda0 100644 --- a/reactos/base/shell/explorer-new/lang/pt-BR.rc +++ b/reactos/base/shell/explorer-new/lang/pt-BR.rc @@ -70,14 +70,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Barra de Tarefas" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Aparência da barra de tarefas", IDC_STATIC, 6,6,240,121 + GROUPBOX "Aparência da barra de tarefas", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "&Bloquear a barra de tarefas", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "&Ocultar automaticamente a barra de tarefas", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "&Manter barra de tarefas sobre outros janelas", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Agrupar botões similares da barra de tarefas", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "&Exibir Inicialização Rápida", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "E&xibir miniaturas (thumbnails)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -131,6 +130,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "E&xibir miniaturas (thumbnails)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/ro-RO.rc b/reactos/base/shell/explorer-new/lang/ro-RO.rc index 166d4d7672c..78b1b43dc7f 100644 --- a/reactos/base/shell/explorer-new/lang/ro-RO.rc +++ b/reactos/base/shell/explorer-new/lang/ro-RO.rc @@ -69,14 +69,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Bară de activități" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Aspectul barei de activități", IDC_STATIC, 6,6,240,121 + GROUPBOX "Aspectul barei de activități", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "&Fixează bara de activități", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "A&uto-ascunde bara de activități", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "Menține bara de ac&tivități deasupra celorlalte ferestre", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Grupează butoanele similare din bara de activități", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Arată bara &Lansărilor rapide", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "&Prezintă miniaturi ale ferestrelor", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -130,6 +129,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "&Prezintă miniaturi ale ferestrelor", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/ru-RU.rc b/reactos/base/shell/explorer-new/lang/ru-RU.rc index 675c6121eb4..66be5486fc0 100644 --- a/reactos/base/shell/explorer-new/lang/ru-RU.rc +++ b/reactos/base/shell/explorer-new/lang/ru-RU.rc @@ -70,14 +70,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Панель задач" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Свойства панели задач", IDC_STATIC, 6,6,240,121 + GROUPBOX "Свойства панели задач", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "&Закрепить панель задач", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "&Автоматически скрывать панель задач", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "&Поверх других окон", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Группировать схожие кнопки", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Отображать панель &быстрого запуска", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "Отобра&жать образцы окон (эскизы)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -131,6 +130,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "Отобра&жать образцы окон (эскизы)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/sk-SK.rc b/reactos/base/shell/explorer-new/lang/sk-SK.rc index a88cb68a627..b7aaa00c4b6 100644 --- a/reactos/base/shell/explorer-new/lang/sk-SK.rc +++ b/reactos/base/shell/explorer-new/lang/sk-SK.rc @@ -73,14 +73,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Panel úloh" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Vzhľad panela úloh", IDC_STATIC, 6,6,240,121 + GROUPBOX "Vzhľad panela úloh", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "Za&mknúť panel úloh", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "A&utomaticky skývať panel úloh", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "Zo&brazovať panel úloh nad ostatnými oknami", IDC_TASKBARPROP_ONTOP, 13,71,200,10 //Ponechať panel úloh nad ostatnými oknami AUTOCHECKBOX "&Zoskupovať podobné tlačidlá na paneli s nástrojmi", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Zobraziť panel &Rýchle spustenie", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "Z&obraziť náhľady okien (miniatúry)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -134,6 +133,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "Z&obraziť náhľady okien (miniatúry)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/uk-UA.rc b/reactos/base/shell/explorer-new/lang/uk-UA.rc index 2d16e464d8f..6f7e0eaeeea 100644 --- a/reactos/base/shell/explorer-new/lang/uk-UA.rc +++ b/reactos/base/shell/explorer-new/lang/uk-UA.rc @@ -76,14 +76,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Панель задач" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Властивості панелі задач", IDC_STATIC, 6,6,240,121 + GROUPBOX "Властивості панелі задач", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "&Заборонити панель задач", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "&Автоматично приховувати панель задач", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "&Поверх інших вікон", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "&Групувати схожі кнопки", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "Відображати панель &швидкого запуску", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "&Відображати зразки вікон (ескізи)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -137,6 +136,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "&Відображати зразки вікон (ескізи)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END diff --git a/reactos/base/shell/explorer-new/lang/zh-CN.rc b/reactos/base/shell/explorer-new/lang/zh-CN.rc index d09a0ea1821..bacc6b2d02e 100644 --- a/reactos/base/shell/explorer-new/lang/zh-CN.rc +++ b/reactos/base/shell/explorer-new/lang/zh-CN.rc @@ -76,14 +76,13 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "任务栏" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "任务栏外观", IDC_STATIC, 6,6,240,121 + GROUPBOX "任务栏外观", IDC_STATIC, 6,6,240,104 CONTROL "", IDC_TASKBARPROP_TASKBARBITMAP, "Static", SS_BITMAP | SS_SUNKEN, 13,18,224,21 AUTOCHECKBOX "锁定任务栏(&L)", IDC_TASKBARPROP_LOCK, 13,45,200,10 AUTOCHECKBOX "自动隐藏任务栏(&U)", IDC_TASKBARPROP_HIDE, 13,58,200,10 AUTOCHECKBOX "保持任务栏在其他窗口之上(&T)", IDC_TASKBARPROP_ONTOP, 13,71,200,10 AUTOCHECKBOX "分组相似按钮(&G)", IDC_TASKBARPROP_GROUP, 13,84,200,10 AUTOCHECKBOX "显示快速启动(&Q)", IDC_TASKBARPROP_SHOWQL, 13,97,200,10 - AUTOCHECKBOX "显示窗口预览(&S)", IDC_TASKBARPROP_WNDPREV, 13,110,200,10 END IDD_TASKBARPROP_STARTMENU DIALOGEX 0, 0, 252, 218 @@ -137,6 +136,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN GROUPBOX "Advanced options", IDC_STATIC, 6,6,240,121 AUTOCHECKBOX "Show s&econds", IDC_TASKBARPROP_SECONDS, 13,18,200,10 + AUTOCHECKBOX "显示窗口预览(&S)", IDC_TASKBARPROP_WNDPREV, 13,31,200,10 END From dc303b40f85668a26d8f5755923d7011302dc4be Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 6 Jan 2013 10:45:46 +0000 Subject: [PATCH 70/96] [NETAPI32] Fix indentation. No code changes! svn path=/trunk/; revision=58125 --- reactos/dll/win32/netapi32/user.c | 98 +++++++++++++++---------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/reactos/dll/win32/netapi32/user.c b/reactos/dll/win32/netapi32/user.c index 2e30abc7a26..19ee18c91bd 100644 --- a/reactos/dll/win32/netapi32/user.c +++ b/reactos/dll/win32/netapi32/user.c @@ -301,73 +301,73 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, switch (level) { - case 0: - UserInfo0 = (PUSER_INFO_0)LocalBuffer; + case 0: + UserInfo0 = (PUSER_INFO_0)LocalBuffer; - Ptr = (LPWSTR)((ULONG_PTR)UserInfo0 + sizeof(USER_INFO_0)); - UserInfo0->usri0_name = Ptr; + Ptr = (LPWSTR)((ULONG_PTR)UserInfo0 + sizeof(USER_INFO_0)); + UserInfo0->usri0_name = Ptr; - memcpy(UserInfo0->usri0_name, - UserInfo->UserName.Buffer, - UserInfo->UserName.Length); - UserInfo0->usri0_name[UserInfo->UserName.Length / sizeof(WCHAR)] = UNICODE_NULL; - break; + memcpy(UserInfo0->usri0_name, + UserInfo->UserName.Buffer, + UserInfo->UserName.Length); + UserInfo0->usri0_name[UserInfo->UserName.Length / sizeof(WCHAR)] = UNICODE_NULL; + break; - case 1: - UserInfo1 = (PUSER_INFO_1)LocalBuffer; + case 1: + UserInfo1 = (PUSER_INFO_1)LocalBuffer; - Ptr = (LPWSTR)((ULONG_PTR)UserInfo1 + sizeof(USER_INFO_1)); + Ptr = (LPWSTR)((ULONG_PTR)UserInfo1 + sizeof(USER_INFO_1)); - UserInfo1->usri1_name = Ptr; + UserInfo1->usri1_name = Ptr; - memcpy(UserInfo1->usri1_name, - UserInfo->UserName.Buffer, - UserInfo->UserName.Length); - UserInfo1->usri1_name[UserInfo->UserName.Length / sizeof(WCHAR)] = UNICODE_NULL; + memcpy(UserInfo1->usri1_name, + UserInfo->UserName.Buffer, + UserInfo->UserName.Length); + UserInfo1->usri1_name[UserInfo->UserName.Length / sizeof(WCHAR)] = UNICODE_NULL; - Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->UserName.Length + sizeof(WCHAR)); + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->UserName.Length + sizeof(WCHAR)); - UserInfo1->usri1_password = NULL; + UserInfo1->usri1_password = NULL; - /* FIXME: UserInfo1->usri1_password_age */ - /* FIXME: UserInfo1->usri1_priv */ + /* FIXME: UserInfo1->usri1_password_age */ + /* FIXME: UserInfo1->usri1_priv */ - if (UserInfo->HomeDirectory.Length > 0) - { - UserInfo1->usri1_home_dir = Ptr; + if (UserInfo->HomeDirectory.Length > 0) + { + UserInfo1->usri1_home_dir = Ptr; - memcpy(UserInfo1->usri1_home_dir, - UserInfo->HomeDirectory.Buffer, - UserInfo->HomeDirectory.Length); - UserInfo1->usri1_home_dir[UserInfo->HomeDirectory.Length / sizeof(WCHAR)] = UNICODE_NULL; + memcpy(UserInfo1->usri1_home_dir, + UserInfo->HomeDirectory.Buffer, + UserInfo->HomeDirectory.Length); + UserInfo1->usri1_home_dir[UserInfo->HomeDirectory.Length / sizeof(WCHAR)] = UNICODE_NULL; - Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->HomeDirectory.Length + sizeof(WCHAR)); - } + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->HomeDirectory.Length + sizeof(WCHAR)); + } - if (UserInfo->AdminComment.Length > 0) - { - UserInfo1->usri1_comment = Ptr; + if (UserInfo->AdminComment.Length > 0) + { + UserInfo1->usri1_comment = Ptr; - memcpy(UserInfo1->usri1_comment, - UserInfo->AdminComment.Buffer, - UserInfo->AdminComment.Length); - UserInfo1->usri1_comment[UserInfo->AdminComment.Length / sizeof(WCHAR)] = UNICODE_NULL; + memcpy(UserInfo1->usri1_comment, + UserInfo->AdminComment.Buffer, + UserInfo->AdminComment.Length); + UserInfo1->usri1_comment[UserInfo->AdminComment.Length / sizeof(WCHAR)] = UNICODE_NULL; - Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR)); - } + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR)); + } -// UserInfo1->usri1_flags = UserInfo->UserAccountControl; +// UserInfo1->usri1_flags = UserInfo->UserAccountControl; - if (UserInfo->ScriptPath.Length > 0) - { - UserInfo1->usri1_script_path = Ptr; + if (UserInfo->ScriptPath.Length > 0) + { + UserInfo1->usri1_script_path = Ptr; - memcpy(UserInfo1->usri1_script_path, - UserInfo->ScriptPath.Buffer, - UserInfo->ScriptPath.Length); - UserInfo1->usri1_script_path[UserInfo->ScriptPath.Length / sizeof(WCHAR)] = UNICODE_NULL; - } - break; + memcpy(UserInfo1->usri1_script_path, + UserInfo->ScriptPath.Buffer, + UserInfo->ScriptPath.Length); + UserInfo1->usri1_script_path[UserInfo->ScriptPath.Length / sizeof(WCHAR)] = UNICODE_NULL; + } + break; case 2: UserInfo2 = (PUSER_INFO_2)LocalBuffer; From d655fccbd29dc8914b98be184446eec87e623d00 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 6 Jan 2013 11:37:11 +0000 Subject: [PATCH 71/96] [TIMEDATE] - Correctly show current time zone name even if no daylight saving settings are set. Patch by Lee Schroeder. CORE-6803 #resolve #comment Fixed, thanks. Sorry for the long wait. svn path=/trunk/; revision=58126 --- reactos/dll/cpl/timedate/dateandtime.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/reactos/dll/cpl/timedate/dateandtime.c b/reactos/dll/cpl/timedate/dateandtime.c index f82ab7a1511..d74f7496d2b 100644 --- a/reactos/dll/cpl/timedate/dateandtime.c +++ b/reactos/dll/cpl/timedate/dateandtime.c @@ -123,6 +123,7 @@ SetTimeZoneName(HWND hwnd) switch (TimeZoneId) { case TIME_ZONE_ID_STANDARD: + case TIME_ZONE_ID_UNKNOWN: wcscpy(TimeZoneName, TimeZoneInfo.StandardName); break; @@ -130,10 +131,6 @@ SetTimeZoneName(HWND hwnd) wcscpy(TimeZoneName, TimeZoneInfo.DaylightName); break; - case TIME_ZONE_ID_UNKNOWN: - LoadStringW(hApplet, IDS_TIMEZONEUNKNOWN, TimeZoneName, 128); - break; - case TIME_ZONE_ID_INVALID: default: LoadStringW(hApplet, IDS_TIMEZONEINVALID, TimeZoneName, 128); From 40d30b8b21f5762d6acb17cb6aed70627ff56fa2 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 6 Jan 2013 12:04:48 +0000 Subject: [PATCH 72/96] =?UTF-8?q?[EXPLORER=5FNEW]=20-=20Open=20run=20dialo?= =?UTF-8?q?g=20when=20Win+R=20was=20pressed.=20Patch=20by=20Edijs=20Kolesn?= =?UTF-8?q?ikovi=C4=8Ds.=20CORE-6863=20#resolve?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit svn path=/trunk/; revision=58127 --- reactos/base/shell/explorer-new/explorer.c | 1 + reactos/base/shell/explorer-new/precomp.h | 2 ++ reactos/base/shell/explorer-new/traywnd.c | 10 ++++++++++ 3 files changed, 13 insertions(+) diff --git a/reactos/base/shell/explorer-new/explorer.c b/reactos/base/shell/explorer-new/explorer.c index e4e683a1019..61506e59574 100644 --- a/reactos/base/shell/explorer-new/explorer.c +++ b/reactos/base/shell/explorer-new/explorer.c @@ -411,6 +411,7 @@ _tWinMain(IN HINSTANCE hInstance, if (Tray != NULL) { + RegisterHotKey(NULL, IDHK_RUN, MOD_WIN, 'R'); TrayMessageLoop(Tray); ITrayWindow_Release(Tray); UnregisterTrayWindowClass(); diff --git a/reactos/base/shell/explorer-new/precomp.h b/reactos/base/shell/explorer-new/precomp.h index 47c84dc4981..fbeaec3defe 100644 --- a/reactos/base/shell/explorer-new/precomp.h +++ b/reactos/base/shell/explorer-new/precomp.h @@ -128,6 +128,8 @@ CreateDropTarget(IN HWND hwndTarget, * explorer.c */ +#define IDHK_RUN 1 /* Win+R */ + LONG SetWindowStyle(IN HWND hWnd, IN LONG dwStyleMask, diff --git a/reactos/base/shell/explorer-new/traywnd.c b/reactos/base/shell/explorer-new/traywnd.c index 4526aeb830e..a86e9f4d879 100644 --- a/reactos/base/shell/explorer-new/traywnd.c +++ b/reactos/base/shell/explorer-new/traywnd.c @@ -2777,6 +2777,16 @@ TrayMessageLoop(IN OUT ITrayWindow *Tray) if (!Ret || Ret == -1) break; + if (Msg.message == WM_HOTKEY) + { + switch (Msg.wParam) + { + case IDHK_RUN: /* Win+R */ + CloseHandle(CreateThread(NULL, 0, RunFileDlgThread, This, 0, NULL)); + break; + } + } + if (This->StartMenuBand == NULL || IMenuBand_IsMenuMessage(This->StartMenuBand, &Msg) != S_OK) From e31ab5ce3213d95b807b87b00f83971871720646 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 6 Jan 2013 13:03:01 +0000 Subject: [PATCH 73/96] [SAMSRV] SAM Setup: Set the UserAccountControl flags when user accounts are created. svn path=/trunk/; revision=58128 --- reactos/dll/win32/samsrv/setup.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/reactos/dll/win32/samsrv/setup.c b/reactos/dll/win32/samsrv/setup.c index e9944a81863..dae35f0034b 100644 --- a/reactos/dll/win32/samsrv/setup.c +++ b/reactos/dll/win32/samsrv/setup.c @@ -221,7 +221,8 @@ SampCreateAliasAccount(HKEY hDomainKey, static BOOL SampCreateUserAccount(HKEY hDomainKey, LPCWSTR lpAccountName, - ULONG ulRelativeId) + ULONG ulRelativeId, + ULONG UserAccountControl) { SAM_USER_FIXED_DATA FixedUserData; LPWSTR lpEmptyString = L""; @@ -235,6 +236,7 @@ SampCreateUserAccount(HKEY hDomainKey, FixedUserData.Version = 1; FixedUserData.UserId = ulRelativeId; + FixedUserData.UserAccountControl = UserAccountControl; swprintf(szAccountKeyName, L"Users\\%08lX", ulRelativeId); @@ -673,11 +675,13 @@ SampInitializeSAM(VOID) { SampCreateUserAccount(hDomainKey, L"Administrator", - DOMAIN_USER_RID_ADMIN); + DOMAIN_USER_RID_ADMIN, + USER_DONT_EXPIRE_PASSWORD | USER_NORMAL_ACCOUNT); SampCreateUserAccount(hDomainKey, L"Guest", - DOMAIN_USER_RID_GUEST); + DOMAIN_USER_RID_GUEST, + USER_ACCOUNT_DISABLED | USER_DONT_EXPIRE_PASSWORD | USER_NORMAL_ACCOUNT); RegCloseKey(hDomainKey); } From 79d2fc2c7a357ddb0c00374f6ac6a5ab90c9b458 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 6 Jan 2013 13:22:47 +0000 Subject: [PATCH 74/96] [PSDK] Add missing types USER_INFO_4 and USER_INFO_23. svn path=/trunk/; revision=58129 --- reactos/include/psdk/lmaccess.h | 40 ++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/reactos/include/psdk/lmaccess.h b/reactos/include/psdk/lmaccess.h index 850539fe20d..1f63d7bcc1d 100644 --- a/reactos/include/psdk/lmaccess.h +++ b/reactos/include/psdk/lmaccess.h @@ -266,6 +266,37 @@ typedef struct _USER_INFO_3 { LPWSTR usri3_home_dir_drive; DWORD usri3_password_expired; }USER_INFO_3,*PUSER_INFO_3,*LPUSER_INFO_3; +typedef struct _USER_INFO_4 { + LPWSTR usri4_name; + LPWSTR usri4_password; + DWORD usri4_password_age; + DWORD usri4_priv; + LPWSTR usri4_home_dir; + LPWSTR usri4_comment; + DWORD usri4_flags; + LPWSTR usri4_script_path; + DWORD usri4_auth_flags; + LPWSTR usri4_full_name; + LPWSTR usri4_usr_comment; + LPWSTR usri4_parms; + LPWSTR usri4_workstations; + DWORD usri4_last_logon; + DWORD usri4_last_logoff; + DWORD usri4_acct_expires; + DWORD usri4_max_storage; + DWORD usri4_units_per_week; + PBYTE usri4_logon_hours; + DWORD usri4_bad_pw_count; + DWORD usri4_num_logons; + LPWSTR usri4_logon_server; + DWORD usri4_country_code; + DWORD usri4_code_page; + PSID usri4_user_sid; + DWORD usri4_primary_group_id; + LPWSTR usri4_profile; + LPWSTR usri4_home_dir_drive; + DWORD usri4_password_expired; +} USER_INFO_4, *PUSER_INFO_4, *LPUSER_INFO_4; typedef struct _USER_INFO_10 { LPWSTR usri10_name; LPWSTR usri10_comment; @@ -329,7 +360,14 @@ typedef struct _USER_INFO_22 { LPWSTR usri22_logon_server; DWORD usri22_country_code; DWORD usri22_code_page; - }USER_INFO_22,*PUSER_INFO_22,*LPUSER_INFO_22; +}USER_INFO_22,*PUSER_INFO_22,*LPUSER_INFO_22; +typedef struct _USER_INFO_23 { + LPWSTR usri23_name; + LPWSTR usri23_full_name; + LPWSTR usri23_comment; + DWORD usri23_flags; + PSID usri23_user_sid; +} USER_INFO_23, *PUSER_INFO_23, *LPUSER_INFO_23; typedef struct _USER_INFO_1003 { LPWSTR usri1003_password; } USER_INFO_1003,*PUSER_INFO_1003,*LPUSER_INFO_1003; From 0adc421511927d3c9b403b550fb17200e99d0d68 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 6 Jan 2013 14:24:40 +0000 Subject: [PATCH 75/96] [NETAPI32] - NetUserGetInfo: Add Support for info level 23. - Convert UserAccountControl flags to user info flags and convert last logon, last logoff and account expires time. svn path=/trunk/; revision=58130 --- reactos/dll/win32/netapi32/user.c | 174 ++++++++++++++++++++++++++---- 1 file changed, 153 insertions(+), 21 deletions(-) diff --git a/reactos/dll/win32/netapi32/user.c b/reactos/dll/win32/netapi32/user.c index 19ee18c91bd..895bf811fea 100644 --- a/reactos/dll/win32/netapi32/user.c +++ b/reactos/dll/win32/netapi32/user.c @@ -159,6 +159,68 @@ CreateSidFromSidAndRid(PSID SrcSid, } +static +ULONG +GetAccountFlags(ULONG AccountControl) +{ + ULONG Flags = UF_SCRIPT; + + if (AccountControl & USER_ACCOUNT_DISABLED) + Flags |= UF_ACCOUNTDISABLE; + + if (AccountControl & USER_HOME_DIRECTORY_REQUIRED) + Flags |= UF_HOMEDIR_REQUIRED; + + if (AccountControl & USER_PASSWORD_NOT_REQUIRED) + Flags |= UF_PASSWD_NOTREQD; + +// UF_PASSWD_CANT_CHANGE + + if (AccountControl & USER_ACCOUNT_AUTO_LOCKED) + Flags |= UF_LOCKOUT; + + if (AccountControl & USER_DONT_EXPIRE_PASSWORD) + Flags |= UF_DONT_EXPIRE_PASSWD; + +/* + if (AccountControl & USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED) + Flags |= UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED; + + if (AccountControl & USER_SMARTCARD_REQUIRED) + Flags |= UF_SMARTCARD_REQUIRED; + + if (AccountControl & USER_TRUSTED_FOR_DELEGATION) + Flags |= UF_TRUSTED_FOR_DELEGATION; + + if (AccountControl & USER_NOT_DELEGATED) + Flags |= UF_NOT_DELEGATED; + + if (AccountControl & USER_USE_DES_KEY_ONLY) + Flags |= UF_USE_DES_KEY_ONLY; + + if (AccountControl & USER_DONT_REQUIRE_PREAUTH) + Flags |= UF_DONT_REQUIRE_PREAUTH; + + if (AccountControl & USER_PASSWORD_EXPIRED) + Flags |= UF_PASSWORD_EXPIRED; +*/ + + /* Set account type flags */ + if (AccountControl & USER_TEMP_DUPLICATE_ACCOUNT) + Flags |= UF_TEMP_DUPLICATE_ACCOUNT; + else if (AccountControl & USER_NORMAL_ACCOUNT) + Flags |= UF_NORMAL_ACCOUNT; + else if (AccountControl & USER_INTERDOMAIN_TRUST_ACCOUNT) + Flags |= UF_INTERDOMAIN_TRUST_ACCOUNT; + else if (AccountControl & USER_WORKSTATION_TRUST_ACCOUNT) + Flags |= UF_WORKSTATION_TRUST_ACCOUNT; + else if (AccountControl & USER_SERVER_TRUST_ACCOUNT) + Flags |= UF_SERVER_TRUST_ACCOUNT; + + return Flags; +} + + static NET_API_STATUS BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, @@ -173,6 +235,7 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, PUSER_INFO_3 UserInfo3; PUSER_INFO_10 UserInfo10; PUSER_INFO_20 UserInfo20; + PUSER_INFO_23 UserInfo23; LPWSTR Ptr; ULONG Size = 0; NET_API_STATUS ApiStatus = NERR_Success; @@ -286,7 +349,18 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, Size += UserInfo->AdminComment.Length + sizeof(WCHAR); break; -// case 23: + case 23: + Size = sizeof(USER_INFO_23) + + UserInfo->UserName.Length + sizeof(WCHAR); + + if (UserInfo->FullName.Length > 0) + Size += UserInfo->FullName.Length + sizeof(WCHAR); + + if (UserInfo->AdminComment.Length > 0) + Size += UserInfo->AdminComment.Length + sizeof(WCHAR); + + /* FIXME: usri23_user_sid */ + break; default: ApiStatus = ERROR_INVALID_LEVEL; @@ -356,7 +430,7 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR)); } -// UserInfo1->usri1_flags = UserInfo->UserAccountControl; + UserInfo1->usri1_flags = GetAccountFlags(UserInfo->UserAccountControl); if (UserInfo->ScriptPath.Length > 0) { @@ -383,7 +457,6 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->UserName.Length + sizeof(WCHAR)); - /* FIXME: usri2_password */ /* FIXME: usri2_password_age */ /* FIXME: usri2_priv */ @@ -411,7 +484,7 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR)); } - /* FIXME: usri2_flags */ + UserInfo2->usri2_flags = GetAccountFlags(UserInfo->UserAccountControl); if (UserInfo->ScriptPath.Length > 0) { @@ -454,14 +527,23 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->WorkStations.Length + sizeof(WCHAR)); } - /* FIXME: usri2_last_logon */ - /* FIXME: usri2_last_logoff */ - /* FIXME: usri2_acct_expires */ - /* FIXME: usri2_max_storage */ + RtlTimeToSecondsSince1970(&UserInfo->LastLogon, + &UserInfo2->usri2_last_logon); + + RtlTimeToSecondsSince1970(&UserInfo->LastLogoff, + &UserInfo2->usri2_last_logoff); + + RtlTimeToSecondsSince1970(&UserInfo->AccountExpires, + &UserInfo2->usri2_acct_expires); + + UserInfo2->usri2_max_storage = USER_MAXSTORAGE_UNLIMITED; + /* FIXME: usri2_units_per_week */ /* FIXME: usri2_logon_hours */ - /* FIXME: usri2_bad_pw_count */ - /* FIXME: usri2_num_logons */ + + UserInfo2->usri2_bad_pw_count = UserInfo->BadPasswordCount; + UserInfo2->usri2_num_logons = UserInfo->LogonCount; + /* FIXME: usri2_logon_server */ /* FIXME: usri2_country_code */ /* FIXME: usri2_code_page */ @@ -482,7 +564,6 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->UserName.Length + sizeof(WCHAR)); - /* FIXME: usri3_password */ /* FIXME: usri3_password_age */ /* FIXME: usri3_priv */ @@ -510,7 +591,7 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR)); } - /* FIXME: usri3_flags */ + UserInfo3->usri3_flags = GetAccountFlags(UserInfo->UserAccountControl); if (UserInfo->ScriptPath.Length > 0) { @@ -553,14 +634,23 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->WorkStations.Length + sizeof(WCHAR)); } - /* FIXME: usri3_last_logon */ - /* FIXME: usri3_last_logoff */ - /* FIXME: usri3_acct_expires */ - /* FIXME: usri3_max_storage */ + RtlTimeToSecondsSince1970(&UserInfo->LastLogon, + &UserInfo3->usri3_last_logon); + + RtlTimeToSecondsSince1970(&UserInfo->LastLogoff, + &UserInfo3->usri3_last_logoff); + + RtlTimeToSecondsSince1970(&UserInfo->AccountExpires, + &UserInfo3->usri3_acct_expires); + + UserInfo3->usri3_max_storage = USER_MAXSTORAGE_UNLIMITED; + /* FIXME: usri3_units_per_week */ /* FIXME: usri3_logon_hours */ - /* FIXME: usri3_bad_pw_count */ - /* FIXME: usri3_num_logons */ + + UserInfo3->usri3_bad_pw_count = UserInfo->BadPasswordCount; + UserInfo3->usri3_num_logons = UserInfo->LogonCount; + /* FIXME: usri3_logon_server */ /* FIXME: usri3_country_code */ /* FIXME: usri3_code_page */ @@ -592,7 +682,7 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->HomeDirectoryDrive.Length + sizeof(WCHAR)); } - /* FIXME: usri3_password_expired */ + UserInfo3->usri3_password_expired = (UserInfo->UserAccountControl & USER_PASSWORD_EXPIRED); break; // case 4: @@ -678,11 +768,53 @@ BuildUserInfoBuffer(PUSER_ACCOUNT_INFORMATION UserInfo, Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR)); } -// UserInfo20->usri20_flags = UserInfo->UserAccountControl; + UserInfo20->usri20_flags = GetAccountFlags(UserInfo->UserAccountControl); + UserInfo20->usri20_user_id = RelativeId; break; -// case 23: + case 23: + UserInfo23 = (PUSER_INFO_23)LocalBuffer; + + Ptr = (LPWSTR)((ULONG_PTR)UserInfo23 + sizeof(USER_INFO_23)); + + UserInfo23->usri23_name = Ptr; + + memcpy(UserInfo23->usri23_name, + UserInfo->UserName.Buffer, + UserInfo->UserName.Length); + UserInfo23->usri23_name[UserInfo->UserName.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->UserName.Length + sizeof(WCHAR)); + + if (UserInfo->FullName.Length > 0) + { + UserInfo23->usri23_full_name = Ptr; + + memcpy(UserInfo23->usri23_full_name, + UserInfo->FullName.Buffer, + UserInfo->FullName.Length); + UserInfo23->usri23_full_name[UserInfo->FullName.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->FullName.Length + sizeof(WCHAR)); + } + + if (UserInfo->AdminComment.Length > 0) + { + UserInfo23->usri23_comment = Ptr; + + memcpy(UserInfo23->usri23_comment, + UserInfo->AdminComment.Buffer, + UserInfo->AdminComment.Length); + UserInfo23->usri23_comment[UserInfo->AdminComment.Length / sizeof(WCHAR)] = UNICODE_NULL; + + Ptr = (LPWSTR)((ULONG_PTR)Ptr + UserInfo->AdminComment.Length + sizeof(WCHAR)); + } + + UserInfo23->usri23_flags = GetAccountFlags(UserInfo->UserAccountControl); + + /* FIXME: usri23_user_sid */ + break; } done: From 04c2d31986e2de18e899be5a32d4c3058e0a3dff Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 6 Jan 2013 14:32:46 +0000 Subject: [PATCH 76/96] [RPCRT4][SHDOCVW] - Add missing __WINESRC__ definitions. Fixes some warnings. CORE-6784 #resolve svn path=/trunk/; revision=58131 --- reactos/dll/win32/rpcrt4/CMakeLists.txt | 1 + reactos/dll/win32/shdocvw/CMakeLists.txt | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/reactos/dll/win32/rpcrt4/CMakeLists.txt b/reactos/dll/win32/rpcrt4/CMakeLists.txt index 05dfb4a3cba..a6b142a1b50 100644 --- a/reactos/dll/win32/rpcrt4/CMakeLists.txt +++ b/reactos/dll/win32/rpcrt4/CMakeLists.txt @@ -35,6 +35,7 @@ remove_definitions(-D_WIN32_WINNT=0x502) add_definitions(-D_WIN32_WINNT=0x600) add_definitions( + -D__WINESRC__ -D_RPCRT4_ -DCOM_NO_WINDOWS_H -DMSWMSG) diff --git a/reactos/dll/win32/shdocvw/CMakeLists.txt b/reactos/dll/win32/shdocvw/CMakeLists.txt index c48f7286a14..34b51022118 100644 --- a/reactos/dll/win32/shdocvw/CMakeLists.txt +++ b/reactos/dll/win32/shdocvw/CMakeLists.txt @@ -1,7 +1,9 @@ add_typelib(shdocvw_v1.idl) -add_definitions(-D_SHDOCVW_) +add_definitions( + -D__WINESRC__ + -D_SHDOCVW_) include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) spec2def(shdocvw.dll shdocvw.spec ADD_IMPORTLIB) From 34daa9e99c26f181f82600cb56de1a5ba53ed18d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 6 Jan 2013 18:47:39 +0000 Subject: [PATCH 77/96] [REACTOS] Introduce four new debugging macros, ERROR_DBGBREAK, ERROR_FATAL, UNIMPLEMENTED_DBGBREAK, UNIMPLEMENTED_FATAL (and two helpers, __NOTICE and __ERROR_DBGBREAK). They are designed to display on the debug-log a printf-like user-defined message and to break into the debugger. - The *_DBGBREAK macros break only into the debugger and allow to continue (they don't hang). - The *_FATAL macros break into the debugger and then halt the execution. (Based on an idea of Aleksey Bragin, see the ros-dev mailing list about the while(true) --> assert(false); changes). [NTOSKRNL] Use these macros instead of ASSERT(FALSE); introduced in revisions r58110, r58111 and r58112 to replace while(TRUE); halts. Part 1/3 svn path=/trunk/; revision=58132 --- reactos/include/reactos/debug.h | 67 ++++++++++++++++++++++++----- reactos/ntoskrnl/mm/ARM3/arm/init.c | 3 +- reactos/ntoskrnl/mm/ARM3/largepag.c | 3 +- reactos/ntoskrnl/mm/ARM3/sysldr.c | 26 ++++------- reactos/ntoskrnl/mm/arm/page.c | 52 ++++++++-------------- reactos/ntoskrnl/mm/arm/stubs.c | 23 ++++------ 6 files changed, 93 insertions(+), 81 deletions(-) diff --git a/reactos/include/reactos/debug.h b/reactos/include/reactos/debug.h index 18b14efd6b3..233cff2793e 100644 --- a/reactos/include/reactos/debug.h +++ b/reactos/include/reactos/debug.h @@ -3,14 +3,13 @@ * PROJECT: ReactOS kernel * FILE: include/internal/debug.h * PURPOSE: Useful debugging macros - * PROGRAMMER: David Welch (welch@mcmail.com) - * UPDATE HISTORY: - * 28/05/98: Created + * PROGRAMMERS: David Welch (welch@mcmail.com) + * Hermes Belusca-Maito (hermes.belusca@sfr.fr) */ /* - * NOTE: Define NDEBUG before including this header to disable debugging - * macros + * NOTE: Define NDEBUG before including this header + * to disable debugging macros. */ #ifndef __INTERNAL_DEBUG @@ -19,7 +18,7 @@ /* Define DbgPrint/DbgPrintEx/RtlAssert unless the NDK is used */ #if !defined(_RTLFUNCS_H) && !defined(_NTDDK_) -/* Make sure we have basic types (some people include us *before* SDK... */ +/* Make sure we have basic types (some people include us *before* SDK)... */ #if !defined(_NTDEF_) && !defined(_NTDEF_H) && !defined(_WINDEF_) && !defined(_WINDEF_H) #error Please include SDK first. #endif @@ -56,7 +55,7 @@ RtlAssert( #ifndef assert #ifndef NASSERT -#define assert(x) if (!(x)) {RtlAssert((PVOID)#x,(PVOID)__FILE__,__LINE__, ""); } +#define assert(x) if (!(x)) { RtlAssert((PVOID)#x, (PVOID)__FILE__, __LINE__, ""); } #else #define assert(x) #endif @@ -64,7 +63,7 @@ RtlAssert( #ifndef ASSERT #ifndef NASSERT -#define ASSERT(x) if (!(x)) {RtlAssert((PVOID)#x,(PVOID)__FILE__,__LINE__, ""); } +#define ASSERT(x) if (!(x)) { RtlAssert((PVOID)#x, (PVOID)__FILE__, __LINE__, ""); } #else #define ASSERT(x) #endif @@ -72,12 +71,15 @@ RtlAssert( #ifndef ASSERTMSG #ifndef NASSERT -#define ASSERTMSG(x,m) if (!(x)) {RtlAssert((PVOID)#x,__FILE__,__LINE__, m); } +#define ASSERTMSG(x,m) if (!(x)) { RtlAssert((PVOID)#x, __FILE__, __LINE__, m); } #else #define ASSERTMSG(x) #endif #endif +/* For internal purposes only */ +#define __NOTICE(level, fmt, ...) DbgPrint(#level ": %s at %s:%d " fmt, __FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__) + /* Print stuff only on Debug Builds*/ #define DPFLTR_DEFAULT_ID -1 #if DBG @@ -102,7 +104,7 @@ RtlAssert( #endif - #define UNIMPLEMENTED DbgPrint("WARNING: %s at %s:%d is UNIMPLEMENTED!\n",__FUNCTION__,__FILE__,__LINE__); + #define UNIMPLEMENTED __NOTICE(WARNING, "is UNIMPLEMENTED!\n"); #define ERR_(ch, fmt, ...) DbgPrintEx(DPFLTR_##ch##_ID, DPFLTR_ERROR_LEVEL, "(%s:%d) " fmt, __FILE__, __LINE__, ##__VA_ARGS__) #define WARN_(ch, fmt, ...) DbgPrintEx(DPFLTR_##ch##_ID, DPFLTR_WARNING_LEVEL, "(%s:%d) " fmt, __FILE__, __LINE__, ##__VA_ARGS__) @@ -113,6 +115,7 @@ RtlAssert( #define WARN__(ch, fmt, ...) DbgPrintEx(ch, DPFLTR_WARNING_LEVEL, "(%s:%d) " fmt, __FILE__, __LINE__, ##__VA_ARGS__) #define TRACE__(ch, fmt, ...) DbgPrintEx(ch, DPFLTR_TRACE_LEVEL, "(%s:%d) " fmt, __FILE__, __LINE__, ##__VA_ARGS__) #define INFO__(ch, fmt, ...) DbgPrintEx(ch, DPFLTR_INFO_LEVEL, "(%s:%d) " fmt, __FILE__, __LINE__, ##__VA_ARGS__) + #else /* not DBG */ /* On non-debug builds, we never show these */ @@ -130,8 +133,52 @@ RtlAssert( #define WARN__(ch, ...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0) #define TRACE__(ch, ...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0) #define INFO__(ch, ...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0) + #endif /* not DBG */ +/* + * These macros are designed to display an optional printf-like + * user-defined message and to break into the debugger. + * After that they allow to continue the program execution. + */ +/* For internal purposes only */ +#define __ERROR_DBGBREAK(...) \ +do { \ + DbgPrint("" __VA_ARGS__); \ + DbgBreakPoint(); \ +} while (0) + +#define ERROR_DBGBREAK(...) \ +do { \ + __NOTICE(ERROR, "\n"); \ + __ERROR_DBGBREAK(__VA_ARGS__); \ +} while (0) + +#define UNIMPLEMENTED_DBGBREAK(...) \ +do { \ + __NOTICE(ERROR, "is UNIMPLEMENTED!\n"); \ + __ERROR_DBGBREAK(__VA_ARGS__); \ +} while (0) + +/* + * These macros are designed to display an optional printf-like + * user-defined message and to break into the debugger. + * After that they halt the execution of the current thread. + */ +#define ERROR_FATAL(...) \ +do { \ + __NOTICE(UNRECOVERABLE ERROR, "\n"); \ + __ERROR_DBGBREAK(__VA_ARGS__); \ + while (TRUE); \ +} while (0) + +#define UNIMPLEMENTED_FATAL(...) \ +do { \ + __NOTICE(UNRECOVERABLE ERROR, "is UNIMPLEMENTED!\n"); \ + __ERROR_DBGBREAK(__VA_ARGS__); \ + while (TRUE); \ +} while (0) + #define ASSERT_IRQL_LESS_OR_EQUAL(x) ASSERT(KeGetCurrentIrql()<=(x)) #define ASSERT_IRQL_EQUAL(x) ASSERT(KeGetCurrentIrql()==(x)) #define ASSERT_IRQL_LESS(x) ASSERT(KeGetCurrentIrql()<(x)) diff --git a/reactos/ntoskrnl/mm/ARM3/arm/init.c b/reactos/ntoskrnl/mm/ARM3/arm/init.c index 0b87140b008..d57eeea8471 100644 --- a/reactos/ntoskrnl/mm/ARM3/arm/init.c +++ b/reactos/ntoskrnl/mm/ARM3/arm/init.c @@ -65,8 +65,7 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock) // // Always return success for now // - DPRINT1("NEVER TELL ME THE ODDS!\n"); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_FATAL("NEVER TELL ME THE ODDS!\n"); return STATUS_SUCCESS; } diff --git a/reactos/ntoskrnl/mm/ARM3/largepag.c b/reactos/ntoskrnl/mm/ARM3/largepag.c index 84ef6f6f167..e198cf4840b 100644 --- a/reactos/ntoskrnl/mm/ARM3/largepag.c +++ b/reactos/ntoskrnl/mm/ARM3/largepag.c @@ -58,8 +58,7 @@ MiSyncCachedRanges(VOID) /* Scan every range */ for (i = 0; i < MiLargePageRangeIndex; i++) { - DPRINT1("No support for large pages\n"); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("No support for large pages\n"); } } diff --git a/reactos/ntoskrnl/mm/ARM3/sysldr.c b/reactos/ntoskrnl/mm/ARM3/sysldr.c index e226766a10a..554843bde25 100644 --- a/reactos/ntoskrnl/mm/ARM3/sysldr.c +++ b/reactos/ntoskrnl/mm/ARM3/sysldr.c @@ -105,8 +105,7 @@ MiLoadImageSection(IN OUT PVOID *SectionPtr, if (SessionLoad) { /* Fail */ - DPRINT1("Session loading not yet supported!\n"); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("Session loading not yet supported!\n"); return STATUS_NOT_IMPLEMENTED; } @@ -1217,8 +1216,7 @@ CheckDllState: { /* We failed, unload the image */ MmUnloadSystemImage(DllEntry); - DPRINT1("MmCallDllInitialize failed with status 0x%x\n", Status); - ASSERT(FALSE); // while (TRUE); + ERROR_DBGBREAK("MmCallDllInitialize failed with status 0x%x\n", Status); Loaded = FALSE; } } @@ -1720,8 +1718,7 @@ MiReloadBootLoadedDrivers(IN PLOADER_PARAMETER_BLOCK LoaderBlock) if (!PointerPte) { /* Shouldn't happen */ - DPRINT1("[Mm0]: Couldn't allocate driver section!\n"); - ASSERT(FALSE); // while (TRUE); + ERROR_FATAL("[Mm0]: Couldn't allocate driver section!\n"); return; } @@ -1774,8 +1771,7 @@ MiReloadBootLoadedDrivers(IN PLOADER_PARAMETER_BLOCK LoaderBlock) if (!NT_SUCCESS(Status)) { /* This shouldn't happen */ - DPRINT1("Relocations failed!\n"); - ASSERT(FALSE); // while (TRUE); + ERROR_FATAL("Relocations failed!\n"); return; } } @@ -1973,9 +1969,8 @@ MiBuildImportsForBootDrivers(VOID) if (*ImageThunk) { /* Should not be happening */ - DPRINT1("Broken IAT entry for %p at %p (%lx)\n", - LdrEntry, ImageThunk, *ImageThunk); - ASSERT(FALSE); + ERROR_FATAL("Broken IAT entry for %p at %p (%lx)\n", + LdrEntry, ImageThunk, *ImageThunk); } /* Reset if we hit this */ @@ -2363,8 +2358,7 @@ MiWriteProtectSystemImage(IN PVOID ImageBase) else { /* Not supported */ - DPRINT1("Session drivers not supported\n"); - ASSERT(FALSE); + UNIMPLEMENTED_DBGBREAK("Session drivers not supported\n"); } /* These are the only protection masks we care about */ @@ -2924,8 +2918,7 @@ LoaderScan: else { /* We don't support session loading yet */ - DPRINT1("Unsupported Session-Load!\n"); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("Unsupported Session-Load!\n"); Status = STATUS_NOT_IMPLEMENTED; } @@ -3026,8 +3019,7 @@ LoaderScan: if (Flags) { /* We don't support session loading yet */ - DPRINT1("Unsupported Session-Load!\n"); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("Unsupported Session-Load!\n"); goto Quickie; } diff --git a/reactos/ntoskrnl/mm/arm/page.c b/reactos/ntoskrnl/mm/arm/page.c index 5dda48308a7..0319d808c04 100644 --- a/reactos/ntoskrnl/mm/arm/page.c +++ b/reactos/ntoskrnl/mm/arm/page.c @@ -124,8 +124,7 @@ NTAPI MiFlushTlb(IN PMMPTE PointerPte, IN PVOID Address) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } BOOLEAN @@ -134,8 +133,7 @@ MmCreateProcessAddressSpace(IN ULONG MinWs, IN PEPROCESS Process, IN PULONG DirectoryTableBase) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return FALSE; } @@ -164,8 +162,7 @@ MmDisableVirtualMapping(IN PEPROCESS Process, OUT PBOOLEAN WasDirty, OUT PPFN_NUMBER Page) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } VOID @@ -173,8 +170,7 @@ NTAPI MmEnableVirtualMapping(IN PEPROCESS Process, IN PVOID Address) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } NTSTATUS @@ -185,8 +181,7 @@ MmCreateVirtualMappingUnsafe(IN PEPROCESS Process, IN PPFN_NUMBER Pages, IN ULONG PageCount) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_SUCCESS; } @@ -198,8 +193,7 @@ MmCreateVirtualMapping(IN PEPROCESS Process, IN PPFN_NUMBER Pages, IN ULONG PageCount) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_SUCCESS; } @@ -207,8 +201,7 @@ VOID NTAPI MmRawDeleteVirtualMapping(IN PVOID Address) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } VOID @@ -219,8 +212,7 @@ MmDeleteVirtualMapping(IN PEPROCESS Process, OUT PBOOLEAN WasDirty, OUT PPFN_NUMBER Page) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } VOID @@ -229,8 +221,7 @@ MmDeletePageFileMapping(IN PEPROCESS Process, IN PVOID Address, IN SWAPENTRY *SwapEntry) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } NTSTATUS @@ -239,8 +230,7 @@ MmCreatePageFileMapping(IN PEPROCESS Process, IN PVOID Address, IN SWAPENTRY SwapEntry) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_NOT_IMPLEMENTED; } @@ -249,8 +239,7 @@ NTAPI MmGetPfnForProcess(IN PEPROCESS Process, IN PVOID Address) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return 0; } @@ -259,8 +248,7 @@ NTAPI MmIsDirtyPage(IN PEPROCESS Process, IN PVOID Address) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return FALSE; } @@ -269,8 +257,7 @@ NTAPI MmSetCleanPage(IN PEPROCESS Process, IN PVOID Address) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } VOID @@ -278,8 +265,7 @@ NTAPI MmSetDirtyPage(IN PEPROCESS Process, IN PVOID Address) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } BOOLEAN @@ -287,8 +273,7 @@ NTAPI MmIsPagePresent(IN PEPROCESS Process, IN PVOID Address) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return FALSE; } @@ -297,8 +282,7 @@ NTAPI MmIsPageSwapEntry(IN PEPROCESS Process, IN PVOID Address) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return FALSE; } @@ -328,7 +312,6 @@ MmInitGlobalKernelPageDirectory(VOID) ULONG i; PULONG CurrentPageDirectory = (PULONG)PDE_BASE; - /* Loop the 2GB of address space which belong to the kernel */ for (i = MiGetPdeOffset(MmSystemRangeStart); i < 2048; i++) { @@ -356,8 +339,7 @@ MmGetPhysicalAddress(IN PVOID Address) PHYSICAL_ADDRESS PhysicalAddress; PhysicalAddress.QuadPart = 0; - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return PhysicalAddress; } diff --git a/reactos/ntoskrnl/mm/arm/stubs.c b/reactos/ntoskrnl/mm/arm/stubs.c index 1d71bc95969..6aab43f7761 100644 --- a/reactos/ntoskrnl/mm/arm/stubs.c +++ b/reactos/ntoskrnl/mm/arm/stubs.c @@ -39,7 +39,7 @@ MiUnmapPageTable(IN PMMPTE PointerPde) // // FIXME-USER: Shouldn't get here yet // - ASSERT(FALSE); + ERROR_FATAL(); return FALSE; } @@ -399,8 +399,7 @@ MmDisableVirtualMapping(IN PEPROCESS Process, // // TODO // - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } VOID @@ -411,8 +410,7 @@ MmEnableVirtualMapping(IN PEPROCESS Process, // // TODO // - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } NTSTATUS @@ -658,8 +656,7 @@ MmDeletePageFileMapping(IN PEPROCESS Process, // // TODO // - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } NTSTATUS @@ -671,8 +668,7 @@ MmCreatePageFileMapping(IN PEPROCESS Process, // // TODO // - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_NOT_IMPLEMENTED; } @@ -703,8 +699,7 @@ MmIsDirtyPage(IN PEPROCESS Process, // // TODO // - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return FALSE; } @@ -716,8 +711,7 @@ MmSetCleanPage(IN PEPROCESS Process, // // TODO // - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } VOID @@ -728,8 +722,7 @@ MmSetDirtyPage(IN PEPROCESS Process, // // TODO // - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } BOOLEAN From 235fde5f972592f36d2e92b8166642bc1b11901c Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 6 Jan 2013 20:52:02 +0000 Subject: [PATCH 78/96] [RTL] - Use correct registry value names for time zone information svn path=/trunk/; revision=58133 --- reactos/lib/rtl/timezone.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/reactos/lib/rtl/timezone.c b/reactos/lib/rtl/timezone.c index ff992e68928..20369ef4e5f 100644 --- a/reactos/lib/rtl/timezone.c +++ b/reactos/lib/rtl/timezone.c @@ -46,27 +46,27 @@ RtlQueryTimeZoneInformation(PRTL_TIME_ZONE_INFORMATION TimeZoneInformation) QueryTable[0].Flags = RTL_QUERY_REGISTRY_DIRECT; QueryTable[0].EntryContext = &TimeZoneInformation->Bias; - QueryTable[1].Name = L"Standard Name"; + QueryTable[1].Name = L"StandardName"; QueryTable[1].Flags = RTL_QUERY_REGISTRY_DIRECT; QueryTable[1].EntryContext = &StandardName; - QueryTable[2].Name = L"Standard Bias"; + QueryTable[2].Name = L"StandardBias"; QueryTable[2].Flags = RTL_QUERY_REGISTRY_DIRECT; QueryTable[2].EntryContext = &TimeZoneInformation->StandardBias; - QueryTable[3].Name = L"Standard Start"; + QueryTable[3].Name = L"StandardStart"; QueryTable[3].Flags = RTL_QUERY_REGISTRY_DIRECT; QueryTable[3].EntryContext = &TimeZoneInformation->StandardDate; - QueryTable[4].Name = L"Daylight Name"; + QueryTable[4].Name = L"DaylightName"; QueryTable[4].Flags = RTL_QUERY_REGISTRY_DIRECT; QueryTable[4].EntryContext = &DaylightName; - QueryTable[5].Name = L"Daylight Bias"; + QueryTable[5].Name = L"DaylightBias"; QueryTable[5].Flags = RTL_QUERY_REGISTRY_DIRECT; QueryTable[5].EntryContext = &TimeZoneInformation->DaylightBias; - QueryTable[6].Name = L"Daylight Start"; + QueryTable[6].Name = L"DaylightStart"; QueryTable[6].Flags = RTL_QUERY_REGISTRY_DIRECT; QueryTable[6].EntryContext = &TimeZoneInformation->DaylightDate; @@ -108,7 +108,7 @@ RtlSetTimeZoneInformation(PRTL_TIME_ZONE_INFORMATION TimeZoneInformation) Length = (wcslen(TimeZoneInformation->StandardName) + 1) * sizeof(WCHAR); Status = RtlWriteRegistryValue(RTL_REGISTRY_CONTROL, L"TimeZoneInformation", - L"Standard Name", + L"StandardName", REG_SZ, TimeZoneInformation->StandardName, (ULONG)Length); @@ -119,7 +119,7 @@ RtlSetTimeZoneInformation(PRTL_TIME_ZONE_INFORMATION TimeZoneInformation) Status = RtlWriteRegistryValue(RTL_REGISTRY_CONTROL, L"TimeZoneInformation", - L"Standard Bias", + L"StandardBias", REG_DWORD, &TimeZoneInformation->StandardBias, sizeof(LONG)); @@ -130,7 +130,7 @@ RtlSetTimeZoneInformation(PRTL_TIME_ZONE_INFORMATION TimeZoneInformation) Status = RtlWriteRegistryValue(RTL_REGISTRY_CONTROL, L"TimeZoneInformation", - L"Standard Start", + L"StandardStart", REG_BINARY, &TimeZoneInformation->StandardDate, sizeof(SYSTEMTIME)); @@ -142,7 +142,7 @@ RtlSetTimeZoneInformation(PRTL_TIME_ZONE_INFORMATION TimeZoneInformation) Length = (wcslen(TimeZoneInformation->DaylightName) + 1) * sizeof(WCHAR); Status = RtlWriteRegistryValue(RTL_REGISTRY_CONTROL, L"TimeZoneInformation", - L"Daylight Name", + L"DaylightName", REG_SZ, TimeZoneInformation->DaylightName, (ULONG)Length); @@ -153,7 +153,7 @@ RtlSetTimeZoneInformation(PRTL_TIME_ZONE_INFORMATION TimeZoneInformation) Status = RtlWriteRegistryValue(RTL_REGISTRY_CONTROL, L"TimeZoneInformation", - L"Daylight Bias", + L"DaylightBias", REG_DWORD, &TimeZoneInformation->DaylightBias, sizeof(LONG)); @@ -164,7 +164,7 @@ RtlSetTimeZoneInformation(PRTL_TIME_ZONE_INFORMATION TimeZoneInformation) Status = RtlWriteRegistryValue(RTL_REGISTRY_CONTROL, L"TimeZoneInformation", - L"Daylight Start", + L"DaylightStart", REG_BINARY, &TimeZoneInformation->DaylightDate, sizeof(SYSTEMTIME)); From 6d9be196363ca78e206c60414b60757612b0d94f Mon Sep 17 00:00:00 2001 From: Olaf Siejka Date: Sun, 6 Jan 2013 22:38:20 +0000 Subject: [PATCH 79/96] [TRANSLATION] - romanian translation update by Stefan Fulea; CORE-6718 - fix for japaneese cmd translation by Tomoya Kitagawa; CORE-6820 - polish translation update of desk and input; svn path=/trunk/; revision=58134 --- .../base/applications/fontview/lang/ro-RO.rc | 8 +- .../mscutils/devmgmt/lang/ro-RO.rc | 2 +- .../base/applications/rapps/rapps/7zip.txt | 2 +- .../base/applications/rapps/rapps/abiword.txt | 2 +- .../applications/rapps/rapps/abiword28x.txt | 2 +- .../base/applications/rapps/rapps/abyss.txt | 2 +- .../rapps/rapps/ac97forvirtualbox.txt | 2 +- .../applications/rapps/rapps/audiograbber.txt | 2 +- .../applications/rapps/rapps/bittorrent.txt | 2 +- reactos/base/applications/rapps/rapps/cnt.txt | 5 + .../applications/rapps/rapps/comctl32ocx.txt | 2 +- .../base/applications/rapps/rapps/diablo2.txt | 2 +- .../applications/rapps/rapps/dosblaster.txt | 2 +- .../base/applications/rapps/rapps/dosbox.txt | 2 +- .../rapps/rapps/doublecommander.txt | 4 +- reactos/base/applications/rapps/rapps/fap.txt | 2 +- .../applications/rapps/rapps/firefox2.txt | 2 +- .../applications/rapps/rapps/firefox3.txt | 1 + .../applications/rapps/rapps/firefox36.txt | 1 + .../applications/rapps/rapps/firefox5.txt | 2 +- .../applications/rapps/rapps/freebasic.txt | 2 +- .../rapps/rapps/glidewrapzbag.txt | 2 +- .../applications/rapps/rapps/irfanview.txt | 2 +- .../rapps/rapps/irfanviewplugins.txt | 2 +- .../base/applications/rapps/rapps/kdewin.txt | 2 +- .../applications/rapps/rapps/lbreakout2.txt | 2 +- .../applications/rapps/rapps/lgeneral.txt | 2 +- .../applications/rapps/rapps/libreoffice.txt | 2 +- .../applications/rapps/rapps/lmarbles.txt | 2 +- .../base/applications/rapps/rapps/mfc40.txt | 2 +- .../applications/rapps/rapps/mirandaim.txt | 2 +- .../base/applications/rapps/rapps/mirc.txt | 2 +- .../base/applications/rapps/rapps/mirc6.txt | 2 +- .../base/applications/rapps/rapps/mono2.txt | 2 +- reactos/base/applications/rapps/rapps/mpc.txt | 2 +- .../base/applications/rapps/rapps/msxml3.txt | 2 +- .../base/applications/rapps/rapps/net11.txt | 2 +- .../base/applications/rapps/rapps/net20.txt | 2 +- .../applications/rapps/rapps/net20sp2.txt | 2 +- .../applications/rapps/rapps/offbyone.txt | 2 +- .../rapps/rapps/openoffice2.4.txt | 2 +- .../rapps/rapps/openoffice3.0.txt | 5 + .../base/applications/rapps/rapps/openttd.txt | 2 +- .../base/applications/rapps/rapps/opera.txt | 2 +- .../base/applications/rapps/rapps/opera9.txt | 2 +- .../base/applications/rapps/rapps/putty.txt | 2 +- .../base/applications/rapps/rapps/python.txt | 2 +- .../base/applications/rapps/rapps/python3.txt | 2 +- .../base/applications/rapps/rapps/remood.txt | 2 +- .../base/applications/rapps/rapps/rosbe.txt | 2 +- .../applications/rapps/rapps/rosbeamd64.txt | 2 +- .../applications/rapps/rapps/rosbearm.txt | 2 +- .../applications/rapps/rapps/sambatng.txt | 2 +- .../applications/rapps/rapps/sbforvmware.txt | 4 +- .../base/applications/rapps/rapps/scite.txt | 2 +- .../base/applications/rapps/rapps/scummvm.txt | 2 +- .../applications/rapps/rapps/sdl_mixer.txt | 2 +- .../applications/rapps/rapps/sdl_runtime.txt | 2 +- .../applications/rapps/rapps/smplayer.txt | 2 +- .../base/applications/rapps/rapps/steam.txt | 2 +- .../applications/rapps/rapps/sumatrapdf.txt | 2 +- .../applications/rapps/rapps/superfinder.txt | 2 +- .../base/applications/rapps/rapps/tahoma.txt | 2 +- .../applications/rapps/rapps/thunderbird.txt | 1 + .../applications/rapps/rapps/thunderbird5.txt | 2 +- .../applications/rapps/rapps/tileworld.txt | 2 +- .../rapps/rapps/totalcommander.txt | 4 + .../applications/rapps/rapps/tuxpaint.txt | 2 +- .../applications/rapps/rapps/ultravnc.txt | 2 +- .../applications/rapps/rapps/utorrent.txt | 2 +- .../base/applications/rapps/rapps/vb5run.txt | 2 +- .../base/applications/rapps/rapps/vb6run.txt | 2 +- .../applications/rapps/rapps/vc2005sp1run.txt | 2 +- .../applications/rapps/rapps/vc2008sp1run.txt | 2 +- .../base/applications/rapps/rapps/vc6run.txt | 2 +- reactos/base/applications/rapps/rapps/vlc.txt | 2 +- .../applications/rapps/rapps/winboard.txt | 2 +- .../base/applications/rapps/rapps/wme9.txt | 2 +- .../base/applications/regedit/lang/ro-RO.rc | 6 +- reactos/base/shell/cmd/lang/ja-JP.rc | 1020 ++++++++--------- reactos/base/system/diskpart/lang/ro-RO.rc | 10 +- reactos/dll/cpl/desk/lang/pl-PL.rc | 2 +- reactos/dll/cpl/input/lang/pl-PL.rc | 10 +- 83 files changed, 619 insertions(+), 600 deletions(-) diff --git a/reactos/base/applications/fontview/lang/ro-RO.rc b/reactos/base/applications/fontview/lang/ro-RO.rc index 24c11532179..4361ff13dc0 100644 --- a/reactos/base/applications/fontview/lang/ro-RO.rc +++ b/reactos/base/applications/fontview/lang/ro-RO.rc @@ -1,12 +1,12 @@ -//2011.10.17 - Fulea Ștefan: diacritics changes, other minor changes +//2012.09.09 - Fulea Ștefan: update caused by r56898, corrections LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL STRINGTABLE DISCARDABLE BEGIN - IDS_INSTALL, "Install" - IDS_PRINT, "Imprimare" + IDS_INSTALL, "Inst&alează" + IDS_PRINT, "I&mprimă" IDS_STRING, "Turubinele eoliene generează câțiva MJ (câțiva kW•h) în exces, acoperind și necesarul familiei. QY 1234567890" - IDS_OPEN, "Open Font..." + IDS_OPEN, "Deschidere font…" IDS_ERROR, "Eroare" IDS_ERROR_NOMEM, "Nu e destulă memorie pentru a încheia operația." IDS_ERROR_NOFONT, "Fișierul «%1» este un fișier font deteriorat." diff --git a/reactos/base/applications/mscutils/devmgmt/lang/ro-RO.rc b/reactos/base/applications/mscutils/devmgmt/lang/ro-RO.rc index 975db6390a6..eba4d44e0d2 100644 --- a/reactos/base/applications/mscutils/devmgmt/lang/ro-RO.rc +++ b/reactos/base/applications/mscutils/devmgmt/lang/ro-RO.rc @@ -22,7 +22,7 @@ BEGIN MENUITEM "Resurse după t&ip", IDC_RESBYTYPE, GRAYED MENUITEM "Resurse după c&onexiune", IDC_RESBYCONN, GRAYED MENUITEM SEPARATOR - MENUITEM "Show hidden devices", IDC_SHOWHIDDEN + MENUITEM "Afișea&ză dispozitive ascunse", IDC_SHOWHIDDEN END POPUP "&?" BEGIN diff --git a/reactos/base/applications/rapps/rapps/7zip.txt b/reactos/base/applications/rapps/rapps/7zip.txt index 8bfe901f9a2..e17f2287ec4 100644 --- a/reactos/base/applications/rapps/rapps/7zip.txt +++ b/reactos/base/applications/rapps/rapps/7zip.txt @@ -28,7 +28,7 @@ Description = Gereedschap voor het maken en openen van 7z, zip, tar, rar and and [Section.0418] Description = Utilitar pentru crearea și deschiderea arhivelor 7zip, zip, tar, rar și altele. -Size = 1.06Mo +Size = 1,06 Mo [Section.0422] Description = Утиліта для створення та відкриття 7zip, zip, tar, rar та інших архівних файлів. diff --git a/reactos/base/applications/rapps/rapps/abiword.txt b/reactos/base/applications/rapps/rapps/abiword.txt index a42de823eeb..5cf31c62879 100644 --- a/reactos/base/applications/rapps/rapps/abiword.txt +++ b/reactos/base/applications/rapps/rapps/abiword.txt @@ -31,7 +31,7 @@ Description = Edytor tekstu. [Section.0418] Description = Procesor de text. -Size = 5.64Mo +Size = 5,64 Mo [Section.0422] Description = Текстовий процесор. diff --git a/reactos/base/applications/rapps/rapps/abiword28x.txt b/reactos/base/applications/rapps/rapps/abiword28x.txt index 1f5952ce9fb..927d1f3697c 100644 --- a/reactos/base/applications/rapps/rapps/abiword28x.txt +++ b/reactos/base/applications/rapps/rapps/abiword28x.txt @@ -28,7 +28,7 @@ Description = Edytor tekstu. [Section.0418] Description = Procesor de text. -Size = 9.33Mo +Size = 9,33 Mo [Section.0422] Description = Текстовий процесор. diff --git a/reactos/base/applications/rapps/rapps/abyss.txt b/reactos/base/applications/rapps/rapps/abyss.txt index 63023abaf50..17aebf9e2e7 100644 --- a/reactos/base/applications/rapps/rapps/abyss.txt +++ b/reactos/base/applications/rapps/rapps/abyss.txt @@ -30,7 +30,7 @@ Mogą one zostać oparte o MySQL, SQLite, MS SQL Server, MS Access, lub Oracle. [Section.0418] Description = Abyss Web Server vă permite găzduirea de pagini Web pe calculatorul dumneavoastră. Oferă conexiuni securizate SSL/TLS (HTTPS) și multe alte tehnologii Web. Poate executa aplicații Web avansate ]n PHP, Perl, Python, ASP, ASP.NET și Ruby on Rails, ce pot fi susținute de baze de date ca MySQL, SQLite, MS SQL Server, MS Access, sau Oracle. -Size = 1.82Mo +Size = 1,82 Mo [Section.0422] Description = Abyss Web Server дозволить вам утримувати веб-сайти на вашому комп'ютері. Від підтримує безпечні SSL/TLS з'єднання (HTTPS) та великий ряд веб-технологій. Він також запускає PHP, Perl, Python, ASP, ASP.NET, та Ruby on Rails веб-додатки, які можуть підтримуватись такими базами даних, як MySQL, SQLite, MS SQL Server, MS Access, чи Oracle. diff --git a/reactos/base/applications/rapps/rapps/ac97forvirtualbox.txt b/reactos/base/applications/rapps/rapps/ac97forvirtualbox.txt index 2506791bd50..9456f0f7954 100644 --- a/reactos/base/applications/rapps/rapps/ac97forvirtualbox.txt +++ b/reactos/base/applications/rapps/rapps/ac97forvirtualbox.txt @@ -44,7 +44,7 @@ Description = Rozpakuj zawartość w folderze "ReactOS" i dwukrotnie zrestartuj Name = Modul pilot AC97 pentru VirtualBox Licence = Nespecificată Description = Dezarhivați în dosarul „ReactOS” apoi reporniți ReactOS de două ori. -Size = 185.5ko +Size = 185,5 ko [Section.0419] Name = Драйвер AC97 для VirtualBox diff --git a/reactos/base/applications/rapps/rapps/audiograbber.txt b/reactos/base/applications/rapps/rapps/audiograbber.txt index 30d3cb328a1..12633b48846 100644 --- a/reactos/base/applications/rapps/rapps/audiograbber.txt +++ b/reactos/base/applications/rapps/rapps/audiograbber.txt @@ -28,7 +28,7 @@ Description = Bardzo dobry CD Ripper/konwerter plików audio. [Section.0418] Description = Program de extragere conținuturi CD audio și de conversie a fișierelor de sunet. -Size = 3.57Mo +Size = 3,57 Mo [Section.0422] Description = Чудовий CD Ріппер/Конвертер аудіо файлів. diff --git a/reactos/base/applications/rapps/rapps/bittorrent.txt b/reactos/base/applications/rapps/rapps/bittorrent.txt index fa7e5f38cc6..68dd202d1e2 100644 --- a/reactos/base/applications/rapps/rapps/bittorrent.txt +++ b/reactos/base/applications/rapps/rapps/bittorrent.txt @@ -21,4 +21,4 @@ Description = L'originale Client BitTorrent [Section.0418] Licence = Gratuită pentru uz necomercial Description = Originalul client BitTorrent. -Size = 5.4Mo +Size = 5,4 Mo diff --git a/reactos/base/applications/rapps/rapps/cnt.txt b/reactos/base/applications/rapps/rapps/cnt.txt index 7e8ebce6501..5ca8292b577 100644 --- a/reactos/base/applications/rapps/rapps/cnt.txt +++ b/reactos/base/applications/rapps/rapps/cnt.txt @@ -10,3 +10,8 @@ Category = 12 URLSite = http://http://cnt.lakefolks.com URLDownload = http://svn.reactos.org/packages/CNTzip.exe CDPath = none + +[Section.0418] +Licence = Gratuită +Description = Aplicație gratuită pentru simularea unei tastaturi fizice. +Size = 1,3 Mo diff --git a/reactos/base/applications/rapps/rapps/comctl32ocx.txt b/reactos/base/applications/rapps/rapps/comctl32ocx.txt index 989bda36e05..b68d9dc8866 100644 --- a/reactos/base/applications/rapps/rapps/comctl32ocx.txt +++ b/reactos/base/applications/rapps/rapps/comctl32ocx.txt @@ -34,7 +34,7 @@ Description = Microsoft Visual Basic 6.0 Common Controls jest używany przez cz [Section.0418] Licence = Nespecificată Description = Modul logic necesar unor aplicații. Conține: comctl32.ocx, mscomctl.ocx, advpack.dll. -Size = 913.73ko +Size = 913,73 ko [Section.0422] Licence = Невідома diff --git a/reactos/base/applications/rapps/rapps/diablo2.txt b/reactos/base/applications/rapps/rapps/diablo2.txt index 0c93c13d27e..aad9996b67f 100644 --- a/reactos/base/applications/rapps/rapps/diablo2.txt +++ b/reactos/base/applications/rapps/rapps/diablo2.txt @@ -31,7 +31,7 @@ Description = Diablo 2 Shareware. Do poprawnego działania wymagany jest zainsta [Section.0418] Description = Diablo 2 Shareware. Pentru execuție este necesar (pachetul) zeckensack's glide wrapper. -Size = 131.9Mo +Size = 131,9 Mo [Section.0422] Description = Diablo 2 Shareware. Для запуску потрібен zeckensack's glide wrapper. diff --git a/reactos/base/applications/rapps/rapps/dosblaster.txt b/reactos/base/applications/rapps/rapps/dosblaster.txt index d5606fba922..9eb36abc667 100644 --- a/reactos/base/applications/rapps/rapps/dosblaster.txt +++ b/reactos/base/applications/rapps/rapps/dosblaster.txt @@ -28,7 +28,7 @@ Description = DosBlaster to rozszerzenie powłoki, które umożliwia otwarcie ka [Section.0418] Description = DosBlaster este o extensie de interfațare ce oferă posibilitatea deschiderii unui executabil DOS în aplicația DOSBox prin clic dreapta. Această versiune conține DOSBox 0.70, însă poate fi actualizată instalând în dosarele DosBlaster o versiune mai nouă de DOSBox. -Size = 2.05Mo +Size = 2,05 Mo [Section.0422] Description = DosBlaster це розширення оболонки, яке дозволяє запустити будь-який виконавчий файл DOS в DOSBox через правий клік. Ця версія містить DOSBox 0.70, але може бути оновлена встановленням новішої версії DOSBox в теки DosBlaster. diff --git a/reactos/base/applications/rapps/rapps/dosbox.txt b/reactos/base/applications/rapps/rapps/dosbox.txt index 8dfce53445a..0325a9e841f 100644 --- a/reactos/base/applications/rapps/rapps/dosbox.txt +++ b/reactos/base/applications/rapps/rapps/dosbox.txt @@ -25,7 +25,7 @@ Description = DOSBox - emulator DOSa. [Section.0418] Description = DOSBox este un emulator DOS. -Size = 1.38Mo +Size = 1,38 Mo [Section.0422] Description = DOSBox - емулятор DOSу. diff --git a/reactos/base/applications/rapps/rapps/doublecommander.txt b/reactos/base/applications/rapps/rapps/doublecommander.txt index 34c383922e1..75feb21330f 100644 --- a/reactos/base/applications/rapps/rapps/doublecommander.txt +++ b/reactos/base/applications/rapps/rapps/doublecommander.txt @@ -18,8 +18,8 @@ Description = Double Commander is een open-bron file-manager met twee panelen zi Description = Double Commander to menedżer plików, o otwartym źródle, z klasycznym układem dwóch paneli obok siebie. Do rozpakowania archiwum potrzebny jest 7-zip lub podobny program. [Section.0418] -Description = Double Commander este un gestionar (open-source) de fișiere, cu două panouri alăturate. Este necesar 7-Zip sau un utilitar similar de dezarhivare pentru a-l putea extrage. -Size = 6.5Mo +Description = Double Commander este un gestionar (open-source) de fișiere după modelul «două paneluri alăturate». Este necesar 7-Zip sau un utilitar similar de dezarhivare pentru a-l putea extrage. +Size = 6,5 Mo [Section.0419] Description = Double Commander - это открытый двухпанельный файловый менеджер. Вам нужен 7-Zip или подобная утилита для его распаковки. diff --git a/reactos/base/applications/rapps/rapps/fap.txt b/reactos/base/applications/rapps/rapps/fap.txt index 3fc27416923..526af85c159 100644 --- a/reactos/base/applications/rapps/rapps/fap.txt +++ b/reactos/base/applications/rapps/rapps/fap.txt @@ -28,7 +28,7 @@ Description = Prosty i lekki odtwarzacz audio. [Section.0418] Description = Un lector audio simplu și ușor. -Size = 1.86Mo +Size = 1,86 Mo [Section.0422] Description = Простий та маленький програвач аудіо файлів. diff --git a/reactos/base/applications/rapps/rapps/firefox2.txt b/reactos/base/applications/rapps/rapps/firefox2.txt index b288c581257..fa0866f5245 100644 --- a/reactos/base/applications/rapps/rapps/firefox2.txt +++ b/reactos/base/applications/rapps/rapps/firefox2.txt @@ -41,7 +41,7 @@ URLSite = http://www.mozilla-europe.org/pl/ [Section.0418] Description = Cel mai popular și unul dintre cele mai bune navigatoare web gratuite existente. -Size = 5.77Mo +Size = 5,77 Mo URLSite = http://www.mozilla-europe.org/ro/ [Section.0419] diff --git a/reactos/base/applications/rapps/rapps/firefox3.txt b/reactos/base/applications/rapps/rapps/firefox3.txt index 5a56fa34601..307f1ea8ba4 100644 --- a/reactos/base/applications/rapps/rapps/firefox3.txt +++ b/reactos/base/applications/rapps/rapps/firefox3.txt @@ -41,6 +41,7 @@ URLSite = http://www.mozilla-europe.org/pl/ [Section.0418] Description = Cel mai popular și unul dintre cele mai bune navigatoare web gratuite existente. +Size = 7,16 Mo URLSite = http://www.mozilla-europe.org/ro/ [Section.0419] diff --git a/reactos/base/applications/rapps/rapps/firefox36.txt b/reactos/base/applications/rapps/rapps/firefox36.txt index cff7d497c32..e60d031ffe4 100644 --- a/reactos/base/applications/rapps/rapps/firefox36.txt +++ b/reactos/base/applications/rapps/rapps/firefox36.txt @@ -37,6 +37,7 @@ URLSite = http://www.mozilla-europe.org/pl/ [Section.0418] Description = Cel mai popular și unul dintre cele mai bune navigatoare web gratuite existente. +Size = 8,22 Mo URLSite = http://www.mozilla-europe.org/ro/ [Section.0419] diff --git a/reactos/base/applications/rapps/rapps/firefox5.txt b/reactos/base/applications/rapps/rapps/firefox5.txt index aef55463f0a..c7a488f3f59 100644 --- a/reactos/base/applications/rapps/rapps/firefox5.txt +++ b/reactos/base/applications/rapps/rapps/firefox5.txt @@ -48,7 +48,7 @@ URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/17.0. [Section.0418] Description = Cel mai popular și unul dintre cele mai bune navigatoare web gratuite existente. -Size = 16.1Mo +Size = 16,1 Mo URLSite = http://www.mozilla-europe.org/ro/ URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/17.0.1/win32/ro/Firefox%20Setup%2017.0.1.exe diff --git a/reactos/base/applications/rapps/rapps/freebasic.txt b/reactos/base/applications/rapps/rapps/freebasic.txt index 50c611d3cea..9e3d32eaa90 100644 --- a/reactos/base/applications/rapps/rapps/freebasic.txt +++ b/reactos/base/applications/rapps/rapps/freebasic.txt @@ -28,7 +28,7 @@ Description = Otwarty kompilator BASIC, ze składnią kompatybilną z QBASIC. [Section.0419] Description = Compilator (open-source) BASIC. Sintaxa BASIC este compatibilă cu QBASIC. -Size = 6.0Mo +Size = 6,0 Mo [Section.0422] Description = Відкритий компілятор BASIC. Синтаксис сумісний з QBASIC. diff --git a/reactos/base/applications/rapps/rapps/glidewrapzbag.txt b/reactos/base/applications/rapps/rapps/glidewrapzbag.txt index ce1b04853fb..682975e7105 100644 --- a/reactos/base/applications/rapps/rapps/glidewrapzbag.txt +++ b/reactos/base/applications/rapps/rapps/glidewrapzbag.txt @@ -29,7 +29,7 @@ Description = glidewrapper jest potrzebny do uruchomienia Diablo2 w ReactOS-ie. [Section.0418] Licence = Gratuită Description = Glide wrapper, necesar pentru a executa Diablo 2 în ReactOS. -Size = 249.02ko +Size = 249,02 ko [Section.0422] Description = glidewrapper необхідний для запуску Diablo2 в ReactOS. diff --git a/reactos/base/applications/rapps/rapps/irfanview.txt b/reactos/base/applications/rapps/rapps/irfanview.txt index e19cf9f477c..630baa008e4 100644 --- a/reactos/base/applications/rapps/rapps/irfanview.txt +++ b/reactos/base/applications/rapps/rapps/irfanview.txt @@ -34,7 +34,7 @@ Description = Przeglądarka dla bardzo wielu typów obrazów, plików audio oraz [Section.0418] Licence = Gratuită (pentru uz personal) Description = Lector pentru multiple formate de fișiere grafice/audio/video. -Size = 1.46Mo +Size = 1,46 Mo [Section.0422] Licence = Freeware (для домашнього використання) diff --git a/reactos/base/applications/rapps/rapps/irfanviewplugins.txt b/reactos/base/applications/rapps/rapps/irfanviewplugins.txt index 0f84ba779f0..8554c8e9d60 100644 --- a/reactos/base/applications/rapps/rapps/irfanviewplugins.txt +++ b/reactos/base/applications/rapps/rapps/irfanviewplugins.txt @@ -34,7 +34,7 @@ Description = Wtyczki otwierające dodatkowe typy plików w Irfanview. [Section.0418] Licence = Gratuită (pentru uz personal) Description = Extensii adiționale pentru a spori numărul de formate de fișiere recunoscute. -Size = 8.92Mo +Size = 8,92 Mo [Section.0422] Licence = Freeware (для домашнього використання) diff --git a/reactos/base/applications/rapps/rapps/kdewin.txt b/reactos/base/applications/rapps/rapps/kdewin.txt index 39ae6dab418..7d9022d1eb4 100644 --- a/reactos/base/applications/rapps/rapps/kdewin.txt +++ b/reactos/base/applications/rapps/rapps/kdewin.txt @@ -31,7 +31,7 @@ Description = KDE dla Windows. [Section.0418] Description = KDE pentru Windows. -Size = 2.21Mo +Size = 2,21 Mo [Section.0422] Description = KDE для Windows. diff --git a/reactos/base/applications/rapps/rapps/lbreakout2.txt b/reactos/base/applications/rapps/rapps/lbreakout2.txt index f392c87b3ad..598cb99e97c 100644 --- a/reactos/base/applications/rapps/rapps/lbreakout2.txt +++ b/reactos/base/applications/rapps/rapps/lbreakout2.txt @@ -28,7 +28,7 @@ Description = Klon Breakouta/Arkanoida napisany przy użyciu biblioteki SDL. [Section.0418] Description = Ramificație-clonă a bibliotecilor SDL. -Size = 3.03Mo +Size = 3,03 Mo [Section.0422] Description = Клон Breakouta/Arkanoida, що використовує бібліотеки SDL. diff --git a/reactos/base/applications/rapps/rapps/lgeneral.txt b/reactos/base/applications/rapps/rapps/lgeneral.txt index a9b1154d3c4..9539f49ed91 100644 --- a/reactos/base/applications/rapps/rapps/lgeneral.txt +++ b/reactos/base/applications/rapps/rapps/lgeneral.txt @@ -28,7 +28,7 @@ Description = Klon gry Panzer General napisany przy użyciu biblioteki SDL. [Section.0418] Description = Clonă Panzer General utilizând bibliotecile SDL. -Size = 1.92Mo +Size = 1,92 Mo [Section.0422] Description = Клон гри Panzer General, що використовує бібліотеки SDL. diff --git a/reactos/base/applications/rapps/rapps/libreoffice.txt b/reactos/base/applications/rapps/rapps/libreoffice.txt index 5ee9a4c0710..0fa0fd7c77f 100644 --- a/reactos/base/applications/rapps/rapps/libreoffice.txt +++ b/reactos/base/applications/rapps/rapps/libreoffice.txt @@ -28,7 +28,7 @@ Description = Otwarty pakiet biurowy. [Section.0418] Description = Fostul OpenOffice. Suita de aplicații de birotică open-source. -Size = 201.6Mo +Size = 201,6 Mo [Section.0422] Description = Відкритий офісний пакет. diff --git a/reactos/base/applications/rapps/rapps/lmarbles.txt b/reactos/base/applications/rapps/rapps/lmarbles.txt index 4155962d858..15a99f3a0d5 100644 --- a/reactos/base/applications/rapps/rapps/lmarbles.txt +++ b/reactos/base/applications/rapps/rapps/lmarbles.txt @@ -28,7 +28,7 @@ Description = Klon gry Atomix, używający biblioteki SDL. [Section.0418] Description = Clona Atomix utilizând bibliotecile SDL. -Size = 1.39Mo +Size = 1,39 Mo [Section.0422] Description = Клон гри Atomix, що використовує бібліотеки SDL. diff --git a/reactos/base/applications/rapps/rapps/mfc40.txt b/reactos/base/applications/rapps/rapps/mfc40.txt index a06398563c4..236eb775386 100644 --- a/reactos/base/applications/rapps/rapps/mfc40.txt +++ b/reactos/base/applications/rapps/rapps/mfc40.txt @@ -38,7 +38,7 @@ Description = Biblioteka MFC 4 jest używana przez część aplikacji. [Section.0418] Licence = Nespecificată Description = MFC 4 este necesară unor aplicații. Conține: mfc40.dll, msvcrt40.dll. -Size = 865.04ko +Size = 865,04 ko [Section.0422] Name = Переглядач OLE та MFC (Microsoft Foundation Classes) версія 4 diff --git a/reactos/base/applications/rapps/rapps/mirandaim.txt b/reactos/base/applications/rapps/rapps/mirandaim.txt index f48489096af..694fce29978 100644 --- a/reactos/base/applications/rapps/rapps/mirandaim.txt +++ b/reactos/base/applications/rapps/rapps/mirandaim.txt @@ -28,7 +28,7 @@ Description = Otwarty komunikator internetowy, obsługujący wiele różnych pro [Section.0418] Description = Aplicație de mesagerie instant multiprotocol (open-source) - posibil cu limitări în funcționalitate. -Size = 3.1Mo +Size = 3,1 Mo [Section.0422] Description = Відкрита мультипротокольна програма миттєвих повідомлень - може не працювати повністю. diff --git a/reactos/base/applications/rapps/rapps/mirc.txt b/reactos/base/applications/rapps/rapps/mirc.txt index e5a80706ec0..921a25080cd 100644 --- a/reactos/base/applications/rapps/rapps/mirc.txt +++ b/reactos/base/applications/rapps/rapps/mirc.txt @@ -32,7 +32,7 @@ Description = Najpopularniejszy klient IRC (Internet Relay Chat). [Section.0418] Licence = Versiune de evaluare Description = Cel mai popular client de IRC (Internet Relay Chat). -Size = 1.82Mo +Size = 1,82 Mo [Section.0422] Description = Найпопулярніший клієнт IRC (Internet Relay Chat). diff --git a/reactos/base/applications/rapps/rapps/mirc6.txt b/reactos/base/applications/rapps/rapps/mirc6.txt index 5b6f9c03a43..ab4029d7e55 100644 --- a/reactos/base/applications/rapps/rapps/mirc6.txt +++ b/reactos/base/applications/rapps/rapps/mirc6.txt @@ -32,7 +32,7 @@ Description = Najpopularniejszy klient IRC (Internet Relay Chat). [Section.0418] Licence = Versiune de evaluare Description = Cel mai popular client de IRC (Internet Relay Chat). -Size = 1.67Mo +Size = 1,67 Mo [Section.0422] Description = Найпопулярніший клієнт IRC (Internet Relay Chat). diff --git a/reactos/base/applications/rapps/rapps/mono2.txt b/reactos/base/applications/rapps/rapps/mono2.txt index f2939eaa7cd..2794b7076fc 100644 --- a/reactos/base/applications/rapps/rapps/mono2.txt +++ b/reactos/base/applications/rapps/rapps/mono2.txt @@ -23,7 +23,7 @@ Description = Pakiet Mono .net Framework dla Programistów. [Section.0418] Licence = Nespecificată Description = Platformă .net (open-source). -Size = 79.47Mo +Size = 88,6 Mo [Section.0422] Description = Відкритий .net Фреймворк. diff --git a/reactos/base/applications/rapps/rapps/mpc.txt b/reactos/base/applications/rapps/rapps/mpc.txt index 43298ad9176..d034d727d15 100644 --- a/reactos/base/applications/rapps/rapps/mpc.txt +++ b/reactos/base/applications/rapps/rapps/mpc.txt @@ -25,7 +25,7 @@ Description = Mediaspeler. [Section.0418] Description = Lector multimedia. -Size = 5.57Mo +Size = 5,9 Mo [Section.0419] Description = Мультимедийный проигрыватель. diff --git a/reactos/base/applications/rapps/rapps/msxml3.txt b/reactos/base/applications/rapps/rapps/msxml3.txt index 2b5442af24c..b775c00c04e 100644 --- a/reactos/base/applications/rapps/rapps/msxml3.txt +++ b/reactos/base/applications/rapps/rapps/msxml3.txt @@ -34,7 +34,7 @@ Description = Niektóre spośród plików instalacyjnych MSI potrzebują parsera [Section.0418] Licence = Nespecificată Description = MSXML3 este necesar unor Instalatori MSI. Conține: msxml3.dll, msxml3a.dll, msxml3r.dll. -Size = 1.85Mo +Size = 1,85 Mo [Section.0422] Licence = Невідома diff --git a/reactos/base/applications/rapps/rapps/net11.txt b/reactos/base/applications/rapps/rapps/net11.txt index 790cf510aa9..5903c77111f 100644 --- a/reactos/base/applications/rapps/rapps/net11.txt +++ b/reactos/base/applications/rapps/rapps/net11.txt @@ -23,4 +23,4 @@ Description = Microsoft .NET Framework Wersja 1.1 - Pakiet Dystrybucyjny. [Section.0418] Licence = Nespecificată Description = Platforma Microsoft .NET versiunea 1.1 - Pachet redistributabl. -Size = 23.14Mo +Size = 23,14 Mo diff --git a/reactos/base/applications/rapps/rapps/net20.txt b/reactos/base/applications/rapps/rapps/net20.txt index d59e4078324..e0f25607a10 100644 --- a/reactos/base/applications/rapps/rapps/net20.txt +++ b/reactos/base/applications/rapps/rapps/net20.txt @@ -23,4 +23,4 @@ Description = Microsoft .NET Framework Wersja 2.0 - Pakiet Dystrybucyjny. [Section.0418] Licence = Nespecificată Description = Platforma Microsoft .NET versiunea 2.0 - Pachet redistributabl. -Size = 22.42Mo +Size = 22,42 Mo diff --git a/reactos/base/applications/rapps/rapps/net20sp2.txt b/reactos/base/applications/rapps/rapps/net20sp2.txt index 2ff9679e994..0870eaca077 100644 --- a/reactos/base/applications/rapps/rapps/net20sp2.txt +++ b/reactos/base/applications/rapps/rapps/net20sp2.txt @@ -23,4 +23,4 @@ Description = Microsoft .NET Framework Wersja 2.0 Service Pack 2. [Section.0418] Licence = Nespecificată Description = Platforma Microsoft .NET versiunea 2.0 - Service Pack 2 -Size = 23.84Mo +Size = 23,84 Mo diff --git a/reactos/base/applications/rapps/rapps/offbyone.txt b/reactos/base/applications/rapps/rapps/offbyone.txt index 1db6f0ff40f..6c77237626c 100644 --- a/reactos/base/applications/rapps/rapps/offbyone.txt +++ b/reactos/base/applications/rapps/rapps/offbyone.txt @@ -32,7 +32,7 @@ Description = Bardzo mała i szybka przeglądarka internetowa z pełną obsług [Section.0418] Licence = Gratuită Description = Un navigator web foarte mic și rapid compatibil cu HTML 3.2. -Size = 0.98Mo +Size = 0,98 Mo [Section.0422] Description = Дуже малий та швидкий веб-браузер з повною підтримкою HTML 3.2. diff --git a/reactos/base/applications/rapps/rapps/openoffice2.4.txt b/reactos/base/applications/rapps/rapps/openoffice2.4.txt index bf39d632f31..c123688ce35 100644 --- a/reactos/base/applications/rapps/rapps/openoffice2.4.txt +++ b/reactos/base/applications/rapps/rapps/openoffice2.4.txt @@ -44,7 +44,7 @@ Size = 113.92MB [Section.0418] Description = Suita de aplicații de birotică open-source. -Size = 113Mo +Size = 113 Mo [Section.0422] URLSite = http://ua.openoffice.org/ diff --git a/reactos/base/applications/rapps/rapps/openoffice3.0.txt b/reactos/base/applications/rapps/rapps/openoffice3.0.txt index 595caf18da5..38890ddcf8e 100644 --- a/reactos/base/applications/rapps/rapps/openoffice3.0.txt +++ b/reactos/base/applications/rapps/rapps/openoffice3.0.txt @@ -41,6 +41,11 @@ URLSite = http://pl.openoffice.org/ Size = 134.33MB URLDownload = http://dfn.dl.sourceforge.net/project/openofficeorg.mirror/localized/pl/3.3.0/OOo_3.3.0_Win_x86_install_pl.exe +[Section.0419] +Description = Suita de aplicații de birotică open-source. +Size = 145,0 Mo +URLSite = http://www.openoffice.org/ro/ + [Section.0422] Description = Відкритий офісний пакет. URLSite = http://ua.openoffice.org/ diff --git a/reactos/base/applications/rapps/rapps/openttd.txt b/reactos/base/applications/rapps/rapps/openttd.txt index dc7bd11f948..35e638fe35b 100644 --- a/reactos/base/applications/rapps/rapps/openttd.txt +++ b/reactos/base/applications/rapps/rapps/openttd.txt @@ -28,7 +28,7 @@ Description = Otwarty klon silnika gry "Transport Tycoon Deluxe". Do poprawnego [Section.0418] Description = Clona (open-source a) motorului de joc "Transport Tycoon Deluxe". Este necesară o copie a jocului Transport Tycoon. -Size = 4.13Mo +Size = 4,4 Mo [Section.0422] Description = Відкритий клон двигуна гри "Transport Tycoon Deluxe". Вам потрібна копія гри Transport Tycoon. diff --git a/reactos/base/applications/rapps/rapps/opera.txt b/reactos/base/applications/rapps/rapps/opera.txt index 890e9c0956f..96060dc1764 100644 --- a/reactos/base/applications/rapps/rapps/opera.txt +++ b/reactos/base/applications/rapps/rapps/opera.txt @@ -35,7 +35,7 @@ Description = Popularna przeglądarka internetowa z wieloma zaawansowanymi funkc [Section.0418] Licence = Gratuită Description = Navigatorul popular Opera cu multe funcționalități avansate incluzând poștă electronică și un client de BitTorrent. -Size = 10.13Mo +Size = 12,0 Mo [Section.0419] Description = Популярный браузер со многими дополнительными возможностями, включающий клиентов почты и BitTorrent. diff --git a/reactos/base/applications/rapps/rapps/opera9.txt b/reactos/base/applications/rapps/rapps/opera9.txt index 295d19902f8..a7a81890691 100644 --- a/reactos/base/applications/rapps/rapps/opera9.txt +++ b/reactos/base/applications/rapps/rapps/opera9.txt @@ -29,7 +29,7 @@ Description = Popularna przeglądarka internetowa z wieloma zaawansowanymi funkc [Section.0418] Licence = Gratuită Description = Navigatorul popular Opera cu multe funcționalități avansate incluzând poștă electronică și un client de BitTorrent. -Size = 7.21Mo +Size = 7,21 Mo [Section.0419] Description = Популярный браузер со многими дополнительными возможностями, включающий клиентов почты и BitTorrent. diff --git a/reactos/base/applications/rapps/rapps/putty.txt b/reactos/base/applications/rapps/rapps/putty.txt index 1b40304f0ad..6602b019557 100644 --- a/reactos/base/applications/rapps/rapps/putty.txt +++ b/reactos/base/applications/rapps/rapps/putty.txt @@ -31,7 +31,7 @@ Description = Darmowy klient obsługujący protokoły SSH, Telnet, rlogin oraz b [Section.0418] Description = Un client gratuit de SSH, Telnet, rlogin, and TCP brut. -Size = 1.76Mo +Size = 1,76 Mo [Section.0422] Description = Безплатний SSH, Telnet, rlogin та raw TCP клієнт. diff --git a/reactos/base/applications/rapps/rapps/python.txt b/reactos/base/applications/rapps/rapps/python.txt index d944c7b0774..e8755e3e6fe 100644 --- a/reactos/base/applications/rapps/rapps/python.txt +++ b/reactos/base/applications/rapps/rapps/python.txt @@ -28,7 +28,7 @@ Description = Potęży i dynamiczny język programowania. [Section.0418] Description = Un limbaj de programare dinamic și puternic. -Size = 15.23Mo +Size = 15,1 Mo [Section.0422] Description = Дуже потужна динамічна мова програмування. diff --git a/reactos/base/applications/rapps/rapps/python3.txt b/reactos/base/applications/rapps/rapps/python3.txt index 186cfa8973a..5ca6536c98a 100644 --- a/reactos/base/applications/rapps/rapps/python3.txt +++ b/reactos/base/applications/rapps/rapps/python3.txt @@ -28,7 +28,7 @@ Description = Potęży i dynamiczny język programowania. [Section.0418] Description = Un limbaj de programare dinamic și puternic. -Size = 17.2Mo +Size = 17,0 Mo [Section.0422] Description = Дуже потужна динамічна мова програмування. diff --git a/reactos/base/applications/rapps/rapps/remood.txt b/reactos/base/applications/rapps/rapps/remood.txt index c258195c2d2..5bdfda97fe6 100644 --- a/reactos/base/applications/rapps/rapps/remood.txt +++ b/reactos/base/applications/rapps/rapps/remood.txt @@ -28,7 +28,7 @@ Description = Źródłowy port Doom. Jego celem jest zapewnienie rozrywki znanej [Section.0418] Description = ReMooD este o portare a codului Doom Legacy. Scopul e de a oferi clasica experiență cu noi funcționalități și o mai bună stabilitate. -Size = 1.15Mo +Size = 1,15 Mo [Section.0422] Description = ReMooD э Портом вихідних кодів Doom Legacy. Його метою є додати нові можливості та стабільність до досвіду класичного Legacy. diff --git a/reactos/base/applications/rapps/rapps/rosbe.txt b/reactos/base/applications/rapps/rapps/rosbe.txt index f36b537ae3d..526e43e97db 100644 --- a/reactos/base/applications/rapps/rapps/rosbe.txt +++ b/reactos/base/applications/rapps/rapps/rosbe.txt @@ -34,7 +34,7 @@ Description = Pozwala zbudować obraz płyty ReactOS ze źródeł. Więcej infor [Section.0418] Description = Permite compilarea surselor ReactOS. Pentru instrucțiuni, consultați wiki ReactOS. -Size = 17.8Mo +Size = 17,8 Mo [Section.0422] Description = Дозволяє зібрати ReactOS з вихідних кодів. За детальною інформацією дивіться в ReactOS Вікі. diff --git a/reactos/base/applications/rapps/rapps/rosbeamd64.txt b/reactos/base/applications/rapps/rapps/rosbeamd64.txt index 2c45df962a9..7a84fb9dfe6 100644 --- a/reactos/base/applications/rapps/rapps/rosbeamd64.txt +++ b/reactos/base/applications/rapps/rapps/rosbeamd64.txt @@ -31,7 +31,7 @@ Description = Pozwala zbudować obraz płyty ReactOS AMD64 ze źródeł. Więcej [Section.0418] Description = Permite compilarea surselor ReactOS pentru AMD64. Pentru instrucțiuni, consultați wiki ReactOS. -Size = 15.83Mo +Size = 15,83 Mo [Section.0422] Description = Дозволяє зібрати ReactOS AMD64 з вихідних кодів. За детальною інформацією дивіться в ReactOS Вікі. diff --git a/reactos/base/applications/rapps/rapps/rosbearm.txt b/reactos/base/applications/rapps/rapps/rosbearm.txt index 8b2026940a4..bf2dd1fe69f 100644 --- a/reactos/base/applications/rapps/rapps/rosbearm.txt +++ b/reactos/base/applications/rapps/rapps/rosbearm.txt @@ -28,7 +28,7 @@ Description = Pozwala zbudować obraz płyty ReactOS ARM ze źródeł. Więcej i [Section.0418] Description = Permite compilarea surselor ReactOS pentru ARM. Pentru instrucțiuni, consultați wiki ReactOS. -Size = 11.15Mo +Size = 11,15 Mo [Section.0422] Description = Дозволяє зібрати ReactOS ARM з вихідних кодів. За детальною інформацією дивіться в ReactOS Вікі. diff --git a/reactos/base/applications/rapps/rapps/sambatng.txt b/reactos/base/applications/rapps/rapps/sambatng.txt index 98723270f99..5617967198d 100644 --- a/reactos/base/applications/rapps/rapps/sambatng.txt +++ b/reactos/base/applications/rapps/rapps/sambatng.txt @@ -28,7 +28,7 @@ Description = Narzędzie pozwalające na dostęp z poziomu ReactOSa do współdz [Section.0418] Description = Acest instrument permite accesarea în ReactOS a dosarelor/imprimantelor partajate din Windows. -Size = 2.13Mo +Size = 2,13 Mo [Section.0422] Description = Цей інструмент дозволяє отримати доступ до спільних тек/принтерів Windows з ReactOSа. diff --git a/reactos/base/applications/rapps/rapps/sbforvmware.txt b/reactos/base/applications/rapps/rapps/sbforvmware.txt index 396b6886d4e..801f4db69e5 100644 --- a/reactos/base/applications/rapps/rapps/sbforvmware.txt +++ b/reactos/base/applications/rapps/rapps/sbforvmware.txt @@ -41,9 +41,11 @@ Licence = Nieznana Description = Rozpakuj zawartość w folderze "ReactOS" i dwukrotnie zrestartuj system. [Section.0418] +Name = Modul pilot SoundBlaster pentru VMWare Licence = Nespecificată Description = Dezarhivați în dosarul „ReactOS” apoi reporniți ReactOS de două ori. -Size = 2.22Mo +Size = 2,22 Mo +URLSite = Nespecificat [Section.0419] Name = Драйвер SoundBlaster для VMWare diff --git a/reactos/base/applications/rapps/rapps/scite.txt b/reactos/base/applications/rapps/rapps/scite.txt index df366ac0d4f..6a5ed5d79e8 100644 --- a/reactos/base/applications/rapps/rapps/scite.txt +++ b/reactos/base/applications/rapps/rapps/scite.txt @@ -29,7 +29,7 @@ Description = SciTE to edytor tekstu bazowany na SCIntilla. Oryginalnie stworzon [Section.0418] Licence = Gratuită Description = SciTE este un editor de text bazat pe SCIntilla. Construit inițial pentru a demonstra Scintilla, a crescut ulterior într-un editor de uz general cu funcționalități de compilare și execuție a programelor. -Size = 677ko +Size = 683 ko [Section.0422] Description = Текстовий редактор на основі SCIntilla. Був зібраний як презентація Scintilla, але виріс до редактора загального користування з засобами збирання та запуску програм. diff --git a/reactos/base/applications/rapps/rapps/scummvm.txt b/reactos/base/applications/rapps/rapps/scummvm.txt index ede71533ca1..8e3d6f70293 100644 --- a/reactos/base/applications/rapps/rapps/scummvm.txt +++ b/reactos/base/applications/rapps/rapps/scummvm.txt @@ -31,7 +31,7 @@ Description = Program pozwalający uruchomić stare gry przygodowe (Sam and Max, [Section.0418] Description = Motor de execuție pentru jocuri SCUMM. -Size = 5.28Mo +Size = 5,28 Mo [Section.0422] Description = Дозволить грати Sam and Max, Day of the Tentacle та інші класичні ігри в ReactOS. diff --git a/reactos/base/applications/rapps/rapps/sdl_mixer.txt b/reactos/base/applications/rapps/rapps/sdl_mixer.txt index d8afc02800e..b05951aa624 100644 --- a/reactos/base/applications/rapps/rapps/sdl_mixer.txt +++ b/reactos/base/applications/rapps/rapps/sdl_mixer.txt @@ -34,7 +34,7 @@ Description = Biblioteka wymagana przez niektóre gry (zwłaszcza te o otwartym [Section.0418] Description = Necesar pentru execuția unor jocuri (open-source). Dezarhivați cu 7-Zip sau cu un utilitar asemănător. -Size = 548.02ko +Size = 548,02 ko [Section.0422] Description = Необхідний для роботи декотрих відкритих ігор. Вам потрібен 7-Zip або подібна утиліта щоб розпакувати його. diff --git a/reactos/base/applications/rapps/rapps/sdl_runtime.txt b/reactos/base/applications/rapps/rapps/sdl_runtime.txt index b10a063bd40..4a19a39be64 100644 --- a/reactos/base/applications/rapps/rapps/sdl_runtime.txt +++ b/reactos/base/applications/rapps/rapps/sdl_runtime.txt @@ -35,7 +35,7 @@ Description = Wymagana przez wiele gier (głównie o otwartym źródle). Do jej [Section.0418] Description = Necesar pentru execuția multor jocuri (open-source). Dezarhivați cu 7-Zip sau cu un utilitar asemănător. -Size = 136.67ko +Size = 136,67 ko [Section.0422] Name = Бібліотека Simple Direct Media Layer (SDL) diff --git a/reactos/base/applications/rapps/rapps/smplayer.txt b/reactos/base/applications/rapps/rapps/smplayer.txt index d7d8804ac50..23081087b78 100644 --- a/reactos/base/applications/rapps/rapps/smplayer.txt +++ b/reactos/base/applications/rapps/rapps/smplayer.txt @@ -31,7 +31,7 @@ Description = Graficzna nakładka na MPlayer, otwarty odtwarzacz filmów. [Section.0418] Description = Lector multimedia (interfață pentru MPlayer). -Size = 15.1Mo +Size = 15,7 Mo URLSite = http://smplayer.sourceforge.net/index.php?tr_lang=ro [Section.0422] diff --git a/reactos/base/applications/rapps/rapps/steam.txt b/reactos/base/applications/rapps/rapps/steam.txt index 0b352821fbc..7cb06f17544 100644 --- a/reactos/base/applications/rapps/rapps/steam.txt +++ b/reactos/base/applications/rapps/rapps/steam.txt @@ -29,7 +29,7 @@ Description = STEAM - platforma, którą używa obecnie wiele gier. [Section.0418] Licence = Gratuită Description = Platforma de joc STEAM, utilizată de multe jocuri în zilele de astăzi. -Size = 1.53Mo +Size = 1,53 Mo URLSite = http://store.steampowered.com/?l=romanian [Section.0422] diff --git a/reactos/base/applications/rapps/rapps/sumatrapdf.txt b/reactos/base/applications/rapps/rapps/sumatrapdf.txt index 597d37cd1e4..d1c1465a9a9 100644 --- a/reactos/base/applications/rapps/rapps/sumatrapdf.txt +++ b/reactos/base/applications/rapps/rapps/sumatrapdf.txt @@ -31,7 +31,7 @@ Description = Sumatra PDF to mały, darmowy, otwarty czytnik PDF. [Section.0418] Description = Lector PDF - ușor, gratuit (open-source), și portabil. -Size = 4.48Mo +Size = 4,2 Mo URLSite = http://blog.kowalczyk.info/software/sumatrapdf/free-pdf-reader-ro.html [Section.0813] diff --git a/reactos/base/applications/rapps/rapps/superfinder.txt b/reactos/base/applications/rapps/rapps/superfinder.txt index 9730575d236..ff57b02d92c 100644 --- a/reactos/base/applications/rapps/rapps/superfinder.txt +++ b/reactos/base/applications/rapps/rapps/superfinder.txt @@ -29,7 +29,7 @@ Description = Szybka i bogata w opcje aplikacja szukająca. [Section.0418] Licence = Gratuită Description = Aplicație rapidă de căutări complexe de text. -Size = 4.94Mo +Size = 4,94 Mo [Section.0422] Description = Швидка та потужна програма пошуку. diff --git a/reactos/base/applications/rapps/rapps/tahoma.txt b/reactos/base/applications/rapps/rapps/tahoma.txt index 05c88e016ab..8ba11eb1170 100644 --- a/reactos/base/applications/rapps/rapps/tahoma.txt +++ b/reactos/base/applications/rapps/rapps/tahoma.txt @@ -36,7 +36,7 @@ Description = Pakiet Czcionki Tahoma wymagany przez niektóre programy (np. Stea [Section.0418] Licence = Necunoscută Description = Pachetul Tahoma Font, necesar unor aplicații (Steam). Conține: Tahoma.ttf, Tahomabd.ttf. -Size = 305.12ko +Size = 305,12 ko [Section.0422] Licence = Невідома diff --git a/reactos/base/applications/rapps/rapps/thunderbird.txt b/reactos/base/applications/rapps/rapps/thunderbird.txt index 92838650a34..7a94426bedb 100644 --- a/reactos/base/applications/rapps/rapps/thunderbird.txt +++ b/reactos/base/applications/rapps/rapps/thunderbird.txt @@ -33,6 +33,7 @@ URLSite = http://www.mozilla-europe.org/pl/products/thunderbird/ [Section.0418] Description = Cel mai popular și unul dintre cele mai bune clientele gratuite de poștă electronică. +Size = 9,06 Mo URLSite = http://www.mozilla-europe.org/ro/products/thunderbird/ [Section.0419] diff --git a/reactos/base/applications/rapps/rapps/thunderbird5.txt b/reactos/base/applications/rapps/rapps/thunderbird5.txt index c3df57d03ec..0a8255f8eb5 100644 --- a/reactos/base/applications/rapps/rapps/thunderbird5.txt +++ b/reactos/base/applications/rapps/rapps/thunderbird5.txt @@ -43,7 +43,7 @@ URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/1 [Section.0418] Description = Cel mai popular și unul dintre cele mai bune clientele gratuite de poștă electronică. -Size = 18.0Mo +Size = 18,0 Mo URLSite = http://www.mozilla-europe.org/ro/products/thunderbird/ URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/17.0/win32/ro/Thunderbird%20Setup%2017.0.exe diff --git a/reactos/base/applications/rapps/rapps/tileworld.txt b/reactos/base/applications/rapps/rapps/tileworld.txt index ed4f32de672..7c0955c2025 100644 --- a/reactos/base/applications/rapps/rapps/tileworld.txt +++ b/reactos/base/applications/rapps/rapps/tileworld.txt @@ -28,7 +28,7 @@ Description = Udany klon gry Chip's Challenge z Atari Lynx. Zawiera darmowy zest [Section.0418] Description = Clonă a Chip's Challenge, creată inițial pentru Atari Lynx. Include pachetul gratuit CCLP2 Graphics, deci nu este necesar Originalul cu drepturi de autor. -Size = 1.16Mo +Size = 1,16 Mo [Section.0422] Description = Чудовий клон гри Chip's Challenge для Atari Lynx. Включено безплатний графічний пакет CCLP2, тому вам не потрібен оригінальний. diff --git a/reactos/base/applications/rapps/rapps/totalcommander.txt b/reactos/base/applications/rapps/rapps/totalcommander.txt index 2da51ff924e..04534d8f596 100644 --- a/reactos/base/applications/rapps/rapps/totalcommander.txt +++ b/reactos/base/applications/rapps/rapps/totalcommander.txt @@ -14,6 +14,10 @@ CDPath = none [Section.0413] Description = Total Commander is een bestandsbeheerder met twee panelen zij aan zij. +[Section.0418] +Description = Total Commander este un gestionar de fișiere după modelul «două paneluri alăturate». +Size = 3,2 Mo + [Section.0813] Description = Total Commander is een bestandsbeheerder met twee panelen zij aan zij. diff --git a/reactos/base/applications/rapps/rapps/tuxpaint.txt b/reactos/base/applications/rapps/rapps/tuxpaint.txt index 63522219229..1765a63208f 100644 --- a/reactos/base/applications/rapps/rapps/tuxpaint.txt +++ b/reactos/base/applications/rapps/rapps/tuxpaint.txt @@ -31,7 +31,7 @@ Description = Otwarty program graficzny przeznaczony głównie dla dzieci. [Section.0418] Description = Un editor grafic bitmap, adresat copiilor. -Size = 10.42Mo +Size = 10,42 Mo [Section.0422] Description = Відкритий графічний редактор для малих дітей. diff --git a/reactos/base/applications/rapps/rapps/ultravnc.txt b/reactos/base/applications/rapps/rapps/ultravnc.txt index 9121c28ecb5..7749a5ff8ec 100644 --- a/reactos/base/applications/rapps/rapps/ultravnc.txt +++ b/reactos/base/applications/rapps/rapps/ultravnc.txt @@ -25,7 +25,7 @@ Description = Otwarty klient/serwer VNC. [Section.0418] Description = Client/server VNC (open-source). -Size = 2.19Mo +Size = 2,19 Mo [Section.0422] Description = Відкритий VNC клієнт/сервер. diff --git a/reactos/base/applications/rapps/rapps/utorrent.txt b/reactos/base/applications/rapps/rapps/utorrent.txt index 2c40d85d54e..36f0225c13f 100644 --- a/reactos/base/applications/rapps/rapps/utorrent.txt +++ b/reactos/base/applications/rapps/rapps/utorrent.txt @@ -35,7 +35,7 @@ Description = Mały i szybki klient BitTorrent. [Section.0418] Licence = Gratuită pentru uz necomercial Description = Client BitTorrent, mic și rapid. -Size = 720.87ko +Size = 720,87 ko [Section.0419] Licence = Бесплатная для некоммерческого использования diff --git a/reactos/base/applications/rapps/rapps/vb5run.txt b/reactos/base/applications/rapps/rapps/vb5run.txt index 47ee0469d85..a9d9b9dbd62 100644 --- a/reactos/base/applications/rapps/rapps/vb5run.txt +++ b/reactos/base/applications/rapps/rapps/vb5run.txt @@ -34,7 +34,7 @@ Description = Biblioteki uruchomieniowe Visual Basic 5. [Section.0418] Licence = Necunoscută Description = Visual Basic 5 Runtime. Conține: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll. -Size = 969.59ko +Size = 969,59 ko [Section.0422] Licence = Невідома diff --git a/reactos/base/applications/rapps/rapps/vb6run.txt b/reactos/base/applications/rapps/rapps/vb6run.txt index d610d6862f2..8926820ef3f 100644 --- a/reactos/base/applications/rapps/rapps/vb6run.txt +++ b/reactos/base/applications/rapps/rapps/vb6run.txt @@ -34,7 +34,7 @@ Description = Biblioteki uruchomieniowe Visual Basic 6. [Section.0418] Licence = Necunoscută Description = Visual Basic 6 Runtime. Conține: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll. -Size = 1.02Mo +Size = 1,02 Mo [Section.0422] Licence = Невідома diff --git a/reactos/base/applications/rapps/rapps/vc2005sp1run.txt b/reactos/base/applications/rapps/rapps/vc2005sp1run.txt index afb02cbb053..384b46bf34b 100644 --- a/reactos/base/applications/rapps/rapps/vc2005sp1run.txt +++ b/reactos/base/applications/rapps/rapps/vc2005sp1run.txt @@ -34,7 +34,7 @@ Description = Biblioteki uruchomieniowe Visual Studio 2005 SP1. [Section.0418] Licence = Necunoscută Description = Visual Studio 2005 Runtime SP1. Conține: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll. -Size = 2.6Mo +Size = 2,6 Mo [Section.0422] Licence = Невідома diff --git a/reactos/base/applications/rapps/rapps/vc2008sp1run.txt b/reactos/base/applications/rapps/rapps/vc2008sp1run.txt index 14e1a71b5fd..c7665984f08 100644 --- a/reactos/base/applications/rapps/rapps/vc2008sp1run.txt +++ b/reactos/base/applications/rapps/rapps/vc2008sp1run.txt @@ -34,7 +34,7 @@ Description = Biblioteki uruchomieniowe Visual Studio 2008 SP1. [Section.0418] Licence = Necunoscută Description = Visual Studio 2008 SP1 Runtime. Conține: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll. -Size = 4.02Mo +Size = 4,02 Mo [Section.0422] Licence = Невідома diff --git a/reactos/base/applications/rapps/rapps/vc6run.txt b/reactos/base/applications/rapps/rapps/vc6run.txt index 8394062092a..cc07461558f 100644 --- a/reactos/base/applications/rapps/rapps/vc6run.txt +++ b/reactos/base/applications/rapps/rapps/vc6run.txt @@ -34,7 +34,7 @@ Description = Biblioteki uruchomieniowe Visual Studio 6. [Section.0418] Licence = Necunoscută Description = Visual Studio 6 Runtime. Conține: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll. -Size = 1.75Mo +Size = 1,75 Mo [Section.0422] Licence = Невідома diff --git a/reactos/base/applications/rapps/rapps/vlc.txt b/reactos/base/applications/rapps/rapps/vlc.txt index 21cdb4e8e30..33564bbaee4 100644 --- a/reactos/base/applications/rapps/rapps/vlc.txt +++ b/reactos/base/applications/rapps/rapps/vlc.txt @@ -31,7 +31,7 @@ Description = Odtwarzacz multimediów. [Section.0418] Description = Lector multimedia. -Size = 21.1Mo +Size = 21,6 Mo [Section.0419] Description = Мультимедийный проигрыватель. diff --git a/reactos/base/applications/rapps/rapps/winboard.txt b/reactos/base/applications/rapps/rapps/winboard.txt index c49890bb469..438b5c2dbdb 100644 --- a/reactos/base/applications/rapps/rapps/winboard.txt +++ b/reactos/base/applications/rapps/rapps/winboard.txt @@ -28,7 +28,7 @@ Description = Graficzna szachownica dla systemu Windows/ReactOS, która może s [Section.0418] Description = WinBoard este o tablă de șah grafică pentru Windows/ReactOS ce poate servi ca interfață pentru GNU Chess, Crafty, sau alte motoare de șah, pentru servere de șah din Internet, sau pentru corespondență poștală de șah. -Size = 5.93Mo +Size = 5,93 Mo [Section.0422] Description = Графічна шахматна дошка для Windows/ReactOS, що може слугувати графічним інтерфейсом для GNU Chess, Crafty, та інших шахматних двигунів, для серверів інтернет-шахмат та для шахматної переписки по е-мейл. diff --git a/reactos/base/applications/rapps/rapps/wme9.txt b/reactos/base/applications/rapps/rapps/wme9.txt index f8045510c22..b7c9f5c4775 100644 --- a/reactos/base/applications/rapps/rapps/wme9.txt +++ b/reactos/base/applications/rapps/rapps/wme9.txt @@ -28,7 +28,7 @@ Licence = Nieznana [Section.0418] Licence = Necunoscută -Size = 9.46Mo +Size = 9,46 Mo [Section.041b] Description = Neznáma diff --git a/reactos/base/applications/regedit/lang/ro-RO.rc b/reactos/base/applications/regedit/lang/ro-RO.rc index d071b61b125..6e204b63aa7 100644 --- a/reactos/base/applications/regedit/lang/ro-RO.rc +++ b/reactos/base/applications/regedit/lang/ro-RO.rc @@ -366,8 +366,8 @@ BEGIN IDS_ERR_DELETEVALUE "Nu s-a reușit ștergerea tuturor valorilor specificate!" IDS_ERR_RENVAL_CAPTION "Eroare la redenumirea de valori" IDS_ERR_RENVAL_TOEMPTY "Nu se poate redenumi %s. Numele valorii specificate este gol. Încercați introducerea unui alt nume." - IDS_QUERY_IMPORT_HIVE_CAPTION "Confirm Key Restoration" - IDS_QUERY_IMPORT_HIVE_MSG "A key will be restored on top of the currently selected key.\nAll values and subkeys of this key will be deleted.\nDo you want to continue the operation?" + IDS_QUERY_IMPORT_HIVE_CAPTION "Confirmați restaurarea cheii" + IDS_QUERY_IMPORT_HIVE_MSG "O cheie va fi restaurată peste cheia curent selectată.\nToate valorile și subcheile acestei chei vor fi eliminate.\nConfirmați continuarea operației?" IDS_NEW_KEY "Cheia nouă #%d" IDS_NEW_VALUE "Valoarea nouă #%d" END @@ -391,7 +391,7 @@ BEGIN IDS_FLT_REGFILE "Fișier registru" IDS_FLT_REGFILES "Fișiere registru (*.reg)" IDS_FLT_REGFILES_FLT "*.reg" - IDS_FLT_HIVFILES "Registry Hive Files (*.*)" + IDS_FLT_HIVFILES "Fișiere registru (*.*)" IDS_FLT_HIVFILES_FLT "*.*" IDS_FLT_REGEDIT4 "Fișiere registru Win9x/NT4 (REGEDIT4) (*.reg)" IDS_FLT_REGEDIT4_FLT "*.reg" diff --git a/reactos/base/shell/cmd/lang/ja-JP.rc b/reactos/base/shell/cmd/lang/ja-JP.rc index e6f45241884..9caea54fb9a 100644 --- a/reactos/base/shell/cmd/lang/ja-JP.rc +++ b/reactos/base/shell/cmd/lang/ja-JP.rc @@ -14,298 +14,298 @@ assoc .ext (print specific association)\n\ assoc .ext= (remove specific association)\n\ assoc .ext=FileType (add new association)\n" -STRING_ATTRIB_HELP, "ƒtƒ@ƒCƒ‹‘®«‚ð•\\ަ‚Ü‚½‚͕ύX‚µ‚Ü‚·B\n\n\ -ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] [ƒtƒ@ƒCƒ‹] ...\n\ +STRING_ATTRIB_HELP, "ファイル属性を表示または変更します。\n\n\ +ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] [ファイル] ...\n\ [/S [/D]]\n\n\ - + ‘®«‚ðÝ’肵‚Ü‚·B\n\ - - ‘®«‚ð‰ðœ‚µ‚Ü‚·B\n\ - R “ǂ݂Ƃèê—p‘®«B\n\ - A ƒA[ƒJƒCƒu‘®«B\n\ - S ƒVƒXƒeƒ€ ƒtƒ@ƒCƒ‹‘®«B\n\ - H ‰B‚µƒtƒ@ƒCƒ‹‘®«B\n\ - /S Œ»Ý‚̃tƒHƒ‹ƒ_‚Æ‚·‚ׂẴTƒuƒtƒHƒ‹ƒ_‚̈ê’v‚·‚éƒtƒ@ƒCƒ‹‚ð\n\ - ˆ—‚µ‚Ü‚·B\n\ - /D ƒtƒHƒ‹ƒ_‚àˆ—‚µ‚Ü‚·B\n\n\ -ƒpƒ‰ƒ[ƒ^‚ðŽw’肵‚È‚¢‚Å ATTRIB ‚Æ“ü—Í‚·‚邯A‚·‚ׂẴtƒ@ƒCƒ‹‚Ì‘®«‚ð•\\ަ‚µ‚Ü‚·B\n" + + 属性を設定します。\n\ + - 属性を解除します。\n\ + R 読みとり専用属性。\n\ + A アーカイブ属性。\n\ + S システム ファイル属性。\n\ + H 隠しファイル属性。\n\ + /S 現在のフォルダとすべてのサブフォルダの一致するファイルを\n\ + 処理します。\n\ + /D フォルダも処理します。\n\n\ +パラメータを指定しないで ATTRIB と入力すると、すべてのファイルの属性を表示します。\n" -STRING_ALIAS_HELP, "ƒGƒCƒŠƒAƒX‚̐ݒè‚â‰ðœ‚ð‚µ‚½‚èAƒGƒCƒŠƒAƒX‚ð•\\ަ‚µ‚½‚肵‚Ü‚·B\n\n\ -ALIAS [ƒGƒCƒŠƒAƒX=[ƒRƒ}ƒ“ƒh]]\n\n\ - ƒGƒCƒŠƒAƒX ƒGƒCƒŠƒAƒX‚Æ‚µ‚¯‚é–¼‘OB\n\ - ƒRƒ}ƒ“ƒh ƒGƒCƒŠƒAƒX‚Æ‚µ‚Đݒ肷‚é•¶Žš—ñB\n\n\ -‚·‚ׂẴGƒCƒŠƒAƒX‚ðˆê——•\\ަ‚·‚é‚É‚Í:\n\ +STRING_ALIAS_HELP, "エイリアスの設定や解除をしたり、エイリアスを表示したりします。\n\n\ +ALIAS [エイリアス=[コマンド]]\n\n\ + エイリアス エイリアスとしてつける名前。\n\ + コマンド エイリアスとして設定する文字列。\n\n\ +すべてのエイリアスを一覧表示するには:\n\ ALIAS\n\n\ -V‚½‚ɃGƒCƒŠƒAƒX‚ðÝ’肵‚½‚èAŠù‘¶‚̃GƒCƒŠƒAƒX‚ð’u‚«Š·‚¦‚é‚É‚Í:\n\ +新たにエイリアスを設定したり、既存のエイリアスを置き換えるには:\n\ ALIAS da=dir a:\n\n\ -ƒGƒCƒŠƒAƒX‚ÌƒŠƒXƒg‚©‚çƒGƒCƒŠƒAƒX‚ðŽæ‚èœ‚­‚É‚Í:\n\ +エイリアスのリストからエイリアスを取り除くには:\n\ ALIAS da=" -STRING_BEEP_HELP, "ƒXƒs[ƒJ‚©‚çƒr[ƒv‰¹‚ð–‚炵‚Ü‚·B\n\nBEEP\n" +STRING_BEEP_HELP, "スピーカからビープ音を鳴らします。\n\nBEEP\n" -STRING_CALL_HELP, "ƒoƒbƒ` ƒvƒƒOƒ‰ƒ€‚ð•ʂ̃oƒbƒ` ƒvƒƒOƒ‰ƒ€‚©‚çŒÄ‚яo‚µ‚Ü‚·B\n\n\ -CALL [ƒhƒ‰ƒCƒu:][ƒpƒX]ƒtƒ@ƒCƒ‹–¼ [ƒoƒbƒ`ƒpƒ‰ƒ[ƒ^]\n\n\ - ƒoƒbƒ`ƒpƒ‰ƒ[ƒ^ ƒoƒbƒ` ƒvƒƒOƒ‰ƒ€‚Å•K—v‚ȃRƒ}ƒ“ƒh ƒ‰ƒCƒ“î•ñ‚ð\n\ - Žw’肵‚Ü‚·B" +STRING_CALL_HELP, "バッチ プログラムを別のバッチ プログラムから呼び出します。\n\n\ +CALL [ドライブ:][パス]ファイル名 [バッチパラメータ]\n\n\ + バッチパラメータ バッチ プログラムで必要なコマンド ライン情報を\n\ + 指定します。" -STRING_CD_HELP, "Œ»Ý‚̃fƒBƒŒƒNƒgƒŠ‚ð•ύX‚µ‚½‚èAƒfƒBƒŒƒNƒgƒŠ–¼‚ð•\\ަ‚µ‚½‚肵‚Ü‚·B\n\n\ -CHDIR [/D][ƒhƒ‰ƒCƒu:][ƒpƒX]\n\ +STRING_CD_HELP, "現在のディレクトリを変更したり、ディレクトリ名を表示したりします。\n\n\ +CHDIR [/D][ドライブ:][パス]\n\ CHDIR[..|.]\n\ -CD [/D][ƒhƒ‰ƒCƒu:]ƒpƒX]\n\ +CD [/D][ドライブ:]パス]\n\ CD[..|.]\n\n\ - .. eƒfƒBƒŒƒNƒgƒŠ\n\ - . Œ»Ý‚̃fƒBƒŒƒNƒgƒŠ\n\ - /D Œ»Ý‚̃hƒ‰ƒCƒu‚ƃfƒBƒŒƒNƒgƒŠ‚Ì—¼•û‚ð•ύX‚µ‚Ü‚·B\n\n\ -CD ƒhƒ‰ƒCƒu: ‚Æ“ü—Í‚·‚邯Žw’肳‚ꂽƒhƒ‰ƒCƒu‚ÌŒ»Ý‚̃fƒBƒŒƒNƒgƒŠ‚ª•\\ަ‚³‚ê‚Ü‚·B\n\ -ƒpƒ‰ƒ[ƒ^‚ðŽw’肵‚È‚¢‚Å CD ‚Æ“ü—Í‚·‚邯AŒ»Ý‚̃hƒ‰ƒCƒu‚ƃfƒBƒŒƒNƒgƒŠ‚ª•\\ަ‚³‚ê‚Ü‚·B\n" + .. 親ディレクトリ\n\ + . 現在のディレクトリ\n\ + /D 現在のドライブとディレクトリの両方を変更します。\n\n\ +CD ドライブ: と入力すると指定されたドライブの現在のディレクトリが表示されます。\n\ +パラメータを指定しないで CD と入力すると、現在のドライブとディレクトリが表示されます。\n" -STRING_CHCP_HELP, "Œ»Ý‚̃R[ƒh ƒy[ƒW”ԍ†‚ð•\\ަ‚Ü‚½‚͐ݒ肵‚Ü‚·B\n\n\ +STRING_CHCP_HELP, "現在のコード ページ番号を表示または設定します。\n\n\ CHCP [nnn]\n\n\ - nnn ƒR[ƒh ƒy[ƒW”ԍ†‚ðŽw’肵‚Ü‚·B\n\n\ -Œ»Ý‚̃R[ƒh ƒy[ƒW”ԍ†‚ð•\\ަ‚·‚邯‚«‚́Aƒpƒ‰ƒ[ƒ^‚ðŽw’肹‚¸‚É CHCP ‚Æ“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B\n" + nnn コード ページ番号を指定します。\n\n\ +現在のコード ページ番号を表示するときは、パラメータを指定せずに CHCP と入力してください。\n" -STRING_CHOICE_HELP, "ƒ†[ƒU[‚ª‘I‘ðŽˆ‚©‚çˆê‚‚ð‘I‘ð‚·‚é‚Ì‚ð‘Ò‚¿‚Ü‚·B\n\n\ -CHOICE [/C[:]‘I‘ðŽˆ][/N][/S][/T[:]c,nn][•¶Žš—ñ]\n\n\ - /C[:]‘I‘ðŽˆ ‹–‚³‚ê‚éƒL[“ü—Í‚ðŽw’肵‚Ü‚·BƒfƒtƒHƒ‹ƒg‚Í YN ‚Å‚·B\n\ - /N ƒvƒƒ“ƒvƒg‚Ì•¶Žš—ñ‚̍Ōã‚ɁA‘I‘ðŽˆ‚Æ ? ‚ð•\\ަ‚µ‚Ü‚¹‚ñB\n\ - /S ƒL[“ü—Í‚Ì‘å•¶ŽšE¬•¶Žš‚ð‹æ•Ê‚µ‚Ü‚·B\n\ - /T[:]c,nn nn •bŒo‰ß‚·‚邯ީ“®“I‚É c ‚ð‘I‘ð‚µ‚Ü‚·B\n\ - •¶Žš—ñ •\\ަ‚·‚éƒvƒƒ“ƒvƒg‚Ì•¶Žš—ñ‚Å‚·B\n\n\ -ƒ†[ƒU[‚ª‘I‘ðŽˆ‚É‚ ‚éƒL[‚ð‰Ÿ‚·‚ƁA‚»‚̃IƒtƒZƒbƒg‚ª ERRORLEVEL ‚ɃZƒbƒg‚³‚ê‚Ü‚·B\n" +STRING_CHOICE_HELP, "ユーザーが選択肢から一つを選択するのを待ちます。\n\n\ +CHOICE [/C[:]選択肢][/N][/S][/T[:]c,nn][文字列]\n\n\ + /C[:]選択肢 許されるキー入力を指定します。デフォルトは YN です。\n\ + /N プロンプトの文字列の最後に、選択肢と ? を表示しません。\n\ + /S キー入力の大文字・小文字を区別します。\n\ + /T[:]c,nn nn 秒経過すると自動的に c を選択します。\n\ + 文字列 表示するプロンプトの文字列です。\n\n\ +ユーザーが選択肢にあるキーを押すと、そのオフセットが ERRORLEVEL にセットされます。\n" -STRING_CLS_HELP, "‰æ–Ê‚ðÁ‹Ž‚µ‚Ü‚·B\n\nCLS\n" +STRING_CLS_HELP, "画面を消去します。\n\nCLS\n" -STRING_CMD_HELP1, "\n—˜—p‚Å‚«‚é“à•”ƒRƒ}ƒ“ƒh:\n" +STRING_CMD_HELP1, "\n利用できる内部コマンド:\n" -STRING_CMD_HELP2, "\n—˜—p‚Å‚«‚é‹@”\\:" +STRING_CMD_HELP2, "\n利用できる機能:" -STRING_CMD_HELP3," [ƒGƒCƒŠƒAƒX]" +STRING_CMD_HELP3," [エイリアス]" -STRING_CMD_HELP4," [ƒqƒXƒgƒŠ]" +STRING_CMD_HELP4," [ヒストリ]" -STRING_CMD_HELP5," [UNIX ƒtƒ@ƒCƒ‹–¼•⊮]" +STRING_CMD_HELP5," [UNIX ファイル名補完]" -STRING_CMD_HELP6," [ƒfƒBƒŒƒNƒgƒŠ ƒXƒ^ƒbƒN]" +STRING_CMD_HELP6," [ディレクトリ スタック]" -STRING_CMD_HELP7," [ƒŠƒ_ƒCƒŒƒNƒg‚ƃpƒCƒv]" +STRING_CMD_HELP7," [リダイレクトとパイプ]" -STRING_CMD_HELP8, "ReactOS ƒRƒ}ƒ“ƒh ƒ‰ƒCƒ“ ƒCƒ“ƒ^[ƒvƒŠƒ^‚̐V‚µ‚¢ƒCƒ“ƒXƒ^ƒ“ƒX‚ðŠJŽn‚µ‚Ü‚·B\n\n\ -CMD [/[C|K] ƒRƒ}ƒ“ƒh][/P][/Q][/T:bf]\n\n\ - /C ƒRƒ}ƒ“ƒh Žw’肳‚ꂽƒRƒ}ƒ“ƒh‚ðŽÀs‚µ‚½ŒãAI—¹‚µ‚Ü‚·B\n\ - /K ƒRƒ}ƒ“ƒh Žw’肳‚ꂽƒRƒ}ƒ“ƒh‚ðŽÀs‚µ‚Ü‚·‚ªAI—¹‚µ‚Ü‚¹‚ñB\n\ - /P CMD ‚͉i‘±“I‚É“®ì‚ð‚µAautoexec.bat ‚ðŽÀs‚µ‚Ü‚·\n\ - (I—¹‚³‚¹‚邱‚Ƃ͂ł«‚Ü‚¹‚ñ)B\n\ - /T:bf ‘OŒiF‚¨‚æ‚Ñ”wŒiF‚ðÝ’肵‚Ü‚· (Ú×‚Í COLOR /? ‚ðŽQÆ‚µ‚Ä\n\ - ‚­‚¾‚³‚¢)B\n" +STRING_CMD_HELP8, "ReactOS コマンド ライン インタープリタの新しいインスタンスを開始します。\n\n\ +CMD [/[C|K] コマンド][/P][/Q][/T:bf]\n\n\ + /C コマンド 指定されたコマンドを実行した後、終了します。\n\ + /K コマンド 指定されたコマンドを実行しますが、終了しません。\n\ + /P CMD は永続的に動作をし、autoexec.bat を実行します\n\ + (終了させることはできません)。\n\ + /T:bf 前景色および背景色を設定します \n\ + (詳細は COLOR /? を参照してください)。\n" -STRING_COLOR_HELP1, "ƒRƒ“ƒ\\[ƒ‹‚̃fƒtƒHƒ‹ƒg‚Ì‘OŒiF‚¨‚æ‚Ñ”wŒiF‚ðÝ’肵‚Ü‚·B\n\n\ -COLOR [‘®« [/-F]] \n\n\ - ‘®« ƒRƒ“ƒ\\[ƒ‹o—͂̐F‘®«‚ðŽw’肵‚Ü‚·B\n\ - /-F ƒRƒ“ƒ\\[ƒ‹‚̋󂢂Ă¢‚é‹óŠÔ‚ɂ͐F‘®«‚ð“K—p‚µ‚È‚¢B\n\n\ -F‚ÍŽŸ‚Ì 3 Ží—Þ‚Ì•û–@‚ÅŽw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B\n\ -1) [F–¼] on [F–¼] (•K—v‚Ȃ͍̂ŏ‰‚Ì 3 •¶Žš‚¾‚¯‚Å‚·)\n\ -2) [10 i”] on [10 i”]\n\ -3) 2 Œ…‚Ì 16 i”\n\n\ -F–¼:\n\ -10i 16i F–¼ 10i 16i F–¼\n\ -0 0 • 8 8 ŠDF (–¾‚é‚¢•)\n\ -1 1 Â 9 9 –¾‚é‚¢Â\n\ -2 2 —Î 10 A –¾‚é‚¢—Î\n\ -3 3 …F 11 B –¾‚é‚¢…F\n\ -4 4 Ô 12 C –¾‚é‚¢Ô\n\ -5 5 އ 13 D –¾‚邢އ\n\ -6 6 ‰©F 14 E –¾‚é‚¢‰©F\n\ -7 7 ”’ 15 F ‹P‚­”’\n" +STRING_COLOR_HELP1, "コンソールのデフォルトの前景色および背景色を設定します。\n\n\ +COLOR [属性 [/-F]] \n\n\ + 属性 コンソール出力の色属性を指定します。\n\ + /-F コンソールの空いている空間には色属性を適用しない。\n\n\ +色は次の 3 種類の方法で指定することができます。\n\ +1) [色名] on [色名] (必要なのは最初の 3 文字だけです)\n\ +2) [10 進数] on [10 進数]\n\ +3) 2 桁の 16 進数\n\n\ +色名:\n\ +10進 16進 色名 10進 16進 色名\n\ +0 0 黒 8 8 灰色 (明るい黒)\n\ +1 1 青 9 9 明るい青\n\ +2 2 緑 10 A 明るい緑\n\ +3 3 水色 11 B 明るい水色\n\ +4 4 赤 12 C 明るい赤\n\ +5 5 紫 13 D 明るい紫\n\ +6 6 黄色 14 E 明るい黄色\n\ +7 7 白 15 F 輝く白\n" -STRING_COPY_HELP1, "%s ‚ðã‘‚«‚µ‚Ü‚·‚ªA‚æ‚낵‚¢‚Å‚·‚©? (Yes/No/All)? " +STRING_COPY_HELP1, "%s を上書きしますが、よろしいですか? (Yes/No/All)? " -STRING_COPY_HELP2, "1 ‚‚܂½‚Í•¡”‚̃tƒ@ƒCƒ‹‚ð•ʂ̏ꏊ‚ɃRƒs[‚µ‚Ü‚·B\n\n\ -COPY [/V][/Y|/-Y][/A|/B] ƒRƒs[Œ³ [/A|/B]\n\ - [+ ƒRƒs[Œ³ [/A|/B] [+ ...]] [ƒRƒs[æ [/A|/B]]\n\n\ - ƒRƒs[Œ³ ƒRƒs[‚·‚éƒtƒ@ƒCƒ‹ (•¡”‰Â) ‚ðŽw’肵‚Ü‚·B\n\ - /A ASCII ƒeƒLƒXƒg ƒtƒ@ƒCƒ‹‚Æ‚µ‚Ĉµ‚¢‚Ü‚·B\n\ - /B ƒoƒCƒiƒŠ ƒtƒ@ƒCƒ‹‚Æ‚µ‚Ĉµ‚¢‚Ü‚·B\n\ - ƒRƒs[æ V‚µ‚¢ƒtƒ@ƒCƒ‹‚̃fƒBƒŒƒNƒgƒŠ‚Ü‚½‚̓tƒ@ƒCƒ‹–¼ (•¡”‰Â) ‚ð\n\ - Žw’肵‚Ü‚·B\n\ - /V V‚µ‚¢ƒtƒ@ƒCƒ‹‚ª³‚µ‚­‘‚«ž‚܂ꂽ‚©ŒŸ¸‚µ‚Ü‚·B\n\ - /Y Žó‚¯‘¤‚ÌŠù‘¶‚̃tƒ@ƒCƒ‹‚ðã‘‚«‚·‚é‘O‚ÉŠm”F‚̃ƒbƒZ[ƒW‚ð\n\ - •\\ަ‚µ‚Ü‚¹‚ñB\n\ - /-Y Žó‚¯‘¤‚ÌŠù‘¶‚̃tƒ@ƒCƒ‹‚ðã‘‚«‚·‚é‘O‚ÉŠm”F‚̃ƒbƒZ[ƒW‚ð\n\ - •\\ަ‚µ‚Ü‚·B\n\n\ -TŠÂ‹«•ϐ” COPYCMD ‚ŃXƒCƒbƒ` /Y ‚ªÝ’肳‚ê‚Ä‚¢‚éê‡‚ª‚ ‚è‚Ü‚·B\n\ +STRING_COPY_HELP2, "1 つまたは複数のファイルを別の場所にコピーします。\n\n\ +COPY [/V][/Y|/-Y][/A|/B] コピー元 [/A|/B]\n\ + [+ コピー元 [/A|/B] [+ ...]] [コピー先 [/A|/B]]\n\n\ + コピー元 コピーするファイル (複数可) を指定します。\n\ + /A ASCII テキスト ファイルとして扱います。\n\ + /B バイナリ ファイルとして扱います。\n\ + コピー先 新しいファイルのディレクトリまたはファイル名 (複数可) を\n\ + 指定します。\n\ + /V 新しいファイルが正しく書き込まれたか検査します。\n\ + /Y 受け側の既存のファイルを上書きする前に確認のメッセージを\n\ + 表示しません。\n\ + /-Y 受け側の既存のファイルを上書きする前に確認のメッセージを\n\ + 表示します。\n\n\ +環境変数 COPYCMD でスイッチ /Y が設定されている場合があります。\n\ ...\n" -STRING_DATE_HELP1, "\nV‚µ‚¢“ú•t‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢ (mm%cdd%cyyyy): " +STRING_DATE_HELP1, "\n新しい日付を入力してください (mm%cdd%cyyyy): " -STRING_DATE_HELP2, "\nV‚µ‚¢“ú•t‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢ (dd%cmm%cyyyy): " +STRING_DATE_HELP2, "\n新しい日付を入力してください (dd%cmm%cyyyy): " -STRING_DATE_HELP3, "\nV‚µ‚¢“ú•t‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢ (yyyy%cmm%cdd): " +STRING_DATE_HELP3, "\n新しい日付を入力してください (yyyy%cmm%cdd): " -STRING_DATE_HELP4, "“ú•t‚ð•\\ަ‚Ü‚½‚͐ݒ肵‚Ü‚·B\n\n\ -DATE [/T][“ú•t]\n\n\ - /T “ú•t‚Ì•\\ަ‚̂ݍs‚¢‚Ü‚·B\n\n\ -ƒpƒ‰ƒ[ƒ^‚ÌŽw’肪‚È‚¢ê‡‚́AŒ»Ý‚Ì“ú•t‚ª•\\ަ‚³‚êAV‚µ‚¢“ú•t‚Ì“ü—Í‚ð\n\ -‹‚ß‚ç‚ê‚Ü‚·B•ύX‚µ‚È‚¢ê‡‚́AEnter ƒL[‚ð‰Ÿ‚µ‚Ü‚·B\n" +STRING_DATE_HELP4, "日付を表示または設定します。\n\n\ +DATE [/T][日付]\n\n\ + /T 日付の表示のみ行います。\n\n\ +パラメータの指定がない場合は、現在の日付が表示され、新しい日付の入力を\n\ +求められます。変更しない場合は、Enter キーを押します。\n" -STRING_DEL_HELP1, "1 ‚‚܂½‚Í•¡”‚̃tƒ@ƒCƒ‹‚ðíœ‚µ‚Ü‚·B\n\n\ -DEL [/N /P /T /Q /S /W /Y /Z /A[[:]‘®«]] ƒtƒ@ƒCƒ‹–¼ ...\n\ -DELETE [/N /P /T /Q /S /W /Y /Z /A[[:]‘®«]] ƒtƒ@ƒCƒ‹–¼ ...\n\ -ERASE [/N /P /T /Q /S /W /Y /Z /A[[:]‘®«]] ƒtƒ@ƒCƒ‹–¼ ...\n\n\ - ƒtƒ@ƒCƒ‹–¼\n\ - íœ‚·‚éƒtƒ@ƒCƒ‹ (•¡”‰Â) ‚ðŽw’肵‚Ü‚·B\n\n\ - /N Nothing. ‰½‚à‚µ‚Ü‚¹‚ñB\n\ - /P Prompt. Šeƒtƒ@ƒCƒ‹‚ðíœ‚·‚é‘O‚ÉŠm”F‚̃ƒbƒZ[ƒW‚ð•\\ަ‚µ‚Ü‚·B\n\ - /T Total. íœ‚³‚ꂽƒtƒ@ƒCƒ‹‚Ì‘”‚Ɖð•ú‚³‚ꂽƒfƒBƒXƒN—̈æ‚ð•\\ަ‚µ‚Ü‚·B\n\ +STRING_DEL_HELP1, "1 つまたは複数のファイルを削除します。\n\n\ +DEL [/N /P /T /Q /S /W /Y /Z /A[[:]属性]] ファイル名 ...\n\ +DELETE [/N /P /T /Q /S /W /Y /Z /A[[:]属性]] ファイル名 ...\n\ +ERASE [/N /P /T /Q /S /W /Y /Z /A[[:]属性]] ファイル名 ...\n\n\ + ファイル名\n\ + 削除するファイル (複数可) を指定します。\n\n\ + /N Nothing. 何もしません。\n\ + /P Prompt. 各ファイルを削除する前に確認のメッセージを表示します。\n\ + /T Total. 削除されたファイルの総数と解放されたディスク領域を表示します。\n\ /Q Quiet.\n\ - /W Wipe. íœ‚·‚é‘O‚ɁAƒtƒ@ƒCƒ‹‚𗐐”‚ŏ㏑‚«‚µ‚Ü‚·B\n\ - /Y Yes. ƒƒCƒ‹ƒhƒJ[ƒh‚ðŽg—p‚µ‚Ĉꊇíœ‚·‚邯‚«‚àAŠm”F‚̃ƒbƒZ[ƒW‚ð\n\ - •\\ަ‚¹‚¸‚ɍ폜‚µ‚Ü‚·B\n\ - /F “ǂ݂Ƃèê—pƒtƒ@ƒCƒ‹‚âƒVƒXƒeƒ€ ƒtƒ@ƒCƒ‹‚ð‹­§“I‚ɍ폜‚µ‚Ü‚·B\n\ - /S Žw’肳‚ꂽƒtƒ@ƒCƒ‹‚ð‚·‚×‚Ä‚ÌƒTƒuƒfƒBƒŒƒNƒgƒŠ‚©‚çíœ‚µ‚Ü‚·B\n\ - /A ‘®«‚É‚æ‚èíœ‚·‚éƒtƒ@ƒCƒ‹‚ð‘I‘ð‚µ‚Ü‚·B\n\ - ‘®«\n\ - R “ǂݎæ‚èê—p\n\ - S ƒVƒXƒeƒ€ ƒtƒ@ƒCƒ‹\n\ - A ƒA[ƒJƒCƒu\n\ - H ‰B‚µƒtƒ@ƒCƒ‹\n\ - - ‚»‚Ì‘®«ˆÈŠO\n" + /W Wipe. 削除する前に、ファイルを乱数で上書きします。\n\ + /Y Yes. ワイルドカードを使用して一括削除するときも、確認のメッセージを\n\ + 表示せずに削除します。\n\ + /F 読みとり専用ファイルやシステム ファイルを強制的に削除します。\n\ + /S 指定されたファイルをすべてのサブディレクトリから削除します。\n\ + /A 属性により削除するファイルを選択します。\n\ + 属性\n\ + R 読み取り専用\n\ + S システム ファイル\n\ + A アーカイブ\n\ + H 隠しファイル\n\ + - その属性以外\n" -STRING_DEL_HELP2, "ƒfƒBƒŒƒNƒgƒŠ‚Ì‚·‚ׂẴtƒ@ƒCƒ‹‚ªíœ‚³‚ê‚Ü‚·!\n‚æ‚낵‚¢‚Å‚·‚© (Y/N)?" -STRING_DEL_HELP3, " %lu ŒÂ‚̃tƒ@ƒCƒ‹‚ðíœ‚µ‚Ü‚µ‚½\n" -STRING_DEL_HELP4, " %lu ŒÂ‚̃tƒ@ƒCƒ‹‚ðíœ‚µ‚Ü‚µ‚½\n" +STRING_DEL_HELP2, "ディレクトリのすべてのファイルが削除されます!\nよろしいですか (Y/N)?" +STRING_DEL_HELP3, " %lu 個のファイルを削除しました\n" +STRING_DEL_HELP4, " %lu 個のファイルを削除しました\n" -STRING_DELAY_HELP, "n •bA‚Ü‚½‚Í n ƒ~ƒŠ•b‘Ò‹@‚µ‚Ü‚·B\n\ +STRING_DELAY_HELP, "n 秒、または n ミリ秒待機します。\n\ DELAY [/m]n\n\n\ - /m ’PˆÊ‚ðƒ~ƒŠ•b‚ÉŽw’肵‚Ü‚·B\n\ - Žw’肵‚È‚¢ê‡A’PˆÊ‚ɂ͕b‚ªŽg‚í‚ê‚Ü‚·B\n" + /m 単位をミリ秒に指定します。\n\ + 指定しない場合、単位には秒が使われます。\n" -STRING_DIR_HELP1, "ƒfƒBƒŒƒNƒgƒŠ’†‚̃tƒ@ƒCƒ‹‚ƃTƒuƒfƒBƒŒƒNƒgƒŠ‚ðˆê——•\\ަ‚µ‚Ü‚·B\n\n\ -DIR [ƒhƒ‰ƒCƒu:][ƒpƒX][ƒtƒ@ƒCƒ‹–¼] [/A[[:]‘®«]] [/B] [/C] [/D] [/L] [/N]\n\ - [/O[[:]ƒ\\[ƒg‡]] [/P] [/Q] [/S] [/T[[:]ƒ^ƒCƒ€ƒtƒB[ƒ‹ƒh]] [/W] [/X] [/4]\n\n\ - [ƒhƒ‰ƒCƒu:][ƒpƒX][ƒtƒ@ƒCƒ‹–¼]\n\ - ˆê——•\\ަ‚·‚éƒhƒ‰ƒCƒuAƒfƒBƒŒƒNƒgƒŠA‚Ü‚½‚̓tƒ@ƒCƒ‹‚ðŽw’肵‚Ü‚·B\n\ - /A Žw’肳‚ꂽ‘®«‚̃tƒ@ƒCƒ‹‚ð•\\ަ‚µ‚Ü‚·B\n\ - ‘®« D ƒfƒBƒŒƒNƒgƒŠ R “ǂݎæ‚èê—p\n\ - H ‰B‚µƒtƒ@ƒCƒ‹ A ƒA[ƒJƒCƒu\n\ - S ƒVƒXƒeƒ€ ƒtƒ@ƒCƒ‹ - ‚»‚Ì‘®«ˆÈŠO\n\ - /B ƒtƒ@ƒCƒ‹–¼‚݂̂ð•\\ަ‚µ‚Ü‚· (Œ©o‚µ‚â—v–ñ‚ª•t‚«‚Ü‚¹‚ñ)B\n\ - /C ƒtƒ@ƒCƒ‹ ƒTƒCƒY‚ðŒ…‹æØ‚è•\\ަ‚µ‚Ü‚·B‚±‚ê‚Í\n\ - ƒfƒtƒHƒ‹ƒg‚̐ݒè‚Å‚·B/-C ‚Æ‚·‚邯Œ…‹æØ‚è•\\ަ‚³‚ê‚Ü‚¹‚ñB\n\ - /D /W ‚Æ“¯‚¶‚Å‚·‚ªAƒtƒ@ƒCƒ‹‚ð—ñ‚Å•À‚בւ¦‚½ˆê——‚ð•\\ަ‚µ‚Ü‚·B\n\ - /L ¬•¶Žš‚Å•\\ަ‚µ‚Ü‚·B\n\ - /N ƒtƒ@ƒCƒ‹–¼‚ð‰E’[‚É•\\ަ‚·‚éV‚µ‚¢ˆê——Œ`Ž®‚ðŽg—p‚µ‚Ü‚·B\n\ - /O ƒtƒ@ƒCƒ‹‚ð•À‚בւ¦‚Ä•\\ަ‚µ‚Ü‚·B\n\ - ƒ\\[ƒg‡ N –¼‘O‡ (ƒAƒ‹ƒtƒ@ƒxƒbƒg) S ƒTƒCƒY‡ (¬‚³‚¢‚Ù‚¤‚©‚ç)\n\ - E Šg’£Žq‡ (ƒAƒ‹ƒtƒ@ƒxƒbƒg) D “úŽž‡ (ŒÃ‚¢‚Ù‚¤‚©‚ç)\n\ - G ƒOƒ‹[ƒv (ƒfƒBƒŒƒNƒgƒŠ‚©‚ç) - ~‡\n\ - /P 1 ‰æ–Ê‚²‚ƂɒâŽ~‚µ‚Ä•\\ަ‚µ‚Ü‚·B\n\ - /Q ƒtƒ@ƒCƒ‹‚ÌŠ—LŽÒ‚ð•\\ަ‚µ‚Ü‚·B\n\ - /S Žw’肳‚ꂽƒfƒBƒŒƒNƒgƒŠ‚¨‚æ‚Ñ‚»‚̃TƒuƒfƒBƒŒƒNƒgƒŠ‚Ì‚·‚ׂĂÌ\n\ - ƒtƒ@ƒCƒ‹‚ð•\\ަ‚µ‚Ü‚·B\n\ - /T ‚ǂ̃^ƒCƒ€ƒtƒB[ƒ‹ƒh‚ð•\\ަ‚·‚é‚©A‚Ü‚½‚Í•À‚בւ¦‚ÉŽg—p‚·‚é‚©‚ð\n\ - Žw’肵‚Ü‚·B\n\ - ƒ^ƒCƒ€ƒtƒB[ƒ‹ƒh C ì¬n\n\ - A ÅIƒAƒNƒZƒX\n\ - W ÅIXV\n\ - /W ƒƒCƒhˆê——Œ`Ž®‚Å•\\ަ‚µ‚Ü‚·B\n\ - /X ‚±‚̃IƒvƒVƒ‡ƒ“‚Í MS-DOS Œ`Ž® (8.3) ˆÈŠO‚̃tƒ@ƒCƒ‹–¼‚ɑ΂·‚é’Z‚¢\n\ - –¼‘O‚ð•\\ަ‚µ‚Ü‚·B’·‚¢–¼‘O‚Ì‘O‚É’Z‚¢–¼‘O‚ð•\\ަ‚·‚é“_‚ðœ‚¯‚΁A\n\ - /N ƒIƒvƒVƒ‡ƒ“‚Æ“¯‚¶‚Å‚·B’Z‚¢–¼‘O‚ª‚È‚¢ê‡‚́Aƒuƒ‰ƒ“ƒN‚É\n\ - ‚È‚è‚Ü‚·B\n\ - /4 4 ‚‚̐”Žš‚Å”N‚ð•\\ަ‚µ‚Ü‚·B\n\n\ -ŠÂ‹«•ϐ” DIRCMD ‚ɃXƒCƒbƒ`‚ðÝ’è‚Å‚«‚Ü‚·B\n\ -/-W ‚̂悤‚É - (ƒnƒCƒtƒ“) ‚ð‘O‚ɂ‚¯‚邯A‚»‚̃XƒCƒbƒ`‚Í–³Œø‚ɂȂè‚Ü‚·B\n" +STRING_DIR_HELP1, "ディレクトリ中のファイルとサブディレクトリを一覧表示します。\n\n\ +DIR [ドライブ:][パス][ファイル名] [/A[[:]属性]] [/B] [/C] [/D] [/L] [/N]\n\ + [/O[[:]ソート順]] [/P] [/Q] [/S] [/T[[:]タイムフィールド]] [/W] [/X] [/4]\n\n\ + [ドライブ:][パス][ファイル名]\n\ + 一覧表示するドライブ、ディレクトリ、またはファイルを指定します。\n\ + /A 指定された属性のファイルを表示します。\n\ + 属性 D ディレクトリ R 読み取り専用\n\ + H 隠しファイル A アーカイブ\n\ + S システム ファイル - その属性以外\n\ + /B ファイル名のみを表示します (見出しや要約が付きません)。\n\ + /C ファイル サイズを桁区切り表示します。これは\n\ + デフォルトの設定です。/-C とすると桁区切り表示されません。\n\ + /D /W と同じですが、ファイルを列で並べ替えた一覧を表示します。\n\ + /L 小文字で表示します。\n\ + /N ファイル名を右端に表示する新しい一覧形式を使用します。\n\ + /O ファイルを並べ替えて表示します。\n\ + ソート順 N 名前順 (アルファベット) S サイズ順 (小さいほうから)\n\ + E 拡張子順 (アルファベット) D 日時順 (古いほうから)\n\ + G グループ (ディレクトリから) - 降順\n\ + /P 1 画面ごとに停止して表示します。\n\ + /Q ファイルの所有者を表示します。\n\ + /S 指定されたディレクトリおよびそのサブディレクトリのすべての\n\ + ファイルを表示します。\n\ + /T どのタイムフィールドを表示するか、または並べ替えに使用するかを\n\ + 指定します。\n\ + タイムフィールド C 作成n\n\ + A 最終アクセス\n\ + W 最終更新\n\ + /W ワイド一覧形式で表示します。\n\ + /X このオプションは MS-DOS 形式 (8.3) 以外のファイル名に対する短い\n\ + 名前を表示します。長い名前の前に短い名前を表示する点を除けば、\n\ + /N オプションと同じです。短い名前がない場合は、ブランクに\n\ + なります。\n\ + /4 4 つの数字で年を表示します。\n\n\ +環境変数 DIRCMD にスイッチを設定できます。\n\ +/-W のように - (ハイフン) を前につけると、そのスイッチは無効になります。\n" -STRING_DIR_HELP2, " ƒhƒ‰ƒCƒu %c ‚̃{ƒŠƒ…[ƒ€ ƒ‰ƒxƒ‹‚Í %s ‚Å‚·\n" -STRING_DIR_HELP3, " ƒhƒ‰ƒCƒu %c ‚ɂ̓{ƒŠƒ…[ƒ€ ƒ‰ƒxƒ‹‚ª‚ ‚è‚Ü‚¹‚ñB\n" -STRING_DIR_HELP4, " ƒ{ƒŠƒ…[ƒ€ ƒVƒŠƒAƒ‹”ԍ†‚Í %04X-%04X ‚Å‚·\n" -STRING_DIR_HELP5, "\n ƒtƒ@ƒCƒ‹‚Ì‘”:\n%16i ŒÂ‚̃tƒ@ƒCƒ‹% 14s ƒoƒCƒg\n" -STRING_DIR_HELP6, "%16i ŒÂ‚̃fƒBƒŒƒNƒgƒŠ% 15s ƒoƒCƒg\n" -STRING_DIR_HELP7, "\n %s ‚̃fƒBƒŒƒNƒgƒŠ\n\n" -STRING_DIR_HELP8, "%16i ŒÂ‚̃tƒ@ƒCƒ‹% 14s ƒoƒCƒg\n" +STRING_DIR_HELP2, " ドライブ %c のボリューム ラベルは %s です\n" +STRING_DIR_HELP3, " ドライブ %c にはボリューム ラベルがありません。\n" +STRING_DIR_HELP4, " ボリューム シリアル番号は %04X-%04X です\n" +STRING_DIR_HELP5, "\n ファイルの総数:\n%16i 個のファイル% 14s バイト\n" +STRING_DIR_HELP6, "%16i 個のディレクトリ% 15s バイト\n" +STRING_DIR_HELP7, "\n %s のディレクトリ\n\n" +STRING_DIR_HELP8, "%16i 個のファイル% 14s バイト\n" -STRING_DIRSTACK_HELP1, "POPD ƒRƒ}ƒ“ƒh‚ÅŽg—p‚·‚邽‚߂Ɍ»Ý‚̃fƒBƒŒƒNƒgƒŠ‚ð•Û‘¶‚µA\n\ -Žw’肵‚½ƒfƒBƒŒƒNƒgƒŠ‚ɕύX‚µ‚Ü‚·B\n\n\ -PUSHD [ƒpƒX | ..]\n\n\ - ƒpƒX Œ»Ý‚̃fƒBƒŒƒNƒgƒŠ‚Æ‚µ‚Đݒ肷‚éƒfƒBƒŒƒNƒgƒŠ‚ðŽw’肵‚Ü‚·B\n" +STRING_DIRSTACK_HELP1, "POPD コマンドで使用するために現在のディレクトリを保存し、\n\ +指定したディレクトリに変更します。\n\n\ +PUSHD [パス | ..]\n\n\ + パス 現在のディレクトリとして設定するディレクトリを指定します。\n" -STRING_DIRSTACK_HELP2, "PUSHD ƒRƒ}ƒ“ƒh‚Å‹L‰¯‚³‚ꂽƒfƒBƒŒƒNƒgƒŠ‚ɕύX‚µ‚Ü‚·B\n\nPOPD" +STRING_DIRSTACK_HELP2, "PUSHD コマンドで記憶されたディレクトリに変更します。\n\nPOPD" -STRING_DIRSTACK_HELP3, "ƒfƒBƒŒƒNƒgƒŠ ƒXƒ^ƒbƒN‚̈ꗗ‚ð•\\ަ‚µ‚Ü‚·B\n\nDIRS" +STRING_DIRSTACK_HELP3, "ディレクトリ スタックの一覧を表示します。\n\nDIRS" -STRING_DIRSTACK_HELP4, "ƒfƒBƒŒƒNƒgƒŠ ƒXƒ^ƒbƒN‚Í‹ó‚Å‚·B" +STRING_DIRSTACK_HELP4, "ディレクトリ スタックは空です。" -STRING_ECHO_HELP1, "ƒƒbƒZ[ƒW‚ð•\\ަ‚µ‚Ü‚·‚ªA‘O‚ɃLƒƒƒŠƒbƒW ƒŠƒ^[ƒ“‚ƃ‰ƒCƒ“ƒtƒB[ƒh‚ð‚‚¯‚Ü‚¹‚ñB\n\n\ - ECHOS ƒƒbƒZ[ƒW" +STRING_ECHO_HELP1, "メッセージを表示しますが、前にキャリッジ リターンとラインフィードをつけません。\n\n\ + ECHOS メッセージ" -STRING_ECHO_HELP2, "•W€ƒGƒ‰[‚ɃƒbƒZ[ƒW‚ð•\\ަ‚µ‚Ü‚·B\n\n\ - ECHOERR ƒƒbƒZ[ƒW\n\ - ECHOERR. ‹ós‚ðo—Í‚µ‚Ü‚·B" +STRING_ECHO_HELP2, "標準エラーにメッセージを表示します。\n\n\ + ECHOERR メッセージ\n\ + ECHOERR. 空行を出力します。" -STRING_ECHO_HELP3, "•W€ƒGƒ‰[‚ɃƒbƒZ[ƒW‚ð•\\ަ‚µ‚Ü‚·‚ªA‘O‚ɃLƒƒƒŠƒbƒW ƒŠƒ^[ƒ“‚Æ\n\ -ƒ‰ƒCƒ“ƒtƒB[ƒh‚ð‚‚¯‚Ü‚¹‚ñB\n\n\ - ECHOSERR ƒƒbƒZ[ƒW" +STRING_ECHO_HELP3, "標準エラーにメッセージを表示しますが、前にキャリッジ リターンと\n\ +ラインフィードをつけません。\n\n\ + ECHOSERR メッセージ" -STRING_ECHO_HELP4, "ƒƒbƒZ[ƒW‚ð•\\ަ‚µ‚½‚èAƒRƒ}ƒ“ƒh ƒGƒR[‚Ì ON ‚Æ OFF ‚ðØ‚è‘Ö‚¦‚Ü‚·B\n\n\ +STRING_ECHO_HELP4, "メッセージを表示したり、コマンド エコーの ON と OFF を切り替えます。\n\n\ ECHO [ON | OFF]\n\ - ECHO [ƒƒbƒZ[ƒW]\n\ - ECHO. ‹ós‚ðo—Í‚µ‚Ü‚·B\n\n\ -Œ»Ý‚̃GƒR[Ý’è‚ð•\\ަ‚·‚é‚ɂ́Aƒpƒ‰ƒ[ƒ^‚ðŽw’肹‚¸‚É ECHO ‚Æ“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B" + ECHO [メッセージ]\n\ + ECHO. 空行を出力します。\n\n\ +現在のエコー設定を表示するには、パラメータを指定せずに ECHO と入力してください。" -STRING_ECHO_HELP5, "ECHO ‚Í %s ‚Å‚·B\n" +STRING_ECHO_HELP5, "ECHO は %s です。\n" -STRING_EXIT_HELP, "ƒRƒ}ƒ“ƒh ƒCƒ“ƒ^[ƒvƒŠƒ^‚ðI—¹‚µ‚Ü‚·B\n\nEXIT\n" +STRING_EXIT_HELP, "コマンド インタープリタを終了します。\n\nEXIT\n" -STRING_FOR_HELP1, "Žw’肳‚ꂽƒRƒ}ƒ“ƒh‚ðƒtƒ@ƒCƒ‹ ƒZƒbƒg‚ÌŠeƒtƒ@ƒCƒ‹‚ɑ΂µ‚ÄŽÀs‚µ‚Ü‚·B\n\n\ -FOR %%•ϐ” IN (ƒZƒbƒg) DO ƒRƒ}ƒ“ƒh [ƒpƒ‰ƒ[ƒ^]\n\n\ - %%•ϐ” ’Pˆê•¶Žš‚Ì’u‚«Š·‚¦‰Â”\\‚ȃpƒ‰ƒ[ƒ^‚ðŽw’肵‚Ü‚·B\n\ - (ƒZƒbƒg) ƒtƒ@ƒCƒ‹ ƒZƒbƒg‚ðŽw’肵‚Ü‚·BƒƒCƒ‹ƒhƒJ[ƒh‚ðŽg—p‚Å‚«‚Ü‚·B\n\ - ƒRƒ}ƒ“ƒh Šeƒtƒ@ƒCƒ‹‚²‚ƂɎÀs‚·‚éƒRƒ}ƒ“ƒh‚ðŽw’肵‚Ü‚·B\n\ - ƒpƒ‰ƒ[ƒ^ Žw’肳‚ꂽƒRƒ}ƒ“ƒh‚̃pƒ‰ƒ[ƒ^‚Ü‚½‚̓XƒCƒbƒ`‚ðŽw’肵‚Ü‚·B\n\n\ -ƒoƒbƒ` ƒvƒƒOƒ‰ƒ€‚Å FOR ƒRƒ}ƒ“ƒh‚ðŽg—p‚·‚邯‚«‚́A%%•ϐ”‚Ì‘ã‚í‚è‚ɁA\n\ -%%%%•ϐ”‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B\n" +STRING_FOR_HELP1, "指定されたコマンドをファイル セットの各ファイルに対して実行します。\n\n\ +FOR %%変数 IN (セット) DO コマンド [パラメータ]\n\n\ + %%変数 単一文字の置き換え可能なパラメータを指定します。\n\ + (セット) ファイル セットを指定します。ワイルドカードを使用できます。\n\ + コマンド 各ファイルごとに実行するコマンドを指定します。\n\ + パラメータ 指定されたコマンドのパラメータまたはスイッチを指定します。\n\n\ +バッチ プログラムで FOR コマンドを使用するときは、%%変数の代わりに、\n\ +%%%%変数を使用してください。\n" -STRING_FREE_HELP1, "\nƒhƒ‰ƒCƒu %c ‚̃{ƒŠƒ…[ƒ€ ƒ‰ƒxƒ‹‚Í %-11s ‚Å‚·\n\ - ƒVƒŠƒAƒ‹”ԍ†‚Í %s ‚Å‚·\n\ - %16s ƒoƒCƒg: ‘SƒfƒBƒXƒN—e—Ê\n\ - %16s ƒoƒCƒg: Žg—p’†\n\ - %16s ƒoƒCƒg: ‹ó‚«—e—Ê\n" +STRING_FREE_HELP1, "\nドライブ %c のボリューム ラベルは %-11s です\n\ + シリアル番号は %s です\n\ + %16s バイト: 全ディスク容量\n\ + %16s バイト: 使用中\n\ + %16s バイト: 空き容量\n" -STRING_FREE_HELP2, "ƒhƒ‰ƒCƒu‚ÉŠÖ‚·‚éî•ñ‚ð•\\ަ‚µ‚Ü‚·B\n\nFREE [ƒhƒ‰ƒCƒu: ...]\n" +STRING_FREE_HELP2, "ドライブに関する情報を表示します。\n\nFREE [ドライブ: ...]\n" -STRING_IF_HELP1, "ƒoƒbƒ` ƒvƒƒOƒ‰ƒ€’†‚ÅðŒˆ—‚ðŽÀs‚µ‚Ü‚·B\n\n\ - IF [NOT] ERRORLEVEL ”ԍ† ƒRƒ}ƒ“ƒh\n\ - IF [NOT] •¶Žš—ñ1==•¶Žš—ñ2 ƒRƒ}ƒ“ƒh\n\ - IF [NOT] EXIST ƒtƒ@ƒCƒ‹–¼ ƒRƒ}ƒ“ƒh\n\ - IF [NOT] DEFINED •ϐ” ƒRƒ}ƒ“ƒh\n\n\ -NOT ðŒ‚ª‹U‚̏ꍇ‚É‚¾‚¯ACMD ‚ªƒRƒ}ƒ“ƒh‚ðŽÀs‚·‚邱‚Æ‚ð\n\ - Žw’肵‚Ü‚·B\n\ -ERRORLEVEL ”ԍ† ÅŒã‚̃vƒƒOƒ‰ƒ€‚ÌŽÀs‚ÅŽw’肳‚ꂽ”ԍ†ˆÈã‚̏I—¹ƒR[ƒh\n\ - ‚ª•Ô‚³‚ꂽ‚Æ‚«‚ɁAðŒ‚ª^‚É‚È‚é‚æ‚¤‚ÉŽw’肵‚Ü‚·B\n\ -ƒRƒ}ƒ“ƒh ðŒ‚ª^‚̂Ƃ«‚ÉŽÀs‚·‚éƒRƒ}ƒ“ƒh‚ðŽw’肵‚Ü‚·B\n\ -•¶Žš—ñ1==•¶Žš—ñ2 ƒeƒLƒXƒg•¶Žš—ñ‚ªˆê’v‚·‚邯‚«‚ÉðŒ‚ª^‚É‚È‚é‚æ‚¤‚ÉŽw’è\n\ - ‚µ‚Ü‚·B\n\ -EXIST ƒtƒ@ƒCƒ‹–¼ Žw’肵‚½ƒtƒ@ƒCƒ‹–¼‚ª‘¶Ý‚·‚邯‚«‚ÉðŒ‚ª^‚É‚È‚é‚æ‚¤‚É\n\ - Žw’肵‚Ü‚·B\n\ -DEFINED •ϐ” Žw’肵‚½•ϐ”‚ª’è‹`‚³‚ê‚Ä‚¢‚邯‚«‚ÉðŒ‚ª^‚É‚È‚é‚æ‚¤‚É\n\ - Žw’肵‚Ü‚·B\n" +STRING_IF_HELP1, "バッチ プログラム中で条件処理を実行します。\n\n\ + IF [NOT] ERRORLEVEL 番号 コマンド\n\ + IF [NOT] 文字列1==文字列2 コマンド\n\ + IF [NOT] EXIST ファイル名 コマンド\n\ + IF [NOT] DEFINED 変数 コマンド\n\n\ +NOT 条件が偽の場合にだけ、CMD がコマンドを実行することを\n\ + 指定します。\n\ +ERRORLEVEL 番号 最後のプログラムの実行で指定された番号以上の終了コード\n\ + が返されたときに、条件が真になるように指定します。\n\ +コマンド 条件が真のときに実行するコマンドを指定します。\n\ +文字列1==文字列2 テキスト文字列が一致するときに条件が真になるように指定\n\ + します。\n\ +EXIST ファイル名 指定したファイル名が存在するときに条件が真になるように\n\ + 指定します。\n\ +DEFINED 変数 指定した変数が定義されているときに条件が真になるように\n\ + 指定します。\n" -STRING_GOTO_HELP1, "ƒoƒbƒ` ƒvƒƒOƒ‰ƒ€“à‚́Aƒ‰ƒxƒ‹‚ÅŽw’肳‚ê‚Ä‚¢‚és‚֐§Œä‚ðˆÚ“®‚µ‚Ü‚·B\n\n\ -GOTO ƒ‰ƒxƒ‹\n\n\ - ƒ‰ƒxƒ‹ ƒoƒbƒ` ƒvƒƒOƒ‰ƒ€‚щƒxƒ‹‚Æ‚µ‚ÄŽg—p‚·‚éƒeƒLƒXƒg•¶Žš—ñ‚ðŽw’肵‚Ü‚·B\n\n\ -ƒ‰ƒxƒ‹‚̐擪‚É‚Í : (ƒRƒƒ“) ‚ðŽw’肵Aƒ‰ƒxƒ‹‚¾‚¯‚ð’P“ƂŠ1 s‚É“ü—Í‚µ‚Ä‚­‚¾\n\ -‚³‚¢B" +STRING_GOTO_HELP1, "バッチ プログラム内の、ラベルで指定されている行へ制御を移動します。\n\n\ +GOTO ラベル\n\n\ + ラベル バッチ プログラムでラベルとして使用するテキスト文字列を指定します。\n\n\ +ラベルの先頭には : (コロン) を指定し、ラベルだけを単独で 1 行に入力してくだ\n\ +さい。" -STRING_LABEL_HELP1, "ƒfƒBƒXƒN‚̃{ƒŠƒ…[ƒ€ ƒ‰ƒxƒ‹‚ð•\\ަ‚Ü‚½‚͕ύX‚µ‚Ü‚·B\n\nLABEL [ƒhƒ‰ƒCƒu:][ƒ‰ƒxƒ‹]\n" +STRING_LABEL_HELP1, "ディスクのボリューム ラベルを表示または変更します。\n\nLABEL [ドライブ:][ラベル]\n" -STRING_LABEL_HELP2, "ƒhƒ‰ƒCƒu %c: ‚̃{ƒŠƒ…[ƒ€ ƒ‰ƒxƒ‹‚Í %s ‚Å‚·\n" -STRING_LABEL_HELP3, "ƒhƒ‰ƒCƒu %c: ‚ɂ̓{ƒŠƒ…[ƒ€ ƒ‰ƒxƒ‹‚ª‚ ‚è‚Ü‚¹‚ñl\n" -STRING_LABEL_HELP4, "ƒ{ƒŠƒ…[ƒ€ ƒVƒŠƒAƒ‹”ԍ†‚Í %04X-%04X\n ‚Å‚·" -STRING_LABEL_HELP5, "ƒ{ƒŠƒ…[ƒ€ ƒ‰ƒxƒ‹‚ð 11 •¶ŽšˆÈ“à‚Å“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B\n•K—v‚È‚¯‚ê‚Î Enter ƒL[‚ð‰Ÿ‚µ‚Ä‚­‚¾‚³‚¢: " +STRING_LABEL_HELP2, "ドライブ %c: のボリューム ラベルは %s です\n" +STRING_LABEL_HELP3, "ドライブ %c: にはボリューム ラベルがありませんl\n" +STRING_LABEL_HELP4, "ボリューム シリアル番号は %04X-%04X\n です" +STRING_LABEL_HELP5, "ボリューム ラベルを 11 文字以内で入力してください。\n必要なければ Enter キーを押してください: " -STRING_LOCALE_HELP1, "Œ»ÝŽž‚Í" +STRING_LOCALE_HELP1, "現在時刻は" -STRING_MKDIR_HELP, "ƒfƒBƒŒƒNƒgƒŠ‚ðì¬‚µ‚Ü‚·B\n\n\ -MKDIR [ƒhƒ‰ƒCƒu:]ƒpƒX\n\ -MD [ƒhƒ‰ƒCƒu:]ƒpƒX" +STRING_MKDIR_HELP, "ディレクトリを作成します。\n\n\ +MKDIR [ドライブ:]パス\n\ +MD [ドライブ:]パス" STRING_MKLINK_HELP, "Creates a filesystem link object.\n\n\ MKLINK [/D | /H | /J] linkname target\n\n\ @@ -314,102 +314,102 @@ MKLINK [/D | /H | /J] linkname target\n\n\ /J Create a directory junction.\n\n\ If neither /H or /J is specified, a symbolic link is created." -STRING_MEMMORY_HELP1, "ƒVƒXƒeƒ€ ƒƒ‚ƒŠ‚Ì—Ê‚ð•\\ަ‚µ‚Ü‚·B\n\nMEMORY" +STRING_MEMMORY_HELP1, "システム メモリの量を表示します。\n\nMEMORY" -STRING_MEMMORY_HELP2, "\n %12s%% ‚̃ƒ‚ƒŠ‚ªŽg—p‚³‚ê‚Ä‚¢‚Ü‚·B\n\n\ - %13s ƒoƒCƒg: ‘S•¨—ƒƒ‚ƒŠ\n\ - %13s ƒoƒCƒg: —˜—p‰Â”\\‚È•¨—ƒƒ‚ƒŠ\n\n\ - %13s ƒoƒCƒg: ‘Sƒy[ƒWƒtƒ@ƒCƒ‹\n\ - %13s ƒoƒCƒg: —˜—p‰Â”\\‚ȃy[ƒWƒtƒ@ƒCƒ‹\n\n\ - %13s ƒoƒCƒg: ‘S‰¼‘zƒƒ‚ƒŠ\n\ - %13s ƒoƒCƒg: —˜—p‰Â”\\‚ȉ¼‘zƒƒ‚ƒŠ\n" +STRING_MEMMORY_HELP2, "\n %12s%% のメモリが使用されています。\n\n\ + %13s バイト: 全物理メモリ\n\ + %13s バイト: 利用可能な物理メモリ\n\n\ + %13s バイト: 全ページファイル\n\ + %13s バイト: 利用可能なページファイル\n\n\ + %13s バイト: 全仮想メモリ\n\ + %13s バイト: 利用可能な仮想メモリ\n" -STRING_MISC_HELP1, "‘±s‚·‚é‚ɂ͉½‚©ƒL[‚ð‰Ÿ‚µ‚Ä‚­‚¾‚³‚¢ ...\n" +STRING_MISC_HELP1, "続行するには何かキーを押してください ...\n" -STRING_MOVE_HELP1, "%s ‚ðã‘‚«‚µ‚Ü‚·‚ª‚æ‚낵‚¢‚Å‚·‚© (Yes/No/All)? " +STRING_MOVE_HELP1, "%s を上書きしますがよろしいですか (Yes/No/All)? " -STRING_MOVE_HELP2, "ƒtƒ@ƒCƒ‹‚ðˆÚ“®‚¨‚æ‚уtƒ@ƒCƒ‹‚ƃfƒBƒŒƒNƒgƒŠ–¼‚ð•ύX‚µ‚Ü‚·B\n\n\ -1 ‚‚܂½‚Í•¡”‚̃tƒ@ƒCƒ‹‚ðˆÚ“®‚·‚é‚É‚Í:\n\ -MOVE [/N][ƒhƒ‰ƒCƒu:][ƒpƒX]ƒtƒ@ƒCƒ‹–¼1[,...] ˆÚ“®æ\n\n\ -ƒfƒBƒŒƒNƒgƒŠ–¼‚ð•ύX‚·‚é‚É‚Í:\n\ -MOVE [/N][ƒhƒ‰ƒCƒu:][ƒpƒX]•ύX‘O •ύXŒã\n\n\ - [ƒhƒ‰ƒCƒu:][ƒpƒX]ƒtƒ@ƒCƒ‹–¼1\n\ - ˆÚ“®‚·‚éƒtƒ@ƒCƒ‹‚̏ꏊ‚Æ–¼‘O‚ðŽw’肵‚Ü‚·B\n\ - /N Nothing. ƒtƒ@ƒCƒ‹‚ƃfƒBƒŒƒNƒgƒŠ‚̈ړ®ˆÈŠO‚Ì‚·‚ׂĂðs‚¢‚Ü‚·B\n\n\ -Œ»’iŠK‚ł̐§ŒÀ:\n\ - - ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ‚ðAˆÙ‚È‚éƒhƒ‰ƒCƒu‚ð‚Ü‚½‚ª‚Á‚Ĉړ®‚·‚邱‚Æ‚Í\n\ - ‚Å‚«‚Ü‚¹‚ñB\n" +STRING_MOVE_HELP2, "ファイルを移動およびファイルとディレクトリ名を変更します。\n\n\ +1 つまたは複数のファイルを移動するには:\n\ +MOVE [/N][ドライブ:][パス]ファイル名1[,...] 移動先\n\n\ +ディレクトリ名を変更するには:\n\ +MOVE [/N][ドライブ:][パス]変更前 変更後\n\n\ + [ドライブ:][パス]ファイル名1\n\ + 移動するファイルの場所と名前を指定します。\n\ + /N Nothing. ファイルとディレクトリの移動以外のすべてを行います。\n\n\ +現段階での制限:\n\ + - ファイルやディレクトリを、異なるドライブをまたがって移動することは\n\ + できません。\n" -STRING_MSGBOX_HELP, "ƒƒbƒZ[ƒW ƒ{ƒbƒNƒX‚ð•\\ަ‚µAƒ†[ƒU[‚ɕԓš‚ð‹‚ß‚Ü‚·B\n\n\ -MSGBOX ƒ^ƒCƒv ['ƒ^ƒCƒgƒ‹'] ƒƒbƒZ[ƒW\n\n\ -ƒ^ƒCƒv •\\ަ‚³‚ê‚éƒ{ƒ^ƒ“‚̃^ƒCƒv‚Å‚·B\n\ - ŽŸ‚Ì’l‚ªŽg—p‚Å‚«‚Ü‚·: OK, OKCANCEL,\n\ +STRING_MSGBOX_HELP, "メッセージ ボックスを表示し、ユーザーに返答を求めます。\n\n\ +MSGBOX タイプ ['タイトル'] メッセージ\n\n\ +タイプ 表示されるボタンのタイプです。\n\ + 次の値が使用できます: OK, OKCANCEL,\n\ YESNO, YESNOCANCEL\n\ -ƒ^ƒCƒgƒ‹ ƒƒbƒZ[ƒW ƒ{ƒbƒNƒX‚̃^ƒCƒgƒ‹‚Å‚·B\n\ -ƒƒbƒZ[ƒW ƒƒbƒZ[ƒW ƒ{ƒbƒNƒX‚É•\\ަ‚³‚ê‚郁ƒbƒZ[ƒW‚Å‚·B\n\n\n\ -‰Ÿ‚³‚ꂽƒ{ƒ^ƒ“‚É‚æ‚èAŽŸ‚Ì ERRORLEVEL ‚ªÝ’肳‚ê‚Ü‚·:\n\n\ +タイトル メッセージ ボックスのタイトルです。\n\ +メッセージ メッセージ ボックスに表示されるメッセージです。\n\n\n\ +押されたボタンにより、次の ERRORLEVEL が設定されます:\n\n\ YES : 10 | NO : 11\n\ OK : 10 | CANCEL : 12\n" -STRING_PATH_HELP1, "ŽÀs‰Â”\\ƒtƒ@ƒCƒ‹‚ÌŒŸõƒpƒX‚ð•\\ަ‚Ü‚½‚͐ݒ肵‚Ü‚·B\n\n\ -PATH [[ƒhƒ‰ƒCƒu:]ƒpƒX[;...]]\nPATH ;\n\n\ -ƒpƒ‰ƒ[ƒ^‚Æ‚µ‚Ä ; (ƒZƒ~ƒRƒƒ“) ‚¾‚¯‚ðŽw’è‚·‚邯A‚·‚ׂĂ̌ŸõƒpƒX‚Í\n\ -ƒNƒŠƒA‚³‚ê‚ÄŒ»Ý‚̃fƒBƒŒƒNƒgƒŠ‚¾‚¯‚ªŒŸõ‚³‚ê‚Ü‚·B\n\ -ƒpƒ‰ƒ[ƒ^‚ðŽw’肹‚¸‚É PATH ‚Æ“ü—Í‚·‚邯AŒ»Ý‚̃pƒX‚ª•\\ަ‚³‚ê‚Ü‚·B\n" +STRING_PATH_HELP1, "実行可能ファイルの検索パスを表示または設定します。\n\n\ +PATH [[ドライブ:]パス[;...]]\nPATH ;\n\n\ +パラメータとして ; (セミコロン) だけを指定すると、すべての検索パスは\n\ +クリアされて現在のディレクトリだけが検索されます。\n\ +パラメータを指定せずに PATH と入力すると、現在のパスが表示されます。\n" -STRING_PROMPT_HELP1, "ƒRƒ}ƒ“ƒh ƒvƒƒ“ƒvƒg‚ð•ύX‚µ‚Ü‚·B\n\n\ -PROMPT [•¶Žš—ñ]\n\n\ - •¶Žš—ñ V‚µ‚¢ƒRƒ}ƒ“ƒh ƒvƒƒ“ƒvƒg‚ðŽw’肵‚Ü‚·B\n\n\ -PROMPT ‚ɂ͒ʏí‚Ì•¶Žš‚ÆŽŸ‚ÉŽ¦‚·“ÁŽêƒR[ƒh‚ðŽg—p‚Å‚«‚Ü‚·:\n\n\ - $A & (ƒAƒ“ƒpƒTƒ“ƒh)\n\ - $B | (ƒpƒCƒv)\n\ - $C ( (¶‚©‚Á‚±)\n\ - $D Œ»Ý‚Ì“ú•t\n\ - $E ƒGƒXƒP[ƒv ƒR[ƒh (ASCII ƒR[ƒh‚Ì 27)\n\ - $F ) (‰E‚©‚Á‚±)\n\ - $G > (•s“™† (‘å‚È‚è))\n\ - $H ƒoƒbƒNƒXƒy[ƒX (’¼‘O‚Ì•¶Žš‚ðíœ‚µ‚Ü‚·)\n\ - $L < (•s“™† (¬‚È‚è))\n\ - $N Œ»Ý‚̃hƒ‰ƒCƒu\n\ - $P Œ»Ý‚̃hƒ‰ƒCƒu‚ƃpƒX\n\ - $Q = (“™†)\n\ - $T Œ»Ý‚ÌŽž\n\ - $V OS ‚̃o[ƒWƒ‡ƒ“”ԍ†\n\ - $_ ƒLƒƒƒŠƒbƒW ƒŠƒ^[ƒ“‚ƃ‰ƒCƒ“ƒtƒB[ƒh\n\ - $$ $ (ƒhƒ‹‹L†)\n" +STRING_PROMPT_HELP1, "コマンド プロンプトを変更します。\n\n\ +PROMPT [文字列]\n\n\ + 文字列 新しいコマンド プロンプトを指定します。\n\n\ +PROMPT には通常の文字と次に示す特殊コードを使用できます:\n\n\ + $A & (アンパサンド)\n\ + $B | (パイプ)\n\ + $C ( (左かっこ)\n\ + $D 現在の日付\n\ + $E エスケープ コード (ASCII コードの 27)\n\ + $F ) (右かっこ)\n\ + $G > (不等号 (大なり))\n\ + $H バックスペース (直前の文字を削除します)\n\ + $L < (不等号 (小なり))\n\ + $N 現在のドライブ\n\ + $P 現在のドライブとパス\n\ + $Q = (等号)\n\ + $T 現在の時刻\n\ + $V OS のバージョン番号\n\ + $_ キャリッジ リターンとラインフィード\n\ + $$ $ (ドル記号)\n" -STRING_PAUSE_HELP1, "ƒoƒbƒ` ƒvƒƒOƒ‰ƒ€‚̏ˆ—‚ðˆêŽž’âŽ~‚µAŽŸ‚̃ƒbƒZ[ƒW‚ð•\\ަ‚µ‚Ü‚·B:\n\ -'‘±s‚·‚é‚ɂ͉½‚©ƒL[‚ð‰Ÿ‚µ‚Ä‚­‚¾‚³‚¢ ...' ‚Ü‚½‚̓†[ƒU[‚ª’è‹`‚µ‚½ƒƒbƒZ[ƒWB\n\n\ -PAUSE [ƒƒbƒZ[ƒW]" +STRING_PAUSE_HELP1, "バッチ プログラムの処理を一時停止し、次のメッセージを表示します。:\n\ +'続行するには何かキーを押してください ...' またはユーザーが定義したメッセージ。\n\n\ +PAUSE [メッセージ]" -STRING_PROMPT_HELP2, " $+ Œ»Ý‚̃fƒBƒŒƒNƒgƒŠ ƒXƒ^ƒbƒN‚̐[‚³‚ð•\\ަ‚µ‚Ü‚·" +STRING_PROMPT_HELP2, " $+ 現在のディレクトリ スタックの深さを表示します" -STRING_PROMPT_HELP3, "\nƒpƒ‰ƒ[ƒ^‚ðŽw’肹‚¸‚É PROMPT ‚Æ“ü—Í‚·‚邯Aƒvƒƒ“ƒvƒg‚̐ݒ肪ƒfƒtƒHƒ‹ƒg‚ÉƒŠƒZƒbƒg‚³‚ê‚Ü‚·B" +STRING_PROMPT_HELP3, "\nパラメータを指定せずに PROMPT と入力すると、プロンプトの設定がデフォルトにリセットされます。" -STRING_REM_HELP, "ƒoƒbƒ` ƒtƒ@ƒCƒ‹‚ɃRƒƒ“ƒg (’Žß) ‚ð‹L˜^‚µ‚Ü‚·B\n\nREM [ƒRƒƒ“ƒg]" +STRING_REM_HELP, "バッチ ファイルにコメント (注釈) を記録します。\n\nREM [コメント]" -STRING_RMDIR_HELP, "ƒfƒBƒŒƒNƒgƒŠ‚ðíœ‚µ‚Ü‚·B\n\n\ -RMDIR [ƒhƒ‰ƒCƒu:]ƒpƒX\nRD [ƒhƒ‰ƒCƒu:]ƒpƒX\n\ - /S Žw’肳‚ꂽƒfƒBƒŒƒNƒgƒŠ“à‚É‚ ‚éƒtƒ@ƒCƒ‹‚âƒtƒHƒ‹ƒ_‚à‚·‚ׂč폜‚µ‚Ü‚·B\n\ - /Q Šm”F‚̃ƒbƒZ[ƒW‚ð•\\ަ‚µ‚Ü‚¹‚ñB\n" -STRING_RMDIR_HELP2, "ƒfƒBƒŒƒNƒgƒŠ‚ª‹ó‚ł͂ ‚è‚Ü‚¹‚ñ!\n" +STRING_RMDIR_HELP, "ディレクトリを削除します。\n\n\ +RMDIR [ドライブ:]パス\nRD [ドライブ:]パス\n\ + /S 指定されたディレクトリ内にあるファイルやフォルダもすべて削除します。\n\ + /Q 確認のメッセージを表示しません。\n" +STRING_RMDIR_HELP2, "ディレクトリが空ではありません!\n" -STRING_REN_HELP1, "ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ (•¡”‰Â) ‚Ì–¼‘O‚ð•ύX‚µ‚Ü‚·B\n\n\ -RENAME [/E /N /P /Q /S /T] Œ³‚̃tƒ@ƒCƒ‹–¼ ... Vƒtƒ@ƒCƒ‹–¼\n\ -REN [/E /N /P /Q /S /T] Œ³‚̃tƒ@ƒCƒ‹–¼ ... Vƒtƒ@ƒCƒ‹–¼\n\n\ - /E ƒGƒ‰[ƒƒbƒZ[ƒW‚ð•\\ަ‚µ‚Ü‚¹‚ñB\n\ - /N ‰½‚à‚µ‚Ü‚¹‚ñB\n\ - /P ƒtƒ@ƒCƒ‹‚Ì–¼‘O‚ð•ύX‚·‚é‘O‚É‚»‚ꂼ‚êŠm”F‚ð‹‚ß‚Ü‚·B\n\ - (‚Ü‚¾ŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ!)\n\ +STRING_REN_HELP1, "ファイルやディレクトリ (複数可) の名前を変更します。\n\n\ +RENAME [/E /N /P /Q /S /T] 元のファイル名 ... 新ファイル名\n\ +REN [/E /N /P /Q /S /T] 元のファイル名 ... 新ファイル名\n\n\ + /E エラーメッセージを表示しません。\n\ + /N 何もしません。\n\ + /P ファイルの名前を変更する前にそれぞれ確認を求めます。\n\ + (まだ実装されていません!)\n\ /Q Quiet.\n\ - /S ƒTƒuƒfƒBƒŒƒNƒgƒŠ‚Ì–¼‘O‚ð•ύX‚·‚éB\n\ - /T –¼‘O‚ð•ύX‚µ‚½ƒtƒ@ƒCƒ‹‚Ì‘”‚ð•ñ‚·‚éB\n\n\ -Vƒtƒ@ƒCƒ‹–¼ ‚ɂ͐V‚µ‚¢ƒhƒ‰ƒCƒu‚àƒpƒX‚àŽw’è‚Å‚«‚È‚¢‚̂ŒˆÓ‚µ‚Ä‚­‚¾‚³‚¢B\n\ -‚»‚¤‚¢‚Á‚½–Ú“I‚É‚Í MOVE ƒRƒ}ƒ“ƒh‚ð—p‚¢‚Ä‚­‚¾‚³‚¢B\n" + /S サブディレクトリの名前を変更する。\n\ + /T 名前を変更したファイルの総数を報告する。\n\n\ +新ファイル名 には新しいドライブもパスも指定できないので注意してください。\n\ +そういった目的には MOVE コマンドを用いてください。\n" -STRING_REN_HELP2, " %lu ŒÂ‚̃tƒ@ƒCƒ‹‚Ì–¼‘O‚ª•ύX‚³‚ê‚Ü‚µ‚½\n" +STRING_REN_HELP2, " %lu 個のファイルの名前が変更されました\n" -STRING_REN_HELP3, " %lu ŒÂ‚̃tƒ@ƒCƒ‹‚Ì–¼‘O‚ª•ύX‚³‚ê‚Ü‚µ‚½\n" +STRING_REN_HELP3, " %lu 個のファイルの名前が変更されました\n" STRING_REPLACE_HELP1, "Replaces files.\n\n\ REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [/P] [/R] [/W]\n\ @@ -451,247 +451,247 @@ STRING_REPLACE_HELP10, "Replace %s (Y/N) " STRING_REPLACE_HELP11, "Adding %s\n" -STRING_SHIFT_HELP, "ƒoƒbƒ` ƒtƒ@ƒCƒ‹’†‚Ì’u‚«Š·‚¦‰Â”\\‚ȃpƒ‰ƒ[ƒ^‚̈ʒu‚ð•ύX‚µ‚Ü‚·B\n\n\ +STRING_SHIFT_HELP, "バッチ ファイル中の置き換え可能なパラメータの位置を変更します。\n\n\ SHIFT [DOWN]" -STRING_SCREEN_HELP, "ƒJ[ƒ\\ƒ‹‚ðˆÚ“®‚³‚¹‚Ü‚·BˆÚ“®ŒãA•¶Žš—ñ‚ð“ü—Í‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B\n\n\ -SCREEN —ñ s [ƒeƒLƒXƒg]\n\n\ - —ñ ƒJ[ƒ\\ƒ‹‚ðˆÚ“®‚³‚¹‚é—ñ‚Å‚·B\n\ - s ƒJ[ƒ\\ƒ‹‚ðˆÚ“®‚³‚¹‚és‚Å‚·B" +STRING_SCREEN_HELP, "カーソルを移動させます。移動後、文字列を入力することもできます。\n\n\ +SCREEN 列 行 [テキスト]\n\n\ + 列 カーソルを移動させる列です。\n\ + 行 カーソルを移動させる行です。" -STRING_SET_HELP, "ŠÂ‹«•ϐ”‚ð•\\ަAÝ’èA‚Ü‚½‚͍폜‚µ‚Ü‚·B\n\n\ -SET [•ϐ”–¼[=]•¶Žš—ñ]]\n\n\ - •ϐ”–¼ ŠÂ‹«•ϐ”–¼‚ðŽw’肵‚Ü‚·B\n\ - •¶Žš—ñ •ϐ”‚ÉŠ„‚è“–‚Ä‚é•¶Žš—ñ‚ðŽw’肵‚Ü‚·B\n\n\ -Œ»Ý‚̊‹«•ϐ”‚ð•\\ަ‚·‚é‚ɂ́Aƒpƒ‰ƒ[ƒ^‚ðŽw’肹‚¸‚É SET ‚Æ“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B\n" +STRING_SET_HELP, "環境変数を表示、設定、または削除します。\n\n\ +SET [変数名[=]文字列]]\n\n\ + 変数名 環境変数名を指定します。\n\ + 文字列 変数に割り当てる文字列を指定します。\n\n\ +現在の環境変数を表示するには、パラメータを指定せずに SET と入力してください。\n" -STRING_START_HELP1, "•ʂ̃EƒBƒ“ƒhƒE‚ð‹N“®‚µAŽw’肵‚½ƒvƒƒOƒ‰ƒ€‚Ü‚½‚̓Rƒ}ƒ“ƒh‚ðŽÀs‚µ‚Ü‚·B\n\n\ -START ƒRƒ}ƒ“ƒh\n\n\ - ƒRƒ}ƒ“ƒh ŽÀs‚·‚éƒRƒ}ƒ“ƒh‚ðŽw’肵‚Ü‚·B\n\n\ -Œ»Žž“_‚ł́AƒRƒ}ƒ“ƒh‚Í‚·‚ׂē¯Šú‚¹‚¸‚ÉŠJŽn‚³‚ê‚Ü‚·B\n" +STRING_START_HELP1, "別のウィンドウを起動し、指定したプログラムまたはコマンドを実行します。\n\n\ +START コマンド\n\n\ + コマンド 実行するコマンドを指定します。\n\n\ +現時点では、コマンドはすべて同期せずに開始されます。\n" -STRING_TITLE_HELP, "ƒRƒ}ƒ“ƒh ƒvƒƒ“ƒvƒg ƒEƒBƒ“ƒhƒE‚̃EƒBƒ“ƒhƒE ƒ^ƒCƒgƒ‹‚ðÝ’肵‚Ü‚·B\n\n\ -TITLE [•¶Žš—ñ]\n\n\ -•¶Žš—ñ ƒRƒ}ƒ“ƒh ƒvƒƒ“ƒvƒg ƒEƒBƒ“ƒhƒE‚̃^ƒCƒgƒ‹‚ðŽw’肵‚Ü‚·B\n" +STRING_TITLE_HELP, "コマンド プロンプト ウィンドウのウィンドウ タイトルを設定します。\n\n\ +TITLE [文字列]\n\n\ +文字列 コマンド プロンプト ウィンドウのタイトルを指定します。\n" -STRING_TIME_HELP1, "ƒVƒXƒeƒ€Žž‚ð•\\ަ‚Ü‚½‚͐ݒ肵‚Ü‚·B\n\n\ -TIME [/T][Žž]\n\n\ - /T Œ»ÝŽž‚Ì•\\ަ‚̂ݍs‚¢‚Ü‚·B\n\n\ -ƒpƒ‰ƒ[ƒ^‚ÌŽw’肪‚È‚¯‚ê‚΁AŒ»Ý‚̐ݒ肪•\\ަ‚³‚êAV‚µ‚¢Žž‚ð“ü—͂ł«‚é\n\ -ƒvƒƒ“ƒvƒg‚ɂȂè‚Ü‚·B•ύX‚µ‚È‚¢ê‡‚́AEnter ƒL[‚ð‰Ÿ‚µ‚Ä‚­‚¾‚³‚¢B\n" +STRING_TIME_HELP1, "システム時刻を表示または設定します。\n\n\ +TIME [/T][時刻]\n\n\ + /T 現在時刻の表示のみ行います。\n\n\ +パラメータの指定がなければ、現在の設定が表示され、新しい時刻を入力できる\n\ +プロンプトになります。変更しない場合は、Enter キーを押してください。\n" -STRING_TIME_HELP2, "V‚µ‚¢Žž‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢: " +STRING_TIME_HELP2, "新しい時刻を入力してください: " -STRING_TIMER_HELP1, "%d ƒ~ƒŠ•b‚ªŒo‰ßB\n" +STRING_TIMER_HELP1, "%d ミリ秒が経過。\n" -STRING_TIMER_HELP2, "%02d%c%02d%c%02d%c%02d ‚ªŒo‰ßB\n" +STRING_TIMER_HELP2, "%02d%c%02d%c%02d%c%02d が経過。\n" -STRING_TIMER_HELP3, "10 ŒÂ‚܂ł̃XƒgƒbƒvƒEƒHƒbƒ`‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B\n\n\ +STRING_TIMER_HELP3, "10 個までのストップウォッチを使うことができます。\n\n\ TIMER [ON|OFF] [/S] [/n] [/Fn]\n\n\ - ON ƒXƒgƒbƒvƒEƒHƒbƒ`‚ð ON ‚É‚µ‚Ü‚·B\n\ - OFF ƒXƒgƒbƒvƒEƒHƒbƒ`‚ð OFF ‚É‚µ‚Ü‚·B\n\ - /S Split time. ƒXƒgƒbƒvƒEƒHƒbƒ`‚Ì’l‚ð•ύX‚·‚邱‚ƂȂ­A\n\ - Œ»Ý‚ñ‚Å‚¢‚鎞ŠÔ‚ð•\\ަ‚µ‚Ü‚·B\n\ - /n ƒXƒgƒbƒvƒEƒHƒbƒ`”ԍ†‚ðŽw’肵‚Ü‚·B\n\ - ƒXƒgƒbƒvƒEƒHƒbƒ`‚Í 0 ‚©‚ç 9 ‚܂łª—˜—p‚Å‚«‚Ü‚·B\n\ - Žw’肵‚È‚¢ê‡AƒfƒtƒHƒ‹ƒg‚Æ‚µ‚Ä 1 ‚ðŽg‚¢‚Ü‚·B\n\ - /Fn o—͂̏‘Ž®\n\ - n ‚ɂ͎Ÿ‚Ì“ñ‚‚̒l‚ð—p‚¢‚邱‚Æ‚ª‚Å‚«‚Ü‚·:\n\ - 0 ƒ~ƒŠ•b\n\ + ON ストップウォッチを ON にします。\n\ + OFF ストップウォッチを OFF にします。\n\ + /S Split time. ストップウォッチの値を変更することなく、\n\ + 現在刻んでいる時間を表示します。\n\ + /n ストップウォッチ番号を指定します。\n\ + ストップウォッチは 0 から 9 までが利用できます。\n\ + 指定しない場合、デフォルトとして 1 を使います。\n\ + /Fn 出力の書式\n\ + n には次の二つの値を用いることができます:\n\ + 0 ミリ秒\n\ 1 hh%cmm%css%cdd\n\n\ -ONAOFFA/S ‚Ì‚¢‚¸‚ê‚àŽw’肵‚È‚©‚Á‚½ê‡‚ɂ́AƒXƒgƒbƒvƒEƒHƒbƒ`‚Ì\n\ -ó‘Ô‚ðØ‚è‘Ö‚¦‚Ü‚·B\n\n" +ON、OFF、/S のいずれも指定しなかった場合には、ストップウォッチの\n\ +状態を切り替えます。\n\n" -STRING_TYPE_HELP1, "ƒeƒLƒXƒg ƒtƒ@ƒCƒ‹‚Ü‚½‚̓tƒ@ƒCƒ‹‚Ì“à—e‚ð•\\ަ‚µ‚Ü‚·B\n\nTYPE [ƒhƒ‰ƒCƒu:][ƒpƒX]ƒtƒ@ƒCƒ‹–¼ \n\ - /P 1 “x‚É 1 ‰æ–Ê‚¸‚•\\ަ‚µ‚Ü‚·B\n" +STRING_TYPE_HELP1, "テキスト ファイルまたはファイルの内容を表示します。\n\nTYPE [ドライブ:][パス]ファイル名 \n\ + /P 1 度に 1 画面ずつ表示します。\n" -STRING_VERIFY_HELP1, "‚±‚̃Rƒ}ƒ“ƒh‚̓_ƒ~[‚Å‚·!!\n\ -ƒtƒ@ƒCƒ‹‚ªƒfƒBƒXƒN‚ɐ³‚µ‚­‘‚«ž‚܂ꂽ‚±‚Æ‚ðÆ‡‚·‚é‚©‚Ç‚¤‚©‚ðŽwަ‚µ‚Ü‚·B\n\n\ +STRING_VERIFY_HELP1, "このコマンドはダミーです!!\n\ +ファイルがディスクに正しく書き込まれたことを照合するかどうかを指示します。\n\n\ VERIFY [ON | OFF]\n\n\ -Œ»Ý‚̐ݒè‚ð•\\ަ‚·‚邯‚«‚́Aƒpƒ‰ƒ[ƒ^‚ðŽw’肹‚¸‚É VERIFY ‚Æ“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B\n" +現在の設定を表示するときは、パラメータを指定せずに VERIFY と入力してください。\n" -STRING_VERIFY_HELP2, "VERIFY ‚Í %s ‚Å‚·B\n" +STRING_VERIFY_HELP2, "VERIFY は %s です。\n" -STRING_VERIFY_HELP3, "ON ‚© OFF ‚̂ǂ¿‚ç‚©‚ðŽw’肵‚Ä‚­‚¾‚³‚¢B" +STRING_VERIFY_HELP3, "ON か OFF のどちらかを指定してください。" -STRING_VERSION_HELP1, "ƒVƒFƒ‹‚̃o[ƒWƒ‡ƒ“î•ñ‚ð•\\ަ‚µ‚Ü‚·B\n\n\ +STRING_VERSION_HELP1, "シェルのバージョン情報を表示します。\n\n\ VER [/C][/R][/W]\n\n\ - /C ƒNƒŒƒWƒbƒg‚ð•\\ަ‚µ‚Ü‚·B\n\ - /R Ä”z•z‚ÉŠÖ‚·‚éî•ñ‚ð•\\ަ‚µ‚Ü‚·B\n\ - /W •ۏ؂Ɋւ·‚éî•ñ‚ð•\\ަ‚µ‚Ü‚·B" + /C クレジットを表示します。\n\ + /R 再配布に関する情報を表示します。\n\ + /W 保証に関する情報を表示します。" -STRING_VERSION_HELP2, " ‚Í *‘S‚­‚Ì–³•ۏØ* ‚Å’ñ‹Ÿ‚³‚ê‚Ü‚·BÚ‚µ‚­‚Í\n\ -'ver /w' ‚ƃ^ƒCƒv‚µ‚ĉº‚³‚¢B‚±‚ê‚̓tƒŠ[ƒ\\ƒtƒgƒEƒFƒA‚Å‚ ‚èA‚ ‚éðŒ‚̉º‚Å\n\ -Ä”Еz‚·‚邱‚Æ‚ª§—コ‚ê‚Ä‚¢‚Ü‚·BÚ‚µ‚­‚Í 'ver /r' ‚ƃ^ƒCƒv‚µ‚ĉº‚³‚¢B\n\ -ƒNƒŒƒWƒbƒg‚̈ꗗ‚ðŒ©‚é‚É‚Í 'ver /c' ‚ƃ^ƒCƒv‚µ‚ĉº‚³‚¢B" +STRING_VERSION_HELP2, " は *全くの無保証* で提供されます。詳しくは\n\ +'ver /w' とタイプして下さい。これはフリーソフトウェアであり、ある条件の下で\n\ +再頒布することが奨励されています。詳しくは 'ver /r' とタイプして下さい。\n\ +クレジットの一覧を見るには 'ver /c' とタイプして下さい。" -STRING_VERSION_HELP3, "\n ‚±‚̃vƒƒOƒ‰ƒ€‚Í—L—p‚Å‚ ‚邱‚Æ‚ðŠè‚Á‚ĔЕz‚³‚ê‚Ü‚·‚ªA*‘S‚­‚Ì–³•ۏØ*\n\ - ‚Å‚·B¤‹Æ‰Â”\\«‚̕ۏ؂â“Á’è‚Ì–Ú“I‚Ö‚Ì“K‡«‚́AŒ¾ŠO‚ÉŽ¦‚³‚ꂽ‚à‚Ì‚àŠÜ\n\ - ‚ß‘S‚­‘¶Ý‚µ‚Ü‚¹‚ñBÚ‚µ‚­‚Í GNU General Public License ‚ð‚²——‚­‚¾‚³‚¢B" +STRING_VERSION_HELP3, "\n このプログラムは有用であることを願って頒布されますが、*全くの無保証*\n\ + です。商業可能性の保証や特定の目的への適合性は、言外に示されたものも含\n\ + め全く存在しません。詳しくは GNU General Public License をご覧ください。" -STRING_VERSION_HELP4, "\n ‚±‚̃vƒƒOƒ‰ƒ€‚̓tƒŠ[ƒ\\ƒtƒgƒEƒFƒA‚Å‚·B‚ ‚È‚½‚Í‚±‚ê‚ðAƒtƒŠ[ƒ\\ƒtƒgƒEƒF\n\ - ƒAà’c‚É‚æ‚Á‚Ä”­s‚³‚ꂽ GNU General Public License (ƒo[ƒWƒ‡ƒ“ 2 ‚©A\n\ - Šó–]‚É‚æ‚Á‚Ă͂»‚êˆÈ~‚̃o[ƒWƒ‡ƒ“‚Ì‚¤‚¿‚ǂꂩ) ‚Ì’è‚ß‚éðŒ‚̉º‚ōĔÐ\n\ - •z‚Ü‚½‚͉ü•Ï‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B\n" +STRING_VERSION_HELP4, "\n このプログラムはフリーソフトウェアです。あなたはこれを、フリーソフトウェ\n\ + ア財団によって発行された GNU General Public License (バージョン 2 か、\n\ + 希望によってはそれ以降のバージョンのうちどれか) の定める条件の下で再頒\n\ + 布または改変することができます。\n" -STRING_VERSION_HELP5, "\nƒoƒO•ñ‚Í ‚Ö‘—‚Á‚Ä‚­‚¾‚³‚¢B\n\ -ÅV‚̃o[ƒWƒ‡ƒ“‚ÍŽŸ‚̃y[ƒW‚©‚ç“üŽè‚Å‚«‚Ü‚·: http://www.reactos.org" +STRING_VERSION_HELP5, "\nバグ報告は へ送ってください。\n\ +最新のバージョンは次のページから入手できます: http://www.reactos.org" STRING_VERSION_HELP6, "\nFreeDOS version written by:\n" STRING_VERSION_HELP7, "\nReactOS version written by:\n" -STRING_VOL_HELP1, " ƒhƒ‰ƒCƒu %c: ‚̃{ƒŠƒ…[ƒ€ ƒ‰ƒxƒ‹‚Í %s ‚Å‚·B\n" -STRING_VOL_HELP2, " ƒhƒ‰ƒCƒu %c: ‚ɂ̓{ƒŠƒ…[ƒ€ ƒ‰ƒxƒ‹‚ª‚ ‚è‚Ü‚¹‚ñB\n" -STRING_VOL_HELP3, " ƒ{ƒŠƒ…[ƒ€ ƒVƒŠƒAƒ‹”ԍ†‚Í %04X-%04X ‚Å‚·B\n" -STRING_VOL_HELP4, "‘¶Ý‚·‚é‚È‚ç‚΁AƒfƒBƒXƒN‚̃{ƒŠƒ…[ƒ€ ƒ‰ƒxƒ‹‚ƃVƒŠƒAƒ‹”ԍ†‚ð•\\ަ‚µ‚Ü‚·B\n\nVOL [ƒhƒ‰ƒCƒu:]" +STRING_VOL_HELP1, " ドライブ %c: のボリューム ラベルは %s です。\n" +STRING_VOL_HELP2, " ドライブ %c: にはボリューム ラベルがありません。\n" +STRING_VOL_HELP3, " ボリューム シリアル番号は %04X-%04X です。\n" +STRING_VOL_HELP4, "存在するならば、ディスクのボリューム ラベルとシリアル番号を表示します。\n\nVOL [ドライブ:]" -STRING_WINDOW_HELP1, "ƒRƒ“ƒ\\[ƒ‹ ƒEƒBƒ“ƒhƒE‚ÌŠOŒ©‚ð•ύX‚µ‚Ü‚·B\n\n\ -WINDOW [/POS[=]¶,ã,•,‚‚³]\n\ +STRING_WINDOW_HELP1, "コンソール ウィンドウの外見を変更します。\n\n\ +WINDOW [/POS[=]左,上,幅,高さ]\n\ [MIN|MAX|RESTORE] ['title']\n\n\ -/POS ƒEƒBƒ“ƒhƒE‚̈ʒu‚Ƒ傫‚³‚ðŽw’肵‚Ü‚·B\n\ -MIN ƒEƒBƒ“ƒhƒE‚ðÅ¬‰»‚µ‚Ü‚·B\n\ -MAX ƒEƒBƒ“ƒhƒE‚ðÅ‘剻‚µ‚Ü‚·B\n\ -RESTORE ƒEƒBƒ“ƒhƒE‚ðŒ³‚ÌƒTƒCƒY‚É–ß‚µ‚Ü‚·B" +/POS ウィンドウの位置と大きさを指定します。\n\ +MIN ウィンドウを最小化します。\n\ +MAX ウィンドウを最大化します。\n\ +RESTORE ウィンドウを元のサイズに戻します。" -STRING_WINDOW_HELP2, "ƒRƒ“ƒ\\[ƒ‹ ƒEƒBƒ“ƒhƒE‚ÌŠOŒ©‚ð•ύX‚µ‚Ü‚·B\n\n\ -ACTIVATE 'ƒEƒBƒ“ƒhƒE' [/POS[=]¶,ã,•,‚‚³]\n\ - [MIN|MAX|RESTORE] ['ƒ^ƒCƒgƒ‹']\n\n\ -ƒEƒBƒ“ƒhƒE ŠOŒ©‚ð•ύX‚·‚éƒEƒBƒ“ƒhƒE‚̃^ƒCƒgƒ‹‚Å‚·B\n\ -/POS ƒEƒBƒ“ƒhƒE‚̈ʒu‚Ƒ傫‚³‚ðŽw’肵‚Ü‚·B\n\ -MIN ƒEƒBƒ“ƒhƒE‚ðÅ¬‰»‚µ‚Ü‚·B\n\ -MAX ƒEƒBƒ“ƒhƒE‚ðÅ‘剻‚µ‚Ü‚·B\n\ -RESTORE ƒEƒBƒ“ƒhƒE‚ðŒ³‚ÌƒTƒCƒY‚É–ß‚µ‚Ü‚·B\n\ -ƒ^ƒCƒgƒ‹ V‚µ‚¢ƒ^ƒCƒgƒ‹‚Å‚·B\n" +STRING_WINDOW_HELP2, "コンソール ウィンドウの外見を変更します。\n\n\ +ACTIVATE 'ウィンドウ' [/POS[=]左,上,幅,高さ]\n\ + [MIN|MAX|RESTORE] ['タイトル']\n\n\ +ウィンドウ 外見を変更するウィンドウのタイトルです。\n\ +/POS ウィンドウの位置と大きさを指定します。\n\ +MIN ウィンドウを最小化します。\n\ +MAX ウィンドウを最大化します。\n\ +RESTORE ウィンドウを元のサイズに戻します。\n\ +タイトル 新しいタイトルです。\n" -STRING_HELP1, "—˜—p‰Â”\\‚È‚·‚ׂẴRƒ}ƒ“ƒh‚̈ꗗ‚ƁA‚»‚Ìà–¾B\n\n\ - ƒRƒ}ƒ“ƒh /? “Á’è‚̃Rƒ}ƒ“ƒh‚ÉŠÖ‚·‚éÚ×î•ñ\n\n\ -? —˜—p‰Â”\\‚È‚·‚ׂẴRƒ}ƒ“ƒh‚̈ꗗ (à–¾‚È‚µ)B\n\ -ALIAS ƒGƒCƒŠƒAƒX‚̐ݒè‚â‰ðœ‚ð‚µ‚½‚èAƒGƒCƒŠƒAƒX‚ð•\\ަ‚µ‚½‚肵‚Ü‚·B\n\ -ATTRIB ƒtƒ@ƒCƒ‹‘®«‚ð•\\ަ‚Ü‚½‚͕ύX‚µ‚Ü‚·B\n\ -BEEP ƒXƒs[ƒJ‚©‚çƒr[ƒv‰¹‚ð–‚炵‚Ü‚·B\n\ -CALL ƒoƒbƒ` ƒvƒƒOƒ‰ƒ€‚ð•ʂ̃oƒbƒ` ƒvƒƒOƒ‰ƒ€‚©‚çŒÄ‚яo‚µ‚Ü‚·B\n\ -CD Œ»Ý‚̃fƒBƒŒƒNƒgƒŠ‚ð•ύX‚µ‚½‚èAƒfƒBƒŒƒNƒgƒŠ–¼‚ð•\\ަ‚µ‚½‚肵‚Ü‚·B\n\ -CHCP Œ»Ý‚̃R[ƒh ƒy[ƒW”ԍ†‚ð•\\ަ‚Ü‚½‚͐ݒ肵‚Ü‚·B\n\ -CHOICE ƒ†[ƒU[‚ª‘I‘ðŽˆ‚©‚çˆê‚‚ð‘I‘ð‚·‚é‚Ì‚ð‘Ò‚¿‚Ü‚·B\n\ -CLS ‰æ–Ê‚ðÁ‹Ž‚µ‚Ü‚·B\n\ -CMD ReactOS ƒRƒ}ƒ“ƒh ƒCƒ“ƒ^[ƒvƒŠƒ^‚̐V‚µ‚¢ƒCƒ“ƒXƒ^ƒ“ƒX‚ðŠJŽn‚µ‚Ü‚·B\n\ -COLOR ƒRƒ“ƒ\\[ƒ‹‚̃fƒtƒHƒ‹ƒg‚Ì‘OŒiF‚¨‚æ‚Ñ”wŒiF‚ðÝ’肵‚Ü‚·B\n\ -COPY 1 ‚‚܂½‚Í•¡”‚̃tƒ@ƒCƒ‹‚ð•ʂ̏ꏊ‚ɃRƒs[‚µ‚Ü‚·B\n\ -DATE “ú•t‚ð•\\ަ‚Ü‚½‚͐ݒ肵‚Ü‚·B\n\ -DELAY n •bA‚Ü‚½‚Í n ƒ~ƒŠ•b‘Ò‹@‚µ‚Ü‚·B\n\ -DELETE 1 ‚‚܂½‚Í•¡”‚̃tƒ@ƒCƒ‹‚ðíœ‚µ‚Ü‚·B\n\ -DIR ƒfƒBƒŒƒNƒgƒŠ’†‚̃tƒ@ƒCƒ‹‚ƃTƒuƒfƒBƒŒƒNƒgƒŠ‚ðˆê——•\\ަ‚µ‚Ü‚·B\n\ -ECHO ƒƒbƒZ[ƒW‚ð•\\ަ‚µ‚½‚èAƒRƒ}ƒ“ƒh ƒGƒR[‚Ì ON ‚Æ OFF ‚ðØ‚è‘Ö‚¦‚Ü‚·B\n\ -ERASE 1 ‚‚܂½‚Í•¡”‚̃tƒ@ƒCƒ‹‚ðíœ‚µ‚Ü‚·B\n\ -EXIT CMD.exe (ƒRƒ}ƒ“ƒh ƒ‰ƒCƒ“ ƒCƒ“ƒ^[ƒvƒŠƒ^) ‚ðI—¹‚µ‚Ü‚·B\n\ -FOR Žw’肳‚ꂽƒRƒ}ƒ“ƒh‚ðƒtƒ@ƒCƒ‹ ƒZƒbƒg‚ÌŠeƒtƒ@ƒCƒ‹‚ɑ΂µ‚ÄŽÀs‚µ‚Ü‚·B\n\ -FREE ƒfƒBƒXƒN‚̋󂫗e—Ê\n\ -GOTO ƒoƒbƒ` ƒvƒƒOƒ‰ƒ€“à‚́Aƒ‰ƒxƒ‹‚ÅŽw’肳‚ê‚Ä‚¢‚és‚֐§Œä‚ðˆÚ“®‚µ‚Ü‚·B\n\ -HELP ReactOS ƒRƒ}ƒ“ƒh‚̃wƒ‹ƒvî•ñ‚ð’ñ‹Ÿ‚µ‚Ü‚·B\n\ -HISTORY Žg—p‚³‚ꂽ‚·‚ׂẴRƒ}ƒ“ƒh‚ðˆê——•\\ަ‚µ‚Ü‚·B\n\ -IF ƒoƒbƒ` ƒvƒƒOƒ‰ƒ€’†‚ÅðŒˆ—‚ðŽÀs‚µ‚Ü‚·B\n\ -LABEL ƒfƒBƒXƒN‚̃{ƒŠƒ…[ƒ€ ƒ‰ƒxƒ‹‚ð•\\ަ‚Ü‚½‚͕ύX‚µ‚Ü‚·B\n\ -MD ƒfƒBƒŒƒNƒgƒŠ‚ðì¬‚µ‚Ü‚·B\n\ -MKDIR ƒfƒBƒŒƒNƒgƒŠ‚ðì¬‚µ‚Ü‚·B\n\ +STRING_HELP1, "利用可能なすべてのコマンドの一覧と、その説明。\n\n\ + コマンド /? 特定のコマンドに関する詳細情報\n\n\ +? 利用可能なすべてのコマンドの一覧 (説明なし)。\n\ +ALIAS エイリアスの設定や解除をしたり、エイリアスを表示したりします。\n\ +ATTRIB ファイル属性を表示または変更します。\n\ +BEEP スピーカからビープ音を鳴らします。\n\ +CALL バッチ プログラムを別のバッチ プログラムから呼び出します。\n\ +CD 現在のディレクトリを変更したり、ディレクトリ名を表示したりします。\n\ +CHCP 現在のコード ページ番号を表示または設定します。\n\ +CHOICE ユーザーが選択肢から一つを選択するのを待ちます。\n\ +CLS 画面を消去します。\n\ +CMD ReactOS コマンド インタープリタの新しいインスタンスを開始します。\n\ +COLOR コンソールのデフォルトの前景色および背景色を設定します。\n\ +COPY 1 つまたは複数のファイルを別の場所にコピーします。\n\ +DATE 日付を表示または設定します。\n\ +DELAY n 秒、または n ミリ秒待機します。\n\ +DELETE 1 つまたは複数のファイルを削除します。\n\ +DIR ディレクトリ中のファイルとサブディレクトリを一覧表示します。\n\ +ECHO メッセージを表示したり、コマンド エコーの ON と OFF を切り替えます。\n\ +ERASE 1 つまたは複数のファイルを削除します。\n\ +EXIT CMD.exe (コマンド ライン インタープリタ) を終了します。\n\ +FOR 指定されたコマンドをファイル セットの各ファイルに対して実行します。\n\ +FREE ディスクの空き容量\n\ +GOTO バッチ プログラム内の、ラベルで指定されている行へ制御を移動します。\n\ +HELP ReactOS コマンドのヘルプ情報を提供します。\n\ +HISTORY 使用されたすべてのコマンドを一覧表示します。\n\ +IF バッチ プログラム中で条件処理を実行します。\n\ +LABEL ディスクのボリューム ラベルを表示または変更します。\n\ +MD ディレクトリを作成します。\n\ +MKDIR ディレクトリを作成します。\n\ MKLINK Creates a filesystem link object.\n\ -MOVE ƒtƒ@ƒCƒ‹‚ðˆÚ“®‚¨‚æ‚уtƒ@ƒCƒ‹‚ƃfƒBƒŒƒNƒgƒŠ–¼‚ð•ύX‚µ‚Ü‚·B\n\ -PATH ŽÀs‰Â”\\ƒtƒ@ƒCƒ‹‚ÌŒŸõƒpƒX‚ð•\\ަ‚Ü‚½‚͐ݒ肵‚Ü‚·B\n\ -PAUSE ƒoƒbƒ` ƒvƒƒOƒ‰ƒ€‚̏ˆ—‚ðˆêŽž’âŽ~‚µAƒƒbƒZ[ƒW‚ð•\\ަ‚µ‚Ü‚·B\n\ -POPD Œ»Ý‚̃fƒBƒŒƒNƒgƒŠ‚ð PUSHD ƒRƒ}ƒ“ƒh‚Å‹L‰¯‚³‚ꂽƒfƒBƒŒƒNƒgƒŠ‚É\n\ - •ύX‚µ‚Ü‚·B\n\ -PROMPT ƒRƒ}ƒ“ƒh ƒvƒƒ“ƒvƒg‚ð•ύX‚µ‚Ü‚·B\n\ -PUSHD Œ»Ý‚̃fƒBƒŒƒNƒgƒŠ‚ð•Û‘¶‚µAŽw’肵‚½ƒfƒBƒŒƒNƒgƒŠ‚ɕύX‚µ‚Ü‚·B\n\ -RD ƒfƒBƒŒƒNƒgƒŠ‚ðíœ‚µ‚Ü‚·B\n\ -REM ƒoƒbƒ` ƒtƒ@ƒCƒ‹‚ɃRƒƒ“ƒg (’Žß) ‚ð‹L˜^‚µ‚Ü‚·B\n\ -REN 1 ‚‚܂½‚Í•¡”‚̃tƒ@ƒCƒ‹‚Ì–¼‘O‚ð•ύX‚µ‚Ü‚·B\n\ -RENAME 1 ‚‚܂½‚Í•¡”‚̃tƒ@ƒCƒ‹‚Ì–¼‘O‚ð•ύX‚µ‚Ü‚·B\n\ -RMDIR ƒfƒBƒŒƒNƒgƒŠ‚ðíœ‚µ‚Ü‚·B\n\ -SCREEN ƒJ[ƒ\\ƒ‹‚ðˆÚ“®‚³‚¹‚Ü‚·BˆÚ“®ŒãA•¶Žš—ñ‚ð“ü—Í‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B\n\ -SET ŠÂ‹«•ϐ”‚ð•\\ަAÝ’èA‚Ü‚½‚͍폜‚µ‚Ü‚·B\n\ -SHIFT ƒJ[ƒ\\ƒ‹‚ðˆÚ“®‚³‚¹‚Ü‚·BˆÚ“®ŒãA•¶Žš—ñ‚ð“ü—Í‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B\n" -STRING_HELP2, "START •ʂ̃EƒBƒ“ƒhƒE‚ð‹N“®‚µAŽw’肵‚½ƒvƒƒOƒ‰ƒ€‚Ü‚½‚̓Rƒ}ƒ“ƒh‚ðŽÀs‚µ‚Ü‚·B\n\ -TIME ƒVƒXƒeƒ€Žž‚ð•\\ަ‚Ü‚½‚͐ݒ肵‚Ü‚·B\n\ -TIMER 10 ŒÂ‚܂ł̃XƒgƒbƒvƒEƒHƒbƒ`‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B\n\ -TITLE ƒRƒ}ƒ“ƒh ƒvƒƒ“ƒvƒg ƒEƒBƒ“ƒhƒE‚̃EƒBƒ“ƒhƒE ƒ^ƒCƒgƒ‹‚ðÝ’肵‚Ü‚·B\n\ -TYPE ƒeƒLƒXƒg ƒtƒ@ƒCƒ‹‚Ü‚½‚̓tƒ@ƒCƒ‹‚Ì“à—e‚ð•\\ަ‚µ‚Ü‚·B\n\ -VER ReactOS ‚̃o[ƒWƒ‡ƒ“‚ð•\\ަ‚µ‚Ü‚·B\n\ -VERIFY ƒtƒ@ƒCƒ‹‚ªƒfƒBƒXƒN‚ɐ³‚µ‚­‘‚«ž‚܂ꂽ‚±‚Æ‚ðÆ‡‚·‚é‚©‚Ç‚¤‚©‚ð\n\ - Žwަ‚µ‚Ü‚·B\n\ -VOL ƒfƒBƒXƒN‚̃{ƒŠƒ…[ƒ€ ƒ‰ƒxƒ‹‚ƃVƒŠƒAƒ‹”ԍ†‚ð•\\ަ‚µ‚Ü‚·B\n" +MOVE ファイルを移動およびファイルとディレクトリ名を変更します。\n\ +PATH 実行可能ファイルの検索パスを表示または設定します。\n\ +PAUSE バッチ プログラムの処理を一時停止し、メッセージを表示します。\n\ +POPD 現在のディレクトリを PUSHD コマンドで記憶されたディレクトリに\n\ + 変更します。\n\ +PROMPT コマンド プロンプトを変更します。\n\ +PUSHD 現在のディレクトリを保存し、指定したディレクトリに変更します。\n\ +RD ディレクトリを削除します。\n\ +REM バッチ ファイルにコメント (注釈) を記録します。\n\ +REN 1 つまたは複数のファイルの名前を変更します。\n\ +RENAME 1 つまたは複数のファイルの名前を変更します。\n\ +RMDIR ディレクトリを削除します。\n\ +SCREEN カーソルを移動させます。移動後、文字列を入力することもできます。\n\ +SET 環境変数を表示、設定、または削除します。\n\ +SHIFT カーソルを移動させます。移動後、文字列を入力することもできます。\n" +STRING_HELP2, "START 別のウィンドウを起動し、指定したプログラムまたはコマンドを実行します。\n\ +TIME システム時刻を表示または設定します。\n\ +TIMER 10 個までのストップウォッチを使うことができます。\n\ +TITLE コマンド プロンプト ウィンドウのウィンドウ タイトルを設定します。\n\ +TYPE テキスト ファイルまたはファイルの内容を表示します。\n\ +VER ReactOS のバージョンを表示します。\n\ +VERIFY ファイルがディスクに正しく書き込まれたことを照合するかどうかを\n\ + 指示します。\n\ +VOL ディスクのボリューム ラベルとシリアル番号を表示します。\n" STRING_CHOICE_OPTION, "YN" STRING_COPY_OPTION, "YNA" -STRING_ALIAS_ERROR, "ƒGƒCƒŠƒAƒX“WŠJŒã‚̃Rƒ}ƒ“ƒh ƒ‰ƒCƒ“‚ª’·‚·‚¬‚Ü‚·!\n" +STRING_ALIAS_ERROR, "エイリアス展開後のコマンド ラインが長すぎます!\n" STRING_ASSOC_ERROR, "File association not found for extension %s\n" -STRING_BATCH_ERROR, "ƒoƒbƒ` ƒtƒ@ƒCƒ‹‚ðŠJ‚­‚Æ‚«‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½B\n" -STRING_CHCP_ERROR1, "Œ»Ý‚̃R[ƒh ƒy[ƒW: %u\n" -STRING_CHCP_ERROR4, "–³Œø‚ȃR[ƒh ƒy[ƒW‚Å‚·\n" -STRING_CHOICE_ERROR, "–³Œø‚ȃIƒvƒVƒ‡ƒ“‚Å‚·BŠú‘Ò‚³‚ê‚é‘Ž®: /C[:]ƒIƒvƒVƒ‡ƒ“" -STRING_CHOICE_ERROR_TXT, "–³Œø‚ȃIƒvƒVƒ‡ƒ“‚Å‚·BŠú‘Ò‚³‚ê‚é‘Ž®: /T[:]c,nn" -STRING_CHOICE_ERROR_OPTION, "–³Œø‚ȃIƒvƒVƒ‡ƒ“‚Å‚·: %s" -STRING_CMD_ERROR1, "ƒtƒ@ƒCƒ‹ %s ‚©‚烊ƒ_ƒCƒŒƒNƒg“ü—͂ł«‚Ü‚¹‚ñB\n" -STRING_CMD_ERROR2, "ƒf[ƒ^‚ðƒpƒCƒv‚·‚邽‚߂̈ꎞƒtƒ@ƒCƒ‹ì¬‚̂Ƃ«‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½B\n" -STRING_CMD_ERROR3, "ƒtƒ@ƒCƒ‹ %s ‚Ö‚ÆƒŠƒ_ƒCƒŒƒNƒg‚Å‚«‚Ü‚¹‚ñB\n" -STRING_CMD_ERROR4, "%s ‚ðŽÀs‚µ‚Ä‚¢‚Ü‚·...\n" -STRING_CMD_ERROR5, "cmdexit.bat ‚ðŽÀs‚µ‚Ä‚¢‚Ü‚·...\n" -STRING_COLOR_ERROR1, "ƒGƒ‰[! “¯‚¶F‚ªŽw’肳‚ê‚Ü‚µ‚½B\n (‘OŒiF‚Æ”wŒiF‚𓯂¶F‚É‚·‚邱‚Ƃ͂ł«‚Ü‚¹‚ñ)" -STRING_COLOR_ERROR2, "F‚ÌŽw’è‚É–â‘肪‚ ‚è‚Ü‚·B" +STRING_BATCH_ERROR, "バッチ ファイルを開くときにエラーが発生しました。\n" +STRING_CHCP_ERROR1, "現在のコード ページ: %u\n" +STRING_CHCP_ERROR4, "無効なコード ページです\n" +STRING_CHOICE_ERROR, "無効なオプションです。期待される書式: /C[:]オプション" +STRING_CHOICE_ERROR_TXT, "無効なオプションです。期待される書式: /T[:]c,nn" +STRING_CHOICE_ERROR_OPTION, "無効なオプションです: %s" +STRING_CMD_ERROR1, "ファイル %s からリダイレクト入力できません。\n" +STRING_CMD_ERROR2, "データをパイプするための一時ファイル作成のときにエラーが発生しました。\n" +STRING_CMD_ERROR3, "ファイル %s へとリダイレクトできません。\n" +STRING_CMD_ERROR4, "%s を実行しています...\n" +STRING_CMD_ERROR5, "cmdexit.bat を実行しています...\n" +STRING_COLOR_ERROR1, "エラー! 同じ色が指定されました。\n (前景色と背景色を同じ色にすることはできません)" +STRING_COLOR_ERROR2, "色の指定に問題があります。" STRING_COLOR_ERROR3, "Color %x\n" -STRING_COLOR_ERROR4, "ƒGƒ‰[! “¯‚¶F‚ªŽw’肳‚ê‚Ü‚µ‚½B" -STRING_CONSOLE_ERROR, "•s–¾‚ȃGƒ‰[: %d\n" -STRING_COPY_ERROR1, "ƒGƒ‰[: Œ³‚̃tƒ@ƒCƒ‹ %s ‚ðŠJ‚¯‚Ü‚¹‚ñ!\n" -STRING_COPY_ERROR2, "ƒGƒ‰[: ƒRƒs[Œ³‚ƃRƒs[æ‚ªˆê‚Å‚·!\n" -STRING_COPY_ERROR3, "Žw’èæ‚ւ̏‘‚«ž‚݂ŃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½!\n" -STRING_COPY_ERROR4, "ƒGƒ‰[: ‚Ü‚¾ŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ!\n" -STRING_DATE_ERROR, "–³Œø‚È“ú•t‚Å‚·B" -STRING_DEL_ERROR5, "ƒtƒ@ƒCƒ‹ %s ‚͍폜‚³‚ê‚Ü‚·! " -STRING_DEL_ERROR6, "‚æ‚낵‚¢‚Å‚·‚© (Y/N)?" -STRING_DEL_ERROR7, "íœ‚µ‚Ä‚¢‚Ü‚·: %s\n" -STRING_ERROR_ERROR1, "•s–¾‚ȃGƒ‰[‚Å‚·! ƒGƒ‰[ ƒR[ƒh: 0x%lx\n" -STRING_ERROR_ERROR2, "\\•¶ƒGƒ‰[" -STRING_FOR_ERROR1, "–½—ß•¶’†‚É 'in' ‚ª•s‘«‚µ‚Ä‚¢‚Ü‚·B" -STRING_FOR_ERROR2, "ЇŒÊ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB" -STRING_FOR_ERROR3, "'do' ‚ª•s‘«‚µ‚Ä‚¢‚Ü‚·B" -STRING_FOR_ERROR4, "'do' ‚ÌŒã‚ɃRƒ}ƒ“ƒh‚ª‚ ‚è‚Ü‚¹‚ñB" -STRING_FREE_ERROR1, "–³Œø‚ȃhƒ‰ƒCƒu‚Å‚·B" -STRING_FREE_ERROR2, "ƒ‰ƒxƒ‹‚ª‚ ‚è‚Ü‚¹‚ñB" -STRING_GOTO_ERROR1, "GOTO ‚Ƀ‰ƒxƒ‹‚ªŽw’肳‚ê‚Ä‚¢‚Ü‚¹‚ñB" -STRING_GOTO_ERROR2, "ƒ‰ƒxƒ‹ '%s' ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B\n" +STRING_COLOR_ERROR4, "エラー! 同じ色が指定されました。" +STRING_CONSOLE_ERROR, "不明なエラー: %d\n" +STRING_COPY_ERROR1, "エラー: 元のファイル %s を開けません!\n" +STRING_COPY_ERROR2, "エラー: コピー元とコピー先が一緒です!\n" +STRING_COPY_ERROR3, "指定先への書き込みでエラーが発生しました!\n" +STRING_COPY_ERROR4, "エラー: まだ実装されていません!\n" +STRING_DATE_ERROR, "無効な日付です。" +STRING_DEL_ERROR5, "ファイル %s は削除されます! " +STRING_DEL_ERROR6, "よろしいですか (Y/N)?" +STRING_DEL_ERROR7, "削除しています: %s\n" +STRING_ERROR_ERROR1, "不明なエラーです! エラー コード: 0x%lx\n" +STRING_ERROR_ERROR2, "構文エラー" +STRING_FOR_ERROR1, "命令文中に 'in' が不足しています。" +STRING_FOR_ERROR2, "括弧が見つかりません。" +STRING_FOR_ERROR3, "'do' が不足しています。" +STRING_FOR_ERROR4, "'do' の後にコマンドがありません。" +STRING_FREE_ERROR1, "無効なドライブです。" +STRING_FREE_ERROR2, "ラベルがありません。" +STRING_GOTO_ERROR1, "GOTO にラベルが指定されていません。" +STRING_GOTO_ERROR2, "ラベル '%s' が見つかりませんでした。\n" -STRING_MD_ERROR, "‚·‚łɃfƒBƒŒƒNƒgƒŠ“à‚ɃTƒuƒfƒBƒŒƒNƒgƒŠ‚©ƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µ‚Ä‚¢‚Ü‚·B\n" -STRING_MD_ERROR2, "V‚µ‚¢ƒtƒHƒ‹ƒ_‚ւ̃pƒX‚ª‘¶Ý‚µ‚Ä‚¢‚Ü‚¹‚ñB\n" +STRING_MD_ERROR, "すでにディレクトリ内にサブディレクトリかファイルが存在しています。\n" +STRING_MD_ERROR2, "新しいフォルダへのパスが存在していません。\n" STRING_MOVE_ERROR1, "[OK]\n" -STRING_MOVE_ERROR2, "[ƒGƒ‰[]\n" +STRING_MOVE_ERROR2, "[エラー]\n" -STRING_REN_ERROR1, "MoveFile() failed. ƒGƒ‰[: %lu\n" +STRING_REN_ERROR1, "MoveFile() failed. エラー: %lu\n" -STRING_START_ERROR1, "Œ»Žž“_‚ł̓oƒbƒ`‚̓Tƒ|[ƒg‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ!" +STRING_START_ERROR1, "現時点ではバッチはサポートされていません!" -STRING_TIME_ERROR1, "–³Œø‚ÈŽž‚Å‚·B" +STRING_TIME_ERROR1, "無効な時刻です。" -STRING_TYPE_ERROR1, "'/%s' ‚Í–³Œø‚ȃIƒvƒVƒ‡ƒ“‚Å‚·\n" +STRING_TYPE_ERROR1, "'/%s' は無効なオプションです\n" -STRING_WINDOW_ERROR1, "ƒEƒBƒ“ƒhƒE‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB" +STRING_WINDOW_ERROR1, "ウィンドウが見つかりません。" -STRING_ERROR_PARAMETERF_ERROR, "ƒpƒ‰ƒ[ƒ^‚̏‘Ž®‚ªŠÔˆá‚Á‚Ä‚¢‚Ü‚·B - %c\n" -STRING_ERROR_INVALID_SWITCH, "–³Œø‚ȃXƒCƒbƒ`‚Å‚·B - /%c\n" -STRING_ERROR_TOO_MANY_PARAMETERS, "ƒpƒ‰ƒ[ƒ^‚ª‘½‚·‚¬‚Ü‚·B - %s\n" -STRING_ERROR_PATH_NOT_FOUND, "ƒpƒX‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB\n" -STRING_ERROR_FILE_NOT_FOUND, "ƒtƒ@ƒCƒ‹‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB\n" -STRING_ERROR_REQ_PARAM_MISSING, "•K—v‚ȃpƒ‰ƒ[ƒ^‚ª•s‘«‚µ‚Ä‚¢‚Ü‚·B\n" -STRING_ERROR_INVALID_DRIVE, "–³Œø‚ȃhƒ‰ƒCƒuŽw’è‚Å‚·B\n" -STRING_ERROR_INVALID_PARAM_FORMAT, "–³Œø‚ȃpƒ‰ƒ[ƒ^‚̏‘Ž®‚Å‚·B - %s\n" -STRING_ERROR_BADCOMMAND, "ƒRƒ}ƒ“ƒh‚Ü‚½‚̓tƒ@ƒCƒ‹–¼‚ªŠÔˆá‚Á‚Ä‚¢‚Ü‚·B - %s\n" -STRING_ERROR_OUT_OF_MEMORY, "ƒƒ‚ƒŠ•s‘«ƒGƒ‰[B\n" -STRING_ERROR_CANNOTPIPE, "ƒGƒ‰[! ƒpƒCƒv‚Å‚«‚Ü‚¹‚ñ! ˆêŽžƒtƒ@ƒCƒ‹‚ðŠJ‚¯‚Ü‚¹‚ñ!\n" -STRING_ERROR_D_PAUSEMSG, "‘±s‚·‚é‚ɂ͉½‚©ƒL[‚ð‰Ÿ‚µ‚Ä‚­‚¾‚³‚¢ . . ." -STRING_ERROR_DRIVER_NOT_READY, "ƒhƒ‰ƒCƒu‚̏€”õ‚ª‚Å‚«‚Ä‚¢‚Ü‚¹‚ñB" +STRING_ERROR_PARAMETERF_ERROR, "パラメータの書式が間違っています。 - %c\n" +STRING_ERROR_INVALID_SWITCH, "無効なスイッチです。 - /%c\n" +STRING_ERROR_TOO_MANY_PARAMETERS, "パラメータが多すぎます。 - %s\n" +STRING_ERROR_PATH_NOT_FOUND, "パスが見つかりません。\n" +STRING_ERROR_FILE_NOT_FOUND, "ファイルが見つかりません。\n" +STRING_ERROR_REQ_PARAM_MISSING, "必要なパラメータが不足しています。\n" +STRING_ERROR_INVALID_DRIVE, "無効なドライブ指定です。\n" +STRING_ERROR_INVALID_PARAM_FORMAT, "無効なパラメータの書式です。 - %s\n" +STRING_ERROR_BADCOMMAND, "コマンドまたはファイル名が間違っています。 - %s\n" +STRING_ERROR_OUT_OF_MEMORY, "メモリ不足エラー。\n" +STRING_ERROR_CANNOTPIPE, "エラー! パイプできません! 一時ファイルを開けません!\n" +STRING_ERROR_D_PAUSEMSG, "続行するには何かキーを押してください . . ." +STRING_ERROR_DRIVER_NOT_READY, "ドライブの準備ができていません。" STRING_PATH_ERROR, "CMD: Not in environment '%s'\n" @@ -706,21 +706,21 @@ STRING_REPLACE_ERROR7, "Extended Error 32\n" STRING_REACTOS_VERSION, "ReactOS Operating System [Version %s-%s]\n" STRING_CMD_SHELLINFO, "\nReactOS Command Line Interpreter\nVersion %s %s" STRING_VERSION_RUNVER, " running on %s" -STRING_COPY_FILE , " %d ŒÂ‚̃tƒ@ƒCƒ‹‚ªƒRƒs[‚³‚ê‚Ü‚µ‚½\n" -STRING_DELETE_WIPE, "Š®‘S‚ɏÁ‹Ž‚³‚ê‚Ü‚µ‚½B" -STRING_FOR_ERROR, "–³Œø‚ȕϐ”‚ªŽw’肳‚ê‚Ü‚µ‚½B" -STRING_SCREEN_COL, "s‚Ì’l‚ª–³Œø‚Å‚·B" -STRING_SCREEN_ROW, "—ñ‚Ì’l‚ª–³Œø‚Å‚·B" -STRING_TIMER_TIME "ƒ^ƒCƒ}[ %d ‚Í %s ‚Å‚·B: " +STRING_COPY_FILE , " %d 個のファイルがコピーされました\n" +STRING_DELETE_WIPE, "完全に消去されました。" +STRING_FOR_ERROR, "無効な変数が指定されました。" +STRING_SCREEN_COL, "行の値が無効です。" +STRING_SCREEN_ROW, "列の値が無効です。" +STRING_TIMER_TIME "タイマー %d は %s です。: " STRING_MKLINK_CREATED_SYMBOLIC, "Symbolic link created for %s <<===>> %s\n" STRING_MKLINK_CREATED_HARD, "Hard link created for %s <<===>> %s\n" STRING_MKLINK_CREATED_JUNCTION, "Junction created for %s <<===>> %s\n" STRING_MORE, "More? " STRING_CANCEL_BATCH_FILE, "\r\nCtrl-Break pressed. Cancel batch file? (Yes/No/All) " -STRING_INVALID_OPERAND, "–³Œø‚ȃIƒyƒ‰ƒ“ƒh‚Å‚·B" +STRING_INVALID_OPERAND, "無効なオペランドです。" STRING_EXPECTED_CLOSE_PAREN, "Expected ')'" STRING_EXPECTED_NUMBER_OR_VARIABLE,"Expected number or variable name." -STRING_SYNTAX_COMMAND_INCORRECT, "ƒRƒ}ƒ“ƒh‚̍\\•¶‚ªŠÔˆá‚Á‚Ä‚¢‚Ü‚·B" +STRING_SYNTAX_COMMAND_INCORRECT, "コマンドの構文が間違っています。" END diff --git a/reactos/base/system/diskpart/lang/ro-RO.rc b/reactos/base/system/diskpart/lang/ro-RO.rc index 8259b7dd28b..d0bbf8445ae 100644 --- a/reactos/base/system/diskpart/lang/ro-RO.rc +++ b/reactos/base/system/diskpart/lang/ro-RO.rc @@ -16,9 +16,9 @@ LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL STRINGTABLE DISCARDABLE BEGIN IDS_APP_HEADER, "\nReactOS DiskPart\n" - IDS_APP_USAGE, "Disk Partitioning Interpreter.\n\nUsage: DISKPART [/S filename] [/T timeout] [/?]\n\n\ -/S filename\tExecută scriptul din fișierul dat.\n\ -/T timeout\tTimeout in seconds to prevent diskpart usage overlap.\n\ + IDS_APP_USAGE, "Interpretor pentru partiționare discuri.\n\nUtilizare: DISKPART [/S numefișier] [/T timplimită] [/?]\n\n\ +/S numefișier\tExecută scriptul din fișierul dat.\n\ +/T timplimită\tLimită temporală pentru prevenirea utilizării concurente.\n\ /?\t\tAfișează acest manual.\n\n" IDS_APP_LICENSE, "Licențiere în termenii GNU GPLv2\n" IDS_APP_CURR_COMPUTER, "Pe calculatorul: %s\n\n" @@ -36,7 +36,7 @@ BEGIN IDS_DETAIL_INFO_TARGET, "Țintă" IDS_DETAIL_INFO_LUN_ID, "LUN ID" IDS_DETAIL_INFO_LOC_PATH, "Localizat în" - IDS_DETAIL_INFO_CURR_RO_STATE, "Current Read-only State" + IDS_DETAIL_INFO_CURR_RO_STATE, "Stare curentă doar-citire" IDS_DETAIL_INFO_RO, "Protejat-la-scriere" IDS_DETAIL_INFO_BOOT_DSK, "Disc inițializator" IDS_DETAIL_INFO_PAGE_FILE_DSK, "Disc cu fișier de paginare" @@ -122,7 +122,7 @@ END STRINGTABLE DISCARDABLE BEGIN IDS_ERROR_MSG_NO_SCRIPT "Eroare la deschiderea fișierului script: %s\n" - IDS_ERROR_MSG_BAD_ARG "De prelucrare de eroare argumente: %s\n" + IDS_ERROR_MSG_BAD_ARG "Eroare la prelucrarea argumentului: %s\n" END diff --git a/reactos/dll/cpl/desk/lang/pl-PL.rc b/reactos/dll/cpl/desk/lang/pl-PL.rc index ad35413ca82..4c4d978a50e 100644 --- a/reactos/dll/cpl/desk/lang/pl-PL.rc +++ b/reactos/dll/cpl/desk/lang/pl-PL.rc @@ -60,7 +60,7 @@ FONT 8, "MS Shell Dlg" BEGIN CONTROL "", IDC_APPEARANCE_PREVIEW, "PreviewWndClass", WS_VISIBLE | WS_BORDER, 7, 7, 232, 120 - LTEXT "Visual Style", IDC_STATIC, 7, 130, 64, 7 + LTEXT "Motyw graficzny", IDC_STATIC, 7, 130, 64, 7 COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP LTEXT "Schemat kolorów", IDC_STATIC, 7, 160, 64, 7 COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP diff --git a/reactos/dll/cpl/input/lang/pl-PL.rc b/reactos/dll/cpl/input/lang/pl-PL.rc index afcce085ae6..4910a72afc9 100644 --- a/reactos/dll/cpl/input/lang/pl-PL.rc +++ b/reactos/dll/cpl/input/lang/pl-PL.rc @@ -13,7 +13,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION CAPTION "Ustawienia" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Wybierz usługi dla każdego używanego języka z listy.\nListę można modyfikować przyciskami Dodaj i Usuń.", -1, 9, 6, 238, 17 + LTEXT "Wybierz usługi dla kadego używanego języka z listy.\nListę można modyfikować przyciskami Dodaj i Usuń.", -1, 9, 6, 238, 17 CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 28, 237, 109 PUSHBUTTON "&Ustaw domyślne", IDC_SET_DEFAULT, 101, 159, 144, 14 PUSHBUTTON "&Dodaj...", IDC_ADD_BUTTON, 27, 142, 70, 14 @@ -25,12 +25,12 @@ END IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228 STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Advanced Settings" +CAPTION "Zaawansowane" FONT 8, "MS Shell Dlg" BEGIN - GROUPBOX "System Configuration", -1, 7, 7, 240, 70 - AUTOCHECKBOX "&Turn off advanced text services", IDC_TURNOFFTEXTSVCS_CB, 14, 20, 130, 12 - LTEXT "Select this check box to turn off advanced text services in all programs.\nThis is not recommended for East Asian users because this closes the language bar.", -1, 14, 40, 230, 35 + GROUPBOX "Konfiguracja Systemu", -1, 7, 7, 240, 70 + AUTOCHECKBOX "&Wyłącz zaawansowane usługi tekstowe", IDC_TURNOFFTEXTSVCS_CB, 14, 20, 130, 12 + LTEXT "Zaznacz tą opcję by wyłączyć zaawansowane usługi tesktowe we wszystkich programach.\nNie jest to zalecane dla użytkowników z Dalekiego Wschodu, jako że zamyka to pasek języków.", -1, 14, 40, 230, 35 END IDD_KEYSETTINGS DIALOGEX 0, 0, 272, 163 From 959e4790c62e89b82d7a557ab0b9b3e8f7d54e93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 6 Jan 2013 23:29:05 +0000 Subject: [PATCH 80/96] [REACTOS] - Fix the debugging macros I've introduced in r58132; in particular do not use while(true); for forbidding the user to continue execution, but instead raise an exception with EXCEPTION_NONCONTINUABLE flag (included when called RtlRaiseStatus). - Adjust the definition of RtlRaiseStatus (in kernel-mode it is ExRaiseStatus which is used). svn path=/trunk/; revision=58135 --- reactos/include/reactos/debug.h | 53 +++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/reactos/include/reactos/debug.h b/reactos/include/reactos/debug.h index 233cff2793e..52fd684b31f 100644 --- a/reactos/include/reactos/debug.h +++ b/reactos/include/reactos/debug.h @@ -15,7 +15,7 @@ #ifndef __INTERNAL_DEBUG #define __INTERNAL_DEBUG -/* Define DbgPrint/DbgPrintEx/RtlAssert unless the NDK is used */ +/* Define DbgPrint/DbgPrintEx/RtlAssert/RtlRaiseStatus unless the NDK is used */ #if !defined(_RTLFUNCS_H) && !defined(_NTDDK_) /* Make sure we have basic types (some people include us *before* SDK)... */ @@ -51,8 +51,28 @@ RtlAssert( PCHAR Message ); +#ifndef _NTDEF_ /* Guard against redefinition from ntdef.h */ + typedef _Return_type_success_(return >= 0) LONG NTSTATUS; +#endif +__analysis_noreturn +NTSYSAPI +VOID +NTAPI +RtlRaiseStatus( + _In_ NTSTATUS Status +); + #endif /* !defined(_RTLFUNCS_H) && !defined(_NTDDK_) */ + +/* Fix usage of RtlRaiseStatus */ +#if !defined(_RTLFUNCS_H) && defined(_NTDDK_) + #define RaiseStatus ExRaiseStatus +#else + #define RaiseStatus RtlRaiseStatus +#endif /* !defined(_RTLFUNCS_H) && defined(_NTDDK_) */ + + #ifndef assert #ifndef NASSERT #define assert(x) if (!(x)) { RtlAssert((PVOID)#x, (PVOID)__FILE__, __LINE__, ""); } @@ -136,11 +156,7 @@ RtlAssert( #endif /* not DBG */ -/* - * These macros are designed to display an optional printf-like - * user-defined message and to break into the debugger. - * After that they allow to continue the program execution. - */ +/******************************************************************************/ /* For internal purposes only */ #define __ERROR_DBGBREAK(...) \ do { \ @@ -148,6 +164,18 @@ do { \ DbgBreakPoint(); \ } while (0) +/* For internal purposes only */ +#define __ERROR_FATAL(Status, ...) \ +do { \ + DbgPrint("" __VA_ARGS__); \ + RaiseStatus((Status)); \ +} while (0) + +/* + * These macros are designed to display an optional printf-like + * user-defined message and to break into the debugger. + * After that they allow to continue the program execution. + */ #define ERROR_DBGBREAK(...) \ do { \ __NOTICE(ERROR, "\n"); \ @@ -165,19 +193,18 @@ do { \ * user-defined message and to break into the debugger. * After that they halt the execution of the current thread. */ -#define ERROR_FATAL(...) \ -do { \ - __NOTICE(UNRECOVERABLE ERROR, "\n"); \ - __ERROR_DBGBREAK(__VA_ARGS__); \ - while (TRUE); \ +#define ERROR_FATAL(...) \ +do { \ + __NOTICE(UNRECOVERABLE ERROR, "\n"); \ + __ERROR_FATAL(STATUS_ASSERTION_FAILURE, __VA_ARGS__); \ } while (0) #define UNIMPLEMENTED_FATAL(...) \ do { \ __NOTICE(UNRECOVERABLE ERROR, "is UNIMPLEMENTED!\n"); \ - __ERROR_DBGBREAK(__VA_ARGS__); \ - while (TRUE); \ + __ERROR_FATAL(STATUS_NOT_IMPLEMENTED, __VA_ARGS__); \ } while (0) +/******************************************************************************/ #define ASSERT_IRQL_LESS_OR_EQUAL(x) ASSERT(KeGetCurrentIrql()<=(x)) #define ASSERT_IRQL_EQUAL(x) ASSERT(KeGetCurrentIrql()==(x)) From 2ee69a3c106346d2c0c9cb5a54c36b1e64058170 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 6 Jan 2013 23:42:25 +0000 Subject: [PATCH 81/96] [REACTOS] Attempt to fix compilation by lying at NDK. svn path=/trunk/; revision=58136 --- reactos/include/reactos/debug.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/reactos/include/reactos/debug.h b/reactos/include/reactos/debug.h index 52fd684b31f..a8923711c21 100644 --- a/reactos/include/reactos/debug.h +++ b/reactos/include/reactos/debug.h @@ -52,7 +52,8 @@ RtlAssert( ); #ifndef _NTDEF_ /* Guard against redefinition from ntdef.h */ - typedef _Return_type_success_(return >= 0) LONG NTSTATUS; + #define __BCRYPT_H__ /* Hack for NDK - umtypes.h */ + typedef _Return_type_success_(return >= 0) LONG NTSTATUS, *PNTSTATUS; #endif __analysis_noreturn NTSYSAPI From 861e9a0a55bb5ee01f19121bb902651db1ccd499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 6 Jan 2013 23:50:52 +0000 Subject: [PATCH 82/96] [REACTOS] I hope this solution will work *sigh* svn path=/trunk/; revision=58137 --- reactos/include/reactos/debug.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/reactos/include/reactos/debug.h b/reactos/include/reactos/debug.h index a8923711c21..c08b7dfc2f7 100644 --- a/reactos/include/reactos/debug.h +++ b/reactos/include/reactos/debug.h @@ -51,16 +51,18 @@ RtlAssert( PCHAR Message ); -#ifndef _NTDEF_ /* Guard against redefinition from ntdef.h */ - #define __BCRYPT_H__ /* Hack for NDK - umtypes.h */ - typedef _Return_type_success_(return >= 0) LONG NTSTATUS, *PNTSTATUS; -#endif +/* + * This is the definition of NTSTATUS, but renamed + * in order not to conflict with other ones. + */ +typedef _Return_type_success_(return >= 0) LONG DEBUG_NTSTATUS; + __analysis_noreturn NTSYSAPI VOID NTAPI RtlRaiseStatus( - _In_ NTSTATUS Status + _In_ DEBUG_NTSTATUS Status ); #endif /* !defined(_RTLFUNCS_H) && !defined(_NTDDK_) */ From 126cb7dacd308746ae703681f35d1f1ba1d12733 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Mon, 7 Jan 2013 22:11:06 +0000 Subject: [PATCH 83/96] [NTOSKRNL-CMLIB] Continue to use the new debugging macros introduced in r58132. svn path=/trunk/; revision=58138 --- reactos/lib/cmlib/hivecell.c | 3 +- reactos/ntoskrnl/cache/cachesub.c | 3 +- reactos/ntoskrnl/cache/copysup.c | 12 ++---- reactos/ntoskrnl/cache/fssup.c | 5 +-- reactos/ntoskrnl/cache/logsup.c | 14 +++---- reactos/ntoskrnl/include/internal/i386/ke.h | 3 +- reactos/ntoskrnl/io/iomgr/irp.c | 6 +-- reactos/ntoskrnl/io/pnpmgr/pnpmgr.c | 2 +- reactos/ntoskrnl/kd64/amd64/kdx64.c | 14 +++---- reactos/ntoskrnl/kd64/arm/kdarm.c | 36 ++++++------------ reactos/ntoskrnl/ke/dpc.c | 4 +- reactos/ntoskrnl/ke/i386/context.c | 3 +- reactos/ntoskrnl/ke/i386/traphdlr.c | 42 ++++++--------------- reactos/ntoskrnl/mm/arm/stubs.c | 3 +- reactos/ntoskrnl/po/povolume.c | 5 +-- 15 files changed, 50 insertions(+), 105 deletions(-) diff --git a/reactos/lib/cmlib/hivecell.c b/reactos/lib/cmlib/hivecell.c index 3c82b450b9d..c11fd9f72ba 100644 --- a/reactos/lib/cmlib/hivecell.c +++ b/reactos/lib/cmlib/hivecell.c @@ -548,8 +548,7 @@ HvTrackCellRef(PHV_TRACK_CELL_REF CellRef, } /* FIXME: TODO */ - DPRINT1("ERROR: Too many references\n"); - ASSERT(FALSE); // while (TRUE); + ASSERTMSG(FALSE, "ERROR: Too many references\n"); return FALSE; } diff --git a/reactos/ntoskrnl/cache/cachesub.c b/reactos/ntoskrnl/cache/cachesub.c index 0431a5666f6..56d50ab775d 100644 --- a/reactos/ntoskrnl/cache/cachesub.c +++ b/reactos/ntoskrnl/cache/cachesub.c @@ -131,8 +131,7 @@ CcGetFlushedValidData(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN BOOLEAN CcInternalCaller) { LARGE_INTEGER Result = {{0}}; - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return Result; } diff --git a/reactos/ntoskrnl/cache/copysup.c b/reactos/ntoskrnl/cache/copysup.c index be2af04c983..8820779fb5c 100644 --- a/reactos/ntoskrnl/cache/copysup.c +++ b/reactos/ntoskrnl/cache/copysup.c @@ -121,8 +121,7 @@ CcFastCopyRead(IN PFILE_OBJECT FileObject, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } BOOLEAN @@ -208,8 +207,7 @@ CcFastCopyWrite(IN PFILE_OBJECT FileObject, IN ULONG Length, IN PVOID Buffer) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } BOOLEAN @@ -219,8 +217,7 @@ CcCanIWrite(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, IN UCHAR Retrying) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return FALSE; } @@ -233,8 +230,7 @@ CcDeferWrite(IN PFILE_OBJECT FileObject, IN ULONG BytesToWrite, IN BOOLEAN Retrying) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } /* EOF */ diff --git a/reactos/ntoskrnl/cache/fssup.c b/reactos/ntoskrnl/cache/fssup.c index f816100dfa8..3eabe781e3e 100644 --- a/reactos/ntoskrnl/cache/fssup.c +++ b/reactos/ntoskrnl/cache/fssup.c @@ -392,14 +392,13 @@ CcPurgeCacheSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, CcpFlushCache(Map, NULL, 0, NULL, TRUE); return TRUE; } - + VOID NTAPI CcSetDirtyPageThreshold(IN PFILE_OBJECT FileObject, IN ULONG DirtyPageThreshold) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } /* diff --git a/reactos/ntoskrnl/cache/logsup.c b/reactos/ntoskrnl/cache/logsup.c index cb4f78a3f0b..33f7b90d9b7 100644 --- a/reactos/ntoskrnl/cache/logsup.c +++ b/reactos/ntoskrnl/cache/logsup.c @@ -23,8 +23,7 @@ CcSetAdditionalCacheAttributes(IN PFILE_OBJECT FileObject, IN BOOLEAN DisableReadAhead, IN BOOLEAN DisableWriteBehind) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } VOID @@ -47,17 +46,15 @@ CcGetDirtyPages(IN PVOID LogHandle, IN PVOID Context2) { LARGE_INTEGER Result = {{0}}; - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return Result; } - + BOOLEAN NTAPI CcIsThereDirtyData(IN PVPB Vpb) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return FALSE; } @@ -67,8 +64,7 @@ CcGetLsnForFileObject(IN PFILE_OBJECT FileObject, OUT OPTIONAL PLARGE_INTEGER OldestLsn) { LARGE_INTEGER Result = {{0}}; - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return Result; } diff --git a/reactos/ntoskrnl/include/internal/i386/ke.h b/reactos/ntoskrnl/include/internal/i386/ke.h index 7e81de388aa..3ae219ac5b8 100644 --- a/reactos/ntoskrnl/include/internal/i386/ke.h +++ b/reactos/ntoskrnl/include/internal/i386/ke.h @@ -137,8 +137,7 @@ typedef union _KTRAP_EXIT_SKIP_BITS IN ULONG Flags) \ { \ /* Not yet handled */ \ - UNIMPLEMENTED; \ - ASSERT(FALSE); /* while (TRUE); */ \ + UNIMPLEMENTED_DBGBREAK(); \ return FALSE; \ } diff --git a/reactos/ntoskrnl/io/iomgr/irp.c b/reactos/ntoskrnl/io/iomgr/irp.c index f19b496bb87..f3a4bda81eb 100644 --- a/reactos/ntoskrnl/io/iomgr/irp.c +++ b/reactos/ntoskrnl/io/iomgr/irp.c @@ -265,8 +265,7 @@ IopCompleteRequest(IN PKAPC Apc, (Irp->IoStatus.Information == IO_REPARSE_TAG_MOUNT_POINT)) { /* We should never get this yet */ - DPRINT1("Reparse support not yet present!\n"); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("Reparse support not yet present!\n"); return; } } @@ -1373,8 +1372,7 @@ IofCompleteRequest(IN PIRP Irp, PriorityBoost); #else /* Not implemented yet. */ - DPRINT1("Not supported!\n"); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("Not supported!\n"); #endif } diff --git a/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c b/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c index 54e5c410f3f..3aca4ce583b 100644 --- a/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c +++ b/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c @@ -3784,7 +3784,7 @@ PiGetDeviceRegistryProperty(IN PDEVICE_OBJECT DeviceObject, #define PIP_RETURN_DATA(x, y) {ReturnLength = x; Data = y; Status = STATUS_SUCCESS; break;} #define PIP_REGISTRY_DATA(x, y) {ValueName = x; ValueType = y; break;} -#define PIP_UNIMPLEMENTED() {UNIMPLEMENTED; ASSERT(FALSE); /* while (TRUE); */ break;} +#define PIP_UNIMPLEMENTED() {UNIMPLEMENTED_DBGBREAK(); break;} /* * @implemented diff --git a/reactos/ntoskrnl/kd64/amd64/kdx64.c b/reactos/ntoskrnl/kd64/amd64/kdx64.c index a496fd74a49..219013bf982 100644 --- a/reactos/ntoskrnl/kd64/amd64/kdx64.c +++ b/reactos/ntoskrnl/kd64/amd64/kdx64.c @@ -139,8 +139,7 @@ KdpSysReadBusData(IN ULONG BusDataType, IN ULONG Length, OUT PULONG ActualLength) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_UNSUCCESSFUL; } @@ -154,8 +153,7 @@ KdpSysWriteBusData(IN ULONG BusDataType, IN ULONG Length, OUT PULONG ActualLength) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_UNSUCCESSFUL; } @@ -357,8 +355,7 @@ NTSTATUS NTAPI KdpSysCheckLowMemory(IN ULONG Flags) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_UNSUCCESSFUL; } @@ -366,7 +363,8 @@ NTSTATUS NTAPI KdpAllowDisable(VOID) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_ACCESS_DENIED; } + +/* EOF */ diff --git a/reactos/ntoskrnl/kd64/arm/kdarm.c b/reactos/ntoskrnl/kd64/arm/kdarm.c index 35f9211014d..04907d3e041 100644 --- a/reactos/ntoskrnl/kd64/arm/kdarm.c +++ b/reactos/ntoskrnl/kd64/arm/kdarm.c @@ -22,8 +22,7 @@ NTAPI KdpGetStateChange(IN PDBGKD_MANIPULATE_STATE64 State, IN PCONTEXT Context) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } VOID @@ -31,8 +30,7 @@ NTAPI KdpSetContextState(IN PDBGKD_ANY_WAIT_STATE_CHANGE WaitStateChange, IN PCONTEXT Context) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } NTSTATUS @@ -40,8 +38,7 @@ NTAPI KdpSysReadMsr(IN ULONG Msr, OUT PLARGE_INTEGER MsrValue) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_UNSUCCESSFUL; } @@ -50,8 +47,7 @@ NTAPI KdpSysWriteMsr(IN ULONG Msr, IN PLARGE_INTEGER MsrValue) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_UNSUCCESSFUL; } @@ -65,8 +61,7 @@ KdpSysReadBusData(IN ULONG BusDataType, IN ULONG Length, OUT PULONG ActualLength) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_UNSUCCESSFUL; } @@ -80,8 +75,7 @@ KdpSysWriteBusData(IN ULONG BusDataType, IN ULONG Length, OUT PULONG ActualLength) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_UNSUCCESSFUL; } @@ -93,8 +87,7 @@ KdpSysReadControlSpace(IN ULONG Processor, IN ULONG Length, OUT PULONG ActualLength) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_UNSUCCESSFUL; } @@ -106,8 +99,7 @@ KdpSysWriteControlSpace(IN ULONG Processor, IN ULONG Length, OUT PULONG ActualLength) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_UNSUCCESSFUL; } @@ -121,8 +113,7 @@ KdpSysReadIoSpace(IN ULONG InterfaceType, IN ULONG DataSize, OUT PULONG ActualDataSize) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_UNSUCCESSFUL; } @@ -136,8 +127,7 @@ KdpSysWriteIoSpace(IN ULONG InterfaceType, IN ULONG DataSize, OUT PULONG ActualDataSize) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_UNSUCCESSFUL; } @@ -145,8 +135,7 @@ NTSTATUS NTAPI KdpSysCheckLowMemory(IN ULONG Flags) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_UNSUCCESSFUL; } @@ -154,7 +143,6 @@ NTSTATUS NTAPI KdpAllowDisable(VOID) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_ACCESS_DENIED; } diff --git a/reactos/ntoskrnl/ke/dpc.c b/reactos/ntoskrnl/ke/dpc.c index 577fefbd587..47772379ca2 100644 --- a/reactos/ntoskrnl/ke/dpc.c +++ b/reactos/ntoskrnl/ke/dpc.c @@ -779,9 +779,7 @@ KeInsertQueueDpc(IN PKDPC Dpc, if (!(Prcb->DpcThreadActive) && !(Prcb->DpcThreadRequested)) { /* FIXME: Setup Threaded DPC */ - DPRINT1("Threaded DPC not supported\n"); - ASSERT(FALSE); - while (TRUE); + UNIMPLEMENTED_FATAL("Threaded DPC not supported\n"); } } else diff --git a/reactos/ntoskrnl/ke/i386/context.c b/reactos/ntoskrnl/ke/i386/context.c index cd36a145449..e6b91303bda 100644 --- a/reactos/ntoskrnl/ke/i386/context.c +++ b/reactos/ntoskrnl/ke/i386/context.c @@ -35,8 +35,7 @@ KiSwapProcess(IN PKPROCESS NewProcess, if (NewProcess->LdtDescriptor.LimitLow != OldProcess->LdtDescriptor.LimitLow) { /* Not handled yet */ - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return; } diff --git a/reactos/ntoskrnl/ke/i386/traphdlr.c b/reactos/ntoskrnl/ke/i386/traphdlr.c index 2bd9a46d998..e54deab2613 100644 --- a/reactos/ntoskrnl/ke/i386/traphdlr.c +++ b/reactos/ntoskrnl/ke/i386/traphdlr.c @@ -662,9 +662,7 @@ KiTrap06Handler(IN PKTRAP_FRAME TrapFrame) if (!VdmDispatchBop(TrapFrame)) { /* Should only happen in VDM mode */ - UNIMPLEMENTED; - ASSERT(FALSE); - while (TRUE); + UNIMPLEMENTED_FATAL(); } /* Bring IRQL back */ @@ -735,9 +733,7 @@ KiTrap07Handler(IN PKTRAP_FRAME TrapFrame) if (SaveArea->Cr0NpxState & CR0_EM) { /* Not implemented */ - UNIMPLEMENTED; - ASSERT(FALSE); - while (TRUE); + UNIMPLEMENTED_FATAL(); } /* Save CR0 and check NPX state */ @@ -922,9 +918,7 @@ KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame) if (__builtin_expect(Ki386HandleOpcodeV86(TrapFrame) == 0xFF, 0)) { /* Should only happen in VDM mode */ - UNIMPLEMENTED; - ASSERT(FALSE); - while (TRUE); + UNIMPLEMENTED_FATAL(); } /* Bring IRQL back */ @@ -1079,9 +1073,7 @@ KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame) ((PVOID)TrapFrame->Eip < (PVOID)KiTrap0DHandler)) { /* Not implemented */ - UNIMPLEMENTED; - ASSERT(FALSE); - while (TRUE); + UNIMPLEMENTED_FATAL(); } /* @@ -1136,9 +1128,7 @@ KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame) else { /* Otherwise, this is another kind of IRET fault */ - UNIMPLEMENTED; - ASSERT(FALSE); - while (TRUE); + UNIMPLEMENTED_FATAL(); } } @@ -1195,9 +1185,7 @@ KiTrap0EHandler(IN PKTRAP_FRAME TrapFrame) FIELD_OFFSET(KTRAP_FRAME, EFlags)) { /* The stack is somewhere in between frames, we need to fix it */ - UNIMPLEMENTED; - ASSERT(FALSE); - while (TRUE); + UNIMPLEMENTED_FATAL(); } } @@ -1261,9 +1249,7 @@ KiTrap0EHandler(IN PKTRAP_FRAME TrapFrame) (TrapFrame->Eip == (ULONG_PTR)ReadBatch)) { /* Not yet implemented */ - UNIMPLEMENTED; - ASSERT(FALSE); - while (TRUE); + UNIMPLEMENTED_FATAL(); } #endif /* Check for VDM trap */ @@ -1445,16 +1431,14 @@ VOID FASTCALL KiGetTickCountHandler(IN PKTRAP_FRAME TrapFrame) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } VOID FASTCALL KiCallbackReturnHandler(IN PKTRAP_FRAME TrapFrame) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } DECLSPEC_NORETURN @@ -1624,9 +1608,7 @@ KiSystemCall(IN PKTRAP_FRAME TrapFrame, if (__builtin_expect((Arguments < (PVOID)MmUserProbeAddress) && !(KiUserTrap(TrapFrame)), 0)) { /* Access violation */ - UNIMPLEMENTED; - ASSERT(FALSE); - while (TRUE); + UNIMPLEMENTED_FATAL(); } /* Call pre-service debug hook */ @@ -1690,9 +1672,7 @@ NTAPI Kei386EoiHelper(VOID) { /* We should never see this call happening */ - DPRINT1("Mismatched NT/HAL version"); - ASSERT(FALSE); - while (TRUE); + ERROR_FATAL("Mismatched NT/HAL version"); } /* EOF */ diff --git a/reactos/ntoskrnl/mm/arm/stubs.c b/reactos/ntoskrnl/mm/arm/stubs.c index 6aab43f7761..b494bc97938 100644 --- a/reactos/ntoskrnl/mm/arm/stubs.c +++ b/reactos/ntoskrnl/mm/arm/stubs.c @@ -374,8 +374,7 @@ Mmi386ReleaseMmInfo(IN PEPROCESS Process) // // FIXME-USER: Need to delete address space // - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_NOT_IMPLEMENTED; } diff --git a/reactos/ntoskrnl/po/povolume.c b/reactos/ntoskrnl/po/povolume.c index 13da03a43f2..3ef3918313c 100644 --- a/reactos/ntoskrnl/po/povolume.c +++ b/reactos/ntoskrnl/po/povolume.c @@ -299,10 +299,7 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown) if (!(FlushPolicy & 2)) { /* ReactOS only implements this routine for shutdown, which requires it */ - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); - KeReleaseGuardedMutex(&PopVolumeLock); - return; + UNIMPLEMENTED_DBGBREAK(); } /* Check if there were no volumes at all */ From 15eb0fd332894d6914919c12e46ae8592368ddae Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Mon, 7 Jan 2013 22:40:52 +0000 Subject: [PATCH 84/96] [SAL] Try to fix MSVC analyze svn path=/trunk/; revision=58139 --- reactos/include/psdk/sal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/include/psdk/sal.h b/reactos/include/psdk/sal.h index 9efc915a2bc..52f00495cf6 100644 --- a/reactos/include/psdk/sal.h +++ b/reactos/include/psdk/sal.h @@ -941,7 +941,7 @@ enum __SAL_YesNo {_SAL_notpresent, _SAL_no, _SAL_maybe, _SAL_yes, _SAL_default}; //#define _Pre_readable_byte_size_(size) #define _Pre_readable_size_(size) //#define _Pre_readonly_ -//#define _Pre_satisfies_(cond) +#define _Pre_satisfies_(cond) //#define _Pre_valid_ //#define _Pre_valid_bytecap_(size) //#define _Pre_valid_bytecap_c_(size) From 65de4100f6233f56502150f4beaaf15dc4b40215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 8 Jan 2013 00:35:26 +0000 Subject: [PATCH 85/96] Precision: r58138 was part 2a/3 of my changes. [KERNEL32-RAMDISK] Continue to use the new debugging macros introduced in r58132. Part 2b/3 svn path=/trunk/; revision=58140 --- reactos/dll/win32/kernel32/client/path.c | 4 +- reactos/dll/win32/kernel32/client/thread.c | 33 +++--- .../drivers/storage/class/ramdisk/ramdisk.c | 107 ++++++------------ 3 files changed, 49 insertions(+), 95 deletions(-) diff --git a/reactos/dll/win32/kernel32/client/path.c b/reactos/dll/win32/kernel32/client/path.c index 2229d3ed835..2c92cce32b1 100644 --- a/reactos/dll/win32/kernel32/client/path.c +++ b/reactos/dll/win32/kernel32/client/path.c @@ -236,9 +236,7 @@ BasepComputeProcessPath(IN PBASE_SEARCH_PATH_TYPE PathOrder, if (NtCurrentTeb()->NtTib.SubSystemTib) { /* This means someone added RTL_PERTHREAD_CURDIR */ - UNIMPLEMENTED; - ASSERT(FALSE); - // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } /* We do not. Do we have the LDR_ENTRY for the executable? */ diff --git a/reactos/dll/win32/kernel32/client/thread.c b/reactos/dll/win32/kernel32/client/thread.c index c9d7f173978..56da4337949 100644 --- a/reactos/dll/win32/kernel32/client/thread.c +++ b/reactos/dll/win32/kernel32/client/thread.c @@ -238,10 +238,9 @@ CreateRemoteThread(IN HANDLE hProcess, if (!NT_SUCCESS(Status)) { /* Fail */ - DbgPrint("SXS: %s - Failing thread create because " - "NtQueryInformationThread() failed with status %08lx\n", - __FUNCTION__, Status); - ASSERT(FALSE); // while (TRUE); + ERROR_DBGBREAK("SXS: %s - Failing thread create because " + "NtQueryInformationThread() failed with status %08lx\n", + __FUNCTION__, Status); return NULL; } @@ -250,10 +249,9 @@ CreateRemoteThread(IN HANDLE hProcess, if (!NT_SUCCESS(Status)) { /* Fail */ - DbgPrint("SXS: %s - Failing thread create because " - "RtlAllocateActivationContextStack() failed with status %08lx\n", - __FUNCTION__, Status); - ASSERT(FALSE); // while (TRUE); + ERROR_DBGBREAK("SXS: %s - Failing thread create because " + "RtlAllocateActivationContextStack() failed with status %08lx\n", + __FUNCTION__, Status); return NULL; } @@ -273,10 +271,9 @@ CreateRemoteThread(IN HANDLE hProcess, if (!NT_SUCCESS(Status)) { /* Fail */ - DbgPrint("SXS: %s - Failing thread create because " - "RtlQueryInformationActivationContext() failed with status %08lx\n", - __FUNCTION__, Status); - ASSERT(FALSE); // while (TRUE); + ERROR_DBGBREAK("SXS: %s - Failing thread create because " + "RtlQueryInformationActivationContext() failed with status %08lx\n", + __FUNCTION__, Status); return NULL; } @@ -291,10 +288,9 @@ CreateRemoteThread(IN HANDLE hProcess, if (!NT_SUCCESS(Status)) { /* Fail */ - DbgPrint("SXS: %s - Failing thread create because " - "RtlActivateActivationContextEx() failed with status %08lx\n", - __FUNCTION__, Status); - ASSERT(FALSE); // while (TRUE); + ERROR_DBGBREAK("SXS: %s - Failing thread create because " + "RtlActivateActivationContextEx() failed with status %08lx\n", + __FUNCTION__, Status); return NULL; } } @@ -370,9 +366,8 @@ ExitThread(IN DWORD uExitCode) NtTerminateThread(NULL, uExitCode); /* We should never reach this place */ - DPRINT1("It should not happen\n"); - ASSERT(FALSE); - while (TRUE); // 'noreturn' function. + ERROR_FATAL("It should not happen\n"); + while (TRUE); /* 'noreturn' function */ } /* diff --git a/reactos/drivers/storage/class/ramdisk/ramdisk.c b/reactos/drivers/storage/class/ramdisk/ramdisk.c index 06f6461b2a8..7b7097285eb 100644 --- a/reactos/drivers/storage/class/ramdisk/ramdisk.c +++ b/reactos/drivers/storage/class/ramdisk/ramdisk.c @@ -772,8 +772,7 @@ RamdiskCreateDiskDevice(IN PRAMDISK_BUS_EXTENSION DeviceExtension, } FailCreate: - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_SUCCESS; } @@ -1066,9 +1065,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject, case IOCTL_DISK_GET_DRIVE_LAYOUT: - DPRINT1("Get drive layout request\n"); - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("Get drive layout request\n"); break; case IOCTL_DISK_GET_PARTITION_INFO: @@ -1078,9 +1075,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject, default: - DPRINT1("Invalid request\n"); - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("Invalid request\n"); break; } @@ -1095,9 +1090,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject, case IRP_MJ_READ: case IRP_MJ_WRITE: - DPRINT1("Read/Write request\n"); - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("Read/Write request\n"); break; // @@ -1105,9 +1098,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject, // case IRP_MJ_INTERNAL_DEVICE_CONTROL: - DPRINT1("SCSI request\n"); - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("SCSI request\n"); break; // @@ -1115,9 +1106,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject, // case IRP_MJ_FLUSH_BUFFERS: - DPRINT1("Flush request\n"); - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("Flush request\n"); break; // @@ -1125,9 +1114,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject, // default: - DPRINT1("Invalid request: %lx\n", IoStackLocation->MajorFunction); - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("Invalid request: %lx\n", IoStackLocation->MajorFunction); break; } @@ -1481,7 +1468,7 @@ RamdiskDeviceControl(IN PDEVICE_OBJECT DeviceObject, // // We don't handle anything else yet // - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } } else @@ -1496,8 +1483,7 @@ RamdiskDeviceControl(IN PDEVICE_OBJECT DeviceObject, case IOCTL_STORAGE_CHECK_VERIFY2: case IOCTL_CDROM_CHECK_VERIFY: - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); break; case IOCTL_STORAGE_GET_MEDIA_TYPES: @@ -1662,68 +1648,57 @@ RamdiskDeviceControl(IN PDEVICE_OBJECT DeviceObject, case IOCTL_DISK_GET_DRIVE_LAYOUT: - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); break; case IOCTL_DISK_GET_LENGTH_INFO: - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); break; case IOCTL_DISK_IS_WRITABLE: - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); break; case IOCTL_SCSI_MINIPORT: - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); break; case IOCTL_STORAGE_QUERY_PROPERTY: - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); break; case IOCTL_MOUNTDEV_QUERY_UNIQUE_ID: - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); break; case IOCTL_MOUNTDEV_QUERY_STABLE_GUID: - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); break; case IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS: - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); break; case IOCTL_VOLUME_SET_GPT_ATTRIBUTES: - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); break; case IOCTL_VOLUME_GET_GPT_ATTRIBUTES: - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); break; case IOCTL_VOLUME_OFFLINE: - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); break; default: @@ -1791,8 +1766,7 @@ RamdiskQueryDeviceRelations(IN DEVICE_RELATION_TYPE Type, // // FIXME: TODO // - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); } // @@ -1978,8 +1952,7 @@ NTAPI RamdiskDeleteDiskDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { - UNIMPLEMENTED; - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK(); return STATUS_SUCCESS; } @@ -2146,38 +2119,32 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject, { case IRP_MN_START_DEVICE: - DPRINT1("PnP IRP: %lx\n", Minor); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor); break; case IRP_MN_QUERY_STOP_DEVICE: - DPRINT1("PnP IRP: %lx\n", Minor); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor); break; case IRP_MN_CANCEL_STOP_DEVICE: - DPRINT1("PnP IRP: %lx\n", Minor); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor); break; case IRP_MN_STOP_DEVICE: - DPRINT1("PnP IRP: %lx\n", Minor); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor); break; case IRP_MN_QUERY_REMOVE_DEVICE: - DPRINT1("PnP IRP: %lx\n", Minor); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor); break; case IRP_MN_CANCEL_REMOVE_DEVICE: - DPRINT1("PnP IRP: %lx\n", Minor); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor); break; case IRP_MN_REMOVE_DEVICE: @@ -2211,8 +2178,7 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject, case IRP_MN_SURPRISE_REMOVAL: - DPRINT1("PnP IRP: %lx\n", Minor); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor); break; case IRP_MN_QUERY_ID: @@ -2222,8 +2188,7 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject, // if (DeviceExtension->Type == RamdiskDrive) { - DPRINT1("PnP IRP: %lx\n", Minor); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor); } break; @@ -2234,15 +2199,13 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject, // if (DeviceExtension->Type == RamdiskDrive) { - DPRINT1("PnP IRP: %lx\n", Minor); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor); } break; case IRP_MN_EJECT: - DPRINT1("PnP IRP: %lx\n", Minor); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor); break; case IRP_MN_QUERY_DEVICE_TEXT: @@ -2252,8 +2215,7 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject, // if (DeviceExtension->Type == RamdiskDrive) { - DPRINT1("PnP IRP: %lx\n", Minor); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor); } break; @@ -2276,8 +2238,7 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject, // if (DeviceExtension->Type == RamdiskDrive) { - DPRINT1("PnP IRP: %lx\n", Minor); - ASSERT(FALSE); // while (TRUE); + UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor); } break; From 8ca80bb2cb8b1610021aa337d825ce0bd1f60eec Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Tue, 8 Jan 2013 20:33:08 +0000 Subject: [PATCH 86/96] * Visual Studio IDE support bringup. We can now even compile bootcd/livecd...etc straight from the IDE. * For anyone who wants to work only on a certain module (or a set of modules), you can add "project(module)" to the related CMake file. This will generate a solution that contains all the required dependencies needed to compile only that module, without having to open a huge solution with 900+ projects. * We'll create a wiki page to explain how to use this in detail. * Dedicated to all VS users. Have fun ;) svn path=/trunk/; revision=58141 --- reactos/boot/freeldr/freeldr/CMakeLists.txt | 34 ++++++------ reactos/cmake/CMakeMacros.cmake | 2 +- reactos/cmake/gcc.cmake | 5 ++ reactos/cmake/msvc.cmake | 55 ++++++++++++++----- reactos/dll/ntdll/CMakeLists.txt | 11 ++-- reactos/dll/win32/kernel32/CMakeLists.txt | 7 +-- reactos/dll/win32/oleaut32/CMakeLists.txt | 4 +- reactos/dll/win32/rpcrt4/CMakeLists.txt | 9 ++-- reactos/drivers/CMakeLists.txt | 2 + reactos/drivers/ksfilter/ks/CMakeLists.txt | 4 +- reactos/hal/CMakeLists.txt | 1 + reactos/hal/halx86/CMakeLists.txt | 46 +++++++++------- reactos/lib/pseh/CMakeLists.txt | 11 ++-- reactos/lib/rtl/CMakeLists.txt | 26 +++++---- reactos/lib/sdk/crt/CMakeLists.txt | 10 ++-- reactos/lib/sdk/crt/crt.cmake | 49 +++++++++-------- reactos/lib/sdk/crt/libcntpr.cmake | 24 +++++---- reactos/lib/sdk/crt/msvcrtex.cmake | 19 ++++--- reactos/lib/sdk/crt/oldnames.cmake | 4 +- reactos/ntoskrnl/CMakeLists.txt | 58 +++++++++++++-------- reactos/win32ss/CMakeLists.txt | 14 ++--- 21 files changed, 243 insertions(+), 152 deletions(-) diff --git a/reactos/boot/freeldr/freeldr/CMakeLists.txt b/reactos/boot/freeldr/freeldr/CMakeLists.txt index 8f48a344b0e..cc65e0e6330 100644 --- a/reactos/boot/freeldr/freeldr/CMakeLists.txt +++ b/reactos/boot/freeldr/freeldr/CMakeLists.txt @@ -80,11 +80,16 @@ list(APPEND FREELDR_COMMON_SOURCE windows/wlregistry.c) if(ARCH STREQUAL "i386") + list(APPEND FREELDR_COMMON_ASM_SOURCE + arch/i386/entry.S + arch/i386/i386pnp.S + arch/i386/i386trap.S + arch/i386/linux.S + arch/i386/mb.S) list(APPEND FREELDR_COMMON_SOURCE arch/i386/archmach.c arch/i386/custom.c arch/i386/drivemap.c - arch/i386/entry.S arch/i386/halstub.c arch/i386/hardware.c arch/i386/hwacpi.c @@ -94,13 +99,9 @@ if(ARCH STREQUAL "i386") arch/i386/i386bug.c arch/i386/i386disk.c arch/i386/i386idt.c - arch/i386/i386pnp.S arch/i386/i386rtl.c - arch/i386/i386trap.S arch/i386/i386vid.c - arch/i386/linux.S arch/i386/machpc.c - arch/i386/mb.S arch/i386/miscboot.c arch/i386/ntoskrnl.c arch/i386/pccons.c @@ -121,14 +122,14 @@ if(ARCH STREQUAL "i386") windows/headless.c disk/scsiport.c) if(NOT MSVC) - list(APPEND FREELDR_COMMON_SOURCE - arch/i386/drvmap.S) + list(APPEND FREELDR_COMMON_SOURCE arch/i386/drvmap.S) endif() elseif(ARCH STREQUAL "amd64") - list(APPEND FREELDR_COMMON_SOURCE + list(APPEND FREELDR_COMMON_ASM_SOURCE arch/amd64/entry.S arch/amd64/int386.S - arch/amd64/pnpbios.S + arch/amd64/pnpbios.S) + list(APPEND FREELDR_COMMON_SOURCE arch/i386/hardware.c arch/i386/hwacpi.c arch/i386/hwapm.c @@ -150,9 +151,10 @@ else() endif() if((NOT MSVC) AND (CMAKE_VERSION VERSION_GREATER 2.8.7)) - add_library(freeldr_common OBJECT ${FREELDR_COMMON_SOURCE}) + add_library(freeldr_common OBJECT ${FREELDR_COMMON_SOURCE} ${FREELDR_COMMON_ASM_SOURCE}) else() - add_library(freeldr_common ${FREELDR_COMMON_SOURCE}) + add_asm_files(freeldr_common_asm ${FREELDR_COMMON_ASM_SOURCE}) + add_library(freeldr_common ${FREELDR_COMMON_SOURCE} ${freeldr_common_asm}) endif() add_dependencies(freeldr_common bugcodes) @@ -185,8 +187,8 @@ if(NOT MSVC) add_target_link_flags(freeldr_pe "-Wl,--strip-all,--exclude-all-symbols,--file-alignment,0x1000,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lds") add_target_link_flags(freeldr_pe_dbg "-Wl,--exclude-all-symbols,--file-alignment,0x1000,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lds") else() - add_target_link_flags(freeldr_pe "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text /SUBSYSTEM:BOOT_APPLICATION") - add_target_link_flags(freeldr_pe_dbg "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text /SUBSYSTEM:BOOT_APPLICATION") + add_target_link_flags(freeldr_pe "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text ") + add_target_link_flags(freeldr_pe_dbg "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text") endif() set_image_base(freeldr_pe 0x10000) @@ -202,7 +204,7 @@ if(ARCH STREQUAL "i386") target_link_libraries(freeldr_pe_dbg mini_hal) endif() -if(MSVC OR NOT CMAKE_VERSION VERSION_GREATER 2.8.7) +if(MSVC OR (NOT CMAKE_VERSION VERSION_GREATER 2.8.7)) target_link_libraries(freeldr_pe freeldr_common) target_link_libraries(freeldr_pe_dbg freeldr_common) endif() @@ -249,8 +251,8 @@ if(NOT MSVC) add_target_link_flags(setupldr_pe "-Wl,--strip-all,--exclude-all-symbols,--file-alignment,0x1000,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lds") add_target_link_flags(setupldr_pe_dbg "-Wl,--exclude-all-symbols,--file-alignment,0x1000,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lds") else() - add_target_link_flags(setupldr_pe "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text /SUBSYSTEM:BOOT_APPLICATION") - add_target_link_flags(setupldr_pe_dbg "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text /SUBSYSTEM:BOOT_APPLICATION") + add_target_link_flags(setupldr_pe "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text") + add_target_link_flags(setupldr_pe_dbg "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text") endif() add_target_compile_definitions(setupldr_pe FREELDR_REACTOS_SETUP) diff --git a/reactos/cmake/CMakeMacros.cmake b/reactos/cmake/CMakeMacros.cmake index 34aeebd6191..ba7f4a73418 100644 --- a/reactos/cmake/CMakeMacros.cmake +++ b/reactos/cmake/CMakeMacros.cmake @@ -134,7 +134,7 @@ function(add_cd_file) #get file if we need to if(NOT _CD_FILE) - get_target_property(_CD_FILE ${_CD_TARGET} LOCATION) + get_target_property(_CD_FILE ${_CD_TARGET} LOCATION_${CMAKE_BUILD_TYPE}) endif() #do we add it to all CDs? diff --git a/reactos/cmake/gcc.cmake b/reactos/cmake/gcc.cmake index ac14dfaf25c..0f35c17273e 100644 --- a/reactos/cmake/gcc.cmake +++ b/reactos/cmake/gcc.cmake @@ -368,3 +368,8 @@ endfunction() function(allow_warnings __module) add_target_compile_flags(${__module} "-Wno-error") endfunction() + +macro(add_asm_files _target) + list(APPEND ${_target} ${ARGN}) +endmacro() + diff --git a/reactos/cmake/msvc.cmake b/reactos/cmake/msvc.cmake index 952403ed6b5..b01267d3689 100644 --- a/reactos/cmake/msvc.cmake +++ b/reactos/cmake/msvc.cmake @@ -43,23 +43,21 @@ elseif(CMAKE_BUILD_TYPE STREQUAL "Release") add_compile_flags("/Ob2 /D NDEBUG") endif() -if(${_MACHINE_ARCH_FLAG} MATCHES X86) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO /NODEFAULTLIB /RELEASE") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO /NODEFAULTLIB /RELEASE") - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO /NODEFAULTLIB /RELEASE") +if(MSVC_IDE) + add_compile_flags("/MP") endif() -set(CMAKE_RC_COMPILE_OBJECT " ${I18N_DEFS} /fo ") +if(${_MACHINE_ARCH_FLAG} MATCHES X86) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO /INCREMENTAL:NO /SAFESEH:NO /NODEFAULTLIB /RELEASE") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /MANIFEST:NO /INCREMENTAL:NO /SAFESEH:NO /NODEFAULTLIB /RELEASE") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /MANIFEST:NO /INCREMENTAL:NO /SAFESEH:NO /NODEFAULTLIB /RELEASE") +endif() -if(MSVC_IDE) - # Asm source files are not supported in VS generators yet. As a result, isn't recognized. - # We may temporarily use just the global defines, but this is not a solution as some modules (minihal for example) apply additional definitions to source files, so we get an incorrect build of such targets. - get_directory_property(definitions DEFINITIONS) - set(CMAKE_ASM_COMPILE_OBJECT - "cl /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm ${definitions} /D__ASM__ /D_USE_ML /EP /c > .tmp" - " /nologo /Cp /Fo /c /Ta .tmp") +if(MSVC_IDE AND (CMAKE_VERSION MATCHES "ReactOS")) + # for VS builds we'll only have en-US in resource files + add_definitions(/DLANGUAGE_EN_US) else() - # NMake Makefiles + set(CMAKE_RC_COMPILE_OBJECT " ${I18N_DEFS} /fo ") set(CMAKE_ASM_COMPILE_OBJECT "cl /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm /D__ASM__ /D_USE_ML /EP /c > .tmp" " /nologo /Cp /Fo /c /Ta .tmp") @@ -102,7 +100,7 @@ function(set_entrypoint _module _entrypoint) endfunction() function(set_subsystem MODULE SUBSYSTEM) - add_target_link_flags(${MODULE} "/subsystem:${SUBSYSTEM}") + add_target_link_flags(${MODULE} "/SUBSYSTEM:${SUBSYSTEM}") endfunction() function(set_image_base MODULE IMAGE_BASE) @@ -243,3 +241,32 @@ endfunction() function(allow_warnings __module) endfunction() + +macro(add_asm_files _target) + if(MSVC_IDE AND (CMAKE_VERSION MATCHES "ReactOS")) + get_defines(_directory_defines) + get_includes(_directory_includes) + get_directory_property(_defines COMPILE_DEFINITIONS) + foreach(_source_file ${ARGN}) + get_filename_component(_source_file_base_name ${_source_file} NAME_WE) + set(_preprocessed_asm_file ${CMAKE_CURRENT_BINARY_DIR}/asm/${_source_file_base_name}_${_target}.tmp) + set(_object_file ${CMAKE_CURRENT_BINARY_DIR}/asm/${_source_file_base_name}_${_target}.obj) + set(_source_file_full_path ${CMAKE_CURRENT_SOURCE_DIR}/${_source_file}) + get_source_file_property(_defines_semicolon_list ${_source_file_full_path} COMPILE_DEFINITIONS) + unset(_source_file_defines) + foreach(_define ${_defines_semicolon_list}) + if(NOT ${_define} STREQUAL "NOTFOUND") + list(APPEND _source_file_defines -D${_define}) + endif() + endforeach() + add_custom_command( + OUTPUT ${_preprocessed_asm_file} ${_object_file} + COMMAND cl /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm ${_directory_includes} ${_source_file_defines} ${_directory_defines} /D__ASM__ /D_USE_ML /EP /c ${_source_file_full_path} > ${_preprocessed_asm_file} && ${CMAKE_ASM_COMPILER} /nologo /Cp /Fo${_object_file} /c /Ta ${_preprocessed_asm_file} + DEPENDS ${_source_file_full_path}) + set_source_files_properties(${_object_file} PROPERTIES EXTERNAL_OBJECT 1) + list(APPEND ${_target} ${_object_file}) + endforeach() + else() + list(APPEND ${_target} ${ARGN}) + endif() +endmacro() diff --git a/reactos/dll/ntdll/CMakeLists.txt b/reactos/dll/ntdll/CMakeLists.txt index 1a9047962b5..7ad854796d1 100644 --- a/reactos/dll/ntdll/CMakeLists.txt +++ b/reactos/dll/ntdll/CMakeLists.txt @@ -26,16 +26,17 @@ list(APPEND SOURCE ${CMAKE_CURRENT_BINARY_DIR}/ntdll.def) if(ARCH STREQUAL "i386") - list(APPEND SOURCE dispatch/i386/dispatch.S) + list(APPEND ASM_SOURCE dispatch/i386/dispatch.S) elseif(ARCH STREQUAL "amd64") - list(APPEND SOURCE dispatch/amd64/dispatch.S) + list(APPEND ASM_SOURCE dispatch/amd64/dispatch.S) elseif(ARCH STREQUAL "arm") - list(APPEND SOURCE dispatch/arm/stubs_asm.s) + list(APPEND ASM_SOURCE dispatch/arm/stubs_asm.s) else() list(APPEND SOURCE dispatch/dispatch.c) -endif(ARCH STREQUAL "i386") +endif() -add_library(ntdll SHARED ${SOURCE}) +add_asm_files(ntdll_asm ${ASM_SOURCE}) +add_library(ntdll SHARED ${SOURCE} ${ntdll_asm}) set_module_type(ntdll win32dll ENTRYPOINT 0) diff --git a/reactos/dll/win32/kernel32/CMakeLists.txt b/reactos/dll/win32/kernel32/CMakeLists.txt index efc98c9dd8c..72a1c34ce8c 100644 --- a/reactos/dll/win32/kernel32/CMakeLists.txt +++ b/reactos/dll/win32/kernel32/CMakeLists.txt @@ -76,16 +76,17 @@ list(APPEND SOURCE ${CMAKE_CURRENT_BINARY_DIR}/kernel32.def) if(ARCH STREQUAL "i386") - list(APPEND SOURCE + list(APPEND ASM_SOURCE client/i386/fiber.S client/i386/thread.S) elseif(ARCH STREQUAL "amd64") - list(APPEND SOURCE + list(APPEND ASM_SOURCE client/amd64/fiber.S client/amd64/thread.S) endif() -add_library(kernel32 SHARED ${SOURCE}) +add_asm_files(kernel32_asm ${ASM_SOURCE}) +add_library(kernel32 SHARED ${SOURCE} ${kernel32_asm}) set_module_type(kernel32 win32dll ENTRYPOINT DllMain 12) target_link_libraries(kernel32 wine chkstk ${PSEH_LIB}) add_importlibs(kernel32 ntdll) diff --git a/reactos/dll/win32/oleaut32/CMakeLists.txt b/reactos/dll/win32/oleaut32/CMakeLists.txt index 5c3621c6c35..fa836d0ac99 100644 --- a/reactos/dll/win32/oleaut32/CMakeLists.txt +++ b/reactos/dll/win32/oleaut32/CMakeLists.txt @@ -42,10 +42,10 @@ list(APPEND SOURCE ${CMAKE_CURRENT_BINARY_DIR}/oleaut32.def) if(MSVC) - list(APPEND SOURCE msvc.S) + add_asm_files(oleaut32_asm msvc.S) endif() -add_library(oleaut32 SHARED ${SOURCE}) +add_library(oleaut32 SHARED ${SOURCE} ${oleaut32_asm}) add_idl_headers(oleaut32_idlheader oleaut32_oaidl.idl) add_dependencies(oleaut32 oleaut32_idlheader) set_module_type(oleaut32 win32dll) diff --git a/reactos/dll/win32/rpcrt4/CMakeLists.txt b/reactos/dll/win32/rpcrt4/CMakeLists.txt index a6b142a1b50..ce6108a424d 100644 --- a/reactos/dll/win32/rpcrt4/CMakeLists.txt +++ b/reactos/dll/win32/rpcrt4/CMakeLists.txt @@ -27,10 +27,6 @@ list(APPEND SOURCE ${CMAKE_CURRENT_BINARY_DIR}/rpcrt4_stubs.c ${CMAKE_CURRENT_BINARY_DIR}/rpcrt4.def) -if(MSVC) - list(APPEND SOURCE msvc.S) -endif() - remove_definitions(-D_WIN32_WINNT=0x502) add_definitions(-D_WIN32_WINNT=0x600) @@ -42,8 +38,13 @@ add_definitions( include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) +if(MSVC) + add_asm_files(rpcrt4_asm msvc.S) +endif() + add_library(rpcrt4 SHARED ${SOURCE} + ${rpcrt4_asm} rpcrt4.rc) set_module_type(rpcrt4 win32dll) diff --git a/reactos/drivers/CMakeLists.txt b/reactos/drivers/CMakeLists.txt index 7a672a385c5..fcfaa9396d8 100644 --- a/reactos/drivers/CMakeLists.txt +++ b/reactos/drivers/CMakeLists.txt @@ -1,4 +1,6 @@ +PROJECT(Drivers) + add_subdirectory(base) add_subdirectory(battery) add_subdirectory(bluetooth) diff --git a/reactos/drivers/ksfilter/ks/CMakeLists.txt b/reactos/drivers/ksfilter/ks/CMakeLists.txt index fdd2fa40d27..18d74c6013a 100644 --- a/reactos/drivers/ksfilter/ks/CMakeLists.txt +++ b/reactos/drivers/ksfilter/ks/CMakeLists.txt @@ -32,10 +32,10 @@ list(APPEND SOURCE ${CMAKE_CURRENT_BINARY_DIR}/ks.def) if(MSVC) - list(APPEND SOURCE msvc.S) + add_asm_files(ks_asm msvc.S) endif() -add_library(ks SHARED ${SOURCE}) +add_library(ks SHARED ${SOURCE} ${ks_asm}) set_target_properties(ks PROPERTIES SUFFIX ".sys") diff --git a/reactos/hal/CMakeLists.txt b/reactos/hal/CMakeLists.txt index e767918faa5..965a08d1376 100644 --- a/reactos/hal/CMakeLists.txt +++ b/reactos/hal/CMakeLists.txt @@ -1,4 +1,5 @@ +project(HAL) if((ARCH STREQUAL "i386") OR (ARCH STREQUAL "amd64")) add_subdirectory(halx86) elseif(ARCH STREQUAL "arm") diff --git a/reactos/hal/halx86/CMakeLists.txt b/reactos/hal/halx86/CMakeLists.txt index 4684c89859f..7fa5cf55f4c 100644 --- a/reactos/hal/halx86/CMakeLists.txt +++ b/reactos/hal/halx86/CMakeLists.txt @@ -26,7 +26,7 @@ if(ARCH STREQUAL "i386") generic/portio.c) endif() -if(CMAKE_VERSION VERSION_GREATER 2.8.7) +if(NOT MSVC AND (CMAKE_VERSION VERSION_GREATER 2.8.7)) add_library(lib_hal_generic OBJECT ${HAL_GENERIC_SOURCE}) else() add_library(lib_hal_generic ${HAL_GENERIC_SOURCE}) @@ -63,7 +63,7 @@ if(ARCH STREQUAL "i386") legacy/halpnpdd.c legacy/halpcat.c) - if(CMAKE_VERSION VERSION_GREATER 2.8.7) + if(NOT MSVC AND (CMAKE_VERSION VERSION_GREATER 2.8.7)) add_library(lib_hal_legacy OBJECT ${HAL_LEGACY_SOURCE}) else() add_library(lib_hal_legacy ${HAL_LEGACY_SOURCE}) @@ -71,7 +71,7 @@ if(ARCH STREQUAL "i386") #add_pch(lib_hal_legacy include/hal.h) - if(NOT CMAKE_VERSION VERSION_GREATER 2.8.7) + if(MSVC OR (NOT CMAKE_VERSION VERSION_GREATER 2.8.7)) target_link_libraries(lib_hal_legacy lib_hal_generic) endif() @@ -83,14 +83,14 @@ list(APPEND HAL_ACPI_SOURCE acpi/busemul.c legacy/bus/pcibus.c) -if(CMAKE_VERSION VERSION_GREATER 2.8.7) +if(NOT MSVC AND (CMAKE_VERSION VERSION_GREATER 2.8.7)) add_library(lib_hal_acpi OBJECT ${HAL_ACPI_SOURCE}) else() add_library(lib_hal_acpi ${HAL_ACPI_SOURCE}) endif() #add_pch(lib_hal_acpi include/hal.h) -if(NOT CMAKE_VERSION VERSION_GREATER 2.8.7) +if(MSVC OR (NOT CMAKE_VERSION VERSION_GREATER 2.8.7)) target_link_libraries(lib_hal_acpi lib_hal_generic) endif() @@ -98,30 +98,33 @@ list(APPEND HAL_UP_SOURCE generic/spinlock.c up/processor.c) -if(CMAKE_VERSION VERSION_GREATER 2.8.7) +if(NOT MSVC AND (CMAKE_VERSION VERSION_GREATER 2.8.7)) add_library(lib_hal_up OBJECT ${HAL_UP_SOURCE}) endif() +list(APPEND HAL_APIC_ASM_SOURCE + apic/apictrap.S + apic/tsccal.S) + list(APPEND HAL_APIC_SOURCE apic/apic.c apic/apictimer.c - apic/apictrap.S apic/halinit_apic.c apic/rtctimer.c - apic/tsc.c - apic/tsccal.S) + apic/tsc.c) if(ARCH STREQUAL "i386") + list(APPEND HAL_PIC_ASM_SOURCE + generic/systimer.S + generic/trap.S) list(APPEND HAL_PIC_SOURCE generic/profil.c generic/timer.c - generic/systimer.S - generic/trap.S up/halinit_up.c up/pic.c) - if(CMAKE_VERSION VERSION_GREATER 2.8.7) - add_library(lib_hal_pic OBJECT ${HAL_PIC_SOURCE}) + if(NOT MSVC AND (CMAKE_VERSION VERSION_GREATER 2.8.7)) + add_library(lib_hal_pic OBJECT ${HAL_PIC_SOURCE} ${HAL_PIC_ASM_SOURCE}) endif() list(APPEND MINI_HAL_SOURCE @@ -153,7 +156,7 @@ if(ARCH STREQUAL "i386") spec2def(hal.dll ../hal.spec ADD_IMPORTLIB) # hal - if(CMAKE_VERSION VERSION_GREATER 2.8.7) + if(NOT MSVC AND (CMAKE_VERSION VERSION_GREATER 2.8.7)) add_library(hal SHARED $ $ @@ -163,15 +166,18 @@ if(ARCH STREQUAL "i386") up/halup.rc ${CMAKE_CURRENT_BINARY_DIR}/hal.def) else() + add_asm_files(hal_asm + ${HAL_PIC_ASM_SOURCE} + generic/v86.S) add_library(hal SHARED ${HAL_UP_SOURCE} ${HAL_PIC_SOURCE} - generic/v86.S + ${hal_asm} up/halup.rc ${CMAKE_CURRENT_BINARY_DIR}/hal.def) endif() - if(NOT CMAKE_VERSION VERSION_GREATER 2.8.7) + if(MSVC OR (NOT CMAKE_VERSION VERSION_GREATER 2.8.7)) target_link_libraries(hal lib_hal_generic lib_hal_legacy) endif() target_link_libraries(hal libcntpr) @@ -188,7 +194,7 @@ if(ARCH STREQUAL "i386") # hal acpi spec2def(halacpi.dll ../hal.spec) - if(CMAKE_VERSION VERSION_GREATER 2.8.7) + if(NOT MSVC AND (CMAKE_VERSION VERSION_GREATER 2.8.7)) add_library(halacpi SHARED $ $ @@ -198,15 +204,17 @@ if(ARCH STREQUAL "i386") acpi/halacpi.rc ${CMAKE_CURRENT_BINARY_DIR}/halacpi.def) else() + set_source_files_properties(${HAL_PIC_ASM_SOURCE} generic/v86.S PROPERTIES COMPILE_DEFINITIONS "CONFIG_ACPI") + add_asm_files(halacpi_asm ${HAL_PIC_ASM_SOURCE} generic/v86.S) add_library(halacpi SHARED ${HAL_UP_SOURCE} ${HAL_PIC_SOURCE} - generic/v86.S + ${halacpi_asm} acpi/halacpi.rc ${CMAKE_CURRENT_BINARY_DIR}/halacpi.def) endif() - if(NOT CMAKE_VERSION VERSION_GREATER 2.8.7) + if(MSVC OR (NOT CMAKE_VERSION VERSION_GREATER 2.8.7)) target_link_libraries(halacpi lib_hal_generic lib_hal_acpi) endif() target_link_libraries(halacpi libcntpr) diff --git a/reactos/lib/pseh/CMakeLists.txt b/reactos/lib/pseh/CMakeLists.txt index 1e957bf6b3c..d58e089fe99 100644 --- a/reactos/lib/pseh/CMakeLists.txt +++ b/reactos/lib/pseh/CMakeLists.txt @@ -25,18 +25,19 @@ if(NOT MSVC) else() if(ARCH STREQUAL "i386") - list(APPEND SOURCE - dummy.c + list(APPEND ASM_SOURCE i386/seh.s i386/seh_prolog.s) + list(APPEND SOURCE dummy.c) elseif(ARCH STREQUAL "amd64") - list(APPEND SOURCE - dummy.c + list(APPEND ASM_SOURCE amd64/seh.s amd64/seh_prolog.s) + list(APPEND SOURCE dummy.c) endif() - add_library(pseh ${SOURCE}) + add_asm_files(pseh_asm ${ASM_SOURCE}) + add_library(pseh ${SOURCE} ${pseh_asm}) add_dependencies(pseh asm) endif() diff --git a/reactos/lib/rtl/CMakeLists.txt b/reactos/lib/rtl/CMakeLists.txt index 5009360f037..46b17c26309 100644 --- a/reactos/lib/rtl/CMakeLists.txt +++ b/reactos/lib/rtl/CMakeLists.txt @@ -29,7 +29,7 @@ list(APPEND SOURCE handle.c heap.c heapdbg.c - heappage.c + heappage.c image.c interlck.c message.c @@ -65,40 +65,44 @@ list(APPEND SOURCE workitem.c) if(ARCH STREQUAL "i386") - list(APPEND SOURCE + list(APPEND ASM_SOURCE i386/debug_asm.S i386/except_asm.s - i386/except.c i386/interlck.S i386/rtlmem.s i386/rtlswap.S - i386/res_asm.s + i386/res_asm.s) + list(APPEND SOURCE + i386/except.c i386/thread.c) elseif(ARCH STREQUAL "amd64") - list(APPEND SOURCE - byteswap.c + list(APPEND ASM_SOURCE amd64/debug_asm.S amd64/except_asm.S - amd64/slist.S + amd64/slist.S) + list(APPEND SOURCE + byteswap.c amd64/unwind.c amd64/stubs.c mem.c) elseif(ARCH STREQUAL "arm") + list(APPEND ASM_SOURCE arm/debug_asm.S) list(APPEND SOURCE byteswap.c - arm/debug_asm.S mem.c) elseif(ARCH STREQUAL "powerpc") + list(APPEND ASM_SOURCE + powerpc/rtlmem.s + powerpc/rtlswap.s) list(APPEND SOURCE byteswap.c powerpc/debug.c powerpc/except.c powerpc/interlocked.c - powerpc/rtlmem.s - powerpc/rtlswap.s powerpc/thread.c) endif() -add_library(rtl ${SOURCE}) +add_asm_files(rtl_asm ${ASM_SOURCE}) +add_library(rtl ${SOURCE} ${rtl_asm}) add_pch(rtl rtl.h) add_dependencies(rtl psdk asm) diff --git a/reactos/lib/sdk/crt/CMakeLists.txt b/reactos/lib/sdk/crt/CMakeLists.txt index dd4a9d327d3..5df63e0ad96 100644 --- a/reactos/lib/sdk/crt/CMakeLists.txt +++ b/reactos/lib/sdk/crt/CMakeLists.txt @@ -4,20 +4,22 @@ include_directories(include) add_definitions(-D_CRTBLD) if(ARCH STREQUAL "i386") - list(APPEND CHKSTK_SOURCE except/i386/chkstk_asm.s) + list(APPEND CHKSTK_ASM_SOURCE except/i386/chkstk_asm.s) if(NOT MSVC) list(APPEND CHKSTK_SOURCE except/i386/chkstk_ms.s) endif() elseif(ARCH STREQUAL "amd64") - list(APPEND CHKSTK_SOURCE except/amd64/chkstk_asm.s) + list(APPEND CHKSTK_ASM_SOURCE except/amd64/chkstk_asm.s) if(NOT MSVC) list(APPEND CHKSTK_SOURCE except/amd64/chkstk_ms.s) endif() elseif(ARCH STREQUAL "powerpc") - list(APPEND CHKSTK_SOURCE except/powerpc/chkstk_asm.s) + list(APPEND CHKSTK_ASM_SOURCE except/powerpc/chkstk_asm.s) endif() -add_library(chkstk ${CHKSTK_SOURCE}) +add_asm_files(chkstk_lib_asm ${CHKSTK_ASM_SOURCE}) +add_library(chkstk ${CHKSTK_SOURCE} ${chkstk_lib_asm}) +set_target_properties(chkstk PROPERTIES LINKER_LANGUAGE "C") add_dependencies(chkstk asm) include(crt.cmake) diff --git a/reactos/lib/sdk/crt/crt.cmake b/reactos/lib/sdk/crt/crt.cmake index b1479770f13..8433a708f3c 100644 --- a/reactos/lib/sdk/crt/crt.cmake +++ b/reactos/lib/sdk/crt/crt.cmake @@ -346,17 +346,11 @@ list(APPEND CRT_SOURCE wine/undname.c) if(ARCH STREQUAL "i386") - list(APPEND CRT_SOURCE + list(APPEND CRT_ASM_SOURCE except/i386/chkesp.s except/i386/prolog.s except/i386/seh.s except/i386/seh_prolog.s - except/i386/unwind.c - float/i386/clearfp.c - float/i386/cntrlfp.c - float/i386/fpreset.c - float/i386/logb.c - float/i386/statfp.c math/i386/alldiv_asm.s math/i386/alldvrm_asm.s math/i386/allmul_asm.s @@ -383,16 +377,9 @@ if(ARCH STREQUAL "i386") math/i386/sqrt_asm.s math/i386/tan_asm.s math/i386/atan2_asm.s - math/i386/ci.c - math/i386/cicos.c - math/i386/cilog.c - math/i386/cipow.c - math/i386/cisin.c - math/i386/cisqrt.c math/i386/exp_asm.s math/i386/fmod_asm.s math/i386/fmodf_asm.s - math/i386/ldexp.c mem/i386/memchr_asm.s mem/i386/memmove_asm.s mem/i386/memset_asm.s @@ -418,20 +405,32 @@ if(ARCH STREQUAL "i386") string/i386/wcsncpy_asm.s string/i386/wcsnlen_asm.s string/i386/wcsrchr_asm.s) + + list(APPEND CRT_SOURCE + except/i386/unwind.c + float/i386/clearfp.c + float/i386/cntrlfp.c + float/i386/fpreset.c + float/i386/logb.c + float/i386/statfp.c + math/i386/ci.c + math/i386/cicos.c + math/i386/cilog.c + math/i386/cipow.c + math/i386/cisin.c + math/i386/cisqrt.c + math/i386/ldexp.c) if(MSVC) - list(APPEND CRT_SOURCE + list(APPEND CRT_ASM_SOURCE except/i386/cpp.s) endif() elseif(ARCH STREQUAL "amd64") - list(APPEND CRT_SOURCE + list(APPEND CRT_ASM_SOURCE except/amd64/seh.s - except/amd64/ehandler.c float/amd64/clearfp.S float/amd64/getsetfpcw.S - float/i386/cntrlfp.c float/amd64/fpreset.S float/amd64/logb.S - float/i386/statfp.c math/amd64/acos.S math/amd64/acosf.S math/amd64/atan.S @@ -452,8 +451,13 @@ elseif(ARCH STREQUAL "amd64") math/amd64/sqrtf.S math/amd64/tan.S setjmp/amd64/setjmp.s) + + list(APPEND CRT_SOURCE + except/amd64/ehandler.c + float/i386/cntrlfp.c + float/i386/statfp.c) if(MSVC) - list(APPEND CRT_SOURCE + list(APPEND CRT_ASM_SOURCE except/amd64/cpp.s) endif() endif() @@ -489,7 +493,10 @@ if(NOT ARCH STREQUAL "i386") string/wcsrchr.c) endif() -add_library(crt ${CRT_SOURCE}) +set_source_files_properties(${CRT_ASM_SOURCE} PROPERTIES COMPILE_DEFINITIONS "__MINGW_IMPORT=extern;USE_MSVCRT_PREFIX;_MSVCRT_LIB_;_MSVCRT_;_MT;CRTDLL") +add_asm_files(crt_asm ${CRT_ASM_SOURCE}) + +add_library(crt ${CRT_SOURCE} ${crt_asm}) target_link_libraries(crt chkstk) add_target_compile_definitions(crt __MINGW_IMPORT=extern diff --git a/reactos/lib/sdk/crt/libcntpr.cmake b/reactos/lib/sdk/crt/libcntpr.cmake index c3401721867..7c8e490b3ca 100644 --- a/reactos/lib/sdk/crt/libcntpr.cmake +++ b/reactos/lib/sdk/crt/libcntpr.cmake @@ -68,7 +68,7 @@ list(APPEND LIBCNTPR_SOURCE wstring/wcsstr.c) if(ARCH STREQUAL "i386") - list(APPEND LIBCNTPR_SOURCE + list(APPEND LIBCNTPR_ASM_SOURCE except/i386/chkstk_asm.s except/i386/seh.s except/i386/seh_prolog.s @@ -97,24 +97,23 @@ if(ARCH STREQUAL "i386") math/i386/sin_asm.s math/i386/sqrt_asm.s math/i386/tan_asm.s + misc/i386/readcr4.S) + + list(APPEND LIBCNTPR_SOURCE math/i386/ci.c math/i386/cicos.c math/i386/cilog.c math/i386/cipow.c math/i386/cisin.c - math/i386/cisqrt.c - misc/i386/readcr4.S) + math/i386/cisqrt.c) if(NOT MSVC) list(APPEND LIBCNTPR_SOURCE except/i386/chkstk_ms.s) endif() elseif(ARCH STREQUAL "amd64") - list(APPEND LIBCNTPR_SOURCE - except/amd64/ehandler.c + list(APPEND LIBCNTPR_ASM_SOURCE except/amd64/chkstk_asm.s except/amd64/seh.s setjmp/amd64/setjmp.s - math/cos.c - math/sin.c math/amd64/atan.S math/amd64/atan2.S math/amd64/ceil.S @@ -129,10 +128,14 @@ elseif(ARCH STREQUAL "amd64") math/amd64/pow.S math/amd64/sqrt.S math/amd64/tan.S) + list(APPEND LIBCNTPR_SOURCE + except/amd64/ehandler.c + math/cos.c + math/sin.c) endif() if(ARCH STREQUAL "i386") - list(APPEND LIBCNTPR_SOURCE + list(APPEND LIBCNTPR_ASM_SOURCE mem/i386/memchr_asm.s mem/i386/memmove_asm.s mem/i386/memset_asm.s @@ -184,7 +187,10 @@ else() string/wcsrchr.c) endif() -add_library(libcntpr ${LIBCNTPR_SOURCE}) +set_source_files_properties(${LIBCNTPR_ASM_SOURCE} PROPERTIES COMPILE_DEFINITIONS "NO_RTL_INLINES;_NTSYSTEM_;_NTDLLBUILD_;_LIBCNT_;__CRT__NO_INLINE;CRTDLL") +add_asm_files(libcntpr_asm ${LIBCNTPR_ASM_SOURCE}) + +add_library(libcntpr ${LIBCNTPR_SOURCE} ${libcntpr_asm}) add_target_compile_definitions(libcntpr NO_RTL_INLINES _NTSYSTEM_ diff --git a/reactos/lib/sdk/crt/msvcrtex.cmake b/reactos/lib/sdk/crt/msvcrtex.cmake index 97bf4a954b7..fb5ae7b425c 100644 --- a/reactos/lib/sdk/crt/msvcrtex.cmake +++ b/reactos/lib/sdk/crt/msvcrtex.cmake @@ -39,8 +39,7 @@ list(APPEND MSVCRTEX_SOURCE misc/fltused.c misc/isblank.c misc/iswblank.c - misc/ofmt_stub.c -) + misc/ofmt_stub.c) if(NOT MSVC) list(APPEND MSVCRTEX_SOURCE @@ -49,19 +48,20 @@ if(NOT MSVC) endif() if(ARCH STREQUAL "i386") - list(APPEND MSVCRTEX_SOURCE + list(APPEND MSVCRTEX_ASM_SOURCE except/i386/chkstk_asm.s except/i386/chkstk_ms.s + math/i386/ftol2_asm.s + math/i386/alldiv_asm.s) + list(APPEND MSVCRTEX_SOURCE math/i386/ci.c math/i386/cicos.c math/i386/cilog.c math/i386/cipow.c math/i386/cisin.c - math/i386/cisqrt.c - math/i386/ftol2_asm.s - math/i386/alldiv_asm.s) + math/i386/cisqrt.c) elseif(ARCH STREQUAL "amd64") - list(APPEND MSVCRTEX_SOURCE + list(APPEND MSVCRTEX_ASM_SOURCE except/amd64/chkstk_asm.s except/amd64/chkstk_ms.s) endif() @@ -72,7 +72,10 @@ else() list(APPEND MSVCRTEX_SOURCE startup/gccmain.c) endif() -add_library(msvcrtex ${MSVCRTEX_SOURCE}) +set_source_files_properties(${MSVCRTEX_ASM_SOURCE} PROPERTIES COMPILE_DEFINITIONS "_DLL;_MSVCRTEX_") +add_asm_files(msvcrtex_asm ${MSVCRTEX_ASM_SOURCE}) + +add_library(msvcrtex ${MSVCRTEX_SOURCE} ${msvcrtex_asm}) add_target_compile_definitions(msvcrtex _DLL _MSVCRTEX_) set_source_files_properties(startup/crtdll.c PROPERTIES COMPILE_DEFINITIONS CRTDLL) set_source_files_properties(startup/crtexe.c diff --git a/reactos/lib/sdk/crt/oldnames.cmake b/reactos/lib/sdk/crt/oldnames.cmake index 8e2c2eb00c8..146db7f6b8d 100644 --- a/reactos/lib/sdk/crt/oldnames.cmake +++ b/reactos/lib/sdk/crt/oldnames.cmake @@ -3,5 +3,7 @@ if(NOT MSVC) set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/moldname-msvcrt.def PROPERTIES EXTERNAL_OBJECT TRUE) set_target_properties(oldnames PROPERTIES LINKER_LANGUAGE "IMPLIB" PREFIX "") else() - add_library(oldnames oldnames-msvcrt.S) + add_asm_files(oldnames_asm oldnames-msvcrt.S) + add_library(oldnames ${oldnames_asm}) + set_target_properties(oldnames PROPERTIES LINKER_LANGUAGE "C") endif() diff --git a/reactos/ntoskrnl/CMakeLists.txt b/reactos/ntoskrnl/CMakeLists.txt index 02605d87e1c..381b7bcee59 100644 --- a/reactos/ntoskrnl/CMakeLists.txt +++ b/reactos/ntoskrnl/CMakeLists.txt @@ -109,7 +109,6 @@ list(APPEND SOURCE ex/work.c ex/xipdisp.c ex/zone.c - ex/zw.S fsrtl/dbcsname.c fsrtl/fastio.c fsrtl/faulttol.c @@ -274,15 +273,21 @@ list(APPEND SOURCE wmi/wmi.c ntoskrnl.rc) +list(APPEND ASM_SOURCE ex/zw.S) + if(ARCH STREQUAL "i386") - list(APPEND SOURCE - config/i386/cmhardwr.c + list(APPEND ASM_SOURCE ex/i386/fastinterlck_asm.S ex/i386/ioport.S + ke/i386/ctxswitch.S + ke/i386/trap.s + ke/i386/usercall_asm.S + rtl/i386/stack.S) + list(APPEND SOURCE + config/i386/cmhardwr.c ke/i386/abios.c ke/i386/cpu.c ke/i386/context.c - ke/i386/ctxswitch.S ke/i386/exp.c ke/i386/irqobj.c ke/i386/kiinit.c @@ -290,25 +295,24 @@ if(ARCH STREQUAL "i386") ke/i386/mtrr.c ke/i386/patpge.c ke/i386/thrdini.c - ke/i386/trap.s ke/i386/traphdlr.c - ke/i386/usercall_asm.S ke/i386/usercall.c ke/i386/v86vdm.c mm/i386/page.c mm/ARM3/i386/init.c ps/i386/psctx.c ps/i386/psldt.c - rtl/i386/stack.S vdm/vdmmain.c vdm/vdmexec.c) elseif(ARCH STREQUAL "amd64") + list(APPEND ASM_SOURCE + ke/amd64/boot.S + ke/amd64/ctxswitch.S + ke/amd64/trap.S) list(APPEND SOURCE config/i386/cmhardwr.c - ke/amd64/boot.S ke/amd64/context.c ke/amd64/cpu.c - ke/amd64/ctxswitch.S ke/amd64/except.c ke/amd64/interrupt.c ke/amd64/irql.c @@ -317,21 +321,21 @@ elseif(ARCH STREQUAL "amd64") ke/amd64/spinlock.c ke/amd64/stubs.c ke/amd64/thrdini.c - ke/amd64/trap.S mm/amd64/init.c mm/amd64/page.c ps/amd64/psctx.c) elseif(ARCH STREQUAL "arm") + list(APPEND ASM_SOURCE + ke/arm/boot.s + ke/arm/ctxswtch.s + ke/arm/stubs_asm.s + ke/arm/trap.s) list(APPEND SOURCE config/arm/cmhardwr.c - ke/arm/boot.s ke/arm/cpu.c - ke/arm/ctxswtch.s ke/arm/exp.c ke/arm/kiinit.c - ke/arm/stubs_asm.s ke/arm/thrdini.c - ke/arm/trap.s ke/arm/trapc.c ke/arm/usercall.c mm/arm/page.c @@ -339,9 +343,11 @@ elseif(ARCH STREQUAL "arm") ps/arm/psctx.c rtl/arm/rtlexcpt.c) elseif(ARCH STREQUAL "powerpc") + list(APPEND ASM_SOURCE + ke/powerpc/main_asm.S + ke/powerpc/ctxhelp.S) list(APPEND SOURCE config/powerpc/cmhardwr.c - ke/powerpc/main_asm.S ke/powerpc/cpu.c ke/powerpc/exp.c ke/powerpc/kiinit.c @@ -350,7 +356,6 @@ elseif(ARCH STREQUAL "powerpc") ke/powerpc/systimer.c ke/powerpc/thrdini.c ke/powerpc/ctxswitch.c - ke/powerpc/ctxhelp.S mm/powerpc/pfault.c mm/powerpc/page.c) endif() @@ -361,18 +366,17 @@ if(NOT _WINKD_) kd/i386/kdmemsup.c kd/wrappers/gdbstub.c) if(KDBG) - list(APPEND SOURCE - kdbg/i386/i386-dis.c - kdbg/i386/kdb_help.S) + list(APPEND ASM_SOURCE kdbg/i386/kdb_help.S) + list(APPEND SOURCE kdbg/i386/i386-dis.c) endif() elseif(ARCH STREQUAL "amd64") list(APPEND SOURCE kd/amd64/kd.c kd/amd64/kdmemsup.c) if(KDBG) + list(APPEND ASM_SOURCE kdbg/amd64/kdb_help.S) list(APPEND SOURCE kdbg/amd64/i386-dis.c - kdbg/amd64/kdb_help.S kdbg/amd64/kdb.c) endif() elseif(ARCH STREQUAL "powerpc") @@ -421,7 +425,10 @@ else() # _WINKD_ endif() +add_asm_files(ntoskrnl_asm ${ASM_SOURCE}) + add_executable(ntoskrnl + ${ntoskrnl_asm} ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/ntoskrnl.def) @@ -462,7 +469,14 @@ add_cd_file(TARGET ntoskrnl DESTINATION reactos/system32 NO_CAB FOR all) if(BUILD_MP) spec2def(ntkrnlmp.exe ntoskrnl.spec) + if(MSVC_IDE AND (CMAKE_VERSION MATCHES "ReactOS")) + set_source_files_properties(${ASM_SOURCE} PROPERTIES COMPILE_DEFINITIONS "CONFIG_SMP") + endif() + + add_asm_files(ntkrnlmp_asm ${ASM_SOURCE}) + add_executable(ntkrnlmp + ${ntkrnlmp_asm} ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/ntkrnlmp.def) @@ -492,4 +506,6 @@ if(BUILD_MP) add_cd_file(TARGET ntkrnlmp DESTINATION reactos/system32 NO_CAB FOR all) endif() -add_library(ntdllsys ntdll.S) +add_asm_files(ntdllsys_asm ntdll.S) +add_library(ntdllsys ${ntdllsys_asm}) +set_target_properties(ntdllsys PROPERTIES LINKER_LANGUAGE "C") diff --git a/reactos/win32ss/CMakeLists.txt b/reactos/win32ss/CMakeLists.txt index eb53a470e96..e269274e407 100644 --- a/reactos/win32ss/CMakeLists.txt +++ b/reactos/win32ss/CMakeLists.txt @@ -179,7 +179,8 @@ list(APPEND SOURCE gdi/ntgdi/xformobj.c gdi/eng/stubs.c gdi/eng/umpdstubs.c - win32k.rc) + win32k.rc + ${CMAKE_CURRENT_BINARY_DIR}/win32k.def) if(USE_DIBLIB) add_definitions(-D_USE_DIBLIB_) @@ -200,7 +201,7 @@ else() endif() if(ARCH STREQUAL "i386") -list(APPEND SOURCE +list(APPEND ASM_SOURCE gdi/dib/i386/dib24bpp_hline.s gdi/dib/i386/dib32bpp_hline.s gdi/dib/i386/dib32bpp_colorfill.s @@ -216,9 +217,8 @@ if(KDBG) gdi/ntgdi/gdikdbgext.c) endif() -add_library(win32k SHARED - ${CMAKE_CURRENT_BINARY_DIR}/win32k.def - ${SOURCE}) +add_asm_files(win32k_asm ${ASM_SOURCE}) +add_library(win32k SHARED ${SOURCE} ${win32k_asm}) set_module_type(win32k kernelmodedriver) @@ -235,5 +235,7 @@ add_importlibs(win32k ntoskrnl hal ftfd) add_pch(win32k pch.h) add_cd_file(TARGET win32k DESTINATION reactos/system32 FOR all) -add_library(win32ksys sys-stubs.S) set_source_files_properties(sys-stubs.S PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/w32ksvc.h) +add_asm_files(win32ksys_asm sys-stubs.S) +add_library(win32ksys ${win32ksys_asm}) +set_target_properties(win32ksys PROPERTIES LINKER_LANGUAGE "C") From 482bde30b5c0cb640d885d4d9d316033fa3b7a3d Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Tue, 8 Jan 2013 20:34:19 +0000 Subject: [PATCH 87/96] * Addendum to r58141. svn path=/trunk/; revision=58142 --- rostests/apitests/ntdll/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rostests/apitests/ntdll/CMakeLists.txt b/rostests/apitests/ntdll/CMakeLists.txt index 8069e33939a..086a90af207 100644 --- a/rostests/apitests/ntdll/CMakeLists.txt +++ b/rostests/apitests/ntdll/CMakeLists.txt @@ -20,10 +20,10 @@ list(APPEND SOURCE testlist.c) if(ARCH STREQUAL "i386") - list(APPEND SOURCE i386/ZwContinue.S) + add_asm_files(ntdll_apitest_asm i386/ZwContinue.S) endif() -add_executable(ntdll_apitest ${SOURCE}) +add_executable(ntdll_apitest ${SOURCE} ${ntdll_apitest_asm}) target_link_libraries(ntdll_apitest wine ${PSEH_LIB}) set_module_type(ntdll_apitest win32cui) add_importlibs(ntdll_apitest msvcrt advapi32 kernel32 ntdll) From 92546d0ab11d372c4172d053b0caa09a70ae7aad Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 8 Jan 2013 22:14:10 +0000 Subject: [PATCH 88/96] [CRT] - Use __debugbreak in _assert when user presses ignore in the message box - Implement __crt_MessageBoxA and use it from _assert and abort - Rewrite abort and _set_abort_behavior - Add function headers and set BSD license for my code - CORE-6594 #resolve svn path=/trunk/; revision=58143 --- reactos/lib/sdk/crt/crt.cmake | 2 + reactos/lib/sdk/crt/include/internal/misc.h | 14 ++ reactos/lib/sdk/crt/misc/__crt_MessageBoxA.c | 47 ++++++ reactos/lib/sdk/crt/misc/assert.c | 67 ++++---- reactos/lib/sdk/crt/precomp.h | 1 + .../lib/sdk/crt/stdlib/_set_abort_behavior.c | 39 +++++ reactos/lib/sdk/crt/stdlib/abort.c | 143 +++++------------- 7 files changed, 182 insertions(+), 131 deletions(-) create mode 100644 reactos/lib/sdk/crt/include/internal/misc.h create mode 100644 reactos/lib/sdk/crt/misc/__crt_MessageBoxA.c create mode 100644 reactos/lib/sdk/crt/stdlib/_set_abort_behavior.c diff --git a/reactos/lib/sdk/crt/crt.cmake b/reactos/lib/sdk/crt/crt.cmake index 8433a708f3c..90eac846264 100644 --- a/reactos/lib/sdk/crt/crt.cmake +++ b/reactos/lib/sdk/crt/crt.cmake @@ -120,6 +120,7 @@ list(APPEND CRT_SOURCE mem/memcmp.c mem/memccpy.c mem/memicmp.c + misc/__crt_MessageBoxA.c misc/amsg.c misc/assert.c misc/environ.c @@ -224,6 +225,7 @@ list(APPEND CRT_SOURCE stdio/wstat.c stdio/wstat64.c stdlib/_exit.c + stdlib/_set_abort_behavior.c stdlib/abort.c stdlib/atexit.c stdlib/ecvt.c diff --git a/reactos/lib/sdk/crt/include/internal/misc.h b/reactos/lib/sdk/crt/include/internal/misc.h new file mode 100644 index 00000000000..ab552fbd2b0 --- /dev/null +++ b/reactos/lib/sdk/crt/include/internal/misc.h @@ -0,0 +1,14 @@ + + +extern int msvcrt_error_mode; +extern int __app_type; +#define _UNKNOWN_APP 0 +#define _CONSOLE_APP 1 +#define _GUI_APP 2 + +int +__cdecl +__crt_MessageBoxA ( + _In_opt_ const char *pszText, + _In_ unsigned int uType); + diff --git a/reactos/lib/sdk/crt/misc/__crt_MessageBoxA.c b/reactos/lib/sdk/crt/misc/__crt_MessageBoxA.c new file mode 100644 index 00000000000..734f1779e8b --- /dev/null +++ b/reactos/lib/sdk/crt/misc/__crt_MessageBoxA.c @@ -0,0 +1,47 @@ +/* + * PROJECT: ReactOS C runtime library + * LICENSE: BSD - See COPYING.ARM in the top level directory + * FILE: lib/sdk/crt/__crt_MessageBoxA.c + * PURPOSE: __crt_MessageBoxA implementation + * PROGRAMMER: Timo Kreuzer (timo.kreuzer@reactos.org) + */ + +#include + +/***************************************************************************** + * \brief Displays a message box. + * + * \param pszText - The message to be displayed. + * \param uType - The contents and behavior of the message box. + * \return Identifies the button that was pressed by the user. + * \see MessageBox + * + *****************************************************************************/ +int +__cdecl +__crt_MessageBoxA ( + _In_opt_ const char *pszText, + _In_ unsigned int uType) +{ + HMODULE hmodUser32; + int (WINAPI *pMessageBoxA)(HWND, LPCTSTR, LPCTSTR, UINT); + int iResult; + + /* Get MessageBoxA function pointer */ + hmodUser32 = LoadLibrary("user32.dll"); + pMessageBoxA = (PVOID)GetProcAddress(hmodUser32, "MessageBoxA"); + if (!pMessageBoxA) + { + abort(); + } + + /* Display a message box */ + iResult = pMessageBoxA(NULL, + pszText, + "ReactOS C Runtime Library", + uType); + + FreeLibrary(hmodUser32); + return iResult; +} + diff --git a/reactos/lib/sdk/crt/misc/assert.c b/reactos/lib/sdk/crt/misc/assert.c index 4619a4fa889..f25a59353c9 100644 --- a/reactos/lib/sdk/crt/misc/assert.c +++ b/reactos/lib/sdk/crt/misc/assert.c @@ -1,9 +1,12 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ +/* + * PROJECT: ReactOS C runtime library + * LICENSE: BSD - See COPYING.ARM in the top level directory + * FILE: lib/sdk/crt/assert.c + * PURPOSE: _assert implementation + * PROGRAMMER: Timo Kreuzer (timo.kreuzer@reactos.org) + */ + #include -#include -#include -#include -#include static const char formatstr[] = "Assertion failed!\n\n" @@ -11,35 +14,33 @@ static const char formatstr[] = "File: %s\n" "Line: %ld\n\n" "Expression: %s\n" - "Press Retry to debug the application\n"; + "Press Retry to debug the application\n\0"; - -/* - * @implemented - */ -void _assert(const char *exp, const char *file, unsigned line) +void +_assert ( + const char *exp, + const char *file, + unsigned line) { - int (WINAPI *pMessageBoxA)(HWND, LPCTSTR, LPCTSTR, UINT); - HMODULE hmodUser32; - char achProgram[40]; + char achProgram[MAX_PATH]; char *pszBuffer; size_t len; int iResult; - /* Assertion failed at foo.c line 45: x #include #include +#include #include #include #include diff --git a/reactos/lib/sdk/crt/stdlib/_set_abort_behavior.c b/reactos/lib/sdk/crt/stdlib/_set_abort_behavior.c new file mode 100644 index 00000000000..8628509df8b --- /dev/null +++ b/reactos/lib/sdk/crt/stdlib/_set_abort_behavior.c @@ -0,0 +1,39 @@ +/* + * PROJECT: ReactOS C runtime library + * LICENSE: BSD - See COPYING.ARM in the top level directory + * FILE: lib/sdk/crt/_set_abort_behavior.c + * PURPOSE: _set_abort_behavior implementation + * PROGRAMMER: Timo Kreuzer (timo.kreuzer@reactos.org) + */ + +extern unsigned int __abort_behavior; + +/*! + * \brief Specifies the behavior of the abort() function. + * + * \param flags - Value of the new flags. + * \param mask - Mask that specifies which flags to update. + * \return The old flags value. + */ +unsigned int +_cdecl +_set_abort_behavior( + unsigned int flags, + unsigned int mask) +{ + unsigned int old_flags; + + /* Save the old flags */ + old_flags = __abort_behavior; + + /* Reset all flags that are not in the mask */ + flags &= mask; + + /* Update the flags in the mask to the new flags value */ + __abort_behavior &= ~mask; + __abort_behavior |= flags; + + /* Return the old flags */ + return old_flags; +} + diff --git a/reactos/lib/sdk/crt/stdlib/abort.c b/reactos/lib/sdk/crt/stdlib/abort.c index c85d869d81d..3a3abb67c58 100644 --- a/reactos/lib/sdk/crt/stdlib/abort.c +++ b/reactos/lib/sdk/crt/stdlib/abort.c @@ -1,114 +1,55 @@ /* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS system libraries - * FILE: lib/crt/stdlib/abort.c - * PURPOSE: Abnormal termination message - * PROGRAMER: Jon Griffiths - * Samuel Serapin + * PROJECT: ReactOS C runtime library + * LICENSE: BSD - See COPYING.ARM in the top level directory + * FILE: lib/sdk/crt/abort.c + * PURPOSE: abort implementation + * PROGRAMMER: Timo Kreuzer (timo.kreuzer@reactos.org) */ -/* based on wine exit.c */ - -#include +#include "precomp.h" #include -#include -extern int msvcrt_error_mode; -extern int __app_type; -unsigned int msvcrt_abort_behavior = MSVCRT__WRITE_ABORT_MSG | MSVCRT__CALL_REPORTFAULT; +unsigned int __abort_behavior = _WRITE_ABORT_MSG | _CALL_REPORTFAULT; -/* avoid linking to user32 */ -typedef HWND (WINAPI *GetActiveWindowPtr)(void); -static GetActiveWindowPtr pGetActiveWindow = NULL; -typedef int (WINAPI *MessageBoxIndirectWPtr)(const MSGBOXPARAMSW*); -static MessageBoxIndirectWPtr pMessageBoxIndirectW = NULL; +static const char abort_msg[] = + "This application has requested the Runtime to terminate in an unusual way.\n" + "Please contact the applications's support team for more information.\0"; -static void DoMessageBoxW(const wchar_t *lead, const wchar_t *message) -{ - const char szMsgBoxTitle[] = "ReactOS C++ Runtime Library"; - const wchar_t message_format[] = {'%','s','\n','\n','P','r','o','g','r','a','m',':',' ','%','s','\n', - '%','s','\n','\n','P','r','e','s','s',' ','O','K',' ','t','o',' ','e','x','i','t',' ','t','h','e',' ', - 'p','r','o','g','r','a','m',',',' ','o','r',' ','C','a','n','c','e','l',' ','t','o',' ','s','t','a','r','t',' ', - 't','h','e',' ','d','e','b','b','u','g','e','r','.','\n',0}; - - MSGBOXPARAMSW msgbox; - wchar_t text[2048]; - INT ret; - - _snwprintf(text,sizeof(text),message_format, lead, _wpgmptr, message); - - msgbox.cbSize = sizeof(msgbox); - msgbox.hwndOwner = pGetActiveWindow(); - msgbox.hInstance = 0; - msgbox.lpszText = (LPCWSTR)text; - msgbox.lpszCaption = (LPCWSTR)szMsgBoxTitle; - msgbox.dwStyle = MB_OKCANCEL|MB_ICONERROR; - msgbox.lpszIcon = NULL; - msgbox.dwContextHelpId = 0; - msgbox.lpfnMsgBoxCallback = NULL; - msgbox.dwLanguageId = LANG_NEUTRAL; - - ret = pMessageBoxIndirectW(&msgbox); - if (ret == IDCANCEL) - DebugBreak(); -} - -static void DoMessageBox(const char *lead, const char *message) -{ - wchar_t leadW[1024], messageW[1024]; - HMODULE huser32 = LoadLibrary("user32.dll"); - - if(huser32) { - pGetActiveWindow = (GetActiveWindowPtr)GetProcAddress(huser32, "GetActiveWindow"); - pMessageBoxIndirectW = (MessageBoxIndirectWPtr)GetProcAddress(huser32, "MessageBoxIndirectW"); - - if(!pGetActiveWindow || !pMessageBoxIndirectW) { - FreeLibrary(huser32); - ERR("GetProcAddress failed!\n"); - return; - } - } - else - { - ERR("Loading user32 failed!\n"); - return; - } - - mbstowcs(leadW, lead, 1024); - mbstowcs(messageW, message, 1024); - - DoMessageBoxW(leadW, messageW); - FreeLibrary(huser32); -} - -/* - * @implemented +/*! + * \brief Aborts the program. + * + * \note The function does not return. */ -void abort() +void +__cdecl +abort ( + void) { - if (msvcrt_abort_behavior & MSVCRT__WRITE_ABORT_MSG) - { - if ((msvcrt_error_mode == MSVCRT__OUT_TO_MSGBOX) || - ((msvcrt_error_mode == MSVCRT__OUT_TO_DEFAULT) && (__app_type == 2))) + /* Check if a message should be output */ + if (__abort_behavior & _WRITE_ABORT_MSG) { - DoMessageBox("Runtime error!", "abnormal program termination"); + /* Check if we should display a message box */ + if (((msvcrt_error_mode == _OUT_TO_DEFAULT) && (__app_type == _GUI_APP)) || + (msvcrt_error_mode == _OUT_TO_MSGBOX)) + { + /* Output a message box */ + __crt_MessageBoxA(abort_msg, MB_OK); + } + else + { + /* Print message to stderr */ + fprintf(stderr, "%s\n", abort_msg); + } } - else - _cputs("\nabnormal program termination\n"); - } - raise(SIGABRT); - /* in case raise() returns */ - _exit(3); + + /* Check if faultrep handler should be called */ + if (__abort_behavior & _CALL_REPORTFAULT) + { + /// \todo unimplemented + (void)0; + } + + raise(SIGABRT); + _exit(3); } -unsigned int CDECL _set_abort_behavior(unsigned int flags, unsigned int mask) -{ - unsigned int old = msvcrt_abort_behavior; - - TRACE("%x, %x\n", flags, mask); - if (mask & MSVCRT__CALL_REPORTFAULT) - FIXME("_WRITE_CALL_REPORTFAULT unhandled\n"); - - msvcrt_abort_behavior = (msvcrt_abort_behavior & ~mask) | (flags & mask); - return old; -} From 1bf25af9109560cff45ba17be6e212e9a0495d6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Wed, 9 Jan 2013 00:03:50 +0000 Subject: [PATCH 89/96] --_'_-- \o/ Graphical Happy New Year 2013 (+ 9d) \o/ --_'_-- Note to people: ~=~=~=~=~=~=~=~ - The msgina (login) logo is made from a .svg file. The copyright line text has font Lucida Sans Unicode (this font allows you to have the right length to the year-dash-separator). DejaVu Sans may also work. I would prefer to use the other logo used as the header for the ReactOS Welcome program (welcome.exe from the CD), but also it is given as a .bmp and I would like to have a .svg or some equivalent format to use it (with little modifications though) as a new login logo (in particular, rescaling it). - Adjust the boot-logo year, also with the Lucida Sans Unicode font. This was done with Paint from Win2k3 (WARNING!! Not with Windows 7 Paint !!) because it keeps the palette of the opened bitmap, contrary to Windows7 one. - If somebody has the original boot-logo file (a .svg, ..., something else?), then signal it to me ! svn path=/trunk/; revision=58144 --- .../dll/win32/msgina/resources/reactos.bmp | Bin 109174 -> 109174 bytes reactos/ntoskrnl/inbv/logo/1.bmp | Bin 21644 -> 21648 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/reactos/dll/win32/msgina/resources/reactos.bmp b/reactos/dll/win32/msgina/resources/reactos.bmp index 7fd0563b79ec5a1ea99a7cc6b0bd9bcd076c61bc..57637ec52e3cc8f924ac478b79bd1cbf2f5f9d24 100644 GIT binary patch delta 127 zcmV-_0D%AY)CTs{2C%Rc47;Ks~~{v9m-Y(gX&vsiAsxZnGRH%mfU_zqGKbploMh hacyX`^eoH-4A#uTp_-DYqMF;%$b-x=x6CmCs(7e}LMZ?M delta 127 zcmV-_0D%AY)CTs{2C%Rc46CD>fqis=eRPh8f3v(4%mfUmp_o`yPQA6O!nm)qlo`(i z350%kp_-E6*UPhP9?t{`;@He+WnQYInzKYB(gX(0#JNgGL$e$x%mfU$u%@M-mYtQ2 hX=Put^eoH-4BFDjt)`u*qMF^*%7e@?x6CmCs(4(wLOTEe diff --git a/reactos/ntoskrnl/inbv/logo/1.bmp b/reactos/ntoskrnl/inbv/logo/1.bmp index 5d68b172f1a86251a3c103d5490e12b8d5e4a54c..99988b40de16c242aa55abb460675dd6f589c04f 100644 GIT binary patch delta 143 zcmeBK$v9ypqq39lgb)TWC>Pfq{{Mg#pN9klLsm#LCX~fg$g|0>k7g z)@Uvu`xxT`hJOsVCf{WZwHd^s3^D*68lFid{O7Q_xT hjqe}BoyqR(A⪚&tZ3Cd@%VjyC0*%W+RR$9{?YBD5wAc delta 139 zcmbQRlCftcqq384PY44TlmST%AZ}n{V0ggDz`)4B!T@A4h;393Vr6Cdz`*u@at&)V z2ipgRV+{Wo?oEEk8p_GQ@qt0c;2*=C$@XmF>_81OLF~C~z8p*+SQr>s*bYwq#1_QP j#=unbkKxv2Z}t#I{>cm2-5BRhe$MX4cxba3N0bi$H^(L# From 20e769deb65c8949bab3cce648db2b9fa87a00fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Wed, 9 Jan 2013 00:30:38 +0000 Subject: [PATCH 90/96] [MSGINA] Add the source login logo .svg file. To make the bitmap, export the .svg file in png, then save the png in Bitmap 24bits. svn path=/trunk/; revision=58145 --- .../dll/win32/msgina/resources/reactos.svg | 3114 +++++++++++++++++ 1 file changed, 3114 insertions(+) create mode 100644 reactos/dll/win32/msgina/resources/reactos.svg diff --git a/reactos/dll/win32/msgina/resources/reactos.svg b/reactos/dll/win32/msgina/resources/reactos.svg new file mode 100644 index 00000000000..cfb1765100e --- /dev/null +++ b/reactos/dll/win32/msgina/resources/reactos.svg @@ -0,0 +1,3114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copyright © 1996-2013 ReactOS Team & Contributors + From 44d9d33649d5f7d2edb08f0c75a36b91ba1c2423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Wed, 9 Jan 2013 00:48:33 +0000 Subject: [PATCH 91/96] [BOOTLOGO] Softens the edges of the '3' digit svn path=/trunk/; revision=58146 --- reactos/ntoskrnl/inbv/logo/1.bmp | Bin 21648 -> 21654 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/reactos/ntoskrnl/inbv/logo/1.bmp b/reactos/ntoskrnl/inbv/logo/1.bmp index 99988b40de16c242aa55abb460675dd6f589c04f..1262b61b3a4907fc73b30c51ba3c7eefc5602906 100644 GIT binary patch delta 90 zcmbQRl5yHfMr9}8X(0??PzEG5fVhE)f#Cro0|O%i3j>hJps-PS2P-4nHph^V!`P*)~68U*!V;+NTh7 delta 84 zcmbQXl5xUHMr9}82_Xz%PzEG5fVhE)f#Cro0|O%i3j>hJAhl6>2P-4v Date: Wed, 9 Jan 2013 09:48:02 +0000 Subject: [PATCH 92/96] [BOOTVID] Apply the following optimizations: - include ioaccess.h to inline port access, instead of going through hal. - Make __outpb and __outpw macros rather than stdcall function - Make SetPixel FORCEINLINE - Do not switch mode for every pixel we write, instead do it once before doing larger blt operations - use __movsb instead of manual loop plus READ/WRITE_REGISTER_UCHAR This noticeably improves performance. svn path=/trunk/; revision=58147 --- reactos/drivers/base/bootvid/i386/vga.c | 111 ++++++++++++++---------- reactos/drivers/base/bootvid/precomp.h | 1 + 2 files changed, 65 insertions(+), 47 deletions(-) diff --git a/reactos/drivers/base/bootvid/i386/vga.c b/reactos/drivers/base/bootvid/i386/vga.c index 3c6d4ad8857..28a43cc9c56 100644 --- a/reactos/drivers/base/bootvid/i386/vga.c +++ b/reactos/drivers/base/bootvid/i386/vga.c @@ -70,6 +70,12 @@ BOOLEAN CarriageReturn = FALSE; ULONG_PTR VgaRegisterBase = 0; ULONG_PTR VgaBase = 0; +#define __outpb(Port, Value) \ + WRITE_PORT_UCHAR((PUCHAR)VgaRegisterBase + Port, (UCHAR)Value) + +#define __outpw(Port, Value) \ + WRITE_PORT_USHORT((PUSHORT)(VgaRegisterBase + Port), (USHORT)Value) + /* PRIVATE FUNCTIONS *********************************************************/ VOID @@ -79,35 +85,18 @@ ReadWriteMode(UCHAR Mode) UCHAR Value; /* Switch to graphics mode register */ - WRITE_PORT_UCHAR((PUCHAR)VgaRegisterBase + 0x3CE, 5); + __outpb(0x3CE, 5); /* Get the current register value, minus the current mode */ Value = READ_PORT_UCHAR((PUCHAR)VgaRegisterBase + 0x3CF) & 0xF4; /* Set the new mode */ - WRITE_PORT_UCHAR((PUCHAR)VgaRegisterBase + 0x3CF, Mode | Value); + __outpb(0x3CF, Mode | Value); } -VOID -NTAPI -__outpb(IN ULONG Port, - IN ULONG Value) -{ - /* Write to the VGA Register */ - WRITE_PORT_UCHAR((PUCHAR)VgaRegisterBase + Port, (UCHAR)Value); -} VOID -NTAPI -__outpw(IN ULONG Port, - IN ULONG Value) -{ - /* Write to the VGA Register */ - WRITE_PORT_USHORT((PUSHORT)(VgaRegisterBase + Port), (USHORT)Value); -} - -VOID -NTAPI +FORCEINLINE SetPixel(IN ULONG Left, IN ULONG Top, IN UCHAR Color) @@ -117,15 +106,6 @@ SetPixel(IN ULONG Left, /* Calculate the pixel position. */ PixelPosition = (PUCHAR)VgaBase + (Left >> 3) + (Top * 80); - /* Switch to mode 10 */ - ReadWriteMode(10); - - /* Clear the 4 planes (we're already in unchained mode here) */ - __outpw(0x3C4, 0xF02); - - /* Select the color don't care register */ - __outpw(0x3CE, 7); - /* Select the bitmask register and write the mask */ __outpw(0x3CE, (PixelMask[Left & 7] << 8) | 8); @@ -148,6 +128,15 @@ DisplayCharacter(CHAR Character, /* Get the font line for this character */ FontChar = &FontData[Character * BOOTCHAR_HEIGHT]; + /* Switch to mode 10 */ + ReadWriteMode(10); + + /* Clear the 4 planes (we're already in unchained mode here) */ + __outpw(0x3C4, 0xF02); + + /* Select the color don't care register */ + __outpw(0x3CE, 7); + /* Loop each pixel height */ i = BOOTCHAR_HEIGHT; do @@ -280,7 +269,7 @@ VOID NTAPI VgaScroll(ULONG Scroll) { - ULONG Top, RowSize, i; + ULONG Top, RowSize; PUCHAR OldPosition, NewPosition; /* Clear the 4 planes */ @@ -291,19 +280,27 @@ VgaScroll(ULONG Scroll) /* Set Mode 1 */ ReadWriteMode(1); - + RowSize = (ScrollRegion[2] - ScrollRegion[0] + 1) / 8; + /* Calculate the position in memory for the row */ + OldPosition = (PUCHAR)VgaBase + (ScrollRegion[1] + Scroll) * 80 + ScrollRegion[0] / 8; + NewPosition = (PUCHAR)VgaBase + ScrollRegion[1] * 80 + ScrollRegion[0] / 8; + /* Start loop */ for(Top = ScrollRegion[1]; Top <= ScrollRegion[3]; ++Top) { - /* Calculate the position in memory for the row */ - OldPosition = (PUCHAR)VgaBase + (Top + Scroll) * 80 + ScrollRegion[0] / 8; - NewPosition = (PUCHAR)VgaBase + Top * 80 + ScrollRegion[0] / 8; - +#if defined(_M_IX86) || defined(_M_AMD64) + __movsb(NewPosition, OldPosition, RowSize); +#else + ULONG i; + /* Scroll the row */ for(i = 0; i < RowSize; ++i) WRITE_REGISTER_UCHAR(NewPosition + i, READ_REGISTER_UCHAR(OldPosition + i)); +#endif + OldPosition += 80; + NewPosition += 80; } } @@ -341,19 +338,21 @@ PreserveRow(IN ULONG CurrentTop, /* Set the count and make sure it's above 0 */ Count = TopDelta * 80; - if (Count) - { - /* Loop every pixel */ - do - { - /* Write the data back on the other position */ - WRITE_REGISTER_UCHAR(Position1, READ_REGISTER_UCHAR(Position2)); - /* Increase both positions */ - Position2++; - Position1++; - } while (--Count); +#if defined(_M_IX86) || defined(_M_AMD64) + __movsb(Position1, Position2, Count); +#else + /* Loop every pixel */ + while (Count--) + { + /* Write the data back on the other position */ + WRITE_REGISTER_UCHAR(Position1, READ_REGISTER_UCHAR(Position2)); + + /* Increase both positions */ + Position2++; + Position1++; } +#endif } VOID @@ -390,6 +389,15 @@ BitBlt(IN ULONG Left, return; } + /* Switch to mode 10 */ + ReadWriteMode(10); + + /* Clear the 4 planes (we're already in unchained mode here) */ + __outpw(0x3C4, 0xF02); + + /* Select the color don't care register */ + __outpw(0x3CE, 7); + /* 4bpp blitting */ dy = Top; do @@ -429,6 +437,15 @@ RleBitBlt(IN ULONG Left, ULONG i, j; ULONG Code; + /* Switch to mode 10 */ + ReadWriteMode(10); + + /* Clear the 4 planes (we're already in unchained mode here) */ + __outpw(0x3C4, 0xF02); + + /* Select the color don't care register */ + __outpw(0x3CE, 7); + /* Set Y height and current X value and start loop */ YDelta = Top + Height - 1; x = Left; @@ -735,7 +752,7 @@ VidDisplayString(PUCHAR String) { /* Update current X */ curr_x = ScrollRegion[0]; - + /* Check if we're being followed by a new line */ CarriageReturn = TRUE; } diff --git a/reactos/drivers/base/bootvid/precomp.h b/reactos/drivers/base/bootvid/precomp.h index c7d55e92f8c..1a7d4a6b6e3 100644 --- a/reactos/drivers/base/bootvid/precomp.h +++ b/reactos/drivers/base/bootvid/precomp.h @@ -3,6 +3,7 @@ #include "arc/arc.h" #include "halfuncs.h" #include "drivers/bootvid/bootvid.h" +#include "ioaccess.h" /* Define if FontData has upside down characters */ #undef CHAR_GEN_UPSIDE_DOWN From a54575d01e3ff8342e630b55529dddf5bdc8a883 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 9 Jan 2013 12:40:42 +0000 Subject: [PATCH 93/96] [BOOTVID] Rewrite DisplayCharacter. The new algorithm is much faster. It uses the VGA mask register to draws up to 8 pixels at once, completely getting rid of the inner loop. Pixel position / mask calculations and the check for opaque vs transparent background are moved out of the loops. The result is a single loop for the y coordinate containing an inlined __outbyte and memory write. A second loop in case of unaligned character writes. svn path=/trunk/; revision=58148 --- reactos/drivers/base/bootvid/i386/vga.c | 125 +++++++++++++++++------- 1 file changed, 91 insertions(+), 34 deletions(-) diff --git a/reactos/drivers/base/bootvid/i386/vga.c b/reactos/drivers/base/bootvid/i386/vga.c index 28a43cc9c56..4ec6ebe1aaf 100644 --- a/reactos/drivers/base/bootvid/i386/vga.c +++ b/reactos/drivers/base/bootvid/i386/vga.c @@ -114,19 +114,32 @@ SetPixel(IN ULONG Left, READ_REGISTER_UCHAR(PixelPosition) & Color); } +#ifdef CHAR_GEN_UPSIDE_DOWN +# define GetFontPtr(_Char) &FontData[_Char * BOOTCHAR_HEIGHT] + BOOTCHAR_HEIGHT - 1; +# define FONT_PTR_DELTA (-1) +#else +# define GetFontPtr(_Char) &FontData[_Char * BOOTCHAR_HEIGHT]; +# define FONT_PTR_DELTA (1) +#endif + +#define SET_PIXELS(_PixelPtr, _PixelMask, _TextColor) \ + /* Select the bitmask register and write the mask */ \ + __outpw(0x3CE, (_PixelMask << 8) | 8); \ +\ + /* Set the new color */ \ + WRITE_REGISTER_UCHAR(_PixelPtr, (UCHAR)_TextColor);\ + VOID NTAPI DisplayCharacter(CHAR Character, ULONG Left, ULONG Top, ULONG TextColor, - ULONG BackTextColor) + ULONG BackColor) { - PUCHAR FontChar; - ULONG i, j, XOffset; - - /* Get the font line for this character */ - FontChar = &FontData[Character * BOOTCHAR_HEIGHT]; + PUCHAR FontChar, PixelPtr; + ULONG Height; + UCHAR Shift; /* Switch to mode 10 */ ReadWriteMode(10); @@ -137,40 +150,84 @@ DisplayCharacter(CHAR Character, /* Select the color don't care register */ __outpw(0x3CE, 7); - /* Loop each pixel height */ - i = BOOTCHAR_HEIGHT; + /* Calculate shift */ + Shift = Left & 7; + + /* Get the font and pixel pointer */ + FontChar = GetFontPtr(Character); + PixelPtr = (PUCHAR)VgaBase + (Left >> 3) + (Top * 80); + + /* Loop all pixel rows */ + Height = BOOTCHAR_HEIGHT; do { - /* Loop each pixel width */ - j = 128; - XOffset = Left; + SET_PIXELS(PixelPtr, *FontChar >> Shift, TextColor); + PixelPtr += 80; + FontChar += FONT_PTR_DELTA; + } while (--Height); + + /* Check if we need to update neighbor bytes */ + if (Shift) + { + /* Calculate shift for 2nd byte */ + Shift = 8 - Shift; + + /* Get the font and pixel pointer (2nd byte) */ + FontChar = GetFontPtr(Character); + PixelPtr = (PUCHAR)VgaBase + (Left >> 3) + (Top * 80) + 1; + + /* Loop all pixel rows */ + Height = BOOTCHAR_HEIGHT; do { - /* Check if we should draw this pixel */ -#ifdef CHAR_GEN_UPSIDE_DOWN - if (FontChar[i] & (UCHAR)j) -#else - /* Normal character generator (top of char is first element) */ - if (FontChar[BOOTCHAR_HEIGHT - i] & (UCHAR)j) -#endif - { - /* We do, use the given Text Color */ - SetPixel(XOffset, Top, (UCHAR)TextColor); - } - else if (BackTextColor < 16) - { - /* This is a background pixel. */ - /* We're drawing it unless it's transparent. */ - SetPixel(XOffset, Top, (UCHAR)BackTextColor); - } + SET_PIXELS(PixelPtr, *FontChar << Shift, TextColor); + PixelPtr += 80; + FontChar++; + } while (--Height); + } - /* Increase X Offset */ - XOffset++; - } while (j >>= 1); + /* Check if the background color is transparent */ + if (BackColor >= 16) + { + /* We are done */ + return; + } - /* Move to the next Y ordinate */ - Top++; - } while (--i); + /* Calculate shift */ + Shift = Left & 7; + + /* Get the font and pixel pointer */ + FontChar = GetFontPtr(Character); + PixelPtr = (PUCHAR)VgaBase + (Left >> 3) + (Top * 80); + + /* Loop all pixel rows */ + Height = BOOTCHAR_HEIGHT; + do + { + SET_PIXELS(PixelPtr, ~*FontChar >> Shift, BackColor); + PixelPtr += 80; + FontChar++; + } while (--Height); + + /* Check if we need to update neighbor bytes */ + if (Shift) + { + /* Calculate shift for 2nd byte */ + Shift = 8 - Shift; + + /* Get the font and pixel pointer (2nd byte) */ + FontChar = GetFontPtr(Character); + PixelPtr = (PUCHAR)VgaBase + (Left >> 3) + (Top * 80) + 1; + + /* Loop all pixel rows */ + Height = BOOTCHAR_HEIGHT; + do + { + SET_PIXELS(PixelPtr, ~*FontChar << Shift, BackColor); + PixelPtr += 80; + FontChar++; + } while (--Height); + } } VOID From 61204b265b4dad396e891530b81943abfa5c0ae4 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 9 Jan 2013 12:53:59 +0000 Subject: [PATCH 94/96] [BOOTVID] Fix support for CHAR_GEN_UPSIDE_DOWN svn path=/trunk/; revision=58149 --- reactos/drivers/base/bootvid/i386/vga.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/reactos/drivers/base/bootvid/i386/vga.c b/reactos/drivers/base/bootvid/i386/vga.c index 4ec6ebe1aaf..d4d90dbe15d 100644 --- a/reactos/drivers/base/bootvid/i386/vga.c +++ b/reactos/drivers/base/bootvid/i386/vga.c @@ -182,7 +182,7 @@ DisplayCharacter(CHAR Character, { SET_PIXELS(PixelPtr, *FontChar << Shift, TextColor); PixelPtr += 80; - FontChar++; + FontChar += FONT_PTR_DELTA; } while (--Height); } @@ -206,7 +206,7 @@ DisplayCharacter(CHAR Character, { SET_PIXELS(PixelPtr, ~*FontChar >> Shift, BackColor); PixelPtr += 80; - FontChar++; + FontChar += FONT_PTR_DELTA; } while (--Height); /* Check if we need to update neighbor bytes */ @@ -225,7 +225,7 @@ DisplayCharacter(CHAR Character, { SET_PIXELS(PixelPtr, ~*FontChar << Shift, BackColor); PixelPtr += 80; - FontChar++; + FontChar += FONT_PTR_DELTA; } while (--Height); } } From 4fffa4fbc62d2a0365de5dab0ba522f627ecac75 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 9 Jan 2013 13:22:14 +0000 Subject: [PATCH 95/96] [BOOTVID] Rename a global variable to silence a VS analyze warning. svn path=/trunk/; revision=58150 --- reactos/drivers/base/bootvid/i386/vga.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/reactos/drivers/base/bootvid/i386/vga.c b/reactos/drivers/base/bootvid/i386/vga.c index d4d90dbe15d..ae66001bc89 100644 --- a/reactos/drivers/base/bootvid/i386/vga.c +++ b/reactos/drivers/base/bootvid/i386/vga.c @@ -63,7 +63,7 @@ ULONG lookup[16] = 0x1111, }; -ULONG TextColor = 0xF; +ULONG VidTextColor = 0xF; ULONG curr_x = 0; ULONG curr_y = 0; BOOLEAN CarriageReturn = FALSE; @@ -689,8 +689,8 @@ VidSetTextColor(ULONG Color) ULONG OldColor; /* Save the old color and set the new one */ - OldColor = TextColor; - TextColor = Color; + OldColor = VidTextColor; + VidTextColor = Color; return OldColor; } @@ -824,7 +824,7 @@ VidDisplayString(PUCHAR String) } /* Display this character */ - DisplayCharacter(*String, curr_x, curr_y, TextColor, 16); + DisplayCharacter(*String, curr_x, curr_y, VidTextColor, 16); curr_x += 8; /* Check if we should scroll */ From 296c68fb57480cbbd2fe3e5360db2c80c4849105 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Wed, 9 Jan 2013 17:19:26 +0000 Subject: [PATCH 96/96] [UNIATA] * Sync to 0.44c3. CORE-6649 #resolve #comment Committed in r58151. Thanks Alter ;) CORE-6563 svn path=/trunk/; revision=58151 --- reactos/drivers/storage/ide/uniata/atapi.h | 10 ++- reactos/drivers/storage/ide/uniata/id_ata.cpp | 79 ++++++++++++++----- 2 files changed, 68 insertions(+), 21 deletions(-) diff --git a/reactos/drivers/storage/ide/uniata/atapi.h b/reactos/drivers/storage/ide/uniata/atapi.h index f191a784535..68a7cddfb00 100644 --- a/reactos/drivers/storage/ide/uniata/atapi.h +++ b/reactos/drivers/storage/ide/uniata/atapi.h @@ -533,8 +533,16 @@ typedef union _ATAPI_REGISTERS_2 { // ATAPI interrupt reasons // +// for IDX_ATAPI_IO1_i_InterruptReason #define ATAPI_IR_COD 0x01 -#define ATAPI_IR_IO 0x02 +#define ATAPI_IR_COD_Data 0x0 +#define ATAPI_IR_COD_Cmd 0x1 + +#define ATAPI_IR_IO 0x02 +#define ATAPI_IR_IO_toDev 0x00 +#define ATAPI_IR_IO_toHost 0x02 + +#define ATAPI_IR_Mask 0x03 // // ATA Features diff --git a/reactos/drivers/storage/ide/uniata/id_ata.cpp b/reactos/drivers/storage/ide/uniata/id_ata.cpp index fc1c0201f54..c49fd41f84a 100644 --- a/reactos/drivers/storage/ide/uniata/id_ata.cpp +++ b/reactos/drivers/storage/ide/uniata/id_ata.cpp @@ -725,16 +725,23 @@ AtapiSoftReset( } } else { AtapiStallExecution(500); + GetBaseStatus(chan, statusByte2); AtapiWritePort1(chan, IDX_IO1_o_Command, IDE_COMMAND_ATAPI_RESET); - AtapiStallExecution(30); - // Wait for BUSY assertion, in some cases delay may occure - while (!(AtapiReadPort1(chan, IDX_IO1_i_Status) & IDE_STATUS_BUSY) && - i--) - { - AtapiStallExecution(30); + // Do not wait for BUSY assertion if it was initially set, jump to + // BUSY release wait loop + if(!(statusByte2 & IDE_STATUS_BUSY)) { + // Wait for BUSY assertion, in some cases delay may occure + // 100ms should be enough + i = 10*1000; + while (!(AtapiReadPort1(chan, IDX_IO1_i_Status) & IDE_STATUS_BUSY) && + i--) + { + AtapiStallExecution(10); + } } + i = 30 * 1000; // ReactOS modification: Already stop looping when we know that the drive has finished resetting. // Not all controllers clear the IDE_STATUS_BUSY flag (e.g. not the VMware one), so ensure that // the maximum waiting time (30 * i = 0.9 seconds) does not exceed the one of the original @@ -4492,7 +4499,7 @@ skip_dma_stat_check: KdPrint2((PRINT_PREFIX " OurInterrupt = %d\n", OurInterrupt)); return OurInterrupt; } - interruptReason = (AtapiReadPort1(chan, IDX_ATAPI_IO1_i_InterruptReason) & 0x3); + interruptReason = (AtapiReadPort1(chan, IDX_ATAPI_IO1_i_InterruptReason) & ATAPI_IR_Mask); KdPrint3((PRINT_PREFIX "AtapiCheckInterrupt__: ATAPI int reason %x\n", interruptReason)); return OurInterrupt; } @@ -4847,7 +4854,7 @@ try_dpc_wait: if(deviceExtension->HwFlags & UNIATA_AHCI) { KdPrint3((PRINT_PREFIX " AHCI branch (ATAPI)\n")); } else { - interruptReason = (AtapiReadPort1(chan, IDX_ATAPI_IO1_i_InterruptReason) & 0x3); + interruptReason = (AtapiReadPort1(chan, IDX_ATAPI_IO1_i_InterruptReason) & ATAPI_IR_Mask); KdPrint3((PRINT_PREFIX "AtapiInterrupt: iReason %x\n", interruptReason)); } @@ -5016,7 +5023,7 @@ continue_err: } } } else { - interruptReason = (AtapiReadPort1(chan, IDX_ATAPI_IO1_i_InterruptReason) & 0x3); + interruptReason = (AtapiReadPort1(chan, IDX_ATAPI_IO1_i_InterruptReason) & ATAPI_IR_Mask); KdPrint3((PRINT_PREFIX "AtapiInterrupt: ATAPI Error, int reason %x\n", interruptReason)); if(DmaTransfer && (chan->lun[DeviceNumber]->TransferMode > ATA_UDMA2) && @@ -5086,7 +5093,7 @@ continue_PIO: KdPrint2((PRINT_PREFIX "AtapiInterrupt: ATAPI branch\n")); // ATAPI branch - interruptReason = (AtapiReadPort1(chan, IDX_ATAPI_IO1_i_InterruptReason) & 0x3); + interruptReason = (AtapiReadPort1(chan, IDX_ATAPI_IO1_i_InterruptReason) & ATAPI_IR_Mask); KdPrint3((PRINT_PREFIX "AtapiInterrupt: iReason %x\n", interruptReason)); if(DmaTransfer) { wordsThisInterrupt = DEV_BSIZE/2*512; @@ -5113,10 +5120,10 @@ continue_PIO: if (srb->SrbFlags & SRB_FLAGS_DATA_IN) { - interruptReason = 0x2; + interruptReason = ATAPI_IR_IO_toHost; } else if (srb->SrbFlags & SRB_FLAGS_DATA_OUT) { - interruptReason = 0x0; + interruptReason = ATAPI_IR_IO_toDev; } else { status = SRB_STATUS_ERROR; @@ -5164,13 +5171,13 @@ IntrPrepareResetController: goto ReturnEnableIntr; } else { - interruptReason = (srb->SrbFlags & SRB_FLAGS_DATA_IN) ? 0x2 : 0x0; + interruptReason = (srb->SrbFlags & SRB_FLAGS_DATA_IN) ? ATAPI_IR_IO_toHost : ATAPI_IR_IO_toDev; } } else { // Command complete - verify, write, or the SMART enable/disable. // Also get_media_status - interruptReason = 0x3; + interruptReason = ATAPI_IR_IO_toHost | ATAPI_IR_COD_Cmd; } } } @@ -5196,7 +5203,7 @@ IntrPrepareResetController: chan->ChannelCtrlFlags &= ~CTRFLAGS_DMA_OPERATION; goto CompleteRequest; } else - if (interruptReason == 0x1 && (statusByte & IDE_STATUS_DRQ)) { + if (interruptReason == ATAPI_IR_COD_Cmd && (statusByte & IDE_STATUS_DRQ)) { // Write the packet. KdPrint3((PRINT_PREFIX "AtapiInterrupt: Writing Atapi packet.\n")); // Send CDB to device. @@ -5212,7 +5219,7 @@ IntrPrepareResetController: goto ReturnEnableIntr; - } else if (interruptReason == 0x0 && (statusByte & IDE_STATUS_DRQ)) { + } else if (interruptReason == ATAPI_IR_IO_toDev && (statusByte & IDE_STATUS_DRQ)) { // Write the data. if (atapiDev) { @@ -5319,7 +5326,7 @@ IntrPrepareResetController: goto ReturnEnableIntr; - } else if (interruptReason == 0x2 && (statusByte & IDE_STATUS_DRQ)) { + } else if (interruptReason == ATAPI_IR_IO_toHost && (statusByte & IDE_STATUS_DRQ)) { if (atapiDev) { @@ -5515,7 +5522,7 @@ IntrPrepareResetController: goto ReturnEnableIntr; - } else if (interruptReason == 0x3 && !(statusByte & IDE_STATUS_DRQ)) { + } else if (interruptReason == (ATAPI_IR_IO_toHost | ATAPI_IR_COD_Cmd) && !(statusByte & IDE_STATUS_DRQ)) { KdPrint2((PRINT_PREFIX "AtapiInterrupt: interruptReason = CompleteRequest\n")); // Command complete. @@ -5663,7 +5670,8 @@ CompleteRequest: AtaReq->OriginalSrb); } else { - // last request was illegal. No point trying again + // last request was illegal. No point trying again. + // Do-nothing call ? AtapiHwInitializeChanger (HwDeviceExtension, srb, (PMECHANICAL_STATUS_INFORMATION_HEADER) NULL); @@ -5706,6 +5714,7 @@ CompleteRequest: if (AtaReq->OriginalSrb) { KdPrint2((PRINT_PREFIX "AtapiInterrupt: call AtapiHwInitializeChanger()\n")); + // Do-nothing call ? AtapiHwInitializeChanger (HwDeviceExtension, srb, (PMECHANICAL_STATUS_INFORMATION_HEADER) NULL); @@ -6756,7 +6765,7 @@ AtapiSendCommand( //ULONG ldev = GET_LDEV(Srb); ULONG DeviceNumber = GET_CDEV(Srb); ULONG flags; - UCHAR statusByte,byteCountLow,byteCountHigh; + UCHAR statusByte,statusByte0,byteCountLow,byteCountHigh; BOOLEAN use_dma = FALSE; BOOLEAN dma_reinited = FALSE; BOOLEAN retried = FALSE; @@ -6901,9 +6910,27 @@ AtapiSendCommand( KdPrint2((PRINT_PREFIX "AtapiSendCommand: SRB_STATUS_PENDING (2)\n")); return srbStatus; } else { + + // failed! Get the sense key and maybe try again + AtaReq->Srb = BuildRequestSenseSrb ( HwDeviceExtension, + AtaReq->OriginalSrb); + + srbStatus = AtapiSendCommand(HwDeviceExtension, AtaReq->Srb, CMD_ACTION_ALL); + + KdPrint3((PRINT_PREFIX "AtapiSendCommand: chan->ExpectingInterrupt %d (1)\n", chan->ExpectingInterrupt)); + + if (srbStatus == SRB_STATUS_PENDING) { + KdPrint2((PRINT_PREFIX "AtapiSendCommand: send orig SRB_STATUS_PENDING (2.1)\n")); + return srbStatus; + } + + // failed again ? should not get here + AtaReq->Srb = AtaReq->OriginalSrb; AtaReq->OriginalSrb = NULL; + KdPrint2((PRINT_PREFIX "AtapiSendCommand: AtapiHwInitializeChanger()\n")); + // Do-nothing call ? AtapiHwInitializeChanger (HwDeviceExtension, Srb, (PMECHANICAL_STATUS_INFORMATION_HEADER) NULL); // fall out @@ -7395,6 +7422,8 @@ make_reset: if(g_opt_AtapiSendDisableIntr) { AtapiDisableInterrupts(deviceExtension, lChannel); } + // remember status. Later we may check if error appeared after cmd packet + statusByte0 = statusByte; // Write ATAPI packet command. AtapiWritePort1(chan, IDX_IO1_o_Command, IDE_COMMAND_ATAPI_PACKET); @@ -7442,9 +7471,19 @@ make_reset: GetStatus(chan, statusByte); KdPrint3((PRINT_PREFIX "AtapiSendCommand: cmd status (%#x)\n", statusByte)); + // When we operate in DMA mode, we should not start transfer when there is an error on entry + // Interrupt may never come in such case. if(statusByte & IDE_STATUS_ERROR) { + UCHAR interruptReason; + GetBaseStatus(chan, statusByte); KdPrint3((PRINT_PREFIX "AtapiSendCommand: Error on cmd: (%#x)\n", statusByte)); + + interruptReason = (AtapiReadPort1(chan, IDX_ATAPI_IO1_i_InterruptReason) & ATAPI_IR_Mask); + KdPrint3((PRINT_PREFIX "AtapiSendCommand: iReason %x\n", interruptReason)); + + // TODO: we should check interruptReason and decide what to do now + // Read the error reg. to clear it and fail this request. AtaReq->ReqState = REQ_STATE_TRANSFER_COMPLETE; return MapError(deviceExtension, Srb);