internal void AttachInterface(USBInterface usbInterface) { _interface = usbInterface; // Initialize policy now that interface is set (policy requires interface) _policy = new USBPipePolicy(_device, _interface.InterfaceIndex, _pipeInfo.PipeId); }
private void InitializeInterfaces() { int numInterfaces = _wuDevice.InterfaceCount; List<USBPipe> allPipes = new List<USBPipe>(); USBInterface[] interfaces = new USBInterface[numInterfaces]; // UsbEndpoint for (int i = 0; i < numInterfaces; i++) { API.USB_INTERFACE_DESCRIPTOR descriptor; API.WINUSB_PIPE_INFORMATION[] pipesInfo; _wuDevice.GetInterfaceInfo(i, out descriptor, out pipesInfo); USBPipe[] interfacePipes = new USBPipe[pipesInfo.Length]; for(int k=0;k<pipesInfo.Length;k++) { USBPipe pipe = new USBPipe(this, pipesInfo[k]); interfacePipes[k] = pipe; allPipes.Add(pipe); } // TODO: //if (descriptor.iInterface != 0) // _wuDevice.GetStringDescriptor(descriptor.iInterface); USBPipeCollection pipeCollection = new USBPipeCollection(interfacePipes); interfaces[i] = new USBInterface(this, i, descriptor, pipeCollection); } Pipes = new USBPipeCollection(allPipes.ToArray()); Interfaces = new USBInterfaceCollection(interfaces); }