草庐IT

DLL_PROCESS_VERIFIER

全部标签

.net - 两个 .NET 进程何时可以共享 DLL 内存?

我有两个引用同一个类库的ASP.NET网站。目前我们发布的网站有两个类库副本。这会浪费内存吗?操作系统是否知道文件的两个副本相同,因此可以共享DLL代码段的内存?如果我将它复制到GAC或另一个共享位置,使其只有一个物理文件,它会映射更少的总内存吗? 最佳答案 这个问题的前提是错误的,ASP.NETDLL不包含任何代码。只有数据、IL和程序集list。抖动从IL生成机器代码,该代码进入AppDomain的加载程序堆。进程的私有(private)字节,不共享。获取从IL生成的机器代码的一份副本是可能的,您必须运行Ngen.exe。它预编

c# - Process.WorkingSet64 和 Process.PeakWorkingSet64 的区别

我必须读取程序的内存使用情况。我认为Process.WorkingSet64或Process.PeakWorkingSet64是合适的。问题:即使使用谷歌,我也无法弄清楚这两者之间的确切区别。有谁知道吗?Process.WorkingSet64Process.PeakWorkingSet64 最佳答案 区别很简单Process.PeakWorkingSet64为您提供自进程启动以来分配给进程的内存最大值另一方面Process.WorkingSet64为您提供当前分配给进程的内存值 关于c

C++:带有内存映射文件的 DLL

我有一个DLL可能会被多个应用程序同时调用。这个DLL内存映射一个文件。我有两个问题:1)每个应用程序都会创建自己的DLL实例,对吗?因此,该文件将被内存映射多次2)如果这是真的,我不明白这里发生了什么:a)应用程序A调用DLL。b)应用程序B调用DLL。c)我退出应用程序A,DLL将取消映射该文件。d)应用程序B调用DLL,内存映射文件不可用,调用失败。我不明白这个。有人做吗?谢谢。 最佳答案 发生这种情况是因为1)中的假设是错误的。根据定义,dll是共享的;两个应用程序都使用相同的dll实例,因此当您在一个应用程序中释放该文件时

windows - 如何在没有 regsvr32 的情况下注册 glut32.dll?

请告诉我如何在没有regsvr32的情况下注册glut32.dll,因为我已经尝试了所有方法来注册.DLL但它不起作用。这是否表明我使用的是Windows864位? 最佳答案 您不需要注册glut32.dll。只需将它放在您的exe文件附近即可。 关于windows-如何在没有regsvr32的情况下注册glut32.dll?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/192

c# - 如何仅通过 Win32 API 实现 .NET Process.Exited 事件

在C#上,很容易检测到特定进程ID是否已退出。Processp=Process.GetProcessById(pid);p.Exited+=newEventHandler(OnExited);如果只用Win32API写出与此相同的操作,我该怎么办? 最佳答案 您执行此操作的方式与.NETProcess类执行此操作的方式完全相同。使用RegisterWaitForSingleObject()在进程句柄上。当句柄收到信号(即进程完成)或可选超时到期时,您的回调将运行。请记住,与.NET一样,回调在theadpool线程上运行,因此需要适

c++ - 在 MessageBox husing 句柄中显示 dll 的路径

我用这个命令加载了一个dllHINSTANCEDllEconovent=LoadLibrary(_T("Econovent.dll"));我想获取从磁盘加载dll的路径...在这个假的情况下C:\TFS_FWG\Acon\Oem\bin\Econovent.20140130_3200\Econovent64\Econovent.dll只用消息框显示MessageBox(_T("NovalidProcAddress"),_T("Error"),MB_ICONINFORMATION);这是如何以最佳方式完成的? 最佳答案 看看GetMo

windows - 如何从 OpenProcess() 获取 PROCESS_INFORMATION?

在Windows中,我可以通过CreateProcess()获取PROCESS_INFORMATION。但是,是否可以通过OpenProcess()获取PROCESS_INFORMATION? 最佳答案 根据评论,您实际上对枚举进程中的线程感兴趣。您可以使用工具帮助库来做到这一点。调用CreateToolhelp32Snapshot创建进程的快照。然后用Thread32First和Thread32Next枚举线程。MSDN此处有示例代码:http://msdn.microsoft.com/en-us/library/windows/

c# - Process.GetProcesses(); 之间有什么关系?任务管理器中显示的是什么?

我正在尝试做一些应该(并且可能)非常简单的事情。我希望用户能够定义一个进程(几乎肯定是从任务管理器中获取的),然后我的应用程序将根据正在运行的进程执行不同的操作。我一直在使用Process.GetProcesses()来获取此信息,但我很难理解我所获取的数据以及它与任务管理器显示内容的关系。我真正想要的是与任务管理器中的“名称”字段相同的进程名称列表。我可以使用Path.GetFileName(theprocess.MainModule.FileName);获取此信息,但在枚举某些进程时出现很多异常。这似乎(来自谷歌搜索)是​​意料之中的,尤其是在跨64位/32位平台中,虽然我可以轻松

c++ - 如何确定哪个 Windows DLL 正在用于函数调用?

我一直在研究_vsnprintf并了解到它在ntdll.dll和msvcrt.dll中可用。我可以使用GetModuleHandle和GetProcAddress来访问_vsnprintf,例如:staticint(__cdecl*p__vsnprintf)(char*str,size_tcount,constchar*format,va_listvalist);staticvoidinit(constchar*dll){HMODULEhmod=GetModuleHandleA(dll);if(hmod){printf("***Testing%s***\n",dll);p__vsnpr

windows - mylibrary.dll_unloaded 出现 BEX64 错误

我有一个使用LoadLibrary动态打开DLL(mylibrary.dll)的可执行文件。当应用程序完成时,它崩溃了。浏览错误报告,结果发现它给出了一个事件类型BEX64。其中一个参数是mylibrary.dll_unloaded。剩下的就是一堆地址。有谁知道这意味着什么以及问题的可能来源是什么?我可以访问所有相关代码的源代码。 最佳答案 我前段时间遇到了同样的问题。当我在退出时调用FreeLibrary()时,程序崩溃了。原因是一个正在运行的线程,它是由我的图书馆启动的。在调用FreeLibrary()之前检查库中是否有任何正在