我使用CreateProcess()并将启动标志设置为STARTF_USESHOWWINDOW和SW_HIDE以在后台启动应用程序并隐藏其窗口。我这样做是为了运行计划的维护任务,我不想被Windows打扰。在大多数情况下,窗口是隐藏的,但在某些情况下,程序的窗口会在您面前突然弹出(例如Google的Chrome-我开始使用不同的应用程序进行测试,看看这是否曾经是一个问题,但不是...).这种情况在WindowsXP中发生的次数较少,但在Vista中发生的次数很多。是否有我缺少的标志?有没有其他方法可以创建隐藏窗口的进程?谢谢!我的示例代码是:char*ProgramNameSTARTU
在尝试查找Windows应用程序中的一些内存泄漏时,我遇到了gflags的问题。当我打开ust标志(为了收集内存分配堆栈跟踪)时,我的应用程序的内存增加速度比关闭该标志时快得多(它在10分钟内达到800MB最小大约。这与我在关闭标志时获得的50-100MB/天相去甚远。我读到堆栈跟踪的最大值为32MB,所以我想这应该不是问题。计算机是4xIntel(R)Xeon(R)CPUE5410@2.33GHz。如果有人能给我一些提示,我将不胜感激。谢谢! 最佳答案 堆栈跟踪数据库并不是ust标志的唯一影响。它还向每个分配添加至少32个字节,以
用win32事件对象(CreateEvent)或线程窗口消息队列开发多线程时,性能有差异吗?两者都应该使用某种WaitFor...调用。我自己的代码几乎完全基于事件,但如果不使用消息,我可能会丢失一些东西。 最佳答案 如果您担心线程消息和内核事件之间的性能差异,那么您可能不应该使用线程消息。Win32线程消息队列是一种最初为Windows16开发的机制——当时还没有线程。它们已经发展到可以处理Win32的线程模型,但在幕后它们是相当复杂的野兽。这有利也有弊。缺点是,很简单,它们比其他形式的线程间同步和通信更慢,并且有更多限制。对于初
我是Windows设备驱动程序编程的新手。我知道某些操作只能在IRQLPASSIVE_LEVEL执行。例如,Microsoft有关于如何从内核驱动程序写入文件的示例代码:if(KeGetCurrentIrql()!=PASSIVE_LEVEL)returnSTATUS_INVALID_DEVICE_STATE;Status=ZwCreateFile(...);我的问题是:是什么阻止了在上面的KeGetCurrentIrql()检查之后引发IRQL?假设发生上下文或线程切换,当它返回到我的驱动程序时,IRQL会不会突然变为DISPATCH_LEVEL,然后导致系统崩溃?如果这不可能,那么
我有一个在虚拟机上运行的Windows2008R2服务器。我的.NET服务在此服务器上运行,定期查询WMI,例如:从Win32_Service中选择ProcessId...一两天后,WMIprvse占用了500M内存,WMI查询开始出现内存不足异常。这篇文章好像在讲这个问题:"http://support.microsoft.com/kb/958124"我看到其他文章说Microsoft已经意识到这个问题并且不会在下一个主要版本发布之前发布修复程序。http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/256eb40c-d
在Russinovich的书中它说线程(注意:这是关于OS线程)将需要分派(dispatch)(调度)如果它a)准备好b)结束它的时间片、产量或block。我的C#实时应用程序中有一个托管线程,对于实现尽可能少的上下文切换非常重要。此线程具有最高优先级,进程具有实时优先级,这使得我的线程操作系统优先级为31中的26。当我的线程结束其时间片并且没有优先级>=26的等待线程时,我的线程会发生什么?是否会有上下文切换来重新安排我的线程再次运行,或者将避免上下文切换并且线程将不间断地运行?如果有上下文切换-谁能告诉平均需要多少CPU周期?我希望得到简单且明确的答案!谢谢!
我有两个进程,A和B。在某个时候A创建B。在创建B之后,如果A的进程tree被杀死,我希望B仍然存在。我正在使用CreateProcess()创建B,但我似乎找不到任何方法让它在没有子进程的情况下创建进程。与ShellExecuteEx()相同,但我可能遗漏了一些标志。有人知道我可以用什么来做到这一点吗?编辑:我忘了提到两个进程都需要一个HANDLE或进程ID给另一个 最佳答案 您可以尝试进程A创建进程C,进程C创建进程B,然后进程C将立即结束(终止)。在进程B中,仅存在有关直接父进程(不再运行的C的进程ID)的信息,而不存在有关进
对于A.EXEPE文件,如果程序以测试模式运行,我想将进程名称更改为“A_TEST.exe”。如果程序以安全模式运行,我想更改为“A_SAFE.exe”文件名必须相同(A.EXE)这可能吗? 最佳答案 如果“进程名称”是显示任务管理器的名称-您只能从ring0更改它。在ring3中,您只能更改默认窗口标题。#includePEB*peb=(PEB*)__readfsdword(0x30);wchar_tnewTitle[]=L"NewTitle";UNICODE_STRINGnewTitleUStr={sizeof(newTitle
我有以下代码,它在它自己的专用UI线程上运行WPF窗口://CreatethededicatedUIthreadforAddEditPairwindowThreadaddEditPairThread=newThread(()=>{//InitialisetheaddeditpairwindowaddEditPair=newAddEditPair(this);addEditPair.PairRecordAdded+=newEventHandler(addEditPair_PairRecordAdded);addEditPair.PairRecordEdited+=newEventHa
是否可以使用具有“管理”权限的用户帐户启动postgres进程?我在WindowsXP上。--显示的错误是---(不是真正的错误,这是一项安全功能)TheservermustbestartedunderanunprivilegeduserIDtopreventpossiblesystemsecuritycompromises.Seethedocumentationformoreinformationonhowtoproperlystarttheserver.当前的解决方法是创建普通用户并在其下运行进程。我正在寻找的是启动数据库、执行一些操作并将其关闭作为构建过程的一部分的快速方法。