43#define IDS_LIST_COLUMN_FIRST IDS_PARTITION_NAME
44#define IDS_LIST_COLUMN_LAST IDS_PARTITION_STATUS
46#define MAX_LIST_COLUMNS (IDS_LIST_COLUMN_LAST - IDS_LIST_COLUMN_FIRST + 1)
65 for (pch1 = pch2 = pszSanitized; *pch1; ++pch1)
92 LPWSTR pszText, pszSanitized;
110 pszSanitized =
_wcsdup(pszText);
148#if (_WIN32_WINNT < _WIN32_WINNT_VISTA)
151 balloon.
ttiIcon = TTI_ERROR_LARGE;
179 if (
wParam == UNICODE_NOCHAR)
250 INT iItem, iCurrent =
CB_ERR, iDefault = 0;
268 bIsBIOS = ((pSetupData->USetupData.ArchType ==
ARCH_PcAT) ||
287 if (uBldrLoc == pSetupData->USetupData.BootLoaderLocation)
350 uBldrLoc =
min(
max(uBldrLoc, 0), 3);
423 if (!PartCreateCtx->ForceFormat)
437 ASSERT(PartCreateCtx->PartItem->Volume == PartCreateCtx->PartItem->PartEntry->Volume);
438 Volume = PartCreateCtx->PartItem->PartEntry->Volume;
439 VolCreate = PartCreateCtx->PartItem->VolCreate;
503 PPARTITEM PartItem = PartCreateCtx->PartItem;
542 DPRINT1(
"Failed to allocate volume-create structure\n");
594 PartCreateCtx->ForceFormat =
TRUE;
651 PartEntry = PartCreateCtx->PartItem->PartEntry;
655 MaxSizeMB = PartCreateCtx->MaxSizeMB;
740 IN const INT* pColsWidth,
741 IN const INT* pColsAlign,
750 tlC.pszText = szText;
753 for (
i = 0;
i < nNumOfColumns;
i++)
756 tlC.cx = pColsWidth[
i];
757 tlC.fmt = pColsAlign[
i];
784 Insert.hParent = hParent;
785 Insert.hInsertAfter = (hInsertAfter ? hInsertAfter :
TVI_LAST);
786 Insert.item.pszText = (
LPWSTR)lpText;
787 Insert.item.iImage = iImage;
788 Insert.item.iSelectedImage = iSelectedImage;
789 Insert.item.lParam =
lParam;
806 tlItem.hItem =
hItem;
810 return tlItem.lParam;
825 if (!hParentItem || !PartItem)
845 if (PartItem && phItem)
895 "Extended Partition" );
919 if (IsEqualPartitionType(PartEntry->PartitionType,
934 if ((
cchBuffer > 0) && (*strBuffer ==
'\0'))
939 PartEntry->PartitionType);
951 if (DiskSize >= 10 *
GB)
975 if (PartSize >= 10 *
GB)
982 if (PartSize >= 10 *
MB)
1005 PVOLINFO VolInfo = (PartEntry->Volume ? &PartEntry->Volume->Info :
NULL);
1009 CHAR PartTypeString[32];
1011 WCHAR LineBuffer[128];
1014 if (PartEntry->IsPartitioned ==
FALSE)
1019 L"Unpartitioned space");
1031 L"Extended Partition");
1048 DPRINT1(
"Failed to allocate partition-info structure\n");
1054 PartItem->
Volume = PartEntry->Volume;
1061 if (PartEntry->IsPartitioned)
1063 PartTypeString[0] =
'\0';
1135 if (PartEntry->IsPartitioned)
1139 PartEntry->BootIndicator ?
L"Active" :
L"");
1153 LogicalEntry = LogicalEntry->
Flink)
1184 if (!hParentItem || !PartItem)
1207 WCHAR LineBuffer[128];
1212 L"\\\\.\\PhysicalDrive%lu",
1213 DiskEntry->DiskNumber);
1242 if (devDesc->ProductIdOffset)
1244 DiskName = (
PCHAR)&outBuf[devDesc->ProductIdOffset];
1245 Length -= devDesc->ProductIdOffset;
1254 if (DiskName && *DiskName)
1256 if (DiskEntry->DriverName.Length > 0)
1260 L"Harddisk %lu (%S) (Port=%hu, Bus=%hu, Id=%hu) on %wZ",
1261 DiskEntry->DiskNumber,
1266 &DiskEntry->DriverName);
1272 L"Harddisk %lu (%S) (Port=%hu, Bus=%hu, Id=%hu)",
1273 DiskEntry->DiskNumber,
1282 if (DiskEntry->DriverName.Length > 0)
1286 L"Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu) on %wZ",
1287 DiskEntry->DiskNumber,
1291 &DiskEntry->DriverName);
1297 L"Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu)",
1298 DiskEntry->DiskNumber,
1329 for (PrimaryEntry = DiskEntry->PrimaryPartListHead.
Flink;
1330 PrimaryEntry != &DiskEntry->PrimaryPartListHead;
1331 PrimaryEntry = PrimaryEntry->
Flink)
1509 *pPartItem = PartItem;
1539 BOOLEAN PrevIsPartitioned, NextIsPartitioned;
1584 if (PrevPart && !PrevIsPartitioned)
1597 if (NextPart && !NextIsPartitioned)
1764 if (PartSize == MaxSizeMB)
1765 PartSize = MaxPartSize;
1769 ASSERT(PartSize <= MaxPartSize);
1847 if (PartEntry == PartEntry->
DiskEntry->ExtendedPartition)
1903 DiskEntry->
DiskStyle == PARTITION_STYLE_RAW);
1918 goto DisableWizNext;
1933 if (!PartEntry->IsPartitioned)
1977 if ((PartEntry->IsPartitioned && PartEntry->Volume) ||
1986 goto DisableWizNext;
2075 L"The disk you have selected for installing ReactOS\n"
2076 L"is not visible by the firmware of your computer,\n"
2077 L"and so may not be bootable.\n"
2078 L"\nClick on OK to continue anyway."
2079 L"\nClick on CANCEL to go back to the partitions list.");
2098 L"Could not create a partition on the selected disk region");
static HWND hWndList[5+1]
ACPI_SIZE strlen(const char *String)
BOOL Query(LPCTSTR *ServiceArgs, DWORD ArgCount, BOOL bExtended)
const GPT_PARTITION_TYPE GptPartitionTypes[NUM_GPT_PARTITION_TYPES]
const MBR_PARTITION_TYPE MbrPartitionTypes[NUM_MBR_PARTITION_TYPES]
PPARTENTRY InstallPartition
INT __cdecl DisplayMessage(_In_opt_ HWND hWnd, _In_ UINT uType, _In_opt_ PCWSTR pszTitle, _In_opt_ PCWSTR pszFormatMessage,...)
#define ShowDlgItem(hDlg, nID, nCmdShow)
struct _SETUPDATA * PSETUPDATA
#define IDC_CHECK_MBREXTPART
#define IDS_BOOTLOADER_MBRVBR
#define IDS_BOOTLOADER_SYSTEM
#define IDS_WARN_DELETE_PARTITION
#define IDS_ERROR_INVALID_INSTALLDIR_CHAR
#define IDS_ERROR_CREATE_PARTITION_TITLE
#define IDC_CHECK_QUICKFMT
#define IDS_WARN_DELETE_PARTITION_TITLE
#define IDS_ERROR_CREATE_PARTITION
#define IDS_BOOTLOADER_VBRONLY
#define IDS_ERROR_DIRECTORY_NAME_TITLE
#define IDC_UPDOWN_PARTSIZE
#define IDS_WARN_DELETE_MBR_EXTENDED_PARTITION
#define IDS_ERROR_DIRECTORY_NAME
#define IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE
#define IDS_BOOTLOADER_NOINST
#define IDS_VOLUME_NOFORMAT
#define PARTITION_ENTRY_UNUSED
#define PARTITION_EXTENDED
BOOL WINAPI DeviceIoControl(IN HANDLE hDevice, IN DWORD dwIoControlCode, IN LPVOID lpInBuffer OPTIONAL, IN DWORD nInBufferSize OPTIONAL, OUT LPVOID lpOutBuffer OPTIONAL, IN DWORD nOutBufferSize OPTIONAL, OUT LPDWORD lpBytesReturned OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
static const WCHAR Description[]
#define INVALID_HANDLE_VALUE
#define MultiByteToWideChar
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
static VOID ShowErrorTip(_In_ HWND hEdit)
static VOID InitPartitionList(_In_ HINSTANCE hInstance, _In_ HWND hWndList)
static const INT column_widths[MAX_LIST_COLUMNS]
static BOOL DoSanitizeClipboard(_In_ HWND hWnd)
Sanitize in-place any text found in the clipboard.
struct _PARTITEM * PPARTITEM
static BOOLEAN DoDeletePartition(_In_ HWND hList, _In_ PPARTLIST List, _Inout_ HTLITEM *phItem, _In_ PPARTITEM PartItem)
Delete the selected partition in the partition list, and update the partition list UI.
LPARAM TreeListGetItemData(_In_ HWND hTreeList, _In_ HTLITEM hItem)
static const INT column_alignment[MAX_LIST_COLUMNS]
PVOL_CREATE_INFO FindVolCreateInTreeByVolume(_In_ HWND hTreeList, _In_ PVOLENTRY Volume)
INT_PTR CALLBACK DriveDlgProc(_In_ HWND hwndDlg, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
static INT_PTR CALLBACK PartitionDlgProc(_In_ HWND hDlg, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
static VOID PrettifySize1(_Inout_ PULONGLONG Size, _Out_ PCWSTR *Unit)
VOID GetPartitionTypeString(IN PPARTENTRY PartEntry, OUT PSTR strBuffer, IN ULONG cchBuffer)
static PPARTITEM GetItemPartition(_In_ HWND hTreeList, _In_ HTLITEM hItem)
static BOOLEAN DoCreatePartition(_In_ HWND hList, _In_ PPARTLIST List, _Inout_ HTLITEM *phItem, _Inout_opt_ PPARTITEM *pPartItem, _In_opt_ ULONGLONG SizeBytes, _In_opt_ ULONG_PTR PartitionInfo)
Create a partition in the selected disk region in the partition list, and update the partition list U...
#define IDS_LIST_COLUMN_FIRST
static BOOL DoSanitizeText(_Inout_ PWSTR pszSanitized)
Sanitize a given string in-place, by removing any invalid character found in it.
static PPARTITEM GetSelectedPartition(_In_ HWND hTreeList, _Out_opt_ HTLITEM *phItem)
static INT_PTR CALLBACK FormatDlgProcWorker(_In_ PPARTCREATE_CTX PartCreateCtx, _In_ HWND hDlg, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
static HTLITEM PrintPartitionData(_In_ HWND hWndList, _In_ HTLITEM htiParent, _In_opt_ HTLITEM hInsertAfter, _In_ PPARTENTRY PartEntry)
static INT_PTR CALLBACK FormatDlgProc(_In_ HWND hDlg, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
HTLITEM TreeListAddItem(_In_ HWND hTreeList, _In_opt_ HTLITEM hParent, _In_opt_ HTLITEM hInsertAfter, _In_ LPCWSTR lpText, _In_ INT iImage, _In_ INT iSelectedImage, _In_ LPARAM lParam)
struct _PARTITEM PARTITEM
Data structure stored for each partition item in the TreeList. (None for disks items....
static VOID DrawPartitionList(_In_ HWND hWndList, _In_ PPARTLIST List)
static INT_PTR CALLBACK MoreOptDlgProc(_In_ HWND hDlg, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
BOOL CreateTreeListColumns(IN HINSTANCE hInstance, IN HWND hWndTreeList, IN const UINT *pIDs, IN const INT *pColsWidth, IN const INT *pColsAlign, IN UINT nNumOfColumns)
static VOID CleanupPartitionList(_In_ HWND hWndList)
struct _PARTCREATE_CTX * PPARTCREATE_CTX
struct _PARTCREATE_CTX PARTCREATE_CTX
Dialog context structure used by PartitionDlgProc() and FormatDlgProc(Worker)().
static VOID PrintDiskData(_In_ HWND hWndList, _In_opt_ HTLITEM hInsertAfter, _In_ PDISKENTRY DiskEntry)
static VOID DeleteTreeItem(_In_ HWND hWndList, _In_ TLITEMW *ptlItem)
Called on response to the TVN_DELETEITEM notification sent by the TreeList.
static const UINT column_ids[MAX_LIST_COLUMNS]
static LRESULT CALLBACK InstallDirEditProc(_In_ HWND hWnd, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
Subclass edit window procedure to filter allowed characters for the ReactOS installation directory.
static VOID PrettifySize2(_Inout_ PULONGLONG Size, _Out_ PCWSTR *Unit)
@ ERROR_INSUFFICIENT_PARTITION_SIZE
#define EnableDlgItem(hDlg, nID, bEnable)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define GetDiskSizeInBytes(DiskEntry)
#define GetPartEntrySizeInBytes(PartEntry)
struct _DISKENTRY * PDISKENTRY
VOID DisplayError(DWORD dwError)
TCHAR szTitle[MAX_LOADSTRING]
#define PSN_QUERYINITIALFOCUS
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
#define DBG_UNREFERENCED_PARAMETER(P)
#define IsContainerPartition(PartitionType)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IOCTL_STORAGE_QUERY_PROPERTY
* PSTORAGE_DEVICE_DESCRIPTOR
#define PropSheet_SetWizButtons(d, f)
#define PropSheet_SetCurSelByID(d, i)
#define Edit_ShowBalloonTip(hwnd, peditballoontip)
#define TVS_SHOWSELALWAYS
#define TVS_FULLROWSELECT
#define ImageList_AddIcon(himl, hicon)
#define TVIF_SELECTEDIMAGE
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_Check_return_ _CRTIMP wchar_t *__cdecl _wcsdup(_In_z_ const wchar_t *_Str)
BOOLEAN GetRegisteredFileSystems(IN ULONG Index, OUT PCWSTR *FileSystemName)
ERROR_NUMBER PartitionCreationChecks(_In_ PPARTENTRY PartEntry)
PPARTENTRY GetAdjUnpartitionedEntry(_In_ PPARTENTRY PartEntry, _In_ BOOLEAN Direction)
Retrieves, if any, the unpartitioned disk region that is adjacent (next or previous) to the specified...
ULONGLONG RoundingDivide(IN ULONGLONG Dividend, IN ULONGLONG Divisor)
BOOLEAN CreatePartition(_In_ PPARTLIST List, _Inout_ PPARTENTRY PartEntry, _In_opt_ ULONGLONG SizeBytes, _In_opt_ ULONG_PTR PartitionInfo)
BOOLEAN DeletePartition(_In_ PPARTLIST List, _In_ PPARTENTRY PartEntry, _Out_opt_ PPARTENTRY *FreeRegion)
BOOLEAN IsValidInstallDirectory(_In_ PCWSTR InstallDir)
Verify whether the given directory is suitable for ReactOS installation. Each path component must be ...
#define IS_VALID_INSTALL_PATH_CHAR(c)
Defines the class of characters valid for the installation directory.
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchCopyA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc)
STRSAFEAPI StringCchPrintfA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszFormat,...)
base of all file and directory entries
PPARTENTRY ExtendedPartition
LIST_ENTRY LogicalPartListHead
PARTITION_STYLE DiskStyle
struct _LIST_ENTRY * Flink
Dialog context structure used by PartitionDlgProc() and FormatDlgProc(Worker)().
struct _DISKENTRY * DiskEntry
Data structure stored for each partition item in the TreeList. (None for disks items....
PVOL_CREATE_INFO VolCreate
WCHAR InstallationDirectory[MAX_PATH]
ULONG RequiredPartitionDiskSpace
WCHAR FileSystem[MAX_PATH+1]
Data structure stored when a partition/volume needs to be formatted.
WCHAR FileSystemName[MAX_PATH+1]
FMIFS_MEDIA_FLAG MediaFlag
#define TreeList_GetNextItem(h, i, c)
#define TreeList_DeleteAllItems(h)
#define TreeList_Expand(h, i, c)
#define TreeList_GetNextSibling(h, i)
#define TreeList_SetColor(h, i, c)
#define TreeList_InsertColumn(h, i, p)
#define TreeList_GetPrevSibling(h, i)
#define TreeList_GetSelection(h)
#define TreeList_SetExtendedStyle(h, d)
#define TreeList_SetItemText(hwndLV, hItem_, iSubItem_, pszText_)
#define TreeList_GetImageList(h, i)
#define TreeList_SetStyle(h, d)
#define TreeList_GetParent(h, i)
#define TVS_EX_FULLROWMARK
#define TreeList_DeleteItem(h, i)
#define TreeList_InsertItem(h, p)
#define TreeList_GetStyle(h)
#define TreeList_SelectItem(h, i)
#define TreeList_GetItem(h, p)
#define TreeList_SetImageList(h, l, i)
#define CONTAINING_RECORD(address, type, field)
VOID __cdecl MUIDisplayError(IN ULONG ErrorNum, OUT PINPUT_RECORD Ir, IN ULONG WaitEvent,...)
PCSTR MUIGetString(ULONG Number)
#define STRING_FORMATUNKNOWN
static USETUP_DATA USetupData
static BOOLEAN IsPartitionLargeEnough(_In_ PPARTENTRY PartEntry)
#define POPUP_WAIT_ANY_KEY
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFCMRESLIST List
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
DWORD WINAPI GetSysColor(_In_ int)
#define GetWindowLongPtrW
BOOL WINAPI CheckDlgButton(_In_ HWND, _In_ int, _In_ UINT)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
HANDLE WINAPI SetClipboardData(_In_ UINT, _In_opt_ HANDLE)
BOOL WINAPI CloseClipboard(void)
BOOL WINAPI OpenClipboard(_In_opt_ HWND)
#define CB_FINDSTRINGEXACT
BOOL WINAPI MessageBeep(_In_ UINT uType)
HANDLE WINAPI GetClipboardData(_In_ UINT)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
UINT WINAPI IsDlgButtonChecked(_In_ HWND, _In_ int)
BOOL WINAPI IsWindowUnicode(_In_ HWND)
struct tagNMHDR * LPNMHDR
int WINAPI GetWindowTextLengthW(_In_ HWND)
HWND WINAPI GetParent(_In_ HWND)
#define MAKEINTRESOURCEW(i)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
#define SetWindowLongPtrW
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
int WINAPI GetSystemMetrics(_In_ int)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
_In_ ULONG _In_ struct _SET_PARTITION_INFORMATION_EX * PartitionInfo