繁体   English   中英

windows 沙盒功能可以用于驱动测试吗?

[英]Can the windows sandbox feature be used for driver testing?

第一次做windows驱动开发,我想部署我的第一个驱动。 但是我没有第二台电脑。

微软文档

通常,当您测试和调试驱动程序时,调试器和驱动程序会在不同的计算机上运行。 运行调试器的计算机称为主机,运行驱动程序的计算机称为目标计算机 目标计算机也称为测试计算机

我从vhidmini2作为我的项目基础(UMDF2 版本)开始。 我想知道是否可以使用Windows 沙盒功能代替测试计算机 我的驱动程序不会与任何硬件交互。

Windows Sandbox 基本上是一个虚拟机,因此您可以将驱动程序加载到其中,只要它们不需要与硬件交互即可。

但是还有一个额外的限制:似乎没有办法在 Windows 沙箱中禁用驱动程序签名检查,因为这需要重新启动,而沙箱无法做到这一点。 因此,您的驱动程序已被签名以进行加载和测试。

您可以设置 Windows 沙箱以使用CmDiag进行 kernel 调试(未记录,但Jonas L 提到):

首先,您需要启用开发模式(一切都需要从管理员命令提示符运行):

CmDiag DevelopmentMode -On

然后启用网络调试(您可以使用CmDiag Debug查看其他选项):

CmDiag Debug -On -Net

这应该给你连接字符串:

Debugging successfully enabled.

Connection string: -k net:port=50100,key=cl.ea.rt.ext,target=<ContainerHostIp> -v

现在启动 WinDbg 并连接到127.0.0.1

windbg.exe -k net:port=50100,key=cl.ea.rt.ext,target=127.0.0.1 -v

然后你启动 Windows 沙盒,它应该连接:

Microsoft (R) Windows Debugger Version 10.0.22621.1 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.

Using NET for debugging
Opened WinSock 2.0
Using IPv4 only.
Waiting to reconnect...
Connected to target 127.0.0.1 on port 50100 on local IP <xxx.xxx.xxx.xxx>.
You can get the target MAC address by running .kdtargetmac command.
Connected to Windows 10 19041 x64 target at (Sun Aug  7 10:32:11.311 2022 (UTC + 2:00)), ptr64 TRUE
Kernel Debugger connection established.

(当我最初设置它时,我在启动 Windows Sandbox 时遇到了一些错误,我不得不重新启动,但这可能没有必要)

有几次我收到错误0x80070020 ,这似乎是因为端口不可用(可能是 Hyper-V 保留的?)。 切换到端口12345为我修复了它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM