USB - HID class.dll中的PC内存泄漏

时间:2014-03-12 14:05:37

标签: c# wpf

我使用PIC18F26J50开发了系统。我使用Microchip的“通用HID - HID DLL库”编写了一个PC程序进行通信。我正在使用USBREADREPORT方法不断读取字节数据。该程序工作约2小时,然后性能下降。我正在寻找Windows任务管理器并观察到Handle计数不断增加并且随着时间的推移而增加。这表示内存泄漏。我认为我的程序中有一个错误,但是我把问题曝光了并且喜欢HID class.dll中的内存泄漏。
有没有解决这个问题的解决方案?

提前感谢您提供任何帮助

       while (true)
          {
            lock (this)
                {
                 unsafe
                  {

                        if ((PerformUsBdataRead()) && (InputPacketBuffer[0] != Nodata))
                        {
                            //handle stylus events same as mouse events
                        }
                    }
                }
            }
 //perform USB Read
  private static bool PerformUsBdataRead()
    {
        unsafe
        {
            IntPtr unmanagedPointer = Marshal.AllocHGlobal(65);

            InputPacketBuffer[0] = 0;
            byte* inputPacketBufferPointer = (byte*)unmanagedPointer.ToPointer();

                if (HIDClass.MCHPHIDClass.USBHIDReadReport(inputPacketBufferPointer))
                {
                    unmanagedPointer = (IntPtr)inputPacketBufferPointer;
                    Marshal.Copy(unmanagedPointer, InputPacketBuffer, 0, 65);
                    Marshal.FreeHGlobal(unmanagedPointer);
                    return true;
                }                  
                else                 
                {
                    Marshal.FreeHGlobal(unmanagedPointer);
                    return false;
                }                
        }
    }

1 个答案:

答案 0 :(得分:0)

最近微芯片发布了新的HID.dll。你从微芯片中得到它。内存泄漏问题已经解决了。