草庐IT

windows - 用私有(private)实现替换 MSVC CRT 函数

我有一个嵌入式IoT项目,我喜欢首先使用VisualStudio等PC工具进行部分开发。我的嵌入式项目只有一个文件系统的闪存,我想将fopenfread等重定向到我自己在Windows上的私有(private)实现。但我遇到的是无法让我的私有(private)CRT库优先于内置CRT(例如,由/MD编译器开关驱动的内置行为)。我有一个简单的三项目解决方案。项目1是一个测试可执行文件。它有一条主线:intmain(){test();}项目2和3是静态库。项目2有:#include#includevoidtest(){printf("%s\n",strchr("x",'x'));}项目3有

windows - 在 32 位 Windows 上,一个程序如何具有高虚拟字节数而私有(private)字节数相对较低?

我试图更好地了解32位Windows如何计算程序的虚拟字节。我的印象是,虚拟字节(VB)是对使用了多少用户地址空间的度量,而私有(private)字节(PB)是对系统上实际提交和保留内存的度量。特别是,我有一个我正在监视的服务器程序,当它在大量使用时,它会爬升到VB的3GB限制。大约在同一时间,PB也攀升,但随后随着使用量下降而迅速下降至1GB左右。然后,PB倾向于保持在1GB左右的低位,但VB保持在3GB左右。我无权访问源代码,所以我只是使用基本的Windows性能计数器来监视所有这些。从编程的角度来看,我不明白什么内存概念使这一切成为可能?是否有很好的引用来了解更多相关信息?

Office Addin 2013 中的 C# 全局键盘 Hook

我遇到了一个问题,无法让我的Office插件在Powerpoint2013上与我的全局键盘一起工作,但在以前的版本(2007和2010)上却没有。我没有收到任何异常,但似乎从未在Powerpoint2013上触发OnKeyDown事件,我不知道为什么。我在所有版本的Windows(XP、7、8和8.1)、32位和64位环境中遇到同样的问题。MicrosoftOffice版本为32位。这是一个代码示例:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Xml.

c++ - 类似于 mmap(NULL, sz, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);在窗口中

我正在尝试将一些linuxC++移植到Windows,但一直停留在这样的一行void*ptr=mmap(NULL,sz,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0);我发现这是一种动态分配内存的方法,因为文件描述符是-1。我如何在Windows中执行此操作?我无法在没有文件处理程序的情况下使用MapViewOfFile的文档中找到任何内容。 最佳答案 MapViewOfFile不带文件句柄,它带文件映射句柄。要分配内存块,您可以创建一个匿名文件映射,如下所示:::DWORD

c# - Windows 7左键单击时钟弹出窗口

当左键单击Windows7(Vista也可能)任务栏中的时钟时,会打开一个弹出窗口,显示日历和时钟(因此不是日期和时间调整窗口)。我如何自己打开此窗口(在C#中首选)?我希望timedate.cpl会调用它,但这会打开日期和时间调整窗口。 最佳答案 要显示时钟,您需要向托盘窗口发送适当的窗口消息。这可以使用WindowsAPI函数SendMessage完成:usingSystem;usingSystem.ComponentModel;usingSystem.Runtime.InteropServices;usingSystem.Te

c# - 使用 C# 和 WIN32 滚动记事本

我正在尝试使用C#应用程序滚动记事本窗口。相关的代码块在下面,移动/调整窗口大小的调用有效,所以我知道句柄是有效的请你看看我遗漏了什么,运行时没有任何反应。[Flags]publicenumSetWindowPosFlags:uint{SWP_ASYNCWINDOWPOS=0x4000,SWP_DEFERERASE=0x2000,SWP_DRAWFRAME=0x0020,SWP_FRAMECHANGED=0x0020,SWP_HIDEWINDOW=0x0080,SWP_NOACTIVATE=0x0010,SWP_NOCOPYBITS=0x0100,SWP_NOMOVE=0x0002,S

c++ - 私有(private)工作集大小取决于应用程序名称

一位同事一直在尝试减少在vista64上运行的32位应用程序的内存占用,并注意到报告的私有(private)工作集大小存在一些奇怪的行为。他做了一些更改并重新编译了应用程序。然后他运行应用程序并加载数据文件。任务管理器报告私有(private)工作集为98Mb。然后,当他运行fred.exe并加载相同的数据文件时,他只是将应用程序重命名为“fred.exe”,据报告私有(private)工作集为125Mb。将文件重命名回其原始名称,重复,私有(private)工作集恢复为98Mb。有人知道是什么原因造成的吗? 最佳答案 这通常发生在

windows - 是否有命令行实用程序来显示 WS 私有(private)字节?

在ProcessExplorer中它是WSPrivateBytes,而在TaskManager中它是PrivateWorkingSet。我想要一个命令行实用程序来显示给定进程名称的此信息。编辑Powershell脚本也可以。 最佳答案 在PowerShell中,您可以使用:[编辑]functionProcessInfo{param([String]$processName)$workingSet=get-counter-counter"\Process($processName)\WorkingSet-Private"|select

c++ - Private Bytes >> Working Set 是否正常?

好吧,这可能听起来很奇怪,但就是这样。有2台计算机,A(奔腾D)和B(四核),运行WindowsXP的RAM数量几乎相同。如果我在两台计算机上运行相同的代码,A中分配的私有(private)字节永远不会下降,从而导致以后的崩溃。在B中,私有(private)字节似乎不断被释放,一切看起来都很好。在两台计算机中,工作集的释放和分配方式类似。这可能是list或DLL(系统)的问题吗?我一无所知。此外,我在A上编译了可执行文件并在B上运行它,它成功了。备注:我用ProcessExplorer观察了使用的内存.问题:在执行期间(我们有多个分配和解除分配)私有(private)字节数远比工作集?

c# - TreeView 自定义 DrawNode .NET 3.5 Windows 窗体

我想在TreeView中以OwnerDrawText模式自定义DrawNode。我发现即使使用这个处理程序它也很慢:voidRegistryTreeDrawNode(objectsender,DrawTreeNodeEventArgse){e.DrawDefault=true;}我做错了什么吗?谢谢。 最佳答案 我认为您可能需要针对您要执行的操作显示更多代码。与所有者的绘图相比,不应该有任何明显不同的绘图;您基本上是在覆盖默认绘制,然后在您发布的内容中撤消它。这是毫无意义的丑陋......但不应该成为性能打击。因此,从缺乏代码转向追