using System;
using System.Runtime.InteropServices;
namespace VisualStudioMock
{
///
/// An enumerator of installed objects.
///
[ComImport]
[Guid("6380BCFF-41D3-4B2E-8B2E-BF8A6810C848")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[TypeIdentifier]
[ComVisible(true)]
public interface IEnumSetupInstances
{
///
/// Retrieves the next set of product instances in the enumeration sequence.
///
/// The number of product instances to retrieve.
/// A pointer to an array of .
/// A pointer to the number of product instances retrieved. If is 1 this parameter may be NULL.
void Next([In] [MarshalAs(UnmanagedType.U4)] int celt, [Out] [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.Interface)] ISetupInstance[] rgelt, [MarshalAs(UnmanagedType.U4)] out int pceltFetched);
///
/// Skips the next set of product instances in the enumeration sequence.
///
/// The number of product instances to skip.
void Skip([In] [MarshalAs(UnmanagedType.U4)] int celt);
///
/// Resets the enumeration sequence to the beginning.
///
void Reset();
///
/// Creates a new enumeration object in the same state as the current enumeration object: the new object points to the same place in the enumeration sequence.
///
/// A pointer to a pointer to a new interface. If the method fails, this parameter is undefined.
[return: MarshalAs(UnmanagedType.Interface)]
IEnumSetupInstances Clone();
}
}