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