Articles of 进程

Stack Walker for x64 Windows

我正在尝试打印我的应用程序的堆栈跟踪。 我无法使用StackWalk64因为我的应用程序是在optimization disabled情况下发布的。 对于x86我们使用的是strace库有人写在codeprex但我没有发现任何类似的x64 。 以下是我在x86上find的代码。 #include <Windows.h> #include <DbgHelp.h> #include <stdio.h> #define INVALID_FP_RET_ADDR_VALUE 0x00000000 BOOL g_fSymInit; HANDLE g_hProcess; BOOL DisplaySymbolDetails(DWORD dwAddress) { DWORD64 displacement = 0; ULONG64 buffer[(sizeof(SYMBOL_INFO) + MAX_SYM_NAME*sizeof(TCHAR) + sizeof(ULONG64) – 1) / sizeof(ULONG64)]; PSYMBOL_INFO pSymbol = (PSYMBOL_INFO)buffer; pSymbol->SizeOfStruct = sizeof(SYMBOL_INFO); pSymbol->MaxNameLen = MAX_SYM_NAME; if (SymFromAddr(g_hProcess,dwAddress,&displacement,pSymbol)) { // Try to get the […]

为64位设备驱动程序公开32/64位DLL API?

我打算为64位平台(即Win7)制作一个设备驱动程序,我也想公开可以分发给编写应用程序的用户的DLL中的设备API。 问题是,我怎样才能为32位和64位应用程序构build这样的DLL? 这里的问题实际上只有大约32位一个。 我可以写32位的DLL和编译它以及64位? 或者我真的需要一些IPC来包装64位DLL,以便32位应用程序可以间接调用设备驱动程序?

对于您可以创build和启动的Process对象的数量是否有Windows限制?

似乎有问题接近这一点,但没有看到涉及实际的.Net过程对象。 目前,我正在使用一个Process对象来启动外部可执行文件,并在C#中从它读取数据。 对于每个我必须监控数据的收集点,都会发生一次。 但是,当我必须监视5个或更多的收集点时,我才能从第五个收集点收集任何数据,否则我的stream程将被终止。 用于启动Process对象的代码如下所示。 任何帮助表示赞赏。 procCollectionMonitor = new Process(); procCollectionMonitor.StartInfo.FileName = options.CollectionMonitorProcessPath; procCollectionMonitor.StartInfo.WorkingDirectory = System.IO.Path.GetDirectoryName(options.CollectionMonitorProcessPath); procCollectionMonitor.StartInfo.ErrorDialog = false; procCollectionMonitor.StartInfo.UseShellExecute = false; procCollectionMonitor.EnableRaisingEvents = true; procCollectionMonitor.Exited += spawn_Exited; procCollectionMonitor.Start(); 此应用程序是Windows Server 2008 R2上运行的Windows服务。 正如我之前所说,这个问题只发生在5个或更多的收集点开始。 需要4个或更less的实例没有问题。

在batch file中从新的命令提示符处终止进程

我有这个坐在一个batch file,我想知道为什么它是投掷 “系统找不到文件TASKLIST” FOR /F "usebackq tokens=2 skip=2" %%i IN (TASKLIST /FI "IMAGENAME eq explorer.exe") DO taskkill /F /PID %%i 更重要的是,问题在于命令kill.exe.exe – 必须在命令产生的cmd中运行 at xx:xx /interactive "cmd.exe" 我怎样才能将这个taskkill命令放入由at命令产生的新命令提示符中? 感谢您的时间。

如何终止一个使用ShellExecute开始的程序

在MFC中,我使用这个代码 ShellExecute(NULL, _T("open"), _T(EXTERNAL_APP), params, _T(EXTERNAL_PATH), SW_HIDE); 启动一个在后台运行的外部程序。 但是,当我的应用程序终止,这个程序仍在运行,可以通过检查Windows任务pipe理器窗格来validation。 所以我的问题是, 当我的应用程序停止时 , 如何让外部程序停止 ?

钩住Windows中的所有新进程和命令行参数

我想知道我的IDE运行什么工具以及它使用哪个命令行参数。 有没有这样的工具可以提供这样的信息? 我可以创build一个应用程序,每秒钟甚至更快地保存所有进程,但是我仍然不确定是否会挂钩所有内容。 必须有一些工具可以做得更好。 像挂钩操作系统调用WinExec或CreateProcess(Ex) 。

工作集/ privateWorkingSet内存不加起来在任务pipe理器中的内存使用

内存问题 我们的一个服务器盒在任务pipe理器中显示96%的内存使用率(使用137 / 140GB左右)。 当我查看“进程”选项卡时(即使选中了所有用户的显示进程),组合的最高进程在高峰时间仅使用40GB左右。 我已经提供了以下最常用的进程的图像,以及显示内存使用情况的性能面板的图像。 注意:CPU使用率通常不会达到99%,当我截取屏幕截图时,CPU的使用率就会上升。 我的问题 造成这种差异的原因是什么?我怎样才能更准确地分辨出哪个进程正在吃另外100GB的内存呢? 为了validation,这里是一个性能面板的图像:

从nodejs的窗口获取另一个进程的信息

无论如何,通过nodejs获得同一台机器上(在Windows中)运行的另一个进程的当前CPU /内存使用情况。 我意识到这将是微不足道的使用PS,但我需要在Windows上的这个function(其实际上是监测IE8)。 有没有其他人面对这个问题?

如何让ProcessBuilder处理嵌套的引号?

我遇到的问题是让ProcessBuilder执行命令行的方式与cmd.exe控制台相同。 命令行是: show_parameters.bat jdk-1_5_0_22-windows-i586-p.exe /s /v"/qn INSTALLDIR=\"C:\Program Files (x86)\gili\"" batch fileshow_parameters.bat (下面)显示了cmd.exe将命令行分成的标记。 Testcase.java (以下)尝试使用ProcessBuilder执行与#1相同的命令行。 如果你运行show_parameters.bat jdk-1_5_0_22-windows-i586-p.exe /s /v"/qn INSTALLDIR=\"C:\Program Files (x86)\gili\""你会得到: Console tokens: jdk-1_5_0_22-windows-i586-p.exe /s /v"/qn INSTALLDIR=\"C:\Program Files (x86)\gili\"" 如果你运行java Testcase你会得到: Java tokens: [cmd.exe, /c, show_parameters.bat, jdk-1_5_0_22-windows-i586-p.exe, /s, /v"/qn INSTALLDIR=\"C:\Program Files (x86)\gili\""] Console tokens: jdk-1_5_0_22-windows-i586-p.exe /s "/v"/qn INSTALLDIR \"C:\Program Files (x86)\gili\" "" 是否有可能使ProcessBuilder产生与#1相同的标记化? 或者这是Java中的错误? show_parameters.bat […]

是否有可能读/写内存到Lua的另一个进程?

我试图find一种方法来编辑/ hack使用Lua的外部窗口进程的内存,特别是在LÖVE2D程序中。 我可以在Python中使用带有ReadProcessMemory()的ctypes来完成它。 有没有相当于这个可用于Lua的东西?