SafeCoTaskMem.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / UIAutomation / Win32Providers / MS / Internal / AutomationProxies / SafeCoTaskMem.cs / 1 / SafeCoTaskMem.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// Description: 
// 
// History:
//  10/04/2003 : [....]    Created 
//---------------------------------------------------------------------------

using System;
using System.Security; 
using System.Security.Permissions;
using System.Runtime.InteropServices; 
using System.Runtime.CompilerServices; 
using Microsoft.Win32.SafeHandles;
using MS.Win32; 

namespace MS.Internal.AutomationProxies
{
    internal sealed class SafeCoTaskMem : SafeHandleZeroOrMinusOneIsInvalid 
    {
        // This constructor is used by the P/Invoke marshaling layer 
        // to allocate a SafeHandle instance.  P/Invoke then does the 
        // appropriate method call, storing the handle in this class.
        private SafeCoTaskMem() : base(true) {} 

        internal SafeCoTaskMem(int length) : base(true)
        {
            SetHandle(Marshal.AllocCoTaskMem(length * sizeof (char))); 
        }
 
        internal string GetStringAuto() 
        {
            return Marshal.PtrToStringAuto(handle); 
        }

        internal string GetStringUni(int length)
        { 
            // Convert the local unmanaged buffer in to a string object
            return Marshal.PtrToStringUni(handle, length); 
        } 

        // 



        protected override bool ReleaseHandle() 
        {
            Marshal.FreeCoTaskMem(handle); 
            return true; 
        }
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// Description: 
// 
// History:
//  10/04/2003 : [....]    Created 
//---------------------------------------------------------------------------

using System;
using System.Security; 
using System.Security.Permissions;
using System.Runtime.InteropServices; 
using System.Runtime.CompilerServices; 
using Microsoft.Win32.SafeHandles;
using MS.Win32; 

namespace MS.Internal.AutomationProxies
{
    internal sealed class SafeCoTaskMem : SafeHandleZeroOrMinusOneIsInvalid 
    {
        // This constructor is used by the P/Invoke marshaling layer 
        // to allocate a SafeHandle instance.  P/Invoke then does the 
        // appropriate method call, storing the handle in this class.
        private SafeCoTaskMem() : base(true) {} 

        internal SafeCoTaskMem(int length) : base(true)
        {
            SetHandle(Marshal.AllocCoTaskMem(length * sizeof (char))); 
        }
 
        internal string GetStringAuto() 
        {
            return Marshal.PtrToStringAuto(handle); 
        }

        internal string GetStringUni(int length)
        { 
            // Convert the local unmanaged buffer in to a string object
            return Marshal.PtrToStringUni(handle, length); 
        } 

        // 



        protected override bool ReleaseHandle() 
        {
            Marshal.FreeCoTaskMem(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