MULTI_QI.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / Configuration / MULTI_QI.cs / 1 / MULTI_QI.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Web.Configuration { 
    using System.Collections; 
    using System.Configuration;
    using System.Configuration.Internal; 
    using System.Web;
    using System.Web.Util;
    using System.Security;
    using System.IO; 
    using System.Web.Hosting;
    using System.Runtime.InteropServices; 
    using System.Reflection; 
    using System.Collections.Specialized;
    using System.Xml; 
    using System.Security.Principal;
    using System.Threading;
    using System.Globalization;
 
    [StructLayout(LayoutKind.Sequential, Pack = 4)]
    internal struct MULTI_QI : IDisposable 
    { 
        internal MULTI_QI(IntPtr pid) {
            piid = pid; 
            pItf = IntPtr.Zero;
            hr = 0;
        }
 
        internal IntPtr piid;        // 'Guid' can't be marshaled to GUID* here? use IntPtr buffer trick instead
        internal IntPtr pItf; 
        internal int hr; 

        void IDisposable.Dispose() 
        {
            if (pItf != IntPtr.Zero)
            {
                Marshal.Release(pItf); 
                pItf = IntPtr.Zero;
            } 
            if (piid != IntPtr.Zero) 
            {
                Marshal.FreeCoTaskMem(piid); 
                piid = IntPtr.Zero;
            }
            GC.SuppressFinalize(this);
 
        }
    } 
 
    [StructLayout(LayoutKind.Sequential, Pack = 4)]
    internal struct MULTI_QI_X64 : IDisposable 
    {
        internal MULTI_QI_X64(IntPtr pid)
        {
            piid = pid; 
            pItf = IntPtr.Zero;
            hr = 0; 
            padding = 0; 
        }
 
        internal IntPtr piid;        // 'Guid' can't be marshaled to GUID* here? use IntPtr buffer trick instead
        internal IntPtr pItf;
        internal int hr;
#pragma warning disable 0649 
        internal int padding;
#pragma warning restore 0649 
 
        void IDisposable.Dispose()
        { 
            if (pItf != IntPtr.Zero) {
                Marshal.Release(pItf);
                pItf = IntPtr.Zero;
            } 
            if (piid != IntPtr.Zero) {
                Marshal.FreeCoTaskMem(piid); 
                piid = IntPtr.Zero; 
            }
            GC.SuppressFinalize(this); 

        }
    }
} 


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK