123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using System;
- using System.Diagnostics.CodeAnalysis;
- using System.Runtime.InteropServices;
- namespace Standard;
- [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
- [StructLayout(LayoutKind.Explicit)]
- internal class PROPVARIANT : IDisposable
- {
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public VarEnum VarType
- {
- get
- {
- return (VarEnum) this.vt;
- }
- }
- [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")]
- public string GetValue()
- {
- if (this.vt == 31)
- {
- return Marshal.PtrToStringUni(this.pointerVal);
- }
- return null;
- }
- public void SetValue(bool f)
- {
- this.Clear();
- this.vt = 11;
- this.boolVal = (short) (f ? -1 : 0);
- }
- [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")]
- public void SetValue(string val)
- {
- this.Clear();
- this.vt = 31;
- this.pointerVal = Marshal.StringToCoTaskMemUni(val);
- }
- public void Clear()
- {
- PROPVARIANT.NativeMethods.PropVariantClear(this);
- }
- public void Dispose()
- {
- this.Dispose(true);
- GC.SuppressFinalize(this);
- }
- ~PROPVARIANT()
- {
- this.Dispose(false);
- }
- [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "disposing")]
- private void Dispose(bool disposing)
- {
- this.Clear();
- }
- [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- [FieldOffset(0)]
- private ushort vt;
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
- [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- [FieldOffset(8)]
- private IntPtr pointerVal;
- [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- [FieldOffset(8)]
- private byte byteVal;
- [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- [FieldOffset(8)]
- private long longVal;
- [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- [FieldOffset(8)]
- private short boolVal;
- private static class NativeMethods
- {
- [DllImport("ole32.dll")]
- internal static extern HRESULT PropVariantClear(PROPVARIANT pvar);
- }
- }
|