using System;
using System.Runtime.InteropServices;
namespace Vanara.PInvoke
{
public static partial class Shell32
{
/// Exposed by a client to specify how to filter the enumeration of a Shell item by a server application.
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-ishellitemfilter
[ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("2659B475-EEB8-48b7-8F07-B378810F48CF")]
public interface IShellItemFilter
{
/// Sets a given Shell item status to inclusion in the view.
///
/// Type: IShellItem*
/// A pointer to the Shell item that is to be included in the view.
///
///
/// Type: HRESULT
/// If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
///
///
/// The host calls this method for each item in the folder. Returns S_OK to have the item enumerated for inclusion in the view.
/// Returns S_FALSE to prevent the item from being enumerated for inclusion in the view.
///
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ishellitemfilter-includeitem HRESULT
// IncludeItem( IShellItem *psi );
[PreserveSig]
HRESULT IncludeItem([In] IShellItem psi);
///
/// Allows a client to specify which classes of objects in a Shell item should be enumerated for inclusion in the view.
///
///
/// Type: IShellItem*
/// A pointer to the Shell item for which the SHCONTF enum flags are to be retrieved.
///
///
/// Type: SHCONTF*
///
/// A pointer to the SHCONTF enum flags for the given Shell item that specifies which classes of objects to enumerate for
/// inclusion in the view.
///
///
///
/// Type: HRESULT
/// If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
///
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ishellitemfilter-getenumflagsforitem
// HRESULT GetEnumFlagsForItem( IShellItem *psi, SHCONTF *pgrfFlags );
[PreserveSig]
HRESULT GetEnumFlagsForItem([In] IShellItem psi, out SHCONTF pgrfFlags);
}
}
}