static int EnumObjectsCallback(ref DIDEVICEOBJECTINSTANCE pddoi, IntPtr pvRef)
 {
     GCHandle hResult = GCHandle.FromIntPtr(pvRef);
     List<DIDEVICEOBJECTINSTANCE> result = (List<DIDEVICEOBJECTINSTANCE>)(hResult.Target);
     result.Add(pddoi.Clone());
     return 1;
 }