Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / MS / Internal / CheckedPointers.cs / 1 / CheckedPointers.cs
//----------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// Description: Checked pointers for various types
//
// History:
// 05/09/2005: [....] Created the file
//
//---------------------------------------------------------------------------
using System;
using System.Security;
using MS.Internal.Shaping;
using MS.Internal.FontCache;
//
// The file contains wrapper structs for various pointer types.
// This is to allow us passing these pointers safely in layout code and provides
// some bound checking. Only construction and probing into these pointers are security critical.
//
namespace MS.Internal
{
///
/// Checked pointer for (Char*)
///
internal struct CheckedCharPointer
{
///
/// Critical - The method takes unsafe pointer
///
[SecurityCritical]
internal unsafe CheckedCharPointer(char * pointer, int length)
{
_checkedPointer = new CheckedPointer(pointer, length * sizeof(char));
}
///
/// Critical - The method returns unsafe pointer
///
[SecurityCritical]
internal unsafe char * Probe(int offset, int length)
{
return (char*) _checkedPointer.Probe(offset * sizeof(char), length * sizeof(char));
}
private CheckedPointer _checkedPointer;
}
///
/// Checked pointer for (int*)
///
internal struct CheckedIntPointer
{
///
/// Critical - The method takes unsafe pointer
///
[SecurityCritical]
internal unsafe CheckedIntPointer(int * pointer, int length)
{
_checkedPointer = new CheckedPointer(pointer, length * sizeof(int));
}
///
/// Critical - The method returns unsafe pointer
///
[SecurityCritical]
internal unsafe int * Probe(int offset, int length)
{
return (int *) _checkedPointer.Probe(offset * sizeof(int), length * sizeof(int));
}
private CheckedPointer _checkedPointer;
}
///
/// Checked pointer for (ushort*)
///
internal struct CheckedUShortPointer
{
///
/// Critical - The method takes unsafe pointer
///
[SecurityCritical]
internal unsafe CheckedUShortPointer(ushort * pointer, int length)
{
_checkedPointer = new CheckedPointer(pointer, length * sizeof(ushort));
}
///
/// Critical - The method returns unsafe pointer
///
[SecurityCritical]
internal unsafe ushort * Probe(int offset, int length)
{
return (ushort *) _checkedPointer.Probe(offset * sizeof(ushort), length * sizeof(ushort));
}
private CheckedPointer _checkedPointer;
}
///
/// Checked pointer for (GlyphOffset*)
///
internal struct CheckedGlyphOffsetPointer
{
///
/// Critical - The method takes unsafe pointer
///
[SecurityCritical]
internal unsafe CheckedGlyphOffsetPointer(GlyphOffset* pointer, int length)
{
_checkedPointer = new CheckedPointer(pointer, length * sizeof(GlyphOffset));
}
///
/// Critical - The method returns unsafe pointer
///
[SecurityCritical]
internal unsafe GlyphOffset * Probe(int offset, int length)
{
return (GlyphOffset *) _checkedPointer.Probe(offset * sizeof(GlyphOffset), length * sizeof(GlyphOffset));
}
private CheckedPointer _checkedPointer;
}
///
/// Checked pointer for (GlyphShapingProperties*)
///
internal struct CheckedGlyphShapingPropertiesPointer
{
///
/// Critical - The method takes unsafe pointer
///
[SecurityCritical]
internal unsafe CheckedGlyphShapingPropertiesPointer(GlyphShapingProperties* pointer, int length)
{
_checkedPointer = new CheckedPointer(pointer, length * sizeof(GlyphShapingProperties));
}
///
/// Critical - The method takes unsafe pointer
///
[SecurityCritical]
internal unsafe CheckedGlyphShapingPropertiesPointer(uint* pointer, int length)
{
_checkedPointer = new CheckedPointer(pointer, length * sizeof(GlyphShapingProperties));
}
///
/// Critical - The method returns unsafe pointer
///
[SecurityCritical]
internal unsafe GlyphShapingProperties * Probe(int offset, int length)
{
return (GlyphShapingProperties *) _checkedPointer.Probe(offset * sizeof(GlyphShapingProperties), length * sizeof(GlyphShapingProperties));
}
private CheckedPointer _checkedPointer;
}
///
/// Checked pointer for (CharacterShapingProperties*)
///
internal struct CheckedCharacterShapingPropertiesPointer
{
///
/// Critical - The method takes unsafe pointer
///
[SecurityCritical]
internal unsafe CheckedCharacterShapingPropertiesPointer(CharacterShapingProperties* pointer, int length)
{
_checkedPointer = new CheckedPointer(pointer, length * sizeof(CharacterShapingProperties));
}
///
/// Critical - The method returns unsafe pointer
///
[SecurityCritical]
internal unsafe CharacterShapingProperties * Probe(int offset, int length)
{
return (CharacterShapingProperties *) _checkedPointer.Probe(offset * sizeof(CharacterShapingProperties), length * sizeof(CharacterShapingProperties));
}
private CheckedPointer _checkedPointer;
}
}
// 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
- LoginDesigner.cs
- StaticExtensionConverter.cs
- TypeKeyValue.cs
- Menu.cs
- ColumnWidthChangedEvent.cs
- NamedPipeActivation.cs
- WebConfigurationHost.cs
- ConfigurationSectionGroupCollection.cs
- OletxTransactionHeader.cs
- DelimitedListTraceListener.cs
- XmlSchemaCompilationSettings.cs
- Journal.cs
- SqlConnectionPoolGroupProviderInfo.cs
- TextRangeBase.cs
- ParserExtension.cs
- SkinBuilder.cs
- EventLogPermissionEntryCollection.cs
- AbsoluteQuery.cs
- Geometry.cs
- FragmentNavigationEventArgs.cs
- LocationSectionRecord.cs
- PerformanceCounterCategory.cs
- AttributeUsageAttribute.cs
- CapabilitiesPattern.cs
- GroupBox.cs
- LineMetrics.cs
- CriticalFinalizerObject.cs
- SqlUdtInfo.cs
- QueryInterceptorAttribute.cs
- SessionStateItemCollection.cs
- ByteStorage.cs
- IApplicationTrustManager.cs
- IRCollection.cs
- ResourceReferenceKeyNotFoundException.cs
- TreeViewHitTestInfo.cs
- SRDisplayNameAttribute.cs
- CacheOutputQuery.cs
- StylusPoint.cs
- ViewPort3D.cs
- ToolStripItem.cs
- odbcmetadatacollectionnames.cs
- RegistrySecurity.cs
- CombinedGeometry.cs
- TypeUtil.cs
- GenerateTemporaryTargetAssembly.cs
- SizeConverter.cs
- ProtectedConfigurationProviderCollection.cs
- SetterBase.cs
- PeerUnsafeNativeCryptMethods.cs
- SystemIPv4InterfaceProperties.cs
- GlobalizationAssembly.cs
- EventToken.cs
- NextPreviousPagerField.cs
- ChannelPool.cs
- BufferedGraphicsManager.cs
- ImpersonationContext.cs
- ExtensibleClassFactory.cs
- CachedBitmap.cs
- URL.cs
- ObfuscationAttribute.cs
- RelationalExpressions.cs
- CreateUserWizardStep.cs
- HMACRIPEMD160.cs
- Classification.cs
- XPathAncestorIterator.cs
- InkCanvasAutomationPeer.cs
- AuthenticationConfig.cs
- WarningException.cs
- WorkflowDesignerColors.cs
- HandlerFactoryCache.cs
- ValidateNames.cs
- EndpointDiscoveryMetadataCD1.cs
- IResourceProvider.cs
- UntypedNullExpression.cs
- DateRangeEvent.cs
- Types.cs
- StaticDataManager.cs
- MouseBinding.cs
- IBuiltInEvidence.cs
- ListViewEditEventArgs.cs
- WebPermission.cs
- SByteStorage.cs
- GACMembershipCondition.cs
- MetaForeignKeyColumn.cs
- XmlUrlResolver.cs
- ThrowHelper.cs
- Root.cs
- AutomationFocusChangedEventArgs.cs
- QilParameter.cs
- GlobalizationSection.cs
- TransformationRules.cs
- Column.cs
- BuilderInfo.cs
- Ref.cs
- WebPartEditorOkVerb.cs
- TransactionInterop.cs
- SafeBitVector32.cs
- XamlTemplateSerializer.cs
- IncrementalCompileAnalyzer.cs
- XmlSchemaSequence.cs