From 4d2d2dbb259e1a67d3914866af39cb120841dfa2 Mon Sep 17 00:00:00 2001 From: Kyle Katarn Date: Fri, 24 Apr 2020 18:28:38 +0200 Subject: [PATCH] [SYSDM] Virtual Memory panel : improve settings for pagefile + fr-fr translation * Fix for CORE-12486 Co-Authored-By: Katayama Hirofumi MZ Co-authored-by: Sylvain Deverre --- dll/cpl/sysdm/lang/fr-FR.rc | 36 ++++++++++++++-------------- dll/cpl/sysdm/virtmem.c | 48 ++++++++++++++++++++++++++++--------- 2 files changed, 55 insertions(+), 29 deletions(-) diff --git a/dll/cpl/sysdm/lang/fr-FR.rc b/dll/cpl/sysdm/lang/fr-FR.rc index 2eacf77f474..ac5bb0fee19 100644 --- a/dll/cpl/sysdm/lang/fr-FR.rc +++ b/dll/cpl/sysdm/lang/fr-FR.rc @@ -122,15 +122,15 @@ END IDD_COPYPROFILE DIALOGEX 12, 26, 256, 52 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Copy Profile" +CAPTION "Copier le profil" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "From:", IDC_STATIC, 5, 10, 20, 8 + LTEXT "De :", IDC_STATIC, 5, 10, 20, 8 LTEXT "", IDC_COPYPROFILEFROM, 30, 10, 160, 10 - LTEXT "To:", IDC_STATIC, 5, 30, 20, 8 + LTEXT "Vers :", IDC_STATIC, 5, 30, 20, 8 EDITTEXT IDC_COPYPROFILETO, 30, 30, 160, 12 DEFPUSHBUTTON "OK", IDOK, 199, 9, 50, 14 - PUSHBUTTON "Cancel", IDCANCEL, 199, 30, 50, 14 + PUSHBUTTON "Annuler", IDCANCEL, 199, 30, 50, 14 END IDD_RENAMEPROFILE DIALOGEX 12, 26, 256, 52 @@ -227,32 +227,32 @@ END IDD_VIRTMEM DIALOGEX 6, 6, 223, 248 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Mémoire Virtuelle" +CAPTION "Mémoire virtuelle" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN LTEXT "Lecteur [Nom de Volume]", IDC_STATIC, 12, 5, 96, 9 - LTEXT "Taille du fichier d'échange (Mo)", IDC_STATIC, 115, 5, 96, 9 + LTEXT "Taille du fichier d'échange (Mo)", IDC_STATIC, 115, 5, 99, 9 LISTBOX IDC_PAGEFILELIST, 10, 16, 204, 52, LBS_NOTIFY | LBS_USETABSTOPS GROUPBOX "Taille du fichier d'échange pour le disque sélectionné", IDC_DRIVEGROUP, 10, 70, 204, 104 LTEXT "Lecteur :", IDC_STATIC, 20, 80, 30, 8 LTEXT "", IDC_DRIVE, 88, 81, 100, 9 LTEXT "Espace disponible :", IDC_STATIC, 20, 92, 66, 9 LTEXT "", IDC_SPACEAVAIL, 88, 92, 104, 9 - LTEXT "Taille &Initiale (Mo) :", -1, 22, 118, 72, 9 - LTEXT "Taille Ma&ximum (Mo) :", -1, 22, 131, 72, 9 + LTEXT "Taille initiale (Mo) :", -1, 22, 118, 72, 9 + LTEXT "Taille maximale (Mo) :", -1, 22, 131, 72, 9 AUTORADIOBUTTON "&Taille personnalisée", IDC_CUSTOM, 20, 105, 75, 9, WS_GROUP AUTORADIOBUTTON "&Taille &gérée par le système", IDC_SYSMANSIZE, 20, 145, 100, 9 - AUTORADIOBUTTON "&Pas de mémoire virtuelle", IDC_NOPAGEFILE, 20, 158, 100,9 + AUTORADIOBUTTON "Aucun fichier d'échange", IDC_NOPAGEFILE, 20, 158, 100,9 EDITTEXT IDC_INITIALSIZE, 100, 114, 44, 13, NOT WS_BORDER, WS_EX_CLIENTEDGE EDITTEXT IDC_MAXSIZE, 100, 129, 44, 13, NOT WS_BORDER, WS_EX_CLIENTEDGE - PUSHBUTTON "Régler", IDC_SET, 158, 154, 50, 15 - GROUPBOX "Mémoire virtuelle totale pour tous les lecteurs", IDC_TOTALGROUP, 10, 177, 204, 46 + PUSHBUTTON "Définir", IDC_SET, 158, 154, 50, 15 + GROUPBOX "Taille totale du fichier d'échange pour tous les lecteurs", IDC_TOTALGROUP, 10, 177, 204, 46 LTEXT "Minimum alloué :", IDC_STATIC, 18, 188, 58, 9 LTEXT "", IDC_MINIMUM, 88, 188, 100, 9 - LTEXT "Recommandé :", IDC_STATIC, 18, 199, 52, 9 - LTEXT "", IDC_RECOMMENDED, 88, 197, 100, 9 - LTEXT "Alloué actuellement :", IDC_STATIC, 18, 210, 66, 9 - LTEXT "", IDC_CURRENT, 88, 208, 100, 9 + LTEXT "Recommandée :", IDC_STATIC, 18, 199, 52, 9 + LTEXT "", IDC_RECOMMENDED, 88, 199, 100, 9 + LTEXT "Allouée actuellement :", IDC_STATIC, 18, 210, 70, 9 + LTEXT "", IDC_CURRENT, 88, 210, 100, 9 DEFPUSHBUTTON "OK", IDOK, 114, 230, 48, 15 PUSHBUTTON "Annuler", IDCANCEL, 168, 230, 48, 15 END @@ -330,11 +330,11 @@ BEGIN IDS_USERPROFILE_ACCOUNT_UNKNOWN "Account Unknown" IDS_USERPROFILE_ACCOUNT_DELETED "Account Deleted" IDS_USERPROFILE_TYPE_TEXT "When %s logs onto this computer, should the operating system use the roaming profile or just the locally cached copy of the roaming profile." - IDS_MESSAGEBOXTITLE "System control panel applet" + IDS_MESSAGEBOXTITLE "Application Système du Panneau de configuration" IDS_WARNINITIALSIZE "Entrez une valeur numérique pour la taille initiale du fichier d'échange." IDS_WARNMAXIMUMSIZE "Entrez une valeur numérique pour la taille maximale du fichier d'échange." - IDS_WARNINITIALRANGE "La taille initiale du fichier d'échange ne peut pas être inférieure à 16 Mo and ne doit pas dépasser l'espace libre total du disque." - IDS_WARNMAXIMUMRANGE "La taille maximale du fichier d'échange ne peut pas être inférieure à sa taille initiale, et ne peut pas être supérieure à 4095 Mo et ne peut pas dépasser l'espace libre total du disque." + IDS_WARNINITIALRANGE "La taille initiale du fichier d'échange doit être comprise entre 2 Mo et 4096 Mo, et ne peut pas excéder la quantité d'espace libre sur le lecteur que vous avez sélectionné." + IDS_WARNMAXIMUMRANGE "Entrez une valeur pour la taille maximale du fichier d'échange qui soit supérieure ou égale à la taille initiale du fichier d'échange, et inférieure à 4096 Mo." IDS_PAGEFILE_NONE "Aucun" IDS_PAGEFILE_SYSTEM "Géré par le système" IDS_INFOREBOOT "Vous devez redémarrer le système pour appliquer les changements." diff --git a/dll/cpl/sysdm/virtmem.c b/dll/cpl/sysdm/virtmem.c index e80b33ce98c..5ed0508d6cf 100644 --- a/dll/cpl/sysdm/virtmem.c +++ b/dll/cpl/sysdm/virtmem.c @@ -9,6 +9,9 @@ #include "precomp.h" +#define NDEBUG +#include + static BOOL OnSelChange(HWND hwndDlg, PVIRTMEM pVirtMem); static LPCTSTR lpKey = _T("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management"); @@ -442,8 +445,9 @@ OnSet(PVIRTMEM pVirtMem) } /* Check the valid range of the minimum size */ - if (MinSize < 16 || - MinSize > pVirtMem->Pagefile[DriveIndex].FreeSize) + if (MinSize < 2 || + MinSize > pVirtMem->Pagefile[DriveIndex].FreeSize || + MinSize > 4096) { ResourceMessageBox(hApplet, NULL, @@ -456,7 +460,7 @@ OnSet(PVIRTMEM pVirtMem) /* Check the valid range of the maximum size */ if (MaxSize < MinSize || MaxSize > pVirtMem->Pagefile[DriveIndex].FreeSize || - MaxSize > 4095) + MaxSize > 4096) { ResourceMessageBox(hApplet, NULL, @@ -502,9 +506,13 @@ OnSelChange(HWND hwndDlg, PVIRTMEM pVirtMem) TCHAR szBuffer[64]; MEMORYSTATUSEX MemoryStatus; ULARGE_INTEGER FreeDiskSpace; - UINT /*i,*/ FreeMemMb /*, PageFileSizeMb*/; + UINT i, FreeMemMb, RecoMemMb, PageFileSizeMb; INT Index; - + TCHAR szText[MAX_PATH]; + WIN32_FIND_DATAW fdata = {0}; + HANDLE hFind; + ULARGE_INTEGER pfSize; + Index = (INT)SendDlgItemMessage(hwndDlg, IDC_PAGEFILELIST, LB_GETCURSEL, @@ -569,27 +577,45 @@ OnSelChange(HWND hwndDlg, PVIRTMEM pVirtMem) } /* Set minimum pagefile size */ - SetDlgItemText(hwndDlg, IDC_MINIMUM, _T("16 MB")); + SetDlgItemText(hwndDlg, IDC_MINIMUM, _T("2 MB")); /* Set recommended pagefile size */ MemoryStatus.dwLength = sizeof(MEMORYSTATUSEX); if (GlobalMemoryStatusEx(&MemoryStatus)) { FreeMemMb = (UINT)(MemoryStatus.ullTotalPhys / (1024 * 1024)); - _stprintf(szBuffer, _T("%u MB"), FreeMemMb + (FreeMemMb / 2)); + RecoMemMb = FreeMemMb + (FreeMemMb / 2); /* The recommended VM size is 150% of free memory. */ + if (RecoMemMb > 4096) + RecoMemMb = 4096; + _stprintf(szBuffer, _T("%u MB"), RecoMemMb); SetDlgItemText(hwndDlg, IDC_RECOMMENDED, szBuffer); } /* Set current pagefile size */ -#if 0 PageFileSizeMb = 0; - for (i = 0; i < 26; i++) + + for (i = 0; i < pVirtMem->Count; i++) { - PageFileSizeMb += pVirtMem->Pagefile[i].InitialSize; + _stprintf(szText, + _T("%c:\\pagefile.sys"), + pVirtMem->Pagefile[i].szDrive[0]); + + hFind = FindFirstFileW(szText, &fdata); + if (hFind == INVALID_HANDLE_VALUE) + { + DPRINT1("Unable to read PageFile size : %ls due to error %d\n", szText,GetLastError()); + } + else + { + pfSize.LowPart = fdata.nFileSizeLow; + pfSize.HighPart = fdata.nFileSizeHigh; + PageFileSizeMb += pfSize.QuadPart / (1024*1024); + FindClose(hFind); + } } + _stprintf(szBuffer, _T("%u MB"), PageFileSizeMb); SetDlgItemText(hwndDlg, IDC_CURRENT, szBuffer); -#endif } return TRUE;