开发环境搭建





出现错误

第一步,进入下列目录C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86,复制rc.exe和rcdll.dll两个文件

第二步,进入目录C:\Program Files (x86)\Windows Kits\10\bin\x86,将上述文件粘贴,即可,问题解决。

一个简单的demo

1.切换到资源状态

2.打开页面布局
3.添加按钮

修改每个按钮的属性值

Caption ID
打开驱动设备 IDC_BUTTON_CREATE
关闭驱动设备 IDC_BUTTON_CLOSE
写数据 IDC_BUTTON_IO_WRITE
读数据 IDC_BUTTON_IO_READ
添加进程保护 IDC_BUTTON_ADD
卸载进程保护 IDC_BUTTON_REMOVE


按钮对齐快捷方式

双击打开驱动设备按钮进入代码行

//打开驱动设备对象
HANDLE DeviceHandle = NULL;
void CMFCApplicationDlg::OnBnClickedButtonCreate()
{// TODO: 在此添加控件通知处理程序代码DeviceHandle = CreateFileW(L"\\??\\MyDriver",GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
}

双击关闭驱动设备按钮进入代码行

void CMFCApplicationDlg::OnBnClickedButtonClose()
{// TODO: 在此添加控件通知处理程序代码CloseHandle(DeviceHandle);//IRP_MJ_CLOSE
}

双击写数据按钮进入代码行

#include <winioctl.h>
#define IOTEST CTL_CODE(FILE_DEVICE_UNKNOWN,0X800,METHOD_BUFFERED,FILE_ANY_ACCESS)void CMFCApplicationDlg::OnBnClickedButtonIoWrite()
{// TODO: 在此添加控件通知处理程序代码DWORD dwRetSize = 0;//返回字节数typedef struct TINPUT_BUF{DWORD m_arg1;DWORD m_arg2;DWORD m_arg3;DWORD m_arg4;DWORD m_arg5;DWORD m_arg6;}TINPUT_BUF;//结构TINPUT_BUF inBuf = { 1,2,3,4,5,0x6ABC666 };//数组示例DWORD OutBuf[6] = { 0 };//输出缓冲区DeviceIoControl(DeviceHandle,//CreateFile打开驱动设备 返回的句柄IOTEST,//控制码 CTL_CODE&inBuf,//输入缓冲区指针sizeof(inBuf),//输入缓冲区大小&OutBuf,//返回缓冲区sizeof(OutBuf),//返回缓冲区大小&dwRetSize, //返回字节数NULL);//打印返回参数CString csStr;csStr.Format(L"EXE: 接收驱动层返回的参数(%x,%x,%x,%x,%x,%x  dwRetSize=%d", OutBuf[0], OutBuf[1], OutBuf[2], OutBuf[3], OutBuf[4], OutBuf[5], dwRetSize);OutputDebugStringW(csStr);
}

双击添加进程保护

 // TODO: 在此添加控件通知处理程序代码//添加保护UpdateData(TRUE);//窗口数据更新到变量DWORD dwRetSize = 0;//返回字节数char buftest[256];sprintf_s(buftest, "yjx:EXE R3 读写测试 控制码=%X\n", IO_READ_WRITE_TEST);OutputDebugStringA(buftest);//int 传入数据[3] = { 3,7,8 };UINT32  传入数据 = m_PID;// { 3, 6, 5 };//数组示例int OutBuf = 0;DeviceIoControl(DeviceHandle,//CreateFile打开驱动设备 返回的句柄IO_添加受保护的PID,//控制码 CTL_CODE&传入数据,//输入缓冲区指针sizeof(传入数据),//输入缓冲区大小&OutBuf,//输出缓冲区sizeof(OutBuf),//返回缓冲区大小&dwRetSize, //返回字节数NULL);

双击移除进程保护

//移出保护UpdateData(TRUE);//窗口数据更新到变量DWORD dwRetSize = 0;//返回字节数char buftest[256];sprintf_s(buftest, "yjx:EXE R3 读写测试 控制码=%X\n", IO_READ_WRITE_TEST);OutputDebugStringA(buftest);//int 传入数据[3] = { 3,7,8 };UINT32  传入数据 = m_PID;// { 3, 6, 5 };//数组示例int OutBuf = 0;DeviceIoControl(DeviceHandle,//CreateFile打开驱动设备 返回的句柄IO_删除受保护的PID,//控制码 CTL_CODE&传入数据,//输入缓冲区指针sizeof(传入数据),//输入缓冲区大小&OutBuf,//输出缓冲区sizeof(OutBuf),//返回缓冲区大小&dwRetSize, //返回字节数NULL);

静态编译会自动把MFC的库编译进去,不然的话会在目标系统上跑不起来。如果目标系统没有2017的支持库,或者是开发环境。



MFC入门到精通1-创建项目相关推荐

  1. PyTorch系列入门到精通——模型创建与nn.Module

    PyTorch系列入门到精通--模型创建与nn.Module  

  2. C#程序员的春天之从零开始学习unity3D游戏开发入门教程二(创建项目及基本面板介绍)...

    一项目创建: 创建项目是开发的第一步. 运行untiy之后如果是第一次运行会弹出 我们这里随便创建一个项目. 二Untiy面板介绍: 三代码编辑器的切换: 这里我安装了vs2012. 到这里开发环境基 ...

  3. 博客基础_django_python从入门到实践_创建项目_创建应用

    创建项目 制定规范 创建一简单博客网页,有固定分类,每个分类下又可以添加具体博客条目,每个条目保留作者,发布时间. 创建虚拟环境 虚拟环境是系统的一个位置,可以在其中安装包,与其他python包隔离. ...

  4. Django框架(入门超细笔记 创建项目步骤 )

            在安装Django之前,我们首先需要安装Python开发的虚拟环境 virtualenv. 一.学习django我们要先下载虚拟环境 1.在cmd中输入命令:pip install v ...

  5. Pr 入门教程:如何创建项目?

    欢迎观看 Premiere Pro 教程,小编带大家学习 Pr 的基本编辑技巧,了解工作区和如何创建新项目. 第一次启动 Premiere Pro 时,会看到这样的画面,这是「开始」屏幕,里面有一些选 ...

  6. 最新《JPA入门到精通JAVA进阶项目实战》

    『课程介绍』: 通过对本课程的学习,能够对JPA能够有全面的认识,简化现有Java EE和Java SE应用开发工作.用来操作实体对象,执行CRUD操作,框架在后台替代我们完成所有的事情,开发者从繁琐 ...

  7. Python从入门到精通(加项目实战)学习视频

    自己购买的一套 下载地址:https://pan.baidu.com/s/1i7owHIt 第一部分 1.编程语言介绍 2.Python基础,介绍历史.发展情况及现状Python安装.环境准备编程风格 ...

  8. Go语言从入门到精通 -【web项目实战篇】- Json详解

    本节核心内容 介绍GoLang自带的json包的核心功能方法 介绍如何利用Tag对Json结构体实现更多的控制 介绍Json的编码器和解码器 介绍如何解决复合结构体的数据读取问题 介绍了开发中一些常见 ...

  9. CANoe 从入门到精通

    目录 前言 初级篇 实践篇 前言 本专栏主要分为二个部分: 第一部分是初级篇,主要介绍CANoe中常用的模块: 第二部分是实践篇,主要是带领大家一起做一个项目,此项目是BootLoader刷写的上位机 ...

  10. 视频教程-Spring框架快速入门到精通-Java

    Spring框架快速入门到精通 十年项目开发经验,主要从事java相关的开发,熟悉各种mvc开发框架. 王振伟 ¥18.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 ...

最新文章

  1. linux配置java环境变量 转过几个,这个最详细和靠谱
  2. 【数据挖掘笔记一】引论
  3. C#实现RSA加密解密
  4. librosa能量_语音MFCC提取:librosa amp;amp; python_speech_feature(2019.12)
  5. NOIP模拟测试16「Drink·blue·weed」
  6. PolarDB-X 云原生分布式数据库 > API参考 > API参考(2017版本) > 数据库管理类 API > 删除 DRDS 数据库
  7. 无法使用闩锁类型 sh 读取并闩锁页_InnoDB数据锁第2.5部分“锁”(深入研究)...
  8. CentOS6.7安装Open***服务端
  9. 线程的创建方式及Runnable与Callable的区别
  10. python 24点题目分析_24点游戏的递归解法和Python实现
  11. Python实现一个代码行数统计工具(以C/C++为例)
  12. 搜题公众号题库对接教程
  13. C++网站开发MVC框架TreeFrog Framework教程——7.ERB模板
  14. 国内主流云厂商下一代云主机最大可售卖384核
  15. 用计算机创造一个宇宙,人工智能令整个宇宙变成一个玄计算机,宇宙是虚拟的,真实世界...
  16. 银河麒麟系统飞腾CPU安装达梦数据库
  17. 用了postman,接口测试不用愁了
  18. 英语六级常考核心词汇02
  19. SparkRDD——行动算子
  20. 计算方法之非线性方程组求解

热门文章

  1. 皮尔森相关系数与方差膨胀因子介绍及关系 附python代码
  2. 汽车故障诊断技术【7】
  3. vld/rdy协议 断言
  4. [4K测试视频] 杜比4K UHD蓝光演示碟 Dolby.UHD.BluRay.Demo.Disc.March.2018.2160p.BluRay下载
  5. 保利威 API设置直播回放
  6. 各种多媒体软件安装教程
  7. 基于C++和QT实现的房贷计算器设计
  8. 各种网线的分类和区别
  9. App后台开发运维——架构设计
  10. 照相长度测试软件,拍张照片就知道你的长度了,还要什么测量工具!