自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

转载 支持 PS/2 与 USB 的键盘过滤驱动(可卸载)

 支持 PS/2 与 USB 的键盘过滤驱动(可卸载) Author:  sinisterEmail:   sinister@whitecell.orgHomepage:http://www.whitecell.org Date:    2007-02-26/************************************************************

2009-06-15 19:55:00 690

转载 IoCompleteRequest深入学习之二

 接上篇还原为c的代码如下:VOID FASTCALL IopfCompleteRequest(                                    IN PIRP Irp,                                    IN CCHAR PriorityBoost                                ){    UCHAR uC

2009-06-15 16:08:00 1699

转载 IoCompleteRequest深入学习之一

 lkd> u IoCompleteRequestnt!IoCompleteRequest:804f04e2 8bff            mov     edi,edi804f04e4 55              push    ebp804f04e5 8bec            mov     ebp,esp804f04e7 8a550c          mov     dl,by

2009-06-15 16:07:00 1449

转载 Windows NT 驱动程序开发人员提示 -- 应注意避免的事项

下面是开发人员在使用 Windows NT 设备驱动程序时应当避免的事项列表: 一定不要在没有标注 I/O 请求数据包 (IRP) 挂起 (IoMarkIrpPending) 的情况下通过调度例程返回 STATUS_PENDING。 一定不要通过中断服务例程 (ISR) 调用 KeSynchronizeExecution。 它会使系统死锁。 一定不要将 DeviceObject->

2009-06-15 11:00:00 391

转载 _EPROCESS数据结构

0:000> dt _EPROCESS   +0x000 Pcb              : _KPROCESS   +0x06c ProcessLock      : _EX_PUSH_LOCK   +0x070 CreateTime       : _LARGE_INTEGER   +0x078 ExitTime         : _LARGE_INTEGER   +0x080 Rundo

2009-06-11 18:11:00 504

转载 线程警惕和APC

在内部,Windows NT内核有时使用线程警惕(thread alert)来唤醒线程。这种方法使用APC(异步过程调用)来唤醒线程去执行某些特殊例程。用于生成警惕和APC的支持例程没有输出给WDM驱动程序开 发者使用。但是,由于DDK文档和头文件中有大量地方引用了这个概念,所以我想在这里谈一下。当某人通过调用KeWaitXxx例程阻塞一个线程时,需要指定一个布尔参数,该参

2009-06-11 18:01:00 1147

转载 IRP的创建

1. 有四种方法来创建IRPØ IoBuildAsynchronousFsdRequest创建异步IRP,不需要等待其完成;Ø IoBuildSynchronousFsdRequest创建同步IRP, 需要等待其完成,这种方法和上面的只能创建某些特定类型IRPØ IoBuildDeviceIoCtontrolRequest创建一个类型为 IRP_

2009-06-11 17:59:00 632

转载 IRP的完成例程

1.最高层驱动总是运行在发起该请求的程序所处的线程中。DriverEntry总是处在系统线程中,系统线程的空间不涉及到线性地址 0 - 2G。APC 是处在任意上下文中,它所在的线程取决于系统运行APC之前最后被挂起的那个线程。2. 所有不返回 STATUS_MORE_PROCESSING_REQUIRED的完成回调例程,需要使用下面的代码:NTSTATUS MyCompletionRou

2009-06-11 17:33:00 603

转载 Windows NT如何处理I/O完成

以前我们描述了在内核中如何“创建你的IRPs”(roll your own IRPs)来执行I/O操作。这是一个很强大的技术,对于那些编写设备驱动程序,文件系统驱动程序和过滤器驱动程序的人是非常有用的。这次我们讨论I/O管理器如何完成IRPs。虽然看起来是个简单的话题,但是它包含了许多细微的主题。如果你没有完全理解I/O完成,你的驱动程序会面临危险。例如,回顾在编写驱动程序代码时我们经常遇

2009-06-11 16:29:00 1056

转载 使用IoMarkPending的原因及原理

为了使系统吞吐量最大化,I/O管理器希望驱动程序推迟其耗时IRP的完成。驱动程序通过在某个派遣例程中调用IoMarkIrpPending函数并返回STATUS_PENDING来表示完成操作被推迟。(注意:以下讨论未加说明均指在操作被推迟情况下)I/O管理器的原始调用者通常希望在继续执行之前等待操作完成,所以I/O管理器在处理推迟完成时有下面类似的逻辑(不代表真正的Microsoft源代码):

2009-06-11 16:28:00 706

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除