据我了解,在用户模式下执行的线程最终可以输入切换到内核模式的代码(使用 sysenter)。但是从用户代码发出的线程如何执行内核代码呢?
例如:我调用 CreateFile(),然后它委托给 NtCreateFile(),后者又调用 ZwCreateFile(),而不是 ZiFastSystemCall()……而不是 sysenter……利润,内核访问?
编辑 这个问题: Windows 如何保护转换到内核模式有一个帮助我理解的答案,请参阅引用:“用户模式线程正在导致由 Ring 0 代码捕获的异常。用户模式线程被暂停并且 CPU 切换到内核/环 0 线程,然后它可以检查用户模式线程的上下文(例如,调用堆栈和寄存器)以确定要做什么。” 另见这篇博文,内容丰富: http: //duartes.org/gustavo/blog/post/cpu-rings-privilege-and-protection