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" );
269 #if 0 // TODO: GPT support! 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 INT_PTR CALLBACK PartitionDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
BOOL WINAPI SetupDiEnumDeviceInfo(HDEVINFO devinfo, DWORD index, PSP_DEVINFO_DATA info)
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
BOOL WINAPI CheckDlgButton(_In_ HWND, _In_ int, _In_ UINT)
#define TreeList_SelectItem(h, i)
UINT WINAPI GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount)
_In_ ULONG _In_ ULONG _In_ ULONG Length
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
static HTLITEM PrintPartitionData(IN HWND hWndList, IN PPARTLIST List, IN HTLITEM htiParent, IN PDISKENTRY DiskEntry, IN PPARTENTRY PartEntry)
ACPI_SIZE strlen(const char *String)
static const INT column_alignment[MAX_LIST_COLUMNS]
BOOL CreateTreeListColumns(IN HINSTANCE hInstance, IN HWND hWndTreeList, IN const UINT *pIDs, IN const INT *pColsWidth, IN const INT *pColsAlign, IN UINT nNumOfColumns)
TCHAR szAbortMessage[512]
#define TreeList_Expand(h, i, c)
#define INVALID_HANDLE_VALUE
DWORD WINAPI GetLastError(VOID)
#define SetupDiGetDeviceRegistryProperty
#define IsContainerPartition(PartitionType)
#define TreeList_GetParent(h, i)
static VOID PrintDiskData(IN HWND hWndList, IN PPARTLIST List, IN PDISKENTRY DiskEntry)
static const WCHAR Description[]
#define GetWindowLongPtrW
#define TVIF_SELECTEDIMAGE
static HWND hWndList[5+1]
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
VOID GetPartitionTypeString(IN PPARTENTRY PartEntry, OUT PSTR strBuffer, IN ULONG cchBuffer)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
struct tagNMHDR * LPNMHDR
GLfloat GLfloat GLfloat GLfloat h
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
#define TreeList_InsertColumn(h, i, p)
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
#define PARTITION_ENTRY_UNUSED
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
* PSTORAGE_DEVICE_DESCRIPTOR
#define TreeList_GetImageList(h, i)
#define IDS_LIST_COLUMN_FIRST
const GPT_PARTITION_TYPE GptPartitionTypes[NUM_GPT_PARTITION_TYPES]
STRSAFEAPI StringCchPrintfA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszFormat,...)
VOID DrawPartitionList(IN HWND hWndList, IN PPARTLIST List)
#define TreeList_InsertItem(h, p)
#define PropSheet_SetWizButtons(d, f)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
#define DialogBoxW(i, t, p, f)
struct _SP_DEVINFO_DATA SP_DEVINFO_DATA
struct _LIST_ENTRY * Flink
#define IOCTL_STORAGE_QUERY_PROPERTY
struct _DISKENTRY * DiskEntry
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define NT_SUCCESS(StatCode)
const MBR_PARTITION_TYPE MbrPartitionTypes[NUM_MBR_PARTITION_TYPES]
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
int WINAPI GetSystemMetrics(_In_ int)
BOOL Query(LPCTSTR *ServiceArgs, DWORD ArgCount, BOOL bExtended)
INT WINAPI ImageList_AddIcon(HIMAGELIST himl, HICON hIcon)
#define TreeList_SetImageList(h, l, i)
#define TreeList_SetItemText(hwndLV, hItem_, iSubItem_, pszText_)
#define TreeList_SetExtendedStyleEx(h, d, m)
#define PropSheet_SetCurSelByID(d, i)
INT_PTR CALLBACK DriveDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
_Must_inspect_result_ _In_ WDFCMRESLIST List
HTLITEM TreeListAddItem(IN HWND hTreeList, IN HTLITEM hParent, IN LPWSTR lpText, IN INT iImage, IN INT iSelectedImage, IN LPARAM lParam)
#define SetupDiGetClassDevs
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
HWND WINAPI GetParent(_In_ HWND)
STRSAFEAPI StringCchCopyA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc)
ULONGLONG RoundingDivide(IN ULONGLONG Dividend, IN ULONGLONG Divisor)
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)
struct _PARTENTRY * PPARTENTRY
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 LocalFree(HLOCAL hMem)
static INT_PTR CALLBACK MoreOptDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
static const INT column_widths[MAX_LIST_COLUMNS]
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
#define SetWindowLongPtrW
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
#define MAKEINTRESOURCEW(i)
static const UINT column_ids[MAX_LIST_COLUMNS]
NTSTATUS InitDestinationPaths(IN OUT PUSETUP_DATA pSetupData, IN PCWSTR InstallationDir, IN PPARTENTRY PartEntry)
struct _ULARGE_INTEGER::@3917 u
#define TVS_EX_FULLROWMARK
#define PSN_QUERYINITIALFOCUS
struct _LARGE_INTEGER::@2248 u
base of all file and directory entries
VOID DisplayStuffUsingWin32Setup(HWND hwndDlg)
struct _SETUPDATA * PSETUPDATA
#define ERROR_INSUFFICIENT_BUFFER