using ShellExtensions.Interop.Common; using System; using System.Runtime.InteropServices; using System.Runtime.InteropServices.ComTypes; namespace ShellExtensions.Interop { internal static class HandlerNativeMethods { internal static readonly Guid IThumbnailProviderGuid = new Guid("e357fccd-a995-4576-b01f-234630154e96"); internal static readonly Guid IInitializeWithFileGuid = new Guid("b7d14566-0509-4cce-a71f-0a554233bd9b"); internal static readonly Guid IInitializeWithStreamGuid = new Guid("b824b49d-22ac-4161-ac8a-9916e8fa3f7f"); //internal static readonly Guid IInitializeWithItemGuid = new Guid("7f73be3f-fb79-493c-a6c7-7ee14e245841"); internal static readonly Guid IMarshalGuid = new Guid("00000003-0000-0000-C000-000000000046"); } #region Interfaces /// /// ComVisible interface for native IThumbnailProvider /// [ComImport] [Guid("e357fccd-a995-4576-b01f-234630154e96")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] interface IThumbnailProvider { /// /// Gets a pointer to a bitmap to display as a thumbnail /// /// /// /// void GetThumbnail(uint squareLength, [Out] out IntPtr bitmapHandle, [Out] out uint bitmapType); } /// /// Provides means by which to initialize with a file. /// [ComImport] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] [Guid("b7d14566-0509-4cce-a71f-0a554233bd9b")] interface IInitializeWithFile { /// /// Initializes with a file. /// /// /// void Initialize([MarshalAs(UnmanagedType.LPWStr)] string filePath, AccessModes fileMode); } /// /// Provides means by which to initialize with a stream. /// [ComImport] [Guid("b824b49d-22ac-4161-ac8a-9916e8fa3f7f")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] interface IInitializeWithStream { /// /// Initializes with a stream. /// /// /// void Initialize(IStream stream, AccessModes fileMode); } #endregion // /// Thumbnail Alpha Types /// public enum ThumbnailAlphaType { /// /// Let the system decide. /// Unknown = 0, /// /// No transparency /// NoAlphaChannel = 1, /// /// Has transparency /// HasAlphaChannel = 2, } }