我试图更好地了解32位Windows如何计算程序的虚拟字节。我的印象是,虚拟字节(VB)是对使用了多少用户地址空间的度量,而私有(private)字节(PB)是对系统上实际提交和保留内存的度量。特别是,我有一个我正在监视的服务器程序,当它在大量使用时,它会爬升到VB的3GB限制。大约在同一时间,PB也攀升,但随后随着使用量下降而迅速下降至1GB左右。然后,PB倾向于保持在1GB左右的低位,但VB保持在3GB左右。我无权访问源代码,所以我只是使用基本的Windows性能计数器来监视所有这些。从编程的角度来看,我不明白什么内存概念使这一切成为可能?是否有很好的引用来了解更多相关信息?
有没有办法让在64位系统上运行的32位应用程序访问64位应用程序的默认文件夹?例如,在32位应用程序中将SHGetSpecialFolderPath与CSIDL_PROGRAM_FILES结合使用会返回“C:\从32位应用程序获取“C:\ProgramFiles”的方法?这里的一个相关问题没有帮助SHGetFolderPath()32bitvs64bit在调用SHGetSpecialFolderPath之前也不会抑制wow64文件系统重定向 最佳答案 回答我自己的问题,SHGetSpecialFolderPath似乎是不可能的。在V
我们的一个程序在Java首选项中写入程序信息(窗口标题、内存等)。在Windows上,这在注册表下可用。如何使用c(或c++)读取Java程序编写的值。看起来我应该使用的API是RegGetValue。这是否保证可以在WindowsXP32位上运行?java写的String是UTF-8编码的。我如何在windows(win32或vc++)中读取这样的字符串干杯,贾安 最佳答案 我对此进行了深入研究。RegGetValue()是一个新的注册表调用,它处理传统查询注册表(RegQueryValueEx)方式的一些潜在问题。这里有一些关于
我需要一个工具来发现任意进程是在机器上以x86还是x64模式运行。我需要根据进程ID从C++以编程方式执行此操作。必须有某种方法可以做到这一点(正如您可以从任务管理器中清楚地看到的那样)。有谁知道WindowsAPI会告诉您给定进程ID,应用程序是否在wow64下运行?另一种方法是根据进程ID找出正在运行的可执行文件名称/路径,并尝试从文件中读取PEheader。有没有人有可以实现这一目标的代码片段? 最佳答案 有一个WinAPI函数,IsWow64Process. 关于c++-如何查找
我遇到了一个小问题:我想了解操作系统的架构,问题是我的编程语言不支持此类功能。因此,我需要从Windowsdll(如kernel32.dll)中读取此信息我确实尝试使用函数GetNativeSystemInfo/GetVersionEx/GetSystemInfo获取信息。不幸的是我无法获得架构:/在任何windowsdll中是否有一些其他的函数来读取架构?(它不需要是kernel32它可以是任何dll但它必须存在于winxp+中)作为信息:我正在使用Gupta(SQLWindows/Teamdevoloper)编辑1:typedefstruct_SYSTEM_INFO{union{D
尝试在Win32上构建OpenSSL时出现以下错误:C:\ProgramFiles(x86)\MicrosoftVisualStudio10.0\VC\INCLUDE\errno.h(92):errorC2220:warningtreatedaserror-no'object'filegeneratedC:\ProgramFiles(x86)\MicrosoftVisualStudio10.0\VC\INCLUDE\errno.h(92):warningC4005:'EADDRINUSE':macroredefinitiontmp32\e_os.h(153):seepreviousde
我遇到了在64位Windows上运行的32位旧版应用程序的问题。有问题的应用程序使用CreateFileMapping创建共享内存。当它在64位Windows上运行时,任何从另一个进程访问此共享内存的尝试都需要大约1秒。共享内存是使用页面保护标志创建的:flProtect=PAGE_READONLY|SEC_NOCACHE|SEC_COMMIT;当使用以下方法创建相同的内存时:flProtect=PAGE_READONLY|SEC_COMMIT;问题消失了。目前这种解决方法是可以接受的,但我们确实有一些设备需要设置SEC_NOCACHE标志。谁能告诉我为什么在这种情况下SEC_NOCA
CreateDesktop()的反义词是什么?CloseDesktop()似乎只是关闭新桌面的句柄,而不是删除它。 最佳答案 IIRC,桌面是引用计数的,所以当没有人再使用它们时它们就会被销毁(并且有一个未关闭的句柄包含在“正在使用”中)。 关于windows-win32:destroyadeskstopcreatedwithCreateDesktop,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/
我仍在使用VisualC++2003来维护和增强基于PC的程序。它是用C和C++编写的,只在PC上运行——而不是在网络、手机、云或其他任何地方——我不知道这个.NET框架是什么,可能不需要这个时候要注意。无论如何,现在我已经将我的开发PC升级到Windows7,运行旧的开发环境变得越来越不方便。我认为最新的完整版VisualStudio2010仍可用于构建我的项目,但成本实在令人不快。至少在2003年,他们以大约100美元的价格单独提供VisualC++,但免费赠品VisualC++.NET2010对我一点好处都没有。那么现在有没有VisualStudioPro的替代品?如果我能找到替
以下NSIS行由于某种原因拒绝在WindowsXP下运行(立即返回):ExecWait'"$PROGRAMFILES\CommonFiles\MicrosoftShared\MSInfo\msinfo32"/report"$DESKTOP\msinfo.log"'如果我在命令行中运行msinfo32,它会正常运行:C:\DocumentsandSettings\Admin>"%PROGRAMFILES%\CommonFiles\MicrosoftShared\MSInfo\msinfo32"/report"%APPDATA%\..\Desktop\msinfo.log"为什么?我该如何