获取开机时间并不像应用层简单的调用一个 API 就搞定了,在内核需要 GetTickCount 获取一个滴答数,然后把这个滴答数转为毫秒,再进行运算即可得出开的时间。以下是获取开机多少分钟和当前系统时间的结果,代码在下方: 12tick count = 2 minutes.time = 2016-04-01 00...
看书实现的代码,遇到了好多问题,做了详细的代码注释。另外在排查问题的过程中看到了一个操作注册表的通用的 c 文件,貌似是一个硬件驱动的 ftp 地址。ftp://ftp.lantronix.com/priv/cpr/Lantronix/4.3/4.3.0.0/Debug/DriverSource/registry...
Windows 内核编程并没有提供像 Ring3 层的 CopyFile 这样的 API,看了看书中的例子自己写了一份 MyCopyFile,以后用来备用。 12345678910111213141516171819202122232425262728293031323334353637383940414243...
在 Windows 内核开发中,字符串并非像 C 中使用的是一个 \0 结尾的字符数组,取而代之的是一个结构体,该结构体储存了指向字符的指针和字符的长度。因为没有了 \0,很多 C 语言库函数也无法使用了,但不用担心,Windows 提供了很多操作这种字符串的函数。见如下示例: 初始化、拷贝、拼接字符串1234...
这几天在看 libevent 的官方书籍跟着学习,开着个 Ubuntu 的虚拟机在 Windows 下来回切换,学习效率实在低下,且不说编译、测试这些复杂的步骤。所以决定研究一下如何在 Windows Visual Studio 环境下使用 libevent 库,这样学习效率会高很多。从网上借鉴了一些教程,都写的...
还是 2015 年学过的知识,这么久不用忘差不多了。本文主要记录一下方便以后查阅并加深印象。gcc 编译一个程序的四个过程分别是 预处理->汇编->编译->链接,预处理一般是导入一些头文件的信息及一些宏的替换等等,汇编是将代码编译为汇编代码,真正到编译过程才是把汇编代码编译为二进制的文件,最后链...
makefile 语法123456789目标:依赖(tab)命令如:add.o:add.c(一个tab缩进)gcc –Wall –g –c add.c –o add.o目标:要生成的目标文件依赖:目标文件由哪些文件生成命令:通过执行该命令由依赖文件生成目标 makefile 工作原理1、若想生成目标,检查规则中...
所谓全排列就是将一个数据组合拆开重新排列,比如 abc,可重新排序为 acb、bac、bca、cab、cba,通过算法上实现一般就是递归或一个while循环来实现。最近复习算法方面的内容接触到的新的算法,记录一下思路。 主要思路就是把每个子项都拿到第一位,然后递归分别跟后面的交换得出不同的组合。以下是参考代码,...
这个话题还是很早以前讨论过,当时并没有好好的理解,最近在复习知识的时候又重新看了一遍资料,自己做一下总结,也希望后面有人需要学习时可以对他有所帮助。以下我会举两个结构体的例子,分别画图的方式表达对齐的原则。 结构体对齐的公式记住以下这些规则,把结构体往里面套就可以了。结构体对齐的原则就是牺牲空间的方式来减少时间...
在网络上翻阅过的一份资料,所谈之处皆是痛点,如因处理大量请求可能会导致内存不足的情况、多线程情况下数据包排序紊乱等问题,非常值得参考和学习,其中引入的其他文献有微软官方和非官方文章,附带有非常可靠的代码提供学习,此文非常值得记录。特此分享! 资料下载下载原版PDF:完成端口实现高性能服务端通信层的关键问题.pd...