mirror of
https://github.com/reactos/reactos.git
synced 2025-04-15 01:47:30 +00:00
[TASKMGR]
- Show programs command line in taskmgr. Patch by Ismael Ferreras Morezuelas with minor modifications by me. - int nMaxCount --> ULONG nMaxCount (that makes everything clearer and removes MSVC warnings). CORE-5467 #resolve #comment Feature committed in revision 65469, cheers ;) svn path=/trunk/; revision=65469
This commit is contained in:
parent
4a61f5ee5b
commit
f43bb8d7df
34 changed files with 232 additions and 21 deletions
|
@ -54,6 +54,7 @@ const PresetColumnEntry ColumnPresets[COLUMN_NMAX] = {
|
|||
DECLARE_COLUMN_PRESET(IOREADBYTES, 70, FALSE)
|
||||
DECLARE_COLUMN_PRESET(IOWRITEBYTES, 70, FALSE)
|
||||
DECLARE_COLUMN_PRESET(IOOTHERBYTES, 70, FALSE)
|
||||
DECLARE_COLUMN_PRESET(COMMANDLINE, 450, FALSE)
|
||||
};
|
||||
|
||||
static int InsertColumn(int nCol, LPCWSTR lpszColumnHeading, int nFormat, int nWidth, int nSubItem);
|
||||
|
|
|
@ -47,7 +47,8 @@
|
|||
#define COLUMN_IOREADBYTES 22
|
||||
#define COLUMN_IOWRITEBYTES 23
|
||||
#define COLUMN_IOOTHERBYTES 24
|
||||
#define COLUMN_NMAX 25
|
||||
#define COLUMN_COMMANDLINE 25
|
||||
#define COLUMN_NMAX 26
|
||||
|
||||
/*
|
||||
* temporary fix:
|
||||
|
@ -104,6 +105,7 @@ extern const PresetColumnEntry ColumnPresets[COLUMN_NMAX];
|
|||
#define Column_IOWriteBytes Columns[COLUMN_IOWRITEBYTES]
|
||||
#define Column_IOOther Columns[COLUMN_IOOTHER]
|
||||
#define Column_IOOtherBytes Columns[COLUMN_IOOTHERBYTES]
|
||||
#define Column_CommandLine Columns[COLUMN_COMMANDLINE]
|
||||
|
||||
void ProcessPage_OnViewSelectColumns(void);
|
||||
void AddColumns(void);
|
||||
|
|
|
@ -315,6 +315,7 @@ BEGIN
|
|||
CONTROL "В/И байтове за писане", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 127, 65, 10
|
||||
CONTROL "Други В/И", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 138, 115, 10
|
||||
CONTROL "Други В/И байтове", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 149, 115, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -410,6 +411,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "В/И прочетени байтове"
|
||||
IDS_TAB_IOWRITESBYTES "В/И записани байтове"
|
||||
IDS_TAB_IOOTHERBYTES "В/И други байтове"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Избор на стълбове..."
|
||||
IDS_MENU_16BITTASK "&Показване на 16битови задачи"
|
||||
IDS_MENU_WINDOWS "&Прозорци"
|
||||
|
|
|
@ -315,6 +315,7 @@ BEGIN
|
|||
CONTROL "I/O zapsané bajty", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 72, 10
|
||||
CONTROL "I/O ostatní", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 48, 10
|
||||
CONTROL "I/O ostatní bajty", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -410,6 +411,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O přečtené bajty"
|
||||
IDS_TAB_IOWRITESBYTES "I/O zapsané bajty"
|
||||
IDS_TAB_IOOTHERBYTES "I/O ostatní bajty"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Vybrat sloupce..."
|
||||
IDS_MENU_16BITTASK "&Zobrazit 16-bitové úlohy"
|
||||
IDS_MENU_WINDOWS "&Okna"
|
||||
|
|
|
@ -315,6 +315,7 @@ BEGIN
|
|||
CONTROL "I/O Skrevet Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
|
||||
CONTROL "I/O Andet", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "I/O Andre Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -410,6 +411,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O Read Bytes"
|
||||
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
|
||||
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
|
||||
IDS_MENU_16BITTASK "&Show 16-bit tasks"
|
||||
IDS_MENU_WINDOWS "&Windows"
|
||||
|
|
|
@ -317,6 +317,7 @@ BEGIN
|
|||
CONTROL "E/A-Bytes (Schreiben)", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 127, 105, 10 // 107
|
||||
CONTROL "E/A (Andere)", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 138, 105, 10 // 107
|
||||
CONTROL "E/A-Bytes (Andere)", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 149, 110, 10 // 107
|
||||
CONTROL "Befeh&lszeile", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 160, 65, 10 // 107
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -412,6 +413,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "E/A-Bytes (Lesen)"
|
||||
IDS_TAB_IOWRITESBYTES "E/A-Bytes (Schreiben)"
|
||||
IDS_TAB_IOOTHERBYTES "E/A-Bytes (Andere)"
|
||||
IDS_TAB_COMMANDLINE "Befehlszeile"
|
||||
IDS_MENU_SELECTCOLUMNS "&Spalten auswählen..."
|
||||
IDS_MENU_16BITTASK "&16-Bit-Tasks anzeigen"
|
||||
IDS_MENU_WINDOWS "&Fenster"
|
||||
|
|
|
@ -317,6 +317,7 @@ BEGIN
|
|||
CONTROL "I/O Write Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
|
||||
CONTROL "I/O Other", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "I/O Other Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -412,6 +413,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O Read Bytes"
|
||||
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
|
||||
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
|
||||
IDS_MENU_16BITTASK "&Show 16-bit tasks"
|
||||
IDS_MENU_WINDOWS "&Windows"
|
||||
|
|
|
@ -313,6 +313,7 @@ BEGIN
|
|||
CONTROL "I/O Write Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
|
||||
CONTROL "I/O Other", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "I/O Other Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -408,6 +409,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O Read Bytes"
|
||||
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
|
||||
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
|
||||
IDS_MENU_16BITTASK "&Show 16-bit tasks"
|
||||
IDS_MENU_WINDOWS "&Windows"
|
||||
|
|
|
@ -292,7 +292,7 @@ BEGIN
|
|||
DEFPUSHBUTTON "Aceptar", IDOK, 126, 178, 50, 14 // 84
|
||||
PUSHBUTTON "Cancelar", IDCANCEL, 180, 178, 50, 14 // 138
|
||||
LTEXT "Seleccione las columnas que aparecerán en la página de Procesos del Administrador de tareas.", IDC_STATIC, 7, 7, 221, 17 // 181
|
||||
CONTROL "Nombre de ruta de la &imagen", IDC_IMAGENAME, "Button", BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP, 7, 28, 88, 10 // 56
|
||||
CONTROL "Nombre de ruta de la &imagen", IDC_IMAGENAME, "Button", BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP, 7, 28, 105, 10 // 56
|
||||
CONTROL "Identificador de proceso (&PID)", IDC_PID, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 39, 120, 10 // 88
|
||||
CONTROL "Uso de &CPU", IDC_CPUUSAGE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 50, 53, 10
|
||||
CONTROL "Ti&empo de CPU", IDC_CPUTIME, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 61, 65, 10 // 48
|
||||
|
@ -301,8 +301,8 @@ BEGIN
|
|||
CONTROL "Uso má&ximo de la memoria", IDC_PEAKMEMORYUSAGE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 94, 120, 10 // 82
|
||||
CONTROL "Err&ores de página", IDC_PAGEFAULTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 105, 80, 10 // 53
|
||||
CONTROL "O&bjetos de USUARIO", IDC_USEROBJECTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 116, 80, 10 // 62
|
||||
CONTROL "Lecturas de E/S", IDC_IOREADS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 127, 60, 10 // 49
|
||||
CONTROL "Bytes de lectura de E/S", IDC_IOREADBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 138, 65, 10
|
||||
CONTROL "Lecturas de E/S", IDC_IOREADS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 127, 70, 10 // 49
|
||||
CONTROL "Bytes de lectura de E/S", IDC_IOREADBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 138, 85, 10
|
||||
CONTROL "I&d. de sesión", IDC_SESSIONID, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 149, 65, 10 // 50
|
||||
CONTROL "&Nombre de usuario", IDC_USERNAME, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 160, 75, 10 // 51
|
||||
CONTROL "Diferencia de erro&res de página", IDC_PAGEFAULTSDELTA, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 28, 120, 10 // 107, 60
|
||||
|
@ -310,13 +310,14 @@ BEGIN
|
|||
CONTROL "B&loque paginado", IDC_PAGEDPOOL, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 50, 67, 10 // 107, 53
|
||||
CONTROL "Blo&que no paginado", IDC_NONPAGEDPOOL, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 61, 115, 10 // 107
|
||||
CONTROL "P&rioridad base", IDC_BASEPRIORITY, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 72, 80, 10 // 107
|
||||
CONTROL "&Recuento de identificadores", IDC_HANDLECOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 83, 59, 10 // 107
|
||||
CONTROL "Nú&mero de subprocesos", IDC_THREADCOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 94, 59, 10 // 107
|
||||
CONTROL "&Recuento de identificadores", IDC_HANDLECOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 83, 105, 10 // 107
|
||||
CONTROL "Nú&mero de subprocesos", IDC_THREADCOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 94, 85, 10 // 107
|
||||
CONTROL "Objetos &GDI", IDC_GDIOBJECTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 105, 55, 10 // 107
|
||||
CONTROL "Escrituras de E/S", IDC_IOWRITES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 116, 90, 10 // 107
|
||||
CONTROL "Bytes de escritura de E/S", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 127, 105, 10 // 107
|
||||
CONTROL "Otros de E/S", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 138, 60, 10
|
||||
CONTROL "Otros bytes de E/S", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 149, 75, 10
|
||||
CONTROL "&Línea de comandos", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 160, 75, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -412,6 +413,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "Bytes de lectura de E/S"
|
||||
IDS_TAB_IOWRITESBYTES "Bytes de escritura de E/S"
|
||||
IDS_TAB_IOOTHERBYTES "Otros bytes de E/S"
|
||||
IDS_TAB_COMMANDLINE "Línea de comandos"
|
||||
IDS_MENU_SELECTCOLUMNS "&Seleccionar columnas..."
|
||||
IDS_MENU_16BITTASK "Mos&trar tareas de 16-bit"
|
||||
IDS_MENU_WINDOWS "&Ventanas"
|
||||
|
|
|
@ -317,6 +317,7 @@ BEGIN
|
|||
CONTROL "Octets d'écriture E/S", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 127, 108, 10
|
||||
CONTROL "Autres E/S", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 138, 108, 10
|
||||
CONTROL "Octets d'autres E/S", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 149, 108, 10
|
||||
CONTROL "&Ligne de commande", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 160, 95, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -412,6 +413,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "Octets de lecture E/S"
|
||||
IDS_TAB_IOWRITESBYTES "Octets d'écriture E/S"
|
||||
IDS_TAB_IOOTHERBYTES "Octets d'autres E/S"
|
||||
IDS_TAB_COMMANDLINE "Ligne de commande"
|
||||
IDS_MENU_SELECTCOLUMNS "&Sélectionner les colonnes..."
|
||||
IDS_MENU_16BITTASK "&Afficher les tâches 16 bits"
|
||||
IDS_MENU_WINDOWS "&Fenêtres"
|
||||
|
|
|
@ -317,6 +317,7 @@ BEGIN
|
|||
CONTROL "I/O Write Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
|
||||
CONTROL "I/O Other", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "I/O Other Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -412,6 +413,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O Read Bytes"
|
||||
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
|
||||
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
|
||||
IDS_MENU_16BITTASK "&Show 16-bit tasks"
|
||||
IDS_MENU_WINDOWS "&Windows"
|
||||
|
|
|
@ -317,6 +317,7 @@ BEGIN
|
|||
CONTROL "I/O Írott bájtok", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
|
||||
CONTROL "Egyéb I/O mûveletek", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "Egyéb I/O mûveletek bájtjai", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -412,6 +413,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O Olvasott bájtok"
|
||||
IDS_TAB_IOWRITESBYTES "I/O Írott bájtok"
|
||||
IDS_TAB_IOOTHERBYTES "Egyéb I/O bájtok"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Oszlopok kiválasztása..."
|
||||
IDS_MENU_16BITTASK "&16bites feladatok megjelenítése"
|
||||
IDS_MENU_WINDOWS "&Ablak"
|
||||
|
|
|
@ -317,6 +317,7 @@ BEGIN
|
|||
CONTROL "I/O Write Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
|
||||
CONTROL "I/O Other", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "I/O Other Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -412,6 +413,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O Read Bytes"
|
||||
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
|
||||
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
|
||||
IDS_MENU_16BITTASK "&Show 16-bit tasks"
|
||||
IDS_MENU_WINDOWS "&Windows"
|
||||
|
|
|
@ -315,6 +315,7 @@ BEGIN
|
|||
CONTROL "Scritture I/O Byte", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 69, 10
|
||||
CONTROL "Altro I/O", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "Altro I/O Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "&Linea di comando", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -410,6 +411,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O Letture Bytes"
|
||||
IDS_TAB_IOWRITESBYTES "I/O Scritture Bytes"
|
||||
IDS_TAB_IOOTHERBYTES "I/O Altro Bytes"
|
||||
IDS_TAB_COMMANDLINE "Linea di comando"
|
||||
IDS_MENU_SELECTCOLUMNS "&Selezione Colonne..."
|
||||
IDS_MENU_16BITTASK "&Mostra task 16-bit"
|
||||
IDS_MENU_WINDOWS "&Finestre"
|
||||
|
|
|
@ -315,6 +315,7 @@ BEGIN
|
|||
CONTROL "I/O 書き込みバイト数", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
|
||||
CONTROL "I/O その他", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "I/O その他のバイト数", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -410,6 +411,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O 読み取りバイト数"
|
||||
IDS_TAB_IOWRITESBYTES "I/O 書き込みバイト数"
|
||||
IDS_TAB_IOOTHERBYTES "I/O その他のバイト数"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "列の選択(&S)..."
|
||||
IDS_MENU_16BITTASK "16 ビット タスクの表示(&S)"
|
||||
IDS_MENU_WINDOWS "ウィンドウ(&W)"
|
||||
|
|
|
@ -317,6 +317,7 @@ BEGIN
|
|||
CONTROL "I/O 쓰기 바이트", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
|
||||
CONTROL "I/O 기타", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "I/O 기타 바이트", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -412,6 +413,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O 읽기 바이트"
|
||||
IDS_TAB_IOWRITESBYTES "I/O 쓰기 바이트"
|
||||
IDS_TAB_IOOTHERBYTES "I/O 기타 바이트"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "열 선택(&S)"
|
||||
IDS_MENU_16BITTASK "16비트 작업 보이기(&S)"
|
||||
IDS_MENU_WINDOWS "창(&W)"
|
||||
|
|
|
@ -315,6 +315,7 @@ BEGIN
|
|||
CONTROL "I/O: geschreven bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 127, 100, 10
|
||||
CONTROL "I/O: overig", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 138, 100, 10
|
||||
CONTROL "I/O: overige bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 149, 100, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -410,6 +411,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O: gelezen bytes"
|
||||
IDS_TAB_IOWRITESBYTES "I/O: geschreven bytes"
|
||||
IDS_TAB_IOOTHERBYTES "I/O: overige bytes"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Kolommen selecteren..."
|
||||
IDS_MENU_16BITTASK "16-&bits taken weergeven"
|
||||
IDS_MENU_WINDOWS "&Vensters"
|
||||
|
|
|
@ -315,6 +315,7 @@ BEGIN
|
|||
CONTROL "I/O skrevne byte", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 70, 10
|
||||
CONTROL "I/O Annet", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "I/O Andre byte", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -410,6 +411,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O Leser Byte"
|
||||
IDS_TAB_IOWRITESBYTES "I/O Skriver Byte"
|
||||
IDS_TAB_IOOTHERBYTES "I/O Annet Byte"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Velg kolonner..."
|
||||
IDS_MENU_16BITTASK "&Vis 16-biter oppgave"
|
||||
IDS_MENU_WINDOWS "&Vinduer"
|
||||
|
|
|
@ -323,6 +323,7 @@ BEGIN
|
|||
CONTROL "Zapisy We/Wy w bajtach", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
|
||||
CONTROL "Inne We/Wy", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "Inne We/Wy w bajtach", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Linia poleceń", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -418,6 +419,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "Odczyty We/Wy w bajtach"
|
||||
IDS_TAB_IOWRITESBYTES "Zapisy We/Wy w bajtach"
|
||||
IDS_TAB_IOOTHERBYTES "Inne We/Wy w bajtach"
|
||||
IDS_TAB_COMMANDLINE "Linia poleceń"
|
||||
IDS_MENU_SELECTCOLUMNS "Wybierz &kolumny..."
|
||||
IDS_MENU_16BITTASK "Pokaż 16-&bitowe zadania"
|
||||
IDS_MENU_WINDOWS "O&kna"
|
||||
|
|
|
@ -315,6 +315,7 @@ BEGIN
|
|||
CONTROL "Bytes de gravação de E/S", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 127, 97, 10
|
||||
CONTROL "Outras E/S", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 138, 47, 10
|
||||
CONTROL "Outros bytes de E/S", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 149, 77, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 160, 95, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -410,6 +411,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "Bytes de leitura de E/S"
|
||||
IDS_TAB_IOWRITESBYTES "Bytes de gravação de E/S"
|
||||
IDS_TAB_IOOTHERBYTES "Outros Bytes de E/S"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Selecionar colunas..."
|
||||
IDS_MENU_16BITTASK "&Exibir tarefas de 16 bits"
|
||||
IDS_MENU_WINDOWS "&Janelas"
|
||||
|
|
|
@ -321,6 +321,7 @@ BEGIN
|
|||
CONTROL "In/Ex octeți scriși", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 127, 110, 10
|
||||
CONTROL "In/Ex altceva", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 138, 110, 10
|
||||
CONTROL "In/Ex octeți din altceva", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 149, 110, 10
|
||||
CONTROL "&Linia de comandă", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -416,6 +417,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "In/Ex octeți citiți"
|
||||
IDS_TAB_IOWRITESBYTES "In/Ex octeți scriși"
|
||||
IDS_TAB_IOOTHERBYTES "In/Ex octeți din altceva"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Selectare coloane…"
|
||||
IDS_MENU_16BITTASK "Afișează activități pe 16 &biți"
|
||||
IDS_MENU_WINDOWS "F&erestre"
|
||||
|
|
|
@ -317,6 +317,7 @@ BEGIN
|
|||
CONTROL "Записано байт", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
|
||||
CONTROL "Прочий ввод-вывод", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 90, 10
|
||||
CONTROL "Прочих байт при вводе-выводе", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 122, 10
|
||||
CONTROL "Коммандная строка", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 90, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -412,6 +413,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "Прочитано байт"
|
||||
IDS_TAB_IOWRITESBYTES "Записано байт"
|
||||
IDS_TAB_IOOTHERBYTES "Прочих байт при вводе-выводе"
|
||||
IDS_TAB_COMMANDLINE "Коммандная строка"
|
||||
IDS_MENU_SELECTCOLUMNS "В&ыбрать столбцы..."
|
||||
IDS_MENU_16BITTASK "&Отображать 16-разрядные задачи"
|
||||
IDS_MENU_WINDOWS "&Окна"
|
||||
|
|
|
@ -317,6 +317,7 @@ BEGIN
|
|||
CONTROL "Vstup a výstup - zapísané bajty", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 127, 112, 10
|
||||
CONTROL "Vstup a výstup - iné", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 138, 77, 10
|
||||
CONTROL "Vstup a výstup - iné bajty", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 149, 97, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 160, 95, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -412,6 +413,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "Vstup a výstup - prečítané bajty"
|
||||
IDS_TAB_IOWRITESBYTES "Vstup a výstup - zapísané bajty"
|
||||
IDS_TAB_IOOTHERBYTES "Vstup a výstup - iné bajty"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Vybrať stĺpce..."
|
||||
IDS_MENU_16BITTASK "&Zobraziť 16-bitové úlohy"
|
||||
IDS_MENU_WINDOWS "&Okna"
|
||||
|
|
|
@ -317,6 +317,7 @@ BEGIN
|
|||
CONTROL "Shkruan I/O Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
|
||||
CONTROL "I/O te tjere", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "I/O Byte te tjere", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -412,6 +413,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O Lexo Bytes"
|
||||
IDS_TAB_IOWRITESBYTES "I/O Shkruaj Bytes"
|
||||
IDS_TAB_IOOTHERBYTES "I/O te tjere Bytes"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "Zgjidh kolonat..."
|
||||
IDS_MENU_16BITTASK "&Shfaq 16-bit tasks"
|
||||
IDS_MENU_WINDOWS "Dritare"
|
||||
|
|
|
@ -317,6 +317,7 @@ BEGIN
|
|||
CONTROL "I/O, &antal tecken skrivna", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 127, 113, 10
|
||||
CONTROL "And&ra I/O åtgärder", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 138, 89, 10
|
||||
CONTROL "Antal tecken, andra I/O åtgärder", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 149, 141, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 160, 95, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -412,6 +413,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "Antal tecken lästa, andra I/O-åtgärder"
|
||||
IDS_TAB_IOWRITESBYTES "Antal tecken skrivna, andra I/O-åtgärder"
|
||||
IDS_TAB_IOOTHERBYTES "I/O, antal tecken"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Välj kolumner..."
|
||||
IDS_MENU_16BITTASK "&Visa 16-bitsprocesser"
|
||||
IDS_MENU_WINDOWS "&Fönster"
|
||||
|
|
|
@ -315,6 +315,7 @@ BEGIN
|
|||
CONTROL "G/Ç Yazma Çokluları", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
|
||||
CONTROL "G/Ç Başka", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "G/Ç Başka Çoklular", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -410,6 +411,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "G/Ç Okuma Çokluları"
|
||||
IDS_TAB_IOWRITESBYTES "G/Ç Yazma Çokluları"
|
||||
IDS_TAB_IOOTHERBYTES "G/Ç Başka Çoklular"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "&Dikeçleri Seç..."
|
||||
IDS_MENU_16BITTASK "&16 Bitlik Görevleri Göster"
|
||||
IDS_MENU_WINDOWS "&Pencereler"
|
||||
|
|
|
@ -315,6 +315,7 @@ BEGIN
|
|||
CONTROL "Записано байтів", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 67, 10
|
||||
CONTROL "Інший ввід-вивід", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 71, 10
|
||||
CONTROL "Інших байтів при вводі-виводі", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 114, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -410,6 +411,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "Прочитано байтів"
|
||||
IDS_TAB_IOWRITESBYTES "Записано байтів"
|
||||
IDS_TAB_IOOTHERBYTES "Інших байтів під час вводу-виводу"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "В&ибрати стовпці..."
|
||||
IDS_MENU_16BITTASK "&Відображати 16-розрядні завдання"
|
||||
IDS_MENU_WINDOWS "В&ікна"
|
||||
|
|
|
@ -321,6 +321,7 @@ BEGIN
|
|||
CONTROL "I/O 写入字节", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
|
||||
CONTROL "I/O 其他", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "I/O 其他字节", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -416,6 +417,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O Read Bytes"
|
||||
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
|
||||
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "选择列(&S)..."
|
||||
IDS_MENU_16BITTASK "显示 16 位任务(&S)"
|
||||
IDS_MENU_WINDOWS "窗口(&W)"
|
||||
|
|
|
@ -323,6 +323,7 @@ BEGIN
|
|||
CONTROL "I/O 寫入位元組", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
|
||||
CONTROL "其他 I/O", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
|
||||
CONTROL "其他 I/O 位元組", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
|
||||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
@ -418,6 +419,7 @@ BEGIN
|
|||
IDS_TAB_IOREADBYTES "I/O 讀取位元組"
|
||||
IDS_TAB_IOWRITESBYTES "I/O 寫入位元組"
|
||||
IDS_TAB_IOOTHERBYTES "其他 I/O 位元組"
|
||||
IDS_TAB_COMMANDLINE "Command Line"
|
||||
IDS_MENU_SELECTCOLUMNS "選擇列(&S)..."
|
||||
IDS_MENU_16BITTASK "顯示 16 位工作(&S)"
|
||||
IDS_MENU_WINDOWS "窗口(&W)"
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
*
|
||||
* perfdata.c
|
||||
*
|
||||
* Copyright (C) 1999 - 2001 Brian Palmer <brianp@reactos.org>
|
||||
* Copyright (C) 1999 - 2001 Brian Palmer <brianp@reactos.org>
|
||||
* Copyright (C) 2014 Ismael Ferreras Morezuelas <swyterzone+ros@gmail.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -26,11 +27,12 @@
|
|||
#include <aclapi.h>
|
||||
|
||||
#define NTOS_MODE_USER
|
||||
#include <ndk/psfuncs.h>
|
||||
#include <ndk/exfuncs.h>
|
||||
|
||||
CRITICAL_SECTION PerfDataCriticalSection;
|
||||
PPERFDATA pPerfDataOld = NULL; /* Older perf data (saved to establish delta values) */
|
||||
PPERFDATA pPerfData = NULL; /* Most recent copy of perf data */
|
||||
PPERFDATA pPerfData = NULL; /* Most recent copy of perf data */
|
||||
ULONG ProcessCountOld = 0;
|
||||
ULONG ProcessCount = 0;
|
||||
double dbIdleTime;
|
||||
|
@ -46,6 +48,10 @@ SYSTEM_HANDLE_INFORMATION SystemHandleInfo;
|
|||
PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION SystemProcessorTimeInfo = NULL;
|
||||
PSID SystemUserSid = NULL;
|
||||
|
||||
PCMD_LINE_CACHE global_cache = NULL;
|
||||
|
||||
#define CMD_LINE_MIN(a, b) (a < b ? a - sizeof(WCHAR) : b)
|
||||
|
||||
typedef struct _SIDTOUSERNAME
|
||||
{
|
||||
LIST_ENTRY List;
|
||||
|
@ -371,7 +377,7 @@ void PerfDataRefresh(void)
|
|||
pPerfData[Idx].HandleCount = pSPI->HandleCount;
|
||||
pPerfData[Idx].ThreadCount = pSPI->NumberOfThreads;
|
||||
pPerfData[Idx].SessionId = pSPI->SessionId;
|
||||
pPerfData[Idx].UserName[0] = L'\0';
|
||||
pPerfData[Idx].UserName[0] = UNICODE_NULL;
|
||||
pPerfData[Idx].USERObjectCount = 0;
|
||||
pPerfData[Idx].GDIObjectCount = 0;
|
||||
ProcessUser = SystemUserSid;
|
||||
|
@ -472,7 +478,7 @@ ULONG PerfDataGetProcessorSystemUsage(void)
|
|||
return (ULONG)dbKernelTime;
|
||||
}
|
||||
|
||||
BOOL PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, int nMaxCount)
|
||||
BOOL PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, ULONG nMaxCount)
|
||||
{
|
||||
BOOL bSuccessful;
|
||||
|
||||
|
@ -504,7 +510,7 @@ ULONG PerfDataGetProcessId(ULONG Index)
|
|||
return ProcessId;
|
||||
}
|
||||
|
||||
BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, int nMaxCount)
|
||||
BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, ULONG nMaxCount)
|
||||
{
|
||||
BOOL bSuccessful;
|
||||
|
||||
|
@ -522,6 +528,130 @@ BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, int nMaxCount)
|
|||
return bSuccessful;
|
||||
}
|
||||
|
||||
BOOL PerfDataGetCommandLine(ULONG Index, LPWSTR lpCommandLine, ULONG nMaxCount)
|
||||
{
|
||||
static const LPWSTR ellipsis = L"...";
|
||||
|
||||
PROCESS_BASIC_INFORMATION pbi = {0};
|
||||
UNICODE_STRING CommandLineStr = {0};
|
||||
|
||||
PVOID ProcessParams = NULL;
|
||||
HANDLE hProcess;
|
||||
ULONG ProcessId;
|
||||
|
||||
NTSTATUS Status;
|
||||
BOOL result;
|
||||
|
||||
PCMD_LINE_CACHE new_entry;
|
||||
LPWSTR new_string;
|
||||
|
||||
PCMD_LINE_CACHE cache = global_cache;
|
||||
|
||||
/* [A] Search for a string already in cache? If so, use it */
|
||||
while (cache && cache->pnext != NULL)
|
||||
{
|
||||
if (cache->idx == Index && cache->str != NULL)
|
||||
{
|
||||
/* Found it. Use it, and add some ellipsis at the very end to make it cute */
|
||||
wcsncpy(lpCommandLine, cache->str, CMD_LINE_MIN(nMaxCount, cache->len));
|
||||
wcscpy(lpCommandLine + CMD_LINE_MIN(nMaxCount, cache->len) - sizeof(ellipsis)/sizeof(WCHAR), ellipsis);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
cache = cache->pnext;
|
||||
}
|
||||
|
||||
/* [B] We don't; let's allocate and load a value from the process mem... and cache it */
|
||||
ProcessId = PerfDataGetProcessId(Index);
|
||||
|
||||
/* Default blank command line in case things don't work out */
|
||||
wcsncpy(lpCommandLine, L"", nMaxCount);
|
||||
|
||||
/* Ask for a handle to the target process so that we can read its memory and query stuff */
|
||||
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ProcessId);
|
||||
if (!hProcess)
|
||||
goto cleanup;
|
||||
|
||||
/* First off, get the ProcessEnvironmentBlock location in that process' address space */
|
||||
Status = NtQueryInformationProcess(hProcess, 0, &pbi, sizeof(pbi), NULL);
|
||||
if (!NT_SUCCESS(Status))
|
||||
goto cleanup;
|
||||
|
||||
/* Then get the PEB.ProcessParameters member pointer */
|
||||
result = ReadProcessMemory(hProcess,
|
||||
(PVOID)((ULONG_PTR)pbi.PebBaseAddress + FIELD_OFFSET(PEB, ProcessParameters)),
|
||||
&ProcessParams,
|
||||
sizeof(ProcessParams),
|
||||
NULL);
|
||||
if (!result)
|
||||
goto cleanup;
|
||||
|
||||
/* Then copy the PEB->ProcessParameters.CommandLine member
|
||||
to get the pointer to the string buffer and its size */
|
||||
result = ReadProcessMemory(hProcess,
|
||||
(PVOID)((ULONG_PTR)ProcessParams + FIELD_OFFSET(RTL_USER_PROCESS_PARAMETERS, CommandLine)),
|
||||
&CommandLineStr,
|
||||
sizeof(CommandLineStr),
|
||||
NULL);
|
||||
if (!result)
|
||||
goto cleanup;
|
||||
|
||||
/* Allocate the next cache entry and its accompanying string in one go */
|
||||
new_entry = HeapAlloc(GetProcessHeap(),
|
||||
HEAP_ZERO_MEMORY,
|
||||
sizeof(CMD_LINE_CACHE) + CommandLineStr.Length + sizeof(UNICODE_NULL));
|
||||
if (!new_entry)
|
||||
goto cleanup;
|
||||
|
||||
new_string = (LPWSTR)((ULONG_PTR)new_entry + sizeof(CMD_LINE_CACHE));
|
||||
|
||||
/* Bingo, the command line should be stored there,
|
||||
copy the string from the other process */
|
||||
result = ReadProcessMemory(hProcess,
|
||||
CommandLineStr.Buffer,
|
||||
new_string,
|
||||
CommandLineStr.Length,
|
||||
NULL);
|
||||
if (!result)
|
||||
{
|
||||
/* Weird, after sucessfully reading the mem of that process
|
||||
various times it fails now, forget it and bail out */
|
||||
HeapFree(GetProcessHeap(), 0, new_entry);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* Add our pointer to the cache... */
|
||||
new_entry->idx = Index;
|
||||
new_entry->str = new_string;
|
||||
new_entry->len = CommandLineStr.Length;
|
||||
|
||||
if (!global_cache)
|
||||
global_cache = new_entry;
|
||||
else
|
||||
cache->pnext = new_entry;
|
||||
|
||||
/* ... and print the buffer for the first time */
|
||||
wcsncpy(lpCommandLine, new_string, CMD_LINE_MIN(nMaxCount, CommandLineStr.Length));
|
||||
|
||||
cleanup:
|
||||
if (hProcess) CloseHandle(hProcess);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void PerfDataDeallocCommandLineCache()
|
||||
{
|
||||
PCMD_LINE_CACHE cache = global_cache;
|
||||
PCMD_LINE_CACHE cache_old;
|
||||
|
||||
while (cache && cache->pnext != NULL)
|
||||
{
|
||||
cache_old = cache;
|
||||
cache = cache->pnext;
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, cache_old);
|
||||
}
|
||||
}
|
||||
|
||||
ULONG PerfDataGetSessionId(ULONG Index)
|
||||
{
|
||||
ULONG SessionId;
|
||||
|
|
|
@ -55,19 +55,31 @@ typedef struct _PERFDATA
|
|||
LARGE_INTEGER KernelTime;
|
||||
} PERFDATA, *PPERFDATA;
|
||||
|
||||
typedef struct _CMD_LINE_CACHE
|
||||
{
|
||||
DWORD idx;
|
||||
LPWSTR str;
|
||||
ULONG len;
|
||||
struct _CMD_LINE_CACHE* pnext;
|
||||
} CMD_LINE_CACHE, *PCMD_LINE_CACHE;
|
||||
|
||||
BOOL PerfDataInitialize(void);
|
||||
void PerfDataUninitialize(void);
|
||||
void PerfDataRefresh(void);
|
||||
|
||||
BOOL PerfDataGet(ULONG Index, PPERFDATA *lppData);
|
||||
ULONG PerfDataGetProcessIndex(ULONG pid);
|
||||
BOOL PerfDataGet(ULONG Index, PPERFDATA *lppData);
|
||||
ULONG PerfDataGetProcessIndex(ULONG pid);
|
||||
ULONG PerfDataGetProcessCount(void);
|
||||
ULONG PerfDataGetProcessorUsage(void);
|
||||
ULONG PerfDataGetProcessorSystemUsage(void);
|
||||
|
||||
BOOL PerfDataGetImageName(ULONG Index, LPTSTR lpImageName, int nMaxCount);
|
||||
BOOL PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, ULONG nMaxCount);
|
||||
ULONG PerfDataGetProcessId(ULONG Index);
|
||||
BOOL PerfDataGetUserName(ULONG Index, LPTSTR lpUserName, int nMaxCount);
|
||||
BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, ULONG nMaxCount);
|
||||
|
||||
BOOL PerfDataGetCommandLine(ULONG Index, LPWSTR lpCommandLine, ULONG nMaxCount);
|
||||
void PerfDataDeallocCommandLineCache();
|
||||
|
||||
ULONG PerfDataGetSessionId(ULONG Index);
|
||||
ULONG PerfDataGetCPUUsage(ULONG Index);
|
||||
LARGE_INTEGER PerfDataGetCPUTime(ULONG Index);
|
||||
|
|
|
@ -52,9 +52,9 @@ void AddProcess(ULONG Index);
|
|||
void UpdateProcesses();
|
||||
void gethmsfromlargeint(LARGE_INTEGER largeint, DWORD *dwHours, DWORD *dwMinutes, DWORD *dwSeconds);
|
||||
void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam);
|
||||
void CommaSeparateNumberString(LPWSTR strNumber, int nMaxCount);
|
||||
void CommaSeparateNumberString(LPWSTR strNumber, ULONG nMaxCount);
|
||||
void ProcessPageShowContextMenu(DWORD dwProcessId);
|
||||
BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, int nMaxCount);
|
||||
BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, ULONG nMaxCount);
|
||||
DWORD WINAPI ProcessPageRefreshThread(void *lpParameter);
|
||||
int ProcessRunning(ULONG ProcessId);
|
||||
|
||||
|
@ -245,7 +245,7 @@ void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam)
|
|||
Index = PerfDataGetProcessIndex(pData->ProcessId);
|
||||
ColumnIndex = pnmdi->item.iSubItem;
|
||||
|
||||
PerfDataGetText(Index, ColumnIndex, pnmdi->item.pszText, pnmdi->item.cchTextMax);
|
||||
PerfDataGetText(Index, ColumnIndex, pnmdi->item.pszText, (ULONG)pnmdi->item.cchTextMax);
|
||||
|
||||
break;
|
||||
|
||||
|
@ -290,7 +290,7 @@ void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
}
|
||||
|
||||
void CommaSeparateNumberString(LPWSTR strNumber, int nMaxCount)
|
||||
void CommaSeparateNumberString(LPWSTR strNumber, ULONG nMaxCount)
|
||||
{
|
||||
WCHAR temp[260];
|
||||
UINT i, j, k;
|
||||
|
@ -530,7 +530,7 @@ void AddProcess(ULONG Index)
|
|||
}
|
||||
}
|
||||
|
||||
BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, int nMaxCount)
|
||||
BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, ULONG nMaxCount)
|
||||
{
|
||||
IO_COUNTERS iocounters;
|
||||
LARGE_INTEGER time;
|
||||
|
@ -541,6 +541,8 @@ BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, int nMaxCoun
|
|||
wsprintfW(lpText, L"%lu", PerfDataGetProcessId(Index));
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_USERNAME)
|
||||
PerfDataGetUserName(Index, lpText, nMaxCount);
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_COMMANDLINE)
|
||||
PerfDataGetCommandLine(Index, lpText, nMaxCount);
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_SESSIONID)
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetSessionId(Index));
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_CPUUSAGE)
|
||||
|
@ -753,6 +755,12 @@ int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lPara
|
|||
PerfDataGetUserName(IndexParam2, text2, sizeof (text2) / sizeof (*text2));
|
||||
ret = _wcsicmp(text1, text2);
|
||||
}
|
||||
else if (TaskManagerSettings.SortColumn == COLUMN_COMMANDLINE)
|
||||
{
|
||||
PerfDataGetCommandLine(IndexParam1, text1, sizeof (text1) / sizeof (*text1));
|
||||
PerfDataGetCommandLine(IndexParam2, text2, sizeof (text2) / sizeof (*text2));
|
||||
ret = _wcsicmp(text1, text2);
|
||||
}
|
||||
else if (TaskManagerSettings.SortColumn == COLUMN_SESSIONID)
|
||||
{
|
||||
l1 = PerfDataGetSessionId(IndexParam1);
|
||||
|
|
|
@ -113,6 +113,7 @@
|
|||
#define IDC_IOOTHERBYTES 1047
|
||||
#define IDC_CPU_USAGE_GRAPH 1047
|
||||
#define IDC_CPU29 1048
|
||||
#define IDC_COMMANDLINE 1048
|
||||
#define IDC_MEM_USAGE_GRAPH2 1048
|
||||
#define IDC_MEM_USAGE_GRAPH 1048
|
||||
#define IDC_CPU30 1049
|
||||
|
@ -222,6 +223,7 @@
|
|||
#define IDS_TAB_IOREADBYTES 337
|
||||
#define IDS_TAB_IOWRITESBYTES 338
|
||||
#define IDS_TAB_IOOTHERBYTES 339
|
||||
#define IDS_TAB_COMMANDLINE 368
|
||||
|
||||
#define IDS_MENU_SELECTCOLUMNS 340
|
||||
#define IDS_MENU_16BITTASK 341
|
||||
|
|
|
@ -480,6 +480,8 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
TaskManagerSettings.Maximized = TRUE;
|
||||
else
|
||||
TaskManagerSettings.Maximized = FALSE;
|
||||
/* Get rid of the allocated command line cache, if any */
|
||||
PerfDataDeallocCommandLineCache();
|
||||
return DefWindowProcW(hDlg, message, wParam, lParam);
|
||||
|
||||
case WM_TIMER:
|
||||
|
@ -1140,7 +1142,7 @@ LPWSTR GetLastErrorText(LPWSTR lpszBuf, DWORD dwSize)
|
|||
DWORD dwRet;
|
||||
LPWSTR lpszTemp = NULL;
|
||||
|
||||
dwRet = FormatMessageW( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_ARGUMENT_ARRAY,
|
||||
dwRet = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY,
|
||||
NULL,
|
||||
GetLastError(),
|
||||
LANG_NEUTRAL,
|
||||
|
|
Loading…
Reference in a new issue