Code:
/ FX-1434 / FX-1434 / 1.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
- EntityTypeEmitter.cs
- SecurityUtils.cs
- TreeNodeEventArgs.cs
- ResolveRequestResponseAsyncResult.cs
- MultiSelector.cs
- _ContextAwareResult.cs
- BaseCodePageEncoding.cs
- Visual.cs
- ProfessionalColors.cs
- WinCategoryAttribute.cs
- InstalledFontCollection.cs
- SQLSingle.cs
- CodeEventReferenceExpression.cs
- ExtensionCollection.cs
- SyndicationContent.cs
- WorkflowViewStateService.cs
- CanonicalFontFamilyReference.cs
- AttributeCollection.cs
- DocumentApplicationJournalEntry.cs
- BaseDataBoundControl.cs
- ParameterToken.cs
- MediaElementAutomationPeer.cs
- UserInitiatedRoutedEventPermission.cs
- SettingsPropertyWrongTypeException.cs
- EntityConnectionStringBuilder.cs
- DrawingGroup.cs
- ColorContext.cs
- PromptBuilder.cs
- ECDsa.cs
- SqlUdtInfo.cs
- MessageQueuePermissionAttribute.cs
- BaseCollection.cs
- tooltip.cs
- DocumentSchemaValidator.cs
- UdpDiscoveryMessageFilter.cs
- TemplateManager.cs
- FactoryMaker.cs
- HttpProfileBase.cs
- PermissionSet.cs
- ClientSideQueueItem.cs
- FastEncoderWindow.cs
- Sql8ExpressionRewriter.cs
- _PooledStream.cs
- DashStyles.cs
- MethodAccessException.cs
- LockingPersistenceProvider.cs
- uribuilder.cs
- ManagementObjectSearcher.cs
- NotCondition.cs
- DataRowChangeEvent.cs
- FocusWithinProperty.cs
- Atom10ItemFormatter.cs
- IxmlLineInfo.cs
- Label.cs
- PropertyMapper.cs
- LoadMessageLogger.cs
- FontDialog.cs
- IdentitySection.cs
- MenuRenderer.cs
- MsmqBindingFilter.cs
- EditorZoneBase.cs
- BidPrivateBase.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- HttpChannelBindingToken.cs
- EdmConstants.cs
- _UncName.cs
- BCryptSafeHandles.cs
- ContentElement.cs
- BuildProviderAppliesToAttribute.cs
- behaviorssection.cs
- ArrayHelper.cs
- SimpleHandlerFactory.cs
- OperationResponse.cs
- FamilyMap.cs
- PopupEventArgs.cs
- FacetChecker.cs
- ListViewCommandEventArgs.cs
- SchemaCollectionPreprocessor.cs
- Brush.cs
- FlowDocumentReader.cs
- ContentElementCollection.cs
- TypefaceMetricsCache.cs
- SettingsPropertyValueCollection.cs
- AlignmentYValidation.cs
- ChangeInterceptorAttribute.cs
- RegexCompiler.cs
- SqlUnionizer.cs
- NamespaceEmitter.cs
- SqlConnectionPoolGroupProviderInfo.cs
- HttpMethodAttribute.cs
- CodeDirectoryCompiler.cs
- SchemaCollectionCompiler.cs
- XamlParser.cs
- ActivityDesignerLayoutSerializers.cs
- DefaultEvaluationContext.cs
- AxisAngleRotation3D.cs
- DuplicateWaitObjectException.cs
- RegexInterpreter.cs
- Attributes.cs
- LabelLiteral.cs