The Windows NT Server Resource Kit provides DLL replacements that can monitor usage for any Win32 function.
FERNEL32.DLL is a replacement for KERNEL32.DLL in Windows NT Server. It includes functions for the kernel-level interfaces, which include file I/O, semaphores, events, and mutexes. Using FERNEL32 with the APF32DMP.EXE program, you can run a test and view all file activity requested by each component from the Windows NT Server kernel. This will tell you how much I/O is generated by each file. You can then isolate areas where I/O affects performance.
This same technique can be used to replace ADVAPI32.DLL, GDI32.DLL, USER32.DLL, and the CRTDLL.DLL with ZDVAPI32.DLL, ZDI32.DLL, ZSER32.DLL, and ZRTDLL.DLL. These utilities output unformatted text, so they may require a parser for data analysis. For more information, see Optimizing Windows NT in the Windows NT Server Resource Kit.
for example:
APF32CVT FERNEL32 EMSMTA.EXE
After running your application with FERNEL32, the FERNEL32.WAP file contains the data to be analyzed. It is located in the working directory of the application you are profiling. To analyze this data, you may need to create simple parsing tools, which you can write with Microsoft Excel macros or other programs.