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)); }
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)); }
/////////////////////////////////////////////////////////////////////////////// // 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(); }
wchar_t *Port::ull_to_string(wchar_t *buffer, ulonglong ull) { _ui64tow(ull, buffer, 10); return buffer; }
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; }
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; }
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; }
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; }
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; }
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; } } }