static VOID
Hib_InitDialog(HWND hwndDlg)
{
- SYSTEM_POWER_CAPABILITIES PowerCaps;
- MEMORYSTATUSEX msex;
- TCHAR szSize[MAX_PATH];
- TCHAR szTemp[MAX_PATH];
- ULARGE_INTEGER FreeBytesAvailable, TotalNumberOfBytes, TotalNumberOfFreeBytes;
-
- if (GetPwrCapabilities(&PowerCaps))
- {
- CheckDlgButton(hwndDlg,
- IDC_HIBERNATEFILE,
- PowerCaps.HiberFilePresent ? BST_CHECKED : BST_UNCHECKED);
-
- msex.dwLength = sizeof(msex);
- if (!GlobalMemoryStatusEx(&msex))
- {
- return; // FIXME
- }
-
- if (GetWindowsDirectory(szTemp,MAX_PATH))
- {
- if (!GetDiskFreeSpaceEx(szTemp,&FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes))
- TotalNumberOfFreeBytes.QuadPart = 0;
- }
- else
- {
- if (!GetDiskFreeSpaceEx(NULL,&FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes))
- TotalNumberOfFreeBytes.QuadPart = 0;
- }
-
- if (TotalNumberOfFreeBytes.QuadPart > 0x100000)
- {
- if (LoadString(hApplet, IDS_SIZEMB, szTemp, MAX_PATH))
- {
- _stprintf(szSize,szTemp,TotalNumberOfFreeBytes.QuadPart / 0x100000);
- SetDlgItemText(hwndDlg, IDC_FREESPACE, szSize);
- }
- }
- else
- {
- if (LoadString(hApplet, IDS_SIZEBYTS, szTemp, MAX_PATH))
- {
- _stprintf(szSize,szTemp,TotalNumberOfFreeBytes.QuadPart);
- SetDlgItemText(hwndDlg, IDC_FREESPACE, szSize);
- }
- }
-
- if (msex.ullTotalPhys>0x100000)
- {
- if (LoadString(hApplet, IDS_SIZEMB, szTemp, MAX_PATH))
- {
- _stprintf(szSize,szTemp,msex.ullTotalPhys/0x100000);
- SetDlgItemText(hwndDlg, IDC_SPACEFORHIBERNATEFILE,szSize);
- }
- }
- else
- {
- if (LoadString(hApplet, IDS_SIZEBYTS, szTemp, MAX_PATH))
- {
- _stprintf(szSize,szTemp,msex.ullTotalPhys);
- SetDlgItemText(hwndDlg, IDC_SPACEFORHIBERNATEFILE, szSize);
- }
- }
-
- if (TotalNumberOfFreeBytes.QuadPart < msex.ullTotalPhys && !PowerCaps.HiberFilePresent)
- {
- EnableWindow(GetDlgItem(hwndDlg, IDC_HIBERNATEFILE), FALSE);
- ShowWindow(GetDlgItem(hwndDlg, IDC_TOLESSFREESPACE), TRUE);
- }
- else
- {
- ShowWindow(GetDlgItem(hwndDlg, IDC_TOLESSFREESPACE), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_HIBERNATEFILE), TRUE);
- }
- }
+ SYSTEM_POWER_CAPABILITIES PowerCaps;
+ MEMORYSTATUSEX msex;
+ TCHAR szTemp[MAX_PATH];
+ LPTSTR lpRoot;
+ ULARGE_INTEGER FreeBytesAvailable, TotalNumberOfBytes, TotalNumberOfFreeBytes;
+
+ if (GetPwrCapabilities(&PowerCaps))
+ {
+ CheckDlgButton(hwndDlg,
+ IDC_HIBERNATEFILE,
+ PowerCaps.HiberFilePresent ? BST_CHECKED : BST_UNCHECKED);
+
+ msex.dwLength = sizeof(msex);
+ if (!GlobalMemoryStatusEx(&msex))
+ {
+ return; // FIXME
+ }
+
+ if (GetWindowsDirectory(szTemp,MAX_PATH))
+ lpRoot = szTemp;
+ else
+ lpRoot = NULL;
+
+ // Get available space and size of selected volume.
+ if (!GetDiskFreeSpaceEx(lpRoot, &FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes))
+ TotalNumberOfFreeBytes.QuadPart = 0;
+
+ // Print the free available space into selected volume.
+ StrFormatByteSize(TotalNumberOfFreeBytes.QuadPart, szTemp, _countof(szTemp));
+ SetDlgItemText(hwndDlg, IDC_FREESPACE, szTemp);
+
+ // Print the amount of space required for hibernation.
+ StrFormatByteSize(msex.ullTotalPhys, szTemp, _countof(szTemp));
+ SetDlgItemText(hwndDlg, IDC_SPACEFORHIBERNATEFILE, szTemp);
+
+ if (TotalNumberOfFreeBytes.QuadPart < msex.ullTotalPhys && !PowerCaps.HiberFilePresent)
+ {
+ EnableWindow(GetDlgItem(hwndDlg, IDC_HIBERNATEFILE), FALSE);
+ ShowWindow(GetDlgItem(hwndDlg, IDC_TOLESSFREESPACE), TRUE);
+ }
+ else
+ {
+ ShowWindow(GetDlgItem(hwndDlg, IDC_TOLESSFREESPACE), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_HIBERNATEFILE), TRUE);
+ }
+ }
}
INT_PTR
Hib_SaveData(HWND hwndDlg)
{
- BOOLEAN bHibernate;
+ BOOLEAN bHibernate;
- bHibernate = (BOOLEAN)(IsDlgButtonChecked(hwndDlg, IDC_HIBERNATEFILE) == BST_CHECKED);
+ bHibernate = (BOOLEAN)(IsDlgButtonChecked(hwndDlg, IDC_HIBERNATEFILE) == BST_CHECKED);
- if (CallNtPowerInformation(SystemReserveHiberFile,&bHibernate, sizeof(bHibernate), NULL, 0) == STATUS_SUCCESS)
- {
- Pos_InitData();
- Adv_InitDialog();
- Hib_InitDialog(hwndDlg);
- return TRUE;
- }
+ if (CallNtPowerInformation(SystemReserveHiberFile,&bHibernate, sizeof(bHibernate), NULL, 0) == STATUS_SUCCESS)
+ {
+ Pos_InitData();
+ Adv_InitDialog();
+ Hib_InitDialog(hwndDlg);
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
/* Property page dialog callback */
switch(uMsg)
{
case WM_INITDIALOG:
- Hib_InitDialog(hwndDlg);
- return TRUE;
- case WM_COMMAND:
- switch(LOWORD(wParam))
- {
- case IDC_HIBERNATEFILE:
- if (HIWORD(wParam) == BN_CLICKED)
- {
- PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
- }
- }
- break;
- case WM_NOTIFY:
- {
- LPNMHDR lpnm = (LPNMHDR)lParam;
- if (lpnm->code == (UINT)PSN_APPLY)
- {
- return Hib_SaveData(hwndDlg);
- }
- }
+ Hib_InitDialog(hwndDlg);
+ return TRUE;
+ case WM_COMMAND:
+ switch(LOWORD(wParam))
+ {
+ case IDC_HIBERNATEFILE:
+ if (HIWORD(wParam) == BN_CLICKED)
+ {
+ PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
+ }
+ }
+ break;
+ case WM_NOTIFY:
+ {
+ LPNMHDR lpnm = (LPNMHDR)lParam;
+ if (lpnm->code == (UINT)PSN_APPLY)
+ {
+ return Hib_SaveData(hwndDlg);
+ }
+ }
}
return FALSE;
}