Windows 我能';在内核调试模式下连接到目标计算机时不会中断
我正在启动一个原型,包括一个Windows迷你过滤器。 我已设置了我的环境:Windows 我能';在内核调试模式下连接到目标计算机时不会中断,windows,debugging,kernel,minifilter,Windows,Debugging,Kernel,Minifilter,我正在启动一个原型,包括一个Windows迷你过滤器。 我已设置了我的环境: 目标虚拟机(实际上是3:Windows7、8和8.1) 主机开发机器(托管Visual Studio 2013和HyperV虚拟机) 我最终设法将测试迷你过滤器部署到目标机器上,但我的问题是: 我无法在目标计算机中破坏内核。 当我生成并从Visual Studio调试器启动时,结果如下: ------------------------------------------------------------
- 目标虚拟机(实际上是3:Windows7、8和8.1)
- 主机开发机器(托管Visual Studio 2013和HyperV虚拟机)
-----------------------------------------------------------------------
-----------------------------------------------------------------------
Starting New Debugger Session
-----------------------------------------------------------------------
-----------------------------------------------------------------------
Microsoft (R) Windows Debugger Version 6.3.9600.16384 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
MONTLUC\pascal (npipe WinIDE_01CED6303D19BD92) connected at Thu Oct 31 12:56:31 2013
Microsoft (R) Windows Debugger Version 6.3.9600.16384 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Waiting for pipe \\montlucw81x64\pipe\dbg
Waiting to reconnect...
[12:56:32:860]: Removing any existing files from the remote driver folder
[12:56:33:121]: Removing any existing files from test execution folder
te.exe "%SystemDrive%\DriverTest\Run\DriverTestTasks.dll" /select:"@Name='DriverTestTasks::_DriverRemoval'" /p:"InfFile=passThrough.inf" /p:"Debug=1" /p:"ImportDriver=1" /p:"RemoveDriver=1" /p:"CertificateFile=package.cer" /p:"PackageGuid={A23BA0FC-7265-4E3C-B99F-1E7A04AD970D}" /rebootStateFile:%SystemDrive%\DriverTest\Logs\DriverTestReboot.xml /enableWttLogging /wttDeviceString:$LogFile:file="%SystemDrive%\DriverTest\Logs\Driver_Removal_(x64)_(possible_reboot)_00060.wtl",writemode=append,encoding=unicode,nofscache=true,EnableLvl="WexStartTest|WexEndTest|WexXml|WexProperty|WexCreateContext|WexCloseContext|*" /runas:Elevated
[12:56:56:926]: Result Summary: Total=1, Passed=1, Failed=0, Blocked=0, Warned=0, Skipped=0
[12:56:57:457]: Removing any existing files from test execution folder
te.exe "%SystemDrive%\DriverTest\Run\DriverTestTasks.dll" /select:"@Name='DriverTestTasks::_DriverPreparation'" /p:"InfFile=passThrough.inf" /p:"Debug=1" /p:"ImportDriver=1" /p:"RemoveDriver=1" /p:"CertificateFile=package.cer" /p:"PackageGuid={A23BA0FC-7265-4E3C-B99F-1E7A04AD970D}" /rebootStateFile:%SystemDrive%\DriverTest\Logs\DriverTestReboot.xml /enableWttLogging /wttDeviceString:$LogFile:file="%SystemDrive%\DriverTest\Logs\Driver_Preparation_(x64)_(possible_reboot)_00060.wtl",writemode=append,encoding=unicode,nofscache=true,EnableLvl="WexStartTest|WexEndTest|WexXml|WexProperty|WexCreateContext|WexCloseContext|*" /runas:Elevated
[12:57:00:437]: Result Summary: Total=1, Passed=1, Failed=0, Blocked=0, Warned=0, Skipped=0
[12:57:00:893]: Removing any existing files from test execution folder
te.exe "%SystemDrive%\DriverTest\Run\DriverTestTasks.dll" /select:"@Name='DriverTestTasks::_RunProcess'" /p:"BinaryPath=rundll32" /p:"Arguments=setupapi,InstallHinfSection DefaultInstall 132 C:\DriverTest\Drivers\passthrough.inf" /p:"ExitCodes=0" /p:"WorkingFolder=%SystemDrive%\DriverTest\Drivers" /p:"LogOutput=1" /rebootStateFile:%SystemDrive%\DriverTest\Logs\DriverTestReboot.xml /enableWttLogging /wttDeviceString:$LogFile:file="%SystemDrive%\DriverTest\Logs\Driver_Install_(x64)_(possible_reboot)_00025.wtl",writemode=append,encoding=unicode,nofscache=true,EnableLvl="WexStartTest|WexEndTest|WexXml|WexProperty|WexCreateContext|WexCloseContext|*" /runas:Elevated
[12:57:03:916]: Result Summary: Total=1, Passed=1, Failed=0, Blocked=0, Warned=0, Skipped=0
[12:57:04:418]: Removing any existing files from test execution folder
te.exe "%SystemDrive%\DriverTest\Run\DriverTestTasks.dll" /select:"@Name='DriverTestTasks::_DriverPostInstall'" /rebootStateFile:%SystemDrive%\DriverTest\Logs\DriverTestReboot.xml /enableWttLogging /wttDeviceString:$LogFile:file="%SystemDrive%\DriverTest\Logs\Driver_Post_Install_Actions_(x64)_(possible_reboot)_00060.wtl",writemode=append,encoding=unicode,nofscache=true,EnableLvl="WexStartTest|WexEndTest|WexXml|WexProperty|WexCreateContext|WexCloseContext|*" /runas:Elevated
[12:57:06:139]: Result Summary: Total=1, Passed=1, Failed=0, Blocked=0, Warned=0, Skipped=0
[12:57:06:564]: Driver Installation summary:
[12:57:06:566]: Driver Removal (x64) (possible reboot): Pass
[12:57:06:571]: Driver Preparation (x64) (possible reboot): Pass
[12:57:06:578]: Driver Install (x64) (possible reboot): Pass
[12:57:06:586]: Driver Post Install Actions (x64) (possible reboot): Pass
当我试图打破时,什么也没发生
当我直接附加到内核时(使用VS菜单“调试”->“附加到进程”->“内核调试”->“附加”,我得到以下结果:
-----------------------------------------------------------------------
-----------------------------------------------------------------------
Starting New Debugger Session
-----------------------------------------------------------------------
-----------------------------------------------------------------------
Microsoft (R) Windows Debugger Version 6.3.9600.16384 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
MONTLUC\pascal (npipe WinIDE_01CED630A522D2F5) connected at Thu Oct 31 12:59:26 2013
Microsoft (R) Windows Debugger Version 6.3.9600.16384 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Waiting for pipe \\montlucw81x64\pipe\dbg
Waiting to reconnect...
但同样,不可能打破
我试过:
- 所有目标主机(Windows 7、8和8.1)并获得相同的结果(是的,所有这些主机都已正确配置以进行内核调试)
- 使用网络而不是命名管道
- 使用WinDBG代替visualstudio
- 不管调试器怎么说,我是否真的没有连接到目标计算机(但部署是有效的)
- HyperV和内核调试可能有问题吗
编辑:我用真实的目标机器而不是虚拟机器做了一个测试,我也遇到了同样的问题,因此这与Hyper-V无关。我解决了我的问题(我很烂,所以我是) 简而言之,这是两台机器在内核调试时必须如何配置的 A.目标机器(Hyper-V虚拟机)
- 在串行COM1上配置内核调试(使用msconfig是最简单的方法)
- 将Hyper-V计算机配置为将COM1传输到命名管道(\。\pipe\debug,例如)
- 在管理模式下运行WinDBG或VS(这是我的第一个错误)
- 使用完全相同的名称(\。\pipe\debug)连接到命名管道(这是我的第二个错误,我认为计算机名称必须是实际的目标名称)