问题标签 [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.
driver - 如何在 wdf 驱动程序中修复 PAGE_FAULT_IN_NONPAGED_AREA
WdfObjectDelete
我在调用时在WDF 过滤器驱动程序中遇到 BSOD 问题Wdf01000!FxObject::CallCleanupCallbacks
?大多数情况下它运行良好,但问题有时会在重新启动时发生。有人可以给我一些建议吗?谢谢。
堆栈如下
我在函数中所做的是:
有谁知道为什么会这样?
driver - Windows 启动时如何获取 PCI 设备枚举的详细信息
我们做了一个主板。使用了一个 PCIe 交换机(1 个上游端口,4 个下游端口)。每个下游端口直接通向一个 PCIe 插槽。
有一个问题困扰了很久。2号插槽无法识别设备,多块主板都有这个问题。我们检查了插槽 2 的电源和接线,一切正常。并仔细检查了 PCB 设计和布局,插槽 2 与其他插槽没有区别。目前硬件没有发现任何疑点,不知道能不能通过操作系统得到进一步的故障信息。可以通过打开操作系统的一些配置或者通过内核调试来获取设备枚举的详细信息吗?
1)我用UEFI Shell V2.2看到2号槽设备在线,可以读出配置空间。但是进入Windows后,在设备管理器中依然看不到2号槽设备。我尝试在设备管理器上右键刷新设备,出现了2号槽设备!通过运行测试应用程序,发现板子运行正常。
2) 我做了一个对比实验,将三星 PCIe SSD 插入插槽 2。无论是在 EFI shell 中还是在 Windows 中,设备都能正常显示。
windows - WdfFdoQueryForInterface 失败,出现 0xc00000bb
我想编写一个 KMDF 驱动程序来接收 ACPI 通知值,下面是我的驱动程序代码
下面是我的inf文件
我使用下面的命令安装驱动程序,它总是在 WdfFdoQueryForInterface 失败,返回码是 0xc00000bb。
我不知道如何安装此驱动程序来接收 ACPI 通知。所以我为它创建了一个虚拟设备,但它似乎不起作用。
那么,如果有人以前写过这个驱动程序,如何解决这个问题?
谢谢。
windows - 了解 FltGetVolumeGuidName() 的工作原理
我想知道函数FltGetVolumeGuidName()的实现顺序,我基本上是想从我的系统中获取所有卷的Guid?以下是我尝试过的代码,任何帮助将不胜感激,在此先感谢。
windows - Windows 内核:为什么我的内存映射不起作用?
MmAllocateContiguousMemorySpecifyCache
我有一个 kmdf,它使用并获取它的 mdl分配一个缓冲区:
一旦分配了该缓冲区,驱动程序就会处理一个 ioctl(两个方法都没有),它将预分配的缓冲区映射到请求的进程地址空间,使用MmMapLockedPagesSpecifyCache
:
几行之后,我用测试值填充内存:
但是当用户在其映射地址上循环时,它会得到垃圾值。
我尝试使用 WinDbg 调试此问题,当我在循环后中断时,我看到以下内容:
内核虚拟地址:
用户虚拟地址:(显示垃圾)
那么为什么我没有通过接收到的指针看到相同的值MmMapLockedPagesSpecifyCache
呢?
windows - 无法编译 Windows 驱动程序 - Windows 驱动程序的可签名性测试失败
我正在尝试创建一个非常简单的 Windows 驱动程序,问题是我无法编译它,Visual Studio 不断给我以下错误:
kmd\kmd.inf 没有 NTAMD64 修饰的模型部分。
是什么导致了这个问题,我该如何解决这个问题?
windows - 带有或不带有 INF 文件的 Windows 驱动程序
我见过两种安装 Windows 驱动程序的方法。
一个。同时使用 SYS 文件和 INF 文件。(如 NDIS 驱动程序)
b.仅使用 SYS 文件,驱动程序将由服务加载。(如 C:\Windows\System32\drivers 中的驱动程序)
所以,我的问题是:
1.什么样的驱动程序或情况需要INF文件?
2. 造成这种差异的根本原因是什么?
driver - 获取 USB 网络摄像头的句柄 (Windows 10/CPP)
我正在尝试获取我的 USB WebCam (Microsoft LifeCam HD-3000) 设备的句柄。我不想以传统方式使用它,因此任何多媒体框架的使用都不大。我需要能够(如果可能的话)通过DeviceIoControl
等方式向它发送 IRP。反转它用 KMDF 编写的驱动程序,我发现一个调用WdfDeviceCreateDeviceInterface
和 GUID 作为参数传递:
有一个界面 GUID,我使用 WinObjEx64 来查找创建设备的符号链接:
使用符号链接我试图打开一个句柄:
输出:
有了这样的结果,我决定使用SetupDi*
API获取开发路径
不幸的是,这也失败了:
来自 livekd 的关于此驱动程序如何附加到驱动程序/设备堆栈的输出:
还有一个屏幕来自DeviceTree
谢谢!
c - 我可以从 wdf 驱动程序检查另一个设备的存在吗?
有没有一种好方法可以检查 KMDF 框架中当前驱动程序堆栈之外的设备是否存在?也许通过物理设备对象名称之类的东西。我想知道是否\Device\MyDeviceXXX
存在不相关的驱动程序。此外,该设备是纯软件设备,不涉及硬件。
driver - UMDF:在 EVT_WDF_TIMER 回调函数中访问设备注册表项
EVT_WDF_TIMER
我在使用 UMDF 驱动程序从回调函数检索存储在设备注册表中的数据时遇到问题。这样的回调函数只有WDFTIMER
对象作为它的唯一参数。为了能够访问 UMDF 中的注册表,WdfDeviceOpenRegistryKey
需要一个指向该WDFDEVICE
对象的指针。在调用回调函数之前, my WDFTimer
(在计时器结束后调用回调函数)由WdfTimerCreate
. 我也提供了适当WDF_OBJECT_ATTRIBUTES
的属性,其中一个属性是WDFOBJECT ParentObject
我将WDFDEVICE
对象分配到的位置。
现在,我希望我可以检索WDFDEVICE
我添加的对象WDF_OBJECT_ATTRIBUTES
,但它似乎无法从WDFTIMER
参数中访问。我想知道,有什么办法可以WDFDEVICE
从EVT_WDF_TIMER
回调函数中检索指向我的指针?