41#define IDS_LIST_COLUMN_FIRST IDS_PARTITION_NAME
42#define IDS_LIST_COLUMN_LAST IDS_PARTITION_STATUS
44#define MAX_LIST_COLUMNS (IDS_LIST_COLUMN_LAST - IDS_LIST_COLUMN_FIRST + 1)
72 pSetupData->USetupData.InstallationDirectory);
131 IN const INT* pColsWidth,
132 IN const INT* pColsAlign,
141 tlC.pszText = szText;
144 for (
i = 0;
i < nNumOfColumns;
i++)
147 tlC.cx = pColsWidth[
i];
148 tlC.fmt = pColsAlign[
i];
178 DWORD buffersize = 0;
213 IN INT iSelectedImage,
222 Insert.hParent = hParent;
223 Insert.item.pszText = lpText;
224 Insert.item.iImage = iImage;
225 Insert.item.iSelectedImage = iSelectedImage;
226 Insert.item.lParam =
lParam;
250 "Extended Partition" );
274 if (IsEqualPartitionType(PartEntry->PartitionType,
289 if ((
cchBuffer > 0) && (*strBuffer ==
'\0'))
294 PartEntry->PartitionType);
309 CHAR PartTypeString[32];
311 WCHAR LineBuffer[128];
314 if (PartEntry->IsPartitioned ==
FALSE)
318 L"Unpartitioned space");
325 *PartEntry->VolumeLabel ? PartEntry->VolumeLabel :
L"Partition",
326 (PartEntry->DriveLetter == 0) ?
L'-' : PartEntry->DriveLetter,
327 (PartEntry->DriveLetter == 0) ?
L'-' :
L':');
336 if (PartEntry->IsPartitioned)
338 PartTypeString[0] =
'\0';
339 if (PartEntry->New ==
TRUE)
343 else if (PartEntry->IsPartitioned ==
TRUE)
358 PartSize.
QuadPart = PartEntry->SectorCount.QuadPart * DiskEntry->BytesPerSector;
395 if (PartEntry->IsPartitioned)
399 PartEntry->BootIndicator ?
L"Active" :
L"");
417 PPARTENTRY PrimaryPartEntry, LogicalPartEntry;
421 WCHAR LineBuffer[128];
426 L"\\\\.\\PhysicalDrive%lu",
427 DiskEntry->DiskNumber);
456 if (devDesc->ProductIdOffset)
458 DiskName = (
PCHAR)&outBuf[devDesc->ProductIdOffset];
459 Length -= devDesc->ProductIdOffset;
468 if (DiskName && *DiskName)
470 if (DiskEntry->DriverName.Length > 0)
474 L"Harddisk %lu (%S) (Port=%hu, Bus=%hu, Id=%hu) on %wZ",
475 DiskEntry->DiskNumber,
480 &DiskEntry->DriverName);
486 L"Harddisk %lu (%S) (Port=%hu, Bus=%hu, Id=%hu)",
487 DiskEntry->DiskNumber,
496 if (DiskEntry->DriverName.Length > 0)
500 L"Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu) on %wZ",
501 DiskEntry->DiskNumber,
505 &DiskEntry->DriverName);
511 L"Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu)",
512 DiskEntry->DiskNumber,
530 DiskSize.
QuadPart = DiskEntry->SectorCount.QuadPart * DiskEntry->BytesPerSector;
560 for (PrimaryEntry = DiskEntry->PrimaryPartListHead.
Flink;
561 PrimaryEntry != &DiskEntry->PrimaryPartListHead;
562 PrimaryEntry = PrimaryEntry->
Flink)
567 DiskEntry, PrimaryPartEntry);
571 for (LogicalEntry = DiskEntry->LogicalPartListHead.
Flink;
572 LogicalEntry != &DiskEntry->LogicalPartListHead;
573 LogicalEntry = LogicalEntry->
Flink)
578 DiskEntry, LogicalPartEntry);
724 if (!hParentItem || !PartEntry)
823 DPRINT1(
"InitDestinationPaths() failed with status 0x%08lx\n",
Status);
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]
struct _SETUPDATA * PSETUPDATA
#define PARTITION_ENTRY_UNUSED
#define ERROR_INSUFFICIENT_BUFFER
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)
#define NT_SUCCESS(StatCode)
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
BOOL WINAPI SetupDiEnumDeviceInfo(HDEVINFO devinfo, DWORD index, PSP_DEVINFO_DATA info)
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
static const INT column_widths[MAX_LIST_COLUMNS]
HTLITEM TreeListAddItem(IN HWND hTreeList, IN HTLITEM hParent, IN LPWSTR lpText, IN INT iImage, IN INT iSelectedImage, IN LPARAM lParam)
INT_PTR CALLBACK DriveDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static const INT column_alignment[MAX_LIST_COLUMNS]
VOID GetPartitionTypeString(IN PPARTENTRY PartEntry, OUT PSTR strBuffer, IN ULONG cchBuffer)
VOID DrawPartitionList(IN HWND hWndList, IN PPARTLIST List)
static VOID PrintDiskData(IN HWND hWndList, IN PPARTLIST List, IN PDISKENTRY DiskEntry)
VOID DisplayStuffUsingWin32Setup(HWND hwndDlg)
#define IDS_LIST_COLUMN_FIRST
static INT_PTR CALLBACK MoreOptDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static HTLITEM PrintPartitionData(IN HWND hWndList, IN PPARTLIST List, IN HTLITEM htiParent, IN PDISKENTRY DiskEntry, IN PPARTENTRY PartEntry)
BOOL CreateTreeListColumns(IN HINSTANCE hInstance, IN HWND hWndTreeList, IN const UINT *pIDs, IN const INT *pColsWidth, IN const INT *pColsAlign, IN UINT nNumOfColumns)
static const UINT column_ids[MAX_LIST_COLUMNS]
static INT_PTR CALLBACK PartitionDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
GLfloat GLfloat GLfloat GLfloat h
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
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
struct _PARTENTRY * PPARTENTRY
#define PSN_QUERYINITIALFOCUS
#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 ImageList_AddIcon(himl, hicon)
#define TVIF_SELECTEDIMAGE
ULONGLONG RoundingDivide(IN ULONGLONG Dividend, IN ULONGLONG Divisor)
#define SetupDiGetDeviceRegistryProperty
#define SetupDiGetClassDevs
struct _SP_DEVINFO_DATA SP_DEVINFO_DATA
NTSTATUS InitDestinationPaths(IN OUT PUSETUP_DATA pSetupData, IN PCWSTR InstallationDir, IN PPARTENTRY PartEntry)
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
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
struct _LIST_ENTRY * Flink
struct _DISKENTRY * DiskEntry
TCHAR szAbortMessage[512]
struct _ULARGE_INTEGER::@4111 u
WCHAR InstallationDirectory[MAX_PATH]
#define TreeList_SetExtendedStyleEx(h, d, m)
#define TreeList_Expand(h, i, c)
#define TreeList_InsertColumn(h, i, p)
#define TreeList_SetItemText(hwndLV, hItem_, iSubItem_, pszText_)
#define TreeList_GetImageList(h, i)
#define TreeList_GetParent(h, i)
#define TVS_EX_FULLROWMARK
#define TreeList_InsertItem(h, p)
#define TreeList_SelectItem(h, i)
#define TreeList_SetImageList(h, l, i)
#define CONTAINING_RECORD(address, type, field)
struct _LARGE_INTEGER::@2274 u
_Must_inspect_result_ _In_ WDFCMRESLIST List
UINT WINAPI GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount)
DWORD WINAPI GetLastError(void)
#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)
#define DialogBoxW(i, t, p, f)
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
struct tagNMHDR * LPNMHDR
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
HWND WINAPI GetParent(_In_ HWND)
#define MAKEINTRESOURCEW(i)
#define SetWindowLongPtrW
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)