private static void free(UsbTransferQueue transferParam)
{
for (int i = 0; i < transferParam.MaxOutstandingIO; i++)
{
if (!ReferenceEquals(transferParam.mTransferHandles[i], null))
{
if (transferParam.mTransferHandles[i].InUse)
{
if (!transferParam.mTransferHandles[i].Context.IsCompleted)
{
transferParam.EndpointBase.Abort();
Thread.Sleep(1);
}
transferParam.mTransferHandles[i].InUse = false;
transferParam.mTransferHandles[i].Context.Dispose();
}
transferParam.mTransferHandles[i] = null;
}
}
transferParam.mOutstandingTransferCount = 0;
transferParam.mTransferHandleNextIndex = 0;
transferParam.mTransferHandleWaitIndex = 0;
}
}