问题标签 [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.

0 投票
1 回答
238 浏览

wdf - WDF - 沙盒过滤器驱动程序

我想拦截某些程序的文件(ReadFile、WriteFile)操作和注册表调用。我决定过滤器驱动程序将是最好的解决方案。是否可以从 WDF 做到这一点,或者我需要学习 WDM?有样品吗?

0 投票
1 回答
2324 浏览

windows - 强制 USB 高速 EHCI 2.0 集线器枚举为全速 UHCI/OHCI 设备

在 Windows XP SP3 中是否有注册表项或某些设置,甚至可能在注册表中的设备级别,EHCI USB 2.0 高速集线器可以在主机级别枚举为 UHCI 或 OHCI 全速设备?

我看到一个问题,USB 1.1 全速设备由于与高速集线器上的事务转换器缓冲区的无限 NAKd 拆分事务而死锁。这只发生在某些情况下,全速设备仅在 XP SP3 中连接在 2.0 高速集线器后面。我已经向 Microsoft 提出了一个问题,他们已经确认这是一个已知问题,并且没有针对该问题的修补程序(也不会开发)。它已在 Vista+ 中得到纠正。

如果设备直接连接到主机控制器,或者在高速集线器上游有一个全速集线器,问题就会消失(因为没有拆分事务)。因此,如果有办法强制高速集线器枚举为全速设备,那么它可能会对我们有所帮助。

此外,硬件设计一成不变。系统已经开发完成,无法在设计的任何地方插入全速集线器芯片,或将设备直接连接到根集线器。最后,升级系统上的操作系统不是一种选择。

0 投票
1 回答
596 浏览

windows - 有谁知道在哪里可以获得旧 WDM 版本的烤面包机驱动程序示例?

当前的 8.x Windows 驱动程序套件示例包括烤面包机示例,但仅在 KMDF 和 UMDF 中实现。我有一个特殊的应用程序需要专门处理我认为不适用于 KMDF 的 PNP 消息。有谁知道我在哪里可以买到样品中曾经出现的 WDM 版本的烤面包机?

0 投票
3 回答
6408 浏览

windows - 从 DevicePath 中提取 USB PID VID

当使用 SetupDiGetDeviceInterfaceDetail 检索与连接的 USB 设备相关的 SP_DEVICE_INTERFACE_DETAIL_DATA 时,将返回一个名为 DevicePath 的字符串。

返回的字符串的格式类似于以下示例:

\?\usb#vid_abcd&pid_1234#000000000#{xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

问题:此字符串的格式/语法是否记录在任何地方和/或已知在所有版本的 Windows XP/Vista/7/8 中都是可靠的?

我正在尝试使用代码从该字符串中提取 VID 和 PID 值,以识别所引用的设备,并想知道这是否是检索 VID 和 PID 值的可靠方法。

0 投票
1 回答
1058 浏览

c - 有什么方法可以检查使用 ObRegisterCallbacks 注册的回调是否仍然有效?

ObRegisterCallbacks从 Vista SP1 开始可用,允许“为线程和进程句柄操作注册回调例程列表”。

例如,您正在注册PsSetCreateProcessNotifyRoutine回调。您可以使用诸如PC Hunterx86 windows 之类的软件取消设置它,因为 x86 windows 没有内核级别的补丁保护。并且驱动程序不知道不再调用此回调。

问题

  1. 驱动程序如何检查使用 ObRegisterCallbacks 注册的回调是否仍然有效?
  2. ObRegisterCallbacksSTATUS_FLT_INSTANCE_ALTITUDE_COLLISION第二次调用期间的错误是检查回调状态的正确方法吗?
  3. 有什么方法可以使用 ObRegisterCallbacks 获取所有已注册回调的列表?
0 投票
0 回答
310 浏览

windows - 用户模式下的 Windows 虚拟磁盘驱动程序?

是否可以仅在用户模式下实现虚拟磁盘驱动程序或必须在内核模式下完成?

0 投票
0 回答
769 浏览

windows - Windows 驱动程序在 INF 文件中加载依赖项

我的 UMDF 驱动程序 (myUMDF.dll) 依赖于一个通过单独的 INF 文件安装的 KMDF 驱动程序 (someKMDF.sys)。

在我的 INF 文件中,我想设置 myUMDF.dll 仅在安装了 someKMDF.sys 驱动程序后才会安装的依赖项。

在 myUMDF 驱动程序 INF 文件中,我提到了这种依赖关系


[myUMDF_Driver_Install]

UmdfLibraryVersion=1.11.0

ServiceBinary=%12%\UMDF\myUMDF.dll

依赖项=someKMDF.sys


但这并没有反映在所需的驱动程序加载顺序中。

谁能建议,如何在驱动程序的 INF 文件中提及对某些外部 sys 文件的依赖?

谢谢你。

0 投票
1 回答
498 浏览

windows - 如何在 Windows 8 上查找导致 BSOD 的 WDF 驱动程序中的错误

我必须维护一个 WDF 驱动程序。这是一个无硬件驱动程序:该驱动程序使用作为 Windows 分区挂载的磁盘文件。所有写入磁盘的数据都由驱动程序加密。驱动程序在内核模式下运行。

该驱动程序已在 XP 上开发并成功移植到 Vista 和 7、32 和 64 位。我在 Windows 8 上遇到了一个大问题。驱动程序导致致命的系统错误:

使用 WdfObjectDelete() 删除设备后会出现此问题。只要设备没有被删除,驱动程序就可以正常运行并且没有系统错误。调用 WdfObjectDelete 后,系统会在一定延迟后崩溃。

验证程序未检测到驱动程序中的错误。我的问题如下:

  1. Windows 8 上的 WDF 有什么特别之处吗?
  2. 是否有任何工具/技术可以帮助我找到驱动程序中的错误?
0 投票
2 回答
281 浏览

file-io - 文件系统微过滤器删除驱动程序的可行性检查

我使用 msdn 中的删除微过滤器示例作为基础: http ://code.msdn.microsoft.com/windowshardware/Delete-File-System-b904651d

我需要完成的是:

  1. 在 DfPreCleanupCallback 中获取删除候选对象的句柄。
  2. 在 DfPostCleanupCallback 中 - 确定如果不是获取的句柄,该文件应该被删除。
  3. 同样在 DfPostCleanupCallback - 对将被删除的文件执行一些操作并释放句柄。还确保在下次进入 IRP_MJ_CLEANUP 时删除以避免无限循环。

我对微过滤器和过滤器管理器的理解非常模糊,因此在深入研究微过滤器世界之前,我想知道这在原则上是否可行。

短版 - 我需要一种方法来确定文件将被删除,并对该文件进行一些操作。

0 投票
1 回答
814 浏览

filesystems - 重命名将在微过滤器驱动程序 IRP_MJ_CLEANUP 预操作回调中删除的文件

我的目标是在文件被删除之前覆盖文件内容和名称 - 擦除已删除的文件。

我正在尝试使用微过滤器驱动程序和在最终删除操作之前调用的预清理回调例程。

到目前为止,我已经能够摆脱创建/更改/访问日期并在文件被删除之前覆盖文件的内容。

但是我无法更改文件名和所有者信息。

我发现我可以使用 FltSetFileInformation 重命名文件,但是在清理过程中文件没有正确删除。使用 shift+delete,它会被删除,但光盘上的文件名保持不变。只需正常删除,它就不会进入回收站(可能是因为无法移动它,现在它有了一个新名称。)

微过滤器的控制流程对我来说有点不清楚。例如,如果我调用 FltWriteFile 它只是发送另一个 IRP,它是同步还是异步执行。

如何在 IRP 中更改要删除的文件的名称,这样它仍然会被较低的驱动程序删除。