You've already forked linux-packaging-mono
Imported Upstream version 4.0.0~alpha1
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
This commit is contained in:
86
external/referencesource/System.Web/Configuration/MULTI_QI.cs
vendored
Normal file
86
external/referencesource/System.Web/Configuration/MULTI_QI.cs
vendored
Normal file
@ -0,0 +1,86 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <copyright file="MULTI_QI.cs" company="Microsoft">
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// </copyright>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
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);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user