驱动开发:探索DRIVER_OBJECT驱动对象

本章将探索驱动程序开发的基础部分,了解驱动对象`DRIVER_OBJECT`结构体的定义,一般来说驱动程序`DriverEntry`入口处都会存在这样一个驱动对象,该对象内所包含的就是当前所加载驱动自身的一些详细参数,例如驱动大小,驱动标志,驱动名,驱动节等等,每一个驱动程序都会存在这样的一个结构,首先来看一下微软对其的定义,此处我已将重要字段进行了备注。

驱动开发:内核中进程与句柄互转

在内核开发中,经常需要进行进程和句柄之间的互相转换。进程通常由一个唯一的进程标识符(PID)来标识,而句柄是指对内核对象的引用。在Windows内核中,`EProcess`结构表示一个进程,而HANDLE是一个句柄。为了实现进程与句柄之间的转换,我们需要使用一些内核函数。对于进程PID和句柄的互相转换,可以使用函数如`OpenProcess`和`GetProcessId`。OpenProcess函

7.4 通过API枚举进程权限

GetTokenInformation 用于检索进程或线程的令牌(Token)信息。Token是一个数据结构,其包含有关进程或线程的安全上下文,代表当前用户或服务的安全标识符和权限信息。GetTokenInformation函数也可以用来获取这些安全信息,通常用于在运行时检查某个进程或线程的权限或安全信息。

8.4 ProcessHeap

ProcessHeap 是`Windows`进程的默认堆,每个进程都有一个默认的堆,用于在进程地址空间中分配内存空间。默认情况下`ProcessHeap`由内核进行初始化,该堆中存在一个未公开的属性,它被设置为加载器为进程分配的第一个堆的位置(进程堆标志),`ProcessHeap`标志位于`PEB`结构中偏移为`0x18`处,第一个堆头部有一个属性字段,这个属性叫做`ForceFlags`属性偏

8.6 STARTUPINFO

STARTUPINFO 结构体,可以用来指定新进程的主窗口外观风格、背景颜色、标题等信息,也可以用来实现反调试技术。通常情况下,我们可以将`STARTUPINFO`结构体中的`dwFlags`成员设置为`STARTF_DEBUGONLYTHISPROCESS`,以防止调试器附加到当前进程。设置了`STARTF_DEBUGONLYTHISPROCESS`后,如果尝试通过调试器附加到该进程,则调试器将

浏览器打印方案

前言 在web端打印是比较常见的需求,实际工作中也接触了不少,在这里对工作中用到的做一下总结 1.通过媒体查询隐藏元素 通过style标签内联引入,或者使用媒体查询media="print"外链样式表。然后将无关元素隐藏,只将需要打印的内容展示出来;这时候需要专门写一套打印样式,页面修改,打印样式可

Kubernetes(K8S) yaml 介绍

使用空格做为缩进 缩进的空格数目不重要, 只要相同层级的元素左侧对齐即可 低版本缩进时不允许使用 Tab 键, 只允许使用空格 使用#标识注释, 从这个字符一直到行尾, 都会被解释器忽略 使用 三个 - 进行多项配置 | | | | | | | apiVersion | API版本 可以用 kube

Kubernetes(K8S) Service 介绍

定义一组 Pod 的访问规则 存在的意义 防止 Pod 失联(服务发现),Pod 重启后,IP会变 定义一组 Pod 访问策略,负载均衡 Pod 和 Service 关系 根据 label 和 selector 标签建立关联,实现 Pod 的负载均衡和服务发现,Service 或者Ingress 资

Kubernetes(K8S) Controller - Deployment 介绍

什么是controller 实际存在的,管理和运行容器的对象 Pod 和 Controller 关系 Pod 是通过 Controller 实现应用的运维,比如伸缩、滚动升级等等 Pod 和 Controller 之间通过 label 标签建立关系 Deployment 控制器应用场景 场景:Web

大数据 - DWS层 业务实现

统计主题 需求指标【ADS】输出方式计算来源来源层级 访客【DWS】pv可视化大屏page_log 直接可求dwd UV(DAU)可视化大屏需要用 page_log 过滤去重dwm UJ 跳出率可视化大屏需要通过 page_log 行为判断dwm 进入页面数可视化大屏需要识别开始访问标识dwd 连续

Mac Snipaste 不仅仅是截图工具,不在菜单栏显示,怎么样修改快捷键

官网下载: https://www.snipaste.com Snipaste 免费,支持 Windows、Mac,Windows 上的功能相当多而且,Mac 也够用了 不仅仅是个截图工具,具有强大功能: 截图 贴图(直接将截图贴在桌面上,当标签贴使用) 取色器 常用快捷健 fn + F1: 开始截

Matplotlib.pyplot.plot 绘图

Matplotlib.pyplot 创建图形、在图形中创建创建一个绘图区域、在绘图区域中你那个绘制一些线、在图形中添加标签之类 ### 画二维平面图 ```python x = np.arange(0, 10, 2) y1 = x y2 = x ** 2 plt.plot(x, y1, '*g--'

MySQL性能优化浅析及线上案例

关于数据库的性能优化其实是一个很复杂的大课题,很难通过一篇帖子讲的很全面和深刻,这也就是为什么我的标题是‘浅析’,程序员的成长一定是要付出代价和成本,因为只有真的在一线切身体会到当时的紧张和压力,对于一件事情才能印象深刻,但反之也不能太过于强调代价,如果可以通过一些别人的分享就可以规避一些自己业务的问题和错误的代价也是好的。

G1垃圾回收参数调优及MySQL虚引用造成GC时间过长分析

我方有一应用,偶尔会出现GC时间过长(间隔约4小时),导致性能波动的问题(接口最长需要耗时3秒以上)。经排查为G1垃圾回收器参数配置不当 叠加 MySQL 链接超过闲置时间回收,产生大量的虚引用,导致G1在执行老年代混合GC,标记阶段耗时过长导致。以下为对此问题的分析及问题总结。

每日一库:cobra 简介

当你需要为你的 Go 项目创建一个强大的命令行工具时,你可能会遇到许多挑战,比如如何定义命令、标志和参数,如何生成详细的帮助文档,如何支持子命令等等。为了解决这些问题,github.com/spf13/cobra 就可以派上用场。 github.com/spf13/cobra 是一个用于构建强大的命

WPF 笔迹算法 从点集转笔迹轮廓

本文将告诉大家一些笔迹算法,从用户输入的点集,即鼠标轨迹点或触摸轨迹点等,转换为一个可在界面绘制显示笔迹画面的基础数学算法。尽管本文标记的是 WPF 的笔迹算法,然而实际上本文更侧重基础数学计算,理论上可以适用于任何能够支持几何绘制的 UI 框架上,包括 UWP 或 WinUI 或 UNO 或 MA

计算机网络 基础面试第二弹

1. TCP三次握手和四次挥手 TCP三次握手的过程如下: 第一步(SYN):客户端向服务器发送一个带有SYN(同步)标志的TCP包,指示客户端希望建立连接。这个包包含一个随机的初始序列号(ISN)。 第二步(SYN-ACK):服务器收到客户端的SYN包后,会发送一个带有SYN和ACK(确认)标志的

WebKit Inside: CSS 样式表的匹配时机

WebKit Inside: CSS 的解析 介绍了 CSS 样式表的解析过程,这篇文章继续介绍 CSS 的匹配时机。 无外部样式表 内部样式表和行内样式表本身就在 HTML 里面,解析 HTML 标签构建 DOM 树时内部样式表和行内样式就会被解析完毕。因此如果 HTML 里面只有内部样式表和行内

【matplotlib 实战】--堆叠面积图

堆叠面积图和面积图都是用于展示数据随时间变化趋势的统计图表,但它们的特点有所不同。面积图的特点在于它能够直观地展示数量之间的关系,而且不需要标注数据点,可以轻松地观察数据的变化趋势。而堆叠面积图则更适合展示多个数据系列之间的变化趋势,它们一层层的堆叠起来,每个数据系列的起始点是上一个数据系列的结束点

WebKit Inside: CSS 样式表解码字符集

CSS 样式表引入有3种方式: 外部样式表、内部样式表、行内样式,不同的引入方式,解码样式表的字符集原理不一样。 外部样式表 外部样式表由 link 标签引入,当 WebKit 解析到 link 标签时就会构造 CachedCSSStyleSheet 对象。这个对象持有 CachedResource