SafeHandles.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / AccessibleTech / longhorn / Automation / UIAutomationClient / MS / Internal / Automation / SafeHandles.cs / 1 / SafeHandles.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// 
// Description: Various SafeHandles used by UIA 
//
//--------------------------------------------------------------------------- 
using System;
using System.Runtime.InteropServices;
using System.Windows.Automation;
using System.Windows.Automation.Provider; 

// PRESHARP: In order to avoid generating warnings about unkown message numbers and unknown pragmas. 
#pragma warning disable 1634, 1691 

namespace MS.Internal.Automation 
{
    internal sealed class SafeNodeHandle : SafeHandle
    {
        // Called by P/Invoke when returning SafeHandles 
        // (Also used by UiaCoreApi to create invalid handles.)
        internal SafeNodeHandle() 
            : base(IntPtr.Zero, true) 
        {
        } 

        // No need to provide a finalizer - SafeHandle's critical finalizer will
        // call ReleaseHandle for you.
        public override bool IsInvalid 
        {
            get { return handle == IntPtr.Zero; } 
        } 

        override protected bool ReleaseHandle() 
        {
            return UiaCoreApi.UiaNodeRelease(handle);
        }
    } 

 
    // Internal Class that wraps the IntPtr to the Pattern 
    internal sealed class SafePatternHandle : SafeHandle
    { 
        // Called by P/Invoke when returning SafeHandles
        // (Also used by UiaCoreApi to create invalid handles.)
        internal SafePatternHandle()
            : base(IntPtr.Zero, true) 
        {
        } 
        // No need to provide a finalizer - SafeHandle's critical finalizer will 
        // call ReleaseHandle for you.
        public override bool IsInvalid 
        {
            get { return handle == IntPtr.Zero; }
        }
 
        override protected bool ReleaseHandle()
        { 
            return UiaCoreApi.UiaPatternRelease(handle); 
        }
    } 


    // Internal Class that wraps the IntPtr to the Event
    internal sealed class SafeEventHandle : SafeHandle 
    {
        internal SafeEventHandle() 
            : base(IntPtr.Zero, true) 
        {
        } 

        public override bool IsInvalid
        {
            get { return handle == IntPtr.Zero; } 
        }
 
        override protected bool ReleaseHandle() 
        {
            UiaCoreApi.UiaRemoveEvent(handle); 
            return true;
        }
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK