虚拟化技术
文章平均质量分 92
NanosNanos
专注虚拟化技术、串流、云桌面技术,GPU、图形引擎相关技术交流
展开
-
基于AVStream的虚拟摄像头原理简介及实现
AVStream是对内核流(Kernel Stream)驱动开发的扩展,取代Windows 2000下面 Kernel Streaming音视频开发技术,基本架构如下:AVStream是基于Kernel Stream框架扩展的新框架,在该框架下面我们更加方便开发出音视频相关的驱动(例如虚拟摄像头等)。原创 2024-04-29 20:00:34 · 604 阅读 · 0 评论 -
Windows下GPU虚拟化 - 搭建Hyper-V GPU-PV Windbg双击调试环境(2)
在调试器中认识GPU-PV原创 2024-01-14 16:03:58 · 1416 阅读 · 1 评论 -
基于USB总线的虚拟摄像头(UVC)原理简介
前面文章中我们分析了虚拟声卡的实现,在文章中我们展示了创建一个虚拟麦克风和虚拟扬声器的技术原理。完成了音频的虚拟化之后,这里就要谈论一下对于视频的虚拟化了——虚拟摄像头的实现。关于虚拟麦克风和虚拟扬声器的实现,可以参考。虚拟摄像头应用也是非常普遍的,例如云桌面远程摄像头的实现,直播技术。目前对于虚拟摄像头有三种实现方式:DirectShow虚拟摄像头,这个是一种比较古老的技术;在新版本应用中,该项技术基本失效了,尤其是UWP框架程序,DirectShow虚拟摄像头就失效了。原创 2024-01-09 22:31:18 · 1347 阅读 · 0 评论 -
虚拟声卡(虚拟扬声器和虚拟麦克风)应用之音频回环(Virtual Audio Cable)
首先在了解Virtual Audio Cable音频回环技术之前,我们先介绍几个基础的概念:虚拟声卡:是一种硬件虚拟化技术;基于软件技术虚拟出麦克风或者虚拟扬声器硬件,提供给上层用户程序使用虚拟麦克风和扬声器,例如通过给虚拟扬声器喂送音频数据实现麦克风录音效果。音频回环:跟我们网络通信的回环地址(127.0.0.1)通信一样;所谓的音频回环是内核驱动层直接将麦克风/扬声器的声音直接提交给扬声器/麦克风,可以达到数据硬件层的直接转发的功能。原创 2023-12-30 16:37:12 · 2084 阅读 · 0 评论 -
如何在云电脑串流中实现声音输入输出—虚拟声卡(虚拟扬声器和虚拟麦克风)开发
在端口类中有过滤器工厂用来实例化过滤器。在云计算的背景下面,虽然我们云主机(上图的虚拟机)运行在了远端,给使用和管理带来了非常大的便捷,但是也带来了很大技术上面的困难。要解决上面这些问题,就需要在虚拟机中对声卡进行虚拟化,实现虚拟声卡驱动程序,使得用户程序能够使用扬声器播放声音以及可以对麦克风喂数据,将本地麦克风的数据喂给虚拟机的虚拟麦克风。上述我们以及完成了各种的小端口驱动的创建和初始化,各个音频适配器过滤驱动也已经创建完成,我们只需要完成最后一步了,将各个过滤器进行连接,连接的函数时。原创 2023-12-23 16:38:00 · 2249 阅读 · 2 评论 -
如何在云电脑串流中实现本地存储的访问——磁盘映射(目录映射)开发
对于第二种虚拟总线技术方案,我们可以再虚拟总线挂载一个虚拟的磁盘设备,对于该磁盘的所有请求都通过网络协议发到客户端进行处理,该方案存在比较明显的缺陷就是客户端和虚拟机无法同时对于磁盘使用,而且实现难度也非常大。不过存在很多情况下,我们的资源并不是全部集中在服务器,比如如果我们的瘦客户终端是PC的话,我们希望能够把本地的磁盘直接映射到远程VDI虚拟机里面使用,那么就需要使用到我们的磁盘映射技术了。对于基于分布式文件系统的方案是一种比较合适的方案,我们从文件系统层面,对磁盘(目录)来进行映射(共享)访问。原创 2023-08-23 13:41:55 · 314 阅读 · 0 评论 -
如何在云电脑串流中实现多屏操作——基于Indirect Display Driver的虚拟显示器开发
IDD是一个基于WDF的用户层驱动程序,基本架构如下:IndirectKMD.sys这是一个Display Only驱动程序,是虚拟适配器的核心驱动。IddCx.dll是用户层接口提供动态库,主要将用户层的IddCx相关函数通过请求发送给驱动进行核心处理。third-part是用户实现的IDD驱动程序。表示逻辑显示适配器的对象。表示连接的显示器的对象。表示桌面图像的交换链。原创 2023-07-31 20:46:25 · 1059 阅读 · 6 评论 -
如何在云电脑串流中实现多屏操作——WDDM虚拟显示器开发
我们先来看一下WDDM显示驱动模型的框架图,如下:通过这个图我们可以发现,无论是D3D,OpenGL还是GDI绘图,最终在内核层都是通过Dxgkrnl.sys模块来实现;Dxgkrnl.sys取代了XP下面的Win32k.sys,成为了新一代的图像显示子系统库。DirectX图形库都需要在应用层提供用户模式的驱动,这样做的目的是可以在应用层渲染图像,这样大量的图像相关计算全在用户层完成。原创 2023-07-25 19:34:01 · 965 阅读 · 0 评论 -
如何在串流云桌面中实现外设的远程控制输入——HID人机接口设备驱动简介(键鼠、手写板等)
HID Transport是具体的硬件设备,我们HID Transport向上提供硬件相关信息,HID Client从来不主动和HID Transport直接通信,都是通过HIDClass.sys来进行中转的,这样给我们HID Client和HID Transport的开发都带来了非常大的便利;函数来完成注册的,这个函数是HIDClass.sys提供,也就是说HIDClass.sys提供了框架,给我们MiniPort驱动的开发。对于HID的设备的虚拟,我们主要是需要实现HID Transport。原创 2023-07-18 10:37:56 · 532 阅读 · 2 评论 -
基于串流云桌面的远程外设驱动——HID(人机接口设备)的描述符介绍
HID(Human Interface Device,人机接口设备)是USB设备中常用的设备类型,是直接与人交互的USB设备(例如键盘、鼠标与游戏杆等),他是一种相对简单的USB设备(相对USB摄像头这些来说)。当我们插入USB键盘或者鼠标之后,Windows就能自动识别HID设备插入,加载相关驱动;例如我们可以在设备管理器中看到如下:那么Windows是怎么知道插入的设备是U盘还是键盘鼠标呢?原创 2023-07-18 09:56:33 · 604 阅读 · 0 评论 -
基于串流的云桌面的关键技术——虚拟化技术汇总
一直都在学习和从事Windows驱动,VDI,虚拟化和安全相关工作;近年来,随着国产化越来越火热,计划投入部分时间学习一下Linux的相关技术知识。近期打算把自己学习过的相关技术知识点拿出来分享一下,作为一个温故和总结;该技术点主要包括Windows的一些虚拟化技术:该帖作为一个汇总帖持续更新中,欢迎大家交流和讨论。原创 2023-07-18 09:52:28 · 251 阅读 · 0 评论