示例#1
0
 /// <summary>
 /// The endpoint to which this endpoint is connected.
 /// </summary>
 public static Allocation * /*EndpointCore* opt(ExHeap) */ GetPeer(ref EndpointCore ep,
                                                                   out bool marshall)
 {
     // kernel methods always access the shadowed copy in deliveryImpl
     // not the user accessable copy in EndpointCore
     return(GetPeerABI(ref ep, out marshall));
 }
示例#2
0
        public static bool PeerClosedABI(ref EndpointCore endpoint)
        {
            fixed(EndpointCore *ep = &endpoint)
            {
                EndpointCoreImplementation *epimp = (EndpointCoreImplementation *)ep;

                return(epimp->PeerClosed());
            }
        }
示例#3
0
        public static void Close(ref EndpointCore endpoint)
        {
            fixed(EndpointCore *ep = &endpoint)
            {
                EndpointCoreImplementation *epimp = (EndpointCoreImplementation *)ep;

                epimp->Close();
            }
        }
示例#4
0
        public static void TransferBlockOwnership(Allocation *ptr, ref EndpointCore target)
        {
            fixed(EndpointCore *ep = &target)
            {
                EndpointCoreImplementation *epimp = (EndpointCoreImplementation *)ep;

                EndpointCoreImplementation.TransferBlockOwnership((SharedHeap.Allocation *)ptr, ref *epimp);
            }
        }
示例#5
0
        public static void NotifyPeer(ref EndpointCore endpoint)
        {
            fixed(EndpointCore *ep = &endpoint)
            {
                EndpointCoreImplementation *epimp = (EndpointCoreImplementation *)ep;

                epimp->NotifyPeer();
            }
        }
示例#6
0
        public static int GetPeerProcessIDABI(ref EndpointCore endpoint)
        {
            fixed(EndpointCore *ep = &endpoint)
            {
                EndpointCoreImplementation *epimp = (EndpointCoreImplementation *)ep;

                return(epimp->PeerProcessId);
            }
        }
示例#7
0
        public static void EnableDelegation(ref EndpointCore endpoint, bool allowMediation)
        {
            fixed(EndpointCore *ep = &endpoint)
            {
                EndpointCoreImplementation *epimp = (EndpointCoreImplementation *)ep;

                epimp->EnableDelegation(allowMediation);
            }
        }
示例#8
0
        public static PrincipalHandle GetOwnerPrincipalHandle(ref EndpointCore endpoint)
        {
            fixed(EndpointCore *ep = &endpoint)
            {
                EndpointCoreImplementation *epimp = (EndpointCoreImplementation *)ep;

                return(epimp->OwnerPrincipalHandle);
            }
        }
示例#9
0
        public static bool Dispose(ref EndpointCore endpoint)
        {
            fixed(EndpointCore *ep = &endpoint)
            {
                EndpointCoreImplementation *epimp = (EndpointCoreImplementation *)ep;

                return(epimp->Dispose());
            }
        }
示例#10
0
        public static void MarshallPointer(ref EndpointCore endpoint, byte *basep, byte **target, SystemType type, byte *parent, int offset)
        {
            fixed(EndpointCore *ep = &endpoint)
            {
                EndpointCoreImplementation *epimp = (EndpointCoreImplementation *)ep;

                epimp->MarshallPointer(basep, target, type, parent, offset);
            }
        }
示例#11
0
        public static Allocation * /*EndpointCore* opt(ExHeap) */ GetPeerABI(ref EndpointCore endpoint,
                                                                             out bool marshall)
        {
            fixed(EndpointCore *ep = &endpoint)
            {
                EndpointCoreImplementation *epimp = (EndpointCoreImplementation *)ep;

                return((Allocation *)epimp->Peer(out marshall));
            }
        }
示例#12
0
        /// <summary>
        /// The event to wait for messages on this endpoint. Used by Select.
        /// </summary>
        public static SyncHandle GetWaitHandle(ref EndpointCore endpoint)
        {
            // kernel methods always access the shadowed copy in deliveryImpl
            // not the user accessable copy in EndpointCore
            fixed(EndpointCore *ep = &endpoint)
            {
                EndpointCoreImplementation *epimp = (EndpointCoreImplementation *)ep;

                return(epimp->GetWaitHandle());
            }
        }
示例#13
0
        public static int GetOwnerProcessID(ref EndpointCore endpoint)
        {
            // kernel methods always access the shadowed copy in deliveryImpl
            // not the user accessable copy in EndpointCore
            fixed(EndpointCore *ep = &endpoint)
            {
                EndpointCoreImplementation *epimp = (EndpointCoreImplementation *)ep;

                return(epimp->ProcessId);
            }
        }
示例#14
0
        public static void TransferContentOwnership(
            ref EndpointCore transferee,
            ref EndpointCore target)
        {
            fixed(EndpointCore *ep1 = &transferee, ep2 = &target)
            {
                EndpointCoreImplementation *epimp1 = (EndpointCoreImplementation *)ep1;
                EndpointCoreImplementation *epimp2 = (EndpointCoreImplementation *)ep2;

                EndpointCoreImplementation.TransferContentOwnership(ref *epimp1, ref *epimp2);
            }
        }
示例#15
0
 public static bool PeerClosed(ref EndpointCore ep)
 {
     if (ep.cachedPeer != null)
     {
         EndpointCore *peer = (EndpointCore *)SharedHeapService.GetData(ep.cachedPeer);
         return(peer->cachedClosed);
     }
     else
     {
         return(PeerClosedABI(ref ep));
     }
 }
示例#16
0
 public static int GetPeerProcessID(ref EndpointCore ep)
 {
     if (ep.peerStateValid)
     {
         EndpointCore *peer = (EndpointCore *)SharedHeapService.GetData(ep.cachedPeer);
         return(peer->cachedOwnerProcessId);
     }
     else
     {
         return(GetPeerProcessIDABI(ref ep));
     }
 }
示例#17
0
        unsafe public static void MarshallMessage(ref EndpointCore endpoint,
                                                  byte *basep,
                                                  byte *source,
                                                  int *tagAddress,
                                                  int msgSize)
        {
            fixed(EndpointCore *ep = &endpoint)
            {
                EndpointCoreImplementation *epimp = (EndpointCoreImplementation *)ep;

                epimp->BeginUpdate(basep, source, tagAddress, msgSize);
            }
        }
示例#18
0
 public static Allocation * /*EndpointCore* opt(ExHeap) */ GetPeer(ref EndpointCore ep,
                                                                   out bool marshall)
 {
     if (ep.cachedPeer != null)
     {
         marshall = ep.cachedMarshall;
         return(ep.cachedPeer);
     }
     else
     {
         return(GetPeerABI(ref ep, out marshall));
     }
 }
示例#19
0
 /// <summary>
 /// Indicates if the peer endpoint is closed
 /// </summary>
 public static bool PeerClosed(ref EndpointCore ep)
 {
     // kernel methods always access the shadowed copy in deliveryImpl
     // not the user accessable copy in EndpointCore
     return(PeerClosedABI(ref ep));
 }
示例#20
0
 /// <summary>
 /// Instruct the selectable object to stop signalling events on the given
 /// AutoResetEvent.
 /// </summary>
 public static void UnlinkFromCollection(ref EndpointCore ep,
                                         AutoResetEventHandle ev)
 {
     ep.collectionEvent = new AutoResetEventHandle();
 }
示例#21
0
 /// <summary>
 /// Instruct the selectable object to signal events on the given AutoResetEvent
 /// rather than its normal event in order to aggregate signalling into a set.
 /// A selectable object need only support being part of a single collection at
 /// any point in time.
 /// </summary>
 public static void LinkIntoCollection(ref EndpointCore ep,
                                       AutoResetEventHandle ev)
 {
     ep.collectionEvent = ev;
 }
示例#22
0
 public static int GetOwnerProcessID(ref EndpointCore ep)
 {
     return(ep.cachedOwnerProcessId);
 }
示例#23
0
 public static int GetChannelID(ref EndpointCore ep)
 {
     return(ep.cachedChannelId);
 }
示例#24
0
 public static int GetPeerProcessID(ref EndpointCore ep)
 {
     // kernel methods always access the shadowed copy in deliveryImpl
     // not the user accessable copy in EndpointCore
     return(GetPeerProcessIDABI(ref ep));
 }
示例#25
0
 unsafe public static extern void MarshallMessage(ref EndpointCore ep,
                                                  byte *basep,
                                                  byte *source,
                                                  int *tagAddress,
                                                  int size);
示例#26
0
 unsafe public static extern void MarshallPointer(ref EndpointCore ep, byte *basep, byte **target, SystemType type, byte *parent, int offset);
示例#27
0
 public static extern int GetPeerProcessIDABI(ref EndpointCore ep);
示例#28
0
 /// <summary>
 /// Wait for a message to arrive on this endpoint.
 /// </summary>
 public static void Wait(ref EndpointCore ep)
 {
     SyncHandle.WaitOne(GetWaitHandle(ref ep));
 }
示例#29
0
 public static extern void EnableDelegation(ref EndpointCore ep, bool allowMediation);
示例#30
0
 public static extern PrincipalHandle GetPeerPrincipalHandle(ref EndpointCore ep);