windows内核中常用术语
Entry:指表中的表项、条目,有时也指函数入口
缓冲描述符,描述了一个缓冲的基址、长度等信息。
SSDT:基本系统服务表(其实全称应叫系统服务派遣表)
ShadowSSDT:GUI/GDI系统服务函数表,这是第二张SSDT
SSDTDT:系统服务表描述符表,表中每个元素是一个SSDT描述符(注意内核中有两张SSDT和两张SSDTDT)
中断描述符,描述了那个中断向量对应的分配状态、isr等信息
IDT:中断描述符表,每个cpu一个。(每个表项是一个描述符,可以简单视为isr)
ISR:中断服务例程,IDT表中的中断描述符所描述的中断处理函数
EPR:异常处理例程,IDT表中的异常描述符所描述的异常处理函数
VA:虚拟地址,PA:物理地址,LA:线性地址,RVA:相对虚拟地址foa:文件偏移
PDE:页目录中的表项,保存着对应二级页表的物理地址,又叫“二级页表描述符”
PTE:二级页表中的表项,真正记录着每个虚拟页面的映射情况以及其他信息,又叫“映射描述符”
页目录:(又叫一级页表、总页表),一个PDE数组,这个数组的大小刚好占据一个页面
二级页表:一个PTE数组,这个数组的大小也刚好占据一个页面(进程有一个总页表+1024个二级页表)
AREA:地址空间中的一块连续的区段,VirtualAlloc分配内存都是以区段为单位
内存分配:表示从地址空间中用VirtualAlloc预定或者提交映射一块内存,不是指malloc、new、HeapAlloc
PID:进程ID、进程号。(其实也是个句柄)
TID:线程ID、线程号。(其实也是个句柄)
PDO:物理设备对象,相对于fdo而言。Pdo并不一定是最底层的那个硬件pdo
FDO:功能设备对象,相对于pdo而言。Fdo也可能直接访问硬件芯片。fdo与pdo只是一种相对概念。
栈底pdo:又叫‘基石pdo’,‘硬件pdo’,指用作堆栈基石的那个pdo,它是由相应的总线驱动内部创建的 。
端口设备对象:端口驱动或者小端口驱动中创建的设备对象(他下面是硬件pdo)
总线驱动:用来驱动总线的驱动(总线本身也是一种特殊的设备),如pci.sys总线驱动
端口驱动:由厂家提供的真正用来直接访问硬件芯片的驱动,位于总线驱动上层
上层过滤驱动:位于功能类驱动上面的驱动
下层过滤驱动:位于功能驱动下面,端口驱动上面的驱动
顶层驱动:指位于栈顶的驱动
中间驱动:intermediate drivers,凡是夹在顶层驱动与端口驱动之间的那些驱动都叫中间驱动
设备树:由PnP管理器构造的一颗用来反映物理总线布局的‘硬件设备树’。
设备节点:设备树中的节点。每个节点都表示一个真正的硬件物理设备对象
NT驱动:即NT式驱动,指不提供AddDevice或通过NtLoadDriver加载的驱动
WDM驱动:windows第二代驱动开发模型。需要通过adddevice加载驱动。
IRP派遣例程:又叫分发例程、派遣函数。驱动程序中用来响应处理irp的函数。IO管理器调用。
设备绑定:指将设备‘堆栈’到原栈顶设备上面,成为新的栈顶设备,attach上去。
文件:指物理介质上的文件(磁盘、光盘、U盘),很粗放的概念、linux下什么都是文件。
文件对象:每次打开设备时生成一个文件对象,注意它不是文件
套接字文件对象:每打开一次套接字设备生成一个套接字文件对象套接字FCB:每个套接字文件对象关联的FCB,用来描述套接字的其他信息
地址文件对象:每次打开传输层的tdi设备时生成的一个文件对象,用于套接字绑定
地址对象:传输层中为每个地址文件对象创建一个地址对象,用来描述一个地址(IP、端口号、协议等)
Socketirp:发往afd套接字设备(即\Device\Afd\Endpoint)的irp
Tdiirp:发往传输层设备(即\Device\Tcp,\Device\Udp,\Device\RawIp)的irp
物理卷设备:指磁盘卷、光盘卷、磁带卷等物理卷设备,由相应类型的硬件驱动创建
磁盘卷设备:指磁盘分区,设备对象名为\Device\HarddiskN\PartitionN 形式(N从0开始)
文件卷设备:由文件系统内部创建的挂载(即绑定)在物理卷上的匿名设备
Cdo:控制设备对象。一个驱动通常创建有一个cdo,用来与外界通信。
FSD:文件系统驱动,File SystemDriver缩写。
SID:指用户ID、组ID、机器ID,用来唯一标识。
簇:文件以簇为分配单位。一个文件包含N个簇,簇之间不必物理连续,一个簇一般为4KB
扇区:系统以扇区为单位进行磁盘IO。一个簇包含N个扇区,一个扇区一般为512B
文件块:磁盘文件中的文件块,对应于内核中的文件缓冲段
缓冲段:文件块在内核中的缓冲区域
ACL:访问控制表。每个Ntfs文件、内核对象都有一份ACL,记录了各用户、组的访问权限
Token:访问令牌。每个线程、进程都有一个Token,记录了包含的特权、用户、组等信息
主令牌:进程自己的令牌
客户令牌:也即模拟令牌。每个线程默认使用进程的令牌,但也可模式使用其他进程的令牌
总结来自于各种文档中,可能有些理解的不透,希望多多指教。