public RPC_SERVER_INTERFACE(RpcHandle handle, Ptr <MIDL_SERVER_INFO> pServer, Guid iid) { Length = (uint)Marshal.SizeOf(typeof(RPC_SERVER_INTERFACE)); InterfaceId = new RPC_SYNTAX_IDENTIFIER() { SyntaxGUID = iid, SyntaxVersion = RPC_VERSION.INTERFACE_VERSION }; TransferSyntax = new RPC_SYNTAX_IDENTIFIER() { SyntaxGUID = IID_SYNTAX, SyntaxVersion = RPC_VERSION.SYNTAX_VERSION }; RPC_DISPATCH_TABLE fnTable = new RPC_DISPATCH_TABLE(); fnTable.DispatchTableCount = 2; fnTable.DispatchTable = handle.Pin(new RPC_DISPATCH_TABLE_Entry() { DispatchMethod = RpcApi.ServerEntry.Handle, DispatchAsyncMethod = RpcApi.AsyncServerEntry.Handle, Zero = IntPtr.Zero }); fnTable.Reserved = IntPtr.Zero; DispatchTable = handle.Pin(fnTable); RpcProtseqEndpointCount = 0u; RpcProtseqEndpoint = IntPtr.Zero; DefaultManagerEpv = IntPtr.Zero; InterpreterInfo = pServer.Handle; Flags = 0x04000000u; }
private static RPC_SERVER_INTERFACE CreateExplicitBytesServer(RpcHandle handle, Ptr <MIDL_SERVER_INFO> pServer, Guid iid) { var server = new RPC_SERVER_INTERFACE(); server.Length = (uint)Marshal.SizeOf(typeof(RPC_SERVER_INTERFACE)); server.InterfaceId = new RPC_SYNTAX_IDENTIFIER() { SyntaxGUID = iid, SyntaxVersion = ExplicitBytesConstants.INTERFACE_VERSION }; server.TransferSyntax = new RPC_SYNTAX_IDENTIFIER() { SyntaxGUID = SYNTAX.SYNTAX_IID, SyntaxVersion = SYNTAX.SYNTAX_VERSION }; var fnTable = new RPC_DISPATCH_TABLE(); fnTable.DispatchTableCount = 1; fnTable.DispatchTable = handle.Pin(new RPC_DISPATCH_TABLE_Entry() { DispatchMethod = RpcRuntime.ServerEntry.Handle, Zero = IntPtr.Zero }); fnTable.Reserved = IntPtr.Zero; server.DispatchTable = handle.Pin(fnTable); server.RpcProtseqEndpointCount = 0u; server.RpcProtseqEndpoint = IntPtr.Zero; server.DefaultManagerEpv = IntPtr.Zero; server.InterpreterInfo = pServer.Handle; server.Flags = 0x04000000u; return(server); }