WINDOWS中CTRL+ALT+DEL控制的实现(DDK版)

原创 2002年02月01日 08:57:00

可能大家知道一些通过WINDOWS中DLL来控制的一些方法.但我要写的是使用DDK技术来实现控制,进而涉及到一些DDK编程的一些其他技术.我使用的是MICROSOFT SOFTWARE MICROSOFT WINDOWS 2000 DRIVER DEVELOPMENT KIT工具.在使用上比以前版本的DDK好用很多,但是还有一定难度.这可能需要一些驱动编程方面的知识.

例如以下一些概念:设备,虚拟驱动程序,WINDOWS中0和3环区别等等.

所谓的驱动程序无非是一些按WINDOWS中的标准运转的程序.这就需要我们知道这些标准.

当然MICRISOFT给我们提供了一些可以让我们通过学习可以使用的软件,这些软件就是WINDOWS标准的体现.学会使用这些软件也就知道WINDOWS一些内层标准了.常用的有VTOOLS,DDK,WINDRIVERS.等.其中VTOOLS和WINDRIVERS是更VISUAL和EASY化的东东.当然越VISUAL和EASY的东西功能上可能就受限制.就是说更底层的东西是不容易看见和做到的.DDK是更加底层化的开发软件.可以说基本上满足的我们的要求.但学会使用他不容易.下面就”WINDOWS中CTRL+ALT+DEL控制的实现”为例说明一下这个东东.

实际上我们要实现”WINDOWS中CTRL+ALT+DEL控制的实现”,可以使用DDK来编写键盘底层的驱动程序(过滤驱动程序).需要的文件是由DDK中SRC提供的kbfiltr.c和kbfiltr.H主文件.其他的相应文件(和编译相关的)当然也需要.

kbfiltr.H中提供一下涵数:

1.
NTSTATUS
KbFilter_AddDevice(
    IN PDRIVER_OBJECT DriverObject,
    IN PDEVICE_OBJECT BusDeviceObject
    );
这是增加设备涵数,主要是用来增加你自己需要的设备(可能需要和其他设备通讯)
NTSTATUS
KbFilter_CreateClose (
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
    );
这是在设备创建和关闭时的涵数.
NTSTATUS
KbFilter_DispatchPassThrough(
        IN PDEVICE_OBJECT DeviceObject,
        IN PIRP Irp
        );
   传输向下IRP的涵数
NTSTATUS
KbFilter_InternIoCtl (
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
    );
内部IRP传输时IO控制
NTSTATUS
KbFilter_IoCtl (
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
    );
和用户层IO控制
NTSTATUS
KbFilter_PnP (
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
    );

NTSTATUS
KbFilter_Power (
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
    );

NTSTATUS
KbFilter_InitializationRoutine(
    IN PDEVICE_OBJECT                 DeviceObject,    // InitializationContext
    IN PVOID                           SynchFuncContext,
    IN PI8042_SYNCH_READ_PORT          ReadPort,
    IN PI8042_SYNCH_WRITE_PORT         WritePort,
    OUT PBOOLEAN                       TurnTranslationOn
    );

BOOLEAN
KbFilter_IsrHook(
    PDEVICE_OBJECT         DeviceObject,               // IsrContext
    PKEYBOARD_INPUT_DATA   CurrentInput, 
    POUTPUT_PACKET         CurrentOutput,
    UCHAR                  StatusByte,
    PUCHAR                 DataByte,
    PBOOLEAN               ContinueProcessing,
    PKEYBOARD_SCAN_STATE   ScanState
    );

VOID
KbFilter_ServiceCallback(
    IN PDEVICE_OBJECT DeviceObject,
    IN PKEYBOARD_INPUT_DATA InputDataStart,
    IN PKEYBOARD_INPUT_DATA InputDataEnd,
    IN OUT PULONG InputDataConsumed
    );

VOID
KbFilter_Unload (
    IN PDRIVER_OBJECT DriverObject
    );

这其中有用的就是KbFilter_ServiceCallback()涵数(针对本例子).这个涵数提供给我们在键盘传输数据时可以截获和控制的服务.参数很简单:

IN PDEVICE_OBJECT DeviceObject设备对象.

IN PKEYBOARD_INPUT_DATA InputDataStart,数据开始包.

IN PKEYBOARD_INPUT_DATA InputDataEnd,数据终止包

在InputDataStart和InputDataEnd之间就是当前键盘输入的数据.想怎么改就怎么改拉.

设计一个算法让CTRL+ALT+DEL失效.COMPLETE!!

WinXP DDK下载

我找了好久才找到的xp ddk,跟大家分享一下!在这个网页http://post.10026.com/hardware/drive/2005527902_3511110.shtml上有两个地址:htt...
  • soundzyt
  • soundzyt
  • 2007年09月14日 10:55
  • 5820

windows驱动开发技术详解 VC6与DDK搭配使用的设置

在《windows驱动开发技术详解》中作者提供了两种调式内核程序的方法,有两种编译驱动的办法,一种是用DDK环境来编译,需要在源代码所在目录下创建两个文件makefile和Sources,另一种为vc...
  • huangxiangbo316
  • huangxiangbo316
  • 2015年08月07日 15:10
  • 1568

win7上安装DDK,SDK。。

今天在学习无线Access Point检测的时候,用到了微软的SDK和DDK,不得不安装这两个庞大的东西。 DDK装起来很方便,没有费什么波折,微软的东西还真是大,动辄一两个G的大小,安装完SDK,...
  • hfw_1987
  • hfw_1987
  • 2010年03月25日 18:42
  • 9616

windows 7 SDK和DDK下载地址

查个小资料,得到地址,顺便记录一下。Windows Driver Kit Version 7.1.0 http://www.microsoft.com/downloads/details.aspx?...
  • feiwei
  • feiwei
  • 2010年08月30日 22:19
  • 20870

Windows 2003 SP1 DDK下载

 Windows 2003 SP1 DDK 支持以下Windows版本驱动程序开发 • Windows Se...
  • Mobidogs
  • Mobidogs
  • 2007年01月23日 14:59
  • 7345

windows xp 驱动开发(三)DDK与WDK WDM的区别

转自: http://www.cnblogs.com/hyddd/archive/2009/03/15/1412684.html  最近尝试去了解WINDOWS下的驱动开发,现在总结一下最近看到的资...
  • chenyujing1234
  • chenyujing1234
  • 2012年05月14日 16:25
  • 18362

windows server 2003怎样开机不按Ctrl+Alt+Del进入系统

一、windows server 2003安装好后,进入系统要按Ctrl+Alt+Del,个人用户没有必要用这个,所以可以把它关闭,方法如下: 不按CTRL+alt+del键可以修改组策略实现。运行...
  • qq1841370452
  • qq1841370452
  • 2017年08月05日 15:11
  • 224

WinXP DDK的有效下载链接地址

Microsoft WindowsXP DDK WinXP DDK的有效下载链接地址是:http://210.21.117.86/down/ocx/winxpddk.zip 文件大小:13...
  • feier7501
  • feier7501
  • 2013年07月13日 17:29
  • 1483

Win2000 DDK 附带例子概览(图解)

首先安装Win2000 DDK; 全选; 完成后的目录结构;src下是附带例子; 例子包括以下类别:audio, debu...
  • bcbobo21cn
  • bcbobo21cn
  • 2016年07月11日 14:07
  • 1053

windows 驱动开发 DDK与WDK WDM的区别

最近尝试去了解WINDOWS下的驱动开发,现在总结一下最近看到的资料。   1.首先,先从基础的东西说起,开发WINDOWS下的驱动程序,需要一个专门的开发包,如:开发JAVA程序,我们可能需要...
  • swanabin
  • swanabin
  • 2014年11月22日 14:54
  • 2225
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WINDOWS中CTRL+ALT+DEL控制的实现(DDK版)
举报原因:
原因补充:

(最多只允许输入30个字)