Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要用C编写RPC调用示例吗_C#_C++_Wmi_Rpc - Fatal编程技术网

C# 需要用C编写RPC调用示例吗

C# 需要用C编写RPC调用示例吗,c#,c++,wmi,rpc,C#,C++,Wmi,Rpc,我正在处理WMI连接错误和超时,将首先尝试检查RPC堆栈。我找到了下面的C代码片段,但不了解它是否工作,如何工作,以及在哪里可以找到进一步的信息,甚至是示例 RPC_STATUS status; unsigned short *StringBinding; RPC_BINDING_HANDLE BindingHandle; status = RpcStringBindingCompose ( NULL, // Object UUID L"ncac

我正在处理WMI连接错误和超时,将首先尝试检查RPC堆栈。我找到了下面的C代码片段,但不了解它是否工作,如何工作,以及在哪里可以找到进一步的信息,甚至是示例

RPC_STATUS status; unsigned short *StringBinding; RPC_BINDING_HANDLE BindingHandle; status = RpcStringBindingCompose ( NULL, // Object UUID L"ncacn_ip_tcp", // Protocol sequence to use L"MyServer.MyCompany.com", // Server DNS or Netbios Name NULL, NULL, &StringBinding ); // Error checking ommitted. If no error, we proceed below status = RpcBindingFromStringBinding(StringBinding, &BindingHandle); // free string regardless of errors from RpcBindingFromStringBinding RpcStringFree(&StringBinding); 这段代码真的有联系吗? 有人对C有互操作声明吗

谢谢你


br mabra

以下是上述示例的互操作代码:

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);
    }
}

以下是上述示例的互操作代码:

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代码并向他们展示古板的C++来吓唬别人。它可能不是古时的,它只是看起来,但无论如何尝试编辑这是一个短的更任务重点的问题,没有C++。抱歉,但我在一个起点使用它,我需要这个端口来使用C。现在,我添加了一个C++标签,希望,这有帮助。让我们尝试进入山姆页面。这就是你想做的事吗?如果是这样的话,你在做这件事时遇到了什么问题?我不明白你想达到什么目的。你提到了WMI连接错误和超时,但随后开始询问真正的低级PRC的东西。你通过请求C代码并显示他们的古C++来吓跑人们。它可能不是古时的,它只是看起来,但无论如何尝试编辑这是一个短的更任务重点的问题,没有C++。抱歉,但我在一个起点使用它,我需要这个端口来使用C。现在,我添加了一个C++标签,希望,这有帮助。让我们尝试进入山姆页面。这就是你想做的事吗?如果是这样的话,你在做这件事时遇到了什么问题?我不明白你想达到什么目的。您提到WMI连接错误和超时,但随后开始询问真正低级的PRC内容。非常感谢,我将尝试一下!非常感谢,我要试一试!