ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
July
June
May
April
March
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
December 2011
----- 2025 -----
July 2025
June 2025
May 2025
April 2025
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
16 participants
242 discussions
Start a n
N
ew thread
[pschweitzer] 54708: [TELNETD] Fix handle leak Fix memory leak
by pschweitzer@svn.reactos.org
Author: pschweitzer Date: Tue Dec 20 16:19:58 2011 New Revision: 54708 URL:
http://svn.reactos.org/svn/reactos?rev=54708&view=rev
Log: [TELNETD] Fix handle leak Fix memory leak Modified: trunk/reactos/base/services/telnetd/telnetd.c Modified: trunk/reactos/base/services/telnetd/telnetd.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/services/telnetd/teln…
============================================================================== --- trunk/reactos/base/services/telnetd/telnetd.c [iso-8859-1] (original) +++ trunk/reactos/base/services/telnetd/telnetd.c [iso-8859-1] Tue Dec 20 16:19:58 2011 @@ -137,14 +137,18 @@ /* Function: UserLogin */ static void UserLogin(int client_socket) { - DWORD threadID; + HANDLE threadHandle; client_t *client = malloc(sizeof(client_t)); if (client == NULL) ErrorExit("failed to allocate memory for client"); client->socket = client_socket; - CreateThread(NULL, 0, UserLoginThread, client, 0, &threadID); + threadHandle = CreateThread(NULL, 0, UserLoginThread, client, 0, NULL); + if (threadHandle == NULL) + free(client); + else + CloseHandle(threadHandle); } /* Function: UserLoginThread */
13 years, 6 months
1
0
0
0
[pschweitzer] 54707: [SYSSETUP] Fix memory leak
by pschweitzer@svn.reactos.org
Author: pschweitzer Date: Tue Dec 20 14:56:22 2011 New Revision: 54707 URL:
http://svn.reactos.org/svn/reactos?rev=54707&view=rev
Log: [SYSSETUP] Fix memory leak Modified: trunk/reactos/dll/win32/syssetup/wizard.c Modified: trunk/reactos/dll/win32/syssetup/wizard.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/syssetup/wizard.…
============================================================================== --- trunk/reactos/dll/win32/syssetup/wizard.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/syssetup/wizard.c [iso-8859-1] Tue Dec 20 14:56:22 2011 @@ -1806,19 +1806,20 @@ RegistrationThread = NULL; RegistrationData = HeapAlloc(GetProcessHeap(), 0, sizeof(REGISTRATIONDATA)); - if (NULL != RegistrationData) + if (RegistrationData != NULL) { RegistrationData->hwndDlg = hwndDlg; RegistrationData->DllCount = DllCount; RegistrationThread = CreateThread(NULL, 0, RegistrationProc, (LPVOID) RegistrationData, 0, NULL); - if (NULL != RegistrationThread) + if (RegistrationThread != NULL) { CloseHandle(RegistrationThread); } else { DPRINT1("CreateThread failed, error %u\n", GetLastError()); + HeapFree(GetProcessHeap(), 0, RegistrationData); return FALSE; } }
13 years, 6 months
1
0
0
0
[rharabien] 54706: [SHELL32] - Simplify a bit - Display 0% instead of 00% for empty drive space
by rharabien@svn.reactos.org
Author: rharabien Date: Mon Dec 19 21:34:22 2011 New Revision: 54706 URL:
http://svn.reactos.org/svn/reactos?rev=54706&view=rev
Log: [SHELL32] - Simplify a bit - Display 0% instead of 00% for empty drive space Modified: trunk/reactos/dll/win32/shell32/drive.cpp Modified: trunk/reactos/dll/win32/shell32/drive.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/drive.cp…
============================================================================== --- trunk/reactos/dll/win32/shell32/drive.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/drive.cpp [iso-8859-1] Mon Dec 19 21:34:22 2011 @@ -392,85 +392,80 @@ static VOID -InitializeGeneralDriveDialog(HWND hwndDlg, WCHAR * szDrive) -{ - WCHAR szVolumeName[MAX_PATH+1] = {0}; - DWORD MaxComponentLength = 0; - DWORD FileSystemFlags = 0; - WCHAR FileSystemName[MAX_PATH+1] = {0}; - WCHAR szFormat[50]; - WCHAR szBuffer[128]; - BOOL ret; +InitializeGeneralDriveDialog(HWND hwndDlg, WCHAR *szDrive) +{ + WCHAR wszVolumeName[MAX_PATH+1] = {0}; + WCHAR wszFileSystem[MAX_PATH+1] = {0}; + WCHAR wszFormat[50]; + WCHAR wszBuf[128]; + BOOL bRet; UINT DriveType; ULARGE_INTEGER FreeBytesAvailable; ULARGE_INTEGER TotalNumberOfFreeBytes; ULARGE_INTEGER TotalNumberOfBytes; - ret = GetVolumeInformationW(szDrive, szVolumeName, MAX_PATH + 1, NULL, &MaxComponentLength, &FileSystemFlags, FileSystemName, MAX_PATH + 1); - if (ret) + bRet = GetVolumeInformationW(szDrive, wszVolumeName, _countof(wszVolumeName), NULL, NULL, NULL, wszFileSystem, _countof(wszFileSystem)); + if (bRet) { /* set volume label */ - SetDlgItemTextW(hwndDlg, 14000, szVolumeName); + SetDlgItemTextW(hwndDlg, 14000, wszVolumeName); /* set filesystem type */ - SetDlgItemTextW(hwndDlg, 14002, FileSystemName); - + SetDlgItemTextW(hwndDlg, 14002, wszFileSystem); } DriveType = GetDriveTypeW(szDrive); if (DriveType == DRIVE_FIXED || DriveType == DRIVE_CDROM) { - if(GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes)) { - WCHAR szResult[128]; - ULONG Result; + ULONG SpacePercent; HANDLE hVolume; DWORD BytesReturned = 0; - swprintf(szResult, L"\\\\.\\%c:", towupper(szDrive[0])); - hVolume = CreateFileW(szResult, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); + swprintf(wszBuf, L"\\\\.\\%c:", towupper(szDrive[0])); + hVolume = CreateFileW(wszBuf, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); if (hVolume != INVALID_HANDLE_VALUE) { - ret = DeviceIoControl(hVolume, IOCTL_DISK_GET_LENGTH_INFO, NULL, 0, (LPVOID)&TotalNumberOfBytes, sizeof(ULARGE_INTEGER), &BytesReturned, NULL); - if (ret && StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14007, szResult); + bRet = DeviceIoControl(hVolume, IOCTL_DISK_GET_LENGTH_INFO, NULL, 0, (LPVOID)&TotalNumberOfBytes, sizeof(ULARGE_INTEGER), &BytesReturned, NULL); + if (bRet && StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, wszBuf, sizeof(wszBuf) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14007, wszBuf); CloseHandle(hVolume); } - TRACE("szResult %s hVOlume %p ret %d LengthInformation %ul Bytesreturned %d\n", debugstr_w(szResult), hVolume, ret, TotalNumberOfBytes.QuadPart, BytesReturned); - - if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart - FreeBytesAvailable.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14003, szResult); - - if (StrFormatByteSizeW(FreeBytesAvailable.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14005, szResult); - - Result = GetFreeBytesShare(TotalNumberOfFreeBytes.QuadPart, TotalNumberOfBytes.QuadPart); + TRACE("wszBuf %s hVolume %p bRet %d LengthInformation %ul BytesReturned %d\n", debugstr_w(wszBuf), hVolume, bRet, TotalNumberOfBytes.QuadPart, BytesReturned); + + if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart - FreeBytesAvailable.QuadPart, wszBuf, sizeof(wszBuf) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14003, wszBuf); + + if (StrFormatByteSizeW(FreeBytesAvailable.QuadPart, wszBuf, sizeof(wszBuf) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14005, wszBuf); + + SpacePercent = GetFreeBytesShare(TotalNumberOfFreeBytes.QuadPart, TotalNumberOfBytes.QuadPart); /* set free bytes percentage */ - swprintf(szResult, L"%02u%%", Result); - SetDlgItemTextW(hwndDlg, 14006, szResult); + swprintf(wszBuf, L"%u%%", SpacePercent); + SetDlgItemTextW(hwndDlg, 14006, wszBuf); /* store used share amount */ - Result = 100 - Result; - swprintf(szResult, L"%02u%%", Result); - SetDlgItemTextW(hwndDlg, 14004, szResult); + SpacePercent = 100 - SpacePercent; + swprintf(wszBuf, L"%u%%", SpacePercent); + SetDlgItemTextW(hwndDlg, 14004, wszBuf); if (DriveType == DRIVE_FIXED) { - if (LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szBuffer, sizeof(szBuffer) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14001, szBuffer); + if (LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, wszBuf, sizeof(wszBuf) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14001, wszBuf); } else /* DriveType == DRIVE_CDROM) */ { - if (LoadStringW(shell32_hInstance, IDS_DRIVE_CDROM, szBuffer, sizeof(szBuffer) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14001, szBuffer); + if (LoadStringW(shell32_hInstance, IDS_DRIVE_CDROM, wszBuf, sizeof(wszBuf) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14001, wszBuf); } } } /* set drive description */ - GetDlgItemTextW(hwndDlg, 14009, szFormat, 50); - swprintf(szBuffer, szFormat, szDrive); - SetDlgItemTextW(hwndDlg, 14009, szBuffer); + GetDlgItemTextW(hwndDlg, 14009, wszFormat, _countof(wszFormat)); + swprintf(wszBuf, wszFormat, szDrive); + SetDlgItemTextW(hwndDlg, 14009, wszBuf); } static INT_PTR CALLBACK
13 years, 6 months
1
0
0
0
[rharabien] 54705: - Fix build
by rharabien@svn.reactos.org
Author: rharabien Date: Mon Dec 19 21:21:34 2011 New Revision: 54705 URL:
http://svn.reactos.org/svn/reactos?rev=54705&view=rev
Log: - Fix build Modified: trunk/reactos/dll/win32/shell32/drive.cpp Modified: trunk/reactos/dll/win32/shell32/drive.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/drive.cp…
============================================================================== --- trunk/reactos/dll/win32/shell32/drive.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/drive.cpp [iso-8859-1] Mon Dec 19 21:21:34 2011 @@ -245,7 +245,7 @@ { DWORD ClusterSize = 0; WCHAR szFs[30]; - WCHAR szDrive[] = L"C:\\" + WCHAR szDrive[] = L"C:\\"; ULARGE_INTEGER TotalNumberOfFreeBytes, FreeBytesAvailableUser; BOOLEAN bCorrectErrors = FALSE, bScanDrive = FALSE;
13 years, 6 months
1
0
0
0
[rharabien] 54704: [SHELL32] - General code improvements
by rharabien@svn.reactos.org
Author: rharabien Date: Mon Dec 19 21:20:24 2011 New Revision: 54704 URL:
http://svn.reactos.org/svn/reactos?rev=54704&view=rev
Log: [SHELL32] - General code improvements Modified: trunk/reactos/dll/win32/shell32/drive.cpp Modified: trunk/reactos/dll/win32/shell32/drive.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/drive.cp…
============================================================================== --- trunk/reactos/dll/win32/shell32/drive.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/drive.cpp [iso-8859-1] Mon Dec 19 21:20:24 2011 @@ -19,6 +19,7 @@ */ #include <precomp.h> +using namespace std; #define MAX_PROPERTY_SHEET_PAGE 32 @@ -93,8 +94,6 @@ UINT Result; } FORMAT_DRIVE_CONTEXT, *PFORMAT_DRIVE_CONTEXT; -BOOL InitializeFmifsLibrary(PFORMAT_DRIVE_CONTEXT pContext); -BOOL GetDefaultClusterSize(LPWSTR szFs, PDWORD pClusterSize, PULARGE_INTEGER TotalNumberOfBytes); EXTERN_C HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, IDataObject *pDataObj); EXTERN_C HWND WINAPI DeviceCreateHardwarePageEx(HWND hWndParent, @@ -104,45 +103,30 @@ HPROPSHEETPAGE SH_CreatePropertySheetPage(LPCSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR szTitle); -#define DRIVE_PROPERTY_PAGES (3) - static const GUID GUID_DEVCLASS_DISKDRIVE = {0x4d36e967L, 0xe325, 0x11ce, {0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18}}; -VOID -GetDriveNameWithLetter(LPWSTR szText, UINT Length, WCHAR Drive) -{ - WCHAR szDrive[] = {'C', ':', '\\', 0}; - DWORD dwMaxComp, dwFileSys, TempLength = 0; +static VOID +GetDriveNameWithLetter(LPWSTR szText, UINT cchTextMax, WCHAR Drive) +{ + WCHAR szDrive[] = L"C:\\"; + DWORD dwMaxComp, dwFileSys, cchText = 0; szDrive[0] = Drive; - if (GetVolumeInformationW(szDrive, szText, Length, NULL, &dwMaxComp, &dwFileSys, NULL, 0)) - { - szText[Length-1] = L'\0'; - TempLength = wcslen(szText); - if (!TempLength) + if (GetVolumeInformationW(szDrive, szText, cchTextMax, NULL, &dwMaxComp, &dwFileSys, NULL, 0)) + { + cchText = wcslen(szText); + if (cchText == cchText) { /* load default volume label */ - TempLength = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, &szText[Length+1], (sizeof(szText) / sizeof(WCHAR)) - Length - 2); - } - } - if (TempLength + 4 < Length) - { - szText[TempLength] = L' '; - szText[TempLength+1] = L'('; - szText[TempLength+2] = szDrive[0]; - szText[TempLength+3] = L')'; - TempLength += 4; - } - - if (TempLength < Length) - szText[TempLength] = L'\0'; - else - szText[Length-1] = L'\0'; -} - - -VOID + cchText = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, &szText[cchTextMax+1], (sizeof(szText) / sizeof(WCHAR)) - cchTextMax - 2); + } + } + + StringCchPrintfW(szText + cchText, cchTextMax - cchText, L" (%c)", Drive); +} + +static VOID InitializeChkDskDialog(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext) { WCHAR szText[100]; @@ -150,18 +134,15 @@ SetWindowLongPtr(hwndDlg, DWLP_USER, (INT_PTR)pContext); Length = GetWindowTextW(hwndDlg, szText, sizeof(szText) / sizeof(WCHAR)); - - GetDriveNameWithLetter(&szText[Length +1], (sizeof(szText) / sizeof(WCHAR)) - Length - 1, pContext->Drive); szText[Length] = L' '; - szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0'; + GetDriveNameWithLetter(&szText[Length + 1], (sizeof(szText) / sizeof(WCHAR)) - Length - 1, pContext->Drive); SetWindowText(hwndDlg, szText); } -HWND ChkdskDrvDialog = NULL; -BOOLEAN bChkdskSuccess = FALSE; - -BOOLEAN -NTAPI +static HWND ChkdskDrvDialog = NULL; +static BOOLEAN bChkdskSuccess = FALSE; + +static BOOLEAN NTAPI ChkdskCallback( IN CALLBACKCOMMAND Command, IN ULONG SubAction, @@ -195,552 +176,13 @@ return TRUE; } -VOID -ChkDskNow(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext) -{ - DWORD ClusterSize = 0, dwMaxComponentLength, FileSystemFlags; - WCHAR szFs[30]; - WCHAR szDrive[] = {'C', ':', '\\', 0}; - WCHAR szVolumeLabel[40]; - ULARGE_INTEGER TotalNumberOfFreeBytes, FreeBytesAvailableUser; - BOOLEAN bCorrectErrors = FALSE, bScanDrive = FALSE; - - szDrive[0] = pContext->Drive; - if(!GetVolumeInformationW(szDrive, szVolumeLabel, sizeof(szVolumeLabel) / sizeof(WCHAR), NULL, &dwMaxComponentLength, &FileSystemFlags, szFs, sizeof(szFs) / sizeof(WCHAR))) - { - FIXME("failed to get drive fs type\n"); - return; - } - - if (!GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailableUser, &TotalNumberOfFreeBytes, NULL)) - { - FIXME("failed to get drive space type\n"); - return; - } - - if (!GetDefaultClusterSize(szFs, &ClusterSize, &TotalNumberOfFreeBytes)) - { - FIXME("invalid cluster size\n"); - return; - } - - if (SendDlgItemMessageW(hwndDlg, 14000, BM_GETCHECK, 0, 0) == BST_CHECKED) - bCorrectErrors = TRUE; - - if (SendDlgItemMessageW(hwndDlg, 14001, BM_GETCHECK, 0, 0) == BST_CHECKED) - bScanDrive = TRUE; - - ChkdskDrvDialog = hwndDlg; - bChkdskSuccess = FALSE; - SendDlgItemMessageW(hwndDlg, 14002, PBM_SETRANGE, 0, MAKELPARAM(0, 100)); - pContext->Chkdsk(szDrive, szFs, bCorrectErrors, TRUE, FALSE, bScanDrive, NULL, NULL, ChkdskCallback); - - ChkdskDrvDialog = NULL; - pContext->Result = bChkdskSuccess; - bChkdskSuccess = FALSE; - -} - -INT_PTR -CALLBACK -ChkDskDlg( - HWND hwndDlg, - UINT uMsg, - WPARAM wParam, - LPARAM lParam -) -{ - PFORMAT_DRIVE_CONTEXT pContext; - switch(uMsg) - { - case WM_INITDIALOG: - SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)lParam); - InitializeChkDskDialog(hwndDlg, (PFORMAT_DRIVE_CONTEXT)lParam); - return TRUE; - case WM_COMMAND: - switch(LOWORD(wParam)) - { - case IDCANCEL: - EndDialog(hwndDlg, 0); - break; - case IDOK: - pContext = (PFORMAT_DRIVE_CONTEXT) GetWindowLongPtr(hwndDlg, DWLP_USER); - ChkDskNow(hwndDlg, pContext); - break; - } - break; - } - - return FALSE; -} - - -static -ULONG -GetFreeBytesShare(ULONGLONG TotalNumberOfFreeBytes, ULONGLONG TotalNumberOfBytes) -{ - ULONGLONG Temp; - - if (TotalNumberOfFreeBytes == 0LL) - { - return 0; - } - - Temp = TotalNumberOfBytes / 100; - if (Temp >= TotalNumberOfFreeBytes) - { - return 1; - } - else - { - return (ULONG)(TotalNumberOfFreeBytes / Temp); - } -} - -static -void -PaintStaticControls(HWND hwndDlg, LPDRAWITEMSTRUCT drawItem) -{ - HBRUSH hBrush; - - if (drawItem->CtlID == 14013) - { - hBrush = CreateSolidBrush(RGB(0, 0, 255)); - if (hBrush) - { - FillRect(drawItem->hDC, &drawItem->rcItem, hBrush); - DeleteObject((HGDIOBJ)hBrush); - } - } - else if (drawItem->CtlID == 14014) - { - hBrush = CreateSolidBrush(RGB(255, 0, 255)); - if (hBrush) - { - FillRect(drawItem->hDC, &drawItem->rcItem, hBrush); - DeleteObject((HGDIOBJ)hBrush); - } - } - else if (drawItem->CtlID == 14015) - { - HBRUSH hBlueBrush; - HBRUSH hMagBrush; - RECT rect; - LONG horzsize; - LONGLONG Result; - WCHAR szBuffer[20]; - - hBlueBrush = CreateSolidBrush(RGB(0, 0, 255)); - hMagBrush = CreateSolidBrush(RGB(255, 0, 255)); - - GetDlgItemTextW(hwndDlg, 14006, szBuffer, 20); - Result = _wtoi(szBuffer); - - CopyRect(&rect, &drawItem->rcItem); - horzsize = rect.right - rect.left; - Result = (Result * horzsize) / 100; - - rect.right = drawItem->rcItem.right - Result; - FillRect(drawItem->hDC, &rect, hBlueBrush); - rect.left = rect.right; - rect.right = drawItem->rcItem.right; - FillRect(drawItem->hDC, &rect, hMagBrush); - DeleteObject(hBlueBrush); - DeleteObject(hMagBrush); - } -} - -static -void -InitializeGeneralDriveDialog(HWND hwndDlg, WCHAR * szDrive) -{ - WCHAR szVolumeName[MAX_PATH+1] = {0}; - DWORD MaxComponentLength = 0; - DWORD FileSystemFlags = 0; - WCHAR FileSystemName[MAX_PATH+1] = {0}; - WCHAR szFormat[50]; - WCHAR szBuffer[128]; - BOOL ret; - UINT DriveType; - ULARGE_INTEGER FreeBytesAvailable; - ULARGE_INTEGER TotalNumberOfFreeBytes; - ULARGE_INTEGER TotalNumberOfBytes; - - ret = GetVolumeInformationW(szDrive, szVolumeName, MAX_PATH + 1, NULL, &MaxComponentLength, &FileSystemFlags, FileSystemName, MAX_PATH + 1); - if (ret) - { - /* set volume label */ - SetDlgItemTextW(hwndDlg, 14000, szVolumeName); - - /* set filesystem type */ - SetDlgItemTextW(hwndDlg, 14002, FileSystemName); - - } - - DriveType = GetDriveTypeW(szDrive); - if (DriveType == DRIVE_FIXED || DriveType == DRIVE_CDROM) - { - - if(GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes)) - { - WCHAR szResult[128]; - ULONG Result; - HANDLE hVolume; - DWORD BytesReturned = 0; - - swprintf(szResult, L"\\\\.\\%c:", towupper(szDrive[0])); - hVolume = CreateFileW(szResult, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); - if (hVolume != INVALID_HANDLE_VALUE) - { - ret = DeviceIoControl(hVolume, IOCTL_DISK_GET_LENGTH_INFO, NULL, 0, (LPVOID)&TotalNumberOfBytes, sizeof(ULARGE_INTEGER), &BytesReturned, NULL); - if (ret && StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14007, szResult); - - CloseHandle(hVolume); - } - - TRACE("szResult %s hVOlume %p ret %d LengthInformation %ul Bytesreturned %d\n", debugstr_w(szResult), hVolume, ret, TotalNumberOfBytes.QuadPart, BytesReturned); - - if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart - FreeBytesAvailable.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14003, szResult); - - if (StrFormatByteSizeW(FreeBytesAvailable.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14005, szResult); - - Result = GetFreeBytesShare(TotalNumberOfFreeBytes.QuadPart, TotalNumberOfBytes.QuadPart); - /* set free bytes percentage */ - swprintf(szResult, L"%02u%%", Result); - SetDlgItemTextW(hwndDlg, 14006, szResult); - /* store used share amount */ - Result = 100 - Result; - swprintf(szResult, L"%02u%%", Result); - SetDlgItemTextW(hwndDlg, 14004, szResult); - if (DriveType == DRIVE_FIXED) - { - if (LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szBuffer, sizeof(szBuffer) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14001, szBuffer); - } - else /* DriveType == DRIVE_CDROM) */ - { - if (LoadStringW(shell32_hInstance, IDS_DRIVE_CDROM, szBuffer, sizeof(szBuffer) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14001, szBuffer); - } - } - } - /* set drive description */ - GetDlgItemTextW(hwndDlg, 14009, szFormat, 50); - swprintf(szBuffer, szFormat, szDrive); - SetDlgItemTextW(hwndDlg, 14009, szBuffer); -} - - -INT_PTR -CALLBACK -DriveGeneralDlg( - HWND hwndDlg, - UINT uMsg, - WPARAM wParam, - LPARAM lParam -) -{ - switch(uMsg) - { - case WM_INITDIALOG: - { - LPPROPSHEETPAGEW ppsp = (LPPROPSHEETPAGEW)lParam; - if (ppsp == NULL) - break; - - SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)ppsp->lParam); - InitializeGeneralDriveDialog(hwndDlg, (LPWSTR)ppsp->lParam); - return TRUE; - } - case WM_DRAWITEM: - { - LPDRAWITEMSTRUCT drawItem = (LPDRAWITEMSTRUCT)lParam; - - if (drawItem->CtlID >= 14013 && drawItem->CtlID <= 14015) - { - PaintStaticControls(hwndDlg, drawItem); - return TRUE; - } - break; - } - - case WM_COMMAND: - if (LOWORD(wParam) == 14010) /* Disk Cleanup */ - { - UINT length; - STARTUPINFOW si; - PROCESS_INFORMATION pi; - WCHAR wszPath[MAX_PATH]; - LPWSTR lpStr = (WCHAR*)GetWindowLongPtr(hwndDlg, DWLP_USER); - - ZeroMemory(&si, sizeof(si)); - si.cb = sizeof(si); - ZeroMemory(&pi, sizeof(pi)); - if (!GetSystemDirectoryW(wszPath, MAX_PATH)) - break; - wcscat(wszPath, L"\\cleanmgr.exe /D "); - length = wcslen(wszPath); - wszPath[length] = lpStr[0]; - wszPath[length+1] = L'\0'; - if (CreateProcessW(NULL, wszPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) - { - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - } - } - break; - case WM_NOTIFY: - if (LOWORD(wParam) == 14000) - { - if (HIWORD(wParam) == EN_CHANGE) - { - PropSheet_Changed(GetParent(hwndDlg), hwndDlg); - } - break; - } - else if (((LPNMHDR)lParam)->hwndFrom == GetParent(hwndDlg)) - { - /* Property Sheet */ - LPPSHNOTIFY lppsn = (LPPSHNOTIFY)lParam; - - if (lppsn->hdr.code == PSN_APPLY) - { - LPWSTR lpstr = (LPWSTR)GetWindowLongPtr(hwndDlg, DWLP_USER); - WCHAR buf[256]; - - if (lpstr && GetDlgItemTextW(hwndDlg, 14000, buf, sizeof(buf) / sizeof(WCHAR))) - SetVolumeLabelW(lpstr, buf); - SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR); - return TRUE; - } - } - break; - - default: - break; - } - - return FALSE; -} - -INT_PTR -CALLBACK -DriveExtraDlg( - HWND hwndDlg, - UINT uMsg, - WPARAM wParam, - LPARAM lParam -) -{ - STARTUPINFOW si; - PROCESS_INFORMATION pi; - WCHAR szPath[MAX_PATH + 10]; - WCHAR szArg[MAX_PATH]; - WCHAR * szDrive; - LPPROPSHEETPAGEW ppsp; - DWORD dwSize; - FORMAT_DRIVE_CONTEXT Context; - - switch (uMsg) - { - case WM_INITDIALOG: - ppsp = (LPPROPSHEETPAGEW)lParam; - SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)ppsp->lParam); - return TRUE; - case WM_COMMAND: - ZeroMemory( &si, sizeof(si) ); - si.cb = sizeof(si); - ZeroMemory( &pi, sizeof(pi) ); - - szDrive = (WCHAR*)GetWindowLongPtr(hwndDlg, DWLP_USER); - switch(LOWORD(wParam)) - { - case 14000: - if (InitializeFmifsLibrary(&Context)) - { - Context.Drive = szDrive[0]; - DialogBoxParamW(shell32_hInstance, L"CHKDSK_DLG", hwndDlg, ChkDskDlg, (LPARAM)&Context); - FreeLibrary(Context.hLibrary); - } - break; - case 14001: - dwSize = sizeof(szPath); - if (RegGetValueW(HKEY_LOCAL_MACHINE, - L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\DefragPath", - NULL, - RRF_RT_REG_EXPAND_SZ, - NULL, - (PVOID)szPath, - &dwSize) == S_OK) - { - swprintf(szArg, szPath, szDrive[0]); - if (!GetSystemDirectoryW(szPath, MAX_PATH)) - break; - szDrive = PathAddBackslashW(szPath); - if (!szDrive) - break; - - wcscat(szDrive, L"mmc.exe"); - if (CreateProcessW(szPath, szArg, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) - { - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - } - } - break; - case 14002: - dwSize = sizeof(szPath); - if (RegGetValueW(HKEY_LOCAL_MACHINE, - L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\BackupPath", - NULL, - RRF_RT_REG_EXPAND_SZ, - NULL, - (PVOID)szPath, - &dwSize) == S_OK) - { - if (CreateProcessW(szPath, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) - { - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - } - } - } - break; - } - return FALSE; -} - -INT_PTR -CALLBACK -DriveHardwareDlg( - HWND hwndDlg, - UINT uMsg, - WPARAM wParam, - LPARAM lParam -) -{ - GUID Guids[1]; - Guids[0] = GUID_DEVCLASS_DISKDRIVE; - - UNREFERENCED_PARAMETER(lParam); - UNREFERENCED_PARAMETER(wParam); - - switch(uMsg) - { - case WM_INITDIALOG: - /* create the hardware page */ - DeviceCreateHardwarePageEx(hwndDlg, - Guids, - sizeof(Guids) / sizeof(Guids[0]), - HWPD_STANDARDLIST); - break; - } - - return FALSE; -} - -static -const -struct -{ - LPCSTR resname; - DLGPROC dlgproc; - UINT DriveType; -} PropPages[] = -{ - { "DRIVE_GENERAL_DLG", DriveGeneralDlg, -1}, - { "DRIVE_EXTRA_DLG", DriveExtraDlg, DRIVE_FIXED}, - { "DRIVE_HARDWARE_DLG", DriveHardwareDlg, -1}, -}; - -HRESULT -CALLBACK -AddPropSheetPageProc(HPROPSHEETPAGE hpage, LPARAM lParam) -{ - PROPSHEETHEADER *ppsh = (PROPSHEETHEADER *)lParam; - if (ppsh != NULL && ppsh->nPages < MAX_PROPERTY_SHEET_PAGE) - { - ppsh->phpage[ppsh->nPages++] = hpage; - return TRUE; - } - return FALSE; -} - -BOOL -SH_ShowDriveProperties(WCHAR *drive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST *apidl) -{ - HPSXA hpsx = NULL; - HPROPSHEETPAGE hpsp[MAX_PROPERTY_SHEET_PAGE]; - PROPSHEETHEADERW psh; - HWND hwnd; - UINT i; - WCHAR szName[MAX_PATH+6]; - DWORD dwMaxComponent, dwFileSysFlags; - CComPtr<IDataObject> pDataObj; - UINT DriveType; - - ZeroMemory(&psh, sizeof(PROPSHEETHEADERW)); - psh.dwSize = sizeof(PROPSHEETHEADERW); - psh.dwFlags = 0; // FIXME: make it modeless - psh.hwndParent = NULL; - psh.nStartPage = 0; - psh.phpage = hpsp; - - if (GetVolumeInformationW(drive, szName, sizeof(szName) / sizeof(WCHAR), NULL, &dwMaxComponent, - &dwFileSysFlags, NULL, 0)) - { - psh.pszCaption = szName; - psh.dwFlags |= PSH_PROPTITLE; - if (!wcslen(szName)) - { - /* FIXME: check if disk is a really a local hdd */ - i = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szName, sizeof(szName) / sizeof(WCHAR) - 6); - if (i > 0 && i < (sizeof(szName) / sizeof(WCHAR)) - 6) - wsprintf(szName + i, L" (%s)", drive); - } - } - - DriveType = GetDriveTypeW(drive); - for (i = 0; i < DRIVE_PROPERTY_PAGES; i++) - { - if (PropPages[i].DriveType == (UINT)-1 || PropPages[i].DriveType == DriveType) - { - HPROPSHEETPAGE hprop = SH_CreatePropertySheetPage(PropPages[i].resname, PropPages[i].dlgproc, (LPARAM)drive, NULL); - if (hprop) - { - hpsp[psh.nPages] = hprop; - psh.nPages++; - } - } - } - - if (SHCreateDataObject(pidlFolder, 1, apidl, NULL, IID_IDataObject, (void **)&pDataObj) == S_OK) - { - hpsx = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, L"Drive", MAX_PROPERTY_SHEET_PAGE - DRIVE_PROPERTY_PAGES, pDataObj); - if (hpsx) - SHAddFromPropSheetExtArray(hpsx, (LPFNADDPROPSHEETPAGE)AddPropSheetPageProc, (LPARAM)&psh); - } - - hwnd = (HWND)PropertySheetW(&psh); - - if (hpsx) - SHDestroyPropSheetExtArray(hpsx); - - if (!hwnd) - return FALSE; - return TRUE; -} - -BOOL +static BOOL GetDefaultClusterSize(LPWSTR szFs, PDWORD pClusterSize, PULARGE_INTEGER TotalNumberOfBytes) { DWORD ClusterSize; if (!wcsicmp(szFs, L"FAT16") || - !wcsicmp(szFs, L"FAT")) //REACTOS HACK + !wcsicmp(szFs, L"FAT")) //REACTOS HACK { if (TotalNumberOfBytes->QuadPart <= (16 * 1024 * 1024)) ClusterSize = 2048; @@ -798,11 +240,597 @@ return TRUE; } +static VOID +ChkDskNow(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext) +{ + DWORD ClusterSize = 0; + WCHAR szFs[30]; + WCHAR szDrive[] = L"C:\\" + ULARGE_INTEGER TotalNumberOfFreeBytes, FreeBytesAvailableUser; + BOOLEAN bCorrectErrors = FALSE, bScanDrive = FALSE; + + szDrive[0] = pContext->Drive; + if(!GetVolumeInformationW(szDrive, NULL, 0, NULL, NULL, NULL, szFs, sizeof(szFs) / sizeof(WCHAR))) + { + FIXME("failed to get drive fs type\n"); + return; + } + + if (!GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailableUser, &TotalNumberOfFreeBytes, NULL)) + { + FIXME("failed to get drive space type\n"); + return; + } + + if (!GetDefaultClusterSize(szFs, &ClusterSize, &TotalNumberOfFreeBytes)) + { + FIXME("invalid cluster size\n"); + return; + } + + if (SendDlgItemMessageW(hwndDlg, 14000, BM_GETCHECK, 0, 0) == BST_CHECKED) + bCorrectErrors = TRUE; + + if (SendDlgItemMessageW(hwndDlg, 14001, BM_GETCHECK, 0, 0) == BST_CHECKED) + bScanDrive = TRUE; + + ChkdskDrvDialog = hwndDlg; + bChkdskSuccess = FALSE; + SendDlgItemMessageW(hwndDlg, 14002, PBM_SETRANGE, 0, MAKELPARAM(0, 100)); + pContext->Chkdsk(szDrive, szFs, bCorrectErrors, TRUE, FALSE, bScanDrive, NULL, NULL, ChkdskCallback); + + ChkdskDrvDialog = NULL; + pContext->Result = bChkdskSuccess; + bChkdskSuccess = FALSE; +} + +static INT_PTR CALLBACK +ChkDskDlg( + HWND hwndDlg, + UINT uMsg, + WPARAM wParam, + LPARAM lParam) +{ + PFORMAT_DRIVE_CONTEXT pContext; + switch(uMsg) + { + case WM_INITDIALOG: + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)lParam); + InitializeChkDskDialog(hwndDlg, (PFORMAT_DRIVE_CONTEXT)lParam); + return TRUE; + case WM_COMMAND: + switch(LOWORD(wParam)) + { + case IDCANCEL: + EndDialog(hwndDlg, 0); + break; + case IDOK: + pContext = (PFORMAT_DRIVE_CONTEXT) GetWindowLongPtr(hwndDlg, DWLP_USER); + ChkDskNow(hwndDlg, pContext); + break; + } + break; + } + + return FALSE; +} + +static +ULONG +GetFreeBytesShare(ULONGLONG TotalNumberOfFreeBytes, ULONGLONG TotalNumberOfBytes) +{ + ULONGLONG Temp; + + if (TotalNumberOfFreeBytes == 0LL) + { + return 0; + } + + Temp = TotalNumberOfBytes / 100; + if (Temp >= TotalNumberOfFreeBytes) + { + return 1; + } + else + { + return (ULONG)(TotalNumberOfFreeBytes / Temp); + } +} + +static VOID +PaintStaticControls(HWND hwndDlg, LPDRAWITEMSTRUCT drawItem) +{ + HBRUSH hBrush; + + if (drawItem->CtlID == 14013) + { + hBrush = CreateSolidBrush(RGB(0, 0, 255)); + if (hBrush) + { + FillRect(drawItem->hDC, &drawItem->rcItem, hBrush); + DeleteObject((HGDIOBJ)hBrush); + } + } + else if (drawItem->CtlID == 14014) + { + hBrush = CreateSolidBrush(RGB(255, 0, 255)); + if (hBrush) + { + FillRect(drawItem->hDC, &drawItem->rcItem, hBrush); + DeleteObject((HGDIOBJ)hBrush); + } + } + else if (drawItem->CtlID == 14015) + { + HBRUSH hBlueBrush; + HBRUSH hMagBrush; + RECT rect; + LONG horzsize; + LONGLONG Result; + WCHAR szBuffer[20]; + + hBlueBrush = CreateSolidBrush(RGB(0, 0, 255)); + hMagBrush = CreateSolidBrush(RGB(255, 0, 255)); + + GetDlgItemTextW(hwndDlg, 14006, szBuffer, 20); + Result = _wtoi(szBuffer); + + CopyRect(&rect, &drawItem->rcItem); + horzsize = rect.right - rect.left; + Result = (Result * horzsize) / 100; + + rect.right = drawItem->rcItem.right - Result; + FillRect(drawItem->hDC, &rect, hBlueBrush); + rect.left = rect.right; + rect.right = drawItem->rcItem.right; + FillRect(drawItem->hDC, &rect, hMagBrush); + DeleteObject(hBlueBrush); + DeleteObject(hMagBrush); + } +} + +static +VOID +InitializeGeneralDriveDialog(HWND hwndDlg, WCHAR * szDrive) +{ + WCHAR szVolumeName[MAX_PATH+1] = {0}; + DWORD MaxComponentLength = 0; + DWORD FileSystemFlags = 0; + WCHAR FileSystemName[MAX_PATH+1] = {0}; + WCHAR szFormat[50]; + WCHAR szBuffer[128]; + BOOL ret; + UINT DriveType; + ULARGE_INTEGER FreeBytesAvailable; + ULARGE_INTEGER TotalNumberOfFreeBytes; + ULARGE_INTEGER TotalNumberOfBytes; + + ret = GetVolumeInformationW(szDrive, szVolumeName, MAX_PATH + 1, NULL, &MaxComponentLength, &FileSystemFlags, FileSystemName, MAX_PATH + 1); + if (ret) + { + /* set volume label */ + SetDlgItemTextW(hwndDlg, 14000, szVolumeName); + + /* set filesystem type */ + SetDlgItemTextW(hwndDlg, 14002, FileSystemName); + + } + + DriveType = GetDriveTypeW(szDrive); + if (DriveType == DRIVE_FIXED || DriveType == DRIVE_CDROM) + { + + if(GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes)) + { + WCHAR szResult[128]; + ULONG Result; + HANDLE hVolume; + DWORD BytesReturned = 0; + + swprintf(szResult, L"\\\\.\\%c:", towupper(szDrive[0])); + hVolume = CreateFileW(szResult, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); + if (hVolume != INVALID_HANDLE_VALUE) + { + ret = DeviceIoControl(hVolume, IOCTL_DISK_GET_LENGTH_INFO, NULL, 0, (LPVOID)&TotalNumberOfBytes, sizeof(ULARGE_INTEGER), &BytesReturned, NULL); + if (ret && StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14007, szResult); + + CloseHandle(hVolume); + } + + TRACE("szResult %s hVOlume %p ret %d LengthInformation %ul Bytesreturned %d\n", debugstr_w(szResult), hVolume, ret, TotalNumberOfBytes.QuadPart, BytesReturned); + + if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart - FreeBytesAvailable.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14003, szResult); + + if (StrFormatByteSizeW(FreeBytesAvailable.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14005, szResult); + + Result = GetFreeBytesShare(TotalNumberOfFreeBytes.QuadPart, TotalNumberOfBytes.QuadPart); + /* set free bytes percentage */ + swprintf(szResult, L"%02u%%", Result); + SetDlgItemTextW(hwndDlg, 14006, szResult); + /* store used share amount */ + Result = 100 - Result; + swprintf(szResult, L"%02u%%", Result); + SetDlgItemTextW(hwndDlg, 14004, szResult); + if (DriveType == DRIVE_FIXED) + { + if (LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szBuffer, sizeof(szBuffer) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14001, szBuffer); + } + else /* DriveType == DRIVE_CDROM) */ + { + if (LoadStringW(shell32_hInstance, IDS_DRIVE_CDROM, szBuffer, sizeof(szBuffer) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14001, szBuffer); + } + } + } + /* set drive description */ + GetDlgItemTextW(hwndDlg, 14009, szFormat, 50); + swprintf(szBuffer, szFormat, szDrive); + SetDlgItemTextW(hwndDlg, 14009, szBuffer); +} + +static INT_PTR CALLBACK +DriveGeneralDlg( + HWND hwndDlg, + UINT uMsg, + WPARAM wParam, + LPARAM lParam) +{ + switch(uMsg) + { + case WM_INITDIALOG: + { + LPPROPSHEETPAGEW ppsp = (LPPROPSHEETPAGEW)lParam; + if (ppsp == NULL) + break; + + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)ppsp->lParam); + InitializeGeneralDriveDialog(hwndDlg, (LPWSTR)ppsp->lParam); + return TRUE; + } + case WM_DRAWITEM: + { + LPDRAWITEMSTRUCT drawItem = (LPDRAWITEMSTRUCT)lParam; + + if (drawItem->CtlID >= 14013 && drawItem->CtlID <= 14015) + { + PaintStaticControls(hwndDlg, drawItem); + return TRUE; + } + break; + } + + case WM_COMMAND: + if (LOWORD(wParam) == 14010) /* Disk Cleanup */ + { + UINT cchSysPath; + STARTUPINFOW si; + PROCESS_INFORMATION pi; + WCHAR wszPath[MAX_PATH]; + LPWSTR pwszDrive = (WCHAR*)GetWindowLongPtr(hwndDlg, DWLP_USER); + + ZeroMemory(&si, sizeof(si)); + si.cb = sizeof(si); + ZeroMemory(&pi, sizeof(pi)); + cchSysPath = GetSystemDirectoryW(wszPath, MAX_PATH); + if (!cchSysPath) + break; + StringCchPrintfW(wszPath + cchSysPath, _countof(wszPath) - cchSysPath, L"\\cleanmgr.exe /D %s", pwszDrive); + if (CreateProcessW(NULL, wszPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) + { + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + } + } + break; + case WM_NOTIFY: + if (LOWORD(wParam) == 14000) // Label + { + if (HIWORD(wParam) == EN_CHANGE) + { + PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + } + break; + } + else if (((LPNMHDR)lParam)->hwndFrom == GetParent(hwndDlg)) + { + /* Property Sheet */ + LPPSHNOTIFY lppsn = (LPPSHNOTIFY)lParam; + + if (lppsn->hdr.code == PSN_APPLY) + { + LPWSTR pwszDrive = (LPWSTR)GetWindowLongPtr(hwndDlg, DWLP_USER); + WCHAR wszBuf[256]; + + if (pwszDrive && GetDlgItemTextW(hwndDlg, 14000, wszBuf, sizeof(wszBuf) / sizeof(WCHAR))) + SetVolumeLabelW(pwszDrive, wszBuf); + SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR); + return TRUE; + } + } + break; + + default: + break; + } + + return FALSE; +} + +static BOOL +InitializeFmifsLibrary(PFORMAT_DRIVE_CONTEXT pContext) +{ + INITIALIZE_FMIFS InitFmifs; + BOOLEAN ret; + HMODULE hLibrary; + + hLibrary = pContext->hLibrary = LoadLibraryW(L"fmifs.dll"); + if(!hLibrary) + { + ERR("failed to load fmifs.dll\n"); + return FALSE; + } + + InitFmifs = (INITIALIZE_FMIFS)GetProcAddress(hLibrary, "InitializeFmIfs"); + if (!InitFmifs) + { + ERR("InitializeFmIfs export is missing\n"); + FreeLibrary(hLibrary); + return FALSE; + } + + ret = (*InitFmifs)(NULL, DLL_PROCESS_ATTACH, NULL); + if (!ret) + { + ERR("fmifs failed to initialize\n"); + FreeLibrary(hLibrary); + return FALSE; + } + + pContext->QueryAvailableFileSystemFormat = (QUERY_AVAILABLEFSFORMAT)GetProcAddress(hLibrary, "QueryAvailableFileSystemFormat"); + if (!pContext->QueryAvailableFileSystemFormat) + { + ERR("QueryAvailableFileSystemFormat export is missing\n"); + FreeLibrary(hLibrary); + return FALSE; + } + + pContext->FormatEx = (FORMAT_EX) GetProcAddress(hLibrary, "FormatEx"); + if (!pContext->FormatEx) + { + ERR("FormatEx export is missing\n"); + FreeLibrary(hLibrary); + return FALSE; + } + + pContext->EnableVolumeCompression = (ENABLEVOLUMECOMPRESSION) GetProcAddress(hLibrary, "EnableVolumeCompression"); + if (!pContext->FormatEx) + { + ERR("EnableVolumeCompression export is missing\n"); + FreeLibrary(hLibrary); + return FALSE; + } + + pContext->Chkdsk = (CHKDSK) GetProcAddress(hLibrary, "Chkdsk"); + if (!pContext->Chkdsk) + { + ERR("Chkdsk export is missing\n"); + FreeLibrary(hLibrary); + return FALSE; + } + + return TRUE; +} + +static INT_PTR CALLBACK +DriveExtraDlg( + HWND hwndDlg, + UINT uMsg, + WPARAM wParam, + LPARAM lParam) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + LPPROPSHEETPAGEW ppsp = (LPPROPSHEETPAGEW)lParam; + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)ppsp->lParam); + return TRUE; + } + case WM_COMMAND: + { + STARTUPINFOW si; + PROCESS_INFORMATION pi; + WCHAR szPath[MAX_PATH + 10]; + WCHAR szArg[MAX_PATH]; + WCHAR *szDrive; + DWORD dwSize; + FORMAT_DRIVE_CONTEXT Context; + + ZeroMemory(&si, sizeof(si)); + si.cb = sizeof(si); + ZeroMemory(&pi, sizeof(pi)); + + szDrive = (WCHAR*)GetWindowLongPtr(hwndDlg, DWLP_USER); + switch(LOWORD(wParam)) + { + case 14000: + if (InitializeFmifsLibrary(&Context)) + { + Context.Drive = szDrive[0]; + DialogBoxParamW(shell32_hInstance, L"CHKDSK_DLG", hwndDlg, ChkDskDlg, (LPARAM)&Context); + FreeLibrary(Context.hLibrary); + } + break; + case 14001: + dwSize = sizeof(szPath); + if (RegGetValueW(HKEY_LOCAL_MACHINE, + L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\DefragPath", + NULL, + RRF_RT_REG_EXPAND_SZ, + NULL, + (PVOID)szPath, + &dwSize) == ERROR_SUCCESS) + { + swprintf(szArg, szPath, szDrive[0]); + if (!GetSystemDirectoryW(szPath, MAX_PATH)) + break; + szDrive = PathAddBackslashW(szPath); + if (!szDrive) + break; + + wcscat(szDrive, L"mmc.exe"); + if (CreateProcessW(szPath, szArg, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) + { + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + } + } + break; + case 14002: + dwSize = sizeof(szPath); + if (RegGetValueW(HKEY_LOCAL_MACHINE, + L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\BackupPath", + NULL, + RRF_RT_REG_EXPAND_SZ, + NULL, + (PVOID)szPath, + &dwSize) == ERROR_SUCCESS) + { + if (CreateProcessW(szPath, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) + { + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + } + } + } + break; + } + } + return FALSE; +} + +static INT_PTR CALLBACK +DriveHardwareDlg( + HWND hwndDlg, + UINT uMsg, + WPARAM wParam, + LPARAM lParam) +{ + UNREFERENCED_PARAMETER(lParam); + UNREFERENCED_PARAMETER(wParam); + + switch(uMsg) + { + case WM_INITDIALOG: + { + GUID Guid = GUID_DEVCLASS_DISKDRIVE; + + /* create the hardware page */ + DeviceCreateHardwarePageEx(hwndDlg, &Guid, 1, HWPD_STANDARDLIST); + break; + } + } + + return FALSE; +} + +static HRESULT CALLBACK +AddPropSheetPageProc(HPROPSHEETPAGE hpage, LPARAM lParam) +{ + PROPSHEETHEADER *ppsh = (PROPSHEETHEADER *)lParam; + if (ppsh != NULL && ppsh->nPages < MAX_PROPERTY_SHEET_PAGE) + { + ppsh->phpage[ppsh->nPages++] = hpage; + return TRUE; + } + return FALSE; +} + +typedef struct _DRIVE_PROP_PAGE +{ + LPCSTR resname; + DLGPROC dlgproc; + UINT DriveType; +} DRIVE_PROP_PAGE; + +BOOL +SH_ShowDriveProperties(WCHAR *pwszDrive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST *apidl) +{ + HPSXA hpsx = NULL; + HPROPSHEETPAGE hpsp[MAX_PROPERTY_SHEET_PAGE]; + PROPSHEETHEADERW psh; + HWND hwnd; + UINT i, DriveType; + WCHAR wszName[256]; + CComPtr<IDataObject> pDataObj; + + static const DRIVE_PROP_PAGE PropPages[] = + { + { "DRIVE_GENERAL_DLG", DriveGeneralDlg, -1}, + { "DRIVE_EXTRA_DLG", DriveExtraDlg, DRIVE_FIXED}, + { "DRIVE_HARDWARE_DLG", DriveHardwareDlg, -1} + }; + + ZeroMemory(&psh, sizeof(PROPSHEETHEADERW)); + psh.dwSize = sizeof(PROPSHEETHEADERW); + psh.dwFlags = 0; // FIXME: make it modeless + psh.hwndParent = NULL; + psh.nStartPage = 0; + psh.phpage = hpsp; + + if (GetVolumeInformationW(pwszDrive, wszName, sizeof(wszName) / sizeof(WCHAR), NULL, NULL, NULL, NULL, 0)) + { + psh.pszCaption = wszName; + psh.dwFlags |= PSH_PROPTITLE; + if (wszName[0] == UNICODE_NULL) + { + /* FIXME: check if disk is a really a local hdd */ + i = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, wszName, sizeof(wszName) / sizeof(WCHAR) - 6); + StringCchPrintf(wszName + i, sizeof(wszName) / sizeof(WCHAR) - i, L" (%s)", pwszDrive); + } + } + + DriveType = GetDriveTypeW(pwszDrive); + for (i = 0; i < _countof(PropPages); i++) + { + if (PropPages[i].DriveType == (UINT)-1 || PropPages[i].DriveType == DriveType) + { + HPROPSHEETPAGE hprop = SH_CreatePropertySheetPage(PropPages[i].resname, PropPages[i].dlgproc, (LPARAM)pwszDrive, NULL); + if (hprop) + { + hpsp[psh.nPages] = hprop; + psh.nPages++; + } + } + } + + if (SHCreateDataObject(pidlFolder, 1, apidl, NULL, IID_IDataObject, (void **)&pDataObj) == S_OK) + { + hpsx = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, L"Drive", MAX_PROPERTY_SHEET_PAGE - _countof(PropPages), pDataObj); + if (hpsx) + SHAddFromPropSheetExtArray(hpsx, (LPFNADDPROPSHEETPAGE)AddPropSheetPageProc, (LPARAM)&psh); + } + + hwnd = (HWND)PropertySheetW(&psh); + + if (hpsx) + SHDestroyPropSheetExtArray(hpsx); + + if (!hwnd) + return FALSE; + return TRUE; +} + +static VOID InsertDefaultClusterSizeForFs(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext) { - WCHAR szFs[100] = {0}; - WCHAR szDrive[4] = { L'C', ':', '\\', 0 }; + WCHAR wszBuf[100] = {0}; + WCHAR szDrive[] = L"C:\\"; INT iSelIndex; ULARGE_INTEGER FreeBytesAvailableUser, TotalNumberOfBytes; DWORD ClusterSize; @@ -814,59 +842,56 @@ if (iSelIndex == CB_ERR) return; - if (SendMessageW(hDlgCtrl, CB_GETLBTEXT, iSelIndex, (LPARAM)szFs) == CB_ERR) + if (SendMessageW(hDlgCtrl, CB_GETLBTEXT, iSelIndex, (LPARAM)wszBuf) == CB_ERR) return; - szFs[(sizeof(szFs)/sizeof(WCHAR))-1] = L'\0'; szDrive[0] = pContext->Drive + 'A'; if (!GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailableUser, &TotalNumberOfBytes, NULL)) return; - if (!wcsicmp(szFs, L"FAT16") || - !wcsicmp(szFs, L"FAT")) //REACTOS HACK - { - if (!GetDefaultClusterSize(szFs, &ClusterSize, &TotalNumberOfBytes)) + if (!wcsicmp(wszBuf, L"FAT16") || + !wcsicmp(wszBuf, L"FAT")) //REACTOS HACK + { + if (!GetDefaultClusterSize(wszBuf, &ClusterSize, &TotalNumberOfBytes)) { TRACE("FAT16 is not supported on hdd larger than 4G current %lu\n", TotalNumberOfBytes.QuadPart); SendMessageW(hDlgCtrl, CB_DELETESTRING, iSelIndex, 0); return; } - if (LoadStringW(shell32_hInstance, IDS_DEFAULT_CLUSTER_SIZE, szFs, sizeof(szFs) / sizeof(WCHAR))) + if (LoadStringW(shell32_hInstance, IDS_DEFAULT_CLUSTER_SIZE, wszBuf, sizeof(wszBuf) / sizeof(WCHAR))) { hDlgCtrl = GetDlgItem(hwndDlg, 28680); - szFs[(sizeof(szFs)/sizeof(WCHAR))-1] = L'\0'; SendMessageW(hDlgCtrl, CB_RESETCONTENT, 0, 0); - lIndex = SendMessageW(hDlgCtrl, CB_ADDSTRING, 0, (LPARAM)szFs); + lIndex = SendMessageW(hDlgCtrl, CB_ADDSTRING, 0, (LPARAM)wszBuf); if (lIndex != CB_ERR) SendMessageW(hDlgCtrl, CB_SETITEMDATA, lIndex, (LPARAM)ClusterSize); SendMessageW(hDlgCtrl, CB_SETCURSEL, 0, 0); } } - else if (!wcsicmp(szFs, L"FAT32")) - { - if (!GetDefaultClusterSize(szFs, &ClusterSize, &TotalNumberOfBytes)) + else if (!wcsicmp(wszBuf, L"FAT32")) + { + if (!GetDefaultClusterSize(wszBuf, &ClusterSize, &TotalNumberOfBytes)) { TRACE("FAT32 is not supported on hdd larger than 32G current %lu\n", TotalNumberOfBytes.QuadPart); SendMessageW(hDlgCtrl, CB_DELETESTRING, iSelIndex, 0); return; } - if (LoadStringW(shell32_hInstance, IDS_DEFAULT_CLUSTER_SIZE, szFs, sizeof(szFs) / sizeof(WCHAR))) + if (LoadStringW(shell32_hInstance, IDS_DEFAULT_CLUSTER_SIZE, wszBuf, sizeof(wszBuf) / sizeof(WCHAR))) { hDlgCtrl = GetDlgItem(hwndDlg, 28680); - szFs[(sizeof(szFs)/sizeof(WCHAR))-1] = L'\0'; SendMessageW(hDlgCtrl, CB_RESETCONTENT, 0, 0); - lIndex = SendMessageW(hDlgCtrl, CB_ADDSTRING, 0, (LPARAM)szFs); + lIndex = SendMessageW(hDlgCtrl, CB_ADDSTRING, 0, (LPARAM)wszBuf); if (lIndex != CB_ERR) SendMessageW(hDlgCtrl, CB_SETITEMDATA, lIndex, (LPARAM)ClusterSize); SendMessageW(hDlgCtrl, CB_SETCURSEL, 0, 0); } } - else if (!wcsicmp(szFs, L"NTFS")) - { - if (!GetDefaultClusterSize(szFs, &ClusterSize, &TotalNumberOfBytes)) + else if (!wcsicmp(wszBuf, L"NTFS")) + { + if (!GetDefaultClusterSize(wszBuf, &ClusterSize, &TotalNumberOfBytes)) { TRACE("NTFS is not supported on hdd larger than 2TB current %lu\n", TotalNumberOfBytes.QuadPart); SendMessageW(hDlgCtrl, CB_DELETESTRING, iSelIndex, 0); @@ -874,11 +899,10 @@ } hDlgCtrl = GetDlgItem(hwndDlg, 28680); - if (LoadStringW(shell32_hInstance, IDS_DEFAULT_CLUSTER_SIZE, szFs, sizeof(szFs) / sizeof(WCHAR))) - { - szFs[(sizeof(szFs)/sizeof(WCHAR))-1] = L'\0'; + if (LoadStringW(shell32_hInstance, IDS_DEFAULT_CLUSTER_SIZE, wszBuf, sizeof(wszBuf) / sizeof(WCHAR))) + { SendMessageW(hDlgCtrl, CB_RESETCONTENT, 0, 0); - lIndex = SendMessageW(hDlgCtrl, CB_ADDSTRING, 0, (LPARAM)szFs); + lIndex = SendMessageW(hDlgCtrl, CB_ADDSTRING, 0, (LPARAM)wszBuf); if (lIndex != CB_ERR) SendMessageW(hDlgCtrl, CB_SETITEMDATA, lIndex, (LPARAM)ClusterSize); SendMessageW(hDlgCtrl, CB_SETCURSEL, 0, 0); @@ -887,9 +911,9 @@ for (lIndex = 0; lIndex < 4; lIndex++) { TotalNumberOfBytes.QuadPart = ClusterSize; - if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, szFs, sizeof(szFs) / sizeof(WCHAR))) + if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, wszBuf, sizeof(wszBuf) / sizeof(WCHAR))) { - lIndex = SendMessageW(hDlgCtrl, CB_ADDSTRING, 0, (LPARAM)szFs); + lIndex = SendMessageW(hDlgCtrl, CB_ADDSTRING, 0, (LPARAM)wszBuf); if (lIndex != CB_ERR) SendMessageW(hDlgCtrl, CB_SETITEMDATA, lIndex, (LPARAM)ClusterSize); } @@ -904,56 +928,40 @@ } } -VOID +static VOID InitializeFormatDriveDlg(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext) { WCHAR szText[120]; - WCHAR szDrive[4] = { L'C', ':', '\\', 0 }; - WCHAR szFs[30] = {0}; - INT Length, TempLength; - DWORD dwSerial, dwMaxComp, dwFileSys; + WCHAR szDrive[] = L"C:\\"; + WCHAR szFs[30] = L""; + INT cchText; ULARGE_INTEGER FreeBytesAvailableUser, TotalNumberOfBytes; DWORD dwIndex, dwDefault; UCHAR uMinor, uMajor; BOOLEAN Latest; - HWND hDlgCtrl; - - Length = GetWindowTextW(hwndDlg, szText, sizeof(szText) / sizeof(WCHAR)); - if (Length < 0) - Length = 0; + HWND hwndFileSystems; + + cchText = GetWindowTextW(hwndDlg, szText, sizeof(szText) / sizeof(WCHAR) - 1); + if (cchText < 0) + cchText = 0; + szText[cchText++] = L' '; szDrive[0] = pContext->Drive + L'A'; - if (GetVolumeInformationW(szDrive, &szText[Length+1], (sizeof(szText) / sizeof(WCHAR)) - Length - 2, &dwSerial, &dwMaxComp, &dwFileSys, szFs, sizeof(szFs) / sizeof(WCHAR))) - { - szText[Length] = L' '; - szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0'; - TempLength = wcslen(&szText[Length+1]); - if (!TempLength) + if (GetVolumeInformationW(szDrive, &szText[cchText], (sizeof(szText) / sizeof(WCHAR)) - cchText, NULL, NULL, NULL, szFs, sizeof(szFs) / sizeof(WCHAR))) + { + if (szText[cchText] == UNICODE_NULL) { /* load default volume label */ - TempLength = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, &szText[Length+1], (sizeof(szText) / sizeof(WCHAR)) - Length - 2); + cchText += LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, &szText[cchText], (sizeof(szText) / sizeof(WCHAR)) - cchText); } else { /* set volume label */ - szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0'; - SetDlgItemTextW(hwndDlg, 28679, &szText[Length+1]); - } - Length += TempLength + 1; - } - - if ((DWORD)Length + 4 < (sizeof(szText) / sizeof(WCHAR))) - { - szText[Length] = L' '; - szText[Length+1] = L'('; - szText[Length+2] = szDrive[0]; - szText[Length+3] = L')'; - Length += 4; - } - - if ((DWORD)Length < (sizeof(szText) / sizeof(WCHAR))) - szText[Length] = L'\0'; - else - szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0'; + SetDlgItemTextW(hwndDlg, 28679, &szText[cchText]); + cchText += wcslen(&szText[cchText]); + } + } + + StringCchPrintfW(szText + cchText, _countof(szText) - cchText, L" (%c)", szDrive[0]); /* set window text */ SetWindowTextW(hwndDlg, szText); @@ -963,7 +971,6 @@ if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, szText, sizeof(szText) / sizeof(WCHAR))) { /* add drive capacity */ - szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0'; SendDlgItemMessageW(hwndDlg, 28673, CB_ADDSTRING, 0, (LPARAM)szText); SendDlgItemMessageW(hwndDlg, 28673, CB_SETCURSEL, 0, (LPARAM)0); } @@ -978,15 +985,14 @@ /* enumerate all available filesystems */ dwIndex = 0; dwDefault = 0; - hDlgCtrl = GetDlgItem(hwndDlg, 28677); + hwndFileSystems = GetDlgItem(hwndDlg, 28677); while(pContext->QueryAvailableFileSystemFormat(dwIndex, szText, &uMajor, &uMinor, &Latest)) { - szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0'; if (!wcsicmp(szText, szFs)) dwDefault = dwIndex; - SendMessageW(hDlgCtrl, CB_ADDSTRING, 0, (LPARAM)szText); + SendMessageW(hwndFileSystems, CB_ADDSTRING, 0, (LPARAM)szText); dwIndex++; } @@ -997,7 +1003,7 @@ } /* select default filesys */ - SendMessageW(hDlgCtrl, CB_SETCURSEL, dwDefault, 0); + SendMessageW(hwndFileSystems, CB_SETCURSEL, dwDefault, 0); /* setup cluster combo */ InsertDefaultClusterSizeForFs(hwndDlg, pContext); /* hide progress control */ @@ -1007,8 +1013,7 @@ static HWND FormatDrvDialog = NULL; static BOOLEAN bSuccess = FALSE; -BOOLEAN -NTAPI +static BOOLEAN NTAPI FormatExCB( IN CALLBACKCOMMAND Command, IN ULONG SubAction, @@ -1143,8 +1148,7 @@ } } -INT_PTR -CALLBACK +static INT_PTR CALLBACK FormatDriveDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { PFORMAT_DRIVE_CONTEXT pContext; @@ -1178,71 +1182,6 @@ return FALSE; } -BOOL -InitializeFmifsLibrary(PFORMAT_DRIVE_CONTEXT pContext) -{ - INITIALIZE_FMIFS InitFmifs; - BOOLEAN ret; - HMODULE hLibrary; - - hLibrary = pContext->hLibrary = LoadLibraryW(L"fmifs.dll"); - if(!hLibrary) - { - ERR("failed to load fmifs.dll\n"); - return FALSE; - } - - InitFmifs = (INITIALIZE_FMIFS)GetProcAddress(hLibrary, "InitializeFmIfs"); - if (!InitFmifs) - { - ERR("InitializeFmIfs export is missing\n"); - FreeLibrary(hLibrary); - return FALSE; - } - - ret = (*InitFmifs)(NULL, DLL_PROCESS_ATTACH, NULL); - if (!ret) - { - ERR("fmifs failed to initialize\n"); - FreeLibrary(hLibrary); - return FALSE; - } - - pContext->QueryAvailableFileSystemFormat = (QUERY_AVAILABLEFSFORMAT)GetProcAddress(hLibrary, "QueryAvailableFileSystemFormat"); - if (!pContext->QueryAvailableFileSystemFormat) - { - ERR("QueryAvailableFileSystemFormat export is missing\n"); - FreeLibrary(hLibrary); - return FALSE; - } - - pContext->FormatEx = (FORMAT_EX) GetProcAddress(hLibrary, "FormatEx"); - if (!pContext->FormatEx) - { - ERR("FormatEx export is missing\n"); - FreeLibrary(hLibrary); - return FALSE; - } - - pContext->EnableVolumeCompression = (ENABLEVOLUMECOMPRESSION) GetProcAddress(hLibrary, "EnableVolumeCompression"); - if (!pContext->FormatEx) - { - ERR("EnableVolumeCompression export is missing\n"); - FreeLibrary(hLibrary); - return FALSE; - } - - pContext->Chkdsk = (CHKDSK) GetProcAddress(hLibrary, "Chkdsk"); - if (!pContext->Chkdsk) - { - ERR("Chkdsk export is missing\n"); - FreeLibrary(hLibrary); - return FALSE; - } - - return TRUE; -} - /************************************************************************* * SHFormatDrive (SHELL32.@) */
13 years, 6 months
1
0
0
0
[rharabien] 54703: [SHELL32] - Fix exceptions when starting drive properties dialog
by rharabien@svn.reactos.org
Author: rharabien Date: Mon Dec 19 20:08:33 2011 New Revision: 54703 URL:
http://svn.reactos.org/svn/reactos?rev=54703&view=rev
Log: [SHELL32] - Fix exceptions when starting drive properties dialog Modified: trunk/reactos/dll/win32/shell32/drive.cpp Modified: trunk/reactos/dll/win32/shell32/drive.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/drive.cp…
============================================================================== --- trunk/reactos/dll/win32/shell32/drive.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/drive.cpp [iso-8859-1] Mon Dec 19 20:08:33 2011 @@ -443,55 +443,56 @@ LPARAM lParam ) { - LPPROPSHEETPAGEW ppsp; - LPDRAWITEMSTRUCT drawItem; - STARTUPINFOW si; - PROCESS_INFORMATION pi; - WCHAR * lpstr; - WCHAR szPath[MAX_PATH]; - UINT length; - LPPSHNOTIFY lppsn; - switch(uMsg) { case WM_INITDIALOG: - ppsp = (LPPROPSHEETPAGEW)lParam; + { + LPPROPSHEETPAGEW ppsp = (LPPROPSHEETPAGEW)lParam; if (ppsp == NULL) break; - lpstr = (WCHAR *)ppsp->lParam; - SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)lpstr); - InitializeGeneralDriveDialog(hwndDlg, lpstr); + + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)ppsp->lParam); + InitializeGeneralDriveDialog(hwndDlg, (LPWSTR)ppsp->lParam); return TRUE; + } case WM_DRAWITEM: - drawItem = (LPDRAWITEMSTRUCT)lParam; + { + LPDRAWITEMSTRUCT drawItem = (LPDRAWITEMSTRUCT)lParam; + if (drawItem->CtlID >= 14013 && drawItem->CtlID <= 14015) { PaintStaticControls(hwndDlg, drawItem); return TRUE; } break; + } + case WM_COMMAND: if (LOWORD(wParam) == 14010) /* Disk Cleanup */ { - lpstr = (WCHAR*)GetWindowLongPtr(hwndDlg, DWLP_USER); - ZeroMemory( &si, sizeof(si) ); + UINT length; + STARTUPINFOW si; + PROCESS_INFORMATION pi; + WCHAR wszPath[MAX_PATH]; + LPWSTR lpStr = (WCHAR*)GetWindowLongPtr(hwndDlg, DWLP_USER); + + ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); - ZeroMemory( &pi, sizeof(pi) ); - if (!GetSystemDirectoryW(szPath, MAX_PATH)) + ZeroMemory(&pi, sizeof(pi)); + if (!GetSystemDirectoryW(wszPath, MAX_PATH)) break; - wcscat(szPath, L"\\cleanmgr.exe /D "); - length = wcslen(szPath); - szPath[length] = lpstr[0]; - szPath[length+1] = L'\0'; - if (CreateProcessW(NULL, szPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) + wcscat(wszPath, L"\\cleanmgr.exe /D "); + length = wcslen(wszPath); + wszPath[length] = lpStr[0]; + wszPath[length+1] = L'\0'; + if (CreateProcessW(NULL, wszPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { CloseHandle(pi.hProcess); CloseHandle(pi.hThread); } - break; } + break; case WM_NOTIFY: - lppsn = (LPPSHNOTIFY) lParam; if (LOWORD(wParam) == 14000) { if (HIWORD(wParam) == EN_CHANGE) @@ -500,23 +501,27 @@ } break; } - if (lppsn->hdr.code == PSN_APPLY) + else if (((LPNMHDR)lParam)->hwndFrom == GetParent(hwndDlg)) { - lpstr = (LPWSTR)GetWindowLongPtr(hwndDlg, DWLP_USER); - if (lpstr && GetDlgItemTextW(hwndDlg, 14000, szPath, sizeof(szPath) / sizeof(WCHAR))) + /* Property Sheet */ + LPPSHNOTIFY lppsn = (LPPSHNOTIFY)lParam; + + if (lppsn->hdr.code == PSN_APPLY) { - szPath[(sizeof(szPath)/sizeof(WCHAR))-1] = L'\0'; - SetVolumeLabelW(lpstr, szPath); + LPWSTR lpstr = (LPWSTR)GetWindowLongPtr(hwndDlg, DWLP_USER); + WCHAR buf[256]; + + if (lpstr && GetDlgItemTextW(hwndDlg, 14000, buf, sizeof(buf) / sizeof(WCHAR))) + SetVolumeLabelW(lpstr, buf); + SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR); + return TRUE; } - SetWindowLongPtr( hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR ); - return TRUE; } break; default: break; } - return FALSE; } @@ -665,21 +670,21 @@ } BOOL -SH_ShowDriveProperties(WCHAR * drive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST * apidl) +SH_ShowDriveProperties(WCHAR *drive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST *apidl) { HPSXA hpsx = NULL; HPROPSHEETPAGE hpsp[MAX_PROPERTY_SHEET_PAGE]; PROPSHEETHEADERW psh; - BOOL ret; + HWND hwnd; UINT i; WCHAR szName[MAX_PATH+6]; DWORD dwMaxComponent, dwFileSysFlags; - CComPtr<IDataObject> pDataObj; + CComPtr<IDataObject> pDataObj; UINT DriveType; ZeroMemory(&psh, sizeof(PROPSHEETHEADERW)); psh.dwSize = sizeof(PROPSHEETHEADERW); - //psh.dwFlags = PSH_USECALLBACK | PSH_PROPTITLE; + psh.dwFlags = 0; // FIXME: make it modeless psh.hwndParent = NULL; psh.nStartPage = 0; psh.phpage = hpsp; @@ -691,25 +696,17 @@ psh.dwFlags |= PSH_PROPTITLE; if (!wcslen(szName)) { - /* FIXME - * check if disk is a really a local hdd - */ + /* FIXME: check if disk is a really a local hdd */ i = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szName, sizeof(szName) / sizeof(WCHAR) - 6); if (i > 0 && i < (sizeof(szName) / sizeof(WCHAR)) - 6) - { - szName[i] = L' '; - szName[i+1] = L'('; - wcscpy(&szName[i+2], drive); - szName[i+4] = L')'; - szName[i+5] = L'\0'; - } + wsprintf(szName + i, L" (%s)", drive); } } DriveType = GetDriveTypeW(drive); for (i = 0; i < DRIVE_PROPERTY_PAGES; i++) { - if (PropPages[i].DriveType == (UINT) - 1 || (PropPages[i].DriveType != (UINT) - 1 && PropPages[i].DriveType == DriveType)) + if (PropPages[i].DriveType == (UINT)-1 || PropPages[i].DriveType == DriveType) { HPROPSHEETPAGE hprop = SH_CreatePropertySheetPage(PropPages[i].resname, PropPages[i].dlgproc, (LPARAM)drive, NULL); if (hprop) @@ -724,20 +721,17 @@ { hpsx = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, L"Drive", MAX_PROPERTY_SHEET_PAGE - DRIVE_PROPERTY_PAGES, pDataObj); if (hpsx) - { SHAddFromPropSheetExtArray(hpsx, (LPFNADDPROPSHEETPAGE)AddPropSheetPageProc, (LPARAM)&psh); - } - } - - ret = PropertySheetW(&psh); + } + + hwnd = (HWND)PropertySheetW(&psh); if (hpsx) SHDestroyPropSheetExtArray(hpsx); - if (ret < 0) + if (!hwnd) return FALSE; - else - return TRUE; + return TRUE; } BOOL @@ -804,7 +798,6 @@ return TRUE; } - VOID InsertDefaultClusterSizeForFs(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext) { @@ -1011,9 +1004,8 @@ ShowWindow(GetDlgItem(hwndDlg, 28678), SW_HIDE); } -HWND FormatDrvDialog = NULL; -BOOLEAN bSuccess = FALSE; - +static HWND FormatDrvDialog = NULL; +static BOOLEAN bSuccess = FALSE; BOOLEAN NTAPI @@ -1049,10 +1041,6 @@ return TRUE; } - - - - VOID FormatDrive(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext) @@ -1154,7 +1142,6 @@ pContext->Result = FALSE; } } - INT_PTR CALLBACK @@ -1191,7 +1178,6 @@ return FALSE; } - BOOL InitializeFmifsLibrary(PFORMAT_DRIVE_CONTEXT pContext) {
13 years, 6 months
1
0
0
0
[rharabien] 54702: [SHELL32] - Formatting. No code changes.
by rharabien@svn.reactos.org
Author: rharabien Date: Mon Dec 19 19:31:12 2011 New Revision: 54702 URL:
http://svn.reactos.org/svn/reactos?rev=54702&view=rev
Log: [SHELL32] - Formatting. No code changes. Modified: trunk/reactos/dll/win32/shell32/drive.cpp Modified: trunk/reactos/dll/win32/shell32/drive.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/drive.cp…
============================================================================== --- trunk/reactos/dll/win32/shell32/drive.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/drive.cpp [iso-8859-1] Mon Dec 19 19:31:12 2011 @@ -91,7 +91,7 @@ ENABLEVOLUMECOMPRESSION EnableVolumeCompression; CHKDSK Chkdsk; UINT Result; -}FORMAT_DRIVE_CONTEXT, *PFORMAT_DRIVE_CONTEXT; +} FORMAT_DRIVE_CONTEXT, *PFORMAT_DRIVE_CONTEXT; BOOL InitializeFmifsLibrary(PFORMAT_DRIVE_CONTEXT pContext); BOOL GetDefaultClusterSize(LPWSTR szFs, PDWORD pClusterSize, PULARGE_INTEGER TotalNumberOfBytes); @@ -112,8 +112,8 @@ VOID GetDriveNameWithLetter(LPWSTR szText, UINT Length, WCHAR Drive) { - WCHAR szDrive[] = {'C',':','\\', 0}; - DWORD dwMaxComp, dwFileSys, TempLength = 0; + WCHAR szDrive[] = {'C', ':', '\\', 0}; + DWORD dwMaxComp, dwFileSys, TempLength = 0; szDrive[0] = Drive; if (GetVolumeInformationW(szDrive, szText, Length, NULL, &dwMaxComp, &dwFileSys, NULL, 0)) @@ -123,7 +123,7 @@ if (!TempLength) { /* load default volume label */ - TempLength = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, &szText[Length+1], (sizeof(szText)/sizeof(WCHAR))- Length - 2); + TempLength = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, &szText[Length+1], (sizeof(szText) / sizeof(WCHAR)) - Length - 2); } } if (TempLength + 4 < Length) @@ -132,7 +132,7 @@ szText[TempLength+1] = L'('; szText[TempLength+2] = szDrive[0]; szText[TempLength+3] = L')'; - TempLength +=4; + TempLength += 4; } if (TempLength < Length) @@ -149,9 +149,9 @@ UINT Length; SetWindowLongPtr(hwndDlg, DWLP_USER, (INT_PTR)pContext); - Length = GetWindowTextW(hwndDlg, szText, sizeof(szText)/sizeof(WCHAR)); - - GetDriveNameWithLetter(&szText[Length +1], (sizeof(szText)/sizeof(WCHAR))-Length-1, pContext->Drive); + Length = GetWindowTextW(hwndDlg, szText, sizeof(szText) / sizeof(WCHAR)); + + GetDriveNameWithLetter(&szText[Length +1], (sizeof(szText) / sizeof(WCHAR)) - Length - 1, pContext->Drive); szText[Length] = L' '; szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0'; SetWindowText(hwndDlg, szText); @@ -200,13 +200,13 @@ { DWORD ClusterSize = 0, dwMaxComponentLength, FileSystemFlags; WCHAR szFs[30]; - WCHAR szDrive[] = {'C',':','\\', 0}; + WCHAR szDrive[] = {'C', ':', '\\', 0}; WCHAR szVolumeLabel[40]; ULARGE_INTEGER TotalNumberOfFreeBytes, FreeBytesAvailableUser; BOOLEAN bCorrectErrors = FALSE, bScanDrive = FALSE; szDrive[0] = pContext->Drive; - if(!GetVolumeInformationW(szDrive, szVolumeLabel, sizeof(szVolumeLabel)/sizeof(WCHAR), NULL, &dwMaxComponentLength, &FileSystemFlags, szFs, sizeof(szFs)/sizeof(WCHAR))) + if(!GetVolumeInformationW(szDrive, szVolumeLabel, sizeof(szVolumeLabel) / sizeof(WCHAR), NULL, &dwMaxComponentLength, &FileSystemFlags, szFs, sizeof(szFs) / sizeof(WCHAR))) { FIXME("failed to get drive fs type\n"); return; @@ -257,7 +257,7 @@ SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)lParam); InitializeChkDskDialog(hwndDlg, (PFORMAT_DRIVE_CONTEXT)lParam); return TRUE; - case WM_COMMAND: + case WM_COMMAND: switch(LOWORD(wParam)) { case IDCANCEL: @@ -279,158 +279,158 @@ ULONG GetFreeBytesShare(ULONGLONG TotalNumberOfFreeBytes, ULONGLONG TotalNumberOfBytes) { - ULONGLONG Temp; - - if (TotalNumberOfFreeBytes == 0LL) - { - return 0; - } - - Temp = TotalNumberOfBytes / 100; - if (Temp >= TotalNumberOfFreeBytes) - { - return 1; - } - else - { - return (ULONG)(TotalNumberOfFreeBytes / Temp); - } + ULONGLONG Temp; + + if (TotalNumberOfFreeBytes == 0LL) + { + return 0; + } + + Temp = TotalNumberOfBytes / 100; + if (Temp >= TotalNumberOfFreeBytes) + { + return 1; + } + else + { + return (ULONG)(TotalNumberOfFreeBytes / Temp); + } } static void PaintStaticControls(HWND hwndDlg, LPDRAWITEMSTRUCT drawItem) { - HBRUSH hBrush; - - if (drawItem->CtlID == 14013) - { - hBrush = CreateSolidBrush(RGB(0, 0, 255)); - if (hBrush) - { - FillRect(drawItem->hDC, &drawItem->rcItem, hBrush); - DeleteObject((HGDIOBJ)hBrush); - } - } - else if (drawItem->CtlID == 14014) - { - hBrush = CreateSolidBrush(RGB(255, 0, 255)); - if (hBrush) - { - FillRect(drawItem->hDC, &drawItem->rcItem, hBrush); - DeleteObject((HGDIOBJ)hBrush); - } - } - else if (drawItem->CtlID == 14015) - { - HBRUSH hBlueBrush; - HBRUSH hMagBrush; - RECT rect; - LONG horzsize; - LONGLONG Result; - WCHAR szBuffer[20]; - - hBlueBrush = CreateSolidBrush(RGB(0, 0, 255)); - hMagBrush = CreateSolidBrush(RGB(255, 0, 255)); - - GetDlgItemTextW(hwndDlg, 14006, szBuffer, 20); - Result = _wtoi(szBuffer); - - CopyRect(&rect, &drawItem->rcItem); - horzsize = rect.right - rect.left; - Result = (Result * horzsize) / 100; - - rect.right = drawItem->rcItem.right - Result; - FillRect(drawItem->hDC, &rect, hBlueBrush); - rect.left = rect.right; - rect.right = drawItem->rcItem.right; - FillRect(drawItem->hDC, &rect, hMagBrush); - DeleteObject(hBlueBrush); - DeleteObject(hMagBrush); - } + HBRUSH hBrush; + + if (drawItem->CtlID == 14013) + { + hBrush = CreateSolidBrush(RGB(0, 0, 255)); + if (hBrush) + { + FillRect(drawItem->hDC, &drawItem->rcItem, hBrush); + DeleteObject((HGDIOBJ)hBrush); + } + } + else if (drawItem->CtlID == 14014) + { + hBrush = CreateSolidBrush(RGB(255, 0, 255)); + if (hBrush) + { + FillRect(drawItem->hDC, &drawItem->rcItem, hBrush); + DeleteObject((HGDIOBJ)hBrush); + } + } + else if (drawItem->CtlID == 14015) + { + HBRUSH hBlueBrush; + HBRUSH hMagBrush; + RECT rect; + LONG horzsize; + LONGLONG Result; + WCHAR szBuffer[20]; + + hBlueBrush = CreateSolidBrush(RGB(0, 0, 255)); + hMagBrush = CreateSolidBrush(RGB(255, 0, 255)); + + GetDlgItemTextW(hwndDlg, 14006, szBuffer, 20); + Result = _wtoi(szBuffer); + + CopyRect(&rect, &drawItem->rcItem); + horzsize = rect.right - rect.left; + Result = (Result * horzsize) / 100; + + rect.right = drawItem->rcItem.right - Result; + FillRect(drawItem->hDC, &rect, hBlueBrush); + rect.left = rect.right; + rect.right = drawItem->rcItem.right; + FillRect(drawItem->hDC, &rect, hMagBrush); + DeleteObject(hBlueBrush); + DeleteObject(hMagBrush); + } } static void InitializeGeneralDriveDialog(HWND hwndDlg, WCHAR * szDrive) { - WCHAR szVolumeName[MAX_PATH+1] = {0}; - DWORD MaxComponentLength = 0; - DWORD FileSystemFlags = 0; - WCHAR FileSystemName[MAX_PATH+1] = {0}; - WCHAR szFormat[50]; - WCHAR szBuffer[128]; - BOOL ret; - UINT DriveType; - ULARGE_INTEGER FreeBytesAvailable; - ULARGE_INTEGER TotalNumberOfFreeBytes; - ULARGE_INTEGER TotalNumberOfBytes; - - ret = GetVolumeInformationW(szDrive, szVolumeName, MAX_PATH+1, NULL, &MaxComponentLength, &FileSystemFlags, FileSystemName, MAX_PATH+1); - if (ret) - { - /* set volume label */ - SetDlgItemTextW(hwndDlg, 14000, szVolumeName); - - /* set filesystem type */ - SetDlgItemTextW(hwndDlg, 14002, FileSystemName); - - } - - DriveType = GetDriveTypeW(szDrive); - if (DriveType == DRIVE_FIXED || DriveType == DRIVE_CDROM) - { - - if(GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes)) - { - WCHAR szResult[128]; - ULONG Result; - HANDLE hVolume; - DWORD BytesReturned = 0; - - swprintf(szResult, L"\\\\.\\%c:", towupper(szDrive[0])); - hVolume = CreateFileW(szResult, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); - if (hVolume != INVALID_HANDLE_VALUE) - { - ret = DeviceIoControl(hVolume, IOCTL_DISK_GET_LENGTH_INFO, NULL, 0, (LPVOID)&TotalNumberOfBytes, sizeof(ULARGE_INTEGER), &BytesReturned, NULL); - if (ret && StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14007, szResult); - - CloseHandle(hVolume); - } - - TRACE("szResult %s hVOlume %p ret %d LengthInformation %ul Bytesreturned %d\n", debugstr_w(szResult), hVolume, ret, TotalNumberOfBytes.QuadPart, BytesReturned); - - if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart - FreeBytesAvailable.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14003, szResult); - - if (StrFormatByteSizeW(FreeBytesAvailable.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14005, szResult); - - Result = GetFreeBytesShare(TotalNumberOfFreeBytes.QuadPart, TotalNumberOfBytes.QuadPart); - /* set free bytes percentage */ - swprintf(szResult, L"%02u%%", Result); - SetDlgItemTextW(hwndDlg, 14006, szResult); - /* store used share amount */ - Result = 100 - Result; - swprintf(szResult, L"%02u%%", Result); - SetDlgItemTextW(hwndDlg, 14004, szResult); - if (DriveType == DRIVE_FIXED) - { - if (LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szBuffer, sizeof(szBuffer) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14001, szBuffer); - } - else /* DriveType == DRIVE_CDROM) */ - { - if (LoadStringW(shell32_hInstance, IDS_DRIVE_CDROM, szBuffer, sizeof(szBuffer) / sizeof(WCHAR))) - SetDlgItemTextW(hwndDlg, 14001, szBuffer); - } - } - } - /* set drive description */ - GetDlgItemTextW(hwndDlg, 14009, szFormat, 50); - swprintf(szBuffer, szFormat, szDrive); - SetDlgItemTextW(hwndDlg, 14009, szBuffer); + WCHAR szVolumeName[MAX_PATH+1] = {0}; + DWORD MaxComponentLength = 0; + DWORD FileSystemFlags = 0; + WCHAR FileSystemName[MAX_PATH+1] = {0}; + WCHAR szFormat[50]; + WCHAR szBuffer[128]; + BOOL ret; + UINT DriveType; + ULARGE_INTEGER FreeBytesAvailable; + ULARGE_INTEGER TotalNumberOfFreeBytes; + ULARGE_INTEGER TotalNumberOfBytes; + + ret = GetVolumeInformationW(szDrive, szVolumeName, MAX_PATH + 1, NULL, &MaxComponentLength, &FileSystemFlags, FileSystemName, MAX_PATH + 1); + if (ret) + { + /* set volume label */ + SetDlgItemTextW(hwndDlg, 14000, szVolumeName); + + /* set filesystem type */ + SetDlgItemTextW(hwndDlg, 14002, FileSystemName); + + } + + DriveType = GetDriveTypeW(szDrive); + if (DriveType == DRIVE_FIXED || DriveType == DRIVE_CDROM) + { + + if(GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes)) + { + WCHAR szResult[128]; + ULONG Result; + HANDLE hVolume; + DWORD BytesReturned = 0; + + swprintf(szResult, L"\\\\.\\%c:", towupper(szDrive[0])); + hVolume = CreateFileW(szResult, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); + if (hVolume != INVALID_HANDLE_VALUE) + { + ret = DeviceIoControl(hVolume, IOCTL_DISK_GET_LENGTH_INFO, NULL, 0, (LPVOID)&TotalNumberOfBytes, sizeof(ULARGE_INTEGER), &BytesReturned, NULL); + if (ret && StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14007, szResult); + + CloseHandle(hVolume); + } + + TRACE("szResult %s hVOlume %p ret %d LengthInformation %ul Bytesreturned %d\n", debugstr_w(szResult), hVolume, ret, TotalNumberOfBytes.QuadPart, BytesReturned); + + if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart - FreeBytesAvailable.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14003, szResult); + + if (StrFormatByteSizeW(FreeBytesAvailable.QuadPart, szResult, sizeof(szResult) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14005, szResult); + + Result = GetFreeBytesShare(TotalNumberOfFreeBytes.QuadPart, TotalNumberOfBytes.QuadPart); + /* set free bytes percentage */ + swprintf(szResult, L"%02u%%", Result); + SetDlgItemTextW(hwndDlg, 14006, szResult); + /* store used share amount */ + Result = 100 - Result; + swprintf(szResult, L"%02u%%", Result); + SetDlgItemTextW(hwndDlg, 14004, szResult); + if (DriveType == DRIVE_FIXED) + { + if (LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szBuffer, sizeof(szBuffer) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14001, szBuffer); + } + else /* DriveType == DRIVE_CDROM) */ + { + if (LoadStringW(shell32_hInstance, IDS_DRIVE_CDROM, szBuffer, sizeof(szBuffer) / sizeof(WCHAR))) + SetDlgItemTextW(hwndDlg, 14001, szBuffer); + } + } + } + /* set drive description */ + GetDlgItemTextW(hwndDlg, 14009, szFormat, 50); + swprintf(szBuffer, szFormat, szDrive); + SetDlgItemTextW(hwndDlg, 14009, szBuffer); } @@ -454,71 +454,71 @@ switch(uMsg) { - case WM_INITDIALOG: - ppsp = (LPPROPSHEETPAGEW)lParam; - if (ppsp == NULL) - break; - lpstr = (WCHAR *)ppsp->lParam; - SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)lpstr); - InitializeGeneralDriveDialog(hwndDlg, lpstr); - return TRUE; - case WM_DRAWITEM: - drawItem = (LPDRAWITEMSTRUCT)lParam; - if (drawItem->CtlID >= 14013 && drawItem->CtlID <= 14015) - { - PaintStaticControls(hwndDlg, drawItem); + case WM_INITDIALOG: + ppsp = (LPPROPSHEETPAGEW)lParam; + if (ppsp == NULL) + break; + lpstr = (WCHAR *)ppsp->lParam; + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)lpstr); + InitializeGeneralDriveDialog(hwndDlg, lpstr); return TRUE; - } - break; - case WM_COMMAND: - if (LOWORD(wParam) == 14010) /* Disk Cleanup */ - { - lpstr = (WCHAR*)GetWindowLongPtr(hwndDlg, DWLP_USER); - ZeroMemory( &si, sizeof(si) ); - si.cb = sizeof(si); - ZeroMemory( &pi, sizeof(pi) ); - if (!GetSystemDirectoryW(szPath, MAX_PATH)) - break; - wcscat(szPath, L"\\cleanmgr.exe /D "); - length = wcslen(szPath); - szPath[length] = lpstr[0]; - szPath[length+1] = L'\0'; - if (CreateProcessW(NULL, szPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) - { - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - } - break; - } - case WM_NOTIFY: - lppsn = (LPPSHNOTIFY) lParam; - if (LOWORD(wParam) == 14000) - { - if (HIWORD(wParam) == EN_CHANGE) - { - PropSheet_Changed(GetParent(hwndDlg), hwndDlg); - } - break; - } - if (lppsn->hdr.code == PSN_APPLY) - { - lpstr = (LPWSTR)GetWindowLongPtr(hwndDlg, DWLP_USER); - if (lpstr && GetDlgItemTextW(hwndDlg, 14000, szPath, sizeof(szPath)/sizeof(WCHAR))) - { - szPath[(sizeof(szPath)/sizeof(WCHAR))-1] = L'\0'; - SetVolumeLabelW(lpstr, szPath); - } - SetWindowLongPtr( hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR ); - return TRUE; - } - break; - - default: - break; - } - - - return FALSE; + case WM_DRAWITEM: + drawItem = (LPDRAWITEMSTRUCT)lParam; + if (drawItem->CtlID >= 14013 && drawItem->CtlID <= 14015) + { + PaintStaticControls(hwndDlg, drawItem); + return TRUE; + } + break; + case WM_COMMAND: + if (LOWORD(wParam) == 14010) /* Disk Cleanup */ + { + lpstr = (WCHAR*)GetWindowLongPtr(hwndDlg, DWLP_USER); + ZeroMemory( &si, sizeof(si) ); + si.cb = sizeof(si); + ZeroMemory( &pi, sizeof(pi) ); + if (!GetSystemDirectoryW(szPath, MAX_PATH)) + break; + wcscat(szPath, L"\\cleanmgr.exe /D "); + length = wcslen(szPath); + szPath[length] = lpstr[0]; + szPath[length+1] = L'\0'; + if (CreateProcessW(NULL, szPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) + { + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + } + break; + } + case WM_NOTIFY: + lppsn = (LPPSHNOTIFY) lParam; + if (LOWORD(wParam) == 14000) + { + if (HIWORD(wParam) == EN_CHANGE) + { + PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + } + break; + } + if (lppsn->hdr.code == PSN_APPLY) + { + lpstr = (LPWSTR)GetWindowLongPtr(hwndDlg, DWLP_USER); + if (lpstr && GetDlgItemTextW(hwndDlg, 14000, szPath, sizeof(szPath) / sizeof(WCHAR))) + { + szPath[(sizeof(szPath)/sizeof(WCHAR))-1] = L'\0'; + SetVolumeLabelW(lpstr, szPath); + } + SetWindowLongPtr( hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR ); + return TRUE; + } + break; + + default: + break; + } + + + return FALSE; } INT_PTR @@ -530,82 +530,82 @@ LPARAM lParam ) { - STARTUPINFOW si; - PROCESS_INFORMATION pi; - WCHAR szPath[MAX_PATH + 10]; - WCHAR szArg[MAX_PATH]; - WCHAR * szDrive; - LPPROPSHEETPAGEW ppsp; - DWORD dwSize; - FORMAT_DRIVE_CONTEXT Context; - - switch (uMsg) - { - case WM_INITDIALOG: - ppsp = (LPPROPSHEETPAGEW)lParam; - SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)ppsp->lParam); - return TRUE; - case WM_COMMAND: - ZeroMemory( &si, sizeof(si) ); - si.cb = sizeof(si); - ZeroMemory( &pi, sizeof(pi) ); - - szDrive = (WCHAR*)GetWindowLongPtr(hwndDlg, DWLP_USER); - switch(LOWORD(wParam)) - { - case 14000: - if (InitializeFmifsLibrary(&Context)) + STARTUPINFOW si; + PROCESS_INFORMATION pi; + WCHAR szPath[MAX_PATH + 10]; + WCHAR szArg[MAX_PATH]; + WCHAR * szDrive; + LPPROPSHEETPAGEW ppsp; + DWORD dwSize; + FORMAT_DRIVE_CONTEXT Context; + + switch (uMsg) + { + case WM_INITDIALOG: + ppsp = (LPPROPSHEETPAGEW)lParam; + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)ppsp->lParam); + return TRUE; + case WM_COMMAND: + ZeroMemory( &si, sizeof(si) ); + si.cb = sizeof(si); + ZeroMemory( &pi, sizeof(pi) ); + + szDrive = (WCHAR*)GetWindowLongPtr(hwndDlg, DWLP_USER); + switch(LOWORD(wParam)) { - Context.Drive = szDrive[0]; - DialogBoxParamW(shell32_hInstance, L"CHKDSK_DLG", hwndDlg, ChkDskDlg, (LPARAM)&Context); - FreeLibrary(Context.hLibrary); + case 14000: + if (InitializeFmifsLibrary(&Context)) + { + Context.Drive = szDrive[0]; + DialogBoxParamW(shell32_hInstance, L"CHKDSK_DLG", hwndDlg, ChkDskDlg, (LPARAM)&Context); + FreeLibrary(Context.hLibrary); + } + break; + case 14001: + dwSize = sizeof(szPath); + if (RegGetValueW(HKEY_LOCAL_MACHINE, + L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\DefragPath", + NULL, + RRF_RT_REG_EXPAND_SZ, + NULL, + (PVOID)szPath, + &dwSize) == S_OK) + { + swprintf(szArg, szPath, szDrive[0]); + if (!GetSystemDirectoryW(szPath, MAX_PATH)) + break; + szDrive = PathAddBackslashW(szPath); + if (!szDrive) + break; + + wcscat(szDrive, L"mmc.exe"); + if (CreateProcessW(szPath, szArg, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) + { + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + } + } + break; + case 14002: + dwSize = sizeof(szPath); + if (RegGetValueW(HKEY_LOCAL_MACHINE, + L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\BackupPath", + NULL, + RRF_RT_REG_EXPAND_SZ, + NULL, + (PVOID)szPath, + &dwSize) == S_OK) + { + if (CreateProcessW(szPath, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) + { + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + } + } } break; - case 14001: - dwSize = sizeof(szPath); - if (RegGetValueW(HKEY_LOCAL_MACHINE, - L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\DefragPath", - NULL, - RRF_RT_REG_EXPAND_SZ, - NULL, - (PVOID)szPath, - &dwSize) == S_OK) - { - swprintf(szArg, szPath, szDrive[0]); - if (!GetSystemDirectoryW(szPath, MAX_PATH)) - break; - szDrive = PathAddBackslashW(szPath); - if (!szDrive) - break; - - wcscat(szDrive, L"mmc.exe"); - if (CreateProcessW(szPath, szArg, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) - { - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - } - } - break; - case 14002: - dwSize = sizeof(szPath); - if (RegGetValueW(HKEY_LOCAL_MACHINE, - L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\BackupPath", - NULL, - RRF_RT_REG_EXPAND_SZ, - NULL, - (PVOID)szPath, - &dwSize) == S_OK) - { - if (CreateProcessW(szPath, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) - { - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - } - } - } - break; - } - return FALSE; + } + return FALSE; } INT_PTR @@ -641,9 +641,9 @@ const struct { - LPCSTR resname; - DLGPROC dlgproc; - UINT DriveType; + LPCSTR resname; + DLGPROC dlgproc; + UINT DriveType; } PropPages[] = { { "DRIVE_GENERAL_DLG", DriveGeneralDlg, -1}, @@ -667,77 +667,77 @@ BOOL SH_ShowDriveProperties(WCHAR * drive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST * apidl) { - HPSXA hpsx = NULL; - HPROPSHEETPAGE hpsp[MAX_PROPERTY_SHEET_PAGE]; - PROPSHEETHEADERW psh; - BOOL ret; - UINT i; - WCHAR szName[MAX_PATH+6]; - DWORD dwMaxComponent, dwFileSysFlags; - CComPtr<IDataObject> pDataObj; - UINT DriveType; - - ZeroMemory(&psh, sizeof(PROPSHEETHEADERW)); - psh.dwSize = sizeof(PROPSHEETHEADERW); - //psh.dwFlags = PSH_USECALLBACK | PSH_PROPTITLE; - psh.hwndParent = NULL; - psh.nStartPage = 0; - psh.phpage = hpsp; - - if (GetVolumeInformationW(drive, szName, sizeof(szName)/sizeof(WCHAR), NULL, &dwMaxComponent, - &dwFileSysFlags, NULL, 0)) - { - psh.pszCaption = szName; - psh.dwFlags |= PSH_PROPTITLE; - if (!wcslen(szName)) - { - /* FIXME - * check if disk is a really a local hdd - */ - i = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szName, sizeof(szName)/sizeof(WCHAR)-6); - if (i > 0 && i < (sizeof(szName)/sizeof(WCHAR)) - 6) - { - szName[i] = L' '; - szName[i+1] = L'('; - wcscpy(&szName[i+2], drive); - szName[i+4] = L')'; - szName[i+5] = L'\0'; - } - } - } - - DriveType = GetDriveTypeW(drive); - for (i = 0; i < DRIVE_PROPERTY_PAGES; i++) - { - if (PropPages[i].DriveType == (UINT)-1 || (PropPages[i].DriveType != (UINT)-1 && PropPages[i].DriveType == DriveType)) - { - HPROPSHEETPAGE hprop = SH_CreatePropertySheetPage(PropPages[i].resname, PropPages[i].dlgproc, (LPARAM)drive, NULL); - if (hprop) - { - hpsp[psh.nPages] = hprop; - psh.nPages++; - } - } - } - - if (SHCreateDataObject(pidlFolder, 1, apidl, NULL, IID_IDataObject, (void **)&pDataObj) == S_OK) - { - hpsx = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, L"Drive", MAX_PROPERTY_SHEET_PAGE-DRIVE_PROPERTY_PAGES, pDataObj); - if (hpsx) - { - SHAddFromPropSheetExtArray(hpsx, (LPFNADDPROPSHEETPAGE)AddPropSheetPageProc, (LPARAM)&psh); - } - } - - ret = PropertySheetW(&psh); - - if (hpsx) - SHDestroyPropSheetExtArray(hpsx); - - if (ret < 0) - return FALSE; - else - return TRUE; + HPSXA hpsx = NULL; + HPROPSHEETPAGE hpsp[MAX_PROPERTY_SHEET_PAGE]; + PROPSHEETHEADERW psh; + BOOL ret; + UINT i; + WCHAR szName[MAX_PATH+6]; + DWORD dwMaxComponent, dwFileSysFlags; + CComPtr<IDataObject> pDataObj; + UINT DriveType; + + ZeroMemory(&psh, sizeof(PROPSHEETHEADERW)); + psh.dwSize = sizeof(PROPSHEETHEADERW); + //psh.dwFlags = PSH_USECALLBACK | PSH_PROPTITLE; + psh.hwndParent = NULL; + psh.nStartPage = 0; + psh.phpage = hpsp; + + if (GetVolumeInformationW(drive, szName, sizeof(szName) / sizeof(WCHAR), NULL, &dwMaxComponent, + &dwFileSysFlags, NULL, 0)) + { + psh.pszCaption = szName; + psh.dwFlags |= PSH_PROPTITLE; + if (!wcslen(szName)) + { + /* FIXME + * check if disk is a really a local hdd + */ + i = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szName, sizeof(szName) / sizeof(WCHAR) - 6); + if (i > 0 && i < (sizeof(szName) / sizeof(WCHAR)) - 6) + { + szName[i] = L' '; + szName[i+1] = L'('; + wcscpy(&szName[i+2], drive); + szName[i+4] = L')'; + szName[i+5] = L'\0'; + } + } + } + + DriveType = GetDriveTypeW(drive); + for (i = 0; i < DRIVE_PROPERTY_PAGES; i++) + { + if (PropPages[i].DriveType == (UINT) - 1 || (PropPages[i].DriveType != (UINT) - 1 && PropPages[i].DriveType == DriveType)) + { + HPROPSHEETPAGE hprop = SH_CreatePropertySheetPage(PropPages[i].resname, PropPages[i].dlgproc, (LPARAM)drive, NULL); + if (hprop) + { + hpsp[psh.nPages] = hprop; + psh.nPages++; + } + } + } + + if (SHCreateDataObject(pidlFolder, 1, apidl, NULL, IID_IDataObject, (void **)&pDataObj) == S_OK) + { + hpsx = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, L"Drive", MAX_PROPERTY_SHEET_PAGE - DRIVE_PROPERTY_PAGES, pDataObj); + if (hpsx) + { + SHAddFromPropSheetExtArray(hpsx, (LPFNADDPROPSHEETPAGE)AddPropSheetPageProc, (LPARAM)&psh); + } + } + + ret = PropertySheetW(&psh); + + if (hpsx) + SHDestroyPropSheetExtArray(hpsx); + + if (ret < 0) + return FALSE; + else + return TRUE; } BOOL @@ -746,7 +746,7 @@ DWORD ClusterSize; if (!wcsicmp(szFs, L"FAT16") || - !wcsicmp(szFs, L"FAT")) //REACTOS HACK + !wcsicmp(szFs, L"FAT")) //REACTOS HACK { if (TotalNumberOfBytes->QuadPart <= (16 * 1024 * 1024)) ClusterSize = 2048; @@ -771,7 +771,7 @@ } else if (!wcsicmp(szFs, L"FAT32")) { - if (TotalNumberOfBytes->QuadPart <=(64 * 1024 * 1024)) + if (TotalNumberOfBytes->QuadPart <= (64 * 1024 * 1024)) ClusterSize = 512; else if (TotalNumberOfBytes->QuadPart <= (128 * 1024 * 1024)) ClusterSize = 1024; @@ -785,10 +785,10 @@ ClusterSize = 16384; else return FALSE; - } + } else if (!wcsicmp(szFs, L"NTFS")) { - if (TotalNumberOfBytes->QuadPart <=(512 * 1024 * 1024)) + if (TotalNumberOfBytes->QuadPart <= (512 * 1024 * 1024)) ClusterSize = 512; else if (TotalNumberOfBytes->QuadPart <= (1024 * 1024 * 1024)) ClusterSize = 1024; @@ -796,12 +796,12 @@ ClusterSize = 2048; else ClusterSize = 2048; - } - else + } + else return FALSE; - *pClusterSize = ClusterSize; - return TRUE; + *pClusterSize = ClusterSize; + return TRUE; } @@ -831,7 +831,7 @@ return; if (!wcsicmp(szFs, L"FAT16") || - !wcsicmp(szFs, L"FAT")) //REACTOS HACK + !wcsicmp(szFs, L"FAT")) //REACTOS HACK { if (!GetDefaultClusterSize(szFs, &ClusterSize, &TotalNumberOfBytes)) { @@ -840,7 +840,7 @@ return; } - if (LoadStringW(shell32_hInstance, IDS_DEFAULT_CLUSTER_SIZE, szFs, sizeof(szFs)/sizeof(WCHAR))) + if (LoadStringW(shell32_hInstance, IDS_DEFAULT_CLUSTER_SIZE, szFs, sizeof(szFs) / sizeof(WCHAR))) { hDlgCtrl = GetDlgItem(hwndDlg, 28680); szFs[(sizeof(szFs)/sizeof(WCHAR))-1] = L'\0'; @@ -860,7 +860,7 @@ return; } - if (LoadStringW(shell32_hInstance, IDS_DEFAULT_CLUSTER_SIZE, szFs, sizeof(szFs)/sizeof(WCHAR))) + if (LoadStringW(shell32_hInstance, IDS_DEFAULT_CLUSTER_SIZE, szFs, sizeof(szFs) / sizeof(WCHAR))) { hDlgCtrl = GetDlgItem(hwndDlg, 28680); szFs[(sizeof(szFs)/sizeof(WCHAR))-1] = L'\0'; @@ -881,7 +881,7 @@ } hDlgCtrl = GetDlgItem(hwndDlg, 28680); - if (LoadStringW(shell32_hInstance, IDS_DEFAULT_CLUSTER_SIZE, szFs, sizeof(szFs)/sizeof(WCHAR))) + if (LoadStringW(shell32_hInstance, IDS_DEFAULT_CLUSTER_SIZE, szFs, sizeof(szFs) / sizeof(WCHAR))) { szFs[(sizeof(szFs)/sizeof(WCHAR))-1] = L'\0'; SendMessageW(hDlgCtrl, CB_RESETCONTENT, 0, 0); @@ -894,7 +894,7 @@ for (lIndex = 0; lIndex < 4; lIndex++) { TotalNumberOfBytes.QuadPart = ClusterSize; - if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, szFs, sizeof(szFs)/sizeof(WCHAR))) + if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, szFs, sizeof(szFs) / sizeof(WCHAR))) { lIndex = SendMessageW(hDlgCtrl, CB_ADDSTRING, 0, (LPARAM)szFs); if (lIndex != CB_ERR) @@ -925,11 +925,11 @@ BOOLEAN Latest; HWND hDlgCtrl; - Length = GetWindowTextW(hwndDlg, szText, sizeof(szText)/sizeof(WCHAR)); + Length = GetWindowTextW(hwndDlg, szText, sizeof(szText) / sizeof(WCHAR)); if (Length < 0) Length = 0; szDrive[0] = pContext->Drive + L'A'; - if (GetVolumeInformationW(szDrive, &szText[Length+1], (sizeof(szText)/sizeof(WCHAR))- Length - 2, &dwSerial, &dwMaxComp, &dwFileSys, szFs, sizeof(szFs)/sizeof(WCHAR))) + if (GetVolumeInformationW(szDrive, &szText[Length+1], (sizeof(szText) / sizeof(WCHAR)) - Length - 2, &dwSerial, &dwMaxComp, &dwFileSys, szFs, sizeof(szFs) / sizeof(WCHAR))) { szText[Length] = L' '; szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0'; @@ -937,7 +937,7 @@ if (!TempLength) { /* load default volume label */ - TempLength = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, &szText[Length+1], (sizeof(szText)/sizeof(WCHAR))- Length - 2); + TempLength = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, &szText[Length+1], (sizeof(szText) / sizeof(WCHAR)) - Length - 2); } else { @@ -948,16 +948,16 @@ Length += TempLength + 1; } - if ((DWORD)Length + 4 < (sizeof(szText)/sizeof(WCHAR))) + if ((DWORD)Length + 4 < (sizeof(szText) / sizeof(WCHAR))) { szText[Length] = L' '; szText[Length+1] = L'('; szText[Length+2] = szDrive[0]; szText[Length+3] = L')'; - Length +=4; - } - - if ((DWORD)Length < (sizeof(szText)/sizeof(WCHAR))) + Length += 4; + } + + if ((DWORD)Length < (sizeof(szText) / sizeof(WCHAR))) szText[Length] = L'\0'; else szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0'; @@ -967,7 +967,7 @@ if (GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailableUser, &TotalNumberOfBytes, NULL)) { - if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, szText, sizeof(szText)/sizeof(WCHAR))) + if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, szText, sizeof(szText) / sizeof(WCHAR))) { /* add drive capacity */ szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0'; @@ -993,8 +993,8 @@ if (!wcsicmp(szText, szFs)) dwDefault = dwIndex; - SendMessageW(hDlgCtrl, CB_ADDSTRING, 0, (LPARAM)szText); - dwIndex++; + SendMessageW(hDlgCtrl, CB_ADDSTRING, 0, (LPARAM)szText); + dwIndex++; } if (!dwIndex) @@ -1078,7 +1078,7 @@ return; } Length = SendMessageW(hDlgCtrl, CB_GETLBTEXTLEN, iSelIndex, 0); - if ((int)Length == CB_ERR || Length + 1> sizeof(szFileSys)/sizeof(WCHAR)) + if ((int)Length == CB_ERR || Length + 1 > sizeof(szFileSys) / sizeof(WCHAR)) { FIXME("\n"); return; @@ -1091,12 +1091,12 @@ /* retrieve the volume label */ hDlgCtrl = GetWindow(hwndDlg, 28679); Length = SendMessageW(hDlgCtrl, WM_GETTEXTLENGTH, 0, 0); - if (Length + 1 > sizeof(szLabel)/sizeof(WCHAR)) + if (Length + 1 > sizeof(szLabel) / sizeof(WCHAR)) { FIXME("\n"); return; } - SendMessageW(hDlgCtrl, WM_GETTEXT, sizeof(szLabel)/sizeof(WCHAR), (LPARAM)szLabel); + SendMessageW(hDlgCtrl, WM_GETTEXT, sizeof(szLabel) / sizeof(WCHAR), (LPARAM)szLabel); szLabel[(sizeof(szLabel)/sizeof(WCHAR))-1] = L'\0'; /* check for quickformat */
13 years, 6 months
1
0
0
0
[rharabien] 54701: [SHELL32] - Properly close Open With dialog window (EndDialog works only for modal dialogs, modeless dialogs should be destroyed with DestroyWindow instead). Fixes folder window ...
by rharabien@svn.reactos.org
Author: rharabien Date: Mon Dec 19 19:28:38 2011 New Revision: 54701 URL:
http://svn.reactos.org/svn/reactos?rev=54701&view=rev
Log: [SHELL32] - Properly close Open With dialog window (EndDialog works only for modal dialogs, modeless dialogs should be destroyed with DestroyWindow instead). Fixes folder window hang if Open With windows was opened twice (and also a window leak). Modified: trunk/reactos/dll/win32/shell32/openwithmenu.cpp trunk/reactos/dll/win32/shell32/openwithmenu.h Modified: trunk/reactos/dll/win32/shell32/openwithmenu.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/openwith…
============================================================================== --- trunk/reactos/dll/win32/shell32/openwithmenu.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/openwithmenu.cpp [iso-8859-1] Mon Dec 19 19:28:38 2011 @@ -77,11 +77,10 @@ } static VOID -AddItem(HMENU hMenu, UINT idCmdFirst) +AddChooseProgramItem(HMENU hMenu, UINT idCmdFirst) { MENUITEMINFOW mii; WCHAR szBuffer[MAX_PATH]; - static const WCHAR szChoose[] = { 'C', 'h', 'o', 'o', 's', 'e', ' ', 'P', 'r', 'o', 'g', 'r', 'a', 'm', '.', '.', '.', 0 }; ZeroMemory(&mii, sizeof(mii)); mii.cbSize = sizeof(mii); @@ -91,11 +90,9 @@ InsertMenuItemW(hMenu, -1, TRUE, &mii); if (!LoadStringW(shell32_hInstance, IDS_OPEN_WITH_CHOOSE, szBuffer, sizeof(szBuffer) / sizeof(WCHAR))) - wcscpy(szBuffer, szChoose); - - szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0'; - - mii.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE; + wcscpy(szBuffer, L"Choose Program..."); + + mii.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE | MIIM_STRING; mii.fType = MFT_STRING; mii.fState = MFS_ENABLED; mii.wID = idCmdFirst; @@ -106,7 +103,7 @@ } static VOID -LoadOWItems(POPEN_WITH_CONTEXT pContext, LPCWSTR szName) +LoadOpenWithItems(POPEN_WITH_CONTEXT pContext, LPCWSTR szName) { const WCHAR * szExt; WCHAR szPath[100]; @@ -165,7 +162,7 @@ Context.hMenu = hSubMenu; Context.idCmdFirst = idCmdFirst; /* load items */ - LoadOWItems(&Context, szPath); + LoadOpenWithItems(&Context, szPath); if (!Context.Count) { DestroyMenu(hSubMenu); @@ -175,7 +172,7 @@ } else { - AddItem(hSubMenu, Context.idCmdFirst++); + AddChooseProgramItem(hSubMenu, Context.idCmdFirst++); count = Context.idCmdFirst - idCmdFirst; /* verb start at index zero */ wId = count - 1; @@ -232,9 +229,9 @@ } static BOOL -HideApplicationFromList(WCHAR * pFileName) -{ - WCHAR szBuffer[100] = {'A', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 's', '\\', 0}; +HideApplicationFromList(WCHAR *pFileName) +{ + WCHAR szBuffer[100] = L"Applications\\"; DWORD dwSize = 0; LONG result; @@ -260,10 +257,10 @@ { HKEY hShell; LONG result; - WCHAR szBuffer[MAX_PATH+10] = {'s', 'h', 'e', 'l', 'l', '\\', 0 }; + WCHAR szBuffer[MAX_PATH+10] = L"shell\\"; if (wcslen(pVerb) > (sizeof(szBuffer) / sizeof(WCHAR)) - 15 || - wcslen(pFullPath) > (sizeof(szBuffer) / sizeof(WCHAR)) - 4) + wcslen(pFullPath) > (sizeof(szBuffer) / sizeof(WCHAR)) - 4) { ERR("insufficient buffer\n"); return; @@ -528,7 +525,7 @@ SetDlgItemTextW(hwndDlg, 14001, szBuffer); ZeroMemory(&Context, sizeof(OPEN_WITH_CONTEXT)); Context.hDlgCtrl = GetDlgItem(hwndDlg, 14002); - LoadOWItems(&Context, poainfo->pcszFile); + LoadOpenWithItems(&Context, poainfo->pcszFile); SendMessage(Context.hDlgCtrl, LB_SETCURSEL, 0, 0); } return TRUE; @@ -563,11 +560,11 @@ ExecuteOpenItem(pItemContext, poainfo->pcszFile); } FreeListItems(hwndDlg); - EndDialog(hwndDlg, 1); + DestroyWindow(hwndDlg); return TRUE; case 14006: /* cancel */ FreeListItems(hwndDlg); - EndDialog(hwndDlg, 0); + DestroyWindow(hwndDlg); return TRUE; default: break; @@ -626,7 +623,7 @@ break; case WM_CLOSE: FreeListItems(hwndDlg); - EndDialog(hwndDlg, 0); + DestroyWindow(hwndDlg); return TRUE; default: break; @@ -663,13 +660,13 @@ } HRESULT WINAPI -COpenWithMenu::InvokeCommand(LPCMINVOKECOMMANDINFO lpici ) +COpenWithMenu::InvokeCommand(LPCMINVOKECOMMANDINFO lpici) { MENUITEMINFOW mii; ERR("This %p wId %x count %u verb %x\n", this, wId, count, LOWORD(lpici->lpVerb)); - if (wId < LOWORD(lpici->lpVerb)) + if (HIWORD(lpici->lpVerb) != 0 || LOWORD(lpici->lpVerb) > wId) return E_FAIL; if (wId == LOWORD(lpici->lpVerb)) @@ -1004,19 +1001,24 @@ } } -HRESULT -COpenWithMenu::LoadOpenWithItems(IDataObject *pdtobj) +HRESULT WINAPI +COpenWithMenu::Initialize(LPCITEMIDLIST pidlFolder, + IDataObject *pdtobj, + HKEY hkeyProgID) { STGMEDIUM medium; FORMATETC fmt; HRESULT hr; LPIDA pida; - LPCITEMIDLIST pidlFolder; + LPCITEMIDLIST pidlFolder2; LPCITEMIDLIST pidlChild; LPCITEMIDLIST pidl; - DWORD dwType; LPWSTR pszExt; - static const WCHAR szShortCut[] = L".lnk"; + + TRACE("This %p\n", this); + + if (pdtobj == NULL) + return E_INVALIDARG; fmt.cfFormat = RegisterClipboardFormatW(CFSTR_SHELLIDLIST); fmt.ptd = NULL; @@ -1035,10 +1037,10 @@ pida = (LPIDA)GlobalLock(medium.hGlobal); ASSERT(pida->cidl == 1); - pidlFolder = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[0]); + pidlFolder2 = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[0]); pidlChild = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[1]); - pidl = ILCombine(pidlFolder, pidlChild); + pidl = ILCombine(pidlFolder2, pidlChild); GlobalUnlock(medium.hGlobal); GlobalFree(medium.hGlobal); @@ -1068,32 +1070,18 @@ SHFree((void*)pidl); TRACE("szPath %s\n", debugstr_w(szPath)); - if (GetBinaryTypeW(szPath, &dwType)) - { - TRACE("path is a executable %x\n", dwType); - return E_FAIL; - } - pszExt = wcsrchr(szPath, L'.'); - if (pszExt && !_wcsicmp(pszExt, szShortCut)) - { - TRACE("pidl is a shortcut\n"); - return E_FAIL; + + if (pszExt) + { + if (!_wcsicmp(pszExt, L".exe") || !_wcsicmp(pszExt, L".lnk")) + { + TRACE("path is a executable or shortcut\n"); + return E_FAIL; + } } return S_OK; -} - -HRESULT WINAPI -COpenWithMenu::Initialize(LPCITEMIDLIST pidlFolder, - IDataObject *pdtobj, - HKEY hkeyProgID) -{ - TRACE("This %p\n", this); - - if (pdtobj == NULL) - return E_INVALIDARG; - return LoadOpenWithItems(pdtobj); } HRESULT WINAPI @@ -1101,7 +1089,6 @@ const OPENASINFO *poainfo) { MSG msg; - BOOL bRet; HWND hwnd; if (poainfo->pcszClass == NULL && poainfo->pcszFile == NULL) @@ -1113,15 +1100,17 @@ ERR("Failed to create dialog\n"); return E_FAIL; } + ShowWindow(hwnd, SW_SHOWNORMAL); - while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0) - { - if (!IsWindow(hwnd) || !IsDialogMessage(hwnd, &msg)) + while (GetMessage(&msg, NULL, 0, 0) != 0 && IsWindow(hwnd)) + { + if (!IsDialogMessage(hwnd, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } + return S_OK; } Modified: trunk/reactos/dll/win32/shell32/openwithmenu.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/openwith…
============================================================================== --- trunk/reactos/dll/win32/shell32/openwithmenu.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/openwithmenu.h [iso-8859-1] Mon Dec 19 19:28:38 2011 @@ -38,7 +38,6 @@ public: COpenWithMenu(); ~COpenWithMenu(); - HRESULT LoadOpenWithItems(IDataObject *pdtobj); // IContextMenu virtual HRESULT WINAPI QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
13 years, 6 months
1
0
0
0
[rharabien] 54699: [SHELL32/BOOTDATA] - Move more shell32 registration to proper place
by rharabien@svn.reactos.org
Author: rharabien Date: Mon Dec 19 12:45:58 2011 New Revision: 54699 URL:
http://svn.reactos.org/svn/reactos?rev=54699&view=rev
Log: [SHELL32/BOOTDATA] - Move more shell32 registration to proper place Modified: trunk/reactos/boot/bootdata/hivecls_i386.inf trunk/reactos/dll/win32/shell32/res/rgs/openwithmenu.rgs trunk/reactos/dll/win32/shell32/res/rgs/shellfsfolder.rgs trunk/reactos/dll/win32/shell32/res/rgs/shelllink.rgs Modified: trunk/reactos/boot/bootdata/hivecls_i386.inf URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/hivecls_i386…
============================================================================== --- trunk/reactos/boot/bootdata/hivecls_i386.inf [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/hivecls_i386.inf [iso-8859-1] Mon Dec 19 12:45:58 2011 @@ -6,6 +6,7 @@ ; Default key HKCR,"*","",0x00000000,"" +HKCR,"SystemFileAssociations","",0x00000000,"" ; Folders HKCR,"Folder","",0x00000000,"Folder" @@ -283,49 +284,12 @@ HKCR,"CLSID",,0x00000012 ; For Shell32.dll -HKCR,"CLSID\{00021400-0000-0000-C000-000000000046}","",0x00000000,"Desktop" -HKCR,"CLSID\{00021400-0000-0000-C000-000000000046}\InProcServer32","",0x00000000,"shell32.dll" -HKCR,"CLSID\{00021400-0000-0000-C000-000000000046}\InProcServer32","ThreadingModel",0x00000000,"Apartment" -HKCR,"CLSID\{00021401-0000-0000-C000-000000000046}","",0x00000000,"Shortcut" -HKCR,"CLSID\{00021401-0000-0000-C000-000000000046}\InProcServer32","",0x00000000,"shell32.dll" -HKCR,"CLSID\{00021401-0000-0000-C000-000000000046}\InProcServer32","ThreadingModel",0x00000000,"Apartment" -HKCR,"CLSID\{00021401-0000-0000-C000-000000000046}\shellex\MayChangeDefaultMenu","",0x00000000,"" -HKCR,"CLSID\{000214E6-0000-0000-C000-000000000046}","",0x00000000,"Shellfolder" -HKCR,"CLSID\{000214E6-0000-0000-C000-000000000046}\InProcServer32","",0x00000000,"shell32.dll" -HKCR,"CLSID\{000214E6-0000-0000-C000-000000000046}\InProcServer32","ThreadingModel",0x00000000,"Apartment" -HKCR,"CLSID\{000214EE-0000-0000-C000-000000000046}","",0x00000000,"IShellLinkA" -HKCR,"CLSID\{000214EE-0000-0000-C000-000000000046}\InProcServer32","",0x00000000,"shell32.dll" -HKCR,"CLSID\{000214EE-0000-0000-C000-000000000046}\InProcServer32","ThreadingModel",0x00000000,"Apartment" -HKCR,"CLSID\{000214F9-0000-0000-C000-000000000046}","",0x00000000,"IShellLinkW" -HKCR,"CLSID\{000214F9-0000-0000-C000-000000000046}\InProcServer32","",0x00000000,"shell32.dll" -HKCR,"CLSID\{000214F9-0000-0000-C000-000000000046}\InProcServer32","ThreadingModel",0x00000000,"Apartment" - HKCR,"CLSID\{1F4DE370-D627-11D1-BA4F-00A0C91EEDBA}","",0x00000000,"Computer Search Results Folder" HKCR,"CLSID\{1F4DE370-D627-11D1-BA4F-00A0C91EEDBA}","LocalizedString",0x00020000,"@%SystemRoot%\system32\shell32.dll,-30521" HKCR,"CLSID\{1F4DE370-D627-11D1-BA4F-00A0C91EEDBA}\DefaultIcon","",0x00020000,"%SystemRoot%\system32\shell32.dll,-135" HKCR,"CLSID\{1F4DE370-D627-11D1-BA4F-00A0C91EEDBA}\InProcServer32","",0x00020000,"%SystemRoot%\system32\shell32.dll" HKCR,"CLSID\{1F4DE370-D627-11D1-BA4F-00A0C91EEDBA}\InProcServer32","ThreadingModel",0x00000000,"Apartment" HKCR,"CLSID\{1F4DE370-D627-11D1-BA4F-00A0C91EEDBA}\ShellFolder","Attributes",0x00010001,0x20180000 - -; Open With shell extension -HKCR,"SystemFileAssociations","",0x00000000,"" -HKCR,"Applications","",0x00000000,"" - -; Recycle bin is not implemented -;HKCR,"CLSID\{645FF040-5081-101B-9F08-00AA002F954E}","",0x00000000,"Recycle Bin" -;HKCR,"CLSID\{645FF040-5081-101B-9F08-00AA002F954E}","LocalizedString",0x00020000,"@%SystemRoot%\system32\shell32.dll,-8964" -;HKCR,"CLSID\{645FF040-5081-101B-9F08-00AA002F954E}","InfoTip",0x00020000,"@%SystemRoot%\system32\shell32.dll,-22915" -;HKCR,"CLSID\{645FF040-5081-101B-9F08-00AA002F954E}","IntroText",0x00020000,"@%SystemRoot%\system32\shell32.dll,-31748" -;HKCR,"CLSID\{645FF040-5081-101B-9F08-00AA002F954E}","SortOrderIndex",0x00010001,0x00000060 -;HKCR,"CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon","",0x00020000,"%SystemRoot%\system32\shell32.dll,31" -;HKCR,"CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon","Empty",0x00020000,"%SystemRoot%\system32\shell32.dll,31" -;HKCR,"CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon","Full",0x00020000,"%SystemRoot%\system32\shell32.dll,32" -;HKCR,"CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\InProcServer32","",0x00020000,"%SystemRoot%\system32\shell32.dll" -;HKCR,"CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\InProcServer32","ThreadingModel",0x00000000,"Apartment" -;HKCR,"CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\ShellFolder","Attributes",0x00010001,0x20000140 -;HKCR,"CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\ShellFolder","CallForAttributes",0x00010001,0x00000040 -;HKCR,"CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\shellex\ContextMenuHandlers\{645FF040-5081-101B-9F08-00AA002F954E}","",0x00000000,"" -;HKCR,"CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\shellex\PropertySheetHandlers\{645FF040-5081-101B-9F08-00AA002F954E}","",0x00000000,"" ; deskadp.dll shell extension HKCR,"CLSID\{42071712-76d4-11d1-8b24-00a0c9068ff3}","",0x00000000,"Display Adapter CPL Extension" Modified: trunk/reactos/dll/win32/shell32/res/rgs/openwithmenu.rgs URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/res/rgs/…
============================================================================== --- trunk/reactos/dll/win32/shell32/res/rgs/openwithmenu.rgs [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/res/rgs/openwithmenu.rgs [iso-8859-1] Mon Dec 19 12:45:58 2011 @@ -18,6 +18,10 @@ } } } + + ForceRemove Applications + { + } } NoRemove * { Modified: trunk/reactos/dll/win32/shell32/res/rgs/shellfsfolder.rgs URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/res/rgs/…
============================================================================== --- trunk/reactos/dll/win32/shell32/res/rgs/shellfsfolder.rgs [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/res/rgs/shellfsfolder.rgs [iso-8859-1] Mon Dec 19 12:45:58 2011 @@ -9,5 +9,17 @@ val ThreadingModel = s 'Apartment' } } + NoRemove Interface + { + ForceRemove {000214E6-0000-0000-C000-000000000046} = s 'IShellFolder' + { + NumMethods = s '13' + { + } + ProxyStubClsid32 = s '{bf50b68e-29b8-4386-ae9c-9734d5117cd5}' + { + } + } + } } } Modified: trunk/reactos/dll/win32/shell32/res/rgs/shelllink.rgs URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/res/rgs/…
============================================================================== --- trunk/reactos/dll/win32/shell32/res/rgs/shelllink.rgs [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/res/rgs/shelllink.rgs [iso-8859-1] Mon Dec 19 12:45:58 2011 @@ -19,5 +19,26 @@ MayChangeDefaultMenu = s '' } } + NoRemove Interface + { + ForceRemove {000214EE-0000-0000-C000-000000000046} = s 'IShellLinkA' + { + NumMethods = s '21' + { + } + ProxyStubClsid32 = s '{B8DA6310-E19B-11D0-933C-00A0C90DCAA9}' + { + } + } + ForceRemove {000214F9-0000-0000-C000-000000000046} = s 'IShellLinkW' + { + NumMethods = s '21' + { + } + ProxyStubClsid32 = s '{B8DA6310-E19B-11D0-933C-00A0C90DCAA9}' + { + } + } + } } }
13 years, 6 months
1
0
0
0
[rharabien] 54698: [SHELL32] - Rename few classes [BOOTDATA] - Don't register classes from shell32
by rharabien@svn.reactos.org
Author: rharabien Date: Mon Dec 19 12:01:22 2011 New Revision: 54698 URL:
http://svn.reactos.org/svn/reactos?rev=54698&view=rev
Log: [SHELL32] - Rename few classes [BOOTDATA] - Don't register classes from shell32 Modified: trunk/reactos/boot/bootdata/hivecls_i386.inf trunk/reactos/dll/win32/shell32/defcontextmenu.cpp trunk/reactos/dll/win32/shell32/dragdrophelper.cpp trunk/reactos/dll/win32/shell32/dragdrophelper.h trunk/reactos/dll/win32/shell32/folders/cpanel.cpp trunk/reactos/dll/win32/shell32/shell32_main.cpp trunk/reactos/dll/win32/shell32/shellitem.cpp trunk/reactos/dll/win32/shell32/shellitem.h trunk/reactos/dll/win32/shell32/shelllink.cpp trunk/reactos/dll/win32/shell32/shelllink.h Modified: trunk/reactos/boot/bootdata/hivecls_i386.inf URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/hivecls_i386…
============================================================================== --- trunk/reactos/boot/bootdata/hivecls_i386.inf [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/hivecls_i386.inf [iso-8859-1] Mon Dec 19 12:01:22 2011 @@ -19,11 +19,6 @@ HKCR,"CLSID\{5F5295E0-429F-1069-A2E2-08002B30309D}","",0x00000000,"Drive Property Page Extension" HKCR,"CLSID\{5F5295E0-429F-1069-A2E2-08002B30309D}\InProcServer32","",0x00000000,"shell32.dll" HKCR,"CLSID\{5F5295E0-429F-1069-A2E2-08002B30309D}\InProcServer32","ThreadingModel",0x00000000,"Apartment" - -; New Object Service -HKCR,"CLSID\{D969A300-E7FF-11d0-A93B-00A0C90F2719}","",0x00000000,"ReactOS New Object Service" -HKCR,"CLSID\{D969A300-E7FF-11d0-A93B-00A0C90F2719}\InProcServer32","",0x00000000,"shell32.dll" -HKCR,"CLSID\{D969A300-E7FF-11d0-A93B-00A0C90F2719}\InProcServer32","ThreadingModel",0x00000000,"Apartment" ; Rich Text Files HKCR,".rtf","",0x00000000,"rtffile" @@ -311,24 +306,6 @@ HKCR,"CLSID\{1F4DE370-D627-11D1-BA4F-00A0C91EEDBA}\InProcServer32","",0x00020000,"%SystemRoot%\system32\shell32.dll" HKCR,"CLSID\{1F4DE370-D627-11D1-BA4F-00A0C91EEDBA}\InProcServer32","ThreadingModel",0x00000000,"Apartment" HKCR,"CLSID\{1F4DE370-D627-11D1-BA4F-00A0C91EEDBA}\ShellFolder","Attributes",0x00010001,0x20180000 - -HKCR,"CLSID\{4657278A-411B-11d2-839A-00C04FD918D0}","",0x00000000,"Shell Drag and Drop helper" -HKCR,"CLSID\{4657278A-411B-11d2-839A-00C04FD918D0}\InProcServer32","",0x00020000,"%SystemRoot%\system32\shell32.dll" -HKCR,"CLSID\{4657278A-411B-11d2-839A-00C04FD918D0}\InProcServer32","ThreadingModel",0x00000000,"Apartment" - -HKCR,"CLSID\{4622AD11-FF23-11D0-8D34-00A0C90F2719}","",0x00000000,"Shell Start Menu" -HKCR,"CLSID\{4622AD11-FF23-11D0-8D34-00A0C90F2719}\InProcServer32","",0x00020000,"%SystemRoot%\system32\shell32.dll" -HKCR,"CLSID\{4622AD11-FF23-11D0-8D34-00A0C90F2719}\InProcServer32","ThreadingModel",0x00000000,"Apartment" - -; Folder Options CPL -HKCR,"CLSID\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","",0x00000000,"Folder Options" -HKCR,"CLSID\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","LocalizedString",0x00020000,"@%SystemRoot%\system32\shell32.dll,-150" -HKCR,"CLSID\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\InProcServer32","",0x00000000,"shell32.dll" -HKCR,"CLSID\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\InProcServer32","ThreadingModel",0x00000000,"Apartment" -HKCR,"CLSID\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\DefaultIcon","",0x00020000,"%SystemRoot%\system32\shell32.dll,-210" -HKCR,"CLSID\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\shell\Open\command","",0x00000000,"rundll32.exe shell32.dll,Options_RunDLL 0" -HKCR,"CLSID\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\shell\RunAs\command","",0x00000000,"rundll32.exe shell32.dll,Options_RunDLL 0" -HKCR,"CLSID\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\ShellFolder","Attributes",0x00010001,0x00000000 ; Open With shell extension HKCR,"SystemFileAssociations","",0x00000000,"" Modified: trunk/reactos/dll/win32/shell32/defcontextmenu.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/defconte…
============================================================================== --- trunk/reactos/dll/win32/shell32/defcontextmenu.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/defcontextmenu.cpp [iso-8859-1] Mon Dec 19 12:01:22 2011 @@ -1219,7 +1219,7 @@ if (!GetUniqueFileName(szPath, szLnk, szTarget, TRUE)) return E_FAIL; - hr = ShellLink::_CreatorClass::CreateInstance(NULL, IID_IShellLinkW, (void**)&nLink); + hr = CShellLink::_CreatorClass::CreateInstance(NULL, IID_IShellLinkW, (void**)&nLink); if (hr != S_OK) return hr; Modified: trunk/reactos/dll/win32/shell32/dragdrophelper.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/dragdrop…
============================================================================== --- trunk/reactos/dll/win32/shell32/dragdrophelper.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/dragdrophelper.cpp [iso-8859-1] Mon Dec 19 12:01:22 2011 @@ -28,39 +28,39 @@ * IDropTargetHelper implementation */ -IDropTargetHelperImpl::IDropTargetHelperImpl() +CDropTargetHelper::CDropTargetHelper() { } -IDropTargetHelperImpl::~IDropTargetHelperImpl() +CDropTargetHelper::~CDropTargetHelper() { } -HRESULT WINAPI IDropTargetHelperImpl::DragEnter (HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) +HRESULT WINAPI CDropTargetHelper::DragEnter (HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) { FIXME ("(%p)->(%p %p %p 0x%08x)\n", this, hwndTarget, pDataObject, ppt, dwEffect); return E_NOTIMPL; } -HRESULT WINAPI IDropTargetHelperImpl::DragLeave() +HRESULT WINAPI CDropTargetHelper::DragLeave() { FIXME ("(%p)->()\n", this); return E_NOTIMPL; } -HRESULT WINAPI IDropTargetHelperImpl::DragOver(POINT *ppt, DWORD dwEffect) +HRESULT WINAPI CDropTargetHelper::DragOver(POINT *ppt, DWORD dwEffect) { FIXME ("(%p)->(%p 0x%08x)\n", this, ppt, dwEffect); return E_NOTIMPL; } -HRESULT WINAPI IDropTargetHelperImpl::Drop(IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) +HRESULT WINAPI CDropTargetHelper::Drop(IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) { FIXME ("(%p)->(%p %p 0x%08x)\n", this, pDataObject, ppt, dwEffect); return E_NOTIMPL; } -HRESULT WINAPI IDropTargetHelperImpl::Show(BOOL fShow) +HRESULT WINAPI CDropTargetHelper::Show(BOOL fShow) { FIXME ("(%p)->(%u)\n", this, fShow); return E_NOTIMPL; Modified: trunk/reactos/dll/win32/shell32/dragdrophelper.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/dragdrop…
============================================================================== --- trunk/reactos/dll/win32/shell32/dragdrophelper.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/dragdrophelper.h [iso-8859-1] Mon Dec 19 12:01:22 2011 @@ -23,15 +23,15 @@ #ifndef _DRAGDROPHELPER_H_ #define _DRAGDROPHELPER_H_ -class IDropTargetHelperImpl : - public CComCoClass<IDropTargetHelperImpl, &CLSID_DragDropHelper>, +class CDropTargetHelper : + public CComCoClass<CDropTargetHelper, &CLSID_DragDropHelper>, public CComObjectRootEx<CComMultiThreadModelNoCS>, public IDropTargetHelper { private: public: - IDropTargetHelperImpl(); - ~IDropTargetHelperImpl(); + CDropTargetHelper(); + ~CDropTargetHelper(); //////// virtual HRESULT WINAPI DragEnter (HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect); @@ -41,11 +41,11 @@ virtual HRESULT WINAPI Show(BOOL fShow); DECLARE_REGISTRY_RESOURCEID(IDR_DRAGDROPHELPER) -DECLARE_NOT_AGGREGATABLE(IDropTargetHelperImpl) +DECLARE_NOT_AGGREGATABLE(CDropTargetHelper) DECLARE_PROTECT_FINAL_CONSTRUCT() -BEGIN_COM_MAP(IDropTargetHelperImpl) +BEGIN_COM_MAP(CDropTargetHelper) COM_INTERFACE_ENTRY_IID(IID_IDropTargetHelper, IDropTargetHelper) END_COM_MAP() }; Modified: trunk/reactos/dll/win32/shell32/folders/cpanel.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/folders/…
============================================================================== --- trunk/reactos/dll/win32/shell32/folders/cpanel.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/folders/cpanel.cpp [iso-8859-1] Mon Dec 19 12:01:22 2011 @@ -1047,7 +1047,7 @@ FIXME("Couldn't retrieve pointer to cpl structure\n"); return E_FAIL; } - hResult = ShellLink::_CreatorClass::CreateInstance(NULL, IID_IShellLinkA, (void **)&isl); + hResult = CShellLink::_CreatorClass::CreateInstance(NULL, IID_IShellLinkA, (void **)&isl); if (SUCCEEDED(hResult)) { isl->SetPath(szTarget); Modified: trunk/reactos/dll/win32/shell32/shell32_main.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shell32_…
============================================================================== --- trunk/reactos/dll/win32/shell32/shell32_main.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/shell32_main.cpp [iso-8859-1] Mon Dec 19 12:01:22 2011 @@ -1274,9 +1274,9 @@ OBJECT_ENTRY(CLSID_ShellFSFolder, CFSFolder) OBJECT_ENTRY(CLSID_MyComputer, CDrivesFolder) OBJECT_ENTRY(CLSID_ShellDesktop, CDesktopFolder) -OBJECT_ENTRY(CLSID_ShellItem, ShellItem) -OBJECT_ENTRY(CLSID_ShellLink, ShellLink) -OBJECT_ENTRY(CLSID_DragDropHelper, IDropTargetHelperImpl) +OBJECT_ENTRY(CLSID_ShellItem, CShellItem) +OBJECT_ENTRY(CLSID_ShellLink, CShellLink) +OBJECT_ENTRY(CLSID_DragDropHelper, CDropTargetHelper) OBJECT_ENTRY(CLSID_ControlPanel, CControlPanelFolder) OBJECT_ENTRY(CLSID_AutoComplete, CAutoComplete) OBJECT_ENTRY(CLSID_MyDocuments, CMyDocsFolder) Modified: trunk/reactos/dll/win32/shell32/shellitem.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shellite…
============================================================================== --- trunk/reactos/dll/win32/shell32/shellitem.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/shellitem.cpp [iso-8859-1] Mon Dec 19 12:01:22 2011 @@ -26,17 +26,17 @@ EXTERN_C HRESULT WINAPI SHCreateShellItem(LPCITEMIDLIST pidlParent, IShellFolder *psfParent, LPCITEMIDLIST pidl, IShellItem **ppsi); -ShellItem::ShellItem() +CShellItem::CShellItem() { pidl = NULL; } -ShellItem::~ShellItem() +CShellItem::~CShellItem() { ILFree(pidl); } -HRESULT ShellItem::get_parent_pidl(LPITEMIDLIST *parent_pidl) +HRESULT CShellItem::get_parent_pidl(LPITEMIDLIST *parent_pidl) { *parent_pidl = ILClone(pidl); if (*parent_pidl) @@ -57,7 +57,7 @@ } } -HRESULT ShellItem::get_parent_shellfolder(IShellFolder **ppsf) +HRESULT CShellItem::get_parent_shellfolder(IShellFolder **ppsf) { LPITEMIDLIST parent_pidl; CComPtr<IShellFolder> desktop; @@ -75,7 +75,7 @@ return ret; } -HRESULT WINAPI ShellItem::BindToHandler(IBindCtx *pbc, REFGUID rbhid, REFIID riid, void **ppvOut) +HRESULT WINAPI CShellItem::BindToHandler(IBindCtx *pbc, REFGUID rbhid, REFIID riid, void **ppvOut) { FIXME("(%p,%p,%s,%p,%p)\n", this, pbc, shdebugstr_guid(&rbhid), riid, ppvOut); @@ -84,7 +84,7 @@ return E_NOTIMPL; } -HRESULT WINAPI ShellItem::GetParent(IShellItem **ppsi) +HRESULT WINAPI CShellItem::GetParent(IShellItem **ppsi) { LPITEMIDLIST parent_pidl; HRESULT ret; @@ -101,7 +101,7 @@ return ret; } -HRESULT WINAPI ShellItem::GetDisplayName(SIGDN sigdnName, LPWSTR *ppszName) +HRESULT WINAPI CShellItem::GetDisplayName(SIGDN sigdnName, LPWSTR *ppszName) { FIXME("(%p,%x,%p)\n", this, sigdnName, ppszName); @@ -110,7 +110,7 @@ return E_NOTIMPL; } -HRESULT WINAPI ShellItem::GetAttributes(SFGAOF sfgaoMask, SFGAOF *psfgaoAttribs) +HRESULT WINAPI CShellItem::GetAttributes(SFGAOF sfgaoMask, SFGAOF *psfgaoAttribs) { CComPtr<IShellFolder> parent_folder; LPITEMIDLIST child_pidl; @@ -129,14 +129,14 @@ return ret; } -HRESULT WINAPI ShellItem::Compare(IShellItem *oth, SICHINTF hint, int *piOrder) +HRESULT WINAPI CShellItem::Compare(IShellItem *oth, SICHINTF hint, int *piOrder) { FIXME("(%p,%p,%x,%p)\n", this, oth, hint, piOrder); return E_NOTIMPL; } -HRESULT WINAPI ShellItem::GetClassID(CLSID *pClassID) +HRESULT WINAPI CShellItem::GetClassID(CLSID *pClassID) { TRACE("(%p,%p)\n", this, pClassID); @@ -145,7 +145,7 @@ } -HRESULT WINAPI ShellItem::SetIDList(LPCITEMIDLIST pidlx) +HRESULT WINAPI CShellItem::SetIDList(LPCITEMIDLIST pidlx) { LPITEMIDLIST new_pidl; @@ -163,7 +163,7 @@ return E_OUTOFMEMORY; } -HRESULT WINAPI ShellItem::GetIDList(LPITEMIDLIST *ppidl) +HRESULT WINAPI CShellItem::GetIDList(LPITEMIDLIST *ppidl) { TRACE("(%p,%p)\n", this, ppidl); @@ -223,7 +223,7 @@ return E_OUTOFMEMORY; } - ret = ShellItem::_CreatorClass::CreateInstance(NULL, IID_IShellItem, (void**)&newShellItem); + ret = CShellItem::_CreatorClass::CreateInstance(NULL, IID_IShellItem, (void**)&newShellItem); if (FAILED(ret)) { *ppsi = NULL; Modified: trunk/reactos/dll/win32/shell32/shellitem.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shellite…
============================================================================== --- trunk/reactos/dll/win32/shell32/shellitem.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/shellitem.h [iso-8859-1] Mon Dec 19 12:01:22 2011 @@ -22,8 +22,8 @@ #ifndef _SHELLITEM_H_ #define _SHELLITEM_H_ -class ShellItem : - public CComCoClass<ShellItem, &CLSID_ShellItem>, +class CShellItem : + public CComCoClass<CShellItem, &CLSID_ShellItem>, public CComObjectRootEx<CComMultiThreadModelNoCS>, public IShellItem, public IPersistIDList @@ -31,8 +31,8 @@ private: LPITEMIDLIST pidl; public: - ShellItem(); - ~ShellItem(); + CShellItem(); + ~CShellItem(); HRESULT get_parent_pidl(LPITEMIDLIST *parent_pidl); HRESULT get_parent_shellfolder(IShellFolder **ppsf); @@ -49,11 +49,11 @@ virtual HRESULT WINAPI GetIDList(LPITEMIDLIST *ppidl); DECLARE_NO_REGISTRY() -DECLARE_NOT_AGGREGATABLE(ShellItem) +DECLARE_NOT_AGGREGATABLE(CShellItem) DECLARE_PROTECT_FINAL_CONSTRUCT() -BEGIN_COM_MAP(ShellItem) +BEGIN_COM_MAP(CShellItem) COM_INTERFACE_ENTRY_IID(IID_IShellItem, IShellItem) COM_INTERFACE_ENTRY_IID(IID_IPersistIDList, IPersistIDList) END_COM_MAP() Modified: trunk/reactos/dll/win32/shell32/shelllink.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shelllin…
============================================================================== --- trunk/reactos/dll/win32/shell32/shelllink.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/shelllink.cpp [iso-8859-1] Mon Dec 19 12:01:22 2011 @@ -120,7 +120,7 @@ return dest; } -ShellLink::ShellLink() +CShellLink::CShellLink() { pPidl = NULL; wHotKey = 0; @@ -144,7 +144,7 @@ iIdOpen = -1; } -ShellLink::~ShellLink() +CShellLink::~CShellLink() { TRACE("-- destroying IShellLink(%p)\n", this); @@ -159,7 +159,7 @@ ILFree(pPidl); } -HRESULT WINAPI ShellLink::GetClassID(CLSID *pclsid ) +HRESULT WINAPI CShellLink::GetClassID(CLSID *pclsid ) { TRACE("%p %p\n", this, pclsid); @@ -169,7 +169,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::IsDirty() +HRESULT WINAPI CShellLink::IsDirty() { TRACE("(%p)\n",this); @@ -179,7 +179,7 @@ return S_FALSE; } -HRESULT WINAPI ShellLink::Load(LPCOLESTR pszFileName, DWORD dwMode) +HRESULT WINAPI CShellLink::Load(LPCOLESTR pszFileName, DWORD dwMode) { HRESULT r; CComPtr<IStream> stm; @@ -237,7 +237,7 @@ return ret; } -HRESULT WINAPI ShellLink::Save(LPCOLESTR pszFileName, BOOL fRemember) +HRESULT WINAPI CShellLink::Save(LPCOLESTR pszFileName, BOOL fRemember) { HRESULT r; CComPtr<IStream> stm; @@ -278,13 +278,13 @@ return r; } -HRESULT WINAPI ShellLink::SaveCompleted(LPCOLESTR pszFileName) +HRESULT WINAPI CShellLink::SaveCompleted(LPCOLESTR pszFileName) { FIXME("(%p)->(%s)\n", this, debugstr_w(pszFileName)); return NOERROR; } -HRESULT WINAPI ShellLink::GetCurFile(LPOLESTR *ppszFileName) +HRESULT WINAPI CShellLink::GetCurFile(LPOLESTR *ppszFileName) { *ppszFileName = NULL; @@ -403,7 +403,7 @@ return S_OK; } -static BOOL Stream_LoadVolume( LOCAL_VOLUME_INFO *vol, ShellLink::volume_info *volume ) +static BOOL Stream_LoadVolume( LOCAL_VOLUME_INFO *vol, CShellLink::volume_info *volume ) { const int label_sz = sizeof volume->label/sizeof volume->label[0]; LPSTR label; @@ -442,7 +442,7 @@ } static HRESULT Stream_LoadLocation( IStream *stm, - ShellLink::volume_info *volume, LPWSTR *path ) + CShellLink::volume_info *volume, LPWSTR *path ) { char *p = NULL; LOCATION_INFO *loc; @@ -542,7 +542,7 @@ /************************************************************************ * IPersistStream_Load (IPersistStream) */ -HRESULT WINAPI ShellLink::Load(IStream *stm) +HRESULT WINAPI CShellLink::Load(IStream *stm) { LINK_HEADER hdr; ULONG dwBytesRead; @@ -739,7 +739,7 @@ * Figure out how Windows deals with unicode paths here. */ static HRESULT Stream_WriteLocationInfo( IStream* stm, LPCWSTR path, - ShellLink::volume_info *volume ) + CShellLink::volume_info *volume ) { DWORD total_size, path_size, volume_info_size, label_size, final_path_size; LOCAL_VOLUME_INFO *vol; @@ -824,7 +824,7 @@ * * FIXME: makes assumptions about byte order */ -HRESULT WINAPI ShellLink::Save(IStream *stm, BOOL fClearDirty) +HRESULT WINAPI CShellLink::Save(IStream *stm, BOOL fClearDirty) { LINK_HEADER header; ULONG count; @@ -921,7 +921,7 @@ /************************************************************************ * IPersistStream_GetSizeMax (IPersistStream) */ -HRESULT WINAPI ShellLink::GetSizeMax(ULARGE_INTEGER *pcbSize) +HRESULT WINAPI CShellLink::GetSizeMax(ULARGE_INTEGER *pcbSize) { TRACE("(%p)\n", this); @@ -986,7 +986,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::GetPath(LPSTR pszFile, INT cchMaxPath, WIN32_FIND_DATAA *pfd, DWORD fFlags) +HRESULT WINAPI CShellLink::GetPath(LPSTR pszFile, INT cchMaxPath, WIN32_FIND_DATAA *pfd, DWORD fFlags) { TRACE("(%p)->(pfile=%p len=%u find_data=%p flags=%u)(%s)\n", this, pszFile, cchMaxPath, pfd, fFlags, debugstr_w(sPath)); @@ -1005,7 +1005,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::GetIDList(LPITEMIDLIST * ppidl) +HRESULT WINAPI CShellLink::GetIDList(LPITEMIDLIST * ppidl) { TRACE("(%p)->(ppidl=%p)\n",this, ppidl); @@ -1018,7 +1018,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::SetIDList(LPCITEMIDLIST pidl) +HRESULT WINAPI CShellLink::SetIDList(LPCITEMIDLIST pidl) { TRACE("(%p)->(pidl=%p)\n",this, pidl); @@ -1033,7 +1033,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::GetDescription(LPSTR pszName,INT cchMaxName) +HRESULT WINAPI CShellLink::GetDescription(LPSTR pszName,INT cchMaxName) { TRACE("(%p)->(%p len=%u)\n",this, pszName, cchMaxName); @@ -1046,7 +1046,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::SetDescription(LPCSTR pszName) +HRESULT WINAPI CShellLink::SetDescription(LPCSTR pszName) { TRACE("(%p)->(pName=%s)\n", this, pszName); @@ -1063,7 +1063,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::GetWorkingDirectory(LPSTR pszDir,INT cchMaxPath) +HRESULT WINAPI CShellLink::GetWorkingDirectory(LPSTR pszDir,INT cchMaxPath) { TRACE("(%p)->(%p len=%u)\n", this, pszDir, cchMaxPath); @@ -1076,7 +1076,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::SetWorkingDirectory(LPCSTR pszDir) +HRESULT WINAPI CShellLink::SetWorkingDirectory(LPCSTR pszDir) { TRACE("(%p)->(dir=%s)\n",this, pszDir); @@ -1093,7 +1093,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::GetArguments(LPSTR pszArgs,INT cchMaxPath) +HRESULT WINAPI CShellLink::GetArguments(LPSTR pszArgs,INT cchMaxPath) { TRACE("(%p)->(%p len=%u)\n", this, pszArgs, cchMaxPath); @@ -1106,7 +1106,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::SetArguments(LPCSTR pszArgs) +HRESULT WINAPI CShellLink::SetArguments(LPCSTR pszArgs) { TRACE("(%p)->(args=%s)\n",this, pszArgs); @@ -1124,7 +1124,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::GetHotkey(WORD *pwHotkey) +HRESULT WINAPI CShellLink::GetHotkey(WORD *pwHotkey) { TRACE("(%p)->(%p)(0x%08x)\n",this, pwHotkey, wHotKey); @@ -1133,7 +1133,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::SetHotkey(WORD wHotkey) +HRESULT WINAPI CShellLink::SetHotkey(WORD wHotkey) { TRACE("(%p)->(hotkey=%x)\n",this, wHotkey); @@ -1143,14 +1143,14 @@ return S_OK; } -HRESULT WINAPI ShellLink::GetShowCmd(INT *piShowCmd) +HRESULT WINAPI CShellLink::GetShowCmd(INT *piShowCmd) { TRACE("(%p)->(%p)\n",this, piShowCmd); *piShowCmd = iShowCmd; return S_OK; } -HRESULT WINAPI ShellLink::SetShowCmd(INT iShowCmd) +HRESULT WINAPI CShellLink::SetShowCmd(INT iShowCmd) { TRACE("(%p) %d\n",this, iShowCmd); @@ -1182,7 +1182,7 @@ return hr; } -HRESULT WINAPI ShellLink::GetIconLocation(LPSTR pszIconPath,INT cchIconPath,INT *piIcon) +HRESULT WINAPI CShellLink::GetIconLocation(LPSTR pszIconPath,INT cchIconPath,INT *piIcon) { TRACE("(%p)->(%p len=%u iicon=%p)\n", this, pszIconPath, cchIconPath, piIcon); @@ -1230,7 +1230,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::SetIconLocation(LPCSTR pszIconPath,INT iIcon) +HRESULT WINAPI CShellLink::SetIconLocation(LPCSTR pszIconPath,INT iIcon) { TRACE("(%p)->(path=%s iicon=%u)\n",this, pszIconPath, iIcon); @@ -1250,7 +1250,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::SetRelativePath(LPCSTR pszPathRel, DWORD dwReserved) +HRESULT WINAPI CShellLink::SetRelativePath(LPCSTR pszPathRel, DWORD dwReserved) { TRACE("(%p)->(path=%s %x)\n",this, pszPathRel, dwReserved); @@ -1266,7 +1266,7 @@ return ShellLink_UpdatePath(sPathRel, sPath, sWorkDir, &sPath); } -HRESULT WINAPI ShellLink::Resolve(HWND hwnd, DWORD fFlags) +HRESULT WINAPI CShellLink::Resolve(HWND hwnd, DWORD fFlags) { HRESULT hr = S_OK; BOOL bSuccess; @@ -1312,7 +1312,7 @@ return hr; } -HRESULT WINAPI ShellLink::SetPath(LPCSTR pszFile) +HRESULT WINAPI CShellLink::SetPath(LPCSTR pszFile) { HRESULT r; LPWSTR str; @@ -1331,7 +1331,7 @@ return r; } -HRESULT WINAPI ShellLink::GetPath(LPWSTR pszFile,INT cchMaxPath, WIN32_FIND_DATAW *pfd, DWORD fFlags) +HRESULT WINAPI CShellLink::GetPath(LPWSTR pszFile,INT cchMaxPath, WIN32_FIND_DATAW *pfd, DWORD fFlags) { TRACE("(%p)->(pfile=%p len=%u find_data=%p flags=%u)(%s)\n", this, pszFile, cchMaxPath, pfd, fFlags, debugstr_w(sPath)); @@ -1350,7 +1350,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::GetDescription(LPWSTR pszName,INT cchMaxName) +HRESULT WINAPI CShellLink::GetDescription(LPWSTR pszName,INT cchMaxName) { TRACE("(%p)->(%p len=%u)\n",this, pszName, cchMaxName); @@ -1361,7 +1361,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::SetDescription(LPCWSTR pszName) +HRESULT WINAPI CShellLink::SetDescription(LPCWSTR pszName) { TRACE("(%p)->(desc=%s)\n",this, debugstr_w(pszName)); @@ -1377,7 +1377,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::GetWorkingDirectory(LPWSTR pszDir,INT cchMaxPath) +HRESULT WINAPI CShellLink::GetWorkingDirectory(LPWSTR pszDir,INT cchMaxPath) { TRACE("(%p)->(%p len %u)\n", this, pszDir, cchMaxPath); @@ -1389,7 +1389,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::SetWorkingDirectory(LPCWSTR pszDir) +HRESULT WINAPI CShellLink::SetWorkingDirectory(LPCWSTR pszDir) { TRACE("(%p)->(dir=%s)\n",this, debugstr_w(pszDir)); @@ -1404,7 +1404,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::GetArguments(LPWSTR pszArgs,INT cchMaxPath) +HRESULT WINAPI CShellLink::GetArguments(LPWSTR pszArgs,INT cchMaxPath) { TRACE("(%p)->(%p len=%u)\n", this, pszArgs, cchMaxPath); @@ -1416,7 +1416,7 @@ return NOERROR; } -HRESULT WINAPI ShellLink::SetArguments(LPCWSTR pszArgs) +HRESULT WINAPI CShellLink::SetArguments(LPCWSTR pszArgs) { TRACE("(%p)->(args=%s)\n",this, debugstr_w(pszArgs)); @@ -1454,7 +1454,7 @@ return hr; } -HRESULT WINAPI ShellLink::GetIconLocation(LPWSTR pszIconPath,INT cchIconPath,INT *piIcon) +HRESULT WINAPI CShellLink::GetIconLocation(LPWSTR pszIconPath,INT cchIconPath,INT *piIcon) { TRACE("(%p)->(%p len=%u iicon=%p)\n", this, pszIconPath, cchIconPath, piIcon); @@ -1501,7 +1501,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::SetIconLocation(LPCWSTR pszIconPath,INT iIcon) +HRESULT WINAPI CShellLink::SetIconLocation(LPCWSTR pszIconPath,INT iIcon) { TRACE("(%p)->(path=%s iicon=%u)\n",this, debugstr_w(pszIconPath), iIcon); @@ -1518,7 +1518,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::SetRelativePath(LPCWSTR pszPathRel, DWORD dwReserved) +HRESULT WINAPI CShellLink::SetRelativePath(LPCWSTR pszPathRel, DWORD dwReserved) { TRACE("(%p)->(path=%s %x)\n",this, debugstr_w(pszPathRel), dwReserved); @@ -1533,7 +1533,7 @@ return ShellLink_UpdatePath(sPathRel, sPath, sWorkDir, &sPath); } -LPWSTR ShellLink::ShellLink_GetAdvertisedArg(LPCWSTR str) +LPWSTR CShellLink::ShellLink_GetAdvertisedArg(LPCWSTR str) { LPWSTR ret; LPCWSTR p; @@ -1554,7 +1554,7 @@ return ret; } -HRESULT ShellLink::ShellLink_SetAdvertiseInfo(LPCWSTR str) +HRESULT CShellLink::ShellLink_SetAdvertiseInfo(LPCWSTR str) { LPCWSTR szComponent = NULL, szProduct = NULL, p; WCHAR szGuid[39]; @@ -1616,7 +1616,7 @@ return S_OK; } -static BOOL ShellLink_GetVolumeInfo(LPCWSTR path, ShellLink::volume_info *volume) +static BOOL ShellLink_GetVolumeInfo(LPCWSTR path, CShellLink::volume_info *volume) { const int label_sz = sizeof volume->label/sizeof volume->label[0]; WCHAR drive[4] = { path[0], ':', '\\', 0 }; @@ -1629,7 +1629,7 @@ return r; } -HRESULT WINAPI ShellLink::SetPath(LPCWSTR pszFile) +HRESULT WINAPI CShellLink::SetPath(LPCWSTR pszFile) { WCHAR buffer[MAX_PATH]; LPWSTR fname, unquoted = NULL; @@ -1692,13 +1692,13 @@ return hr; } -HRESULT WINAPI ShellLink::AddDataBlock(void* pDataBlock ) +HRESULT WINAPI CShellLink::AddDataBlock(void* pDataBlock ) { FIXME("\n"); return E_NOTIMPL; } -HRESULT WINAPI ShellLink::CopyDataBlock(DWORD dwSig, void** ppDataBlock ) +HRESULT WINAPI CShellLink::CopyDataBlock(DWORD dwSig, void** ppDataBlock ) { LPVOID block = NULL; HRESULT r = E_FAIL; @@ -1727,13 +1727,13 @@ return r; } -HRESULT WINAPI ShellLink::RemoveDataBlock(DWORD dwSig ) +HRESULT WINAPI CShellLink::RemoveDataBlock(DWORD dwSig ) { FIXME("\n"); return E_NOTIMPL; } -HRESULT WINAPI ShellLink::GetFlags(DWORD* pdwFlags ) +HRESULT WINAPI CShellLink::GetFlags(DWORD* pdwFlags ) { DWORD flags = 0; @@ -1758,18 +1758,18 @@ return S_OK; } -HRESULT WINAPI ShellLink::SetFlags(DWORD dwFlags ) +HRESULT WINAPI CShellLink::SetFlags(DWORD dwFlags ) { FIXME("\n"); return E_NOTIMPL; } /************************************************************************** - * ShellLink implementation of IShellExtInit::Initialize() + * CShellLink implementation of IShellExtInit::Initialize() * * Loads the shelllink from the dataobject the shell is pointing to. */ -HRESULT WINAPI ShellLink::Initialize(LPCITEMIDLIST pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID ) +HRESULT WINAPI CShellLink::Initialize(LPCITEMIDLIST pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID ) { FORMATETC format; STGMEDIUM stgm; @@ -1810,7 +1810,7 @@ return r; } -HRESULT WINAPI ShellLink::QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) +HRESULT WINAPI CShellLink::QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) { WCHAR szOpen[20]; MENUITEMINFOW mii; @@ -1866,7 +1866,7 @@ return path; } -HRESULT WINAPI ShellLink::InvokeCommand(LPCMINVOKECOMMANDINFO lpici) +HRESULT WINAPI CShellLink::InvokeCommand(LPCMINVOKECOMMANDINFO lpici) { static const WCHAR szOpen[] = { 'o','p','e','n',0 }; static const WCHAR szCplOpen[] = { 'c','p','l','o','p','e','n',0 }; @@ -1949,7 +1949,7 @@ return r; } -HRESULT WINAPI ShellLink::GetCommandString(UINT_PTR idCmd, UINT uType, UINT* pwReserved, LPSTR pszName, UINT cchMax) +HRESULT WINAPI CShellLink::GetCommandString(UINT_PTR idCmd, UINT uType, UINT* pwReserved, LPSTR pszName, UINT cchMax) { FIXME("%p %lu %u %p %p %u\n", this, idCmd, uType, pwReserved, pszName, cchMax ); @@ -2000,18 +2000,18 @@ * dialog proc of the shortcut property dialog */ -INT_PTR CALLBACK ShellLink::SH_ShellLinkDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) +INT_PTR CALLBACK CShellLink::SH_ShellLinkDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { LPPROPSHEETPAGEW ppsp; LPPSHNOTIFY lppsn; - ShellLink *pThis; + CShellLink *pThis; HWND hDlgCtrl; WCHAR szBuffer[MAX_PATH]; WCHAR * ptr; int IconIndex; INT_PTR result; - pThis = (ShellLink *)GetWindowLongPtr(hwndDlg, DWLP_USER); + pThis = (CShellLink *)GetWindowLongPtr(hwndDlg, DWLP_USER); switch(uMsg) { @@ -2023,7 +2023,7 @@ TRACE("ShellLink_DlgProc (WM_INITDIALOG hwnd %p lParam %p ppsplParam %x)\n",hwndDlg, lParam, ppsp->lParam); - pThis = (ShellLink *)ppsp->lParam; + pThis = (CShellLink *)ppsp->lParam; SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pThis); TRACE("sArgs: %S sComponent: %S sDescription: %S sIcoPath: %S sPath: %S sPathRel: %S sProduct: %S sWorkDir: %S\n", pThis->sArgs, pThis->sComponent, pThis->sDescription, @@ -2135,7 +2135,7 @@ * ShellLink_IShellPropSheetExt interface */ -HRESULT WINAPI ShellLink::AddPages(LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam) +HRESULT WINAPI CShellLink::AddPages(LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam) { HPROPSHEETPAGE hPage; BOOL bRet; @@ -2154,13 +2154,13 @@ return E_FAIL; } -HRESULT WINAPI ShellLink::ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE pfnReplacePage, LPARAM lParam) +HRESULT WINAPI CShellLink::ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE pfnReplacePage, LPARAM lParam) { TRACE("(%p) (uPageID %u, pfnReplacePage %p lParam %p\n", this, uPageID, pfnReplacePage, lParam); return E_NOTIMPL; } -HRESULT WINAPI ShellLink::SetSite(IUnknown *punk) +HRESULT WINAPI CShellLink::SetSite(IUnknown *punk) { TRACE("%p %p\n", this, punk); @@ -2169,7 +2169,7 @@ return S_OK; } -HRESULT WINAPI ShellLink::GetSite(REFIID iid, void ** ppvSite) +HRESULT WINAPI CShellLink::GetSite(REFIID iid, void ** ppvSite) { TRACE("%p %s %p\n", this, debugstr_guid(&iid), ppvSite ); @@ -2185,7 +2185,7 @@ { CComPtr<IUnknown> psl; - HRESULT hr = ShellLink::_CreatorClass::CreateInstance(NULL, riid, (void**)&psl); + HRESULT hr = CShellLink::_CreatorClass::CreateInstance(NULL, riid, (void**)&psl); if (SUCCEEDED(hr)) { Modified: trunk/reactos/dll/win32/shell32/shelllink.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shelllin…
============================================================================== --- trunk/reactos/dll/win32/shell32/shelllink.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/shelllink.h [iso-8859-1] Mon Dec 19 12:01:22 2011 @@ -24,8 +24,8 @@ #ifndef _SHELLLINK_H_ #define _SHELLLINK_H_ -class ShellLink : - public CComCoClass<ShellLink, &CLSID_ShellLink>, +class CShellLink : + public CComCoClass<CShellLink, &CLSID_ShellLink>, public CComObjectRootEx<CComMultiThreadModelNoCS>, public IShellLinkA, public IShellLinkW, @@ -76,8 +76,8 @@ INT iIdOpen; /* id of the "Open" entry in the context menu */ CComPtr<IUnknown> site; public: - ShellLink(); - ~ShellLink(); + CShellLink(); + ~CShellLink(); LPWSTR ShellLink_GetAdvertisedArg(LPCWSTR str); HRESULT ShellLink_SetAdvertiseInfo(LPCWSTR str); static INT_PTR CALLBACK SH_ShellLinkDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); @@ -161,11 +161,11 @@ virtual HRESULT WINAPI GetSite(REFIID iid, void **ppvSite); DECLARE_REGISTRY_RESOURCEID(IDR_SHELLLINK) -DECLARE_NOT_AGGREGATABLE(ShellLink) +DECLARE_NOT_AGGREGATABLE(CShellLink) DECLARE_PROTECT_FINAL_CONSTRUCT() -BEGIN_COM_MAP(ShellLink) +BEGIN_COM_MAP(CShellLink) COM_INTERFACE_ENTRY2_IID(IID_IPersist, IPersist, IPersistFile) COM_INTERFACE_ENTRY_IID(IID_IPersistFile, IPersistFile) COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
13 years, 6 months
1
0
0
0
← Newer
1
...
7
8
9
10
11
12
13
...
25
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
Results per page:
10
25
50
100
200