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
- XmlSchemaDocumentation.cs
- ParameterToken.cs
- ToolStripDropDown.cs
- SinglePageViewer.cs
- ProtocolsSection.cs
- Tuple.cs
- MessageBox.cs
- WebBrowserSiteBase.cs
- Zone.cs
- FindCriteriaElement.cs
- XmlAttributeCollection.cs
- CompilerInfo.cs
- StateMachineSubscriptionManager.cs
- Switch.cs
- ActiveDocumentEvent.cs
- Parser.cs
- ReceiveActivity.cs
- HtmlTitle.cs
- PropertyKey.cs
- BuildResultCache.cs
- MailMessageEventArgs.cs
- BinaryObjectWriter.cs
- TreeNodeMouseHoverEvent.cs
- Pens.cs
- DataRelationCollection.cs
- Compensate.cs
- ClientConfigPaths.cs
- SystemBrushes.cs
- TypeLoadException.cs
- StyleCollection.cs
- RegistryPermission.cs
- SoapAttributes.cs
- ManagementPath.cs
- SelectionHighlightInfo.cs
- CodeAttachEventStatement.cs
- EntityDataSourceContainerNameConverter.cs
- OleDbParameterCollection.cs
- TextEndOfLine.cs
- FrameworkContentElementAutomationPeer.cs
- diagnosticsswitches.cs
- SettingsSavedEventArgs.cs
- OracleFactory.cs
- Light.cs
- SmtpDigestAuthenticationModule.cs
- FunctionDetailsReader.cs
- PerfCounters.cs
- RightsManagementInformation.cs
- Parser.cs
- DirectoryInfo.cs
- WpfSharedXamlSchemaContext.cs
- PointCollection.cs
- SupportingTokenDuplexChannel.cs
- HostExecutionContextManager.cs
- HtmlUtf8RawTextWriter.cs
- FileIOPermission.cs
- MobileUITypeEditor.cs
- DBDataPermission.cs
- Invariant.cs
- User.cs
- FlowSwitchDesigner.xaml.cs
- ProjectionCamera.cs
- TableCell.cs
- NavigationHelper.cs
- DesignerHost.cs
- HtmlImage.cs
- SafeLibraryHandle.cs
- SqlSelectStatement.cs
- ReachPrintTicketSerializerAsync.cs
- PartialList.cs
- HttpCachePolicyElement.cs
- Interlocked.cs
- DelegatingHeader.cs
- ObservableDictionary.cs
- PathNode.cs
- ClientSponsor.cs
- BamlRecordWriter.cs
- TextServicesCompartmentContext.cs
- BindingMAnagerBase.cs
- CodeAccessPermission.cs
- StructuredTypeEmitter.cs
- SQLMoneyStorage.cs
- TextEffect.cs
- SessionPageStateSection.cs
- ContractDescription.cs
- MetafileHeader.cs
- ProjectionCamera.cs
- MonitoringDescriptionAttribute.cs
- Content.cs
- CodeDirectiveCollection.cs
- EntityDataSourceQueryBuilder.cs
- HttpRequest.cs
- ColorAnimation.cs
- MimeBasePart.cs
- XmlExpressionDumper.cs
- WindowInteropHelper.cs
- ValidationSummary.cs
- InvokeBase.cs
- CodeMemberEvent.cs
- StrokeNodeEnumerator.cs
- QuotedPrintableStream.cs