c - 什么是特权指令?

标签 c winapi debugging odbc

我已经添加了一些编译干净的代码并且刚刚收到这个 Windows 错误:

---------------------------
(MonTel Administrator) 2.12.7: MtAdmin.exe - Application Error
---------------------------
The exception Privileged instruction.

 (0xc0000096) occurred in the application at location 0x00486752.

我即将开始寻找错误,我希望我所做的事情很愚蠢,而恰好会产生此消息。代码编译干净,没有错误或警告。 EXE 文件的大小已增长到 1,454,132 字节,并包含指向 ODCS​​.lib 的链接,但它是 Win32 API 的纯 C 语言,并带有 DEBUG(在 Windows 2000 上的 P4 上运行)。

最佳答案

要回答这个问题,特权指令是处理器操作码(汇编指令),只能在“主管”(或 Ring-0)模式下执行。 这些类型的指令往往用于从 Windows 内核访问 I/O 设备和 protected 数据结构。

常规程序在“用户模式”(Ring-3)下执行,不允许直接访问 I/O 设备等...

正如其他人提到的,原因可能是堆栈损坏或函数指针调用困惑。

关于c - 什么是特权指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/89607/

相关文章:

c - uint32_t 到 int32_t 的快速不安全转换

c - 随机化 4 个不同的数字

c - B树和B+树的顺序有限制吗?

c++ - 如何将简单的几何图形组合在一个物体中?

c# - 在窗口打开时获得通知的最有效方式

linux - 为什么我无法在自修改代码中单步执行 aeskeygenassist 指令?

node.js - 使用 Node 检查器进行调试 : Cannot GET/

递归创建树

C++/具有多个独立窗口的应用程序

asp.net - 如何跟踪 ASP.NET 安全异常