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 ContextResult(PresentationResultType result, int reason, RPC_SYNTAX_IDENTIFIER transfer_syntax) { Result = result; if (result == PresentationResultType.NegotiateAck) { BindTimeFeature = (BindTimeFeatureNegotiation)reason; } else { Reason = (PresentationResultReason)reason; } TransferSyntax = transfer_syntax; }
private static IntPtr GetClientInterface() { RPC_VERSION rpcv1 = new RPC_VERSION { MajorVersion = 1, MinorVersion = 0 }; RPC_VERSION rpcv2 = new RPC_VERSION { MajorVersion = 2, MinorVersion = 0 }; RPC_SYNTAX_IDENTIFIER InterfaceId = new RPC_SYNTAX_IDENTIFIER { SyntaxGUID = new Guid(0x76f03f96, 0xcdfd, 0x44fc, 0xa2, 0x2c, 0x64, 0x95, 0x0a, 0x00, 0x12, 0x09), SyntaxVersion = rpcv1 }; RPC_SYNTAX_IDENTIFIER TransferSyntax = new RPC_SYNTAX_IDENTIFIER { SyntaxGUID = new Guid(0x8a885d04, 0x1ceb, 0x11c9, 0x9f, 0xe8, 0x08, 0x00, 0x2b, 0x10, 0x48, 0x60), SyntaxVersion = rpcv2 }; RPC_CLIENT_INTERFACE logonRpcClientInterface = new RPC_CLIENT_INTERFACE { Length = (uint)Marshal.SizeOf(typeof(RPC_CLIENT_INTERFACE)), InterfaceId = InterfaceId, TransferSyntax = TransferSyntax, DispatchTable = IntPtr.Zero, //PRPC_DISPATCH_TABLE RpcProtseqEndpointCount = 0, RpcProtseqEndpoint = IntPtr.Zero, //PRPC_PROTSEQ_ENDPOINT Reserved = IntPtr.Zero, InterpreterInfo = IntPtr.Zero, Flags = 0x00000000 }; IntPtr plogonRpcClientInterface = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(RPC_CLIENT_INTERFACE))); Marshal.StructureToPtr(logonRpcClientInterface, plogonRpcClientInterface, false); return(plogonRpcClientInterface); }
public RPC_CLIENT_INTERFACE(Guid iid, ushort InterfaceVersionMajor = 1, ushort InterfaceVersionMinor = 0) { Length = (uint)Marshal.SizeOf(typeof(RPC_CLIENT_INTERFACE)); InterfaceId = new RPC_SYNTAX_IDENTIFIER() { SyntaxGUID = iid, SyntaxVersion = new RPC_VERSION(InterfaceVersionMajor, InterfaceVersionMinor) }; TransferSyntax = new RPC_SYNTAX_IDENTIFIER() { SyntaxGUID = IID_SYNTAX, SyntaxVersion = RPC_VERSION.SYNTAX_VERSION }; DispatchTable = IntPtr.Zero; RpcProtseqEndpointCount = 0u; RpcProtseqEndpoint = IntPtr.Zero; Reserved = IntPtr.Zero; InterpreterInfo = IntPtr.Zero; Flags = 0u; }
public LRPC_BIND_MESSAGE(Guid guid, Version interface_version) : this() { Header = new LRPC_HEADER(LRPC_MESSAGE_TYPE.lmtBind); Interface = new RPC_SYNTAX_IDENTIFIER(guid, (ushort)interface_version.Major, (ushort)interface_version.Minor); TransferSyntaxSet = TransferSyntaxSetFlags.UseDce; }
private ContextResult(PresentationResultType result, PresentationResultReason reason, RPC_SYNTAX_IDENTIFIER transfer_syntax) { Result = result; Reason = reason; TransferSyntax = transfer_syntax; }
private void WriteSyntax(BinaryWriter writer, RPC_SYNTAX_IDENTIFIER syntax) { writer.Write(syntax.SyntaxGUID.ToByteArray()); writer.Write(syntax.SyntaxVersion.MajorVersion); writer.Write(syntax.SyntaxVersion.MinorVersion); }