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

0 投票
1 回答
1216 浏览

windows - 如何从 WDK 8.1 Toaster Sample Driver 安装 KMDF Filter Driver?

我正在通过检查 WDK 8.1 Toaster Sample Driver来学习 Windows 驱动程序开发。我可以构建、安装、调试和与 KMDF 总线和 KMDF 功能驱动程序通信。我遇到的问题是安装 KMDF 过滤器驱动程序。我尝试使用 devcon 安装过滤器驱动程序,但总是失败。任何帮助,将不胜感激。

主机系统

  • 视窗 8.1 专业版 x64
  • 构建:Visual Studio 2013 Pro 和 WDK 8.1
  • 调试:WinDbg(命名管道)

目标系统(虚拟机)

  • Windows 8.1 企业版评估

  • 启用内核调试和测试签名

  • 安装:devcon

0 投票
0 回答
811 浏览

c++ - StartService 给我错误 2 系统找不到指定的文件

StartService 给我“错误 2 系统找不到指定的文件”

我无法确定我的驱动程序是否有问题,或者它是否是我的用户应用程序。这是我正在做的事情:

0 投票
1 回答
602 浏览

windows - 通用驱动程序将在 Windows 10 的通用应用程序中运行?

我想知道如何将我的 KMDF 驱动程序集成到通用应用程序中。目前,我让用户下载了在我的桌面应用程序中使用的 KMDF 驱动程序。如果我过渡到通用应用程序,我将如何使用我的驱动程序?“通用驱动程序”是否意味着它可以在“通用应用程序”中运行?手机或 Xbox 如何下载我的驱动程序?

我认为这是我从研究中收集到的:

它更多地涉及它可以在任何 Microsoft 设备(台式机、手机、平板电脑、Xbox)上运行的事实。但是,这些设备必须是 UWP(通用 Windows 平台),这几乎意味着它们必须至少具有 Windows 10。

通用驱动程序和通用应用程序是两个独立的东西。Universal App 可以实现 Universal Driver,但也可以实现 KMDF 驱动程序(但仅限于 Windows 10 桌面应用程序中)。WPF 应用程序可以使用通用驱动程序(但只能在 Windows 10 桌面上使用)。

如果我将我的应用程序变成一个通用应用程序,并将我的驱动程序更改为通用的,那么任何平台都应该能够使用我的应用程序。

它是否正确?

仍然不确定除了台式机之外的其他东西如何运行通用驱动程序。

0 投票
1 回答
165 浏览

windows - 如何为较低过滤器磁盘驱动程序的内部设备控制请求正确注册完成例程?

我目前正在编写一个较低的过滤磁盘驱动程序来捕获 SCSI 命令,并测量每个命令的性能。目前,我的驱动程序能够捕获 SCSI 请求,并将其传递给下一个驱动程序。但是,当我尝试注册完成例程时,我得到以下状态:0xc0000010(STATUS_INVALID_DEVICE_REQUEST)。

没有完成例程的工作代码:

带有完成例程的失败代码:

任何帮助,将不胜感激。谢谢。

笔记:

  • WdfRequestSend() 是失败的例程。
  • 具有完成例程的代码适用于上层过滤器磁盘驱动程序。
0 投票
0 回答
97 浏览

driver - WdfIoTargetSendIoctlSynchronously & ATA

我一直在尝试使用 ATA_PASS_THROUGH_EX32 结构和 IOCTL_ATA_PASS_THROUGH IoControlCode 通过 WdfIoTargetSendIoctlSynchronously 发送原始 ATA 命令。我注意到除了 IOCTL_DISK_GET_DRIVE_GEOMETRY 之外的任何命令似乎都在我的 KMDF 驱动程序内部失败。

我已经构建了一个标准的 32 位可执行文件,并且可以完美地使用 IOCTL_ATA_PASS_THROUGH。驱动程序不会从 WdfIoTargetSendIoctlSynchronously 的 NTStatus 返回值中获得除 STATUS_INVALID_PARAMETER 之外的任何错误。

有没有人有任何想法?

采取的步骤:

  • WdfIoT目标创建
  • WdfIoTargetOpen
  • WdfRequest创建
  • WdfMemoryCreate -> WDF_MEMORY_DESCRIPTOR_INIT_BUFFER -> ATA_PASS_THROUGH_EX32
  • WdfMemoryCreate -> WDF_MEMORY_DESCRIPTOR_INIT_BUFFER -> OutputBuffer
  • WdfIoTargetSendIoctlSynchronously
0 投票
1 回答
349 浏览

c# - 如何在用户模式应用程序中执行驱动程序功能?

我正在开发一个与设备驱动程序通信的应用程序。我如何调用这样的函数

在 C# 用户模式应用程序中?

0 投票
0 回答
252 浏览

windows-7 - VS Community 2015。调试器无法侵入 Windows 7 示例驱动程序。串行连接

我正在编写一个简单的 Windows 驱动程序并从 VS 调试它的示例:

https://msdn.microsoft.com/en-us/library/windows/hardware/hh439665(v=vs.85).aspx

我的设置

  • 主机:Windows 7 物理系统

  • 目标:Windows 7 物理系统

  • 连接类型:串行电缆(USB 到主机中的串行,目标中的串行)

配置目标系统成功。串口参数正确(用不同软件测试串口)。驱动程序已在目标中成功构建和安装,但“Break all”命令什么也不做。我能够附加到目标中的不同进程。

我见过类似的问题,通常的回答是检查主机和目标中的连接参数是否不匹配。我已经检查过了,参数是正确的。

我会很感激任何建议。

谢谢!

0 投票
0 回答
704 浏览

c++ - IPC for Windows Universal APP 可调用所有 Win32 API

我正在 Windows 10 上开发一个与自定义设备驱动程序、NTFS 文件系统和 DirectX 12 交互的应用程序。该应用程序是一个用 C++、WRL、XAML 和 DirectX 编写的 Windows 通用应用程序。对于 DirectX,我选择了 SwapChainPanel 控件,应用程序的 DirectX 部分运行良好。该应用程序是侧载的,所以我比需要通过商店的应用程序有更多的自由

不幸的是,Windows 通用应用程序在 API 调用方面有许多限制。WinRt API 受到青睐。

以下是要调用以替换 Win32 API 的 WinRt API 列表:

https://msdn.microsoft.com/en-us/library/windows/apps/hh464945.aspx

此外,Windows 通用应用程序可以调用分区到应用程序的 Win32 API(但不是分区到桌面的 API),如每个函数的文档和头文件中所示。这是一个链接:

https://msdn.microsoft.com/en-us/library/windows/apps/br205762.aspx

此外,Windows 通用应用程序现在允许 Winsock API

但是我仍然没有我最喜欢的(和必要的 API)

特别是我需要在没有用户交互的情况下将文件读写到所有位置(而不是 Windows 通用应用程序沙盒限制的位置)。此外,我需要将 IOCTL 发送到我的多个设备驱动程序。

我可以放弃 Windows 通用应用程序并使用 WPF。但是我有一个触摸密集型应用程序,我需要触摸才能很好地工作。此外,我不得不怀疑缺少修复和代表 Microsoft 对 WPF 的承诺。我考虑过其他 UI 框架,但没有一个像 Windows 通用应用程序那样有前途。

Microsoft 在 Windows 10 中为通用应用程序提供了两条路径,允许调用所有 Win32 函数(用于侧载应用程序)。

通过 TCPIP 代理 Windows 运行时组件和 IPC

我编写了一个代理的 Windows 运行时组件,它运行良好。但是,该解决方案需要混合使用 C# 应用程序,我不需要/不希望这样做,因为我需要应用程序的快速加载时间并且不想拉入 CLR。

下一个选项是通过 TCPIP 的 IPC。我将按照博客文章中的说明使用快速 TCP 环回:Windows Server 2012 TCP 环回快速路径的快速 TCP 环回性能和低延迟。我会链接到它,但我在第一篇文章的(非常慷慨的)两个链接限制。

我有一些问题:

1)如果我走这条路,我应该将 IPC 放在 XAML 控件/按钮和应用程序的其余部分之间吗?这将允许应用程序的其余部分严格使用 Win32。或者我应该只是将 IPC 放在应用程序和调用我需要的特定功能之间,这些功能不在 Win32 允许的范围内。

2) 我一直在寻找具有使用 TCPIP 实现 IPC 的代码和/或想法的库或论文。然而到目前为止,讨论 IPC 和 TCPIP 的论文似乎只是简单地描述了我已经知道如何做的 winsock 编程。我会喜欢编写 IPC 代码,但更喜欢经过测试的解决方案。这需要完美地工作,我宁愿有一些时间的代码。有没有人使用或听说过可以共享的 IPC over TCPIP 的代码和/或设计?

0 投票
0 回答
229 浏览

usb - KMDF USB 设备停止、删除或禁用

我用 MS 示例代码开发 KMDF。在事件调用中,我想禁用指定的设备。IRP_MJ_PNP 来了,我可以抓到一些 MN irp。这是一些注册回调函数的代码。

我可以得到硬件ID。过去,在用户模式应用程序中,我可以使用Setup~, cm_~API 删除设备驱动程序。我可以在驱动程序代码中使用这个 API 吗?如果没有,我该如何停止或删除设备驱动程序?还是设备?

0 投票
1 回答
58 浏览

c - Visual Studio 社区 2015 和 KMD

我已经开始做一个 KMD 项目来锻炼身体。我打开了一个空的 KMDF 项目并开始编写 km 组件。现在我想添加一个用户模式组件。我需要打开一个包含这两个部分的新项目,还是有办法在 KMDF 项目上添加用户模式组件?