Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Log / System / IO / Log / Error.cs / 1305376 / Error.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.IO.Log { using System; using System.Diagnostics; using System.Runtime.InteropServices; static class Error { // A collection of errors, taken from various places in the // windows headers. // public const uint ERROR_SUCCESS = 0; public const uint ERROR_FILE_NOT_FOUND = 2; public const uint ERROR_PATH_NOT_FOUND = 3; public const uint ERROR_ACCESS_DENIED = 5; public const uint ERROR_INVALID_HANDLE = 6; public const uint ERROR_OUTOFMEMORY = 14; public const uint ERROR_SHARING_VIOLATION = 32; public const uint ERROR_HANDLE_EOF = 38; public const uint ERROR_NOT_SUPPORTED = 50; public const uint ERROR_DUP_NAME = 52; public const uint ERROR_BAD_NETPATH = 53; public const uint ERROR_INVALID_PARAMETER = 87; public const uint ERROR_BUFFER_OVERFLOW = 111; public const uint ERROR_INVALID_NAME = 123; public const uint ERROR_BAD_PATHNAME = 161; public const uint ERROR_ALREADY_EXISTS = 183; public const uint ERROR_MORE_DATA = 234; public const uint ERROR_NO_MORE_ITEMS = 259; public const uint ERROR_OPERATION_ABORTED = 995; public const uint ERROR_IO_PENDING = 997; public const uint ERROR_IO_DEVICE = 1117; public const uint ERROR_NOT_FOUND = 1168; public const uint ERROR_NO_SYSTEM_RESOURCES = 1450; public const uint ERROR_INVALID_USER_BUFFER = 1784; public const uint ERROR_CANT_RESOLVE_FILENAME = 1921; public const uint ERROR_INVALID_OPERATION = 4317; public const uint ERROR_INVALID_STATE = 5023; public const uint ERROR_LOG_SECTOR_PARITY_INVALID = 6601; public const uint ERROR_LOG_BLOCK_INCOMPLETE = 6603; public const uint ERROR_LOG_INVALID_RANGE = 6604; public const uint ERROR_LOG_READ_CONTEXT_INVALID = 6606; public const uint ERROR_LOG_BLOCK_VERSION = 6608; public const uint ERROR_LOG_BLOCK_INVALID = 6609; public const uint ERROR_LOG_NO_RESTART = 6611; public const uint ERROR_LOG_METADATA_CORRUPT = 6612; public const uint ERROR_LOG_RESERVATION_INVALID = 6615; public const uint ERROR_LOG_CANT_DELETE = 6616; public const uint ERROR_LOG_START_OF_LOG = 6618; public const uint ERROR_LOG_POLICY_NOT_INSTALLED = 6620; public const uint ERROR_LOG_POLICY_INVALID = 6621; public const uint ERROR_LOG_POLICY_CONFLICT = 6622; public const uint ERROR_LOG_TAIL_INVALID = 6627; public const uint ERROR_LOG_FULL = 6628; public const uint ERROR_LOG_NOT_ENOUGH_CONTAINERS = 6635; public const uint ERROR_LOG_FULL_HANDLER_IN_PROGRESS = 6638; // More error codes from simple file log - public const uint ERROR_MEDIUM_FULL = 112; public const uint ERROR_DISK_FULL = 127; public const uint ERROR_INVALID_HEADER = 251; public const uint ERROR_FILE_CORRUPT = 258; public const uint ERROR_E_OLDFORMAT = 260; // We would like to distinguish between a sequence full condition and log store // operation filling the disk. public const uint LOGSTORE_ERROR_DISK_FULL = 112112112; public static Exception ExceptionForKnownCode(uint errorCode, Exception innerException) { // This is the big mapping of code to exception for codes // that we recognize. It is called when we need to map to // a specific exception, and we recognize that the code // being returned is one that can legitimately come from // the called routine. // // If you get back a code that is not supposed to come // from the function you called, then you should use // ExceptionForUnknownCode instead, regardless of whether // or not we have a mapping for that code. // // The following codes should never be recognized: // ERROR_BUFFER_OVERFLOW // ERROR_MORE_DATA // ERROR_NO_MORE_ITEMS // ERROR_IO_PENDING // ERROR_INVALID_USER_BUFFER // ERROR_LOG_NO_RESTART // ERROR_LOG_START_OF_LOG // switch(errorCode) { case ERROR_FILE_NOT_FOUND: case ERROR_PATH_NOT_FOUND: return new FileNotFoundException( SR.GetString(SR.IO_FileNotFound), innerException); case ERROR_CANT_RESOLVE_FILENAME: return new ArgumentException( SR.GetString(SR.Argument_LogFileNameInvalid), innerException); case ERROR_ACCESS_DENIED: return new UnauthorizedAccessException( SR.GetString(SR.Unauthorized_AccessDenied), innerException); case ERROR_INVALID_HANDLE: case ERROR_LOG_READ_CONTEXT_INVALID: if (innerException == null) { return new ObjectDisposedException(String.Empty); } else { return new ObjectDisposedException( innerException.Message, innerException); } case ERROR_OUTOFMEMORY: return new OutOfMemoryException(); case ERROR_SHARING_VIOLATION: if (innerException == null) { return new IOException(SR.GetString(SR.IO_SharingViolation), GetHRForCode(errorCode)); } else { return new IOException(SR.GetString(SR.IO_SharingViolation), innerException); } case ERROR_HANDLE_EOF: if (innerException == null) { return new IOException(SR.GetString(SR.IO_EndOfLog), GetHRForCode(errorCode)); } else { return new IOException(SR.GetString(SR.IO_EndOfLog), innerException); } case ERROR_NOT_SUPPORTED: if (innerException == null) { return new NotSupportedException(); } else { return new NotSupportedException( innerException.Message, innerException); } case ERROR_INVALID_PARAMETER: if (innerException == null) { return new ArgumentException(); } else { return new ArgumentException( innerException.Message, innerException); } case ERROR_LOG_BLOCK_INVALID: case ERROR_LOG_BLOCK_VERSION: if (innerException == null) { return new IOException(SR.GetString(SR.IO_InvalidLogFileFormat), GetHRForCode(errorCode)); } else { return new IOException(SR.GetString(SR.IO_InvalidLogFileFormat), innerException); } case ERROR_INVALID_NAME: case ERROR_BAD_PATHNAME: case ERROR_BAD_NETPATH: return new ArgumentException( SR.GetString(SR.Argument_FileNameInvalid), innerException); case ERROR_ALREADY_EXISTS: if (innerException == null) { return new IOException(SR.GetString(SR.IO_AlreadyExists), GetHRForCode(errorCode)); } else { return new IOException(SR.GetString(SR.IO_AlreadyExists), innerException); } case ERROR_IO_DEVICE: if (innerException == null) { return new IOException(SR.GetString(SR.IO_DeviceHresult, GetHRForCode(errorCode)), GetHRForCode(errorCode)); } else { return new IOException(SR.GetString(SR.IO_DeviceException, innerException.Message), innerException); } case ERROR_INVALID_OPERATION: case ERROR_INVALID_STATE: if (innerException == null) { return new InvalidOperationException(); } else { return new InvalidOperationException(innerException.Message, innerException); } case ERROR_LOG_BLOCK_INCOMPLETE: if (innerException == null) { return new IOException(SR.GetString(SR.IO_BlockIncomplete), GetHRForCode(errorCode)); } else { return new IOException(SR.GetString(SR.IO_BlockIncomplete), innerException); } case ERROR_LOG_INVALID_RANGE: return new ArgumentOutOfRangeException( SR.GetString(SR.Argument_LogInvalidRange), innerException); case ERROR_LOG_CANT_DELETE: if (innerException == null) { return new IOException(SR.GetString(SR.IO_LogCannotDelete), GetHRForCode(errorCode)); } else { return new IOException(SR.GetString(SR.IO_LogCannotDelete), innerException); } case ERROR_LOG_TAIL_INVALID: return new ArgumentOutOfRangeException( SR.GetString(SR.Argument_TailInvalid), innerException); case LOGSTORE_ERROR_DISK_FULL: return new IOException(SR.GetString(SR.DiskFull)); case ERROR_MEDIUM_FULL: case ERROR_DISK_FULL: return new SequenceFullException(SR.GetString(SR.DiskFull), innerException); case ERROR_LOG_FULL: case ERROR_NO_SYSTEM_RESOURCES: case ERROR_LOG_FULL_HANDLER_IN_PROGRESS: return new SequenceFullException(SR.GetString(SR.SequenceFull), innerException); case ERROR_LOG_POLICY_INVALID: return new InvalidOperationException( SR.GetString(SR.InvalidOperation_LogPolicyInvalid), innerException); case ERROR_LOG_POLICY_CONFLICT: return new InvalidOperationException( SR.GetString(SR.InvalidOperation_LogPolicyConflict), innerException); case ERROR_FILE_CORRUPT: case ERROR_INVALID_HEADER: case ERROR_LOG_METADATA_CORRUPT: return new IOException( SR.GetString(SR.IO_LogCorrupt), innerException); case ERROR_E_OLDFORMAT: return new IOException( SR.GetString(SR.LogRecSeq_IncompatibleVersion), innerException); case ERROR_NOT_FOUND: return new ArgumentException(SR.GetString(SR.Argument_NotFound), innerException); case ERROR_LOG_RESERVATION_INVALID: return new ArgumentException(SR.GetString(SR.Argument_InvalidReservation)); case ERROR_LOG_NOT_ENOUGH_CONTAINERS: return new InvalidOperationException( SR.GetString(SR.InvalidOperation_MustHaveExtents), innerException); } // The error codes in the above list are explicitly recognized by the (internal) caller as // being known and understood. If we recognize and understand a new error code, it // should be added to this list. Otherwise, the error code should be converted to an // exception using ExceptionForUnknownCode. If we reach this point, we have a bug // in our own error handling code. DiagnosticUtility.DebugAssert("Either the code is unknown, or it should not have failed."); return ExceptionForUnknownCode(errorCode); } public static Exception ExceptionForKnownCode(uint errorCode) { return ExceptionForKnownCode(errorCode, null); } public static Exception ExceptionForUnknownCode(uint errorCode) { int hr = GetHRForCode(errorCode); return new IOException(SR.GetString(SR.IO_UnexpectedException, hr), hr); } public static Exception ExceptionForUnknownCode(uint errorCode, Exception innerException) { int hr = GetHRForCode(errorCode); return new IOException(SR.GetString(SR.IO_UnexpectedException, hr), innerException); } public static int GetHRForCode(uint errorCode) { if ((errorCode & 0x80000000) != 0x80000000) { errorCode = (uint)((errorCode & 0x0000FFFF) | unchecked((int)0x80070000)); } return unchecked((int)errorCode); } public static Exception ConvertKnownException(COMException comException) { uint errorCode = GetErrorCodeFromHR(comException.ErrorCode); Exception exception = ExceptionForKnownCode(errorCode, comException); if (exception == null) { exception = ExceptionForUnknownCode(errorCode, comException); } return exception; } public static uint GetErrorCodeFromHR(int hresult) { uint u_hresult = unchecked((uint)hresult); return u_hresult & 0x0000FFFF; } public static Exception ArgumentInvalid(string resourceCode) { return new ArgumentException(SR.GetString(resourceCode)); } public static Exception ArgumentNull(string argument) { return new ArgumentNullException(argument); } public static Exception ArgumentOutOfRange(string argument) { return new ArgumentOutOfRangeException(argument); } public static Exception ArgumentOutOfRange(string argument, Exception exp) { return new ArgumentOutOfRangeException(SR.GetString(argument), exp); } public static Exception DuplicateEnd() { return new InvalidOperationException(SR.GetString(SR.AsyncResult_DuplicateEnd)); } public static Exception EnumEnded() { return new InvalidOperationException(SR.GetString(SR.InvalidOperation_EnumEnded)); } public static Exception EnumNotStarted() { return new InvalidOperationException(SR.GetString(SR.InvalidOperation_EnumNotStarted)); } public static Exception InvalidAsyncResult() { return new ArgumentException(SR.GetString(SR.AsyncResult_Invalid)); } public static Exception InvalidOperation(string resourceCode) { return new InvalidOperationException(SR.GetString(resourceCode)); } public static Exception IncompatibleVersion() { return new IOException(SR.GetString(SR.LogRecSeq_IncompatibleVersion)); } public static Exception LogCorrupt() { return new IOException(SR.GetString(SR.IO_LogCorrupt)); } public static Exception NotArchivable() { return new NotSupportedException(SR.GetString(SR.LogStore_NotArchivable)); } public static Exception NotSupported() { return new NotSupportedException(); } public static Exception NotSupported(string resource) { return new NotSupportedException(SR.GetString(resource)); } public static Exception PlatformNotSupported() { return new PlatformNotSupportedException(SR.GetString(SR.NotSupported_Platform)); } public static Exception ObjectDisposed() { return new ObjectDisposedException(null); } public static Exception ReservationNotFound() { return new ReservationNotFoundException(); } public static Exception SequenceNumberInvalid() { return new ArgumentException( SR.GetString( SR.Argument_InvalidSequenceNumber)); } public static Exception SequenceNumberNotActive(string paramName) { return new ArgumentOutOfRangeException( paramName, SR.GetString( SR.Argument_SequenceNumberNotActive)); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DiscreteKeyFrames.cs
- ZeroOpNode.cs
- XmlnsCache.cs
- FixedSOMTable.cs
- UIElementPropertyUndoUnit.cs
- ConnectionsZone.cs
- DesignerOptionService.cs
- PropertyMapper.cs
- WebPartUserCapability.cs
- HostedAspNetEnvironment.cs
- TwoPhaseCommitProxy.cs
- SqlDelegatedTransaction.cs
- Source.cs
- StylusPlugInCollection.cs
- DataList.cs
- AdRotator.cs
- XPathQilFactory.cs
- DataObjectSettingDataEventArgs.cs
- MethodMessage.cs
- GuidelineCollection.cs
- AuthenticatingEventArgs.cs
- RenamedEventArgs.cs
- DictionaryContent.cs
- LazyTextWriterCreator.cs
- ProfessionalColorTable.cs
- DataTableMapping.cs
- NullReferenceException.cs
- Control.cs
- PropertyCollection.cs
- WebPermission.cs
- LayoutTable.cs
- EpmContentSerializerBase.cs
- BatchWriter.cs
- RequiredAttributeAttribute.cs
- EventHandlerService.cs
- ComPlusTypeValidator.cs
- TableCellAutomationPeer.cs
- ControlIdConverter.cs
- LinkedResourceCollection.cs
- TypeSchema.cs
- SqlDataSourceQueryConverter.cs
- CompilerScope.Storage.cs
- SynthesizerStateChangedEventArgs.cs
- RelatedView.cs
- PassportIdentity.cs
- XmlSignificantWhitespace.cs
- CharEntityEncoderFallback.cs
- Perspective.cs
- DataPagerField.cs
- TextEndOfSegment.cs
- ColumnWidthChangedEvent.cs
- ChameleonKey.cs
- PathFigure.cs
- GridViewRowCollection.cs
- SoapElementAttribute.cs
- NumberFunctions.cs
- localization.cs
- ProviderSettingsCollection.cs
- DesignerSerializerAttribute.cs
- CounterSample.cs
- EncryptedXml.cs
- Connector.xaml.cs
- FileRecordSequence.cs
- QilTypeChecker.cs
- CombinedGeometry.cs
- WebPartChrome.cs
- XmlSchemaSimpleContentRestriction.cs
- DataGridViewRowCollection.cs
- WindowsNonControl.cs
- CompiledIdentityConstraint.cs
- CheckoutException.cs
- Set.cs
- StaticTextPointer.cs
- MemberDomainMap.cs
- RuntimeWrappedException.cs
- NonClientArea.cs
- X509Utils.cs
- SubqueryRules.cs
- BitConverter.cs
- GlyphTypeface.cs
- ComboBoxRenderer.cs
- ExtractedStateEntry.cs
- Size.cs
- WebReferenceOptions.cs
- Grammar.cs
- SecurityAttributeGenerationHelper.cs
- XmlWrappingReader.cs
- SharedConnectionInfo.cs
- MenuTracker.cs
- NullRuntimeConfig.cs
- ListItemCollection.cs
- TableItemStyle.cs
- PackageRelationship.cs
- DesigntimeLicenseContext.cs
- _TimerThread.cs
- WindowsStatusBar.cs
- ParserContext.cs
- NativeMethods.cs
- TrackPointCollection.cs
- _NestedMultipleAsyncResult.cs