问题标签 [kmdf]
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.
c++ - 调试内核驱动程序时,Visual Studio 无法启动调试会话
当我尝试从 Visual Studio 2013 调试我的 KMDF 驱动程序时,我收到以下错误
Visual Studio 的 Windows 调试扩展
无法启动调试会话,错误 8004005:未指定的错误
在我收到错误之前,它会在目标机器上安装驱动程序。是否有任何日志文件可以让我查看更多信息?
编辑1:
主机是 Windows 7,目标是安装在 VMWare ESXi 中的 Windows 8.1
编辑2:
我现在已经用 WINDBG 进行了测试,并得到以下日志输出:
使用 NET 进行调试
打开 WinSock 2.0
初始化套接字失败。错误 On-2147467259
内核调试器初始化失败,HRESULT 0x80004005
“未指定的错误”
我还收到以下消息框:
无法使用启动内核调试
net:port=50230,key=XXXXXXXXXXXXXXX 参数,HRESULT 0x80004005
c - Windows 服务器上的 KMDF
对 Windows 设备驱动程序的世界有点陌生。我使用 Visual Studio 2013 创建了一个新的 KMDF 驱动程序项目。配置管理器具有适用于 Windows 7、8、8.1 的构建配置,但没有适用于服务器操作系统(WS 2008、2012)。
问题:由于没有针对它们的特定构建配置,哪些构建目标(如果有)适合安装在 Windows Server 2008/2012 上?
谢谢
windows - 如果我在基于 kmdf 的过滤器驱动程序中有 wdfdevice 和 wdftarget,如何获取设备的属性?
我有三个磁盘:disk0、disk1、disk2。每个设备都会调用 Evtdeviceadd 例程 3 次。现在我想捕获读取的 IRP,当它来自磁盘 1 时,我想将目标从磁盘 1 更改为磁盘 2。那么我将如何区分我从disk1获得的请求。为此,如果我能够获得设备属性,那么我可以了解或任何其他解决方案?
winapi - KMDF 构建类型
在使用 Visual Studio 2013 在 Windows 上构建内核模式设备驱动程序 (KMDF) 时,有 32 位和 x64 位构建选项。问题是:在目标机器上安装设备驱动程序时,32 位版本会在 64 位操作系统上运行,还是我需要确保在 64 位操作系统上获得 x64 版本?
(我假设 x64 构建不会在 32 位操作系统上运行,但在这里也将不胜感激)。
windows - 在 Windows 7 上安装内核模式驱动程序
我一直在学习微软的教程。我已经在 Windows 7 64 位上编译了 KMDFSmall 内核设备驱动程序。我已经完成了教程的编程部分,我的代码编译成功,我还有 KmdfSmall.inf 文件、KmdfSmall.sys 文件、KmdfSmall.cer 文件、WdfCoinstaller01011.dll 文件、kmdfsmall.cat 文件。
但是,我没有测试机器来运行它。我只想把这个玩具驱动安装到我自己的机器上。我在这里阅读了如何使用添加硬件向导安装它。我完成了这些步骤,但我遇到了问题。
因此,我单击开始并键入 hdwwiz 并运行添加硬件向导。我进行手动安装,选择显示有磁盘的 INF 文件,出现 KmdfSmall 设备,我单击下一步,但我收到以下错误消息。
未安装以下硬件。Kmdf小型设备
安装设备时发生错误。
该系统找不到指定的文件。
不知道找不到什么文件?
这是我的 INF 文件:
kernel - 在 x86 上,当操作系统禁用中断时,它们会消失,还是会排队并“等待”中断重新出现?
我的平台是 Windows 上的 x86 和 x86-64。
中断优先级系统的要点是让最高优先级的中断击败其他中断。为了强制执行这一点,我猜测 Windows 将完全禁用所有较低级别的中断,直到更高级别中断的 ISR 完成。
但是如果 CPU 不监听中断,会发生什么?他们只是默默地消失了吗?还是它们在硬件中排队,等待中断再次启用?如果它们被存储,在哪里?排队人数有限制吗?如果太多的中断未处理会发生什么?有什么工具可以检测问题,以防中断处理积压的罕见情况?
windbg - Windows 内核驱动程序 - 内存访问异常
我正在尝试更好地了解驱动程序,并从头开始构建了一个非常基本的驱动程序。
我将它安装在 Windows 7 x64 机器上,并关闭了驱动程序签名强制。驱动程序安装得很好,但是当我尝试启动它时,我得到:
在对 Windbg 进行进一步调查后,我得到:
做 !analyze -v 让我:
似乎 Windows 甚至无法访问我的 DriverEntry 函数。关于如何解决此问题或进一步调试的任何想法?谢谢!
c - 为什么 Windows Driver Kit 中没有 WDM 内核模式驱动程序模板?
我遇到了经验很少的内核模式驱动程序。这是我想做的事情:
- 有一个加载驱动程序的用户模式应用程序。
- 让用户模式应用程序写入它,以便向它发送指令。
- 让驱动程序将 RDMSR 指令发送到 Intel 芯片。
- 将结果返回给用户模式应用程序。
我读过这篇文章,其中描述了您可以完成此行为的不同方式(缓冲 I/O、直接 I/O 或两者都不是)。
我的问题是……这篇文章的代码代表了您构建WDM驱动程序的方式,我希望能够使用 Windows 驱动程序工具包创建 WDM KMDF 项目模板,但是当我下载了 Windows 驱动程序工具包时(WDK),唯一的 KMDF 驱动程序模板是用于WDF驱动程序的。MSDN 有一篇文章描述了两者之间的差异。这对我来说有点奇怪。我期望得到一个开箱即用的模板,我可以修改它以像我链接的文章中那样工作,但我没有看到它。为什么没有 WDM KMDF 驱动程序的模板?
只是一个补充说明,您可以很容易地根据它创建设备的方式来判断驱动程序的类型(IoCreateDevice 表示 WDM,而 WdfDeviceCreate 表示 WDF)。
windows - 向 PnP 管理器发出设备已消失的信号
我目前正在为Nintendo Wii Remote开发KMDF HID 微型驱动程序。我的 HID 微型驱动程序替换了 HIDClass 驱动程序的 HidBth 微型驱动程序(我使用的是 KMDF HID 微型驱动程序示例,它实际上是一个筛选器驱动程序并使用此“kmdfhidminidriver”转发所有请求)。
所以我的问题是,当我关机时 Wii 遥控器(按下电源按钮或取出电池)时,PnP-Manager 将无法识别设备已消失。Windows 仍然在设备管理器中显示该设备,并认为一切正常且正在运行。设备消失的唯一提示是,L2CAP-Channel 已关闭,我得到了L2CAP-Callback,并使用指示符代码 “RemoteDisconnect”调用。
我的问题是,我如何向 PnP 管理器发出设备已断开连接的信号?我尝试使用“WdfDeviceSetDeviceState”并将“Removed”设置为 true。但随后设备管理器显示驱动程序错误(代码 24)。我想要一个解决方案,将设备从设备管理器中删除而不会出现任何错误,例如拔下 USB 设备。
附加信息:我正在使用 WDK 8 和 WDF 1.11;驱动程序目标系统是 Win 7 和 8。
windows - 如何为我的 .inf 创建 Windows 安装包?
我已经完成了以下步骤: 1. 构建和编译我的内核驱动程序,它模拟磁带设备驱动程序。2. 创建所需的 .inf 3. 创建所需的 .cat 4. 签署文件 5. 通过手动“右键单击”-> 从资源管理器安装在 .inf 文件上进行测试
现在我准备做一个更简单的安装包,但是不知道怎么做?
我试图创建一个目录 C:\drivers 我还创建了一个 dpinst.xml 文件,其中包含:
并复制了 dpinst.exe 并创建了一个子目录“storage”,我将 .inf、.cat 和 .sys 文件复制到
当我尝试通过双击此目录中的 dpinst.exe 进行安装时;它给出消息“不需要(没有更新设备)”
但这不是 PnP 设备驱动程序吗?它是 KMDF(内核设备驱动程序)吗?
有人知道如何创建安装包吗?
最好的问候托马斯