Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Markup / BamlVersionHeader.cs / 1305600 / BamlVersionHeader.cs
/****************************************************************************\
*
* File: BamlVersionHeader.cs
*
* Copyright (C) 2005 by Microsoft Corporation. All rights reserved.
*
\***************************************************************************/
using System;
using System.IO;
using System.Globalization;
using System.Diagnostics;
using MS.Internal.IO.Packaging.CompoundFile;
#if PBTCOMPILER
namespace MS.Internal.Markup
#else
namespace System.Windows.Markup
#endif
{
internal class BamlVersionHeader
{
// The current BAML record version. This is incremented whenever
// the BAML format changes
// Baml Format Breaking Changes should change this.
internal static readonly VersionPair BamlWriterVersion;
static BamlVersionHeader()
{
// Initialize the Version number this way so that it can be
// seen in the Lutz Reflector.
BamlWriterVersion = new VersionPair(0, 96);
}
public BamlVersionHeader()
{
_bamlVersion = new FormatVersion("MSBAML", BamlWriterVersion);
}
public FormatVersion BamlVersion
{
get { return _bamlVersion; }
#if !PBTCOMPILER
set { _bamlVersion = value; }
#endif
}
// This is used by Async loading to measure if the whole record is present
static public int BinarySerializationSize
{
get
{
// Unicode "MSBAML" = 12
// + 4 bytes length header = 12 + 4 = 16
// + 3*(16bit MinorVer + 16bit MajorVer) = 16+(3*(2+2))= 28
// For product stability the size of this data structure
// shouldn't change anyway.
return 28;
}
}
#if !PBTCOMPILER
internal void LoadVersion(BinaryReader bamlBinaryReader)
{
#if DEBUG
long posStart = bamlBinaryReader.BaseStream.Position;
#endif
BamlVersion = FormatVersion.LoadFromStream(bamlBinaryReader.BaseStream);
#if DEBUG
long posEnd = bamlBinaryReader.BaseStream.Position;
Debug.Assert((posEnd-posStart) == BamlVersionHeader.BinarySerializationSize,
"Incorrect Baml Version Header Size");
#endif
// We're assuming that only major versions are significant for compatibility,
// so if we have a major version in the file that is higher than that in
// the code, we can't read it.
if (BamlVersion.ReaderVersion != BamlWriterVersion)
{
throw new InvalidOperationException(SR.Get(SRID.ParserBamlVersion,
(BamlVersion.ReaderVersion.Major.ToString(CultureInfo.CurrentCulture) + "." +
BamlVersion.ReaderVersion.Minor.ToString(CultureInfo.CurrentCulture)),
(BamlWriterVersion.Major.ToString(CultureInfo.CurrentCulture) + "." +
BamlWriterVersion.Minor.ToString(CultureInfo.CurrentCulture))));
}
}
#endif
internal void WriteVersion(BinaryWriter bamlBinaryWriter)
{
#if DEBUG
long posStart = bamlBinaryWriter.BaseStream.Position;
#endif
BamlVersion.SaveToStream(bamlBinaryWriter.BaseStream);
#if DEBUG
long posEnd = bamlBinaryWriter.BaseStream.Position;
if(-1 == posStart)
{
long length = bamlBinaryWriter.BaseStream.Length;
Debug.Assert(length == BamlVersionHeader.BinarySerializationSize,
"Incorrect Baml Version Header Size");
}
else
{
Debug.Assert((posEnd-posStart) == BamlVersionHeader.BinarySerializationSize,
"Incorrect Baml Version Header Size");
}
#endif
}
FormatVersion _bamlVersion;
}
}
// 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
- UserControl.cs
- ReaderWriterLockWrapper.cs
- DisableDpiAwarenessAttribute.cs
- TemplateKey.cs
- Int32CAMarshaler.cs
- EntityDataSourceDesigner.cs
- ScriptRegistrationManager.cs
- XmlExtensionFunction.cs
- wgx_commands.cs
- HybridCollection.cs
- GlyphCache.cs
- BitmapCache.cs
- FormsAuthenticationTicket.cs
- HttpStreamXmlDictionaryReader.cs
- KeyValuePairs.cs
- DeferrableContent.cs
- FragmentQueryKB.cs
- OperationCanceledException.cs
- ContourSegment.cs
- DrawItemEvent.cs
- PrimitiveOperationFormatter.cs
- _Rfc2616CacheValidators.cs
- BinaryExpressionHelper.cs
- IsolatedStorageException.cs
- NamedPermissionSet.cs
- XPathAncestorIterator.cs
- TypeUnloadedException.cs
- UmAlQuraCalendar.cs
- ValidatingReaderNodeData.cs
- CachedBitmap.cs
- X509ChainPolicy.cs
- TextProviderWrapper.cs
- ClientUrlResolverWrapper.cs
- SmtpFailedRecipientException.cs
- XmlDomTextWriter.cs
- ByteStack.cs
- PreloadedPackages.cs
- ProcessModelInfo.cs
- InvalidOleVariantTypeException.cs
- elementinformation.cs
- DateTimeConstantAttribute.cs
- RotateTransform3D.cs
- TextBoxRenderer.cs
- SimpleHandlerBuildProvider.cs
- XmlEntityReference.cs
- WorkflowWebService.cs
- ItemChangedEventArgs.cs
- GridView.cs
- EntityWrapperFactory.cs
- FilteredDataSetHelper.cs
- WsdlInspector.cs
- DataGridViewRowPostPaintEventArgs.cs
- TimeSpanStorage.cs
- HttpBrowserCapabilitiesWrapper.cs
- X509Utils.cs
- EventLogger.cs
- PathFigureCollection.cs
- HandleCollector.cs
- Thickness.cs
- Content.cs
- DataObject.cs
- OdbcFactory.cs
- XmlSchemaAnnotation.cs
- safemediahandle.cs
- Model3DGroup.cs
- XmlSchemaSimpleType.cs
- UnsafeNativeMethods.cs
- XmlQueryTypeFactory.cs
- sitestring.cs
- OLEDB_Util.cs
- NativeCppClassAttribute.cs
- LogicalExpressionEditor.cs
- EntitySqlQueryCacheEntry.cs
- RijndaelManagedTransform.cs
- OperationResponse.cs
- UIElementParaClient.cs
- UrlMapping.cs
- X509SecurityTokenProvider.cs
- ToolStripItemRenderEventArgs.cs
- PlatformCulture.cs
- XamlParser.cs
- NativeMethods.cs
- SqlDataSource.cs
- QilParameter.cs
- LicenseProviderAttribute.cs
- PageOrientation.cs
- CountAggregationOperator.cs
- RemotingConfigParser.cs
- XmlDataSource.cs
- DataViewListener.cs
- GrammarBuilder.cs
- ClientTargetCollection.cs
- InternalCache.cs
- NameTable.cs
- LogReservationCollection.cs
- ByteAnimationBase.cs
- NativeRecognizer.cs
- XmlWriter.cs
- ReflectEventDescriptor.cs
- DataSourceHelper.cs