// AForge Direct Show Library
// AForge.NET framework
//
// Copyright © Andrew Kirillov, 2007
// andrew.kirillov@gmail.com
//
namespace AForge.Video.DirectShow.Internals
{
using System;
using System.Runtime.InteropServices;
///
/// Enumerates pins on a filter.
///
///
[ComImport,
Guid( "56A86892-0AD4-11CE-B03A-0020AF0BA770" ),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
internal interface IEnumPins
{
///
/// Retrieves a specified number of pins.
///
///
/// Number of pins to retrieve.
/// Array of size cPins that is filled with IPin pointers.
/// Receives the number of pins retrieved.
///
/// Return's HRESULT error code.
///
[PreserveSig]
int Next( [In] int cPins,
[Out, MarshalAs( UnmanagedType.LPArray, SizeParamIndex = 0 )] IPin[] pins,
[Out] out int pinsFetched );
///
/// Skips a specified number of pins in the enumeration sequence.
///
///
/// Number of pins to skip.
///
/// Return's HRESULT error code.
///
[PreserveSig]
int Skip( [In] int cPins );
///
/// Resets the enumeration sequence to the beginning.
///
///
/// Return's HRESULT error code.
///
[PreserveSig]
int Reset( );
///
/// Makes a copy of the enumerator with the same enumeration state.
///
///
/// Duplicate of the enumerator.
///
/// Return's HRESULT error code.
///
[PreserveSig]
int Clone( [Out] out IEnumPins enumPins );
}
}