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
- RegexNode.cs
- PropertyMetadata.cs
- PassportIdentity.cs
- WizardStepBase.cs
- RepeatBehavior.cs
- HierarchicalDataTemplate.cs
- ProxyAttribute.cs
- MeasureItemEvent.cs
- ActivationArguments.cs
- ActivationServices.cs
- RadioButtonAutomationPeer.cs
- PagedDataSource.cs
- XmlNamespaceManager.cs
- XmlElementAttributes.cs
- MapPathBasedVirtualPathProvider.cs
- SelectingProviderEventArgs.cs
- GlyphRun.cs
- HScrollBar.cs
- FontUnit.cs
- Nullable.cs
- _NegoState.cs
- GenericEnumerator.cs
- CustomAssemblyResolver.cs
- PreservationFileWriter.cs
- GridEntryCollection.cs
- TableAutomationPeer.cs
- RenderingEventArgs.cs
- HttpCookieCollection.cs
- VBIdentifierDesigner.xaml.cs
- TypeConverterAttribute.cs
- ColorConvertedBitmap.cs
- SessionEndedEventArgs.cs
- SystemColorTracker.cs
- OdbcReferenceCollection.cs
- BindingExpressionBase.cs
- HandlerFactoryWrapper.cs
- ToolStripContentPanelRenderEventArgs.cs
- ListDictionaryInternal.cs
- Section.cs
- CornerRadius.cs
- OleDbSchemaGuid.cs
- ContextMenuStripActionList.cs
- ConfigurationSectionHelper.cs
- SQLDateTimeStorage.cs
- ExpressionBuilderContext.cs
- ControlPaint.cs
- TagMapCollection.cs
- TableAdapterManagerGenerator.cs
- ToolStripScrollButton.cs
- NameObjectCollectionBase.cs
- DataQuery.cs
- InvalidEnumArgumentException.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- CompilerGeneratedAttribute.cs
- TextEditorTables.cs
- HtmlTableRow.cs
- OdbcConnectionFactory.cs
- XmlAttributeCollection.cs
- CompositeFontFamily.cs
- MaskedTextBox.cs
- hebrewshape.cs
- WebPartDisplayMode.cs
- AstNode.cs
- StrokeCollection.cs
- FactoryId.cs
- AttributeXamlType.cs
- SelectionRangeConverter.cs
- ViewLoader.cs
- SimpleExpression.cs
- DataBoundControlParameterTarget.cs
- PasswordRecovery.cs
- SQLInt64.cs
- SchemaObjectWriter.cs
- ComNativeDescriptor.cs
- FixedSOMTextRun.cs
- CharKeyFrameCollection.cs
- SubMenuStyleCollection.cs
- DataServiceHostFactory.cs
- StrokeCollection2.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- ClonableStack.cs
- EncoderNLS.cs
- SystemParameters.cs
- DataKeyArray.cs
- FirstMatchCodeGroup.cs
- SqlException.cs
- SystemIcmpV4Statistics.cs
- MessageBox.cs
- ImageBrush.cs
- XmlSerializerSection.cs
- ConnectionPoint.cs
- Cursors.cs
- VirtualizingStackPanel.cs
- CriticalHandle.cs
- AttachmentCollection.cs
- AuthenticatingEventArgs.cs
- CacheManager.cs
- DelegateSerializationHolder.cs
- CodeValidator.cs
- GenericParameterDataContract.cs