MCPcopy Create free account
hub / github.com/BestBurning/kmclass / DriverEntry

Function DriverEntry

kmclass.cpp:39–87  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37extern "C"
38#endif
39NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
40{
41 UNICODE_STRING DeviceName, Win32Device;
42 PDEVICE_OBJECT DeviceObject = NULL;
43 NTSTATUS status;
44
45
46 RtlInitUnicodeString(&DeviceName, KEYMOUSE_DEVICE_NAME);
47 RtlInitUnicodeString(&Win32Device, KEYMOUSE_DOS_DEVICE_NAME);
48
49 for (ULONG i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; i++)
50 DriverObject->MajorFunction[i] = kmclassDefaultHandler;
51
52 DriverObject->MajorFunction[IRP_MJ_CREATE] = kmclassCreateClose;
53 DriverObject->MajorFunction[IRP_MJ_CLOSE] = kmclassCreateClose;
54 DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = kmclassDispatchDeviceControl;
55
56 DriverObject->DriverUnload = kmclassUnload;
57 status = IoCreateDevice(DriverObject, sizeof(DEVICE_EXTENSION), &DeviceName, FILE_DEVICE_KEYMOUSE, 0, TRUE, &DeviceObject);
58
59 if (!NT_SUCCESS(status))
60 return status;
61 if (!DeviceObject)
62 return STATUS_UNEXPECTED_IO_ERROR;
63
64 DeviceObject->Flags |= DO_DIRECT_IO;
65 DeviceObject->AlignmentRequirement = FILE_WORD_ALIGNMENT;
66 status = IoCreateSymbolicLink(&Win32Device, &DeviceName);
67
68 // status = GetKmclassInfo(DeviceObject, KEYBOARD_DEVICE);
69 status = SearchKdbServiceCallBack(DriverObject);
70 if (!NT_SUCCESS(status))
71 {
72 KdPrint(("KEYBOARD_DEVICE ERROR, error = 0x%08lx\n", status));
73 return status;
74 }
75
76 // status = GetKmclassInfo(DeviceObject, MOUSE_DEVICE);
77 status = SearchMouServiceCallBack(DriverObject);
78 if (!NT_SUCCESS(status))
79 {
80 KdPrint(("MOUSE_DEVICE ERROR, error = 0x%08lx\n", status));
81 return status;
82 }
83
84 DeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
85
86 return STATUS_SUCCESS;
87}
88
89void kmclassUnload(IN PDRIVER_OBJECT DriverObject)
90{

Callers

nothing calls this directly

Calls 2

SearchKdbServiceCallBackFunction · 0.85
SearchMouServiceCallBackFunction · 0.85

Tested by

no test coverage detected