Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / MS / Internal / interop / NativeStructs.cs / 1471291 / NativeStructs.cs
/**************************************************************************\
Copyright Microsoft Corporation. All Rights Reserved.
\**************************************************************************/
//
// A consolidated file of native structures exposed for interop.
// These may be structs or classes, depending on the calling requirements
//
// The naming should generally match the native counterparts.
// The structures may be slightly thicker wrappers to make them
// easier to consume correctly from .Net code (e.g. hiding resource management)
//
namespace MS.Internal.Interop
{
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Security;
// Some COM interfaces and Win32 structures are already declared in the framework.
// Interesting ones to remember in System.Runtime.InteropServices.ComTypes are:
using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;
using IPersistFile = System.Runtime.InteropServices.ComTypes.IPersistFile;
using IStream = System.Runtime.InteropServices.ComTypes.IStream;
///
/// This class is not safe to use in partial trust.
/// Critical: This class is a wrapper for a native structure that manages its own resources.
///
[SecurityCritical]
[StructLayout(LayoutKind.Explicit)]
internal class PROPVARIANT : IDisposable
{
private static class NativeMethods
{
///
/// Critical: Suppresses unmanaged code security.
///
[SecurityCritical, SuppressUnmanagedCodeSecurity]
[DllImport(MS.Win32.ExternDll.Ole32)]
internal static extern int PropVariantClear(PROPVARIANT pvar);
}
[FieldOffset(0)]
private ushort vt;
[FieldOffset(8)]
private IntPtr pointerVal;
[FieldOffset(8)]
private byte byteVal;
[FieldOffset(8)]
private long longVal;
[FieldOffset(8)]
private short boolVal;
///
///
/// Critical: This class is tagged Critical
/// TreatAsSafe - This class is only available in full trust.
///
public VarEnum VarType
{
[SecurityCritical, SecurityTreatAsSafe]
get { return (VarEnum)vt; }
}
// Right now only using this for strings. If for some reason we get something else return null.
///
/// Critical: This class is tagged Critical
/// TreatAsSafe - This class is only available in full trust.
///
[SecurityCritical, SecurityTreatAsSafe]
public string GetValue()
{
if (vt == (ushort)VarEnum.VT_LPWSTR)
{
return Marshal.PtrToStringUni(pointerVal);
}
return null;
}
///
/// Critical: This class is tagged Critical
/// TreatAsSafe - This class is only available in full trust.
///
[SecurityCritical, SecurityTreatAsSafe]
public void SetValue(bool f)
{
Clear();
vt = (ushort)VarEnum.VT_BOOL;
boolVal = (short)(f ? -1 : 0);
}
///
/// Critical: This class is tagged Critical
/// TreatAsSafe - This class is only available in full trust.
///
[SecurityCritical, SecurityTreatAsSafe]
public void SetValue(string val)
{
Clear();
vt = (ushort)VarEnum.VT_LPWSTR;
pointerVal = Marshal.StringToCoTaskMemUni(val);
}
///
/// Critical - Calls critical PropVariantClear
/// TreatAsSafe - This class is only available in full trust.
///
[SecurityCritical, SecurityTreatAsSafe]
public void Clear()
{
NativeMethods.PropVariantClear(this);
}
#region IDisposable Pattern
///
/// Critical: This class is tagged Critical
/// TreatAsSafe - This class is only available in full trust.
///
[SecurityCritical, SecurityTreatAsSafe]
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
///
/// Critical: This class is tagged Critical
/// TreatAsSafe - This class is only available in full trust.
///
[SecurityCritical, SecurityTreatAsSafe]
~PROPVARIANT()
{
Dispose(false);
}
///
/// Critical: This class is tagged Critical
/// TreatAsSafe - This class is only available in full trust.
///
[SecurityCritical, SecurityTreatAsSafe]
private void Dispose(bool disposing)
{
Clear();
}
#endregion
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
[BestFitMapping(false)]
internal class WIN32_FIND_DATAW
{
public FileAttributes dwFileAttributes;
public FILETIME ftCreationTime;
public FILETIME ftLastAccessTime;
public FILETIME ftLastWriteTime;
public int nFileSizeHigh;
public int nFileSizeLow;
public int dwReserved0;
public int dwReserved1;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string cFileName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]
public string cAlternateFileName;
}
// New to Win7.
[StructLayout(LayoutKind.Sequential)]
internal struct CHANGEFILTERSTRUCT
{
public uint cbSize;
public MSGFLTINFO ExtStatus;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
/**************************************************************************\
Copyright Microsoft Corporation. All Rights Reserved.
\**************************************************************************/
//
// A consolidated file of native structures exposed for interop.
// These may be structs or classes, depending on the calling requirements
//
// The naming should generally match the native counterparts.
// The structures may be slightly thicker wrappers to make them
// easier to consume correctly from .Net code (e.g. hiding resource management)
//
namespace MS.Internal.Interop
{
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Security;
// Some COM interfaces and Win32 structures are already declared in the framework.
// Interesting ones to remember in System.Runtime.InteropServices.ComTypes are:
using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;
using IPersistFile = System.Runtime.InteropServices.ComTypes.IPersistFile;
using IStream = System.Runtime.InteropServices.ComTypes.IStream;
///
/// This class is not safe to use in partial trust.
/// Critical: This class is a wrapper for a native structure that manages its own resources.
///
[SecurityCritical]
[StructLayout(LayoutKind.Explicit)]
internal class PROPVARIANT : IDisposable
{
private static class NativeMethods
{
///
/// Critical: Suppresses unmanaged code security.
///
[SecurityCritical, SuppressUnmanagedCodeSecurity]
[DllImport(MS.Win32.ExternDll.Ole32)]
internal static extern int PropVariantClear(PROPVARIANT pvar);
}
[FieldOffset(0)]
private ushort vt;
[FieldOffset(8)]
private IntPtr pointerVal;
[FieldOffset(8)]
private byte byteVal;
[FieldOffset(8)]
private long longVal;
[FieldOffset(8)]
private short boolVal;
///
///
/// Critical: This class is tagged Critical
/// TreatAsSafe - This class is only available in full trust.
///
public VarEnum VarType
{
[SecurityCritical, SecurityTreatAsSafe]
get { return (VarEnum)vt; }
}
// Right now only using this for strings. If for some reason we get something else return null.
///
/// Critical: This class is tagged Critical
/// TreatAsSafe - This class is only available in full trust.
///
[SecurityCritical, SecurityTreatAsSafe]
public string GetValue()
{
if (vt == (ushort)VarEnum.VT_LPWSTR)
{
return Marshal.PtrToStringUni(pointerVal);
}
return null;
}
///
/// Critical: This class is tagged Critical
/// TreatAsSafe - This class is only available in full trust.
///
[SecurityCritical, SecurityTreatAsSafe]
public void SetValue(bool f)
{
Clear();
vt = (ushort)VarEnum.VT_BOOL;
boolVal = (short)(f ? -1 : 0);
}
///
/// Critical: This class is tagged Critical
/// TreatAsSafe - This class is only available in full trust.
///
[SecurityCritical, SecurityTreatAsSafe]
public void SetValue(string val)
{
Clear();
vt = (ushort)VarEnum.VT_LPWSTR;
pointerVal = Marshal.StringToCoTaskMemUni(val);
}
///
/// Critical - Calls critical PropVariantClear
/// TreatAsSafe - This class is only available in full trust.
///
[SecurityCritical, SecurityTreatAsSafe]
public void Clear()
{
NativeMethods.PropVariantClear(this);
}
#region IDisposable Pattern
///
/// Critical: This class is tagged Critical
/// TreatAsSafe - This class is only available in full trust.
///
[SecurityCritical, SecurityTreatAsSafe]
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
///
/// Critical: This class is tagged Critical
/// TreatAsSafe - This class is only available in full trust.
///
[SecurityCritical, SecurityTreatAsSafe]
~PROPVARIANT()
{
Dispose(false);
}
///
/// Critical: This class is tagged Critical
/// TreatAsSafe - This class is only available in full trust.
///
[SecurityCritical, SecurityTreatAsSafe]
private void Dispose(bool disposing)
{
Clear();
}
#endregion
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
[BestFitMapping(false)]
internal class WIN32_FIND_DATAW
{
public FileAttributes dwFileAttributes;
public FILETIME ftCreationTime;
public FILETIME ftLastAccessTime;
public FILETIME ftLastWriteTime;
public int nFileSizeHigh;
public int nFileSizeLow;
public int dwReserved0;
public int dwReserved1;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string cFileName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]
public string cAlternateFileName;
}
// New to Win7.
[StructLayout(LayoutKind.Sequential)]
internal struct CHANGEFILTERSTRUCT
{
public uint cbSize;
public MSGFLTINFO ExtStatus;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DesignerForm.cs
- XmlBufferReader.cs
- KeyBinding.cs
- XmlUnspecifiedAttribute.cs
- DocumentCollection.cs
- DataGridViewAddColumnDialog.cs
- XamlUtilities.cs
- WebPartCancelEventArgs.cs
- UnionCodeGroup.cs
- ResizeGrip.cs
- TextElementCollectionHelper.cs
- ReflectionTypeLoadException.cs
- CmsInterop.cs
- PageCodeDomTreeGenerator.cs
- ToolboxItemFilterAttribute.cs
- AssemblySettingAttributes.cs
- CodeAccessPermission.cs
- WeakEventTable.cs
- ColumnWidthChangingEvent.cs
- ContractBase.cs
- ProcessHostConfigUtils.cs
- HttpCachePolicy.cs
- BaseAsyncResult.cs
- WebUtil.cs
- _BaseOverlappedAsyncResult.cs
- Table.cs
- MailBnfHelper.cs
- DataSysAttribute.cs
- TemplateAction.cs
- PointValueSerializer.cs
- CqlParserHelpers.cs
- GridLength.cs
- BasicHttpSecurityElement.cs
- StorageBasedPackageProperties.cs
- SmtpNtlmAuthenticationModule.cs
- codemethodreferenceexpression.cs
- WebPartEditorOkVerb.cs
- String.cs
- DataListCommandEventArgs.cs
- CachedRequestParams.cs
- ToolStripItem.cs
- MimeParameterWriter.cs
- CodeStatement.cs
- ApplicationSettingsBase.cs
- ModelPropertyDescriptor.cs
- SwitchAttribute.cs
- PropertyContainer.cs
- NavigationExpr.cs
- EncoderBestFitFallback.cs
- QueueProcessor.cs
- SmtpCommands.cs
- IIS7UserPrincipal.cs
- EventDescriptor.cs
- TransportListener.cs
- DataGridColumnFloatingHeader.cs
- Substitution.cs
- ReachFixedPageSerializer.cs
- QueryableFilterUserControl.cs
- ControlBuilder.cs
- EventHandlersStore.cs
- ArraySubsetEnumerator.cs
- XmlSchemaAnyAttribute.cs
- ExceptQueryOperator.cs
- Suspend.cs
- MetafileHeader.cs
- WebBrowserEvent.cs
- ListViewItem.cs
- WaitForChangedResult.cs
- CharKeyFrameCollection.cs
- EntityTransaction.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- GraphicsContext.cs
- PaginationProgressEventArgs.cs
- DaylightTime.cs
- ObjectCloneHelper.cs
- Image.cs
- SeverityFilter.cs
- SerializationAttributes.cs
- ContainerUIElement3D.cs
- InstanceKeyCollisionException.cs
- SubqueryRules.cs
- oledbmetadatacollectionnames.cs
- MetaModel.cs
- SizeAnimationClockResource.cs
- ObjectDataSourceEventArgs.cs
- FontStyle.cs
- AlphaSortedEnumConverter.cs
- CodeSubDirectory.cs
- DropDownButton.cs
- PolygonHotSpot.cs
- LiteralControl.cs
- AuthorizationRule.cs
- LambdaCompiler.Expressions.cs
- ViewValidator.cs
- ProfileGroupSettings.cs
- ReadOnlyDataSource.cs
- SoapAttributeOverrides.cs
- StandardBindingOptionalReliableSessionElement.cs
- BindingsCollection.cs
- ThicknessKeyFrameCollection.cs