INT CommandMemory (LPTSTR param) { MEMORYSTATUSEX msex; TCHAR szMemoryLoad[20]; TCHAR szTotalPhys[40]; TCHAR szAvailPhys[40]; TCHAR szTotalPageFile[40]; TCHAR szAvailPageFile[40]; TCHAR szTotalVirtual[40]; TCHAR szAvailVirtual[40]; BOOL (WINAPI *GlobalMemoryStatusEx)(LPMEMORYSTATUSEX); if (!_tcsncmp (param, _T("/?"), 2)) { ConOutResPaging(TRUE,STRING_MEMMORY_HELP1); return 0; } GlobalMemoryStatusEx = (BOOL (WINAPI *)(LPMEMORYSTATUSEX))GetProcAddress(GetModuleHandle(_T("KERNEL32")), "GlobalMemoryStatusEx"); if (GlobalMemoryStatusEx) { msex.dwLength = sizeof(MEMORYSTATUSEX); GlobalMemoryStatusEx(&msex); } else { MEMORYSTATUS ms; ms.dwLength = sizeof(MEMORYSTATUS); GlobalMemoryStatus(&ms); msex.dwMemoryLoad = ms.dwMemoryLoad; msex.ullTotalPhys = ms.dwTotalPhys; msex.ullAvailPhys = ms.dwAvailPhys; msex.ullTotalPageFile = ms.dwTotalPageFile; msex.ullAvailPageFile = ms.dwAvailPageFile; msex.ullTotalVirtual = ms.dwTotalVirtual; msex.ullAvailVirtual = ms.dwAvailVirtual; } ConvertULargeInteger(msex.dwMemoryLoad, szMemoryLoad, 20, FALSE); ConvertULargeInteger(msex.ullTotalPhys, szTotalPhys, 40, TRUE); ConvertULargeInteger(msex.ullAvailPhys, szAvailPhys, 40, TRUE); ConvertULargeInteger(msex.ullTotalPageFile, szTotalPageFile, 40, TRUE); ConvertULargeInteger(msex.ullAvailPageFile, szAvailPageFile, 40, TRUE); ConvertULargeInteger(msex.ullTotalVirtual, szTotalVirtual, 40, TRUE); ConvertULargeInteger(msex.ullAvailVirtual, szAvailVirtual, 40, TRUE); ConOutResPrintf(STRING_MEMMORY_HELP2, szMemoryLoad, szTotalPhys, szAvailPhys, szTotalPageFile, szAvailPageFile, szTotalVirtual, szAvailVirtual); return 0; }
static VOID PrintDiskInfo (LPTSTR szDisk) { TCHAR szMsg[RC_STRING_MAX_SIZE]; TCHAR szRootPath[4] = _T("A:\\"); TCHAR szDrive[2] = _T("A"); TCHAR szVolume[64]; TCHAR szSerial[10]; TCHAR szTotal[40]; TCHAR szUsed[40]; TCHAR szFree[40]; DWORD dwSerial; ULONGLONG uliSize; DWORD dwSecPerCl; DWORD dwBytPerSec; DWORD dwFreeCl; DWORD dwTotCl; if (_tcslen (szDisk) < 2 || szDisk[1] != _T(':')) { ConErrResPrintf(STRING_FREE_ERROR1); return; } szRootPath[0] = szDisk[0]; szDrive[0] = _totupper (szRootPath[0]); if (!GetVolumeInformation (szRootPath, szVolume, 64, &dwSerial, NULL, NULL, NULL, 0)) { LoadString(CMD_ModuleHandle, STRING_FREE_ERROR1, szMsg, RC_STRING_MAX_SIZE); ConErrPrintf(_T("%s %s:\n"), szMsg, szDrive); return; } if (szVolume[0] == _T('\0')) { LoadString(CMD_ModuleHandle, STRING_FREE_ERROR2, szMsg, RC_STRING_MAX_SIZE); _tcscpy (szVolume, szMsg); } _stprintf (szSerial, _T("%04X-%04X"), HIWORD(dwSerial), LOWORD(dwSerial)); if (!GetDiskFreeSpace (szRootPath, &dwSecPerCl, &dwBytPerSec, &dwFreeCl, &dwTotCl)) { LoadString(CMD_ModuleHandle, STRING_FREE_ERROR1, szMsg, RC_STRING_MAX_SIZE); ConErrPrintf(_T("%s %s:\n"), szMsg, szDrive); return; } uliSize = dwSecPerCl * dwBytPerSec * (ULONGLONG)dwTotCl; ConvertULargeInteger(uliSize, szTotal, 40, TRUE); uliSize = dwSecPerCl * dwBytPerSec * (ULONGLONG)(dwTotCl - dwFreeCl); ConvertULargeInteger(uliSize, szUsed, 40, TRUE); uliSize = dwSecPerCl * dwBytPerSec * (ULONGLONG)dwFreeCl; ConvertULargeInteger(uliSize, szFree, 40, TRUE); ConOutResPrintf(STRING_FREE_HELP1, szDrive, szVolume, szSerial, szTotal, szUsed, szFree); }