// 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;
// 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"));
// Send control transfer status = WdfUsbTargetDeviceSendControlTransferSynchronously( UsbDevice, WDF_NO_HANDLE, // Optional WDFREQUEST WDF_NO_HANDLE, // Optional send options &setupPacket, NULL, // Optional memory NULL, // Optional offset &bytesTransferred );
SetupDiDestroyDeviceInfoList(deviceInfoSet); return INVALID_HANDLE_VALUE; eagle eye mini camera driver windows 10
[EagleEyeMini.HW.AddReg] ; Enable custom properties HKR,,ExtensionDriver,,"EagleEyeMiniExt"
// Create default I/O queue WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE(&queueConfig, WdfIoQueueDispatchSequential); queueConfig.EvtIoDeviceControl = EagleEyeEvtIoDeviceControl;
WDF_USB_CONTROL_SETUP_PACKET setupPacket; WDF_MEMORY memory; NTSTATUS status; ULONG bytesTransferred; // Setup packet for vendor request setupPacket
// Set device type as exclusive (camera) WdfDeviceInitSetDeviceType(DeviceInit, FILE_DEVICE_VIDEO);
status = WdfUsbTargetDeviceCreateWithParameters(Device, &usbConfig, WDF_NO_OBJECT_ATTRIBUTES, &deviceContext->UsbDevice); if (!NT_SUCCESS(status)) KdPrint(("WdfUsbTargetDeviceCreateWithParameters failed: 0x%x\n", status)); return status;
SP_DEVICE_INTERFACE_DATA interfaceData; interfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); setupPacket.bRequest = Command
WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(DEVICE_CONTEXT, DeviceGetContext)
INCLUDES=$(INCLUDES);.
// Initialize device attributes with context WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&deviceAttributes, DEVICE_CONTEXT);
// Get buffers if (InputBufferLength > 0) status = WdfRequestRetrieveInputBuffer(Request, InputBufferLength, &inputBuffer, NULL); if (!NT_SUCCESS(status)) WdfRequestComplete(Request, status); return;
status = WdfIoQueueCreate(device, &queueConfig, WDF_NO_OBJECT_ATTRIBUTES, WDF_NO_HANDLE); if (!NT_SUCCESS(status)) KdPrint(("WdfIoQueueCreate failed: 0x%x\n", status)); return status;