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
- AutomationIdentifier.cs
- SplitContainer.cs
- PropertyMetadata.cs
- AvTrace.cs
- ValidatedMobileControlConverter.cs
- SubpageParaClient.cs
- WebPartsSection.cs
- ControlBuilderAttribute.cs
- XmlDataSource.cs
- FreeFormPanel.cs
- ConfigurationElement.cs
- InternalsVisibleToAttribute.cs
- ComponentResourceKey.cs
- handlecollector.cs
- FixUp.cs
- CompilerErrorCollection.cs
- ConfigurationLockCollection.cs
- bindurihelper.cs
- Rotation3D.cs
- Hashtable.cs
- DataObjectMethodAttribute.cs
- MouseActionValueSerializer.cs
- SafeNativeMethods.cs
- ContainerSelectorBehavior.cs
- StorageMappingItemCollection.cs
- MultiAsyncResult.cs
- _NativeSSPI.cs
- HelpProvider.cs
- COM2ColorConverter.cs
- Transactions.cs
- StreamUpgradeInitiator.cs
- ToolStripItemImageRenderEventArgs.cs
- DashStyle.cs
- CellTreeNode.cs
- ButtonBase.cs
- DatePickerDateValidationErrorEventArgs.cs
- AsyncCompletedEventArgs.cs
- SimpleBitVector32.cs
- MetricEntry.cs
- SqlNodeTypeOperators.cs
- BaseParagraph.cs
- LayoutUtils.cs
- Transform.cs
- XmlBinaryWriter.cs
- Wizard.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- IRCollection.cs
- IssuerInformation.cs
- DEREncoding.cs
- SafeCryptContextHandle.cs
- SimpleMailWebEventProvider.cs
- GacUtil.cs
- SrgsDocumentParser.cs
- _ProxyRegBlob.cs
- CompilationSection.cs
- WinFormsUtils.cs
- WinInetCache.cs
- WindowsRichEdit.cs
- AuthorizationRuleCollection.cs
- HttpContext.cs
- BaseComponentEditor.cs
- Profiler.cs
- Cursors.cs
- ConnectionsZone.cs
- ButtonChrome.cs
- BaseProcessor.cs
- DataControlFieldCell.cs
- TableItemProviderWrapper.cs
- HttpWebRequestElement.cs
- TypeUnloadedException.cs
- RangeValuePatternIdentifiers.cs
- ConnectionStringSettingsCollection.cs
- BaseEntityWrapper.cs
- StyleHelper.cs
- X509Extension.cs
- MediaEntryAttribute.cs
- ColumnCollection.cs
- ContractSearchPattern.cs
- BamlTreeNode.cs
- PagedDataSource.cs
- Operator.cs
- SqlBuffer.cs
- AggregateNode.cs
- MeasureItemEvent.cs
- BreakRecordTable.cs
- SignedInfo.cs
- SelectionRange.cs
- EventToken.cs
- StyleXamlParser.cs
- ZipPackage.cs
- TypefaceCollection.cs
- PersistenceProviderDirectory.cs
- QuaternionAnimationUsingKeyFrames.cs
- DetailsViewRow.cs
- FixUpCollection.cs
- CacheSection.cs
- ToolboxItem.cs
- HierarchicalDataBoundControl.cs
- XPathAncestorQuery.cs
- FileFormatException.cs