2 * PROJECT: ReactOS Power Configuration Applet
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll/cpl/powercfg/hibernate.c
5 * PURPOSE: hibernate tab of applet
6 * PROGRAMMERS: Alexander Wurzinger (Lohnegrim at gmx dot net)
7 * Johannes Anderwald (johannes.anderwald@reactos.org)
9 * Dmitry Chapyshev (lentind@yandex.ru)
14 BOOLEAN
Pos_InitData();
15 void Adv_InitDialog();
19 Hib_InitDialog(HWND hwndDlg
)
21 SYSTEM_POWER_CAPABILITIES PowerCaps
;
23 TCHAR szSize
[MAX_PATH
];
24 TCHAR szTemp
[MAX_PATH
];
25 ULARGE_INTEGER FreeBytesAvailable
, TotalNumberOfBytes
, TotalNumberOfFreeBytes
;
27 if (GetPwrCapabilities(&PowerCaps
))
29 CheckDlgButton(hwndDlg
,
31 PowerCaps
.HiberFilePresent
? BST_CHECKED
: BST_UNCHECKED
);
33 msex
.dwLength
= sizeof(msex
);
34 if (!GlobalMemoryStatusEx(&msex
))
39 if (GetWindowsDirectory(szTemp
,MAX_PATH
))
41 if (!GetDiskFreeSpaceEx(szTemp
,&FreeBytesAvailable
, &TotalNumberOfBytes
, &TotalNumberOfFreeBytes
))
42 TotalNumberOfFreeBytes
.QuadPart
= 0;
46 if (!GetDiskFreeSpaceEx(NULL
,&FreeBytesAvailable
, &TotalNumberOfBytes
, &TotalNumberOfFreeBytes
))
47 TotalNumberOfFreeBytes
.QuadPart
= 0;
50 if (TotalNumberOfFreeBytes
.QuadPart
> 0x100000)
52 if (LoadString(hApplet
, IDS_SIZEMB
, szTemp
, MAX_PATH
))
54 _stprintf(szSize
,szTemp
,TotalNumberOfFreeBytes
.QuadPart
/ 0x100000);
55 SetDlgItemText(hwndDlg
, IDC_FREESPACE
, szSize
);
60 if (LoadString(hApplet
, IDS_SIZEBYTS
, szTemp
, MAX_PATH
))
62 _stprintf(szSize
,szTemp
,TotalNumberOfFreeBytes
.QuadPart
);
63 SetDlgItemText(hwndDlg
, IDC_FREESPACE
, szSize
);
67 if (msex
.ullTotalPhys
>0x100000)
69 if (LoadString(hApplet
, IDS_SIZEMB
, szTemp
, MAX_PATH
))
71 _stprintf(szSize
,szTemp
,msex
.ullTotalPhys
/0x100000);
72 SetDlgItemText(hwndDlg
, IDC_SPACEFORHIBERNATEFILE
,szSize
);
77 if (LoadString(hApplet
, IDS_SIZEBYTS
, szTemp
, MAX_PATH
))
79 _stprintf(szSize
,szTemp
,msex
.ullTotalPhys
);
80 SetDlgItemText(hwndDlg
, IDC_SPACEFORHIBERNATEFILE
, szSize
);
84 if (TotalNumberOfFreeBytes
.QuadPart
< msex
.ullTotalPhys
&& !PowerCaps
.HiberFilePresent
)
86 EnableWindow(GetDlgItem(hwndDlg
, IDC_HIBERNATEFILE
), FALSE
);
87 ShowWindow(GetDlgItem(hwndDlg
, IDC_TOLESSFREESPACE
), TRUE
);
91 ShowWindow(GetDlgItem(hwndDlg
, IDC_TOLESSFREESPACE
), FALSE
);
92 EnableWindow(GetDlgItem(hwndDlg
, IDC_HIBERNATEFILE
), TRUE
);
98 Hib_SaveData(HWND hwndDlg
)
102 bHibernate
= (BOOLEAN
)(IsDlgButtonChecked(hwndDlg
, IDC_HIBERNATEFILE
) == BST_CHECKED
);
104 if (CallNtPowerInformation(SystemReserveHiberFile
,&bHibernate
, sizeof(bHibernate
), NULL
, 0) == STATUS_SUCCESS
)
108 Hib_InitDialog(hwndDlg
);
115 /* Property page dialog callback */
117 HibernateDlgProc(HWND hwndDlg
,
125 Hib_InitDialog(hwndDlg
);
128 switch(LOWORD(wParam
))
130 case IDC_HIBERNATEFILE
:
131 if (HIWORD(wParam
) == BN_CLICKED
)
133 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
139 LPNMHDR lpnm
= (LPNMHDR
)lParam
;
140 if (lpnm
->code
== (UINT
)PSN_APPLY
)
142 return Hib_SaveData(hwndDlg
);