14、Windows驱动开发技术详解笔记(10) 基本概念

简介: 一、基本框架 二、基本概念 1、操作系统的主要任务是调度线程,还有一些必要的工作,如:内存管理,进程管理,安全管理和I/O管理,这些部分叫做执行部件。 2、Ring是CPU的概念,而用户/内核模式是操作系统的概念。

一、基本框架<?xml:namespace prefix = o />

wps_clip_image-20264

二、基本概念

1、操作系统的主要任务是调度线程,还有一些必要的工作,如:内存管理,进程管理,安全管理和I/O管理,这些部分叫做执行部件。

2RingCPU的概念,而用户/内核模式是操作系统的概念。编写驱动主要为了操作硬件,如访问物理内存,设备端口等。驱动程序相当于内核的补丁,不同硬件设备会有不同的补丁。Windwos中,用户态与内核态切换通过软中断来进行。

3、操作系统分层

Windows可运行在单CPU上和对称多CPU上。“对称多CPU”指每个CPU平分负载;"主从多CPU"指主CPU负责调度从CPU

Windows的设计思路是将内枋尽量可能小,采用“客户端-服务器”结构,操作系统各个组件或者模块是通过消息进行通信的。

wps_clip_image-6655

windows构架图P38

子系统如Win 32,OS/2等。

在内核模式下,执行体组件提供了大量的内核函数供驱动程序调用。内核主要负责进程、线程的调度。驱动程序通过硬件抽象层与硬件进行操作。

4WIN32子系统

这个子系统提供的应用程序接口有以下几个方面:

·图形用户接口: 提供给用户可视的窗口,对话框,控件,字体等接口。

·控制台I/O: 包括键盘,鼠标,显示器,以及其它子系统。

·执行WIN32应用程序接口: 提供应用程序或者其它子系统与执行部件的接口。

因为WIN32子系统在操作系统中的特殊地位和它所提供的高性能,所以它的实现方式与其它的子系统完全不同。它被分成了好几个部分,其中一些工作在用户模式,一些工作在内核模式。通常,WIN32应用程序接口被分成3部分:

USER函数: 管理窗口,菜单,控件,对话框等。

GUI函数: 在物理设备(:显示器,打印机)上绘图。

KENEL函数:管理非GUI资源,例如: 进程,线程,文件,同步服务,KENEL函数接近于执行部件的服务。

WIN NT4.0以后,USER函数和GUI函数被移到内核模式,因此,用户模式的请求用系统服务接口直接送到内核模式。USER函数和GUI函数被安置在 WIN32K.SYS中,相反的,KENEL函数依赖于一个标准的服务程序CSRSS.exe去反应用户程序请求。

wps_clip_image-2708

Win32子系统在内核中的实现实现 P40

5Native API 是在Ntdll.dll中实现的。

软中断将Native API中的参数和系统服务号的参数一同传进内核模式,不同Native API对应不同的系统服务号。在系统服务组件中,有一个系统服务描述表,根据这个系统服务号为索引,从表中查找出对应系统服务函数的函数地址。

进程管理器负责创建和终止进程,线程的调度是由内核完成的。

I/O管理器起到用户模式代码和内核模式代码间接口。

6、内核为执行组件提供最基本的支持,它负责提供进程和线程的调度,通过自旋锁(spin lock),提供对多CPU同步支持,提供中断处理等。内核在调度线程时不能被其它线程打断,即不允许线程切换,但是内核可以被更高的中断请求级别(IRQL)打断。

在驱动程序中,尽量避免针对平台的汇编指令,而应用与平台无关的HAL函数或宏。

7、单一内核:主要核心组件全部在内核实现。微内核:主要组件运行在独立的进程中,它们有自己私有的地址空间,在这之上是内核提供的一组服务原语。

8Windows常用设备:文件,目录,逻辑磁盘,物理磁盘,串口设备,并口设备。

wps_clip_image-12285

图 应用程序到驱动程序 P47

目录
相关文章
|
13天前
|
IDE 关系型数据库 开发工具
使用Visual Basic进行Windows窗体开发
【4月更文挑战第27天】本文介绍了使用Visual Basic进行Windows窗体(WinForms)开发的步骤,从搭建开发环境到创建、设计用户界面,再到编写事件驱动的代码和数据绑定。Visual Basic结合WinForms提供了一种易学易用的桌面应用开发方案。通过调试、优化、部署和维护,开发者可以构建专业应用程序。随着技术发展,掌握最新UI设计和开发工具对于保持竞争力至关重要。本文为初学者提供了基础指导,鼓励进一步探索和学习。
|
4月前
|
缓存 网络协议 数据安全/隐私保护
[运维笔记] - (命令).Windows server常用网络相关命令总结
[运维笔记] - (命令).Windows server常用网络相关命令总结
202 0
|
10天前
|
前端开发 Linux iOS开发
【Flutter前端技术开发专栏】Flutter在桌面应用(Windows/macOS/Linux)的开发实践
【4月更文挑战第30天】Flutter扩展至桌面应用开发,允许开发者用同一代码库构建Windows、macOS和Linux应用,提高效率并保持平台一致性。创建桌面应用需指定目标平台,如`flutter create -t windows my_desktop_app`。开发中注意UI适配、性能优化、系统交互及测试部署。UI适配利用布局组件和`MediaQuery`,性能优化借助`PerformanceLogging`、`Isolate`和`compute`。
【Flutter前端技术开发专栏】Flutter在桌面应用(Windows/macOS/Linux)的开发实践
|
12天前
|
编解码 Linux Windows
FFmpeg开发笔记(十三)Windows环境给FFmpeg集成libopus和libvpx
本文档介绍了在Windows环境下如何为FFmpeg集成libopus和libvpx库。首先,详细阐述了安装libopus的步骤,包括下载源码、配置、编译和安装,并更新环境变量。接着,同样详细说明了libvpx的安装过程,注意需启用--enable-pic选项以避免编译错误。最后,介绍了重新配置并编译FFmpeg以启用这两个库,通过`ffmpeg -version`检查是否成功集成。整个过程参照了《FFmpeg开发实战:从零基础到短视频上线》一书的相关章节。
FFmpeg开发笔记(十三)Windows环境给FFmpeg集成libopus和libvpx
|
13天前
|
编解码 Linux Windows
FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr
在Windows环境下,为FFmpeg集成音频编解码库,包括libogg、libvorbis和opencore-amr,涉及下载源码、配置、编译和安装步骤。首先,安装libogg,通过配置、make和make install命令完成,并更新PKG_CONFIG_PATH。接着,安装libvorbis,同样配置、编译和安装,并修改pkgconfig文件。之后,安装opencore-amr。最后,重新配置并编译FFmpeg,启用ogg和amr支持,通过ffmpeg -version检查是否成功。整个过程需确保环境变量设置正确,并根据路径添加相应库。
FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr
|
1月前
|
Linux 编译器 C语言
FFmpeg开发笔记(二)搭建Windows系统的开发环境
在Windows上学习FFmpeg通常较困难,但通过安装预编译的FFmpeg开发包可以简化流程。首先需要安装MSYS2来模拟Linux环境。下载并执行MSYS2安装包,然后修改msys2_shell.cmd以继承Windows的Path变量。使用pacman安装必要的编译工具。接着,下载预编译的FFmpeg Windows包,解压并配置系统Path。最后,在MSYS2环境中运行`ffmpeg -version`确认安装成功。欲深入学习FFmpeg开发,推荐阅读《FFmpeg开发实战:从零基础到短视频上线》。
FFmpeg开发笔记(二)搭建Windows系统的开发环境
|
2月前
|
数据可视化 数据库 C++
Qt 5.14.2揭秘高效开发:如何用VS2022快速部署Qt 5.14.2,打造无与伦比的Windows应用
Qt 5.14.2揭秘高效开发:如何用VS2022快速部署Qt 5.14.2,打造无与伦比的Windows应用
102 0
|
4月前
|
存储 Ubuntu 开发工具
ffmpeg笔记(二)windows下和ubuntu-16.04下ffmpeg编译
ffmpeg笔记(二)windows下和ubuntu-16.04下ffmpeg编译
|
5月前
|
Linux API C++
音视频windows安装ffmpeg6.0并使用vs调试源码笔记
音视频windows安装ffmpeg6.0并使用vs调试源码笔记
124 0
|
5月前
|
监控 安全 API
5.9 Windows驱动开发:内核InlineHook挂钩技术
在上一章`《内核LDE64引擎计算汇编长度》`中,`LyShark`教大家如何通过`LDE64`引擎实现计算反汇编指令长度,本章将在此基础之上实现内联函数挂钩,内核中的`InlineHook`函数挂钩其实与应用层一致,都是使用`劫持执行流`并跳转到我们自己的函数上来做处理,唯一的不同的是内核`Hook`只针对`内核API`函数,但由于其身处在`最底层`所以一旦被挂钩其整个应用层都将会受到影响,这就直接决定了在内核层挂钩的效果是应用层无法比拟的,对于安全从业者来说学会使用内核挂钩也是很重要。
44 1
5.9 Windows驱动开发:内核InlineHook挂钩技术

热门文章

最新文章