/// <Summary>Retrieves information about a pipe that is associated with an interface.</Summary> public virtual bool QueryPipe(byte AltSettingNumber, byte PipeIndex, out WINUSB_PIPE_INFORMATION PipeInformation) { return driverAPI.QueryPipe(mHandleStruct, AltSettingNumber, PipeIndex, out PipeInformation); }
public ReadIsoTransferQueue(UsbK usb, ref WINUSB_PIPE_INFORMATION pipeInfo, int maxPendingTransfers, int numberOfPackets) { PipeInfo = pipeInfo; Usb = usb; OvlPool = new OvlK(usb.Handle, maxPendingTransfers, KOVL_POOL_FLAG.NONE); DataBufferSize = (pipeInfo.MaximumPacketSize*numberOfPackets); for (int pos = 0; pos < maxPendingTransfers; pos++) { IsoTransferItem isoTransferItem = new IsoTransferItem(); isoTransferItem.Buffer = new byte[pipeInfo.MaximumPacketSize*numberOfPackets]; isoTransferItem.BufferGC = GCHandle.Alloc(isoTransferItem.Buffer, GCHandleType.Pinned); isoTransferItem.Iso = new IsoK(numberOfPackets, 0); isoTransferItem.Iso.SetPackets(pipeInfo.MaximumPacketSize); OvlPool.Acquire(out isoTransferItem.Ovl); Master.AddLast(isoTransferItem); Completed.AddLast(isoTransferItem); } }