Welcome to Dennis Lang's |
Source Code and Performance Metrics
This project started out as a tool to monitor open handles to isolate a handle leak and grew into a stand-alone application. MagniFile starts by displaying the active processes in the top panel. When you select one or more processes, it will try to display the open handle information in the bottom panel. Both panels support printing, exporting and logging. If auto-update and auto-logging is enabled, the information will be logged every time the display updates.
There is nothing new in this program, it is a port of well-know logic in the unmanaged world to access system information. The only twist is I made it available to the .NET world. The program can be built to run on XP32 or XP64.
I also provide a simple C++ command line program Mfile which duplicates some of the functionality of MagniFile.
Once you get a list of handles, you can use the View... menu to prune the display by type and description and/or set a group by order. If you enable group by mode, the sorting stops working.
Both the Process and Handle lists support column sorting. In addition to the normal sorting, if a duplicate is found in the primary sort column, it will defer to the secondary sort column (previously select sort column). The primary sort column has the large triangle/arrow while the secondary has the smaller triangle/arrow.
The process list has a column labeled Log. If you click in this column the Log tag will cycle on or off. If one or more Log tags are set, then only those process lines will be sent to the log file during a log update.
In addition to the Detail process view, there is a Summary view. The summary view contains those lines marked with the Log tag. The summary is updated every time the detail view is refreshed. The Log tag effects both the process summary view and process logging. The summary views will automatically trim their lists to not exceed 100 elements.
The Process, Handle and Statistic lists support automatic update/refresh, manual exporting and printing. The Process and Handle lists provide several update rates via the File menu.
Use the check boxes at the bottom to change the display information. Press the Help button to get an explanation of the information.
If you want to see a disk cluster allocation image, press the right icon . Nothing special, just an image which shows which clusters are allocated. You can overlay a file allocation by:
The file allocation is drawn in the image overlay as small circles. The start and end of the file allocation chain is drawn in a larger orange circle. Here is a zoomed in example showing part of the disk cluster allocation image map, with a file allocation overlay. The file's starting cluster is marked with the larger orange circle. The other file allocation clusters are marked with smaller circles with a tight sequence appearing as a thick colored bar. This example shows two fragments with one large sequential chain.
To help inspect NTFS system files, press the SysFiles button to populate a list of system files. Double click on a file name to view its allocation.
The SaveAs button will allow you to save a screen capture of the dialog to a disk file.
- A bunch of unmanaged API's ported to C#
- Generic ListView printing and exporting.
- Two tier ListView column sorting
- Statistic Dialog draws title twice to give drop shadow effect
- Statistic information is extracted using Reflection
- Program works in XP32 and XP64
- Logging and exporting save information in CSV format, making it easy to process and manipulate with programs such as Excel (graph handle count).
To build executable you need to install MS Chart
To run you need the mschart dll (included in separate zip file)
I can't find MsChart for Windows7. Program runs, but you cannot edit/build code on Windows 7 unless you stub out the chart feature. The following zip file is only require if you don't already have MsChart installed. Place extracted files in the same directory where you store magnifile.exe.
Magnifile v6.3 (requires MsChart)
Older MagniFile v3.5 (does not require mschart)
Mfile v3.7 command line utility