Beispiel #1
0
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;
}
Beispiel #2
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);
}