ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
April
March
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
March 2015
----- 2025 -----
April 2025
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
18 participants
496 discussions
Start a n
N
ew thread
[akhaldi] 66833: [MPLAY32] Add entries for found mci devices in the "Device" menu. By Ricardo Hanke. CORE-9385
by akhaldi@svn.reactos.org
Author: akhaldi Date: Fri Mar 20 10:44:36 2015 New Revision: 66833 URL:
http://svn.reactos.org/svn/reactos?rev=66833&view=rev
Log: [MPLAY32] Add entries for found mci devices in the "Device" menu. By Ricardo Hanke. CORE-9385 Modified: trunk/reactos/base/applications/mplay32/lang/bg-BG.rc trunk/reactos/base/applications/mplay32/lang/cs-CZ.rc trunk/reactos/base/applications/mplay32/lang/de-DE.rc trunk/reactos/base/applications/mplay32/lang/en-US.rc trunk/reactos/base/applications/mplay32/lang/es-ES.rc trunk/reactos/base/applications/mplay32/lang/fr-FR.rc trunk/reactos/base/applications/mplay32/lang/he-IL.rc trunk/reactos/base/applications/mplay32/lang/it-IT.rc trunk/reactos/base/applications/mplay32/lang/ja-JP.rc trunk/reactos/base/applications/mplay32/lang/nl-NL.rc trunk/reactos/base/applications/mplay32/lang/no-NO.rc trunk/reactos/base/applications/mplay32/lang/pl-PL.rc trunk/reactos/base/applications/mplay32/lang/pt-BR.rc trunk/reactos/base/applications/mplay32/lang/ro-RO.rc trunk/reactos/base/applications/mplay32/lang/ru-RU.rc trunk/reactos/base/applications/mplay32/lang/sk-SK.rc trunk/reactos/base/applications/mplay32/lang/sq-AL.rc trunk/reactos/base/applications/mplay32/lang/sv-SE.rc trunk/reactos/base/applications/mplay32/lang/tr-TR.rc trunk/reactos/base/applications/mplay32/lang/uk-UA.rc trunk/reactos/base/applications/mplay32/lang/zh-CN.rc trunk/reactos/base/applications/mplay32/lang/zh-TW.rc trunk/reactos/base/applications/mplay32/mplay32.c trunk/reactos/base/applications/mplay32/resource.h Modified: trunk/reactos/base/applications/mplay32/lang/bg-BG.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/bg-BG.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/bg-BG.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -26,6 +26,7 @@ END POPUP "&Device" BEGIN + MENUITEM SEPARATOR MENUITEM "&Properties", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Volume Control", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/cs-CZ.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/cs-CZ.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/cs-CZ.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -27,6 +27,7 @@ END POPUP "&ZaÅÃzenÃ" BEGIN + MENUITEM SEPARATOR MENUITEM "&Vlastnosti", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "Ovládánà &hlasitosti", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/de-DE.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/de-DE.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/de-DE.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -22,6 +22,7 @@ END POPUP "&Gerät" BEGIN + MENUITEM SEPARATOR MENUITEM "&Eigenschaften", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Lautstärkeregelung", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/en-US.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/en-US.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/en-US.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -22,6 +22,7 @@ END POPUP "&Device" BEGIN + MENUITEM SEPARATOR MENUITEM "&Properties", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Volume Control", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/es-ES.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/es-ES.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/es-ES.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -22,6 +22,7 @@ END POPUP "&Dispositivo" BEGIN + MENUITEM SEPARATOR MENUITEM "&Propiedades", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "Control de &volumen", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/fr-FR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/fr-FR.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/fr-FR.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -22,6 +22,7 @@ END POPUP "Périp&hérique" BEGIN + MENUITEM SEPARATOR MENUITEM "&Propriétés", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "Contrôle du &volume", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/he-IL.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/he-IL.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/he-IL.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -22,6 +22,7 @@ END POPUP "&Device" BEGIN + MENUITEM SEPARATOR MENUITEM "&Properties", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Volume Control", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/it-IT.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/it-IT.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/it-IT.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -22,6 +22,7 @@ END POPUP "&Device" BEGIN + MENUITEM SEPARATOR MENUITEM "&Properties", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Volume Control", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/ja-JP.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/ja-JP.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/ja-JP.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -22,6 +22,7 @@ END POPUP "&Device" BEGIN + MENUITEM SEPARATOR MENUITEM "&Properties", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Volume Control", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/nl-NL.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/nl-NL.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/nl-NL.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -22,6 +22,7 @@ END POPUP "&Device" BEGIN + MENUITEM SEPARATOR MENUITEM "&Properties", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Volume Control", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/no-NO.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/no-NO.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/no-NO.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -22,6 +22,7 @@ END POPUP "&Device" BEGIN + MENUITEM SEPARATOR MENUITEM "&Properties", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Volume Control", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/pl-PL.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/pl-PL.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/pl-PL.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -30,6 +30,7 @@ END POPUP "&UrzÄ dzenie" BEGIN + MENUITEM SEPARATOR MENUITEM "WÅaÅ&ciwoÅci", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Regulacja gÅoÅnoÅci", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/pt-BR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/pt-BR.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/pt-BR.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -24,6 +24,7 @@ END POPUP "&Device" BEGIN + MENUITEM SEPARATOR MENUITEM "&Properties", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Volume Control", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/ro-RO.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/ro-RO.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/ro-RO.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -28,6 +28,7 @@ END POPUP "&Dispozitiv" BEGIN + MENUITEM SEPARATOR MENUITEM "&ProprietÄÈiâ¦", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "Control &volumâ¦", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/ru-RU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/ru-RU.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/ru-RU.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -22,6 +22,7 @@ END POPUP "&УÑÑÑойÑÑво" BEGIN + MENUITEM SEPARATOR MENUITEM "&СвойÑÑва", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&ÐÑомкоÑÑÑ", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/sk-SK.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/sk-SK.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/sk-SK.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -27,6 +27,7 @@ END POPUP "&Device" BEGIN + MENUITEM SEPARATOR MENUITEM "&Properties", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Volume Control", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/sq-AL.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/sq-AL.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/sq-AL.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -26,6 +26,7 @@ END POPUP "&Device" BEGIN + MENUITEM SEPARATOR MENUITEM "&Properties", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Volume Control", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/sv-SE.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/sv-SE.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/sv-SE.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -29,6 +29,7 @@ END POPUP "&Device" BEGIN + MENUITEM SEPARATOR MENUITEM "&Properties", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Volume Control", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/tr-TR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/tr-TR.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/tr-TR.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -24,6 +24,7 @@ END POPUP "&Aygıt" BEGIN + MENUITEM SEPARATOR MENUITEM "&Husûsiyetler", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Ses Düzeyi Denetimi", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/uk-UA.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/uk-UA.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/uk-UA.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -30,6 +30,7 @@ END POPUP "&Device" BEGIN + MENUITEM SEPARATOR MENUITEM "&Properties", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Volume Control", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/zh-CN.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/zh-CN.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/zh-CN.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -24,6 +24,7 @@ END POPUP "设å¤(&D)" BEGIN + MENUITEM SEPARATOR MENUITEM "屿§(&P)", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "é³éæ§å¶(&V)", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/lang/zh-TW.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/zh-TW.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/zh-TW.rc [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -30,6 +30,7 @@ END POPUP "&Device" BEGIN + MENUITEM SEPARATOR MENUITEM "&Properties", IDM_DEVPROPS MENUITEM SEPARATOR MENUITEM "&Volume Control", IDM_VOLUMECTL Modified: trunk/reactos/base/applications/mplay32/mplay32.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/mplay32.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/mplay32.c [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -483,6 +483,38 @@ return mciError; } +static BOOL +DeviceUsesFiles(LPTSTR lpDeviceName) +{ + MCIERROR mciError; + MCI_OPEN_PARMS mciOpen; + MCI_GETDEVCAPS_PARMS mciDevCaps; + MCI_GENERIC_PARMS mciGeneric; + + mciOpen.dwCallback = 0; + mciOpen.wDeviceID = 0; + mciOpen.lpstrDeviceType = lpDeviceName; + mciOpen.lpstrElementName = NULL; + mciOpen.lpstrAlias = NULL; + + mciError = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_WAIT, (DWORD_PTR)&mciOpen); + if (mciError != 0) + return FALSE; + + mciDevCaps.dwCallback = 0; + mciDevCaps.dwReturn = 0; + mciDevCaps.dwItem = MCI_GETDEVCAPS_USES_FILES; + + mciError = mciSendCommand(mciOpen.wDeviceID, MCI_GETDEVCAPS, MCI_WAIT | MCI_GETDEVCAPS_ITEM, (DWORD_PTR)&mciDevCaps); + if (mciError != 0) + return FALSE; + + mciGeneric.dwCallback = 0; + mciSendCommand(mciOpen.wDeviceID, MCI_CLOSE, MCI_WAIT, (DWORD_PTR)&mciGeneric); + + return (BOOL)mciDevCaps.dwReturn; +} + static MCIERROR CloseMciDevice(VOID) { @@ -509,7 +541,7 @@ MCIERROR mciError; MCI_STATUS_PARMS mciStatus; MCI_OPEN_PARMS mciOpen; - DWORD dwFlags = MCI_OPEN_ELEMENT | MCI_WAIT; + DWORD dwFlags = MCI_WAIT; LPTSTR lpStr; if (wDeviceId) @@ -524,6 +556,9 @@ if (lpType) dwFlags |= MCI_OPEN_TYPE; + if (lpFileName) + dwFlags |= MCI_OPEN_ELEMENT; + mciError = mciSendCommand(0, MCI_OPEN, dwFlags, (DWORD_PTR)&mciOpen); if (mciError != 0) return mciError; @@ -562,11 +597,16 @@ /* NOTE: Everything above this line may be done instead in OpenMediaFile() */ - lpStr = _tcsrchr(lpFileName, _T('\\')); - if (lpStr) // Get only the file name (skip the last path separator) - lpStr++; + if (lpFileName) + { + lpStr = _tcsrchr(lpFileName, _T('\\')); + if (lpStr) // Get only the file name (skip the last path separator) + lpStr++; + else + lpStr = lpFileName; + } else - lpStr = lpFileName; + lpStr = lpType; StringCbCopy(szCurrentFile, sizeof(szCurrentFile), lpStr); @@ -852,7 +892,7 @@ } static VOID -OpenMediaFile(HWND hwnd, LPTSTR lpFileName) +OpenMediaFile(HWND hwnd, LPTSTR lpFileName, LPTSTR lpType) { MCIERROR mciError; @@ -862,7 +902,7 @@ if (wDeviceId) CloseMediaFile(hwnd); - mciError = OpenMciDevice(hwnd, NULL, lpFileName); + mciError = OpenMciDevice(hwnd, lpType, lpFileName); if (mciError != 0) { ShowMCIError(hwnd, mciError); @@ -872,8 +912,45 @@ StartPlayback(hwnd); } -static VOID -BuildFileFilter(VOID) +static DWORD +InsertDeviceMenuItem(HMENU hMenu, UINT uItem, BOOL fByPosition, UINT uItemID, DWORD dwDeviceIndex) +{ + MENUITEMINFO lpmii; + MCIERROR mciError; + TCHAR szDeviceName[MAX_MCISTR]; + TCHAR szFriendlyName[MAX_MCISTR]; + + mciError = GetDeviceName(dwDeviceIndex, szDeviceName, sizeof(szDeviceName)); + if (mciError) + { + return mciError; + } + + mciError = GetDeviceFriendlyName(szDeviceName, szFriendlyName, sizeof(szFriendlyName)); + if (mciError) + { + return mciError; + } + + if (DeviceUsesFiles(szDeviceName)) + { + StringCbCat(szFriendlyName, sizeof(szFriendlyName), _T("...")); + } + + ZeroMemory(&lpmii, sizeof(MENUITEMINFO)); + lpmii.cbSize = sizeof(lpmii); + lpmii.fMask = MIIM_DATA | MIIM_TYPE | MIIM_ID; + lpmii.wID = uItemID; + lpmii.fType = MF_STRING; + lpmii.dwTypeData = szFriendlyName; + lpmii.dwItemData = dwDeviceIndex; + InsertMenuItem(hMenu, uItem, fByPosition, &lpmii); + + return 0; +} + +static VOID +BuildFileFilterAndDeviceMenu(VOID) { TCHAR szDeviceName[MAX_MCISTR]; TCHAR szFriendlyName[MAX_MCISTR]; @@ -891,6 +968,7 @@ DWORD dwFilterSize; DWORD dwDeviceSize; DWORD dwExtensionLen; + DWORD dwPosition = 0; DWORD i; DWORD j; UINT uSizeRemain; @@ -952,6 +1030,10 @@ { continue; } + + /* Insert a menu item under the "Device" menu for every found MCI device */ + InsertDeviceMenuItem(GetSubMenu(hMainMenu, 3), dwPosition, TRUE, IDM_DEVICE_FIRST + dwPosition, j); + dwPosition++; /* Copy the default extension list, that may be overwritten after... */ StringCbCopy(szExtensionList, dwMaskLen * sizeof(TCHAR), szDefaultExtension); @@ -1065,7 +1147,7 @@ } static VOID -OpenFileDialog(HWND hwnd) +OpenFileDialog(HWND hwnd, DWORD dwFilterIndex, LPTSTR lpType) { OPENFILENAME OpenFileName; TCHAR szFile[MAX_PATH + 1] = _T(""); @@ -1087,11 +1169,46 @@ OpenFileName.lpstrInitialDir = szCurrentDir; OpenFileName.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_SHAREAWARE; OpenFileName.lpstrDefExt = _T("\0"); + OpenFileName.nFilterIndex = dwFilterIndex; if (!GetOpenFileName(&OpenFileName)) return; - OpenMediaFile(hwnd, OpenFileName.lpstrFile); + OpenMediaFile(hwnd, OpenFileName.lpstrFile, lpType); +} + +static VOID +HandleDeviceMenuItem(HWND hwnd, UINT uItem) +{ + MENUITEMINFO lpmii; + TCHAR szDeviceName[MAX_MCISTR]; + MCIERROR mciError; + + ZeroMemory(&lpmii, sizeof(MENUITEMINFO)); + lpmii.cbSize = sizeof(lpmii); + lpmii.fMask = MIIM_DATA; + GetMenuItemInfo(hMainMenu, uItem, FALSE, &lpmii); + + mciError = GetDeviceName(lpmii.dwItemData, szDeviceName, sizeof(szDeviceName)); + if (mciError) + { + ShowMCIError(hwnd, mciError); + return; + } + + if (DeviceUsesFiles(szDeviceName)) + { + OpenFileDialog(hwnd, uItem - IDM_DEVICE_FIRST + 1, szDeviceName); + return; + } + + mciError = OpenMciDevice(hwnd, szDeviceName, NULL); + if (mciError) + { + ShowMCIError(hwnd, mciError); + } + + return; } LRESULT CALLBACK @@ -1114,7 +1231,7 @@ drophandle = (HDROP)wParam; DragQueryFile(drophandle, 0, droppedfile, ARRAYSIZE(droppedfile)); DragFinish(drophandle); - OpenMediaFile(hwnd, droppedfile); + OpenMediaFile(hwnd, droppedfile, NULL); break; } @@ -1241,6 +1358,12 @@ case WM_COMMAND: { + if (LOWORD(wParam) >= IDM_DEVICE_FIRST) + { + HandleDeviceMenuItem(hwnd, LOWORD(wParam)); + break; + } + switch (LOWORD(wParam)) { case IDC_PLAY: @@ -1249,7 +1372,7 @@ if (wDeviceId) TogglePlaybackState(hwnd); else - OpenFileDialog(hwnd); + OpenFileDialog(hwnd, 1, NULL); break; } @@ -1276,7 +1399,7 @@ break; case IDM_OPEN_FILE: - OpenFileDialog(hwnd); + OpenFileDialog(hwnd, 1, NULL); return 0; case IDM_CLOSE_FILE: @@ -1383,7 +1506,7 @@ hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(ID_ACCELERATORS)); - BuildFileFilter(); + BuildFileFilterAndDeviceMenu(); DragAcceptFiles(hwnd, TRUE); @@ -1399,7 +1522,7 @@ ShowWindow(hwnd, SW_SHOW); UpdateWindow(hwnd); - OpenMediaFile(hwnd, lpCmdLine); + OpenMediaFile(hwnd, lpCmdLine, NULL); /* Message Loop */ while (GetMessage(&msg, NULL, 0, 0)) Modified: trunk/reactos/base/applications/mplay32/resource.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/resource.h [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/resource.h [iso-8859-1] Fri Mar 20 10:44:36 2015 @@ -52,6 +52,9 @@ #define IDM_REPEAT 1006 #define IDM_SWITCHVIEW 1007 +/* The device specific items in the device menu start here */ +#define IDM_DEVICE_FIRST 10000 + /* ToolBar Icons */ #define TBICON_PLAY 0 #define TBICON_STOP 1
10 years
1
0
0
0
[akhaldi] 66832: [SETUPAPI] Partially sync parser.c with Wine Staging 1.7.37. Started off by Victor's work in CORE-9397 and completed by me. CORE-9246
by akhaldi@svn.reactos.org
Author: akhaldi Date: Fri Mar 20 10:37:55 2015 New Revision: 66832 URL:
http://svn.reactos.org/svn/reactos?rev=66832&view=rev
Log: [SETUPAPI] Partially sync parser.c with Wine Staging 1.7.37. Started off by Victor's work in CORE-9397 and completed by me. CORE-9246 Modified: trunk/reactos/dll/win32/setupapi/parser.c trunk/reactos/dll/win32/setupapi/setupapi_private.h Modified: trunk/reactos/dll/win32/setupapi/parser.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/setupapi/parser.…
============================================================================== --- trunk/reactos/dll/win32/setupapi/parser.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/setupapi/parser.c [iso-8859-1] Fri Mar 20 10:37:55 2015 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +/* Partially synced with Wine Staging 1.7.37 */ + #include "setupapi_private.h" #include <ndk/obfuncs.h> @@ -149,9 +151,9 @@ if (new_count < 32) new_count = 32; if (array) - new_array = HeapReAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, array, new_count * elem ); + new_array = HeapReAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, array, new_count * elem ); else - new_array = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, new_count * elem ); + new_array = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, new_count * elem ); if (new_array) *count = new_count; @@ -186,7 +188,7 @@ { struct section *section; struct line *line; - int i; + unsigned int i; if (section_index < 0 || section_index >= file->nb_sections) return NULL; section = file->sections[section_index]; @@ -311,7 +313,7 @@ struct section *strings_section; struct line *line; struct field *field; - unsigned int i,j; + unsigned int i, j; int dirid; WCHAR *dirid_str, *end; const WCHAR *ret = NULL; @@ -397,12 +399,12 @@ /* do string substitutions on the specified text */ /* the buffer is assumed to be large enough */ /* returns necessary length not including terminating null */ -unsigned int PARSER_string_substW( const struct inf_file *file, const WCHAR *text, WCHAR *buffer, - unsigned int size ) +static unsigned int PARSER_string_substW( const struct inf_file *file, const WCHAR *text, + WCHAR *buffer, unsigned int size ) { const WCHAR *start, *subst, *p; unsigned int len, total = 0; - int inside = 0; + BOOL inside = FALSE; if (!buffer) size = MAX_STRING_LEN + 1; for (p = start = text; *p; p++) @@ -450,8 +452,8 @@ /* do string substitutions on the specified text */ /* the buffer is assumed to be large enough */ /* returns necessary length not including terminating null */ -unsigned int PARSER_string_substA( const struct inf_file *file, const WCHAR *text, char *buffer, - unsigned int size ) +static unsigned int PARSER_string_substA( const struct inf_file *file, const WCHAR *text, + char *buffer, unsigned int size ) { WCHAR buffW[MAX_STRING_LEN+1]; DWORD ret; @@ -503,14 +505,14 @@ /* check if the pointer points to an end of file */ -static inline int is_eof( const struct parser *parser, const WCHAR *ptr ) +static inline BOOL is_eof( const struct parser *parser, const WCHAR *ptr ) { return (ptr >= parser->end || *ptr == CONTROL_Z); } /* check if the pointer points to an end of line */ -static inline int is_eol( const struct parser *parser, const WCHAR *ptr ) +static inline BOOL is_eol( const struct parser *parser, const WCHAR *ptr ) { return (ptr >= parser->end || *ptr == CONTROL_Z || *ptr == '\n'); } @@ -560,7 +562,7 @@ /* add a field containing the current token to the current line */ -static struct field *add_field_from_token( struct parser *parser, int is_key ) +static struct field *add_field_from_token( struct parser *parser, BOOL is_key ) { struct field *field; WCHAR *text; @@ -680,14 +682,14 @@ case '=': push_token( parser, token_end ); - if (!add_field_from_token( parser, 1 )) return NULL; + if (!add_field_from_token( parser, TRUE )) return NULL; parser->start = p + 1; push_state( parser, VALUE_NAME ); set_state( parser, LEADING_SPACES ); return p + 1; case ';': push_token( parser, token_end ); - if (!add_field_from_token( parser, 0 )) return NULL; + if (!add_field_from_token( parser, FALSE )) return NULL; push_state( parser, LINE_START ); set_state( parser, COMMENT ); return p + 1; @@ -732,13 +734,13 @@ { case ';': push_token( parser, token_end ); - if (!add_field_from_token( parser, 0 )) return NULL; + if (!add_field_from_token( parser, FALSE )) return NULL; push_state( parser, LINE_START ); set_state( parser, COMMENT ); return p + 1; case ',': push_token( parser, token_end ); - if (!add_field_from_token( parser, 0 )) return NULL; + if (!add_field_from_token( parser, FALSE )) return NULL; parser->start = p + 1; push_state( parser, VALUE_NAME ); set_state( parser, LEADING_SPACES ); @@ -768,7 +770,7 @@ } } push_token( parser, token_end ); - if (!add_field_from_token( parser, 0 )) return NULL; + if (!add_field_from_token( parser, FALSE )) return NULL; set_state( parser, LINE_START ); return p; } @@ -810,7 +812,7 @@ /* handler for parser QUOTES state */ static const WCHAR *quotes_state( struct parser *parser, const WCHAR *pos ) { - const WCHAR *p, *token_end = parser->start; + const WCHAR *p; for (p = pos; !is_eol( parser, p ); p++) { @@ -819,7 +821,7 @@ if (p+1 < parser->end && p[1] == '"') /* double quotes */ { push_token( parser, p + 1 ); - parser->start = token_end = p + 2; + parser->start = p + 2; p++; } else /* end of quotes */ @@ -885,6 +887,19 @@ while (!is_eol( parser, p )) p++; pop_state( parser ); return p; +} + + +static void free_inf_file( struct inf_file *file ) +{ + unsigned int i; + + for (i = 0; i < file->nb_sections; i++) HeapFree( GetProcessHeap(), 0, file->sections[i] ); + HeapFree( GetProcessHeap(), 0, file->filename ); + HeapFree( GetProcessHeap(), 0, file->sections ); + HeapFree( GetProcessHeap(), 0, file->fields ); + HeapFree( GetProcessHeap(), 0, file->strings ); + HeapFree( GetProcessHeap(), 0, file ); } @@ -1012,7 +1027,7 @@ } else { - WCHAR *new_buff = (WCHAR *)buffer; + WCHAR *new_buff = buffer; /* UCS-16 files should start with the Unicode BOM; we should skip it */ if (*new_buff == 0xfeff) new_buff++; @@ -1041,7 +1056,7 @@ UnmapViewOfFile( buffer ); if (err) { - HeapFree( GetProcessHeap(), 0, file ); + if (file) free_inf_file( file ); SetLastError( err ); file = NULL; } @@ -1251,7 +1266,7 @@ if (handle != INVALID_HANDLE_VALUE) { - file = parse_file( handle, error, style ); + file = parse_file( handle, error, style); CloseHandle( handle ); } if (!file) @@ -1293,7 +1308,7 @@ } SetLastError( 0 ); - return (HINF)file; + return file; } @@ -1366,16 +1381,10 @@ void WINAPI SetupCloseInfFile( HINF hinf ) { struct inf_file *file = hinf; - unsigned int i; if (!hinf || (hinf == INVALID_HANDLE_VALUE)) return; - for (i = 0; i < file->nb_sections; i++) HeapFree( GetProcessHeap(), 0, file->sections[i] ); - HeapFree( GetProcessHeap(), 0, file->filename ); - HeapFree( GetProcessHeap(), 0, file->sections ); - HeapFree( GetProcessHeap(), 0, file->fields ); - HeapFree( GetProcessHeap(), 0, file->strings ); - HeapFree( GetProcessHeap(), 0, file ); + free_inf_file( file ); } Modified: trunk/reactos/dll/win32/setupapi/setupapi_private.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/setupapi/setupap…
============================================================================== --- trunk/reactos/dll/win32/setupapi/setupapi_private.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/setupapi/setupapi_private.h [iso-8859-1] Fri Mar 20 10:37:55 2015 @@ -261,13 +261,9 @@ struct inf_file; extern const WCHAR *DIRID_get_string( int dirid ); -extern unsigned int PARSER_string_substA( const struct inf_file *file, const WCHAR *text, - char *buffer, unsigned int size ); -extern unsigned int PARSER_string_substW( const struct inf_file *file, const WCHAR *text, - WCHAR *buffer, unsigned int size ); -extern const WCHAR *PARSER_get_inf_filename( HINF hinf ); -extern WCHAR *PARSER_get_src_root( HINF hinf ); -extern WCHAR *PARSER_get_dest_dir( INFCONTEXT *context ); +extern const WCHAR *PARSER_get_inf_filename( HINF hinf ) DECLSPEC_HIDDEN; +extern WCHAR *PARSER_get_src_root( HINF hinf ) DECLSPEC_HIDDEN; +extern WCHAR *PARSER_get_dest_dir( INFCONTEXT *context ) DECLSPEC_HIDDEN; /* support for Ascii queue callback functions */
10 years
1
0
0
0
[akhaldi] 66831: [MPLAY32] Display the current media position. By Ricardo Hanke. CORE-9396
by akhaldi@svn.reactos.org
Author: akhaldi Date: Fri Mar 20 10:13:11 2015 New Revision: 66831 URL:
http://svn.reactos.org/svn/reactos?rev=66831&view=rev
Log: [MPLAY32] Display the current media position. By Ricardo Hanke. CORE-9396 Modified: trunk/reactos/base/applications/mplay32/mplay32.c Modified: trunk/reactos/base/applications/mplay32/mplay32.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/mplay32.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/mplay32.c [iso-8859-1] Fri Mar 20 10:13:11 2015 @@ -15,6 +15,7 @@ HINSTANCE hInstance = NULL; HWND hTrackBar = NULL; HWND hToolBar = NULL; +HWND hTimeDisplay = NULL; HMENU hMainMenu = NULL; TCHAR szAppTitle[256] = _T(""); @@ -155,6 +156,51 @@ StringCbPrintf(szNewTitle, sizeof(szNewTitle), _T("%s - %s (%s)"), szAppTitle, szCurrentFile, szStatus); SetWindowText(hwnd, szNewTitle); +} + +void UpdateTimeDisplay(HWND hwnd) +{ + MCI_STATUS_PARMS mciStatus; + TCHAR szTime[MAX_MCISTR]; + DWORD dwTimeFormat; + + if (!wDeviceId) + { + SetWindowText(hwnd, _T("")); + return; + } + + mciStatus.dwItem = MCI_STATUS_TIME_FORMAT; + mciStatus.dwReturn = 0; + mciSendCommand(wDeviceId, MCI_STATUS, MCI_STATUS_ITEM, (DWORD_PTR)&mciStatus); + dwTimeFormat = mciStatus.dwReturn; + + mciStatus.dwItem = MCI_STATUS_POSITION; + mciStatus.dwReturn = 0; + mciSendCommand(wDeviceId, MCI_STATUS, MCI_STATUS_ITEM, (DWORD_PTR)&mciStatus); + + switch(dwTimeFormat) + { + case MCI_FORMAT_MILLISECONDS: + { + int s, m, h; + + s = (mciStatus.dwReturn / 1000) % 60; + m = ((mciStatus.dwReturn / (1000*60)) % 60); + h = ((mciStatus.dwReturn / (1000*60*60)) % 24); + StringCbPrintf(szTime, sizeof(szTime), _T("%02lu:%02lu:%02lu"), h, m, s); + break; + } + + /* The time format is unknown, so use the returned position as is */ + default: + { + StringCbPrintf(szTime, sizeof(szTime), _T("%lu"), mciStatus.dwReturn); + break; + } + } + + SetWindowText(hwnd, szTime); } static VOID @@ -286,6 +332,24 @@ return; } + hTimeDisplay = CreateWindowEx(0, + L"STATIC", + NULL, + WS_CHILD | WS_VISIBLE | SS_CENTER | SS_SUNKEN, + 195, + 4, + 135, + 18, + hToolBar, + NULL, + hInstance, + NULL); + if (!hTimeDisplay) + { + ShowLastWin32Error(hwnd); + return; + } + SetImageList(hwnd); SendMessage(hToolBar, TB_ADDBUTTONS, NumButtons, (LPARAM)Buttons); } @@ -333,7 +397,8 @@ } GetWindowRect(hToolBar, &rcTempRect); - MoveWindow(hTrackBar, 180, 0, rcTempRect.right - rcTempRect.left - 180, 25, TRUE); + MoveWindow(hTrackBar, 180, 0, rcTempRect.right - rcTempRect.left - 322, 25, TRUE); + MoveWindow(hTimeDisplay, rcTempRect.right - rcTempRect.left - 140, 4, 135, 18, TRUE); CheckMenuItem(hMainMenu, IDM_SWITCHVIEW, MF_BYCOMMAND | MF_CHECKED); bIsSingleWindow = TRUE; @@ -431,6 +496,8 @@ wDeviceId = 0; } + UpdateTimeDisplay(hTimeDisplay); + DisableMenuItems(); return 0; @@ -505,6 +572,7 @@ EnableMenuItems(hwnd); + UpdateTimeDisplay(hTimeDisplay); UpdateWindowCaption(hwnd); return 0; @@ -535,8 +603,8 @@ if (wDeviceId == 0) return; + KillTimer(hwnd, IDT_PLAYTIMER); SendMessage(hTrackBar, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)1); - KillTimer(hwnd, IDT_PLAYTIMER); mciGeneric.dwCallback = (DWORD_PTR)hwnd; mciError = mciSendCommand(wDeviceId, MCI_STOP, MCI_NOTIFY, (DWORD_PTR)&mciGeneric); @@ -548,6 +616,7 @@ mciSendCommand(wDeviceId, MCI_SEEK, MCI_WAIT | MCI_SEEK_TO_START, 0); + UpdateTimeDisplay(hTimeDisplay); UpdateWindowCaption(hwnd); SendMessage(hToolBar, @@ -659,6 +728,7 @@ else { SendMessage(hTrackBar, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)dwPos); + UpdateTimeDisplay(hTimeDisplay); } } @@ -1115,6 +1185,7 @@ { SendMessage(hToolBar, TB_AUTOSIZE, 0, 0); SendMessage(hToolBar, TB_GETITEMRECT, 1, (LPARAM)&Rect); + MoveWindow(hTimeDisplay, LOWORD(lParam) - 140, 4, 135, 18, TRUE); if (!bIsSingleWindow) { @@ -1126,7 +1197,7 @@ RECT ToolbarRect; MCI_DGV_PUT_PARMS mciPut; - MoveWindow(hTrackBar, 180, 0, LOWORD(lParam) - 180, 25, TRUE); + MoveWindow(hTrackBar, 180, 0, LOWORD(lParam) - 322, 25, TRUE); GetClientRect(hwnd, &Rect); GetClientRect(hToolBar, &ToolbarRect);
10 years
1
0
0
0
[cwittich] 66830: [I8042PRT] apply the hack for Hyper-V as well
by cwittich@svn.reactos.org
Author: cwittich Date: Fri Mar 20 08:18:38 2015 New Revision: 66830 URL:
http://svn.reactos.org/svn/reactos?rev=66830&view=rev
Log: [I8042PRT] apply the hack for Hyper-V as well Modified: trunk/reactos/drivers/input/i8042prt/hwhacks.c Modified: trunk/reactos/drivers/input/i8042prt/hwhacks.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/i8042prt/hwh…
============================================================================== --- trunk/reactos/drivers/input/i8042prt/hwhacks.c [iso-8859-1] (original) +++ trunk/reactos/drivers/input/i8042prt/hwhacks.c [iso-8859-1] Fri Mar 20 08:18:38 2015 @@ -59,7 +59,7 @@ // { {{BOARD_VENDOR, "RIOWORKS"}, {BOARD_NAME, "HDAMB"}, {BOARD_VERSION, "Rev E"}}, FL_NOLOOP }, // { {{BOARD_VENDOR, "ASUSTeK Computer Inc."}, {BOARD_NAME, "G1S"}, {BOARD_VERSION, "1.0"}}, FL_NOLOOP }, - { {{SYS_VENDOR, "Microsoft Corporation"}, {SYS_PRODUCT, "Virtual Machine"}, {SYS_VERSION, "VS2005R2"} }, FL_INITHACK }, + { {{SYS_VENDOR, "Microsoft Corporation"}, {SYS_PRODUCT, "Virtual Machine"}}, FL_INITHACK }, { {{SYS_VENDOR, "Dell Inc."}, {SYS_PRODUCT, "Latitude D530 "}}, FL_INITHACK }, { {{SYS_VENDOR, "Dell Inc."}, {SYS_PRODUCT, "Latitude D531 "}}, FL_INITHACK }, { {{SYS_VENDOR, "Dell Inc."}, {SYS_PRODUCT, "Latitude D600 "}}, FL_INITHACK },
10 years
1
0
0
0
[hbelusca] 66829: [NTVDM] - Fix bugs in MemExceptionHandler, VDDInstallMemoryHook and VDDDeInstallMemoryHook where we must translate physical addresses to real ones and vice-versa. - Give a first i...
by hbelusca@svn.reactos.org
Author: hbelusca Date: Fri Mar 20 00:32:31 2015 New Revision: 66829 URL:
http://svn.reactos.org/svn/reactos?rev=66829&view=rev
Log: [NTVDM] - Fix bugs in MemExceptionHandler, VDDInstallMemoryHook and VDDDeInstallMemoryHook where we must translate physical addresses to real ones and vice-versa. - Give a first implementation of VDDAllocMem and VDDFreeMem. Modified: trunk/reactos/subsystems/mvdm/ntvdm/memory.c Modified: trunk/reactos/subsystems/mvdm/ntvdm/memory.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/memo…
============================================================================== --- trunk/reactos/subsystems/mvdm/ntvdm/memory.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/ntvdm/memory.c [iso-8859-1] Fri Mar 20 00:32:31 2015 @@ -196,7 +196,7 @@ ASSERT(FaultAddress < MAX_ADDRESS && Hook != NULL && Hook->hVdd != NULL); /* Call the VDD handler */ - Hook->VddHandler((PVOID)FaultAddress, (ULONG)Writing); + Hook->VddHandler(REAL_TO_PHYS(FaultAddress), (ULONG)Writing); } BOOL @@ -363,9 +363,9 @@ NTSTATUS Status; PMEM_HOOK Hook; ULONG i; - ULONG FirstPage = (ULONG_PTR)pStart >> 12; - ULONG LastPage = ((ULONG_PTR)pStart + dwCount - 1) >> 12; - PVOID Address = (PVOID)(FirstPage * PAGE_SIZE); + ULONG FirstPage = (ULONG_PTR)PHYS_TO_REAL(pStart) >> 12; + ULONG LastPage = ((ULONG_PTR)PHYS_TO_REAL(pStart) + dwCount - 1) >> 12; + PVOID Address = (PVOID)REAL_TO_PHYS(FirstPage * PAGE_SIZE); SIZE_T Size = (LastPage - FirstPage + 1) * PAGE_SIZE; PLIST_ENTRY Pointer; @@ -400,7 +400,10 @@ } /* Decommit the pages */ - Status = NtFreeVirtualMemory(NtCurrentProcess(), &Address, &Size, MEM_DECOMMIT); + Status = NtFreeVirtualMemory(NtCurrentProcess(), + &Address, + &Size, + MEM_DECOMMIT); if (!NT_SUCCESS(Status)) { if (Pointer == &HookList) @@ -430,9 +433,9 @@ NTSTATUS Status; PMEM_HOOK Hook; ULONG i; - ULONG FirstPage = (ULONG_PTR)pStart >> 12; - ULONG LastPage = ((ULONG_PTR)pStart + dwCount - 1) >> 12; - PVOID Address = (PVOID)(FirstPage * PAGE_SIZE); + ULONG FirstPage = (ULONG_PTR)PHYS_TO_REAL(pStart) >> 12; + ULONG LastPage = ((ULONG_PTR)PHYS_TO_REAL(pStart) + dwCount - 1) >> 12; + PVOID Address = (PVOID)REAL_TO_PHYS(FirstPage * PAGE_SIZE); SIZE_T Size = (LastPage - FirstPage + 1) * PAGE_SIZE; if (dwCount == 0) return FALSE; @@ -476,9 +479,39 @@ IN PVOID Address, IN ULONG Size) { - // FIXME - UNIMPLEMENTED; - return FALSE; + NTSTATUS Status; + PMEM_HOOK Hook; + ULONG i; + ULONG FirstPage = (ULONG_PTR)PHYS_TO_REAL(Address) >> 12; + ULONG LastPage = ((ULONG_PTR)PHYS_TO_REAL(Address) + Size - 1) >> 12; + SIZE_T RealSize = (LastPage - FirstPage + 1) * PAGE_SIZE; + + if (Size == 0) return FALSE; + + /* Fixup the address */ + Address = (PVOID)REAL_TO_PHYS(FirstPage * PAGE_SIZE); + + /* Be sure that all the region is held by the VDD */ + for (i = FirstPage; i <= LastPage; i++) + { + Hook = PageTable[i]; + if (Hook == NULL) return FALSE; + + if (Hook->hVdd != hVdd) + { + DPRINT1("VDDAllocMem: Page %u owned by someone else.\n", i); + return FALSE; + } + } + + /* OK, all the range is held by the VDD. Commit the pages. */ + Status = NtAllocateVirtualMemory(NtCurrentProcess(), + &Address, + 0, + &RealSize, + MEM_COMMIT, + PAGE_READWRITE); + return NT_SUCCESS(Status); } BOOL @@ -487,9 +520,37 @@ IN PVOID Address, IN ULONG Size) { - // FIXME - UNIMPLEMENTED; - return FALSE; + NTSTATUS Status; + PMEM_HOOK Hook; + ULONG i; + ULONG FirstPage = (ULONG_PTR)PHYS_TO_REAL(Address) >> 12; + ULONG LastPage = ((ULONG_PTR)PHYS_TO_REAL(Address) + Size - 1) >> 12; + SIZE_T RealSize = (LastPage - FirstPage + 1) * PAGE_SIZE; + + if (Size == 0) return FALSE; + + /* Fixup the address */ + Address = (PVOID)REAL_TO_PHYS(FirstPage * PAGE_SIZE); + + /* Be sure that all the region is held by the VDD */ + for (i = FirstPage; i <= LastPage; i++) + { + Hook = PageTable[i]; + if (Hook == NULL) return FALSE; + + if (Hook->hVdd != hVdd) + { + DPRINT1("VDDFreeMem: Page %u owned by someone else.\n", i); + return FALSE; + } + } + + /* OK, all the range is held by the VDD. Decommit the pages. */ + Status = NtFreeVirtualMemory(NtCurrentProcess(), + &Address, + &RealSize, + MEM_DECOMMIT); + return NT_SUCCESS(Status); } BOOL
10 years, 1 month
1
0
0
0
[hbelusca] 66828: [MVDM]: Add a testbench VDD. Tested by hyoenmadan on NT4 MIPS NTVDM and by myself on 2k3 NTVDM.
by hbelusca@svn.reactos.org
Author: hbelusca Date: Fri Mar 20 00:14:11 2015 New Revision: 66828 URL:
http://svn.reactos.org/svn/reactos?rev=66828&view=rev
Log: [MVDM]: Add a testbench VDD. Tested by hyoenmadan on NT4 MIPS NTVDM and by myself on 2k3 NTVDM. Added: trunk/reactos/subsystems/mvdm/samples/ (with props) trunk/reactos/subsystems/mvdm/samples/CMakeLists.txt (with props) trunk/reactos/subsystems/mvdm/samples/testvdd/ (with props) trunk/reactos/subsystems/mvdm/samples/testvdd/CMakeLists.txt (with props) trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.c (with props) trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.rc (with props) trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.spec (with props) Modified: trunk/reactos/subsystems/mvdm/CMakeLists.txt trunk/reactos/subsystems/mvdm/README.txt Modified: trunk/reactos/subsystems/mvdm/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/CMakeLists…
============================================================================== --- trunk/reactos/subsystems/mvdm/CMakeLists.txt [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/CMakeLists.txt [iso-8859-1] Fri Mar 20 00:14:11 2015 @@ -2,5 +2,6 @@ add_subdirectory(config) #add_subdirectory(dos) add_subdirectory(ntvdm) +add_subdirectory(samples) add_subdirectory(vdmdbg) #add_subdirectory(wow16) Modified: trunk/reactos/subsystems/mvdm/README.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/README.txt…
============================================================================== --- trunk/reactos/subsystems/mvdm/README.txt [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/README.txt [iso-8859-1] Fri Mar 20 00:14:11 2015 @@ -4,5 +4,6 @@ - config : Miscellaneous configuration files. - dos : All 16-bit DOS files (kernel, drivers, apps...) are placed here. - ntvdm : NT Virtual DOS Machine. +- samples: Sample programs for NTVDM. - vdmdbg : Virtual DOS Machine debug helper DLL (from Wine). - wow16 : All Win16 thunk files are placed here. Propchange: trunk/reactos/subsystems/mvdm/samples/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Fri Mar 20 00:14:11 2015 @@ -0,0 +1 @@ +((CORE|ROSTESTS|ROSAPPS)-\d+)(,? ?((CORE|ROSTESTS|ROSAPPS)-\d+))*(,? ?(and |or )?((CORE|ROSTESTS|ROSAPPS)-\d+))? Propchange: trunk/reactos/subsystems/mvdm/samples/ ------------------------------------------------------------------------------ bugtraq:message = See issue %BUGID% for more details. Propchange: trunk/reactos/subsystems/mvdm/samples/ ------------------------------------------------------------------------------ bugtraq:url =
https://jira.reactos.org/browse/%BUGID%
Propchange: trunk/reactos/subsystems/mvdm/samples/ ------------------------------------------------------------------------------ tsvn:logminsize = 10 Added: trunk/reactos/subsystems/mvdm/samples/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/samples/CM…
============================================================================== --- trunk/reactos/subsystems/mvdm/samples/CMakeLists.txt (added) +++ trunk/reactos/subsystems/mvdm/samples/CMakeLists.txt [iso-8859-1] Fri Mar 20 00:14:11 2015 @@ -0,0 +1,2 @@ + +add_subdirectory(testvdd) Propchange: trunk/reactos/subsystems/mvdm/samples/CMakeLists.txt ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/reactos/subsystems/mvdm/samples/testvdd/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Fri Mar 20 00:14:11 2015 @@ -0,0 +1 @@ +((CORE|ROSTESTS|ROSAPPS)-\d+)(,? ?((CORE|ROSTESTS|ROSAPPS)-\d+))*(,? ?(and |or )?((CORE|ROSTESTS|ROSAPPS)-\d+))? Propchange: trunk/reactos/subsystems/mvdm/samples/testvdd/ ------------------------------------------------------------------------------ bugtraq:message = See issue %BUGID% for more details. Propchange: trunk/reactos/subsystems/mvdm/samples/testvdd/ ------------------------------------------------------------------------------ bugtraq:url =
https://jira.reactos.org/browse/%BUGID%
Propchange: trunk/reactos/subsystems/mvdm/samples/testvdd/ ------------------------------------------------------------------------------ tsvn:logminsize = 10 Added: trunk/reactos/subsystems/mvdm/samples/testvdd/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/samples/te…
============================================================================== --- trunk/reactos/subsystems/mvdm/samples/testvdd/CMakeLists.txt (added) +++ trunk/reactos/subsystems/mvdm/samples/testvdd/CMakeLists.txt [iso-8859-1] Fri Mar 20 00:14:11 2015 @@ -0,0 +1,16 @@ + +spec2def(testvdd.dll testvdd.spec) + +list(APPEND SOURCE + testvdd.c + testvdd.rc + ${CMAKE_CURRENT_BINARY_DIR}/testvdd.def) + +add_library(testvdd SHARED ${SOURCE}) +#set_module_type(testvdd win32dll UNICODE ENTRYPOINT VDDInitialize) +set_module_type(testvdd win32dll UNICODE) + +target_link_libraries(testvdd ${PSEH_LIB}) + +add_importlibs(testvdd ntvdm user32 msvcrt kernel32 ntdll) +#add_cd_file(TARGET testvdd DESTINATION reactos/system32 FOR all) Propchange: trunk/reactos/subsystems/mvdm/samples/testvdd/CMakeLists.txt ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/samples/te…
============================================================================== --- trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.c (added) +++ trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.c [iso-8859-1] Fri Mar 20 00:14:11 2015 @@ -0,0 +1,436 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS Virtual DOS Machine + * FILE: samples/testvdd/testvdd.c + * PURPOSE: Testing VDD for NTVDM + * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca(a)sfr.fr) + */ + +/* INCLUDES *******************************************************************/ + +#include <stdio.h> + +#include <windows.h> +#include <vddsvc.h> + +#define NDEBUG +#include <debug.h> + +// Enable this define to use DPRINT1 instead of MessageBox +// #define DBG_SILENT + +/* GLOBALS ********************************************************************/ + +#ifdef DBG_SILENT + + #define VDD_DBG(...) \ + do { \ + DPRINT1(__VA_ARGS__); \ + DbgPrint("\n"); \ + } while(0) + +#else + + static VOID + VddDbgMsg(LPCSTR Format, ...) + { + #ifndef WIN2K_COMPLIANT + CHAR StaticBuffer[256]; + LPSTR Buffer = StaticBuffer; // Use the static buffer by default. + #else + CHAR Buffer[2048]; // Large enough. If not, increase it by hand. + #endif + size_t MsgLen; + va_list Parameters; + + va_start(Parameters, Format); + + #ifndef WIN2K_COMPLIANT + /* + * Retrieve the message length and if it is too long, allocate + * an auxiliary buffer; otherwise use the static buffer. + */ + MsgLen = _vscprintf(Format, Parameters) + 1; // NULL-terminated + if (MsgLen > ARRAYSIZE(StaticBuffer)) + { + Buffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, MsgLen * sizeof(WCHAR)); + if (Buffer == NULL) + { + /* Allocation failed, use the static buffer and display a suitable error message */ + Buffer = StaticBuffer; + Format = "DisplayMessage()\nOriginal message is too long and allocating an auxiliary buffer failed."; + MsgLen = strlen(Format); + } + } + #else + MsgLen = ARRAYSIZE(Buffer); + #endif + + /* Display the message */ + _vsnprintf(Buffer, MsgLen, Format, Parameters); + MessageBoxA(NULL, Buffer, "Test VDD", MB_OK); + + #ifndef WIN2K_COMPLIANT + /* Free the buffer if needed */ + if (Buffer != StaticBuffer) HeapFree(GetProcessHeap(), 0, Buffer); + #endif + + va_end(Parameters); + } + + #define VDD_DBG VddDbgMsg +#endif + +HANDLE hVdd = NULL; + +/* + * Port hooks (serial ports) -- Each port range is for testing different port handlers. + */ +#define NUM_PORTS 4 + +VDD_IO_PORTRANGE PortDefs[NUM_PORTS] = +{ + {0x3F8, 0x3FF}, + {0x2F8, 0x2FF}, + {0x3E8, 0x3EF}, + {0x2E8, 0x2EF} +}; + +// PFNVDD_INB PortInB; +// PFNVDD_INW PortInW; +// PFNVDD_INSB PortInsB; +// PFNVDD_INSW PortInsW; +// PFNVDD_OUTB PortOutB; +// PFNVDD_OUTW PortOutW; +// PFNVDD_OUTSB PortOutsB; +// PFNVDD_OUTSW PortOutsW; + +// VDD_IO_HANDLERS PortHandlers[NUM_PORTS] = +// { + // {PortInB, NULL , NULL , NULL , PortOutB, NULL , NULL , NULL }, + // {PortInB, PortInW, NULL , NULL , PortOutB, PortOutW, NULL , NULL }, + // {PortInB, NULL , PortInsB, NULL , PortOutB, NULL , PortOutsB, NULL }, + // {PortInB, NULL , NULL , PortInsW, PortOutB, NULL , NULL , PortOutsW}, +// }; + + +/* PRIVATE FUNCTIONS **********************************************************/ + +VOID +WINAPI +PortInB(IN USHORT Port, + OUT PUCHAR Data) +{ + *Data = 0; + VDD_DBG("0x%08x (BYTE 0x%02x) <-- Port 0x%04x", Data, *Data, Port); +} + +VOID +WINAPI +PortOutB(IN USHORT Port, + IN UCHAR Data) +{ + VDD_DBG("(BYTE 0x%02x) --> Port 0x%04x", Data, Port); +} + +VOID +WINAPI +PortInW(IN USHORT Port, + OUT PUSHORT Data) +{ + *Data = 0; + VDD_DBG("0x%08x (WORD 0x%04x) <-- Port 0x%04x", Data, *Data, Port); +} + +VOID +WINAPI +PortOutW(IN USHORT Port, + IN USHORT Data) +{ + VDD_DBG("(WORD 0x%04x) --> Port 0x%04x", Data, Port); +} + + + + +VOID +WINAPI +PortInsB(IN USHORT Port, + OUT PUCHAR Data, + IN USHORT Count) +{ + VDD_DBG("0x%08x (BYTESTR[%u]) <-- Port 0x%04x", Data, Count, Port); + while (Count--) *Data++ = 0; +} + +VOID +WINAPI +PortOutsB(IN USHORT Port, + IN PUCHAR Data, + IN USHORT Count) +{ + VDD_DBG("0x%08x (BYTESTR[%u]) --> Port 0x%04x", Data, Count, Port); +} + +VOID +WINAPI +PortInsW(IN USHORT Port, + OUT PUSHORT Data, + IN USHORT Count) +{ + VDD_DBG("0x%08x (WORDSTR[%u]) <-- Port 0x%04x", Data, Count, Port); + while (Count--) *Data++ = 0; +} + +VOID +WINAPI +PortOutsW(IN USHORT Port, + IN PUSHORT Data, + IN USHORT Count) +{ + VDD_DBG("0x%08x (WORDSTR[%u]) --> Port 0x%04x", Data, Count, Port); +} + + + +VDD_IO_HANDLERS PortHandlers[NUM_PORTS] = +{ + {PortInB, NULL , NULL , NULL , PortOutB, NULL , NULL , NULL }, + {PortInB, PortInW, NULL , NULL , PortOutB, PortOutW, NULL , NULL }, + {PortInB, NULL , PortInsB, NULL , PortOutB, NULL , PortOutsB, NULL }, + {PortInB, NULL , NULL , PortInsW, PortOutB, NULL , NULL , PortOutsW}, +}; + +/* + * Memory hooking. Everything should be page-rounded. + */ + +#ifndef PAGE_SIZE +#define PAGE_SIZE 0x1000 +#endif + +#ifndef PAGE_ROUND_DOWN +#define PAGE_ROUND_DOWN(x) \ + ( ((ULONG_PTR)(x)) & (~(PAGE_SIZE-1)) ) +#endif + +#ifndef PAGE_ROUND_UP +#define PAGE_ROUND_UP(x) \ + ( (((ULONG_PTR)(x)) + PAGE_SIZE-1) & (~(PAGE_SIZE-1)) ) +#endif + +#define MEM_SEG_START 0x0000 +#define MEM_SIZE PAGE_SIZE + +USHORT HookedSegment = 0x0000; +ULONG HookedOffset = 0x0000; +PVOID HookedAddress = NULL; + +VOID +WINAPI +MemoryHandler(IN PVOID FaultAddress, + IN ULONG RWMode) +{ + BOOLEAN Success = FALSE; + + VDD_DBG("MemoryHandler(0x%08x, %s)", FaultAddress, (RWMode == 1) ? "Write" : "Read"); + // VDDTerminateVDM(); + + Success = VDDAllocMem(hVdd, HookedAddress, MEM_SIZE); + if (!Success) VDD_DBG("Unable to allocate memory"); +} + +PVOID +FindHookableMemory(IN USHORT StartSegment, + IN ULONG StartOffset, + OUT PUSHORT HookedSegment, + OUT PULONG HookedOffset) +{ + BOOLEAN Success; + PVOID PhysMemStart = NULL; + USHORT Segment = StartSegment; + ULONG Offset = PAGE_ROUND_DOWN(StartOffset); + + *HookedSegment = 0x0000; + *HookedOffset = 0x0000; + + while (Segment <= 0xF000) + { + // PhysMemStart = GetVDMPointer(GetVDMAddress(Segment, Offset), MEM_SIZE, (getMSW() & MSW_PE)); + PhysMemStart = VdmMapFlat(Segment, Offset, getMODE()); + + /* Try to hook this memory area... */ + Success = VDDInstallMemoryHook(hVdd, PhysMemStart, MEM_SIZE, MemoryHandler); + if (!Success) + { + /* ... it didn't work. Free PhysMemStart, increase segment/offset and try again. */ + DPRINT1("%04lX:%08lX hooking failed, continue...\n", Segment, Offset); + + VdmUnmapFlat(Segment, Offset, PhysMemStart, getMODE()); + // FreeVDMPointer(GetVDMAddress(Segment, Offset), MEM_SIZE, PhysMemStart, (getMSW() & MSW_PE)); + PhysMemStart = NULL; + + Offset += MEM_SIZE; + if (Offset + MEM_SIZE > 0xFFFF) + { + Segment += 0x1000; + Offset = 0x0000; + } + } + else + { + /* ... it worked. We'll free PhysMemStart later on. */ + DPRINT1("%04lX:%08lX hooking succeeded!\n", Segment, Offset); + break; + } + } + + if (PhysMemStart) + { + VDD_DBG("We hooked at %04lX:%08lX (0x%p)", Segment, Offset, PhysMemStart); + *HookedSegment = Segment; + *HookedOffset = Offset; + } + else + { + VDD_DBG("Hooking attempt failed!"); + } + + return PhysMemStart; +} + + +BOOLEAN +RegisterVDD(BOOLEAN Register) +{ + BOOLEAN Success = FALSE; + + if (Register) + { + /* Hook some IO ports */ + VDD_DBG("VDDInstallIOHook"); + Success = VDDInstallIOHook(hVdd, NUM_PORTS, PortDefs, PortHandlers); + if (!Success) + { + VDD_DBG("Unable to hook IO ports, terminate..."); + VDDTerminateVDM(); + } + + /* Add a memory handler */ + VDD_DBG("FindHookableMemory"); + HookedAddress = FindHookableMemory(MEM_SEG_START, 0x0000, + &HookedSegment, &HookedOffset); + if (HookedAddress == NULL) + { + VDD_DBG("Unable to install memory handler, terminate..."); + VDDTerminateVDM(); + } + VDD_DBG("Initialization finished!"); + } + else + { + Success = VDDFreeMem(hVdd, HookedAddress, MEM_SIZE); + if (!Success) VDD_DBG("Unable to free memory"); + + /* Uninstall the memory handler */ + VDD_DBG("VDDDeInstallMemoryHook"); + Success = VDDDeInstallMemoryHook(hVdd, HookedAddress, MEM_SIZE); + if (!Success) VDD_DBG("Memory handler uninstall failed"); + + VDD_DBG("VdmUnmapFlat"); + Success = VdmUnmapFlat(HookedSegment, HookedOffset, HookedAddress, getMODE()); + // FreeVDMPointer(GetVDMAddress(HookedSegment, HookedOffset), MEM_SIZE, HookedAddress, (getMSW() & MSW_PE)); + if (!Success) VDD_DBG("VdmUnmapFlat failed!"); + + /* Deregister the hooked IO ports */ + VDD_DBG("VDDDeInstallIOHook"); + VDDDeInstallIOHook(hVdd, NUM_PORTS, PortDefs); + + VDD_DBG("Cleanup finished!"); + Success = TRUE; + } + + return Success; +} + +/* PUBLIC FUNCTIONS ***********************************************************/ + +VOID +WINAPI +TestVDDRegister(VOID) +{ + VDD_DBG("TestVDDRegister"); + + /* Clear the Carry Flag: success */ + setCF(0); +} + +VOID +WINAPI +TestVDDUnRegister(VOID) +{ + VDD_DBG("TestVDDUnRegister"); + + /* Clear the Carry Flag: success */ + setCF(0); +} + +VOID +WINAPI +TestVDDDispatch(VOID) +{ + VDD_DBG("TestVDDDispatch"); + + /* Clear the Carry Flag: success */ + setCF(0); +} + +/* ENTRY-POINT ****************************************************************/ + +BOOL +WINAPI // VDDInitialize +DllMain(IN HINSTANCE hInstanceDll, + IN DWORD dwReason, + IN LPVOID lpReserved) +{ + BOOLEAN Success; + + UNREFERENCED_PARAMETER(lpReserved); + + switch (dwReason) + { + case DLL_PROCESS_ATTACH: + { + VDD_DBG("DLL_PROCESS_ATTACH"); + + /* Save our global VDD handle */ + hVdd = hInstanceDll; + + /* Register VDD */ + Success = RegisterVDD(TRUE); + if (!Success) VDD_DBG("Failed to register the VDD..."); + + break; + } + + case DLL_PROCESS_DETACH: + { + VDD_DBG("DLL_PROCESS_DETACH"); + + /* Unregister VDD */ + Success = RegisterVDD(FALSE); + if (!Success) VDD_DBG("Failed to unregister the VDD..."); + + break; + } + + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + default: + break; + } + + return TRUE; +} + +/* EOF */ Propchange: trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/samples/te…
============================================================================== --- trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.rc (added) +++ trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.rc [iso-8859-1] Fri Mar 20 00:14:11 2015 @@ -0,0 +1,6 @@ + +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "NTVDM Testing VDD" +#define REACTOS_STR_INTERNAL_NAME "testvdd" +#define REACTOS_STR_ORIGINAL_FILENAME "testvdd.dll" +#include <reactos/version.rc> Propchange: trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/samples/te…
============================================================================== --- trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.spec (added) +++ trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.spec [iso-8859-1] Fri Mar 20 00:14:11 2015 @@ -0,0 +1,5 @@ +; @ stdcall DllMain(ptr long ptr) + +@ stdcall TestVDDRegister() +@ stdcall TestVDDUnRegister() +@ stdcall TestVDDDispatch() Propchange: trunk/reactos/subsystems/mvdm/samples/testvdd/testvdd.spec ------------------------------------------------------------------------------ svn:eol-style = native
10 years, 1 month
1
0
0
0
[hbelusca] 66827: [CLT2015] Grab r66826, r66825, r66824, r66823, r66822, r66813, r66799 (WMI implementation), r66821, r66820 (NTVDM fixes), r66819, r66818 and other RAPPS fixes, plus r66807. And th...
by hbelusca@svn.reactos.org
Author: hbelusca Date: Thu Mar 19 23:51:20 2015 New Revision: 66827 URL:
http://svn.reactos.org/svn/reactos?rev=66827&view=rev
Log: [CLT2015] Grab r66826, r66825, r66824, r66823, r66822, r66813, r66799 (WMI implementation), r66821, r66820 (NTVDM fixes), r66819, r66818 and other RAPPS fixes, plus r66807. And the PSDK fixes. Added: branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/dmi.h - copied unchanged from r66826, trunk/reactos/drivers/input/i8042prt/dmi.h branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/hwhacks.c - copied unchanged from r66826, trunk/reactos/drivers/input/i8042prt/hwhacks.c branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/wmiguid.h - copied, changed from r66813, trunk/reactos/include/ddk/wmiguid.h branches/ReactOS-0.3.17-CLT2015/reactos/include/reactos/wmiioctl.h - copied unchanged from r66800, trunk/reactos/include/reactos/wmiioctl.h branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/wmi/guidobj.c - copied, changed from r66800, trunk/reactos/ntoskrnl/wmi/guidobj.c branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/wmi/smbios.c - copied unchanged from r66826, trunk/reactos/ntoskrnl/wmi/smbios.c branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/wmi/wmidrv.c - copied, changed from r66800, trunk/reactos/ntoskrnl/wmi/wmidrv.c branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/wmi/wmip.h - copied, changed from r66800, trunk/reactos/ntoskrnl/wmi/wmip.h Modified: branches/ReactOS-0.3.17-CLT2015/reactos/ (props changed) branches/ReactOS-0.3.17-CLT2015/reactos/base/applications/rapps/lang/fr-FR.rc branches/ReactOS-0.3.17-CLT2015/reactos/base/applications/rapps/winmain.c branches/ReactOS-0.3.17-CLT2015/reactos/dll/win32/ieframe/iexplore.c branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/CMakeLists.txt branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/i8042prt.c branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/i8042prt.h branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/pnp.c branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/nt_vdd.h branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/vddsvc.h branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/wdm.h branches/ReactOS-0.3.17-CLT2015/reactos/include/psdk/bcrypt.h branches/ReactOS-0.3.17-CLT2015/reactos/include/psdk/commctrl.h branches/ReactOS-0.3.17-CLT2015/reactos/include/psdk/wmistr.h branches/ReactOS-0.3.17-CLT2015/reactos/include/xdk/iofuncs.h branches/ReactOS-0.3.17-CLT2015/reactos/lib/rtl/error.c branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/include/internal/ps.h branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/io/iomgr/iomgr.c branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ke/i386/exp.c branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ke/i386/traphdlr.c branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ke/i386/v86vdm.c branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ntos.cmake branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ps/i386/psldt.c branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/wmi/wmi.c branches/ReactOS-0.3.17-CLT2015/reactos/subsystems/mvdm/ntvdm/CMakeLists.txt branches/ReactOS-0.3.17-CLT2015/reactos/subsystems/mvdm/ntvdm/memory.c Propchange: branches/ReactOS-0.3.17-CLT2015/reactos/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu Mar 19 23:51:20 2015 @@ -6,7 +6,7 @@ /branches/condrv_restructure:63104-65657 /branches/header-work:45691-47721 /branches/kd++:58883-58973 -/branches/kernel-fun/reactos:62304,62353,62531-62532,62853,64152,64173-64174,65253 +/branches/kernel-fun/reactos:62291,62294,62301-62302,62304,62321-62322,62353,62531-62532,62853,64152,64173-64174,65253 /branches/ntvdm:59241-63176 /branches/reactos-yarotows:45219-46371,46373-48025,48027-49273 /branches/reactx/reactos:49994-49995 @@ -20,4 +20,4 @@ /branches/usb-bringup:51335,51337,51341-51343,51348,51350,51353,51355,51365-51369,51372,51384-54388,54396-54398,54736-54737,54752-54754,54756-54760,54762,54764-54765,54767-54768,54772,54774-54777,54781,54787,54790-54792,54797-54798,54806,54808,54834-54838,54843,54850,54852,54856,54858-54859 /branches/usb-bringup-trunk:55019-55543,55548-55554,55556-55567 /branches/wlan-bringup:54809-54998 -/trunk/reactos:66727-66770,66776-66779,66795,66810,66812,66814-66816 +/trunk/reactos:66727-66826 Modified: branches/ReactOS-0.3.17-CLT2015/reactos/base/applications/rapps/lang/fr-FR.rc URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/base/applications/rapps/lang/fr-FR.rc [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/base/applications/rapps/lang/fr-FR.rc [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -10,8 +10,8 @@ END POPUP "&Programmes" BEGIN - MENUITEM "&Installer\tCtrl+Enter", ID_INSTALL - MENUITEM "&Désinstaller\tCtrl+Del", ID_UNINSTALL + MENUITEM "&Installer\tCtrl+Entrée", ID_INSTALL + MENUITEM "&Désinstaller\tCtrl+Suppr", ID_UNINSTALL MENUITEM "&Modifier", ID_MODIFY MENUITEM SEPARATOR MENUITEM "&Supprimer du registre", ID_REGREMOVE @@ -40,8 +40,8 @@ BEGIN POPUP "popup" BEGIN - MENUITEM "&Installer\tCtrl+Enter", ID_INSTALL - MENUITEM "&Désinstaller\tCtrl+Del", ID_UNINSTALL + MENUITEM "&Installer\tCtrl+Entrée", ID_INSTALL + MENUITEM "&Désinstaller\tCtrl+Suppr", ID_UNINSTALL MENUITEM "&Modifier", ID_MODIFY MENUITEM SEPARATOR MENUITEM "&Supprimer du registre", ID_REGREMOVE @@ -129,15 +129,15 @@ STRINGTABLE BEGIN - IDS_INFO_VERSION "\nVersion: " - IDS_INFO_DESCRIPTION "\nDescription: " + IDS_INFO_VERSION "\nVersion : " + IDS_INFO_DESCRIPTION "\nDescription : " IDS_INFO_PUBLISHER "\nAuteur : " IDS_INFO_HELPLINK "\nLien d'aide : " IDS_INFO_HELPPHONE "\nTéléphone d'aide : " IDS_INFO_README "\nLisez-moi : " IDS_INFO_REGOWNER "\nUtilisateur enregistré : " IDS_INFO_PRODUCTID "\nID du produit : " - IDS_INFO_CONTACT "\nContact: " + IDS_INFO_CONTACT "\nContact : " IDS_INFO_UPDATEINFO "\nInformation de mise à jour : " IDS_INFO_INFOABOUT "\nInformation à propos : " IDS_INFO_COMMENTS "\nCommentaires : " @@ -150,11 +150,11 @@ STRINGTABLE BEGIN - IDS_AINFO_VERSION "\nVersion: " - IDS_AINFO_DESCRIPTION "\nDescription: " + IDS_AINFO_VERSION "\nVersion : " + IDS_AINFO_DESCRIPTION "\nDescription : " IDS_AINFO_SIZE "\nTaille : " IDS_AINFO_URLSITE "\nSite internet : " - IDS_AINFO_LICENSE "\nLicense: " + IDS_AINFO_LICENSE "\nLicence : " END STRINGTABLE Modified: branches/ReactOS-0.3.17-CLT2015/reactos/base/applications/rapps/winmain.c URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/base/applications/rapps/winmain.c [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/base/applications/rapps/winmain.c [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -196,6 +196,8 @@ HICON hIcon; HIMAGELIST hImageListView; + SendMessage(hListView, WM_SETREDRAW, FALSE, 0); + (VOID) ListView_DeleteAllItems(hListView); /* Create image list */ @@ -253,6 +255,8 @@ /* set automatic column width for program names if the list is not empty */ if (ListView_GetItemCount(hListView) > 0) ListView_SetColumnWidth(hListView, 0, LVSCW_AUTOSIZE); + + SendMessage(hListView, WM_SETREDRAW, TRUE, 0); } VOID Modified: branches/ReactOS-0.3.17-CLT2015/reactos/dll/win32/ieframe/iexplore.c URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/dll/win32/ieframe/iexplore.c [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/dll/win32/ieframe/iexplore.c [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -385,7 +385,7 @@ #ifdef __REACTOS__ static void ie_dialog_properties(HWND hwnd) { - ShellExecute(hwnd, TEXT("open"), TEXT("rundll32.exe"), TEXT("shell32.dll, Control_RunDLL inetcpl.cpl"), NULL, SW_SHOWNORMAL); + ShellExecuteW(hwnd, NULL, L"inetcpl.cpl", NULL, NULL, 0); } #endif Modified: branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/CMakeLists.txt [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/CMakeLists.txt [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -1,6 +1,7 @@ list(APPEND SOURCE createclose.c + hwhacks.c i8042prt.c keyboard.c misc.c Modified: branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/i8042prt.c URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/i8042prt.c [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/i8042prt.c [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -560,5 +560,7 @@ DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = i8042SystemControl; DriverObject->MajorFunction[IRP_MJ_PNP] = i8042Pnp; + i8042InitializeHwHacks(); + return STATUS_SUCCESS; } Modified: branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/i8042prt.h URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/i8042prt.h [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/i8042prt.h [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -441,4 +441,19 @@ IN PUNICODE_STRING RegistryPath, OUT PI8042_SETTINGS Settings); +/* hwhacks.c */ + +VOID +NTAPI +i8042InitializeHwHacks( + VOID); + +enum _FLAGS +{ + FL_NOLOOP = 0x01, + FL_INITHACK = 0x02, +}; + +extern ULONG i8042HwFlags; + #endif /* _I8042PRT_PCH_ */ Modified: branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/pnp.c URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/pnp.c [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/drivers/input/i8042prt/pnp.c [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -481,10 +481,11 @@ Irql = KeAcquireInterruptSpinLock(DeviceExtension->HighestDIRQLInterrupt); /* HACK: the mouse has already been reset in i8042DetectMouse. This second reset prevents some touchpads/mice from working (Dell D531, D600). - See CORE-6901*/ - #ifndef __I8042PRT_HACK_FOR_NOTEBOOK__ - i8042IsrWritePort(DeviceExtension, MOU_CMD_RESET, CTRL_WRITE_MOUSE); - #endif + See CORE-6901 */ + if (!(i8042HwFlags & FL_INITHACK)) + { + i8042IsrWritePort(DeviceExtension, MOU_CMD_RESET, CTRL_WRITE_MOUSE); + } KeReleaseInterruptSpinLock(DeviceExtension->HighestDIRQLInterrupt, Irql); } Modified: branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/nt_vdd.h URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/nt_vdd.h [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/nt_vdd.h [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -191,25 +191,19 @@ PVOID FaultAddress, ULONG RWMode); -PBYTE -WINAPI -Sim32pGetVDMPointer( - _In_ ULONG Address, - _In_ BOOLEAN ProtectedMode); - -PBYTE -WINAPI -MGetVdmPointer( - _In_ ULONG Address, - _In_ ULONG Size, - _In_ BOOLEAN ProtectedMode); - PVOID WINAPI VdmMapFlat( _In_ USHORT Segment, _In_ ULONG Offset, _In_ VDM_MODE Mode); + +#ifdef _X86_ + +#define VdmFlushCache(sel, off, len, mode) TRUE +#define VdmUnmapFlat(sel, off, buf, mode) TRUE + +#else BOOL WINAPI @@ -227,6 +221,8 @@ _In_ PVOID Buffer, _In_ VDM_MODE Mode); +#endif + BOOL WINAPI VDDInstallMemoryHook( Modified: branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/vddsvc.h URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/vddsvc.h [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/vddsvc.h [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -34,15 +34,71 @@ VOID WINAPI -call_ica_hw_interrupt -( - INT ms, - BYTE line, - INT count -); - -#define VDDSimulateInterrupt(ms, line, count) \ +call_ica_hw_interrupt( + _In_ INT ms, + _In_ BYTE line, + _In_ INT count); + +#define VDDSimulateInterrupt(ms, line, count) \ call_ica_hw_interrupt((ms), (line), (count)) // Windows specifies a count of 1 ... + + +/* + * Memory services + */ + +#ifdef i386 + +PBYTE +WINAPI +MGetVdmPointer( + _In_ ULONG Address, + _In_ ULONG Size, + _In_ BOOLEAN ProtectedMode); + +#define Sim32GetVDMPointer(Address, Size, Mode) \ + MGetVdmPointer((Address), (Size), (Mode)) + +#define Sim32FlushVDMPointer(Address, Size, Buffer, Mode) TRUE + +#else + +PBYTE +WINAPI +Sim32GetVDMPointer( + _In_ ULONG Address, + _In_ ULONG Size, + _In_ BOOLEAN ProtectedMode); + +BOOLEAN +WINAPI +Sim32FlushVDMPointer( + _In_ ULONG Address, + _In_ ULONG Size, + _In_ PBYTE Buffer, + _In_ BOOLEAN ProtectedMode); + +#endif + +PBYTE +WINAPI +Sim32pGetVDMPointer( + _In_ ULONG Address, + _In_ BOOLEAN ProtectedMode); + +/* This API appears to have never been implemented anywhere... */ +#define Sim32FreeVDMPointer(Address, Size, Buffer, Mode) TRUE + +#define GetVDMAddress(usSeg, usOff) (((ULONG)(usSeg) << 4) + (ULONG)(usOff)) + +#define GetVDMPointer(Address, Size, Mode) \ + Sim32GetVDMPointer(Address, Size, Mode) + +#define FlushVDMPointer(Address, Size, Buffer, Mode) \ + Sim32FlushVDMPointer(Address, Size, Buffer, Mode) + +#define FreeVDMPointer(Address, Size, Buffer, Mode) \ + Sim32FreeVDMPointer(Address, Size, Buffer, Mode) /* Modified: branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/wdm.h URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/wdm.h [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/wdm.h [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -13558,7 +13558,7 @@ NTSTATUS NTAPI IoWMIOpenBlock( - _In_ GUID *DataBlockGuid, + _In_ LPCGUID DataBlockGuid, _In_ ULONG DesiredAccess, _Out_ PVOID *DataBlockObject); Copied: branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/wmiguid.h (from r66813, trunk/reactos/include/ddk/wmiguid.h) URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- trunk/reactos/include/ddk/wmiguid.h [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/include/ddk/wmiguid.h [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -25,22 +25,22 @@ #include <guiddef.h> #define DATA_PROVIDER_INFO_GUID \ - {0x5494dfdc, 0xa98a, 0x11d1, 0xbf, 0x43, 0x00, 0xa0, 0xc9, 0x06, 0x29, 0x10} + {0x5494dfdc, 0xa98a, 0x11d1, {0xbf, 0x43, 0x00, 0xa0, 0xc9, 0x06, 0x29, 0x10}} #define SMBIOS_DATA_GUID \ - {0x8f680850, 0xa584, 0x11d1, 0xbf, 0x38, 0x00, 0xa0, 0xc9, 0x06, 0x29, 0x10} + {0x8f680850, 0xa584, 0x11d1, {0xbf, 0x38, 0x00, 0xa0, 0xc9, 0x06, 0x29, 0x10}} #define INSTANCE_INFO_GUID \ - {0xc7bf35d0, 0xaadb, 0x11d1, 0xbf, 0x4a, 0x00, 0xa0, 0xc9, 0x6, 0x29, 0x10} + {0xc7bf35d0, 0xaadb, 0x11d1, {0xbf, 0x4a, 0x00, 0xa0, 0xc9, 0x06, 0x29, 0x10}} #define BINARY_MOF_GUID \ - {0x05901221, 0xD566, 0x11d1, 0xB2, 0xF0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0x10} + {0x05901221, 0xD566, 0x11d1, {0xB2, 0xF0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0x10}} #define ENUMERATE_GUIDS_GUID \ - {0xe3dff7bd, 0x3915, 0x11d2, 0x91, 0x03, 0x00, 0xc0, 0x4f, 0xb9, 0x98, 0xa2} + {0xe3dff7bd, 0x3915, 0x11d2, {0x91, 0x03, 0x00, 0xc0, 0x4f, 0xb9, 0x98, 0xa2}} #define MS_SYSTEM_INFORMATIONGUID \ - {0x98a2b9d7, 0x94dd, 0x496a, {0x84, 0x7e, 0x67, 0xa5, 0x55, 0x7a, 0x59, 0xf2}} + {0x98a2b9d7, 0x94dd, 0x496a, {0x84, 0x7e, 0x67, 0xa5, 0x55, 0x7a, 0x59, 0xf2}} DEFINE_GUID(MS_SYSTEM_INFORMATION_GUID, \ 0x98a2b9d7, 0x94dd, 0x496a, 0x84, 0x7e, 0x67, 0xa5, 0x55, 0x7a, 0x59, 0xf2); Modified: branches/ReactOS-0.3.17-CLT2015/reactos/include/psdk/bcrypt.h URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/include/psdk/bcrypt.h [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/include/psdk/bcrypt.h [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -48,6 +48,7 @@ } BCRYPT_ALGORITHM_IDENTIFIER; typedef PVOID BCRYPT_ALG_HANDLE; +typedef PVOID BCRYPT_HANDLE; #define BCRYPT_RNG_USE_ENTROPY_IN_BUFFER 0x00000001 #define BCRYPT_USE_SYSTEM_PREFERRED_RNG 0x00000002 Modified: branches/ReactOS-0.3.17-CLT2015/reactos/include/psdk/commctrl.h URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/include/psdk/commctrl.h [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/include/psdk/commctrl.h [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -5095,6 +5095,14 @@ #endif /* NOTASKDIALOG */ +#if (NTDDI_VERSION >= NTDDI_VISTA) +enum _LI_METRIC +{ + LIM_SMALL, + LIM_LARGE, +}; +#endif + #ifdef __cplusplus } #endif Modified: branches/ReactOS-0.3.17-CLT2015/reactos/include/psdk/wmistr.h URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/include/psdk/wmistr.h [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/include/psdk/wmistr.h [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -156,4 +156,18 @@ WMI_EXECUTE_METHOD } WMIDPREQUESTCODE; +#define WMIGUID_QUERY 0x0001 +#define WMIGUID_SET 0x0002 +#define WMIGUID_NOTIFICATION 0x0004 +#define WMIGUID_READ_DESCRIPTION 0x0008 +#define WMIGUID_EXECUTE 0x0010 +#define TRACELOG_CREATE_REALTIME 0x0020 +#define TRACELOG_CREATE_ONDISK 0x0040 +#define TRACELOG_GUID_ENABLE 0x0080 +#define TRACELOG_ACCESS_KERNEL_LOGGER 0x0100 +#define TRACELOG_LOG_EVENT 0x0200 +#define TRACELOG_CREATE_INPROC 0x0200 +#define TRACELOG_ACCESS_REALTIME 0x0400 +#define TRACELOG_REGISTER_GUIDS 0x0800 + #endif /* _WMISTR_ */ Modified: branches/ReactOS-0.3.17-CLT2015/reactos/include/xdk/iofuncs.h URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/include/xdk/iofuncs.h [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/include/xdk/iofuncs.h [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -1977,7 +1977,7 @@ NTSTATUS NTAPI IoWMIOpenBlock( - _In_ GUID *DataBlockGuid, + _In_ LPCGUID DataBlockGuid, _In_ ULONG DesiredAccess, _Out_ PVOID *DataBlockObject); Modified: branches/ReactOS-0.3.17-CLT2015/reactos/lib/rtl/error.c URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/lib/rtl/error.c [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/lib/rtl/error.c [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -1550,4 +1550,4 @@ { 0xc0130001, 0xc0130017, table_c0130001 }, { 0xc0150001, 0xc0150028, table_c0150001 }, { 0, 0, NULL } /* last entry */ -}; +}; Modified: branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/include/internal/ps.h URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/include/internal/ps.h [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/include/internal/ps.h [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -313,13 +313,13 @@ // // VDM and LDT Support // -NTSTATUS +VOID NTAPI PspDeleteLdt( IN PEPROCESS Process ); -NTSTATUS +VOID NTAPI PspDeleteVdmObjects( IN PEPROCESS Process Modified: branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/io/iomgr/iomgr.c URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/io/iomgr/iomgr.c [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/io/iomgr/iomgr.c [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -24,6 +24,11 @@ IN PVOID SystemArgument1, IN PVOID SystemArgument2 ); + +BOOLEAN +NTAPI +WmiInitialize( + VOID); /* DATA ********************************************************************/ @@ -526,6 +531,9 @@ /* Initialize PnP manager */ IopInitializePlugPlayServices(); + /* Initialize WMI */ + WmiInitialize(); + /* Initialize HAL Root Bus Driver */ HalInitPnpDriver(); Modified: branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ke/i386/exp.c URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ke/i386/exp.c [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ke/i386/exp.c [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -549,6 +549,7 @@ { /* FIXME: Handle FPU Emulation */ //ASSERT(FALSE); + UNIMPLEMENTED; } } Modified: branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ke/i386/traphdlr.c URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ke/i386/traphdlr.c [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ke/i386/traphdlr.c [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -1673,7 +1673,6 @@ if (!NT_SUCCESS(Result)) { /* Set the last error and fail */ - //SetLastWin32Error(RtlNtStatusToDosError(Result)); goto ExitCall; } Modified: branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ke/i386/v86vdm.c URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ke/i386/v86vdm.c [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ke/i386/v86vdm.c [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -691,7 +691,7 @@ Context->ContextFlags = CONTEXT_FULL; /* Free VDM objects */ - ExFreePool(PsGetCurrentProcess()->VdmObjects); + ExFreePoolWithTag(PsGetCurrentProcess()->VdmObjects, ' eK'); PsGetCurrentProcess()->VdmObjects = NULL; /* Return status */ Modified: branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ntos.cmake URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ntos.cmake [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ntos.cmake [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -269,7 +269,10 @@ ${REACTOS_SOURCE_DIR}/ntoskrnl/se/sid.c ${REACTOS_SOURCE_DIR}/ntoskrnl/se/token.c ${REACTOS_SOURCE_DIR}/ntoskrnl/vf/driver.c - ${REACTOS_SOURCE_DIR}/ntoskrnl/wmi/wmi.c) + ${REACTOS_SOURCE_DIR}/ntoskrnl/wmi/guidobj.c + ${REACTOS_SOURCE_DIR}/ntoskrnl/wmi/smbios.c + ${REACTOS_SOURCE_DIR}/ntoskrnl/wmi/wmi.c + ${REACTOS_SOURCE_DIR}/ntoskrnl/wmi/wmidrv.c) list(APPEND ASM_SOURCE ${REACTOS_SOURCE_DIR}/ntoskrnl/ex/zw.S) Modified: branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ps/i386/psldt.c URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ps/i386/psldt.c [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/ps/i386/psldt.c [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -14,20 +14,28 @@ /* FUNCTIONS *****************************************************************/ -NTSTATUS +VOID NTAPI PspDeleteLdt(PEPROCESS Process) { - /* FIXME */ - return STATUS_SUCCESS; + /* FIXME - LdtInformation must be null as long as we don't implement VDMs */ + ASSERT(Process->LdtInformation == NULL); } -NTSTATUS +VOID NTAPI PspDeleteVdmObjects(PEPROCESS Process) { - /* FIXME */ - return STATUS_SUCCESS; + /* If there are no VDM objects, just exit */ + if (Process->VdmObjects == NULL) + return; + + /* FIXME: Need to do more than just freeing the main VdmObjects member! */ + UNIMPLEMENTED; + + /* Free VDM objects */ + ExFreePoolWithTag(Process->VdmObjects, ' eK'); + Process->VdmObjects = NULL; } NTSTATUS Copied: branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/wmi/guidobj.c (from r66800, trunk/reactos/ntoskrnl/wmi/guidobj.c) URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- trunk/reactos/ntoskrnl/wmi/guidobj.c [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/wmi/guidobj.c [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -167,21 +167,12 @@ static NTSTATUS WmipCreateGuidObject( - _In_ PUNICODE_STRING GuidString, + _In_ const GUID *Guid, _Out_ PWMIP_GUID_OBJECT *OutGuidObject) { OBJECT_ATTRIBUTES ObjectAttributes; - GUID Guid; PWMIP_GUID_OBJECT GuidObject; NTSTATUS Status; - - /* Convert the string into a GUID structure */ - Status = WmipGUIDFromString(GuidString, &Guid); - if (!NT_SUCCESS(Status)) - { - DPRINT1("WMI: Invalid uuid format for guid '%wZ'\n", GuidString); - return Status; - } /* Initialize object attributes for an unnamed object */ InitializeObjectAttributes(&ObjectAttributes, @@ -207,7 +198,7 @@ } RtlZeroMemory(GuidObject, sizeof(*GuidObject)); - GuidObject->Guid = Guid; + GuidObject->Guid = *Guid; *OutGuidObject = GuidObject; @@ -217,37 +208,22 @@ NTSTATUS NTAPI WmipOpenGuidObject( - POBJECT_ATTRIBUTES ObjectAttributes, - ACCESS_MASK DesiredAccess, - KPROCESSOR_MODE AccessMode, - PHANDLE OutGuidObjectHandle, - PVOID *OutGuidObject) -{ - static UNICODE_STRING Prefix = RTL_CONSTANT_STRING(L"\\WmiGuid\\"); - UNICODE_STRING GuidString; + _In_ LPCGUID Guid, + _In_ ACCESS_MASK DesiredAccess, + _In_ KPROCESSOR_MODE AccessMode, + _Out_ PHANDLE OutGuidObjectHandle, + _Outptr_ PVOID *OutGuidObject) +{ + PWMIP_GUID_OBJECT GuidObject; ULONG HandleAttributes; - PWMIP_GUID_OBJECT GuidObject; - NTSTATUS Status; - PAGED_CODE(); - - /* Check if we have the expected prefix */ - if (!RtlPrefixUnicodeString(&Prefix, ObjectAttributes->ObjectName, FALSE)) - { - DPRINT1("WMI: Invalid prefix for guid object '%wZ'\n", - ObjectAttributes->ObjectName); - return STATUS_INVALID_PARAMETER; - } - - /* Extract the GUID string */ - GuidString = *ObjectAttributes->ObjectName; - GuidString.Buffer += Prefix.Length / sizeof(WCHAR); - GuidString.Length -= Prefix.Length; + NTSTATUS Status; /* Create the GUID object */ - Status = WmipCreateGuidObject(&GuidString, &GuidObject); + Status = WmipCreateGuidObject(Guid, &GuidObject); if (!NT_SUCCESS(Status)) { DPRINT1("Failed to create GUID object: 0x%lx\n", Status); + *OutGuidObject = NULL; return Status; } @@ -266,6 +242,7 @@ { DPRINT1("ObOpenObjectByPointer failed: 0x%lx\n", Status); ObfDereferenceObject(GuidObject); + GuidObject = NULL; } *OutGuidObject = GuidObject; @@ -273,3 +250,46 @@ return Status; } +NTSTATUS +NTAPI +WmipOpenGuidObjectByName( + _In_ POBJECT_ATTRIBUTES ObjectAttributes, + _In_ ACCESS_MASK DesiredAccess, + _In_ KPROCESSOR_MODE AccessMode, + _Out_ PHANDLE OutGuidObjectHandle, + _Outptr_ PVOID *OutGuidObject) +{ + static UNICODE_STRING Prefix = RTL_CONSTANT_STRING(L"\\WmiGuid\\"); + UNICODE_STRING GuidString; + NTSTATUS Status; + GUID Guid; + PAGED_CODE(); + + /* Check if we have the expected prefix */ + if (!RtlPrefixUnicodeString(&Prefix, ObjectAttributes->ObjectName, FALSE)) + { + DPRINT1("WMI: Invalid prefix for guid object '%wZ'\n", + ObjectAttributes->ObjectName); + return STATUS_INVALID_PARAMETER; + } + + /* Extract the GUID string */ + GuidString = *ObjectAttributes->ObjectName; + GuidString.Buffer += Prefix.Length / sizeof(WCHAR); + GuidString.Length -= Prefix.Length; + + /* Convert the string into a GUID structure */ + Status = WmipGUIDFromString(&GuidString, &Guid); + if (!NT_SUCCESS(Status)) + { + DPRINT1("WMI: Invalid uuid format for guid '%wZ'\n", GuidString); + return Status; + } + + return WmipOpenGuidObject(&Guid, + DesiredAccess, + AccessMode, + OutGuidObjectHandle, + OutGuidObject); +} + Modified: branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/wmi/wmi.c URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/wmi/wmi.c [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/wmi/wmi.c [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -9,10 +9,44 @@ /* INCLUDES *****************************************************************/ #include <ntoskrnl.h> +#define INITGUID +#include <wmiguid.h> +#include <wmidata.h> +#include <wmistr.h> + +#include "wmip.h" + #define NDEBUG #include <debug.h> /* FUNCTIONS *****************************************************************/ + +BOOLEAN +NTAPI +WmiInitialize( + VOID) +{ + UNICODE_STRING DriverName = RTL_CONSTANT_STRING(L"\\Driver\\WMIxWDM"); + NTSTATUS Status; + + /* Initialize the GUID object type */ + Status = WmipInitializeGuidObjectType(); + if (!NT_SUCCESS(Status)) + { + DPRINT1("WmipInitializeGuidObjectType() failed: 0x%lx\n", Status); + return FALSE; + } + + /* Create the WMI driver */ + Status = IoCreateDriver(&DriverName, WmipDriverEntry); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Failed to create WMI driver: 0x%lx\n", Status); + return FALSE; + } + + return TRUE; +} /* * @unimplemented @@ -77,25 +111,68 @@ */ NTSTATUS NTAPI -IoWMIOpenBlock(IN GUID *DataBlockGuid, - IN ULONG DesiredAccess, - OUT PVOID *DataBlockObject) -{ - UNIMPLEMENTED; - return STATUS_NOT_IMPLEMENTED; -} - -/* - * @unimplemented - */ -NTSTATUS -NTAPI -IoWMIQueryAllData(IN PVOID DataBlockObject, - IN OUT ULONG *InOutBufferSize, - OUT PVOID OutBuffer) -{ - UNIMPLEMENTED; - return STATUS_NOT_IMPLEMENTED; +IoWMIOpenBlock( + _In_ LPCGUID DataBlockGuid, + _In_ ULONG DesiredAccess, + _Out_ PVOID *DataBlockObject) +{ + HANDLE GuidObjectHandle; + NTSTATUS Status; + + /* Open the GIOD object */ + Status = WmipOpenGuidObject(DataBlockGuid, + DesiredAccess, + KernelMode, + &GuidObjectHandle, + DataBlockObject); + if (!NT_SUCCESS(Status)) + { + DPRINT1("WmipOpenGuidObject failed: 0x%lx\n", Status); + return Status; + } + + + return STATUS_SUCCESS; +} + +/* + * @unimplemented + */ +NTSTATUS +NTAPI +IoWMIQueryAllData( + IN PVOID DataBlockObject, + IN OUT ULONG *InOutBufferSize, + OUT PVOID OutBuffer) +{ + PWMIP_GUID_OBJECT GuidObject; + NTSTATUS Status; + + + Status = ObReferenceObjectByPointer(DataBlockObject, + WMIGUID_QUERY, + WmipGuidObjectType, + KernelMode); + if (!NT_SUCCESS(Status)) + { + return Status; + } + + GuidObject = DataBlockObject; + + /* Huge HACK! */ + if (IsEqualGUID(&GuidObject->Guid, &MSSmBios_RawSMBiosTables_GUID)) + { + Status = WmipQueryRawSMBiosTables(InOutBufferSize, OutBuffer); + } + else + { + Status = STATUS_NOT_SUPPORTED; + } + + ObDereferenceObject(DataBlockObject); + + return Status; } /* Copied: branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/wmi/wmidrv.c (from r66800, trunk/reactos/ntoskrnl/wmi/wmidrv.c) URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- trunk/reactos/ntoskrnl/wmi/wmidrv.c [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/wmi/wmidrv.c [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -210,14 +210,14 @@ } /* Open a new GUID object */ - Status = WmipOpenGuidObject(&LocalObjectAttributes, - SPECIFIC_RIGHTS_ALL, - PreviousMode, - &GuidObjectHandle, - &GuidObject); - if (!NT_SUCCESS(Status)) - { - DPRINT1("WmipOpenGuidObject failed: 0x%lx\n", Status); + Status = WmipOpenGuidObjectByName(&LocalObjectAttributes, + SPECIFIC_RIGHTS_ALL, + PreviousMode, + &GuidObjectHandle, + &GuidObject); + if (!NT_SUCCESS(Status)) + { + DPRINT1("WmipOpenGuidObjectByName failed: 0x%lx\n", Status); return Status; } @@ -409,14 +409,14 @@ } /* Open a new GUID object */ - Status = WmipOpenGuidObject(&LocalObjectAttributes, - OpenGuidForEvents->DesiredAccess, - PreviousMode, - &GuidObjectHandle, - &GuidObject); - if (!NT_SUCCESS(Status)) - { - DPRINT1("WmipOpenGuidObject failed: 0x%lx\n", Status); + Status = WmipOpenGuidObjectByName(&LocalObjectAttributes, + OpenGuidForEvents->DesiredAccess, + PreviousMode, + &GuidObjectHandle, + &GuidObject); + if (!NT_SUCCESS(Status)) + { + DPRINT1("WmipOpenGuidObjectByName failed: 0x%lx\n", Status); return Status; } Copied: branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/wmi/wmip.h (from r66800, trunk/reactos/ntoskrnl/wmi/wmip.h) URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- trunk/reactos/ntoskrnl/wmi/wmip.h [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/ntoskrnl/wmi/wmip.h [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -1,5 +1,7 @@ #pragma once + +extern POBJECT_TYPE WmipGuidObjectType; #define GUID_STRING_LENGTH 36 @@ -32,8 +34,24 @@ NTSTATUS NTAPI WmipOpenGuidObject( - POBJECT_ATTRIBUTES ObjectAttributes, - ACCESS_MASK DesiredAccess, - KPROCESSOR_MODE AccessMode, - PHANDLE OutGuidObjectHandle, - PVOID *OutGuidObject); + _In_ LPCGUID Guid, + _In_ ACCESS_MASK DesiredAccess, + _In_ KPROCESSOR_MODE AccessMode, + _Out_ PHANDLE OutGuidObjectHandle, + _Outptr_ PVOID *OutGuidObject); + +NTSTATUS +NTAPI +WmipOpenGuidObjectByName( + _In_ POBJECT_ATTRIBUTES ObjectAttributes, + _In_ ACCESS_MASK DesiredAccess, + _In_ KPROCESSOR_MODE AccessMode, + _Out_ PHANDLE OutGuidObjectHandle, + _Outptr_ PVOID *OutGuidObject); + +NTSTATUS +NTAPI +WmipQueryRawSMBiosTables( + _Inout_ ULONG *InOutBufferSize, + _Out_opt_ PVOID OutBuffer); + Modified: branches/ReactOS-0.3.17-CLT2015/reactos/subsystems/mvdm/ntvdm/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/subsystems/mvdm/ntvdm/CMakeLists.txt [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/subsystems/mvdm/ntvdm/CMakeLists.txt [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -3,7 +3,7 @@ include_directories(${REACTOS_SOURCE_DIR}/include/reactos/libs/fast486) -spec2def(ntvdm.exe ntvdm.spec) +spec2def(ntvdm.exe ntvdm.spec ADD_IMPORTLIB) list(APPEND SOURCE bios/bios32/bios32.c Modified: branches/ReactOS-0.3.17-CLT2015/reactos/subsystems/mvdm/ntvdm/memory.c URL:
http://svn.reactos.org/svn/reactos/branches/ReactOS-0.3.17-CLT2015/reactos/…
============================================================================== --- branches/ReactOS-0.3.17-CLT2015/reactos/subsystems/mvdm/ntvdm/memory.c [iso-8859-1] (original) +++ branches/ReactOS-0.3.17-CLT2015/reactos/subsystems/mvdm/ntvdm/memory.c [iso-8859-1] Thu Mar 19 23:51:20 2015 @@ -321,6 +321,8 @@ return SEG_OFF_TO_PTR(Segment, Offset); } +#ifndef VdmFlushCache + BOOL WINAPI VdmFlushCache(IN USHORT Segment, @@ -333,6 +335,10 @@ return TRUE; } +#endif + +#ifndef VdmUnmapFlat + BOOL WINAPI VdmUnmapFlat(IN USHORT Segment, @@ -344,6 +350,8 @@ UNIMPLEMENTED; return TRUE; } + +#endif BOOL WINAPI
10 years, 1 month
1
0
0
0
[tkreuzer] 66826: [I8042PRT] Try to fix Dell Latitude notebooks.
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Thu Mar 19 23:02:46 2015 New Revision: 66826 URL:
http://svn.reactos.org/svn/reactos?rev=66826&view=rev
Log: [I8042PRT] Try to fix Dell Latitude notebooks. Modified: trunk/reactos/drivers/input/i8042prt/hwhacks.c Modified: trunk/reactos/drivers/input/i8042prt/hwhacks.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/i8042prt/hwh…
============================================================================== --- trunk/reactos/drivers/input/i8042prt/hwhacks.c [iso-8859-1] (original) +++ trunk/reactos/drivers/input/i8042prt/hwhacks.c [iso-8859-1] Thu Mar 19 23:02:46 2015 @@ -60,8 +60,9 @@ // { {{BOARD_VENDOR, "ASUSTeK Computer Inc."}, {BOARD_NAME, "G1S"}, {BOARD_VERSION, "1.0"}}, FL_NOLOOP }, { {{SYS_VENDOR, "Microsoft Corporation"}, {SYS_PRODUCT, "Virtual Machine"}, {SYS_VERSION, "VS2005R2"} }, FL_INITHACK }, - { {{SYS_VENDOR, "Dell Inc."}, {SYS_PRODUCT, "Latitude D530"}}, FL_INITHACK }, - { {{SYS_VENDOR, "Dell Inc."}, {SYS_PRODUCT, "Latitude D600"}}, FL_INITHACK }, + { {{SYS_VENDOR, "Dell Inc."}, {SYS_PRODUCT, "Latitude D530 "}}, FL_INITHACK }, + { {{SYS_VENDOR, "Dell Inc."}, {SYS_PRODUCT, "Latitude D531 "}}, FL_INITHACK }, + { {{SYS_VENDOR, "Dell Inc."}, {SYS_PRODUCT, "Latitude D600 "}}, FL_INITHACK }, };
10 years, 1 month
1
0
0
0
[tkreuzer] 66825: [I8042PRT] Fix an off-by-one error in the SMTABLE string parsing code. Enable SYS_VERSION string for VirtualPc detection. Should hopefully fix VirtualPc mouse.
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Thu Mar 19 22:37:43 2015 New Revision: 66825 URL:
http://svn.reactos.org/svn/reactos?rev=66825&view=rev
Log: [I8042PRT] Fix an off-by-one error in the SMTABLE string parsing code. Enable SYS_VERSION string for VirtualPc detection. Should hopefully fix VirtualPc mouse. Modified: trunk/reactos/drivers/input/i8042prt/hwhacks.c Modified: trunk/reactos/drivers/input/i8042prt/hwhacks.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/i8042prt/hwh…
============================================================================== --- trunk/reactos/drivers/input/i8042prt/hwhacks.c [iso-8859-1] (original) +++ trunk/reactos/drivers/input/i8042prt/hwhacks.c [iso-8859-1] Thu Mar 19 22:37:43 2015 @@ -59,7 +59,7 @@ // { {{BOARD_VENDOR, "RIOWORKS"}, {BOARD_NAME, "HDAMB"}, {BOARD_VERSION, "Rev E"}}, FL_NOLOOP }, // { {{BOARD_VENDOR, "ASUSTeK Computer Inc."}, {BOARD_NAME, "G1S"}, {BOARD_VERSION, "1.0"}}, FL_NOLOOP }, - { {{SYS_VENDOR, "Microsoft Corporation"}, {SYS_PRODUCT, "Virtual Machine"}, /*{SYS_VERSION, "VS2005R2"} */}, FL_INITHACK }, + { {{SYS_VENDOR, "Microsoft Corporation"}, {SYS_PRODUCT, "Virtual Machine"}, {SYS_VERSION, "VS2005R2"} }, FL_INITHACK }, { {{SYS_VENDOR, "Dell Inc."}, {SYS_PRODUCT, "Latitude D530"}}, FL_INITHACK }, { {{SYS_VENDOR, "Dell Inc."}, {SYS_PRODUCT, "Latitude D600"}}, FL_INITHACK }, @@ -77,15 +77,19 @@ PCHAR String; StringIndex = ((PUCHAR)Header)[FieldOffset]; + if (StringIndex == 0) + { + return NULL; + } + String = (PCHAR)Header + Header->Length; - while (StringIndex != 0) + while (--StringIndex != 0) { while (*String != 0) String++; String++; - StringIndex--; } return String;
10 years, 1 month
1
0
0
0
[tkreuzer] 66824: [I8042PRT] Commit missing file
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Thu Mar 19 21:52:55 2015 New Revision: 66824 URL:
http://svn.reactos.org/svn/reactos?rev=66824&view=rev
Log: [I8042PRT] Commit missing file Added: trunk/reactos/drivers/input/i8042prt/dmi.h (with props) Added: trunk/reactos/drivers/input/i8042prt/dmi.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/i8042prt/dmi…
============================================================================== --- trunk/reactos/drivers/input/i8042prt/dmi.h (added) +++ trunk/reactos/drivers/input/i8042prt/dmi.h [iso-8859-1] Thu Mar 19 21:52:55 2015 @@ -0,0 +1,102 @@ + +#pragma once + +enum DMI_DEVICE_TYPE +{ + DMI_DEV_TYPE_ANY = 0, + DMI_DEV_TYPE_OTHER, + DMI_DEV_TYPE_UNKNOWN, + DMI_DEV_TYPE_VIDEO, + DMI_DEV_TYPE_SCSI, + DMI_DEV_TYPE_ETHERNET, + DMI_DEV_TYPE_TOKENRING, + DMI_DEV_TYPE_SOUND, + DMI_DEV_TYPE_PATA, + DMI_DEV_TYPE_SATA, + DMI_DEV_TYPE_SAS, + DMI_DEV_TYPE_IPMI = -1, + DMI_DEV_TYPE_OEM_STRING = -2, + DMI_DEV_TYPE_DEV_ONBOARD = -3, +}; + +enum DMI_ENTRY_TYPE +{ + DMI_ENTRY_BIOS = 0, + DMI_ENTRY_SYSTEM = 1, + DMI_ENTRY_BASEBOARD = 2, + DMI_ENTRY_CHASSIS = 3, + DMI_ENTRY_PROCESSOR = 4, + DMI_ENTRY_MEM_CONTROLLER = 5, + DMI_ENTRY_MEM_MODULE = 6, + DMI_ENTRY_CACHE = 7, + DMI_ENTRY_PORT_CONNECTOR = 8, + DMI_ENTRY_SYSTEM_SLOT = 9, + DMI_ENTRY_ONBOARD_DEVICE = 10, + DMI_ENTRY_OEMSTRINGS = 11, + DMI_ENTRY_SYSCONF = 12, + DMI_ENTRY_BIOS_LANG = 13, + DMI_ENTRY_GROUP_ASSOC = 14, + DMI_ENTRY_SYSTEM_EVENT_LOG = 15, + DMI_ENTRY_PHYS_MEM_ARRAY = 16, + DMI_ENTRY_MEM_DEVICE = 17, + DMI_ENTRY_32_MEM_ERROR = 18, + DMI_ENTRY_MEM_ARRAY_MAPPED_ADDR = 19, + DMI_ENTRY_MEM_DEV_MAPPED_ADDR = 20, + DMI_ENTRY_BUILTIN_POINTING_DEV, + DMI_ENTRY_PORTABLE_BATTERY, + DMI_ENTRY_SYSTEM_RESET, + DMI_ENTRY_HW_SECURITY, + DMI_ENTRY_SYSTEM_POWER_CONTROLS = 25, + DMI_ENTRY_VOLTAGE_PROBE, + DMI_ENTRY_COOLING_DEV, + DMI_ENTRY_TEMP_PROBE, + DMI_ENTRY_ELECTRICAL_CURRENT_PROBE, + DMI_ENTRY_OOB_REMOTE_ACCESS = 30, + DMI_ENTRY_BIS_ENTRY, + DMI_ENTRY_SYSTEM_BOOT = 32, + DMI_ENTRY_MGMT_DEV, + DMI_ENTRY_MGMT_DEV_COMPONENT, + DMI_ENTRY_MGMT_DEV_THRES = 35, + DMI_ENTRY_MEM_CHANNEL = 36, + DMI_ENTRY_IPMI_DEV = 37, + DMI_ENTRY_SYS_POWER_SUPPLY = 38, + DMI_ENTRY_ADDITIONAL = 39, + DMI_ENTRY_ONBOARD_DEV_EXT = 40, + DMI_ENTRY_MGMT_CONTROLLER_HOST = 41, + DMI_ENTRY_INACTIVE = 126, + DMI_ENTRY_END_OF_TABLE = 127, +}; + +enum _DMI_FIELD_OFFSETS +{ + /* Type = 0: DMI_ENTRY_BIOS */ + DMI_BIOS_VENDOR = 0x04, + DMI_BIOS_VERSION = 0x05, + DMI_BIOS_DATE = 0x08, + DMI_BIOS_SIZE = 0x14, + + /* Type = 1: DMI_ENTRY_SYSTEM */ + DMI_SYS_VENDOR = 0x04, + DMI_SYS_PRODUCT = 0x05, + DMI_SYS_VERSION = 0x06, + DMI_SYS_SERIAL = 0x07, + DMI_SYS_SIZE = 0x1b, + + /* Type = 2: DMI_ENTRY_BASEBOARD */ + DMI_BOARD_VENDOR = 0x04, + DMI_BOARD_NAME = 0x05, + DMI_BOARD_VERSION = 0x06, + DMI_BOARD_SERIAL = 0x07, + DMI_BOARD_ASSET_TAG = 0x08, + DMI_BOARD_SIZE = 0x10, + + +}; + +typedef struct _DMI_HEADER +{ + UCHAR Type; + UCHAR Length; + USHORT Handle; +} DMI_HEADER, *PDMI_HEADER; + Propchange: trunk/reactos/drivers/input/i8042prt/dmi.h ------------------------------------------------------------------------------ svn:eol-style = native
10 years, 1 month
1
0
0
0
← Newer
1
...
15
16
17
18
19
20
21
...
50
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Results per page:
10
25
50
100
200