e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
87 lines
2.4 KiB
C#
87 lines
2.4 KiB
C#
//------------------------------------------------------------------------------
|
|
// <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);
|
|
|
|
}
|
|
}
|
|
}
|