322 Irp->IoStatus.Information = 0;
343 DPRINT(
"[HIDUSB] ResetWorkerRoutine\n");
368 DPRINT1(
"[HIDUSB] ResetWorkerRoutine ResetPipe %x\n",
Status);
376 DPRINT1(
"[HIDUSB] ResetWorkerRoutine AbortPipe %x\n",
Status);
401 DPRINT1(
"[HIDUSB] ResetWorkerRoutine ResetPipe %x\n",
Status);
433 DPRINT(
"[HIDUSB] HidUsb_ReadReportCompletion %p Status %x Urb Status %x\n",
Irp,
Irp->IoStatus, Urb->
UrbHeader.Status);
435 if (
Irp->PendingReturned)
647 ASSERT(HidDeviceExtension);
682 DPRINT(
"[HIDUSB] failed to get report descriptor with %x\n",
Status);
755 DPRINT1(
"[HIDUSB] IOCTL_HID_GET_DEVICE_ATTRIBUTES invalid buffer\n");
762 DPRINT(
"[HIDUSB] IOCTL_HID_GET_DEVICE_ATTRIBUTES\n");
809 DPRINT(
"[HIDUSB] IOCTL_HID_GET_REPORT_DESCRIPTOR Status %x\n",
Status);
816 DPRINT(
"[HIDUSB] IOCTL_HID_READ_REPORT\n");
822 DPRINT1(
"[HIDUSB] IOCTL_HID_WRITE_REPORT not implemented \n");
830 DPRINT1(
"[HIDUSB] IOCTL_GET_PHYSICAL_DESCRIPTOR not implemented \n");
838 DPRINT1(
"[HIDUSB] IOCTL_HID_SEND_IDLE_NOTIFICATION_REQUEST not implemented \n");
846 DPRINT1(
"[HIDUSB] IOCTL_HID_GET_FEATURE not implemented \n");
854 DPRINT1(
"[HIDUSB] IOCTL_HID_SET_FEATURE not implemented \n");
862 DPRINT1(
"[HIDUSB] IOCTL_HID_SET_OUTPUT_REPORT not implemented \n");
870 DPRINT1(
"[HIDUSB] IOCTL_HID_GET_INPUT_REPORT not implemented \n");
878 DPRINT1(
"[HIDUSB] IOCTL_HID_GET_INDEXED_STRING not implemented \n");
886 DPRINT1(
"[HIDUSB] IOCTL_HID_GET_MS_GENRE_DESCRIPTOR not implemented \n");
1141 *UrbBufferLength = 0;
1163 *UrbBufferLength = 0;
1321 DPRINT1(
"[HIDUSB] Dispatching unconfigure URB failed with %lx\n",
Status);
1325 DPRINT(
"[HIDUSB] Unconfigure URB failed with %lx\n",
Status);
1496 DPRINT1(
"[HIDUSB] Need to disable boot protocol!\n");
1500 DPRINT1(
"[HIDUSB] Unexpected protocol value %x\n",
Protocol[0] & 0xFF);
1512 ULONG DescriptorLength;
1539 DPRINT1(
"[HIDUSB] failed to get device descriptor %x\n",
Status);
1560 DPRINT1(
"[HIDUSB] failed to get device descriptor %x\n",
Status);
1567 ASSERT(DescriptorLength);
1598 DPRINT1(
"[HIDUSB] failed to get device descriptor %x\n",
Status);
1617 DPRINT1(
"[HIDUSB] HID Interface descriptor not found\n");
1854 DPRINT1(
"HIDUSB: IRP_MN_START_DEVICE failed with %x\n",
Status);
1868 DPRINT(
"[HIDUSB] IRP_MN_START_DEVICE Status %x\n",
Status);
1961 DPRINT(
"********* HIDUSB *********\n");
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define STATUS_NOT_IMPLEMENTED
#define NT_SUCCESS(StatCode)
DRIVER_INITIALIZE DriverEntry
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeSetEvent(pEvt, foo, foo2)
#define KeGetCurrentIrql()
IN PFCB IN VBO OUT PLBO OUT PULONG OUT PBOOLEAN Allocated
_Must_inspect_result_ _In_ CONST FLT_REGISTRATION * Registration
NTSTATUS NTAPI HidRegisterMinidriver(IN PHID_MINIDRIVER_REGISTRATION MinidriverRegistration)
#define IOCTL_HID_SET_OUTPUT_REPORT
#define IOCTL_HID_GET_INDEXED_STRING
#define IOCTL_HID_GET_INPUT_REPORT
#define IOCTL_HID_GET_MS_GENRE_DESCRIPTOR
#define IOCTL_HID_SET_FEATURE
#define IOCTL_GET_PHYSICAL_DESCRIPTOR
#define IOCTL_HID_GET_FEATURE
#define IOCTL_HID_GET_DEVICE_DESCRIPTOR
#define HID_HID_DESCRIPTOR_TYPE
#define IOCTL_HID_READ_REPORT
#define IOCTL_HID_SEND_IDLE_NOTIFICATION_REQUEST
#define IOCTL_HID_WRITE_REPORT
#define IOCTL_HID_GET_DEVICE_ATTRIBUTES
#define HID_REPORT_DESCRIPTOR_TYPE
struct _HID_DEVICE_ATTRIBUTES HID_DEVICE_ATTRIBUTES
struct _HID_DESCRIPTOR * PHID_DESCRIPTOR
#define IOCTL_HID_GET_REPORT_DESCRIPTOR
NTSTATUS NTAPI HidPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS Hid_DispatchUrb(IN PDEVICE_OBJECT DeviceObject, IN PURB Urb)
NTSTATUS Hid_SelectConfiguration(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI HidUsb_ReadReportCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
NTSTATUS Hid_DisableConfiguration(IN PDEVICE_OBJECT DeviceObject)
VOID Hid_GetProtocol(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS HidUsb_ResetInterruptPipe(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI HidAddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI HidSystemControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI HidPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI HidUsb_GetReportDescriptor(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS Hid_PnpStart(IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI Hid_Unload(IN PDRIVER_OBJECT DriverObject)
VOID NTAPI HidUsb_ResetWorkerRoutine(IN PDEVICE_OBJECT DeviceObject, IN PVOID Ctx)
NTSTATUS HidUsb_AbortPipe(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS Hid_SetIdle(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI HidInternalDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS HidUsb_ResetPort(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS HidUsb_GetPortStatus(IN PDEVICE_OBJECT DeviceObject, IN PULONG PortStatus)
NTSTATUS Hid_GetDescriptor(IN PDEVICE_OBJECT DeviceObject, IN USHORT UrbFunction, IN USHORT UrbLength, IN OUT PVOID *UrbBuffer, IN OUT PULONG UrbBufferLength, IN UCHAR DescriptorType, IN UCHAR Index, IN USHORT LanguageIndex)
NTSTATUS NTAPI Hid_PnpCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
NTSTATUS NTAPI HidUsb_ReadReport(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PUSBD_PIPE_INFORMATION HidUsb_GetInputInterruptInterfaceHandle(PUSBD_INTERFACE_INFORMATION InterfaceInformation)
NTSTATUS NTAPI HidCreate(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define USB_GET_PROTOCOL_REQUEST
#define USB_SET_IDLE_REQUEST
_Outptr_ PUSB_DEVICE_HANDLE _In_ PUSB_DEVICE_HANDLE _In_ USHORT PortStatus
VOID NTAPI IoQueueWorkItem(IN PIO_WORKITEM IoWorkItem, IN PIO_WORKITEM_ROUTINE WorkerRoutine, IN WORK_QUEUE_TYPE QueueType, IN PVOID Context)
VOID NTAPI IoFreeWorkItem(IN PIO_WORKITEM IoWorkItem)
PIO_WORKITEM NTAPI IoAllocateWorkItem(IN PDEVICE_OBJECT DeviceObject)
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
#define ExFreePoolWithTag(_P, _T)
static OUT PIO_STATUS_BLOCK IoStatusBlock
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IoSkipCurrentIrpStackLocation(Irp)
#define IoCopyCurrentIrpStackLocationToNext(Irp)
#define IoCompleteRequest
PIRP NTAPI IoBuildDeviceIoControlRequest(IN ULONG IoControlCode, IN PDEVICE_OBJECT DeviceObject, IN PVOID InputBuffer, IN ULONG InputBufferLength, IN PVOID OutputBuffer, IN ULONG OutputBufferLength, IN BOOLEAN InternalDeviceIoControl, IN PKEVENT Event, IN PIO_STATUS_BLOCK IoStatusBlock)
VOID NTAPI PoStartNextPowerIrp(IN PIRP Irp)
#define STATUS_INVALID_BUFFER_SIZE
VOID NTAPI IoInvalidateDeviceState(IN PDEVICE_OBJECT DeviceObject)
#define STATUS_MORE_PROCESSING_REQUIRED
USBD_CONFIGURATION_HANDLE ConfigurationHandle
PHID_DESCRIPTOR HidDescriptor
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor
PUSBD_INTERFACE_INFORMATION InterfaceInfo
PUSB_DEVICE_DESCRIPTOR DeviceDescriptor
PDEVICE_OBJECT DeviceObject
struct _HID_DESCRIPTOR::_HID_DESCRIPTOR_DESC_LIST DescriptorList[1]
PDEVICE_OBJECT PhysicalDeviceObject
PVOID MiniDeviceExtension
PDEVICE_OBJECT NextDeviceObject
struct _IO_STACK_LOCATION::@1583::@1584 DeviceIoControl
struct _IO_STACK_LOCATION::@4015::@4042 DeviceCapabilities
union _IO_STACK_LOCATION::@1583 Parameters
struct _IO_STACK_LOCATION::@4015::@4054 Others
struct _URB_SELECT_CONFIGURATION UrbSelectConfiguration
struct _URB_CONTROL_DESCRIPTOR_REQUEST UrbControlDescriptorRequest
struct _URB_BULK_OR_INTERRUPT_TRANSFER UrbBulkOrInterruptTransfer
struct _URB_PIPE_REQUEST UrbPipeRequest
struct _URB_HEADER UrbHeader
PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_DEVICE_NOT_CONNECTED
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_DEVICE_DATA_ERROR
#define STATUS_INSUFFICIENT_RESOURCES
struct _USB_CONFIGURATION_DESCRIPTOR USB_CONFIGURATION_DESCRIPTOR
#define USB_DEVICE_CLASS_HUMAN_INTERFACE
#define USB_CONFIGURATION_DESCRIPTOR_TYPE
#define USB_DEVICE_DESCRIPTOR_TYPE
struct _USB_DEVICE_DESCRIPTOR USB_DEVICE_DESCRIPTOR
#define USB_ENDPOINT_DIRECTION_MASK
#define USB_INTERFACE_DESCRIPTOR_TYPE
#define USB_PORT_STATUS_ENABLE
#define URB_FUNCTION_CLASS_INTERFACE
#define USBD_STATUS_DEVICE_GONE
#define URB_FUNCTION_ABORT_PIPE
#define USBD_STATUS_SUCCESS
#define USBD_TRANSFER_DIRECTION_IN
#define USBD_SHORT_TRANSFER_OK
#define URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE
#define URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT
#define USBD_SUCCESS(Status)
#define URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL
#define URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE
PURB NTAPI USBD_CreateConfigurationRequestEx(PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, PUSBD_INTERFACE_LIST_ENTRY InterfaceList)
PUSB_INTERFACE_DESCRIPTOR NTAPI USBD_ParseConfigurationDescriptorEx(PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, PVOID StartPosition, LONG InterfaceNumber, LONG AlternateSetting, LONG InterfaceClass, LONG InterfaceSubClass, LONG InterfaceProtocol)
#define UsbBuildSelectConfigurationRequest(urb, length, configurationDescriptor)
#define UsbBuildInterruptOrBulkTransferRequest(urb, length, pipeHandle, transferBuffer, transferBufferMDL, transferBufferLength, transferFlags, link)
#define UsbBuildGetDescriptorRequest(urb, length, descriptorType, descriptorIndex, languageId, transferBuffer, transferBufferMDL, transferBufferLength, link)
#define UsbBuildVendorRequest(urb, cmd, length, transferFlags, reservedbits, request, value, index, transferBuffer, transferBufferMDL, transferBufferLength, link)
_In_ ULONG _In_ PVOID _In_ LONG DescriptorType
_In_ PUSBD_INTERFACE_LIST_ENTRY InterfaceList
#define IOCTL_INTERNAL_USB_SUBMIT_URB
#define IOCTL_INTERNAL_USB_RESET_PORT
#define IOCTL_INTERNAL_USB_GET_PORT_STATUS
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_In_ WDFUSBINTERFACE _In_ UCHAR _Out_ PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor
_In_ WDFUSBPIPE _Out_ PWDF_USB_PIPE_INFORMATION PipeInformation
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
#define STATUS_CONTINUE_COMPLETION
#define IRP_MN_QUERY_PNP_DEVICE_STATE
#define PNP_DEVICE_NOT_DISABLEABLE
#define IRP_MN_START_DEVICE
#define IRP_MN_REMOVE_DEVICE
#define IRP_MN_QUERY_STOP_DEVICE
#define IRP_MJ_SYSTEM_CONTROL
#define IRP_MN_QUERY_CAPABILITIES
#define IRP_MJ_INTERNAL_DEVICE_CONTROL
#define IRP_MN_STOP_DEVICE
#define IRP_MN_QUERY_REMOVE_DEVICE