草庐IT

内核链表

全部标签

windows - 内核定时器对象和同步

不知是否有人能简单地告诉我(我知道这不是一个简单的主题)内核定时器对象是如何用于同步对内核中数据结构的访问的?编辑:内核定时器对象是内核调度程序对象的一部分,内核调度程序对象是内核的一组同步对象。我还想知道计时器对象是否是线程在能够继续之前必须等待获取句柄的东西,或者它是线程等待获取句柄的计时器到期时触发的回调?我希望这是有道理的。内核对我来说是一个新主题。 最佳答案 简短回答:计时器对象不用于同步对内核中数据结构的访问。为此,NT内核具有快速互斥、保护互斥、推锁、互斥对象等功能。我不太明白你的问题——你在说什么数据结构?不过,我将

c - 如何枚举内核中指定进程的所有打开句柄(Windows)

我有一个内核驱动程序。我如何枚举我的内核驱动程序中指定进程的所有打开句柄?我想关闭这些句柄。谢谢! 最佳答案 Iwanttoclosethesehandles.就其值(value)而言,仅仅因为可以做某事,并不意味着应该做。这是个坏主意。也就是说,可以使用对Zw/NtQuerySystemInformation的未记录调用来枚举所有进程的所有句柄。具有信息类SystemHandleInformation。使用这些术语进行网络搜索会得到您想要的结果。 关于c-如何枚举内核中指定进程的所有打

windows - Windows 内核是否有读写 fork() 指令?

BecausePOSIX.1compliancewasamandatorygoalforWindows,theoperatingsystemwasdesignedtoensurethattherequiredbasesystemsupportwaspresenttoallowfortheimplementationofaPOSIX.1subsystem(suchastheforkfunction,whichisimplementedintheWindowsexecutive,andthesupportforhardfilelinksintheWindowsfilesystem).这个f

windows - 在 Windows 中,默认情况下禁用本地内核调试。为什么?

我正在使用Windows10。首次安装Windows时,默认情况下禁用本地内核调试(windbg-kl)。要启用它,您必须运行bcdedit-debugon并重新启动。(不过,据我所知,即使禁用本地内核调试,SysinternalsLiveKd似乎也能正常工作。)为什么默认禁用本地内核调试?始终启用它有什么缺点吗? 最佳答案 如评论中所述,默认情况下禁用内核调试,因为它允许(即使在64位Windows上)加载未真正签名(自签名)的内核驱动程序。(并禁用PatchGuard等)当然,关于“管理员仍然生活在用户区”的评论是无稽之谈。评论

内核函数可以有不同的虚拟地址吗

这更像是一个知识问题,而不是实际实现。我想知道系统启动后是否有任何内核函数可以具有不同的虚拟地址。我对可执行文件编译的理解是为其二进制文件分配虚拟地址,但虚拟地址到物理地址是在运行时由操作系统完成的。(分页。我知道那东西。所以,不需要2解释)但是对于内核函数,每次重新启动系统时我都会看到它们具有不同的虚拟地址。1、内核函数在地址范围内是如何映射的?2.能否在运行时将它们映射到不同的虚拟地址。(不知道怎么可能)3.dll的地址映射是怎样的?它们是在编译时被赋予虚拟地址还是在运行时被赋予相对地址?(我认为这就是它完成的方式。)4.有什么方法可以找到是否有任何内核虚拟地址被固定到物理内存。谢

HarmonyOS系统中内核实现MQTT协议开发的方法

   大家好,今天主要来聊一聊,如何使用鸿蒙开始实现MQTT协议开发的方法 第一:MQTT基本原理  在MQTT协议通讯中,有两个最为重要的角色。它们分别是服务端和客户端。首先我们来初步了解一下它们。MQTT服务端MQTT服务端通常是一台服务器。它是MQTT信息传输的枢纽,负责将MQTT客户端发送来的信息传递给MQTT客户端。MQTT服务端还负责管理MQTT客户端。确保客户端之间的通讯顺畅,保证MQTT消息得以正确接收和准确投递。MQTT客户端MQTT客户端可以向服务端发布信息,也可以从服务端收取信息。我们把客户端发送信息的行为成为“发布”信息。而客户端要想从服务端收取信息,则首先要向服务端“

C++ 线程安全双向链表

我正在编写的应用程序需要上述数据结构。我想知道是否有一个库已经实现了它,或者我是否必须自己编写它?如果没有必要,我真的不想重新发明轮子。我需要这个结构能够使用多个线程添加和删除项目,而不必在这样做时锁定整个结构。 最佳答案 可能有,但我认为这是Java早期的教训之一-数据同步通常不在容器的成员函数级别,而是在上面的一个步骤。您应该在访问非线程安全列表之前使用同步对象。考虑:ThreadSafeQueuetsq;tsq.push_back(...);//addlotsofdata...//Findthefirstelementthat

windows - 为 Windows 开发内核补丁或驱动程序?

为WindowsNT内核/内核系列开发内核补丁或驱动程序大约需要多长时间,这将引入新功能或替换现有功能?例如,添加不同的加密算法,或实现某种新的安全模型。实际编写内核补丁和驱动程序之间的优点/缺点是什么?理论上能否以内核补丁无法绕过的方式绕过驱动程序?我知道Windows内核是专有的,很难为其编写内核补丁,但这正是一些公司,尤其是AV公司所做的,没有微软的合作,所以有可能...... 最佳答案 Adifferentencryptionalgorithm这是通过扩展加密提供程序来完成的。有一个框架可以让您做到这一点。newsecuri

c - 如何在 ring0(内核模式)中使用 winapi 函数?

我无法在驱动程序中调用FileTimeToSystemTime()方法。错误是:错误C4013:“FileTimeToSystemTime”未定义;假设extern返回int。我也不能包含windows.h,因为我已经包含了ntddk.h,它会导致很多错误。如果我在header中将其声明为BOOLFileTimeToSystemTime(INconstPFILETIME,OUTPSYSTEMTIME);我会收到下一个错误:错误C2061:语法错误:标识符“FileTimeToSystemTime”错误C2059:语法错误:';'错误C2059:语法错误:“类型”错误C4013:“Fil

windows - Windows 操作系统中的内核内存包含什么?

众所周知,在32位Windows操作系统下运行的程序只有2GB的可用虚拟内存。还知道其他2GB保留为内核空间。但是那个内核空间实际上是什么?我能理解内核本身需要保留,但为什么内核空间在进程的VAS中?谢谢。 最佳答案 获取WindowsInternals一书,它详细描述了这一点。不过,对于简短的总结,内核虚拟地址(KVA)空间中的一些内容:1)内核和HAL2)设备驱动3)内核模式堆(称为执行池,我总是觉得很有趣)4)通过句柄导出到用户态的对象(进程、线程、事件、互斥等对象)5)系统PTE,将各种有趣的东西映射到肮脏的用户模式应用程序