青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

蝸牛的家
男兒當自強
posts - 48,  comments - 21,  trackbacks - 0

#include 
"ntddk.h"
#include 
"ntddkbd.h"
#include 
"stdio.h"        

#define KEY_UP        1
#define KEY_DOWN      0  

#define LCONTROL      ((USHORT)0x1D)
#define CAPS_LOCK      ((USHORT)0x3A)  

PDEVICE_OBJECT HookDeviceObject;
PDEVICE_OBJECT kbdDevice;              

NTSTATUS KSnifferDispatchRead( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS KSnifferReadComplete( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context );
NTSTATUS KSnifferDispatchGeneral(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp );                  

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath)        
{
    CCHAR         ntNameBuffer[
64];
    STRING         ntNameString;
    UNICODE_STRING      ntUnicodeString;
    NTSTATUS            status;
    
    DbgPrint(
"DriverEntry \n");
    DriverObject
->MajorFunction[IRP_MJ_READ] = KSnifferDispatchRead;    
    DriverObject
->MajorFunction[IRP_MJ_CREATE]        =
    DriverObject
->MajorFunction[IRP_MJ_CLOSE]          =
    DriverObject
->MajorFunction[IRP_MJ_FLUSH_BUFFERS]  =
    DriverObject
->MajorFunction[IRP_MJ_CLEANUP]        =
    DriverObject
->MajorFunction[IRP_MJ_DEVICE_CONTROL] = KSnifferDispatchGeneral; 

    sprintf( ntNameBuffer, 
"\\Device\\KeyboardClass0" );
    RtlInitAnsiString( 
&ntNameString, ntNameBuffer );
    RtlAnsiStringToUnicodeString( 
&ntUnicodeString, &ntNameString, TRUE );
  
    status 
= IoCreateDevice( DriverObject,          
                 
0,
                 NULL,
                 FILE_DEVICE_KEYBOARD,
                 
0,
                 FALSE,
                 
&HookDeviceObject );            //建立一鍵盤類設備

    
if!NT_SUCCESS(status) ) 
    
{
     DbgPrint(
"Init Error\n");
     RtlFreeUnicodeString( 
&ntUnicodeString );
     
return STATUS_SUCCESS;
    }

    HookDeviceObject
->Flags |= DO_BUFFERED_IO;
    status 
= IoAttachDevice( HookDeviceObject, &ntUnicodeString, &kbdDevice );      //連接我們的過濾設備到\\Device\\KeyboardClass0設備上
    if!NT_SUCCESS(status) ) 
    
{
     DbgPrint(
"Connect with keyboard failed!\n");
     IoDeleteDevice( HookDeviceObject );
     RtlFreeUnicodeString( 
&ntUnicodeString );
     
return STATUS_SUCCESS;
    }

    RtlFreeUnicodeString( 
&ntUnicodeString );
    DbgPrint(
"Successfully connected to keyboard device\n");
    
return STATUS_SUCCESS;
}



NTSTATUS KSnifferDispatchRead( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp )        
//有按鍵按下時執行
{
    PIO_STACK_LOCATION currentIrpStack 
= IoGetCurrentIrpStackLocation(Irp);        //獲取當前的IRP包
    PIO_STACK_LOCATION nextIrpStack    = IoGetNextIrpStackLocation(Irp);
    
*nextIrpStack = *currentIrpStack;
    IoSetCompletionRoutine( Irp, KSnifferReadComplete, DeviceObject, TRUE, TRUE, TRUE );     
//調用完成例程
    return IoCallDriver( kbdDevice, Irp );
}


NTSTATUS KSnifferReadComplete( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context )
{
    PIO_STACK_LOCATION        IrpSp;
    PKEYBOARD_INPUT_DATA      KeyData;
    
    IrpSp 
= IoGetCurrentIrpStackLocation( Irp );
    
if( NT_SUCCESS( Irp->IoStatus.Status ) ) 
    
{
        KeyData 
= Irp->AssociatedIrp.SystemBuffer;
        DbgPrint(
"ScanCode: %x ", KeyData->MakeCode );
        DbgPrint(
"%s\n", KeyData->Flags ? "Up" : "Down" );      //輸出按鍵的掃描碼

        
if( KeyData->MakeCode == CAPS_LOCK) 
        
{
            KeyData
->MakeCode = LCONTROL;                  //修改按鍵
        }
  
    }

    
if( Irp->PendingReturned ) 
    
{
        IoMarkIrpPending( Irp );
    }


    
return Irp->IoStatus.Status;
}


NTSTATUS KSnifferDispatchGeneral(                
//通用事件處理例程
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP          Irp )
{
    PIO_STACK_LOCATION currentIrpStack 
= IoGetCurrentIrpStackLocation(Irp);
    PIO_STACK_LOCATION nextIrpStack    
= IoGetNextIrpStackLocation(Irp);

    Irp
->IoStatus.Status      = STATUS_SUCCESS;
    Irp
->IoStatus.Information = 0

    
if( DeviceObject == HookDeviceObject ) 
    
{
        
*nextIrpStack = *currentIrpStack;
        
return IoCallDriver( kbdDevice, Irp );
    }

    
else
    
{
        
return STATUS_SUCCESS;
    }

}

posted on 2008-08-22 10:49 黑色天使 閱讀(2265) 評論(2)  編輯 收藏 引用 所屬分類: 操作系統

FeedBack:
# re: 鍵盤過濾驅動源代碼[未登錄]
2009-02-02 14:14 | soul
再怎么懶也該加上unload例程吧  回復  更多評論
  
# re: 鍵盤過濾驅動源代碼
2009-02-10 13:19 | 黑色天使
@soul
再怎么懶也應該自己實現一部分吧  回復  更多評論
  

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理



<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(2)

隨筆分類

隨筆檔案

文章檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            91久久久久久| 欧美激情按摩| 国产精品乱码久久久久久| 亚洲高清资源综合久久精品| 在线亚洲自拍| 一区二区三区免费观看| 欧美激情视频一区二区三区免费| 伊人男人综合视频网| 久久综合九色综合欧美就去吻| 国产精品国产三级国产普通话99| 亚洲理伦在线| 欧美激情综合| 久久精品国产91精品亚洲| 免费观看亚洲视频大全| 久久在线91| 欧美三区视频| 久久精视频免费在线久久完整在线看| 亚洲第一综合天堂另类专| 欧美韩日一区二区三区| 亚洲精品久久久久久久久久久| 玖玖精品视频| 久久精品在线播放| 在线视频免费在线观看一区二区| 久久久久九九视频| 久久精品日产第一区二区| 欧美色图首页| 伊人精品久久久久7777| 欧美国产日韩在线| 国产精品欧美经典| 久久在线播放| 免费亚洲一区二区| 亚洲一区二区三区高清不卡| 日韩视频在线一区二区| 国产乱码精品1区2区3区| 亚洲人成亚洲人成在线观看图片| 99精品欧美一区二区三区| 亚洲欧美伊人| 欧美大片一区| 亚洲成人在线观看视频| 日韩视频精品| 欧美日韩精品一区二区三区| 欧美成人免费在线观看| 极品av少妇一区二区| 欧美一区激情| 欧美啪啪一区| 亚洲天堂av高清| 中文一区在线| 久久青草久久| 欧美成人精品一区| 久久久久久亚洲综合影院红桃 | 欧美三级视频在线观看| 亚洲第一主播视频| 亚洲毛片av| 欧美午夜宅男影院在线观看| 欧美激情1区2区| 亚洲第一色在线| 欧美激情中文字幕一区二区| 亚洲欧美国产一区二区三区| 久久久久久久久久久久久9999| 在线不卡中文字幕播放| 欧美精品福利视频| 久久久欧美一区二区| 亚洲国产高清在线| 亚洲美女视频在线免费观看| 欧美三级视频| 夜夜精品视频一区二区| 久久一区二区三区四区| 亚洲国产裸拍裸体视频在线观看乱了| 欧美一级欧美一级在线播放| 亚洲成人在线视频播放 | 久久亚洲精品网站| 免费在线观看一区二区| 亚洲福利国产精品| 欧美日韩综合另类| 巨乳诱惑日韩免费av| 国产欧美一区二区三区在线老狼 | 老司机午夜精品视频| 好吊视频一区二区三区四区| 久久五月天婷婷| 欧美一区二区在线播放| 久久综合伊人77777蜜臀| 欧美黄色一区| 欧美激情视频一区二区三区免费| 一本久久a久久精品亚洲| 91久久久国产精品| 国产婷婷精品| 欧美片第一页| 久久爱www| 亚洲激精日韩激精欧美精品| 午夜在线成人av| 亚洲精品美女久久7777777| 国产综合18久久久久久| 免费成人av在线| 亚洲午夜免费福利视频| 久久99伊人| 久久免费观看视频| 99精品国产福利在线观看免费| 日韩网站在线| 在线成人激情视频| 国产精品a级| 在线观看视频一区二区| 免费亚洲婷婷| 最新国产乱人伦偷精品免费网站| 亚洲美女视频在线免费观看| 国产一区视频观看| 欧美视频一区| 91久久久亚洲精品| 中文亚洲字幕| 毛片一区二区| 99国产精品国产精品毛片| 在线视频精品一区| 亚洲欧美色一区| 另类国产ts人妖高潮视频| 免费成人黄色| 亚洲一二三区精品| 久久深夜福利免费观看| 欧美日韩精品国产| 国产亚洲一区在线播放| 激情小说另类小说亚洲欧美| 亚洲日本电影在线| 香蕉视频成人在线观看 | 亚洲人成久久| 99www免费人成精品| 日韩写真视频在线观看| 久久久久88色偷偷免费| 免费成人在线观看视频| 亚洲国产专区校园欧美| 亚洲黄页一区| 亚洲午夜在线观看| 久久―日本道色综合久久| 国产香蕉97碰碰久久人人| 激情婷婷亚洲| 性久久久久久久久| 欧美激情视频免费观看| 亚洲欧美日韩综合| 久久免费国产精品1| 欧美韩日高清| 午夜精品av| 亚洲国产美女精品久久久久∴| 在线亚洲欧美专区二区| 欧美黄色一区| 亚洲精品国久久99热| 亚洲欧美www| 老牛嫩草一区二区三区日本 | 亚洲免费播放| 欧美午夜精品| 亚洲免费中文| 久久国产精品99国产| 国产自产女人91一区在线观看| 久久综合婷婷| 欧美一区二区精品在线| 国产精品免费aⅴ片在线观看| 欧美日韩在线一区| 在线高清一区| 亚洲一二三四久久| 99精品视频一区| 你懂的网址国产 欧美| 欧美亚一区二区| 亚洲国产日韩欧美综合久久 | 欧美久久久久久| 亚洲国产精品999| 激情另类综合| 亚洲欧美偷拍卡通变态| 亚洲男人av电影| 欧美日韩日本国产亚洲在线| 欧美成人精品不卡视频在线观看 | 亚洲美女性视频| 亚洲欧美影院| 在线看片日韩| 中文欧美字幕免费| 亚洲欧洲日本国产| 午夜精品久久久久久久男人的天堂| 国产日韩av高清| 久久成人综合网| 欧美在线综合视频| 国产精品国产三级国产专播品爱网 | 欧美激情日韩| 欧美一区在线视频| 欧美激情精品久久久久久黑人| 狠狠网亚洲精品| 久久免费黄色| 亚洲国产合集| 欧美人与性动交α欧美精品济南到| 欧美成人免费网站| 午夜精品久久久久久久99樱桃| 久久久久国产一区二区三区| 亚洲精品免费电影| 久久精品首页| 日韩午夜在线| 嫩草影视亚洲| 亚洲欧美日韩一区二区三区在线| 欧美日本中文| 久久久久免费观看| 一本色道久久88综合亚洲精品ⅰ | 亚洲一区二区三区乱码aⅴ| 麻豆av一区二区三区| 亚洲欧美日韩精品一区二区 | 亚洲一区高清| 亚洲激情视频在线播放| 国产综合激情|