随笔分类 - C++
摘要:数据结构是计算机程序的核心,I/O管理器定义了一些数据结构,这些数据结构是编写驱动程序时所必须掌握的。驱动程序经常要创建和维护这些数据结构的实例。 一、驱动对象(DRIVER_OBJECT) 每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载的时候,被内核中的对象管理程序所创建的。
阅读全文
摘要:基于Windows驱动开发技术详解这本书 一、简单的INF文件剖析 INF文件是一个文本文件,由若干个节(Section)组成。每个节的名称用一个方括号指示,紧接着方括号后面的就是节内容。每一行就是一项内容,其形式都是类似SomeEntry=SomwValue。每个项的顺序是可以颠倒的,但系统分析I
阅读全文
摘要:上一篇写的KMDF程序是通过串口进行配置的,那么我们在VS中Attach to process外,可以直接用Winbdg进行调试,winbdg.exe所在路径为C:\Program Files (x86)\Windows Kits\10\Debuggers\x64。怎么使用它呢。 如果是串口方式配置
阅读全文
摘要:工具是VMware12+Win10+VS2017+WDK1809 https://blog.csdn.net/qq_21763381/article/details/83242916 首先分清楚主计算机和目标计算机。 主计算机就是本机,目标计算机可以是待调试机或者虚拟机。 目标计算机(我的是VMwa
阅读全文
摘要:VS2017+WDK+VMware12+Win10环境配置完毕,接下来写第一个驱动程序。 1、新建一个KMDF的程序。 2、配置项目属性。 3、编译项目。一般这里应该成功,我一台电脑成功了,另一台电脑失败了。两台电脑OS的版本不同,一个1803(失败),一个1809(成功)。失败的信息如下: 做法:
阅读全文
摘要:VS2017默认是没有安装WDK的,但是我们写驱动文件的话需要用到WDK。不过安装了WDK后,发现以前一些正常的项目在Release模式下编译会报LINK1104,无法打开.lib的错误 针对这个错误,可以参考这篇文章:https://blog.csdn.net/LEON1741/article/d
阅读全文
摘要:因为工作原因,需要做一些与网卡有关的测试,其中涉及到了驱动这一块的知识,虽然程序可以运行,但是不搞清楚,心里总是不安,觉得没理解清楚。因此想看一下驱动开发。查了很多资料,看到有人推荐Windows驱动开发技术详解这本书,因此本篇文章也是基于这本书进行学习的。有些图片也是按照书上自己画的。 Windo
阅读全文
摘要:一、CreateFile 这是一个多功能的函数,可打开或创建文件或者I/O设备,并返回可访问的句柄:控制台,通信资源,目录(只读打开),磁盘驱动器,文件,邮槽,管道。 函数原型: HANDLE WINAPI CreateFile( _In_ LPCTSTR lpFileName, _In_ DWOR
阅读全文
摘要:今天突然想到一个问题,我们平时写代码会将代码进行分类,写到不同的cpp里,然后要用到那个类里面的函数,就直接include .h文件就好了。然后今天就在想,.h里面都是一些声明,它是怎么链接到.cpp的呢,是不是.h和.cpp需要名称相同呢,当然,我试过名称不同也是可以的。就是因为这样,我才有了疑问
阅读全文
摘要:一、得到OS版本信息 参考文章:https://www.cnblogs.com/VOIP/archive/2011/03/22/1990927.html 常用两个函数GetVersion和GetVersionEx。 GetVersion这个函数曾经困扰了很多程序员,其本来设计的是在DWORD返回值中
阅读全文
摘要:最近在写WIFI模块,所以就想明确一些TCP和UDP的区别,发现以前的理解还是有点误区。现在重新学习。 相同点 UDP协议和TCP协议都是传输层协议 TCP(Transmission Control Protocol, 传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须
阅读全文
摘要:效果图: Dlg.cpp // WIFIWMITestDlg.cpp : implementation file // #include "stdafx.h" #include "WIFIWMITest.h" #include "WIFIWMITestDlg.h" #include "afxdial
阅读全文
摘要:修改静态文本框内容: CWnd* pWnd = GetDlgItem(IDC_STATIC1); pWnd->SetWindowText(_T("Server is on!")); 将静态文本框中显示图标 //添加红绿灰三种图标 DWORD dwStyle = WS_VISIBLE | WS_CHI
阅读全文
摘要:参考网址:https://blog.csdn.net/zwl1584671413/article/details/77936950 https://blog.csdn.net/Righthek/article/details/39347917 WIFI是遵循IEEE802.11协议 WIFI网络结构
阅读全文
摘要:此篇文章是基于C++宝典写的图书管理系统,本人对其中的部分做了相应修改,并且以现有格式替代原有格式,使程序更加清晰明了。此程序运行在VS2017上。 系统设计 图书管理系统分为四个模块:图书管理模块、读者管理模块、借书模块和还书模块。 总体设计 图书管理:对图书基本信息进行维护,主要包括新增图书、更
阅读全文
摘要:Cache存储器 电脑中为高速缓冲存储器,是位于CPU和主存储器DRAM(Dynamic Random Access Memory)之间,规模较小,但速度很高的存储器,通常由SRAM(Static Random Access Memory 静态存储器)组成。它是位于CPU与内存间的一种容量较小但速度
阅读全文
摘要:两个实例 一、判断素数 加了一个输入0就退出循环的条件。 二、分割字符串 关于assert检验参数的合法性这一块,还是需要注意的。频繁的使用会影响程序的性能。http://www.169it.com/article/11369597425660380263.html
阅读全文
摘要:所谓函数指针就是指向函数的指针。函数指针也是一个变量,可以指向不同的函数。同时通过函数指针可以调用其指向的函数,从而使得函数调用更加灵活。 函数地址 函数也是有地址的。编译之后的函数,其实是一组指令的集合。这样一组指令在程序运行时存在于内存中,其起始地址就是该函数的地址,也称做函数的入口地址。在编写
阅读全文
摘要:在C++程序中不允许有相同的函数出现,否则调用时无法区分到底使用哪一个。区分两个函数靠的不仅是函数名,还有函数的参数列表。如果多个函数拥有相同的函数名,但参数列表不同,则称为函数重载,例如: 虽然上述4个函数的名字都是“function”,但参数列表不同,所以可以共存于一个程序中。只是在调用时,需要
阅读全文
摘要:源代码编译完之后,函数就变成了一个指令的集合。调用函数时,系统将跳转到这些指令集的首地址开始运行。当函数返回时,系统就跳回到函数调用处的下一条指令继续执行。不管调用多少次,每次系统都跳转到同一地址,程序中也只有一个函数的复制。 虽然函数节省了空间,但也不是没有代价。在调用函数的两次跳转过程中,存在一
阅读全文

浙公网安备 33010602011771号