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
- XamlPointCollectionSerializer.cs
- XPathAncestorQuery.cs
- ScopedMessagePartSpecification.cs
- TableHeaderCell.cs
- AnnotationResource.cs
- ExceptionUtil.cs
- DbDataReader.cs
- Journaling.cs
- ConfigurationManagerHelperFactory.cs
- Pkcs7Recipient.cs
- AstTree.cs
- ControlAdapter.cs
- RNGCryptoServiceProvider.cs
- CompositeFontInfo.cs
- WebControl.cs
- ChannelManager.cs
- Verify.cs
- HideDisabledControlAdapter.cs
- VScrollBar.cs
- XmlSchemaComplexContentExtension.cs
- TypeToken.cs
- Interlocked.cs
- SHA1.cs
- EncryptedKeyIdentifierClause.cs
- ExceptionValidationRule.cs
- ReaderWriterLockWrapper.cs
- SqlDataSourceCache.cs
- SynchronizationLockException.cs
- ExtenderProvidedPropertyAttribute.cs
- SqlTriggerContext.cs
- AttachedPropertyBrowsableAttribute.cs
- SchemaEntity.cs
- DataBinding.cs
- CompleteWizardStep.cs
- ResXDataNode.cs
- XmlEnumAttribute.cs
- SmtpFailedRecipientException.cs
- OrderedDictionary.cs
- RegexRunner.cs
- FixedSOMImage.cs
- TabControlEvent.cs
- ColorIndependentAnimationStorage.cs
- NGCSerializer.cs
- TrackingSection.cs
- AnnotationHelper.cs
- DataServiceRequestException.cs
- WhitespaceSignificantCollectionAttribute.cs
- Validator.cs
- SHA256Cng.cs
- XmlUrlResolver.cs
- IDReferencePropertyAttribute.cs
- ReferencedCollectionType.cs
- TabControlEvent.cs
- PropertyNames.cs
- CommandBinding.cs
- Parameter.cs
- InkCanvasInnerCanvas.cs
- ProvidersHelper.cs
- Query.cs
- RegexParser.cs
- __Filters.cs
- IdentityNotMappedException.cs
- ResourceDisplayNameAttribute.cs
- ThemeDictionaryExtension.cs
- SchemaElementDecl.cs
- ExpressionLink.cs
- WorkItem.cs
- PathGradientBrush.cs
- RawStylusInput.cs
- HttpCacheVaryByContentEncodings.cs
- Normalization.cs
- SessionSwitchEventArgs.cs
- DecimalAnimationBase.cs
- ConcurrentBag.cs
- Predicate.cs
- Debug.cs
- PagesChangedEventArgs.cs
- CertificateManager.cs
- Popup.cs
- ArgumentOutOfRangeException.cs
- XsltFunctions.cs
- NTAccount.cs
- PromptEventArgs.cs
- CollectionViewGroupRoot.cs
- CachedFontFace.cs
- WCFServiceClientProxyGenerator.cs
- MaskedTextBoxTextEditor.cs
- TransportSecurityBindingElement.cs
- SpellerInterop.cs
- CompiledRegexRunner.cs
- DateTimeConverter.cs
- XmlEventCache.cs
- ObjectNotFoundException.cs
- InternalConfigEventArgs.cs
- ProcessHostConfigUtils.cs
- OutputCacheProfile.cs
- CorrelationHandle.cs
- XmlSyndicationContent.cs
- SubstitutionList.cs
- TextTreeRootTextBlock.cs