46 if (TotalNumberOfBytes->
QuadPart <= (16 * 1024 * 1024))
48 else if (TotalNumberOfBytes->
QuadPart <= (32 * 1024 * 1024))
50 else if (TotalNumberOfBytes->
QuadPart <= (64 * 1024 * 1024))
52 else if (TotalNumberOfBytes->
QuadPart <= (128 * 1024 * 1024))
54 else if (TotalNumberOfBytes->
QuadPart <= (256 * 1024 * 1024))
56 else if (TotalNumberOfBytes->
QuadPart <= (512 * 1024 * 1024))
58 else if (TotalNumberOfBytes->
QuadPart <= (1024 * 1024 * 1024))
60 else if (TotalNumberOfBytes->
QuadPart <= (2048
LL * 1024
LL * 1024
LL))
62 else if (TotalNumberOfBytes->
QuadPart <= (4096
LL * 1024
LL * 1024
LL))
69 if (TotalNumberOfBytes->
QuadPart <= (64 * 1024 * 1024))
71 else if (TotalNumberOfBytes->
QuadPart <= (128 * 1024 * 1024))
73 else if (TotalNumberOfBytes->
QuadPart <= (256 * 1024 * 1024))
75 else if (TotalNumberOfBytes->
QuadPart <= (8192
LL * 1024
LL * 1024
LL))
77 else if (TotalNumberOfBytes->
QuadPart <= (16384
LL * 1024
LL * 1024
LL))
79 else if (TotalNumberOfBytes->
QuadPart <= (32768
LL * 1024
LL * 1024
LL))
86 if (TotalNumberOfBytes->
QuadPart <= (512 * 1024 * 1024))
88 else if (TotalNumberOfBytes->
QuadPart <= (1024 * 1024 * 1024))
90 else if (TotalNumberOfBytes->
QuadPart <= (2048
LL * 1024
LL * 1024
LL))
125 CComObject<CDrvDefExt> *pDrvDefExt =
NULL;
147 CComPtr<IDataObject> pDataObj;
152 hr = CComObject<CDrvDefExt>::CreateInstance(&pDrvDefExt);
155 pDrvDefExt->AddRef();
156 hr = pDrvDefExt->Initialize(pidlFolder, pDataObj,
NULL);
161 ERR(
"AddPages failed\n");
163 ERR(
"Initialize failed\n");
177 pDrvDefExt->Release();
189 WCHAR wszBuf[100] = {0};
190 WCHAR szDrive[] =
L"C:\\";
205 szDrive[0] = pContext->
Drive +
L'A';
215 TRACE(
"FAT16 is not supported on drive larger than 4G current %lu\n", TotalNumberOfBytes.
QuadPart);
233 else if (!
wcsicmp(wszBuf,
L"FAT32"))
237 TRACE(
"FAT32 is not supported on drive larger than 32G current %lu\n", TotalNumberOfBytes.
QuadPart);
259 TRACE(
"NTFS is not supported on drive larger than 2TB current %lu\n", TotalNumberOfBytes.
QuadPart);
274 for (lIndex = 0; lIndex < 4; lIndex++)
292 TRACE(
"EXT2 is not supported on drive larger than 32T current %lu\n", TotalNumberOfBytes.
QuadPart);
309 else if (!
wcsicmp(wszBuf,
L"BtrFS"))
313 TRACE(
"BtrFS is not supported on drive larger than 16E current %lu\n", TotalNumberOfBytes.
QuadPart);
332 FIXME(
"Unknown filesystem: %ls\n", wszBuf);
342 WCHAR szDrive[] =
L"C:\\";
346 DWORD dwIndex, dwDefault;
347 UCHAR uMinor, uMajor;
349 HWND hwndFileSystems;
355 szDrive[0] = pContext->
Drive +
L'A';
408 ERR(
"no filesystem providers\n");
432 Progress = (
PDWORD)ActionInfo;
447 FIXME(
"Unsupported command in FormatExCB\n");
460 WCHAR szDrive[4] = {
L'C',
':',
'\\', 0 };
461 WCHAR szFileSys[40] = {0};
462 WCHAR szLabel[40] = {0};
472 szDrive[0] = pContext->
Drive +
L'A';
479 ERR(
"Unable to get file system selection\n");
485 ERR(
"Unable to get file system selection\n");
491 szFileSys[
_countof(szFileSys)-1] =
L'\0';
498 ERR(
"Unable to get volume label\n");
502 szLabel[(
sizeof(szLabel)/
sizeof(
WCHAR))-1] =
L'\0';
void WINAPI SHDestroyPropSheetExtArray(HPSXA hpsxa)
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
struct _DRIVE_PROP_PAGE DRIVE_PROP_PAGE
BOOL CALLBACK AddPropSheetPageCallback(HPROPSHEETPAGE hPage, LPARAM lParam)
void WINAPI ILFree(LPITEMIDLIST pidl)
_In_ ULONG _In_ ULONG _In_ ULONG Length
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
HRESULT WINAPI SHCreateDataObject(PCIDLIST_ABSOLUTE pidlFolder, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, IDataObject *pdtInner, REFIID riid, void **ppv)
UINT WINAPI SHAddFromPropSheetExtArray(HPSXA hpsxa, LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam)
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
BOOL(CALLBACK * LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE, LPARAM)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
struct _PROPSHEETHEADERW PROPSHEETHEADERW
_CRTIMP uintptr_t __cdecl _beginthreadex(_In_opt_ void *_Security, _In_ unsigned _StackSize, _In_ unsigned(__stdcall *_StartAddress)(void *), _In_opt_ void *_ArgList, _In_ unsigned _InitFlag, _Out_opt_ unsigned *_ThrdAddr)
#define IID_PPV_ARG(Itype, ppType)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
static VOID InsertDefaultClusterSizeForFs(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext)
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
static HWND FormatDrvDialog
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
const PCUITEMID_CHILD * PCUITEMID_CHILD_ARRAY
static const WCHAR szText[]
struct _PSP * HPROPSHEETPAGE
HMENU WINAPI GetSystemMenu(_In_ HWND, _In_ BOOL)
VOID FormatDrive(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext)
INT_PTR WINAPI PropertySheetW(LPCPROPSHEETHEADERW lppsh)
BOOL ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR path, DWORD type)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDS_FORMAT_WARNING
static BOOLEAN NTAPI FormatExCB(IN CALLBACKCOMMAND Command, IN ULONG SubAction, IN PVOID ActionInfo)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
TCHAR szTitle[MAX_LOADSTRING]
static VOID InitializeFormatDriveDlg(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext)
#define MB_ICONINFORMATION
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
#define IDS_FORMAT_COMPLETE
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
#define DRIVE_NO_ROOT_DIR
INT_PTR(CALLBACK * DLGPROC)(HWND, UINT, WPARAM, LPARAM)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
DWORD WINAPI SHFormatDrive(HWND hwnd, UINT drive, UINT fmtID, UINT options)
BOOL WINAPI GetVolumeInformationW(IN LPCWSTR lpRootPathName, IN LPWSTR lpVolumeNameBuffer, IN DWORD nVolumeNameSize, OUT LPDWORD lpVolumeSerialNumber OPTIONAL, OUT LPDWORD lpMaximumComponentLength OPTIONAL, OUT LPDWORD lpFileSystemFlags OPTIONAL, OUT LPWSTR lpFileSystemNameBuffer OPTIONAL, IN DWORD nFileSystemNameSize)
#define shell32_hInstance
HRESULT SH_ShowDriveProperties(WCHAR *pwszDrive, LPCITEMIDLIST pidlFolder, PCUITEMID_CHILD_ARRAY apidl)
static INT_PTR CALLBACK FormatDriveDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
void shell(int argc, const char *argv[])
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
#define IDS_DEFAULT_CLUSTER_SIZE
struct tagContext Context
struct FORMAT_DRIVE_CONTEXT * PFORMAT_DRIVE_CONTEXT
static unsigned __stdcall DoFormatDrive(void *args)
EXTERN_C HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, IDataObject *pDataObj)
#define HKEY_CLASSES_ROOT
#define MAKEINTRESOURCEW(i)
HPROPSHEETPAGE SH_CreatePropertySheetPage(LPCSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR szTitle)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
#define MAX_PROPERTY_SHEET_PAGE
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
static BOOL GetDefaultClusterSize(LPWSTR szFs, PDWORD pClusterSize, PULARGE_INTEGER TotalNumberOfBytes)
BOOL WINAPI GetDiskFreeSpaceExW(IN LPCWSTR lpDirectoryName OPTIONAL, OUT PULARGE_INTEGER lpFreeBytesAvailableToCaller, OUT PULARGE_INTEGER lpTotalNumberOfBytes, OUT PULARGE_INTEGER lpTotalNumberOfFreeBytes)
WINE_DEFAULT_DEBUG_CHANNEL(shell)
BOOLEAN NTAPI QueryAvailableFileSystemFormat(IN DWORD Index, IN OUT PWCHAR FileSystem, OUT UCHAR *Major, OUT UCHAR *Minor, OUT BOOLEAN *LatestVersion)