Win10 下面的Mirror驱动分析

背景

在DWM分析的文章中(浅谈DWM原理),有提到过在Win10 下面仍旧可以使用Mirror Driver;这个功能就有一定的奇怪了,因为从前面分析我们知道,Mirror Driver的生效前提是DWM需要关闭,而在Win10 下面,DWM已经无法关闭了,那么DWM是怎么使用的呢?本文就来探讨一下这个原理

1. ChangeDisplaySettingsExW

使用Mirror 驱动的时候,都是使用 ChangeDisplaySettingsExW 这个函数来让Mirror显示器来生效,是的Mirror 驱动开始工作,那么我们看一下Win10 下面这个函数是怎么工作的呢?
在这里插入图片描述
在 ChangeDispSettingsNotificationW 这个操作中,存在如下流程:
(1)判断如果当前生效的是Mirror驱动,那么调用从注册表"SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AppCompatFlags"中读取"MirrorCompatBinaryExtension"这个DLL,这个DLL是MirrorDrvCompat.dll,并加载这个DLL。
(2)调用MirrorDrvCompat.dll的导出函数 MirrorDrvLoadedNotify 。从名字也可以看出来,MirrorDrvCompat.dll这个就是Mirror驱动兼容生效的Dll。

2. MirrorDrvCompat

这个DLL加载中,会做两个比较重要的操作

  1. 创建一个Mirror 兼容采集图像的线程 CMitigationManagement::StaticMitigationManagementThread .
  2. CMitigationManagement::StaticNotificationWindowThread 自己程序的窗口,用来响应相关窗口消息。明显 CMitigationManagement::StaticMitigationManagementThread 这个操作才是Mirror驱动为什么可以生效的重点,这个函数的基本实现如下:
    在这里插入图片描述CMitigationManagement::DuplicateDesktop 这个操作看起来似乎就是Win10下面的屏幕复制的操作,这个函数的实现过于复杂,但是大致浏览一下我们就可以发现使用了D3D相关的操作,看起来就是这一套操作流程了。最终,我们会看到一个调用操作:
    在这里插入图片描述
    从名字可以看到,是将我们的脏区域绘制到Mirror的Surface中去。
<think>好的,我现在需要帮用户查找在Windows 10上安装Minikube的教程或指南。首先,我应该回顾用户提供的引用内容,看看里面有没有相关的步骤。用户提到了三个引用,引用[1]、引用[2]和引用[3],都是关于在Windows系统上安装Minikube的。 首先,引用[1]提到使用Chocolatey安装Minikube和Docker,执行命令是choco install minikube docker。这里可能涉及到先安装Chocolatey,然后通过它来安装Minikube。用户还提到需要确认Chocolatey的版本,比如2.2.2。所以步骤可能包括安装Chocolatey,然后使用它安装Minikube和Docker。 然后看引用[2],用户提到在cmd中执行命令下载Minikube的可执行文件,具体是通过Invoke-WebRequest下载到指定目录,比如c:\minikube\minikube.exe。这里可能需要手动下载并设置环境变量,或者直接运行安装命令。这似乎是一种手动安装的方式,不需要通过包管理器。 引用[3]则提到在Windows 11上安装Minikube,可能部分步骤和Win10类似,比如是否需要安装kubectl。不过用户的问题是关于Win10的,所以可能需要参考前两个引用更多。 接下来,我需要将这些信息整合成一个清晰的步骤指南。通常安装Minikube需要先安装Hyper-V或者其他的虚拟机驱动,比如Docker Desktop。不过用户提供的引用中没有提到Hyper-V的设置,可能需要补充这一点,或者确认是否需要安装Docker作为驱动。 根据引用[1],使用Chocolatey安装Minikube和Docker可能更简便,因为Chocolatey可以自动处理依赖。用户可能更倾向于这种方法,但需要确保Chocolatey已经安装。如果用户没有安装Chocolatey,应该先提供安装Chocolatey的命令,比如在PowerShell中运行Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')),然后再执行choco install minikube docker。 引用[2]的方法则是手动下载minikube.exe,并添加到系统路径中。这可能适合不想使用包管理器的用户。同时需要安装Docker或其他虚拟机管理程序,比如VirtualBox,但用户引用中只提到Docker,所以可能需要说明安装Docker Desktop并启用Hyper-V。 此外,引用[3]提到kubectl的安装是可选的,因为Minikube内置了kubectl,但用户可能需要知道如何访问它,比如通过minikube kubectl --命令。 可能还需要验证安装后的步骤,比如启动Minikube集群,检查状态。例如运行minikube start --driver=docker,然后minikube status。 需要确保步骤完整,包括安装前的准备(如启用Hyper-V,安装Chocolatey),安装Minikube,安装驱动程序(Docker),以及验证安装。同时要注意用户的环境是Win10,可能需要管理员权限运行命令行工具。 还要注意用户提供的引用中的路径是否正确,比如引用[2]中的下载路径是c:\minikube\minikube.exe,是否需要添加到PATH环境变量中,否则用户可能无法直接在命令行中使用minikube命令。 可能的问题点:用户是否已经安装了Docker或者需要安装其他驱动,不同的驱动(如Hyper-V, VirtualBox, Docker)的配置步骤可能不同。根据引用[1],用户同时安装了Docker,所以可能推荐使用Docker驱动,但需要确保Docker Desktop已经正确安装并运行。 总结步骤可能包括: 1. 安装Chocolatey(如果尚未安装) 2. 使用Chocolatey安装Minikube和Docker 3. 启动Docker Desktop并确保其运行 4. 启动Minikube集群 5. 验证安装 或者手动安装步骤: 1. 手动下载Minikube二进制文件到指定目录 2. 将目录添加到系统PATH 3. 安装Docker或其他虚拟机驱动 4. 启动Minikube 5. 验证 需要根据用户提供的引用选择合适的步骤,并补充可能的遗漏部分,比如启用Hyper-V,或者处理可能遇到的错误。</think>以下是在Windows 10上安装Minikube的详细步骤指南,整合了站内引用内容并补充必要操作: --- ### **Windows 10安装Minikube教程** #### **方法一:通过Chocolatey安装(推荐)** 1. **安装Chocolatey包管理器** 以管理员身份打开PowerShell,执行以下命令: ```powershell Set-ExecutionPolicy Bypass -Scope Process -Force [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) ``` 安装完成后验证版本: ```powershell choco -v # 应输出类似2.2.2的版本号[^1] ``` 2. **安装Minikube和Docker驱动** 继续执行命令: ```powershell choco install minikube docker-desktop ``` 3. **启动Docker Desktop** 安装完成后,从开始菜单打开Docker Desktop并接受服务条款,确保Docker服务正常运行。 4. **启动Minikube集群** 以管理员身份打开CMD或PowerShell,执行: ```powershell minikube start --driver=docker ``` 5. **验证安装** ```powershell minikube status # 应显示"Running" minikube kubectl -- get nodes # 查看集群节点[^3] ``` --- #### **方法二:手动安装(无Chocolatey)** 1. **下载Minikube二进制文件** 以管理员身份打开PowerShell,执行: ```powershell New-Item -Path 'c:\' -Name 'minikube' -ItemType Directory -Force Invoke-WebRequest -OutFile 'c:\minikube\minikube.exe' -Uri 'https://github.com/kubernetes/minikube/releases/latest/download/minikube-windows-amd64.exe' -UseBasicParsing [^2] ``` 2. **添加环境变量** 将`C:\minikube`添加到系统PATH: - 右键“此电脑” → 属性 → 高级系统设置 → 环境变量 → 编辑Path → 添加`C:\minikube` 3. **安装Docker Desktop** 从[官网](https://www.docker.com/products/docker-desktop/)下载安装包,完成安装后启动服务。 4. **启动Minikube** ```powershell minikube start --driver=docker ``` --- #### **常见问题解决** - **Hyper-V未启用**: 需在“控制面板 → 程序 → 启用或关闭Windows功能”中勾选Hyper-V并重启。 - **驱动冲突**: 若使用其他驱动(如VirtualBox),需指定`--driver=virtualbox`。 - **镜像拉取失败**: 使用阿里云镜像加速: ```powershell minikube start --driver=docker --image-mirror-country=cn --registry-mirror=https://registry.docker-cn.com ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宸汐软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值