Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / clr / src / BCL / Microsoft / Win32 / SafeHandles / SafeRegistryHandle.cs / 1 / SafeRegistryHandle.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: SafeRegistryHandle ** ** ** A wrapper for registry handles ** ** ===========================================================*/ using System; using System.Security; using System.Security.Permissions; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; using System.Runtime.ConstrainedExecution; namespace Microsoft.Win32.SafeHandles { internal sealed class SafeRegistryHandle : SafeHandleZeroOrMinusOneIsInvalid { // Note: Officially -1 is the recommended invalid handle value for // registry keys, but we'll also get back 0 as an invalid handle from // RegOpenKeyEx. [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)] internal SafeRegistryHandle() : base(true) {} [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)] internal SafeRegistryHandle(IntPtr preexistingHandle, bool ownsHandle) : base(ownsHandle) { SetHandle(preexistingHandle); } [DllImport(Win32Native.ADVAPI32), SuppressUnmanagedCodeSecurity, ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] private static extern int RegCloseKey(IntPtr hKey); override protected bool ReleaseHandle() { // Returns a Win32 error code, 0 for success int r = RegCloseKey(handle); return r == 0; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: SafeRegistryHandle ** ** ** A wrapper for registry handles ** ** ===========================================================*/ using System; using System.Security; using System.Security.Permissions; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; using System.Runtime.ConstrainedExecution; namespace Microsoft.Win32.SafeHandles { internal sealed class SafeRegistryHandle : SafeHandleZeroOrMinusOneIsInvalid { // Note: Officially -1 is the recommended invalid handle value for // registry keys, but we'll also get back 0 as an invalid handle from // RegOpenKeyEx. [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)] internal SafeRegistryHandle() : base(true) {} [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)] internal SafeRegistryHandle(IntPtr preexistingHandle, bool ownsHandle) : base(ownsHandle) { SetHandle(preexistingHandle); } [DllImport(Win32Native.ADVAPI32), SuppressUnmanagedCodeSecurity, ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] private static extern int RegCloseKey(IntPtr hKey); override protected bool ReleaseHandle() { // Returns a Win32 error code, 0 for success int r = RegCloseKey(handle); return r == 0; } } } // 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
- StyleConverter.cs
- entitydatasourceentitysetnameconverter.cs
- EventDescriptor.cs
- Rights.cs
- ExpressionBuilderContext.cs
- StreamGeometryContext.cs
- ListControlConvertEventArgs.cs
- Profiler.cs
- ListBindableAttribute.cs
- FormViewDeletedEventArgs.cs
- EntityCommandCompilationException.cs
- WebExceptionStatus.cs
- OracleParameterBinding.cs
- IIS7WorkerRequest.cs
- Trace.cs
- TemplateField.cs
- PhonemeEventArgs.cs
- Splitter.cs
- InstallerTypeAttribute.cs
- AppSettingsSection.cs
- SiteMap.cs
- FindRequestContext.cs
- DeferredTextReference.cs
- DataRelationPropertyDescriptor.cs
- MissingSatelliteAssemblyException.cs
- HttpUnhandledOperationInvoker.cs
- Soap.cs
- SystemColors.cs
- PermissionAttributes.cs
- RegionInfo.cs
- EntityDataSourceEntitySetNameItem.cs
- TextAnchor.cs
- CellTreeNode.cs
- CreatingCookieEventArgs.cs
- ThreadAttributes.cs
- IconBitmapDecoder.cs
- BindingList.cs
- XhtmlBasicSelectionListAdapter.cs
- SafeReversePInvokeHandle.cs
- InternalBufferManager.cs
- SizeAnimationClockResource.cs
- Line.cs
- EntryPointNotFoundException.cs
- AppSettingsExpressionBuilder.cs
- ControlBindingsCollection.cs
- FamilyTypeface.cs
- ToolStrip.cs
- XsdDateTime.cs
- NativeMethods.cs
- TraceData.cs
- HttpCookieCollection.cs
- SoapServerMessage.cs
- TargetControlTypeAttribute.cs
- CompositeDuplexBindingElementImporter.cs
- SelectionEditingBehavior.cs
- PackageRelationshipSelector.cs
- ComponentEditorForm.cs
- SelectedPathEditor.cs
- serverconfig.cs
- OutputScopeManager.cs
- PngBitmapEncoder.cs
- ShapeTypeface.cs
- SqlCacheDependencySection.cs
- WebPartConnectionsCloseVerb.cs
- DayRenderEvent.cs
- baseaxisquery.cs
- ScriptResourceInfo.cs
- Size.cs
- DropDownList.cs
- X509ScopedServiceCertificateElement.cs
- MessageQueueKey.cs
- WebPartCatalogCloseVerb.cs
- ConfigurationElementCollection.cs
- ViewManager.cs
- ActivitySurrogate.cs
- AndCondition.cs
- WebPartZoneCollection.cs
- DriveInfo.cs
- DocumentPage.cs
- XmlElementAttributes.cs
- RedirectionProxy.cs
- StreamResourceInfo.cs
- ReadOnlyDataSourceView.cs
- FormsAuthenticationUser.cs
- ConnectionManagementElement.cs
- StrokeNodeEnumerator.cs
- TagMapInfo.cs
- NullableDoubleAverageAggregationOperator.cs
- DoubleAnimationClockResource.cs
- MenuStrip.cs
- LineSegment.cs
- TableLayoutPanelBehavior.cs
- WindowPattern.cs
- xml.cs
- TaiwanCalendar.cs
- DayRenderEvent.cs
- StringTraceRecord.cs
- StateMachineHelpers.cs
- CodeTypeParameter.cs
- documentsequencetextpointer.cs