NativeMethodsOther.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Shared / MS / Win32 / NativeMethodsOther.cs / 1305600 / NativeMethodsOther.cs

                            //------------------------------------------------------------------------------ 
//-----------------------------------------------------------------------------

namespace MS.Win32
{ 
    using Accessibility;
    using System; 
    using System.Runtime.ConstrainedExecution; 
    using System.Runtime.InteropServices;
    using System.Security; 
    using System.Security.Permissions;
    using System.Collections;
    using System.Diagnostics;
    using System.IO; 
    using System.Text;
    using MS.Win32; 
    using Microsoft.Win32.SafeHandles; 

 
#if WINDOWS_BASE
    using MS.Internal.WindowsBase;
#elif PRESENTATION_CORE
    using MS.Internal.PresentationCore; 
#elif PRESENTATIONFRAMEWORK
    using MS.Internal.PresentationFramework; 
#elif DRT 
    using MS.Internal.Drt;
#else 
#error Attempt to use FriendAccessAllowedAttribute from an unknown assembly.
    using MS.Internal.YourAssemblyName;
#endif
 
    [FriendAccessAllowed]
    internal partial class NativeMethods 
    { 
        // Translates Win32 error codes into HRESULTs.
        public static int MakeHRFromErrorCode(int errorCode) 
        {
            Debug.Assert((0xFFFF0000 & errorCode) == 0);
            return unchecked(((int)0x80070000) | errorCode);
        } 

        public const int    FEATURE_OBJECT_CACHING = 0 ; 
        public const int    FEATURE_ZONE_ELEVATION = 1; 
        public const int    FEATURE_MIME_HANDLING = 2;
        public const int    FEATURE_MIME_SNIFFING = 3; 
        public const int    FEATURE_WINDOW_RESTRICTIONS = 4;
        public const int    FEATURE_WEBOC_POPUPMANAGEMENT = 5;
        public const int    FEATURE_BEHAVIORS = 6;
        public const int    FEATURE_DISABLE_MK_PROTOCOL = 7; 
        public const int    FEATURE_LOCALMACHINE_LOCKDOWN = 8;
        public const int    FEATURE_SECURITYBAND = 9; 
        public const int    FEATURE_RESTRICT_ACTIVEXINSTALL = 10; 
        public const int    FEATURE_VALIDATE_NAVIGATE_URL = 11;
        public const int    FEATURE_RESTRICT_FILEDOWNLOAD = 12; 
        public const int    FEATURE_ADDON_MANAGEMENT = 13;
        public const int    FEATURE_PROTOCOL_LOCKDOWN = 14;
        public const int    FEATURE_HTTP_USERNAME_PASSWORD_DISABLE = 15;
        public const int    FEATURE_SAFE_BINDTOOBJECT = 16; 
        public const int    FEATURE_UNC_SAVEDFILECHECK = 17;
        public const int    FEATURE_GET_URL_DOM_FILEPATH_UNENCODED = 18; 
 
        // IE7 and higher
        public const int    FEATURE_TABBED_BROWSING = 19; 
        public const int    FEATURE_SSLUX = 20;
        public const int    FEATURE_DISABLE_NAVIGATION_SOUNDS = 21;
        public const int    FEATURE_DISABLE_LEGACY_COMPRESSION = 22;
        public const int    FEATURE_FORCE_ADDR_AND_STATUS = 23; 
        public const int    FEATURE_XMLHTTP = 24;
        public const int    FEATURE_DISABLE_TELNET_PROTOCOL = 25; 
        public const int    FEATURE_FEEDS = 26; 
        public const int    FEATURE_BLOCK_INPUT_PROMPTS = 27;
 
        public const int    GET_FEATURE_FROM_PROCESS = 0x00000002;
        public const int    SET_FEATURE_ON_PROCESS   = 0x00000002;

        public const int    URLZONE_LOCAL_MACHINE    = 0; 
        public const int    URLZONE_INTRANET         = URLZONE_LOCAL_MACHINE + 1;
        public const int    URLZONE_TRUSTED          = URLZONE_INTRANET + 1; 
        public const int    URLZONE_INTERNET         = URLZONE_TRUSTED + 1; 
        public const int    URLZONE_UNTRUSTED        = URLZONE_INTERNET + 1;
 
        public const byte   URLPOLICY_ALLOW          = 0x00;
        public const byte   URLPOLICY_QUERY          = 0x01;
        public const byte   URLPOLICY_DISALLOW       = 0x03;
 
        public const int    URLACTION_FEATURE_ZONE_ELEVATION = 0x00002101;
        public const int    PUAF_NOUI                = 0x00000001; 
        public const int    MUTZ_NOSAVEDFILECHECK    = 0x00000001; 

        [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode )] 
        internal sealed class OSVERSIONINFOEX
        {
            public OSVERSIONINFOEX()
            { 
                osVersionInfoSize = (int)SecurityHelper.SizeOf(this);
            } 
 
            // The OSVersionInfoSize field must be set to SecurityHelper.SizeOf(this)
            public int osVersionInfoSize = 0; 
            public int majorVersion = 0;
            public int minorVersion = 0;
            public int buildNumber = 0;
            public int platformId = 0; 
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst=128)]
            public string csdVersion = null; 
            public short servicePackMajor = 0; 
            public short servicePackMinor = 0;
            public short suiteMask = 0; 
            public byte productType = 0;
            public byte reserved = 0;
        }
 
        [ComImport, Guid("79eac9ee-baf9-11ce-8c82-00aa004ba90b"), System.Runtime.InteropServices.InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
        internal interface IInternetSecurityMgrSite 
        { 
            void GetWindow( /* [out] */ ref IntPtr phwnd) ;
            void EnableModeless( /* [in] */ bool fEnable) ; 
        }

        [StructLayout(LayoutKind.Sequential)]
        internal class OLECMD { 
            [MarshalAs(UnmanagedType.U4)]
            public   int cmdID = 0; 
            [MarshalAs(UnmanagedType.U4)] 
            public   int cmdf = 0;
 
        }

        // Helper GUID type for nullability requirement in IOleCommandTarget.Exec.
        [StructLayout(LayoutKind.Sequential)] 
        internal class GUID
        { 
            public Guid guid; 

            public GUID(Guid guid) 
            {
                this.guid = guid;
            }
        } 

        ///  
        /// Critical - Applies SuppressUnmanagedCodeSecurity. 
        /// 
        [ComVisible(true), ComImport(), Guid("B722BCCB-4E68-101B-A2BC-00AA00404770"), 
        InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown), SecurityCritical, SuppressUnmanagedCodeSecurity]
        internal interface IOleCommandTarget
        {
 
            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig] 
            int QueryStatus( 
                GUID pguidCmdGroup, /* nullable GUID */
                int cCmds, 
                [In, Out]
                OLECMD prgCmds,
                [In, Out]
                IntPtr pCmdText); 

            [return: MarshalAs(UnmanagedType.I4)] 
            [PreserveSig] 
            int Exec(
                GUID pguidCmdGroup, /* nullable GUID */ 
                int nCmdID,
                int nCmdexecopt,
                // we need to have this an array because callers need to be able to specify NULL or VT_NULL
                [In, MarshalAs(UnmanagedType.LPArray)] 
                Object[] pvaIn,
                int pvaOut); 
        } 

        [ComVisible(true), StructLayout(LayoutKind.Sequential)] 
        internal class DOCHOSTUIINFO {
            [MarshalAs(UnmanagedType.U4)]
            internal   int cbSize = SecurityHelper.SizeOf(typeof(DOCHOSTUIINFO));
            [MarshalAs(UnmanagedType.I4)] 
            internal   int dwFlags;
            [MarshalAs(UnmanagedType.I4)] 
            internal   int dwDoubleClick; 
            [MarshalAs(UnmanagedType.I4)]
            internal   int dwReserved1 = 0; 
            [MarshalAs(UnmanagedType.I4)]
            internal   int dwReserved2 = 0;
        }
 

        public enum DOCHOSTUIFLAG { 
            DIALOG = 0x1, 
            DISABLE_HELP_MENU = 0x2,
            NO3DBORDER = 0x4, 
            SCROLL_NO = 0x8,
            DISABLE_SCRIPT_INACTIVE = 0x10,
            OPENNEWWIN = 0x20,
            DISABLE_OFFSCREEN = 0x40, 
            FLAT_SCROLLBAR = 0x80,
            DIV_BLOCKDEFAULT = 0x100, 
            ACTIVATE_CLIENTHIT_ONLY = 0x200, 
            NO3DOUTERBORDER = 0x00200000,
            ENABLE_FORMS_AUTOCOMPLETE = 0x00004000, 
            ENABLE_INPLACE_NAVIGATION = 0x00010000,
            IME_ENABLE_RECONVERSION   = 0x00020000,
            THEME = 0x00040000,
            NOTHEME = 0x80000, 
            DISABLE_COOKIE = 0x400,
            NOPICS                    = 0x100000, 
            DISABLE_EDIT_NS_FIXUP     = 0x400000, 
            LOCAL_MACHINE_ACCESS_CHECK= 0x800000,
            DISABLE_UNTRUSTEDPROTOCOL = 0x1000000, 
            HOST_NAVIGATES            = 0x2000000,
            ENABLE_REDIRECT_NOTIFICATION = 0x4000000
        }
 
        public enum DOCHOSTUIDBLCLICK {
            DEFAULT = 0x0, 
            SHOWPROPERTIES = 0x1, 
            SHOWCODE = 0x2
        } 
        [DllImport(ExternDll.Gdi32, ExactSpelling = true, CharSet = CharSet.Auto, SetLastError = true)]
        internal static extern IntPtr SetEnhMetaFileBits(uint cbBuffer, byte[] buffer);

        [StructLayout(LayoutKind.Sequential)] 
        internal class ICONINFO
        { 
            public bool fIcon = false; 
            public int xHotspot = 0;
            public int yHotspot = 0; 
            public BitmapHandle hbmMask = null;
            public BitmapHandle hbmColor = null;
        }
 
        internal abstract class WpfSafeHandle : SafeHandleZeroOrMinusOneIsInvalid
        { 
            private int _collectorId; 

            ///  
            ///      Critical:This code calls into a base class which is protected by link demand and by inheritance demand
            /// 
            [SecurityCritical]
            protected WpfSafeHandle(bool ownsHandle, int collectorId) : base(ownsHandle) 
            {
                HandleCollector.Add(collectorId); 
                _collectorId = collectorId; 
            }
 
            /// 
            /// Critical: Conceptually, this would be accessing critical data as it's in the destroy call path.
            /// TreatAsSafe: This is just destroying a handle that this object owns.
            ///  
            [SecurityCritical, SecurityTreatAsSafe]
            protected override void Dispose(bool disposing) 
            { 
                HandleCollector.Remove(_collectorId);
                base.Dispose(disposing); 
            }

            // ReleaseHandle implementation is deferred to derived classes.
            // protected override bool ReleaseHandle() {} 
        }
 
        internal sealed class BitmapHandle : WpfSafeHandle 
        {
            ///  
            /// Critical: This code calls into a base class which is protected by a SecurityCritical constructor.
            /// 
            [SecurityCritical]
            private BitmapHandle() : base(true, NativeMethods.CommonHandles.GDI) 
            {
            } 
 
            /// 
            ///     Critical: This calls into DeleteObject 
            /// 
            [SecurityCritical]
            [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
            protected override bool ReleaseHandle() 
            {
                return UnsafeNativeMethods.DeleteObject(handle); 
            } 

            ///  
            ///     Critical: Accesses internal critical data.
            /// 
            [SecurityCritical]
            internal HandleRef MakeHandleRef(object obj) 
            {
                return new HandleRef(obj, handle); 
            } 

            ///  
            ///     Critical: Creates a new BitmapHandle using Critical constructor.
            /// 
            [SecurityCritical]
            internal static BitmapHandle CreateFromHandle(IntPtr hbitmap) 
            {
                return new BitmapHandle 
                { 
                    handle = hbitmap,
                }; 
            }
        }

        internal sealed class IconHandle : WpfSafeHandle 
        {
            ///  
            /// Critical: This code calls into a base class which is protected by a SecurityCritical constructor. 
            /// 
            [SecurityCritical] 
            private IconHandle() : base(true, NativeMethods.CommonHandles.Icon)
            {
            }
 
            /// 
            ///     Critical: This calls into DestroyIcon 
            ///  
            [SecurityCritical]
            [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] 
            protected override bool ReleaseHandle()
            {
                return UnsafeNativeMethods.DestroyIcon(handle);
            } 

            ///  
            ///     Critical: This creates a new SafeHandle, which has a critical constructor. 
            ///     TreatAsSafe: The handle this creates is invalid.  It contains no critical data.
            ///  
            [SecurityCritical, SecurityTreatAsSafe]
            internal static IconHandle GetInvalidIcon()
            {
                return new IconHandle(); 
            }
 
            ///  
            /// Get access to the raw handle for native APIs that require it.
            ///  
            /// 
            ///     Critical: This accesses critical data for the safe handle.
            /// 
            [SecurityCritical] 
            internal IntPtr CriticalGetHandle()
            { 
                return handle; 
            }
        } 

        internal sealed class CursorHandle : WpfSafeHandle
        {
            ///  
            /// Critical: This code calls into a base class which is protected by a SecurityCritical constructor.
            ///  
            [SecurityCritical] 
            private CursorHandle() : base(true, NativeMethods.CommonHandles.Cursor)
            { 
            }

            /// 
            ///     Critical: This calls into DestroyCursor 
            /// 
            [SecurityCritical] 
            [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] 
            protected override bool ReleaseHandle()
            { 
                return UnsafeNativeMethods.DestroyCursor( handle );
            }

            ///  
            ///     Critical: This creates a new SafeHandle, which has a critical constructor.
            ///     TreatAsSafe: The handle this creates is invalid.  It contains no critical data. 
            ///  
            [SecurityCritical, SecurityTreatAsSafe]
            internal static CursorHandle GetInvalidCursor() 
            {
                return new CursorHandle();
            }
        } 

        public static int SignedHIWORD(IntPtr intPtr) 
        { 
            return SignedHIWORD(IntPtrToInt32(intPtr));
        } 

        public static int SignedLOWORD(IntPtr intPtr)
        {
            return SignedLOWORD(IntPtrToInt32(intPtr)); 
        }
 
        public const int SIZE_RESTORED = 0; 
        public const int SIZE_MINIMIZED = 1;
 
        public const int WS_EX_NOACTIVATE = 0x08000000;
        public const int VK_LSHIFT = 0xA0;
        public const int VK_RMENU = 0xA5;
        public const int VK_LMENU = 0xA4; 
        public const int VK_LCONTROL = 0xA2;
        public const int VK_RCONTROL = 0xA3; 
        public const int VK_LBUTTON = 0x01; 
        public const int VK_RBUTTON = 0x02;
        public const int VK_MBUTTON = 0x04; 
        public const int VK_XBUTTON1 = 0x05;
        public const int VK_XBUTTON2 = 0x06;

        // We have this wrapper because casting IntPtr to int may 
        // generate OverflowException when one of high 32 bits is set.
        public static int IntPtrToInt32(IntPtr intPtr) 
        { 
            return unchecked((int)intPtr.ToInt64());
        } 

        public const int PM_QS_SENDMESSAGE = unchecked(QS_SENDMESSAGE << 16);
        public const int PM_QS_POSTMESSAGE = unchecked((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16);
        public const int MWMO_WAITALL = 0x0001; 
        public const int MWMO_ALERTABLE = 0x0002;
        public const int MWMO_INPUTAVAILABLE = 0x0004; 
 
        public static IntPtr HWND_MESSAGE = new IntPtr(-3);
 

        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        public class WNDCLASSEX_I
        { 
            public int cbSize = 0;
 
            public int style = 0; 

            public IntPtr lpfnWndProc = IntPtr.Zero; 

            public int cbClsExtra = 0;

            public int cbWndExtra = 0; 

            public IntPtr hInstance = IntPtr.Zero; 
 
            public IntPtr hIcon = IntPtr.Zero;
 
            public IntPtr hCursor = IntPtr.Zero;

            public IntPtr hbrBackground = IntPtr.Zero;
 
            public IntPtr lpszMenuName = IntPtr.Zero;
 
            public IntPtr lpszClassName = IntPtr.Zero; 

            public IntPtr hIconSm = IntPtr.Zero; 
        }

        // NOTE:  this replaces the RECT struct in NativeMethodsCLR.cs because it adds an extra method IsEmpty
        [StructLayout(LayoutKind.Sequential)] 
        public struct RECT
        { 
            public int left; 
            public int top;
            public int right; 
            public int bottom;

            public RECT(int left, int top, int right, int bottom)
            { 
                this.left = left;
                this.top = top; 
                this.right = right; 
                this.bottom = bottom;
            } 

            public int Width
            {
                get { return right - left; } 
            }
 
            public int Height 
            {
                get { return bottom - top; } 
            }

            public void Offset(int dx, int dy)
            { 
                left += dx;
                top += dy; 
                right += dx; 
                bottom += dy;
            } 

            public bool IsEmpty
            {
                get 
                {
                    return left >= right || top >= bottom; 
                } 
            }
        } 

        // Provided for interop scenarios that require passing a NULL RECT*.
        [StructLayout(LayoutKind.Sequential)]
        internal class RefRECT 
        {
            public int left; 
            public int top; 
            public int right;
            public int bottom; 

            public RefRECT()
            {}
 
            public RefRECT(int left, int top, int right, int bottom)
            { 
                this.left = left; 
                this.top = top;
                this.right = right; 
                this.bottom = bottom;
            }

            public int Width 
            {
                get { return right - left; } 
            } 

            public int Height 
            {
                get { return bottom - top; }
            }
 
            public void Offset(int dx, int dy)
            { 
                left += dx; 
                top += dy;
                right += dx; 
                bottom += dy;
            }

            public bool IsEmpty 
            {
                get 
                { 
                    return left >= right || top >= bottom;
                } 
            }
        }

        // NOTE:  this replaces the struct in NativeMethodsCLR.cs because it adds some additonal methods 
        [StructLayout(LayoutKind.Sequential, Pack = 2)]
        public struct BITMAPINFO 
        { 
            // bmiHeader was a by-value BITMAPINFOHEADER structure
            public int bmiHeader_biSize;  // ndirect.DllLib.sizeOf( BITMAPINFOHEADER.class ); 

            public int bmiHeader_biWidth;

            public int bmiHeader_biHeight; 

            public short bmiHeader_biPlanes; 
 
            public short bmiHeader_biBitCount;
 
            public int bmiHeader_biCompression;

            public int bmiHeader_biSizeImage;
 
            public int bmiHeader_biXPelsPerMeter;
 
            public int bmiHeader_biYPelsPerMeter; 

            public int bmiHeader_biClrUsed; 

            public int bmiHeader_biClrImportant;

 
            // hamidm -- 03/08/2006
            // if the following RGBQUAD struct is added in this struct, 
            // we need to update bmiHeader_biSize in the cctor to hard-coded 40 
            // since it expects the size of the BITMAPINFOHEADER only
            // 
            // bmiColors was an embedded array of RGBQUAD structures
            // public byte     bmiColors_rgbBlue = 0;
            // public byte     bmiColors_rgbGreen = 0;
            // public byte     bmiColors_rgbRed = 0; 
            // public byte     bmiColors_rgbReserved = 0;
            public BITMAPINFO(int width, int height, short bpp) 
            { 
                bmiHeader_biSize = SecurityHelper.SizeOf(typeof(BITMAPINFO));
                bmiHeader_biWidth = width; 
                bmiHeader_biHeight = height;
                bmiHeader_biPlanes = 1;
                bmiHeader_biBitCount = bpp;
                bmiHeader_biCompression = 0; 
                bmiHeader_biSizeImage = 0;
                bmiHeader_biXPelsPerMeter = 0; 
                bmiHeader_biYPelsPerMeter = 0; 
                bmiHeader_biClrUsed = 0;
                bmiHeader_biClrImportant = 0; 
            }
        }

        [StructLayout(LayoutKind.Sequential)] 
        internal class SECURITY_ATTRIBUTES : IDisposable
        { 
            public int nLength = SecurityHelper.SizeOf(typeof(SECURITY_ATTRIBUTES)); 

            public IntPtr lpSecurityDescriptor = IntPtr.Zero; 

            public bool bInheritHandle = false;

            public void Dispose() 
            {
                if (lpSecurityDescriptor != IntPtr.Zero) 
                { 
                    UnsafeNativeMethods.LocalFree(lpSecurityDescriptor);
                    lpSecurityDescriptor = IntPtr.Zero; 
                }
                GC.SuppressFinalize(this);
            }
 
            ~SECURITY_ATTRIBUTES()
            { 
                Dispose(); 
            }
 
        }

        internal const uint DELETE = 0x00010000, READ_CONTROL = 0x00020000, WRITE_DAC = 0x00040000, WRITE_OWNER = 0x00080000, SYNCHRONIZE = 0x00100000, STANDARD_RIGHTS_REQUIRED = 0x000F0000, STANDARD_RIGHTS_READ = READ_CONTROL, STANDARD_RIGHTS_WRITE = READ_CONTROL, STANDARD_RIGHTS_EXECUTE = READ_CONTROL, STANDARD_RIGHTS_ALL = 0x001F0000, SPECIFIC_RIGHTS_ALL = 0x0000FFFF, ACCESS_SYSTEM_SECURITY = 0x01000000, MAXIMUM_ALLOWED = 0x02000000, GENERIC_READ = 0x80000000, GENERIC_WRITE = 0x40000000, GENERIC_EXECUTE = 0x20000000, GENERIC_ALL = 0x10000000;
 
        internal const uint FILE_READ_DATA = 0x0001,    // file & pipe
            FILE_LIST_DIRECTORY = 0x0001,    // directory 
            FILE_WRITE_DATA = 0x0002,    // file & pipe 
            FILE_ADD_FILE = 0x0002,    // directory
            FILE_APPEND_DATA = 0x0004,    // file 
            FILE_ADD_SUBDIRECTORY = 0x0004,    // directory
            FILE_CREATE_PIPE_INSTANCE = 0x0004,    // named pipe
            FILE_READ_EA = 0x0008,    // file & directory
            FILE_WRITE_EA = 0x0010,    // file & directory 
            FILE_EXECUTE = 0x0020,    // file
            FILE_TRAVERSE = 0x0020,    // directory 
            FILE_DELETE_CHILD = 0x0040,    // directory 
            FILE_READ_ATTRIBUTES = 0x0080,    // all
            FILE_WRITE_ATTRIBUTES = 0x0100;    // all 

        internal const uint FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF, FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE, FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE, FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE;

        internal const uint FILE_SHARE_READ = 0x00000001, FILE_SHARE_WRITE = 0x00000002, FILE_SHARE_DELETE = 0x00000004; 

        internal const int ERROR_ALREADY_EXISTS = 183; 
 
        internal const int OPEN_EXISTING = 3;
 
        internal const int PAGE_READONLY = 0x02;

        internal const int SECTION_MAP_READ = 0x0004;
 
        internal const int FILE_ATTRIBUTE_NORMAL = 0x00000080;
        internal const int FILE_ATTRIBUTE_TEMPORARY = 0x00000100; 
        internal const int FILE_FLAG_DELETE_ON_CLOSE = 0x04000000; 

        internal const int CREATE_ALWAYS   = 2; 

        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
        public class WNDCLASSEX_D
        { 
            public int cbSize = 0;
 
            public int style = 0; 

            public WndProc lpfnWndProc = null; 

            public int cbClsExtra = 0;

            public int cbWndExtra = 0; 

            public IntPtr hInstance = IntPtr.Zero; 
 
            public IntPtr hIcon = IntPtr.Zero;
 
            public IntPtr hCursor = IntPtr.Zero;

            public IntPtr hbrBackground = IntPtr.Zero;
 
            public string lpszMenuName = null;
 
            public string lpszClassName = null; 

            public IntPtr hIconSm = IntPtr.Zero; 
        }


#if BASE_NATIVEMETHODS 

        public const int QS_EVENT = 0x2000; 
 
        public const int VK_CANCEL = 0x03;
 

        public const int VK_BACK = 0x08;

        public const int VK_CLEAR = 0x0C; 

        public const int VK_RETURN = 0x0D; 
 
        public const int VK_PAUSE = 0x13;
 
        public const int VK_CAPITAL = 0x14;

        public const int VK_KANA = 0x15;
 
        public const int VK_HANGEUL = 0x15;
 
        public const int VK_HANGUL = 0x15; 

        public const int VK_JUNJA = 0x17; 

        public const int VK_FINAL = 0x18;

        public const int VK_HANJA = 0x19; 

        public const int VK_KANJI = 0x19; 
 
        public const int VK_ESCAPE = 0x1B;
 
        public const int VK_CONVERT = 0x1C;

        public const int VK_NONCONVERT = 0x1D;
 
        public const int VK_ACCEPT = 0x1E;
 
        public const int VK_MODECHANGE = 0x1F; 

        public const int VK_SPACE = 0x20; 

        public const int VK_PRIOR = 0x21;

        public const int VK_NEXT = 0x22; 

        public const int VK_END = 0x23; 
 
        public const int VK_HOME = 0x24;
 
        public const int VK_LEFT = 0x25;

        public const int VK_UP = 0x26;
 
        public const int VK_RIGHT = 0x27;
 
        public const int VK_DOWN = 0x28; 

        public const int VK_SELECT = 0x29; 

        public const int VK_PRINT = 0x2A;

        public const int VK_EXECUTE = 0x2B; 

        public const int VK_SNAPSHOT = 0x2C; 
 
        public const int VK_INSERT = 0x2D;
 
        public const int VK_DELETE = 0x2E;

        public const int VK_HELP = 0x2F;
 
        public const int VK_0 = 0x30;
 
        public const int VK_1 = 0x31; 

        public const int VK_2 = 0x32; 

        public const int VK_3 = 0x33;

        public const int VK_4 = 0x34; 

        public const int VK_5 = 0x35; 
 
        public const int VK_6 = 0x36;
 
        public const int VK_7 = 0x37;

        public const int VK_8 = 0x38;
 
        public const int VK_9 = 0x39;
 
        public const int VK_A = 0x41; 

        public const int VK_B = 0x42; 

        public const int VK_C = 0x43;

        public const int VK_D = 0x44; 

        public const int VK_E = 0x45; 
 
        public const int VK_F = 0x46;
 
        public const int VK_G = 0x47;

        public const int VK_H = 0x48;
 
        public const int VK_I = 0x49;
 
        public const int VK_J = 0x4A; 

        public const int VK_K = 0x4B; 

        public const int VK_L = 0x4C;

        public const int VK_M = 0x4D; 

        public const int VK_N = 0x4E; 
 
        public const int VK_O = 0x4F;
 
        public const int VK_P = 0x50;

        public const int VK_Q = 0x51;
 
        public const int VK_R = 0x52;
 
        public const int VK_S = 0x53; 

        public const int VK_T = 0x54; 

        public const int VK_U = 0x55;

        public const int VK_V = 0x56; 

        public const int VK_W = 0x57; 
 
        public const int VK_X = 0x58;
 
        public const int VK_Y = 0x59;

        public const int VK_Z = 0x5A;
 
        public const int VK_LWIN = 0x5B;
 
        public const int VK_RWIN = 0x5C; 

        public const int VK_APPS = 0x5D; 

        public const int VK_POWER = 0x5E;

        public const int VK_SLEEP = 0x5F; 

        public const int VK_NUMPAD0 = 0x60; 
 
        public const int VK_NUMPAD1 = 0x61;
 
        public const int VK_NUMPAD2 = 0x62;

        public const int VK_NUMPAD3 = 0x63;
 
        public const int VK_NUMPAD4 = 0x64;
 
        public const int VK_NUMPAD5 = 0x65; 

        public const int VK_NUMPAD6 = 0x66; 

        public const int VK_NUMPAD7 = 0x67;

        public const int VK_NUMPAD8 = 0x68; 

        public const int VK_NUMPAD9 = 0x69; 
 
        public const int VK_MULTIPLY = 0x6A;
 
        public const int VK_ADD = 0x6B;

        public const int VK_SEPARATOR = 0x6C;
 
        public const int VK_SUBTRACT = 0x6D;
 
        public const int VK_DECIMAL = 0x6E; 

        public const int VK_DIVIDE = 0x6F; 

        public const int VK_F1 = 0x70;

        public const int VK_F2 = 0x71; 

        public const int VK_F3 = 0x72; 
 
        public const int VK_F4 = 0x73;
 
        public const int VK_F5 = 0x74;

        public const int VK_F6 = 0x75;
 
        public const int VK_F7 = 0x76;
 
        public const int VK_F8 = 0x77; 

        public const int VK_F9 = 0x78; 

        public const int VK_F10 = 0x79;

        public const int VK_F11 = 0x7A; 

        public const int VK_F12 = 0x7B; 
 
        public const int VK_F13 = 0x7C;
 
        public const int VK_F14 = 0x7D;

        public const int VK_F15 = 0x7E;
 
        public const int VK_F16 = 0x7F;
 
        public const int VK_F17 = 0x80; 

        public const int VK_F18 = 0x81; 

        public const int VK_F19 = 0x82;

        public const int VK_F20 = 0x83; 

        public const int VK_F21 = 0x84; 
 
        public const int VK_F22 = 0x85;
 
        public const int VK_F23 = 0x86;

        public const int VK_F24 = 0x87;
 
        public const int VK_NUMLOCK = 0x90;
 
        public const int VK_SCROLL = 0x91; 

 
        public const int VK_RSHIFT = 0xA1;

        public const int VK_BROWSER_BACK = 0xA6;
 
        public const int VK_BROWSER_FORWARD = 0xA7;
 
        public const int VK_BROWSER_REFRESH = 0xA8; 

        public const int VK_BROWSER_STOP = 0xA9; 

        public const int VK_BROWSER_SEARCH = 0xAA;

        public const int VK_BROWSER_FAVORITES = 0xAB; 

        public const int VK_BROWSER_HOME = 0xAC; 
 
        public const int VK_VOLUME_MUTE = 0xAD;
 
        public const int VK_VOLUME_DOWN = 0xAE;

        public const int VK_VOLUME_UP = 0xAF;
 
        public const int VK_MEDIA_NEXT_TRACK = 0xB0;
 
        public const int VK_MEDIA_PREV_TRACK = 0xB1; 

        public const int VK_MEDIA_STOP = 0xB2; 

        public const int VK_MEDIA_PLAY_PAUSE = 0xB3;

        public const int VK_LAUNCH_MAIL = 0xB4; 

        public const int VK_LAUNCH_MEDIA_SELECT = 0xB5; 
 
        public const int VK_LAUNCH_APP1 = 0xB6;
 
        public const int VK_LAUNCH_APP2 = 0xB7;

        public const int VK_PROCESSKEY = 0xE5;
 
        public const int VK_PACKET = 0xE7;
 
        public const int VK_ATTN = 0xF6; 

        public const int VK_CRSEL = 0xF7; 

        public const int VK_EXSEL = 0xF8;

        public const int VK_EREOF = 0xF9; 

        public const int VK_PLAY = 0xFA; 
 
        public const int VK_ZOOM = 0xFB;
 
        public const int VK_NONAME = 0xFC;

        public const int VK_PA1 = 0xFD;
 
        public const int VK_OEM_CLEAR = 0xFE;
#endif 
 
        /////////////////////
        // from Framework 
        internal const int ENDSESSION_LOGOFF = (unchecked((int)0x80000000));

        internal const int
        ERROR_SUCCESS = 0; 

        public const int LOCALE_FONTSIGNATURE = 0x00000058; 
 
        public const int
            SWP_NOREDRAW = 0x0008, 
            SWP_FRAMECHANGED = 0x0020,  // The frame changed: send WM_NCCALCSIZE
            SWP_NOCOPYBITS = 0x0100,
            SWP_NOOWNERZORDER = 0x0200,  // Don't do owner Z ordering
            SWP_NOSENDCHANGING = 0x0400,  // Don't send WM_WINDOWPOSCHANGING 
            SWP_NOREPOSITION = SWP_NOOWNERZORDER,
            SWP_DEFERERASE = 0x2000, 
            SWP_ASYNCWINDOWPOS = 0x4000, 
            SPI_GETCURSORSHADOW = 0x101A,
            SPI_SETCURSORSHADOW = 0x101B, 
            SPI_GETFOCUSBORDERWIDTH = 0x200E,
            SPI_SETFOCUSBORDERWIDTH = 0x200F,
            SPI_GETFOCUSBORDERHEIGHT = 0x2010,
            SPI_SETFOCUSBORDERHEIGHT = 0x2011, 
            SPI_GETSTYLUSHOTTRACKING = 0x1010,
            SPI_SETSTYLUSHOTTRACKING = 0x1011, 
            SPI_GETTOOLTIPFADE = 0x1018, 
            SPI_SETTOOLTIPFADE = 0x1019,
            SPI_GETFOREGROUNDFLASHCOUNT = 0x2004, 
            SPI_SETFOREGROUNDFLASHCOUNT = 0x2005,
            SPI_SETCARETWIDTH = 0x2007,
            SPI_SETMOUSEVANISH = 0x1021,
            SPI_SETHIGHCONTRAST = 0x0043, 
            SPI_SETKEYBOARDPREF = 0x0045,
            SPI_SETFLATMENU = 0x1023, 
            SPI_SETDROPSHADOW = 0x1025, 
            SPI_SETWORKAREA = 0x002F,
            SPI_SETICONMETRICS = 0x002E, 
            SPI_SETDRAGWIDTH = 0x004C,
            SPI_SETDRAGHEIGHT = 0x004D,
            SPI_SETPENWINDOWS = 0x0031,
            SPI_SETMOUSEBUTTONSWAP = 0x0021, 
            SPI_SETSHOWSOUNDS = 0x0039,
            SPI_SETKEYBOARDCUES = 0x100B, 
            SPI_SETKEYBOARDDELAY = 0x0017, 
            SPI_SETSNAPTODEFBUTTON = 0x0060,
            SPI_SETWHEELSCROLLLINES = 0x0069, 
            SPI_SETMOUSEHOVERWIDTH = 0x0063,
            SPI_SETMOUSEHOVERHEIGHT = 0x0065,
            SPI_SETMOUSEHOVERTIME = 0x0067,
            SPI_SETMENUDROPALIGNMENT = 0x001C, 
            SPI_SETMENUFADE = 0x1013,
            SPI_SETMENUSHOWDELAY = 0x006B, 
            SPI_SETCOMBOBOXANIMATION = 0x1005, 
            SPI_SETCLIENTAREAANIMATION = 0x1043,
            SPI_SETGRADIENTCAPTIONS = 0x1009, 
            SPI_SETHOTTRACKING = 0x100F,
            SPI_SETLISTBOXSMOOTHSCROLLING = 0x1007,
            SPI_SETMENUANIMATION = 0x1003,
            SPI_SETSELECTIONFADE = 0x1015, 
            SPI_SETTOOLTIPANIMATION = 0x1017,
            SPI_SETUIEFFECTS = 0x103F, 
            SPI_SETANIMATION = 0x0049, 
            SPI_SETDRAGFULLWINDOWS = 0x0025,
            SPI_SETBORDER = 0x0006, 
            SPI_SETNONCLIENTMETRICS = 0x002A;

        public const int LANG_KOREAN = 0x12;
 
#if NEVER
        public static int PRIMARYLANGID(int lgid) 
        { 
            return ((ushort)(lgid) & 0x3ff);
        } 
#endif

        public const int
            MB_YESNO = 0x00000004, 
            MB_SYSTEMMODAL = 0x00001000,
            IDYES = 6; 
 
        public const int PM_QS_INPUT = unchecked(QS_INPUT << 16);
        public const int PM_QS_PAINT = unchecked(QS_PAINT << 16); 


        public const int
        SW_PARENTCLOSING = 1, 
        SW_PARENTOPENING = 3,
        SC_MOUSEMOVE = SC_MOVE + 0x02, 
        SPI_SETKEYBOARDSPEED = 0x000B; 

        internal const int TYMED_HGLOBAL = 1; 
        internal const int TYMED_FILE = 2;
        internal const int TYMED_ISTREAM = 4;
        internal const int TYMED_ISTORAGE = 8;
        internal const int TYMED_GDI = 16; 
        internal const int TYMED_MFPICT = 32;
        internal const int TYMED_ENHMF = 64; 
 

        public const int WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX); 

        public const int KEYEVENTF_EXTENDEDKEY = 0x0001;
        public const int KEYEVENTF_KEYUP = 0x0002;
        public const int KEYEVENTF_UNICODE = 0x0004; 
        public const int KEYEVENTF_SCANCODE = 0x0008;
 
        public const int MOUSEEVENTF_MOVE = 0x0001; 
        public const int MOUSEEVENTF_LEFTDOWN = 0x0002;
        public const int MOUSEEVENTF_LEFTUP = 0x0004; 
        public const int MOUSEEVENTF_RIGHTDOWN = 0x0008;
        public const int MOUSEEVENTF_RIGHTUP = 0x0010;
        public const int MOUSEEVENTF_MIDDLEDOWN = 0x0020;
        public const int MOUSEEVENTF_MIDDLEUP = 0x0040; 
        public const int MOUSEEVENTF_XDOWN = 0x0080;
        public const int MOUSEEVENTF_XUP = 0x0100; 
        public const int MOUSEEVENTF_WHEEL = 0x00800; 
        public const int MOUSEEVENTF_VIRTUALDESK = 0x04000;
        public const int MOUSEEVENTF_ABSOLUTE = 0x08000; 
        public const int MOUSEEVENTF_ACTUAL = 0x10000;

        public const int GWL_HINSTANCE = -6;
        public const int GWL_USERDATA = -21; 
        public const int GCL_MENUNAME = -8;
        public const int GCL_HBRBACKGROUND = -10; 
        public const int GCL_HCURSOR = -12; 
        public const int GCL_HICON = -14;
        public const int GCL_HMODULE = -16; 
        public const int GCL_CBWNDEXTRA = -18;
        public const int GCL_CBCL----TRA = -20;
        public const int GCL_STYLE = -26;
        public const int GCW_ATOM = -32; 
        public const int GCL_HICONSM = -34;
 
        public const int MONITOR_DEFAULTTONULL       = 0x00000000; 
        public const int MONITOR_DEFAULTTOPRIMARY    = 0x00000001;
        public const int MONITOR_DEFAULTTONEAREST = 0x00000002; 


        [StructLayout(LayoutKind.Sequential)]
        public class ANIMATIONINFO 
        {
            public int cbSize = SecurityHelper.SizeOf(typeof(ANIMATIONINFO)); 
            public int iMinAnimate = 0; 
        }
 


        [StructLayout(LayoutKind.Sequential)]
        public sealed class STATDATA 
        {
            [MarshalAs(UnmanagedType.U4)] 
            public int advf = 0; 
            [MarshalAs(UnmanagedType.U4)]
            public int dwConnection = 0; 
        }

        public enum WINDOWTHEMEATTRIBUTETYPE
        { 
            WTA_NONCLIENT = 1
        }; 
 
        public const uint WTNCA_NODRAWCAPTION = 0x00000001;   // don't draw the window caption
        public const uint WTNCA_NODRAWICON = 0x00000002;   // don't draw the system icon 
        public const uint WTNCA_NOSYSMENU = 0x00000004;   // don't expose the system menu icon functionality
        public const uint WTNCA_VALIDBITS = (WTNCA_NODRAWCAPTION | WTNCA_NODRAWICON | WTNCA_NOSYSMENU);

#if WCP_SYSTEM_THEMES_ENABLED 
        [StructLayout(LayoutKind.Sequential)]
        public class WTA_OPTIONS 
        { 
            public uint dwFlags = 0;
            public uint dwMask = 0; 
        };
#endif // WCP_SYSTEM_THEMES_ENABLED

 
        internal const int NO_ERROR = 0;
 
 
        ///////////////////////////
        // Used by BASE 

        public const int VK_OEM_1 = 0xBA;
        public const int VK_OEM_PLUS = 0xBB;
        public const int VK_OEM_COMMA = 0xBC; 
        public const int VK_OEM_MINUS = 0xBD;
        public const int VK_OEM_PERIOD = 0xBE; 
        public const int VK_OEM_2 = 0xBF; 
        public const int VK_OEM_3 = 0xC0;
        public const int VK_C1 = 0xC1;   // Brazilian ABNT_C1 key (not defined in winuser.h). 
        public const int VK_C2 = 0xC2;   // Brazilian ABNT_C2 key (not defined in winuser.h).
        public const int VK_OEM_4 = 0xDB;
        public const int VK_OEM_5 = 0xDC;
        public const int VK_OEM_6 = 0xDD; 
        public const int VK_OEM_7 = 0xDE;
        public const int VK_OEM_8 = 0xDF; 
        public const int VK_OEM_AX = 0xE1; 
        public const int VK_OEM_102 = 0xE2;
        public const int VK_OEM_RESET = 0xE9; 
        public const int VK_OEM_JUMP = 0xEA;
        public const int VK_OEM_PA1 = 0xEB;
        public const int VK_OEM_PA2 = 0xEC;
        public const int VK_OEM_PA3 = 0xED; 
        public const int VK_OEM_WSCTRL = 0xEE;
        public const int VK_OEM_CUSEL = 0xEF; 
        public const int VK_OEM_ATTN = 0xF0; 
        public const int VK_OEM_FINISH = 0xF1;
        public const int VK_OEM_COPY = 0xF2; 
        public const int VK_OEM_AUTO = 0xF3;
        public const int VK_OEM_ENLW = 0xF4;
        public const int VK_OEM_BACKTAB = 0xF5;
 
        ////////////////////////////
        // Needed by BASE 
#if BASE_NATIVEMETHODS 
        /// 
        /// HWND. 
        /// 
        [StructLayout(LayoutKind.Sequential)]
        public struct HWND
        { 
            /// 
            /// 
            ///  
            public IntPtr h;
 
            /// 
            ///
            /// 
            ///  
            /// 
            public static HWND Cast(IntPtr h) 
            { 
                HWND hTemp = new HWND();
                hTemp.h = h; 
                return hTemp;
            }

            public HandleRef MakeHandleRef(object wrapper) 
            {
                return new HandleRef(wrapper,h); 
            } 

            ///  
            ///
            /// 
            /// 
            ///  
            public static implicit operator IntPtr(HWND h)
            { 
                return h.h; 
            }
 
/*
            /// 
            ///
            ///  
            public static HWND NULL
            { 
                get 
                {
                    HWND hTemp = new HWND(); 
                    hTemp.h = IntPtr.Zero;
                    return hTemp;
                }
            } 

            ///  
            /// 
            /// 
            public static HWND HWND_TOP 
            {
                get
                {
                    HWND hTemp = new HWND(); 
                    hTemp.h = new IntPtr(0);
                    return hTemp; 
                } 
            }
 
            /// 
            ///
            /// 
            public static HWND HWND_BOTTOM 
            {
                get 
                { 
                    HWND hTemp = new HWND();
                    hTemp.h = new IntPtr(1); 
                    return hTemp;
                }
            }
 
            /// 
            /// 
            ///  
            public static HWND HWND_TOPMOST
            { 
                get
                {
                    HWND hTemp = new HWND();
                    hTemp.h = new IntPtr(-1); 
                    return hTemp;
                } 
            } 

            ///  
            ///
            /// 
            public static HWND HWND_NOTOPMOST
            { 
                get
                { 
                    HWND hTemp = new HWND(); 
                    hTemp.h = new IntPtr(-2);
                    return hTemp; 
                }
            }

            ///  
            ///
            ///  
            public static HWND HWND_MESSAGE 
            {
                get 
                {
                    HWND hTemp = new HWND();
                    hTemp.h = new IntPtr(-3);
                    return hTemp; 
                }
            } 
*/ 
            /// 
            /// 
            /// 
            /// 
            /// 
            ///  
            public static bool operator ==(HWND hl, HWND hr)
            { 
                return (hl.h == hr.h); 
            }
 
            /// 
            ///
            /// 
            ///  
            /// 
            ///  
            public static bool operator !=(HWND hl, HWND hr) 
            {
                return (hl.h != hr.h); 
            }

            /// 
            /// 
            /// 
            ///  
            ///  
            override public bool Equals(object oCompare)
            { 
                HWND hr = Cast((HWND)oCompare);
                return (h == hr.h);
            }
 
            /// 
            /// 
            ///  
            /// 
            public override int GetHashCode() 
            {
                return (int)h;
            }
        } 

        ///  
        /// HDC. 
        /// 
        public struct HDC 
        {
            /// 
            ///
            ///  
            public IntPtr h;
 
            ///  
            ///
            ///  
            /// 
            /// 
            public static HDC Cast(IntPtr h)
            { 
                HDC hTemp = new HDC();
                hTemp.h = h; 
                return hTemp; 
            }
 
            public HandleRef MakeHandleRef( object wrapper)
            {
                return new HandleRef(wrapper, h);
            } 

            ///  
            /// 
            /// 
            public static HDC NULL 
            {
                get
                {
                    HDC hTemp = new HDC(); 
                    hTemp.h = IntPtr.Zero;
                    return hTemp; 
                } 
            }
        } 

        public const int DRAGDROP_S_DROP = 0x00040100;
        public const int DRAGDROP_S_CANCEL = 0x00040101;
        public const int DRAGDROP_S_USEDEFAULTCURSORS = 0x00040102; 

        public const int TME_CANCEL = (unchecked((int)0x80000000)); 
        public const int IDC_HAND = 32649; 

        ///  
        /// End document printing
        /// 
        /// Printer DC
        /// More than 0 if succeeds, zero or less if fails 
        //CASRemoval:[System.Security.SuppressUnmanagedCodeSecurity, DllImport("gdi32.dll")]
        [DllImport("gdi32.dll")]//CASRemoval: 
        public static extern Int32 EndDoc(HDC hdc); 

        public const int DM_ORIENTATION = 0x00000001; 
        public const int DM_PAPERSIZE = 0x00000002;
        public const int DM_PAPERLENGTH = 0x00000004;
        public const int DM_PAPERWIDTH = 0x00000008;
        public const int DM_PRINTQUALITY = 0x00000400; 
        public const int DM_YRESOLUTION = 0x00002000;
 
        ///  
        /// Escape description for ExtEscape
        ///  
        [StructLayout(LayoutKind.Sequential)]
        public unsafe struct PrinterEscape
        {
            public Int32 cbInput; 
            public UInt32 cbOutput;
            public UInt32 opcode; 
            public Int32 cbSize; 
            public void* buffer;
        } 

        /// 
        /// Send Escape to DC (printer)
        ///  
        /// Printer DC
        /// Escape code 
        /// # bytes in lpvInData 
        /// Input data
        /// size of lpvOutData in bytes 
        /// Structure to receive data
        /// 0 if escape not implemented, negative if error, otherwise succeeds
        //CASRemoval:[System.Security.SuppressUnmanagedCodeSecurity, DllImport("gdi32.dll")]
        [DllImport("gdi32.dll")]//CASRemoval: 
        public static unsafe extern Int32 ExtEscape(HDC hdc, Int32 nEscape, Int32 cbInput, PrinterEscape* lpvInData, Int32 cbOutput, [Out] void* lpvOutData);
 
        public const int MM_ISOTROPIC = 7; 

 
        public const int DM_OUT_BUFFER = 2;


        ///  
        /// Document info for printing
        ///  
        [StructLayout(LayoutKind.Sequential)] 
        public unsafe struct DocInfo
        {// (*)indicates must be specfied 
            internal Int32 cbSize;                     // (*)size of this structure (20)
            internal String lpszName;                   // (*)Name of document
            internal String lpszOutput;                 // Name of output file (null)
            internal String lpszDatatype;               // Type of data ("raw" or "emf") can be null 
            internal Int32 fwType;                     // Flags about print job (0)
        } 
 
        /// 
        /// Start document printing 
        /// 
        /// Printer DC
        /// Document information
        /// More than zero if succeeded 
        //CASRemoval:[System.Security.SuppressUnmanagedCodeSecurity, DllImport("gdi32.dll")]
        [DllImport("gdi32.dll")]//CASRemoval: 
        public unsafe static extern Int32 StartDoc(HDC hdc, ref DocInfo docInfo); 

        ///  
        ///
        /// 
        /// 
        ///  
        /// 
        ///  
        //CASRemoval:[System.Security.SuppressUnmanagedCodeSecurity, DllImport("winspool.drv")] 
        [DllImport("winspool.drv", BestFitMapping = false, ThrowOnUnmappableChar = true)]//CASRemoval:
        public unsafe static extern Int32 OpenPrinterA(String printerName, IntPtr* phPrinter, void* pDefaults); 

        /// 
        ///
        ///  
        /// 
        ///  
        //CASRemoval:[System.Security.SuppressUnmanagedCodeSecurity, DllImport("winspool.drv")] 
        [DllImport("winspool.drv")]//CASRemoval:
        public static extern Int32 ClosePrinter(IntPtr hPrinter); 

        /// 
        /// End document page
        ///  
        /// Printer DC
        /// More than 0 if succeeds, zero or less if fails 
        //CASRemoval:[System.Security.SuppressUnmanagedCodeSecurity, DllImport("gdi32.dll")] 
        [DllImport("gdi32.dll")]//CASRemoval:
        public static extern Int32 EndPage(HDC hdc); 

        /// 
        /// Start document page
        ///  
        /// Printer DC
        /// More than 0 if succeeds, zero or less if fails 
        //CASRemoval:[System.Security.SuppressUnmanagedCodeSecurity, DllImport("gdi32.dll")] 
        [DllImport("gdi32.dll")]//CASRemoval:
        public static extern Int32 StartPage(HDC hdc); 

        /// Win32 constants
        public const int E_HANDLE = unchecked((int)0x80070006);
 
        /// wParam for WM_SETTINGCHANGE
        public const int SPI_SETFONTSMOOTHING = 0x004B; 
        /// wParam for WM_SETTINGCHANGE 
        public const int SPI_SETFONTSMOOTHINGTYPE = 0x200B;
        /// wParam for WM_SETTINGCHANGE 
        public const int SPI_SETFONTSMOOTHINGCONTRAST = 0x200D;
        /// wParam for WM_SETTINGCHANGE
        public const int SPI_SETFONTSMOOTHINGORIENTATION = 0x2013;
        /// wParam for WM_SETTINGCHANGE 
        public const int SPI_SETDISPLAYPIXELSTRUCTURE = 0x2015;
        /// wParam for WM_SETTINGCHANGE 
        public const int SPI_SETDISPLAYGAMMA = 0x2017; 
        /// wParam for WM_SETTINGCHANGE
        public const int SPI_SETDISPLAYCLEARTYPELEVEL = 0x2019; 
        /// wParam for WM_SETTINGCHANGE
        public const int SPI_SETDISPLAYTEXTCONTRASTLEVEL = 0x201b;

        public const int GMMP_USE_DISPLAY_POINTS = 1; 
        public const int GMMP_USE_HIGH_RESOLUTION_POINTS = 2;
 
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] // For GetMouseMovePointsEx 
        public struct MOUSEMOVEPOINT {
            public int    x ;                       //Specifies the x-coordinate of the mouse 
            public int    y ;                       //Specifies the x-coordinate of the mouse
            public int    time ;                    //Specifies the time stamp of the mouse coordinate
            public IntPtr dwExtraInfo;              //Specifies extra information associated with this coordinate.
        } 

        public const int ERROR_FILE_NOT_FOUND               = 2; 
        public const int ERROR_PATH_NOT_FOUND               = 3; 
        public const int ERROR_ACCESS_DENIED                = 5;
        public const int ERROR_INVALID_DRIVE                = 15; 
        public const int ERROR_SHARING_VIOLATION            = 32;
        public const int ERROR_FILE_EXISTS                  = 80;
        public const int ERROR_INVALID_PARAMETER            = 87;
        public const int ERROR_FILENAME_EXCED_RANGE         = 206; 
        public const int ERROR_NO_MORE_ITEMS                = 259;
        public const int ERROR_OPERATION_ABORTED            = 995; 
 
#endif // BASE_NATIVEMETHODS
 

        public const int LR_DEFAULTCOLOR = 0x0000,
                         LR_MONOCHROME = 0x0001,
                         LR_COLOR = 0x0002, 
                         LR_COPYRETURNORG = 0x0004,
                         LR_COPYDELETEORG = 0x0008, 
                         LR_LOADFROMFILE = 0x0010, 
                         LR_LOADTRANSPARENT = 0x0020,
                         LR_DEFAULTSIZE = 0x0040, 
                         LR_VGACOLOR = 0x0080,
                         LR_LOADMAP3DCOLORS = 0x1000,
                         LR_CREATEDIBSECTION = 0x2000,
                         LR_COPYFROMRESOURCE = 0x4000, 
                         LR_SHARED = unchecked((int)0x8000);
 
        internal enum Win32SystemColors 
        {
            ActiveBorder = 0x0A, 
            ActiveCaption = 0x02,
            ActiveCaptionText = 0x09,
            AppWorkspace = 0x0C,
            Control = 0x0F, 
            ControlDark = 0x10,
            ControlDarkDark = 0x15, 
            ControlLight = 0x16, 
            ControlLightLight = 0x14,
            ControlText = 0x12, 
            Desktop = 0x01,
            GradientActiveCaption = 0x1B,
            GradientInactiveCaption = 0x1C,
            GrayText = 0x11, 
            Highlight = 0x0D,
            HighlightText = 0x0E, 
            HotTrack = 0x1A, 
            InactiveBorder = 0x0B,
            InactiveCaption = 0x03, 
            InactiveCaptionText = 0x13,
            Info = 0x18,
            InfoText = 0x17,
            Menu = 0x04, 
            MenuBar = 0x1E,
            MenuHighlight = 0x1D, 
            MenuText = 0x07, 
            ScrollBar = 0x00,
            Window = 0x05, 
            WindowFrame = 0x06,
            WindowText = 0x08
        }
 
#if WINDOWS_BASE
        // Copied from winineti.h 
 
        // Note: CachePath should be an array of size 260.
        [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)] 
        internal struct InternetCacheConfigInfo
        {
            internal UInt32 dwStructSize;
            internal UInt32 dwContainer; 
            internal UInt32 dwQuota;
            internal UInt32 dwReserved4; 
            [MarshalAs(UnmanagedType.Bool)] internal bool fPerUser; 
            internal UInt32 dwSyncMode;
            internal UInt32 dwNumCachePaths; 
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] internal string CachePath;
            internal UInt32 dwCacheSize;
            internal UInt32 dwNormalUsage;
            internal UInt32 dwExemptUsage; 
        }
#endif 
 
        public const int WTS_CONSOLE_CONNECT    = 0x1;
        public const int WTS_CONSOLE_DISCONNECT = 0x2; 
        public const int WTS_REMOTE_CONNECT     = 0x3;
        public const int WTS_REMOTE_DISCONNECT  = 0x4;
        public const int WTS_SESSION_LOCK       = 0x7;
        public const int WTS_SESSION_UNLOCK     = 0x8; 

        public const uint NOTIFY_FOR_THIS_SESSION = 0; 
 
        public const int PBT_APMSUSPEND         = 0x0004;
        public const int PBT_APMRESUMECRITICAL  = 0x0006; 
        public const int PBT_APMRESUMESUSPEND   = 0x0007;
        public const int PBT_APMRESUMEAUTOMATIC = 0x0012;
        public const int PBT_POWERSETTINGCHANGE = 0x8013;
 
        [StructLayout(LayoutKind.Sequential, Pack = 4)]
        public struct POWERBROADCAST_SETTING { 
            public Guid PowerSetting; 
            public int DataLength;
            public byte Data; 
        }

        public static readonly Guid GUID_MONITOR_POWER_ON = new Guid(0x02731015, 0x4510, 0x4526, 0x99, 0xE6, 0xE5, 0xA1, 0x7E, 0xBD, 0x1A, 0xEA);
 

 
        public const uint PROFILE_READ = 1; 

        // 
        // 
        //

        public enum ProfileType : uint 
        {
            PROFILE_FILENAME = 1, 
            PROFILE_MEMBUFFER = 2 
        };
 
        public enum COLORTYPE : uint
        {
            COLOR_GRAY       =   1,
            COLOR_RGB, 
            COLOR_XYZ,
            COLOR_Yxy, 
            COLOR_Lab, 
            COLOR_3_CHANNEL,
            COLOR_CMYK, 
            COLOR_5_CHANNEL,
            COLOR_6_CHANNEL,
            COLOR_7_CHANNEL,
            COLOR_8_CHANNEL, 
            COLOR_NAMED,
 
            // Not part of the real enum in icm.h but here for backwards compat 
            COLOR_UNDEFINED = 255
        }; 

        public enum ColorSpace : uint
        {
            SPACE_XYZ       = 0x58595A20,  // = 'XYZ ' 
            SPACE_Lab       = 0x4C616220,  // = 'Lab '
            SPACE_Luv       = 0x4C757620,  // = 'Luv ' 
            SPACE_YCbCr     = 0x59436272,  // = 'YCbr' 
            SPACE_Yxy       = 0x59787920,  // = 'Yxy '
            SPACE_RGB       = 0x52474220,  // = 'RGB ' 
            SPACE_GRAY      = 0x47524159,  // = 'GRAY'
            SPACE_HSV       = 0x48535620,  // = 'HSV '
            SPACE_HLS       = 0x484C5320,  // = 'HLS '
            SPACE_CMYK      = 0x434D594B,  // = 'CMYK' 
            SPACE_CMY       = 0x434D5920,  // = 'CMY '
            SPACE_2_CHANNEL = 0x32434C52,  // = '2CLR' 
            SPACE_3_CHANNEL = 0x33434C52,  // = '3CLR' 
            SPACE_4_CHANNEL = 0x34434C52,  // = '4CLR'
            SPACE_5_CHANNEL = 0x35434C52,  // = '5CLR' 
            SPACE_6_CHANNEL = 0x36434C52,  // = '6CLR'
            SPACE_7_CHANNEL = 0x37434C52,  // = '7CLR'
            SPACE_8_CHANNEL = 0x38434C52,  // = '8CLR'
 
            // These are not in icm.h but were present in our original
            // implementation. We don't know if these actually exist 
            // but we're going to leave them anyway for compat. 
            SPACE_9_CHANNEL = 0x39434C52,  // = '9CLR'
            SPACE_A_CHANNEL = 0x41434C52,  // = 'ACLR' 
            SPACE_B_CHANNEL = 0x42434C52,  // = 'BCLR'
            SPACE_C_CHANNEL = 0x43434C52,  // = 'CCLR'
            SPACE_D_CHANNEL = 0x44434C52,  // = 'DCLR'
            SPACE_E_CHANNEL = 0x45434C52,  // = 'ECLR' 
            SPACE_F_CHANNEL = 0x46434C52,  // = 'FCLR'
            SPACE_sRGB      = 0x73524742   // = 'sRGB' 
        }; 

        // 
        // 
        //
    }
} 


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