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
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
August 2013
----- 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
10 participants
327 discussions
Start a n
N
ew thread
[akhaldi] 59722: [PSDK] * Annotate shlwapi.h.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Tue Aug 13 15:12:04 2013 New Revision: 59722 URL:
http://svn.reactos.org/svn/reactos?rev=59722&view=rev
Log: [PSDK] * Annotate shlwapi.h. Modified: trunk/reactos/include/psdk/shlwapi.h Modified: trunk/reactos/include/psdk/shlwapi.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/shlwapi.h?rev…
============================================================================== --- trunk/reactos/include/psdk/shlwapi.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/shlwapi.h [iso-8859-1] Tue Aug 13 15:12:04 2013 @@ -35,55 +35,205 @@ /* Registry functions */ -DWORD WINAPI SHDeleteEmptyKeyA(HKEY,LPCSTR); -DWORD WINAPI SHDeleteEmptyKeyW(HKEY,LPCWSTR); +DWORD WINAPI SHDeleteEmptyKeyA(_In_ HKEY, _In_opt_ LPCSTR); +DWORD WINAPI SHDeleteEmptyKeyW(_In_ HKEY, _In_opt_ LPCWSTR); #define SHDeleteEmptyKey WINELIB_NAME_AW(SHDeleteEmptyKey) -DWORD WINAPI SHDeleteKeyA(HKEY,LPCSTR); -DWORD WINAPI SHDeleteKeyW(HKEY,LPCWSTR); +DWORD WINAPI SHDeleteKeyA(_In_ HKEY, _In_opt_ LPCSTR); +DWORD WINAPI SHDeleteKeyW(_In_ HKEY, _In_opt_ LPCWSTR); #define SHDeleteKey WINELIB_NAME_AW(SHDeleteKey) -DWORD WINAPI SHDeleteValueA(HKEY,LPCSTR,LPCSTR); -DWORD WINAPI SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR); +DWORD WINAPI SHDeleteValueA(_In_ HKEY, _In_opt_ LPCSTR, _In_ LPCSTR); +DWORD WINAPI SHDeleteValueW(_In_ HKEY, _In_opt_ LPCWSTR, _In_ LPCWSTR); #define SHDeleteValue WINELIB_NAME_AW(SHDeleteValue) -DWORD WINAPI SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD); -DWORD WINAPI SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD); +DWORD +WINAPI +SHGetValueA( + _In_ HKEY, + _In_opt_ LPCSTR, + _In_opt_ LPCSTR, + _Out_opt_ LPDWORD, + _Out_writes_bytes_opt_(*pcbData) LPVOID, + _Inout_opt_ LPDWORD pcbData); + +DWORD +WINAPI +SHGetValueW( + _In_ HKEY, + _In_opt_ LPCWSTR, + _In_opt_ LPCWSTR, + _Out_opt_ LPDWORD, + _Out_writes_bytes_opt_(*pcbData) LPVOID, + _Inout_opt_ LPDWORD pcbData); + #define SHGetValue WINELIB_NAME_AW(SHGetValue) -DWORD WINAPI SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD); -DWORD WINAPI SHSetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPCVOID,DWORD); +DWORD +WINAPI +SHSetValueA( + _In_ HKEY, + _In_opt_ LPCSTR, + _In_opt_ LPCSTR, + _In_ DWORD, + _In_reads_bytes_opt_(cbData) LPCVOID, + _In_ DWORD cbData); + +DWORD +WINAPI +SHSetValueW( + _In_ HKEY, + _In_opt_ LPCWSTR, + _In_opt_ LPCWSTR, + _In_ DWORD, + _In_reads_bytes_opt_(cbData) LPCVOID, + _In_ DWORD cbData); + #define SHSetValue WINELIB_NAME_AW(SHSetValue) -DWORD WINAPI SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); -DWORD WINAPI SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); +DWORD +WINAPI +SHQueryValueExA( + _In_ HKEY, + _In_opt_ LPCSTR, + _Reserved_ LPDWORD, + _Out_opt_ LPDWORD, + _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID, + _Inout_opt_ LPDWORD pcbData); + +DWORD +WINAPI +SHQueryValueExW( + _In_ HKEY, + _In_opt_ LPCWSTR, + _Reserved_ LPDWORD, + _Out_opt_ LPDWORD, + _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID, + _Inout_opt_ LPDWORD pcbData); + #define SHQueryValueEx WINELIB_NAME_AW(SHQueryValueEx) -LONG WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD); -LONG WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD); +LONG +WINAPI +SHEnumKeyExA( + _In_ HKEY, + _In_ DWORD, + _Out_writes_(*pcchName) LPSTR, + _Inout_ LPDWORD pcchName); + +LONG +WINAPI +SHEnumKeyExW( + _In_ HKEY, + _In_ DWORD, + _Out_writes_(*pcchName) LPWSTR, + _Inout_ LPDWORD pcchName); + #define SHEnumKeyEx WINELIB_NAME_AW(SHEnumKeyEx) -LONG WINAPI SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); -LONG WINAPI SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); +LONG +WINAPI +SHEnumValueA( + _In_ HKEY, + _In_ DWORD, + _Out_writes_opt_(*pcchValueName) LPSTR, + _Inout_opt_ LPDWORD pcchValueName, + _Out_opt_ LPDWORD, + _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID, + _Inout_opt_ LPDWORD pcbData); + +LONG +WINAPI +SHEnumValueW( + _In_ HKEY, + _In_ DWORD, + _Out_writes_opt_(*pcchValueName) LPWSTR, + _Inout_opt_ LPDWORD pcchValueName, + _Out_opt_ LPDWORD, + _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID, + _Inout_opt_ LPDWORD pcbData); + #define SHEnumValue WINELIB_NAME_AW(SHEnumValue) -LONG WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD); -LONG WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD); +LONG +WINAPI +SHQueryInfoKeyA( + _In_ HKEY, + _Out_opt_ LPDWORD, + _Out_opt_ LPDWORD, + _Out_opt_ LPDWORD, + _Out_opt_ LPDWORD); + +LONG +WINAPI +SHQueryInfoKeyW( + _In_ HKEY, + _Out_opt_ LPDWORD, + _Out_opt_ LPDWORD, + _Out_opt_ LPDWORD, + _Out_opt_ LPDWORD); + #define SHQueryInfoKey WINELIB_NAME_AW(SHQueryInfoKey) -DWORD WINAPI SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD); -DWORD WINAPI SHRegGetPathW(HKEY,LPCWSTR,LPCWSTR,LPWSTR,DWORD); +DWORD +WINAPI +SHRegGetPathA( + _In_ HKEY, + _In_opt_ LPCSTR, + _In_opt_ LPCSTR, + _Out_writes_(MAX_PATH) LPSTR, + _In_ DWORD); + +DWORD +WINAPI +SHRegGetPathW( + _In_ HKEY, + _In_opt_ LPCWSTR, + _In_opt_ LPCWSTR, + _Out_writes_(MAX_PATH) LPWSTR, + _In_ DWORD); + #define SHRegGetPath WINELIB_NAME_AW(SHRegGetPath) -DWORD WINAPI SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD); -DWORD WINAPI SHRegSetPathW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR,DWORD); +DWORD +WINAPI +SHRegSetPathA( + _In_ HKEY, + _In_opt_ LPCSTR, + _In_opt_ LPCSTR, + _In_ LPCSTR, + _In_ DWORD); + +DWORD +WINAPI +SHRegSetPathW( + _In_ HKEY, + _In_opt_ LPCWSTR, + _In_opt_ LPCWSTR, + _In_ LPCWSTR, + _In_ DWORD); + #define SHRegSetPath WINELIB_NAME_AW(SHRegSetPath) -DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD); -DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD); +DWORD +WINAPI +SHCopyKeyA( + _In_ HKEY, + _In_opt_ LPCSTR, + _In_ HKEY, + _Reserved_ DWORD); + +DWORD +WINAPI +SHCopyKeyW( + _In_ HKEY, + _In_opt_ LPCWSTR, + _In_ HKEY, + _Reserved_ DWORD); + #define SHCopyKey WINELIB_NAME_AW(SHCopyKey) -HKEY WINAPI SHRegDuplicateHKey(HKEY); +HKEY WINAPI SHRegDuplicateHKey(_In_ HKEY); /* SHRegGetValue flags */ typedef INT SRRF; @@ -109,8 +259,28 @@ #define SRRF_ZEROONFAILURE 0x20000000 #define SRRF_NOVIRT 0x40000000 -LSTATUS WINAPI SHRegGetValueA(HKEY,LPCSTR,LPCSTR,SRRF,LPDWORD,LPVOID,LPDWORD); -LSTATUS WINAPI SHRegGetValueW(HKEY,LPCWSTR,LPCWSTR,SRRF,LPDWORD,LPVOID,LPDWORD); +LSTATUS +WINAPI +SHRegGetValueA( + _In_ HKEY, + _In_opt_ LPCSTR, + _In_opt_ LPCSTR, + _In_ SRRF, + _Out_opt_ LPDWORD, + _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID, + _Inout_opt_ LPDWORD pcbData); + +LSTATUS +WINAPI +SHRegGetValueW( + _In_ HKEY, + _In_opt_ LPCWSTR, + _In_opt_ LPCWSTR, + _In_ SRRF, + _Out_opt_ LPDWORD, + _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID, + _Inout_opt_ LPDWORD pcbData); + #define SHRegGetValue WINELIB_NAME_AW(SHRegGetValue) /* Undocumented registry functions */ @@ -147,65 +317,263 @@ typedef HANDLE HUSKEY; typedef HUSKEY *PHUSKEY; -LONG WINAPI SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD); -LONG WINAPI SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD); +LONG +WINAPI +SHRegCreateUSKeyA( + _In_ LPCSTR, + _In_ REGSAM, + _In_opt_ HUSKEY, + _Out_ PHUSKEY, + _In_ DWORD); + +LONG +WINAPI +SHRegCreateUSKeyW( + _In_ LPCWSTR, + _In_ REGSAM, + _In_opt_ HUSKEY, + _Out_ PHUSKEY, + _In_ DWORD); + #define SHRegCreateUSKey WINELIB_NAME_AW(SHRegCreateUSKey) -LONG WINAPI SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL); -LONG WINAPI SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL); +LONG +WINAPI +SHRegOpenUSKeyA( + _In_ LPCSTR, + _In_ REGSAM, + _In_opt_ HUSKEY, + _Out_ PHUSKEY, + _In_ BOOL); + +LONG +WINAPI +SHRegOpenUSKeyW( + _In_ LPCWSTR, + _In_ REGSAM, + _In_opt_ HUSKEY, + _Out_ PHUSKEY, + _In_ BOOL); + #define SHRegOpenUSKey WINELIB_NAME_AW(SHRegOpenUSKey) -LONG WINAPI SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD, - BOOL,LPVOID,DWORD); -LONG WINAPI SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD, - BOOL,LPVOID,DWORD); +LONG +WINAPI +SHRegQueryUSValueA( + _In_ HUSKEY, + _In_opt_ LPCSTR, + _Inout_opt_ LPDWORD, + _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID, + _Inout_opt_ LPDWORD pcbData, + _In_ BOOL, + _In_reads_bytes_opt_(dwDefaultDataSize) LPVOID, + _In_opt_ DWORD dwDefaultDataSize); + +LONG +WINAPI +SHRegQueryUSValueW( + _In_ HUSKEY, + _In_opt_ LPCWSTR, + _Inout_opt_ LPDWORD, + _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID, + _Inout_opt_ LPDWORD pcbData, + _In_ BOOL, + _In_reads_bytes_opt_(dwDefaultDataSize) LPVOID, + _In_opt_ DWORD dwDefaultDataSize); + #define SHRegQueryUSValue WINELIB_NAME_AW(SHRegQueryUSValue) -LONG WINAPI SHRegWriteUSValueA(HUSKEY,LPCSTR,DWORD,LPVOID,DWORD,DWORD); -LONG WINAPI SHRegWriteUSValueW(HUSKEY,LPCWSTR,DWORD,LPVOID,DWORD,DWORD); +LONG +WINAPI +SHRegWriteUSValueA( + _In_ HUSKEY, + _In_ LPCSTR, + _In_ DWORD, + _In_reads_bytes_(cbData) LPVOID, + _In_ DWORD cbData, + _In_ DWORD); + +LONG +WINAPI +SHRegWriteUSValueW( + _In_ HUSKEY, + _In_ LPCWSTR, + _In_ DWORD, + _In_reads_bytes_(cbData) LPVOID, + _In_ DWORD cbData, + _In_ DWORD); + #define SHRegWriteUSValue WINELIB_NAME_AW(SHRegWriteUSValue) -LONG WINAPI SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS); -LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS); +LONG +WINAPI +SHRegDeleteUSValueA( + _In_ HUSKEY, + _In_ LPCSTR, + _In_ SHREGDEL_FLAGS); + +LONG +WINAPI +SHRegDeleteUSValueW( + _In_ HUSKEY, + _In_ LPCWSTR, + _In_ SHREGDEL_FLAGS); + #define SHRegDeleteUSValue WINELIB_NAME_AW(SHRegDeleteUSValue) -LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS); -LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS); +LONG +WINAPI +SHRegDeleteEmptyUSKeyA( + _In_ HUSKEY, + _In_ LPCSTR, + _In_ SHREGDEL_FLAGS); + +LONG +WINAPI +SHRegDeleteEmptyUSKeyW( + _In_ HUSKEY, + _In_ LPCWSTR, + _In_ SHREGDEL_FLAGS); + #define SHRegDeleteEmptyUSKey WINELIB_NAME_AW(SHRegDeleteEmptyUSKey) -LONG WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS); -LONG WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS); +LONG +WINAPI +SHRegEnumUSKeyA( + _In_ HUSKEY, + _In_ DWORD, + _Out_writes_to_(*pcchName, *pcchName) LPSTR, + _Inout_ LPDWORD pcchName, + _In_ SHREGENUM_FLAGS); + +LONG +WINAPI +SHRegEnumUSKeyW( + _In_ HUSKEY, + _In_ DWORD, + _Out_writes_to_(*pcchName, *pcchName) LPWSTR, + _Inout_ LPDWORD pcchName, + _In_ SHREGENUM_FLAGS); + #define SHRegEnumUSKey WINELIB_NAME_AW(SHRegEnumUSKey) -LONG WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD, - LPVOID,LPDWORD,SHREGENUM_FLAGS); -LONG WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD, - LPVOID,LPDWORD,SHREGENUM_FLAGS); +LONG +WINAPI +SHRegEnumUSValueA( + _In_ HUSKEY, + _In_ DWORD, + _Out_writes_to_(*pcchValueName, *pcchValueName) LPSTR, + _Inout_ LPDWORD pcchValueName, + _Out_opt_ LPDWORD, + _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID, + _Inout_opt_ LPDWORD pcbData, + _In_ SHREGENUM_FLAGS); + +LONG +WINAPI +SHRegEnumUSValueW( + _In_ HUSKEY, + _In_ DWORD, + _Out_writes_to_(*pcchValueName, *pcchValueName) LPWSTR, + _Inout_ LPDWORD pcchValueName, + _Out_opt_ LPDWORD, + _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID, + _Inout_opt_ LPDWORD pcbData, + _In_ SHREGENUM_FLAGS); + #define SHRegEnumUSValue WINELIB_NAME_AW(SHRegEnumUSValue) -LONG WINAPI SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD, - LPDWORD,SHREGENUM_FLAGS); -LONG WINAPI SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD, - LPDWORD,SHREGENUM_FLAGS); +LONG +WINAPI +SHRegQueryInfoUSKeyA( + _In_ HUSKEY, + _Out_opt_ LPDWORD, + _Out_opt_ LPDWORD, + _Out_opt_ LPDWORD, + _Out_opt_ LPDWORD, + _In_ SHREGENUM_FLAGS); + +LONG +WINAPI +SHRegQueryInfoUSKeyW( + _In_ HUSKEY, + _Out_opt_ LPDWORD, + _Out_opt_ LPDWORD, + _Out_opt_ LPDWORD, + _Out_opt_ LPDWORD, + _In_ SHREGENUM_FLAGS); + #define SHRegQueryInfoUSKey WINELIB_NAME_AW(SHRegQueryInfoUSKey) -LONG WINAPI SHRegCloseUSKey(HUSKEY); - -LONG WINAPI SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD, - BOOL,LPVOID,DWORD); -LONG WINAPI SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD, - BOOL,LPVOID,DWORD); +LONG WINAPI SHRegCloseUSKey(_In_ HUSKEY); + +LONG +WINAPI +SHRegGetUSValueA( + _In_ LPCSTR, + _In_opt_ LPCSTR, + _Inout_opt_ LPDWORD, + _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID, + _Inout_opt_ LPDWORD pcbData, + _In_ BOOL, + _In_reads_bytes_opt_(dwDefaultDataSize) LPVOID, + _In_ DWORD dwDefaultDataSize); + +LONG +WINAPI +SHRegGetUSValueW( + _In_ LPCWSTR, + _In_opt_ LPCWSTR, + _Inout_opt_ LPDWORD, + _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID, + _Inout_opt_ LPDWORD pcbData, + _In_ BOOL, + _In_reads_bytes_opt_(dwDefaultDataSize) LPVOID, + _In_ DWORD dwDefaultDataSize); + #define SHRegGetUSValue WINELIB_NAME_AW(SHRegGetUSValue) -LONG WINAPI SHRegSetUSValueA(LPCSTR,LPCSTR,DWORD,LPVOID,DWORD,DWORD); -LONG WINAPI SHRegSetUSValueW(LPCWSTR,LPCWSTR,DWORD,LPVOID,DWORD,DWORD); +LONG +WINAPI +SHRegSetUSValueA( + _In_ LPCSTR, + _In_ LPCSTR, + _In_ DWORD, + _In_reads_bytes_opt_(cbData) LPVOID, + _In_opt_ DWORD cbData, + _In_opt_ DWORD); + +LONG +WINAPI +SHRegSetUSValueW( + _In_ LPCWSTR, + _In_ LPCWSTR, + _In_ DWORD, + _In_reads_bytes_opt_(cbData) LPVOID, + _In_opt_ DWORD cbData, + _In_opt_ DWORD); + #define SHRegSetUSValue WINELIB_NAME_AW(SHRegSetUSValue) -BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL); -BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL); +BOOL +WINAPI +SHRegGetBoolUSValueA( + _In_ LPCSTR, + _In_opt_ LPCSTR, + _In_ BOOL, + _In_ BOOL); + +BOOL +WINAPI +SHRegGetBoolUSValueW( + _In_ LPCWSTR, + _In_opt_ LPCWSTR, + _In_ BOOL, + _In_ BOOL); + #define SHRegGetBoolUSValue WINELIB_NAME_AW(SHRegGetBoolUSValue) -int WINAPI SHRegGetIntW(HKEY,LPCWSTR,int); +int WINAPI SHRegGetIntW(_In_ HKEY, _In_opt_ LPCWSTR, _In_ int); /* IQueryAssociation and helpers */ enum @@ -282,11 +650,11 @@ STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; /*** IQueryAssociations methods ***/ - STDMETHOD(Init)(THIS_ ASSOCF flags, LPCWSTR pszAssoc, HKEY hkProgid, HWND hwnd) PURE; - STDMETHOD(GetString)(THIS_ ASSOCF flags, ASSOCSTR str, LPCWSTR pszExtra, LPWSTR pszOut, DWORD * pcchOut) PURE; - STDMETHOD(GetKey)(THIS_ ASSOCF flags, ASSOCKEY key, LPCWSTR pszExtra, HKEY * phkeyOut) PURE; - STDMETHOD(GetData)(THIS_ ASSOCF flags, ASSOCDATA data, LPCWSTR pszExtra, LPVOID pvOut, DWORD * pcbOut) PURE; - STDMETHOD(GetEnum)(THIS_ ASSOCF flags, ASSOCENUM assocenum, LPCWSTR pszExtra, REFIID riid, LPVOID * ppvOut) PURE; + STDMETHOD(Init)(THIS_ _In_ ASSOCF flags, _In_opt_ LPCWSTR pszAssoc, _In_opt_ HKEY hkProgid, _In_opt_ HWND hwnd) PURE; + STDMETHOD(GetString)(THIS_ _In_ ASSOCF flags, _In_ ASSOCSTR str, _In_opt_ LPCWSTR pszExtra, _Out_writes_opt_(*pcchOut) LPWSTR pszOut, _Inout_ DWORD *pcchOut) PURE; + STDMETHOD(GetKey)(THIS_ _In_ ASSOCF flags, _In_ ASSOCKEY key, _In_opt_ LPCWSTR pszExtra, _Out_ HKEY *phkeyOut) PURE; + STDMETHOD(GetData)(THIS_ _In_ ASSOCF flags, _In_ ASSOCDATA data, _In_opt_ LPCWSTR pszExtra, _Out_writes_bytes_opt_(*pcbOut) LPVOID pvOut, _Inout_opt_ DWORD *pcbOut) PURE; + STDMETHOD(GetEnum)(THIS_ _In_ ASSOCF flags, _In_ ASSOCENUM assocenum, _In_opt_ LPCWSTR pszExtra, _In_ REFIID riid, _Outptr_ LPVOID *ppvOut) PURE; }; #undef INTERFACE @@ -301,30 +669,100 @@ #define IQueryAssociations_GetEnum(p,a,b,c,d,e) (p)->lpVtbl->GetEnum(p,a,b,c,d,e) #endif -HRESULT WINAPI AssocCreate(CLSID,REFIID,LPVOID*); - -HRESULT WINAPI AssocQueryStringA(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,LPDWORD); -HRESULT WINAPI AssocQueryStringW(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,LPDWORD); +HRESULT WINAPI AssocCreate(_In_ CLSID, _In_ REFIID, _Outptr_ LPVOID*); + +HRESULT +WINAPI +AssocQueryStringA( + _In_ ASSOCF, + _In_ ASSOCSTR, + _In_ LPCSTR, + _In_opt_ LPCSTR, + _Out_writes_opt_(*pcchOut) LPSTR, + _Inout_ LPDWORD pcchOut); + +HRESULT +WINAPI +AssocQueryStringW( + _In_ ASSOCF, + _In_ ASSOCSTR, + _In_ LPCWSTR, + _In_opt_ LPCWSTR, + _Out_writes_opt_(*pcchOut) LPWSTR, + _Inout_ LPDWORD pcchOut); + #define AssocQueryString WINELIB_NAME_AW(AssocQueryString) -HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF,ASSOCSTR,HKEY,LPCSTR,LPSTR,LPDWORD); -HRESULT WINAPI AssocQueryStringByKeyW(ASSOCF,ASSOCSTR,HKEY,LPCWSTR,LPWSTR,LPDWORD); +HRESULT +WINAPI +AssocQueryStringByKeyA( + _In_ ASSOCF, + _In_ ASSOCSTR, + _In_ HKEY, + _In_opt_ LPCSTR, + _Out_writes_opt_(*pcchOut) LPSTR, + _Inout_ LPDWORD pcchOut); + +HRESULT +WINAPI +AssocQueryStringByKeyW( + _In_ ASSOCF, + _In_ ASSOCSTR, + _In_ HKEY, + _In_opt_ LPCWSTR, + _Out_writes_opt_(*pcchOut) LPWSTR, + _Inout_ LPDWORD pcchOut); + #define AssocQueryStringByKey WINELIB_NAME_AW(AssocQueryStringByKey) -HRESULT WINAPI AssocQueryKeyA(ASSOCF,ASSOCKEY,LPCSTR,LPCSTR,PHKEY); -HRESULT WINAPI AssocQueryKeyW(ASSOCF,ASSOCKEY,LPCWSTR,LPCWSTR,PHKEY); +HRESULT +WINAPI +AssocQueryKeyA( + _In_ ASSOCF, + _In_ ASSOCKEY, + _In_ LPCSTR, + _In_opt_ LPCSTR, + _Out_ PHKEY); + +HRESULT +WINAPI +AssocQueryKeyW( + _In_ ASSOCF, + _In_ ASSOCKEY, + _In_ LPCWSTR, + _In_opt_ LPCWSTR, + _Out_ PHKEY); + #define AssocQueryKey WINELIB_NAME_AW(AssocQueryKey) -BOOL WINAPI AssocIsDangerous(LPCWSTR); +BOOL WINAPI AssocIsDangerous(_In_ LPCWSTR); #endif /* NO_SHLWAPI_REG */ -void WINAPI IUnknown_Set(IUnknown **ppunk, IUnknown *punk); -void WINAPI IUnknown_AtomicRelease(IUnknown **punk); -HRESULT WINAPI IUnknown_GetWindow(IUnknown *punk, HWND *phwnd); -HRESULT WINAPI IUnknown_SetSite(IUnknown *punk, IUnknown *punkSite); -HRESULT WINAPI IUnknown_GetSite(IUnknown *punk, REFIID riid, void **ppv); -HRESULT WINAPI IUnknown_QueryService(IUnknown *punk, REFGUID guidService, REFIID riid, void **ppvOut); +void WINAPI IUnknown_Set(_Inout_ IUnknown **ppunk, _In_opt_ IUnknown *punk); +void WINAPI IUnknown_AtomicRelease(_Inout_opt_ IUnknown **punk); +HRESULT WINAPI IUnknown_GetWindow(_In_ IUnknown *punk, _Out_ HWND *phwnd); + +HRESULT +WINAPI +IUnknown_SetSite( + _In_ IUnknown *punk, + _In_opt_ IUnknown *punkSite); + +HRESULT +WINAPI +IUnknown_GetSite( + _In_ IUnknown *punk, + _In_ REFIID riid, + _Outptr_ void **ppv); + +HRESULT +WINAPI +IUnknown_QueryService( + _In_opt_ IUnknown *punk, + _In_ REFGUID guidService, + _In_ REFIID riid, + _Outptr_ void **ppvOut); /* Path functions */ #ifndef NO_SHLWAPI_PATH @@ -336,230 +774,366 @@ #define GCT_WILD 0x4 #define GCT_SEPARATOR 0x8 -LPSTR WINAPI PathAddBackslashA(LPSTR); -LPWSTR WINAPI PathAddBackslashW(LPWSTR); +LPSTR WINAPI PathAddBackslashA(_Inout_updates_(MAX_PATH) LPSTR); +LPWSTR WINAPI PathAddBackslashW(_Inout_updates_(MAX_PATH) LPWSTR); #define PathAddBackslash WINELIB_NAME_AW(PathAddBackslash) -BOOL WINAPI PathAddExtensionA(LPSTR,LPCSTR); -BOOL WINAPI PathAddExtensionW(LPWSTR,LPCWSTR); +BOOL +WINAPI +PathAddExtensionA( + _Inout_updates_(MAX_PATH) LPSTR, + _In_opt_ LPCSTR); + +BOOL +WINAPI +PathAddExtensionW( + _Inout_updates_(MAX_PATH) LPWSTR, + _In_opt_ LPCWSTR); + #define PathAddExtension WINELIB_NAME_AW(PathAddExtension) -BOOL WINAPI PathAppendA(LPSTR,LPCSTR); -BOOL WINAPI PathAppendW(LPWSTR,LPCWSTR); +BOOL WINAPI PathAppendA(_Inout_updates_(MAX_PATH) LPSTR, _In_ LPCSTR); +BOOL WINAPI PathAppendW(_Inout_updates_(MAX_PATH) LPWSTR, _In_ LPCWSTR); #define PathAppend WINELIB_NAME_AW(PathAppend) -LPSTR WINAPI PathBuildRootA(LPSTR,int); -LPWSTR WINAPI PathBuildRootW(LPWSTR,int); +LPSTR WINAPI PathBuildRootA(_Out_writes_(4) LPSTR, int); +LPWSTR WINAPI PathBuildRootW(_Out_writes_(4) LPWSTR, int); #define PathBuildRoot WINELIB_NAME_AW(PathBuiltRoot) -BOOL WINAPI PathCanonicalizeA(LPSTR,LPCSTR); -BOOL WINAPI PathCanonicalizeW(LPWSTR,LPCWSTR); +BOOL WINAPI PathCanonicalizeA(_Out_writes_(MAX_PATH) LPSTR, _In_ LPCSTR); +BOOL WINAPI PathCanonicalizeW(_Out_writes_(MAX_PATH) LPWSTR, _In_ LPCWSTR); #define PathCanonicalize WINELIB_NAME_AW(PathCanonicalize) -LPSTR WINAPI PathCombineA(LPSTR,LPCSTR,LPCSTR); -LPWSTR WINAPI PathCombineW(LPWSTR,LPCWSTR,LPCWSTR); +LPSTR +WINAPI +PathCombineA( + _Out_writes_(MAX_PATH) LPSTR, + _In_opt_ LPCSTR, + _In_opt_ LPCSTR); + +LPWSTR +WINAPI +PathCombineW( + _Out_writes_(MAX_PATH) LPWSTR, + _In_opt_ LPCWSTR, + _In_opt_ LPCWSTR); + #define PathCombine WINELIB_NAME_AW(PathCombine) -BOOL WINAPI PathCompactPathA(HDC,LPSTR,UINT); -BOOL WINAPI PathCompactPathW(HDC,LPWSTR,UINT); +BOOL +WINAPI +PathCompactPathA( + _In_opt_ HDC, + _Inout_updates_(MAX_PATH) LPSTR, + _In_ UINT); + +BOOL +WINAPI +PathCompactPathW( + _In_opt_ HDC, + _Inout_updates_(MAX_PATH) LPWSTR, + _In_ UINT); + #define PathCompactPath WINELIB_NAME_AW(PathCompactPath) -BOOL WINAPI PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD); -BOOL WINAPI PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD); +BOOL +WINAPI +PathCompactPathExA( + _Out_writes_(cchMax) LPSTR, + _In_ LPCSTR, + _In_ UINT cchMax, + _In_ DWORD); + +BOOL +WINAPI +PathCompactPathExW( + _Out_writes_(cchMax) LPWSTR, + _In_ LPCWSTR, + _In_ UINT cchMax, + _In_ DWORD); + #define PathCompactPathEx WINELIB_NAME_AW(PathCompactPathEx) -int WINAPI PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR); -int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR); +int +WINAPI +PathCommonPrefixA( + _In_ LPCSTR, + _In_ LPCSTR, + _Out_writes_opt_(MAX_PATH) LPSTR); + +int +WINAPI +PathCommonPrefixW( + _In_ LPCWSTR, + _In_ LPCWSTR, + _Out_writes_opt_(MAX_PATH) LPWSTR); + #define PathCommonPrefix WINELIB_NAME_AW(PathCommonPrefix) -HRESULT WINAPI PathCreateFromUrlA(LPCSTR,LPSTR,LPDWORD,DWORD); -HRESULT WINAPI PathCreateFromUrlW(LPCWSTR,LPWSTR,LPDWORD,DWORD); +HRESULT +WINAPI +PathCreateFromUrlA( + _In_ LPCSTR, + _Out_writes_to_(*pcchPath, *pcchPath) LPSTR, + _Inout_ LPDWORD pcchPath, + DWORD); + +HRESULT +WINAPI +PathCreateFromUrlW( + _In_ LPCWSTR, + _Out_writes_to_(*pcchPath, *pcchPath) LPWSTR, + _Inout_ LPDWORD pcchPath, + DWORD); + #define PathCreateFromUrl WINELIB_NAME_AW(PathCreateFromUrl) -HRESULT WINAPI PathCreateFromUrlAlloc(LPCWSTR,LPWSTR*,DWORD); - -BOOL WINAPI PathFileExistsA(LPCSTR); -BOOL WINAPI PathFileExistsW(LPCWSTR); +HRESULT WINAPI PathCreateFromUrlAlloc(_In_ LPCWSTR, _Outptr_ LPWSTR*, DWORD); + +BOOL WINAPI PathFileExistsA(_In_ LPCSTR); +BOOL WINAPI PathFileExistsW(_In_ LPCWSTR); #define PathFileExists WINELIB_NAME_AW(PathFileExists) BOOL WINAPI PathFileExistsAndAttributesA(LPCSTR,DWORD*); BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR,DWORD*); #define PathFileExistsAndAttributes WINELIB_NAME_AW(PathFileExistsAndAttributes) -LPSTR WINAPI PathFindExtensionA(LPCSTR); -LPWSTR WINAPI PathFindExtensionW(LPCWSTR); +LPSTR WINAPI PathFindExtensionA(_In_ LPCSTR); +LPWSTR WINAPI PathFindExtensionW(_In_ LPCWSTR); #define PathFindExtension WINELIB_NAME_AW(PathFindExtension) -LPSTR WINAPI PathFindFileNameA(LPCSTR); -LPWSTR WINAPI PathFindFileNameW(LPCWSTR); +LPSTR WINAPI PathFindFileNameA(_In_ LPCSTR); +LPWSTR WINAPI PathFindFileNameW(_In_ LPCWSTR); #define PathFindFileName WINELIB_NAME_AW(PathFindFileName) -LPSTR WINAPI PathFindNextComponentA(LPCSTR); -LPWSTR WINAPI PathFindNextComponentW(LPCWSTR); +LPSTR WINAPI PathFindNextComponentA(_In_ LPCSTR); +LPWSTR WINAPI PathFindNextComponentW(_In_ LPCWSTR); #define PathFindNextComponent WINELIB_NAME_AW(PathFindNextComponent) -BOOL WINAPI PathFindOnPathA(LPSTR,LPCSTR*); -BOOL WINAPI PathFindOnPathW(LPWSTR,LPCWSTR*); +BOOL WINAPI PathFindOnPathA(_Inout_updates_(MAX_PATH) LPSTR, _In_opt_ LPCSTR*); +BOOL WINAPI PathFindOnPathW(_Inout_updates_(MAX_PATH) LPWSTR, _In_opt_ LPCWSTR*); #define PathFindOnPath WINELIB_NAME_AW(PathFindOnPath) -LPSTR WINAPI PathGetArgsA(LPCSTR); -LPWSTR WINAPI PathGetArgsW(LPCWSTR); +LPSTR WINAPI PathGetArgsA(_In_ LPCSTR); +LPWSTR WINAPI PathGetArgsW(_In_ LPCWSTR); #define PathGetArgs WINELIB_NAME_AW(PathGetArgs) -UINT WINAPI PathGetCharTypeA(UCHAR); -UINT WINAPI PathGetCharTypeW(WCHAR); +UINT WINAPI PathGetCharTypeA(_In_ UCHAR); +UINT WINAPI PathGetCharTypeW(_In_ WCHAR); #define PathGetCharType WINELIB_NAME_AW(PathGetCharType) -int WINAPI PathGetDriveNumberA(LPCSTR); -int WINAPI PathGetDriveNumberW(LPCWSTR); +int WINAPI PathGetDriveNumberA(_In_ LPCSTR); +int WINAPI PathGetDriveNumberW(_In_ LPCWSTR); #define PathGetDriveNumber WINELIB_NAME_AW(PathGetDriveNumber) -BOOL WINAPI PathIsDirectoryA(LPCSTR); -BOOL WINAPI PathIsDirectoryW(LPCWSTR); +BOOL WINAPI PathIsDirectoryA(_In_ LPCSTR); +BOOL WINAPI PathIsDirectoryW(_In_ LPCWSTR); #define PathIsDirectory WINELIB_NAME_AW(PathIsDirectory) -BOOL WINAPI PathIsDirectoryEmptyA(LPCSTR); -BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR); +BOOL WINAPI PathIsDirectoryEmptyA(_In_ LPCSTR); +BOOL WINAPI PathIsDirectoryEmptyW(_In_ LPCWSTR); #define PathIsDirectoryEmpty WINELIB_NAME_AW(PathIsDirectoryEmpty) -BOOL WINAPI PathIsFileSpecA(LPCSTR); -BOOL WINAPI PathIsFileSpecW(LPCWSTR); +BOOL WINAPI PathIsFileSpecA(_In_ LPCSTR); +BOOL WINAPI PathIsFileSpecW(_In_ LPCWSTR); #define PathIsFileSpec WINELIB_NAME_AW(PathIsFileSpec); -BOOL WINAPI PathIsPrefixA(LPCSTR,LPCSTR); -BOOL WINAPI PathIsPrefixW(LPCWSTR,LPCWSTR); +BOOL WINAPI PathIsPrefixA(_In_ LPCSTR, _In_ LPCSTR); +BOOL WINAPI PathIsPrefixW(_In_ LPCWSTR, _In_ LPCWSTR); #define PathIsPrefix WINELIB_NAME_AW(PathIsPrefix) -BOOL WINAPI PathIsRelativeA(LPCSTR); -BOOL WINAPI PathIsRelativeW(LPCWSTR); +BOOL WINAPI PathIsRelativeA(_In_ LPCSTR); +BOOL WINAPI PathIsRelativeW(_In_ LPCWSTR); #define PathIsRelative WINELIB_NAME_AW(PathIsRelative) -BOOL WINAPI PathIsRootA(LPCSTR); -BOOL WINAPI PathIsRootW(LPCWSTR); +BOOL WINAPI PathIsRootA(_In_ LPCSTR); +BOOL WINAPI PathIsRootW(_In_ LPCWSTR); #define PathIsRoot WINELIB_NAME_AW(PathIsRoot) -BOOL WINAPI PathIsSameRootA(LPCSTR,LPCSTR); -BOOL WINAPI PathIsSameRootW(LPCWSTR,LPCWSTR); +BOOL WINAPI PathIsSameRootA(_In_ LPCSTR, _In_ LPCSTR); +BOOL WINAPI PathIsSameRootW(_In_ LPCWSTR, _In_ LPCWSTR); #define PathIsSameRoot WINELIB_NAME_AW(PathIsSameRoot) -BOOL WINAPI PathIsUNCA(LPCSTR); -BOOL WINAPI PathIsUNCW(LPCWSTR); +BOOL WINAPI PathIsUNCA(_In_ LPCSTR); +BOOL WINAPI PathIsUNCW(_In_ LPCWSTR); #define PathIsUNC WINELIB_NAME_AW(PathIsUNC) -BOOL WINAPI PathIsUNCServerA(LPCSTR); -BOOL WINAPI PathIsUNCServerW(LPCWSTR); +BOOL WINAPI PathIsUNCServerA(_In_ LPCSTR); +BOOL WINAPI PathIsUNCServerW(_In_ LPCWSTR); #define PathIsUNCServer WINELIB_NAME_AW(PathIsUNCServer) -BOOL WINAPI PathIsUNCServerShareA(LPCSTR); -BOOL WINAPI PathIsUNCServerShareW(LPCWSTR); +BOOL WINAPI PathIsUNCServerShareA(_In_ LPCSTR); +BOOL WINAPI PathIsUNCServerShareW(_In_ LPCWSTR); #define PathIsUNCServerShare WINELIB_NAME_AW(PathIsUNCServerShare) -BOOL WINAPI PathIsContentTypeA(LPCSTR,LPCSTR); -BOOL WINAPI PathIsContentTypeW(LPCWSTR,LPCWSTR); +BOOL WINAPI PathIsContentTypeA(_In_ LPCSTR, _In_ LPCSTR); +BOOL WINAPI PathIsContentTypeW(_In_ LPCWSTR, _In_ LPCWSTR); #define PathIsContentType WINELIB_NAME_AW(PathIsContentType) -BOOL WINAPI PathIsURLA(LPCSTR); -BOOL WINAPI PathIsURLW(LPCWSTR); +BOOL WINAPI PathIsURLA(_In_ LPCSTR); +BOOL WINAPI PathIsURLW(_In_ LPCWSTR); #define PathIsURL WINELIB_NAME_AW(PathIsURL) -BOOL WINAPI PathMakePrettyA(LPSTR); -BOOL WINAPI PathMakePrettyW(LPWSTR); +BOOL WINAPI PathMakePrettyA(_Inout_ LPSTR); +BOOL WINAPI PathMakePrettyW(_Inout_ LPWSTR); #define PathMakePretty WINELIB_NAME_AW(PathMakePretty) -BOOL WINAPI PathMatchSpecA(LPCSTR,LPCSTR); -BOOL WINAPI PathMatchSpecW(LPCWSTR,LPCWSTR); +BOOL WINAPI PathMatchSpecA(_In_ LPCSTR, _In_ LPCSTR); +BOOL WINAPI PathMatchSpecW(_In_ LPCWSTR, _In_ LPCWSTR); #define PathMatchSpec WINELIB_NAME_AW(PathMatchSpec) -int WINAPI PathParseIconLocationA(LPSTR); -int WINAPI PathParseIconLocationW(LPWSTR); +int WINAPI PathParseIconLocationA(_Inout_ LPSTR); +int WINAPI PathParseIconLocationW(_Inout_ LPWSTR); #define PathParseIconLocation WINELIB_NAME_AW(PathParseIconLocation) -VOID WINAPI PathQuoteSpacesA(LPSTR); -VOID WINAPI PathQuoteSpacesW(LPWSTR); +VOID WINAPI PathQuoteSpacesA(_Inout_updates_(MAX_PATH) LPSTR); +VOID WINAPI PathQuoteSpacesW(_Inout_updates_(MAX_PATH) LPWSTR); #define PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces) -BOOL WINAPI PathRelativePathToA(LPSTR,LPCSTR,DWORD,LPCSTR,DWORD); -BOOL WINAPI PathRelativePathToW(LPWSTR,LPCWSTR,DWORD,LPCWSTR,DWORD); +BOOL +WINAPI +PathRelativePathToA( + _Out_writes_(MAX_PATH) LPSTR, + _In_ LPCSTR, + _In_ DWORD, + _In_ LPCSTR, + _In_ DWORD); + +BOOL +WINAPI +PathRelativePathToW( + _Out_writes_(MAX_PATH) LPWSTR, + _In_ LPCWSTR, + _In_ DWORD, + _In_ LPCWSTR, + _In_ DWORD); + #define PathRelativePathTo WINELIB_NAME_AW(PathRelativePathTo) -VOID WINAPI PathRemoveArgsA(LPSTR); -VOID WINAPI PathRemoveArgsW(LPWSTR); +VOID WINAPI PathRemoveArgsA(_Inout_ LPSTR); +VOID WINAPI PathRemoveArgsW(_Inout_ LPWSTR); #define PathRemoveArgs WINELIB_NAME_AW(PathRemoveArgs) -LPSTR WINAPI PathRemoveBackslashA(LPSTR); -LPWSTR WINAPI PathRemoveBackslashW(LPWSTR); +LPSTR WINAPI PathRemoveBackslashA(_Inout_ LPSTR); +LPWSTR WINAPI PathRemoveBackslashW(_Inout_ LPWSTR); #define PathRemoveBackslash WINELIB_NAME_AW(PathRemoveBackslash) -VOID WINAPI PathRemoveBlanksA(LPSTR); -VOID WINAPI PathRemoveBlanksW(LPWSTR); +VOID WINAPI PathRemoveBlanksA(_Inout_ LPSTR); +VOID WINAPI PathRemoveBlanksW(_Inout_ LPWSTR); #define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks) -VOID WINAPI PathRemoveExtensionA(LPSTR); -VOID WINAPI PathRemoveExtensionW(LPWSTR); +VOID WINAPI PathRemoveExtensionA(_Inout_ LPSTR); +VOID WINAPI PathRemoveExtensionW(_Inout_ LPWSTR); #define PathRemoveExtension WINELIB_NAME_AW(PathRemoveExtension) -BOOL WINAPI PathRemoveFileSpecA(LPSTR); -BOOL WINAPI PathRemoveFileSpecW(LPWSTR); +BOOL WINAPI PathRemoveFileSpecA(_Inout_ LPSTR); +BOOL WINAPI PathRemoveFileSpecW(_Inout_ LPWSTR); #define PathRemoveFileSpec WINELIB_NAME_AW(PathRemoveFileSpec) -BOOL WINAPI PathRenameExtensionA(LPSTR,LPCSTR); -BOOL WINAPI PathRenameExtensionW(LPWSTR,LPCWSTR); +BOOL +WINAPI +PathRenameExtensionA( + _Inout_updates_(MAX_PATH) LPSTR, + _In_ LPCSTR); + +BOOL +WINAPI +PathRenameExtensionW( + _Inout_updates_(MAX_PATH) LPWSTR, + _In_ LPCWSTR); + #define PathRenameExtension WINELIB_NAME_AW(PathRenameExtension) -BOOL WINAPI PathSearchAndQualifyA(LPCSTR,LPSTR,UINT); -BOOL WINAPI PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT); +BOOL +WINAPI +PathSearchAndQualifyA( + _In_ LPCSTR, + _Out_writes_(cchBuf) LPSTR, + _In_ UINT cchBuf); + +BOOL +WINAPI +PathSearchAndQualifyW( + _In_ LPCWSTR, + _Out_writes_(cchBuf) LPWSTR, + _In_ UINT cchBuf); + #define PathSearchAndQualify WINELIB_NAME_AW(PathSearchAndQualify) -VOID WINAPI PathSetDlgItemPathA(HWND,int,LPCSTR); -VOID WINAPI PathSetDlgItemPathW(HWND,int,LPCWSTR); +VOID WINAPI PathSetDlgItemPathA(_In_ HWND, int, LPCSTR); +VOID WINAPI PathSetDlgItemPathW(_In_ HWND, int, LPCWSTR); #define PathSetDlgItemPath WINELIB_NAME_AW(PathSetDlgItemPath) -LPSTR WINAPI PathSkipRootA(LPCSTR); -LPWSTR WINAPI PathSkipRootW(LPCWSTR); +LPSTR WINAPI PathSkipRootA(_In_ LPCSTR); +LPWSTR WINAPI PathSkipRootW(_In_ LPCWSTR); #define PathSkipRoot WINELIB_NAME_AW(PathSkipRoot) -VOID WINAPI PathStripPathA(LPSTR); -VOID WINAPI PathStripPathW(LPWSTR); +VOID WINAPI PathStripPathA(_Inout_ LPSTR); +VOID WINAPI PathStripPathW(_Inout_ LPWSTR); #define PathStripPath WINELIB_NAME_AW(PathStripPath) -BOOL WINAPI PathStripToRootA(LPSTR); -BOOL WINAPI PathStripToRootW(LPWSTR); +BOOL WINAPI PathStripToRootA(_Inout_ LPSTR); +BOOL WINAPI PathStripToRootW(_Inout_ LPWSTR); #define PathStripToRoot WINELIB_NAME_AW(PathStripToRoot) -VOID WINAPI PathUnquoteSpacesA(LPSTR); -VOID WINAPI PathUnquoteSpacesW(LPWSTR); +VOID WINAPI PathUnquoteSpacesA(_Inout_ LPSTR); +VOID WINAPI PathUnquoteSpacesW(_Inout_ LPWSTR); #define PathUnquoteSpaces WINELIB_NAME_AW(PathUnquoteSpaces) -BOOL WINAPI PathMakeSystemFolderA(LPCSTR); -BOOL WINAPI PathMakeSystemFolderW(LPCWSTR); +BOOL WINAPI PathMakeSystemFolderA(_In_ LPCSTR); +BOOL WINAPI PathMakeSystemFolderW(_In_ LPCWSTR); #define PathMakeSystemFolder WINELIB_NAME_AW(PathMakeSystemFolder) -BOOL WINAPI PathUnmakeSystemFolderA(LPCSTR); -BOOL WINAPI PathUnmakeSystemFolderW(LPCWSTR); +BOOL WINAPI PathUnmakeSystemFolderA(_In_ LPCSTR); +BOOL WINAPI PathUnmakeSystemFolderW(_In_ LPCWSTR); #define PathUnmakeSystemFolder WINELIB_NAME_AW(PathUnmakeSystemFolder) -BOOL WINAPI PathIsSystemFolderA(LPCSTR,DWORD); -BOOL WINAPI PathIsSystemFolderW(LPCWSTR,DWORD); +BOOL WINAPI PathIsSystemFolderA(_In_opt_ LPCSTR, _In_ DWORD); +BOOL WINAPI PathIsSystemFolderW(_In_opt_ LPCWSTR, _In_ DWORD); #define PathIsSystemFolder WINELIB_NAME_AW(PathIsSystemFolder) -BOOL WINAPI PathIsNetworkPathA(LPCSTR); -BOOL WINAPI PathIsNetworkPathW(LPCWSTR); +BOOL WINAPI PathIsNetworkPathA(_In_ LPCSTR); +BOOL WINAPI PathIsNetworkPathW(_In_ LPCWSTR); #define PathIsNetworkPath WINELIB_NAME_AW(PathIsNetworkPath) -BOOL WINAPI PathIsLFNFileSpecA(LPCSTR); -BOOL WINAPI PathIsLFNFileSpecW(LPCWSTR); +BOOL WINAPI PathIsLFNFileSpecA(_In_ LPCSTR); +BOOL WINAPI PathIsLFNFileSpecW(_In_ LPCWSTR); #define PathIsLFNFileSpec WINELIB_NAME_AW(PathIsLFNFileSpec) -LPCSTR WINAPI PathFindSuffixArrayA(LPCSTR,LPCSTR *,int); -LPCWSTR WINAPI PathFindSuffixArrayW(LPCWSTR,LPCWSTR *,int); +LPCSTR +WINAPI +PathFindSuffixArrayA( + _In_ LPCSTR, + _In_reads_(iArraySize) LPCSTR *, + int iArraySize); + +LPCWSTR +WINAPI +PathFindSuffixArrayW( + _In_ LPCWSTR, + _In_reads_(iArraySize) LPCWSTR *, + int iArraySize); + #define PathFindSuffixArray WINELIB_NAME_AW(PathFindSuffixArray) -VOID WINAPI PathUndecorateA(LPSTR); -VOID WINAPI PathUndecorateW(LPWSTR); +VOID WINAPI PathUndecorateA(_Inout_ LPSTR); +VOID WINAPI PathUndecorateW(_Inout_ LPWSTR); #define PathUndecorate WINELIB_NAME_AW(PathUndecorate) -BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT); -BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT); +BOOL +WINAPI +PathUnExpandEnvStringsA( + _In_ LPCSTR, + _Out_writes_(cchBuf) LPSTR, + _In_ UINT cchBuf); + +BOOL +WINAPI +PathUnExpandEnvStringsW( + _In_ LPCWSTR, + _Out_writes_(cchBuf) LPWSTR, + _In_ UINT cchBuf); + #define PathUnExpandEnvStrings WINELIB_NAME_AW(PathUnExpandEnvStrings) /* Url functions */ @@ -650,24 +1224,82 @@ #define URL_ESCAPE_SEGMENT_ONLY 0x00002000 #define URL_ESCAPE_PERCENT 0x00001000 -HRESULT WINAPI UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD); -HRESULT WINAPI UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); +HRESULT +WINAPI +UrlApplySchemeA( + _In_ LPCSTR, + _Out_writes_(*pcchOut) LPSTR, + _Inout_ LPDWORD pcchOut, + DWORD); + +HRESULT +WINAPI +UrlApplySchemeW( + _In_ LPCWSTR, + _Out_writes_(*pcchOut) LPWSTR, + _Inout_ LPDWORD pcchOut, + DWORD); + #define UrlApplyScheme WINELIB_NAME_AW(UrlApplyScheme) -HRESULT WINAPI UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD); -HRESULT WINAPI UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); +HRESULT +WINAPI +UrlCanonicalizeA( + _In_ LPCSTR, + _Out_writes_to_(*pcchCanonicalized, *pcchCanonicalized) LPSTR, + _Inout_ LPDWORD pcchCanonicalized, + DWORD); + +HRESULT +WINAPI +UrlCanonicalizeW( + _In_ LPCWSTR, + _Out_writes_to_(*pcchCanonicalized, *pcchCanonicalized) LPWSTR, + _Inout_ LPDWORD pcchCanonicalized, + DWORD); + #define UrlCanonicalize WINELIB_NAME_AW(UrlCanonicalize) -HRESULT WINAPI UrlCombineA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD); -HRESULT WINAPI UrlCombineW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD); +HRESULT +WINAPI +UrlCombineA( + _In_ LPCSTR, + _In_ LPCSTR, + _Out_writes_to_opt_(*pcchCombined, *pcchCombined) LPSTR, + _Inout_ LPDWORD pcchCombined, + DWORD); + +HRESULT +WINAPI +UrlCombineW( + _In_ LPCWSTR, + _In_ LPCWSTR, + _Out_writes_to_opt_(*pcchCombined, *pcchCombined) LPWSTR, + _Inout_ LPDWORD pcchCombined, + DWORD); + #define UrlCombine WINELIB_NAME_AW(UrlCombine) -INT WINAPI UrlCompareA(LPCSTR,LPCSTR,BOOL); -INT WINAPI UrlCompareW(LPCWSTR,LPCWSTR,BOOL); +INT WINAPI UrlCompareA(_In_ LPCSTR, _In_ LPCSTR, BOOL); +INT WINAPI UrlCompareW(_In_ LPCWSTR, _In_ LPCWSTR, BOOL); #define UrlCompare WINELIB_NAME_AW(UrlCompare) -HRESULT WINAPI UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD); -HRESULT WINAPI UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); +HRESULT +WINAPI +UrlEscapeA( + _In_ LPCSTR, + _Out_writes_to_(*pcchEscaped, *pcchEscaped) LPSTR, + _Inout_ LPDWORD pcchEscaped, + DWORD); + +HRESULT +WINAPI +UrlEscapeW( + _In_ LPCWSTR, + _Out_writes_to_(*pcchEscaped, *pcchEscaped) LPWSTR, + _Inout_ LPDWORD pcchEscaped, + DWORD); + #define UrlEscape WINELIB_NAME_AW(UrlEscape) #define UrlEscapeSpacesA(x,y,z) UrlCanonicalizeA(x, y, z, \ @@ -676,38 +1308,86 @@ URL_DONT_ESCAPE_EXTRA_INFO|URL_ESCAPE_SPACES_ONLY) #define UrlEscapeSpaces WINELIB_NAME_AW(UrlEscapeSpaces) -LPCSTR WINAPI UrlGetLocationA(LPCSTR); -LPCWSTR WINAPI UrlGetLocationW(LPCWSTR); +LPCSTR WINAPI UrlGetLocationA(_In_ LPCSTR); +LPCWSTR WINAPI UrlGetLocationW(_In_ LPCWSTR); #define UrlGetLocation WINELIB_NAME_AW(UrlGetLocation) -HRESULT WINAPI UrlGetPartA(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD); -HRESULT WINAPI UrlGetPartW(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD); +HRESULT +WINAPI +UrlGetPartA( + _In_ LPCSTR, + _Out_writes_(*pcchOut) LPSTR, + _Inout_ LPDWORD pcchOut, + DWORD, + DWORD); + +HRESULT +WINAPI +UrlGetPartW( + _In_ LPCWSTR, + _Out_writes_(*pcchOut) LPWSTR, + _Inout_ LPDWORD pcchOut, + DWORD, + DWORD); + #define UrlGetPart WINELIB_NAME_AW(UrlGetPart) -HRESULT WINAPI HashData(const unsigned char *,DWORD,unsigned char *lpDest,DWORD); - -HRESULT WINAPI UrlHashA(LPCSTR,unsigned char *,DWORD); -HRESULT WINAPI UrlHashW(LPCWSTR,unsigned char *,DWORD); +HRESULT +WINAPI +HashData( + _In_reads_bytes_(cbData) const unsigned char *, + DWORD cbData, + _Out_writes_bytes_(cbHash) unsigned char *lpDest, + DWORD cbHash); + +HRESULT +WINAPI +UrlHashA( + _In_ LPCSTR, + _Out_writes_bytes_(cbHash) unsigned char *, + DWORD cbHash); + +HRESULT +WINAPI +UrlHashW( + _In_ LPCWSTR, + _Out_writes_bytes_(cbHash) unsigned char *, + DWORD cbHash); + #define UrlHash WINELIB_NAME_AW(UrlHash) -BOOL WINAPI UrlIsA(LPCSTR,URLIS); -BOOL WINAPI UrlIsW(LPCWSTR,URLIS); +BOOL WINAPI UrlIsA(_In_ LPCSTR, URLIS); +BOOL WINAPI UrlIsW(_In_ LPCWSTR, URLIS); #define UrlIs WINELIB_NAME_AW(UrlIs) -BOOL WINAPI UrlIsNoHistoryA(LPCSTR); -BOOL WINAPI UrlIsNoHistoryW(LPCWSTR); +BOOL WINAPI UrlIsNoHistoryA(_In_ LPCSTR); +BOOL WINAPI UrlIsNoHistoryW(_In_ LPCWSTR); #define UrlIsNoHistory WINELIB_NAME_AW(UrlIsNoHistory) -BOOL WINAPI UrlIsOpaqueA(LPCSTR); -BOOL WINAPI UrlIsOpaqueW(LPCWSTR); +BOOL WINAPI UrlIsOpaqueA(_In_ LPCSTR); +BOOL WINAPI UrlIsOpaqueW(_In_ LPCWSTR); #define UrlIsOpaque WINELIB_NAME_AW(UrlIsOpaque) #define UrlIsFileUrlA(x) UrlIsA(x, URLIS_FILEURL) #define UrlIsFileUrlW(x) UrlIsW(x, URLIS_FILEURL) #define UrlIsFileUrl WINELIB_NAME_AW(UrlIsFileUrl) -HRESULT WINAPI UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD); -HRESULT WINAPI UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD); +HRESULT +WINAPI +UrlUnescapeA( + _Inout_ LPSTR, + _Out_writes_to_opt_(*pcchUnescaped, *pcchUnescaped) LPSTR, + _Inout_opt_ LPDWORD pcchUnescaped, + DWORD); + +HRESULT +WINAPI +UrlUnescapeW( + _Inout_ LPWSTR, + _Out_writes_to_opt_(*pcchUnescaped, *pcchUnescaped) LPWSTR, + _Inout_opt_ LPDWORD pcchUnescaped, + DWORD); + #define UrlUnescape WINELIB_NAME_AW(UrlUnescape) #define UrlUnescapeInPlaceA(x,y) UrlUnescapeA(x, NULL, NULL, \ @@ -716,8 +1396,22 @@ y | URL_UNESCAPE_INPLACE) #define UrlUnescapeInPlace WINELIB_NAME_AW(UrlUnescapeInPlace) -HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD); -HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD); +HRESULT +WINAPI +UrlCreateFromPathA( + _In_ LPCSTR, + _Out_writes_to_(*pcchUrl, *pcchUrl) LPSTR, + _Inout_ LPDWORD pcchUrl, + DWORD); + +HRESULT +WINAPI +UrlCreateFromPathW( + _In_ LPCWSTR, + _Out_writes_to_(*pcchUrl, *pcchUrl) LPWSTR, + _Inout_ LPDWORD pcchUrl, + DWORD); + #define UrlCreateFromPath WINELIB_NAME_AW(UrlCreateFromPath) typedef struct tagPARSEDURLA { @@ -738,8 +1432,8 @@ UINT nScheme; } PARSEDURLW, *PPARSEDURLW; -HRESULT WINAPI ParseURLA(LPCSTR pszUrl, PARSEDURLA *ppu); -HRESULT WINAPI ParseURLW(LPCWSTR pszUrl, PARSEDURLW *ppu); +HRESULT WINAPI ParseURLA(_In_ LPCSTR pszUrl, _Inout_ PARSEDURLA *ppu); +HRESULT WINAPI ParseURLW(_In_ LPCWSTR pszUrl, _Inout_ PARSEDURLW *ppu); #define ParseURL WINELIB_NAME_AW(ParseUrl) #endif /* NO_SHLWAPI_PATH */ @@ -756,74 +1450,110 @@ BOOL WINAPI ChrCmpIW (WCHAR,WCHAR); #define ChrCmpI WINELIB_NAME_AW(ChrCmpI) -INT WINAPI StrCSpnA(LPCSTR,LPCSTR); -INT WINAPI StrCSpnW(LPCWSTR,LPCWSTR); +INT WINAPI StrCSpnA(_In_ LPCSTR, _In_ LPCSTR); +INT WINAPI StrCSpnW(_In_ LPCWSTR, _In_ LPCWSTR); #define StrCSpn WINELIB_NAME_AW(StrCSpn) -INT WINAPI StrCSpnIA(LPCSTR,LPCSTR); -INT WINAPI StrCSpnIW(LPCWSTR,LPCWSTR); +INT WINAPI StrCSpnIA(_In_ LPCSTR, _In_ LPCSTR); +INT WINAPI StrCSpnIW(_In_ LPCWSTR, _In_ LPCWSTR); #define StrCSpnI WINELIB_NAME_AW(StrCSpnI) #define StrCatA lstrcatA -LPWSTR WINAPI StrCatW(LPWSTR,LPCWSTR); +LPWSTR WINAPI StrCatW(_Inout_ LPWSTR, _In_ LPCWSTR); #define StrCat WINELIB_NAME_AW(StrCat) -LPSTR WINAPI StrCatBuffA(LPSTR,LPCSTR,INT); -LPWSTR WINAPI StrCatBuffW(LPWSTR,LPCWSTR,INT); +LPSTR +WINAPI +StrCatBuffA( + _Inout_updates_(cchDestBuffSize) LPSTR, + _In_ LPCSTR, + INT cchDestBuffSize); + +LPWSTR +WINAPI +StrCatBuffW( + _Inout_updates_(cchDestBuffSize) LPWSTR, + _In_ LPCWSTR, + INT cchDestBuffSize); + #define StrCatBuff WINELIB_NAME_AW(StrCatBuff) -DWORD WINAPI StrCatChainW(LPWSTR,DWORD,DWORD,LPCWSTR); - -LPSTR WINAPI StrChrA(LPCSTR,WORD); -LPWSTR WINAPI StrChrW(LPCWSTR,WCHAR); +DWORD +WINAPI +StrCatChainW( + _Out_writes_(cchDst) LPWSTR, + DWORD cchDst, + DWORD, + _In_ LPCWSTR); + +LPSTR WINAPI StrChrA(_In_ LPCSTR, WORD); +LPWSTR WINAPI StrChrW(_In_ LPCWSTR, WCHAR); #define StrChr WINELIB_NAME_AW(StrChr) -LPSTR WINAPI StrChrIA(LPCSTR,WORD); -LPWSTR WINAPI StrChrIW(LPCWSTR,WCHAR); +LPSTR WINAPI StrChrIA(_In_ LPCSTR, WORD); +LPWSTR WINAPI StrChrIW(_In_ LPCWSTR, WCHAR); #define StrChrI WINELIB_NAME_AW(StrChrI) #define StrCmpA lstrcmpA -int WINAPI StrCmpW(LPCWSTR,LPCWSTR); +int WINAPI StrCmpW(_In_ LPCWSTR, _In_ LPCWSTR); #define StrCmp WINELIB_NAME_AW(StrCmp) #define StrCmpIA lstrcmpiA -int WINAPI StrCmpIW(LPCWSTR,LPCWSTR); +int WINAPI StrCmpIW(_In_ LPCWSTR, _In_ LPCWSTR); #define StrCmpI WINELIB_NAME_AW(StrCmpI) #define StrCpyA lstrcpyA -LPWSTR WINAPI StrCpyW(LPWSTR,LPCWSTR); +LPWSTR WINAPI StrCpyW(_Out_ LPWSTR, _In_ LPCWSTR); #define StrCpy WINELIB_NAME_AW(StrCpy) #define StrCpyNA lstrcpynA -LPWSTR WINAPI StrCpyNW(LPWSTR,LPCWSTR,int); +LPWSTR WINAPI StrCpyNW(_Out_writes_(cchMax) LPWSTR, _In_ LPCWSTR, int cchMax); #define StrCpyN WINELIB_NAME_AW(StrCpyN) #define StrNCpy WINELIB_NAME_AW(StrCpyN) -INT WINAPI StrCmpLogicalW(LPCWSTR,LPCWSTR); - -INT WINAPI StrCmpNA(LPCSTR,LPCSTR,INT); -INT WINAPI StrCmpNW(LPCWSTR,LPCWSTR,INT); +INT WINAPI StrCmpLogicalW(_In_ LPCWSTR, _In_ LPCWSTR); + +INT WINAPI StrCmpNA(_In_ LPCSTR, _In_ LPCSTR, INT); +INT WINAPI StrCmpNW(_In_ LPCWSTR, _In_ LPCWSTR, INT); #define StrCmpN WINELIB_NAME_AW(StrCmpN) #define StrNCmp WINELIB_NAME_AW(StrCmpN) -INT WINAPI StrCmpNIA(LPCSTR,LPCSTR,INT); -INT WINAPI StrCmpNIW(LPCWSTR,LPCWSTR,INT); +INT WINAPI StrCmpNIA(_In_ LPCSTR, _In_ LPCSTR, INT); +INT WINAPI StrCmpNIW(_In_ LPCWSTR, _In_ LPCWSTR, INT); #define StrCmpNI WINELIB_NAME_AW(StrCmpNI) #define StrNCmpI WINELIB_NAME_AW(StrCmpNI) -LPSTR WINAPI StrDupA(LPCSTR); -LPWSTR WINAPI StrDupW(LPCWSTR); +LPSTR WINAPI StrDupA(_In_ LPCSTR); +LPWSTR WINAPI StrDupW(_In_ LPCWSTR); #define StrDup WINELIB_NAME_AW(StrDup) -HRESULT WINAPI SHStrDupA(LPCSTR,WCHAR**); -HRESULT WINAPI SHStrDupW(LPCWSTR,WCHAR**); +HRESULT WINAPI SHStrDupA(_In_ LPCSTR, _Outptr_ WCHAR**); +HRESULT WINAPI SHStrDupW(_In_ LPCWSTR, _Outptr_ WCHAR**); #define SHStrDup WINELIB_NAME_AW(SHStrDup) -LPSTR WINAPI StrFormatByteSizeA (DWORD,LPSTR,UINT); +LPSTR +WINAPI +StrFormatByteSizeA( + DWORD, + _Out_writes_(cchBuf) LPSTR, + UINT cchBuf); /* A/W Pairing is broken for this function */ -LPSTR WINAPI StrFormatByteSize64A (LONGLONG,LPSTR,UINT); -LPWSTR WINAPI StrFormatByteSizeW (LONGLONG,LPWSTR,UINT); + +LPSTR +WINAPI +StrFormatByteSize64A( + LONGLONG, + _Out_writes_(cchBuf) LPSTR, + UINT cchBuf); + +LPWSTR +WINAPI +StrFormatByteSizeW( + LONGLONG, + _Out_writes_(cchBuf) LPWSTR, + UINT cchBuf); + #ifndef WINE_NO_UNICODE_MACROS #ifdef UNICODE #define StrFormatByteSize StrFormatByteSizeW @@ -832,16 +1562,42 @@ #endif #endif -LPSTR WINAPI StrFormatKBSizeA(LONGLONG,LPSTR,UINT); -LPWSTR WINAPI StrFormatKBSizeW(LONGLONG,LPWSTR,UINT); +LPSTR +WINAPI +StrFormatKBSizeA( + LONGLONG, + _Out_writes_(cchBuf) LPSTR, + UINT cchBuf); + +LPWSTR +WINAPI +StrFormatKBSizeW( + LONGLONG, + _Out_writes_(cchBuf) LPWSTR, + UINT cchBuf); + #define StrFormatKBSize WINELIB_NAME_AW(StrFormatKBSize) -int WINAPI StrFromTimeIntervalA(LPSTR,UINT,DWORD,int); -int WINAPI StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int); +int +WINAPI +StrFromTimeIntervalA( + _Out_writes_(cchMax) LPSTR, + UINT cchMax, + DWORD, + int); + +int +WINAPI +StrFromTimeIntervalW( + _Out_writes_(cchMax) LPWSTR, + UINT cchMax, + DWORD, + int); + #define StrFromTimeInterval WINELIB_NAME_AW(StrFromTimeInterval) -BOOL WINAPI StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int); -BOOL WINAPI StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int); +BOOL WINAPI StrIsIntlEqualA(BOOL, _In_ LPCSTR, _In_ LPCSTR, int); +BOOL WINAPI StrIsIntlEqualW(BOOL, _In_ LPCWSTR, _In_ LPCWSTR, int); #define StrIsIntlEqual WINELIB_NAME_AW(StrIsIntlEqual) #define StrIntlEqNA(a,b,c) StrIsIntlEqualA(TRUE,a,b,c) @@ -850,71 +1606,119 @@ #define StrIntlEqNIA(a,b,c) StrIsIntlEqualA(FALSE,a,b,c) #define StrIntlEqNIW(a,b,c) StrIsIntlEqualW(FALSE,a,b,c) -LPSTR WINAPI StrNCatA(LPSTR,LPCSTR,int); -LPWSTR WINAPI StrNCatW(LPWSTR,LPCWSTR,int); +LPSTR WINAPI StrNCatA(_Inout_updates_(cchMax) LPSTR, LPCSTR, int cchMax); +LPWSTR WINAPI StrNCatW(_Inout_updates_(cchMax) LPWSTR, LPCWSTR, int cchMax); #define StrNCat WINELIB_NAME_AW(StrNCat) #define StrCatN WINELIB_NAME_AW(StrNCat) -LPSTR WINAPI StrPBrkA(LPCSTR,LPCSTR); -LPWSTR WINAPI StrPBrkW(LPCWSTR,LPCWSTR); +LPSTR WINAPI StrPBrkA(_In_ LPCSTR, _In_ LPCSTR); +LPWSTR WINAPI StrPBrkW(_In_ LPCWSTR, _In_ LPCWSTR); #define StrPBrk WINELIB_NAME_AW(StrPBrk) -LPSTR WINAPI StrRChrA(LPCSTR,LPCSTR,WORD); -LPWSTR WINAPI StrRChrW(LPCWSTR,LPCWSTR,WORD); +LPSTR WINAPI StrRChrA(_In_ LPCSTR, _In_opt_ LPCSTR, WORD); +LPWSTR WINAPI StrRChrW(_In_ LPCWSTR, _In_opt_ LPCWSTR, WCHAR); #define StrRChr WINELIB_NAME_AW(StrRChr) -LPSTR WINAPI StrRChrIA(LPCSTR,LPCSTR,WORD); -LPWSTR WINAPI StrRChrIW(LPCWSTR,LPCWSTR,WORD); +LPSTR WINAPI StrRChrIA(_In_ LPCSTR, _In_opt_ LPCSTR, WORD); +LPWSTR WINAPI StrRChrIW(_In_ LPCWSTR, _In_opt_ LPCWSTR, WCHAR); #define StrRChrI WINELIB_NAME_AW(StrRChrI) -LPSTR WINAPI StrRStrIA(LPCSTR,LPCSTR,LPCSTR); -LPWSTR WINAPI StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR); +LPSTR WINAPI StrRStrIA(_In_ LPCSTR, _In_opt_ LPCSTR, _In_ LPCSTR); +LPWSTR WINAPI StrRStrIW(_In_ LPCWSTR, _In_opt_ LPCWSTR, _In_ LPCWSTR); #define StrRStrI WINELIB_NAME_AW(StrRStrI) -int WINAPI StrSpnA(LPCSTR,LPCSTR); -int WINAPI StrSpnW(LPCWSTR,LPCWSTR); +int WINAPI StrSpnA(_In_ LPCSTR, _In_ LPCSTR); +int WINAPI StrSpnW(_In_ LPCWSTR, _In_ LPCWSTR); #define StrSpn WINELIB_NAME_AW(StrSpn) -LPSTR WINAPI StrStrA(LPCSTR,LPCSTR); -LPWSTR WINAPI StrStrW(LPCWSTR,LPCWSTR); +LPSTR WINAPI StrStrA(_In_ LPCSTR, _In_ LPCSTR); +LPWSTR WINAPI StrStrW(_In_ LPCWSTR, _In_ LPCWSTR); #define StrStr WINELIB_NAME_AW(StrStr) -LPSTR WINAPI StrStrIA(LPCSTR,LPCSTR); -LPWSTR WINAPI StrStrIW(LPCWSTR,LPCWSTR); +LPSTR WINAPI StrStrIA(_In_ LPCSTR, _In_ LPCSTR); +LPWSTR WINAPI StrStrIW(_In_ LPCWSTR, _In_ LPCWSTR); #define StrStrI WINELIB_NAME_AW(StrStrI) -LPWSTR WINAPI StrStrNW(LPCWSTR,LPCWSTR,UINT); -LPWSTR WINAPI StrStrNIW(LPCWSTR,LPCWSTR,UINT); - -int WINAPI StrToIntA(LPCSTR); -int WINAPI StrToIntW(LPCWSTR); +LPWSTR WINAPI StrStrNW(_In_ LPCWSTR, _In_ LPCWSTR, UINT); +LPWSTR WINAPI StrStrNIW(_In_ LPCWSTR, _In_ LPCWSTR, UINT); + +int WINAPI StrToIntA(_In_ LPCSTR); +int WINAPI StrToIntW(_In_ LPCWSTR); #define StrToInt WINELIB_NAME_AW(StrToInt) #define StrToLong WINELIB_NAME_AW(StrToInt) -BOOL WINAPI StrToIntExA(LPCSTR,DWORD,int*); -BOOL WINAPI StrToIntExW(LPCWSTR,DWORD,int*); +BOOL WINAPI StrToIntExA(_In_ LPCSTR, DWORD, _Out_ int*); +BOOL WINAPI StrToIntExW(_In_ LPCWSTR, DWORD, _Out_ int*); #define StrToIntEx WINELIB_NAME_AW(StrToIntEx) -BOOL WINAPI StrToInt64ExA(LPCSTR,DWORD,LONGLONG*); -BOOL WINAPI StrToInt64ExW(LPCWSTR,DWORD,LONGLONG*); +BOOL WINAPI StrToInt64ExA(_In_ LPCSTR, DWORD, _Out_ LONGLONG*); +BOOL WINAPI StrToInt64ExW(_In_ LPCWSTR, DWORD, _Out_ LONGLONG*); #define StrToIntEx64 WINELIB_NAME_AW(StrToIntEx64) -BOOL WINAPI StrTrimA(LPSTR,LPCSTR); -BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR); +BOOL WINAPI StrTrimA(_Inout_ LPSTR, _In_ LPCSTR); +BOOL WINAPI StrTrimW(_Inout_ LPWSTR, _In_ LPCWSTR); #define StrTrim WINELIB_NAME_AW(StrTrim) -INT WINAPI wvnsprintfA(LPSTR,INT,LPCSTR,__ms_va_list); -INT WINAPI wvnsprintfW(LPWSTR,INT,LPCWSTR,__ms_va_list); +INT +WINAPI +wvnsprintfA( + _Out_writes_(cchDest) LPSTR, + _In_ INT cchDest, + _In_ _Printf_format_string_ LPCSTR, + _In_ __ms_va_list); + +INT +WINAPI +wvnsprintfW( + _Out_writes_(cchDest) LPWSTR, + _In_ INT cchDest, + _In_ _Printf_format_string_ LPCWSTR, + _In_ __ms_va_list); + #define wvnsprintf WINELIB_NAME_AW(wvnsprintf) -INT WINAPIV wnsprintfA(LPSTR,INT,LPCSTR, ...); -INT WINAPIV wnsprintfW(LPWSTR,INT,LPCWSTR, ...); +INT +WINAPIV +wnsprintfA( + _Out_writes_(cchDest) LPSTR, + _In_ INT cchDest, + _In_ _Printf_format_string_ LPCSTR, + ...); + +INT +WINAPIV +wnsprintfW( + _Out_writes_(cchDest) LPWSTR, + _In_ INT cchDest, + _In_ _Printf_format_string_ LPCWSTR, + ...); + #define wnsprintf WINELIB_NAME_AW(wnsprintf) -HRESULT WINAPI SHLoadIndirectString(LPCWSTR,LPWSTR,UINT,PVOID*); - -BOOL WINAPI IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int); -BOOL WINAPI IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int); +HRESULT +WINAPI +SHLoadIndirectString( + _In_ LPCWSTR, + _Out_writes_(cchOutBuf) LPWSTR, + _In_ UINT cchOutBuf, + _Reserved_ PVOID*); + +BOOL +WINAPI +IntlStrEqWorkerA( + BOOL, + _In_reads_(nChar) LPCSTR, + _In_reads_(nChar) LPCSTR, + int nChar); + +BOOL +WINAPI +IntlStrEqWorkerW( + BOOL, + _In_reads_(nChar) LPCWSTR, + _In_reads_(nChar) LPCWSTR, + int nChar); + #define IntlStrEqWorker WINELIB_NAME_AW(IntlStrEqWorker) #define IntlStrEqNA(s1,s2,n) IntlStrEqWorkerA(TRUE,s1,s2,n) @@ -925,15 +1729,46 @@ #define IntlStrEqNIW(s1,s2,n) IntlStrEqWorkerW(FALSE,s1,s2,n) #define IntlStrEqNI WINELIB_NAME_AW(IntlStrEqNI) -HRESULT WINAPI StrRetToStrA(STRRET*,LPCITEMIDLIST,LPSTR*); -HRESULT WINAPI StrRetToStrW(STRRET*,LPCITEMIDLIST,LPWSTR*); +HRESULT +WINAPI +StrRetToStrA( + _Inout_ STRRET*, + _In_opt_ LPCITEMIDLIST, + _Outptr_ LPSTR*); + +HRESULT +WINAPI +StrRetToStrW( + _Inout_ STRRET*, + _In_opt_ LPCITEMIDLIST, + _Outptr_ LPWSTR*); + #define StrRetToStr WINELIB_NAME_AW(StrRetToStr) -HRESULT WINAPI StrRetToBufA(STRRET*,LPCITEMIDLIST,LPSTR,UINT); -HRESULT WINAPI StrRetToBufW(STRRET*,LPCITEMIDLIST,LPWSTR,UINT); +HRESULT +WINAPI +StrRetToBufA( + _Inout_ STRRET*, + _In_opt_ LPCITEMIDLIST, + _Out_writes_(cchBuf) LPSTR, + UINT cchBuf); + +HRESULT +WINAPI +StrRetToBufW( + _Inout_ STRRET*, + _In_opt_ LPCITEMIDLIST, + _Out_writes_(cchBuf) LPWSTR, + UINT cchBuf); + #define StrRetToBuf WINELIB_NAME_AW(StrRetToBuf) -HRESULT WINAPI StrRetToBSTR(STRRET*,LPCITEMIDLIST,BSTR*); +HRESULT +WINAPI +StrRetToBSTR( + _Inout_ STRRET*, + _In_opt_ LPCITEMIDLIST, + _Outptr_ BSTR*); BOOL WINAPI IsCharSpaceA(CHAR); BOOL WINAPI IsCharSpaceW(WCHAR); @@ -945,13 +1780,13 @@ /* GDI functions */ #ifndef NO_SHLWAPI_GDI -HPALETTE WINAPI SHCreateShellPalette(HDC); +HPALETTE WINAPI SHCreateShellPalette(_In_opt_ HDC); COLORREF WINAPI ColorHLSToRGB(WORD,WORD,WORD); COLORREF WINAPI ColorAdjustLuma(COLORREF,int,BOOL); -VOID WINAPI ColorRGBToHLS(COLORREF,LPWORD,LPWORD,LPWORD); +VOID WINAPI ColorRGBToHLS(COLORREF, _Out_ LPWORD, _Out_ LPWORD, _Out_ LPWORD); #endif /* NO_SHLWAPI_GDI */ @@ -961,19 +1796,67 @@ /* Stream functions */ #ifndef NO_SHLWAPI_STREAM -struct IStream * WINAPI SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD); -struct IStream * WINAPI SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD); +struct IStream * +WINAPI +SHOpenRegStreamA( + _In_ HKEY, + _In_opt_ LPCSTR, + _In_opt_ LPCSTR, + _In_ DWORD); + +struct IStream * +WINAPI +SHOpenRegStreamW( + _In_ HKEY, + _In_opt_ LPCWSTR, + _In_opt_ LPCWSTR, + _In_ DWORD); + #define SHOpenRegStream WINELIB_NAME_AW(SHOpenRegStream2) /* Uses version 2 */ -struct IStream * WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD); -struct IStream * WINAPI SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD); +struct IStream * +WINAPI +SHOpenRegStream2A( + _In_ HKEY, + _In_opt_ LPCSTR, + _In_opt_ LPCSTR, + _In_ DWORD); + +struct IStream * +WINAPI +SHOpenRegStream2W( + _In_ HKEY, + _In_opt_ LPCWSTR, + _In_opt_ LPCWSTR, + _In_ DWORD); + #define SHOpenRegStream2 WINELIB_NAME_AW(SHOpenRegStream2) -HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR,DWORD,struct IStream**); -HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR,DWORD,struct IStream**); +HRESULT +WINAPI +SHCreateStreamOnFileA( + _In_ LPCSTR, + _In_ DWORD, + _Outptr_ struct IStream**); + +HRESULT +WINAPI +SHCreateStreamOnFileW( + _In_ LPCWSTR, + _In_ DWORD, + _Outptr_ struct IStream**); + #define SHCreateStreamOnFile WINELIB_NAME_AW(SHCreateStreamOnFile) -HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR,DWORD,DWORD,BOOL,struct IStream*,struct IStream**); +HRESULT +WINAPI +SHCreateStreamOnFileEx( + _In_ LPCWSTR, + _In_ DWORD, + _In_ DWORD, + _In_ BOOL, + _In_opt_ struct IStream*, + _Outptr_ struct IStream**); HRESULT WINAPI SHCreateStreamWrapper(LPBYTE,DWORD,DWORD,struct IStream**); @@ -993,12 +1876,12 @@ #define SHACF_AUTOAPPEND_FORCE_ON 0x40000000 #define SHACF_AUTOAPPEND_FORCE_OFF 0x80000000 -HRESULT WINAPI SHAutoComplete(HWND,DWORD); +HRESULT WINAPI SHAutoComplete(_In_ HWND, DWORD); /* Threads */ -HRESULT WINAPI SHCreateThreadRef(LONG*, IUnknown**); -HRESULT WINAPI SHGetThreadRef(IUnknown**); -HRESULT WINAPI SHSetThreadRef(IUnknown*); +HRESULT WINAPI SHCreateThreadRef(_Inout_ LONG*, _Outptr_ IUnknown**); +HRESULT WINAPI SHGetThreadRef(_Outptr_ IUnknown**); +HRESULT WINAPI SHSetThreadRef(_In_opt_ IUnknown*); HRESULT WINAPI SHReleaseThreadRef(void); /* SHCreateThread flags */ @@ -1010,9 +1893,15 @@ #define CTF_REF_COUNTED 0x20 /* Thread is ref counted */ #define CTF_WAIT_ALLOWCOM 0x40 /* Allow marshalling */ -BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE,void*,DWORD,LPTHREAD_START_ROUTINE); - -BOOL WINAPI SHSkipJunction(struct IBindCtx*,const CLSID*); +BOOL +WINAPI +SHCreateThread( + _In_ LPTHREAD_START_ROUTINE, + _In_opt_ void*, + _In_ DWORD, + _In_opt_ LPTHREAD_START_ROUTINE); + +BOOL WINAPI SHSkipJunction(_In_opt_ struct IBindCtx*, _In_ const CLSID*); /* Version Information */ @@ -1048,7 +1937,7 @@ #define MAKEDLLVERULL(mjr, mnr, bld, qfe) (((ULONGLONG)(mjr)<< 48)| \ ((ULONGLONG)(mnr)<< 32) | ((ULONGLONG)(bld)<< 16) | (ULONGLONG)(qfe)) -HRESULT WINAPI DllInstall(BOOL,LPCWSTR) DECLSPEC_HIDDEN; +HRESULT WINAPI DllInstall(BOOL, _In_opt_ LPCWSTR) DECLSPEC_HIDDEN; #if (_WIN32_IE >= 0x0600) @@ -1065,7 +1954,15 @@ #define SHGVSPB_USERDEFAULTS (SHGVSPB_PERUSER | SHGVSPB_ALLFOLDERS) #define SHGVSPB_GLOBALDEAFAULTS (SHGVSPB_ALLUSERS | SHGVSPB_ALLFOLDERS) -HRESULT WINAPI SHGetViewStatePropertyBag(LPCITEMIDLIST pidl, LPWSTR bag_name, DWORD flags, REFIID riid, void **ppv); +HRESULT +WINAPI +SHGetViewStatePropertyBag( + _In_opt_ LPCITEMIDLIST pidl, + _In_opt_ LPWSTR bag_name, + DWORD flags, + _In_ REFIID riid, + _Outptr_ void **ppv); + #endif /* (_WIN32_IE >= 0x0600) */ @@ -1133,7 +2030,13 @@ int dwOffset; } QITAB, *LPQITAB; -HRESULT WINAPI QISearch(void* base, const QITAB *pqit, REFIID riid, void **ppv); +HRESULT +WINAPI +QISearch( + _Inout_ void* base, + _In_ const QITAB *pqit, + _In_ REFIID riid, + _Outptr_ void **ppv); #include <poppack.h>
11 years, 4 months
1
0
0
0
[aandrejevic] 59721: [NTVDM] Use RGB() macro instead of defining the hexadecimal values manually, which were incorrect.
by aandrejevic@svn.reactos.org
Author: aandrejevic Date: Tue Aug 13 11:57:10 2013 New Revision: 59721 URL:
http://svn.reactos.org/svn/reactos?rev=59721&view=rev
Log: [NTVDM] Use RGB() macro instead of defining the hexadecimal values manually, which were incorrect. Modified: branches/ntvdm/subsystems/ntvdm/vga.c Modified: branches/ntvdm/subsystems/ntvdm/vga.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/subsystems/ntvdm/vga.c?re…
============================================================================== --- branches/ntvdm/subsystems/ntvdm/vga.c [iso-8859-1] (original) +++ branches/ntvdm/subsystems/ntvdm/vga.c [iso-8859-1] Tue Aug 13 11:57:10 2013 @@ -20,38 +20,70 @@ static CONST COLORREF VgaDefaultPalette[VGA_MAX_COLORS] = { - 0x000000, 0x0000AA, 0x00AA00, 0x00AAAA, 0xAA0000, 0xAA00AA, 0xAA5500, 0xAAAAAA, - 0x555555, 0x5555FF, 0x55FF55, 0x55FFFF, 0xFF5555, 0xFF55FF, 0xFFFF55, 0xFFFFFF, - 0x000000, 0x101010, 0x202020, 0x353535, 0x454545, 0x555555, 0x656565, 0x757575, - 0x8A8A8A, 0x9A9A9A, 0xAAAAAA, 0xBABABA, 0xCACACA, 0xDFDFDF, 0xEFEFEF, 0xFFFFFF, - 0x0000FF, 0x4100FF, 0x8200FF, 0xBE00FF, 0xFF00FF, 0xFF00BE, 0xFF0082, 0xFF0041, - 0xFF0000, 0xFF4100, 0xFF8200, 0xFFBE00, 0xFFFF00, 0xBEFF00, 0x82FF00, 0x41FF00, - 0x00FF00, 0x00FF41, 0x00FF82, 0x00FFBE, 0x00FFFF, 0x00BEFF, 0x0082FF, 0x0041FF, - 0x8282FF, 0x9E82FF, 0xBE82FF, 0xDF82FF, 0xFF82FF, 0xFF82DF, 0xFF82BE, 0xFF829E, - 0xFF8282, 0xFF9E82, 0xFFBE82, 0xFFDF82, 0xFFFF82, 0xDFFF82, 0xBEFF82, 0x9EFF82, - 0x82FF82, 0x82FF9E, 0x82FFBE, 0x82FFDF, 0x82FFFF, 0x82DFFF, 0x82BEFF, 0x829EFF, - 0xBABAFF, 0xCABAFF, 0xDFBAFF, 0xEFBAFF, 0xFFBAFF, 0xFFBAEF, 0xFFBADF, 0xFFBACA, - 0xFFBABA, 0xFFCABA, 0xFFDFBA, 0xFFEFBA, 0xFFFFBA, 0xEFFFBA, 0xDFFFBA, 0xCAFFBA, - 0xBAFFBA, 0xBAFFCA, 0xBAFFDF, 0xBAFFEF, 0xBAFFFF, 0xBAEFFF, 0xBADFFF, 0xBACAFF, - 0x000071, 0x1C0071, 0x390071, 0x550071, 0x710071, 0x710055, 0x710039, 0x71001C, - 0x710000, 0x711C00, 0x713900, 0x715500, 0x717100, 0x557100, 0x397100, 0x1C7100, - 0x007100, 0x00711C, 0x007139, 0x007155, 0x007171, 0x005571, 0x003971, 0x001C71, - 0x393971, 0x453971, 0x553971, 0x613971, 0x713971, 0x713961, 0x713955, 0x713945, - 0x713939, 0x714539, 0x715539, 0x716139, 0x717139, 0x617139, 0x557139, 0x457139, - 0x397139, 0x397145, 0x397155, 0x397161, 0x397171, 0x396171, 0x395571, 0x394571, - 0x515171, 0x595171, 0x615171, 0x695171, 0x715171, 0x715169, 0x715161, 0x715159, - 0x715151, 0x715951, 0x716151, 0x716951, 0x717151, 0x697151, 0x617151, 0x597151, - 0x517151, 0x517159, 0x517161, 0x517169, 0x517171, 0x516971, 0x516171, 0x515971, - 0x000041, 0x100041, 0x200041, 0x310041, 0x410041, 0x410031, 0x410020, 0x410010, - 0x410000, 0x411000, 0x412000, 0x413100, 0x414100, 0x314100, 0x204100, 0x104100, - 0x004100, 0x004110, 0x004120, 0x004131, 0x004141, 0x003141, 0x002041, 0x001041, - 0x202041, 0x282041, 0x312041, 0x392041, 0x412041, 0x412039, 0x412031, 0x412028, - 0x412020, 0x412820, 0x413120, 0x413920, 0x414120, 0x394120, 0x314120, 0x284120, - 0x204120, 0x204128, 0x204131, 0x204139, 0x204141, 0x203941, 0x203141, 0x202841, - 0x2D2D41, 0x312D41, 0x352D41, 0x3D2D41, 0x412D41, 0x412D3D, 0x412D35, 0x412D31, - 0x412D2D, 0x41312D, 0x41352D, 0x413D2D, 0x41412D, 0x3D412D, 0x35412D, 0x31412D, - 0x2D412D, 0x2D4131, 0x2D4135, 0x2D413D, 0x2D4141, 0x2D3D41, 0x2D3541, 0x2D3141, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 + RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0xAA), RGB(0x00, 0xAA, 0x00), RGB(0x00, 0xAA, 0xAA), + RGB(0xAA, 0x00, 0x00), RGB(0xAA, 0x00, 0xAA), RGB(0xAA, 0x55, 0x00), RGB(0xAA, 0xAA, 0xAA), + RGB(0x55, 0x55, 0x55), RGB(0x55, 0x55, 0xFF), RGB(0x55, 0xFF, 0x55), RGB(0x55, 0xFF, 0xFF), + RGB(0xFF, 0x55, 0x55), RGB(0xFF, 0x55, 0xFF), RGB(0xFF, 0xFF, 0x55), RGB(0xFF, 0xFF, 0xFF), + RGB(0x00, 0x00, 0x00), RGB(0x10, 0x10, 0x10), RGB(0x20, 0x20, 0x20), RGB(0x35, 0x35, 0x35), + RGB(0x45, 0x45, 0x45), RGB(0x55, 0x55, 0x55), RGB(0x65, 0x65, 0x65), RGB(0x75, 0x75, 0x75), + RGB(0x8A, 0x8A, 0x8A), RGB(0x9A, 0x9A, 0x9A), RGB(0xAA, 0xAA, 0xAA), RGB(0xBA, 0xBA, 0xBA), + RGB(0xCA, 0xCA, 0xCA), RGB(0xDF, 0xDF, 0xDF), RGB(0xEF, 0xEF, 0xEF), RGB(0xFF, 0xFF, 0xFF), + RGB(0x00, 0x00, 0xFF), RGB(0x41, 0x00, 0xFF), RGB(0x82, 0x00, 0xFF), RGB(0xBE, 0x00, 0xFF), + RGB(0xFF, 0x00, 0xFF), RGB(0xFF, 0x00, 0xBE), RGB(0xFF, 0x00, 0x82), RGB(0xFF, 0x00, 0x41), + RGB(0xFF, 0x00, 0x00), RGB(0xFF, 0x41, 0x00), RGB(0xFF, 0x82, 0x00), RGB(0xFF, 0xBE, 0x00), + RGB(0xFF, 0xFF, 0x00), RGB(0xBE, 0xFF, 0x00), RGB(0x82, 0xFF, 0x00), RGB(0x41, 0xFF, 0x00), + RGB(0x00, 0xFF, 0x00), RGB(0x00, 0xFF, 0x41), RGB(0x00, 0xFF, 0x82), RGB(0x00, 0xFF, 0xBE), + RGB(0x00, 0xFF, 0xFF), RGB(0x00, 0xBE, 0xFF), RGB(0x00, 0x82, 0xFF), RGB(0x00, 0x41, 0xFF), + RGB(0x82, 0x82, 0xFF), RGB(0x9E, 0x82, 0xFF), RGB(0xBE, 0x82, 0xFF), RGB(0xDF, 0x82, 0xFF), + RGB(0xFF, 0x82, 0xFF), RGB(0xFF, 0x82, 0xDF), RGB(0xFF, 0x82, 0xBE), RGB(0xFF, 0x82, 0x9E), + RGB(0xFF, 0x82, 0x82), RGB(0xFF, 0x9E, 0x82), RGB(0xFF, 0xBE, 0x82), RGB(0xFF, 0xDF, 0x82), + RGB(0xFF, 0xFF, 0x82), RGB(0xDF, 0xFF, 0x82), RGB(0xBE, 0xFF, 0x82), RGB(0x9E, 0xFF, 0x82), + RGB(0x82, 0xFF, 0x82), RGB(0x82, 0xFF, 0x9E), RGB(0x82, 0xFF, 0xBE), RGB(0x82, 0xFF, 0xDF), + RGB(0x82, 0xFF, 0xFF), RGB(0x82, 0xDF, 0xFF), RGB(0x82, 0xBE, 0xFF), RGB(0x82, 0x9E, 0xFF), + RGB(0xBA, 0xBA, 0xFF), RGB(0xCA, 0xBA, 0xFF), RGB(0xDF, 0xBA, 0xFF), RGB(0xEF, 0xBA, 0xFF), + RGB(0xFF, 0xBA, 0xFF), RGB(0xFF, 0xBA, 0xEF), RGB(0xFF, 0xBA, 0xDF), RGB(0xFF, 0xBA, 0xCA), + RGB(0xFF, 0xBA, 0xBA), RGB(0xFF, 0xCA, 0xBA), RGB(0xFF, 0xDF, 0xBA), RGB(0xFF, 0xEF, 0xBA), + RGB(0xFF, 0xFF, 0xBA), RGB(0xEF, 0xFF, 0xBA), RGB(0xDF, 0xFF, 0xBA), RGB(0xCA, 0xFF, 0xBA), + RGB(0xBA, 0xFF, 0xBA), RGB(0xBA, 0xFF, 0xCA), RGB(0xBA, 0xFF, 0xDF), RGB(0xBA, 0xFF, 0xEF), + RGB(0xBA, 0xFF, 0xFF), RGB(0xBA, 0xEF, 0xFF), RGB(0xBA, 0xDF, 0xFF), RGB(0xBA, 0xCA, 0xFF), + RGB(0x00, 0x00, 0x71), RGB(0x1C, 0x00, 0x71), RGB(0x39, 0x00, 0x71), RGB(0x55, 0x00, 0x71), + RGB(0x71, 0x00, 0x71), RGB(0x71, 0x00, 0x55), RGB(0x71, 0x00, 0x39), RGB(0x71, 0x00, 0x1C), + RGB(0x71, 0x00, 0x00), RGB(0x71, 0x1C, 0x00), RGB(0x71, 0x39, 0x00), RGB(0x71, 0x55, 0x00), + RGB(0x71, 0x71, 0x00), RGB(0x55, 0x71, 0x00), RGB(0x39, 0x71, 0x00), RGB(0x1C, 0x71, 0x00), + RGB(0x00, 0x71, 0x00), RGB(0x00, 0x71, 0x1C), RGB(0x00, 0x71, 0x39), RGB(0x00, 0x71, 0x55), + RGB(0x00, 0x71, 0x71), RGB(0x00, 0x55, 0x71), RGB(0x00, 0x39, 0x71), RGB(0x00, 0x1C, 0x71), + RGB(0x39, 0x39, 0x71), RGB(0x45, 0x39, 0x71), RGB(0x55, 0x39, 0x71), RGB(0x61, 0x39, 0x71), + RGB(0x71, 0x39, 0x71), RGB(0x71, 0x39, 0x61), RGB(0x71, 0x39, 0x55), RGB(0x71, 0x39, 0x45), + RGB(0x71, 0x39, 0x39), RGB(0x71, 0x45, 0x39), RGB(0x71, 0x55, 0x39), RGB(0x71, 0x61, 0x39), + RGB(0x71, 0x71, 0x39), RGB(0x61, 0x71, 0x39), RGB(0x55, 0x71, 0x39), RGB(0x45, 0x71, 0x39), + RGB(0x39, 0x71, 0x39), RGB(0x39, 0x71, 0x45), RGB(0x39, 0x71, 0x55), RGB(0x39, 0x71, 0x61), + RGB(0x39, 0x71, 0x71), RGB(0x39, 0x61, 0x71), RGB(0x39, 0x55, 0x71), RGB(0x39, 0x45, 0x71), + RGB(0x51, 0x51, 0x71), RGB(0x59, 0x51, 0x71), RGB(0x61, 0x51, 0x71), RGB(0x69, 0x51, 0x71), + RGB(0x71, 0x51, 0x71), RGB(0x71, 0x51, 0x69), RGB(0x71, 0x51, 0x61), RGB(0x71, 0x51, 0x59), + RGB(0x71, 0x51, 0x51), RGB(0x71, 0x59, 0x51), RGB(0x71, 0x61, 0x51), RGB(0x71, 0x69, 0x51), + RGB(0x71, 0x71, 0x51), RGB(0x69, 0x71, 0x51), RGB(0x61, 0x71, 0x51), RGB(0x59, 0x71, 0x51), + RGB(0x51, 0x71, 0x51), RGB(0x51, 0x71, 0x59), RGB(0x51, 0x71, 0x61), RGB(0x51, 0x71, 0x69), + RGB(0x51, 0x71, 0x71), RGB(0x51, 0x69, 0x71), RGB(0x51, 0x61, 0x71), RGB(0x51, 0x59, 0x71), + RGB(0x00, 0x00, 0x41), RGB(0x10, 0x00, 0x41), RGB(0x20, 0x00, 0x41), RGB(0x31, 0x00, 0x41), + RGB(0x41, 0x00, 0x41), RGB(0x41, 0x00, 0x31), RGB(0x41, 0x00, 0x20), RGB(0x41, 0x00, 0x10), + RGB(0x41, 0x00, 0x00), RGB(0x41, 0x10, 0x00), RGB(0x41, 0x20, 0x00), RGB(0x41, 0x31, 0x00), + RGB(0x41, 0x41, 0x00), RGB(0x31, 0x41, 0x00), RGB(0x20, 0x41, 0x00), RGB(0x10, 0x41, 0x00), + RGB(0x00, 0x41, 0x00), RGB(0x00, 0x41, 0x10), RGB(0x00, 0x41, 0x20), RGB(0x00, 0x41, 0x31), + RGB(0x00, 0x41, 0x41), RGB(0x00, 0x31, 0x41), RGB(0x00, 0x20, 0x41), RGB(0x00, 0x10, 0x41), + RGB(0x20, 0x20, 0x41), RGB(0x28, 0x20, 0x41), RGB(0x31, 0x20, 0x41), RGB(0x39, 0x20, 0x41), + RGB(0x41, 0x20, 0x41), RGB(0x41, 0x20, 0x39), RGB(0x41, 0x20, 0x31), RGB(0x41, 0x20, 0x28), + RGB(0x41, 0x20, 0x20), RGB(0x41, 0x28, 0x20), RGB(0x41, 0x31, 0x20), RGB(0x41, 0x39, 0x20), + RGB(0x41, 0x41, 0x20), RGB(0x39, 0x41, 0x20), RGB(0x31, 0x41, 0x20), RGB(0x28, 0x41, 0x20), + RGB(0x20, 0x41, 0x20), RGB(0x20, 0x41, 0x28), RGB(0x20, 0x41, 0x31), RGB(0x20, 0x41, 0x39), + RGB(0x20, 0x41, 0x41), RGB(0x20, 0x39, 0x41), RGB(0x20, 0x31, 0x41), RGB(0x20, 0x28, 0x41), + RGB(0x2D, 0x2D, 0x41), RGB(0x31, 0x2D, 0x41), RGB(0x35, 0x2D, 0x41), RGB(0x3D, 0x2D, 0x41), + RGB(0x41, 0x2D, 0x41), RGB(0x41, 0x2D, 0x3D), RGB(0x41, 0x2D, 0x35), RGB(0x41, 0x2D, 0x31), + RGB(0x41, 0x2D, 0x2D), RGB(0x41, 0x31, 0x2D), RGB(0x41, 0x35, 0x2D), RGB(0x41, 0x3D, 0x2D), + RGB(0x41, 0x41, 0x2D), RGB(0x3D, 0x41, 0x2D), RGB(0x35, 0x41, 0x2D), RGB(0x31, 0x41, 0x2D), + RGB(0x2D, 0x41, 0x2D), RGB(0x2D, 0x41, 0x31), RGB(0x2D, 0x41, 0x35), RGB(0x2D, 0x41, 0x3D), + RGB(0x2D, 0x41, 0x41), RGB(0x2D, 0x3D, 0x41), RGB(0x2D, 0x35, 0x41), RGB(0x2D, 0x31, 0x41), + RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0x00), + RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0x00) }; static BYTE VgaMemory[VGA_NUM_BANKS * VGA_BANK_SIZE];
11 years, 4 months
1
0
0
0
[hbelusca] 59720: [NTVDM] - Simplify code (flags resetting) - Fix console palette initialization (use version 3) and palette change.
by hbelusca@svn.reactos.org
Author: hbelusca Date: Tue Aug 13 11:09:10 2013 New Revision: 59720 URL:
http://svn.reactos.org/svn/reactos?rev=59720&view=rev
Log: [NTVDM] - Simplify code (flags resetting) - Fix console palette initialization (use version 3) and palette change. Modified: branches/ntvdm/subsystems/ntvdm/vga.c Modified: branches/ntvdm/subsystems/ntvdm/vga.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/subsystems/ntvdm/vga.c?re…
============================================================================== --- branches/ntvdm/subsystems/ntvdm/vga.c [iso-8859-1] (original) +++ branches/ntvdm/subsystems/ntvdm/vga.c [iso-8859-1] Tue Aug 13 11:09:10 2013 @@ -15,7 +15,7 @@ /* PRIVATE VARIABLES **********************************************************/ -static CONST DWORD MemoryBase[] = { 0xA0000, 0xA0000, 0xB0000, 0xB8000 }; +static CONST DWORD MemoryBase[] = { 0xA0000, 0xA0000, 0xB0000, 0xB8000 }; static CONST DWORD MemoryLimit[] = { 0xAFFFF, 0xAFFFF, 0xB7FFF, 0xBFFFF }; static CONST COLORREF VgaDefaultPalette[VGA_MAX_COLORS] = @@ -318,7 +318,7 @@ /* Update the palette entry */ SetPaletteEntries(PaletteHandle, PaletteIndex, 1, &Entry); - /* Set the palette changed flag */ + /* Set the palette change flag */ PaletteChanged = TRUE; /* Update the index */ @@ -340,7 +340,7 @@ CONSOLE_GRAPHICS_BUFFER_INFO GraphicsBufferInfo; BYTE BitmapInfoBuffer[VGA_BITMAP_INFO_SIZE]; LPBITMAPINFO BitmapInfo = (LPBITMAPINFO)BitmapInfoBuffer; - LPWORD PaletteIndex = (LPWORD)(BitmapInfoBuffer + sizeof(BITMAPINFOHEADER)); + LPWORD PaletteIndex = (LPWORD)(BitmapInfo->bmiColors); /* Fill the bitmap info header */ ZeroMemory(&BitmapInfo->bmiHeader, sizeof(BITMAPINFOHEADER)); @@ -350,7 +350,7 @@ BitmapInfo->bmiHeader.biBitCount = 8; BitmapInfo->bmiHeader.biPlanes = 1; BitmapInfo->bmiHeader.biCompression = BI_RGB; - BitmapInfo->bmiHeader.biSizeImage = Resolution->X * Resolution->Y; + BitmapInfo->bmiHeader.biSizeImage = Resolution->X * Resolution->Y /* * 1 == biBitCount / 8 */; /* Fill the palette data */ for (i = 0; i < (VGA_PALETTE_SIZE / 3); i++) PaletteIndex[i] = (WORD)i; @@ -378,6 +378,14 @@ /* Set the active buffer */ SetConsoleActiveScreenBuffer(GraphicsConsoleBuffer); + /* Set the graphics mode palette */ + SetConsolePalette(GraphicsConsoleBuffer, + PaletteHandle, + SYSPAL_NOSTATIC256); + + /* Clear the text mode flag */ + TextMode = FALSE; + return TRUE; } @@ -413,6 +421,9 @@ return FALSE; } + /* Set the text mode flag */ + TextMode = TRUE; + return TRUE; } @@ -423,9 +434,12 @@ ConsoleFramebuffer = NULL; } -static VOID VgaUpdateMode(VOID) +static VOID VgaChangeMode(VOID) { COORD Resolution = VgaGetDisplayResolution(); + + /* Reset the mode change flag */ + // ModeChanged = FALSE; if (!TextMode) { @@ -443,30 +457,22 @@ { /* Enter new text mode */ if (!VgaEnterTextMode(&Resolution)) return; - - /* Set the text mode flag */ - TextMode = TRUE; } else { /* Enter 8-bit graphics mode */ if (!VgaEnterGraphicsMode(&Resolution)) return; - - /* Clear the text mode flag */ - TextMode = FALSE; - - /* Set the palette */ - SetConsolePalette(GraphicsConsoleBuffer, - PaletteHandle, - SYSPAL_NOSTATIC256); - } - - /* Perform a full update */ + } + + /* Trigger a full update of the screen */ NeedsUpdate = TRUE; UpdateRectangle.Left = 0; UpdateRectangle.Top = 0; UpdateRectangle.Right = Resolution.X; UpdateRectangle.Bottom = Resolution.Y; + + /* Reset the mode change flag */ + ModeChanged = FALSE; } static VOID VgaUpdateFramebuffer(VOID) @@ -675,6 +681,9 @@ /* Update the physical cursor */ SetConsoleCursorInfo(TextConsoleBuffer, &CursorInfo); SetConsoleCursorPosition(TextConsoleBuffer, Position); + + /* Reset the cursor move flag */ + CursorMoved = FALSE; } /* PUBLIC FUNCTIONS ***********************************************************/ @@ -735,34 +744,29 @@ DPRINT("VgaRefreshDisplay\n"); - if (ModeChanged) - { - /* Change the display mode */ - VgaUpdateMode(); - - /* Reset the mode change flag */ - ModeChanged = FALSE; - } - - if (CursorMoved) - { - /* Change the text cursor location */ - VgaUpdateTextCursor(); - - /* Reset the cursor move flag */ - CursorMoved = FALSE; - } + /* Change the display mode */ + if (ModeChanged) VgaChangeMode(); + + /* Change the text cursor location */ + if (CursorMoved) VgaUpdateTextCursor(); if (PaletteChanged) { if (VgaGcRegisters[VGA_GC_MISC_REG] & VGA_GC_MISC_NOALPHA) { /* Set the graphics mode palette */ - SetConsolePalette(GraphicsConsoleBuffer, - PaletteHandle, - SYSPAL_NOSTATIC256); - } - + //SetConsolePalette(GraphicsConsoleBuffer, + // PaletteHandle, + // SYSPAL_NOSTATIC256); + + /* Trigger a full update of the screen */ + NeedsUpdate = TRUE; + UpdateRectangle.Left = 0; + UpdateRectangle.Top = 0; + UpdateRectangle.Right = Resolution.X; + UpdateRectangle.Bottom = Resolution.Y; + } + PaletteChanged = FALSE; } @@ -1122,8 +1126,7 @@ /* Set the default video mode */ BiosSetVideoMode(BIOS_DEFAULT_VIDEO_MODE); - VgaUpdateMode(); - ModeChanged = FALSE; + VgaChangeMode(); /* Get the data */ Resolution = VgaGetDisplayResolution(); @@ -1168,7 +1171,7 @@ if (Palette == NULL) return FALSE; /* Initialize the palette */ - Palette->palVersion = 0x0100; + Palette->palVersion = 0x0300; Palette->palNumEntries = VGA_MAX_COLORS; /* Copy the colors of the default palette to the DAC and console palette */ @@ -1178,6 +1181,7 @@ Palette->palPalEntry[i].peRed = GetRValue(VgaDefaultPalette[i]); Palette->palPalEntry[i].peGreen = GetGValue(VgaDefaultPalette[i]); Palette->palPalEntry[i].peBlue = GetBValue(VgaDefaultPalette[i]); + Palette->palPalEntry[i].peFlags = 0; /* Set the DAC registers */ VgaDacRegisters[i * 3] = VGA_COLOR_TO_DAC(GetRValue(VgaDefaultPalette[i])); @@ -1191,8 +1195,8 @@ /* Free the palette */ HeapFree(GetProcessHeap(), 0, Palette); - /* Return success */ - return TRUE; + /* Return success if the palette was successfully created */ + return (PaletteHandle ? TRUE : FALSE); } /* EOF */
11 years, 4 months
1
0
0
0
[hbelusca] 59719: Formatting fix only.
by hbelusca@svn.reactos.org
Author: hbelusca Date: Tue Aug 13 11:06:02 2013 New Revision: 59719 URL:
http://svn.reactos.org/svn/reactos?rev=59719&view=rev
Log: Formatting fix only. Modified: branches/ntvdm/subsystems/ntvdm/bios.c Modified: branches/ntvdm/subsystems/ntvdm/bios.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/subsystems/ntvdm/bios.c?r…
============================================================================== --- branches/ntvdm/subsystems/ntvdm/bios.c [iso-8859-1] (original) +++ branches/ntvdm/subsystems/ntvdm/bios.c [iso-8859-1] Tue Aug 13 11:06:02 2013 @@ -716,7 +716,7 @@ }; /* Call the internal function */ - BiosScrollWindow((HIBYTE(Eax)== 0x06) + BiosScrollWindow((HIBYTE(Eax) == 0x06) ? SCROLL_DIRECTION_UP : SCROLL_DIRECTION_DOWN, LOBYTE(Eax), Rectangle,
11 years, 4 months
1
0
0
0
[ion] 59718: [NTOSKRNL]: Add and fix more glue code for EMS/Headless support. The SAC driver is at least correctly able to initialize now when /redirect is enabled. [SACMSG]: SAC wants the message ...
by ion@svn.reactos.org
Author: ion Date: Tue Aug 13 03:18:03 2013 New Revision: 59718 URL:
http://svn.reactos.org/svn/reactos?rev=59718&view=rev
Log: [NTOSKRNL]: Add and fix more glue code for EMS/Headless support. The SAC driver is at least correctly able to initialize now when /redirect is enabled. [SACMSG]: SAC wants the message tables as Unicode, but the CMakeList has an obscure comment that Unicode MC needs "testing". Well, I'll be the first to test it and confirm it works -- implement a UNICODE_SOURCE_REALLY to get Unicode-mc. [SACMSG]: Add a few more constants. [SACDRV]: Implement InitializeMachineInformation. [SACDRV]: Fix countless bugs. Now the entire driver initializes up to UTF8EncodeAndSend, which is unimplemented. We're almost there! Modified: trunk/reactos/drivers/sac/driver/data.c trunk/reactos/drivers/sac/driver/memory.c trunk/reactos/drivers/sac/driver/sacdrv.h trunk/reactos/drivers/sac/driver/util.c trunk/reactos/include/reactos/mc/CMakeLists.txt trunk/reactos/include/reactos/mc/sacmsg.mc trunk/reactos/ntoskrnl/ex/hdlsterm.c trunk/reactos/ntoskrnl/include/internal/hdl.h Modified: trunk/reactos/drivers/sac/driver/data.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/sac/driver/data.c?…
============================================================================== --- trunk/reactos/drivers/sac/driver/data.c [iso-8859-1] (original) +++ trunk/reactos/drivers/sac/driver/data.c [iso-8859-1] Tue Aug 13 03:18:03 2013 @@ -77,6 +77,8 @@ else { SAC_DBG(SAC_DBG_INIT, "SAC CreateDeviceSecurityDescriptor : Unable to create Raw ACL, error : %x\n", Status); + /* FIXME: Temporary hack */ + Status = STATUS_SUCCESS; goto CleanupPath; } @@ -377,7 +379,7 @@ SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering.\n"); /* If we already did this, bail out */ - if (!GlobalDataInitialized) goto SuccessExit; + if (GlobalDataInitialized) goto SuccessExit; /* Setup the symbolic link for Win32 support */ RtlInitUnicodeString(&LinkName, L"\\DosDevices\\SAC"); Modified: trunk/reactos/drivers/sac/driver/memory.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/sac/driver/memory.…
============================================================================== --- trunk/reactos/drivers/sac/driver/memory.c [iso-8859-1] (original) +++ trunk/reactos/drivers/sac/driver/memory.c [iso-8859-1] Tue Aug 13 03:18:03 2013 @@ -93,6 +93,11 @@ IN PCHAR File, IN ULONG Line) { + PVOID p; + p = ExAllocatePoolWithTag(NonPagedPool, PoolSize, Tag); + SAC_DBG(SAC_DBG_MM, "Returning block 0x%X.\n", p); + return p; +#if 0 KIRQL OldIrql; PSAC_MEMORY_LIST GlobalDescriptor, NewDescriptor; PSAC_MEMORY_ENTRY LocalDescriptor, NextDescriptor; @@ -102,7 +107,7 @@ SAC_DBG(SAC_DBG_MM, "Entering.\n"); /* Acquire the memory allocation lock and align the size request */ - KeAcquireSpinLock(&MemoryLock, &OldIrql);; + KeAcquireSpinLock(&MemoryLock, &OldIrql); PoolSize = ALIGN_UP(PoolSize, ULONGLONG); #if _USE_SAC_HEAP_ALLOCATOR_ @@ -220,12 +225,14 @@ Buffer = LocalDescriptor + 1; RtlZeroMemory(Buffer, PoolSize); return Buffer; +#endif } VOID NTAPI MyFreePool(IN PVOID *Block) { +#if 0 PSAC_MEMORY_ENTRY NextDescriptor; PSAC_MEMORY_ENTRY ThisDescriptor, FoundDescriptor; PSAC_MEMORY_ENTRY LocalDescriptor = (PVOID)((ULONG_PTR)(*Block) - sizeof(SAC_MEMORY_ENTRY)); @@ -323,10 +330,10 @@ LocalSize = GlobalSize = 0; ThisDescriptor = (PVOID)LocalSize; NextDescriptor = (PVOID)GlobalSize; - GlobalDescriptor = (PVOID) ThisDescriptor; + GlobalDescriptor = (PVOID)ThisDescriptor; FoundDescriptor = (PVOID)GlobalDescriptor; - GlobalDescriptor = (PVOID) NextDescriptor; - NextDescriptor = (PVOID) FoundDescriptor; + GlobalDescriptor = (PVOID)NextDescriptor; + NextDescriptor = (PVOID)FoundDescriptor; /* Use the NT pool allocator*/ ExFreePool(LocalDescriptor); @@ -334,6 +341,8 @@ /* Release the lock, delete the address, and return */ KeReleaseSpinLock(&MemoryLock, OldIrql); +#endif + ExFreePool(*Block); *Block = NULL; SAC_DBG(SAC_DBG_MM, "exiting.\n"); } Modified: trunk/reactos/drivers/sac/driver/sacdrv.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/sac/driver/sacdrv.…
============================================================================== --- trunk/reactos/drivers/sac/driver/sacdrv.h [iso-8859-1] (original) +++ trunk/reactos/drivers/sac/driver/sacdrv.h [iso-8859-1] Tue Aug 13 03:18:03 2013 @@ -35,6 +35,7 @@ #define SAC_DBG_UTIL 0x02 #define SAC_DBG_INIT 0x04 #define SAC_DBG_MM 0x1000 +#define SAC_DBG_MACHINE 0x2000 #define SAC_DBG(x, ...) \ if (SACDebug & x) \ { \ Modified: trunk/reactos/drivers/sac/driver/util.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/sac/driver/util.c?…
============================================================================== --- trunk/reactos/drivers/sac/driver/util.c [iso-8859-1] (original) +++ trunk/reactos/drivers/sac/driver/util.c [iso-8859-1] Tue Aug 13 03:18:03 2013 @@ -13,7 +13,7 @@ /* GLOBALS *******************************************************************/ PCHAR Utf8ConversionBuffer; -ULONG Utf8ConversionBufferSize; +ULONG Utf8ConversionBufferSize = PAGE_SIZE; PSAC_MACHINE_INFO MachineInformation; PVOID RequestSacCmdEventObjectBody; PKEVENT RequestSacCmdEventWaitObjectBody; @@ -122,7 +122,7 @@ NTAPI PreloadGlobalMessageTable(IN PVOID ImageBase) { - NTSTATUS Status; + NTSTATUS Status, Status2; ULONG MessageId, TotalLength, TextSize, i; PWCHAR StringBuffer; PMESSAGE_RESOURCE_ENTRY MessageEntry; @@ -130,6 +130,7 @@ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC PreloadGlobalMessageTable: Entering.\n"); /* Nothing to do if we already have a table */ + Status = STATUS_SUCCESS; if (GlobalMessageTable) goto Exit; /* Loop through up to 200 messages */ @@ -137,12 +138,12 @@ for (MessageId = 1; MessageId != SAC_MAX_MESSAGES; MessageId++) { /* Find this message ID in the string table*/ - Status = RtlFindMessage(ImageBase, - 11, - LANG_NEUTRAL, - MessageId, - &MessageEntry); - if (NT_SUCCESS(Status)) + Status2 = RtlFindMessage(ImageBase, + 11, + LANG_NEUTRAL, + MessageId, + &MessageEntry); + if (NT_SUCCESS(Status2)) { /* Make sure it's Unicode */ ASSERT(MessageEntry->Flags & MESSAGE_RESOURCE_UNICODE); @@ -182,12 +183,12 @@ for (i = 0, MessageId = 1; MessageId != SAC_MAX_MESSAGES; MessageId++) { /* Make sure the message is still there...! */ - Status = RtlFindMessage(ImageBase, - 11, - LANG_NEUTRAL, - MessageId, - &MessageEntry); - if (NT_SUCCESS(Status)) + Status2 = RtlFindMessage(ImageBase, + 11, + LANG_NEUTRAL, + MessageId, + &MessageEntry); + if (NT_SUCCESS(Status2)) { /* Write the entry in the message table*/ GlobalMessageTable[i].Index = MessageId; @@ -202,7 +203,7 @@ ASSERT((ULONG)(wcslen(StringBuffer)*sizeof(WCHAR)) <= TextSize); /* Move to the next buffer space */ - StringBuffer += TextSize; + StringBuffer += (TextSize / sizeof(WCHAR)); /* Move to the next entry, make sure the status is full success */ i++; @@ -227,135 +228,6 @@ SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC TearDownGlobalMessageTable: Exiting\n"); return STATUS_SUCCESS; -} - -NTSTATUS -NTAPI -TranslateMachineInformationXML(IN PWCHAR *Buffer, - IN PWCHAR ExtraData) -{ - NTSTATUS Status; - ULONG Size; - PWCHAR p; - CHECK_PARAMETER1(Buffer); - - Status = STATUS_SUCCESS; - Size = wcslen(L"<machine-info>\r\n"); - - if (MachineInformation->MachineName) - { - Size += wcslen(MachineInformation->MachineName); - Size += wcslen(L"<name>%s</name>\r\n"); - } - - if (MachineInformation->MachineGuid) - { - Size += wcslen(MachineInformation->MachineGuid); - Size += wcslen(L"<guid>%s</guid>\r\n"); - } - - if (MachineInformation->ProcessorArchitecture) - { - Size += wcslen(MachineInformation->ProcessorArchitecture); - Size += wcslen(L"<processor-architecture>%s</processor-architecture>\r\n"); - } - - if (MachineInformation->MajorVersion) - { - Size += wcslen(MachineInformation->MajorVersion); - Size += wcslen(L"<os-version>%s</os-version>\r\n"); - } - - if (MachineInformation->BuildNumber) - { - Size += wcslen(MachineInformation->BuildNumber); - Size += wcslen(L"<os-build-number>%s</os-build-number>\r\n"); - } - - if (MachineInformation->ProductType) - { - Size += wcslen(MachineInformation->ProductType); - Size += wcslen(L"<os-product>%s</os-product>\r\n"); - } - - if (MachineInformation->ServicePack) - { - Size += wcslen(MachineInformation->ServicePack); - Size += wcslen(L"<os-service-pack>%s</os-service-pack>\r\n"); - } - - if (ExtraData) Size += wcslen(ExtraData); - - Size += wcslen(L"</machine-info>\r\n"); - - p = (PWCHAR)SacAllocatePool((Size + sizeof(ANSI_NULL)) * sizeof(WCHAR), GLOBAL_BLOCK_TAG); - - *Buffer = p; - if (!p) return STATUS_NO_MEMORY; - - Size = wcslen(L"<machine-info>\r\n"); - wcscpy(p, L"<machine-info>\r\n"); - - p += Size; - - if (MachineInformation->MachineName) - { - p += swprintf(p, L"<name>%s</name>\r\n", MachineInformation->MachineName); - } - - if (MachineInformation->MachineGuid) - { - p += swprintf(p, L"<guid>%s</guid>\r\n", MachineInformation->MachineGuid); - } - - if (MachineInformation->ProcessorArchitecture) - { - p += swprintf(p, L"<processor-architecture>%s</processor-architecture>\r\n", MachineInformation->ProcessorArchitecture); - } - - if (MachineInformation->MajorVersion) - { - p += swprintf(p, L"<os-version>%s</os-version>\r\n", MachineInformation->MajorVersion); - } - - if (MachineInformation->BuildNumber) - { - p += swprintf(p, L"<os-build-number>%s</os-build-number>\r\n", MachineInformation->BuildNumber); - } - - if (MachineInformation->ProductType) - { - p += swprintf(p, L"<os-product>%s</os-product>\r\n", MachineInformation->ProductType); - } - - if (MachineInformation->ServicePack) - { - p += swprintf(p, L"<os-service-pack>%s</os-service-pack>\r\n", MachineInformation->ServicePack); - } - - if (ExtraData) - { - Size = wcslen(ExtraData); - wcscpy(p, ExtraData); - p += Size; - } - - wcscpy(p, L"</machine-info>\r\n"); - ASSERT((((ULONG) wcslen(*Buffer) + 1) * sizeof(WCHAR)) <= Size); - return Status; -} - -VOID -NTAPI -InitializeMachineInformation(VOID) -{ - SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC Initialize Machine Information : Entering.\n"); - - /* FIXME: TODO */ - MachineInformation = NULL; - ASSERT(FALSE); - - SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC Initialize Machine Information : Exiting with error.\n"); } NTSTATUS @@ -479,7 +351,7 @@ NTSTATUS NTAPI -CopyRegistryValueData(IN PULONG* Buffer, +CopyRegistryValueData(IN PVOID* Buffer, IN PKEY_VALUE_PARTIAL_INFORMATION PartialInfo) { NTSTATUS Status = STATUS_SUCCESS; @@ -502,6 +374,446 @@ /* Return the result */ return Status; +} + +NTSTATUS +NTAPI +TranslateMachineInformationXML(IN PWCHAR *Buffer, + IN PWCHAR ExtraData) +{ + NTSTATUS Status; + ULONG Size; + PWCHAR p; + CHECK_PARAMETER1(Buffer); + + /* Start by believing the world is beautiful */ + Status = STATUS_SUCCESS; + + /* First, the header */ + Size = wcslen(L"<machine-info>\r\n"); + + /* Do we have a machine name? */ + if (MachineInformation->MachineName) + { + /* Go and add it in */ + Size += wcslen(MachineInformation->MachineName); + Size += wcslen(L"<name>%s</name>\r\n"); + } + + /* Do we have a GUID? */ + if (MachineInformation->MachineGuid) + { + /* Go and add it in */ + Size += wcslen(MachineInformation->MachineGuid); + Size += wcslen(L"<guid>%s</guid>\r\n"); + } + + /* Do we know the processor? */ + if (MachineInformation->ProcessorArchitecture) + { + /* Go and add it in */ + Size += wcslen(MachineInformation->ProcessorArchitecture); + Size += wcslen(L"<processor-architecture>%s</processor-architecture>\r\n"); + } + + /* Do we have the version? */ + if (MachineInformation->MajorVersion) + { + /* Go and add it in */ + Size += wcslen(MachineInformation->MajorVersion); + Size += wcslen(L"<os-version>%s</os-version>\r\n"); + } + + /* Do we have the build? */ + if (MachineInformation->BuildNumber) + { + /* Go and add it in */ + Size += wcslen(MachineInformation->BuildNumber); + Size += wcslen(L"<os-build-number>%s</os-build-number>\r\n"); + } + + /* Do we have the product type? */ + if (MachineInformation->ProductType) + { + /* Go and add it in */ + Size += wcslen(MachineInformation->ProductType); + Size += wcslen(L"<os-product>%s</os-product>\r\n"); + } + + /* Do we have a service pack? */ + if (MachineInformation->ServicePack) + { + /* Go and add it in */ + Size += wcslen(MachineInformation->ServicePack); + Size += wcslen(L"<os-service-pack>%s</os-service-pack>\r\n"); + } + + /* Anything else we need to know? Add it in too */ + if (ExtraData) Size += wcslen(ExtraData); + + /* Finally, add the footer */ + Size += wcslen(L"</machine-info>\r\n"); + + /* Convert to bytes and add a NULL */ + Size += sizeof(ANSI_NULL); + Size *= sizeof(WCHAR); + + /* Allocate space for the buffer */ + p = SacAllocatePool(Size, GLOBAL_BLOCK_TAG); + *Buffer = p; + if (!p) return STATUS_NO_MEMORY; + + wcscpy(p, L"<machine-info>\r\n"); + p += wcslen(L"<machine-info>\r\n");; + + if (MachineInformation->MachineName) + { + p += swprintf(p, + L"<name>%s</name>\r\n", + MachineInformation->MachineName); + } + + if (MachineInformation->MachineGuid) + { + p += swprintf(p, + L"<guid>%s</guid>\r\n", + MachineInformation->MachineGuid); + } + + if (MachineInformation->ProcessorArchitecture) + { + p += swprintf(p, + L"<processor-architecture>%s</processor-architecture>\r\n", + MachineInformation->ProcessorArchitecture); + } + + if (MachineInformation->MajorVersion) + { + p += swprintf(p, + L"<os-version>%s</os-version>\r\n", + MachineInformation->MajorVersion); + } + + if (MachineInformation->BuildNumber) + { + p += swprintf(p, + L"<os-build-number>%s</os-build-number>\r\n", + MachineInformation->BuildNumber); + } + + if (MachineInformation->ProductType) + { + p += swprintf(p, + L"<os-product>%s</os-product>\r\n", + MachineInformation->ProductType); + } + + if (MachineInformation->ServicePack) + { + p += swprintf(p, + L"<os-service-pack>%s</os-service-pack>\r\n", + MachineInformation->ServicePack); + } + + if (ExtraData) + { + wcscpy(p, ExtraData); + p += wcslen(ExtraData); + } + + wcscpy(p, L"</machine-info>\r\n"); + SAC_DBG(SAC_DBG_ENTRY_EXIT, "MachineInformation: %S\n", *Buffer); + ASSERT((((ULONG)wcslen(*Buffer) + 1) * sizeof(WCHAR)) <= Size); + return Status; +} + +VOID +NTAPI +InitializeMachineInformation(VOID) +{ + NTSTATUS Status; + PWCHAR GuidString, MajorVersion, ServicePack, BuildNumber, MessageBuffer; + PWCHAR ProductType; + ULONG SuiteTypeMessage; + BOOLEAN SetupInProgress = FALSE; + GUID SystemGuid; + ULONG RealSize, Size, OutputSize; + PKEY_VALUE_PARTIAL_INFORMATION PartialInfo; + RTL_OSVERSIONINFOEXW VersionInformation; + SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC Initialize Machine Information : Entering.\n"); + + /* Don't do anything if we already quried this */ + if (MachineInformation) + { + SAC_DBG(SAC_DBG_MACHINE, "SAC Initialize Machine Information:: MachineInformationBuffer already initialzied.\n"); + return; + } + + /* Allocate the machine information */ + MachineInformation = SacAllocatePool(sizeof(*MachineInformation), + GLOBAL_BLOCK_TAG); + if (!MachineInformation) + { + goto Fail; + } + + /* Zero it out for now */ + RtlZeroMemory(MachineInformation, sizeof(*MachineInformation)); + + /* Query OS version */ + RtlZeroMemory(&VersionInformation, sizeof(VersionInformation)); + VersionInformation.dwOSVersionInfoSize = sizeof(VersionInformation); + Status = RtlGetVersion((PRTL_OSVERSIONINFOW)&VersionInformation); + if (!NT_SUCCESS(Status)) + { + SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Exiting (2).\n"); + goto Fail; + } + + /* Check if setup is in progress */ + Status = GetRegistryValueBuffer(L"\\Registry\\Machine\\System\\Setup", + L"SystemSetupInProgress", + &PartialInfo); + if (NT_SUCCESS(Status)) + { + /* The key is there, is the value set? */ + if (*(PULONG)PartialInfo->Data) SetupInProgress = TRUE; + SacFreePool(PartialInfo); + if (SetupInProgress) + { + /* Yes, so we'll use a special hostname to identify this */ + MessageBuffer = GetMessage(SAC_UNINITIALIZED_MSG); + Size = wcslen(MessageBuffer); + ASSERT(Size > 0); + RealSize = Size * sizeof(WCHAR) + sizeof(UNICODE_NULL); + + /* Make room for it and copy it in there */ + MachineInformation->MachineName = SacAllocatePool(RealSize, + GLOBAL_BLOCK_TAG); + if (MachineInformation->MachineName) + { + wcscpy(MachineInformation->MachineName, MessageBuffer); + } + } + } + + /* If we are not in setup mode, or if we failed to check... */ + if (!SetupInProgress) + { + /* Query the computer name */ + Status = GetRegistryValueBuffer(L"\\Registry\\Machine\\System\\" + L"CurrentControlSet\\Control\\" + L"ComputerName\\ComputerName", + L"ComputerName", + &PartialInfo); + if (!NT_SUCCESS(Status)) + { + /* It's not critical, but we won't have it */ + SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Failed to get machine name.\n"); + } + else + { + /* We have the name, copy it from the registry */ + Status = CopyRegistryValueData((PVOID*)&MachineInformation-> + MachineName, + PartialInfo); + SacFreePool(PartialInfo); + if (!NT_SUCCESS(Status)) + { + SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Exiting (20).\n"); + goto Fail; + } + } + } + + /* Next step, try to get the machine GUID */ + RtlZeroMemory(&SystemGuid, sizeof(SystemGuid)); + OutputSize = sizeof(SystemGuid); + Status = HeadlessDispatch(HeadlessCmdQueryGUID, + NULL, + 0, + &SystemGuid, + &OutputSize); + if (!NT_SUCCESS(Status)) + { + SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Failed to get Machine GUID.\n"); + } + else + { + /* We have it -- make room for it */ + GuidString = SacAllocatePool(0x50, GLOBAL_BLOCK_TAG); + if (!GuidString) + { + SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Exiting (31).\n"); + goto Fail; + } + + /* Build the string with the GUID in it, and save the ppointer to it */ + swprintf(GuidString, + L"%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", + SystemGuid.Data1, + SystemGuid.Data2, + SystemGuid.Data3, + SystemGuid.Data4[0], + SystemGuid.Data4[1], + SystemGuid.Data4[2], + SystemGuid.Data4[3], + SystemGuid.Data4[4], + SystemGuid.Data4[5], + SystemGuid.Data4[6], + SystemGuid.Data4[7]); + MachineInformation->MachineGuid = GuidString; + } + + /* Next, query the processor architecture */ + Status = GetRegistryValueBuffer(L"\\Registry\\Machine\\System\\" + L"CurrentControlSet\\Control\\" + L"Session Manager\\Environment", + L"PROCESSOR_ARCHITECTURE", + &PartialInfo); + if (!NT_SUCCESS(Status)) + { + /* It's not critical, but we won't have it */ + SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Exiting (30).\n"); + } + else + { + /* We have it! Copy the value from the registry */ + Status = CopyRegistryValueData((PVOID*)&MachineInformation-> + ProcessorArchitecture, + PartialInfo); + SacFreePool(PartialInfo); + if (!NT_SUCCESS(Status)) + { + SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Exiting (30).\n"); + goto Fail; + } + } + + /* Now allocate a buffer for the OS version number */ + MajorVersion = SacAllocatePool(0x18, GLOBAL_BLOCK_TAG); + if (!MajorVersion) + { + SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Exiting (50).\n"); + goto Fail; + } + + /* Build the buffer and set a pointer to it */ + swprintf(MajorVersion, + L"%d.%d", + VersionInformation.dwMajorVersion, + VersionInformation.dwMinorVersion); + MachineInformation->MajorVersion = MajorVersion; + + /* Now allocate a buffer for the OS build number */ + BuildNumber = SacAllocatePool(0xC, GLOBAL_BLOCK_TAG); + if (!BuildNumber) + { + SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC InitializeMachineInformation: Exiting (60).\n"); + goto Fail; + } + + /* Build the buffer and set a pointer to it */ + swprintf(BuildNumber, L"%d", VersionInformation.dwBuildNumber); + MachineInformation->BuildNumber = BuildNumber; + + /* Now check what kind of SKU this is */ + if (ExVerifySuite(DataCenter)) + { + SuiteTypeMessage = SAC_DATACENTER_SUITE_MSG; + } + else if (ExVerifySuite(EmbeddedNT)) + { + SuiteTypeMessage = SAC_EMBEDDED_SUITE_MSG; + } + else if (ExVerifySuite(Enterprise)) + { + SuiteTypeMessage = SAC_ENTERPRISE_SUITE_MSG; + } + else + { + /* Unknown or perhaps a client SKU */ + SuiteTypeMessage = SAC_NO_SUITE_MSG; + } + + /* Get the string that correponds to the SKU type */ + MessageBuffer = GetMessage(SuiteTypeMessage); + if (!MessageBuffer) + { + /* We won't have it, but this isn't critical */ + SAC_DBG(SAC_DBG_INIT, "SAC InitializeMachineInformation: Failed to get product type.\n"); + } + else + { + /* Calculate the size we need to hold the string */ + Size = wcslen(MessageBuffer); + ASSERT(Size > 0); + RealSize = Size * sizeof(WCHAR) + sizeof(UNICODE_NULL); + + /* Allocate a buffer for it */ + ProductType = SacAllocatePool(RealSize, GLOBAL_BLOCK_TAG); + if (!ProductType) + { + SAC_DBG(SAC_DBG_INIT, "SAC InitializeMachineInformation: Failed product type memory allocation.\n"); + goto Fail; + } + + /* Copy the string and set the pointer */ + RtlCopyMemory(ProductType, MessageBuffer, RealSize); + MachineInformation->ProductType = ProductType; + } + + /* Check if this is a SP version or RTM version */ + if (VersionInformation.wServicePackMajor) + { + /* This is a service pack, allocate a buffer for the version */ + ServicePack = SacAllocatePool(0x18, GLOBAL_BLOCK_TAG); + if (ServicePack) + { + /* Build the buffer and set a pointer to it */ + swprintf(ServicePack, + L"%d.%d", + VersionInformation.wServicePackMajor, + VersionInformation.wServicePackMinor); + MachineInformation->ServicePack = ServicePack; + + /* We've collected all the machine info and are done! */ + return; + } + + /* This is the failure path */ + SAC_DBG(SAC_DBG_INIT, "SAC InitializeMachineInformation: Failed service pack memory allocation.\n"); + } + else + { + /* Get a generic string that indicates there's no service pack */ + MessageBuffer = GetMessage(SAC_NO_DATA_MSG); + Size = wcslen(MessageBuffer); + ASSERT(Size > 0); + RealSize = Size * sizeof(WCHAR) + sizeof(UNICODE_NULL); + + /* Allocate memory for the "no service pack" string */ + ServicePack = SacAllocatePool(RealSize, GLOBAL_BLOCK_TAG); + if (ServicePack) + { + /* Copy the buffer and set a pointer to it */ + RtlCopyMemory(ServicePack, MessageBuffer, RealSize); + MachineInformation->ServicePack = ServicePack; + + /* We've collected all the machine info and are done! */ + return; + } + + SAC_DBG(SAC_DBG_INIT, "SAC InitializeMachineInformation: Failed service pack memory allocation.\n"); + } + +Fail: + /* In the failure path, always cleanup the machine information buffer */ + if (MachineInformation) + { + SacFreePool(MachineInformation); + } + SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC Initialize Machine Information : Exiting with error.\n"); } NTSTATUS @@ -549,7 +861,7 @@ if (!Buffer) return STATUS_UNSUCCESSFUL; /* Read the value */ - Status = CopyRegistryValueData(&Data, Buffer); + Status = CopyRegistryValueData((PVOID*)&Data, Buffer); SacFreePool(Buffer); if (!NT_SUCCESS(Status)) return Status; @@ -632,7 +944,7 @@ RegisterBlueScreenMachineInformation(VOID) { PWCHAR XmlBuffer; - PHEADLESS_BLUE_SCREEN_DATA BsBuffer; + PHEADLESS_CMD_SET_BLUE_SCREEN_DATA BsBuffer; ULONG Length, HeaderLength, TotalLength; NTSTATUS Status; ULONG i; @@ -653,15 +965,15 @@ CHECK_PARAMETER_WITH_STATUS(BsBuffer, STATUS_NO_MEMORY); /* Copy the XML property name */ - strcpy((PCHAR)BsBuffer->XMLData, "MACHINEINFO"); - BsBuffer->Property = (PUCHAR)HeaderLength + sizeof(ANSI_NULL); + strcpy((PCHAR)BsBuffer->Data, "MACHINEINFO"); + BsBuffer->ValueIndex = HeaderLength + sizeof(ANSI_NULL); /* Copy the data and NULL-terminate it */ for (i = 0; i < Length; i++) { - BsBuffer->XMLData[HeaderLength + sizeof(ANSI_NULL) + i] = XmlBuffer[i]; - } - BsBuffer->XMLData[HeaderLength + sizeof(ANSI_NULL) + i] = ANSI_NULL; + BsBuffer->Data[BsBuffer->ValueIndex + i] = XmlBuffer[i]; + } + BsBuffer->Data[BsBuffer->ValueIndex + i] = ANSI_NULL; /* Let the OS save the buffer for later */ Status = HeadlessDispatch(HeadlessCmdSetBlueScreenData, Modified: trunk/reactos/include/reactos/mc/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/mc/CMakeLi…
============================================================================== --- trunk/reactos/include/reactos/mc/CMakeLists.txt [iso-8859-1] (original) +++ trunk/reactos/include/reactos/mc/CMakeLists.txt [iso-8859-1] Tue Aug 13 03:18:03 2013 @@ -7,9 +7,12 @@ neteventmsg.mc ntiologc.mc ntstatus.mc - pciclass.mc + pciclass.mc) + +list(APPEND UNICODE_SOURCE_REALLY sacmsg.mc) add_message_headers(ANSI ${ANSI_SOURCE}) # FIXME: this needs testing before switching to unicode add_message_headers(ANSI ${UNICODE_SOURCE}) +add_message_headers(UNICODE ${UNICODE_SOURCE_REALLY}) Modified: trunk/reactos/include/reactos/mc/sacmsg.mc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/mc/sacmsg.…
============================================================================== --- trunk/reactos/include/reactos/mc/sacmsg.mc [iso-8859-1] (original) +++ trunk/reactos/include/reactos/mc/sacmsg.mc [iso-8859-1] Tue Aug 13 03:18:03 2013 @@ -461,7 +461,7 @@ . MessageId=98 -SymbolicName=SACDRV_98 +SymbolicName=SAC_NO_DATA_MSG Language=English None%0 . @@ -473,25 +473,25 @@ . MessageId=100 -SymbolicName=SACDRV_100 +SymbolicName=SAC_DATACENTER_SUITE_MSG Language=English Windows Server 2003 Datacenter Edition%0 . MessageId=101 -SymbolicName=SACDRV_101 +SymbolicName=SAC_EMBEDDED_SUITE_MSG Language=English Windows Server 2003 Embedded%0 . MessageId=102 -SymbolicName=SACDRV_102 +SymbolicName=SAC_ENTERPRISE_SUITE_MSG Language=English Windows Server 2003 Enterprise Edition%0 . MessageId=103 -SymbolicName=SACDRV_103 +SymbolicName=SAC_NO_SUITE_MSG Language=English Windows Server 2003%0 . @@ -695,7 +695,7 @@ . MessageId=153 -SymbolicName=SACDRV_153 +SymbolicName=SAC_UNINITIALIZED_MSG Language=English not yet initialized%0 . Modified: trunk/reactos/ntoskrnl/ex/hdlsterm.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/hdlsterm.c?rev…
============================================================================== --- trunk/reactos/ntoskrnl/ex/hdlsterm.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ex/hdlsterm.c [iso-8859-1] Tue Aug 13 03:18:03 2013 @@ -17,111 +17,156 @@ /* FUNCTIONS *****************************************************************/ +FORCEINLINE +KIRQL +HdlspAcquireGlobalLock(VOID) +{ + KIRQL OldIrql; + + /* Don't acquire the lock if we are bugchecking */ + if (!HeadlessGlobals->InBugCheck) + { + KeAcquireSpinLock(&HeadlessGlobals->SpinLock, &OldIrql); + } + else + { + OldIrql = 0xFF; + } + + return OldIrql; +} + +FORCEINLINE VOID -NTAPI -HdlspSendStringAtBaud( - IN PUCHAR String - ) -{ - /* Send every byte */ - while (*String++ != ANSI_NULL) - { - InbvPortPutByte(HeadlessGlobals->TerminalPort, *String); - } +HdlspReleaselobalLock(IN KIRQL OldIrql) +{ + /* Only release the lock if we aren't bugchecking */ + if (OldIrql != 0xFF) + { + KeReleaseSpinLock(&HeadlessGlobals->SpinLock, OldIrql); + } + else + { + ASSERT(HeadlessGlobals->InBugCheck == TRUE); + } +} + +VOID +NTAPI +HdlspSendStringAtBaud(IN PUCHAR String) +{ + /* Send every byte */ + while (*String++ != ANSI_NULL) + { + InbvPortPutByte(HeadlessGlobals->TerminalPort, *String); + } } NTSTATUS NTAPI -HdlspEnableTerminal( - IN BOOLEAN Enable - ) -{ - /* Enable if requested, as long as this isn't a PCI serial port crashing */ - if ((Enable) && - !(HeadlessGlobals->TerminalEnabled) && - !((HeadlessGlobals->IsMMIODevice) && (HeadlessGlobals->InBugCheck))) - { - /* Initialize the COM port with cportlib */ - HeadlessGlobals->TerminalEnabled = InbvPortInitialize( - HeadlessGlobals->TerminalBaudRate, - HeadlessGlobals->TerminalPortNumber, - HeadlessGlobals->TerminalPortAddress, - &HeadlessGlobals->TerminalPort, - HeadlessGlobals->IsMMIODevice); - if (!HeadlessGlobals->TerminalEnabled) return STATUS_UNSUCCESSFUL; - - /* Cleanup the screen and reset the cursor */ - HdlspSendStringAtBaud((PUCHAR)"\x1B[2J"); - HdlspSendStringAtBaud((PUCHAR)"\x1B[H"); - - /* Enable FIFO */ - InbvPortEnableFifo(HeadlessGlobals->TerminalPort, TRUE); - } - else if (!Enable) - { - /* Specific case when headless is being disabled */ - InbvPortTerminate(HeadlessGlobals->TerminalPort); - HeadlessGlobals->TerminalPort = 0; - HeadlessGlobals->TerminalEnabled = FALSE; - } - return STATUS_SUCCESS; +HdlspEnableTerminal(IN BOOLEAN Enable) +{ + /* Enable if requested, as long as this isn't a PCI serial port crashing */ + if ((Enable) && + !(HeadlessGlobals->TerminalEnabled) && + !((HeadlessGlobals->IsMMIODevice) && (HeadlessGlobals->InBugCheck))) + { + /* Initialize the COM port with cportlib */ + HeadlessGlobals->TerminalEnabled = InbvPortInitialize(HeadlessGlobals-> + TerminalBaudRate, + HeadlessGlobals-> + TerminalPortNumber, + HeadlessGlobals-> + TerminalPortAddress, + &HeadlessGlobals-> + TerminalPort, + HeadlessGlobals-> + IsMMIODevice); + if (!HeadlessGlobals->TerminalEnabled) + { + DPRINT1("Failed to initialize port through cportlib\n"); + return STATUS_UNSUCCESSFUL; + } + + /* Cleanup the screen and reset the cursor */ + HdlspSendStringAtBaud((PUCHAR)"\x1B[2J"); + HdlspSendStringAtBaud((PUCHAR)"\x1B[H"); + + /* Enable FIFO */ + InbvPortEnableFifo(HeadlessGlobals->TerminalPort, TRUE); + } + else if (!Enable) + { + /* Specific case when headless is being disabled */ + InbvPortTerminate(HeadlessGlobals->TerminalPort); + HeadlessGlobals->TerminalPort = 0; + HeadlessGlobals->TerminalEnabled = FALSE; + } + + /* All done */ + return STATUS_SUCCESS; } VOID NTAPI INIT_FUNCTION -HeadlessInit( - IN PLOADER_PARAMETER_BLOCK LoaderBlock - ) -{ - PHEADLESS_LOADER_BLOCK HeadlessBlock; - - HeadlessBlock = LoaderBlock->Extension->HeadlessLoaderBlock; - if (!HeadlessBlock) return; - if ((HeadlessBlock->PortNumber > 4) && (HeadlessBlock->UsedBiosSettings)) return; - - HeadlessGlobals = ExAllocatePoolWithTag( - NonPagedPool, - sizeof(HEADLESS_GLOBALS), - 'sldH'); - if (!HeadlessGlobals) return; - - /* Zero and copy loader data */ - RtlZeroMemory(HeadlessGlobals, sizeof(HEADLESS_GLOBALS)); - HeadlessGlobals->TerminalPortNumber = HeadlessBlock->PortNumber; - HeadlessGlobals->TerminalPortAddress = HeadlessBlock->PortAddress; - HeadlessGlobals->TerminalBaudRate = HeadlessBlock->BaudRate; - HeadlessGlobals->TerminalParity = HeadlessBlock->Parity; - HeadlessGlobals->TerminalStopBits = HeadlessBlock->StopBits; - HeadlessGlobals->UsedBiosSettings = HeadlessBlock->UsedBiosSettings; - HeadlessGlobals->IsMMIODevice = HeadlessBlock->IsMMIODevice; - HeadlessGlobals->TerminalType = HeadlessBlock->TerminalType; - HeadlessGlobals->SystemGUID = HeadlessBlock->SystemGUID; - - /* These two are opposites of each other */ - if (HeadlessGlobals->IsMMIODevice) HeadlessGlobals->IsNonLegacyDevice = TRUE; - - /* Check for a PCI device, warn that this isn't supported */ - if (HeadlessBlock->PciDeviceId != PCI_INVALID_VENDORID) - { - DPRINT1("PCI Serial Ports not supported\n"); - } - - /* Log entries are not yet supported */ - DPRINT1("FIXME: No Headless logging support\n"); - - /* Allocate temporary buffer */ - HeadlessGlobals->TmpBuffer = ExAllocatePoolWithTag(NonPagedPool, 80, 'sldH'); - if (!HeadlessGlobals->TmpBuffer) return; - - /* Windows seems to apply some special hacks for 9600 bps */ - if (HeadlessGlobals->TerminalBaudRate == 9600) - { - DPRINT1("Please use other baud rate than 9600bps for now\n"); - } - - /* Enable the terminal */ - HdlspEnableTerminal(TRUE); +HeadlessInit(IN PLOADER_PARAMETER_BLOCK LoaderBlock) +{ + PHEADLESS_LOADER_BLOCK HeadlessBlock; + + /* Only initialize further if the loader found EMS enabled */ + HeadlessBlock = LoaderBlock->Extension->HeadlessLoaderBlock; + if (!HeadlessBlock) return; + + /* Ignore invalid EMS settings */ + if ((HeadlessBlock->PortNumber > 4) && (HeadlessBlock->UsedBiosSettings)) return; + + /* Allocate the global headless data */ + HeadlessGlobals = ExAllocatePoolWithTag(NonPagedPool, + sizeof(*HeadlessGlobals), + 'sldH'); + if (!HeadlessGlobals) return; + + /* Zero and copy loader data */ + RtlZeroMemory(HeadlessGlobals, sizeof(*HeadlessGlobals)); + HeadlessGlobals->TerminalPortNumber = HeadlessBlock->PortNumber; + HeadlessGlobals->TerminalPortAddress = HeadlessBlock->PortAddress; + HeadlessGlobals->TerminalBaudRate = HeadlessBlock->BaudRate; + HeadlessGlobals->TerminalParity = HeadlessBlock->Parity; + HeadlessGlobals->TerminalStopBits = HeadlessBlock->StopBits; + HeadlessGlobals->UsedBiosSettings = HeadlessBlock->UsedBiosSettings; + HeadlessGlobals->IsMMIODevice = HeadlessBlock->IsMMIODevice; + HeadlessGlobals->TerminalType = HeadlessBlock->TerminalType; + HeadlessGlobals->SystemGUID = HeadlessBlock->SystemGUID; + DPRINT1("EMS on Port %d (0x%lx) at %d bps\n", + HeadlessGlobals->TerminalPortNumber, + HeadlessGlobals->TerminalPortAddress, + HeadlessGlobals->TerminalBaudRate); + + /* These two are opposites of each other */ + if (HeadlessGlobals->IsMMIODevice) HeadlessGlobals->IsNonLegacyDevice = TRUE; + + /* Check for a PCI device, warn that this isn't supported */ + if (HeadlessBlock->PciDeviceId != PCI_INVALID_VENDORID) + { + DPRINT1("PCI Serial Ports not supported\n"); + } + + /* Log entries are not yet supported */ + DPRINT1("FIXME: No Headless logging support\n"); + + /* Allocate temporary buffer */ + HeadlessGlobals->TmpBuffer = ExAllocatePoolWithTag(NonPagedPool, 80, 'sldH'); + if (!HeadlessGlobals->TmpBuffer) return; + + /* Windows seems to apply some special hacks for 9600 bps */ + if (HeadlessGlobals->TerminalBaudRate == 9600) + { + DPRINT1("Please use other baud rate than 9600bps for now\n"); + } + + /* Enable the terminal */ + HdlspEnableTerminal(TRUE); } VOID @@ -197,59 +242,80 @@ NTSTATUS NTAPI -HdlspDispatch( - IN HEADLESS_CMD Command, - IN PVOID InputBuffer, - IN SIZE_T InputBufferSize, - OUT PVOID OutputBuffer, - OUT PSIZE_T OutputBufferSize - ) -{ - //NTSTATUS Status = STATUS_NOT_IMPLEMENTED; - ASSERT(HeadlessGlobals != NULL); +HdlspDispatch(IN HEADLESS_CMD Command, + IN PVOID InputBuffer, + IN SIZE_T InputBufferSize, + OUT PVOID OutputBuffer, + OUT PSIZE_T OutputBufferSize) +{ + KIRQL OldIrql; + PHEADLESS_RSP_QUERY_INFO HeadlessInfo; + PHEADLESS_CMD_PUT_STRING PutString; + PHEADLESS_CMD_ENABLE_TERMINAL EnableTerminal; + NTSTATUS Status = STATUS_NOT_IMPLEMENTED; + ASSERT(HeadlessGlobals != NULL); // ASSERT(HeadlessGlobals->PageLockHandle != NULL); - /* FIXME: This should be using the headless spinlock */ - - /* Ignore non-reentrant commands */ - if ((Command != HeadlessCmdAddLogEntry) && - (Command != HeadlessCmdStartBugCheck) && - (Command != HeadlessCmdSendBlueScreenData) && - (Command != HeadlessCmdDoBugCheckProcessing)) - { - if (HeadlessGlobals->ProcessingCmd) return STATUS_UNSUCCESSFUL; - - /* Don't allow these commands next time */ - HeadlessGlobals->ProcessingCmd = TRUE; - } - - /* Handle each command */ - switch (Command) - { - case HeadlessCmdEnableTerminal: - break; + /* Ignore non-reentrant commands */ + if ((Command != HeadlessCmdAddLogEntry) && + (Command != HeadlessCmdStartBugCheck) && + (Command != HeadlessCmdSendBlueScreenData) && + (Command != HeadlessCmdDoBugCheckProcessing)) + { + OldIrql = HdlspAcquireGlobalLock(); + + if (HeadlessGlobals->ProcessingCmd) + { + HdlspReleaselobalLock(OldIrql); + return STATUS_UNSUCCESSFUL; + } + + /* Don't allow these commands next time */ + HeadlessGlobals->ProcessingCmd = TRUE; + HdlspReleaselobalLock(OldIrql); + } + + /* Handle each command */ + switch (Command) + { + case HeadlessCmdEnableTerminal: + + /* Make sure the caller passed valid data */ + if (!(InputBuffer) || + (InputBufferSize != sizeof(*EnableTerminal))) + { + DPRINT1("Invalid buffer\n"); + Status = STATUS_INVALID_PARAMETER; + break; + } + + /* Go and enable it */ + EnableTerminal = InputBuffer; + Status = HdlspEnableTerminal(EnableTerminal->Enable); + break; + case HeadlessCmdCheckForReboot: break; case HeadlessCmdPutString: - /* Validate the existence of an input buffer */ - if (!InputBuffer) - { - //Status = STATUS_INVALID_PARAMETER; - goto Reset; - } + /* Validate the existence of an input buffer */ + if (!InputBuffer) + { + Status = STATUS_INVALID_PARAMETER; + break; + } /* Terminal should be on */ if (HeadlessGlobals->TerminalEnabled) { /* Print each byte in the string making sure VT100 chars are used */ - PHEADLESS_CMD_PUT_STRING PutString = (PVOID)InputBuffer; + PutString = InputBuffer; HdlspPutString(PutString->String); } /* Return success either way */ - //Status = STATUS_SUCCESS; + Status = STATUS_SUCCESS; break; case HeadlessCmdClearDisplay: break; @@ -276,13 +342,62 @@ case HeadlessCmdDoBugCheckProcessing: break; case HeadlessCmdQueryInformation: - break; + + /* Make sure the caller passed valid data */ + if (!(OutputBuffer) || + !(OutputBufferSize) || + (*OutputBufferSize < sizeof(*HeadlessInfo))) + { + DPRINT1("Invalid buffer\n"); + Status = STATUS_INVALID_PARAMETER; + break; + } + + /* If we got here, headless is enabled -- we know this much */ + HeadlessInfo = OutputBuffer; + HeadlessInfo->PortType = HeadlessSerialPort; + HeadlessInfo->Serial.TerminalAttached = TRUE; + HeadlessInfo->Serial.UsedBiosSettings = HeadlessGlobals->UsedBiosSettings; + HeadlessInfo->Serial.TerminalBaudRate = HeadlessGlobals->TerminalBaudRate; + HeadlessInfo->Serial.TerminalType = HeadlessGlobals->TerminalType; + + /* Now check on what port/baud it's enabled on */ + if ((HeadlessGlobals->TerminalPortNumber >= 1) || + (HeadlessGlobals->UsedBiosSettings)) + { + /* Get the EMS information */ + HeadlessInfo->Serial.TerminalPort = HeadlessGlobals-> + TerminalPortNumber; + HeadlessInfo->Serial.TerminalPortBaseAddress = HeadlessGlobals-> + TerminalPortAddress; + } + else + { + /* We don't know for sure */ + HeadlessInfo->Serial.TerminalPort = SerialPortUndefined; + HeadlessInfo->Serial.TerminalPortBaseAddress = 0; + } + + /* All done */ + Status = STATUS_SUCCESS; + break; case HeadlessCmdAddLogEntry: break; case HeadlessCmdDisplayLog: break; - case HeadlessCmdSetBlueScreenData: - break; + case HeadlessCmdSetBlueScreenData: + + /* Validate the existence of an input buffer */ + if (!InputBuffer) + { + Status = STATUS_INVALID_PARAMETER; + break; + } + + /* Lie so that we can get Hdl bringup a little bit further */ + UNIMPLEMENTED; + Status = STATUS_SUCCESS; + break; case HeadlessCmdSendBlueScreenData: break; case HeadlessCmdQueryGUID: @@ -293,60 +408,60 @@ break; } -Reset: - /* Unset prcessing state */ - if ((Command != HeadlessCmdAddLogEntry) && - (Command != HeadlessCmdStartBugCheck) && - (Command != HeadlessCmdSendBlueScreenData) && - (Command != HeadlessCmdDoBugCheckProcessing)) - { - ASSERT(HeadlessGlobals->ProcessingCmd == TRUE); - HeadlessGlobals->ProcessingCmd = FALSE; - } - - //UNIMPLEMENTED; - return STATUS_SUCCESS; + /* Unset processing state */ + if ((Command != HeadlessCmdAddLogEntry) && + (Command != HeadlessCmdStartBugCheck) && + (Command != HeadlessCmdSendBlueScreenData) && + (Command != HeadlessCmdDoBugCheckProcessing)) + { + ASSERT(HeadlessGlobals->ProcessingCmd == TRUE); + HeadlessGlobals->ProcessingCmd = FALSE; + } + + /* All done */ + return Status; } /* - * @unimplemented + * @implemented */ NTSTATUS NTAPI -HeadlessDispatch( - IN HEADLESS_CMD Command, - IN PVOID InputBuffer, - IN SIZE_T InputBufferSize, - OUT PVOID OutputBuffer, - OUT PSIZE_T OutputBufferSize - ) -{ - /* Check for stubs that will expect something even with headless off */ - if (!HeadlessGlobals) - { - /* Don't allow the SAC to connect */ - if (Command == HeadlessCmdEnableTerminal) return STATUS_UNSUCCESSFUL; - - /* Send bogus reply */ - if ((Command == HeadlessCmdQueryInformation) || - (Command == HeadlessCmdGetByte) || - (Command == HeadlessCmdGetLine) || - (Command == HeadlessCmdCheckForReboot) || - (Command == HeadlessCmdTerminalPoll)) - { - if (!(OutputBuffer) || !(OutputBufferSize)) return STATUS_INVALID_PARAMETER; - RtlZeroMemory(OutputBuffer, *OutputBufferSize); - } - return STATUS_SUCCESS; - } - - /* Do the real work */ - return HdlspDispatch( - Command, - InputBuffer, - InputBufferSize, - OutputBuffer, - OutputBufferSize); -} +HeadlessDispatch(IN HEADLESS_CMD Command, + IN PVOID InputBuffer, + IN SIZE_T InputBufferSize, + OUT PVOID OutputBuffer, + OUT PSIZE_T OutputBufferSize) +{ + /* Check for stubs that will expect something even with headless off */ + if (!HeadlessGlobals) + { + /* Don't allow the SAC to connect */ + if (Command == HeadlessCmdEnableTerminal) return STATUS_UNSUCCESSFUL; + + /* Send bogus reply */ + if ((Command == HeadlessCmdQueryInformation) || + (Command == HeadlessCmdGetByte) || + (Command == HeadlessCmdGetLine) || + (Command == HeadlessCmdCheckForReboot) || + (Command == HeadlessCmdTerminalPoll)) + { + if (!(OutputBuffer) || !(OutputBufferSize)) + { + return STATUS_INVALID_PARAMETER; + } + + RtlZeroMemory(OutputBuffer, *OutputBufferSize); + } + return STATUS_SUCCESS; + } + + /* Do the real work */ + return HdlspDispatch(Command, + InputBuffer, + InputBufferSize, + OutputBuffer, + OutputBufferSize); +} /* EOF */ Modified: trunk/reactos/ntoskrnl/include/internal/hdl.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
============================================================================== --- trunk/reactos/ntoskrnl/include/internal/hdl.h [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/include/internal/hdl.h [iso-8859-1] Tue Aug 13 03:18:03 2013 @@ -72,12 +72,11 @@ // // Headless Bugcheck Information // -typedef struct _HEADLESS_BLUE_SCREEN_DATA -{ - PUCHAR Property; - PUCHAR XMLData; - struct _HEADLESS_BLUE_SCREEN_DATA *Next; -} HEADLESS_BLUE_SCREEN_DATA, * PHEADLESS_BLUE_SCREEN_DATA; +typedef struct _HEADLESS_CMD_SET_BLUE_SCREEN_DATA +{ + ULONG ValueIndex; + UCHAR Data[ANYSIZE_ARRAY]; +} HEADLESS_CMD_SET_BLUE_SCREEN_DATA, *PHEADLESS_CMD_SET_BLUE_SCREEN_DATA; // // Headless Control Structure, mostly for !SAC @@ -89,7 +88,7 @@ PHEADLESS_LOG_ENTRY LogEntries; PUCHAR TmpBuffer; PUCHAR InputBuffer; - PHEADLESS_BLUE_SCREEN_DATA BlueScreenData; + PHEADLESS_CMD_SET_BLUE_SCREEN_DATA BlueScreenData; union { struct @@ -183,6 +182,11 @@ }; } HEADLESS_RSP_QUERY_INFO, *PHEADLESS_RSP_QUERY_INFO; +typedef struct _HEADLESS_CMD_ENABLE_TERMINAL +{ + BOOLEAN Enable; +} HEADLESS_CMD_ENABLE_TERMINAL, *PHEADLESS_CMD_ENABLE_TERMINAL; + typedef struct _HEADLESS_CMD_PUT_STRING { UCHAR String[1];
11 years, 4 months
1
0
0
0
[ion] 59717: [NTOSKRNL]: RtlGetVersion in the kernel does not fail, does not return a CSD version, and should not be returning negative build numbers. Fix it so that it works as it should (and anyo...
by ion@svn.reactos.org
Author: ion Date: Tue Aug 13 03:14:22 2013 New Revision: 59717 URL:
http://svn.reactos.org/svn/reactos?rev=59717&view=rev
Log: [NTOSKRNL]: RtlGetVersion in the kernel does not fail, does not return a CSD version, and should not be returning negative build numbers. Fix it so that it works as it should (and anyone that relied on correct build numbers will no longer fail). Modified: trunk/reactos/ntoskrnl/rtl/misc.c Modified: trunk/reactos/ntoskrnl/rtl/misc.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/rtl/misc.c?rev=59…
============================================================================== --- trunk/reactos/ntoskrnl/rtl/misc.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/rtl/misc.c [iso-8859-1] Tue Aug 13 03:14:22 2013 @@ -33,51 +33,33 @@ } /* -* @implemented -*/ -NTSTATUS NTAPI + * @implemented + */ +NTSTATUS +NTAPI RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation) { - LONG i; - ULONG MaxLength; + PAGED_CODE(); - if (lpVersionInformation->dwOSVersionInfoSize == sizeof(RTL_OSVERSIONINFOW) || - lpVersionInformation->dwOSVersionInfoSize == sizeof(RTL_OSVERSIONINFOEXW)) + /* Return the basics */ + lpVersionInformation->dwMajorVersion = NtMajorVersion; + lpVersionInformation->dwMinorVersion = NtMinorVersion; + lpVersionInformation->dwBuildNumber = NtBuildNumber & 0x3FFF; + lpVersionInformation->dwPlatformId = VER_PLATFORM_WIN32_NT; + + /* Check if this is the extended version */ + if (lpVersionInformation->dwOSVersionInfoSize == sizeof(RTL_OSVERSIONINFOEXW)) { - lpVersionInformation->dwMajorVersion = NtMajorVersion; - lpVersionInformation->dwMinorVersion = NtMinorVersion; - lpVersionInformation->dwBuildNumber = NtBuildNumber; - lpVersionInformation->dwPlatformId = VER_PLATFORM_WIN32_NT; - RtlZeroMemory(lpVersionInformation->szCSDVersion, sizeof(lpVersionInformation->szCSDVersion)); - - if(((CmNtCSDVersion >> 8) & 0xFF) != 0) - { - MaxLength = (sizeof(lpVersionInformation->szCSDVersion) / sizeof(lpVersionInformation->szCSDVersion[0])) - 1; - i = _snwprintf(lpVersionInformation->szCSDVersion, - MaxLength, - L"Service Pack %d", - ((CmNtCSDVersion >> 8) & 0xFF)); - if (i < 0) - { - /* Null-terminate if it was overflowed */ - lpVersionInformation->szCSDVersion[MaxLength] = L'\0'; - } - } - - if (lpVersionInformation->dwOSVersionInfoSize == sizeof(RTL_OSVERSIONINFOEXW)) - { - PRTL_OSVERSIONINFOEXW InfoEx = (PRTL_OSVERSIONINFOEXW)lpVersionInformation; - InfoEx->wServicePackMajor = (USHORT)(CmNtCSDVersion >> 8) & 0xFF; - InfoEx->wServicePackMinor = (USHORT)(CmNtCSDVersion & 0xFF); - InfoEx->wSuiteMask = (USHORT)(SharedUserData->SuiteMask & 0xFFFF); - InfoEx->wProductType = SharedUserData->NtProductType; - InfoEx->wReserved = 0; - } - - return STATUS_SUCCESS; + PRTL_OSVERSIONINFOEXW InfoEx = (PRTL_OSVERSIONINFOEXW)lpVersionInformation; + InfoEx->wServicePackMajor = (USHORT)(CmNtCSDVersion >> 8) & 0xFF; + InfoEx->wServicePackMinor = (USHORT)(CmNtCSDVersion & 0xFF); + InfoEx->wSuiteMask = (USHORT)(SharedUserData->SuiteMask & 0xFFFF); + InfoEx->wProductType = SharedUserData->NtProductType; + InfoEx->wReserved = 0; } - return STATUS_INVALID_PARAMETER; + /* Always succeed */ + return STATUS_SUCCESS; } /* EOF */
11 years, 4 months
1
0
0
0
[ion] 59716: [USETUP]: Add an entry in freeldr.ini for EMS testing. [HIVESYS]: Fix double-addition of "nmidebug". One of those should have been "sacdrv". [FREELDR]: Fix bugs in WinLdrSetupEms which...
by ion@svn.reactos.org
Author: ion Date: Tue Aug 13 03:11:02 2013 New Revision: 59716 URL:
http://svn.reactos.org/svn/reactos?rev=59716&view=rev
Log: [USETUP]: Add an entry in freeldr.ini for EMS testing. [HIVESYS]: Fix double-addition of "nmidebug". One of those should have been "sacdrv". [FREELDR]: Fix bugs in WinLdrSetupEms which caused an invalid HEADLESS_LOADER_BLOCK to be created. [FERELDR]: Move WinLdrSetupEms in LoadWindowsCommon, so that setupldr can use EMS too. Modified: trunk/reactos/base/setup/usetup/bootsup.c trunk/reactos/boot/bootdata/hivesys.inf trunk/reactos/boot/freeldr/freeldr/windows/headless.c trunk/reactos/boot/freeldr/freeldr/windows/winldr.c Modified: trunk/reactos/base/setup/usetup/bootsup.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/bootsup.…
============================================================================== --- trunk/reactos/base/setup/usetup/bootsup.c [iso-8859-1] (original) +++ trunk/reactos/base/setup/usetup/bootsup.c [iso-8859-1] Tue Aug 13 03:11:02 2013 @@ -501,8 +501,14 @@ /* ReactOS_Ram */ CreateFreeLoaderEntry(IniCache, IniSection, L"ReactOS_Ram", L"\"ReactOS (RAM Disk)\"", - L"ReactOS", L"ramdisk(0)\\ReactOS", + L"Windows2003", L"ramdisk(0)\\ReactOS", L"/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS /RDIMAGEPATH=reactos.img /RDIMAGEOFFSET=32256"); + + /* ReactOS_EMS */ + CreateFreeLoaderEntry(IniCache, IniSection, + L"ReactOS_EMS", L"\"ReactOS (Emergency Management Services)\"", + L"Windows2003", ArcPath, + L"/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS /redirect=com2 /redirectbaudrate=115200"); #endif /* Save the ini file */ Modified: trunk/reactos/boot/bootdata/hivesys.inf URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/hivesys.inf?…
============================================================================== --- trunk/reactos/boot/bootdata/hivesys.inf [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/hivesys.inf [iso-8859-1] Tue Aug 13 03:11:02 2013 @@ -1345,11 +1345,11 @@ HKLM,"SYSTEM\CurrentControlSet\Services\DHCP\Parameters","ServiceDll",0x00020000,"%SystemRoot%\system32\dhcpcsvc.dll" ; EMS Serial Administration Console Driver -HKLM,"SYSTEM\CurrentControlSet\Services\NMIDebug","ErrorControl",0x00010001,0x00000000 -HKLM,"SYSTEM\CurrentControlSet\Services\NMIDebug","Group",0x00000000,"EMS" -HKLM,"SYSTEM\CurrentControlSet\Services\NMIDebug","ImagePath",0x00020000,"system32\drivers\sacdrv.sys" -HKLM,"SYSTEM\CurrentControlSet\Services\NMIDebug","Start",0x00010001,0x00000000 -HKLM,"SYSTEM\CurrentControlSet\Services\NMIDebug","Type",0x00010001,0x00000001 +HKLM,"SYSTEM\CurrentControlSet\Services\sacdrv","ErrorControl",0x00010001,0x00000000 +HKLM,"SYSTEM\CurrentControlSet\Services\sacdrv","Group",0x00000000,"EMS" +HKLM,"SYSTEM\CurrentControlSet\Services\sacdrv","ImagePath",0x00020000,"system32\drivers\sacdrv.sys" +HKLM,"SYSTEM\CurrentControlSet\Services\sacdrv","Start",0x00010001,0x00000000 +HKLM,"SYSTEM\CurrentControlSet\Services\sacdrv","Type",0x00010001,0x00000001 ; Event logging service HKLM,"SYSTEM\CurrentControlSet\Services\EventLog",,0x00000010 Modified: trunk/reactos/boot/freeldr/freeldr/windows/headless.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/windo…
============================================================================== --- trunk/reactos/boot/freeldr/freeldr/windows/headless.c [iso-8859-1] (original) +++ trunk/reactos/boot/freeldr/freeldr/windows/headless.c [iso-8859-1] Tue Aug 13 03:11:02 2013 @@ -246,7 +246,8 @@ /* Start fresh */ RtlZeroMemory(&LoaderRedirectionInformation, sizeof(HEADLESS_LOADER_BLOCK)); - + LoaderRedirectionInformation.PciDeviceId = PCI_INVALID_VENDORID; + /* Use a direction port if one was given, or use ACPI to detect one instead */ RedirectPort = strstr(BootOptions, "/redirect="); @@ -257,6 +258,7 @@ { RedirectPort += sizeof("com") - 1; LoaderRedirectionInformation.PortNumber = atoi(RedirectPort); + LoaderRedirectionInformation.TerminalType = 1; //HeadlessSerialPort } else { Modified: trunk/reactos/boot/freeldr/freeldr/windows/winldr.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/windo…
============================================================================== --- trunk/reactos/boot/freeldr/freeldr/windows/winldr.c [iso-8859-1] (original) +++ trunk/reactos/boot/freeldr/freeldr/windows/winldr.c [iso-8859-1] Tue Aug 13 03:11:02 2013 @@ -673,11 +673,6 @@ /* Allocate and minimalistic-initialize LPB */ AllocateAndInitLPB(&LoaderBlock); -#ifdef _M_IX86 - /* Setup redirection support */ - WinLdrSetupEms(BootOptions); -#endif - /* Load Hive */ UiDrawBackdrop(); UiDrawProgressBarCenter(15, 100, "Loading system hive..."); @@ -711,6 +706,11 @@ LPCSTR SystemRoot; TRACE("LoadAndBootWindowsCommon()\n"); +#ifdef _M_IX86 + /* Setup redirection support */ + WinLdrSetupEms((PCHAR)BootOptions); +#endif + /* Convert BootPath to SystemRoot */ SystemRoot = strstr(BootPath, "\\");
11 years, 4 months
1
0
0
0
[akhaldi] 59715: [PSDK] * Annotate shlobj.h.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Aug 12 22:19:46 2013 New Revision: 59715 URL:
http://svn.reactos.org/svn/reactos?rev=59715&view=rev
Log: [PSDK] * Annotate shlobj.h. Modified: trunk/reactos/include/psdk/shlobj.h Modified: trunk/reactos/include/psdk/shlobj.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/shlobj.h?rev=…
============================================================================== --- trunk/reactos/include/psdk/shlobj.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/shlobj.h [iso-8859-1] Mon Aug 12 22:19:46 2013 @@ -81,46 +81,171 @@ DECLARE_HANDLE(HPSXA); #endif -UINT WINAPI SHAddFromPropSheetExtArray(HPSXA,LPFNADDPROPSHEETPAGE,LPARAM); +UINT +WINAPI +SHAddFromPropSheetExtArray( + _In_ HPSXA, + _In_ LPFNADDPROPSHEETPAGE, + LPARAM); + LPVOID WINAPI SHAlloc(SIZE_T) __WINE_ALLOC_SIZE(1); -HRESULT WINAPI SHCoCreateInstance(LPCWSTR,const CLSID*,IUnknown*,REFIID,LPVOID*); -HPSXA WINAPI SHCreatePropSheetExtArray(HKEY,LPCWSTR,UINT); + +HRESULT +WINAPI +SHCoCreateInstance( + _In_opt_ LPCWSTR, + _In_opt_ const CLSID*, + _In_opt_ IUnknown*, + _In_ REFIID, + _Outptr_ LPVOID*); + +HPSXA WINAPI SHCreatePropSheetExtArray(_In_ HKEY, _In_opt_ LPCWSTR, UINT); HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY,LPCWSTR,UINT,IDataObject*); -HRESULT WINAPI SHCreateShellItem(LPCITEMIDLIST,IShellFolder*,LPCITEMIDLIST,IShellItem**); -DWORD WINAPI SHCLSIDFromStringA(LPCSTR,CLSID*); -DWORD WINAPI SHCLSIDFromStringW(LPCWSTR,CLSID*); + +HRESULT +WINAPI +SHCreateShellItem( + _In_opt_ LPCITEMIDLIST, + _In_opt_ IShellFolder*, + _In_ LPCITEMIDLIST, + _Outptr_ IShellItem**); + +DWORD WINAPI SHCLSIDFromStringA(_In_ LPCSTR, _Out_ CLSID*); +DWORD WINAPI SHCLSIDFromStringW(_In_ LPCWSTR, _Out_ CLSID*); #define SHCLSIDFromString WINELIB_NAME_AW(SHCLSIDFromString) -HRESULT WINAPI SHCreateStdEnumFmtEtc(UINT,const FORMATETC *,IEnumFORMATETC**); -void WINAPI SHDestroyPropSheetExtArray(HPSXA); -BOOL WINAPI SHFindFiles(LPCITEMIDLIST,LPCITEMIDLIST); -DWORD WINAPI SHFormatDrive(HWND,UINT,UINT,UINT); -void WINAPI SHFree(LPVOID); -BOOL WINAPI GetFileNameFromBrowse(HWND,LPWSTR,UINT,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); -HRESULT WINAPI SHGetInstanceExplorer(IUnknown**); -VOID WINAPI SHSetInstanceExplorer (IUnknown*); -HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR); -HRESULT WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR); -#define SHGetFolderPathAndSubDir WINELIB_NAME_AW(SHGetFolderPathAndSubDir); -BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR); -BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR); -#define SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList) -INT WINAPI SHHandleUpdateImage(LPCITEMIDLIST); -HRESULT WINAPI SHILCreateFromPath(LPCWSTR,LPITEMIDLIST*,DWORD*); + +HRESULT +WINAPI +SHCreateStdEnumFmtEtc( + _In_ UINT cfmt, + _In_reads_(cfmt) const FORMATETC *, + _Outptr_ IEnumFORMATETC**); + +void WINAPI SHDestroyPropSheetExtArray(_In_ HPSXA); +BOOL WINAPI SHFindFiles(_In_opt_ LPCITEMIDLIST, _In_opt_ LPCITEMIDLIST); +DWORD WINAPI SHFormatDrive(_In_ HWND, UINT, UINT, UINT); +void WINAPI SHFree(_In_opt_ LPVOID); + +BOOL +WINAPI +GetFileNameFromBrowse( + _In_opt_ HWND, + _Inout_updates_(cchFilePath) LPWSTR, + UINT cchFilePath, + _In_opt_ LPCWSTR, + _In_ LPCWSTR, + _In_opt_ LPCWSTR, + _In_opt_ LPCWSTR); + +_Check_return_ HRESULT WINAPI SHGetInstanceExplorer(_Outptr_ IUnknown**); + +VOID WINAPI SHSetInstanceExplorer(_In_opt_ IUnknown*); + +HRESULT +WINAPI +SHGetFolderPathAndSubDirA( + _Reserved_ HWND, + _In_ int, + _In_opt_ HANDLE, + _In_ DWORD, + _In_opt_ LPCSTR, _Out_writes_(MAX_PATH) LPSTR); + +HRESULT +WINAPI +SHGetFolderPathAndSubDirW( + _Reserved_ HWND, + _In_ int, + _In_opt_ HANDLE, + _In_ DWORD, + _In_opt_ LPCWSTR, + _Out_writes_(MAX_PATH) LPWSTR); + +#define SHGetFolderPathAndSubDir WINELIB_NAME_AW(SHGetFolderPathAndSubDir); + +_Success_(return != 0) +BOOL +WINAPI +SHGetPathFromIDListA( + _In_ LPCITEMIDLIST, + _Out_writes_(MAX_PATH) LPSTR); + +_Success_(return != 0) +BOOL +WINAPI +SHGetPathFromIDListW( + _In_ LPCITEMIDLIST, + _Out_writes_(MAX_PATH) LPWSTR); + +#define SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList) + +INT WINAPI SHHandleUpdateImage(_In_ LPCITEMIDLIST); + +HRESULT +WINAPI +SHILCreateFromPath( + _In_ LPCWSTR, + _Outptr_ LPITEMIDLIST*, + _Inout_opt_ DWORD*); + HRESULT WINAPI SHLoadOLE(LPARAM); -HRESULT WINAPI SHParseDisplayName(LPCWSTR,IBindCtx*,LPITEMIDLIST*,SFGAOF,SFGAOF*); -HRESULT WINAPI SHPathPrepareForWriteA(HWND,IUnknown*,LPCSTR,DWORD); -HRESULT WINAPI SHPathPrepareForWriteW(HWND,IUnknown*,LPCWSTR,DWORD); -#define SHPathPrepareForWrite WINELIB_NAME_AW(SHPathPrepareForWrite); -UINT WINAPI SHReplaceFromPropSheetExtArray(HPSXA,UINT,LPFNADDPROPSHEETPAGE,LPARAM); + +HRESULT +WINAPI +SHParseDisplayName( + _In_ LPCWSTR, + _In_opt_ IBindCtx*, + _Outptr_ LPITEMIDLIST*, + _In_ SFGAOF, + _Out_opt_ SFGAOF*); + +HRESULT +WINAPI +SHPathPrepareForWriteA( + _In_opt_ HWND, + _In_opt_ IUnknown*, + _In_ LPCSTR, DWORD); + +HRESULT +WINAPI +SHPathPrepareForWriteW( + _In_opt_ HWND, + _In_opt_ IUnknown*, + _In_ LPCWSTR, DWORD); + +#define SHPathPrepareForWrite WINELIB_NAME_AW(SHPathPrepareForWrite); + +UINT +WINAPI +SHReplaceFromPropSheetExtArray( + _In_ HPSXA, + UINT, + _In_ LPFNADDPROPSHEETPAGE, + LPARAM); + LPITEMIDLIST WINAPI SHSimpleIDListFromPath(LPCWSTR); -int WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder*,LPCITEMIDLIST,int*); + +int +WINAPI +SHMapPIDLToSystemImageListIndex( + _In_ IShellFolder*, + _In_ LPCITEMIDLIST, + _Out_opt_ int*); + HRESULT WINAPI SHStartNetConnectionDialog(HWND,LPCSTR,DWORD); -VOID WINAPI SHUpdateImageA(LPCSTR,INT,UINT,INT); -VOID WINAPI SHUpdateImageW(LPCWSTR,INT,UINT,INT); -INT WINAPI PickIconDlg(HWND,LPWSTR,UINT,int *); +VOID WINAPI SHUpdateImageA(_In_ LPCSTR, INT, UINT, INT); +VOID WINAPI SHUpdateImageW(_In_ LPCWSTR, INT, UINT, INT); + +INT +WINAPI +PickIconDlg( + _In_opt_ HWND, + _Inout_updates_(cchIconPath) LPWSTR, + UINT cchIconPath, + _Inout_opt_ int *); + #define SHUpdateImage WINELIB_NAME_AW(SHUpdateImage) -int WINAPI RestartDialog(HWND,LPCWSTR,DWORD); -int WINAPI RestartDialogEx(HWND,LPCWSTR,DWORD,DWORD); +int WINAPI RestartDialog(_In_opt_ HWND, _In_opt_ LPCWSTR, DWORD); +int WINAPI RestartDialogEx(_In_opt_ HWND, _In_opt_ LPCWSTR, DWORD, DWORD); BOOL WINAPI IsUserAnAdmin(void); #define SHFMT_ERROR 0xFFFFFFFFL /* Error on last format, drive may be formattable */ @@ -146,7 +271,13 @@ #define SHOP_FILEPATH 0x02 #define SHOP_VOLUMEGUID 0x04 -BOOL WINAPI SHObjectProperties(HWND,DWORD,LPCWSTR,LPCWSTR); +BOOL +WINAPI +SHObjectProperties( + _In_opt_ HWND, + _In_ DWORD, + _In_ LPCWSTR, + _In_opt_ LPCWSTR); #define PCS_FATAL 0x80000000 #define PCS_REPLACEDCHAR 0x00000001 @@ -154,7 +285,7 @@ #define PCS_TRUNCATED 0x00000004 #define PCS_PATHTOOLONG 0x00000008 -int WINAPI PathCleanupSpec(LPCWSTR,LPWSTR); +int WINAPI PathCleanupSpec(_In_opt_ LPCWSTR, _Inout_ LPWSTR); /***************************************************************************** * IContextMenu interface @@ -394,7 +525,7 @@ STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; /*** IShellDetails methods ***/ - STDMETHOD(GetDetailsOf)(THIS_ PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *pDetails) PURE; + STDMETHOD(GetDetailsOf)(THIS_ _In_opt_ PCUITEMID_CHILD pidl, UINT iColumn, _Out_ SHELLDETAILS *pDetails) PURE; STDMETHOD(ColumnClick)(THIS_ UINT iColumn) PURE; }; #undef INTERFACE @@ -418,8 +549,8 @@ STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; /*** IQueryInfo methods ***/ - STDMETHOD(GetInfoTip)(THIS_ DWORD dwFlags, WCHAR** lppTips) PURE; - STDMETHOD(GetInfoFlags)(THIS_ DWORD* lpFlags) PURE; + STDMETHOD(GetInfoTip)(THIS_ DWORD dwFlags, _Outptr_ WCHAR** lppTips) PURE; + STDMETHOD(GetInfoFlags)(THIS_ _Out_ DWORD* lpFlags) PURE; }; #undef INTERFACE @@ -490,8 +621,8 @@ STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; /*** IObjMgr methods ***/ - STDMETHOD(Append)(THIS_ LPUNKNOWN punk) PURE; - STDMETHOD(Remove)(THIS_ LPUNKNOWN punk) PURE; + STDMETHOD(Append)(THIS_ _In_ LPUNKNOWN punk) PURE; + STDMETHOD(Remove)(THIS_ _In_ LPUNKNOWN punk) PURE; }; #undef INTERFACE @@ -514,7 +645,7 @@ STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; /*** IACList methods ***/ - STDMETHOD(Expand)(THIS_ LPCOLESTR str) PURE; + STDMETHOD(Expand)(THIS_ _In_ LPCOLESTR str) PURE; }; #undef INTERFACE @@ -539,7 +670,7 @@ STDMETHOD(Expand)(THIS_ LPCOLESTR str) PURE; /*** IACList2 methods ***/ STDMETHOD(SetOptions)(THIS_ DWORD dwFlag) PURE; - STDMETHOD(GetOptions)(THIS_ DWORD* pdwFlag) PURE; + STDMETHOD(GetOptions)(THIS_ _Out_ DWORD* pdwFlag) PURE; }; #undef INTERFACE @@ -605,33 +736,33 @@ /*** IShellFolderView methods ***/ STDMETHOD(Rearrange) (THIS_ LPARAM lParamSort) PURE; - STDMETHOD(GetArrangeParam) (THIS_ LPARAM *plParamSort) PURE; + STDMETHOD(GetArrangeParam) (THIS_ _Out_ LPARAM *plParamSort) PURE; STDMETHOD(ArrangeGrid) (THIS) PURE; STDMETHOD(AutoArrange) (THIS) PURE; STDMETHOD(GetAutoArrange) (THIS) PURE; - STDMETHOD(AddObject) (THIS_ PITEMID_CHILD pidl, UINT *puItem) PURE; - STDMETHOD(GetObject) (THIS_ PITEMID_CHILD *ppidl, UINT uItem) PURE; - STDMETHOD(RemoveObject) (THIS_ PITEMID_CHILD pidl, UINT *puItem) PURE; - STDMETHOD(GetObjectCount) (THIS_ UINT *puCount) PURE; + STDMETHOD(AddObject) (THIS_ _In_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE; + STDMETHOD(GetObject) (THIS_ _Outptr_ PITEMID_CHILD *ppidl, UINT uItem) PURE; + STDMETHOD(RemoveObject) (THIS_ _In_opt_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE; + STDMETHOD(GetObjectCount) (THIS_ _Out_ UINT *puCount) PURE; STDMETHOD(SetObjectCount) (THIS_ UINT uCount, UINT dwFlags) PURE; - STDMETHOD(UpdateObject) (THIS_ PITEMID_CHILD pidlOld, PITEMID_CHILD pidlNew, UINT *puItem) PURE; - STDMETHOD(RefreshObject) (THIS_ PITEMID_CHILD pidl, UINT *puItem) PURE; + STDMETHOD(UpdateObject) (THIS_ _In_ PITEMID_CHILD pidlOld, _In_ PITEMID_CHILD pidlNew, _Out_ UINT *puItem) PURE; + STDMETHOD(RefreshObject) (THIS_ _In_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE; STDMETHOD(SetRedraw) (THIS_ BOOL bRedraw) PURE; - STDMETHOD(GetSelectedCount) (THIS_ UINT *puSelected) PURE; - STDMETHOD(GetSelectedObjects) (THIS_ PCITEMID_CHILD **pppidl, UINT *puItems) PURE; - STDMETHOD(IsDropOnSource) (THIS_ IDropTarget *pDropTarget) PURE; - STDMETHOD(GetDragPoint) (THIS_ POINT *ppt) PURE; - STDMETHOD(GetDropPoint) (THIS_ POINT *ppt) PURE; - STDMETHOD(MoveIcons) (THIS_ IDataObject *pDataObject) PURE; - STDMETHOD(SetItemPos) (THIS_ PCUITEMID_CHILD pidl, POINT *ppt) PURE; - STDMETHOD(IsBkDropTarget) (THIS_ IDropTarget *pDropTarget) PURE; + STDMETHOD(GetSelectedCount) (THIS_ _Out_ UINT *puSelected) PURE; + STDMETHOD(GetSelectedObjects) (THIS_ _Outptr_result_buffer_(*puItems) PCITEMID_CHILD **pppidl, _Out_ UINT *puItems) PURE; + STDMETHOD(IsDropOnSource) (THIS_ _In_opt_ IDropTarget *pDropTarget) PURE; + STDMETHOD(GetDragPoint) (THIS_ _Out_ POINT *ppt) PURE; + STDMETHOD(GetDropPoint) (THIS_ _Out_ POINT *ppt) PURE; + STDMETHOD(MoveIcons) (THIS_ _In_ IDataObject *pDataObject) PURE; + STDMETHOD(SetItemPos) (THIS_ _In_ PCUITEMID_CHILD pidl, _In_ POINT *ppt) PURE; + STDMETHOD(IsBkDropTarget) (THIS_ _In_opt_ IDropTarget *pDropTarget) PURE; STDMETHOD(SetClipboard) (THIS_ BOOL bMove) PURE; - STDMETHOD(SetPoints) (THIS_ IDataObject *pDataObject) PURE; - STDMETHOD(GetItemSpacing) (THIS_ ITEMSPACING *pSpacing) PURE; - STDMETHOD(SetCallback) (THIS_ IShellFolderViewCB* pNewCB, IShellFolderViewCB** ppOldCB) PURE; + STDMETHOD(SetPoints) (THIS_ _In_ IDataObject *pDataObject) PURE; + STDMETHOD(GetItemSpacing) (THIS_ _Out_ ITEMSPACING *pSpacing) PURE; + STDMETHOD(SetCallback) (THIS_ _In_opt_ IShellFolderViewCB* pNewCB, _Outptr_result_maybenull_ IShellFolderViewCB** ppOldCB) PURE; STDMETHOD(Select) ( THIS_ UINT dwFlags ) PURE; - STDMETHOD(QuerySupport) (THIS_ UINT * pdwSupport ) PURE; - STDMETHOD(SetAutomationObject)(THIS_ IDispatch* pdisp) PURE; + STDMETHOD(QuerySupport) (THIS_ _Inout_ UINT * pdwSupport) PURE; + STDMETHOD(SetAutomationObject)(THIS_ _In_opt_ IDispatch* pdisp) PURE; }; #undef INTERFACE @@ -693,16 +824,16 @@ STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; /*** IProgressDialog methods ***/ - STDMETHOD(StartProgressDialog)(THIS_ HWND hwndParent, IUnknown *punkEnableModeless, DWORD dwFlags, LPCVOID reserved) PURE; + STDMETHOD(StartProgressDialog)(THIS_ _In_opt_ HWND hwndParent, _In_opt_ IUnknown *punkEnableModeless, DWORD dwFlags, _Reserved_ LPCVOID reserved) PURE; STDMETHOD(StopProgressDialog)(THIS) PURE; - STDMETHOD(SetTitle)(THIS_ LPCWSTR pwzTitle) PURE; - STDMETHOD(SetAnimation)(THIS_ HINSTANCE hInstance, UINT uiResourceId) PURE; + STDMETHOD(SetTitle)(THIS_ _In_ LPCWSTR pwzTitle) PURE; + STDMETHOD(SetAnimation)(THIS_ _In_opt_ HINSTANCE hInstance, UINT uiResourceId) PURE; STDMETHOD_(BOOL,HasUserCancelled)(THIS) PURE; STDMETHOD(SetProgress)(THIS_ DWORD dwCompleted, DWORD dwTotal) PURE; STDMETHOD(SetProgress64)(THIS_ ULONGLONG ullCompleted, ULONGLONG ullTotal) PURE; - STDMETHOD(SetLine)(THIS_ DWORD dwLineNum, LPCWSTR pwzString, BOOL bPath, LPCVOID reserved) PURE; - STDMETHOD(SetCancelMsg)(THIS_ LPCWSTR pwzCancelMsg, LPCVOID reserved) PURE; - STDMETHOD(Timer)(THIS_ DWORD dwTimerAction, LPCVOID reserved) PURE; + STDMETHOD(SetLine)(THIS_ DWORD dwLineNum, _In_ LPCWSTR pwzString, BOOL bPath, _Reserved_ LPCVOID reserved) PURE; + STDMETHOD(SetCancelMsg)(THIS_ _In_ LPCWSTR pwzCancelMsg, _Reserved_ LPCVOID reserved) PURE; + STDMETHOD(Timer)(THIS_ DWORD dwTimerAction, _Reserved_ LPCVOID reserved) PURE; }; #undef INTERFACE @@ -737,10 +868,10 @@ STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND*) PURE; STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL) PURE; /*** IDeskBarClient methods ***/ - STDMETHOD_(HRESULT,SetDeskBarSite)(THIS_ IUnknown*) PURE; + STDMETHOD_(HRESULT,SetDeskBarSite)(THIS_ _In_opt_ IUnknown*) PURE; STDMETHOD_(HRESULT,SetModeDBC)(THIS_ DWORD) PURE; STDMETHOD_(HRESULT,UIActivateDBC)(THIS_ DWORD) PURE; - STDMETHOD_(HRESULT,GetSize)(THIS_ DWORD,LPRECT) PURE; + STDMETHOD_(HRESULT,GetSize)(THIS_ DWORD, _Out_ LPRECT) PURE; }; #undef INTERFACE @@ -775,7 +906,7 @@ #define SHARD_PATHW 0x00000003L #define SHARD_PATH WINELIB_NAME_AW(SHARD_PATH) -void WINAPI SHAddToRecentDocs(UINT,LPCVOID); +void WINAPI SHAddToRecentDocs(UINT, _In_opt_ LPCVOID); /**************************************************************************** * SHBrowseForFolder API @@ -846,9 +977,10 @@ #define BFFM_SETOKTEXT (WM_USER+105) #define BFFM_SETEXPANDED (WM_USER+106) -LPITEMIDLIST WINAPI SHBrowseForFolderA(LPBROWSEINFOA lpbi); -LPITEMIDLIST WINAPI SHBrowseForFolderW(LPBROWSEINFOW lpbi); -#define SHBrowseForFolder WINELIB_NAME_AW(SHBrowseForFolder) +LPITEMIDLIST WINAPI SHBrowseForFolderA(_In_ LPBROWSEINFOA lpbi); +LPITEMIDLIST WINAPI SHBrowseForFolderW(_In_ LPBROWSEINFOW lpbi); +#define SHBrowseForFolder WINELIB_NAME_AW(SHBrowseForFolder) + #define BFFM_SETSTATUSTEXT WINELIB_NAME_AW(BFFM_SETSTATUSTEXT) #define BFFM_SETSELECTION WINELIB_NAME_AW(BFFM_SETSELECTION) #define BFFM_VALIDATEFAILED WINELIB_NAME_AW(BFFM_VALIDATEFAILED) @@ -857,13 +989,14 @@ * SHCreateShellFolderViewEx API */ -typedef HRESULT (CALLBACK *LPFNVIEWCALLBACK)( - IShellView* dwUser, - IShellFolder* pshf, - HWND hWnd, - UINT uMsg, - WPARAM wParam, - LPARAM lParam); +typedef HRESULT +(CALLBACK *LPFNVIEWCALLBACK)( + _In_ IShellView* dwUser, + _In_ IShellFolder* pshf, + _In_ HWND hWnd, + UINT uMsg, + WPARAM wParam, + LPARAM lParam); #include <pshpack8.h> @@ -880,7 +1013,11 @@ #include <poppack.h> -HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV pshfvi, IShellView **ppshv); +HRESULT +WINAPI +SHCreateShellFolderViewEx( + _In_ LPCSFV pshfvi, + _Outptr_ IShellView **ppshv); /* SHCreateShellFolderViewEx callback messages */ #define SFVM_MERGEMENU 1 @@ -952,7 +1089,11 @@ #include <poppack.h> -HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pscfv, IShellView **ppsv); +HRESULT +WINAPI +SHCreateShellFolderView( + _In_ const SFV_CREATE *pscfv, + _Outptr_ IShellView **ppsv); /* Types and definitions for the SFM_* parameters */ #include <pshpack8.h> @@ -1000,10 +1141,12 @@ * SHShellFolderView_Message API */ -LRESULT WINAPI SHShellFolderView_Message( - HWND hwndCabinet, - UINT uMessage, - LPARAM lParam); +LRESULT +WINAPI +SHShellFolderView_Message( + _In_ HWND hwndCabinet, + UINT uMessage, + LPARAM lParam); /* SHShellFolderView_Message messages */ #define SFVM_REARRANGE 0x0001 @@ -1067,16 +1210,54 @@ #include <poppack.h> -HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb); -HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb); -#define SHGetDataFromIDList WINELIB_NAME_AW(SHGetDataFromIDList) - -LPITEMIDLIST WINAPI SHCloneSpecialIDList(HWND hwnd, int csidl, BOOL fCreate); -BOOL WINAPI SHGetSpecialFolderPathA (HWND hwndOwner, LPSTR szPath, int nFolder, BOOL bCreate); -BOOL WINAPI SHGetSpecialFolderPathW (HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate); -#define SHGetSpecialFolderPath WINELIB_NAME_AW(SHGetSpecialFolderPath) - -HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal) ; +HRESULT +WINAPI +SHGetDataFromIDListA( + _In_ LPSHELLFOLDER psf, + _In_ LPCITEMIDLIST pidl, + int nFormat, + _Out_writes_bytes_(cb) LPVOID pv, + int cb); + +HRESULT +WINAPI +SHGetDataFromIDListW( + _In_ LPSHELLFOLDER psf, + _In_ LPCITEMIDLIST pidl, + int nFormat, + _Out_writes_bytes_(cb) LPVOID pv, + int cb); + +#define SHGetDataFromIDList WINELIB_NAME_AW(SHGetDataFromIDList) + +LPITEMIDLIST +WINAPI +SHCloneSpecialIDList( + _Reserved_ HWND hwnd, + _In_ int csidl, + _In_ BOOL fCreate); + +_Success_(return != 0) +BOOL +WINAPI +SHGetSpecialFolderPathA( + _Reserved_ HWND hwndOwner, + _Out_writes_(MAX_PATH) LPSTR szPath, + _In_ int nFolder, + _In_ BOOL bCreate); + +_Success_(return != 0) +BOOL +WINAPI +SHGetSpecialFolderPathW( + _Reserved_ HWND hwndOwner, + _Out_writes_(MAX_PATH) LPWSTR szPath, + _In_ int nFolder, + _In_ BOOL bCreate); + +#define SHGetSpecialFolderPath WINELIB_NAME_AW(SHGetSpecialFolderPath) + +_Check_return_ HRESULT WINAPI SHGetMalloc(_Outptr_ LPMALLOC *lpmal); /********************************************************************** * SHGetSetSettings () @@ -1141,7 +1322,7 @@ UINT :15; /* Required for proper binary layout with gcc */ } SHELLFLAGSTATE, * LPSHELLFLAGSTATE; -VOID WINAPI SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask); +VOID WINAPI SHGetSettings(_Out_ LPSHELLFLAGSTATE lpsfs, DWORD dwMask); #define SSF_SHOWALLOBJECTS 0x0001 #define SSF_SHOWEXTENSIONS 0x0002 @@ -1520,28 +1701,75 @@ USHORT cbZero; } SHChangeProductKeyAsIDList, *LPSHChangeProductKeyAsIDList; -ULONG WINAPI SHChangeNotifyRegister(HWND hwnd, int fSources, LONG fEvents, UINT wMsg, - int cEntries, SHChangeNotifyEntry *pshcne); +ULONG +WINAPI +SHChangeNotifyRegister( + _In_ HWND hwnd, + int fSources, + LONG fEvents, + UINT wMsg, + int cEntries, + _In_ SHChangeNotifyEntry *pshcne); + BOOL WINAPI SHChangeNotifyDeregister(ULONG ulID); -HANDLE WINAPI SHChangeNotification_Lock(HANDLE hChangeNotification, DWORD dwProcessId, - LPITEMIDLIST **pppidl, LONG *plEvent); -BOOL WINAPI SHChangeNotification_Unlock(HANDLE hLock); - -HRESULT WINAPI SHGetRealIDL(IShellFolder *psf, LPCITEMIDLIST pidlSimple, LPITEMIDLIST * ppidlReal); + +HANDLE +WINAPI +SHChangeNotification_Lock( + _In_ HANDLE hChangeNotification, + DWORD dwProcessId, + _Outptr_opt_result_buffer_(2)_Outptr_opt_result_buffer_(2) LPITEMIDLIST **pppidl, + _Out_opt_ LONG *plEvent); + +BOOL WINAPI SHChangeNotification_Unlock(_In_ HANDLE hLock); + +HRESULT +WINAPI +SHGetRealIDL( + _In_ IShellFolder *psf, + _In_ LPCITEMIDLIST pidlSimple, + _Outptr_ LPITEMIDLIST * ppidlReal); /**************************************************************************** * SHCreateDirectory API */ -int WINAPI SHCreateDirectory(HWND, LPCWSTR); -int WINAPI SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES); -int WINAPI SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES); -#define SHCreateDirectoryEx WINELIB_NAME_AW(SHCreateDirectoryEx) +int WINAPI SHCreateDirectory(_In_opt_ HWND, _In_ LPCWSTR); + +int +WINAPI +SHCreateDirectoryExA( + _In_opt_ HWND, + _In_ LPCSTR, + _In_opt_ LPSECURITY_ATTRIBUTES); + +int +WINAPI +SHCreateDirectoryExW( + _In_opt_ HWND, + _In_ LPCWSTR, + _In_opt_ LPSECURITY_ATTRIBUTES); + +#define SHCreateDirectoryEx WINELIB_NAME_AW(SHCreateDirectoryEx) /**************************************************************************** * SHGetSpecialFolderLocation API */ -HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, int nFolder, LPITEMIDLIST * ppidl); -HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl); +_Check_return_ +HRESULT +WINAPI +SHGetSpecialFolderLocation( + _Reserved_ HWND hwndOwner, + _In_ int nFolder, + _Outptr_ LPITEMIDLIST *ppidl); + +HRESULT +WINAPI +SHGetFolderLocation( + _Reserved_ HWND hwndOwner, + _In_ int nFolder, + _In_opt_ HANDLE hToken, + _In_ DWORD dwReserved, + _Outptr_ LPITEMIDLIST *ppidl); /**************************************************************************** * SHGetFolderPath API @@ -1551,9 +1779,25 @@ SHGFP_TYPE_DEFAULT = 1 } SHGFP_TYPE; -HRESULT WINAPI SHGetFolderPathA(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPSTR pszPath); -HRESULT WINAPI SHGetFolderPathW(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath); -#define SHGetFolderPath WINELIB_NAME_AW(SHGetFolderPath) +HRESULT +WINAPI +SHGetFolderPathA( + _Reserved_ HWND hwnd, + _In_ int nFolder, + _In_opt_ HANDLE hToken, + _In_ DWORD dwFlags, + _Out_writes_(MAX_PATH) LPSTR pszPath); + +HRESULT +WINAPI +SHGetFolderPathW( + _Reserved_ HWND hwnd, + _In_ int nFolder, + _In_opt_ HANDLE hToken, + _In_ DWORD dwFlags, + _Out_writes_(MAX_PATH) LPWSTR pszPath); + +#define SHGetFolderPath WINELIB_NAME_AW(SHGetFolderPath) #define CSIDL_DESKTOP 0x0000 #define CSIDL_INTERNET 0x0001 @@ -1624,21 +1868,43 @@ /**************************************************************************** * SHGetDesktopFolder API */ -HRESULT WINAPI SHGetDesktopFolder(IShellFolder * *); +_Check_return_ HRESULT WINAPI SHGetDesktopFolder(_Outptr_ IShellFolder * *); /**************************************************************************** * SHBindToParent API */ -HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast); +HRESULT +WINAPI +SHBindToParent( + _In_ LPCITEMIDLIST pidl, + _In_ REFIID riid, + _Outptr_ LPVOID *ppv, + _Outptr_opt_ LPCITEMIDLIST *ppidlLast); /**************************************************************************** * SHDefExtractIcon API */ -HRESULT WINAPI SHDefExtractIconA(LPCSTR pszIconFile, int iIndex, UINT uFlags, - HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize); -HRESULT WINAPI SHDefExtractIconW(LPCWSTR pszIconFile, int iIndex, UINT uFlags, - HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize); -#define SHDefExtractIcon WINELIB_NAME_AW(SHDefExtractIcon) +HRESULT +WINAPI +SHDefExtractIconA( + _In_ LPCSTR pszIconFile, + int iIndex, + UINT uFlags, + _Out_opt_ HICON* phiconLarge, + _Out_opt_ HICON* phiconSmall, + UINT nIconSize); + +HRESULT +WINAPI +SHDefExtractIconW( + _In_ LPCWSTR pszIconFile, + int iIndex, + UINT uFlags, + _Out_opt_ HICON* phiconLarge, + _Out_opt_ HICON* phiconSmall, + UINT nIconSize); + +#define SHDefExtractIcon WINELIB_NAME_AW(SHDefExtractIcon) /* * DROPFILES for CF_HDROP and CF_PRINTERS @@ -1724,8 +1990,13 @@ #define CABINETSTATE_VERSION 2 -BOOL WINAPI ReadCabinetState(CABINETSTATE *, int); -BOOL WINAPI WriteCabinetState(CABINETSTATE *); +BOOL +WINAPI +ReadCabinetState( + _Out_writes_bytes_(cLength) CABINETSTATE *, + int cLength); + +BOOL WINAPI WriteCabinetState(_In_ CABINETSTATE *); /**************************************************************************** * Path Manipulation Routines @@ -1747,9 +2018,24 @@ #define PRF_FIRSTDIRDEF 0x04 #define PRF_DONTFINDLINK 0x08 -VOID WINAPI PathGetShortPath(LPWSTR pszPath); -LONG WINAPI PathProcessCommand(LPCWSTR, LPWSTR, int, DWORD); -BOOL WINAPI PathYetAnotherMakeUniqueName(LPWSTR, LPCWSTR, LPCWSTR, LPCWSTR); +VOID WINAPI PathGetShortPath(_Inout_updates_(MAX_PATH) LPWSTR pszPath); + +LONG +WINAPI +PathProcessCommand( + _In_ LPCWSTR, + _Out_writes_(cchDest) LPWSTR, + int cchDest, + DWORD); + +_Success_(return != 0) +BOOL +WINAPI +PathYetAnotherMakeUniqueName( + _Out_writes_(MAX_PATH) LPWSTR, + _In_ LPCWSTR, + _In_opt_ LPCWSTR, + _In_opt_ LPCWSTR); /**************************************************************************** * Drag And Drop Routines @@ -1768,11 +2054,19 @@ BOOL WINAPI DAD_SetDragImage(HIMAGELIST,LPPOINT); BOOL WINAPI DAD_DragEnterEx(HWND,POINT); -BOOL WINAPI DAD_DragEnterEx2(HWND,POINT,IDataObject*); +BOOL WINAPI DAD_DragEnterEx2(_In_ HWND, POINT, _In_opt_ IDataObject*); BOOL WINAPI DAD_DragMove(POINT); BOOL WINAPI DAD_DragLeave(void); BOOL WINAPI DAD_AutoScroll(HWND,AUTO_SCROLL_DATA*,const POINT*); -HRESULT WINAPI SHDoDragDrop(HWND,IDataObject*,IDropSource*,DWORD,LPDWORD); + +HRESULT +WINAPI +SHDoDragDrop( + _In_opt_ HWND, + _In_ IDataObject*, + _In_opt_ IDropSource*, + _In_ DWORD, + _Out_ LPDWORD); /**************************************************************************** * Internet shortcut properties @@ -1791,23 +2085,23 @@ #define PID_IS_COMMENT 13 -LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST,LPCSHITEMID,BOOL); -LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST); -LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST); -LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR); -LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR); +LPITEMIDLIST WINAPI ILAppendID(_In_opt_ LPITEMIDLIST, _In_ LPCSHITEMID, BOOL); +LPITEMIDLIST WINAPI ILClone(_In_ LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILCloneFirst(_In_ LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILCreateFromPathA(_In_ LPCSTR); +LPITEMIDLIST WINAPI ILCreateFromPathW(_In_ LPCWSTR); #define ILCreateFromPath WINELIB_NAME_AW(ILCreateFromPath) -LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST,LPCITEMIDLIST); -LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST,LPCITEMIDLIST); -LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST); -void WINAPI ILFree(LPITEMIDLIST); -LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST); -UINT WINAPI ILGetSize(LPCITEMIDLIST); -BOOL WINAPI ILIsEqual(LPCITEMIDLIST,LPCITEMIDLIST); -BOOL WINAPI ILIsParent(LPCITEMIDLIST,LPCITEMIDLIST,BOOL); -HRESULT WINAPI ILLoadFromStream(LPSTREAM,LPITEMIDLIST*); -BOOL WINAPI ILRemoveLastID(LPITEMIDLIST); -HRESULT WINAPI ILSaveToStream(LPSTREAM,LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILCombine(_In_opt_ LPCITEMIDLIST, _In_opt_ LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILFindChild(_In_ LPCITEMIDLIST, _In_ LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILFindLastID(_In_ LPCITEMIDLIST); +void WINAPI ILFree(_In_opt_ LPITEMIDLIST); +LPITEMIDLIST WINAPI ILGetNext(_In_opt_ LPCITEMIDLIST); +UINT WINAPI ILGetSize(_In_opt_ LPCITEMIDLIST); +BOOL WINAPI ILIsEqual(_In_ LPCITEMIDLIST, _In_ LPCITEMIDLIST); +BOOL WINAPI ILIsParent(_In_ LPCITEMIDLIST, _In_ LPCITEMIDLIST, BOOL); +HRESULT WINAPI ILLoadFromStream(_In_ LPSTREAM, _Inout_ LPITEMIDLIST*); +BOOL WINAPI ILRemoveLastID(_Inout_opt_ LPITEMIDLIST); +HRESULT WINAPI ILSaveToStream(_In_ LPSTREAM, _In_ LPCITEMIDLIST); #include <poppack.h> @@ -1818,7 +2112,15 @@ #define MM_SUBMENUSHAVEIDS 0x00000002L #define MM_DONTREMOVESEPS 0x00000004L -UINT WINAPI Shell_MergeMenus (HMENU hmDst, HMENU hmSrc, UINT uInsert, UINT uIDAdjust, UINT uIDAdjustMax, ULONG uFlags); +UINT +WINAPI +Shell_MergeMenus( + _In_ HMENU hmDst, + _In_ HMENU hmSrc, + UINT uInsert, + UINT uIDAdjust, + UINT uIDAdjustMax, + ULONG uFlags); /**************************************************************************** @@ -1838,12 +2140,37 @@ const HKEY *aKeys; }DEFCONTEXTMENU; -HRESULT WINAPI SHCreateDefaultContextMenu(const DEFCONTEXTMENU *,REFIID,void **ppv); - -typedef HRESULT (CALLBACK * LPFNDFMCALLBACK)(IShellFolder*,HWND,IDataObject*,UINT,WPARAM,LPARAM); -HRESULT WINAPI CDefFolderMenu_Create2(LPCITEMIDLIST,HWND,UINT,LPCITEMIDLIST*,IShellFolder*,LPFNDFMCALLBACK,UINT,const HKEY *,IContextMenu **); +HRESULT +WINAPI +SHCreateDefaultContextMenu( + _In_ const DEFCONTEXTMENU *, + _In_ REFIID, + _Outptr_ void **ppv); + +typedef HRESULT +(CALLBACK * LPFNDFMCALLBACK)( + _In_opt_ IShellFolder*, + _In_opt_ HWND, + _In_opt_ IDataObject*, + UINT, + WPARAM, + LPARAM); + +HRESULT +WINAPI +CDefFolderMenu_Create2( + _In_opt_ LPCITEMIDLIST, + _In_opt_ HWND, + UINT cidl, + _In_reads_opt_(cidl) LPCITEMIDLIST*, + _In_opt_ IShellFolder*, + _In_opt_ LPFNDFMCALLBACK, + UINT nKeys, + _In_reads_opt_(nKeys) const HKEY *, + _Outptr_ IContextMenu **); + /**************************************************************************** - * SHCreateDefaultContextMenu API + * SHCreateDefaultExtractIcon API */ HRESULT WINAPI @@ -1855,22 +2182,22 @@ */ HRESULT WINAPI SHCreateDataObject( - LPCITEMIDLIST pidlFolder, - UINT cidl, - LPCITEMIDLIST* apidl, - IDataObject *pdtInner, - REFIID riid, - void **ppv); + _In_opt_ LPCITEMIDLIST pidlFolder, + _In_ UINT cidl, + _In_reads_opt_(cidl) LPCITEMIDLIST* apidl, + _In_opt_ IDataObject *pdtInner, + _In_ REFIID riid, + _Outptr_ void **ppv); /**************************************************************************** * CIDLData_CreateFromIDArray API */ HRESULT WINAPI CIDLData_CreateFromIDArray( - LPCITEMIDLIST pidlFolder, - UINT cidl, - LPCITEMIDLIST* apidl, - IDataObject **ppdtobj); + _In_ LPCITEMIDLIST pidlFolder, + _In_ UINT cidl, + _In_reads_opt_(cidl) LPCITEMIDLIST* apidl, + _Outptr_ IDataObject **ppdtobj); /**************************************************************************** * SHOpenWithDialog @@ -1896,10 +2223,11 @@ OPEN_AS_INFO_FLAGS oaifInFlags; } OPENASINFO; -HRESULT WINAPI SHOpenWithDialog( - HWND hwndParent, - const OPENASINFO *poainfo -); +HRESULT +WINAPI +SHOpenWithDialog( + _In_opt_ HWND hwndParent, + _In_ const OPENASINFO *poainfo); #define INTERFACE IShellIconOverlayIdentifier @@ -1909,9 +2237,9 @@ STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; - STDMETHOD (IsMemberOf)(THIS_ LPCWSTR pwszPath, DWORD dwAttrib) PURE; - STDMETHOD (GetOverlayInfo)(THIS_ LPWSTR pwszIconFile, int cchMax, int * pIndex, DWORD * pdwFlags) PURE; - STDMETHOD (GetPriority)(THIS_ int * pIPriority) PURE; + STDMETHOD (IsMemberOf)(THIS_ _In_ LPCWSTR pwszPath, DWORD dwAttrib) PURE; + STDMETHOD (GetOverlayInfo)(THIS_ _Out_writes_(cchMax) LPWSTR pwszIconFile, int cchMax, _Out_ int * pIndex, _Out_ DWORD * pdwFlags) PURE; + STDMETHOD (GetPriority)(THIS_ _Out_ int * pIPriority) PURE; }; #if !defined(__cplusplus) || defined(CINTERFACE) @@ -1959,9 +2287,9 @@ STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; // *** IDockingWindowSite methods *** - STDMETHOD(GetBorderDW)(THIS_ IUnknown *punkObj, LPRECT prcBorder) PURE; - STDMETHOD(RequestBorderSpaceDW)(THIS_ IUnknown *punkObj, LPCBORDERWIDTHS pbw) PURE; - STDMETHOD(SetBorderSpaceDW)(THIS_ IUnknown *punkObj, LPCBORDERWIDTHS pbw) PURE; + STDMETHOD(GetBorderDW)(THIS_ _In_ IUnknown *punkObj, _Out_ LPRECT prcBorder) PURE; + STDMETHOD(RequestBorderSpaceDW)(THIS_ _In_ IUnknown *punkObj, _In_ LPCBORDERWIDTHS pbw) PURE; + STDMETHOD(SetBorderSpaceDW)(THIS_ _In_ IUnknown *punkObj, _In_ LPCBORDERWIDTHS pbw) PURE; }; #undef INTERFACE
11 years, 4 months
1
0
0
0
[akhaldi] 59714: [PSDK] * Update shlwapi.h. * Remove IUnknown_AtomicRelease() from shlwapi_undoc.h.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Aug 12 22:08:17 2013 New Revision: 59714 URL:
http://svn.reactos.org/svn/reactos?rev=59714&view=rev
Log: [PSDK] * Update shlwapi.h. * Remove IUnknown_AtomicRelease() from shlwapi_undoc.h. Modified: trunk/reactos/include/psdk/shlwapi.h trunk/reactos/include/psdk/shlwapi_undoc.h Modified: trunk/reactos/include/psdk/shlwapi.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/shlwapi.h?rev…
============================================================================== --- trunk/reactos/include/psdk/shlwapi.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/shlwapi.h [iso-8859-1] Mon Aug 12 22:08:17 2013 @@ -319,7 +319,11 @@ #endif /* NO_SHLWAPI_REG */ +void WINAPI IUnknown_Set(IUnknown **ppunk, IUnknown *punk); +void WINAPI IUnknown_AtomicRelease(IUnknown **punk); +HRESULT WINAPI IUnknown_GetWindow(IUnknown *punk, HWND *phwnd); HRESULT WINAPI IUnknown_SetSite(IUnknown *punk, IUnknown *punkSite); +HRESULT WINAPI IUnknown_GetSite(IUnknown *punk, REFIID riid, void **ppv); HRESULT WINAPI IUnknown_QueryService(IUnknown *punk, REFGUID guidService, REFIID riid, void **ppvOut); /* Path functions */ @@ -368,16 +372,18 @@ int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR); #define PathCommonPrefix WINELIB_NAME_AW(PathCommonPrefix) -HRESULT WINAPI PathCreateFromUrlA(LPCSTR pszUrl, LPSTR pszPath, LPDWORD pcchPath, DWORD dwReserved); -HRESULT WINAPI PathCreateFromUrlW(LPCWSTR pszUrl, LPWSTR pszPath, LPDWORD pcchPath, DWORD dwReserved); +HRESULT WINAPI PathCreateFromUrlA(LPCSTR,LPSTR,LPDWORD,DWORD); +HRESULT WINAPI PathCreateFromUrlW(LPCWSTR,LPWSTR,LPDWORD,DWORD); #define PathCreateFromUrl WINELIB_NAME_AW(PathCreateFromUrl) + +HRESULT WINAPI PathCreateFromUrlAlloc(LPCWSTR,LPWSTR*,DWORD); BOOL WINAPI PathFileExistsA(LPCSTR); BOOL WINAPI PathFileExistsW(LPCWSTR); #define PathFileExists WINELIB_NAME_AW(PathFileExists) -BOOL WINAPI PathFileExistsAndAttributesA(LPCSTR lpszPath, DWORD *dwAttr); -BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR lpszPath, DWORD *dwAttr); +BOOL WINAPI PathFileExistsAndAttributesA(LPCSTR,DWORD*); +BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR,DWORD*); #define PathFileExistsAndAttributes WINELIB_NAME_AW(PathFileExistsAndAttributes) LPSTR WINAPI PathFindExtensionA(LPCSTR); @@ -697,7 +703,7 @@ #define UrlIsOpaque WINELIB_NAME_AW(UrlIsOpaque) #define UrlIsFileUrlA(x) UrlIsA(x, URLIS_FILEURL) -#define UrlIsFileUrlW(y) UrlIsW(x, URLIS_FILEURL) +#define UrlIsFileUrlW(x) UrlIsW(x, URLIS_FILEURL) #define UrlIsFileUrl WINELIB_NAME_AW(UrlIsFileUrl) HRESULT WINAPI UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD); @@ -877,6 +883,9 @@ LPWSTR WINAPI StrStrIW(LPCWSTR,LPCWSTR); #define StrStrI WINELIB_NAME_AW(StrStrI) +LPWSTR WINAPI StrStrNW(LPCWSTR,LPCWSTR,UINT); +LPWSTR WINAPI StrStrNIW(LPCWSTR,LPCWSTR,UINT); + int WINAPI StrToIntA(LPCSTR); int WINAPI StrToIntW(LPCWSTR); #define StrToInt WINELIB_NAME_AW(StrToInt) @@ -926,6 +935,10 @@ HRESULT WINAPI StrRetToBSTR(STRRET*,LPCITEMIDLIST,BSTR*); +BOOL WINAPI IsCharSpaceA(CHAR); +BOOL WINAPI IsCharSpaceW(WCHAR); +#define IsCharSpace WINELIB_NAME_AW(IsCharSpace) + #endif /* NO_SHLWAPI_STRFCNS */ @@ -942,6 +955,8 @@ #endif /* NO_SHLWAPI_GDI */ +/* Security functions */ +BOOL WINAPI IsInternetESCEnabled(void); /* Stream functions */ #ifndef NO_SHLWAPI_STREAM @@ -981,6 +996,7 @@ HRESULT WINAPI SHAutoComplete(HWND,DWORD); /* Threads */ +HRESULT WINAPI SHCreateThreadRef(LONG*, IUnknown**); HRESULT WINAPI SHGetThreadRef(IUnknown**); HRESULT WINAPI SHSetThreadRef(IUnknown*); HRESULT WINAPI SHReleaseThreadRef(void); Modified: trunk/reactos/include/psdk/shlwapi_undoc.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/shlwapi_undoc…
============================================================================== --- trunk/reactos/include/psdk/shlwapi_undoc.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/shlwapi_undoc.h [iso-8859-1] Mon Aug 12 22:08:17 2013 @@ -52,7 +52,6 @@ LONG WINAPI SHSetWindowBits(HWND hwnd, INT offset, UINT wMask, UINT wFlags); HWND WINAPI SHSetParentHwnd(HWND hWnd, HWND hWndParent); HRESULT WINAPI ConnectToConnectionPoint(IUnknown *lpUnkSink, REFIID riid, BOOL bAdviseOnly, IUnknown *lpUnknown, LPDWORD lpCookie, IConnectionPoint **lppCP); -DWORD WINAPI IUnknown_AtomicRelease(IUnknown **lpUnknown); BOOL WINAPI SHIsSameObject(IUnknown *lpInt1, IUnknown *lpInt2); HRESULT WINAPI IUnknown_GetWindow(IUnknown *lpUnknown, HWND *lphWnd); HRESULT WINAPI IUnknown_SetOwner(IUnknown *pUnk, ULONG arg);
11 years, 4 months
1
0
0
0
[aandrejevic] 59713: [NTVDM] Synchronize with trunk again for SetConsolePalette. Implement VGA palettes for graphics mode and DAC register access.
by aandrejevic@svn.reactos.org
Author: aandrejevic Date: Mon Aug 12 19:31:54 2013 New Revision: 59713 URL:
http://svn.reactos.org/svn/reactos?rev=59713&view=rev
Log: [NTVDM] Synchronize with trunk again for SetConsolePalette. Implement VGA palettes for graphics mode and DAC register access. Modified: branches/ntvdm/ (props changed) branches/ntvdm/CMakeLists.txt branches/ntvdm/base/services/umpnpmgr/umpnpmgr.c branches/ntvdm/dll/win32/kernel32/client/console/console.c branches/ntvdm/dll/win32/netapi32/access.c branches/ntvdm/dll/win32/netapi32/netapi32.spec branches/ntvdm/dll/win32/netapi32/user.c branches/ntvdm/dll/win32/setupapi/cfgmgr.c branches/ntvdm/dll/win32/setupapi/devinst.c branches/ntvdm/drivers/hid/hidparse/ (props changed) branches/ntvdm/drivers/hid/hidusb/ (props changed) branches/ntvdm/drivers/network/lan/include/net_wh.h branches/ntvdm/drivers/network/tcpip/include/fileobjs.h branches/ntvdm/drivers/network/tcpip/include/tcp.h branches/ntvdm/drivers/network/tcpip/include/tcpip.h branches/ntvdm/drivers/network/tcpip/include/titypes.h branches/ntvdm/drivers/network/tcpip/tcpip/fileobjs.c branches/ntvdm/drivers/usb/usbehci/ (props changed) branches/ntvdm/drivers/usb/usbhub/ (props changed) branches/ntvdm/drivers/usb/usbohci/ (props changed) branches/ntvdm/include/crt/mingw32/intrin_x86.h branches/ntvdm/include/crt/sec_api/tchar_s.h branches/ntvdm/include/psdk/mmsystem.h branches/ntvdm/include/psdk/vfw.h branches/ntvdm/include/psdk/wincon.h branches/ntvdm/include/psdk/winnls.h branches/ntvdm/include/reactos/subsys/win/conmsg.h branches/ntvdm/lib/drivers/ip/network/ip.c branches/ntvdm/lib/drivers/ip/network/neighbor.c branches/ntvdm/lib/drivers/ip/transport/tcp/event.c branches/ntvdm/lib/drivers/libusb/common_interfaces.h (props changed) branches/ntvdm/lib/drivers/libusb/hcd_controller.cpp (props changed) branches/ntvdm/lib/drivers/libusb/hub_controller.cpp (props changed) branches/ntvdm/lib/drivers/libusb/libusb.cpp (props changed) branches/ntvdm/lib/drivers/libusb/libusb.h (props changed) branches/ntvdm/lib/drivers/libusb/memory_manager.cpp (props changed) branches/ntvdm/lib/drivers/libusb/misc.cpp (props changed) branches/ntvdm/lib/drivers/libusb/purecall.cpp (props changed) branches/ntvdm/lib/drivers/libusb/usb_device.cpp (props changed) branches/ntvdm/lib/drivers/lwip/src/rostcp.c branches/ntvdm/subsystems/ntvdm/CMakeLists.txt branches/ntvdm/subsystems/ntvdm/bios.c branches/ntvdm/subsystems/ntvdm/vga.c branches/ntvdm/subsystems/ntvdm/vga.h branches/ntvdm/win32ss/user/winsrv/consrv/api.h branches/ntvdm/win32ss/user/winsrv/consrv/condrv/conoutput.c branches/ntvdm/win32ss/user/winsrv/consrv/conoutput.c branches/ntvdm/win32ss/user/winsrv/consrv/frontendctl.c branches/ntvdm/win32ss/user/winsrv/consrv/init.c [This mail would be too long, it was shortened to contain the URLs only.] Modified: branches/ntvdm/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/CMakeLists.txt?rev=59713&…
Modified: branches/ntvdm/base/services/umpnpmgr/umpnpmgr.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/base/services/umpnpmgr/um…
Modified: branches/ntvdm/dll/win32/kernel32/client/console/console.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/dll/win32/kernel32/client…
Modified: branches/ntvdm/dll/win32/netapi32/access.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/dll/win32/netapi32/access…
Modified: branches/ntvdm/dll/win32/netapi32/netapi32.spec URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/dll/win32/netapi32/netapi…
Modified: branches/ntvdm/dll/win32/netapi32/user.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/dll/win32/netapi32/user.c…
Modified: branches/ntvdm/dll/win32/setupapi/cfgmgr.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/dll/win32/setupapi/cfgmgr…
Modified: branches/ntvdm/dll/win32/setupapi/devinst.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/dll/win32/setupapi/devins…
Modified: branches/ntvdm/drivers/network/lan/include/net_wh.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/drivers/network/lan/inclu…
Modified: branches/ntvdm/drivers/network/tcpip/include/fileobjs.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/drivers/network/tcpip/inc…
Modified: branches/ntvdm/drivers/network/tcpip/include/tcp.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/drivers/network/tcpip/inc…
Modified: branches/ntvdm/drivers/network/tcpip/include/tcpip.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/drivers/network/tcpip/inc…
Modified: branches/ntvdm/drivers/network/tcpip/include/titypes.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/drivers/network/tcpip/inc…
Modified: branches/ntvdm/drivers/network/tcpip/tcpip/fileobjs.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/drivers/network/tcpip/tcp…
Modified: branches/ntvdm/include/crt/mingw32/intrin_x86.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/include/crt/mingw32/intri…
Modified: branches/ntvdm/include/crt/sec_api/tchar_s.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/include/crt/sec_api/tchar…
Modified: branches/ntvdm/include/psdk/mmsystem.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/include/psdk/mmsystem.h?r…
Modified: branches/ntvdm/include/psdk/vfw.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/include/psdk/vfw.h?rev=59…
Modified: branches/ntvdm/include/psdk/wincon.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/include/psdk/wincon.h?rev…
Modified: branches/ntvdm/include/psdk/winnls.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/include/psdk/winnls.h?rev…
Modified: branches/ntvdm/include/reactos/subsys/win/conmsg.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/include/reactos/subsys/wi…
Modified: branches/ntvdm/lib/drivers/ip/network/ip.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/drivers/ip/network/ip…
Modified: branches/ntvdm/lib/drivers/ip/network/neighbor.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/drivers/ip/network/ne…
Modified: branches/ntvdm/lib/drivers/ip/transport/tcp/event.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/drivers/ip/transport/…
Modified: branches/ntvdm/lib/drivers/lwip/src/rostcp.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/drivers/lwip/src/rost…
Modified: branches/ntvdm/subsystems/ntvdm/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/subsystems/ntvdm/CMakeLis…
Modified: branches/ntvdm/subsystems/ntvdm/bios.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/subsystems/ntvdm/bios.c?r…
Modified: branches/ntvdm/subsystems/ntvdm/vga.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/subsystems/ntvdm/vga.c?re…
Modified: branches/ntvdm/subsystems/ntvdm/vga.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/subsystems/ntvdm/vga.h?re…
Modified: branches/ntvdm/win32ss/user/winsrv/consrv/api.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/win32ss/user/winsrv/consr…
Modified: branches/ntvdm/win32ss/user/winsrv/consrv/condrv/conoutput.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/win32ss/user/winsrv/consr…
Modified: branches/ntvdm/win32ss/user/winsrv/consrv/conoutput.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/win32ss/user/winsrv/consr…
Modified: branches/ntvdm/win32ss/user/winsrv/consrv/frontendctl.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/win32ss/user/winsrv/consr…
Modified: branches/ntvdm/win32ss/user/winsrv/consrv/init.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/win32ss/user/winsrv/consr…
11 years, 4 months
1
0
0
0
← Newer
1
...
19
20
21
22
23
24
25
...
33
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
Results per page:
10
25
50
100
200