using System; using System.Collections.Generic; using System.Runtime.InteropServices; namespace SharpDX.DirectInput { /// /// Enumerator callback for DirectInput EnumEffectsInFile. /// internal class EnumEffectsInFileCallback { private readonly IntPtr _nativePointer; private readonly DirectInputEnumEffectsInFileDelegate _callback; /// /// Initializes a new instance of the class. /// public EnumEffectsInFileCallback() { unsafe { _callback = new DirectInputEnumEffectsInFileDelegate(DirectInputEnumEffectsInFileImpl); _nativePointer = Marshal.GetFunctionPointerForDelegate(_callback); EffectsInFile = new List(); } } /// /// Natives the pointer. /// /// public IntPtr NativePointer { get { return _nativePointer; } } /// /// Gets or sets the effects in file. /// /// The effects in file. public List EffectsInFile { get; private set; } // BOOL DIEnumEffectsInFileCallback(LPCDIEffectInfo pdei,LPVOID pvRef) [UnmanagedFunctionPointer(CallingConvention.StdCall)] private unsafe delegate int DirectInputEnumEffectsInFileDelegate(void* deviceInstance, IntPtr data); private unsafe int DirectInputEnumEffectsInFileImpl(void* deviceInstance, IntPtr data) { var newEffect = new EffectFile(); newEffect.__MarshalFrom(ref *((EffectFile.__Native*)deviceInstance)); EffectsInFile.Add(newEffect); // Return true to continue iterating return 1; } } }