internal USBPipe(USBDevice device, API.WINUSB_PIPE_INFORMATION pipeInfo) { _pipeInfo = pipeInfo; _device = device; // Policy is not set until interface is attached _policy = null; }
private static extern bool WinUsb_QueryPipe(IntPtr InterfaceHandle, Byte AlternateInterfaceNumber, Byte PipeIndex, out WINUSB_PIPE_INFORMATION PipeInformation);
private static extern bool WinUsb_QueryPipe(IntPtr InterfaceHandle, Byte AlternateInterfaceNumber, Byte PipeIndex, out WINUSB_PIPE_INFORMATION PipeInformation);
public void GetInterfaceInfo(int interfaceIndex, out USB_INTERFACE_DESCRIPTOR descriptor, out WINUSB_PIPE_INFORMATION[] pipes) { var pipeList = new List<WINUSB_PIPE_INFORMATION>(); bool success = WinUsb_QueryInterfaceSettings(InterfaceHandle(interfaceIndex), 0, out descriptor); if (!success) throw APIException.Win32("Failed to get WinUSB device interface descriptor."); IntPtr interfaceHandle = InterfaceHandle(interfaceIndex); for (byte pipeIdx = 0; pipeIdx < descriptor.bNumEndpoints; pipeIdx++) { WINUSB_PIPE_INFORMATION pipeInfo; success = WinUsb_QueryPipe(interfaceHandle, 0, pipeIdx, out pipeInfo); pipeList.Add(pipeInfo); if (!success) throw APIException.Win32("Failed to get WinUSB device pipe information."); } pipes = pipeList.ToArray(); }
internal USBPipe(USBDevice device, API.WINUSB_PIPE_INFORMATION pipeInfo) { _pipeInfo = pipeInfo; _device = device; // Policy is not set until interface is attached _policy = null; }