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
- ActivitySurrogateSelector.cs
- ITreeGenerator.cs
- DataSourceView.cs
- OdbcCommandBuilder.cs
- SignerInfo.cs
- SplitterCancelEvent.cs
- ColorAnimationBase.cs
- ContentElementCollection.cs
- TraceUtils.cs
- SupportingTokenListenerFactory.cs
- BufferModeSettings.cs
- WindowsGraphicsCacheManager.cs
- BooleanStorage.cs
- SqlInternalConnectionTds.cs
- WebPartTracker.cs
- CollectionConverter.cs
- WindowsUpDown.cs
- QuotaExceededException.cs
- GifBitmapEncoder.cs
- StreamResourceInfo.cs
- unsafenativemethodsother.cs
- HostSecurityManager.cs
- DataObjectEventArgs.cs
- PageRouteHandler.cs
- DataGridToolTip.cs
- DBConnectionString.cs
- WebPartRestoreVerb.cs
- columnmapkeybuilder.cs
- SettingsPropertyWrongTypeException.cs
- StatusBarItemAutomationPeer.cs
- InternalMappingException.cs
- RegexRunner.cs
- XmlILOptimizerVisitor.cs
- PenLineCapValidation.cs
- TableLayoutPanel.cs
- RsaSecurityTokenAuthenticator.cs
- AuthorizationContext.cs
- CharConverter.cs
- XmlSerializationGeneratedCode.cs
- InfoCardAsymmetricCrypto.cs
- MetadataItemCollectionFactory.cs
- PixelFormat.cs
- RtfToXamlLexer.cs
- JsonEncodingStreamWrapper.cs
- ScalarType.cs
- ResourcePart.cs
- Crypto.cs
- MsmqTransportSecurity.cs
- InfoCardProofToken.cs
- NativeMethods.cs
- FontSizeConverter.cs
- MethodCallConverter.cs
- XmlAggregates.cs
- HeaderElement.cs
- CompilerErrorCollection.cs
- CommandManager.cs
- GestureRecognizer.cs
- ContentHostHelper.cs
- SQLSingle.cs
- SmtpAuthenticationManager.cs
- SoundPlayer.cs
- PropagatorResult.cs
- AssemblyNameProxy.cs
- CorrelationValidator.cs
- CommandID.cs
- ObjectListFieldCollection.cs
- VerificationException.cs
- ByteBufferPool.cs
- _KerberosClient.cs
- SqlConnectionStringBuilder.cs
- SystemFonts.cs
- TypeDelegator.cs
- RichTextBoxDesigner.cs
- Vector3DAnimation.cs
- DataFieldCollectionEditor.cs
- ReferenceEqualityComparer.cs
- Mutex.cs
- AutoResizedEvent.cs
- EntityContainerRelationshipSetEnd.cs
- TimeSpanStorage.cs
- ObjectStateFormatter.cs
- IisTraceWebEventProvider.cs
- ArglessEventHandlerProxy.cs
- XXXOnTypeBuilderInstantiation.cs
- GridViewSelectEventArgs.cs
- LineServices.cs
- CopyAttributesAction.cs
- PageHandlerFactory.cs
- RadioButtonBaseAdapter.cs
- Schema.cs
- WorkflowEventArgs.cs
- Column.cs
- XamlFilter.cs
- XmlDomTextWriter.cs
- SQLBytes.cs
- LongPath.cs
- StickyNoteHelper.cs
- X509Chain.cs
- HtmlWindow.cs
- LocalValueEnumerator.cs