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
- CatalogPartCollection.cs
- SoapMessage.cs
- FilteredDataSetHelper.cs
- OrderedDictionary.cs
- TransformCryptoHandle.cs
- DataListItem.cs
- PtsPage.cs
- _LoggingObject.cs
- documentsequencetextview.cs
- SafeThreadHandle.cs
- IdnElement.cs
- Metafile.cs
- UIHelper.cs
- XmlDataSourceNodeDescriptor.cs
- ControlBuilderAttribute.cs
- RelationshipEndMember.cs
- AdCreatedEventArgs.cs
- ResourceDescriptionAttribute.cs
- TimeBoundedCache.cs
- Size3D.cs
- OptimisticConcurrencyException.cs
- DataViewManagerListItemTypeDescriptor.cs
- ClientApiGenerator.cs
- QueryOutputWriter.cs
- Ref.cs
- WinInetCache.cs
- ExpressionDumper.cs
- _NegoState.cs
- TraceUtils.cs
- QilChoice.cs
- BackStopAuthenticationModule.cs
- CatalogPart.cs
- FillErrorEventArgs.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- CompositionAdorner.cs
- CommonBehaviorsSection.cs
- PixelFormatConverter.cs
- XmlRootAttribute.cs
- ElementMarkupObject.cs
- RelationshipType.cs
- WebPartHelpVerb.cs
- SqlCaseSimplifier.cs
- ClassData.cs
- XmlWrappingWriter.cs
- Point.cs
- CacheMemory.cs
- GridViewColumnHeader.cs
- XmlSchemaCollection.cs
- TimeZone.cs
- AtomMaterializerLog.cs
- ProfileService.cs
- CodeEventReferenceExpression.cs
- ClientApiGenerator.cs
- SystemKeyConverter.cs
- ReversePositionQuery.cs
- DisplayMemberTemplateSelector.cs
- SafeReversePInvokeHandle.cs
- FolderBrowserDialog.cs
- HandleInitializationContext.cs
- TCPClient.cs
- AnnotationAdorner.cs
- HashSetDebugView.cs
- Logging.cs
- NetCodeGroup.cs
- Label.cs
- QueryParameter.cs
- ProcessHostConfigUtils.cs
- MSHTMLHost.cs
- AnnotationComponentChooser.cs
- DataGridViewMethods.cs
- SqlCacheDependencySection.cs
- TableParagraph.cs
- SpoolingTask.cs
- WebPartsPersonalizationAuthorization.cs
- AssemblyFilter.cs
- TraceContextRecord.cs
- ExpressionBuilder.cs
- NumberEdit.cs
- GridViewColumnHeaderAutomationPeer.cs
- ErrorsHelper.cs
- DynamicMethod.cs
- OdbcException.cs
- FontResourceCache.cs
- _NTAuthentication.cs
- ContentFileHelper.cs
- ExeContext.cs
- AutomationElement.cs
- MetaModel.cs
- TextTreeTextNode.cs
- DesignOnlyAttribute.cs
- GeometryValueSerializer.cs
- SqlDeflator.cs
- ResourceDictionaryCollection.cs
- SmiEventSink_Default.cs
- PrintDocument.cs
- _ProxyChain.cs
- CompilerParameters.cs
- MetadataException.cs
- ContentTextAutomationPeer.cs
- DataGridColumnCollection.cs