问题标签 [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.
visual-studio-2015 - 调试器无法通过网络连接闯入 vs 2015 专业版中的 KMDF 驱动程序
我正在尝试使用 update2 在 Visual Studio 2015 Professional 中设置远程驱动程序调试。我的主机在 Windows 8.1 家庭版 64 位中运行,目标是在 Windows 10 家庭版 64 位中运行的单独计算机。我可以通过网络成功配置/配置目标计算机,然后按F5调试/部署KMDF驱动程序,部署驱动程序大约需要2分钟,然后部署的显示停止,我认为部署的过程已经完成,然后我看到了目标站点的设备管理器,驱动已经安装成功,但是当我按“全部中断”按钮中断调试器时,什么也没发生,不能中断调试器,kd控制台窗口(即kd > ) 仍然被禁用(灰色),它不能输入任何命令。所以这意味着司机
以下是部署阶段“Debugger Immediate Window”输出的信息。这个问题我花了好几个星期才解决,但我还是解决不了。我希望有人可以帮助我或给我一些建议,不胜感激!
visual-studio - 为 VS 2015 企业版安装模板
我有 VS 2015,也有 Windows Driver Kit 10.0 但是在 VS 2015 Enterprise 中,我找不到任何模板来编写 KMDF 相关开发。我试图安装所以搜索 KMDF 或 WDF 的模板,但我找不到它。如何在 VS 2015 企业版中安装 KMDF 模板?谢谢
windows - 连接两台电脑后在单独的电脑上调试驱动
我即将开始一个需要在单独的计算机上调试程序的项目。基本上我正在编写一个文件系统过滤器驱动程序。它在窗户上。为此,驱动程序的调试必须在单独的系统上进行。
我需要知道如何连接两台计算机,以便我可以在一个系统(Windows 7)上运行驱动程序并在不同系统(Windows 8.1)的 Visual Studio IDE 中调试它
更新:在 msdn 上给出了以下文章https://msdn.microsoft.com/en-us/library/windows/hardware/hh439665(v=vs.85).aspx
它确实显示了创建驱动程序但没有指定如何连接两台计算机,这是我的问题。如何在 VS 中进行远程调试以及如何进行连接两台计算机的设置
任何帮助将不胜感激,谢谢
windows - KMDF WdfDriverCreate 函数返回“资源不足”
我正在尝试编写一个 kmdf 驱动程序来针对自定义 PCIe 板。按照微软提供的默认项目,我对 .inf 文件做了一些小改动,主要是更改字符串的名称并提供我们 PCIe 板的硬件 ID。
部署驱动程序正常工作。驱动程序安装并显示在设备管理器上,但它说它没有正确安装或可能已损坏。
在调试时,我看到 WdfDriverCreate 失败,错误为 0xC000009A,这意味着资源不足。
作为参考,这是 kmdf 模板项目为您生成的代码,这是我目前正在运行的:
我的第一个问题是,什么会导致这种情况?
通过运行引发错误后,我尝试转储日志
但它永远不会奏效。我确保所有符号路径都正确加载,如下所示
“CIPDriver”是我的驱动程序。
运行转储命令时,输出如下:
和 .sympath 的输出
其中 C:\winsymbols 是我通过以下指南获得的 Microsoft 符号缓存:https ://msdn.microsoft.com/en-us/library/windows/hardware/ff558829(v=vs.85).aspx
我的第二个问题是,如何正确设置调试器以转储日志?
谢谢
c++ - 在 KMDF 驱动程序中包含 fstream.h 后的链接器错误
我是驱动程序开发的新手。这是我的代码:
产生以下错误列表:
c++ - 使用 DiInstallDriver 以编程方式安装 KMDF
我想在 Windows 7 32 位机器上安装 kmdf 驱动程序。起初我使用 hdwwiz(添加硬件工具),它工作正常。
现在我想使用软件以编程方式安装它。经过一番研究,我发现DiInstallDriver
我使用了以下代码
运行软件后我得到“驱动程序安装正确!”,这意味着功能成功返回,但我在设备管理器中找不到它?
知道出了什么问题吗?
windows - WDF 内部 IOCTL 不返回输出
我目前正在编写一个公开虚拟 COM 端口的驱动程序。在驱动程序中,我从端口 FDO 将内部 IOCTL 发送到堆栈下方,由 PDO IO 队列处理。由于某种原因,输出数据没有写入提供的输出存储器。
我已通过 windbg 确认正在调用 IoCtl_Vcp_GetPortInfo(见下文),并且按预期工作。请求以 STATUS_SUCCESS 完成。在我调用 WdfRequestComplete 时,输出缓冲区具有有效数据。但是,当控制权返回到 GetPortInfo(见下文)时,提供的缓冲区尚未被覆盖。我通过访问接收缓冲区的硬件断点确认了这一点。在 WdfIoTargetSendInteralIoctlSynchronously 调用期间不会读取或写入它。
负责发送 IOCTL 的代码如下:
处理 IOCTL 的代码:
IOCTL 代码定义:
windows - 如何从我的 Windows 驱动程序代码中区分 devmgmt 的禁用和卸载?
我正在研究来自 WDK7 的 Microsoft Toaster 示例代码,我发现了一个微妙的问题。
现在在 Windows 7 上尝试编译的驱动程序(WDM busenum 和 WDM features1)。
按照自述文件的指导,enum -p 1
添加一个烤面包机设备,然后,我打开设备管理器(devmgmt),找到设备,卸载它。
这将破坏烤面包机的devnode(我相信);我们可以看到ToasterDevice01节点现在从设备管理器中消失了。!devnode 0 1
显示 toaster devnode 仍然存在,State=DeviceNodeUninitialized (0x301),Previous State=DeviceNodeRemoved (0x312)。
然后,我执行enum -p 1
尝试再次添加设备。但我收到错误 0x57(ERROR_INVALID_PARAMETER)。
我调试源代码并找出原因: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 版本。
windows - 以编程方式重新启动驱动程序窗口
我正在研究 KMDF pcie 驱动程序。目前,如果我断开/重新连接设备,Windows 不会识别设备已断开连接,不会重新枚举节点,也不会释放驱动程序。
目前最好的方法是通过设备管理器手动禁用/启用驱动程序,这会导致重新加载。当我尝试通过 SetupAPI.h 手动执行此操作时,通过使用 SetupDiSetClassInstallParams 和 SetupDiCallClassInstaller,我在 SetupDiCallClassInstaller 上收到 0xe0000219 错误,对应于 NO_ASSOCIATED_SERVICE,我不知道如何处理这个问题。有没有更好的方法以编程方式强制重启?
或者,有没有办法获得翻译的资源列表 WDFCMRESLIST,通常由即插即用 EvtDevicePrepareHardware 回调提供?这样我就可以重新配置我的驱动程序。
windows - 无法安装我自己编写的内核驱动程序
我一直在使用Visual Studio 2015
. 我可以使用 Visual Studio 运行在 VM 上安装我的驱动程序(它与我在主机上安装的 Windows 版本完全相同),它工作得很好。现在我想将它安装在主机 PC(主 Windows)上。首先,我启用了测试签名。我右键单击驱动程序inf
文件并选择安装。它问我是否确定,我点击了Yes
。几秒钟后,会显示一个对话框,The operation completed successfully.
但实际上没有任何反应。
- 当它在测试计算机上时,它没有显示在主机的设备管理器中。
- DebugView 中没有出现与我的驱动程序相关的调试消息。
- 没有写在
setupact.log
我正在使用release for x64
配置。我想知道项目配置中是否缺少任何东西。我也尝试在安装后重新启动我的电脑,但它不起作用。有谁能够帮我?