草庐IT

Internals

全部标签

windows - Windows 何时通过共享更改文件访问时间?

每个文件都有特定的创建时间、最后写入时间和最后访问时间。我想知道:Windows何时更改文件“上次访问时间”?仅当我打开文件时?也许当Windows显示它的图标时(可以说我有一个文件的快捷方式...)?此外-股票呢?如果我在共享中有一个文件并且有不止一台计算机访问它-Windows如何确定上次访问时间?在哪个用户时钟上?谢谢! 最佳答案 访问时间由提供文件的系统维护。它是在您对打开的文件进行任何操作后写入的。因为访问时间是notmaintained无论如何,在现代Windows版本上,您的程序应该忽略它。

windows - Windows 上的\Device\PhysicalMemory 需要说明

\Device\PhysicalMemory是一个段对象,在Win32API术语中是内存映射文件。鉴于其名称,它可能是一个完全由RAM支持的MMF;是物理页面的一对一映射。这几乎就是我的问题:这个部分对象代表非分页物理内存还是非分页系统地址空间?如果是前者,那么物理内存中的“漏洞”呢?例如,在支持PAE的系统上,系统地址空间下的物理内存实际上可能是“碎片化的”。如果我在将View映射到\Device\PhysicalMemory部分对象后访问这些漏洞,会发生什么情况?我之所以感到困惑,是因为MmMapIoSpace函数采用PHYSICAL_ADDRESSPhysicalAddress参

windows - 操作系统/Windows 内部视频

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭11年前。Improvethisquestion我知道Russinovich的WindowsInternals一书。但我正在寻找类似的东西,但那是视频/音频。是否有学习操作系统/Windows内部原理的视频?

windows - Win32 堆栈部分基地址

我知道要找到一个文本(代码)部分的基地址,应该寻找.text部分的虚拟地址(除非启用了ASLR),但是堆栈呢?堆栈内存是否与堆一起存储在.data段中?如果是这样,我应该寻找.data部分虚拟地址以了解堆栈基地址 最佳答案 堆栈不是一个部分。为每个线程动态分配一个堆栈。(如果它是一个部分,那么每个进程只能有一个线程。) 关于windows-Win32堆栈部分基地址,我们在StackOverflow上找到一个类似的问题: https://stackoverflo

c# - 64 位 Windows 可以分配超过 7FFF'FFFF'FFFF 的虚拟内存吗?

上下文我正在努力升级.NET库以支持64位。该库直接在Windows上其他进程的内存中执行各种操作。我必须在IntPtr(最大正值7FFF'FFFF'FFFF'FFFF)或UIntPtr(最大正值FFFF'FFFF'FFFF'FFFF)两种类型之间进行选择处理我的内存指针。网上关于这两者的资料很多。IntPtr似乎是事实上同意的选择,因为它符合CLS并且大多数.NETAPI都依赖它(引用Marshal来自InteropServices).问题我决定打开一个64位进程并检查分配的内存区域,以及进程中加载​​的模块,看看使用UIntPtr支持无符号指针是否有值(value)(地址>7FFF

windows - DLLMain lpReserved 参数的真正含义是什么?

知名度之一DLLMain函数参数是LPVOIDlpvReserved。来自MSDN文档:IffdwReasonisDLL_PROCESS_ATTACH,lpvReservedisNULLfordynamicloadsandnon-NULLforstaticloads.但是lpReserved的真正含义是什么?指针指向某物吗? 最佳答案 问题中的引用包含您可以依赖的所有信息:IffdwReasonisDLL_PROCESS_ATTACH,lpvReservedisNULLfordynamicloadsandnon-NULLforsta

windows - WMI 中的数据库条目如何(以及多久)更新一次?

我们需要为我们的Windows客户端计算机设计一个监控应用程序,我正在寻找有关WMI架构的一些信息。我们目前的计划是使用相当简单的VBScript脚本来定期查询数据库,将相关信息写入平面文件,以便稍后传输到中央服务器(我们的非Windows机器已经完成了所有繁重的分析和报告工作。我曾尝试在MSDN和整个网络上寻找这个问题的答案,但所有文章似乎都特别“空洞”——很多“如何使用它”,但很少涉及“它的内部工作原理”。以VBScript段为例:setwmi=getObject("winmgmts:\\.\root\cimv2")setitemCpu=wmi.get("Win32_PerfRaw

c++ - Windows 虚拟内存和内核模式

我知道在32位架构中,内核模式虚拟内存映射在0x80000000和0xFFFFFFFF之间。它包含一些结构如EPROCESS,ETHREAD...等等,还有当前进程的页面目录和表。虽然尝试获取某个函数的虚拟地址是ntoskrnl让我们说“nt!NtReadFile”,但我发现它映射到内核虚拟地址0x89421130中。我尝试用随机指令在RET之后修补一些nop,当切换到另一个进程上下文时,我发现我输入的指令仍然存在。这是否意味着加载Ntoskrnl的虚拟内存在每个进程虚拟地址空间中保持不变?谢谢。 最佳答案 Doesthatmean

C 异常处理

我想知道如何在C中处理异常,特别是EXCEPTION_GUARD_PAGE异常。我将尝试更简要地解释一下情况:我想将一个部分/页面部分标记为PAGE_GUARD,每当程序遇到它们时我想执行一些任务,我尝试使用经典的VirtualAlloc引起异常->Write->Exception命中但我知道在C中捕获异常非常感谢您的帮助。提前致谢。 最佳答案 MSDN拥有您需要的一切:UsinganExceptionHandlerThetry-exceptStatement在这种特殊情况下,您需要这样的东西:__try{/*Codethatmay

c# - 带有非传递 IComparer 的 OrderBy

采用自定义IComparer,如果两个double的差异小于给定的epsilon,则将其视为相等。如果在OrderBy().ThenBy()子句中使用此IComparer会发生什么情况?具体来说,我在考虑以下实现:publicclassEpsilonComparer:IComparer{privatereadonlydoubleepsilon;publicEpsilonComparer(doubleepsilon){this.epsilon=epsilon;}publicintCompare(doubled1,doubled2){if(Math.Abs(d1-d2)现在这个ICompa