问题标签 [windows-kernel]

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.

0 投票
1 回答
1048 浏览

windows - 如何成为设备驱动程序开发人员

我是 C++/MFC/Qt/Win32 开发人员。我想转向设备驱动程序编程。最近我购买了 Ronald D. Reeves 的 Windows 7 设备驱动程序。然后,当我查看亚马逊的评论时,我感到气馁。您能否建议我应该如何进行设备驱动程序编程。

问候

0 投票
2 回答
1731 浏览

windows - 挂钩来自内核驱动程序的进程套接字调用

谁能给我一个内核驱动程序的例子,它可以挂钩进程套接字调用(发送、接收等)并用我自己的函数来接收它?

谢谢!

0 投票
1 回答
1512 浏览

c - FsRtlIsNameInExpression 从不匹配任何内容

我使用Boyer-Moore 算法在内核驱动程序中进行字符串匹配,但我还需要实现基本的通配符支持。这个关于SO的答案提到了函数FsRtlIsNameInExpression,它看起来正好适合我的需要。它甚至看起来像处理 Unicode 字符串的大小写不敏感。

但它甚至不能让它与自己匹配一个简单的字符串。

我尝试了一些东西,但 FsRtlIsNameInExpression 从来没有匹配任何东西。这是我用来测试的一些代码(我把调用放在MyTest我的DriverEntry例程结束时)。

作为记录 :

  • 我正在使用 WDK 版本 7600.16385.1,检查构建(我的代码,不是 Windows)
  • 该驱动程序在我的 Windows 7 Ultimate 64 位上托管 Windows 7 Pro 64 位的 Virtual Box 中运行
  • 驱动程序由测试证书签名
  • 我在内核调试器中跟踪代码
  • 代码不会崩溃,但不能在用户态调用

我缺少什么明显的东西?

0 投票
1 回答
1229 浏览

windows - 在 Windows 内核系统调用跟踪中,这些神秘地址是什么?

我正在使用 Windows 事件跟踪 (ETW) 对 Windows Server 2008 R2 中的系统调用进行内核跟踪。

我在跑步:

在生成的内核跟踪中,我正在查看 SysCallAddress 属性,我看到了很多我所期望的:例如 0xFFFFF80001999EE0,它是 nt!NtWriteFile。

问题是我在 0xFFFFF960 范围内看到很多地址,例如 0xFFFFF9600004421C,我不知道这些地址是什么。内核调试器中的 ln 命令不返回任何这些地址的信息。有人知道内核跟踪器将这些地址视为系统调用的内容吗?

0 投票
1 回答
554 浏览

debugging - Windows 内核调试 - 获取线程消息队列的地址?

我想监视应用程序主线程的消息队列的内容,但我不知道如何获取它的地址(WinDbg,内核调试)。有人对我有提示吗?问题是,当我们的主线程在WaitForSingleObject中停留更长的时间时,我们有时会在之后调用PostMessage时得到“配额不足...” 。我很清楚这是关于消息队列溢出的问题,但我无法找到(使用 Spy++)同时向主线程发布这么多消息的人。

不,我现在不能改变糟糕的设计 :) 我知道不能使用主线程来等待一个事件,但正如我所说 - 我不能在接下来的几个月内改变它。

我想找出哪些消息溢出队列,我的第二个想法(第一个是Spy++)是观察主线程的消息队列。

也许还有其他好主意?

问候, Maciej

0 投票
1 回答
4560 浏览

windows - 如何获取内核模块 nt 和 win32k 的地址?

我需要知道加载 nt 和 win32k 的基地址。我可以通过在启用内核调试的情况下启动系统、启动内核调试会话并运行命令lm来获取已加载模块的列表来查找此信息。

我想要做的是以编程方式确定这两个模块的加载位置,而无需启动到调试模式并使用内核调试器。我需要用于解析 Windows 事件跟踪日志文件中的系统调用的基地址。

我正在使用的系统正在运行 Windows Server 2008 R2。

0 投票
1 回答
395 浏览

kernel - 用户到内核的转换和 XMM 寄存器状态

我在内核代码中使用AES-NI 。AES 新指令使用 XMM 寄存器,我想确保从用户模式到内核模式的转换以及回到用户模式的转换将保留 XMM 寄存器的状态。

MSDN 链接如下:

在 64 位版本的 Windows 中,操作系统跨线程(和进程)切换保留 SSE 寄存器。结果是 64 位驱动程序代码可以在任何 IRQL 上安全地使用浮点运算。

它是否确认我在调用内核代码时不必保存寄存器状态?

0 投票
1 回答
374 浏览

c - 如何将应用程序变成内核模式运行代码?

我有一个 C 应用程序,它可以确定笔记本电脑的电源何时开/关。只有当我打开这个 .exe 文件时它才有效

有没有办法让它在内核模式下工作?这意味着我不想运行.exe,而只是打开笔记本电脑并在电量不足时收到有关电量的消息。

这是我的 .exe :

0 投票
1 回答
404 浏览

c - Microsoft 的“stmedit”WFP 示例是否适用于 Windows 8?

Microsoft 提供了一个示例stmedit,用于演示Windows 筛选平台 (WFP)技术。您可以在此处查看示例。

此示例也在 Windows 7 DDK 中分发,效果很好。但是,当尝试在 Windows 8 Release Preview(32 位和 64 位)上运行此示例时,它不起作用。

代码在 Visual Studio 2012 中构建良好,甚至可以作为驱动程序安装。事实上,它甚至可以net start stmedit很好地启动。但是,它不会修改任何网络流量,尽管它应该在网络流量中用“晴天”替换任何出现的“雨天”(我已经使用其记录的注册表设置对其进行了配置)。

有没有人能够让这个示例在 Windows 8 上运行?

0 投票
2 回答
283 浏览

windows - 安装 Windows 内核模式驱动程序需要网络访问?

我正在尝试为自己获得证书,支付 200 美元才能获得它。在我去购买之前,有人知道安装内核模式驱动程序(需要对代码进行签名)是否必须具有网络访问权限,它如何验证真实性?等等。