YJX_Driver_029_实战EXE和SYS通信(直接访问模式)

1、

应用程序与驱动交互访问(直接模式)
  A、用户层传入数据EXE部分代码
  B、驱动层接收数据并处理SYS部分代码
  C、驱动层返回数据至用户层
  D、用户层获得处理结果
  E、预编译指令#pragma #ifndef #endif

ZC: 上节课 最后说 蓝屏的问题,这节课讲,貌似没讲啊

【190】都是在 第28课 的代码的基础上进行修改,复制过来

【260】缓冲区方式 和 直接方式 的区别

  【305】区别1:

#define add_code CTL_CODE(
  FILE_DEVICE_UNKNOWN, 
  0x800, 
  METHOD_IN_DIRECT,
  FILE_ANY_ACCESS)

在讲直接内存访问模式时,我们不得不再次讲到CTL_CODE宏的Method项
CTL_CODE(DeviceType,Function,Method,Acess);
Method是指定数据传递的模式 有这几个值:
  METHOD_BUFFERED //使用缓冲区方式操作 0
  METHOD_IN_DIRECT //直接写方式 1
  METHOD_OUT_DIRECT //直接读方式 2
  METHOD_NEITHER //其它方式 3

直接内存操作方式METHOD_IN_DIRECT和METHOD_OUT_DIRECT模式都以相同方式处理。仅有的不同 是它们访问用户模式缓冲区时所需的访问权限;
  METHOD_IN_DIRECT    需要读权限;
  METHOD_OUT_DIRECT   既需要读权限又需要写权限。

使用这两种模式时,I/O管理器会
  为 输入数据 提供一个内核模式拷贝缓冲区(AssociatedIrp.SystemBuffer),
  为 输出数据缓冲区 提供一个MDL。

MdlAddress(PMDL)域指向一个内存描述符表(MDL),该表描述了一个与该请求关联的用户模式缓冲区。
当IRP_MJ_DEVICE_CONTROL请求的控制代码指定METHOD_IN_DIRECT或METHOD_OUT_DIRECT操作方式,则I/O管理器为该请求使用的输出缓冲区创建一个MDL。
MDL本身用于描述用户模式虚拟缓冲区,但它同时也含有该缓冲区锁定内存页的物理地址。

//获取 PIrp->MdlAddres 然后通过MmGetSystemAddressForMdlSafe将这段内存映身到内核模式下 供直接访问
int* OutBuffer =(int *)MmGetSystemAddressForMdlSafe(PIrp->MdlAddres, NormalPagePriority );

【1095】MSDN中 查看 MmGetSystemAddressForMdlSafe(...)

  【1335】MmGetSystemAddressForMdlSafe 的第2个参数 MM_PAGE_PRIORITY

    访问的优先权,可用的参数:LowPagePriority、NormalPagePriority、HighPagePriority,一般用 NormalPagePriority

【1640】修改代码

2、

#ifndef CTL_CODE
#pragma message("EXE模式 . Include winioctl.h ")
include<winioctl.h>
#endif

修改EXE部分
修改SYS部分

时间: 2024-12-12 00:14:38

YJX_Driver_029_实战EXE和SYS通信(直接访问模式)的相关文章

YJX_Driver_030_实战EXE和SYS通信(其它模式)

1. 应用程序与驱动交互访问(其它模式) A.用户层传入数据EXE部分代码 B.驱动层接收数据并处理SYS部分代码 C.驱动层返回数据至用户层 D.用户层获得处理结果 E.驱动中的异常处理 [225] “ A.用户层传入数据EXE部分代码修改头文件METHOD_NEITHER #define add_code CTL_CODE( FILE_DEVICE_UNKNOWN,  0x800,  METHOD_NEITHER, FILE_ANY_ACCESS) 在讲直接内存访问模式时,我们不得不再次讲到

打开较大存储量的.sql文件时,出现SQL Server 阻止了对组件 &#39;xp_cmdshell&#39; 的 过程&#39;sys.xp_cmdshell&#39; 的访问

1. “消息 15281,级别 16,状态 1,过程 xp_cmdshell,第 1 行SQL Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭.系统管理员可以通过使用 sp_configure 启用 'xp_cmdshell'.有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器". ” 解决方法: sqlserver2

使用内存映射文件进行EXE、DLL通信(非MFC)

想做EXE.DLL通信,网上说的比较多的是WM_COPYDATA消息,发现需要在添加消息映射比较麻烦,而且网上几乎都是MFC的代码,想用的是控制台代码. 就想到了用内存映射文件.EXE发数据给DLL. EXE的代码: /*************************************************************************************** * 文件名: test.cpp * 功 能: 利用内存映射文件进行EXE.DLL通信 *********

SQL Server 阻止了对组件 &#39;Ole Automation Procedures&#39; 的 过程&#39;sys.sp_OACreate&#39; 的访问

--开启 Ole Automation Procedures sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO EXEC sp_configure 'Ole Automation Procedures'; GO --关闭 Ole Automation Procedures sp_configure '

SQL Server 阻止了对组件 &#39;Ole Automation Procedures&#39; 的 过程&#39;sys.sp_OACreate&#39; 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configur

参见:http://msdn.microsoft.com/zh-cn/library/ms191188(SQL.105).aspx Ole Automation Procedures 选项 [本主题为预先发布的文档内容,在未来的版本中可能会更改.包括以占位符形式出现的空白主题.请注意:为了提供更多的中文内容,Microsoft 引进了非传统翻译方式.在本预发行版本中,文档中的部分内容就是使用非传统翻译方式翻译.Microsoft 知道使用非传统翻译方式翻译的文档很难尽善尽美,内容中或许会有词汇.

(在数据库中调用webservices。)SQL Server 阻止了对组件 &#39;Ole Automation Procedures&#39; 的 过程&#39;sys.sp_OACreate&#39; 的访问

--开启 Ole Automation Procedures sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO EXEC sp_configure 'Ole Automation Procedures'; GO --关闭 Ole Automation Procedures sp_configure '

Provisioning Services 7.6 入门到精通系列之八:虚拟磁盘访问模式

虚拟磁盘可以存在于 Provisioning Server.文件共享中,或者(在较大规模的部署中)存在于Provisioning Server 可与之通信的存储系统上(iSCSI.SAN.NAS 和 CIFS).可将虚拟磁盘分配给单个目标设备(专有映像模式)或多个目标设备(标准映像模式). 在上节中完成了虚拟磁盘的成功创建之后即可以创建目标设备,但是在分配之前必须深入理解虚拟磁盘的两种不同的访问模式和标准映像模式中的缓存目标位置.本章节将详细的介绍虚拟磁盘访问模式和缓存目标位置的理论知识和配置.

ODAC(V9.5.15) 学习笔记(十六)直接访问模式

直接访问模式(Direct mode)是ODAC最大的特色之一,即不需要安装Oracle客户端,ODAC越过了OCI(Oracle Call Interface ),使用TCP/IP协议就可以直接与Oracle服务器通信,使得ODAC程序的部署非常方便,性能也非常高. 要设置直接访问模式,只需要将连接组件的选择项Direct设为True Session.Options.Direct := True; 其他的参数设置同正常模式.使用直接访问模式的优势是不需要安装Oracle客户端,部署更方便,资源

此项目的默认Web访问模式设置为文件共享, 但是无法从路径(此为转贴)

故障现象: 当你打开ASP.NET Web项目时,如果出现这样的错误提示:提示窗口标题: Web访问失败提示内容: 此项目的默认Web访问模式设置为文件共享, 但是无法从路径“...”打开“...”处的项目文件夹.返回的错误是: 无法打开Web项目“”.返回的错误是: 无法打开Web项目“...”.文件路径“...”怀URL“...”不符.这两者需要映射到相同的服务器位置.HTTP错误404: Not Found ...... 处理方法: 到“C:/Documents and Settings/