#include "remods.h"
#include "precomp.h"
#include <ntddkbd.h>
#include <ntdd8042.h>
#include <rosrtl/string.h>
Go to the source code of this file.
◆ PatchKeyboardDriver()
Definition at line 193 of file patch.c.
197 UNICODE_STRING DevName = ROS_STRING_INITIALIZER(
L"\\Device\\Keyboard");
207 DPRINT((0,
"PatchKeyboardDriver: IoGetDeviceObjectPointer status: %x\n",
status));
219 DPRINT((0,
"PatchKeyboardDriver: PiceSendIoctl status: %x\n",
status));
NTSTATUS PiceSendIoctl(PDEVICE_OBJECT Target, ULONG Ioctl, PVOID InputBuffer, ULONG InputBufferLength)
NTSTATUS NTAPI IoGetDeviceObjectPointer(IN PUNICODE_STRING ObjectName, IN ACCESS_MASK DesiredAccess, OUT PFILE_OBJECT *FileObject, OUT PDEVICE_OBJECT *DeviceObject)
BOOLEAN PiceKbdIsr(PVOID IsrContext, PKEYBOARD_INPUT_DATA pCurrentInput, POUTPUT_PACKET pCurrentOutput, UCHAR StatusByte, PUCHAR pByte, PBOOLEAN pContinueProcessing, PKEYBOARD_SCAN_STATE pScanState)
OUT PI8042_KEYBOARD_ISR IsrRoutine
#define NT_SUCCESS(StatCode)
#define ObDereferenceObject
#define ExAllocatePool(type, size)
#define IOCTL_INTERNAL_I8042_HOOK_KEYBOARD
#define RtlZeroMemory(Destination, Length)
BOOLEAN(NTAPI * PI8042_KEYBOARD_ISR)(PVOID IsrContext, PKEYBOARD_INPUT_DATA CurrentInput, POUTPUT_PACKET CurrentOutput, UCHAR StatusByte, PUCHAR Byte, PBOOLEAN ContinueProcessing, PKEYBOARD_SCAN_STATE ScanState)
static SERVICE_STATUS status
Referenced by InitPICE().
◆ PiceKbdIsr()
Definition at line 70 of file patch.c.
82 BOOLEAN isDown=!(*pByte & 0x80);
83 UCHAR ucKey = *pByte & 0x7f;
88 DPRINT((0,
"PiceKbdIsr(pByte: %x, val: %x,%u)\n",pByte,*pByte,isDown));
108 pushl $returnpoint\n\t \ 110 jmp NewInt31Handler\n\t \ 112 *pByte = 0x1d | 0x80 | 0x7f;
115 else if((ucKey == 66|| ucKey == 68) &&
bStepping)
128 else if((ucKey == 66|| ucKey == 68) &&
bStepping)
133 *pContinueProcessing = bForward;
134 DPRINT((5,
"*pContinueProcessing: %d\n", *pContinueProcessing));
volatile BOOLEAN bEnterNow
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")
volatile BOOLEAN bControl
UCHAR AsciiToScan(UCHAR s)
Referenced by PatchKeyboardDriver().
◆ PiceSendIoctl()
Definition at line 146 of file patch.c.
168 DPRINT((0,
"PiceSendIoctl: STATUS_INSUFFICIENT_RESOURCES\n"));
static PIO_STATUS_BLOCK iosb
#define STATUS_INSUFFICIENT_RESOURCES
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
_Must_inspect_result_ __in WDFIOTARGET __in_opt WDFREQUEST __in ULONG Ioctl
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
#define NT_SUCCESS(StatCode)
#define KeInitializeEvent(pEvt, foo, foo2)
NTSTATUS NTAPI IoCallDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
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)
static SERVICE_STATUS status
Referenced by PatchKeyboardDriver().
◆ RestoreKeyboardDriver()
◆ old_handle_scancode
◆ pPatchAddress
◆ tempPatch
◆ ucBreakKey
◆ ulKeyPatchFlags
◆ ulOldOffset