BaseFormat& BaseFormat::ToString(INT64 Value, bool Signed)
{
    wchar_t Buffer[65];
    Signed?_i64tow(Value, Buffer, Radix):_ui64tow(Value, Buffer, Radix);
    if (Radix > 10)
    {
        UpperBuf(Buffer, ARRAYSIZE(Buffer));
    }
    return Put(Buffer, StrLength(Buffer));
}
Exemple #2
0
BaseFormat& BaseFormat::ToString(T Value)
{
	static_assert(std::is_integral<T>::value, "Value type is not integral");
	wchar_t Buffer[65];
	std::is_signed<T>::value? _i64tow(Value, Buffer, Radix) : _ui64tow(Value, Buffer, Radix);
	if (Radix > 10)
	{
		UpperBuf(Buffer, ARRAYSIZE(Buffer));
	}
	return Put(Buffer, StrLength(Buffer));
}
Exemple #3
0
///////////////////////////////////////////////////////////////////////////////
// Helperroutinen
HRESULT CConvertGuid::GuidToGuid32String(REFGUID rGuid, BSTR *pbstrGuidStr)
{
	_ASSERTE(NULL != pbstrGuidStr);

wchar_t wBuffer[40];
CComBSTR bstr;

	bstr = _ui64tow(((unsigned __int64 *)&rGuid)[0], wBuffer, 32);

int iLen = bstr.Length();

	if (iLen < 13) {
	CComBSTR bstrT;

		while (iLen++ < 13) 
			bstrT.Append(L"0");
		bstrT.AppendBSTR(bstr);
		bstr = bstrT;
	}

CComBSTR bstr2;

	bstr2 = _ui64tow(((unsigned __int64 *)&rGuid)[1], wBuffer, 32);
	iLen = bstr2.Length();

	if (iLen < 13) {
	CComBSTR bstrT;

		while (iLen++ < 13) 
			bstrT.Append(L"0");
		bstrT.AppendBSTR(bstr2);
		bstr.AppendBSTR(bstrT);
	}
	else
		bstr.AppendBSTR(bstr2);

	*pbstrGuidStr = bstr.Detach();
	return S_OK;
}
void CCommonSeqReference::OutputDescCommSeq( const char* szFileName )
{
    const char* szFileRealName = strrchr(szFileName, '/');
    szFileRealName++;
    m_strCommonFileName = szFileRealName;
    char charEnter[4] = {0x0D,0x00,0x0A,0x00};
    char charTab[2] = {0x09,0x00};
    CreateFileDirectory(szFileName);
    ofstream ofsCommSeq(szFileName, ios_base::binary | ios_base::out);

    char headArray[2];
    headArray[0] = uint8(15*16+15);
    headArray[1] = uint8(15*16+14);
    ofsCommSeq.write(headArray, 2);

    vector<wstring> vecColName;
    vecColName.push_back(L"Index");
    vecColName.push_back(L"CommonSequence");

    ofsCommSeq.write((const char*)vecColName[0].c_str(), vecColName[0].length()*2);
    ofsCommSeq.write(charTab, 2);
    ofsCommSeq.write((const char*)vecColName[1].c_str(), vecColName[1].length()*2);
    ofsCommSeq.write(charEnter, 4);

    typedef hash_map<uint32, string>::iterator IterHmapUS;
    uint32 uCommSeqIndex;
    wchar_t szCommonIndex[20];
    wstring wstrCommSeq;
    for (IterHmapUS iter=s_hmapCommSeq.begin(); iter!=s_hmapCommSeq.end(); ++iter)
    {
        uCommSeqIndex = iter->first;
        _ui64tow(uCommSeqIndex, szCommonIndex, 10);
        ofsCommSeq.write((char*)szCommonIndex, wcslen(szCommonIndex)*2);
        ofsCommSeq.write(charTab, 2);
        wstrCommSeq = gbk_to_utf16(iter->second);
        ofsCommSeq.write((const char*)wstrCommSeq.c_str(), wstrCommSeq.length()*2);
        ofsCommSeq.write(charEnter, 4);
    }
    ofsCommSeq.close();
}
Exemple #5
0
wchar_t *Port::ull_to_string(wchar_t *buffer, ulonglong ull)
{
    _ui64tow(ull, buffer, 10);
    return buffer;
}
Exemple #6
0
BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, int nMaxCount)
{
    IO_COUNTERS    iocounters;
    LARGE_INTEGER  time;

    if (ColumnDataHints[ColumnIndex] == COLUMN_IMAGENAME)
        PerfDataGetImageName(Index, lpText, nMaxCount);
    if (ColumnDataHints[ColumnIndex] == COLUMN_PID)
        wsprintfW(lpText, L"%lu", PerfDataGetProcessId(Index));
    if (ColumnDataHints[ColumnIndex] == COLUMN_USERNAME)
        PerfDataGetUserName(Index, lpText, nMaxCount);
    if (ColumnDataHints[ColumnIndex] == COLUMN_SESSIONID)
        wsprintfW(lpText, L"%lu", PerfDataGetSessionId(Index));
    if (ColumnDataHints[ColumnIndex] == COLUMN_CPUUSAGE)
        wsprintfW(lpText, L"%02lu", PerfDataGetCPUUsage(Index));
    if (ColumnDataHints[ColumnIndex] == COLUMN_CPUTIME)
    {
        DWORD dwHours;
        DWORD dwMinutes;
        DWORD dwSeconds;

        time = PerfDataGetCPUTime(Index);
        gethmsfromlargeint(time, &dwHours, &dwMinutes, &dwSeconds);
        wsprintfW(lpText, L"%lu:%02lu:%02lu", dwHours, dwMinutes, dwSeconds);
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_MEMORYUSAGE)
    {
        wsprintfW(lpText, L"%lu", PerfDataGetWorkingSetSizeBytes(Index) / 1024);
        CommaSeparateNumberString(lpText, nMaxCount);
        wcscat(lpText, L" K");
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_PEAKMEMORYUSAGE)
    {
        wsprintfW(lpText, L"%lu", PerfDataGetPeakWorkingSetSizeBytes(Index) / 1024);
        CommaSeparateNumberString(lpText, nMaxCount);
        wcscat(lpText, L" K");
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_MEMORYUSAGEDELTA)
    {
        wsprintfW(lpText, L"%lu", PerfDataGetWorkingSetSizeDelta(Index) / 1024);
        CommaSeparateNumberString(lpText, nMaxCount);
        wcscat(lpText, L" K");
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEFAULTS)
    {
        wsprintfW(lpText, L"%lu", PerfDataGetPageFaultCount(Index));
        CommaSeparateNumberString(lpText, nMaxCount);
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEFAULTSDELTA)
    {
        wsprintfW(lpText, L"%lu", PerfDataGetPageFaultCountDelta(Index));
        CommaSeparateNumberString(lpText, nMaxCount);
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_VIRTUALMEMORYSIZE)
    {
        wsprintfW(lpText, L"%lu", PerfDataGetVirtualMemorySizeBytes(Index) / 1024);
        CommaSeparateNumberString(lpText, nMaxCount);
        wcscat(lpText, L" K");
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEDPOOL)
    {
        wsprintfW(lpText, L"%lu", PerfDataGetPagedPoolUsagePages(Index) / 1024);
        CommaSeparateNumberString(lpText, nMaxCount);
        wcscat(lpText, L" K");
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_NONPAGEDPOOL)
    {
        wsprintfW(lpText, L"%lu", PerfDataGetNonPagedPoolUsagePages(Index) / 1024);
        CommaSeparateNumberString(lpText, nMaxCount);
        wcscat(lpText, L" K");
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_BASEPRIORITY)
        wsprintfW(lpText, L"%lu", PerfDataGetBasePriority(Index));
    if (ColumnDataHints[ColumnIndex] == COLUMN_HANDLECOUNT)
    {
        wsprintfW(lpText, L"%lu", PerfDataGetHandleCount(Index));
        CommaSeparateNumberString(lpText, nMaxCount);
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_THREADCOUNT)
    {
        wsprintfW(lpText, L"%lu", PerfDataGetThreadCount(Index));
        CommaSeparateNumberString(lpText, nMaxCount);
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_USEROBJECTS)
    {
        wsprintfW(lpText, L"%lu", PerfDataGetUSERObjectCount(Index));
        CommaSeparateNumberString(lpText, nMaxCount);
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_GDIOBJECTS)
    {
        wsprintfW(lpText, L"%lu", PerfDataGetGDIObjectCount(Index));
        CommaSeparateNumberString(lpText, nMaxCount);
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_IOREADS)
    {
        PerfDataGetIOCounters(Index, &iocounters);
        /* wsprintfW(pnmdi->item.pszText, L"%d", iocounters.ReadOperationCount); */
        _ui64tow(iocounters.ReadOperationCount, lpText, 10);
        CommaSeparateNumberString(lpText, nMaxCount);
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_IOWRITES)
    {
        PerfDataGetIOCounters(Index, &iocounters);
        /* wsprintfW(pnmdi->item.pszText, L"%d", iocounters.WriteOperationCount); */
        _ui64tow(iocounters.WriteOperationCount, lpText, 10);
        CommaSeparateNumberString(lpText, nMaxCount);
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_IOOTHER)
    {
        PerfDataGetIOCounters(Index, &iocounters);
        /* wsprintfW(pnmdi->item.pszText, L"%d", iocounters.OtherOperationCount); */
        _ui64tow(iocounters.OtherOperationCount, lpText, 10);
        CommaSeparateNumberString(lpText, nMaxCount);
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_IOREADBYTES)
    {
        PerfDataGetIOCounters(Index, &iocounters);
        /* wsprintfW(pnmdi->item.pszText, L"%d", iocounters.ReadTransferCount); */
        _ui64tow(iocounters.ReadTransferCount, lpText, 10);
        CommaSeparateNumberString(lpText, nMaxCount);
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_IOWRITEBYTES)
    {
        PerfDataGetIOCounters(Index, &iocounters);
        /* wsprintfW(pnmdi->item.pszText, L"%d", iocounters.WriteTransferCount); */
        _ui64tow(iocounters.WriteTransferCount, lpText, 10);
        CommaSeparateNumberString(lpText, nMaxCount);
    }
    if (ColumnDataHints[ColumnIndex] == COLUMN_IOOTHERBYTES)
    {
        PerfDataGetIOCounters(Index, &iocounters);
        /* wsprintfW(pnmdi->item.pszText, L"%d", iocounters.OtherTransferCount); */
        _ui64tow(iocounters.OtherTransferCount, lpText, 10);
        CommaSeparateNumberString(lpText, nMaxCount);
    }

    return FALSE;
}
Exemple #7
0
void CProcesses::OnLvnGetdispinfoProcessList(NMHDR *pNMHDR, LRESULT *pResult)
{
    NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
    LVCOLUMN  col;
    col.mask = LVCF_SUBITEM;
    /*Get the colum Info*/
    ListView_GetColumn(hProcPageListCtrl,pDispInfo->item.iSubItem,&col);

    if(columns[col.iSubItem].isShow)
    {
        PERFDATA *pPerfData = (PERFDATA *)pDispInfo->item.lParam;
        /*Set the Column Data*/
        switch(columns[col.iSubItem].nId)
        {
        case COLUMN_IMAGENAME:
            break;
        case COLUMN_PID:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d"),pPerfData->ProcessId);
            break;
        case COLUMN_USERNAME:
            pDispInfo->item.pszText = pPerfData->UserName;
            break;
        case COLUMN_SESSIONID:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d"),pPerfData->SessionId);
            break;
        case COLUMN_CPUUSAGE:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%02d"),pPerfData->CPUUsage);
            break;
        case COLUMN_CPUTIME:
            DWORD dwHours;
            DWORD dwMinutes;
            DWORD dwSeconds;

            GetHMSFromLargeInt(pPerfData->CPUTime, &dwHours, &dwMinutes, &dwSeconds);
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%02d:%02d:%02d"),dwHours,dwMinutes,dwSeconds);
            break;
        case COLUMN_MEMORYUSAGE:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d"),pPerfData->WorkingSetSizeBytes / 1024);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            wcscat(pDispInfo->item.pszText,_T(" K"));
            break;
        case COLUMN_PEAKMEMORYUSAGE:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d")
                       ,pPerfData->PeakWorkingSetSizeBytes / 1024);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            wcscat(pDispInfo->item.pszText,_T(" K"));
            break;
        case COLUMN_MEMORYUSAGEDELTA:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d"),pPerfData->WorkingSetSizeDelta / 1024);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            wcscat(pDispInfo->item.pszText,_T(" K"));
            break;
        case COLUMN_PAGEFAULTS:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d"),pPerfData->PageFaultCount);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            break;
        case COLUMN_PAGEFAULTSDELTA:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d"),pPerfData->PageFaultCountDelta);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            break;
        case COLUMN_VIRTUALMEMORYSIZE:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d"),pPerfData->VirtualMemorySizeBytes / 1024);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            wcscat(pDispInfo->item.pszText,_T(" K"));
            break;
        case COLUMN_PAGEDPOOL:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d"),pPerfData->PagedPoolUsagePages / 1024);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            wcscat(pDispInfo->item.pszText,_T(" K"));
            break;
        case COLUMN_NONPAGEDPOOL:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d"),pPerfData->NonPagedPoolUsagePages / 1024);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            wcscat(pDispInfo->item.pszText,_T(" K"));
            break;
        case COLUMN_BASEPRIORITY:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d"),pPerfData->BasePriority);
            break;
        case COLUMN_HANDLECOUNT:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d"),pPerfData->HandleCount);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            break;
        case COLUMN_THREADCOUNT:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d"),pPerfData->ThreadCount);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            break;
        case COLUMN_USEROBJECTS:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d"),pPerfData->USERObjectCount);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            break;
        case COLUMN_GDIOBJECTS:
            swprintf_s(pDispInfo->item.pszText,pDispInfo->item.cchTextMax,_T("%d"),pPerfData->GDIObjectCount);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            break;
        case COLUMN_IOREADS:
            _ui64tow(pPerfData->IOCounters.ReadOperationCount,pDispInfo->item.pszText,10);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            break;
        case COLUMN_IOWRITES:
            _ui64tow(pPerfData->IOCounters.WriteOperationCount,pDispInfo->item.pszText,10);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            break;
        case COLUMN_IOOTHER:
            _ui64tow(pPerfData->IOCounters.OtherOperationCount,pDispInfo->item.pszText,10);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            break;
        case COLUMN_IOREADBYTES:
            _ui64tow(pPerfData->IOCounters.ReadTransferCount,pDispInfo->item.pszText,10);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            break;
        case COLUMN_IOWRITEBYTES:
            _ui64tow(pPerfData->IOCounters.WriteTransferCount,pDispInfo->item.pszText,10);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            break;
        case COLUMN_IOOTHERBYTES:
            _ui64tow(pPerfData->IOCounters.OtherTransferCount,pDispInfo->item.pszText,10);
            SeparateNumber(pDispInfo->item.pszText,pDispInfo->item.cchTextMax);
            break;
        }
    }

    *pResult = 0;
}
Exemple #8
0
int	__cdecl main(int argc, char	*argv[])
{
    WCHAR   buffer[256];
    WCHAR   *testStr;
    WCHAR   *ret;
    int	    i;
    testCase testCases[] = 
    {
        /* test	limits */
        {0xFFFFFFFFFFFFFFFF, 2,	
            "1111111111111111111111111111111111111111111111111111111111111111"},
        {0xFFFFFFFFFFFFFFFF, 8,	"1777777777777777777777"},
        {0xFFFFFFFFFFFFFFFF, 10, "18446744073709551615"},
        {0xFFFFFFFFFFFFFFFF, 16, "ffffffffffffffff"},
        {47, 2,	"101111"},
        {47, 8,	"57"},
        {47, 10, "47"},
        {47, 16, "2f"},
        {12, 2,	"1100"},
        {12, 8,	"14"},
        {12, 10, "12"},
        {12, 16, "c"},

        /* test with	0. */
        {0,	2, "0"},
        {0,	8, "0"},
        {0,	10,	"0"},
        {0,	16,	"0"}
    };

    if (0 != (PAL_Initialize(argc, argv)))
    {
        return FAIL;
    }

    for	(i=0; i<sizeof(testCases) / sizeof(testCase); i++)
    {
        ret = _ui64tow(testCases[i].value, buffer, testCases[i].radix);

        if (ret	!= buffer)
        {
            Fail("Failed to call _ui64tow API: did not return a	pointer	"
                 "to string. Expected %p, got %p\n", buffer, ret);
        }

        testStr	= convert(testCases[i].result);

        if (wcscmp(testStr, buffer) != 0)
        {	
            Trace("ERROR: _ui64tow test#%d. Expected <%S>, got <%S>.\n",
                   i,testStr, buffer);
            free(testStr);
            Fail("");
        }

        free(testStr);
    }

    PAL_Terminate();
    return PASS;
}
Exemple #9
0
int __cdecl main(int argc, char *argv[])
{
    int err;
    WCHAR *wpBuffer = NULL;
    char *pChar = NULL;
    unsigned long ul = 1234567890UL;
    char *pChar10 = "1234567890";
    char *pChar2 = "1001001100101100000001011010010";
    char *pChar16 = "499602d2";

    /*Initialize the PAL environment*/
    err = PAL_Initialize(argc, argv);
    if(0 != err)
    {
        return FAIL;
    }

    wpBuffer = malloc(64 * sizeof(WCHAR));
    if(NULL == wpBuffer)
    {
        Fail("\nFail to allocate the buffer to save a converted "
                "wide character string, error code=%d!\n",
                GetLastError());
    }

    /*convert to a 10 base string*/
    _ui64tow(ul, wpBuffer, 10);
    pChar = convertC(wpBuffer);
    if(strcmp(pChar10, pChar))
    {
        free(wpBuffer);
        free(pChar);
        Fail("\nFailed to call _ui64tow API to convert an interger "
                "to a 10 base wide character string, error code=%d\n",
                GetLastError()); 
    }
    free(pChar);
    free(wpBuffer);    

    wpBuffer = malloc(64 * sizeof(WCHAR));
    if(NULL == wpBuffer)
    {
        Fail("\nFail to allocate the buffer to save a converted "
                "wide character string, error code=%d!\n",
                GetLastError());
    }
    
    /*convert to a 16 base string*/
    _ui64tow(ul, wpBuffer, 16);
    pChar = convertC(wpBuffer);
    if(strcmp(pChar16, pChar))
    {
        free(wpBuffer);
        free(pChar);
        Fail("\nFailed to call _ui64tow API to convert an interger "
                "to a 16 base wide character string, error code = %d\n",
                GetLastError()); 
    }
    free(pChar);
    free(wpBuffer);    

    wpBuffer = malloc(64 * sizeof(WCHAR));
    if(NULL == wpBuffer)
    {
        Fail("\nFail to allocate the buffer to save a converted "
                "wide character string, error code=%d!\n",
                GetLastError());
    }
    /*convert to a 2 base string*/
    _ui64tow(ul, wpBuffer, 2);
    pChar = convertC(wpBuffer);
    if(strcmp(pChar2, pChar))
    {
        free(wpBuffer);
        free(pChar);
        Fail("\nFailed to call _ui64tow API to convert an interger "
                "to a 2 base wide character string, error code=%d\n",
                GetLastError()); 
    }
    free(pChar);
    free(wpBuffer);
   
    PAL_Terminate();
    return PASS;
}
Exemple #10
0
	jobject ExtractProperties(JNIEnv* env)
	{
		HRESULT hr = m_pReader->QueryInterface(IID_IWMHeaderInfo3, (void**)&m_pHeaderInfo);
		if (FAILED(hr))
			return NULL;

		static jclass mapClass = (jclass) env->NewGlobalRef(env->FindClass("java/util/HashMap"));
		static jmethodID mapConstruct = env->GetMethodID(mapClass, "<init>", "()V");
		static jmethodID mapPut = env->GetMethodID(mapClass, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
		jobject rvMap = env->NewObject(mapClass, mapConstruct);
		
		WORD    cAttributes = 0;
		WCHAR*  pwszName    = NULL;
		WORD    cchName     = 0;
		BYTE*   pbValue     = NULL;
		DWORD   cbValue     = 0;
		WORD    langIndex   = 0;
		WORD    attIndex    = 0;

		WMT_ATTR_DATATYPE attType;

		// Get the total number of attributes in the file.

		hr = m_pHeaderInfo->GetAttributeCountEx(0xFFFF, &cAttributes);
		if (FAILED(hr))
			return NULL;

		// Loop through all the attributes, retrieving and displaying each.
		for(attIndex = 0; attIndex < cAttributes; attIndex++)
		{
			// Get the required buffer lengths for the name and value.

			hr = m_pHeaderInfo->GetAttributeByIndexEx(0xFFFF,
													attIndex,
													NULL,
													&cchName,
													NULL,
													NULL,
													NULL,
													&cbValue);
			if (FAILED(hr))
				continue;

			// Allocate the buffers.

			pwszName = new WCHAR[cchName];
			pbValue = new BYTE[cbValue];

			// Get the attribute.

			hr = m_pHeaderInfo->GetAttributeByIndexEx(0xFFFF,
													attIndex,
													pwszName,
													&cchName,
													&attType,
													&langIndex,
													pbValue,
													&cbValue);
			if (FAILED(hr))
			{
				delete [] pwszName;
				delete [] pbValue;
				continue;
			}

			// Display the attribute global index and name.

			// Display the attribute depending upon type.
			WCHAR* attValueName = new WCHAR[cbValue + 64];
			switch(attType)
			{
			case WMT_TYPE_QWORD:
				_ui64tow( *((QWORD*)pbValue), attValueName, 10);
				break;
			case WMT_TYPE_DWORD:
			case WMT_TYPE_WORD:
				swprintf(attValueName, L"%u", (DWORD) *pbValue);
				break;
			case WMT_TYPE_STRING:
				swprintf(attValueName, L"%s", (WCHAR*) pbValue);
				break;
			case WMT_TYPE_BOOL:
				swprintf(attValueName, L"%s", ((BOOL) *pbValue == TRUE) ? L"True" : L"False");
				break;
//			case WMT_TYPE_BINARY:
//			case WMT_TYPE_GUID:
			default:
				attValueName[0] = '\0';
				break;
			}

			if (attValueName[0] != '\0')
			{
				env->CallObjectMethod(rvMap, mapPut, env->NewString(reinterpret_cast<const jchar*>(pwszName), (int) wcslen(pwszName)), env->NewString(reinterpret_cast<const jchar*>(attValueName), (int) wcslen(attValueName)));
			}

			// Release allocated memory for the next pass.

			delete [] pwszName;
			delete [] pbValue;
			delete [] attValueName;
			cchName = 0;
			cbValue = 0;
		} // End for attIndex.

		return rvMap;
	}
Exemple #11
0
static void ProcessPageOnNotify(LPARAM lParam)
{
    LPNMHDR            pnmh;
    NMLVDISPINFOW*     pnmdi;
    LVITEMW            lvitem;
    ULONG              Index, Count;
    ULONG              ColumnIndex;
    IO_COUNTERS        iocounters;
    TIME               time;
    static const WCHAR wszFmtD[] = {'%','d',0};
    static const WCHAR wszFmt02D[] = {'%','0','2','d',0};
    static const WCHAR wszUnitK[] = {' ','K',0};

    pnmh = (LPNMHDR) lParam;
    pnmdi = (NMLVDISPINFOW*) lParam;

    if (pnmh->hwndFrom == hProcessPageListCtrl)
    {
        switch (pnmh->code)
        {
#if 0
        case LVN_ITEMCHANGED:
            ProcessPageUpdate();
            break;
#endif
            
        case LVN_GETDISPINFOW:

            if (!(pnmdi->item.mask & LVIF_TEXT))
                break;
            
            ColumnIndex = pnmdi->item.iSubItem;
            Index = pnmdi->item.iItem;

            if (ColumnDataHints[ColumnIndex] == COLUMN_IMAGENAME)
                PerfDataGetImageName(Index, pnmdi->item.pszText, pnmdi->item.cchTextMax);
            if (ColumnDataHints[ColumnIndex] == COLUMN_PID)
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetProcessId(Index));
            if (ColumnDataHints[ColumnIndex] == COLUMN_USERNAME)
                PerfDataGetUserName(Index, pnmdi->item.pszText, pnmdi->item.cchTextMax);
            if (ColumnDataHints[ColumnIndex] == COLUMN_SESSIONID)
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetSessionId(Index));
            if (ColumnDataHints[ColumnIndex] == COLUMN_CPUUSAGE)
                wsprintfW(pnmdi->item.pszText, wszFmt02D, PerfDataGetCPUUsage(Index));
            if (ColumnDataHints[ColumnIndex] == COLUMN_CPUTIME)
            {
                DWORD dwHours;
                DWORD dwMinutes;
                DWORD dwSeconds;
                ULONGLONG secs;
                static const WCHAR timefmt[] = {'%','d',':','%','0','2','d',':','%','0','2','d',0};

                time = PerfDataGetCPUTime(Index);
                secs = time.QuadPart / 10000000;
                dwHours = secs / 3600;
                dwMinutes = (secs % 3600) / 60;
                dwSeconds = (secs % 3600) % 60;
                wsprintfW(pnmdi->item.pszText, timefmt, dwHours, dwMinutes, dwSeconds);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_MEMORYUSAGE)
            {
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetWorkingSetSizeBytes(Index) / 1024);
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
                wcscat(pnmdi->item.pszText, wszUnitK);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_PEAKMEMORYUSAGE)
            {
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetPeakWorkingSetSizeBytes(Index) / 1024);
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
                wcscat(pnmdi->item.pszText, wszUnitK);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_MEMORYUSAGEDELTA)
            {
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetWorkingSetSizeDelta(Index) / 1024);
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
                wcscat(pnmdi->item.pszText, wszUnitK);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEFAULTS)
            {
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetPageFaultCount(Index));
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEFAULTSDELTA)
            {
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetPageFaultCountDelta(Index));
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_VIRTUALMEMORYSIZE)
            {
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetVirtualMemorySizeBytes(Index) / 1024);
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
                wcscat(pnmdi->item.pszText, wszUnitK);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEDPOOL)
            {
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetPagedPoolUsagePages(Index) / 1024);
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
                wcscat(pnmdi->item.pszText, wszUnitK);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_NONPAGEDPOOL)
            {
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetNonPagedPoolUsagePages(Index) / 1024);
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
                wcscat(pnmdi->item.pszText, wszUnitK);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_BASEPRIORITY)
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetBasePriority(Index));
            if (ColumnDataHints[ColumnIndex] == COLUMN_HANDLECOUNT)
            {
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetHandleCount(Index));
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_THREADCOUNT)
            {
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetThreadCount(Index));
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_USEROBJECTS)
            {
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetUSERObjectCount(Index));
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_GDIOBJECTS)
            {
                wsprintfW(pnmdi->item.pszText, wszFmtD, PerfDataGetGDIObjectCount(Index));
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_IOREADS)
            {
                PerfDataGetIOCounters(Index, &iocounters);
                /* wsprintfW(pnmdi->item.pszText, wszFmtD, iocounters.ReadOperationCount); */
                _ui64tow(iocounters.ReadOperationCount, pnmdi->item.pszText, 10);
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_IOWRITES)
            {
                PerfDataGetIOCounters(Index, &iocounters);
                /* wsprintfW(pnmdi->item.pszText, wszFmtD, iocounters.WriteOperationCount); */
                _ui64tow(iocounters.WriteOperationCount, pnmdi->item.pszText, 10);
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_IOOTHER)
            {
                PerfDataGetIOCounters(Index, &iocounters);
                /* wsprintfW(pnmdi->item.pszText, wszFmtD, iocounters.OtherOperationCount); */
                _ui64tow(iocounters.OtherOperationCount, pnmdi->item.pszText, 10);
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_IOREADBYTES)
            {
                PerfDataGetIOCounters(Index, &iocounters);
                /* wsprintfW(pnmdi->item.pszText, wszFmtD, iocounters.ReadTransferCount); */
                _ui64tow(iocounters.ReadTransferCount, pnmdi->item.pszText, 10);
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_IOWRITEBYTES)
            {
                PerfDataGetIOCounters(Index, &iocounters);
                /* wsprintfW(pnmdi->item.pszText, wszFmtD, iocounters.WriteTransferCount); */
                _ui64tow(iocounters.WriteTransferCount, pnmdi->item.pszText, 10);
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
            }
            if (ColumnDataHints[ColumnIndex] == COLUMN_IOOTHERBYTES)
            {
                PerfDataGetIOCounters(Index, &iocounters);
                /* wsprintfW(pnmdi->item.pszText, wszFmtD, iocounters.OtherTransferCount); */
                _ui64tow(iocounters.OtherTransferCount, pnmdi->item.pszText, 10);
                CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax);
            }

            break;

        case NM_RCLICK:
            Count = SendMessageW(hProcessPageListCtrl, LVM_GETITEMCOUNT, 0, 0);
            for (Index=0; Index<Count; Index++)
            {
                lvitem.mask = LVIF_STATE;
                lvitem.stateMask = LVIS_SELECTED;
                lvitem.iItem = Index;
                lvitem.iSubItem = 0;

                SendMessageW(hProcessPageListCtrl, LVM_GETITEMW, 0, (LPARAM) &lvitem);

                if (lvitem.state & LVIS_SELECTED)
                    break;
            }

            if ((SendMessageW(hProcessPageListCtrl, LVM_GETSELECTEDCOUNT, 0, 0) == 1) &&
                (PerfDataGetProcessId(Index) != 0))
            {
                ProcessPageShowContextMenu(PerfDataGetProcessId(Index));
            }

            break;

        }
    }
    else if (pnmh->hwndFrom == hProcessPageHeaderCtrl)
    {
        switch (pnmh->code)
        {
        case HDN_ITEMCLICKW:

            /*
             * FIXME: Fix the column sorting
             *
             *ListView_SortItems(hApplicationPageListCtrl, ApplicationPageCompareFunc, NULL);
             *bSortAscending = !bSortAscending;
             */

            break;

        case HDN_ITEMCHANGEDW:

            UpdateColumnDataHints();

            break;

        case HDN_ENDDRAG:

            UpdateColumnDataHints();

            break;

        }
    }

}