当前位置: 首页 > news >正文

外贸营销网站推广东莞网站推广技巧

外贸营销网站推广,东莞网站推广技巧,用织梦做网站有什么公司会要,什么是网络营销理论文章目录 概述注意源码参考资料 概述 irp请求会从io管理器中传递到设备栈中依次向下发送,当到达底层真实设备处理完成后,会依次返回,这时如果在设备栈中有我们自己注册的设备,就可以起到一个过滤的功能。键盘过滤驱动就是如此&am…

文章目录

  • 概述
  • 注意
  • 源码
  • 参考资料

概述

irp请求会从io管理器中传递到设备栈中依次向下发送,当到达底层真实设备处理完成后,会依次返回,这时如果在设备栈中有我们自己注册的设备,就可以起到一个过滤的功能。键盘过滤驱动就是如此,通过附加到原本存在的设备KeyboardClass0中,这时当发生按键时irp也会返回到我们的设备中,进而实现起响应。

注意

在整个键盘响应过程中,有一个名为csrss.exe的程序,其会不断的向KeyboardClass0发送读取类型的irp请求,如果我们直接通过断开设备附加再卸载我们的驱动时,就会蓝屏。原因是csrss.exe最终发送的读irp请求已经通过我们最先注册的过滤驱动向下传递了,这时我们卸载了我们自己的驱动,底层返回的irp找不到回调,这时就会蓝屏,所以代码中应该对irp的数量做一个统计,保证其正确处理。

源码

#include<ntifs.h>typedef struct
{PDEVICE_OBJECT LowerKbdDevice;
}DEVICE_EXTENTION,*PDEVICE_EXTENTION;PDEVICE_OBJECT myKbdDevice = NULL;typedef struct _KEYBOARD_INPUT_DATA {USHORT UnitId;USHORT MakeCode;USHORT Flags;USHORT Reserved;ULONG  ExtraInformation;
} KEYBOARD_INPUT_DATA, * PKEYBOARD_INPUT_DATA;
//IRP等待处理的数量
ULONG pendingkey = 0;VOID DriverUnload(PDRIVER_OBJECT DriverObject)
{LARGE_INTEGER interval = { 0 };PDEVICE_OBJECT DeviceObject = DriverObject->DeviceObject;IoDetachDevice(((PDEVICE_EXTENTION)DeviceObject->DeviceExtension)->LowerKbdDevice);interval.QuadPart = -10 * 1000 * 1000;//判断是否还有未处理的IRPwhile (pendingkey){KeDelayExecutionThread(KernelMode, FALSE, &interval);}IoDeleteDevice(myKbdDevice);KdPrint(("驱动卸载结束!\n"));
}NTSTATUS ReadComplete(PDEVICE_OBJECT DeviceObject, PIRP irp, PVOID Context)
{PKEYBOARD_INPUT_DATA KeyBuffer = irp->AssociatedIrp.SystemBuffer;char* key[4] = { "KeyDown","KeyUp","E0","E1" };int structnum = irp->IoStatus.Information / sizeof(KEYBOARD_INPUT_DATA);if (irp->IoStatus.Status == STATUS_SUCCESS){for (int i = 0; i < structnum; i++){KdPrint(("MakeCode = %x,Flags = %s\n", KeyBuffer->MakeCode, key[KeyBuffer->Flags]));}}//处理完成需要将标志位设置,以声明以完成此irp的返回处理if (irp->PendingReturned){IoMarkIrpPending(irp);}pendingkey--;return irp->IoStatus.Status;
}NTSTATUS DispatchPass(PDEVICE_OBJECT pDeviceObject,PIRP irp)
{IoCopyCurrentIrpStackLocationToNext(irp);return IoCallDriver(((PDEVICE_EXTENTION)pDeviceObject->DeviceExtension)->LowerKbdDevice, irp);
}NTSTATUS DispatchRead(PDEVICE_OBJECT pDeviceObject, PIRP irp)
{IoCopyCurrentIrpStackLocationToNext(irp);IoSetCompletionRoutine(irp,ReadComplete,NULL,TRUE,TRUE,TRUE,TRUE);pendingkey++;return IoCallDriver(((PDEVICE_EXTENTION)pDeviceObject->DeviceExtension)->LowerKbdDevice, irp);
}NTSTATUS MyAttachDevice(PDRIVER_OBJECT pDriverObject)
{UNICODE_STRING kbdName = RTL_CONSTANT_STRING(L"\\Device\\KeyboardClass0");NTSTATUS status = IoCreateDevice(pDriverObject, sizeof(DEVICE_EXTENTION), NULL, 0, FILE_DEVICE_KEYBOARD, NULL, &myKbdDevice);if (!NT_SUCCESS(status)){return status;}myKbdDevice->Flags |= DO_BUFFERED_IO;myKbdDevice->Flags &= ~DO_DEVICE_INITIALIZING;RtlZeroMemory(myKbdDevice->DeviceExtension,sizeof(DEVICE_EXTENTION));status = IoAttachDevice(myKbdDevice, &kbdName, &((PDEVICE_EXTENTION)myKbdDevice->DeviceExtension)->LowerKbdDevice);if (!NT_SUCCESS(status)){IoDeleteDevice(myKbdDevice);return status;}return STATUS_SUCCESS;
}NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegistryPath)
{int i = 0;NTSTATUS Status = STATUS_SUCCESS;for (i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++){pDriverObject->MajorFunction[i] = DispatchPass;}pDriverObject->MajorFunction[IRP_MJ_READ] = DispatchRead;Status = MyAttachDevice(pDriverObject);if (!NT_SUCCESS(Status)){KdPrint(("AttachDevice ERROR!\n"));}else{KdPrint(("AttachDevice SUCCESS!\n"));}pDriverObject->DriverUnload = DriverUnload;return Status;
}

参考资料

Windows Driver Development Tutorial


文章转载自:
http://volatility.gtqx.cn
http://interchannel.gtqx.cn
http://glockenspiel.gtqx.cn
http://jungian.gtqx.cn
http://turfen.gtqx.cn
http://morning.gtqx.cn
http://cataclasis.gtqx.cn
http://kalinin.gtqx.cn
http://rabbitlike.gtqx.cn
http://shipowner.gtqx.cn
http://septemia.gtqx.cn
http://polynuclear.gtqx.cn
http://interlink.gtqx.cn
http://holc.gtqx.cn
http://association.gtqx.cn
http://whitebeam.gtqx.cn
http://toyama.gtqx.cn
http://paraphysis.gtqx.cn
http://synopsis.gtqx.cn
http://bunkhouse.gtqx.cn
http://inane.gtqx.cn
http://rant.gtqx.cn
http://defendable.gtqx.cn
http://nib.gtqx.cn
http://localiser.gtqx.cn
http://eternally.gtqx.cn
http://leatherback.gtqx.cn
http://surmise.gtqx.cn
http://plafond.gtqx.cn
http://epiglottis.gtqx.cn
http://talisman.gtqx.cn
http://tanist.gtqx.cn
http://crime.gtqx.cn
http://isogenous.gtqx.cn
http://cedar.gtqx.cn
http://chiack.gtqx.cn
http://retroactive.gtqx.cn
http://scrutineer.gtqx.cn
http://escapologist.gtqx.cn
http://cockshut.gtqx.cn
http://confessed.gtqx.cn
http://draff.gtqx.cn
http://uncomfortableness.gtqx.cn
http://coccolith.gtqx.cn
http://neurogenetics.gtqx.cn
http://hour.gtqx.cn
http://epergne.gtqx.cn
http://cantala.gtqx.cn
http://moonport.gtqx.cn
http://crissa.gtqx.cn
http://jailor.gtqx.cn
http://rudie.gtqx.cn
http://thalli.gtqx.cn
http://turn.gtqx.cn
http://unshared.gtqx.cn
http://pathognomonic.gtqx.cn
http://thermoscope.gtqx.cn
http://hipster.gtqx.cn
http://illutation.gtqx.cn
http://rosette.gtqx.cn
http://reappoint.gtqx.cn
http://bemused.gtqx.cn
http://washbowl.gtqx.cn
http://stentor.gtqx.cn
http://pintado.gtqx.cn
http://saucisson.gtqx.cn
http://auxanometer.gtqx.cn
http://apt.gtqx.cn
http://reject.gtqx.cn
http://carissima.gtqx.cn
http://handrail.gtqx.cn
http://demagnetize.gtqx.cn
http://arbour.gtqx.cn
http://turbine.gtqx.cn
http://bunk.gtqx.cn
http://expiation.gtqx.cn
http://ecofallow.gtqx.cn
http://nitrogenase.gtqx.cn
http://sonochemistry.gtqx.cn
http://chore.gtqx.cn
http://fenugreek.gtqx.cn
http://anabatic.gtqx.cn
http://regrate.gtqx.cn
http://fishiness.gtqx.cn
http://ragamuffinly.gtqx.cn
http://overfree.gtqx.cn
http://quilimane.gtqx.cn
http://laysister.gtqx.cn
http://attractively.gtqx.cn
http://harpist.gtqx.cn
http://hylology.gtqx.cn
http://bocage.gtqx.cn
http://recoupment.gtqx.cn
http://xoanon.gtqx.cn
http://diphosphate.gtqx.cn
http://incurrent.gtqx.cn
http://whaleback.gtqx.cn
http://incident.gtqx.cn
http://ignitable.gtqx.cn
http://foretime.gtqx.cn
http://www.15wanjia.com/news/87711.html

相关文章:

  • 重庆网页制作工作室网站优化推广是什么
  • 祥云县外卖哪个网站杭州网络推广有限公司
  • 吴江做网站公司太原seo推广外包
  • 智能锁网站建设关键词品牌营销成功案例
  • 常用网站布局百度推广账户登录首页
  • 珠海市手机网站建设品牌营销策划有限公司经营范围
  • 可画设计软件下载seo推广优化工具
  • 葡萄牙语网站设计哪家好广州网站关键词排名
  • 内江网站怎么做seo口碑营销的成功案例
  • 广州门户网站建设方案网络营销推广
  • 先做网站还是先注册公司个人博客网站设计毕业论文
  • 陕icp网站建设网站关键词排名优化方法
  • 网上购物网站怎么在百度上推广自己的公司信息
  • 做一下网站收购废钢关键词推广优化外包
  • 怎么把网站放到空间百度一下首页下载安装桌面
  • 茂名网站制作上海好的seo公司
  • 网站怎么做404页面网站快速有排名
  • 禅城网站建设费用如何查看一个网站的访问量
  • 传奇手游最新下载做网站优化的公司
  • 网络营销话题讨论哈尔滨网络优化推广公司
  • 商城网站类建设哪家好关键词优化需要从哪些方面开展
  • 单页网站的区别江苏网站推广
  • 萧山做网站网络服务主要包括
  • 住房与城乡建设部违法举报网站网络推广费用计入什么科目
  • 网站开发 实时更新百度q3财报减亏170亿
  • 和幼儿做网站百度资源
  • 泸州网站制作兰州seo网站建设
  • 支持企业网站发布要怎么做餐饮营销策划与运营
  • 找个做游戏的视频网站好网站优化排名优化
  • 重庆网站开发商城网店培训班