diff --git a/reactos/dll/win32/shell32/drive.c b/reactos/dll/win32/shell32/drive.c index 2956c270818..d99dc5db18e 100644 --- a/reactos/dll/win32/shell32/drive.c +++ b/reactos/dll/win32/shell32/drive.c @@ -26,29 +26,27 @@ #define ConvertUlongToLargeInteger RtlConvertUlongToLargeInteger #define LargeIntegerSubtract RtlLargeIntegerSubtract #define MAX_PROPERTY_SHEET_PAGE 32 + +#define WIN32_NO_STATUS +#define NTOS_MODE_USER +#define UNICODE +#define _UNICODE +#include +#include + #include #include #include -#include "winerror.h" -#include "windef.h" -#include "winbase.h" -#include "winreg.h" -#include "wingdi.h" -#include "winuser.h" -#include "commdlg.h" #include "wine/debug.h" - -#include "shellapi.h" -#include -#include "shlobj.h" -#include "shell32_main.h" #include "shresdef.h" -#include "undocshell.h" + +#include +#include #include #include #include -#include #include +#include WINE_DEFAULT_DEBUG_CHANNEL(shell); @@ -59,14 +57,64 @@ typedef enum HWPD_MAX = HWPD_LARGELIST } HWPAGE_DISPLAYMODE, *PHWPAGE_DISPLAYMODE; +typedef +BOOLEAN +(NTAPI *INITIALIZE_FMIFS)( + IN PVOID hinstDll, + IN DWORD dwReason, + IN PVOID reserved +); +typedef +BOOLEAN +(NTAPI *QUERY_AVAILABLEFSFORMAT)( + IN DWORD Index, + IN OUT PWCHAR FileSystem, + OUT UCHAR* Major, + OUT UCHAR* Minor, + OUT BOOLEAN* LastestVersion +); +typedef +BOOLEAN +(NTAPI *ENABLEVOLUMECOMPRESSION)( + IN PWCHAR DriveRoot, + IN USHORT Compression +); + +typedef +VOID +(NTAPI *FORMAT_EX)( + IN PWCHAR DriveRoot, + IN FMIFS_MEDIA_FLAG MediaFlag, + IN PWCHAR Format, + IN PWCHAR Label, + IN BOOLEAN QuickFormat, + IN ULONG ClusterSize, + IN PFMIFSCALLBACK Callback +); + + +typedef struct +{ + WCHAR Drive; + UINT Options; + HMODULE hLibrary; + QUERY_AVAILABLEFSFORMAT QueryAvailableFileSystemFormat; + FORMAT_EX FormatEx; + ENABLEVOLUMECOMPRESSION EnableVolumeCompression; + UINT Result; +}FORMAT_DRIVE_CONTEXT, *PFORMAT_DRIVE_CONTEXT; + HWND WINAPI DeviceCreateHardwarePageEx(HWND hWndParent, LPGUID lpGuids, UINT uNumberOfGuids, HWPAGE_DISPLAYMODE DisplayMode); +HPROPSHEETPAGE SH_CreatePropertySheetPage(LPSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR szTitle); + #define DRIVE_PROPERTY_PAGES (3) +extern HINSTANCE shell32_hInstance; static LARGE_INTEGER @@ -201,11 +249,11 @@ InitializeGeneralDriveDialog(HWND hwndDlg, WCHAR * szDrive) Result = GetFreeBytesShare(TotalNumberOfFreeBytes, TotalNumberOfBytes); /* set free bytes percentage */ - sprintfW(szResult, L"%02d%%", Result.QuadPart); + swprintf(szResult, L"%02d%%", Result.QuadPart); SendDlgItemMessageW(hwndDlg, 14007, WM_SETTEXT, (WPARAM)0, (LPARAM)szResult); /* store used share amount */ Result = LargeIntegerSubtract(ConvertUlongToLargeInteger(100), Result); - sprintfW(szResult, L"%02d%%", Result.QuadPart); + swprintf(szResult, L"%02d%%", Result.QuadPart); SendDlgItemMessageW(hwndDlg, 14005, WM_SETTEXT, (WPARAM)0, (LPARAM)szResult); if (LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szBuffer, sizeof(szBuffer) / sizeof(WCHAR))) SendDlgItemMessageW(hwndDlg, 14002, WM_SETTEXT, (WPARAM)0, (LPARAM)szBuffer); @@ -214,7 +262,7 @@ InitializeGeneralDriveDialog(HWND hwndDlg, WCHAR * szDrive) } /* set drive description */ SendDlgItemMessageW(hwndDlg, 14010, WM_GETTEXT, (WPARAM)50, (LPARAM)szFormat); - sprintfW(szBuffer, szFormat, szDrive); + swprintf(szBuffer, szFormat, szDrive); SendDlgItemMessageW(hwndDlg, 14010, WM_SETTEXT, (WPARAM)NULL, (LPARAM)szBuffer); } @@ -493,3 +541,497 @@ SH_ShowDriveProperties(WCHAR * drive) else return TRUE; } + + + + + +VOID +InsertDefaultClusterSizeForFs(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext) +{ + WCHAR szFs[100] = {0}; + WCHAR szDrive[3] = { L'C', '\\', 0 }; + INT iSelIndex; + ULARGE_INTEGER FreeBytesAvailableUser, TotalNumberOfBytes; + DWORD ClusterSize; + LRESULT lIndex; + HWND hDlgCtrl; + + hDlgCtrl = GetDlgItem(hwndDlg, 28677); + iSelIndex = SendMessage(hDlgCtrl, CB_GETCURSEL, 0, 0); + if (iSelIndex == CB_ERR) + return; + + if (SendMessageW(hDlgCtrl, CB_GETLBTEXT, iSelIndex, (LPARAM)szFs) == CB_ERR) + return; + + szFs[(sizeof(szFs)/sizeof(WCHAR))-1] = L'\0'; + szDrive[0] = pContext->Drive; + + if (!GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailableUser, &TotalNumberOfBytes, NULL)) + return; + + if (!wcsicmp(szFs, L"FAT16")) + { + if (TotalNumberOfBytes.QuadPart <= (16 * 1024 * 1024)) + ClusterSize = 2048; + else if (TotalNumberOfBytes.QuadPart <= (32 * 1024 * 1024)) + ClusterSize = 512; + else if (TotalNumberOfBytes.QuadPart <= (64 * 1024 * 1024)) + ClusterSize = 1024; + else if (TotalNumberOfBytes.QuadPart <= (128 * 1024 * 1024)) + ClusterSize = 2048; + else if (TotalNumberOfBytes.QuadPart <= (256 * 1024 * 1024)) + ClusterSize = 4096; + else if (TotalNumberOfBytes.QuadPart <= (512 * 1024 * 1024)) + ClusterSize = 8192; + else if (TotalNumberOfBytes.QuadPart <= (1024 * 1024 * 1024)) + ClusterSize = 16384; + else if (TotalNumberOfBytes.QuadPart <= (2048LL * 1024LL * 1024LL)) + ClusterSize = 32768; + else if (TotalNumberOfBytes.QuadPart <= (4096LL * 1024LL * 1024LL)) + ClusterSize = 8192; + else + { + 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))) + { + 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); + if (lIndex != CB_ERR) + SendMessageW(hDlgCtrl, CB_SETITEMDATA, lIndex, (LPARAM)ClusterSize); + } + } + else if (!wcsicmp(szFs, L"FAT32")) + { + if (TotalNumberOfBytes.QuadPart <=(64 * 1024 * 1024)) + ClusterSize = 512; + else if (TotalNumberOfBytes.QuadPart <= (128 * 1024 * 1024)) + ClusterSize = 1024; + else if (TotalNumberOfBytes.QuadPart <= (256 * 1024 * 1024)) + ClusterSize = 2048; + else if (TotalNumberOfBytes.QuadPart <= (8192LL * 1024LL * 1024LL)) + ClusterSize = 2048; + else if (TotalNumberOfBytes.QuadPart <= (16384LL * 1024LL * 1024LL)) + ClusterSize = 8192; + else if (TotalNumberOfBytes.QuadPart <= (32768LL * 1024LL * 1024LL)) + ClusterSize = 16384; + else + { + 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))) + { + 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); + if (lIndex != CB_ERR) + SendMessageW(hDlgCtrl, CB_SETITEMDATA, lIndex, (LPARAM)ClusterSize); + } + } + else if (!wcsicmp(szFs, L"NTFS")) + { + if (TotalNumberOfBytes.QuadPart <=(512 * 1024 * 1024)) + ClusterSize = 512; + else if (TotalNumberOfBytes.QuadPart <= (1024 * 1024 * 1024)) + ClusterSize = 1024; + else if (TotalNumberOfBytes.QuadPart <= (2048LL * 1024LL * 1024LL)) + ClusterSize = 2048; + else + ClusterSize = 2048; + + 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'; + SendMessageW(hDlgCtrl, CB_RESETCONTENT, 0, 0); + lIndex = SendMessageW(hDlgCtrl, CB_ADDSTRING, 0, (LPARAM)szFs); + if (lIndex != CB_ERR) + SendMessageW(hDlgCtrl, CB_SETITEMDATA, lIndex, (LPARAM)ClusterSize); + } + ClusterSize = 512; + for (lIndex = 0; lIndex < 4; lIndex++) + { + TotalNumberOfBytes.QuadPart = ClusterSize; + if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, szFs, sizeof(szFs)/sizeof(WCHAR))) + { + lIndex = SendMessageW(hDlgCtrl, CB_ADDSTRING, 0, (LPARAM)szFs); + if (lIndex != CB_ERR) + SendMessageW(hDlgCtrl, CB_SETITEMDATA, lIndex, (LPARAM)ClusterSize); + } + ClusterSize *= 2; + } + } +} + +VOID +InitializeFormatDriveDlg(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext) +{ + WCHAR szText[120]; + WCHAR szDrive[3] = { L'C', '\\', 0 }; + WCHAR szFs[30] = {0}; + INT Length, TempLength; + DWORD dwSerial, dwMaxComp, dwFileSys; + ULARGE_INTEGER FreeBytesAvailableUser, TotalNumberOfBytes; + DWORD dwIndex, dwDefault; + UCHAR uMinor, uMajor; + BOOLEAN Latest; + HWND hDlgCtrl; + + Length = GetWindowTextW(hwndDlg, szText, sizeof(szText)/sizeof(WCHAR)); + szDrive[0] = pContext->Drive; + 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) + { + /* load default volume label */ + TempLength = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, &szText[Length+1], (sizeof(szText)/sizeof(WCHAR))- Length - 2); + } + else + { + /* set volume label */ + szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0'; + SendDlgItemMessageW(hwndDlg, 28679, WM_SETTEXT, 0, (LPARAM)&szText[Length+1]); + } + Length += TempLength + 1; + } + if (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 (Length < (sizeof(szText)/sizeof(WCHAR))) + szText[Length] = L'\0'; + else + szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0'; + + /* set window text */ + SetWindowTextW(hwndDlg, szText); + + if (GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailableUser, &TotalNumberOfBytes, NULL)) + { + if (StrFormatByteSizeW(TotalNumberOfBytes.QuadPart, szText, sizeof(szText)/sizeof(WCHAR))) + { + /* add drive capacity */ + szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0'; + SendDlgItemMessageW(hwndDlg, 28673, LB_ADDSTRING, 0, (LPARAM)szText); + } + } + + if (pContext->Options & SHFMT_OPT_FULL) + { + /* check quick format button */ + SendDlgItemMessageW(hwndDlg, 28674, BM_SETCHECK, BST_CHECKED, 0); + } + + /* enumerate all available filesystems */ + dwIndex = 0; + dwDefault = 0; + hDlgCtrl = 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); + dwIndex++; + } + + if (!dwIndex) + { + ERR("no filesystem providers\n"); + return; + } + + /* select default filesys */ + SendMessageW(hDlgCtrl, CB_SETCURSEL, dwIndex, 0); + /* setup cluster combo */ + InsertDefaultClusterSizeForFs(hwndDlg, pContext); + /* hide progress control */ + ShowWindow(GetDlgItem(hwndDlg, 28678), SW_HIDE); +} + +HWND FormatDrvDialog = NULL; +BOOLEAN bSuccess = FALSE; + + +BOOLEAN +NTAPI +FormatExCB( + IN CALLBACKCOMMAND Command, + IN ULONG SubAction, + IN PVOID ActionInfo) +{ + PDWORD Progress; + PBOOLEAN pSuccess; + switch(Command) + { + case PROGRESS: + Progress = (PDWORD)ActionInfo; + SendDlgItemMessageW(FormatDrvDialog, 28678, PBM_SETPOS, (WPARAM)*Progress, 0); + break; + case DONE: + pSuccess = (PBOOLEAN)ActionInfo; + bSuccess = (*pSuccess); + break; + + case VOLUMEINUSE: + case INSUFFICIENTRIGHTS: + case FSNOTSUPPORTED: + case CLUSTERSIZETOOSMALL: + bSuccess = FALSE; + FIXME("\n"); + break; + + default: + break; + } + + return TRUE; +} + + + + + +VOID +FormatDrive(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext) +{ + WCHAR szDrive[3] = { L'C', '\\', 0 }; + WCHAR szFileSys[40] = {0}; + WCHAR szLabel[40] = {0}; + INT iSelIndex; + UINT Length; + HWND hDlgCtrl; + BOOL QuickFormat; + DWORD ClusterSize; + + /* set volume path */ + szDrive[0] = pContext->Drive; + + /* get filesystem */ + hDlgCtrl = GetDlgItem(hwndDlg, 28677); + iSelIndex = SendMessageW(hDlgCtrl, CB_GETCURSEL, 0, 0); + if (iSelIndex == CB_ERR) + { + FIXME("\n"); + return; + } + Length = SendMessageW(hDlgCtrl, CB_GETLBTEXTLEN, iSelIndex, 0); + if (Length == CB_ERR || Length + 1> sizeof(szFileSys)/sizeof(WCHAR)) + { + FIXME("\n"); + return; + } + + /* retrieve the file system */ + SendMessageW(hDlgCtrl, CB_GETLBTEXT, iSelIndex, (LPARAM)szFileSys); + szFileSys[(sizeof(szFileSys)/sizeof(WCHAR))-1] = L'\0'; + + /* retrieve the volume label */ + hDlgCtrl = GetWindow(hwndDlg, 28679); + Length = SendMessageW(hDlgCtrl, WM_GETTEXTLENGTH, 0, 0); + if (Length + 1 > sizeof(szLabel)/sizeof(WCHAR)) + { + FIXME("\n"); + return; + } + SendMessageW(hDlgCtrl, WM_GETTEXT, sizeof(szLabel)/sizeof(WCHAR), (LPARAM)szLabel); + szLabel[(sizeof(szLabel)/sizeof(WCHAR))-1] = L'\0'; + + /* check for quickformat */ + if (SendDlgItemMessageW(hwndDlg, 28674, BM_GETCHECK, 0, 0) == BST_CHECKED) + QuickFormat = TRUE; + else + QuickFormat = FALSE; + + /* get the cluster size */ + hDlgCtrl = GetDlgItem(hwndDlg, 28680); + iSelIndex = SendMessageW(hDlgCtrl, CB_GETCURSEL, 0, 0); + if (iSelIndex == CB_ERR) + { + FIXME("\n"); + return; + } + ClusterSize = SendMessageW(hDlgCtrl, CB_GETITEMDATA, iSelIndex, 0); + if (ClusterSize == CB_ERR) + { + FIXME("\n"); + return; + } + + hDlgCtrl = GetDlgItem(hwndDlg, 28680); + ShowWindow(hDlgCtrl, SW_SHOW); + SendMessageW(hDlgCtrl, PBM_SETRANGE, 0, MAKELPARAM(0, 100)); + bSuccess = FALSE; + + /* FIXME + * will cause display problems + * when performing more than one format + */ + FormatDrvDialog = hwndDlg; + + pContext->FormatEx(szDrive, + FMIFS_HARDDISK, /* FIXME */ + szFileSys, + szLabel, + QuickFormat, + ClusterSize, + FormatExCB); + + ShowWindow(hDlgCtrl, SW_HIDE); + FormatDrvDialog = NULL; + if (!bSuccess) + { + pContext->Result = SHFMT_ERROR; + } + else if (QuickFormat) + { + pContext->Result = SHFMT_OPT_FULL; + } + else + { + pContext->Result = FALSE; + } +} + + +BOOL +CALLBACK +FormatDriveDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + PFORMAT_DRIVE_CONTEXT pContext; + + switch(uMsg) + { + case WM_INITDIALOG: + InitializeFormatDriveDlg(hwndDlg, (PFORMAT_DRIVE_CONTEXT)lParam); + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)lParam); + return TRUE; + case WM_COMMAND: + switch(LOWORD(wParam)) + { + case IDOK: + pContext = (PFORMAT_DRIVE_CONTEXT)GetWindowLongPtr(hwndDlg, DWLP_USER); + FormatDrive(hwndDlg, pContext); + break; + case IDCANCEL: + pContext = (PFORMAT_DRIVE_CONTEXT)GetWindowLongPtr(hwndDlg, DWLP_USER); + EndDialog(hwndDlg, pContext->Result); + break; + case 28677: // filesystem combo + if (HIWORD(wParam) == CBN_SELENDOK) + { + pContext = (PFORMAT_DRIVE_CONTEXT)GetWindowLongPtr(hwndDlg, DWLP_USER); + InsertDefaultClusterSizeForFs(hwndDlg, pContext); + } + break; + } + } + 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; + } + + return TRUE; +} + +/************************************************************************* + * SHFormatDrive (SHELL32.@) + */ + +DWORD +WINAPI +SHFormatDrive(HWND hwnd, UINT drive, UINT fmtID, UINT options) +{ + FORMAT_DRIVE_CONTEXT Context; + int result; + + TRACE("%p, 0x%08x, 0x%08x, 0x%08x - stub\n", hwnd, drive, fmtID, options); + + if (!InitializeFmifsLibrary(&Context)) + { + ERR("failed to initialize fmifs\n"); + return SHFMT_NOFORMAT; + } + + Context.Drive = drive; + Context.Options = options; + + result = DialogBoxParamW(shell32_hInstance, L"FORMAT_DLG", hwnd, FormatDriveDlg, (LPARAM)&Context); + + FreeLibrary(Context.hLibrary); + return result; +} + + diff --git a/reactos/dll/win32/shell32/lang/bg-BG.rc b/reactos/dll/win32/shell32/lang/bg-BG.rc index 04559a3bcce..66a6d758282 100644 --- a/reactos/dll/win32/shell32/lang/bg-BG.rc +++ b/reactos/dll/win32/shell32/lang/bg-BG.rc @@ -732,6 +732,8 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/ca-ES.rc b/reactos/dll/win32/shell32/lang/ca-ES.rc index 00ad51d1f3b..19df4c6e730 100644 --- a/reactos/dll/win32/shell32/lang/ca-ES.rc +++ b/reactos/dll/win32/shell32/lang/ca-ES.rc @@ -729,4 +729,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/cs-CZ.rc b/reactos/dll/win32/shell32/lang/cs-CZ.rc index 3025f566797..0154a4333c0 100644 --- a/reactos/dll/win32/shell32/lang/cs-CZ.rc +++ b/reactos/dll/win32/shell32/lang/cs-CZ.rc @@ -730,4 +730,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/da-DK.rc b/reactos/dll/win32/shell32/lang/da-DK.rc index f5bbbbf8466..72859695f09 100644 --- a/reactos/dll/win32/shell32/lang/da-DK.rc +++ b/reactos/dll/win32/shell32/lang/da-DK.rc @@ -729,4 +729,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/de-DE.rc b/reactos/dll/win32/shell32/lang/de-DE.rc index e17b7e6cdf7..2cf24a9c6a1 100644 --- a/reactos/dll/win32/shell32/lang/de-DE.rc +++ b/reactos/dll/win32/shell32/lang/de-DE.rc @@ -547,7 +547,7 @@ END FORMAT_DLG DIALOGEX 50, 50, 184, 218 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION -CAPTION "Formatieren" +CAPTION "Formatieren von" FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "&Starten", IDOK, 53, 198, 60, 14 @@ -731,4 +731,6 @@ BEGIN IDS_PRINTERS "Drucker" IDS_FONTS "Schriftarten" IDS_INSTALLNEWFONT "Neue Schriftart installieren..." + + IDS_DEFAULT_CLUSTER_SIZE "Standardgröße" END diff --git a/reactos/dll/win32/shell32/lang/el-GR.rc b/reactos/dll/win32/shell32/lang/el-GR.rc index 02de93e08f5..d08a7e35fd2 100644 --- a/reactos/dll/win32/shell32/lang/el-GR.rc +++ b/reactos/dll/win32/shell32/lang/el-GR.rc @@ -729,4 +729,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/en-GB.rc b/reactos/dll/win32/shell32/lang/en-GB.rc index 43fbdd065d0..7d58457488f 100644 --- a/reactos/dll/win32/shell32/lang/en-GB.rc +++ b/reactos/dll/win32/shell32/lang/en-GB.rc @@ -729,4 +729,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/en-US.rc b/reactos/dll/win32/shell32/lang/en-US.rc index 4f8da838aea..94085ca31ff 100644 --- a/reactos/dll/win32/shell32/lang/en-US.rc +++ b/reactos/dll/win32/shell32/lang/en-US.rc @@ -730,4 +730,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/es-ES.rc b/reactos/dll/win32/shell32/lang/es-ES.rc index b189d7368b8..061003bcb35 100644 --- a/reactos/dll/win32/shell32/lang/es-ES.rc +++ b/reactos/dll/win32/shell32/lang/es-ES.rc @@ -731,4 +731,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/fi-FI.rc b/reactos/dll/win32/shell32/lang/fi-FI.rc index 79d4b67ad55..43d4b14b282 100644 --- a/reactos/dll/win32/shell32/lang/fi-FI.rc +++ b/reactos/dll/win32/shell32/lang/fi-FI.rc @@ -729,4 +729,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/fr-FR.rc b/reactos/dll/win32/shell32/lang/fr-FR.rc index c1669c644a5..c0d4dbd4f10 100644 --- a/reactos/dll/win32/shell32/lang/fr-FR.rc +++ b/reactos/dll/win32/shell32/lang/fr-FR.rc @@ -733,4 +733,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/hu-HU.rc b/reactos/dll/win32/shell32/lang/hu-HU.rc index 98c7b0478ae..7e461cd6b25 100644 --- a/reactos/dll/win32/shell32/lang/hu-HU.rc +++ b/reactos/dll/win32/shell32/lang/hu-HU.rc @@ -732,4 +732,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/it-IT.rc b/reactos/dll/win32/shell32/lang/it-IT.rc index 7ce075013de..3c670f08fe7 100644 --- a/reactos/dll/win32/shell32/lang/it-IT.rc +++ b/reactos/dll/win32/shell32/lang/it-IT.rc @@ -730,4 +730,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/ja-JP.rc b/reactos/dll/win32/shell32/lang/ja-JP.rc index cea66e1b418..7b4ae867026 100644 --- a/reactos/dll/win32/shell32/lang/ja-JP.rc +++ b/reactos/dll/win32/shell32/lang/ja-JP.rc @@ -729,4 +729,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + END diff --git a/reactos/dll/win32/shell32/lang/ko-KR.rc b/reactos/dll/win32/shell32/lang/ko-KR.rc index f5f4e083911..5be19887818 100644 --- a/reactos/dll/win32/shell32/lang/ko-KR.rc +++ b/reactos/dll/win32/shell32/lang/ko-KR.rc @@ -729,4 +729,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/nl-NL.rc b/reactos/dll/win32/shell32/lang/nl-NL.rc index cf8906d1b7e..01649ac2d46 100644 --- a/reactos/dll/win32/shell32/lang/nl-NL.rc +++ b/reactos/dll/win32/shell32/lang/nl-NL.rc @@ -729,4 +729,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/no-NO.rc b/reactos/dll/win32/shell32/lang/no-NO.rc index 4957a925a9a..fe696946354 100644 --- a/reactos/dll/win32/shell32/lang/no-NO.rc +++ b/reactos/dll/win32/shell32/lang/no-NO.rc @@ -707,4 +707,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/pl-PL.rc b/reactos/dll/win32/shell32/lang/pl-PL.rc index de7515ee26c..38ab73e9bdc 100644 --- a/reactos/dll/win32/shell32/lang/pl-PL.rc +++ b/reactos/dll/win32/shell32/lang/pl-PL.rc @@ -735,4 +735,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/pt-BR.rc b/reactos/dll/win32/shell32/lang/pt-BR.rc index 5d5d90f56cd..4ae9493f992 100644 --- a/reactos/dll/win32/shell32/lang/pt-BR.rc +++ b/reactos/dll/win32/shell32/lang/pt-BR.rc @@ -731,4 +731,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/pt-PT.rc b/reactos/dll/win32/shell32/lang/pt-PT.rc index c9136ef224b..3b2ce37ba7c 100644 --- a/reactos/dll/win32/shell32/lang/pt-PT.rc +++ b/reactos/dll/win32/shell32/lang/pt-PT.rc @@ -731,4 +731,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/ru-RU.rc b/reactos/dll/win32/shell32/lang/ru-RU.rc index 3c70d2b1f7b..5484bda8a42 100644 --- a/reactos/dll/win32/shell32/lang/ru-RU.rc +++ b/reactos/dll/win32/shell32/lang/ru-RU.rc @@ -727,4 +727,6 @@ BEGIN IDS_PRINTERS "Ïðèíòåðû" IDS_FONTS "Øðèôòû" IDS_INSTALLNEWFONT "Óñòàíîâèòü íîâûé øðèôò..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/sk-SK.rc b/reactos/dll/win32/shell32/lang/sk-SK.rc index 952b6560f20..8e269daaa8f 100644 --- a/reactos/dll/win32/shell32/lang/sk-SK.rc +++ b/reactos/dll/win32/shell32/lang/sk-SK.rc @@ -735,4 +735,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/sl-SI.rc b/reactos/dll/win32/shell32/lang/sl-SI.rc index c03e3bec75b..34669dde1d3 100644 --- a/reactos/dll/win32/shell32/lang/sl-SI.rc +++ b/reactos/dll/win32/shell32/lang/sl-SI.rc @@ -729,4 +729,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/sv-SE.rc b/reactos/dll/win32/shell32/lang/sv-SE.rc index 9ef056ee401..c7c8507b8cf 100644 --- a/reactos/dll/win32/shell32/lang/sv-SE.rc +++ b/reactos/dll/win32/shell32/lang/sv-SE.rc @@ -729,4 +729,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/tr-TR.rc b/reactos/dll/win32/shell32/lang/tr-TR.rc index ffdb21deb57..1b7c826c39b 100644 --- a/reactos/dll/win32/shell32/lang/tr-TR.rc +++ b/reactos/dll/win32/shell32/lang/tr-TR.rc @@ -729,4 +729,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/uk-UA.rc b/reactos/dll/win32/shell32/lang/uk-UA.rc index 16b73392063..54ce9eec179 100644 --- a/reactos/dll/win32/shell32/lang/uk-UA.rc +++ b/reactos/dll/win32/shell32/lang/uk-UA.rc @@ -730,4 +730,6 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/zh-CN.rc b/reactos/dll/win32/shell32/lang/zh-CN.rc index 1b8efdf8cb9..f7b85c316f3 100644 --- a/reactos/dll/win32/shell32/lang/zh-CN.rc +++ b/reactos/dll/win32/shell32/lang/zh-CN.rc @@ -717,5 +717,7 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" END diff --git a/reactos/dll/win32/shell32/lang/zh-TW.rc b/reactos/dll/win32/shell32/lang/zh-TW.rc index 766c9d99d3d..b100a443a6f 100644 --- a/reactos/dll/win32/shell32/lang/zh-TW.rc +++ b/reactos/dll/win32/shell32/lang/zh-TW.rc @@ -730,6 +730,9 @@ BEGIN IDS_PRINTERS "Printers" IDS_FONTS "Fonts" IDS_INSTALLNEWFONT "Install New Font..." + + IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" + END #pragma code_page(default) diff --git a/reactos/dll/win32/shell32/shellord.c b/reactos/dll/win32/shell32/shellord.c index e43907f2b33..f3811d54c46 100644 --- a/reactos/dll/win32/shell32/shellord.c +++ b/reactos/dll/win32/shell32/shellord.c @@ -2057,13 +2057,6 @@ HRESULT WINAPI SHEmptyRecycleBinW(HWND hwnd, LPCWSTR pszRootPath, DWORD dwFlags) return S_OK; } -DWORD WINAPI SHFormatDrive(HWND hwnd, UINT drive, UINT fmtID, UINT options) -{ - FIXME("%p, 0x%08x, 0x%08x, 0x%08x - stub\n", hwnd, drive, fmtID, options); - - return SHFMT_NOFORMAT; -} - HRESULT WINAPI SHQueryRecycleBinA(LPCSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo) { LPWSTR szRootPathW = NULL; diff --git a/reactos/dll/win32/shell32/shresdef.h b/reactos/dll/win32/shell32/shresdef.h index 25f4a3a4eba..41f346cdc46 100644 --- a/reactos/dll/win32/shell32/shresdef.h +++ b/reactos/dll/win32/shell32/shresdef.h @@ -160,6 +160,7 @@ #define IDS_SHV_COLUMN_MODEL 322 #define IDS_CUT 323 #define IDS_RESTORE 324 +#define IDS_DEFAULT_CLUSTER_SIZE 325 /* Note: this string is referenced from the registry */ #define IDS_RECYCLEBIN_FOLDER_NAME 8964