- 博客(641)
- 收藏
- 关注
原创 Windows 图形显示驱动开发-WDDM 2.4功能-基于 IOMMU 的 GPU 隔离(三)
此验证可确保驱动程序不会意外报告超出保留范围的物理内存区域,因而违反该功能的安全保证。对于必须在电源转换期间将帧缓冲区的保留部分保存到系统内存的驱动程序,Dxgkrnl 会在适配器初始化时对所需内存进行用量认可。无法立即锁定整个帧缓冲区,则驱动程序必须尝试使用初始化时分配的预分配缓冲区来向前推进。此操作是通过为每个物理适配器创建一个唯一的区域对象来完成的,该对象为最大尺寸指定了一个非零值。调用一次查询是为了查询所需的范围数量,而随后的第二次调用是为了填充保留范围的数组。的回调接口,使用列出的函数来进行。
2025-04-02 00:15:00
280
原创 Windows 图形显示驱动开发-WDDM 2.1 功能(一)
此功能可为符合 WDDM 2.1 标准的硬件和驱动程序提供跨多个进程的高效捕获图片管理、节能、更低的带宽和减少延迟。最终结果是提高应用程序和用户的性能。因此,进程生存期管理器能够从使用 DirectX 的后台程序中回收更多内存,从而减少后台程序在内存压力下被终止的次数。这些功能的重点是为开发人员带来好处,而最终用户得到的好处是,即使在现有硬件上运行,新游戏或更新游戏的性能也会有所提高。驱动程序存储功能的实现需要更改图形驱动程序 INF 文件,以确保驱动程序文件被复制到唯一的驱动程序存储库。
2025-04-02 00:15:00
640
原创 Windows 图形显示驱动开发-WDDM 2.4功能-基于 IOMMU 的 GPU 隔离(一)
基于 IOMMU 的 GPU 隔离允许 Dxgkrnl 利用 IOMMU 硬件对从 GPU 访问系统内存加以限制。OS 可以提供逻辑地址,而不是物理地址。这些逻辑地址可用于限制设备对系统内存的访问,使其只能访问允许访问的内存。它通过确保 IOMMU 将 PCIe 上的内存访问转换为有效和可访问的物理页面来实现这一目标。如果设备访问的逻辑地址无效,则设备就无法访问物理内存。这一限制可防止一系列允许攻击者通过受损硬件设备访问物理内存的漏洞。如果缺少它,攻击者就可以读取设备运行所不需要的系统内存内容。
2025-04-01 00:15:00
407
原创 Windows 图形显示驱动开发-WDDM 2.4功能-基于 IOMMU 的 GPU 隔离(二)
对于无法通过所提供的分配回调之一进行分配的内存,我们提供了 DXGKCB_MAPMDLTOIOMMU 回调,以便通过 IOMMU 来跟踪和使用驱动程序管理的 MDL。IOMMU 域的连接和分离速度很快,但目前还不是原子式的。由于它不是原子式的,因此在交换到具有不同映射的 IOMMU 域时,通过 PCIe 发出的事务并不能保证正确转换。分配回调会提供另一个句柄,作为输出的一部分,该句柄必须提供给相应的释放回调。会通过新的分配回调例程来跟踪所有映射的物理内存,以及 VidMm 本身分配的任何内存。
2025-04-01 00:15:00
689
原创 Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(十二)
UMD 在虚拟机中运行时,它只知道来宾分配句柄,并且无法将此类句柄传递给 KMD,因为 KMD 在主机中运行。来宾中的 UMD 会调用 D3DKMTEscape,而主机中的 KMD 会接收相应的 DxgkDdiEscape 调用。若要在使用半虚拟化时处理此类情况,主机上的 KMD 需要向客户机中创建的事件发送信号。例如,假设在没有虚拟化的情况下,KMD 在调用 D3DKMTEscape 的用户模式线程的上下文中调用 DxgkCbAcquireHandleData,该线程调用 DxgkDdiEscape。
2025-03-31 00:06:04
616
原创 Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(十一)
主机中 CPU 可见的分配后备存储被固定在内存中,并映射到来宾 IO 空间。OS 在主机中为使用 GPU 的来宾 VM 中的每个进程创建 DXGPROCESS。如果计算机有多个支持 GPU-PV 的 GPU 适配器,并且想要将每个适配器分配给 VM,则此设置非常有用。当 UMD 在来宾 VM 中运行时,相应的 KMD DDI 调用在主机分区中发生。默认情况下,支持 GPU 半虚拟化的适配器公开的虚拟函数数为 32。因此,如果将两个适配器添加到 VM,两个适配器都可以从主机获取相同的 GPU-PV 适配器。
2025-03-31 00:05:50
670
原创 Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(九)
容器(也称为 主机计算系统(HCS)VM 与完整 VM 之间的区别在于 OS 二进制文件和驱动程序存储文件映射到容器。因此,无需将驱动程序文件复制到容器,除非在 windows\system32 目录中需要这些文件。更新主机上的驱动程序并启动或停止主机 GPU 时,更改将反映在容器中。
2025-03-30 00:15:00
347
原创 Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(十)
将事件添加到事件查看器通道,以帮助识别 vGPU 启动问题。事件通道是管理通道和运行通道。事件显示在 Windows 事件查看器中:应用程序和服务日志 - Microsoft - Windows - Dxgkrnl。事件查看器包含来自其他组件的事件,这些组件通过 GPU-PV(Hyper-V-Compute、Hyper-V-Worker、Hyper-V-VID 等)参与 VM 的创建。在使用 Add-VMGpuPartitionAdapter 时,如果不需要某项功能(例如解码),请不要指定该功能。
2025-03-30 00:15:00
488
原创 Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(七)
将 VM 中使用的同一客户端版本的 VHDX 复制到主机目录。使用“Hyper-V 管理器连接”选项连接到 VM。访问文件,请手动将文件复制到 VM。卸载 VM 的 VHDX。
2025-03-29 01:15:00
414
原创 Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(八)
以下 PowerShell 脚本是如何从头开始设置 VM 的示例。修改它以满足你的需求。检查 VM 的设备管理器中是否存在虚拟呈现设备。VM 内的所有呈现都通过虚拟 GPU。在常规客户端计算机上配置 VM 调试器的方式与网络调试相同。
2025-03-29 00:15:00
410
原创 Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(五)
为确保一致的实现并支持将来可能将 LDA 支持反向移植到较旧的 Windows 版本,KMD 需要通过调用 DxgkCbIsFeatureEnabled(DXGK_FEATURE_LDA_GPUPV) 来检查 GPU-PV 中的 LDA 支持。如果 KMD 不调用此回调,Dxgkrnl 假定 KMD 不支持 GPU-PV 中的 LDA。使用小于 DXGKDDI_INTERFACE_VERSION_WDDM3_0 的接口版本编译的驱动程序不会检查 DXGK_FEATURE_LDA_GPUPV。
2025-03-28 00:15:00
696
原创 Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(六)
为 D3D12 运行时启用或禁用 LDA 时,UMD 需要将正确的层和节点映射信息返回到运行时。要禁用 LDA,UMD 需要返回 D3D12DDI_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED 层,并在节点映射中只启用一个物理适配器。
2025-03-28 00:15:00
658
原创 Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(三)
KMD 注册表项存在于主机上,不会反映到 VM。因此,UMD 无法直接读取此类驱动程序注册表项。UMD 还可以直接调用 D3DKMTQueryAdapterInfo。此调用对来宾中的 UMD 非常有用,因为它是向主机调用的,并提供了一种将某些名称转换为来宾名称空间的方法。对于容器,Hyper-V 将主机中的完整主机驱动程序存储目录映射到容器中的 <%windir%\HostDriverStore。当虚拟 GPU 适配器在 VM 中启动时,驱动程序存储文件将复制到 VM。在作系统的已发布版本中禁用此功能。
2025-03-27 00:15:00
663
原创 Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(四)
以下示例演示如何让 OS 将 <DriverStorePath>\Subdir1\Subdir2\softgpu2wow64.dll 复制到 %windir%\syswow64\softgpu.dll,以及将 <DriverStorePath>\softgpu.dll 复制到 %windir%\syswow64\softgpu2wow64.dll。OS 提供了一种方法,让驱动程序指定应从主机中的驱动程序存储复制到来宾中 %windir%\system32 or %windir%\syswow64 的文件。
2025-03-27 00:15:00
930
原创 Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(二)
当 VM 请求 UMD 名称时,该名称将转换为 <VmSystemDrive>:\windows\system32\HostDriverStore\FileRepository\DriverSpecificDirectory\d3dumd.dll。本文中此过程称为 VM 进程。在虚拟化环境中,当虚拟机运行时,通常在主机上用户进程的上下文中运行的各种 KMD DDI 调用将在 vmmem 进程的上下文中执行。来自 VM 或 VM 分配创建的所有渲染操作都是在 VM 的 DXGPROCESS 上下文中完成的。
2025-03-26 02:45:14
571
原创 Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(一)
GPU 虚拟化是 Windows 客户端和 Windows Server 的重要功能。有许多方案需要有效使用虚拟机中的 GPU 资源。
2025-03-26 02:45:00
543
原创 Windows 图形显示驱动开发-WDDM 2.7功能-MCDM KM 驱动程序实现指南(四)
KMD 指定了它支持的段类型的数量,并通过响应对其 DxgkDdiQueryAdapterInfo 函数的调用来描述每种段类型。在此之前,内核模式显示微型端口驱动程序 (KMD) 必须通过使用内存段将 GPU 的地址空间描述为 VidMm。但是,KMD 必须指定 VidMm 在系统上运行的所有进程中管理的所有内存资源。它可以根据硬件支持的存储器类型(例如,帧缓冲区内存或系统内存光圈)配置内存段。因此,VidMm 可以从一个段分配相当数量的视频内存资源,而不管应用程序从另一个段持有多少资源。
2025-03-25 09:53:06
1083
原创 Windows 图形显示驱动开发-WDDM 2.7功能-MCDM KM 驱动程序实现指南(五)
将来可能会启用物理寻址支持,设备不需要支持内存光圈,仅支持 线性内存空间段 和 线性光圈空间段。以下 DXGK_DRIVERCAPS。以下 DXGK_DRIVERCAPS。将 NbAsymetricProcessingNodes 设置为支持的 GPU 引擎数。
2025-03-25 09:49:22
596
原创 Windows 图形显示驱动开发-WDDM 2.7功能-MCDM KM 驱动程序实现指南(三)
对于可选的意外删除支持,还必须提供指向以下函数的指针:对于可选的取消支持,还必须提供指向以下函数的指针:对于可选接口支持,还必须提供指向以下函数的指针:对于可选的硬件计划支持,还必须提供指向以下函数的指针:对于可选的 UpdateAllocationProperty 支持,还必须提供指向以下函数的指针:对于可选的转义支持,还必须提供指向以下函数的指针:对于可选的 ETW 支持,还必须提供指向以下函数的指针:对于可选的子设备支持,还必须提供指向以下函数的指针:对于可选的功耗报告支持,还必须提供指向以下函数的指
2025-03-24 08:06:57
1276
原创 Windows 图形显示驱动开发-WDDM 2.7功能-MCDM KM 驱动程序实现指南(二)
对于 32 位 OS 离散图形处理单元 (GPU) 不支持可调整大小的 BAR,或者当调整帧缓冲区 BAR 的大小失败时,Windows 显示驱动程序模型 (WDDM) v2 将提供一种替代机制,通过该机制可以有效地访问离散 GPU VRAM。CPU 主机光圈后面的页表的内存由驱动程序管理,并在驱动程序初始化期间提前设置。这些新的和更新的函数和结构从Windows 8开始可用,以便显示微型端口驱动程序转换电源组件的状态并与 Microsoft DirectX 图形内核子系统通信电源事件。
2025-03-24 08:06:40
566
原创 Windows 图形显示驱动开发-WDDM 2.7功能- MCDM 体系结构
计划程序负责从 SW 队列中移除 DMA 缓冲区,并将缓冲区提交给相应的引擎,后者再将缓冲区放到自己的 HW 队列中。如果存在两个或两个以上的引擎,则在安排这些引擎的工作时,应假定每个引擎的工作都能及时进行,并且不会影响其他引擎的工作。由于 DMA 缓冲区是在给定的地址空间中执行的,因此只有每个引擎都能在不同的地址空间中执行 DMA 缓冲区时,才能支持多个 引擎。当要求抢先处理未完成的工作时,引擎必须至少支持完成任何部分完成的 DMA 缓冲区,并取消所有尚未启动的DMA 缓冲区。
2025-03-24 00:15:00
447
原创 Windows 图形显示驱动开发-WDDM 2.7功能-MCDM KM 驱动程序实现指南
仅计算驱动程序公开它在 DRIVER_INITIALIZATION_DATA 结构中实现的函数。
2025-03-24 00:15:00
240
原创 Windows 图形显示驱动开发-WDDM 2.9功能- 支持跨适配器资源扫描 (CASO)(三)
为了缓解负回退体验,DXGI 在缓冲区创建期间调用 pfnCheckMultiplaneOverlaySupport ,并将交叉适配器资源用作标有 StaticCheck 标志的平面,以在给定现有已知带宽特征的情况下,以高准确度验证驱动程序是否可以执行扫描。因此,可能存在呈现带宽受限的常见显示方案(例如旋转或多显示器),其中驱动程序可能会一直无法通过 DWM 中的 pfnCheckMmultiplaneOverlaySupport 支持,从而导致比双复制路径更差的体验。否则,DXGI 会回退到双复制路径。
2025-03-23 00:15:00
1493
原创 Windows 图形显示驱动开发-WDDM 2.7功能- 支持跨适配器资源扫描 (CASO)
在 Windows 10 版本 1903(WDDM 2.6)及更高版本中,Microsoft计算驱动程序模型(MCDM)可用于为支持仅计算功能的设备编写驱动程序。MCDM 驱动程序或仅计算驱动程序是 Windows 显示驱动程序模型 2.0+ (WDDM)的缩减子集。在 WDDM 术语中,驱动程序必须将自身播发为 “仅呈现”设备,而无需显示功能。“呈现设备”的内核支持很灵活,因为设备执行的呈现命令对 WDDM 不透明。换句话说,WDDM 可以使用不透明的命令缓冲区设计轻松支持任何类型的设备。
2025-03-23 00:15:00
1026
原创 Windows 图形显示驱动开发-WDDM 2.9功能- 支持跨适配器资源扫描 (CASO)(一)
Windows Server 2022 (WDDM 2.9) 及更高版本的驱动程序可以声明对适当的跨适配器资源层的支持,从而允许系统的表示堆栈优化跨适配器呈现。由于 D3D12 的 cap 是此第 2 层上限的超集, 因此 D3D12CreateDevice 还会验证是否设置了内核驱动程序的 CrossAdapterResourceTexture cap(如果设置了 其 CrossAdapterRowMajorTextureSupported cap),并且如果未设置,则无法创建设备。
2025-03-22 00:15:00
645
原创 Windows 图形显示驱动开发-WDDM 2.9功能- 支持跨适配器资源扫描 (CASO)(二)
此调用是一次性调用,不应影响实际的演示行为。因此,对 来自 DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 的当前信息执行任何缓存的驱动程序不应包含具有 StaticCheck 平面的 DDI 调用中的信息。在创建缓冲区期间(例如在创建交换链或 ResizeBuffers 期间)期间,会从 DXGI 应用进程使用对设置了 StaticCheck 标志的DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3的调用,以尽力确定当前硬件配置是否支持 CASO。
2025-03-22 00:15:00
550
原创 Windows 图形显示驱动开发-WDDM 3.0功能- 硬件翻转队列(六)
在 WDDM 3.1 和 Windows Server 2022 版本中,为了简化不支持排队自定义 持续时间 更改的硬件的驱动程序实现,OS 仅在完成以前的翻转请求后提交具有新的 Duration 参数的翻转请求。启用硬件翻转队列时,撕裂翻转的语义在概念上是相同的。当刷新速率更改为当前刷新速率的非多余时(例如,从 24 Hz 更改为 60 Hz),OS 需要检查队列翻转以查看其计算目标时间是否仍然对新的刷新率有效。如果需要更改目标翻转时间,OS 将取消排队翻转,并使用新计算的目标翻转时间重新排队。
2025-03-21 00:15:00
1056
原创 Windows 图形显示驱动开发-WDDM 3.0功能- 通过 USB4 对 DisplayPort 监视器的 WDDM 支持
此测试验证在具有 USB4 的笔记本电脑上,如果 iGPU 和 dGPU) 公开任何目标, (所有图形驱动程序是否都支持 USB4 功能。在启动时,系统可以验证驱动程序是否支持所有必要的要求,如果驱动程序未提供此类支持,则驱动程序启动失败,而不是在热插拔检测时发现。支持连接到动态 VidPn 目标的 USB4 监视器,但连接到静态 VidPn 目标的所有 USB4 动态 VidPn 目标必须具有相同USB4_Driver_ID值,即连接到同一 USB4 主机路由器。
2025-03-21 00:15:00
795
原创 Windows 图形显示驱动开发-WDDM 3.0功能- 硬件翻转队列(四)
如果 OS 对 DxgkDdiSetInterruptTargetPresentId 的调用在平面上设置一个 InterruptTargetPresentId,这将导致在此 VidPnSource 上完全禁用 VSync(即,此平面是使 VSync 保持启用的最后一个平面),并且现在此平面正在禁用 VSync,KMD 应禁用 VSync 中断,但在硬件启用(DXGK_VSYNC_DISABLE_KEEP_PHASE) 中保留 VSync 阶段。以下示例说明了在单个平面上翻转取消的机制和同步案例。
2025-03-20 00:15:00
875
原创 Windows 图形显示驱动开发-WDDM 3.0功能- 硬件翻转队列(五)
在单个平面配置分别完成三个 PresentIds N、 N+1 和 N+2 后,v2、v3、v4、KMD 在其翻转队列日志缓冲区中写入了三个新条目,索引为 40、41 和 42。在这种情况下,OS 显式调用 DxgkDdiUpdateFlipQueueLog,以请求 KMD 从其专有显示硬件数据结构读取,并将过去的翻转信息写入翻转队列日志。假设在提交翻转 N 时,FirstFreeFlipQueueLogEntryIndex 设置为 40,然后完成 N、N+1、N+2 演示。
2025-03-20 00:15:00
909
原创 Windows 图形显示驱动开发-WDDM 3.0功能- 硬件翻转队列(二)
如果 OS 允许的硬件翻转队列支持,则支持硬件翻转队列的 KMD 应将 MaxHwQueuedFlips 设置为大于 1 的值。支持硬件翻转队列的 KMD 必须在设备启动期间首先调用DXGKCB_QUERYFEATURESUPPORT,其中 FeatureId 为 DXGK_FEATURE_HWFLIPQUEUE,以确定 OS 是否允许启用硬件翻转队列。在驱动程序启动期间,即使可以在不启用 GPU 硬件调度的情况下启用硬件翻转队列,这种组合也不被官方支持。在达到目标翻转时间后,用户可以看到翻转。
2025-03-19 00:15:00
389
原创 Windows 图形显示驱动开发-WDDM 3.0功能- 硬件翻转队列(三)
OS 将尝试在完成受翻转影响的平面上所有挂起的翻转后再次提交翻转请求,并在达到目标时间后提交翻转请求。相反,在完全空闲的系统上,VSync 中断将挂起,直到出现新的演示活动或 VSync 侦听器。在某些情况下,显示硬件可能需要在所有平面上完成挂起的翻转,而不仅仅是传入翻转请求引用的翻转。同样,显示硬件可能需要在所有 VidPn 源上完成挂起的翻转才能重新分配内部资源,在这种情况下,必须设置 HwFlipQueueDrainNeeded 标志,KMD 应返回STATUS_RETRY。
2025-03-19 00:15:00
834
原创 Windows 图形显示驱动开发-WDDM 3.0功能- 硬件翻转队列(一)
在 WDDM 3.0 之前的游戏方案中,GPU 完成将场景呈现到交换链后缓冲区后,会有一个到 CPU 的往返,以便将请求提交以将帧内容呈现到屏幕。此功能对于减少高帧速率游戏方案中的延迟非常有用,在这种方案中,多个帧以间隔 0 依次呈现,目的是只显示最近的帧。在视频播放方案中,要按顺序显示的多个未来帧的内容是预先已知的,并且可以排队到 GPU。在 WDDM 3.0 之前的游戏方案中,GPU 完成将场景呈现到交换链后缓冲区后,会有一个到 CPU 的往返,以便将请求提交以将帧内容呈现到屏幕。
2025-03-18 00:17:48
1071
原创 Windows 图形显示驱动开发-WDDM 3.0功能- D3D12 增强型屏障(三)
(旧资源屏障设计不允许子资源同时处于 D3D12DDI_RESOURCE_STATE_COPY_SOURCE 和 D3D12DDI_RESOURCE_STATE_COPY_DEST 状态,因此无法复制到自身。但是,除了 D3D12DDI_BARRIER_ACCESS_RENDER_TARGET 之外,必须使用屏障来刷新对同一资源的顺序写入。此外,使用特定于队列的通用布局的缓冲区或纹理可以在没有屏障的情况下使用 D3D12DDI_BARRIER_ACCESS_UNORDERED_ACCESS。
2025-03-18 00:16:56
1274
原创 Windows 图形显示驱动开发-WDDM 3.0功能- D3D12 增强型屏障(二)
在屏障中将 D3D12DDI_BARRIER_ACCESS_COMMON 指定为 AccessBefore 表示所有写入访问类型的集合。D3D12DDI_BARRIER_ACCESS_COMMON 是一种特殊的访问类型,表示任何布局兼容的访问。转换为 D3D12DDI_BARRIER_ACCESS_COMMON 意味着子资源数据必须可用于屏障后的任何布局兼容访问。由于许多 GPU 写入操作都是缓存的,因此从写入访问到另一个写入访问或只读访问的任何障碍都可能需要缓存刷新。访问转换不执行同步。
2025-03-17 01:37:38
1014
原创 Windows 图形显示驱动开发-WDDM 3.0功能- D3D12 视频编码(一)
例如,D3D12DDI_VIDEO_ENCODER_CODEC_CONFIGURATION_0082_0 结构包含一个联合,其中包含指向编解码器特定 D3D12DDI_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_0082_0 的指针,以及包含编解码器特定配置信息的 D3D12DDI_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_0082_0 结构。扩展了与视频相关的现有框架,以允许驱动程序报告视频编码支持和功能。
2025-03-17 01:36:21
750
原创 Windows 图形显示驱动开发-WDDM 3.1- 与 KMD 共享后备存储
一旦 KMD 成功确定启用了该功能,UMD 就会调用 D3DKMTCreateAllocation 来创建共享的 CPU 可见分配,并通过专用数据指示 KMD 必须与 KMD 共享该分配。这些功能 ID 表示已在旧版 OS 版本中定义或实现的功能,并且现有软件检查必须能够继续由这些 ID 查询这些功能。由于原始功能实现未对功能 ID 进行分类,因此必须保留类别 0 中定义的少数功能 ID 以实现向后兼容性,但不是驱动程序功能。只有当回调成功并且 Enable 设置为 TRUE 时,才能使用该功能。
2025-03-16 00:15:00
451
原创 Windows 图形显示驱动开发-WDDM 3.0功能- 从KMD发出CPU CPU 事件信号
已知转义已添加到 D3DDDI_DRIVERESCAPETYPE。D3DDDI_DRIVERESCAPETYPE_CPUEVENTUSAGE 用于通知 KMD 有关 KMD CPU 事件对象的预期使用情况。已知转义通过设置 DXGKARG_ESCAPE::Flags.DriverKnownEscape = 1 来定义。已知转义会从安全虚拟机发送到主机。以下代码片段是一个用法示例。hDevice 设置为用于创建同步对象的微型端口设备句柄。
2025-03-16 00:15:00
583
原创 Windows 图形显示驱动开发-WDDM 3.0功能- IOMMU DMA 重新映射(二)
VidMm 提供 DXGK_OPERATION_MAP_APERTURE_SEGMENT2 分页缓冲区模式,用于将内存映射到光圈段,因为以前的版本使用与逻辑地址不兼容的 MDL。支持逻辑地址重新映射到 DXGK_OPERATION_MAP_APERTURE_SEGMENT2 模式的 WDDM 3.0 驱动程序的 DxgkddiBuildpagingbuffer 回调,并且不再接收对原始 DXGK_OPERATION_MAP_APERTURE_SEGMENT 模式的调用。并非所有分配都需要此地址。
2025-03-15 00:15:00
627
原创 Windows 图形显示驱动开发-WDDM 3.0功能- IOMMU DMA 重新映射(三)
对于支持逻辑重新映射的 WDDM 3.0 驱动程序,这些旧的回调函数已被弃用,无法使用。尽管此注册表项存在于较旧版本的 Windows 上,但从 Windows 10 版本 1803 (WDDM 2.4) 开始,值“3”是唯一的,在不支持它的旧版本上会被忽略。从 WDDM 3.2 开始,调用这些函数中的任何一个驱动程序都会根据此要求进行验证,并在 IRQL 为 DISPATCH_LEVEL 或更高时进行错误检查。和 HAL 进行协调,以确定应使用哪种类型的映射模式(重新映射、直通等)。
2025-03-15 00:15:00
400
A*算法解决八数码问题
2025-03-26
windows USB 驱动,用于PL2303芯片上报GPS信息使用
2024-12-22
pl2303-linux.zip
2024-12-19
基于win 10的 NDIS 6.0 Filter 驱动,新增加了收发数据包以及查询网卡Mac地址的代码
2024-10-27
基于NDIS 6.x的Filter生成代码
2024-10-12
LUA脚本工具在windows平台下编译的版本
2024-10-02
基于windows 的日志串口驱动案例
2024-10-01
基于UMDF 2.15版本的VirtualSerial(虚拟串口)驱动程序代码
2024-09-22
UnderConstructionSolution.zip
2024-08-18
ASimpleClassSolution: windows C++ team code
2024-08-18
微软提供的关于鼠标驱动的案例
2024-01-01
基于ADNS-2620的光学鼠标方案
2023-12-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人