Skip to content

Commit

Permalink
1. Восстановим работоспособность колонки XB (битность процесса, 32/64…
Browse files Browse the repository at this point in the history
…) и включим её по умолчанию в 1 и 3 режимах.

2. В связи с #1 хака с атрибутами больше нет.
3. Убираем не до конца убранный в 166 мусор.
  • Loading branch information
alabuzhev committed Jun 14, 2016
1 parent 244f6a5 commit ee142ea
Show file tree
Hide file tree
Showing 10 changed files with 78 additions and 107 deletions.
76 changes: 26 additions & 50 deletions plugins/proclist/Pclass.cpp
Expand Up @@ -76,7 +76,6 @@ Plist::Plist()
LastUpdateTime=0;
bInit = false; // force initialize when opening the panel
*HostName = 0;
pPerfThread = 0;
dwPluginThread = GetCurrentThreadId();
PluginSettings settings(MainGuid, Info.SettingsControl);
SortMode = settings.Get(0,L"SortMode", SM_UNSORTED); //SM_CUSTOM;
Expand Down Expand Up @@ -111,9 +110,9 @@ void Plist::InitializePanelModes()
DefaultModes[NPANELMODES] =
{
/*0*/ {L"N,X15T,X16T,X17T,X18S", L"12,0,0,0,4"}, // I/O
/*1*/ {L"N,XI,XP,X0S,X6", L"0,4,2,3,9"}, // General info
/*1*/ {L"N,XI,XB,XP,X0S,X6", L"0,4,2,2,3,9"}, // General info
/*2*/ {L"N,N",L"0,0"},// Names only
/*3*/ {L"N,XI,XC,D,T",L"0,4,4,0,0"}, // Startup: PID/Date/Time
/*3*/ {L"N,XI,XB,XC,D,T",L"0,4,2,4,0,0"}, // Startup: PID/Date/Time
/*4*/ {L"N,XI,X4,X6",L"0,4,9,9"}, // Memory (basic)
/*5*/ {L"N,XI,X4,X6,X10,X12,X0,X1,X2",L"12,4,0,0,0,0,8,8,8"}, // Extended Memory/Time
/*6*/ {L"N,ZD",L"12,0"}, // Descriptions
Expand All @@ -125,9 +124,9 @@ void Plist::InitializePanelModes()
DefaultModesRemote[NPANELMODES] =
{
/*0*/ {L"N,X15T,X16T,X17T,X18S", L"12,0,0,0,4"}, // I/O
/*1*/ {L"N,XI,XP,X0S,X6", L"0,4,2,3,9"}, // General info
/*1*/ {L"N,XI,XB,XP,X0S,X6", L"0,4,2,2,3,9"}, // General info
/*2*/ {L"N,N",L"0,0"},// Names only
/*3*/ {L"N,XI,XC,D,T",L"0,4,4,0,0"}, // Startup: PID/Date/Time
/*3*/ {L"N,XI,XB,XC,D,T",L"0,4,2,4,0,0"}, // Startup: PID/Date/Time
/*4*/ {L"N,XI,X4,X6",L"0,4,9,9"}, // Memory (basic)
/*5*/ {L"N,XI,X4,X6,X10,X12,X0,X1,X2",L"12,4,0,0,0,0,8,8,8"}, // Extended Memory/Time
/*6*/ {L"N,ZD",L"12,0"}, // Descriptions
Expand Down Expand Up @@ -293,8 +292,6 @@ void Plist::GeneratePanelModes()
{
TranslateMode(ProcPanelModesLocal[iMode], (LPTSTR)PanelModesLocal[iMode].ColumnTypes);
TranslateMode(ProcPanelModesRemote[iMode], (LPTSTR)PanelModesRemote[iMode].ColumnTypes);
/*TranslateMode(ProcPanelStModesNT[iMode], PanelModesNT[iMode].StatusColumnTypes);
if(!NT) TranslateMode(ProcPanelStModes9x[iMode], PanelModes9x[iMode].StatusColumnTypes);*/
}
}

Expand Down Expand Up @@ -539,7 +536,7 @@ int Plist::GetFindData(PluginPanelItem*& pPanelItem,size_t &ItemsNumber,OPERATIO
break;
case L'c':
case L'C':
pDesc = ((ProcessDataNT *)CurItem.UserData.Data)->CommandLine;
pDesc = static_cast<ProcessData*>(CurItem.UserData.Data)->CommandLine;

break;
default:
Expand All @@ -555,10 +552,7 @@ int Plist::GetFindData(PluginPanelItem*& pPanelItem,size_t &ItemsNumber,OPERATIO
delete[] pBuf;
}

ProcessPerfData* pd = 0;

if (pPerfThread)
pd = pPerfThread->GetProcessData(pdata.dwPID, (DWORD)CurItem.NumberOfLinks);
const auto pd = pPerfThread->GetProcessData(pdata.dwPID, (DWORD)CurItem.NumberOfLinks);

const int DataOffset = sizeof(wchar_t*) * MAX_CUSTOM_COLS;
int Widths[MAX_CUSTOM_COLS];
Expand Down Expand Up @@ -603,18 +597,14 @@ int Plist::GetFindData(PluginPanelItem*& pPanelItem,size_t &ItemsNumber,OPERATIO
{
case L'P': case L'p': dwData = pdata.dwPrBase; break;
case L'I': case L'i': dwData = pdata.dwPID;

if (!pPerfThread) nBase = 16;

break;
case L'C': case L'c': dwData = pdata.dwParentPID;

if (!pPerfThread) nBase = 16;

case L'C': case L'c': dwData = pdata.dwParentPID;
break;

// case L'W': case L'w': dwData = hwnd; nBase = 16; break;
case L'T': case L't': dwData = (DWORD)CurItem.NumberOfLinks; break;
case L'B': case L'b': dwData = pdata.uAppType; break;
case L'B': case L'b': dwData = pdata.Bitness; break;

case L'G': case L'g': if (pd) dwData = pd->dwGDIObjects; break;

Expand Down Expand Up @@ -693,7 +683,7 @@ void Plist::FreeFindData(PluginPanelItem *PanelItem,int ItemsNumber)
delete PanelItem;
}

int Plist::GetFiles(PluginPanelItem *PanelItem,int ItemsNumber, int Move,WCONST WTYPE DestPath,OPERATION_MODES OpMode, _Opt& Opt)
int Plist::GetFiles(PluginPanelItem *PanelItem,int ItemsNumber, int Move, const wchar_t** DestPath,OPERATION_MODES OpMode, _Opt& Opt)
{
static const wchar_t invalid_chars[] = L":*?\\/\"<>;|";

Expand All @@ -704,14 +694,14 @@ int Plist::GetFiles(PluginPanelItem *PanelItem,int ItemsNumber, int Move,WCONST
{
PluginPanelItem &CurItem = PanelItem[I];
ProcessData *pdata=(ProcessData *)CurItem.UserData.Data;
ProcessDataNT PData;
ProcessData PData;

if (!pdata)
{
PData.dwPID = FSF.atoi(CurItem.AlternateFileName);
ProcessPerfData* ppd = pPerfThread->GetProcessData(PData.dwPID, (DWORD)CurItem.NumberOfLinks);

if (ppd && GetPDataNT(PData, *ppd))
if (ppd && GetPData(PData, *ppd))
pdata = &PData;

if (!pdata)
Expand All @@ -720,7 +710,7 @@ int Plist::GetFiles(PluginPanelItem *PanelItem,int ItemsNumber, int Move,WCONST

// may be 0 if called from FindFile
wchar_t FileName[MAX_PATH];
lstrcpyn(FileName, WDEREF DestPath, ARRAYSIZE(FileName));
lstrcpyn(FileName, *DestPath, ARRAYSIZE(FileName));

if (!(OpMode&0x10000))
{
Expand All @@ -746,34 +736,27 @@ int Plist::GetFiles(PluginPanelItem *PanelItem,int ItemsNumber, int Move,WCONST

fputc(0xFEFF, InfoFile);
wchar_t AppType[100];

if (!pPerfThread && pdata->uAppType)
FSF.sprintf(AppType,L", %d%s",pdata->uAppType,GetMsg(MBits));
else
*AppType=0;
FSF.sprintf(AppType,L", %d%s",pdata->Bitness,GetMsg(MBits));

wchar_t ModuleName[MAX_PATH];
lstrcpy(ModuleName, CurItem.FileName);
fprintf(InfoFile,L"%s %s%s\n",PrintTitle(MTitleModule),ModuleName,AppType);

if (pdata && *pdata->FullPath)
{
fprintf(InfoFile,L"%s %s\n",PrintTitle(MTitleFullPath),OUT_STRING(pdata->FullPath));
fprintf(InfoFile,L"%s %s\n",PrintTitle(MTitleFullPath), pdata->FullPath);
PrintVersionInfo(InfoFile, pdata->FullPath);
}

fprintf(InfoFile, pPerfThread ? L"%s %d\n":L"%s %08X\n",PrintTitle(MTitlePID),pdata->dwPID);
fprintf(InfoFile, L"%s %d\n", PrintTitle(MTitlePID), pdata->dwPID);
fprintf(InfoFile, L"%s ", PrintTitle(MTitleParentPID));

if (pPerfThread)
{
Lock l(pPerfThread);
ProcessPerfData* pParentData = pPerfThread->GetProcessData(pdata->dwParentPID, 0);
wchar_t* pName = pdata->dwParentPID && pParentData ? pParentData->ProcessName : 0;
fprintf(InfoFile, pName ? L"%u (%s)\n" : L"%u\n",pdata->dwParentPID, pName);
}
else
fprintf(InfoFile, L"%08X\n",pdata->dwParentPID);

fprintf(InfoFile,L"%s %d\n",PrintTitle(MTitlePriority),pdata->dwPrBase);
fprintf(InfoFile,L"%s %u\n",PrintTitle(MTitleThreads),CurItem.NumberOfLinks);
Expand Down Expand Up @@ -811,9 +794,9 @@ int Plist::GetFiles(PluginPanelItem *PanelItem,int ItemsNumber, int Move,WCONST

if (!*HostName) // local only
{
if (*((ProcessDataNT*)pdata)->CommandLine)
if (*pdata->CommandLine)
{
fprintf(InfoFile, L"\n%s:\n%s\n", GetMsg(MCommandLine), OUT_STRING(((ProcessDataNT*)pdata)->CommandLine));
fprintf(InfoFile, L"\n%s:\n%s\n", GetMsg(MCommandLine), pdata->CommandLine);
}

DebugToken token;
Expand Down Expand Up @@ -845,7 +828,7 @@ int Plist::GetFiles(PluginPanelItem *PanelItem,int ItemsNumber, int Move,WCONST
}
}// NT && !*HostName

if (Opt.ExportPerformance && pPerfThread)
if (Opt.ExportPerformance)
DumpNTCounters(InfoFile, *pPerfThread, pdata->dwPID, (DWORD)CurItem.NumberOfLinks);

if (!*HostName && pdata->hwnd)
Expand Down Expand Up @@ -1034,16 +1017,15 @@ int Plist::DeleteFiles(PluginPanelItem *PanelItem,int ItemsNumber,OPERATION_MODE
}
}

if (pPerfThread)
pPerfThread->SmartReread();
pPerfThread->SmartReread();

return TRUE;
}


int Plist::ProcessEvent(intptr_t Event,void *Param)
{
if (Event==FE_IDLE && (pPerfThread && pPerfThread->Updated() /*|| !pPerfThread&&GetTickCount()-LastUpdateTime>1000*/))
if (Event==FE_IDLE && (pPerfThread->Updated() /*|| !pPerfThread&&GetTickCount()-LastUpdateTime>1000*/))
Reread();

if (Event==FE_CLOSE)
Expand Down Expand Up @@ -1170,9 +1152,7 @@ int Plist::ProcessKey(const INPUT_RECORD *Rec)

if ((ControlState&(LEFT_CTRL_PRESSED|RIGHT_CTRL_PRESSED)) && Key==L'R')
{
if (pPerfThread)
pPerfThread->SmartReread();

pPerfThread->SmartReread();
return FALSE;
}

Expand Down Expand Up @@ -1274,15 +1254,15 @@ int Plist::ProcessKey(const INPUT_RECORD *Rec)

wchar_t FileName[MAX_PATH];
FSF.MkTemp(FileName, ARRAYSIZE(FileName), L"prc");
WCONST wchar_t *lpFileName=FileName;
const wchar_t *lpFileName=FileName;
Size=Info.PanelControl(this,FCTL_GETPANELITEM,static_cast<int>(pi.CurrentItem),0);
PPI=(PluginPanelItem*)new char[Size];
if (PPI)
{
FarGetPluginPanelItem gpi={sizeof(FarGetPluginPanelItem), Size, PPI};
Info.PanelControl(this,FCTL_GETPANELITEM,static_cast<int>(pi.CurrentItem),&gpi);

if (GetFiles(PPI, 1, 0, WADDR lpFileName, OPM_VIEW|0x10000, LocalOpt))
if (GetFiles(PPI, 1, 0, &lpFileName, OPM_VIEW|0x10000, LocalOpt))
{
//TODO: viewer crashed on exit!
Info.Viewer(FileName,PPI->FileName, 0,0,-1,-1, VF_NONMODAL|VF_DELETEONCLOSE,CP_DEFAULT);
Expand Down Expand Up @@ -1534,8 +1514,7 @@ int Plist::ProcessKey(const INPUT_RECORD *Rec)
}
Control(FCTL_SETSELECTION,&PInfo);
*/
if (pPerfThread)
pPerfThread->SmartReread();
pPerfThread->SmartReread();

Reread();
return TRUE;
Expand Down Expand Up @@ -1590,7 +1569,7 @@ int Plist::ProcessKey(const INPUT_RECORD *Rec)
// {MUseSortGroups,0}, {MShowSelectedFirst,-1}
};
#define NSTATICITEMS (ARRAYSIZE(StaticItems))
int nMoreData = pPerfThread ? ARRAYSIZE(Counters) + 1 : 0;
int nMoreData = ARRAYSIZE(Counters) + 1;
PanelInfo pi = {sizeof(PanelInfo)};
Info.PanelControl(this,FCTL_GETPANELINFO,0,(void*)&pi);
wchar_t cIndicator = pi.Flags&PFLAGS_REVERSESORTORDER ? L'-' : L'+';
Expand Down Expand Up @@ -1625,8 +1604,6 @@ int Plist::ProcessKey(const INPUT_RECORD *Rec)

int nItems = NSTATICITEMS;

if (pPerfThread)
{
Items[nItems++].Flags |= MIF_SEPARATOR;
const PerfLib* pl = pPerfThread->GetPerfLib();

Expand Down Expand Up @@ -1667,7 +1644,6 @@ int Plist::ProcessKey(const INPUT_RECORD *Rec)
nItems++;
}
}
}

// Show sort menu
int rc= Menu(FMENU_AUTOHIGHLIGHT|FMENU_WRAPMODE, GetMsg(MSortBy), 0, 0, 0, Items, nItems);
Expand Down
23 changes: 10 additions & 13 deletions plugins/proclist/Plist.cpp
Expand Up @@ -276,9 +276,9 @@ HANDLE OpenProcessForced(DebugToken* token, DWORD dwFlags, DWORD dwProcessId, BO
return hProcess;
}

bool GetPDataNT(ProcessDataNT& DATA, ProcessPerfData& pd)
bool GetPData(ProcessData& DATA, ProcessPerfData& pd)
{
DATA.Size = sizeof(ProcessDataNT);
DATA.Size = sizeof(ProcessData);
DATA.dwPID = pd.dwProcessId;
DATA.dwPrBase = pd.dwProcessPriority;
DATA.dwParentPID = pd.dwCreatingPID;
Expand All @@ -289,6 +289,7 @@ bool GetPDataNT(ProcessDataNT& DATA, ProcessPerfData& pd)

lstrcpyn(DATA.FullPath, pFullPath, ARRAYSIZE(DATA.FullPath));
lstrcpyn(DATA.CommandLine, pd.CommandLine, ARRAYSIZE(DATA.CommandLine));
DATA.Bitness = pd.Bitness;
return true;
}

Expand Down Expand Up @@ -329,8 +330,7 @@ BOOL GetList(PluginPanelItem* &pPanelItem,size_t &ItemsNumber,PerfThread& Thread
lstrcpy((wchar_t*)CurItem.Owner, pd.Owner);
}

CurItem.UserData.Data = new ProcessDataNT;
memset(CurItem.UserData.Data, 0, sizeof(ProcessDataNT));
CurItem.UserData.Data = new ProcessData();

if (!pd.ftCreation.dwHighDateTime && pd.dwElapsedTime)
{
Expand All @@ -353,21 +353,18 @@ BOOL GetList(PluginPanelItem* &pPanelItem,size_t &ItemsNumber,PerfThread& Thread
FSF.itoa(pd.dwProcessId, (wchar_t*)CurItem.AlternateFileName, 10);

CurItem.NumberOfLinks = pd.dwThreads;
GetPDataNT(*(ProcessDataNT*)CurItem.UserData.Data, pd);
GetPData(*static_cast<ProcessData*>(CurItem.UserData.Data), pd);

if (pd.dwProcessId==0 && pd.dwThreads >5) //_Total
CurItem.FileAttributes |= FILE_ATTRIBUTE_HIDDEN;

if (pd.bProcessIsWow64)
CurItem.FileAttributes |= FILE_ATTRIBUTE_READONLY;
}//for

return TRUE;
}

void GetOpenProcessData(HANDLE hProcess, wchar_t* pProcessName, DWORD cbProcessName,
wchar_t* pFullPath, DWORD cbFullPath, wchar_t* pCommandLine, DWORD cbCommandLine,
wchar_t** ppEnvStrings, CURDIR_STR_TYPE** psCurDir)
wchar_t** ppEnvStrings, wchar_t** psCurDir)
{
ModuleData Data={};
char *pEnd;
Expand Down Expand Up @@ -649,7 +646,7 @@ wchar_t* PrintTime(ULONGLONG ul100ns, bool bDays)

wchar_t* PrintNTUptime(void*p)
{
return PrintTime((ULONG)((ProcessDataNT*)p)->dwElapsedTime);
return PrintTime((ULONG)(static_cast<ProcessData*>(p))->dwElapsedTime);
}

void DumpNTCounters(HANDLE InfoFile, PerfThread& Thread, DWORD dwPid, DWORD dwThreads)
Expand Down Expand Up @@ -712,14 +709,14 @@ void DumpNTCounters(HANDLE InfoFile, PerfThread& Thread, DWORD dwPid, DWORD dwTh

void PrintNTCurDirAndEnv(HANDLE InfoFile, HANDLE hProcess, BOOL bExportEnvironment)
{
CURDIR_STR_TYPE* sCurDir=0;
wchar_t* sCurDir=0;
wchar_t *pEnvStrings = 0;
GetOpenProcessData(hProcess, 0,0,0,0,0,0, bExportEnvironment ? &pEnvStrings : 0, &sCurDir);
fputc(L'\n',InfoFile);

if (sCurDir)
{
fprintf(InfoFile,L"%s %s\n\n",Plist::PrintTitle(MCurDir),OUT_CVT(sCurDir));
fprintf(InfoFile, L"%s %s\n\n", Plist::PrintTitle(MCurDir), sCurDir);
delete[] sCurDir;
}

Expand Down Expand Up @@ -784,7 +781,7 @@ void PrintModules(HANDLE InfoFile, DWORD dwPID, _Opt& Opt)
if (ReadProcessMemory(hProcess, Data.FullDllName.Buffer, wszModuleName, sz,0))
{
int len2=0;
fprintf2(len2, InfoFile, L" %s", OUT_STRING(wszModuleName));
fprintf2(len2, InfoFile, L" %s", wszModuleName);
len += len2;
wchar_t *pVersion, *pDesc;
LPBYTE pBuf;
Expand Down
11 changes: 3 additions & 8 deletions plugins/proclist/ProcEng.hlf
Expand Up @@ -271,14 +271,11 @@ types can be used in this plugin:
#XI# - Process ID
#XC# - Creating (parent) process ID
#XT# - Number of threads
#XG# - GDI Objects (local Win2000/XP only)
#XU# - USER Objects (local Win2000/XP only)
#XB# - 16/32 bits (Windows 9x/ME only)
#XG# - GDI Objects (local only)
#XU# - USER Objects (local only)
#XB# - 16/32 bits
#X0...X21[S][T]# - performance counters (see below).

Under Win9x/ME, performance counters are used only for remote process
browsing.

#Description columns:#

#ZP# - Full pathname
Expand Down Expand Up @@ -360,8 +357,6 @@ $^#Configuration#

#Performance data# Output all performance data counters for
this process.
Under Win9x/ME is used only for remote
process browsing.

#Handles# List all handles opened by the process.
Warning: this uses undocumented features
Expand Down

0 comments on commit ee142ea

Please sign in to comment.