需要用 C# 编写的 RPC 调用示例
Posted
技术标签:
【中文标题】需要用 C# 编写的 RPC 调用示例【英文标题】:Need RPC call example written in C# 【发布时间】:2009-12-18 23:28:14 【问题描述】:我正在处理 WMI 连接错误和超时,并将尝试首先检查 RPC 堆栈。我找到了以下 C 代码 sn-p,但不明白它是否以及如何工作,以及在哪里可以找到更多信息甚至是示例。
RPC_STATUS 状态; 无符号短 *StringBinding; RPC_BINDING_HANDLE 绑定句柄; 状态 = RpcStringBindingCompose ( NULL, // 对象 UUID L"ncacn_ip_tcp", // 要使用的协议序列 L"MyServer.MyCompany.com", // 服务器 DNS 或 Netbios 名称 空值, 空值, 字符串绑定(&String) ); // 忽略错误检查。如果没有错误,我们继续下面 状态 = RpcBindingFromStringBinding(StringBinding, &BindingHandle); // 无论来自 RpcBindingFromStringBinding 的错误如何,都释放字符串 RpcStringFree(&StringBinding);这段代码真的能建立联系吗? 有人有 C# 的互操作声明吗?
到目前为止谢谢。
br--马布拉
【问题讨论】:
你通过要求 C# 代码并向他们展示看起来很古老的 C++ 来吓跑人们。它可能实际上并不古老,只是看起来而已,但无论如何尝试将其编辑为一个更短、更专注于任务的问题,而不使用 C++。 不,它很古老。并且与 WMI 无关。 对不起,但我在起点使用它,我需要它来移植以使用 C#。现在,我添加了一个 C++ 标签,希望 this.helps。 让我们尝试进入 sam 页面。这是你想做的事情吗?如果是这样,你有什么问题? msdn.microsoft.com/en-us/library/aa389762(VS.85).aspx 我不明白你想要达到什么目的。您提到了 WMI 连接错误和超时,但随后开始询问真正低级的 PRC 问题。 【参考方案1】:这是上述示例的互操作代码:
class Rpc
[DllImport("Rpcrt4.dll", CharSet = CharSet.Auto)]
public static extern int RpcStringBindingCompose(
string ObjUuid,
string ProtSeq,
string NetworkAddr,
string EndPoint,
string Options,
out string StringBinding);
[DllImport("Rpcrt4.dll", CharSet = CharSet.Auto)]
public static extern int RpcBindingFromStringBinding(
string StringBinding,
out IntPtr Binding);
[DllImport("Rpcrt4.dll", CharSet = CharSet.Auto)]
public static extern int RpcBindingFree(
ref IntPtr Binding);
public Rpc()
string stringBinding = null;
int retCode = RpcStringBindingCompose(
null, // Object UUID
"ncacn_ip_tcp", // Protocol sequence to use
"MyServer.MyCompany.com", // Server DNS or Netbios Name
null,
null,
out stringBinding );
IntPtr bindingHandle = IntPtr.Zero;
retCode = RpcBindingFromStringBinding(stringBinding, out bindingHandle);
retCode = RpcBindingFree(ref bindingHandle);
【讨论】:
非常感谢,我试试看!以上是关于需要用 C# 编写的 RPC 调用示例的主要内容,如果未能解决你的问题,请参考以下文章