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
- HttpWebResponse.cs
- MarkerProperties.cs
- Part.cs
- ServiceRouteHandler.cs
- XmlNodeChangedEventArgs.cs
- ProtectedConfigurationSection.cs
- Reference.cs
- DataSourceHelper.cs
- WindowsFormsEditorServiceHelper.cs
- BufferedGraphicsManager.cs
- ProfileService.cs
- ListSortDescription.cs
- EntityModelBuildProvider.cs
- Directory.cs
- XmlILOptimizerVisitor.cs
- OpCellTreeNode.cs
- oledbconnectionstring.cs
- SessionStateItemCollection.cs
- ProxySimple.cs
- StringArrayConverter.cs
- StorageFunctionMapping.cs
- FloaterBaseParagraph.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- SendingRequestEventArgs.cs
- FieldMetadata.cs
- _SpnDictionary.cs
- SystemIPGlobalProperties.cs
- GrabHandleGlyph.cs
- BufferModeSettings.cs
- WeakEventTable.cs
- DataGridViewLinkColumn.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- TraceUtility.cs
- __TransparentProxy.cs
- Selection.cs
- CompoundFileStorageReference.cs
- MouseEvent.cs
- SystemInfo.cs
- WinInetCache.cs
- XNameTypeConverter.cs
- SurrogateEncoder.cs
- CalendarDesigner.cs
- ListComponentEditor.cs
- OutputCacheSection.cs
- WindowsListView.cs
- OleServicesContext.cs
- SeparatorAutomationPeer.cs
- TabRenderer.cs
- Rfc2898DeriveBytes.cs
- Schema.cs
- SqlRewriteScalarSubqueries.cs
- FontStretches.cs
- MaterializeFromAtom.cs
- AutomationPeer.cs
- SystemWebSectionGroup.cs
- QfeChecker.cs
- ConstraintCollection.cs
- AssemblyNameUtility.cs
- RawAppCommandInputReport.cs
- EntitySetDataBindingList.cs
- CounterSampleCalculator.cs
- Matrix3DValueSerializer.cs
- Vector3DCollection.cs
- SByteStorage.cs
- EntityDataSourceSelectingEventArgs.cs
- WindowsGraphics.cs
- TemplateBindingExtensionConverter.cs
- codemethodreferenceexpression.cs
- PackageRelationshipSelector.cs
- Property.cs
- LookupTables.cs
- DBBindings.cs
- DLinqTableProvider.cs
- ReferenceEqualityComparer.cs
- MsmqIntegrationElement.cs
- HttpHandlersSection.cs
- ToolStripHighContrastRenderer.cs
- Model3D.cs
- ManagementBaseObject.cs
- WorkflowPersistenceContext.cs
- MetadataProperty.cs
- HttpResponseHeader.cs
- FlowDocumentPage.cs
- MainMenu.cs
- GeometryGroup.cs
- SqlClientMetaDataCollectionNames.cs
- DefaultProxySection.cs
- SharedDp.cs
- WithParamAction.cs
- SizeKeyFrameCollection.cs
- Baml2006Reader.cs
- WmlLiteralTextAdapter.cs
- BaseConfigurationRecord.cs
- VectorCollection.cs
- RtfControls.cs
- ZoneMembershipCondition.cs
- PermissionRequestEvidence.cs
- StringPropertyBuilder.cs
- SchemaImporter.cs
- LineVisual.cs