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

网站建设课程设计怎样做网站别人能访问

网站建设课程设计,怎样做网站别人能访问,wordpress插件的开发,网站开发商城图片上传IRP是Windows内核中的一种非常重要的数据结构。上层应用程序与底层驱动程序通信时#xff0c;应用程序会发出I/O请求#xff0c;操作系统将相应的I/O请求转换成相应的IRP#xff0c;不同的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, L123, 8, dwRetSize, NULL);printf(收到数据大小%d\n, dwRetSize);system(pause);return 0; }
http://www.w-s-a.com/news/642905/

相关文章:

  • 大连手机自适应网站建设织梦做音乐网站
  • 烟台网站建设优化网页设计师证
  • 手机微网站建设多少钱个人网站 wordpress
  • 做外贸是不是必须有网站wordpress网络图片
  • 赣县企业网站建设用dw做网站的基本步骤
  • 辽源网站建设微信小程序公众平台
  • 多媒体网站设计开发是指什么常宁网站建设
  • 淄博网站推广优化17岁在线观看免费高清完整版
  • 企业形象网站开发业务范畴wordpress最好最全的教程
  • 企业网站的建立意义网站首页制作网站
  • 网站制作过程内容深圳最好的活动策划公司
  • 深圳网站关键词排名查询公司网站怎么做啊
  • 微网站 制作平台广州电商聚集地
  • 建设外国商城网站网站服务器 虚拟主机
  • 天河网站建设开发电子商务公司名字大全
  • 站长推荐为何用wdcp建立网站连不上ftp
  • 云南旅行社网站开发学编程多久可以写游戏辅助
  • 推广网站的步骤网站备案号中信息有变
  • 优秀企业建站织梦能不能做门户网站
  • 广东省建设局官方网站wordpress 自动安装 插件怎么用
  • 哪类小网站容易做h5页面制作代码
  • 北京网站建设公司华网百度热搜seo
  • 小清新博客网站中山做网站公司
  • 美团做团购网站如何新建自己的网站
  • 安卓软件制作网站电子商务网站建设实训总结报告
  • 肃宁网站制作价格外国设计师素材网站
  • 自已建网站用jsp做的可运行的网站
  • 外贸建站代理网站建设设计公司哪家好
  • 普升高端品牌网站建设台州中兴建设咨询有限公司网站
  • 模板演示网站移动网站开发公司