// ReSharper disable once UnusedMember.Local private static void EnumModules2() { var snapshot = WinApiWrapper.CreateToolhelp32Snapshot( SnapshotFlags.Process, 0); if (snapshot == WinApiWrapper.InvalidHandleValue) { var error = Marshal.GetLastWin32Error(); Console.WriteLine($"CreateToolhelp32Snapshot Error: {error}"); return; } try { ProcessEntry processEntry = new ProcessEntry(); processEntry.dwSize = (uint)Marshal.SizeOf(typeof(ProcessEntry)); if (!WinApiWrapper.Process32First(snapshot, ref processEntry)) { var error = Marshal.GetLastWin32Error(); Console.WriteLine($"Process32First Error: {error}"); return; } do { //Console.WriteLine(processEntry.szExeFile); Console.WriteLine($"/////////////////////// PID = {processEntry.th32ProcessID} ///////////////////////"); //!!!! Shall not be used to obtain exe name WalkProcess2(processEntry.th32ProcessID); //!!!! Shall not be used to obtain exe name }while (WinApiWrapper.Process32Next(snapshot, ref processEntry)); } finally { WinApiWrapper.CloseHandle(snapshot); } }
private static void WalkProcess2(uint processId) { var snapshot = WinApiWrapper.CreateToolhelp32Snapshot( SnapshotFlags.Module, processId); if (snapshot == WinApiWrapper.InvalidHandleValue) { var error = Marshal.GetLastWin32Error(); Console.WriteLine($"CreateToolhelp32Snapshot Error: {error}"); return; } try { ModuleEntry moduleEntry = new ModuleEntry(); moduleEntry.dwSize = (uint)Marshal.SizeOf(typeof(ModuleEntry)); if (!WinApiWrapper.Module32First(snapshot, ref moduleEntry)) { var error = Marshal.GetLastWin32Error(); Console.WriteLine($"Module32First Error: {error}"); return; } do { Console.WriteLine(moduleEntry.szModule); }while (WinApiWrapper.Module32Next(snapshot, ref moduleEntry)); } finally { WinApiWrapper.CloseHandle(snapshot); } }