Eagle Eye Mini Camera Driver Windows 10 -
[Standard.NTamd64] %EagleEyeMini.DeviceDesc%=EagleEyeMini_Device, USB\VID_XXXX&PID_YYYY
// Device context structure typedef struct _DEVICE_CONTEXT WDFUSBDEVICE UsbDevice; WDFUSBINTERFACE UsbInterface; WDFUSBPIPE BulkReadPipe; WDFUSBPIPE BulkWritePipe; WDFUSBPIPE InterruptPipe; ULONG VendorID; ULONG ProductID; DEVICE_CONTEXT, *PDEVICE_CONTEXT; eagle eye mini camera driver windows 10
[EagleEyeMini.AddReg] HKR,,FriendlyName,,%EagleEyeMini.DeviceDesc% [Standard
// Get pipes for (i = 0; i < WdfUsbInterfaceGetNumPipes(deviceContext->UsbInterface); i++) WDF_USB_PIPE_INFO pipeInfo; WDF_USB_PIPE_INFO_INIT(&pipeInfo); status = WdfUsbInterfaceGetConfiguredPipe(deviceContext->UsbInterface, i, &pipeInfo); if (NT_SUCCESS(status)) // Check pipe type if (WdfUsbPipeTypeBulk == pipeInfo.PipeType) USBD_PIPE_INFORMATION pipeInfoUsb; WdfUsbTargetPipeGetInformation(pipeInfo.Pipe, &pipeInfoUsb); if (pipeInfoUsb.EndpointAddress & USB_ENDPOINT_DIRECTION_IN) deviceContext->BulkReadPipe = pipeInfo.Pipe; KdPrint(("Bulk IN pipe found\n")); else deviceContext->BulkWritePipe = pipeInfo.Pipe; KdPrint(("Bulk OUT pipe found\n")); else if (WdfUsbPipeTypeInterrupt == pipeInfo.PipeType) deviceContext->InterruptPipe = pipeInfo.Pipe; KdPrint(("Interrupt pipe found\n")); i++) WDF_USB_PIPE_INFO pipeInfo
WDF_DRIVER_CONFIG_INIT(&config, EagleEyeEvtDeviceAdd);
// Get buffers if (InputBufferLength > 0) status = WdfRequestRetrieveInputBuffer(Request, InputBufferLength, &inputBuffer, NULL); if (!NT_SUCCESS(status)) WdfRequestComplete(Request, status); return;
// Setup packet for vendor request setupPacket.bmRequest = BMREQUEST_VENDOR_DEVICE_OUT; setupPacket.bRequest = Command; setupPacket.wValue = (USHORT)(Value & 0xFFFF); setupPacket.wIndex = (USHORT)((Value >> 16) & 0xFFFF); setupPacket.wLength = 0;