mirror of
https://github.com/reactos/reactos.git
synced 2025-08-10 22:05:32 +00:00
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:
parent
f44e914e80
commit
dba80b614b
52 changed files with 466 additions and 282 deletions
|
@ -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]
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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 );
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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) )
|
||||||
{
|
{
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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");
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue