自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

苏洛的博客

长期进行windows平台的驱动开发;游戏小工具开发;自动化设备项目开发;DIY硬件开发和应用;

  • 博客(797)
  • 收藏
  • 关注

原创 window显示驱动开发—Direct3D 11 视频设备驱动程序接口 (DDI)

摘要:本文列举了Windows 8新增或更新的设备驱动程序接口(DDI),主要包括视频处理相关的创建/销毁、配置、解码、加密等功能接口,以及视频处理器格式、色彩空间、旋转等参数定义。这些DDI接口涉及视频解码器、处理器、认证通道、加密会话等核心组件的操作,为Windows 8的视频处理和安全功能提供了底层支持。同时包含了D3D11_1和DXVAHD等视频处理相关的数据结构定义和状态标志。

2025-07-29 00:01:24 382

原创 window显示驱动开发—Direct3D 11 视频播放改进

微软Direct3D 11视频技术实现了图形与视频处理API的统一,取代了传统的D3D9视频架构。该技术通过深度整合Media Foundation和DXVA-HD,支持现代编解码器,并采用共享GPU内存机制实现零拷贝交互。驱动需提供视频处理能力报告、资源兼容性保障及多引擎同步功能,同时为旧硬件设计回退路径。相比D3D9,D3D11视频管线实现了更高的内存效率和线程控制灵活性,允许直接使用计算着色器处理视频,终结了图形与视频处理的碎片化状态。开发者可通过DXGI共享表面逐步迁移现有应用,而新项目应直接采用I

2025-07-29 00:01:14 646

原创 window显示驱动开发—符合 DXGI DDI

摘要:Direct3D 11显示驱动需强制支持B5G6R5、B5G5R5A1、B8G8R8A8和B8G8R8X8四种扫描输出格式间的硬件加速转换,包含位深度扩展和Alpha处理规则。后台缓冲区仅允许绑定为渲染目标或着色器资源,禁止CPU访问。驱动需通过寄存器配置实现实时色彩空间转换,并严格验证资源创建参数。性能优化建议预加载硬件查找表,调试层需检测非法操作。该规范确保了显示兼容性并优化了呈现性能,要求驱动完整支持格式转换功能。

2025-07-28 08:28:12 369

原创 window显示驱动开发—RecycleCreateCommandList

摘要:本文介绍了通过RecycleCreateCommandList函数实现显卡驱动命令列表资源回收的优化机制。该机制采用线程本地缓存和无锁设计,通过复用DDI句柄来减少小内存量命令列表的创建/销毁开销。系统包含多级缓存结构(线程本地缓存和全局池),支持动态调整缓存大小,并严格校验回收句柄的有效性。优化后命令列表的创建/回收过程实现零内存分配,平均延迟低于1微秒,命中率可达90%以上。该方案适用于高频小命令列表场景,有效降低资源管理开销,同时确保线程安全和调试便利性。

2025-07-28 08:27:39 243

原创 window显示驱动开发—RecycleDestroyCommandList

摘要: RecycleDestroyCommandList是图形驱动中用于轻量级销毁命令列表的线程安全函数,与DestroyCommandList不同,它仅释放内部资源(如命令缓冲区)并标记句柄可复用,而保留句柄内存以优化性能。该函数必须无锁实现,通过原子操作管理全局复用池,且禁止返回错误码。设计上优先轻量级销毁以减少内存分配器争用,需在调试阶段验证句柄复用与泄漏。关键要求包括:线程安全、内存生命周期分离(附属资源释放/句柄保留)、与运行时协同的无失败执行。

2025-07-27 00:15:00 355

原创 window显示驱动开发—RecycleCommandList

摘要:RecycleCommandList函数是驱动程序用于回收命令列表内存至延迟上下文缓存的接口,由运行时在延迟上下文线程调用,实现无锁内存管理。该函数将命令缓冲区重置后存入线程局部缓存池供复用,优化性能的关键在于分级缓存设计和批量回收策略。与RecycleCreateCommandList配合实现缓存命中机制,并通过严格线程隔离和调试断言保证正确性。该机制通过避免内存重复分配和跨线程同步,显著提升图形API执行效率。(149字)

2025-07-27 00:15:00 406

原创 window显示驱动开发—支持命令列表

摘要:Direct3D运行时通过一系列DDI函数管理命令列表生命周期,包括创建、执行和销毁操作。重点描述了命令列表创建后延迟上下文的销毁流程,包括状态刷新处理和异常情况下的放弃机制。特别指出CommandListExecute期间驱动程序的特殊状态处理要求,以及API对查询和资源映射的安全保障措施。这些机制确保了命令列表执行时状态转换的正确性和资源访问的安全性。

2025-07-26 00:15:00 464

原创 window显示驱动开发—小型命令列表的优化

摘要:针对小内存量图形命令列表(如CopyResource)频繁创建/销毁带来的性能瓶颈,提出一种内存循环优化方案。关键是通过驱动程序的RecycleCommandList函数实现命令列表句柄内存的池化复用,减少系统内存分配开销。该方案要求驱动严格遵循内存大小约束(由CalcPrivateCommandListSize确定),并在内存不足时直接返回E_OUTOFMEMORY错误码而非回调。优化特别强调无锁设计和线程安全,适用于即时上下文和延迟上下文场景,可有效降低高频小命令场景下的CPU争用,实测显示池化复

2025-07-26 00:15:00 682

原创 window显示驱动开发—驱动程序数据组织

本文探讨了Direct3D驱动程序中数据组织的优化策略。主要关注线程安全的上下文句柄设计,建议将只读数据与直接上下文句柄数据连续存放但保持分离,并使用缓存行填充防止错误共享。文章详细介绍了Direct3D 11的DDI函数机制,包括CheckDeferredContextHandleSizes和CalcDeferredContextHandleSize等关键函数,用于确定延迟上下文所需内存。通过示例代码展示了运行时如何协调即时和延迟上下文的资源创建流程,强调驱动程序需平衡内存局部性与线程安全性,同时确保AP

2025-07-25 00:15:00 915

原创 window显示驱动开发—pfnSetErrorCb 的问题

本文介绍了Direct3D 11线程模型中创建函数的错误处理机制。所有创建函数不直接返回错误代码,而是通过pfnSetErrorCb回调报告错误,以确保与D3D10驱动模型的兼容性。对于延迟上下文,新增了E_OUTOFMEMORY等错误码的支持,驱动需监控命令缓冲区内存并及时报告错误。文章还阐述了线程安全要求,包括即时上下文需加锁保护,延迟上下文则采用线程隔离机制。通过调试验证和错误注入测试,确保驱动能正确处理内存不足和设备丢失等情况。这种统一回调机制既保持了兼容性,又扩展了对多线程场景的支持。

2025-07-25 00:15:00 722

原创 window显示驱动开发—延迟上下文中的映射

摘要:本文探讨了Direct3D 11 API中动态资源管理的实现机制。核心方案是通过创建别名资源(AliasResource)来实现延迟上下文与直接上下文的隔离,确保MAP_DISCARD操作不会影响原始资源。驱动需在ResourceMap时创建临时别名资源,并在CommandListExecute时替换为原始资源后回收。针对ResourceCopy操作,采用写入时复制机制,隐式创建新副本以避免修改别名资源。实现还需考虑线程安全、资源池化优化和生命周期管理,通过预分配资源池和延迟释放策略提升性能。关键约束

2025-07-24 00:15:00 1719

原创 window显示驱动开发—使用 Context-Local DDI 句柄

摘要:本文介绍了图形驱动程序中上下文本地句柄的机制,包括即时上下文句柄和延迟上下文句柄的生命周期管理。即时句柄最先创建、最后销毁,支持多线程并发访问;延迟句柄仅在特定线程中使用,必须依赖即时句柄。文章详细说明了句柄创建、销毁的顺序规则,线程安全要求,以及驱动实现中的资源绑定、依赖管理和锁策略等关键技术,确保资源的安全访问和正确回收。调试和性能分析方法也被提及,以验证实现正确性。

2025-07-24 00:15:00 526

原创 window显示驱动开发—支持延迟上下文

摘要:Direct3D 11引入了延迟上下文机制,用于构建命令列表。驱动程序通过D3D11DDI_THREADING_CAPS结构表明支持后,需实现相关DDI函数。延迟上下文与直接上下文的关键区别在于命令执行需通过显式提交命令列表。运行时为每个延迟上下文提供独立句柄和核心层回调,驱动程序需管理管道状态等效性和资源操作。特别地,RecycleCreateDeferredContext需重置上下文状态,而某些设备函数在延迟上下文中禁用。该机制优化了多线程场景下的命令录制效率。

2025-07-23 00:15:00 420

原创 window显示驱动开发—排除延迟上下文的 DDI 函数

摘要:Microsoft Direct3D运行时调用CreateDeferredContext函数创建延迟上下文时,驱动程序需提供有限的功能函数集。通过将D3D11DDI_DEVICEFUNCS或D3D11_1DDI_DEVICEFUNCS结构中的特定函数指针设为NULL,驱动程序可限制延迟上下文的功能范围,如资源映射/解映射、查询操作等。这确保了延迟上下文仅具备必要的子集功能,不同于即时上下文的功能支持。

2025-07-23 00:15:00 203

原创 window显示驱动开发—延迟销毁和刷新 D3D10

Direct3D资源销毁机制采用延迟销毁设计,驱动需维护线程安全的销毁队列。运行时无法在销毁时立即刷新命令缓冲区,因此实际销毁需等待命令缓冲区空闲。应用程序可根据需求选择三种销毁策略:默认延迟销毁、Flush强制销毁或围栏精确控制。驱动必须在Flush调用时处理销毁队列,并确保线程安全。该机制平衡了性能与安全性,同时提供了不同级别的销毁控制,开发者需根据场景选择合适的同步策略。调试工具可监控销毁队列状态和性能指标。

2025-07-22 00:15:00 710

原创 window显示驱动开发—主要异常

摘要:Direct3D11主资源(Primary Resources)作为交换链后台缓冲区等显示输出相关资源,具有特殊的创建与销毁机制。其核心特征是创建时通过DXGI_DDI_PRIMARY_DESC结构标识,并直接关联显示硬件。主资源操作必须在即时上下文线程执行,CreateResource(D3D11)和DestroyResource(D3D10)禁止并发调用。销毁过程要求立即释放显存(通过pfnDeallocateCb)并解除硬件绑定,不能延迟处理。驱动程序需确保GPU命令完成(pfnFlushCb)

2025-07-22 00:15:00 539

原创 window显示驱动开发—以追溯方式要求自由线程 CalcPrivate DDI

摘要: Direct3D 11要求所有以pfnCalcPrivate开头的DDI函数必须实现线程安全,即使驱动程序未声明支持多线程处理。核心要求包括无竞态条件、无阻塞操作及原子性保证。驱动实现可通过全局锁或无锁优化(纯函数计算)满足要求,推荐使用线程局部缓存或静态预计算提升性能。调试时需进行多线程压力测试,并关注调试层警告。此要求强制应用于D3D10/11驱动,需确保向后兼容性和混合模式支持,强调轻量级实现与严格验证。(149字)

2025-07-21 03:01:34 865

原创 window显示驱动开发—新的 DDI 错误代码

摘要: 本文介绍了D3DDDIERR_APPLICATIONERROR错误代码在Direct3D中的作用机制。该代码允许驱动程序区分应用程序参数错误(D3DDDIERR_APPLICATIONERROR)和内部驱动错误(E_INVALIDARG),通过调试层提供精准的错误定位。文章详细规范了驱动实现时的错误返回场景,对比了不同错误代码的调试输出差异,并提出了驱动开发和应用程序处理的最佳实践。该机制有效划分了应用层与驱动层的责任边界,提升了调试效率和系统健壮性,适用于Windows7及以上系统的D3D11DD

2025-07-21 03:01:25 503

原创 windows C#-本地函数

本地函数是一种嵌套在另一成员中的类型的方法。仅能从其包含成员中调用它们。但是,不能在 expression-bodied 成员中声明本地函数。在某些情况下,可以使用 lambda 表达式实现本地函数也支持的功能。本地函数可使代码意图明确。任何读取代码的人都可以看到,此方法不可调用,包含方法除外。对于团队项目,它们也使得其他开发人员无法直接从类或结构中的其他位置错误调用此方法。

2025-07-20 23:33:52 790

原创 window显示驱动开发—弃用允许修改Free-Threaded DDI 的功能

本文分析了Direct3D 11中显示设备和即时上下文的DDI层级设计。主要特点包括:1)设备级创建/销毁函数必须线程安全且不可热交换,以保持与D3D10的兼容性;2)上下文级渲染函数允许动态替换但需单线程访问。文章详细阐述了线程模型规则、驱动实现要点及调试验证方法,强调设备与上下文函数线程要求的差异性,以及违反规则可能导致的多线程问题。这种设计在兼容性前提下实现了性能优化,但增加了驱动实现的复杂度。

2025-07-20 00:15:00 1005

原创 window显示驱动开发—pfnRenderCb Vss pfnPerformAmortizedProcessingCb

摘要:Direct3D 11 DDI将内核回调机制从自动挂钩pfnRenderCb改为由驱动程序手动调用pfnPerformAmortizedProcessingCb,以提高多线程自由度。驱动程序需在提交命令缓冲区前主动调用该回调,频率应根据任务负载平衡:高频场景间隔调用,低频场景每次调用,避免重复或长时间不调用。对于多引擎和延迟上下文,需协调调用时机并保持线程安全。该变更要求D3D11驱动实现新的调用策略,同时保留对D3D10的兼容支持,优化重点是平衡处理开销与内存效率。

2025-07-20 00:15:00 900

原创 window显示驱动开发—三维管道级别

摘要:Direct3D 11 DDI驱动允许硬件仅支持Direct3D 10功能级别,通过GetCaps(D3D10_2)查询最大硬件支持级别。运行时根据硬件能力选择D3D11DDI_3DPIPELINELEVEL值,影响驱动调用的函数范围(如不调用高级着色器函数)。驱动需遵守功能级别限制(如顶点输入槽数量),并支持扩展格式感知。单线程标志(D3D11DDI_CREATEDEVICE_FLAG_SINGLETHREADED)允许驱动优化同步机制。即使不支持完整D3D11功能,驱动仍需处理BGR格式和类型化后

2025-07-19 00:15:00 458

原创 window显示驱动开发—在 Direct3D 10 基础上的更改

摘要:Direct3D 11运行时对驱动程序回调函数的线程模式进行了改进,支持自由线程操作,但仍存在HCONTEXT的单线程访问限制。驱动程序需根据D3D11DDICAPS_FREETHREADED标志决定线程模式,并遵循特定回调函数的线程调用规则。对于共享资源和销毁操作,驱动程序需进行特殊处理,确保在Flush和DestroyDevice调用时完成延迟销毁对象的清理。该机制确保了线程安全和应用程序兼容性。(150字)

2025-07-19 00:15:00 370

原创 window显示驱动开发—无序访问资源视图

无序访问资源视图(UAV)是Direct3D中支持计算着色器和像素着色器读写操作的关键资源类型。其核心特性包括支持缓冲区/纹理资源格式、原子操作,以及与SRV的对比差异。驱动实现涉及创建/销毁视图、清除操作、计数器管理等关键函数,需优化硬件加速路径并处理资源冲突。开发中需注意原子操作格式限制(仅R32_UINT/R32_SINT)、写入冲突检测,并充分利用调试工具进行验证。性能优化应关注硬件清除引擎的使用和原子操作开销分析。

2025-07-18 00:15:00 722

原创 window显示驱动开发—线程和命令列表

摘要:Direct3D 11 DDI要求驱动支持多线程操作模式,包括自由线程模式和命令列表支持。驱动程序需通过D3D11DDI_THREADING_CAPS结构声明支持级别,并处理多线程同步。完全硬件加速需同时支持FREETHREADED和COMMANDLISTS_BUILD_2。驱动需在GetCaps中声明线程能力,并实现内部同步机制。运行时根据驱动能力决定启用多线程或API模拟。应用可查询驱动支持情况,所有驱动最终应完全支持多线程操作。

2025-07-18 00:15:00 662

原创 window显示驱动开发—计算着色器

摘要:计算着色器(CS)作为独立于图形管线的通用计算单元,具备线程组并行处理、共享内存访问和原子操作等核心特性。通过分析驱动函数实现规范(如CreateComputeShader/Dispatch)、硬件资源配置(共享内存分配、UAV验证)和线程组调度机制,揭示了CS与图形着色器的关键差异。开发中需注意硬件限制(线程组规模、内存对齐)、原子操作支持(R32_UINT格式)及资源状态隔离,利用PIX/NSIGHT等工具进行性能优化和冲突检测。该技术为GPGPU应用提供了灵活高效的实现路径。(149字)

2025-07-17 00:15:00 888

原创 window显示驱动开发—支持线程

摘要: Direct3D 11驱动程序需通过GetCaps(D3D10_2)函数声明其支持的硬件功能。该函数通过D3D10_2DDIARG_GETCAPS结构接收查询类型(如D3D11DDICAPS_D3D11_OPTIONS),并返回对应能力数据,包括线程支持、命令列表、资源操作优化等。驱动程序必须严格匹配硬件实际能力,避免虚假声明。关键结构如D3D11_FEATURE_DATA_D3D11_OPTIONS细化功能支持(如逻辑混合、动态缓冲区映射),而线程、计算着色器等扩展能力需单独报告。运行时将验证驱动

2025-07-17 00:15:00 591

原创 window显示驱动开发—镶嵌器

本文摘要:文章详细解析了图形渲染中细化器(Tessellator)的工作原理及驱动实现。细化器作为固定功能单元,通过外壳着色器输出的细分因子和补丁类型生成细化几何。重点阐述了驱动函数CalcPrivateTessellationShaderSize的实现,该函数需精确计算外壳/域着色器所需内存,包括字节码存储、动态接口表和细分参数缓存等。同时强调了兼容性检查、内存对齐优化及调试验证的重要性,确保硬件正确支持各类细分特性(如四边形/三角形域)并避免内存问题。(149字)

2025-07-16 00:15:00 481

原创 window显示驱动开发—域着色器

摘要:域着色器(Domain Shader)是Direct3D管线中的关键着色器,负责将细分器生成的顶点坐标转换为具体三维空间属性。其实现要点包括:1)每顶点调用机制,输入包含坐标参数(SV_DomainLocation)和外壳着色器输出的共享控制点;2)驱动需实现CreateDomainShader等核心函数,处理字节码编译、控制点缓存分配及硬件资源绑定;3)控制点数据需优化存储于片上缓存以确保低延迟读取;4)状态管理需验证资源访问冲突,支持动态接口更新;5)调试需关注缓存命中率和坐标验证。该着色器对细分

2025-07-16 00:15:00 521

原创 window显示驱动开发—Direct3D 版本 11 的管道

本文摘要: Direct3D 11在Windows7及以上系统中引入了双管道架构:绘图管道支持几何处理(含新增的细分曲面着色器HS/DS),调度管道专用于计算着色器(CS)。两种管道资源访问需遵循严格隔离规则,禁止同一资源同时写入或读写冲突。驱动程序必须实现强制着色器核心(VS/PS/CS),可选支持细分曲面,并通过GetCaps报告硬件能力。关键特性包括:计算着色器的线程组调度优化、共享内存管理,以及通过验证工具检测跨管道冲突。系统通过动态能力检测和硬件加速确保图形与计算任务的高效并行执行。

2025-07-15 00:15:00 1121

原创 window显示驱动开发—外壳着色器

外壳着色器是Direct3D图形管线中的关键阶段,以补丁为单位处理控制点转换和细分参数生成。其核心机制包括将输入控制点转换为输出控制点,并输出细分因子给固定函数细分器。驱动程序通过专用函数(如CreateHullShader、DestroyShader等)管理着色器生命周期和资源绑定,需处理硬件寄存器配置、动态接口更新和资源冲突检查。优化重点包括细分因子可视化调试、控制点缓存效率分析,以及错误处理机制(如无效细分因子检测)。该技术实现了高效几何细分与硬件协同工作,同时确保资源状态隔离和动态功能支持。

2025-07-15 00:15:00 1758

原创 window显示驱动开发—信息交换

本文摘要: 文章详细解析了Direct3D 11运行时与用户模式显示驱动程序的交互机制,重点围绕OpenAdapter10_2和CreateDevice两个关键函数的双向数据交换流程。通过D3D10DDIARG_OPENADAPTER等结构化参数实现版本协商(包括DDI接口版本和运行时补丁级别)、硬件能力查询(通过pfnQueryAdapterInfoCb回调)以及核心功能初始化。文中特别强调了分层回调架构设计,通过pKTCallbacks和p11UMCallbacks分别管理内核模式服务访问与核心状态操作

2025-07-14 02:05:17 694

原创 window显示驱动开发—版本控制

摘要: Direct3D 11改进了DDI版本控制机制,采用显式声明方式取代隐式探测。运行时通过GetSupportedVersions函数主动查询驱动支持的DDI版本,每个版本绑定特定操作系统特性(如Windows 7支持线程优化)。DDI版本与硬件功能级别解耦,驱动程序可选择性实现高级特性(如细分曲面)。新版规范要求驱动程序明确返回支持的版本列表,并区分Windows Vista和7的不同功能集,同时需确保版本协商和硬件能力声明的正确性。

2025-07-14 02:05:08 1139

原创 window显示驱动开发—启用 Direct3D 版本 11 DDI 的支持

摘要: 启用Direct3D 11 DDI(显示驱动程序接口)支持需在INF文件中声明对应的用户模式DLL名称,无论其是否与D3D9/10 DDI共享同一DLL。配置时,必须将D3D11 DDI的DLL名称作为第三个条目列出(如umd.dll,umd.dll,umd.dll),即使重复相同名称。驱动程序需根据系统版本动态返回对应DDI接口,建议共享D3D10/11底层实现以优化资源管理。安装后需验证DLL加载正确性,并通过工具测试API兼容性。此设计确保多版本DDI兼容性,同时降低维护复杂度。

2025-07-13 00:15:00 770

原创 window显示驱动开发—初始化与 Direct3D 版本 11 DDI 之间的通信

摘要: Direct3D 11运行时通过加载用户模式驱动DLL(如umd11.dll)并调用其关键导出函数OpenAdapter10_2初始化通信,优先于旧版OpenAdapter10以提高效率。该函数需返回D3D10_2DDI_ADAPTERFUNCS结构体以提供适配器功能表,并明确声明支持的DDI版本(如D3D11.0/10.2)。驱动必须实现OpenAdapter10_2,同时可选实现OpenAdapter10以兼容D3D10/10.1。运行时支持版本协商与回退机制,开发者需验证函数导出、版本传递及错

2025-07-13 00:15:00 967

原创 window显示驱动开发—Direct3D 版本 9 驱动程序的 DDI 更改

本文介绍了Windows7系统中XR_BIAS格式在Direct3D9显示驱动中的实现规范。XR_BIAS是专为支持D3D9DDI的驱动程序提供的扩展格式,驱动程序需通过GetCaps函数声明支持此格式,并在FORMATOP结构中标明支持的渲染目标、显示输出和3D加速等操作。该格式仅适用于全屏翻转链资源创建,窗口化呈现由DWM处理。实现时驱动程序需将XR_BIAS资源的内存布局等同于标准A2B10G10R10格式,仅在扫描输出时应用XR_BIAS特有逻辑,其他操作则视同常规格式处理。文章详细说明了驱动程序声

2025-07-12 00:15:00 603

原创 window显示驱动开发—支持 Direct3D 版本 11

摘要 Direct3D 11驱动程序规范要求:1)驱动程序必须声明支持D3D11_0_DDI_INTERFACE_VERSION及以上版本,并在GetCaps中明确支持XR_BIAS格式;2)创建资源时需配置特定参数,包括禁用MSAA;3)视图行为上,RTV需禁用混合,SRV需自动转换为UNORM格式;4)显示输出仅支持全屏模式,窗口化由DWM处理;5)Blt/Present操作有严格限制,禁止格式转换和滤波操作;6)着色器读取时需实时数据转换;7)针对性能优化提出扫描输出和转换缓存方案。规范还包含详细的调

2025-07-12 00:15:00 750

原创 window显示驱动开发—XR_BIAS 和 PresentDXGI

摘要:驱动程序处理XR_BIAS资源时,窗口模式由运行时拦截,全屏模式下必须通过Flip或BitBlt操作严格按1:1像素呈现,禁止任何格式转换或缩放。硬件需配置为原生分辨率输出,驱动程序仅需实现基础复制逻辑,运行时负责拦截非法请求。验证重点包括窗口模式拦截有效性、全屏像素精确复制及硬件寄存器正确配置。多显示器环境中仍须保证主显示器无损输出。

2025-07-11 00:15:00 425

原创 window显示驱动开发—XR_BIAS 和 BltDXGI

Direct3D运行时对XR_BIAS格式资源的操作规范如下:允许1:1同格式复制(DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM)、点采样拉伸及刚性旋转(90°/180°/270°)。禁止格式转换、抗锯齿解析及插值滤波操作。驱动程序需通过BltDXGI函数验证格式一致性,拒绝非法操作并返回相应错误码。硬件需配置点采样模式,支持DMA加速复制和固定角度旋转引擎。兼容性验证要求严格匹配像素数据,调试时应检查采样方式和硬件加速效果。例外情况包括部分硬件旋转支持限制及目标区域裁剪处理

2025-07-11 00:15:00 403

原创 window显示驱动开发—扩展格式感知要求

扩展格式感知的显示驱动程序必须精确支持DXGI扩展格式表中定义的功能,包括BGRA/BGRX扫描输出、sRGB转换和后台缓冲区类型转换,并在CheckFormatSupport中返回严格匹配的支持位,禁止冗余或缺失,同时确保硬件兼容性。

2025-07-10 00:15:00 765

A*算法解决八数码问题

这是人工智能中非常常见的算法:在一个3x3的网格里,有8个编号的方块和一个空格,目标是通过滑动方块把它们排列成目标状态,通常是数字1到8按顺序排列,空格在右下角。问题是给定任意一个初始状态,是否一定能够通过滑动到达目标状态呢?

2025-03-26

windows USB 驱动,用于PL2303芯片上报GPS信息使用

平台支持: win 10 x64 驱动功能: 打开并上报GPS信息,自己开源的。 项目开源地址:https://github.com/wangma/USBPL2303Win.git

2024-12-22

pl2303-linux.zip

代码截取于/drivers/usb/serial/pl2303.c,它作为linux平台下常用的驱动存在。 用于和驱动开发系列中的文章参考,了解PL2303的运行方式。

2024-12-19

基于win 10的 NDIS 6.0 Filter 驱动,新增加了收发数据包以及查询网卡Mac地址的代码

操作系统: win 10 x64 VS版本: VisualStudio.17.Release/17.11.4+35312.102 Windows Driver Kit 10.0.26100.1 内容概要: 新增以下功能的NDIS Filter driver,作为案例分析使用的; 1. 发送OID请求; 2. 发送自定义数据包,以ICMP数据包为例; 3. 接收数据包; 可以从代码中学习: 1. 内核OID的请求发送和接收; 2. 内核资源的分配和回收; 3. 数据包的发送和接受;

2024-10-27

基于NDIS 6.x的Filter生成代码

操作系统: win 10 x64 VS版本: VisualStudio.17.Release/17.11.4+35312.102 Windows Driver Kit 10.0.26100.1 内容概要: 默认情况下生成的NDIS Filter Sample,作为讲解用的; 可以从里面看到WDF和NDIS的基本运行方式。

2024-10-12

LUA脚本工具在windows平台下编译的版本

系统环境: windows 10 编译环境: VS2019 安装使用: 在windows + VS2019环境下面编译即可; 文档情况: /doc目录下可以找到合适的文档 新手只需要有一定的C语言基础,就看懂并实现简单的脚本编写和运行,和Python不一样,lua一直以简单高效、扩展性强著称。 教程网址: https://www.lua.org/docs.html

2024-10-02

基于windows 的日志串口驱动案例

开发支持: Microsoft Visual Studio Community 2019 版本 16.11.3 + WDK 19041 系统支持: Windows 10 版本 1507 测试情况: 关闭驱动签名强制,使用sscom测试OK; 介绍: 这是基于win 10 x64平台开发的,它创建了一个定时器(1s),并在定时器中上报日志信息,新手可以从中学到如何构建缓冲区、创建定时器、使用互斥锁等基本技能。 阅读建议: 1. 学习和使用前,请详细阅读专栏文章: WDF驱动程序开发专栏 2. 更详细的开发和代码讲解可以参考主页的文章: windows 驱动实例分析系列-定时日志的COM驱动

2024-10-01

基于UMDF 2.15版本的VirtualSerial(虚拟串口)驱动程序代码

开发支持: vistualMicrosoft Visual Studio Community 2019 版本 16.11.3 + WDK 19041 系统支持: Windows 10 版本 1507 ,Windows Server 2016 和更高版本 运行支持: Windows 10 版本 1507 测试情况: 关闭驱动签名强制,使用sscom测试OK; 这个是基于win 10 x64平台开发的,主要演示UMDF 2.x驱动程序的创建,以及演示serial类别的驱动如何与系统进行交互,新手可以从中学到UMDF驱动的开发技术,以及PORT类驱动的基础知识。 阅读建议: 1. 学习和使用前,请详细阅读专栏文章: WDF驱动程序开发专栏 2. 更详细的开发和代码讲解可以参考主页的文章: windows 驱动实例分析系列-COM驱动案例讲解.

2024-09-22

UnderConstructionSolution.zip

介绍: 这是windows C++ team 在开发和讲解推介C++ 、CX系列中用于演示的C++类别,它是一个 Visual Studio 解决方案,其中包含Widget 的完整代码,它主要是讲解和演示C++中的构造过程; 知识点: 可以从里面学习windows C++ team 的代码风格和编程技巧;C++/CX中的构造过程; 阅读建议: 先下载和安装 VS 2015以上版本+windows 10;

2024-08-18

ASimpleClassSolution: windows C++ team code

介绍: 这是windows C++ team 在开发和讲解推介C++ 、CX系列中用于演示的C++类别,它是一个 Visual Studio 解决方案,其中包含 C++/CX 和 WRL 组件的完整代码,以及一个使用两者的简单测试应用程序。 知识点: 可以从里面学习windows C++ team 的代码风格和编程技巧; 阅读建议: 先下载和安装 VS 2015以上版本+windows 10;

2024-08-18

微软提供的关于鼠标驱动的案例

此示例是原始WDM滤波器驱动程序示例的WDF版本。此示例的WDM版本已被弃用。 此驱动程序可以抓取系统上特定鼠标的输入。在其当前状态下,它只挂接到鼠标数据包报告链和鼠标ISR,不处理它看到的数据。ISR的挂钩仅在i8042prt堆栈中可用。

2024-01-01

基于ADNS-2620的光学鼠标方案

ADNS-2620是一个小型因子光学鼠标传感器。它用于实施非机械跟踪鼠标。与前代不同, ADNS-2620允许更紧凑、更实惠的光学鼠标设计。 附件包含: ADNS2620 Arduino测试代码 + adns2620 评估板原理图和PCB源文件 + HID代码 + 相关参考文档以及设计资料。

2023-12-28

鼠标HID实现方案方案

基于auduino的鼠标方案源代码

2023-12-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除