Решил написать небольшую сервисную программку на BC6 для CY7C68013 с использованием CyAPI.lib, использую асинхронный обмен, очень часто и не предсказуемо выскакивают invalid pointer operation. Это глюк в либе или я что то не так делаю, кто юзал либу есть ли там глюки ? На текущий момент программа ничего никуда не копирует просто отображает сколько прнято данных.

Вот тело нитки чтения.
Код
void __fastcall TUSBRead::Execute()
{
  int i,curr_buff;
  long ReceiveLength;
  for(i=0;i<COUNT_READ_BUFF;i++)
    {
       memset(&Buffers[i].inOverlap,0,sizeof(OVERLAPPED));
       Buffers[i].inOverlap.hEvent = CreateEvent(NULL, false, false, "USBIN");
       Buffers[i].Context = EndPoint->BeginDataXfer(Buffers[i].Buff,READ_BUFF_SIZE,&Buffers[i].inOverlap);
    };
  curr_buff = 0;
  while(!Terminated)
    {
      if (!EndPoint->WaitForXfer(&Buffers[curr_buff].inOverlap,1000))
        {
           //Непонятно что тут делать ???
        }
      EndPoint->FinishDataXfer(Buffers[curr_buff].Buff,ReceiveLength,&Buffers[curr_buff].inOverlap,Buffers[curr_buff].Context);
      Buffers[curr_buff].Context = EndPoint->BeginDataXfer(Buffers[curr_buff].Buff,READ_BUFF_SIZE,&Buffers[curr_buff].inOverlap);
      if(ReceiveLength)
        {
          RxCount += ReceiveLength;
        }
      if (++curr_buff == COUNT_READ_BUFF) curr_buff = 0;
    }
  EndPoint->Abort();
  for(i=0;i<COUNT_READ_BUFF;i++)
    {
      EndPoint->FinishDataXfer(Buffers[i].Buff,ReceiveLength,&Buffers[i].inOverlap,Buffers[i].Context);
      CloseHandle(Buffers[i].inOverlap.hEvent);
    };
}







Может кто примерчиком поделится, так как манул на либу желает лучшего....

Устройство работает 100% так как есть рабочая софтина писанная нашими программерами.