驱动开发及调试环境搭建

Win10x64-WDM设备驱动开发入门 - 第六章 VMware-Win10x64+WDK10+VS2015/2019环境搭建与双机调试 VMware--Win10x64+WDK10+VS2015/2019环境搭建与双机调试1、驱动程序的开发语言选择调用约定运行时函数的调用2、配置驱动开发环境1--vs2015+SDK+WDK10查看 win10 的版本如何下载 sdk如何下载 wdk安装 Visual studio 2015安装 sdk安装 wdkWin10 驱动程序示例Vmware--Win10x64创建串口启用系统保护3、配置驱动开发环境2--vs2015+SDK+WDK10虚拟机中安装 WDK Test Target Setup xx 阅读详情

驱动开发及调试环境搭建

主计算机就是用来开发的计算机
目标计算机是生成的驱动要按照到的计算机, 用来调试。目标计算机可以是远端的电脑,也可以是虚拟机。
主机算计和目标计算机都必须是win10专业版


注: 双机调试,一端断开后,必须将另一端也断开,然后重新连接,否则双机调试不能使用。 如:目标计算机重启了, 就必须将主机算计上中程序进程结束,等目标计算机重启完成后, 重新"附加到进程调试"。


一个NT驱动demo及调试和安装驱动工具:https://mp.csdn.net/mp_download/creation/uploadResources/20084660

驱动分类

NT式驱动
WDM驱动
WDF驱动

一: 主计算机配置(用于开发)

参考: https://blog.youkuaiyun.com/newnewman80/article/details/90754999

报错及解决:参考书签 C语言/C++/驱动开发/报错及解决

二:目标计算机关闭’驱动强制签名验证’

在虚拟机win10中点击右下角通知,点击所有设置,点击更新和安全,然后点恢复,在右边的高级启动那里点击立即重新启动。
然后点击疑难解答、高级选项、启动设置,最后点击重启,
重启之后出现上图所示启动设置中的选项,我们这里点击数字键7或者按F7键,就会禁用驱动程序强制签名。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三:NT式的驱动就是以服务的方式,用工具SRVINSTW来安装

安装完成后需要重启目标计算机win10禁用驱动程序强制签名才能进行远程调试。
鼠标右键SRVINSTW.exe以管理员身份运行(一定要以管理员身份运行该工具)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

程序路径一定要自己手工将要测试的驱动路径复制进行,因为浏览的话你只能找到.exe结尾的文件。

在这里插入图片描述

记得在粘贴的路径后面添加反斜杠\,再把要测试的驱动文件名复制进来。

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

完整路径为   C:\User\WDKRemoteUser\Desktop\RexDriverDemo01\RexDriverDemo01.sys

在这里插入图片描述
在这里插入图片描述

这里直接下一步

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后,需要重启目标计算机win10禁用驱动程序强制签名才能进行远程调试。

六:远端计算机调试

01.目标计算机配置(用于调试)

驱动调试(网络调试):
主计算机(192.168.0.102)目标计算机(192.168.0.106 )
确保两台计算机互相ping通(最简单的办法就是将防火墙关闭)

目标计算机(WIN8及以上系统):
以管理员权限运行CMD

1. 允许进行内核调试

bcdedit /set {default} DEBUG ON
bcdedit /set TESTSIGNING ON
bcdedit /debug on
( 设置后需要重启生效, 不能直接关机)

2. hostip 为主计算机ip,port为网络通讯端口,key为网络通讯所需密钥(主计算机VS2019配置驱动调试时需要填入)

bcdedit /dbgsettings net hostip:192.168.0.102 port:50000 key:1.2.3.4

3. 查看settings

bcdedit /dbgsettings

4. 将主计算机中C:\Program Files (x86)\Windows Kits\10\Remote\x64下的 WDK Test Target安装程序拷贝到目标计算机安装

在这里插入图片描述

5. 注: 第4步没有执行会报错:由于目标计算机积极拒绝,无法连接

6. 出现如下界面表示配置已经成功, 图中箭头指向错误并不影响正常调试

在这里插入图片描述

02. 主机算计调试配置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1. 设置完成后目标计算机自动登录到WDKRemoteUser用户

在这里插入图片描述

2. 然后配置Debugview

先导入dbgview.reg注册表
将以下写入Dbgview.reg文件中,双击Dbgview.reg导入注册表
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter]
"DEFAULT"=dword:0000000f

在这里插入图片描述

然后以管理员身份运行Dbgview.exe, 勾选以下选项
Capture -> Capture Kernel 
Options -> Show milliseconds 可以精确到毫秒,默认精确到秒。
Options -> Clock time (快捷键 CTRL + T),可以切换时间显示方式。

在这里插入图片描述

在这里插入图片描述

最后重启,使debugView配置生效
注: 每次关闭debugView前需要去勾选"Capture -> Capture Kernel ", 除非重启电脑, 否则再次启动debugView不能再勾选"Capture -> Capture Kernel "
debugView的Capture说明

在这里插入图片描述

03.主机算计调试方法

1. vs2019连上虚拟机中win10系统后,在vs2019中驱动程序代码里打断点:

在这里插入图片描述

2. 在代码中先设置断点后再点击 '附加到进程’调试

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. 如果出现以下图"waiting to reconnect…"提示,如果没有自动重启目标计算机,需要手动重启目标计算机, 重启时要执行’目标计算机关闭"驱动签名验证"的操作 ’

在这里插入图片描述

04.调试过程及目标计算机的反应

1. 目标计算机重启时要执行’目标计算机关闭"驱动签名验证"的操作 ',重启完成后,目标计算机自动用WDKRemoteUser这个账号登录

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2. 重启完成后,点击下图所示工具栏上的全部中断按钮,将虚拟机中断一下

这个时候可能就比较慢,vs2019会中断住虚拟机,所以比较慢,因为vs2019通过windbg中断虚拟机中win10内核,所以非常慢,中断之后虚拟机就挂住了、鼠标等都不动了,所以这个时候就证明了vs2019已经断住了。

在这里插入图片描述

3. 出现以下提示表示中断完成, 如果提示"是否切换"或"继续等待", 要选择"继续等待"

**加粗样式**

4. 按照提示在输入框中输入g,然后回车

在这里插入图片描述

5. 这时界面会切换到目标计算机,目标计算机可以动了,然后以管理员身份打开DebugView.exe

6. 打开Debugview.exe后,右键以管理员身份运行控制台窗口cmd

在控制台中执行 net start rexwdk001,  rexwdk001是用SRVINSTW.exe安装的驱动, NT驱动是以服务方式存在的, 所以可以使用启动服务的方式启动驱动

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这时候断点就进来了,现在按F10键单步调试或工具栏的"继续"按钮使用断点调试, 再debug和"Debugger Immediate Window"框中都可查看到输出信息

在这里插入图片描述

七:使用虚拟机调试

目标计算机是虚拟机

01.虚拟机安装win10

1.安装VMware 15.5
2.在VMware中安装win10专业版镜像
	Win10系统序列号密钥:
	VK7JG-NPHTM-C97JM-9MPGT-3V66T
	NPPR9-FWDCX-D2C8J-H872K-2YT43
	W269N-WFGWX-YVC9B-4J6C9-T83GX
	NYW94-47Q7H-7X9TT-W7TXD-JTYPM
	NJ4MX-VQQ7Q-FP3DB-VDGHX-7XM87
	MH37W-N47XK-V7XM9-C7227-GCQG9
	VK7JG-NPHTM-C97JM-9MPGT-3V66T
	每行单独是一个密钥
3. 设置用户密码: 123456

02. 目标计算机配置(用于调试)

在虚拟机设置中把打印机移除后再添加串行端口

因为打印机默认会用串口1,所以要先把虚拟机中的打印机干掉,然后添加一个串行端口
# 管道名字
\\.\pipe\com1

在这里插入图片描述

该端是服务器,另一端是应用程序,这是什么意思呢?
这个虚拟机中的win10相当于是被调试的,另一端是应用程序,比如说这里的是vs2019配置,如下图。

在这里插入图片描述

安装WDK Test Target到目标计算机

将主计算机中C:\Program Files (x86)\Windows Kits\10\Remote\x64下的 WDK Test Target安装程序拷贝到目标计算机安装
这一步没有执行会报错:由于目标计算机积极拒绝,无法连接

在这里插入图片描述

其他配置

以下配置,在远端计算机中需要, 串口调试中可能并不需要。
驱动调试(网络调试):
主计算机(192.168.0.102)目标计算机(192.168.0.106 )
确保两台计算机互相ping通(最简单的办法就是将防火墙关闭)

目标计算机(WIN8及以上系统):
以管理员权限运行CMD
1. 允许进行内核调试
	bcdedit /set {default} DEBUG ON
	bcdedit /set TESTSIGNING ON
	bcdedit /debug on
	( 设置后需要重启生效, 不能直接关机)
2. hostip 为主计算机ip,debugport为串口号,key为网络通讯所需密钥(主计算机VS2019配置驱动调试时需要填入)
	bcdedit /dbgsettings serial debugport:1 baudrate:115200 
3. 查看settings
    bcdedit /dbgsettings

03. 主机算计调试配置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

设置完成后目标计算机自动登录到WDKRemoteUser用户

在这里插入图片描述

其他配置

其他配置和'远端计算机调试一样'

八: 使用debugView.exe辅助目标计算机调试(在目标计算机上单机调试)

在使用WDKRemoteUser用户登录的目标计算机中安装并配置debugView.exe(配置方法与"六:远端计算机调试"步骤中debugView.exe相同)
然后安装生成的驱动,执行启动和关闭等操作, 查看debugView.exe中输出信息。


这种方法的优点是灵活, 相比于双机调试速度快

参考:
https://blog.youkuaiyun.com/liny000/article/details/81260385 (可用)
https://cloud.tencent.com/developer/article/1471024
https://blog.youkuaiyun.com/zhaopeng01zp/article/details/110095391 (不能用,只作为参考)
https://blog.youkuaiyun.com/xiaoyanilw/article/details/104121162 (debugview配置)

Win10下VS2015(WDK10)驱动开发环境配置 1、     概述 微软在”WDK7600“以后就不再提供独立的内核驱动开发包了,而是必须首先安装微软集成开发环境VisualStudio,然后再从微软官网下载集成的WDK开发包、或者离线安装包,但是安装后Visual Studio就集驱动程序开发,编译,安装,部署和调试于一身,使得Windows驱动程序开发会变得更容易。对于Windows 10和Visual Studio2015驱动开发W 阅读详情

相关推荐

Windows11+VS2022搭建(Driver)驱动开发环境(一)

Win11+VS2022搭建(Driver)驱动开发环境,2.搭建VS2022 3.安装SDK和WDK 4.修改VS2022安装组件 5.编译驱动文件为此,确保WIN系统SDK或WDK的版本与系统版本一致至关重要。首先,通过cmd输入winver查看系统版本,并安装对应的SDK和WDK。接着,安装VS2022并选择桌面C++套件,待SDK和WDK安装完成后,修改VS2022的安装组件,勾选驱动工具包和MSVC编译器。

a731868395的博客 3758

【WIN】双机调试——Net模式

概述:windows 双机调试可以在主页搜索 bcdedit 命令。

此地无银 1278

实验5 嵌入式 Linux 调试环境搭建及GPIO驱动开发

1、掌握VMware中设置共享文件夹的方法,为后续实验做准备;2、通过实验熟悉 Linux NFS 文件系统的配置过程,为后续 Linux 底层开发实验做准备;3、熟悉嵌入式 Linux 交叉开发环境的搭建与使用;4、在开发板上运行程序。PC机、华清远见开发环境、FS4412 开发板。NFS方式是开发板通过NFS挂载放在主机(PC)上的根文件系统。此时在主机在文件系统中进行的操作同步反映在开发板上;反之,在开发板上进行的操作同步反映在主机中的根文件系统上。

m0_74767768的博客 806

Windows内核编程(五)-驱动的调试

驱动的调试 为了安全起见,驱动调试应该在虚拟机中进行,本书中所有提及的驱动调试,都是指通过Vmware(或其他虚拟机)运行一个虚拟机操作系统,在该操作系统中运行被调试的驱动,开发者在物理机器上使用内核调试工具(如 Windbg),通过网络、USB、串口、1394等方式连接到虚拟机操作系统,进行驱动调试。为了表述清晰,下面把物理机器称为调试机器,把运行被调试驱动的虚拟机称为被调试机器。 基于VS + WDK环境调试 调试环境 调式机器:Windows 10 WDK10 调式机器IP:192.168.0.110

qq_40277608的博客 4832

Windows驱动开发:3 WRK调试环境搭建

说到WRK其实是很好的调试环境,对于驱动开发也有许多帮助,他不仅仅可以理解内核也可以在驱动代码出错后更好的定位出错信息 毕竟内核是自己build的pdb也都可以被windbg加载。 本节就讲讲WRK的调试环境搭建,需要的工具如下: WRK源码 : http://download.youkuaiyun.com/detail/u013605639/97620

Hello World的博客 1403

Visual Studio驱动开发:从环境搭建到内核调试实战指南

驱动开发是操作系统内核编程的核心领域,它允许开发者创建直接与硬件或系统底层交互的软件组件。其基本原理是通过实现特定的驱动模型(如WDM、KMDF)来响应和处理来自系统的I/O请求包(IRP),从而实现对设备的控制、数据过滤或系统功能扩展。这项技术的价值在于能够突破用户态应用程序的限制,实现高性能、低延迟的系统级功能,例如安全监控、硬件加速和虚拟化支持。在应用场景上,驱动广泛用于设备管理、文件系统过滤、网络安全和反病毒软件等领域。本文聚焦于利用Visual Studio这一现代化集成开发环境进行Windows

weixin_28840591的博客 311

驱动开发环境以及双机调试环境搭建

工作将近三个月了,做了几个项目,想在这里总结一下,方便以后自己或者大家借鉴。最近一个项目里需要做一个文件过滤驱动,我打算把整个过程中遇到的坑和解决方法,总结一下。这篇博客主要帮助大家实现驱动程序的开发环境搭建以及双机调试的环境搭建。因为我需要面对的操作系统比较广,所以需要两个开发环境才可以基本覆盖(如果你不需要面对很多操作系统,可以把主机作为开发机以及调试机,虚拟机作为测试机) 这里使用vs201

C++入门到放弃 4412

Windows驱动开发 环境搭建VS+DDKwizard+WDK(安装+编译+调试+禁止签名)

  1.安装VS 2.安装DDKwizard 3.准备ddkbuild.bat+ddkbuild.cmd,把这两个文件放在DDK的安装目录 4.配置环境变量 添加用户变量 变量名:path 变量:C:\WinDDK 添加系统变量 根据自己的系统填写,这里以Win7为例 NT 4.0:NT4BASE  windows2000:W2KBASE   windowsXP:WXPBAS...

Jockr 2520

(三)(Driver)驱动开发之双机调试环境搭建及内核驱动的运行

驱动调试是驱动开发环节中最基本的一环,本文主要介绍了驱动双机调试环境搭建及内核驱动的运行

Elaine的博客 2471

驱动开发之双机调试环境搭建(VS2017)

前言 学习驱动开发,好的开始就成功了一半。驱动开发首先要搞定的就是调试环境,希望能帮助到各位! 不管是VS2017还是2015或者更高的版本,配置方法基本一致,比以前的老古董方便多了 环境 开发环境:64位 Windows 10+ visual studio 2017 + WDK(选择合适的版本,点此进入下载链接) 调试环境:VMware +32位 Windows 7 环境配置 一、配置虚拟机 1、编辑虚拟机——移除打印机(会占用COM1串口)——添加串行端口,并按如下进行配置 .

Think88666的博客 3131

WIN10 驱动开发环境从0搭建 (内含调试程序下载 驱动开发必看)

本文记录如何配置一个可使用的驱动开发环境。

成功的方式只有一个,按自己的方式,度过人生。欢迎共赴知识与乐趣的探索之旅! 1756

JLink驱动开发入门必看:从零搭建调试环境

深入解析JLink驱动开发的关键步骤,手把手教你从零开始搭建高效调试环境,掌握JLink工具的核心应用技巧,提升嵌入式开发效率。

weixin_33557333的博客 640

驱动开发系列79 - 搭建 Zink 调试环境

本文详细介绍了Mesa图形驱动调试环境的搭建方法。首先对比了两种获取Mesa源码的方式:发行版打包的稳定源码和上游最新开发源码,推荐新手使用前者。然后分别讲解了两种编译方法:通过apt构建发行版源码和手动配置编译上游源码,重点介绍了关键编译选项和依赖安装。最后说明了调试环境的配置方法,包括驱动路径设置和断点调试技巧。文章为开发者提供了从源码获取到编译调试的完整指南,特别适合需要进行Mesa驱动开发的读者参考。

GPU全栈博主 341

windows内核研究(驱动开发 第一个驱动程序和调试环境搭建)

驱动程序开发入门指南 本文介绍了Windows驱动程序开发的基础流程和调试方法。主要内容包括:驱动程序开发的基本步骤(编写代码、生成.sys文件、部署、启动、停止、卸载),以及一个简单的驱动示例代码展示。重点讲解了双机调试环境的搭建方法,使用VirtualKD工具在被调试系统上安装调试支持,并配置windbg调试器进行内核调试。文章还解释了PDB文件(程序数据库)在调试过程中的重要作用,以及如何设置符号路径来获取系统PDB文件。这些内容为初学者提供了驱动程序开发和调试的基础知识框架。

weixin_43754657的博客 724

ADC学习(3)——采样电路

第三章 采样电路

夏风喃喃的博客 3万+

FPGA 上的 YOLOv8 实时目标检测:从模型优化到硬件加速全解析

本文全面解析了将YOLOv8目标检测模型部署到FPGA进行硬件加速的完整流程。通过模型裁剪、混合精度量化等优化手段,结合HLS设计专用计算引擎与数据流,实现了高能效比的实时推理。文章深入探讨了软硬协同部署、性能调试与优化技巧,为追求极致实时性与低功耗的边缘AI应用提供了从算法到硬件的实战指南。

weixin_29031161的博客 604

C++驱动开发环境搭建与调试实战

本文详细介绍了C++驱动开发环境的搭建与调试实战,涵盖Windows平台WDK与Visual Studio的集成配置,以及Linux内核模块开发环境准备。通过Hello World驱动实例演示双平台开发流程,并分享WinDbg调试技巧与常见问题排查方法,帮助开发者高效构建稳定的驱动开发环境。

year5的博客 224

BOM 数据模型设计

字段名数据类型必填说明物料编码 (Part Number)字符串是唯一标识,主键。建议包含分类前缀(如STD-GEN-CUS-物料名称 (Part Name)字符串是版本 (Revision)字符串是如AB1.0,与编码组合构成唯一实例。状态 (Status)枚举是设计中(Draft)已发布(Released)已归档(Archived)已作废(Obsoleted)类型 (Type)枚举是专用件(Custom)借用件(Borrowed)通用件(Generic)标准件(Standard)

Davina_yu的博客 1756

Win7+vmware+xpsp3+vs2010驱动开发环境搭建及调试方法

Win7+vmware+xpsp3+vs2010驱动开发环境搭建及调试方法     本文,系09年笔记记录整理,当时只有大概的步骤,最近又搭建环境,顺道比较详细的整理一下,以供自己备查。较之前的笔记,只是DDK和VMWARE的版本增高了,基本步骤还是大差不差。   注意: 如果是初次搭建环境,请大概浏览完全篇后,再参照本文搭建环境。   一、工具描述 主机:Win7 (原来是:X

大杂烩 3246

Android Google 支付接入

1. 从 2023 年 8 月 2 日起,所有新应用都必须使用结算库版本 5 或更高版本。自 2023 年 11 月 1 日起,现有应用的所有新版本都必须使用结算库版本 5 或更高版本。 2. 如果您的应用以 Android 14 或更高版本为目标平台,您必须更新到 PBL 5.2.1 或 PBL 6.0.1 或更高版本。

帅次的博客 9404

今日头条面试——iOS开发面试题

layoutIfNeeded和setNeedsLayout的区别。* Pod update和pod install的区别。* 10、autoreleasepool的使用场景。* 如何hook一个对象的方法,而不影响其它对象。* 数组cop后里面的元素会复制一份新的吗。* 介绍项目,主要介绍自己强项一点的地方。* assing可以使用在对象中吗。* isEquel和hash的关系。* 4、谈谈runtime的理解。* 8、谈谈runloop的理解。* copy和strong的区别。

FPGA/MATLAB学习教程/源码/项目合作开发 593

MTK Android驱动开发指南:从环境搭建到调试优化

Android驱动开发是移动设备硬件与操作系统通信的核心技术,其架构设计直接影响设备性能和稳定性。MTK平台驱动采用分层设计,包含预加载器、LK、内核空间和用户空间驱动等模块,需要特定的工具链(如SP Flash Tool、MauiMETA)支持。在开发过程中,开发者需要掌握日志分析(如AEE异常记录、DB日志)和性能调优(如GPU驱动调优、内存优化)等关键技术。MTK驱动在显示子系统、相机框架等方面具有独特实现,同时其安全机制(Secure Boot、DRM框架)为设备提供可靠保障。通过理解MTK特有的电

weixin_29172201的博客 280

TIA博途WINCC的触摸屏VB脚本入门指南(嵌入式)

通过编写事件处理程序,您可以响应触摸屏元素的各种事件,并实现自定义的功能。本文将为您提供TIA博途WINCC触摸屏VB脚本的入门指南,帮助您了解基本的脚本编写和嵌入式开发。假设我们有一个名为"Button1"的按钮元素,当用户点击该按钮时,触发相应的事件处理程序,并在触摸屏上显示一条消息。然后回到触摸屏界面编辑器,在按钮元素的属性窗口中找到"按下"事件,并选择刚才创建的脚本文件作为事件处理程序。现在,当用户点击按钮时,触摸屏将执行相应的事件处理程序,并显示一条消息框,内容为"按钮被点击了!

CodeSageX的博客 4416

终极指南:如何在Hyper-V虚拟机中搭建Windows驱动开发调试环境

想要学习Windows驱动开发,却苦于没有合适的测试环境?🤔 今天我将为你揭秘如何在Hyper-V虚拟机中搭建完美的Windows驱动开发调试环境。作为微软官方提供的Windows驱动示例仓库,Windows-driver-samples是学习驱动编程的最佳起点! ## 🔧 为什么选择Hyper-V虚拟机环境? 在Hyper-V虚拟机中进行Windows驱动开发具有多重优势: - **安

gitblog_00432的博客 863

【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法

相比C文本类编程语言,Simulink图形化编程语言的优势是逻辑思路和数据流清晰了很多,劣势是程序执行的时序不明确,而且各个模块的配置使编程的灵活度下降了不少,在使用习惯上面总感觉有各种限制。本文就是拆解Simulink中最基础的几个编程模块,发扬它的优势,避开劣势。

Mr.Cssust的博客 3849

Openclaw接入大模型API,操作本地windows文件

本文介绍了在WSL2环境下配置OpenClaw使用阿里百炼API的方法。主要内容包括:1)确认WSL2安装完成;2)配置阿里百炼API(需注意Qwen3-Max-Thinking为收费模型);3)提供正确的JSON配置格式示例,强调apiKey必须填写真实值;4)说明配置错误需修改Linux配置文件;5)建议通过询问模型信息验证连接成功。后续将介绍如何切换免费API及本地文件访问功能。

qq_27246521的博客 989
上一篇: 【oracle】使用centos7的docker镜像安装oracle, 版本11gR2
下一篇: centos8安装报错及解决
YPFeime
博客等级 码龄9年 19粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值