* Implement SHFormatDrive using fmifs api (format drive dialog in explorer)

svn path=/trunk/; revision=35319
This commit is contained in:
Johannes Anderwald 2008-08-13 21:29:29 +00:00
parent 5f696de7d6
commit 0ae6a9811c
31 changed files with 618 additions and 25 deletions

View file

@ -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 <windows.h>
#include <ndk/ntndk.h>
#include <string.h>
#include <stdarg.h>
#include <stdio.h>
#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 <shlwapi.h>
#include "shlobj.h"
#include "shell32_main.h"
#include "shresdef.h"
#include "undocshell.h"
#include <shlwapi.h>
#include <shlobj.h>
#include <prsht.h>
#include <initguid.h>
#include <devguid.h>
#include <winioctl.h>
#include <largeint.h>
#include <fmifs/fmifs.h>
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;
}

View file

@ -732,6 +732,8 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -729,4 +729,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -730,4 +730,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -729,4 +729,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -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

View file

@ -729,4 +729,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -729,4 +729,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -730,4 +730,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -731,4 +731,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -729,4 +729,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -733,4 +733,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -732,4 +732,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -730,4 +730,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -729,4 +729,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -729,4 +729,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -729,4 +729,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -707,4 +707,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -735,4 +735,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -731,4 +731,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -731,4 +731,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -727,4 +727,6 @@ BEGIN
IDS_PRINTERS "Ïðèíòåðû"
IDS_FONTS "Øðèôòû"
IDS_INSTALLNEWFONT "Óñòàíîâèòü íîâûé øðèôò..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -735,4 +735,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -729,4 +729,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -729,4 +729,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -729,4 +729,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -730,4 +730,6 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -717,5 +717,7 @@ BEGIN
IDS_PRINTERS "Printers"
IDS_FONTS "Fonts"
IDS_INSTALLNEWFONT "Install New Font..."
IDS_DEFAULT_CLUSTER_SIZE "Default allocation size"
END

View file

@ -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)

View file

@ -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;

View file

@ -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