问题标签 [wdm]

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 回答
3779 浏览

c++ - 如何安装此驱动程序?

我从 MSDN 下载了IOCTL 示例驱动程序。我试图在此示例中运行一个可执行文件以从其 SYS 文件加载驱动程序,但在调用 StartService 时出现此错误:

577,根据错误代码文档,意味着:

我不明白为什么它不会启动它,因为在 Visual Studio 中,我转到驱动程序上的项目设置并在其上进行设置:

签名模式->“测试签名”

测试证书 -> 我使用“创建测试证书”选项来创建然后选择一个测试证书。

那么现在有什么问题呢?我怎样才能安装这个驱动程序?

0 投票
0 回答
691 浏览

c++ - 如何从 WDM 内核模式驱动程序计算最大 CPU 频率?

问题是这样的:我正在尝试根据IOCTL 示例骨架计算内核模式 WDM 驱动程序中的 CPU 频率,但如果我尝试使用 QueryPerformanceFrequency 或 QueryPerformanceCounter,它不想编译。我觉得可能是因为它是一个内核模式驱动程序,它不允许我包含包含这些方法的 Windows.h -它迫使我改用 Ntddk.h

通常我会在 Win32 控制台应用程序中使用此函数来计算此信息,但它不准确,因为它没有考虑 Intel CPU 上的 Turbo Boost:

英特尔芯片上 CPU 频率的实际公式是最大频率乘以可以从芯片本身的两个 CPU 寄存器(APERF 和 MPERF)中获得的比率:

翻译成这段代码:

我希望能够从 QueryPerformanceFrequency 获得 maximumFrequency,但由于我无法将其包含在内,我怎样才能获得最大频率?

0 投票
2 回答
2832 浏览

windows - 错误 C1083:无法打开包含文件:'\inc\wxp\warning.h':没有这样的文件或目录

背景:所以我选择了 Programming the Windows Driver 模型并尝试使用 Visual Studio 2013 Ultimate 构建它的第一个示例。虽然这本书似乎很有名,但示例代码没有更新。

我看到一些迹象表明使用旧的“构建”而不是当前的 msbuild/visual studio。但这是另一种学习,除非需要,否则我不准备做(特别是因为我没有找到 nmake 或构建速度不够快,而且我将学习不需要使用的旧构建过程)。

问题:错误 C1083:无法打开包含文件:'\inc\wxp\warning.h':没有这样的文件或目录 stddcls.cpp

构建示例给了我这个错误。我在包含路径中包含了 wdm.h 和 warning.h 的文件夹。Wdm.h 得到了解决,但 warning.h 继续抛出错误 - 我什至不知道 warning.h 包含/引用的位置。

如果需要,我可以发布整个代码。

是的,我是驱动程序开发的新手。

如果这本书太旧而无法使用,请提供指向 Windows 驱动程序开发的“较新”教程的指针。

0 投票
1 回答
166 浏览

device-driver - 尝试将 UNICODE_STRING * 转换为 UNICODE_STRING 时出错

我正在尝试编写简单的驱动程序,以便在
基于Steve Townsend Answer执行进程时获取图像的完整路径我为我的驱动程序中的ProcessCallback调用编写以下代码:PsSetCreateProcessNotifyRoutineDriverEntry

但是当我尝试构建我的代码时,我得到以下错误 str =(UNICODE_STRING*)&strBuffer;

错误无法转换为 UNICODE_STRING * 到 UNICODE_STRING

怎么了??

0 投票
1 回答
1286 浏览

windows - 将 ProcessID 转换为进程句柄

我正在尝试为监视进程编写基本驱动程序并获取进程路径。
我使用创建PsSetCreateProcessNotifyRoutine和检索进程信息,ZwQueryInformationProcess
但在我的ProcessCallback函数中,当我尝试使用当前进程时HANDLENtCurrentProcess它为我提供了运行另一个进程的当前进程。

例如:

我尝试在 c:\ 中运行 myProgram.exe,当我使用 Windows 资源管理器转到 C:\ 并运行 myProgram.exe 时,我的驱动程序给了我 explorer.exe 路径,因为 myProgram.exe 在 explorer.exe 内运行

我的 ProcessCallback 标头中有 processID

.我可以将其转换为进程句柄吗?

0 投票
0 回答
923 浏览

windows - 从 Windows 内核驱动程序持续写入文件

嗨,我是内核级编程的新手,正在尝试构建一个简单的日志写入驱动程序。我想要实现的是让持久驱动程序每隔预定义的时间间隔将引用的文本写入系统路径中的文件。(我还不熟悉 IRQ 挂钩)

我有以下全局变量的时间

我在 DriverEntry 中调用以下代码(但是,以下代码的问题是计算机重新启动时其写入功能失败)有人可以建议修复吗?它应该由 IRQ Major 调用吗?

0 投票
0 回答
161 浏览

windows - Moufiltr 驱动程序在 Windows 8.1 上重新进入

我已经构建了 moufiltr 示例,安装在多个操作系统上。如果 USB 设备是 USB 1.0,即 USB 低速设备,我发现在 Windows 8.1 平台上存在重入问题。相同的驱动程序可以在 Windows 7 x32/x64 或 Windows 8.1 x32/x64 上的 USB 1.1 设备上运行。我不知道为什么moufiltr驱动程序对这种特定组合有限制,USB低速鼠标+ Windows 8.1。会不会是我错过了什么?

任何建议将不胜感激。

谢谢!

以下是日志:


司机来自这里

0 投票
2 回答
343 浏览

windows - Windows Server 调试:在 WDM 内核模式驱动程序断点中查看用户模式堆栈

我正在使用 Visual Studio 内核模式调试器通过管道串行连接到运行 Windows Server 2012 R2 的 Hyper-V VM 调试 WDM 内核驱动程序 IOCTL。一旦我在 Driver IOControl 中遇到断点,是否可以查看用户模式调用堆栈?

目前我只能看到内核堆栈,例如:

0 投票
0 回答
586 浏览

dll - 您如何显式链接 .sys 文件

如何显式链接到 Windows 上的 .sys 文件?MSDN 说您可以使用 LoadLibrary() 和 GetProcAddress() 函数基本上显式地链接和访问 dll 的成员。我可以成功地使用它至少获得关联 dll 的句柄,但是当我使用 .lib 或 .sys 尝试它们时,它们不起作用或返回 null。我可以理解它可能不适用于 .lib (即使它在名称中表示库),但我读过 .sys 文件通常是 dll。

这将编译,但 .sys 文件返回的地址为零,如果我使用更典型的 windows dll,它不会返回零。如何链接 .sys 文件以便访问导出的函数?

0 投票
0 回答
511 浏览

assembly - 获取键盘(PS/2)扫描码集,使用asm

我想获取我的键盘当前扫描代码集。我正在使用的代码或多或少看起来像这样:

我从键盘(确认)收到 0xFA,而不是获取当前控制集编号。我会非常感谢任何建议。

(我从 Windows 驱动程序运行此代码)