
http://d.namipan.com/d/7a29e746df9f3879129bbdaa88432c4ab17bb2230c5f0a00
Keydata=Irp->AssociatedIrp.SystemBuffer;
numKeys=Irp->IoStatus.Information / Sizeof(KEYBOARD_INPUT_DATA);
for ( i=0;i<numKeys;i++)
{
DbgPrint(("numKeys : %d ",numKeys));
DbgPrint(("Scan code : %x ",KeyData->MakeCode));
DbgPrint(("%s\n",KeyData->Flags? "up":"down"));
MyPrintKeyStroke((UCHAR)KeyData->MakeCode);
if (KeyData->MakeCode==CAPS_LOCK)
{
KeyData->MakeCode=LCONTROL;
}
}
以上是书上的源代码,整个循环体只遍历了第一个结构体,后面的并没有进行操作,虽然有个循环但是并没有什么实质的作用,正确的遍历代码应该是下面的样子。程序代码所在页面Page-73 
Keydata=Irp->AssociatedIrp.SystemBuffer;
numKeys=Irp->IoStatus.Information / Sizeof(KEYBOARD_INPUT_DATA);
for ( i=0;i<numKeys;i++,numKeys++)
{
DbgPrint(("numKeys : %d ",numKeys));
DbgPrint(("Scan code : %x ",KeyData->MakeCode));
DbgPrint(("%s\n",KeyData->Flags? "up":"down"));
MyPrintKeyStroke((UCHAR)KeyData->MakeCode);
if (KeyData->MakeCode==CAPS_LOCK)
{
KeyData->MakeCode=LCONTROL;
}
}
话说前几天又有人问关于能不能获取公网ip的问题,今天修改了下,增加了公网ip的获取,猛击此处下载文件!
最终获取的ip为如下的格式:
可能的公网ip:124.128.77.XXX
本地ip:192.168.5.146
2010-1-18 17:31:07