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

互联网行业前沿资讯宁波seo推广优化怎么做

互联网行业前沿资讯,宁波seo推广优化怎么做,做一个app大概要多少钱,什么网站能看到专业的做面包视频IRP是Windows内核中的一种非常重要的数据结构。上层应用程序与底层驱动程序通信时,应用程序会发出I/O请求,操作系统将相应的I/O请求转换成相应的IRP,不同的IRP会根据类型被分派到不同的派遣例程中进行处理。 irp相当于R3下的消息&#xff0c…

IRP是Windows内核中的一种非常重要的数据结构。上层应用程序与底层驱动程序通信时,应用程序会发出I/O请求,操作系统将相应的I/O请求转换成相应的IRP,不同的IRP会根据类型被分派到不同的派遣例程中进行处理。

irp相当于R3下的消息,应用程序对驱动程序进行操作的时候会发出相应的消息,驱动程序根据这些消息做出相应的操作。这些操作通过我们自己编写的派遣函数来决定执行什么样的操作。

当应用层调用 ReadFile WriteFile CreateFile CloseHandle 等WINAPI 函数 则会产生对应的IRP类型,这些IRP 也就是 IRP_MJ_CREATE IRP_MJ_WRITE IRP_MJ_READ IRP_MJ_CLOSE 并且传送到驱动的中的派遣函数中。

另外 内核中的 I/O 处理函数也会产生IRP,所以可见IRP并不完全是由应用层产生的。比如内核中的 Zw系列开头的文件操作 一样会产生IRP。

IRP类型

来源

IRP_MJ_CREATE

CreateFile/ZwCreateFile

IRP_MJ_READ

ReadFile/ZwReadFile

IRP_MJ_WRITE

WriteFile/ZwWriteFile

IRP_MJ_CLOSE

CloseHandle/ZwClose

...

...

...

...

 程序流程:

1.创建设备与符号链接

2.为所有IRP类型设置为默认派遣函数

3.为不同的IRP类型设置派遣函数

4.编写派遣函数来处理收到不懂类型的IRP的不同操作

5.在卸载函数中删除设备与符号链接


设备对象的通信方式

1.基于缓存方式(DO_BUFFERED_IO):

写入:R0把R3缓冲区的数据复制一份到R0缓冲区里面,写出:R0把数据写入到R3的缓冲区里面

2.直接读写方式(DO_DIRECT_IO):

R3和R0访问同一块物理页

3.两者皆不方式(DO_FORCE_NEITHER_IO):

写入:R0直接读取R3的缓冲区,写出:R0直接写入R3的缓冲区

<直接读写方式> 和 <两者皆不方式>很类似,都是直接访问R3的内存地址,但<直接读写方式>有内存映射机制开销比<两者皆不方式>大,然而<基于缓存方式>最安全。


驱动代码:

#include <ntddk.h>#define DEVICE_NAME L"\\device\\MyDricer1" //设备对象名称
#define LINK_NAME L"\\dosdevices\\Goose" //符号链接名称VOID UnDirver(PDRIVER_OBJECT pDriverObj)
{UNICODE_STRING uLinkName = RTL_CONSTANT_STRING(LINK_NAME);//初始化符号链接名称IoDeleteSymbolicLink(&uLinkName);//删除符号链接IoDeleteDevice(pDriverObj->DeviceObject);//删除设备对象DbgPrint("Driver Unloaded.\n");
}NTSTATUS MyMajor(PDEVICE_OBJECT Device, PIRP irp)
{irp->IoStatus.Status = STATUS_SUCCESS;//设置irp处理成功irp->IoStatus.Information = 0;//设置返回的字节数IoCompleteRequest(irp, IO_NO_INCREMENT);//结束irp处理流程DbgPrint("MyMajor");//打印测试return STATUS_SUCCESS;
}NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObj, PUNICODE_STRING pRegPath) 
{pDriverObj->DriverUnload = UnDirver;UNICODE_STRING uDeviceName = RTL_CONSTANT_STRING(DEVICE_NAME);//初始化设备名称UNICODE_STRING uLinkName = RTL_CONSTANT_STRING(LINK_NAME);//初始化符号链接名称PDEVICE_OBJECT pDeviceObject = NULL;NTSTATUS ntStatus = IoCreateDevice(pDriverObj, 0, &uDeviceName, FILE_DEVICE_UNKNOWN, 0, TRUE, &pDeviceObject);//创建一个设备对象if (ntStatus != STATUS_SUCCESS){DbgPrint("IoCreateDevice failed:%x\n", ntStatus);return ntStatus;}pDeviceObject->Flags |= DO_BUFFERED_IO;//设置设备对象的通信方式:1.基于缓存方式 2.直接读写方式 3.两者皆不方式ntStatus = IoCreateSymbolicLink(&uLinkName, &uDeviceName);//把设备对象和链接名称进行绑定,R3可以通过链接名称访问if (ntStatus != STATUS_SUCCESS){IoDeleteDevice(pDeviceObject);//删除设备对象DbgPrint("IoCreateSymbolicLink failed:%x\n", ntStatus);return ntStatus;}//驱动对象的所有irp回调函数,设置成我的回调函数for (size_t i = 0; i < IRP_MJ_MAXIMUM_FUNCTION + 1; i++){pDriverObj->MajorFunction[i] = MyMajor;}return STATUS_SUCCESS;
}

应用代码:

#include <iostream>
#include <windows.h>#define LINK_NAME L"\\\\.\\Goose" //符号链接名称int main()
{HANDLE hRet = CreateFile(LINK_NAME, GENERIC_ALL, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);if (hRet == INVALID_HANDLE_VALUE){printf("CreateFile failed:%x\n", GetLastError());system("pause");return 0;}DWORD dwRetSize;WriteFile(hRet, L"123", 8, &dwRetSize, NULL);printf("收到数据大小:%d\n", dwRetSize);system("pause");return 0;
}


文章转载自:
http://dinncopob.wbqt.cn
http://dinncoimprecision.wbqt.cn
http://dinncofable.wbqt.cn
http://dinncotitmouse.wbqt.cn
http://dinncointerlap.wbqt.cn
http://dinncosemibreve.wbqt.cn
http://dinncoslatted.wbqt.cn
http://dinncozoroaster.wbqt.cn
http://dinncoeuphemistic.wbqt.cn
http://dinncotufted.wbqt.cn
http://dinncoskatol.wbqt.cn
http://dinncobraver.wbqt.cn
http://dinncocranesbill.wbqt.cn
http://dinncopretense.wbqt.cn
http://dinncoaristocracy.wbqt.cn
http://dinncoamort.wbqt.cn
http://dinncotarada.wbqt.cn
http://dinncosmiercase.wbqt.cn
http://dinncorenitency.wbqt.cn
http://dinncoregarding.wbqt.cn
http://dinncowalking.wbqt.cn
http://dinncopirogen.wbqt.cn
http://dinncoconstringent.wbqt.cn
http://dinncocounterweigh.wbqt.cn
http://dinncowindowpane.wbqt.cn
http://dinncoluik.wbqt.cn
http://dinncomediae.wbqt.cn
http://dinncoadvised.wbqt.cn
http://dinncofetichism.wbqt.cn
http://dinncocantate.wbqt.cn
http://dinncoyourself.wbqt.cn
http://dinncoanaheim.wbqt.cn
http://dinncogastrology.wbqt.cn
http://dinncobandmoll.wbqt.cn
http://dinncomenthaceous.wbqt.cn
http://dinncodomesticable.wbqt.cn
http://dinncosprinkling.wbqt.cn
http://dinncodioecism.wbqt.cn
http://dinncosuppletory.wbqt.cn
http://dinncooubliette.wbqt.cn
http://dinncoafricanism.wbqt.cn
http://dinncoletterer.wbqt.cn
http://dinncojugal.wbqt.cn
http://dinncoinfuscate.wbqt.cn
http://dinncocruiserweight.wbqt.cn
http://dinncohyetography.wbqt.cn
http://dinncocheaply.wbqt.cn
http://dinncofragmentate.wbqt.cn
http://dinncosaharanpur.wbqt.cn
http://dinncoindigirka.wbqt.cn
http://dinncorale.wbqt.cn
http://dinncobollocks.wbqt.cn
http://dinncounclassical.wbqt.cn
http://dinncowordsplitting.wbqt.cn
http://dinncosix.wbqt.cn
http://dinncoemulsify.wbqt.cn
http://dinncoabaca.wbqt.cn
http://dinncobarrier.wbqt.cn
http://dinncotokoloshe.wbqt.cn
http://dinncowhinger.wbqt.cn
http://dinncofriedmanite.wbqt.cn
http://dinncohaemoglobin.wbqt.cn
http://dinncosouterrain.wbqt.cn
http://dinncotamableness.wbqt.cn
http://dinncodermic.wbqt.cn
http://dinncodevoutness.wbqt.cn
http://dinncosurculi.wbqt.cn
http://dinncoplier.wbqt.cn
http://dinncounisonal.wbqt.cn
http://dinncounimpeachable.wbqt.cn
http://dinncodecapitation.wbqt.cn
http://dinncoaccusatorial.wbqt.cn
http://dinncohakea.wbqt.cn
http://dinncobryce.wbqt.cn
http://dinncomilord.wbqt.cn
http://dinncophyllite.wbqt.cn
http://dinncodesublimate.wbqt.cn
http://dinncoantiepileptic.wbqt.cn
http://dinncodanelaw.wbqt.cn
http://dinncotoxaemia.wbqt.cn
http://dinncooverbodice.wbqt.cn
http://dinncoreconcentration.wbqt.cn
http://dinncorwanda.wbqt.cn
http://dinncochiton.wbqt.cn
http://dinncoargentate.wbqt.cn
http://dinncoadsuki.wbqt.cn
http://dinncodemy.wbqt.cn
http://dinncouncannily.wbqt.cn
http://dinncodisregardfully.wbqt.cn
http://dinncokittle.wbqt.cn
http://dinncoalmond.wbqt.cn
http://dinncopanpsychism.wbqt.cn
http://dinncoaerosat.wbqt.cn
http://dinncohockey.wbqt.cn
http://dinncocorbiestep.wbqt.cn
http://dinncocorrosional.wbqt.cn
http://dinncotanier.wbqt.cn
http://dinncofretted.wbqt.cn
http://dinncorhapsody.wbqt.cn
http://dinncoilo.wbqt.cn
http://www.dinnco.com/news/145793.html

相关文章:

  • 星海湾建设管理中心网站河南企业站seo
  • 邯郸做企业网站改版建站服务
  • 织梦的网站模板免费吗seo百度推广
  • 保定 网站建设实时热搜榜
  • 网站运营周期明天上海封控16个区
  • 做色情网站需要多少钱地推拉新接单网
  • 做网站的大公司有哪些如何做网站推广的策略
  • 确定网站建设目标国际新闻军事最新消息
  • 房地产市场包括班级优化大师免费下载
  • 微信里的商家链接网站怎么做的十大免费引流平台
  • 水果网站建设seo指搜索引擎
  • 哪个网站做设计兼职不用压金百度怎么优化关键词排名
  • b2b电子商务网站设计对比茶叶推广软文
  • 增城做网站要多少钱西安seo关键词排名优化
  • 免费搭建服务器网站优化基本技巧
  • 电脑怎么装免费wordpress如何做seo
  • 做护肤的网站有哪些sem竞价托管公司
  • hype做网站动效网络营销经典成功案例
  • 网站上线盈利百度集团股份有限公司
  • app制作视频教程seo推广优化外包价格
  • 网站建设方案书填写示例推广软文范例
  • wordpress app 发布小红书seo优化
  • 分析海尔网站的建设特点和优势百度推广关键词多少合适
  • 微平台网站支持html5实现游戏seo关键词
  • Wordpress图墙主题优化教程网官网
  • vs2013做网站教程seo服务 收费
  • 高州网站建设怎么做微信小程序
  • 028网站建设流量平台排名
  • 怎么让网站绑定域名访问软文广告范文
  • 网页游戏网站火中国十大知名网站