草庐IT

多进程架构

全部标签

windows - Windows 中的进程间同步屏障

我试图在Windows中的不同进程之间建立一个屏障。它们本质上是同一进程的两个副本(将它们作为两个单独的线程而不是进程运行不是一种选择)。这个想法是在程序的不同阶段设置障碍,以确保两个过程同时开始每个阶段。在Windows中实现此功能的最有效方法是什么? 最佳答案 使用命名事件(参见CreateEvent和WaitForSingleObjectAPI函数)。每个屏障需要两个事件——每个事件都在应用程序的另一个实例中创建。然后两个实例等待对方的事件。当然,这些事件以后可以重新用于另一个障碍。但是存在一种复杂性——由于事件名称是全局唯一

c# - 提升进程时,如何获取非提升 session 的 Windows 身份验证 ID

我需要获取由GetTokenInformation返回的AuthenticationID和TokenStatistics类,用于登录该站的用户,无论我是否被提升。让我给你一些更多的信息。假设我这样做:varResult=GetTokenInformation(WindowsIdentity.GetCurrent().Token,TOKEN_INFORMATION_CLASS.TokenStatistics,TokenInformation,TokenInfLength,outTokenInfLength);这将使我能够毫无问题地从TokenInformation结构中获取Authent

c# - 如何从桌面应用程序知道某个进程是否在 Windows CE 设备上运行

我想通过桌面应用程序抛出RAPI知道某个进程是否正在WindowsCe设备上运行 最佳答案 RAPi本身不具有任何流程管理/工具帮助功能,因此开箱即用,您无法执行此操作。我的建议是创建一个自定义RAPIDLL(examplehere-不幸的是,这必须在C中完成,但它非常简单)它要么只是通过工具帮助检查你的进程,要么是一个更通用的版本,允许你枚举运行进程,然后使用CeRapiInvoke调用该DLL。共享源OpenNETCFDesktopCommunication库有这个函数的包装器。 关

C# 进程无法访问该文件,因为它正被另一个进程使用(文件对话框)

我有一个正在用日志信息更新的富文本框。有一个按钮可以将日志输出保存到文件中。当我使用下面的代码尝试将输出保存到文件时,我收到“该进程无法访问该文件,因为它正被另一个进程使用”的异常。我不确定为什么会收到此异常。它发生在我在对话框中创建的新文件上。它发生在我尝试将信息保存到的任何文件上。privatevoidsaveLog_Click(objectsender,EventArgse){OnFileDialogOpen(this,newEventArgs());//DisplaysaSaveFileDialogsotheusercansavetheImage//assignedtoButt

windows - Windows 64 位处理器上的最大进程大小是多少

在Windows机器上,一个进程在32位处理器上的最大大小是多少?在任何情况下,进程大小都可以超过4GB吗? 最佳答案 假设您在谈论虚拟内存大小,“进程大小”没有任何意义。32位进程在32位操作系统上最多可以占用2GB的地址空间。当一个32位进程使用/3GB启动选项启动并与/LARGEADDRESSAWARE链接器选项链接时,它可以在32位操作系统上占用多达3GB的地址空间。现在很少有此启动选项可用,尤其是视频适配器占用太多物理地址空间,无法为操作系统和文件系统缓存留出足够的空间。只要使用/LARGEADDRESSAWARE链接器选

windows - 移植 - 共享内存 x32 和 x64 进程

32位主机Windows应用程序设置共享内存(使用内存映射文件/CreateFileMapping()API),然后其他32位客户端进程使用此共享内存相互通信。我计划将主机应用程序移植到64位平台,一旦准备就绪,我打算32位和64位客户端进程都应该能够使用主要64位主机应用程序设置的共享内存。为主机x32应用程序编写的原始代码几乎在任何地方都使用“size_t”,因为当我们从x32移动到x64时,这从4字节到8字节不同,我正在寻找替换它。我打算将“size_t”替换为“unsignedlonglong”,以便它的大小在32位和64位上相同。你能给我推荐更好的选择吗?此外,“unsign

c++ - 如何获取所有进程ID?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WindowsAPI'swhichwillshowtherunningprocesses如何获取iexplorer.exe所有进程的进程ID?当我在iexplorer.exe进程中注入(inject)我的DLL时,getcurrentprocessid()正在获取父进程ID。我该怎么做?

windows - 一个进程的 read() 可以看到另一个进程的部分 write() 吗?

如果一个进程执行大小(和对齐)S(例如8KB)的write(),那么另一个进程是否有可能执行读取(也是大小和对齐S以及同一文件)看到混合旧数据和新数据?写入过程会为每个数据block添加校验和,我想知道是否可以使用读取过程在后台验证校验和。如果读者可以看到部分写入,则会错误地指示损坏。此处适用哪些标准或文件?有没有一种可移植的方法来避免这里的问题,最好不要引入大量锁定? 最佳答案 当一个函数被保证完成而没有任何其他进程/线程/任何东西看到处于半完成状态的任何机会时,它被称为原子.它要么已经发生,要么没有发生,没有中途。虽然我不能与W

windows - 查找在 Windows 上创建文件的进程

有没有办法找到在Windows上创建特定文件的进程? 最佳答案 一般来说,不会。Windows不会记录创建给定文件的进程。您也许可以使用SysInternalsProcessMonitor之类的东西,它可以Hook文件(和注册表I/O),看看您是否可以捕获正在创建的文件,但是一旦它被创建(并且最后一个文件句柄已关闭),Windows会忘记它来自哪个进程。如果文件在当前正在运行的进程中打开,您可以使用ProcessExplorer(也来自SysInternals)找出是哪个进程。如果您认识文件扩展名,有时会有所帮助。或者,也许您可​​

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

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