Sync with trunk revision r58045 to bring the corrections on configure.cmd and on widl/wpp.

svn path=/branches/ros-csrss/; revision=58046
This commit is contained in:
Hermès Bélusca-Maïto 2012-12-29 20:57:10 +00:00
parent f44e914e80
commit dba80b614b
52 changed files with 466 additions and 282 deletions

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = AbiWord Name = AbiWord
Version = 2.9.2 Version = 2.9.4
Licence = GPL Licence = GPL
Description = Word processor. Description = Word processor.
Size = 9.33MB Size = 9.4MB
Category = 6 Category = 6
URLSite = http://www.abisource.com/ 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 CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = BitTorrent Name = BitTorrent
Version = 7.7 Version = 7.7.2
Licence = Freeware for non-commercial uses Licence = Freeware for non-commercial uses
Description = The Original BitTorrent Client. Description = The Original BitTorrent Client.
Size = 5.78MB Size = 956KB
Category = 5 Category = 5
URLSite = http://www.bittorrent.com/ 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 CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = Fox Audio Player Name = Fox Audio Player
Version = 0.9.1 Version = 0.9.2
Licence = GPL Licence = GPL
Description = Simple and lightweight audio player. Description = Simple and lightweight audio player.
Size = 1.86MB Size = 1.86MB
Category = 1 Category = 1
URLSite = http://foxaudioplayer.sourceforge.net/ 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 CDPath = none
[Section.0407] [Section.0407]

View file

@ -1,33 +1,33 @@
; UTF-8 ; UTF-8
[Section] [Section]
Name = Mozilla Firefox 15 Name = Mozilla Firefox 17
Version = 15.0.1 Version = 17.0.1
Licence = MPL/GPL/LGPL Licence = MPL/GPL/LGPL
Description = The most popular and one of the best free Web Browsers out there. Description = The most popular and one of the best free Web Browsers out there.
Size = 15.8MB Size = 15.8MB
Category = 5 Category = 5
URLSite = http://www.mozilla.com/en-US/ 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 CDPath = none
[Section.0407] [Section.0407]
Description = Der populärste und einer der besten freien Webbrowser. Description = Der populärste und einer der besten freien Webbrowser.
Size = 15.7MB Size = 15.7MB
URLSite = http://www.mozilla-europe.org/de/ 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] [Section.040a]
Description = El más popular y uno de los mejores navegadores web gratuitos que hay. Description = El más popular y uno de los mejores navegadores web gratuitos que hay.
Size = 15.6MB Size = 15.6MB
URLSite = http://www.mozilla-europe.org/es/ 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] [Section.040c]
Description = Le navigateur web gratuit le plus populaire et l'un des meilleurs. Description = Le navigateur web gratuit le plus populaire et l'un des meilleurs.
Size = 15.9MB Size = 15.9MB
URLSite = http://www.mozilla-europe.org/fr/ 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] [Section.0413]
Description = De meest populaire en een van de beste gratis Web browsers. 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. Description = Mest populære og best også gratis nettleserene der ute.
Size = 15.6MB Size = 15.6MB
URLSite = http://www.mozilla-europe.org/no/ 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] [Section.0415]
Description = Najpopularniejsza i jedna z najlepszych darmowych przeglądarek internetowych. Description = Najpopularniejsza i jedna z najlepszych darmowych przeglądarek internetowych.
Size = 16.5MB Size = 16.5MB
URLSite = http://www.mozilla-europe.org/pl/ 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] [Section.0418]
Description = Cel mai popular și unul dintre cele mai bune navigatoare web gratuite existente. Description = Cel mai popular și unul dintre cele mai bune navigatoare web gratuite existente.
Size = 16.1Mo Size = 16.1Mo
URLSite = http://www.mozilla-europe.org/ro/ 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] [Section.0419]
Description = Один из самых популярных и лучших бесплатных браузеров. Description = Один из самых популярных и лучших бесплатных браузеров.
Size = 16.1MB Size = 16.1MB
URLSite = http://www.mozilla-europe.org/ru/ 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] [Section.041b]
Description = Najpopulárnejší a jeden z najlepších slobodný webových prehliadačov. Description = Najpopulárnejší a jeden z najlepších slobodný webových prehliadačov.
Size = 16.3MB Size = 16.3MB
URLSite = http://www.mozilla-europe.org/sk/ 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] [Section.0422]
Description = Найпопулярніший та один з кращих безплатних веб-браузерів. Description = Найпопулярніший та один з кращих безплатних веб-браузерів.
Size = 16.1MB Size = 16.1MB
URLSite = http://www.mozilla-europe.org/uk/ 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

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = IrfanView Name = IrfanView
Version = 4.33 Version = 4.35
Licence = Freeware (for personal use) Licence = Freeware (for personal use)
Description = Viewer for all kinds of graphics/audio files/video files. Description = Viewer for all kinds of graphics/audio files/video files.
Size = 1.46MB Size = 1.46MB
Category = 3 Category = 3
URLSite = http://www.irfanview.com/ 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 CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = IrfanView Plugins Name = IrfanView Plugins
Version = 4.33 Version = 4.35
Licence = Freeware (for personal use) Licence = Freeware (for personal use)
Description = Additional Plugins for supporting more file types. Description = Additional Plugins for supporting more file types.
Size = 8.92MB Size = 8.92MB
Category = 3 Category = 3
URLSite = http://www.irfanview.com/ 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 CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = LibreOffice Name = LibreOffice
Version = 3.6.1 Version = 3.6.4
Licence = LGPL Licence = LGPL
Description = Former called OpenOffice. Open Source Office Suite. Description = Former called OpenOffice. Open Source Office Suite.
Size = 200.0MB Size = 200.0MB
Category = 6 Category = 6
URLSite = http://www.documentfoundation.org/ 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 CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = Miranda IM Name = Miranda IM
Version = 0.10.2 Version = 0.10.9
Licence = GPL Licence = GPL
Description = Open source multiprotocol instant messaging application - May not work completely. Description = Open source multiprotocol instant messaging application - May not work completely.
Size = 3.1MB Size = 3.1MB
Category = 5 Category = 5
URLSite = http://www.miranda-im.org/ 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 CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = mIRC 7 Name = mIRC 7
Version = 7.25 Version = 7.27
Licence = Shareware Licence = Shareware
Description = The most popular client for the Internet Relay Chat (IRC). Description = The most popular client for the Internet Relay Chat (IRC).
Size = 1.82MB Size = 1.82MB
Category = 5 Category = 5
URLSite = http://www.mirc.com/ URLSite = http://www.mirc.com/
URLDownload = http://download.mirc.com/5/mirc725.exe URLDownload = http://download.mirc.com/6/mirc727.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = Media Player Classic Home Cinema Name = Media Player Classic Home Cinema
Version = 1.6.3.5818 Version = 1.6.5.6366
Licence = GPL Licence = GPL
Description = A media player. Description = A media player.
Size = 7.0MB Size = 7.0MB
Category = 1 Category = 1
URLSite = http://mpc-hc.sourceforge.net/ 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 CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = OpenTTD Name = OpenTTD
Version = 1.2.2 Version = 1.2.3
Licence = GPL v2 Licence = GPL v2
Description = Open Source clone of the "Transport Tycoon Deluxe" game engine. You need a copy of Transport Tycoon. Description = Open Source clone of the "Transport Tycoon Deluxe" game engine. You need a copy of Transport Tycoon.
Size = 4.4MB Size = 4.4MB
Category = 4 Category = 4
URLSite = http://www.openttd.org/ 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 CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = Opera Name = Opera
Version = 12.02 Version = 12.12
Licence = Freeware Licence = Freeware
Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client. Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client.
Size = 12.00MB Size = 12.00MB
Category = 5 Category = 5
URLSite = http://www.opera.com/ 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 CDPath = none
[Section.0405] [Section.0405]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = ReactOS Build Environment Name = ReactOS Build Environment
Version = 2.0 Version = 2.1
Licence = GPL Licence = GPL
Description = Allows you to build the ReactOS Source. For more instructions see ReactOS wiki. Description = Allows you to build the ReactOS Source. For more instructions see ReactOS wiki.
Size = 17.8MB Size = 30.8MB
Category = 7 Category = 7
URLSite = http://reactos.org/wiki/Build_Environment 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 CDPath = none
[Section.0405] [Section.0405]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = SciTE Name = SciTE
Version = 3.2.2 Version = 3.2.3
Licence = Freeware 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. 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 Size = 685kB
Category = 7 Category = 7
URLSite = http://www.scintilla.org/ 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 CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,50 +2,50 @@
[Section] [Section]
Name = Mozilla SeaMonkey Name = Mozilla SeaMonkey
Version = 2.12 Version = 2.14.1
Licence = MPL/GPL/LGPL 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. 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 Category = 5
URLSite = http://www.seamonkey-project.org/ 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 CDPath = none
[Section.0407] [Section.0407]
Description = Mozilla Suite lebt. Dies ist das einzige Browser-, Mail-, Chat- and Composerwerkzeug-Bundle welches Sie benötigen. Description = Mozilla Suite lebt. Dies ist das einzige Browser-, Mail-, Chat- and Composerwerkzeug-Bundle welches Sie benötigen.
Size = 19.0MB Size = 20.0MB
URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.12/win32/de/SeaMonkey%20Setup%202.12.exe URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/de/SeaMonkey%20Setup%202.14.1.exe
[Section.040a] [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. 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 Size = 19.9MB
URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.12/win32/es-ES/SeaMonkey%20Setup%202.12.exe URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/es-ES/SeaMonkey%20Setup%202.14.1.exe
[Section.040c] [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. 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 Size = 20.2MB
URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.12/win32/fr/SeaMonkey%20Setup%202.12.exe URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/fr/SeaMonkey%20Setup%202.14.1.exe
[Section.0413] [Section.0413]
Description = Mozilla Suite bundelt alle applicaties voor het Web: Browser, Mail, Chat, Composer. Description = Mozilla Suite bundelt alle applicaties voor het Web: Browser, Mail, Chat, Composer.
Size = 19.6MB Size = 20.6MB
URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.11/win32/nl/SeaMonkey%20Setup%202.11.exe URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/nl/SeaMonkey%20Setup%202.14.1.exe
[Section.0415] [Section.0415]
Description = Pakiet Mozilla żyje. W zestawie: przeglądarka, klient poczty, IRC oraz Edytor HTML - wszystko, czego potrzebujesz. Description = Pakiet Mozilla żyje. W zestawie: przeglądarka, klient poczty, IRC oraz Edytor HTML - wszystko, czego potrzebujesz.
Size = 19.8MB Size = 20.8MB
URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.12/win32/pl/SeaMonkey%20Setup%202.12.exe URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/pl/SeaMonkey%20Setup%202.14.1.exe
[Section.0418] [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. 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] [Section.0419]
Description = Продолжение Mozilla Suite. Включает браузер, почтовый клиент, IRC-клиент и HTML-редактор. Description = Продолжение Mozilla Suite. Включает браузер, почтовый клиент, IRC-клиент и HTML-редактор.
Size = 19.5MB Size = 20.5MB
URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.12/win32/ru/SeaMonkey%20Setup%202.12.exe URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/ru/SeaMonkey%20Setup%202.14.1.exe
[Section.0422] [Section.0422]
Description = Продовження Mozilla Suite. Включає в себе браузер, поштовий клієнт, IRC-клієнт та HTML-редактор. Description = Продовження Mozilla Suite. Включає в себе браузер, поштовий клієнт, IRC-клієнт та HTML-редактор.
Size = 19.5MB Size = 20.5MB
URLDownload = http://ftp.df.lth.se/mozilla/seamonkey/releases/2.12/win32/ru/SeaMonkey%20Setup%202.12.exe URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.14.1/win32/ru/SeaMonkey%20Setup%202.14.1.exe

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = SMPlayer Name = SMPlayer
Version = 0.8.0 Version = 0.8.3
Licence = GPL Licence = GPL
Description = SMPlayer. Description = SMPlayer.
Size = 15.7MB Size = 15.7MB
Category = 1 Category = 1
URLSite = http://smplayer.sourceforge.net/ 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 CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = SumatraPDF Name = SumatraPDF
Version = 2.1.1 Version = 2.2
Licence = GPLv3 Licence = GPLv3
Description = Sumatra PDF is a slim, free, open-source PDF reader. Portable out of the box. Description = Sumatra PDF is a slim, free, open-source PDF reader. Portable out of the box.
Size = 4.2MB Size = 4.8MB
Category = 6 Category = 6
URLSite = http://blog.kowalczyk.info/software/sumatrapdf/free-pdf-reader.html 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 CDPath = none
[Section.0407] [Section.0407]

View file

@ -1,33 +1,33 @@
; UTF-8 ; UTF-8
[Section] [Section]
Name = Mozilla Thunderbird 15 Name = Mozilla Thunderbird 17
Version = 15.0 Version = 17.0
Licence = MPL/GPL/LGPL Licence = MPL/GPL/LGPL
Description = The most popular and one of the best free Mail Clients out there. Description = The most popular and one of the best free Mail Clients out there.
Size = 17.6MB Size = 17.6MB
Category = 5 Category = 5
URLSite = http://www.mozilla-europe.org/en/products/thunderbird/ 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 CDPath = none
[Section.0407] [Section.0407]
Description = Der populärste und einer der besten freien Mail-Clients. Description = Der populärste und einer der besten freien Mail-Clients.
Size = 17.5MB Size = 17.5MB
URLSite = http://www.mozilla-europe.org/de/products/thunderbird/ 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] [Section.040a]
Description = El más popular y uno de los mejores clientes mail que hay. Description = El más popular y uno de los mejores clientes mail que hay.
Size = 17.4MB Size = 17.4MB
URLSite = http://www.mozilla-europe.org/es/products/thunderbird/ 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] [Section.040c]
Description = Le plus populaire et l'un des meilleurs clients mail gratuits disponible. Description = Le plus populaire et l'un des meilleurs clients mail gratuits disponible.
Size = 17.8MB Size = 17.8MB
URLSite = http://www.mozilla-europe.org/fr/products/thunderbird/ 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] [Section.0413]
Description = De meest populaire en een van de beste gratis e-mail-programma's. 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. Description = Najpopularniejszy i jeden z najlepszych darmowych klientów poczty.
Size = 18.3MB Size = 18.3MB
URLSite = http://www.mozilla-europe.org/pl/products/thunderbird/ 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] [Section.0418]
Description = Cel mai popular și unul dintre cele mai bune clientele gratuite de poștă electronică. Description = Cel mai popular și unul dintre cele mai bune clientele gratuite de poștă electronică.
Size = 18.0Mo Size = 18.0Mo
URLSite = http://www.mozilla-europe.org/ro/products/thunderbird/ 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] [Section.0419]
Description = Один из самых популярных и лучших бесплатных почтовых клиентов. Description = Один из самых популярных и лучших бесплатных почтовых клиентов.
Size = 17.9MB Size = 17.9MB
URLSite = http://www.mozilla-europe.org/ru/products/thunderbird/ 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] [Section.0422]
Description = Найпопулярніший та один з кращих поштових клієнтів. Description = Найпопулярніший та один з кращих поштових клієнтів.
Size = 17.9MB Size = 17.9MB
URLSite = http://www.mozillamessaging.com/uk/thunderbird/ 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

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = UltraVNC Name = UltraVNC
Version = 1.0.9.6.2 Version = 1.1.8.0
Licence = GPL Licence = GPL
Description = Open-source VNC client/server. Description = Open-source VNC client/server.
Size = 2.19MB Size = 2.19MB
Category = 5 Category = 5
URLSite = http://www.uvnc.com/ 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 CDPath = none
[Section.040a] [Section.040a]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = µTorrent Name = µTorrent
Version = 3.2 Version = 3.2.3
Licence = Freeware for non-commercial uses Licence = Freeware for non-commercial uses
Description = Small and fast BitTorrent Client. Description = Small and fast BitTorrent Client.
Size = 874.87kB Size = 946.00kB
Category = 5 Category = 5
URLSite = http://www.utorrent.com/ 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 CDPath = none

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = VLC media player Name = VLC media player
Version = 2.0.3 Version = 2.0.5
Licence = GPL Licence = GPL
Description = A media player. Description = A media player.
Size = 21.6MB Size = 21.9MB
Category = 1 Category = 1
URLSite = http://www.videolan.org/vlc/ 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 CDPath = none
[Section.0407] [Section.0407]

View file

@ -1,5 +1,12 @@
@echo off @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% :: Special case %1 = arm_hosttools %2 = vcvarsall.bat %3 = %CMAKE_GENERATOR%
if /I "%1" == "arm_hosttools" ( if /I "%1" == "arm_hosttools" (
echo Configuring x86 host tools for ARM cross build echo Configuring x86 host tools for ARM cross build
@ -46,7 +53,7 @@ if defined ROS_ARCH (
set USE_WDK_HEADERS=0 set USE_WDK_HEADERS=0
) else if defined VCINSTALLDIR ( ) 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 "x86" > NUL && set ARCH=i386
cl 2>&1 | find "x64" > NUL && set ARCH=amd64 cl 2>&1 | find "x64" > NUL && set ARCH=amd64
cl 2>&1 | find "ARM" > NUL && set ARCH=arm cl 2>&1 | find "ARM" > NUL && set ARCH=arm
@ -59,30 +66,30 @@ if defined ROS_ARCH (
exit /b exit /b
) )
echo Detected Visual Studio Environment %BUILD_ENVIRONMENT%-%ARCH% echo Detected Visual Studio Environment !BUILD_ENVIRONMENT!-!ARCH!
if /I "%1" == "VSSolution" ( if /I "%1" == "VSSolution" (
if "%BUILD_ENVIRONMENT%" == "VS8" ( if "!BUILD_ENVIRONMENT!" == "VS8" (
if "%ARCH%" == "amd64" ( if "!ARCH!" == "amd64" (
set CMAKE_GENERATOR="Visual Studio 8 2005 Win64" set CMAKE_GENERATOR="Visual Studio 8 2005 Win64"
) else ( ) else (
set CMAKE_GENERATOR="Visual Studio 8 2005" set CMAKE_GENERATOR="Visual Studio 8 2005"
) )
) else if "%BUILD_ENVIRONMENT%" == "VS9" ( ) else if "!BUILD_ENVIRONMENT!" == "VS9" (
if "%ARCH%" == "amd64" ( if "!ARCH!" == "amd64" (
set CMAKE_GENERATOR="Visual Studio 9 2008 Win64" set CMAKE_GENERATOR="Visual Studio 9 2008 Win64"
) else ( ) else (
set CMAKE_GENERATOR="Visual Studio 9 2008" set CMAKE_GENERATOR="Visual Studio 9 2008"
) )
) else if "%BUILD_ENVIRONMENT%" == "VS10" ( ) else if "!BUILD_ENVIRONMENT!" == "VS10" (
if "%ARCH%" == "amd64" ( if "!ARCH!" == "amd64" (
set CMAKE_GENERATOR="Visual Studio 10 Win64" set CMAKE_GENERATOR="Visual Studio 10 Win64"
) else ( ) else (
set CMAKE_GENERATOR="Visual Studio 10" set CMAKE_GENERATOR="Visual Studio 10"
) )
) else if "%BUILD_ENVIRONMENT%" == "VS11" ( ) else if "!BUILD_ENVIRONMENT!" == "VS11" (
if "%ARCH%" == "amd64" ( if "!ARCH!" == "amd64" (
set CMAKE_GENERATOR="Visual Studio 11 Win64" set CMAKE_GENERATOR="Visual Studio 11 Win64"
) else if "%ARCH%" == "arm" ( ) else if "!ARCH!" == "arm" (
set CMAKE_GENERATOR="Visual Studio 11 ARM" set CMAKE_GENERATOR="Visual Studio 11 ARM"
) else ( ) else (
set CMAKE_GENERATOR="Visual Studio 11" set CMAKE_GENERATOR="Visual Studio 11"
@ -111,7 +118,7 @@ if defined ROS_ARCH (
:: Checkpoint :: Checkpoint
if not defined ARCH ( if not defined ARCH (
echo unknown build architecture echo Unknown build architecture
exit /b exit /b
) )

View file

@ -64,7 +64,8 @@ NET_API_STATUS WINAPI NetApiBufferReallocate(LPVOID OldBuffer, DWORD NewByteCoun
} }
else else
{ {
if (!HeapFree(GetProcessHeap(), 0, OldBuffer)) return GetLastError(); if (!HeapFree(GetProcessHeap(), 0, OldBuffer))
return GetLastError();
*NewBuffer = 0; *NewBuffer = 0;
return NERR_Success; return NERR_Success;
} }

View file

@ -97,6 +97,7 @@ NTSTATUS
SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject, SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject,
IN LPWSTR ContainerName, IN LPWSTR ContainerName,
IN LPWSTR ObjectName, IN LPWSTR ObjectName,
IN ULONG RelativeId,
IN SAM_DB_OBJECT_TYPE ObjectType, IN SAM_DB_OBJECT_TYPE ObjectType,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
OUT PSAM_DB_OBJECT *DbObject) OUT PSAM_DB_OBJECT *DbObject)
@ -223,7 +224,7 @@ SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject,
NewObject->Name = RtlAllocateHeap(RtlGetProcessHeap(), NewObject->Name = RtlAllocateHeap(RtlGetProcessHeap(),
0, 0,
(wcslen(ObjectName) + 1) * sizeof(WCHAR)); (wcslen(ObjectName) + 1) * sizeof(WCHAR));
if (NewObject == NULL) if (NewObject->Name == NULL)
{ {
if (MembersKeyHandle != NULL) if (MembersKeyHandle != NULL)
NtClose(MembersKeyHandle); NtClose(MembersKeyHandle);
@ -240,6 +241,7 @@ SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject,
NewObject->Access = DesiredAccess; NewObject->Access = DesiredAccess;
NewObject->KeyHandle = ObjectKeyHandle; NewObject->KeyHandle = ObjectKeyHandle;
NewObject->MembersKeyHandle = MembersKeyHandle; NewObject->MembersKeyHandle = MembersKeyHandle;
NewObject->RelativeId = RelativeId;
NewObject->ParentObject = ParentObject; NewObject->ParentObject = ParentObject;
if (ParentObject != NULL) if (ParentObject != NULL)
@ -255,6 +257,7 @@ NTSTATUS
SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject, SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject,
IN LPWSTR ContainerName, IN LPWSTR ContainerName,
IN LPWSTR ObjectName, IN LPWSTR ObjectName,
IN ULONG RelativeId,
IN SAM_DB_OBJECT_TYPE ObjectType, IN SAM_DB_OBJECT_TYPE ObjectType,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
OUT PSAM_DB_OBJECT *DbObject) OUT PSAM_DB_OBJECT *DbObject)
@ -374,7 +377,7 @@ SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject,
NewObject->Name = RtlAllocateHeap(RtlGetProcessHeap(), NewObject->Name = RtlAllocateHeap(RtlGetProcessHeap(),
0, 0,
(wcslen(ObjectName) + 1) * sizeof(WCHAR)); (wcslen(ObjectName) + 1) * sizeof(WCHAR));
if (NewObject == NULL) if (NewObject->Name == NULL)
{ {
if (MembersKeyHandle != NULL) if (MembersKeyHandle != NULL)
NtClose(MembersKeyHandle); NtClose(MembersKeyHandle);
@ -390,6 +393,7 @@ SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject,
NewObject->Access = DesiredAccess; NewObject->Access = DesiredAccess;
NewObject->KeyHandle = ObjectKeyHandle; NewObject->KeyHandle = ObjectKeyHandle;
NewObject->MembersKeyHandle = MembersKeyHandle; NewObject->MembersKeyHandle = MembersKeyHandle;
NewObject->RelativeId = RelativeId;
NewObject->ParentObject = ParentObject; NewObject->ParentObject = ParentObject;
if (ParentObject != NULL) if (ParentObject != NULL)

View file

@ -88,6 +88,7 @@ SamrConnect(IN PSAMPR_SERVER_NAME ServerName,
Status = SampOpenDbObject(NULL, Status = SampOpenDbObject(NULL,
NULL, NULL,
L"SAM", L"SAM",
0,
SamDbServerObject, SamDbServerObject,
DesiredAccess, DesiredAccess,
&ServerObject); &ServerObject);
@ -469,6 +470,7 @@ done:
return Status; return Status;
} }
/* Function 7 */ /* Function 7 */
NTSTATUS NTSTATUS
NTAPI NTAPI
@ -508,6 +510,7 @@ SamrOpenDomain(IN SAMPR_HANDLE ServerHandle,
Status = SampOpenDbObject(ServerObject, Status = SampOpenDbObject(ServerObject,
L"Domains", L"Domains",
L"Builtin", L"Builtin",
0,
SamDbDomainObject, SamDbDomainObject,
DesiredAccess, DesiredAccess,
&DomainObject); &DomainObject);
@ -523,6 +526,7 @@ SamrOpenDomain(IN SAMPR_HANDLE ServerHandle,
Status = SampOpenDbObject(ServerObject, Status = SampOpenDbObject(ServerObject,
L"Domains", L"Domains",
L"Account", L"Account",
0,
SamDbDomainObject, SamDbDomainObject,
DesiredAccess, DesiredAccess,
&DomainObject); &DomainObject);
@ -589,6 +593,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 static NTSTATUS
SampQueryDomainGeneral(PSAM_DB_OBJECT DomainObject, SampQueryDomainGeneral(PSAM_DB_OBJECT DomainObject,
PSAMPR_DOMAIN_INFO_BUFFER *Buffer) PSAMPR_DOMAIN_INFO_BUFFER *Buffer)
@ -651,9 +694,35 @@ SampQueryDomainGeneral(PSAM_DB_OBJECT DomainObject,
goto done; goto done;
} }
InfoBuffer->General.UserCount = 0; /* FIXME */ /* Get the number of Users in the Domain */
InfoBuffer->General.GroupCount = 0; /* FIXME */ Status = SampGetNumberOfAccounts(DomainObject,
InfoBuffer->General.AliasCount = 0; /* FIXME */ 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; *Buffer = InfoBuffer;
@ -1036,9 +1105,35 @@ SampQueryDomainGeneral2(PSAM_DB_OBJECT DomainObject,
goto done; goto done;
} }
InfoBuffer->General2.I1.UserCount = 0; /* FIXME */ /* Get the number of Users in the Domain */
InfoBuffer->General2.I1.GroupCount = 0; /* FIXME */ Status = SampGetNumberOfAccounts(DomainObject,
InfoBuffer->General2.I1.AliasCount = 0; /* FIXME */ 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; *Buffer = InfoBuffer;
@ -1535,6 +1630,7 @@ SamrSetInformationDomain(IN SAMPR_HANDLE DomainHandle,
return Status; return Status;
} }
/* Function 10 */ /* Function 10 */
NTSTATUS NTSTATUS
NTAPI NTAPI
@ -1616,6 +1712,7 @@ SamrCreateGroupInDomain(IN SAMPR_HANDLE DomainHandle,
Status = SampCreateDbObject(DomainObject, Status = SampCreateDbObject(DomainObject,
L"Groups", L"Groups",
szRid, szRid,
ulRid,
SamDbGroupObject, SamDbGroupObject,
DesiredAccess, DesiredAccess,
&GroupObject); &GroupObject);
@ -1981,6 +2078,7 @@ SamrCreateUserInDomain(IN SAMPR_HANDLE DomainHandle,
Status = SampCreateDbObject(DomainObject, Status = SampCreateDbObject(DomainObject,
L"Users", L"Users",
szRid, szRid,
ulRid,
SamDbUserObject, SamDbUserObject,
DesiredAccess, DesiredAccess,
&UserObject); &UserObject);
@ -2434,6 +2532,7 @@ SamrCreateAliasInDomain(IN SAMPR_HANDLE DomainHandle,
Status = SampCreateDbObject(DomainObject, Status = SampCreateDbObject(DomainObject,
L"Aliases", L"Aliases",
szRid, szRid,
ulRid,
SamDbAliasObject, SamDbAliasObject,
DesiredAccess, DesiredAccess,
&AliasObject); &AliasObject);
@ -3371,6 +3470,7 @@ SamrOpenGroup(IN SAMPR_HANDLE DomainHandle,
Status = SampOpenDbObject(DomainObject, Status = SampOpenDbObject(DomainObject,
L"Groups", L"Groups",
szRid, szRid,
GroupId,
SamDbGroupObject, SamDbGroupObject,
DesiredAccess, DesiredAccess,
&GroupObject); &GroupObject);
@ -3818,6 +3918,7 @@ SamrOpenAlias(IN SAMPR_HANDLE DomainHandle,
Status = SampOpenDbObject(DomainObject, Status = SampOpenDbObject(DomainObject,
L"Aliases", L"Aliases",
szRid, szRid,
AliasId,
SamDbAliasObject, SamDbAliasObject,
DesiredAccess, DesiredAccess,
&AliasObject); &AliasObject);
@ -4482,6 +4583,7 @@ SamrOpenUser(IN SAMPR_HANDLE DomainHandle,
Status = SampOpenDbObject(DomainObject, Status = SampOpenDbObject(DomainObject,
L"Users", L"Users",
szRid, szRid,
UserId,
SamDbUserObject, SamDbUserObject,
DesiredAccess, DesiredAccess,
&UserObject); &UserObject);
@ -6242,6 +6344,7 @@ SamrCreateUser2InDomain(IN SAMPR_HANDLE DomainHandle,
Status = SampCreateDbObject(DomainObject, Status = SampCreateDbObject(DomainObject,
L"Users", L"Users",
szRid, szRid,
ulRid,
SamDbUserObject, SamDbUserObject,
DesiredAccess, DesiredAccess,
&UserObject); &UserObject);

View file

@ -46,6 +46,7 @@ typedef struct _SAM_DB_OBJECT
LPWSTR Name; LPWSTR Name;
HANDLE KeyHandle; HANDLE KeyHandle;
HANDLE MembersKeyHandle; // only used by Aliases and Groups HANDLE MembersKeyHandle; // only used by Aliases and Groups
ULONG RelativeId;
struct _SAM_DB_OBJECT *ParentObject; struct _SAM_DB_OBJECT *ParentObject;
} SAM_DB_OBJECT, *PSAM_DB_OBJECT; } SAM_DB_OBJECT, *PSAM_DB_OBJECT;
@ -117,6 +118,7 @@ NTSTATUS
SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject, SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject,
IN LPWSTR ContainerName, IN LPWSTR ContainerName,
IN LPWSTR ObjectName, IN LPWSTR ObjectName,
IN ULONG RelativeId,
IN SAM_DB_OBJECT_TYPE ObjectType, IN SAM_DB_OBJECT_TYPE ObjectType,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
OUT PSAM_DB_OBJECT *DbObject); OUT PSAM_DB_OBJECT *DbObject);
@ -125,6 +127,7 @@ NTSTATUS
SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject, SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject,
IN LPWSTR ContainerName, IN LPWSTR ContainerName,
IN LPWSTR ObjectName, IN LPWSTR ObjectName,
IN ULONG RelativeId,
IN SAM_DB_OBJECT_TYPE ObjectType, IN SAM_DB_OBJECT_TYPE ObjectType,
IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK DesiredAccess,
OUT PSAM_DB_OBJECT *DbObject); OUT PSAM_DB_OBJECT *DbObject);

View file

@ -262,11 +262,68 @@ typedef enum _DOMAIN_SERVER_ROLE
DomainServerRolePrimary DomainServerRolePrimary
} DOMAIN_SERVER_ROLE, *PDOMAIN_SERVER_ROLE; } 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 typedef struct _DOMAIN_NAME_INFORMATION
{ {
UNICODE_STRING DomainName; UNICODE_STRING DomainName;
} DOMAIN_NAME_INFORMATION, *PDOMAIN_NAME_INFORMATION; } 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 typedef enum _GROUP_INFORMATION_CLASS
{ {
GroupGeneralInformation = 1, GroupGeneralInformation = 1,

View file

@ -143,12 +143,12 @@ typedef enum _DOMAIN_SERVER_ENABLE_STATE
DomainServerEnabled = 1, DomainServerEnabled = 1,
DomainServerDisabled DomainServerDisabled
} DOMAIN_SERVER_ENABLE_STATE, *PDOMAIN_SERVER_ENABLE_STATE; } DOMAIN_SERVER_ENABLE_STATE, *PDOMAIN_SERVER_ENABLE_STATE;
cpp_quote("#endif")
typedef struct _DOMAIN_STATE_INFORMATION typedef struct _DOMAIN_STATE_INFORMATION
{ {
DOMAIN_SERVER_ENABLE_STATE DomainServerState; DOMAIN_SERVER_ENABLE_STATE DomainServerState;
} DOMAIN_STATE_INFORMATION, *PDOMAIN_STATE_INFORMATION; } DOMAIN_STATE_INFORMATION, *PDOMAIN_STATE_INFORMATION;
cpp_quote("#endif")
cpp_quote("#ifndef _NTSAM_") cpp_quote("#ifndef _NTSAM_")
typedef enum _DOMAIN_SERVER_ROLE typedef enum _DOMAIN_SERVER_ROLE
@ -169,6 +169,7 @@ typedef struct _DOMAIN_PASSWORD_INFORMATION
} DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION; } DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION;
cpp_quote("#endif") cpp_quote("#endif")
cpp_quote("#ifndef _NTSAM_")
typedef struct _DOMAIN_LOGOFF_INFORMATION typedef struct _DOMAIN_LOGOFF_INFORMATION
{ {
OLD_LARGE_INTEGER ForceLogoff; OLD_LARGE_INTEGER ForceLogoff;
@ -178,6 +179,7 @@ typedef struct _DOMAIN_SERVER_ROLE_INFORMATION
{ {
DOMAIN_SERVER_ROLE DomainServerRole; DOMAIN_SERVER_ROLE DomainServerRole;
} DOMAIN_SERVER_ROLE_INFORMATION, *PDOMAIN_SERVER_ROLE_INFORMATION; } DOMAIN_SERVER_ROLE_INFORMATION, *PDOMAIN_SERVER_ROLE_INFORMATION;
cpp_quote("#endif")
typedef struct _DOMAIN_MODIFIED_INFORMATION typedef struct _DOMAIN_MODIFIED_INFORMATION
{ {

View file

@ -33,32 +33,33 @@ typedef struct _USER_HANDLE_TABLE
int allocated_handles; int allocated_handles;
} USER_HANDLE_TABLE, * PUSER_HANDLE_TABLE; } USER_HANDLE_TABLE, * PUSER_HANDLE_TABLE;
typedef enum _USER_OBJECT_TYPE typedef enum _HANDLE_TYPE
{ {
otFree = 0, TYPE_FREE = 0,
otWindow, TYPE_WINDOW = 1,
otMenu, TYPE_MENU = 2,
otCursorIcon, TYPE_CURSOR = 3,
otSMWP, TYPE_SETWINDOWPOS = 4,
otHook, TYPE_HOOK = 5,
otClipBoardData, TYPE_CLIPDATA = 6,
otCallProc, TYPE_CALLPROC = 7,
otAccel, TYPE_ACCELTABLE = 8,
otDDEaccess, TYPE_DDEACCESS = 9,
otDDEconv, TYPE_DDECONV = 10,
otDDExact, TYPE_DDEXACT = 11,
otMonitor, TYPE_MONITOR = 12,
otKBDlayout, TYPE_KBDLAYOUT = 13,
otKBDfile, TYPE_KBDFILE = 14,
otEvent, TYPE_WINEVENTHOOK = 15,
otTimer, TYPE_TIMER = 16,
otInputContext, TYPE_INPUTCONTEXT = 17,
otHidData, TYPE_HIDDATA = 18,
otDeviceInfo, TYPE_DEVICEINFO = 19,
otTouchInput, TYPE_TOUCHINPUTINFO = 20,
otGestureInfo, TYPE_GESTUREINFOOBJ = 21,
USER_HANDLE_TYPE_COUNT TYPE_CTYPES,
} USER_OBJECT_TYPE; TYPE_GENERIC = 255
} HANDLE_TYPE, *PHANDLE_TYPE;
typedef enum _USERTHREADINFOCLASS typedef enum _USERTHREADINFOCLASS
{ {

View file

@ -28,7 +28,7 @@ PACCELERATOR_TABLE FASTCALL UserGetAccelObject(HACCEL hAccel)
return NULL; return NULL;
} }
Accel = UserGetObject(gHandleTable, hAccel, otAccel); Accel = UserGetObject(gHandleTable, hAccel, TYPE_ACCELTABLE);
if (!Accel) if (!Accel)
{ {
EngSetLastError(ERROR_INVALID_ACCEL_HANDLE); EngSetLastError(ERROR_INVALID_ACCEL_HANDLE);
@ -257,7 +257,7 @@ NtUserCreateAcceleratorTable(
RETURN( (HACCEL) NULL ); 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) if (Accel == NULL)
{ {
@ -270,7 +270,7 @@ NtUserCreateAcceleratorTable(
if (Accel->Table == NULL) if (Accel->Table == NULL)
{ {
UserDereferenceObject(Accel); UserDereferenceObject(Accel);
UserDeleteObject(hAccel, otAccel); UserDeleteObject(hAccel, TYPE_ACCELTABLE);
SetLastNtError(STATUS_NO_MEMORY); SetLastNtError(STATUS_NO_MEMORY);
RETURN( (HACCEL) NULL); RETURN( (HACCEL) NULL);
} }
@ -308,7 +308,7 @@ NtUserCreateAcceleratorTable(
{ {
ExFreePoolWithTag(Accel->Table, USERTAG_ACCEL); ExFreePoolWithTag(Accel->Table, USERTAG_ACCEL);
UserDereferenceObject(Accel); UserDereferenceObject(Accel);
UserDeleteObject(hAccel, otAccel); UserDeleteObject(hAccel, TYPE_ACCELTABLE);
SetLastNtError(Status); SetLastNtError(Status);
RETURN( (HACCEL) NULL); RETURN( (HACCEL) NULL);
} }
@ -351,7 +351,7 @@ NtUserDestroyAcceleratorTable(
Accel->Table = NULL; Accel->Table = NULL;
} }
UserDeleteObject(hAccel, otAccel); UserDeleteObject(hAccel, TYPE_ACCELTABLE);
RETURN( TRUE); RETURN( TRUE);

View file

@ -21,7 +21,7 @@ VOID
DestroyCallProc(IN PDESKTOPINFO Desktop, DestroyCallProc(IN PDESKTOPINFO Desktop,
IN OUT PCALLPROCDATA CallProc) IN OUT PCALLPROCDATA CallProc)
{ {
UserDeleteObject(UserHMGetHandle(CallProc), otCallProc); UserDeleteObject(UserHMGetHandle(CallProc), TYPE_CALLPROC);
} }
PCALLPROCDATA PCALLPROCDATA
@ -37,7 +37,7 @@ CreateCallProc(IN PDESKTOP Desktop,
Desktop, Desktop,
NULL, NULL,
&Handle, &Handle,
otCallProc, TYPE_CALLPROC,
sizeof(CALLPROCDATA)); sizeof(CALLPROCDATA));
if (NewCallProc != NULL) if (NewCallProc != NULL)
{ {
@ -60,7 +60,7 @@ UserGetCallProcInfo(IN HANDLE hCallProc,
CallProc = UserGetObject(gHandleTable, CallProc = UserGetObject(gHandleTable,
hCallProc, hCallProc,
otCallProc); TYPE_CALLPROC);
if (CallProc == NULL) if (CallProc == NULL)
{ {
return FALSE; return FALSE;

View file

@ -462,7 +462,7 @@ IntSetClassWndProc(IN OUT PCLS Class,
// Check if CallProc handle and retrieve previous call proc address and set. // Check if CallProc handle and retrieve previous call proc address and set.
if (IsCallProcHandle(WndProc)) if (IsCallProcHandle(WndProc))
{ {
pcpd = UserGetObject(gHandleTable, WndProc, otCallProc); pcpd = UserGetObject(gHandleTable, WndProc, TYPE_CALLPROC);
if (pcpd) chWndProc = pcpd->pfnClientPrevious; if (pcpd) chWndProc = pcpd->pfnClientPrevious;
} }

View file

@ -58,7 +58,7 @@ IntFreeElementData(PCLIP pElement)
!IS_DATA_SYNTHESIZED(pElement)) !IS_DATA_SYNTHESIZED(pElement))
{ {
if (pElement->fGlobalHandle) if (pElement->fGlobalHandle)
UserDeleteObject(pElement->hData, otClipBoardData); UserDeleteObject(pElement->hData, TYPE_CLIPDATA);
else if (pElement->fmt == CF_BITMAP || pElement->fmt == CF_PALETTE || else if (pElement->fmt == CF_BITMAP || pElement->fmt == CF_PALETTE ||
pElement->fmt == CF_DSPBITMAP) pElement->fmt == CF_DSPBITMAP)
{ {
@ -184,7 +184,7 @@ IntSynthesizeDib(
NULL, NULL,
NULL, NULL,
&hMem, &hMem,
otClipBoardData, TYPE_CLIPDATA,
cjDataSize); cjDataSize);
if (!pClipboardData) if (!pClipboardData)
{ {
@ -235,7 +235,7 @@ IntSynthesizeBitmap(PWINSTATION_OBJECT pWinStaObj, PCLIP pBmEl)
if(!pDibEl->fGlobalHandle) if(!pDibEl->fGlobalHandle)
return; return;
pMemObj = (PCLIPBOARDDATA)UserGetObject(gHandleTable, pDibEl->hData, otClipBoardData); pMemObj = (PCLIPBOARDDATA)UserGetObject(gHandleTable, pDibEl->hData, TYPE_CLIPDATA);
if (!pMemObj) if (!pMemObj)
return; return;
@ -297,7 +297,7 @@ IntAddSynthesizedFormats(PWINSTATION_OBJECT pWinStaObj)
PCLIPBOARDDATA pMemObj; PCLIPBOARDDATA pMemObj;
HANDLE hMem; HANDLE hMem;
pMemObj = (PCLIPBOARDDATA)UserCreateObject(gHandleTable, NULL, NULL, &hMem, otClipBoardData, pMemObj = (PCLIPBOARDDATA)UserCreateObject(gHandleTable, NULL, NULL, &hMem, TYPE_CLIPDATA,
sizeof(CLIPBOARDDATA) + sizeof(LCID)); sizeof(CLIPBOARDDATA) + sizeof(LCID));
if (pMemObj) if (pMemObj)
{ {
@ -1087,7 +1087,7 @@ NtUserConvertMemHandle(
UserEnterExclusive(); UserEnterExclusive();
/* Create Clipboard data object */ /* 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) if (!pMemObj)
goto cleanup; goto cleanup;
@ -1111,7 +1111,7 @@ NtUserConvertMemHandle(
/* If we failed to copy data, remove handle */ /* If we failed to copy data, remove handle */
if (!pMemObj) if (!pMemObj)
{ {
UserDeleteObject(hMem, otClipBoardData); UserDeleteObject(hMem, TYPE_CLIPDATA);
hMem = NULL; hMem = NULL;
} }
@ -1134,7 +1134,7 @@ NtUserCreateLocalMemHandle(
UserEnterShared(); UserEnterShared();
/* Get Clipboard data object */ /* Get Clipboard data object */
pMemObj = (PCLIPBOARDDATA)UserGetObject(gHandleTable, hMem, otClipBoardData); pMemObj = (PCLIPBOARDDATA)UserGetObject(gHandleTable, hMem, TYPE_CLIPDATA);
if (!pMemObj) if (!pMemObj)
{ {
Status = STATUS_INVALID_HANDLE; Status = STATUS_INVALID_HANDLE;

View file

@ -77,7 +77,7 @@ PCURICON_OBJECT FASTCALL UserGetCurIconObject(HCURSOR hCurIcon)
return NULL; return NULL;
} }
CurIcon = (PCURICON_OBJECT)UserReferenceObjectByHandle(hCurIcon, otCursorIcon); CurIcon = (PCURICON_OBJECT)UserReferenceObjectByHandle(hCurIcon, TYPE_CURSOR);
if (!CurIcon) if (!CurIcon)
{ {
/* We never set ERROR_INVALID_ICON_HANDLE. lets hope noone ever checks for it */ /* 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) 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); // UserReferenceObject( CurIcon);
// { // {
if ((CurIcon->hModule == hModule) && (CurIcon->hRsrc == hRsrc)) if ((CurIcon->hModule == hModule) && (CurIcon->hRsrc == hRsrc))
@ -209,7 +209,7 @@ IntCreateCurIconHandle(DWORD dwNumber)
PCURICON_OBJECT CurIcon; PCURICON_OBJECT CurIcon;
HANDLE hCurIcon; 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) if (!CurIcon)
{ {
@ -223,7 +223,7 @@ IntCreateCurIconHandle(DWORD dwNumber)
if (! ReferenceCurIconByProcess(CurIcon)) if (! ReferenceCurIconByProcess(CurIcon))
{ {
ERR("Failed to add process\n"); ERR("Failed to add process\n");
UserDeleteObject(hCurIcon, otCursorIcon); UserDeleteObject(hCurIcon, TYPE_CURSOR);
UserDereferenceObject(CurIcon); UserDereferenceObject(CurIcon);
return NULL; return NULL;
} }
@ -273,7 +273,7 @@ IntDestroyCurIconObject(PCURICON_OBJECT CurIcon, PPROCESSINFO ppi)
{ {
/* Set the first process of the list as owner */ /* Set the first process of the list as owner */
Current = CONTAINING_RECORD(CurIcon->ProcessList.Flink, CURICON_PROCESS, ListEntry); Current = CONTAINING_RECORD(CurIcon->ProcessList.Flink, CURICON_PROCESS, ListEntry);
UserSetObjectOwner(CurIcon, otCursorIcon, Current->Process); UserSetObjectOwner(CurIcon, TYPE_CURSOR, Current->Process);
} }
UserDereferenceObject(CurIcon); UserDereferenceObject(CurIcon);
return TRUE; return TRUE;
@ -310,7 +310,7 @@ emptyList:
/* We were given a pointer, no need to keep the reference anylonger! */ /* We were given a pointer, no need to keep the reference anylonger! */
UserDereferenceObject(CurIcon); UserDereferenceObject(CurIcon);
Ret = UserDeleteObject(CurIcon->Self, otCursorIcon); Ret = UserDeleteObject(CurIcon->Self, TYPE_CURSOR);
return Ret; return Ret;
} }

View file

@ -84,7 +84,7 @@ PCURICON_OBJECT FASTCALL UserGetCurIconObject(HCURSOR hCurIcon)
return NULL; return NULL;
} }
CurIcon = (PCURICON_OBJECT)UserReferenceObjectByHandle(hCurIcon, otCursorIcon); CurIcon = (PCURICON_OBJECT)UserReferenceObjectByHandle(hCurIcon, TYPE_CURSOR);
if (!CurIcon) if (!CurIcon)
{ {
/* We never set ERROR_INVALID_ICON_HANDLE. lets hope noone ever checks for it */ /* We never set ERROR_INVALID_ICON_HANDLE. lets hope noone ever checks for it */
@ -229,7 +229,7 @@ IntCreateCurIconHandle(DWORD dwNumber)
if(dwNumber == 0) if(dwNumber == 0)
dwNumber = 1; 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) if (!CurIcon)
{ {
@ -244,7 +244,7 @@ IntCreateCurIconHandle(DWORD dwNumber)
{ {
ERR("Failed to add process\n"); ERR("Failed to add process\n");
UserDereferenceObject(CurIcon); UserDereferenceObject(CurIcon);
UserDeleteObject(hCurIcon, otCursorIcon); UserDeleteObject(hCurIcon, TYPE_CURSOR);
return NULL; return NULL;
} }
@ -309,7 +309,7 @@ IntDestroyCurIconObject(PCURICON_OBJECT CurIcon, PPROCESSINFO ppi, BOOLEAN bForc
{ {
/* Set the first process of the list as owner */ /* Set the first process of the list as owner */
Current = CONTAINING_RECORD(CurIcon->ProcessList.Flink, CURICON_PROCESS, ListEntry); Current = CONTAINING_RECORD(CurIcon->ProcessList.Flink, CURICON_PROCESS, ListEntry);
UserSetObjectOwner(CurIcon, otCursorIcon, Current->Process); UserSetObjectOwner(CurIcon, TYPE_CURSOR, Current->Process);
} }
UserDereferenceObject(CurIcon); UserDereferenceObject(CurIcon);
return TRUE; return TRUE;
@ -350,7 +350,7 @@ emptyList:
/* We were given a pointer, no need to keep the reference anylonger! */ /* We were given a pointer, no need to keep the reference anylonger! */
UserDereferenceObject(CurIcon); UserDereferenceObject(CurIcon);
Ret = UserDeleteObject(CurIcon->Self, otCursorIcon); Ret = UserDeleteObject(CurIcon->Self, TYPE_CURSOR);
return Ret; return Ret;
} }

View file

@ -141,7 +141,7 @@ IntRemoveEvent(PEVENTHOOK pEH)
RemoveEntryList(&pEH->Chain); RemoveEntryList(&pEH->Chain);
GlobalEvents->Counts--; GlobalEvents->Counts--;
if (!GlobalEvents->Counts) gpsi->dwInstalledEventHooks = 0; if (!GlobalEvents->Counts) gpsi->dwInstalledEventHooks = 0;
UserDeleteObject(UserHMGetHandle(pEH), otEvent); UserDeleteObject(UserHMGetHandle(pEH), TYPE_WINEVENTHOOK);
KeLeaveCriticalRegion(); KeLeaveCriticalRegion();
return TRUE; return TRUE;
} }
@ -378,7 +378,7 @@ NtUserSetWinEventHook(
} }
} }
// Creator, pti is set here. // 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) if (pEH)
{ {
InsertTailList(&GlobalEvents->Events, &pEH->Chain); InsertTailList(&GlobalEvents->Events, &pEH->Chain);
@ -428,7 +428,7 @@ NtUserUnhookWinEvent(
UserEnterExclusive(); UserEnterExclusive();
pEH = (PEVENTHOOK)UserGetObject(gHandleTable, hWinEventHook, otEvent); pEH = (PEVENTHOOK)UserGetObject(gHandleTable, hWinEventHook, TYPE_WINEVENTHOOK);
if (pEH) if (pEH)
{ {
Ret = IntRemoveEvent(pEH); Ret = IntRemoveEvent(pEH);

View file

@ -937,7 +937,7 @@ IntGetHookObject(HHOOK hHook)
return NULL; return NULL;
} }
Hook = (PHOOK)UserGetObject(gHandleTable, hHook, otHook); Hook = (PHOOK)UserGetObject(gHandleTable, hHook, TYPE_HOOK);
if (!Hook) if (!Hook)
{ {
EngSetLastError(ERROR_INVALID_HOOK_HANDLE); EngSetLastError(ERROR_INVALID_HOOK_HANDLE);
@ -1020,7 +1020,7 @@ IntFreeHook(PHOOK Hook)
Hook->ModuleName.Buffer = NULL; Hook->ModuleName.Buffer = NULL;
} }
/* Close handle */ /* Close handle */
UserDeleteObject(UserHMGetHandle(Hook), otHook); UserDeleteObject(UserHMGetHandle(Hook), TYPE_HOOK);
} }
/* Remove a hook, freeing it from the chain */ /* Remove a hook, freeing it from the chain */
@ -1270,7 +1270,7 @@ co_HOOK_CallHooks( INT HookId,
*/ */
for(i = 0; pHookHandles[i]; ++i) for(i = 0; pHookHandles[i]; ++i)
{ {
Hook = (PHOOK)UserGetObject(gHandleTable, pHookHandles[i], otHook); Hook = (PHOOK)UserGetObject(gHandleTable, pHookHandles[i], TYPE_HOOK);
if(!Hook) if(!Hook)
{ {
ERR("Invalid hook!\n"); ERR("Invalid hook!\n");
@ -1571,7 +1571,7 @@ NtUserSetWindowsHookEx( HINSTANCE Mod,
} }
ObDereferenceObject(WinStaObj); 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) if (!Hook)
{ {

View file

@ -131,7 +131,7 @@ UserLoadKbdFile(PUNICODE_STRING pwszKLID)
L"Control\\Keyboard Layouts\\"; L"Control\\Keyboard Layouts\\";
/* Create keyboard layout file object */ /* 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) if (!pkf)
{ {
ERR("Failed to create object!\n"); ERR("Failed to create object!\n");
@ -187,7 +187,7 @@ cleanup:
{ {
/* We have failed - destroy created object */ /* We have failed - destroy created object */
if (pkf) if (pkf)
UserDeleteObject(pkf->head.h, otKBDfile); UserDeleteObject(pkf->head.h, TYPE_KBDFILE);
} }
return pRet; return pRet;
@ -206,7 +206,7 @@ UserLoadKbdLayout(PUNICODE_STRING pwszKLID, HKL hKL)
PKL pKl; PKL pKl;
/* Create keyboard layout object */ /* 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) if (!pKl)
{ {
ERR("Failed to create object!\n"); ERR("Failed to create object!\n");
@ -223,7 +223,7 @@ UserLoadKbdLayout(PUNICODE_STRING pwszKLID, HKL hKL)
if (!pKl->spkf) if (!pKl->spkf)
{ {
ERR("UserLoadKbdFile(%wZ) failed!\n", pwszKLID); ERR("UserLoadKbdFile(%wZ) failed!\n", pwszKLID);
UserDeleteObject(pKl->head.h, otKBDlayout); UserDeleteObject(pKl->head.h, TYPE_KBDLAYOUT);
return NULL; return NULL;
} }
@ -272,7 +272,7 @@ UnloadKbdFile(_In_ PKBDFILE pkf)
*ppkfLink = pkf->pkfNext; *ppkfLink = pkf->pkfNext;
EngUnloadImage(pkf->hBase); 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->pklPrev->pklNext = pKl->pklNext;
pKl->pklNext->pklPrev = pKl->pklPrev; pKl->pklNext->pklPrev = pKl->pklPrev;
UnloadKbdFile(pKl->spkf); UnloadKbdFile(pKl->spkf);
UserDeleteObject(pKl->head.h, otKBDlayout); UserDeleteObject(pKl->head.h, TYPE_KBDLAYOUT);
return TRUE; return TRUE;
} }

View file

@ -63,7 +63,7 @@ PMENU_OBJECT FASTCALL UserGetMenuObject(HMENU hMenu)
return NULL; return NULL;
} }
Menu = (PMENU_OBJECT)UserGetObject(gHandleTable, hMenu, otMenu); Menu = (PMENU_OBJECT)UserGetObject(gHandleTable, hMenu, TYPE_MENU);
if (!Menu) if (!Menu)
{ {
EngSetLastError(ERROR_INVALID_MENU_HANDLE); EngSetLastError(ERROR_INVALID_MENU_HANDLE);
@ -234,7 +234,7 @@ IntDestroyMenuObject(PMENU_OBJECT Menu,
} }
} }
// UserDereferenceObject(Menu); // UserDereferenceObject(Menu);
ret = UserDeleteObject(Menu->MenuInfo.Self, otMenu); ret = UserDeleteObject(Menu->MenuInfo.Self, TYPE_MENU);
ObDereferenceObject(WindowStation); ObDereferenceObject(WindowStation);
return ret; return ret;
} }
@ -252,7 +252,7 @@ IntCreateMenu(PHANDLE Handle, BOOL IsMenuBar)
NULL, NULL,
NULL, NULL,
Handle, Handle,
otMenu, TYPE_MENU,
sizeof(MENU_OBJECT)); sizeof(MENU_OBJECT));
if(!Menu) if(!Menu)
{ {
@ -364,7 +364,7 @@ IntCloneMenu(PMENU_OBJECT Source)
NULL, NULL,
NULL, NULL,
&hMenu, &hMenu,
otMenu, TYPE_MENU,
sizeof(MENU_OBJECT)); sizeof(MENU_OBJECT));
if(!Menu) if(!Menu)
return NULL; return NULL;

View file

@ -32,7 +32,7 @@ static
PMONITOR PMONITOR
IntCreateMonitorObject() IntCreateMonitorObject()
{ {
return UserCreateObject(gHandleTable, NULL, NULL, NULL, otMonitor, sizeof(MONITOR)); return UserCreateObject(gHandleTable, NULL, NULL, NULL, TYPE_MONITOR, sizeof(MONITOR));
} }
/* IntDestroyMonitorObject /* IntDestroyMonitorObject
@ -58,7 +58,7 @@ IntDestroyMonitorObject(IN PMONITOR pMonitor)
/* Destroy monitor object */ /* Destroy monitor object */
UserDereferenceObject(pMonitor); UserDereferenceObject(pMonitor);
UserDeleteObject(UserHMGetHandle(pMonitor), otMonitor); UserDeleteObject(UserHMGetHandle(pMonitor), TYPE_MONITOR);
} }
/* UserGetMonitorObject /* UserGetMonitorObject
@ -81,7 +81,7 @@ UserGetMonitorObject(IN HMONITOR hMonitor)
return NULL; return NULL;
} }
pMonitor = (PMONITOR)UserGetObject(gHandleTable, hMonitor, otMonitor); pMonitor = (PMONITOR)UserGetObject(gHandleTable, hMonitor, TYPE_MONITOR);
if (!pMonitor) if (!pMonitor)
{ {
EngSetLastError(ERROR_INVALID_MONITOR_HANDLE); EngSetLastError(ERROR_INVALID_MONITOR_HANDLE);

View file

@ -16,7 +16,7 @@ PUSER_HANDLE_TABLE gHandleTable = NULL;
void DbgUserDumpHandleTable() void DbgUserDumpHandleTable()
{ {
int HandleCounts[USER_HANDLE_TYPE_COUNT]; int HandleCounts[TYPE_CTYPES];
PPROCESSINFO ppiList; PPROCESSINFO ppiList;
int i; int i;
PWCHAR TypeNames[] = {L"Free",L"Window",L"Menu", L"CursorIcon", L"SMWP", L"Hook", L"ClipBoardData", L"CallProc", 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); 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]; HandleCounts[i] += ppiList->DbgHandleCount[i];
@ -48,7 +48,7 @@ void DbgUserDumpHandleTable()
/* Print total type counts */ /* Print total type counts */
ERR("Total handles of the running processes: \n\t"); 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]); DbgPrint("%S: %d, ", TypeNames[i], HandleCounts[i]);
if (i % 6 == 0) if (i % 6 == 0)
@ -62,7 +62,7 @@ void DbgUserDumpHandleTable()
HandleCounts[gHandleTable->handles[i].type]++; HandleCounts[gHandleTable->handles[i].type]++;
ERR("Total handles count allocated: \n\t"); 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]); DbgPrint("%S: %d, ", TypeNames[i], HandleCounts[i]);
if (i % 6 == 0) if (i % 6 == 0)
@ -174,27 +174,27 @@ __inline static void *free_user_entry(PUSER_HANDLE_TABLE ht, PUSER_HANDLE_ENTRY
} }
static __inline PVOID static __inline PVOID
UserHandleOwnerByType(USER_OBJECT_TYPE type) UserHandleOwnerByType(HANDLE_TYPE type)
{ {
PVOID pi; PVOID pi;
switch (type) switch (type)
{ {
case otWindow: case TYPE_WINDOW:
case otInputContext: case TYPE_INPUTCONTEXT:
pi = GetW32ThreadInfo(); pi = GetW32ThreadInfo();
break; break;
case otMenu: case TYPE_MENU:
case otCursorIcon: case TYPE_CURSOR:
case otHook: case TYPE_HOOK:
case otCallProc: case TYPE_CALLPROC:
case otAccel: case TYPE_ACCELTABLE:
case otSMWP: case TYPE_SETWINDOWPOS:
pi = GetW32ProcessInfo(); pi = GetW32ProcessInfo();
break; break;
case otMonitor: case TYPE_MONITOR:
pi = NULL; /* System */ pi = NULL; /* System */
break; break;
@ -207,7 +207,7 @@ UserHandleOwnerByType(USER_OBJECT_TYPE type)
} }
/* allocate a user handle for a given object */ /* 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); PUSER_HANDLE_ENTRY entry = alloc_user_entry(ht);
if (!entry) 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 */ /* 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; 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 */ /* 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; 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 */ /* 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; PUSER_HANDLE_ENTRY entry;
@ -317,7 +317,7 @@ UserCreateObject( PUSER_HANDLE_TABLE ht,
PDESKTOP pDesktop, PDESKTOP pDesktop,
PTHREADINFO pti, PTHREADINFO pti,
HANDLE* h, HANDLE* h,
USER_OBJECT_TYPE type, HANDLE_TYPE type,
ULONG size) ULONG size)
{ {
HANDLE hi; HANDLE hi;
@ -336,11 +336,11 @@ UserCreateObject( PUSER_HANDLE_TABLE ht,
switch (type) switch (type)
{ {
case otWindow: case TYPE_WINDOW:
// case otMenu: // case TYPE_MENU:
case otHook: case TYPE_HOOK:
case otCallProc: case TYPE_CALLPROC:
case otInputContext: case TYPE_INPUTCONTEXT:
Object = DesktopHeapAlloc(rpdesk, size); Object = DesktopHeapAlloc(rpdesk, size);
dt = TRUE; dt = TRUE;
break; break;
@ -373,22 +373,22 @@ UserCreateObject( PUSER_HANDLE_TABLE ht,
switch (type) switch (type)
{ {
case otWindow: case TYPE_WINDOW:
case otHook: case TYPE_HOOK:
case otInputContext: case TYPE_INPUTCONTEXT:
((PTHRDESKHEAD)Object)->rpdesk = rpdesk; ((PTHRDESKHEAD)Object)->rpdesk = rpdesk;
((PTHRDESKHEAD)Object)->pSelf = Object; ((PTHRDESKHEAD)Object)->pSelf = Object;
case otEvent: case TYPE_WINEVENTHOOK:
((PTHROBJHEAD)Object)->pti = pti; ((PTHROBJHEAD)Object)->pti = pti;
break; break;
case otMenu: case TYPE_MENU:
case otCallProc: case TYPE_CALLPROC:
((PPROCDESKHEAD)Object)->rpdesk = rpdesk; ((PPROCDESKHEAD)Object)->rpdesk = rpdesk;
((PPROCDESKHEAD)Object)->pSelf = Object; ((PPROCDESKHEAD)Object)->pSelf = Object;
break; break;
case otCursorIcon: case TYPE_CURSOR:
((PPROCMARKHEAD)Object)->ppi = ppi; ((PPROCMARKHEAD)Object)->ppi = ppi;
break; break;
@ -410,7 +410,7 @@ FASTCALL
UserDereferenceObject(PVOID object) UserDereferenceObject(PVOID object)
{ {
PUSER_HANDLE_ENTRY entry; PUSER_HANDLE_ENTRY entry;
USER_OBJECT_TYPE type; HANDLE_TYPE type;
ASSERT(((PHEAD)object)->cLockObj >= 1); ASSERT(((PHEAD)object)->cLockObj >= 1);
@ -435,11 +435,11 @@ UserDereferenceObject(PVOID object)
switch (type) switch (type)
{ {
case otWindow: case TYPE_WINDOW:
// case otMenu: // case TYPE_MENU:
case otHook: case TYPE_HOOK:
case otCallProc: case TYPE_CALLPROC:
case otInputContext: case TYPE_INPUTCONTEXT:
return DesktopHeapFree(((PTHRDESKHEAD)object)->rpdesk, object); return DesktopHeapFree(((PTHRDESKHEAD)object)->rpdesk, object);
default: default:
@ -482,7 +482,7 @@ UserObjectInDestroy(HANDLE h)
BOOL BOOL
FASTCALL FASTCALL
UserDeleteObject(HANDLE h, USER_OBJECT_TYPE type ) UserDeleteObject(HANDLE h, HANDLE_TYPE type )
{ {
PVOID body = UserGetObject(gHandleTable, h, type); PVOID body = UserGetObject(gHandleTable, h, type);
@ -504,7 +504,7 @@ UserReferenceObject(PVOID obj)
PVOID PVOID
FASTCALL FASTCALL
UserReferenceObjectByHandle(HANDLE handle, USER_OBJECT_TYPE type) UserReferenceObjectByHandle(HANDLE handle, HANDLE_TYPE type)
{ {
PVOID object; PVOID object;
@ -518,7 +518,7 @@ UserReferenceObjectByHandle(HANDLE handle, USER_OBJECT_TYPE type)
VOID VOID
FASTCALL 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 ); PUSER_HANDLE_ENTRY entry = handle_to_entry(gHandleTable, ((PHEAD)obj)->h );
PPROCESSINFO ppi, oldppi; PPROCESSINFO ppi, oldppi;
@ -529,7 +529,7 @@ UserSetObjectOwner(PVOID obj, USER_OBJECT_TYPE type, PVOID owner)
/* For now, only supported for CursorIcon object */ /* For now, only supported for CursorIcon object */
switch(type) switch(type)
{ {
case otCursorIcon: case TYPE_CURSOR:
ppi = (PPROCESSINFO)owner; ppi = (PPROCESSINFO)owner;
entry->pi = ppi; entry->pi = ppi;
oldppi = ((PPROCMARKHEAD)obj)->ppi; oldppi = ((PPROCMARKHEAD)obj)->ppi;
@ -575,37 +575,37 @@ NtUserValidateHandleSecure(
} }
switch (uType) switch (uType)
{ {
case otWindow: case TYPE_WINDOW:
{ {
if (UserGetWindowObject((HWND) handle)) return TRUE; if (UserGetWindowObject((HWND) handle)) return TRUE;
return FALSE; return FALSE;
} }
case otMenu: case TYPE_MENU:
{ {
if (UserGetMenuObject((HMENU) handle)) return TRUE; if (UserGetMenuObject((HMENU) handle)) return TRUE;
return FALSE; return FALSE;
} }
case otAccel: case TYPE_ACCELTABLE:
{ {
if (UserGetAccelObject((HACCEL) handle)) return TRUE; if (UserGetAccelObject((HACCEL) handle)) return TRUE;
return FALSE; return FALSE;
} }
case otCursorIcon: case TYPE_CURSOR:
{ {
if (UserGetCurIconObject((HCURSOR) handle)) return TRUE; if (UserGetCurIconObject((HCURSOR) handle)) return TRUE;
return FALSE; return FALSE;
} }
case otHook: case TYPE_HOOK:
{ {
if (IntGetHookObject((HHOOK) handle)) return TRUE; if (IntGetHookObject((HHOOK) handle)) return TRUE;
return FALSE; return FALSE;
} }
case otMonitor: case TYPE_MONITOR:
{ {
if (UserGetMonitorObject((HMONITOR) handle)) return TRUE; if (UserGetMonitorObject((HMONITOR) handle)) return TRUE;
return FALSE; return FALSE;
} }
case otCallProc: case TYPE_CALLPROC:
{ {
WNDPROC_INFO Proc; WNDPROC_INFO Proc;
return UserGetCallProcInfo( handle, &Proc ); return UserGetCallProcInfo( handle, &Proc );

View file

@ -31,16 +31,16 @@ UserAssertLastRef(PVOID obj, const char *file, int line)
extern PUSER_HANDLE_TABLE gHandleTable; extern PUSER_HANDLE_TABLE gHandleTable;
VOID FASTCALL UserReferenceObject(PVOID obj); 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); 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); PVOID FASTCALL UserCreateObject(PUSER_HANDLE_TABLE ht, struct _DESKTOP* pDesktop, PTHREADINFO pti, HANDLE* h,HANDLE_TYPE type , ULONG size);
BOOL FASTCALL UserDeleteObject(HANDLE h, USER_OBJECT_TYPE type ); BOOL FASTCALL UserDeleteObject(HANDLE h, HANDLE_TYPE type );
PVOID UserGetObject(PUSER_HANDLE_TABLE ht, HANDLE handle, USER_OBJECT_TYPE type ); PVOID UserGetObject(PUSER_HANDLE_TABLE ht, HANDLE handle, HANDLE_TYPE type );
PVOID UserGetObjectNoErr(PUSER_HANDLE_TABLE, HANDLE, USER_OBJECT_TYPE); PVOID UserGetObjectNoErr(PUSER_HANDLE_TABLE, HANDLE, HANDLE_TYPE);
BOOL FASTCALL UserCreateHandleTable(VOID); BOOL FASTCALL UserCreateHandleTable(VOID);
BOOL FASTCALL UserObjectInDestroy(HANDLE); BOOL FASTCALL UserObjectInDestroy(HANDLE);
void DbgUserDumpHandleTable(); 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 static __inline VOID
UserRefObjectCo(PVOID obj, PUSER_REFERENCE_ENTRY UserReferenceEntry) UserRefObjectCo(PVOID obj, PUSER_REFERENCE_ENTRY UserReferenceEntry)

View file

@ -1141,7 +1141,7 @@ NtUserFlashWindowEx(IN PFLASHWINFO pfwi)
if (!Ret) goto Exit; 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.cbSize != sizeof(FLASHWINFO) ||
finfo.dwFlags & ~(FLASHW_ALL|FLASHW_TIMER|FLASHW_TIMERNOFG) ) finfo.dwFlags & ~(FLASHW_ALL|FLASHW_TIMER|FLASHW_TIMERNOFG) )
{ {

View file

@ -174,13 +174,13 @@ NtUserCallOneParam(
NULL, NULL,
NULL, NULL,
(PHANDLE)&hDwp, (PHANDLE)&hDwp,
otSMWP, TYPE_SETWINDOWPOS,
sizeof(SMWP)); sizeof(SMWP));
if (!psmwp) RETURN(0); if (!psmwp) RETURN(0);
psmwp->acvr = ExAllocatePoolWithTag(PagedPool, count * sizeof(CVR), USERTAG_SWP); psmwp->acvr = ExAllocatePoolWithTag(PagedPool, count * sizeof(CVR), USERTAG_SWP);
if (!psmwp->acvr) if (!psmwp->acvr)
{ {
UserDeleteObject(hDwp, otSMWP); UserDeleteObject(hDwp, TYPE_SETWINDOWPOS);
RETURN(0); RETURN(0);
} }
RtlZeroMemory(psmwp->acvr, count * sizeof(CVR)); RtlZeroMemory(psmwp->acvr, count * sizeof(CVR));

View file

@ -56,7 +56,7 @@ CreateTimer(VOID)
HANDLE Handle; HANDLE Handle;
PTIMER Ret = NULL; PTIMER Ret = NULL;
Ret = UserCreateObject(gHandleTable, NULL, NULL, &Handle, otTimer, sizeof(TIMER)); Ret = UserCreateObject(gHandleTable, NULL, NULL, &Handle, TYPE_TIMER, sizeof(TIMER));
if (Ret) if (Ret)
{ {
Ret->head.h = Handle; Ret->head.h = Handle;
@ -86,7 +86,7 @@ RemoveTimer(PTIMER pTmr)
IntUnlockWindowlessTimerBitmap(); IntUnlockWindowlessTimerBitmap();
} }
UserDereferenceObject(pTmr); UserDereferenceObject(pTmr);
Ret = UserDeleteObject( UserHMGetHandle(pTmr), otTimer); Ret = UserDeleteObject( UserHMGetHandle(pTmr), TYPE_TIMER);
} }
if (!Ret) ERR("Warning: Unable to delete timer\n"); if (!Ret) ERR("Warning: Unable to delete timer\n");

View file

@ -225,7 +225,7 @@ typedef struct _PROCESSINFO
#if DBG #if DBG
BYTE DbgChannelLevel[DbgChCount]; BYTE DbgChannelLevel[DbgChCount];
DWORD DbgHandleCount[USER_HANDLE_TYPE_COUNT]; DWORD DbgHandleCount[TYPE_CTYPES];
#endif #endif
} PROCESSINFO; } PROCESSINFO;

View file

@ -90,7 +90,7 @@ PWND FASTCALL VerifyWnd(PWND pWnd)
PWND FASTCALL ValidateHwndNoErr(HWND hWnd) PWND FASTCALL ValidateHwndNoErr(HWND hWnd)
{ {
if (hWnd) return (PWND)UserGetObjectNoErr(gHandleTable, hWnd, otWindow); if (hWnd) return (PWND)UserGetObjectNoErr(gHandleTable, hWnd, TYPE_WINDOW);
return NULL; return NULL;
} }
@ -105,7 +105,7 @@ PWND FASTCALL UserGetWindowObject(HWND hWnd)
return NULL; return NULL;
} }
Window = (PWND)UserGetObject(gHandleTable, hWnd, otWindow); Window = (PWND)UserGetObject(gHandleTable, hWnd, TYPE_WINDOW);
if (!Window || 0 != (Window->state & WNDS_DESTROYED)) if (!Window || 0 != (Window->state & WNDS_DESTROYED))
{ {
EngSetLastError(ERROR_INVALID_WINDOW_HANDLE); EngSetLastError(ERROR_INVALID_WINDOW_HANDLE);
@ -555,7 +555,7 @@ static LRESULT co_UserFreeWindow(PWND Window,
IntUnlinkWindow(Window); IntUnlinkWindow(Window);
UserReferenceObject(Window); UserReferenceObject(Window);
UserDeleteObject(Window->head.h, otWindow); UserDeleteObject(Window->head.h, TYPE_WINDOW);
IntDestroyScrollBars(Window); IntDestroyScrollBars(Window);
@ -662,7 +662,7 @@ IntSetWindowProc(PWND pWnd,
if (IsCallProcHandle(NewWndProc)) if (IsCallProcHandle(NewWndProc))
{ {
CallProc = UserGetObject(gHandleTable, NewWndProc, otCallProc); CallProc = UserGetObject(gHandleTable, NewWndProc, TYPE_CALLPROC);
if (CallProc) if (CallProc)
{ // Reset new WndProc. { // Reset new WndProc.
NewWndProc = CallProc->pfnClientPrevious; NewWndProc = CallProc->pfnClientPrevious;
@ -1717,7 +1717,7 @@ PWND FASTCALL IntCreateWindow(CREATESTRUCTW* Cs,
pdeskCreated ? pdeskCreated : pti->rpdesk, pdeskCreated ? pdeskCreated : pti->rpdesk,
pti, pti,
(PHANDLE)&hWnd, (PHANDLE)&hWnd,
otWindow, TYPE_WINDOW,
sizeof(WND) + Class->cbwndExtra); sizeof(WND) + Class->cbwndExtra);
if (!pWnd) if (!pWnd)

View file

@ -2472,7 +2472,7 @@ IntDeferWindowPos( HDWP hdwp,
return NULL; return NULL;
} }
if (!(pDWP = (PSMWP)UserGetObject(gHandleTable, hdwp, otSMWP))) if (!(pDWP = (PSMWP)UserGetObject(gHandleTable, hdwp, TYPE_SETWINDOWPOS)))
{ {
EngSetLastError(ERROR_INVALID_DWP_HANDLE); EngSetLastError(ERROR_INVALID_DWP_HANDLE);
return NULL; return NULL;
@ -2543,7 +2543,7 @@ BOOL FASTCALL IntEndDeferWindowPosEx( HDWP hdwp, BOOL sAsync )
TRACE("%p\n", hdwp); TRACE("%p\n", hdwp);
if (!(pDWP = (PSMWP)UserGetObject(gHandleTable, hdwp, otSMWP))) if (!(pDWP = (PSMWP)UserGetObject(gHandleTable, hdwp, TYPE_SETWINDOWPOS)))
{ {
EngSetLastError(ERROR_INVALID_DWP_HANDLE); EngSetLastError(ERROR_INVALID_DWP_HANDLE);
return FALSE; return FALSE;
@ -2597,7 +2597,7 @@ BOOL FASTCALL IntEndDeferWindowPosEx( HDWP hdwp, BOOL sAsync )
} }
ExFreePoolWithTag(pDWP->acvr, USERTAG_SWP); ExFreePoolWithTag(pDWP->acvr, USERTAG_SWP);
UserDereferenceObject(pDWP); UserDereferenceObject(pDWP);
UserDeleteObject(hdwp, otSMWP); UserDeleteObject(hdwp, TYPE_SETWINDOWPOS);
return res; return res;
} }

View file

@ -325,24 +325,30 @@ GetUser32Handle(HANDLE handle)
/* /*
* Decide whether an object is located on the desktop or shared heap * 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, /* TYPE_FREE (not used) */
FALSE, /* otWindow */ FALSE, /* TYPE_WINDOW */
TRUE, /* otMenu FALSE */ TRUE, /* TYPE_MENU FALSE */
TRUE, /* otCursorIcon */ TRUE, /* TYPE_CURSOR */
TRUE, /* otSMWP */ TRUE, /* TYPE_SETWINDOWPOS */
FALSE, /* otHook */ FALSE, /* TYPE_HOOK */
FALSE, /* (not used) */ FALSE, /* TYPE_CLIPDATA */
FALSE, /* otCallProc */ FALSE, /* TYPE_CALLPROC */
TRUE, /* otAccel */ TRUE, /* TYPE_ACCELTABLE */
FALSE, /* (not used) */ FALSE, /* TYPE_DDEACCESS */
FALSE, /* (not used) */ FALSE, /* TYPE_DDECONV */
FALSE, /* (not used) */ FALSE, /* TYPE_DDEXACT */
TRUE, /* otMonitor */ TRUE, /* TYPE_MONITOR */
FALSE, /* (not used) */ FALSE, /* TYPE_KBDLAYOUT */
FALSE, /* (not used) */ FALSE, /* TYPE_KBDFILE */
TRUE /* otEvent */ TRUE, /* TYPE_WINEVENTHOOK */
FALSE, /* TYPE_TIMER */
FALSE, /* TYPE_INPUTCONTEXT */
FALSE, /* TYPE_HIDDATA */
FALSE, /* TYPE_DEVICEINFO */
FALSE, /* TYPE_TOUCHINPUTINFO */
FALSE, /* TYPE_GESTUREINFOOBJ */
}; };
// //
@ -355,7 +361,7 @@ ValidateHandle(HANDLE handle, UINT uType)
PVOID ret; PVOID ret;
PUSER_HANDLE_ENTRY pEntry; PUSER_HANDLE_ENTRY pEntry;
ASSERT(uType <= otEvent); ASSERT(uType < TYPE_CTYPES);
pEntry = GetUser32Handle(handle); pEntry = GetUser32Handle(handle);
@ -370,22 +376,22 @@ ValidateHandle(HANDLE handle, UINT uType)
{ {
switch ( uType ) switch ( uType )
{ // Test (with wine too) confirms these results! { // Test (with wine too) confirms these results!
case otWindow: case TYPE_WINDOW:
SetLastError(ERROR_INVALID_WINDOW_HANDLE); SetLastError(ERROR_INVALID_WINDOW_HANDLE);
break; break;
case otMenu: case TYPE_MENU:
SetLastError(ERROR_INVALID_MENU_HANDLE); SetLastError(ERROR_INVALID_MENU_HANDLE);
break; break;
case otCursorIcon: case TYPE_CURSOR:
SetLastError(ERROR_INVALID_CURSOR_HANDLE); SetLastError(ERROR_INVALID_CURSOR_HANDLE);
break; break;
case otSMWP: case TYPE_SETWINDOWPOS:
SetLastError(ERROR_INVALID_DWP_HANDLE); SetLastError(ERROR_INVALID_DWP_HANDLE);
break; break;
case otHook: case TYPE_HOOK:
SetLastError(ERROR_INVALID_HOOK_HANDLE); SetLastError(ERROR_INVALID_HOOK_HANDLE);
break; break;
case otAccel: case TYPE_ACCELTABLE:
SetLastError(ERROR_INVALID_ACCEL_HANDLE); SetLastError(ERROR_INVALID_ACCEL_HANDLE);
break; break;
default: default:
@ -413,7 +419,7 @@ ValidateHandleNoErr(HANDLE handle, UINT uType)
PVOID ret; PVOID ret;
PUSER_HANDLE_ENTRY pEntry; PUSER_HANDLE_ENTRY pEntry;
ASSERT(uType <= otEvent); ASSERT(uType < TYPE_CTYPES);
pEntry = GetUser32Handle(handle); pEntry = GetUser32Handle(handle);
@ -441,7 +447,7 @@ ValidateCallProc(HANDLE hCallProc)
{ {
PUSER_HANDLE_ENTRY pEntry; PUSER_HANDLE_ENTRY pEntry;
PCALLPROCDATA CallProc = ValidateHandle(hCallProc, otCallProc); PCALLPROCDATA CallProc = ValidateHandle(hCallProc, TYPE_CALLPROC);
pEntry = GetUser32Handle(hCallProc); pEntry = GetUser32Handle(hCallProc);
@ -466,7 +472,7 @@ ValidateHwnd(HWND hwnd)
if (hwnd && hwnd == ClientInfo->CallbackWnd.hWnd) if (hwnd && hwnd == ClientInfo->CallbackWnd.hWnd)
return ClientInfo->CallbackWnd.pWnd; return ClientInfo->CallbackWnd.pWnd;
return ValidateHandle((HANDLE)hwnd, otWindow); return ValidateHandle((HANDLE)hwnd, TYPE_WINDOW);
} }
// //
@ -484,7 +490,7 @@ ValidateHwndNoErr(HWND hwnd)
if (hwnd == ClientInfo->CallbackWnd.hWnd) if (hwnd == ClientInfo->CallbackWnd.hWnd)
return ClientInfo->CallbackWnd.pWnd; return ClientInfo->CallbackWnd.pWnd;
Wnd = ValidateHandleNoErr((HANDLE)hwnd, otWindow); Wnd = ValidateHandleNoErr((HANDLE)hwnd, TYPE_WINDOW);
if (Wnd != NULL) if (Wnd != NULL)
{ {
return Wnd; return Wnd;

View file

@ -3241,7 +3241,7 @@ static INT FASTCALL MenuTrackMenu(HMENU hmenu, UINT wFlags, INT x, INT y,
while (! fEndMenu) while (! fEndMenu)
{ {
BOOL ErrorExit = FALSE; 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 */ if (!menu) /* sometimes happens if I do a window manager close */
break; break;
@ -4767,7 +4767,7 @@ WINAPI
IsMenu( IsMenu(
HMENU Menu) HMENU Menu)
{ {
if (ValidateHandle(Menu, otMenu)) return TRUE; if (ValidateHandle(Menu, TYPE_MENU)) return TRUE;
return FALSE; return FALSE;
} }