WinInet.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 / wcp / Shared / MS / Win32 / WinInet.cs / 1 / WinInet.cs

                            using System; 
using System.Security;
using System.Runtime.InteropServices;

namespace MS.Win32 
{
internal static class WinInet 
{ 
    /// 
    /// Will return the location of the internet cache folder. 
    /// 
    /// The location of the internet cache folder.
    /// 
    /// Critical: 
    ///  1) Calls several Marshal methods which have a link demand on them.
    ///  2) Calls NativeMethods.GetUrlCacheConfigInfo which is SecurityCritical. 
    /// Not Safe: 
    ///  2) Returns a Path that may leak information about the system.
    ///  
    internal static Uri InternetCacheFolder
    {
        [SecurityCritical]
        get 
        {
            // copied value 260 from orginal implementation in BitmapDownload.cs 
            const int maxPathSize = 260; 
            const UInt32 fieldControl = (UInt32)maxPathSize;
 
            NativeMethods.InternetCacheConfigInfo icci =
                new NativeMethods.InternetCacheConfigInfo();

            icci.CachePath = new string(new char[maxPathSize]); 
            UInt32 size = (UInt32)Marshal.SizeOf(icci);
            bool passed = UnsafeNativeMethods.GetUrlCacheConfigInfo( 
                ref icci, 
                ref size,
                fieldControl); 

            if (!passed)
            {
                int hr = Marshal.GetHRForLastWin32Error(); 

                if (hr != 0) 
                { 
                    Marshal.ThrowExceptionForHR(hr);
                } 
            }

            return new Uri(icci.CachePath);
        } 
    }
} 
} 

// 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