kb 参数使用示例

搞懂FPGA中Bram的‘深度’:从Address Editor的KB到实际存储单元的换算指南 本文详细解析FPGA中BRAM的深度计算,从Address Editor的KB显示到实际存储单元深度的精准换算。通过实例演示32位宽BRAM的512KB对应深度计算,帮助开发者优化AXI BRAM控制器配置,避免资源浪费并提升设计效率。 阅读详情

[quoted from http://blogs.msdn.com/ntdebugging/archive/2009/09/02/push-locks-what-are-they.aspx]

 

What does a Pushlock look like?

 

3: kd> !thread 8c9764c0

THREAD 8c9764c0  Cid 2410.1be4  Teb: 7ff9f000 Win32Thread: e5c6f298 GATEWAIT

Stack Init b386b000 Current b386a978 Base b386b000 Limit b3867000 Call 0

ChildEBP RetAddr  Args to Child             

b386a990 80833485 8c9764c0 8c9764e4 00000003 nt!KiSwapContext+0x26 (FPO: [Uses EBP] [0,0,4])

b386a9bc 8082ffe0 b06a6a03 e11e0b18 b386aa54 nt!KiSwapThread+0x2e5 (FPO: [Non-Fpo]) (CONV: fastcall)

b386a9e4 8087d722 00000000 e11e0b08 e11e0b18 nt!KeWaitForGate+0x152 (FPO: [Non-Fpo]) (CONV: fastcall)

e11e0b18 00000000 0c050204 7346744e e37b2808 nt!ExfAcquirePushLockExclusive+0x112 (FPO: [Non-Fpo]) (CONV: fastcall)

 

Above is a snipped output from a dump that I was recently looking at. From the stack, you can see the ExfAcquirePushLockExclusive call trying to acquire the pushlock, which then calls KEWaitForGate. In this case, the lock was already acquired, so this thread allocated a wait block on its stack, and then added itself to the waitlist.

Also, the stack is broken due to the fastcall, therefore the debugger cannot display it entirely. So we can manually reconstruct the stack by passing parameters to the kb command.

k[b|p|P|v] = BasePtr StackPtr InstructionPtr

 

To get the arguments, we first dump the stack manually using the dps command with the current esp.

3: kd> dps b386a978 l50

b386a978  b386ad40

b386a97c  00000000

b386a980  8088dafe nt!KiSwapContext+0x26

b386a984  b386a9bc

b386a988  b386aa00

b386a98c  f773f120

b386a990  8c9764c0

b386a994  80833485 nt!KiSwapThread+0x2e5

b386a998  8c9764c0

b386a99c  8c9764e4

b386a9a0  00000003

b386a9a4  8c9764c0

b386a9a8  00000003

b386a9ac  00000002

b386a9b0  00000002

b386a9b4  f773fa7c

b386a9b8  008c0030

b386a9bc  b386a9e4

b386a9c0  8082ffe0 nt!KeWaitForGate+0x152

b386a9c4  b06a6a03

b386a9c8  e11e0b18

b386a9cc  b386aa54

b386a9d0  00000000

b386a9d4  8c976504

b386a9d8  00000000

b386a9dc  0000001c

b386a9e0  00000000

b386a9e4  b386aa40

b386a9e8  8087d722 nt!ExfAcquirePushLockExclusive+0x112

b386a9ec  00000000

b386a9f0  e11e0b08

b386a9f4  e11e0b18

b386a9f8  b386aa40

b386a9fc  8096e9a9 nt!SeOpenObjectAuditAlarm+0x1cf

b386aa00  00040007

b386aa04  00000000

b386aa08  8c976568

b386aa0c  8c976568

b386aa10  b06a6a00

b386aa14  b4ee0a00

b386aa18  b127cc10

b386aa1c  00000000

b386aa20  00000001

b386aa24  80a60456 hal!KfLowerIrql+0x62

b386aa28  b386ac04

b386aa2c  8d117800

b386aa30  00000000

b386aa34  00000000

b386aa38  b386aa20

b386aa3c  01943080

b386aa40  b386aa64

b386aa44  808b7a14 nt!CmpCheckRecursionAndRecordThreadInfo+0x2a

 

From the output above, we can see the stack. To reconstruct the stack, we can get the ebp, esp, and eip from the stack for the ExfAcquirePushLockExclusive frame, and pass it to the kb command. Voila!

 

3: kd> kb = b386aa40 b386a9e4 8087d722

ChildEBP RetAddr  Args to Child             

b386aa40 808b7a14 b386ac04 e11e0b18 e11e0b18 nt!ExfAcquirePushLockExclusive+0x112

b386aa64 808b7b09 e11e0b18 b386aa80 e101bf40 nt!CmpCheckRecursionAndRecordThreadInfo+0x2a

b386aaa4 808da118 0000001c b386ab58 00000001 nt!CmpCallCallBacks+0x6b

b386ab90 80937942 e101bf40 00000000 89f13648 nt!CmpParseKey+0xd4

b386ac10 80933a76 00000000 b386ac50 00000040 nt!ObpLookupObjectName+0x5b0

b386ac64 808bb471 00000000 8e930480 00000d01 nt!ObOpenObjectByName+0xea

b386ad50 808897bc 0243eba0 00020019 0243eb68 nt!NtOpenKey+0x1ad

b386ad50 7c8285ec 0243eba0 00020019 0243eb68 nt!KiFastCallEntry+0xfc

WARNING: Frame IP not in any known module. Following frames may be wrong.

0243eba4 00000000 00000000 00000000 00000000 0x7c8285ec

Azure Automation更新配置中的KB排除技巧 **摘要:**本文探讨了在Azure Automation中使用脚本排除特定KB更新的格式问题。当通过New-AzAutomationSoftwareUpdateConfiguration cmdlet添加KB排除列表时,若以单一字符串形式传递会导致显示异常。解决方案是将KB号码作为字符串数组(String[])传递,并提供了三种创建数组的方法:直接创建数组、从字符串拆分创建、使用数字创建。文章推荐使用PowerShell的splatting技术简化参数传递,确保KB号码正确显示为分行列表。正确处理数组格式 阅读详情

相关推荐

Android学习笔记---27_网络通信之通过GET和POST方式提交参数给web应用,以及使用httpClient,来给web项目以post方式发送参数

Android学习笔记---27_网络通信之通过GET和POST方式提交参数给web应用,以及使用httpClient,来给web项目以post方式发送参数 27_网络通信之通过GET和POST方式提交参数给web应用 ------------------------------------------------- 1.把数据提交到web应用中:   应用的界

添柴程序猿的专栏 2036

Windows内核与实现读书笔记之门等待

并发是指多个控制流同时在执行,既可能是真正的并行执行(如多处理器或多核的硬件环境),也可能是分时方式的并发执行。 同步时保证在并发执行的环境中各个控制流可以有序地执行,包括对于资源的共享或互斥访问,以及代码功能的逻辑顺序。 5.1 进程和线程同步基础 5.1.1 并发性基础 进程或线程的并发性可能的来源: 多处理器环境、多核环境、超线程环境、处理器外部中断、内部中断、线程放弃执行权。 Intel X86 指令体系中,运算指令加上lock 前缀保证其原子性。 使用lock 前缀的两个...

maomao171314的专栏 1102

VT过游戏保护,调试有保护的游戏

VT过游戏保护,调试有保护的游戏。无视TP,HP,PP。

进程强杀的研究

任务管理器是怎么结束一个进程的呢它也是调用一个WINAPI,叫做TerminateProcess由于它也是一个三环的API,在面对杀软或者一些跑在0环的程序束手无策随便写了个demo,用ida打开,发现它也是从kernel32中去导入按照一般的winapi的规律,我们直接到ntdll去找相关api。

m0_68259687的博客 651

OAD_for_CC254x.pdf

TI CC254x的OAD的说明文档 BLE Developer’s Guide for Over-the-Air Download for CC254x Version 1.2

WINDOWS内核原理与实现2

虽然老点,但一点都不过时。好好研读才行。

windows内核开发学习笔记四十:内核概念之同步处理

现代操作系统中,由于多处理器、多核或者中断等各种并发(concurrency)因素的存在,同样的代码有可能被并发执行,而数据也可能被并发访问。在这种情况下,对于可能被并发访问的数据进行必要的同步(synchronization)保护是一种常见的编程实践。windows操作系统提供了多种同步机制,使得系统代码或者应用程序代码能够选择恰当的手段来保护其代码和数据。根据执行环境中的IRQL值大于APC_LEVEL或者等于PASSIVE_LEVEL,可以将同步机制分为:不依赖于线程调度的同步机制 和...

jyl_sh的专栏 826

Skynet 框架面试题

本文整理了游戏服务端开发面试中 Skynet 框架的高频考点,涵盖底层架构、消息派发、协程调度、网络 I/O、harbor 跨机通信、内存管理、socket 处理、阻塞操作、错误处理等核心内容。全面覆盖 Skynet 框架的原理、使用和实战问题,追求深入准确,拒绝八股文。

小赖的博客 381

Windows内核读写自旋锁EX_SPIN_LOCK

这玩意本来是在Vista SP1版本就存在了,但是某些傻x还在坚持使用老旧的windows操作系统。可以使用下面的移植方案代替。 在微软的实现上好像有一些调试用途或者什么优化,移植不了,去掉了。 #ifndef _MY_EX_SPIN_LOCK #define _MY_EX_SPIN_LOCK typedef LONG EX_SPIN_LOCK; KIRQL NTAPI ExAcquireSpinLockExclusive(volatile EX_SPIN_LOCK *ExSpinLock)

mengxp的博客 933

Cgroup对进程所占用的CPU与内存资源同时进行限制的测试

测试环境:Ubuntu。处理器数量:1CPU。内存大小:2048MB。 以下是测试程序mem_cpu_test.c的代码。 将mem_cpu_test.c编译为可以运行的程序mem_cpu_test。 运行程序,并用top命令查看mem_cpu_test所占用的系统资源情况,可以看到,mem_cpu_test使用了50%左右的内存资源,也就是1000MB左右,并占用了接近全部的CPU资源。 关闭以上的程序后,在Cgroup子系统memory和cpu下分别创建进程组test1和test2。 并设置tes

qq_44998067的博客 1153

Meta DINOv3实战指南:如何用7B参数ViT模型搞定图像分割与检测(附Hugging Face配置)

本文提供了Meta DINOv3模型的实战应用指南,重点介绍了如何利用这个7B参数的视觉Transformer模型进行图像分割与目标检测。通过详细的Hugging Face配置步骤、环境搭建、模型加载与推理优化,帮助开发者快速上手这一强大的自监督视觉模型,并高效应用于实际计算机视觉任务中。

s3t4u的博客 904

kd718和kb688参数_kb 参数使用示例

What does a Pushlock look like?3: kd> !thread 8c9764c0THREAD 8c9764c0Cid 2410.1be4Teb: 7ff9f000 Win32Thread: e5c6f298 GATEWAITStack Init b386b000 Current b386a978 Base b386b000 Limit b3867000 Call ...

weixin_39860952的博客 3685

【FreeSwitch开发实践】外呼网关配置(拨打电话)

FreeSwitch开发一个重要应用是外呼,所谓外呼就拨打真实电话或手机号呼叫,配合语音机器人可以实现智能客服的功能。外呼配置主要是配置外呼服务器,外呼服务器主要指SIP网关,每个外呼服务器就是一个SIP节点,FreeSwitch服务也可以是一个SIP节点。本文主要介绍了FreeSwitch外呼相关配置,主要有外呼配置的模式,包括注册模式和非注册模式网关加载的查看方法拨号中常见的呼出配置和呼入配置如果觉得有些帮助或觉得文章还不错,请关注一下博主,你的关注是我持续写作的动力。............

xiao2macf的专栏 1万+

malloc分配超过128kb内存-实验记录

默认情况下,当malloc或者new操作一次性分配大于等于128KB的内存时,会使用mmap来进行,而在小于128KB时,使用的是brk的方式 小于128KB时的测试截图如下: 大于128KB时的测试截图如下: 128KB是可以调节的,如下,重新使用brk的方式进行内存分配。 测试代码如下: #include <iostream> #include <unistd.h&gt...

sunashe的个人随笔 1532

华为OD最新机试真题-池化资源共享

摘要:该问题要求管理n台设备的资源池,处理资源申请和释放操作。申请操作需返回满足条件且剩余资源最少的设备ID,释放操作需将指定申请的资源归还。采用线段树数据结构维护各设备当前最大可用资源值,支持快速查询和更新。线段树实现了单点修改、区间最大值查询以及查找最左满足条件的节点功能。算法时间复杂度为O((n+m)logn),空间复杂度O(n),适用于大规模操作。提供了C++、Java和Python三种实现方案。

面试高手的博客 324

如何完全卸载axure软件以及解决安装axure后打不开的问题【2023年】

如何完全卸载axure软件以及解决安装axure后打不开的问题【2023年】

念兮为美 5139

大文件读或者顺序读场景磁盘优化参数配置

磁盘读取时,大文件在文件系统中的排布趋于连续。

Funning的博客 647

LeRobot 入门教程(四)SO-101机械臂组装教程

《SO-101机器人组装与配置指南》详细介绍了旗舰机器人SO-101的完整搭建流程。从获取3D打印零件、安装LeRobot软件和FeetechSDK,到分步组装6个关节的机械臂结构(含夹爪/手柄选项),指南提供了清晰的螺丝规格和安装位置说明。重点包括:电机ID/波特率设置方法、USB端口识别技巧、领导者/跟随者臂的校准流程,以及故障排查建议。完成组装后,用户可通过配套Python脚本校准机器人,为后续的自主学习任务做好准备。文档附有视频演示和技术支持通道,确保用户顺利完成机器人部署。

2506_90492529的博客 2582

KB-ALBERT 开源项目启动与配置教程

KB-ALBERT 开源项目启动与配置教程 1. 项目的目录结构及介绍 KB-ALBERT 的目录结构如下: KB-ALBERT/ ├── albert/ # ALBERT 模型代码 ├── examples/ # 示例代码和数据处理脚本 │ ├── glue_data/ # 处理 GLUE 数据集的脚本 │ ├── squad/ ...

gitblog_01107的博客 711

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【Linux】Linux命令:du

du 命令用于显示目录或文件的大小。

yanzhyan的博客 736

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

max_sectors_kb 设备允许的最大请求大小

max_sectors_kb 设备允许的最大请求大小查看 max_sectors_kb修改 max_sectors_kb参考 查看 max_sectors_kb -nvme 固态 # cat /sys/block/nvme*n1/queue/max_sectors_kb 1280 1280 修改 max_sectors_kb # cd /etc/udev/rules.d/ vim 71-block-max-sectors.rules ACTION=="add", SUBSYSTEM=="block",

mixboot 1629

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

mysql 2048kb限制_如何修改MySQL导入数据库文件最大限制2048KB的方法

如何修改MySQL导入数据库文件最大限制2048KB的方法,今天在这里给大家介绍解决MySQL数据库的.sql文件大于2MB。所以在导入时就提示说超过2048KB的错误,解决办法:1、打开PHP.ini。找到 upload_max_filesize 、 memory_limit 、 post_max_size这三个参数!(在默认的情况下,php只允许最大的上传数据为2M,也就是2048KB,而极限...

weixin_39771969的博客 282

从0到1:ZzFX微型版(小于1KB)快速入门教程

ZzFX微型版(ZzFXMicro.js)是一款超轻量级的JavaScript音效生成系统,文件体积小于1KB,却能为游戏和网页创建丰富多样的声音效果。本文将带你快速掌握这个强大工具的使用方法,即使你没有音频开发经验,也能在5分钟内生成专业级音效! ## 🎮 为什么选择ZzFX微型版? 在游戏开发或网页交互设计中,音效往往是提升用户体验的关键因素。传统音效方案需要加载大量音频文件,而ZzFX

gitblog_00179的博客 428

Frozen内存优化指南:如何在1KB RAM的MCU中运行完整JSON解析器

在嵌入式开发领域,内存资源往往是最宝贵的财富。当你面对只有1KB RAM的微控制器(MCU)时,如何实现高效的JSON数据处理?Frozen JSON解析器给出了完美答案。这款专为C/C++设计的轻量级库,采用scanf/printf风格接口,让资源受限的嵌入式系统也能轻松处理JSON数据。 ## 为什么选择Frozen?嵌入式系统的终极选择 Frozen JSON解析器的核心理念是**极致精

gitblog_00850的博客 362

q5.js源码剖析:33KB图形库的闭包架构与Canvas薄包装设计原理

q5.js 是一个仅有 33KB 的轻量级 p5.js 替代图形库,它以 Canvas 2D 为底座的"薄包装"设计,让创意编程草图代码几乎可以无缝替换 p5.js 直接使用。本文将从源码结构切入,剖析它如何用单文件闭包组织全部功能、如何把绘制 API 逐行映射到 Canvas,以及这套"薄包装"架构背后的性能取舍。 ## 📦 33KB 意味着什么:q5.js 的定位与文件布局 先看一组直观

gitblog_00499的博客 412
上一篇: ida, ollydbg 使用 PDB. _NT_SYMBOL_PATH
下一篇: 检测网络状态
nickr
博客等级 码龄24年 23粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值