2021.01.07

Windows命名风格

参考《2010.Windows内核原理与实现.潘爱民》2.3.2WRK源代码说明,

函数

内核

前缀全称
CcCache 缓存管理器
CmConfiguration Manager 配置管理器(即注册表)
Dbg/KdDebug/Kernel debug 调试支持函数
ExExecution 执行体函数
FsRtlFile system Runtime library 文件系统驱动程序运行函数库
FstubFile system stub 文件系统引导接口函数
HalHardware abstract layer 硬件抽象层提供的接口函数
IoIO 输入输出管理器
KeKernel 内核函数
LpcLocal procedure call 本地过程调用函数

:LPC只局限与一个机器的跨进程调用。RPC(Remote Procedure Call)分狭义和广义,狭义仅指跨机器的函数调用,广义当然包括把RPC相同的机制也用到了本地上,比如之前学习的D-BUS就虽然只在一个机器上运作,但也自称RPC,来源wikipedia: D-Bus

In computing, D-Bus (short for "Desktop Bus"[4]) is a software bus, inter-process communication (IPC), and remote procedure call (RPC) mechanism that allows communication between multiple processes running concurrently on the same machine.[5][6]

注意下面的最后一句话,已画下划线强调,

D-Bus was conceived as a generic, high-level inter-process communication system. To accomplish such goals, D-Bus communications are based on the exchange of messages between processes instead of "raw bytes".[5][16] D-Bus messages are high-level discrete items that a process can send through the bus to another connected process. Messages have a well-defined structure (even the types of the data carried in their payload are defined), allowing the bus to validate them and to reject any ill-formed message. In this regard, D-Bus is closer to an RPC mechanism than to a classic IPC mechanism, with its own type definition system and its own marshaling.[5]

前缀全称
MmMemory 内存管理器
NtWin New Technoloy WinNT系统服务
ObObject 对象管理器
PerfPerfermance 日志记录函数
PoPower 电源管理
PpPlug and Play 即插即用管理器
PsProcess 进程/线程
RawRaw文件系统的函数
RtlRuntime Library 内核运行库函数
SeSecurity 安全函数
VfVerify 驱动程序检验器
WmiWin Management ? Win管理规范
Zw与Nt前缀同名的一套函数,省去了参数验证的步骤,其他逻辑相同,可以认为以Nt前缀为名称的函数针对用户模式的调用者,以Zw前缀为名称的函数针对内核模式调用者。

变量

srv03rtm/printscan/print/spooler/localspl/init.c有诸多sz开头的字符串

参考注册表支持的变量类型

REG_SZ:A null-terminated string. This will be either a Unicode or an ANSI string, depending on whether you use the Unicode or ANSI functions

所以sz大概是String Zero。

类型

字符串

下述简称的互斥、联合关系:[N/L][P][C][W/T](CH/STR)

:参考的之前添加到浏览器收藏夹learning.kernel.windows.CSDN:字符串类型(加入到本md后,这个收藏链接便可删掉了)

简写含义
NNear 在16位系统中代表16位的段内地址
LLong(far) 在16位系统中代表16位的段地址+16位的偏移地址

在32位系统中 N和L已经没有作用,只是为了向前兼容(兼容16位机器)才保留这些定义。

:16位系统即现在x86中的实模式,该系统/模式下的唯一寻址方式是segment << 4 + offset。关于16位系统/实模式寻址,参考What are the segment and offset in real mode memory addressing?和回答指向的一篇文章Real-Mode Memory Management

简写含义
PPointer 指针
CConstant 常数
WWide 2字节的
T自适应位宽,在UNICODE编译环境下采用2字节,在ASCII环境下采用1字节
CHchar 字符
STRstring 字符串