522 Irp->IoStatus.Information = 0;
525 switch (
Stack->Parameters.DeviceIoControl.IoControlCode)
533 TRACE_(I8042PRT,
"IRP_MJ_INTERNAL_DEVICE_CONTROL / IOCTL_INTERNAL_KEYBOARD_CONNECT\n");
547 WARN_(I8042PRT,
"IoAllocateWorkItem() failed\n");
557 WARN_(I8042PRT,
"ExAllocatePoolWithTag() failed\n");
573 WARN_(I8042PRT,
"ExAllocatePoolWithTag() failed\n");
585 WARN_(I8042PRT,
"IoAllocateWorkItem() failed\n");
592 WARN_(I8042PRT,
"IoAllocateWorkItem() failed\n");
596 DeviceExtension->
Common.PortDeviceExtension->KeyboardExtension = DeviceExtension;
627 TRACE_(I8042PRT,
"IRP_MJ_INTERNAL_DEVICE_CONTROL / IOCTL_INTERNAL_KEYBOARD_DISCONNECT\n");
637 TRACE_(I8042PRT,
"IRP_MJ_INTERNAL_DEVICE_CONTROL / IOCTL_INTERNAL_I8042_HOOK_KEYBOARD\n");
647 TRACE_(I8042PRT,
"IRP_MJ_INTERNAL_DEVICE_CONTROL / IOCTL_KEYBOARD_QUERY_ATTRIBUTES\n");
654 KeyboardAttributes =
Irp->AssociatedIrp.SystemBuffer;
663 DPRINT1(
"IOCTL_KEYBOARD_QUERY_TYPEMATIC not implemented\n");
669 DPRINT1(
"IOCTL_KEYBOARD_SET_TYPEMATIC not implemented\n");
675 TRACE_(I8042PRT,
"IRP_MJ_INTERNAL_DEVICE_CONTROL / IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION\n");
687 Irp->AssociatedIrp.SystemBuffer,
697 TRACE_(I8042PRT,
"IRP_MJ_INTERNAL_DEVICE_CONTROL / IOCTL_KEYBOARD_QUERY_INDICATORS\n");
706 Irp->AssociatedIrp.SystemBuffer,
716 TRACE_(I8042PRT,
"IRP_MJ_INTERNAL_DEVICE_CONTROL / IOCTL_KEYBOARD_SET_INDICATORS\n");
726 Irp->AssociatedIrp.SystemBuffer,
736 ERR_(I8042PRT,
"IRP_MJ_INTERNAL_DEVICE_CONTROL / unknown ioctl code 0x%lx\n",
737 Stack->Parameters.DeviceIoControl.IoControlCode);
KEYBOARD_INDICATOR_PARAMETERS KeyboardIndicators
#define IOCTL_KEYBOARD_QUERY_TYPEMATIC
#define IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION
#define STATUS_INSUFFICIENT_RESOURCES
#define STATUS_INVALID_PARAMETER
DRIVER_DISPATCH ForwardIrpAndForget
IN PVOID IN PVOID IN USHORT IN USHORT Size
PIO_WORKITEM NTAPI IoAllocateWorkItem(IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI IoFreeWorkItem(IN PIO_WORKITEM IoWorkItem)
struct _I8042_KEYBOARD_EXTENSION * PI8042_KEYBOARD_EXTENSION
#define STATUS_BUFFER_TOO_SMALL
struct _KEYBOARD_INDICATOR_PARAMETERS KEYBOARD_INDICATOR_PARAMETERS
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
PKEYBOARD_INPUT_DATA KeyboardBuffer
_In_ PDEVICE_OBJECT DeviceObject
return STATUS_NOT_IMPLEMENTED
#define IOCTL_KEYBOARD_SET_TYPEMATIC
VOID NTAPI IoStartPacket(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PULONG Key, IN PDRIVER_CANCEL CancelFunction)
#define IoCompleteRequest
struct _KEYBOARD_INPUT_DATA KEYBOARD_INPUT_DATA
PIO_WORKITEM DebugWorkItem
#define IOCTL_KEYBOARD_QUERY_INDICATORS
#define IOCTL_INTERNAL_KEYBOARD_DISCONNECT
INTERNAL_I8042_HOOK_KEYBOARD KeyboardHook
FDO_DEVICE_EXTENSION Common
KEYBOARD_ATTRIBUTES KeyboardAttributes
#define IOCTL_INTERNAL_KEYBOARD_CONNECT
#define ExAllocatePoolWithTag(hernya, size, tag)
IO_WORKITEM_ROUTINE i8042SendHookWorkItem
struct _KEYBOARD_ATTRIBUTES KEYBOARD_ATTRIBUTES
CONNECT_DATA KeyboardData
IN PI8042_QUEUE_PACKET QueueKeyboardPacket
VOID NTAPI IoQueueWorkItem(IN PIO_WORKITEM IoWorkItem, IN PIO_WORKITEM_ROUTINE WorkerRoutine, IN WORK_QUEUE_TYPE QueueType, IN PVOID Context)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
#define KEYBOARD_CONNECTED
#define IOCTL_KEYBOARD_QUERY_ATTRIBUTES
#define IOCTL_INTERNAL_I8042_HOOK_KEYBOARD
#define RtlZeroMemory(Destination, Length)
char * cleanup(char *str)
#define RtlCopyMemory(Destination, Source, Length)
_Must_inspect_result_ _In_ PWDF_WORKITEM_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWORKITEM * WorkItem
#define IOCTL_KEYBOARD_SET_INDICATORS
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
struct _CONNECT_DATA * PCONNECT_DATA
#define ExFreePoolWithTag(_P, _T)
PIO_WORKITEM PowerWorkItem