问题标签 [kernel-mode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wdk - 在内核模式驱动程序中存储数据
我的内核模式驱动程序中有一个数组。驱动程序是否可以保存阵列数据并在加载时恢复相同?
driver - 将值从内核模式发送到用户模式
我正在为反病毒程序开发内核模式驱动程序,但在驱动程序部分有问题
我想将一个字符串值(例如“String”)从内核模式驱动程序发送到用户模式应用程序。谁能帮我做到这一点?
virtual-address-space - 为什么内核模式下的驱动程序必须非常小心地直接读取或写入用户空间中的地址?
来自 msdn:
在内核模式下运行的驱动程序必须非常小心地直接读取或写入用户空间中的地址。这个场景说明了原因。
- 用户模式程序发起从设备读取某些数据的请求。程序提供缓冲区的起始地址来接收数据。
- 在内核模式下运行的设备驱动程序启动读取操作并将控制权返回给它的调用者。
- 稍后,设备会中断当前正在运行的任何线程,以表示读取操作已完成。中断由运行在该任意线程上的内核模式驱动程序处理,该线程属于任意进程。
- 此时,驱动程序不得将数据写入用户模式程序在步骤 1 中提供的起始地址。该地址位于发起请求的进程的虚拟地址空间中,这很可能与当前进程。
任何人都可以用其他方式解释这一点吗?第 2、3、4 点不是很清楚。谢谢。
operating-system - 指令如何知道它是在特权模式还是用户模式下运行?
教授在课堂上说“[汇编]指令知道它是在特权模式还是用户模式下运行,因为如果产生了陷阱,那么它就是用户模式”。
首先,我假设它不能是任何陷阱,而是一个特定的陷阱,表示该命令不能在用户模式下运行。
其次,这似乎非常低效:运行整个命令并检查是否存在陷阱。为什么没有设置标志或其他东西?这不是说如果它不起作用,那么我们就知道有问题吗?所以真的没有办法检查吗?
x86 - Windows NT 本机应用程序是否可以访问 x86 软件中断(如 int 19)?
假设我想编写一个在 Windows NT Native 模式下运行的应用程序或驱动程序(即只使用 NTDLL.DLL 函数并在 ntoskrnl.exe 启动时运行。
这个应用程序可以访问 x86 中断吗?IE,我可以这样写代码:
并让它返回启动菜单?或者即使在内核模式下仍然不允许这样做?
64-bit - 在 x64 驱动程序中挂钩 ZwTerminateProcess(无 SSDT)
我找到并阅读了这个问题,但我没有找到答案SSDT hooking alternative in x64 systems
我想保护我的应用程序不被其他程序终止。在 32 位版本的 windows 中,我使用了SSDT hooking
for hookingZwTerminateProcess
或ZwOpenProcess
. 我现在必须升级我的程序以在 64 位版本的 Windows 中使用。不幸的是,在 64 位窗口中我们不能使用SSDT
钩子(因为 Patch Guard (KPP)),请注意,在这种情况下我不想绕过 PG,我只能使用内核模式钩子。例如,我不希望我的程序开始被以下代码终止(偶数):
为了完成这项工作,我使用了以下函数 ( NewZwOpenProcess
) 并将其替换为ZwOpenProcess
SSDT 中的原始函数,但在 x64 窗口中我不知道该怎么办:(:
任何想法 ??
(如果我的英语不好,请原谅)
operating-system - 用户模式和内核模式对用户提供保护?
就我个人而言,我认为用户模式允许受限访问,因此不能更改不应该更改的内容,因此是内核模式。
虽然假设还不够好。有谁知道他们为什么或如何为用户提供保护。
windows - 如何在 ACPI-filter Driver(WDM) 中使用 ACPI 通知发送基于 ACPI 的亮度热键?
首先,我不得不承认我是硬件驱动程序开发的新手。
假设用户可以在 Windows 8.1 上使用基于 ACPI 的亮度热键触摸/按下笔记本键盘上的硬件键(例如亮度提高),系统将收到基于 ACPI 的通知并增加显示亮度并显示屏幕显示,它是在屏幕左上角显示亮度级别的垂直条。
现在我们必须主动提高这些基于 ACIP 的通知,让系统完成增加/减少显示亮度并在我们的 ACPI-filter 驱动程序接收到从我们的应用程序发送的 IRP 时在屏幕上显示屏幕显示(客户端需要此 OSD) .
首先,我阅读了“与硬件按钮(热键)集成”,但它没有发布如何在内核模式驱动程序中发送这些“ACPI_NOTIFY_INC_BRIGHTNESS_HOTKEY”或“ACPI_NOTIFY_DEC_BRIGHTNESS_HOTKEY”。
所以我找到了"Supporting Display Output and ACPI Events"。它表示调用 DxgkDdiNotifyAcpiEvent 来通知显示微型端口驱动程序有关 ACPI 事件。不知道是不是误会了,我们可以主动调用这个程序来提高ACPI_NOTIFY_INC_BRIGHTNESS_HOTKEY,让系统提高亮度,显示On Screen Display。
我想我可能无法调用 DxgkDdiNotifyAcpiEvent,因为我几乎无法构造 DxgkDdiNotifyAcpiEvent 所需的“PVOID MiniportDeviceContext”。
由于我的英语很差,请原谅我对我的需求和研究的冗长解释......
总之,这是整个流程:
- 我们的应用程序使用 CreateFile 打开我们的 ACPI-Filter 驱动程序以便与其通信。
- 应用程序使用 DeviceIoControl 向 ACPI-Filter 驱动程序发送 Irp
- ACPI-Filter 驱动程序接收到 Irp 并引发基于 ACPI 的通知来告诉系统增加/减少显示器的亮度,最重要的是,显示屏幕显示(如果 ACPI_NOTIFY_INC_BRIGHTNESS_HOTKEY 通知成功通知系统,则没有需要关注这个需求,因为系统会在屏幕上显示 OSD)
当涉及到第 3 步时,有人可以告诉我如何完成它吗?示例代码是最受欢迎的。
或者,可以在 UMDF 上完成吗?
根据我的研究,HID报告是满足这个需求的另一种方式,但我认为我应该从头到尾编写HID-minifilter驱动,没有时间让完成。最重要的是,我不熟悉这些模块。
c++ - 如何从 Windows 驱动程序(又名内核空间)确定 CPU 和内存消耗
这个问题其实很简单:我需要从Windows下的内核模式驱动中知道当前整个系统的CPU和内存消耗。当然,我看过相关的问题并尝试过这段代码。结果不好:用于开发驱动程序的 Visual Studio 2013 环境不知道上述示例中的任何标头。例如:
上面的代码没有编译。我仔细检查了 MSDN 中几乎所有的“Kernel-Mode Driver Reference”,寻找类似的功能,但没有成功。
那么,有谁知道如何从 Windows 下的内核模式驱动程序中获取相同的信息?
或者这是不可能的?(如果是真的,这很奇怪。)
performance - 用户与内核系统调用之间的区别
系统调用是程序如何从操作系统内核请求服务。
它们可以发生在用户模式和内核模式中。
有什么区别?
例如:
- 高架
- 系统时间