NDIS小端口驱动(四)

NDIS中断相关

1. 注册和取消注册中断: 微型端口驱动程序调用 NdisMRegisterInterruptEx 来注册中断。 驱动程序分配并初始化 NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS 结构,以指定中断特征和函数入口点,驱动程序将结构传递给 NdisMRegisterInterruptEx,驱动程序调用 NdisMDeRegisterInterruptEx 函数以释放以前使用 NdisMRegisterInterruptEx 分配的资源。

2. 处理 NDIS 微型端口驱动程序的中断:当 NIC 或与 NIC 共享中断的另一台设备生成中断时,NDIS 调用 MiniportInterrupt 函数。如果基础 NIC 未生成中断,MiniportInterrupt 应立即返回 FALSE。 否则,它在处理中断后返回 TRUE 。

微型端口驱动程序应在其 MiniportInterrupt 函数中尽可能少地执行工作。 它应将 I/O 操作延迟到 MiniportInterruptDPC 函数。 NDIS 调用 MiniportInterruptDPC 来完成中断的延迟处理。若要在 MiniportInterrupt 返回后将其他 DPC 排队,微型端口驱动程序将设置 MiniportInterrupt 函数的 TargetProcessors 参数的位。

若要从 MiniportInterrupt 或 MiniportInterruptDPC 请求其他 DPC,微型端口驱动程序调用 NdisMQueueDpc 函数。微型端口驱动程序可以调用 NdisMQueueDpc ,以请求其他处理器的其他 DPC 调用。

3. 与中断同步:如果微型端口驱动程序的 MiniportInterrupt 函数将资源(如 NIC 寄存器或状态变量)与以较低 IRQL 运行的另一个 MiniportXxx 函数共享,则 MiniportXxx 函数必须调用 NdisMSynchronizeWithInterruptEx。 此调用可确保微型端口驱动程序的 MiniportSynchronizeInterrupt 函数以同步且多处理器安全的方式访问共享资源。

4. 中断调解:为了减少中断数,许多 NIC 使用中断审查。 使用中断审查时,NIC 硬件在收到数据包后不会立即生成中断。 相反,硬件会等待更多数据包到达或超时过期,然后再生成中断。 硬件供应商指定最大数据包数、超时间隔或其他中断审查算法。数据包的测量往返时间是确定两个终结点之间的网络带宽的最常用技术之一。 但是,启用中断审查后,接收数据包不会立即产生中断,因此,特定数据包的感知往返时间将大于平均时间。

为了准确测量数据包的往返时间,NDIS 提供了按需禁用和启用中断审查的功能。所有 NDIS 6.0 及更高版本的微型端口驱动程序都必须支持 OID_GEN_INTERRUPT_MODERATION OID。 如果微型端口驱动程序不支持中断审查,则驱动程序必须在NDIS_INTERRUPT_MODERATION_PARAMETERS结构的 InterruptModeration 成员中指定 NdisInterruptModerationNotSupported。

NDIS 6.0 及更高版本的微型端口驱动程序必须同时支持 OID_GEN_INTERRUPT_MODERATION OID 集和查询请求。 设置请求指示微型端口驱动程序启用或禁用中断审查,查询请求报告中断审查的当前状态。默认情况下,支持中断审查的微型端口驱动程序应启用此功能,除非注册表中的 InterruptModeration 标准关键字 (keyword) 禁用此功能。

微型端口适配器 OID 请求

NDIS 定义对象标识符 (OID) 值来标识微型端口适配器参数,其中包括设备特征、可配置的设置和统计信息等操作参数。

对于 NDIS 6.1 及更高版本的微型端口驱动程序,NDIS 提供 直接 OID 请求接口。 直接 OID 请求路径支持经常查询或设置的 OID 请求。 对于 NDIS 驱动程序,直接 OID 请求接口是可选的。

对于 NDIS 6.80 及更高版本的微型端口驱动程序,NDIS 提供 同步 OID 请求接口。 同步 OID 请求路径支持需要同步的 OID 或不应由筛选器驱动程序(如 RSSv2 OID)排队的 OID。 同步 OID 请求接口对于 NDIS 驱动程序是可选的,但如果微型端口驱动程序播发对 RSSv2 的支持,则是必需的。

1. 微型端口适配器 OID 请求序列化

对微型端口适配器的所有 OID 请求都由 NDIS 序列化,直接 OID 请求除外,这些请求在设计上未序列化。 在完成任何挂起的请求之前,微型端口适配器不会收到新的 OID 请求。 因此,微型端口适配器必须立即完成 OID。

备注:建议在 1000 毫秒或 1 秒内完成 OID 请求,这样用户就不会注意到性能有任何延迟。 有关 OID 请求计时的特定信息,请参阅 NdisTimedOidComplete 驱动程序验证程序规则。

此 OID 序列化规则的一个例外是,对于使用 WDI 的Wi-Fi微型端口适配器,如果它们花费的时间太长而无法完成以前的 OID,则可能会看到第二个 OID 请求。 以下示例说明在这种情况下会发生什么情况:

  • 第一个 OID 请求传递到 WDI 微型端口适配器;
  • NIC 不会在驱动程序指定的时间限制内响应 OID;
  • WDI 调用驱动程序的 MINIPORT_WDI_ADAPTER_HANG_DIAGNOSE 回调函数来收集有关 NIC 的诊断数据;
  • 第一个 OID 不再被视为阻止序列化。 这意味着 WDI 微型端口适配器现在可以接收其他 OID 请求,即使第一个 OID 已序列化。 但是,这些其他 OIDS 也会序列化,这意味着 WDI 微型端口适配器不会同时处理 (第一个仍挂起的 OID以及第二个 OID) ;

2. 处理微型端口适配器中的 OID 请求

NDIS 调用微型端口驱动程序的 MiniportOidRequest 函数以提交 OID 请求以查询或设置驱动程序中的信息。 NDIS 代表它自己调用 MiniportOidRequest 函数,或者代表调用 NdisOidRequest 或 NdisFOidRequest 函数的过度驱动程序调用 MiniportOidRequest 函数。

NDIS 传递 MiniportOidRequest 指向包含请求信息的 NDIS_OID_REQUEST 结构的指针。 请求结构包含一个OID_Xxx标识符,该标识符指示请求的类型以及用于定义请求数据的其他成员。

Timeout 成员指定请求的超时时间(以秒为单位)。 如果超时在驱动程序完成请求之前过期,NDIS 可以重置驱动程序或取消请求。

RequestId 成员指定请求的可选标识符。 微型端口驱动程序可以将状态指示的 RequestId 成员设置为从关联 OID 请求的 RequestId 成员获取的值。 通常,微型端口驱动程序可以忽略此成员。 如果驱动程序必须设置此成员,则特定 OID 的引用页将提供所需的值。 有关状态指示的详细信息,请参阅 适配器状态指示。

成功处理 OID 集请求的微型端口驱动程序必须在从 OID 集请求返回时在 NDIS_OID_REQUEST 结构中设置 SupportedRevision 成员。 SupportedRevision 成员通知发起方驱动程序支持的修订请求。 例如,微型端口驱动程序可以创建Xxx_REVISION_2结构,提供适合Xxx_REVISION_1结构的值,并使用零填充结构的其余部分。 微型端口驱动程序将在 SupportedRevision 成员中报告Xxx_REVISION_1。 在这种情况下,可支持Xxx_REVISION_2的协议驱动程序将使用微型端口驱动程序支持的Xxx_REVISION_1信息。 

微型端口驱动程序可以通过返回成功或失败状态同步完成 OID 请求。

微型端口驱动程序可以通过返回NDIS_STATUS_PENDING异步完成 OID 请求。 在这种情况下,微型端口驱动程序必须调用 NdisMOidRequestComplete 函数才能完成操作。

如果 MiniportOidRequest 返回NDIS_STATUS_PENDING,则在挂起的请求完成之前,NDIS 不会使用针对适配器的另一个请求调用 MiniportOidRequest 。

NDIS 可以调用微型端口驱动程序的 MiniportCancelOidRequest 函数来取消 OID 请求。

3. 微型端口适配器直接 OID 请求

为了支持直接 OID 请求路径,微型端口驱动程序在NDIS_MINIPORT_DRIVER_CHARACTERISTICS结构中提供 MiniportXxx 函数入口点,NDIS 为微型端口驱动程序提供 NdisMXxx 函数。

直接 OID 请求接口类似于标准 OID 请求接口。 例如, NdisMDirectOidRequestComplete 和 MiniportDirectOidRequest 函数类似于 NdisMOidRequestComplete 和 MiniportOidRequest 函数。

注意 NDIS 6.1 支持用于直接 OID 请求接口的特定 OID。 不支持 NDIS 6.1 和某些 NDIS 6.1 OID 之前存在的 OID。

微型端口驱动程序必须能够处理未序列化的直接 OID 请求。 与标准 OID 请求接口不同,NDIS 不会将直接 OID 请求与通过直接 OID 接口或标准 OID 请求接口发送的其他请求序列化。 此外,微型端口驱动程序必须能够在 IRQL <= DISPATCH_LEVEL 处理直接 OID 请求。

若要支持直接 OID 请求接口,请使用标准 OID 请求接口的文档。下表显示了直接 OID 请求接口中的函数与标准 OID 请求接口之间的关系。

直接 OID 函数标准 OID 函数
MiniportDirectOidRequest    MiniportOidRequest
MiniportCancelDirectOidRequest   MiniportCancelOidRequest
NdisMDirectOidRequestComplete    NdisMOidRequestComplete

4. 微型端口适配器同步 OID 请求

为了支持同步 OID 请求路径,微型端口驱动程序在调用 NdisMRegisterMiniportDriver 函数时,在 NDIS_MINIPORT_DRIVER_CHARACTERISTICS 结构中提供 MiniportSynchronousOidRequest 函数入口点。

对于微型端口驱动程序, 同步 OID 请求接口 不同于常规和直接 OID 请求接口,即微型端口驱动程序不必注册异步完成回调函数。 这是因为路径的同步性质。 口。

备注: NDIS 6.80 支持与同步 OID 请求接口配合使用的特定 OID。 不支持 NDIS 6.80 和某些 NDIS 6.80 OID 之前存在的 OID。 

若要支持同步 OID 请求接口,请使用标准 OID 请求接口的文档。 下表显示了同步 OID 请求接口和标准 OID 请求接口中的函数之间的关系:

同步 OID 函数标准 OID 函数
MiniportSynchronousOidRequest    MiniportOidRequest
微型端口驱动其它信息 

1. 微型端口适配器状态指示

微型端口驱动程序调用 NdisMIndicateStatusEx 函数来报告微型端口适配器的状态更改。 微型端口驱动程序将 NdisMIndicateStatusEx 传递指向包含状态信息的 NDIS_STATUS_INDICATION 结构的指针。

状态指示包括用于标识状态类型和状态更改原因的信息。

微型端口驱动程序应将 SourceHandle 成员设置为 NDIS 传递给 MiniportInitializeEx 函数的 MiniportAdapterHandle 参数的句柄。 如果状态指示与 OID 请求相关联,微型端口驱动程序可以设置 DestinationHandle 和 RequestId 成员,以便 NDIS 可以提供特定协议绑定的状态指示。

2. 微型端口适配器设备 PnP 事件通知

NDIS 调用微型端口驱动程序的 MiniportDevicePnPEventNotify 函数,以通知驱动程序即插即用 (PnP) 事件。

NDIS 提供描述 PnP 事件的事件代码。 代码可以指示适配器已意外从系统中删除,或者主机系统的电源配置文件已更改。

如果事件代码指示电源配置文件已更改,则 NDIS 还会指示更改的类型。 系统使用电池电源运行,或者系统使用交流电源运行。

微型端口驱动程序应相应地调整适配器设置。 

3. 微型端口适配器挂起检查和重置操作

对于所有 NDIS 6.83 及更高版本的驱动程序,不建议检查挂起 (CFH) 和重置操作。 

NDIS 调用 NDIS 微型端口驱动程序的 MiniportCheckForHangEx 函数来检查 NDIS 适配器的操作状态,该适配器表示网络接口卡 (NIC) 。 MiniportCheckForHangEx 检查适配器的内部状态,如果检测到适配器无法正常运行,则返回 TRUE 。

默认情况下,NDIS 大约每 2 秒调用 一次 MiniportCheckForHangEx 。 如果 MiniportCheckForHangEx 返回 TRUE,NDIS 将调用 NDIS 微型端口驱动程序的 MiniportResetEx 函数。 如果默认超时值 2 秒太小,微型端口驱动程序可以在初始化时设置不同的值,如下所示:

  • 将 NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 结构的 CheckForHangTimeInSeconds 成员设置为非零值;
  • 在 NdisMSetMiniportAttributes 函数的 MiniportAttributes 参数中传递 NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 结构;

CheckForHangTimeInSeconds 的值应大于微型端口驱动程序的初始化时间。 但是,如果驱动程序初始化所花费的时间超过 CheckForHangTimeInSeconds 秒 ,则此超时将过期,导致 NDIS 调用驱动程序的 MiniportCheckForHangEx 函数。 如果 MiniportCheckForHangEx 返回 TRUE,则 NDIS 将调用驱动程序的 MiniportResetEx 函数。 因此,应将驱动程序的 MiniportCheckForHangEx 函数与驱动程序初始化同步,以便在驱动程序尚未完成初始化时 ,MiniportCheckForHangEx 不会返回 TRUE 。

如果微型端口驱动程序在对 MiniportCheckForHangEx 的连续两次调用中未完成 OID 请求,则 NDIS 可以调用驱动程序的 MiniportResetEx 函数。 对于某些 OID 请求,如果驱动程序在对 MiniportCheckForHangEx 的连续四次调用中未完成请求,则 NDIS 会调用 MiniportResetEx。

重置操作不会影响 微型端口适配器的操作状态。 此外,重置操作正在进行时,适配器的状态可能会更改。 例如,当正在进行重置操作时,NDIS 可能会调用驱动程序的 MiniportPause 函数。 在这种情况下,驱动程序可以按任何顺序完成重置或暂停操作,同时遵循每个操作的正常要求。

对于重置操作,驱动程序可能会使传输请求数据包失败,也可以让数据包保持排队并稍后完成。 但是,应注意,在传输数据包挂起时,过分的驱动程序无法完成暂停操作。

微型端口驱动程序可以通过返回成功或失败状态同步完成重置请求。 驱动程序可以通过返回 NDIS_STATUS_PENDING异步完成重置请求。 在这种情况下,驱动程序必须调用 NdisMResetComplete 才能完成操作。

4. NDIS 6.83 及更高版本中的检查挂起和重置操作:
在 NDIS 6.83 之前的版本中,由于电池使用时间问题,不建议对 Always On、Always Connected (AOAC) 系统执行检查挂起 (CFH) 和重置操作。 但是,驱动程序仍可以通过实现可选的 MiniportCheckForHangEx 和 MiniportResetEx 回调函数在其他非 AOAC Windows 系统上使用 CFH。

从 NDIS 6.83 开始,不建议 在所有 Windows 系统上使用这些回调函数,而不考虑电源功能。 尽管在 NDIS 6.83 及更高版本中使用 CFH 不是徽标测试冲突,但 NDIS 驱动程序应使用下表来获取有关其用法的指导。

调用方建议说明
面向 AOAC 系统的驱动程序    不得实现    由于定期检查挂起活动而导致电池使用时间问题
面向 Windows Server 系统的驱动程序    不得实现    CPU 压力大时导致问题
虚拟 (仅限软件) 微型端口驱动程序    不得实现    没有硬件就无法重置
其他新的 NDIS 6.83 及更高版本的驱动程序不应实现
其他现有的 NDIS 6.82 和更早代码不需要更改,但应考虑在将来的版本中删除“挂起检查”和“重置”

5. NDIS 管理信息和 OID

每个微型端口驱动程序都包含自己的 管理信息库 (MIB) ,这是一个信息块,驱动程序在其中存储管理实体可以查询或设置的动态配置信息和统计信息。 以太网多播地址列表是配置信息的示例。 接收的广播数据包数是统计信息的一个示例。 MIB 中的每个信息元素称为对象。 为了引用每个此类托管对象,NDIS (OID) 定义对象标识符 。 因此,如果管理实体想要查询或设置特定的托管对象,则必须为该对象提供特定的 OID。

MIB 跟踪三类对象:

  • 所有 NDIS 微型端口驱动程序通用的对象;
  • 特定于给定介质类型(如以太网)的所有 NDIS 微型端口驱动程序的对象;
  • 特定于特定供应商实现的对象;

WDK 文档的“网络参考”部分记录了 常规 和必需的媒体特定 OID。 特定网络接口卡 (NIC) 驱动程序的实现特定 OID 应在给定微型端口驱动程序随附的文档中列出和说明。

对象被归类为 操作特征 (例如,多播地址列表) 或 统计信息 接收的广播数据包,它们也分类为必需或可选。 常规类或特定于媒体的类的所有操作特征对象都是强制性的,但只有一些统计信息对象是必需的。 所有特定于实现的对象都分类为必需对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/13978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【三剑客和正则表达式】

文章目录 学习目标一、什么是三剑客1.三剑客grep2.三剑客sed3.三剑客awk4.正则过滤例子15.正则过滤例子2 总结 学习目标 1.学会使用 grep 2.学会使用 sed 3.学会使用 awk 4.学会使用正则表达式一、什么是三剑客 正则三剑客&#xff1a;grep sed awk 1.三剑客grep # 擅长过滤…

【MySQL精通之路】查询优化器的使用(8)

MySQL通过影响查询计划评估方式的系统变量、可切换优化、优化器和索引提示以及优化器成本模型提供优化器控制。 服务器在column_statistics数据字典表中维护有关列值的直方图统计信息&#xff08;请参阅第10.9.6节“Optimizer统计信息”&#xff09;。与其他数据字典表一样&am…

#Ethereum 现货ETF 问题汇总 转

专题&#xff1a; #Ethereum 现货ETF 问题汇总&#xff0c;包括了多数小伙伴们的疑问&#xff0c;有任何忽略请留言给我&#xff0c;我会补充。 1. #ETH 现货ETF何时公布&#xff1f; 一般来说会在北京时间的5月24日凌晨2点至4点之间&#xff0c;不排除稍微延后到凌晨6点的可能…

基于大语言模型的应用

在AI领域&#xff0c;大语言模型已成为备受瞩目的焦点&#xff0c;尤其在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;其应用愈发广泛。BLM作为一种多任务语言建模方法&#xff0c;旨在构建一个具备多功能的强大模型。在给定文本和查询条件下&#xff0c;该模型能…

【深度学习】YOLOv8训练,交通灯目标检测

文章目录 一、数据处理二、环境三、训练 一、数据处理 import traceback import xml.etree.ElementTree as ET import os import shutil import random import cv2 import numpy as np from tqdm import tqdmdef convert_annotation_to_list(xml_filepath, size_width, size_he…

海山数据库(He3DB)代理ProxySQL使用详解:(二)功能实测

读写分离实测 ProxySQL官方demo演示了三种读写分离的方式&#xff1a;使用不同的端口进行读写分离、使用正则表达式进行通用的读写分离、使用正则和digest进行更智能的读写分离。最后一种是针对特定业务进行的优化调整&#xff0c;也可将其归结为第二种方式&#xff0c;下边分…

MySQL备份与日志练习

1、创建对mysql数据库test1的定时备份任务&#xff0c;频率是每周一的2点 create database test1;crond -e0 2 * * 1 mysqldump -u root -pAdmin123 --databases test1 > /opt/test1.sql2、test1中有t1、t2、t3三张表&#xff0c;要求只备份t2这张表 mysqldump -u root -pA…

Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明

Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明 目录 Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明 一、简单介绍 二、单变量非线性变换 三、自…

知识图谱数据预处理笔记

知识图谱数据预处理笔记 0. 引言1. 笔记1-1. \的转义1-2. 特殊符号的清理1-3. 检查结尾是否正常1-4. 检查<>是否存在1-5. 两端空格的清理1-6. 检查object内容长时是否以<开始 0. 引言 最近学习知识图谱&#xff0c;发现数据有很多问题&#xff0c;这篇笔记记录遇到的…

软件设计师备考笔记(九):数据库技术基础

文章目录 一、基本概念二、数据模型&#xff08;一&#xff09;基本概念&#xff08;二&#xff09;E-R模型&#xff08;三&#xff09;数据模型 三、关系代数&#xff08;一&#xff09;关系数据库的基本概念&#xff08;二&#xff09;五种基本的关系代数运算&#xff08;三&…

React hooks - forwardRef+useImperativeHandle

forwardRefuseImperativeHandle React.forwardRef用法useImperativeHandle用法第三个参数的用法 React.forwardRef与useImperativeHandle配合使用注意事项 React.forwardRef用法 1.创建一个 能够接受到ref属性的React 组件。 ref 用来获取实例&#xff0c;但函数组件不存在实例…

bugku 网络安全事件应急响应

开启靶场&#xff1a; 开始实验&#xff1a; 使用Xshell登录服务器&#xff0c;账号及密码如上图。 1、提交攻击者的IP地址 WP: 找到服务器日志路径&#xff0c;通常是在/var/log/&#xff0c;使用cd /var/log/&#xff0c;ls查看此路径下的文件. 找到nginx文件夹。 进入ng…

hyperopt、optuna、gridsearch、randomsearch自动调参

开始使⽤hyperopt进⾏⾃动调参 algo partial(tpe.suggest, n_startup_jobs1) best fmin(lightgbm_factory, space, algoalgo, max_evals20, pass_expr_memo_ctrlNone) RMSE lightgbm_factory(best) print(‘best :’, best) print(‘best param after transform :’) argsD…

【Jenkins】Centos7安装Jenkins(环境:JDK11,tomcat9,maven3.8)

目录 Jenkins部署环境Maven安装1.上传安装包2.解压3.配置Maven环境变量4.使配置文件立即生效5.校验Maven安装6.Maven配置阿里云仓库7.Maven配置依赖下载位置 Git安装安装监测安装 JDK17安装1.查看旧版本JDK2.卸载旧版本JDK3.查看是否卸载干净4.创建java目录5.下载JDK11安装包6.…

“开源与闭源大模型:数据隐私、商业应用与社区参与的多维比较“

开源大模型和闭源大模型各有其优势和局限&#xff0c;它们在数据隐私、商业应用和社区参与方面的表现也各有不同。以下是对这三个方面进行的分析&#xff1a; 方向一&#xff1a;数据隐私 开源大模型&#xff1a; 优点&#xff1a;开源模型通常允许用户和开发者查看和修改代…

Excel中Lookup函数

#Excel查找函数最常用的是Vlookup&#xff0c;而且是经常用其精确查找。Lookup函数的强大之处在于其“二分法”的原理。 LOOKUP&#xff08;查找值&#xff0c;查找区域&#xff08;Vector/Array&#xff09;&#xff0c;[返回结果区域]&#xff09; 为什么查找区域必须升序/…

一种处理checked exception的方法

一种处理checked exception的方法 在网上看到的一种处理异常的方法 public abstract class Try<V> {private Try() {}public abstract Boolean isSuccess();public abstract Boolean isFailure();public abstract void throwException();public abstract Throwable getMe…

【UE HTTP】“BlueprintHTTP Server - A Web Server for Unreal Engine”插件使用记录

1. 在商城中下载“BlueprintHTTP Server - A Web Server for Unreal Engine”插件 该插件的主要功能有如下3点&#xff1a; &#xff08;1&#xff09;监听客户端请求。 &#xff08;2&#xff09;可以将文件直接从Unreal Engine应用程序提供到Web。 &#xff08;3&#xff…

Antd Vue项目引入TailwindCss之后出现svg icon下移,布局中的问题解决方案

目录 1. 现象&#xff1a; 2. 原因分析&#xff1a; 3. 解决方案&#xff1a; 写法一&#xff1a;扩展Preflight 写法二&#xff1a; 4. 禁用 Preflight 1. 现象&#xff1a; Antd Vue项目引入TailwindCss之后出现svg icon下移&#xff0c;不能对齐显示的情况&#xff0…

k8s笔记 | Prometheus安装

kube-prometheus 基于github安装 选择对应的版本 这里选择 https://github.com/prometheus-operator/kube-prometheus/tree/release-0.11 下载修改为国内镜像源 image: quay.io 改为 quay.mirrors.ustc.edu.cn image: k8s.gcr.io 改为 lank8s.cn 创建 prometheus-ingres…