问题标签 [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 回答
2911 浏览

c++ - UMDF,无法为 Microsoft 定义的类指定 [ClassInstall32] 部分

我正在学习下一个教程:如何编写您的第一个 USB 客户端驱动程序

而且我在编译项目时遇到了问题,我遇到了下一个错误:

在此处输入图像描述

我试图按照教程中的描述执行这些步骤,但在编译项目时总是出现上述错误。

另外,我尝试搜索,但没有找到任何有用的信息。

可能的附加信息,这可能会帮助您给我一条建议:

  • INF 文件: http: //pastebin.com/71d6bbQm
  • 使用 Windows 10、最新的 WDK 和 VS2015
  • 已经开始完全USB User-Mode Driver按照教程中提到的模板
0 投票
1 回答
378 浏览

kernel - 使用内核模式驱动程序进行远程调试的问题

我在那里使用 windows7 主机我安装了 Vusual Studio 2013 和 WDK 8.1 我还有使用 Virtual Box 的 Windows 10 虚拟机。

我从模板创建新的 KMDF 驱动程序并尝试调试它。

我成功配置了目标机器(与 win10 是虚拟的),驱动程序成功部署,但调试器仍然处于非活动状态。这是来自调试器即时窗口的日志:

在此调试器卡住后,控制台处于非活动状态并显示文本“Debuggee 正在运行...”我没有在 DriverEntry 函数处到达断点,看不到来自内核和驱动程序的任何调试消息。

我还尝试了调试网络设置,但结果相同。

怎么了?

是否存在 VirtualBox 问题?还是因为我尝试在win10上调试win7驱动?

0 投票
1 回答
233 浏览

driver - .reload 命令后与目标的连接丢失

在 WinDbg 中:文件->符号文件路径?我将路径设置为: Srv*c:\symbols*https://msdl.microsoft.com/download/symbols 在此路径文件设置之后,我正在尝试制作此示例: https ://msdn.microsoft.com/en-us/library/windows/hardware/mt269367 在第 5 节第 2 步中。当我键入.reload /f调试器失去了与目标的连接。如果我不设置符号文件路径,WinDbg 也会在同一点分解。

对我来说,windbg 似乎失去了与目标的连接并且不再建立它。即使我在 VM 上重新启动目标系统。

有人可以告诉我发生了什么,我做错了什么或为什么会发生这种情况?

我正在使用 VMWare Player。我的主机和目标操作系统是 Windows 10 Pro。VMWare 配置为在 NAT 中使用网络。Echo 驱动安装成功。

在下面,您可以看到 WinDbg 日志:

问候。

0 投票
1 回答
1750 浏览

c - 链接:错误 LNK2001:未解析的外部符号 NtProcessStartup

我是 Windows 驱动程序开发和微过滤器的新手,我正在尝试使用命令行工具构建nullFilter示例。所以我添加#pragma comment(lib, "FltMgr.lib")到 .c 文件并成功发出以下命令:

但是,当我尝试创建 sys 文件时:

我正在使用 VS2012 Express 和 WDM8。我的 LIB 环境变量是:

我究竟做错了什么?我错过了什么吗?

0 投票
1 回答
645 浏览

windows - 如何注册 acpi 事件通知?(AcpiInterfaces.RegisterForDeviceNotifications)

现在我想在我的 acpi 驱动程序中添加该功能。功能是:获取 BIOS 通知。我搜索一些文档,然后编写代码

CompletionRoutine 返回 STATUS_SUCCESS,但接口仍然是 Empty...

Parameters.QueryInterface.Interface 没有填写...有人可以帮我吗???MSDN 关于 IRP_MN_QUERY_INTERFACE 在此处输入链接描述 在此处 输入图像描述

0 投票
1 回答
455 浏览

windows - 使用 C(内核模式驱动程序)创建 Windows 内核转储

我需要在 Windows 中使用内核模式驱动程序创建完整内存和内核内存转储。

就像.dump命令使用 WinDBG 执行的操作一样,但我需要在我的代码中执行此操作。

任何想法如何做到这一点?

0 投票
1 回答
243 浏览

windows - 如何从我的 Windows 驱动程序代码中区分 devmgmt 的禁用和卸载?

我正在研究来自 WDK7 的 Microsoft Toaster 示例代码,我发现了一个微妙的问题。

现在在 Windows 7 上尝试编译的驱动程序(WDM busenum 和 WDM features1)。

按照自述文件的指导,enum -p 1添加一个烤面包机设备,然后,我打开设备管理器(devmgmt),找到设备,卸载它。

从 devmgmt.msc 卸载烤面包机设备

这将破坏烤面包机的devnode(我相信);我们可以看到ToasterDevice01节点现在从设备管理器中消失了。!devnode 0 1显示 toaster devnode 仍然存在,State=DeviceNodeUninitialized (0x301),Previous State=DeviceNodeRemoved (0x312)。

然后,我执行enum -p 1尝试再次添加设备。但我收到错误 0x57(ERROR_INVALID_PARAMETER)。

枚举 -p 1 ,得到 0x57 错误

我调试源代码并找出原因:buspdo.c没有区分devmgmt的Disable和Uninstall操作。他的代码逻辑是:

  • 如果烤面包机被意外移除(enum -u 1),它会调用Bus_DestroyPdo()正确的行为。
  • 如果 toaster 从 devmgmt 被禁用,它不会调用Bus_DestroyPdo()这也是正确的。

问题是,当最终用户从 devmgmt 执行卸载时,它遵循禁用路径。现在发生了一些不好的事情:Windows 删除了 toaster devnode,但是 toaster bus driver 不会破坏相应的 PDO,因此,当用户下次执行时enum -p 1,toaster bus driverBus_PlugInDevice()会指责 SerialNo==1 的 toaster 设备已经存在,因此失败用户请求。

在此处输入图像描述

BTW:Toaster 的 KMDF 版本也有类似的问题(今天只尝试了静态枚举版本)

现在我的问题很清楚了:如何区分禁用和卸载,我应该在总线驱动程序还是子设备驱动程序中进行?也欢迎回答 KMDF 版本。

0 投票
2 回答
412 浏览

c++ - 带有 IRP_MJ_WRITE 的 IoBuildAsynchronousFsdRequest

我在磁盘驱动程序上开发了一个 WDM 过滤器驱动程序。我想发送一个异步请求以在磁盘上写入数据。当我删除函数中的writeBuffer内存时,窗口会崩溃。WriteDataIRPCompletion

我的问题是:如何安全地释放writeBuffer内存而不会崩溃?

这是我的发送请求代码:

这是我的完成例程代码:

0 投票
1 回答
321 浏览

windows - 是否有 Windows 内核 API 可以获取当前 CPU 使用百分比或空闲百分比?

我问这个问题是因为我想从我的内核模式Windows 驱动程序中知道这一点。

我有一些从用户模式移植的库代码,其中有一些附带的压力测试要运行;压力测试代码需要知道 CPU 何时空闲。

简单的谷歌搜索没有显示任何结果,至少从前几页开始。

0 投票
0 回答
638 浏览

usb - Windows 错误代码 38 表明设备驱动程序无法卸载