-
-
[原创]键盘驱动 卸载问题求解。。。。。。。
-
发表于:
2011-9-21 13:58
5646
-
寒江独钓里的键盘驱动 卸载 是通过计数来判断,实现卸载,卸载之前必须等待计数为0,通过按按键处理完多余IRP才能卸载。。。。
PDEVICE_OBJECT DeviceObject;
PDEVICE_OBJECT OldDeviceObject;
PC2P_DEV_EXT devExt;
LARGE_INTEGER lDelay;
PRKTHREAD CurrentThread;
//delay some time
lDelay = RtlConvertLongToLargeInteger(100 * DELAY_ONE_MILLISECOND);
CurrentThread = KeGetCurrentThread();
// 把当前线程设置为低实时模式,以便让它的运行尽量少影响其他程序。
KeSetPriorityThread(CurrentThread, LOW_REALTIME_PRIORITY);
UNREFERENCED_PARAMETER(DriverObject);
KdPrint(("DriverEntry unLoading...\n"));
// 遍历所有设备并一律解除绑定
DeviceObject = DriverObject->DeviceObject;
while (DeviceObject)
//KeWaitForSingleObject(&g_waitEvent,Executive,KernelMode,FALSE,NULL);
{
// 解除绑定并删除所有的设备
c2pDetach(DeviceObject);
DeviceObject = DeviceObject->NextDevice;
}
ASSERT(NULL == DriverObject->DeviceObject);
while (gC2pKeyCount)
{
KeDelayExecutionThread(KernelMode, FALSE, &lDelay);
}
KdPrint(("DriverEntry unLoad OK!\n"));
有其他方式实现卸载么?
[课程]FART 脱壳王!加量不加价!FART作者讲授!