Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EntryIndex.cs
- CreateParams.cs
- SqlMethodCallConverter.cs
- BinaryNode.cs
- APCustomTypeDescriptor.cs
- BaseEntityWrapper.cs
- AccessViolationException.cs
- PaintEvent.cs
- WinCategoryAttribute.cs
- MetadataHelper.cs
- ConfigsHelper.cs
- Tool.cs
- PasswordDeriveBytes.cs
- ModuleConfigurationInfo.cs
- RewritingPass.cs
- _SSPIWrapper.cs
- XmlSerializationReader.cs
- Wildcard.cs
- InputScopeConverter.cs
- SystemIcmpV4Statistics.cs
- ExpressionConverter.cs
- AsyncCodeActivity.cs
- RoleGroupCollection.cs
- WindowsSecurityTokenAuthenticator.cs
- SchemaImporterExtensionElementCollection.cs
- BorderGapMaskConverter.cs
- SmiRecordBuffer.cs
- UIElementCollection.cs
- SamlSubjectStatement.cs
- StylusDevice.cs
- NativeMsmqMessage.cs
- NamespaceDisplay.xaml.cs
- LoopExpression.cs
- ComEventsInfo.cs
- DuplicateWaitObjectException.cs
- MenuScrollingVisibilityConverter.cs
- DeclaredTypeValidatorAttribute.cs
- VersionedStreamOwner.cs
- NetworkStream.cs
- XmlHierarchicalDataSourceView.cs
- Separator.cs
- TextDecorations.cs
- ApplicationServicesHostFactory.cs
- _FixedSizeReader.cs
- PackageRelationship.cs
- IndentTextWriter.cs
- WindowInteropHelper.cs
- TimerElapsedEvenArgs.cs
- SqlSupersetValidator.cs
- DocumentPageTextView.cs
- MetadataResolver.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- ExpandCollapsePattern.cs
- ValidationService.cs
- VirtualizingPanel.cs
- DelegatingConfigHost.cs
- NavigateEvent.cs
- StickyNoteAnnotations.cs
- TextBox.cs
- WebDisplayNameAttribute.cs
- SignerInfo.cs
- CallSiteHelpers.cs
- BinaryObjectInfo.cs
- DataSetMappper.cs
- VirtualDirectoryMapping.cs
- HttpListenerPrefixCollection.cs
- Inflater.cs
- ReflectTypeDescriptionProvider.cs
- CorruptingExceptionCommon.cs
- Number.cs
- SqlDataSourceConfigureSortForm.cs
- XmlArrayItemAttributes.cs
- ExpandedWrapper.cs
- HuffmanTree.cs
- CompleteWizardStep.cs
- LayoutUtils.cs
- VariableQuery.cs
- EntityCodeGenerator.cs
- AssemblyAttributes.cs
- GridViewRowEventArgs.cs
- CredentialCache.cs
- Header.cs
- NativeConfigurationLoader.cs
- AbsoluteQuery.cs
- HttpFileCollection.cs
- GroupItemAutomationPeer.cs
- SwitchElementsCollection.cs
- FileRecordSequenceCompletedAsyncResult.cs
- DuplicateWaitObjectException.cs
- XPathDocumentIterator.cs
- Collection.cs
- PropertyChangeTracker.cs
- WhitespaceRule.cs
- DataStorage.cs
- TextRunCache.cs
- DefaultCommandConverter.cs
- ToolStripOverflow.cs
- ButtonChrome.cs
- DocumentSchemaValidator.cs
- ToggleButtonAutomationPeer.cs