问题标签 [wdf]
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.
windows - 设备不存在时是否可以完全安装驱动程序?
是否可以在插入物理设备之前在系统上完全安装(而不仅仅是预安装)设备驱动程序?特别是,我正在查看FTDI 的 D2XX 驱动程序。他们的驱动程序安装程序有效地运行 dpinst.exe,如果您查看该程序的控制台输出,它会显示:
没有为“c:\drivers\ftdiport.inf”找到匹配的设备。插入时将安装驱动程序。
问题是我也在使用他们的 .NET 库来访问设备,而且那个库很有趣。如果未安装驱动程序,它会在构造函数中弹出警报。当然通常的解决方案是简单地插入设备并让驱动程序安装正常完成,但有时会忽略这一点。在 3rd 方库中有一个不可避免的弹出框的陷阱应该是显而易见的。
那么有没有人知道自动化完整安装的方法,而不仅仅是预安装?手动/提前将驱动程序复制到系统文件夹有什么危险吗?
kernel - 使用内核模式驱动程序进行远程调试的问题
我在那里使用 windows7 主机我安装了 Vusual Studio 2013 和 WDK 8.1 我还有使用 Virtual Box 的 Windows 10 虚拟机。
我从模板创建新的 KMDF 驱动程序并尝试调试它。
我成功配置了目标机器(与 win10 是虚拟的),驱动程序成功部署,但调试器仍然处于非活动状态。这是来自调试器即时窗口的日志:
在此调试器卡住后,控制台处于非活动状态并显示文本“Debuggee 正在运行...”我没有在 DriverEntry 函数处到达断点,看不到来自内核和驱动程序的任何调试消息。
我还尝试了调试网络设置,但结果相同。
怎么了?
是否存在 VirtualBox 问题?还是因为我尝试在win10上调试win7驱动?
c - 在没有 WdfDeviceCreateDeviceInterface 的情况下为 Windows HID 驱动程序初始化设备接口
我正在努力在 Windows 10 中创建虚拟 HID 设备。为了帮助我开发驱动程序,我一直在分析此处提供的示例:https ://github.com/Microsoft/Windows-driver-samples/tree/主/隐藏/vhidmini2。
他们做的一件事让我很困惑:在 app/testvhid.c 中,应用程序通过找到驱动程序的设备接口并向其发送数据来向驱动程序发送数据。但是,驱动程序从不调用 WdfDeviceCreateDeviceInterface,我认为这是创建设备接口所必需的。事实上,驱动程序代码中似乎根本没有提到接口。
我的问题是:当没有调用 WdfDeviceCreateDeviceInterface 时,如何访问 HID 设备的接口?
c - HidD_GetAttributes 如何从设备对象中检索属性?
我正在努力在 Windows 10 中创建虚拟 HID 设备。为了准备编写驱动程序,我一直在分析此处提供的示例:https ://github.com/Microsoft/Windows-driver-samples/tree/主/隐藏/vhidmini2。
在文件 app/testvhid.c 中,HidD_GetAttributes 用于检索 HID 设备的属性。似乎这些属性是在 driver/vhidmini.c 中初始化的(EvtDeviceAdd 函数中的 hidAttributes)。但是,hidAttributes 存储在 DEVICE_CONTEXT 结构中,该结构(据我了解)由驱动程序定义。
如果 hidAttributes 是用户定义的属性,那么 HidD_GetAttributes 如何知道从设备中检索它?
我试图通过创建一个主要基于给定示例的 KMDF 驱动程序来为自己复制这一点。相关驱动程序代码如下(大部分来自示例,除了对 WdfDeviceCreateDeviceInterface 的调用):
用户模式测试应用程序中的相关代码部分如下(此代码几乎完全来自给定示例):
HidD_GetAttributes 函数通过,但 CheckIfOurDevice 函数在检查设备属性时失败(“设备属性与样本不匹配”)。我检查了一些由 HidD_GetAttributes 设置的属性值,但它们与驱动程序设置的值不匹配。样本是否正在拨打我错过的其他电话?
windows - CreateFileMapping 返回错误 193(%1 不是有效的 Win32 应用程序)
我有一个打开文件然后调用 CreateFileMapping 的用户应用程序。我有一个驱动程序可以创建/打开我跟踪并成功执行的文件。问题是 CreateFileMapping 总是返回错误 193。我已经成功映射到其他文件,所以我认为一定是驱动程序方面的问题。Windows 8.1 x64(驱动程序显然是 64 位)和应用程序也是如此。我已经使用dependency walker来检查任何dll问题,一切似乎都很好。
驱动程序片段:
用户应用程序片段:
编辑1:驱动程序中的文件名是#define DEV_PATH L"\\DosDevices\\C:\\testdisk.txt"
符号链接正在#define DEV_SYMBOLIC_LINK L"\\DosDevices\\testdrive.txt"
使用该功能WdfDeviceCreateSymbolicLink
,我将设备名称设置为#define DEV_NAME L"\\Device\\testdrive.txt"
使用该功能WdfDeviceInitAssignName
编辑 2:我已经更新了设备和文件路径。从用户空间访问文件时,我仍然收到 193 错误\\.\qqdevice\test.txt
,如果我使用C:\qqdevice\test.txt
该文件,则会创建文件,但驱动程序永远不会收到通知。
windows - DeviceIoControl 错误 1 函数不正确
CreateFile
我已经在内核空间中创建了一个设备,并使用我能够将 ioctl 发送到驱动程序并正确执行它们在用户空间中访问它。不知道如何跟踪返回后WdfRequestComplete
和返回后发生的情况,我以错误 1(无效函数)结束。在将其标记为 dup 之前,请注意这与我编写驱动程序 ioctl 以及使用的是同步 io 而不是异步的不同之处。
在用户空间:
在内核空间
更新1:
我试过WdfRequestCompleteWithInformation(Request, status, OutputBufferLength);
但结果相同。
另外,我注意到 inputBuffer 和 outputBuffer 的地址是相同的。
更新2:我试着做
仍然得到错误1
driver - 分散/聚集列表中 NumberOfElements 的限制
我的 PCIe FPGA 设备驱动程序基于 7600.16385.1\src\general\PLX9x5x
在应用程序中的 ReadFile 中,调用 PLxEvtIoRead:
问题:我想通过这个 Scatter/Gather 列表(大约 1 GB)传输大量数据,但 NumberOfElements 似乎受到某些限制,不知何故,大传输是 1MB(列表中的 255 个元素,每个 4k)。我将以下函数中的 MaximumTransfecrLength 更改为 500MB:
但我仍然不能传输超过 1MB。限制 NumberOfElements 的原因是什么,我该如何解决?
wdf - 需要开发设备驱动,安装在系统上会创建多个虚拟串口
这是我的第一个 Windows 设备驱动程序,我被分配了一项从头开始开发 Windows 设备驱动程序的任务。当用户在 Windows PC 上安装此驱动程序时,它会在安装过程中要求用户输入用户需要的虚拟串行端口号,并在安装驱动程序后创建用户所需的虚拟端口号. 然后用户通过 USB 端口将他定制的打印机连接到 Windows PC。用户通过选择新创建的 9600 波特率、8 个数据位、无奇偶校验和 1 个停止位的虚拟串行端口,应该能够通过 Hyper 终端向打印机发送数据。
现在开始使用 Windows 7 系统,在该系统上安装了 Visual Studio 2015 以及来自 MSDN 网站的 Windows Driver Kit 10。我还从 GITHUB 下载了 Windows 驱动程序示例代码,这个示例库包含一个在 serial/Svirtualserial2 下的 virtualSerial UMDF 项目。该项目文件包含 2 个项目,一个是 Virtualserial2 项目,另一个是 FakeModem 项目,所以我删除了 FakeModem 项目(因为它对我没有用)并成功编译了源/VirtualSerial2 示例代码。编译后,在调试折叠中生成了一个 .dll(因为 UDMF 驱动程序具有 .dll 扩展名)文件,但我没有得到这个驱动程序的任何 .exe,所以我不确定如何在我的系统上安装这个驱动程序。
我也在浏览这个链接https://msdn.microsoft.com/en-in/library/windows/hardware/dn745911%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396列出了流程使用 WinDbg 调试 UMDF 驱动程序,在一个示例中,它还要求我们运行 .exe,所以我的第一个问题是如何生成驱动程序的 .exe 文件并在系统上对其进行测试。
除此之外,我还有一个疑问。在目标系统上安装驱动程序后(Windows 7 32 位,我需要将其链接到超级终端)。这样我就可以通过超级终端将命令和数据发送到我的打印机,我的驱动程序将负责从超级终端获取数据并通过 USB 将其发送到我的打印机。我怎样才能做到这一点?
我是否朝着正确的方向前进?
c - 如何启动一个自写的驱动程序
我在 Visual Studio 2013 中编写了一个驱动程序。构建过程是成功的。然后我准备了一台跟踪计算机并将驱动程序文件复制到它。然后我安装了驱动程序:
好像成功了。我在 PC 上运行了 DebugView,但现在我不知道如何启动驱动程序,这样我才能看到调试输出。我的源代码中有一个 DbgPrintEx()-Statement。
有人可以告诉我如何启动这个驱动程序,以便我可以看到输出。
这是驱动程序的源代码:
visual-studio - 为 VS 2015 企业版安装模板
我有 VS 2015,也有 Windows Driver Kit 10.0 但是在 VS 2015 Enterprise 中,我找不到任何模板来编写 KMDF 相关开发。我试图安装所以搜索 KMDF 或 WDF 的模板,但我找不到它。如何在 VS 2015 企业版中安装 KMDF 模板?谢谢