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
- IMembershipProvider.cs
- BinaryKeyIdentifierClause.cs
- LineServicesRun.cs
- QilFactory.cs
- BitmapSourceSafeMILHandle.cs
- PropertyInformation.cs
- VideoDrawing.cs
- Attributes.cs
- BlobPersonalizationState.cs
- MobileTemplatedControlDesigner.cs
- TreeNodeClickEventArgs.cs
- SemaphoreSlim.cs
- FormViewPagerRow.cs
- ObjectViewEntityCollectionData.cs
- ListBoxItem.cs
- StrokeFIndices.cs
- CodeGenHelper.cs
- util.cs
- BitmapEffectDrawingContextState.cs
- MatchAllMessageFilter.cs
- MetadataFile.cs
- ProcessHostConfigUtils.cs
- AsymmetricKeyExchangeDeformatter.cs
- CommandHelpers.cs
- ResizingMessageFilter.cs
- Annotation.cs
- TreeNode.cs
- PixelShader.cs
- TypeDescriptionProviderAttribute.cs
- AtomServiceDocumentSerializer.cs
- cryptoapiTransform.cs
- NetworkCredential.cs
- HttpDictionary.cs
- IApplicationTrustManager.cs
- QilInvoke.cs
- ServiceObjectContainer.cs
- SimpleMailWebEventProvider.cs
- TemplateApplicationHelper.cs
- ArglessEventHandlerProxy.cs
- ReaderOutput.cs
- QueryStringHandler.cs
- FormsAuthenticationModule.cs
- InstanceContext.cs
- CreateUserWizard.cs
- TextServicesCompartmentEventSink.cs
- EntityDataSource.cs
- Popup.cs
- XmlDataDocument.cs
- ModuleElement.cs
- CodeParameterDeclarationExpressionCollection.cs
- ItemAutomationPeer.cs
- LayoutEngine.cs
- WebPartConnection.cs
- LineBreak.cs
- DataGridViewSelectedCellCollection.cs
- KeyGestureConverter.cs
- ClientConvert.cs
- _CommandStream.cs
- RMPermissions.cs
- PersianCalendar.cs
- CounterSetInstanceCounterDataSet.cs
- SyndicationElementExtension.cs
- ResourceSet.cs
- CopyOfAction.cs
- UIElement3D.cs
- ASCIIEncoding.cs
- RangeExpression.cs
- XmlReader.cs
- DateTimeConstantAttribute.cs
- _SafeNetHandles.cs
- TextElementEditingBehaviorAttribute.cs
- WindowAutomationPeer.cs
- RectValueSerializer.cs
- InternalResources.cs
- NotifyParentPropertyAttribute.cs
- EventHandlerList.cs
- ColumnReorderedEventArgs.cs
- EditorPartDesigner.cs
- SqlEnums.cs
- _SecureChannel.cs
- PersonalizationStateInfoCollection.cs
- BitmapPalettes.cs
- UrlPath.cs
- GregorianCalendar.cs
- OleStrCAMarshaler.cs
- ObjectAssociationEndMapping.cs
- CursorConverter.cs
- CollectionView.cs
- ServiceReference.cs
- BinaryConverter.cs
- _NetRes.cs
- PseudoWebRequest.cs
- FilterableAttribute.cs
- ObjectAnimationUsingKeyFrames.cs
- PathGeometry.cs
- Event.cs
- LayoutEvent.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- ClientTargetSection.cs
- NameValueConfigurationElement.cs