草庐IT

跨进程通信

全部标签

windows - 我可以使用什么来代替 Unix 管道在 Windows 上进行进程间通信?

我有一个启动子进程的应用程序。子进程从标准输入读取要操作的文件。对于某些操作,它需要一个输入文件,其中包含有关如何处理它所操作的文件的信息——我们称之为“控制文件”。控制文件的名称也从标准输入中读取。父应用程序可以使用临时文件作为控制文件,但我更愿意避免使用真正的磁盘备份文件。在Linux上,这很简单:我可以创建一个Unix管道,fork,在启动子进程之前关闭管道的各个端点,然后使用/dev/fd/3(或任何文件描述符)作为控制文件名,然后将控制数据写入父应用程序中的管道。或者,我可以在/tmp(或其他任何内容)中使用命名管道。我怎样才能在Windows上实现类似的功能?Windows

c++ - 跨进程 COM 编码(marshal)拆收器 : reduce number of copies for large arrays

作为简化的案例:我需要通过现有的COM接口(interface)将VARIANT传输到另一个进程。我目前使用MIDL生成的编码器。实际传输是针对许多值的,是时间关键过程的一部分,并且可能涉及大字符串或safearray(几MB),因此复制的数量似乎是相关的。由于接收方需要“保留”函数调用之外的数据,因此编码(marshal)拆收器至少需要制作一份拷贝。然而,我能想到的所有签名都包括两份:SetValue([in]VARIANT)GetValue([out]VARIANT*)//calledbyreceiver在这两种情况下,根据我的理解,编码器制作了一个跨进程拷贝,但确实被编码器销毁了

c# - Windows 和/或用户控件之间通信的模式/方法

我目前正在开发一个应用程序,我将使用C#和WPF打开多个窗口。是否有一种模式或通用方法可用于帮助促进打开的Windows或/和UserControl之间的通信?例如,一个窗口,我们称它为“层次结构窗口”,可能会显示世界上国家、省份和城市的层次结构。除此之外,还有几个其他窗口可以显示省或市,例如OR允许您创建省或市。在创建新城市的情况下,我的“城市窗口”与我的“层次结构窗口”就添加城市或删除城市进行沟通的最佳方式是什么?请记住,创建城市时甚至可能不会打开“层次结构窗口”。此时,无需响应/操作。 最佳答案 有两种常见的方法:使用依赖注入

c# - 客户端和服务器无法通信,因为它们不具备通用算法,C# SslStream

以下是我在Windows10上为客户端/服务器控制台应用程序进行相互SSL身份验证的设置:有一个服务器监听器控制台应用程序只接受TLS1.0连接。客户端控制台应用程序使用SslStream.AuthenticateAsClient配置安全连接并使用TLS1.2连接。我使用以下示例进行相互SSL身份验证:http://www.codeproject.com/Articles/326574/An-Introduction-to-Mutual-SSL-Authentication服务器代码:sslStream.AuthenticateAsServer(certificate,true,Ssl

c++ - SetWindowPos() 跨进程 DPI 感知

我正在创建一个程序,它使用SetWindowPos()从另一个进程移动/调整窗口大小。我自己的程序是PROCESS_PER_MONITOR_DPI_AWARE。其他程序可以是PROCESS_DPI_UNAWARE、PROCESS_SYSTEM_DPI_AWARE或PROCESS_PER_MONITOR_DPI_AWARE中的任何内容。因为我自己的程序是PROCESS_PER_MONITOR_DPI_AWARE,所以我传递给SetWindowPos()的坐标是物理坐标。我现在要做的是将客户区的大小调整到逻辑坐标中的特定大小。我尝试做的是获取放置窗口的显示器的DPI作为screenDPI。

windows - 64 位应用程序与 32 位进程通信

我有一个使用32位第三方库的32位应用程序。现在我必须将我的应用程序设为64位,以便它可以利用64位地址空间(大内存)。由于我无法将32位库加载到64位应用程序进程中,我正在考虑在第三方库上创建32位可执行包装器,并使用IPC(命名管道/套接字)从我的64位应用程序进行通信。所以我的问题是他们这样做会有什么问题吗?此外,如果我必须在64位系统上安装我的应用程序,所有与我的应用程序相关的文件都将被复制到“c:\ProgramFiles”目录。现在我可以将我的32位第三方exe包装器保留在同一个“c:\ProgramFiles”中,还是我需要复制到“c:\ProgramFiles(x86)

windows - 用于与 Windows 命名管道通信的程序

我对Windows中的命名管道比较陌生。我需要一个类似于linux的socat的Windows工具来通过命名管道进行通信。Cygwin的socat可以访问窗口命名管道吗?如果是,怎么办? 最佳答案 我自己很快就弄明白了。使用putty和serial作为连接类型。在串行线路框中键入完整的管道名称。 关于windows-用于与Windows命名管道通信的程序,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

windows - Windows Embedded Compact 7(以前称为 CE)上的 HTTP 1.0 通信速度较慢

在WindowsEmbeddedCompact7(以前称为CE)上,我响应HTTP1.0请求的性能比在旧的WindowsCE版本(4.0和5.0)上慢得多。在WindowsCE5.0上,我有大约10毫秒的时间来响应请求,在EmbeddedCompact7上大约有170毫秒。一旦我切换到“KeepAlive”和HTTP1.1,它就会再次变快。但是我想了解是否引入了任何可以更改的新套接字限制或选项选项。 最佳答案 我建议您在注册表中将TCPSendQueueDelay设置为0。(https://technet.microsoft.com

在 Windows 上通过管道进行 Java/C++ 通信

我有两个独立的程序,一个用Java,一个用C++,都在Windows上运行。我们需要在两者之间进行双向进程间通信。到目前为止,我们一直在使用这种笨拙的解决方案,即写入文本文件并在另一端读取它们,其中生产者在写入完成后会生成一个.lock文件,而消费者在完成读取后会删除该文件。..就像我说的,尴尬。如果我们在*nix上,我们将在C++上使用使用popen()的管道,在Java端使用RadomAccessFile。看起来效果不错。我们可以在Windows上做什么?我们可以使用命名管道吗?谢谢。 最佳答案 看看谷歌的ProtocolBuf

windows - 凭据提供程序通过网络通信

首先让我解释一下我想要的解决方案:我正在创建一个自定义凭据提供程序,通过将登录凭据发送到外部身份验证服务器来对用户进行身份验证,然后将相同的凭据连同一些额外的身份验证参数传递回凭据提供程序。凭据提供程序然后将这些凭据发送到本地安全机构,后者又根据自定义身份验证包对用户进行身份验证。我对Windows编程还很陌生,但我一直在研究CredentialProviderTechnicalReference,因此我对它的工作原理有一些了解。我还没有弄清楚的是:在对自定义凭据提供程序进行编程时,我能否像上面示例中建议的那样对其进行编程以进行外部通信?我在某处读到可以使用WinHTTP向凭据提供程序