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
- XamlWriter.cs
- SqlUtil.cs
- DrawingContextWalker.cs
- ImageListStreamer.cs
- MetadataSource.cs
- ComplexBindingPropertiesAttribute.cs
- AppSettingsReader.cs
- SerializableAttribute.cs
- FormatException.cs
- CloudCollection.cs
- OdbcDataReader.cs
- ObjectListTitleAttribute.cs
- TargetConverter.cs
- FormatterConverter.cs
- AdapterDictionary.cs
- TransportContext.cs
- PerformanceCounterCategory.cs
- WMIGenerator.cs
- ObfuscateAssemblyAttribute.cs
- fixedPageContentExtractor.cs
- XmlReader.cs
- SeekStoryboard.cs
- StrokeNodeData.cs
- DecoderFallbackWithFailureFlag.cs
- FileVersionInfo.cs
- SafeLocalMemHandle.cs
- SqlConnectionHelper.cs
- ApplicationTrust.cs
- TypeConverterHelper.cs
- wgx_commands.cs
- EventBuilder.cs
- SequentialOutput.cs
- IPAddress.cs
- ZoneLinkButton.cs
- HandlerFactoryWrapper.cs
- PlainXmlDeserializer.cs
- ThemeDirectoryCompiler.cs
- EntityConnection.cs
- ADRole.cs
- SapiAttributeParser.cs
- FormViewDeletedEventArgs.cs
- ButtonBase.cs
- ToolBarButtonClickEvent.cs
- BatchParser.cs
- MobileTemplatedControlDesigner.cs
- SmiContext.cs
- PointLight.cs
- CollectionChangedEventManager.cs
- ApplicationManager.cs
- Adorner.cs
- DllNotFoundException.cs
- DoWorkEventArgs.cs
- PriorityBinding.cs
- TypeFieldSchema.cs
- SystemWebCachingSectionGroup.cs
- UpdateException.cs
- RefType.cs
- XmlSchemaSimpleContentExtension.cs
- followingquery.cs
- ViewSimplifier.cs
- ImageCollectionCodeDomSerializer.cs
- AsyncDataRequest.cs
- SessionState.cs
- NativeMethods.cs
- Closure.cs
- Message.cs
- CompModSwitches.cs
- ProjectionNode.cs
- TCPClient.cs
- SchemaComplexType.cs
- StatusBarPanelClickEvent.cs
- DLinqColumnProvider.cs
- StylusButtonCollection.cs
- XmlSchemaParticle.cs
- HttpCookieCollection.cs
- TimeSpanValidator.cs
- SubpageParaClient.cs
- FormViewPageEventArgs.cs
- EntityContainerEmitter.cs
- SqlConnectionStringBuilder.cs
- SettingsSection.cs
- DefaultExpressionVisitor.cs
- RequestQueue.cs
- TableAdapterManagerGenerator.cs
- DataBoundControl.cs
- NamedElement.cs
- BrowserCapabilitiesFactory.cs
- XmlChildEnumerator.cs
- LambdaCompiler.ControlFlow.cs
- QueryLifecycle.cs
- MemberCollection.cs
- RemoteCryptoRsaServiceProvider.cs
- DataViewSetting.cs
- Rotation3DKeyFrameCollection.cs
- SiteMapHierarchicalDataSourceView.cs
- ListBase.cs
- TreeNode.cs
- RadioButtonBaseAdapter.cs
- RotateTransform3D.cs
- XPathArrayIterator.cs