首页
论坛
课程
招聘
[翻译]基于堆栈的文件对象
2021-5-16 20:54 3201

[翻译]基于堆栈的文件对象

2021-5-16 20:54
3201

前言

一些名词的意思老是忘,干脆记个笔记。

 

本人英语水平一般,有错误欢迎指出

起源

1
2
3
4
5
6
IoGetStackLimits( &stackLow, &stackHigh );
 
  if (((ULONG_PTR)FileObject > stackLow) &&
      ((ULONG_PTR)FileObject < stackHigh)) {       
      return FLT_PREOP_SUCCESS_NO_CALLBACK;
  }

起源是这段代码,第一次看的时候,什么鬼,文件和堆栈有什么关系

正文

我想知道,什么是基于堆栈的文件对象?

 

它就是这么说的。它回到了一个不同的时代(当时NT应该在64Mb内存中启动吗?)并且计算了周期。

 

不管怎样,它们应该在Vista中被删除(但没有),但从那以后我就没见过。

 

我的建议是添加代码——以防万一,当下一代人认为这是一种巫术时,

 

这类东西就会悄然而回。在调试器中强制执行该路径一次。

 

当然,除非你手边有一台XP机器。

 

来源:https://community.osr.com/discussion/comment/280951#Comment_280951

 

ennnnnnn

 

解释看起来天方夜谭,大概的意思就是一个不支持的东西。

 

无脑跳过就行了。

 

我又搜了搜,看到一个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
GetFileNameInformation may crash if called with FO located on stack (system/internal FO).
BOOLEAN
IsFileObjectOnStack (
PFILE_OBJECT FileObject
)
{
ULONG_PTR stLower;
ULONG_PTR stHigh;
 
IoGetStackLimits( &stLower, &stHigh );
if ((stLower <= (ULONG_PTR) FileObject) && ((ULONG_PTR)FileObject <= stHigh))
return TRUE;
 
return FALSE;
}

如果调用位于堆栈上的FO(系统/内部FO), GetFileNameInformation可能崩溃。

 

也就是这个不跳过这个基于堆栈的文件对象,
可能会在调用GetFileNameInformation时崩溃

 

来源:https://community.osr.com/discussion/comment/107126#Comment_107126


[培训] 优秀毕业生寄语:恭喜id:一颗金柚子获得阿里offer《安卓高级研修班》火热招生!!!

收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 404
活跃值: 活跃值 (353)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Thead 活跃值 2021-5-17 09:20
2
0
长见识了,第一次知道还有这种情况
游客
登录 | 注册 方可回帖
返回