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
- _ProxyChain.cs
- PageThemeBuildProvider.cs
- SafeProcessHandle.cs
- SettingsBindableAttribute.cs
- KerberosSecurityTokenAuthenticator.cs
- COM2ColorConverter.cs
- PLINQETWProvider.cs
- JsonSerializer.cs
- OperationResponse.cs
- TreeViewTemplateSelector.cs
- Debug.cs
- HandlerFactoryCache.cs
- UIElementPropertyUndoUnit.cs
- StylusPointProperty.cs
- ToolTipService.cs
- PenThreadPool.cs
- Array.cs
- TraceContext.cs
- SqlNode.cs
- XmlDataLoader.cs
- IgnorePropertiesAttribute.cs
- TranslateTransform.cs
- DataGridBoolColumn.cs
- ScrollableControlDesigner.cs
- ThrowHelper.cs
- DocumentXmlWriter.cs
- LiteralTextParser.cs
- DesignBindingPicker.cs
- ConditionalBranch.cs
- NotifyParentPropertyAttribute.cs
- ColumnMap.cs
- DbSetClause.cs
- XslTransform.cs
- CheckBoxRenderer.cs
- ProviderManager.cs
- ModuleBuilder.cs
- NotifyCollectionChangedEventArgs.cs
- ByteAnimation.cs
- EdmComplexTypeAttribute.cs
- CodeExpressionStatement.cs
- FacetValueContainer.cs
- ProgressiveCrcCalculatingStream.cs
- ExternalException.cs
- XamlToRtfParser.cs
- ConsoleCancelEventArgs.cs
- AnnotationComponentManager.cs
- MessageQueue.cs
- KeyEvent.cs
- SqlTypesSchemaImporter.cs
- TypeConverterHelper.cs
- UInt32Converter.cs
- DataSourceXmlTextReader.cs
- IntegerValidator.cs
- OutputCacheEntry.cs
- EnumerableRowCollection.cs
- XmlSchemaExporter.cs
- RenderDataDrawingContext.cs
- XmlAnyElementAttribute.cs
- GuidConverter.cs
- QueryStatement.cs
- localization.cs
- Renderer.cs
- BitmapEffectDrawingContent.cs
- DataBoundLiteralControl.cs
- Peer.cs
- ColorTransform.cs
- DataGridViewCellMouseEventArgs.cs
- DocComment.cs
- ToolBar.cs
- HandleExceptionArgs.cs
- Debug.cs
- DescendentsWalkerBase.cs
- DeploymentSectionCache.cs
- SqlDataAdapter.cs
- SessionStateUtil.cs
- SafeNativeMethodsMilCoreApi.cs
- RequestStatusBarUpdateEventArgs.cs
- HttpWebRequestElement.cs
- ListParaClient.cs
- PageEventArgs.cs
- TextMessageEncodingBindingElement.cs
- Formatter.cs
- HtmlButton.cs
- UIPermission.cs
- WebPartDisplayMode.cs
- IDQuery.cs
- TextServicesPropertyRanges.cs
- FamilyMapCollection.cs
- hresults.cs
- Visitors.cs
- Configuration.cs
- ScrollData.cs
- TaskHelper.cs
- GridViewItemAutomationPeer.cs
- PriorityRange.cs
- HelpEvent.cs
- DbDeleteCommandTree.cs
- SerializableTypeCodeDomSerializer.cs
- GridPattern.cs
- TimerElapsedEvenArgs.cs