Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Security / SafeSecurityHandles.cs / 1 / SafeSecurityHandles.cs
namespace Microsoft.Win32.SafeHandles {
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.ConstrainedExecution;
using System.Security;
internal sealed class SafeLocalAllocHandle : SafeHandleZeroOrMinusOneIsInvalid {
private SafeLocalAllocHandle () : base(true) {}
// 0 is an Invalid Handle
internal SafeLocalAllocHandle (IntPtr handle) : base (true) {
SetHandle(handle);
}
internal static SafeLocalAllocHandle InvalidHandle {
get { return new SafeLocalAllocHandle(IntPtr.Zero); }
}
override protected bool ReleaseHandle()
{
return Win32Native.LocalFree(handle) == IntPtr.Zero;
}
}
internal sealed class SafeLsaLogonProcessHandle : SafeHandleZeroOrMinusOneIsInvalid {
private SafeLsaLogonProcessHandle() : base (true) {}
// 0 is an Invalid Handle
internal SafeLsaLogonProcessHandle(IntPtr handle) : base (true) {
SetHandle(handle);
}
internal static SafeLsaLogonProcessHandle InvalidHandle {
get { return new SafeLsaLogonProcessHandle(IntPtr.Zero); }
}
override protected bool ReleaseHandle()
{
// LsaDeregisterLogonProcess returns an NTSTATUS
return Win32Native.LsaDeregisterLogonProcess(handle) >= 0;
}
}
internal sealed class SafeLsaMemoryHandle : SafeHandleZeroOrMinusOneIsInvalid {
private SafeLsaMemoryHandle() : base(true) {}
// 0 is an Invalid Handle
internal SafeLsaMemoryHandle(IntPtr handle) : base (true) {
SetHandle(handle);
}
internal static SafeLsaMemoryHandle InvalidHandle {
get { return new SafeLsaMemoryHandle( IntPtr.Zero ); }
}
override protected bool ReleaseHandle() {
return Win32Native.LsaFreeMemory(handle) == 0;
}
}
internal sealed class SafeLsaPolicyHandle : SafeHandleZeroOrMinusOneIsInvalid {
private SafeLsaPolicyHandle() : base(true) {}
// 0 is an Invalid Handle
internal SafeLsaPolicyHandle(IntPtr handle) : base (true) {
SetHandle(handle);
}
internal static SafeLsaPolicyHandle InvalidHandle {
get { return new SafeLsaPolicyHandle( IntPtr.Zero ); }
}
override protected bool ReleaseHandle() {
return Win32Native.LsaClose(handle) == 0;
}
}
internal sealed class SafeLsaReturnBufferHandle : SafeHandleZeroOrMinusOneIsInvalid {
private SafeLsaReturnBufferHandle() : base (true) {}
// 0 is an Invalid Handle
internal SafeLsaReturnBufferHandle(IntPtr handle) : base (true) {
SetHandle(handle);
}
internal static SafeLsaReturnBufferHandle InvalidHandle {
get { return new SafeLsaReturnBufferHandle(IntPtr.Zero); }
}
override protected bool ReleaseHandle()
{
// LsaFreeReturnBuffer returns an NTSTATUS
return Win32Native.LsaFreeReturnBuffer(handle) >= 0;
}
}
internal sealed class SafeProcessHandle : SafeHandleZeroOrMinusOneIsInvalid {
private SafeProcessHandle() : base (true) {}
// 0 is an Invalid Handle
internal SafeProcessHandle(IntPtr handle) : base (true) {
SetHandle(handle);
}
internal static SafeProcessHandle InvalidHandle {
get { return new SafeProcessHandle(IntPtr.Zero); }
}
override protected bool ReleaseHandle()
{
return Win32Native.CloseHandle(handle);
}
}
internal sealed class SafeThreadHandle : SafeHandleZeroOrMinusOneIsInvalid {
private SafeThreadHandle() : base (true) {}
// 0 is an Invalid Handle
internal SafeThreadHandle(IntPtr handle) : base (true) {
SetHandle(handle);
}
override protected bool ReleaseHandle()
{
return Win32Native.CloseHandle(handle);
}
}
internal sealed class SafeTokenHandle : SafeHandleZeroOrMinusOneIsInvalid {
private SafeTokenHandle() : base (true) {}
// 0 is an Invalid Handle
internal SafeTokenHandle(IntPtr handle) : base (true) {
SetHandle(handle);
}
internal static SafeTokenHandle InvalidHandle {
get { return new SafeTokenHandle(IntPtr.Zero); }
}
override protected bool ReleaseHandle()
{
return Win32Native.CloseHandle(handle);
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListenerSingletonConnectionReader.cs
- ProgressBarRenderer.cs
- HttpWebRequestElement.cs
- GridViewRowEventArgs.cs
- XPathBinder.cs
- login.cs
- CreateUserWizard.cs
- ClientBuildManagerCallback.cs
- MissingFieldException.cs
- LoginName.cs
- ProfileManager.cs
- PersonalizationStateInfoCollection.cs
- LinearGradientBrush.cs
- WindowsClaimSet.cs
- CaseInsensitiveHashCodeProvider.cs
- EndpointDispatcher.cs
- VirtualizedItemProviderWrapper.cs
- FixedSOMTableRow.cs
- X509ScopedServiceCertificateElement.cs
- Tokenizer.cs
- RegistrationServices.cs
- XmlDesigner.cs
- RectKeyFrameCollection.cs
- FixedSOMElement.cs
- Line.cs
- PipelineModuleStepContainer.cs
- PackageFilter.cs
- TrackingLocation.cs
- ParseHttpDate.cs
- PointAnimationUsingKeyFrames.cs
- ActivityMarkupSerializer.cs
- mactripleDES.cs
- DockEditor.cs
- StorageInfo.cs
- SqlInternalConnection.cs
- WebServiceReceiveDesigner.cs
- BinaryNode.cs
- CheckBoxField.cs
- SqlDataSourceStatusEventArgs.cs
- SqlStream.cs
- CompilerTypeWithParams.cs
- PassportPrincipal.cs
- AttachInfo.cs
- LinkConverter.cs
- SelectionEditingBehavior.cs
- PageRequestManager.cs
- ClipboardProcessor.cs
- CancellationToken.cs
- ApplicationGesture.cs
- Size3DValueSerializer.cs
- ProviderConnectionPoint.cs
- WebDescriptionAttribute.cs
- SqlBinder.cs
- MasterPageBuildProvider.cs
- validationstate.cs
- WebBaseEventKeyComparer.cs
- NotifyInputEventArgs.cs
- cache.cs
- PropertySourceInfo.cs
- ELinqQueryState.cs
- QuaternionAnimationBase.cs
- NativeMethods.cs
- RoleGroupCollectionEditor.cs
- ModifiableIteratorCollection.cs
- SoapSchemaMember.cs
- TriggerBase.cs
- DataGridSortCommandEventArgs.cs
- ObsoleteAttribute.cs
- GroupJoinQueryOperator.cs
- HttpCacheVaryByContentEncodings.cs
- BackStopAuthenticationModule.cs
- AuthenticationSchemesHelper.cs
- DynamicDocumentPaginator.cs
- ScrollBarRenderer.cs
- PropertyTabChangedEvent.cs
- PaperSource.cs
- OdbcParameterCollection.cs
- SecUtil.cs
- HttpServerVarsCollection.cs
- TextDecorationCollection.cs
- Int32RectValueSerializer.cs
- IsolatedStorageFile.cs
- oledbmetadatacollectionnames.cs
- InheritedPropertyChangedEventArgs.cs
- RemotingConfiguration.cs
- ReferenceEqualityComparer.cs
- OleDbRowUpdatedEvent.cs
- ComponentDispatcher.cs
- TransformerInfoCollection.cs
- ModifierKeysValueSerializer.cs
- SystemFonts.cs
- Application.cs
- SimpleBitVector32.cs
- HatchBrush.cs
- ImagingCache.cs
- SpeechSeg.cs
- SendActivityEventArgs.cs
- DockPanel.cs
- AccessDataSourceView.cs
- HttpRuntime.cs