Пример #1
0
        internal static void SetFullContext(ref FullContext FullContext,
                                            Object FileNode, Object FileDesc)
        {
            Debug.Assert(0 == FullContext.UserContext && 0 == FullContext.UserContext2);
            FullContextHolder Holder = new FullContextHolder();

            Holder.FileNode = FileNode;
            Holder.FileDesc = FileDesc;
            GCHandle Handle = GCHandle.Alloc(Holder, GCHandleType.Normal);

            FullContext.UserContext2 = (UInt64)(IntPtr)Handle;
        }
Пример #2
0
        internal static void GetFullContext(ref FullContext FullContext,
                                            out Object FileNode, out Object FileDesc)
        {
            FullContextHolder Holder = 0 != FullContext.UserContext2 ?
                                       (FullContextHolder)GCHandle.FromIntPtr((IntPtr)FullContext.UserContext2).Target :
                                       null;

            if (null != Holder)
            {
                FileNode = Holder.FileNode;
                FileDesc = Holder.FileDesc;
            }
            else
            {
                FileNode = null;
                FileDesc = null;
            }
        }