我知道在 GINA 中找到大师并不容易,但我的问题最接近进程间通信(IPC),我用非托管 c++ 编写了我的自定义 GINA,我在其中包含了一个方法来检查用户尝试的指纹的有效性为了登录,该函数将调用正在运行的系统Windows服务中用C#编写的一些方法,代码如下:
在 GINA 中,非托管 c++
if(Fingerprint.Validate(userName,finerprintTemplate)
{
//perform login
}
在Windows服务中,C#
public class Fingerprint
{
public static bool Validate(string userName, byte[] finerprintTemplate)
{
//Preform Some code to validate fingerprintTemplate with userName
//and retuen result
}
}
有谁知道如何在 GINA 和 Windows 服务之间,或者简单地在 C++ 编写的服务和 C# 编写的服务之间进行这种通信。
Thanks
与服务(或大多数可能需要跨越会话/桌面边界的 IPC)通信的规范方法是命名管道。您也可以使用邮槽,但您必须处理重复问题,因为邮槽消息在所有已安装的协议中都会被欺骗,因此您需要某种标记系统......变得有点混乱。
请参阅 CreateNamedPipe 的文档并从那里开始工作。我已经使用管道在 C++ 和 C# 之间进行了讨论:互操作有点混乱(二进制消息),但它是可行的。有一些 C# 管道的示例代码(来自双方)here http://www.switchonthecode.com/tutorials/interprocess-communication-using-named-pipes-in-csharp.
使用管道解决特定服务到服务通信问题的好处是,如果需要,您可以稍后扩展设计以支持 UI。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)