阅读:2155回复:5
请教大牛File、Stream、StreamHandle的区别
• File — This represents all opens across all data streams of a file. Currently these contexts are not supported.
• Stream — This represents all opens across a single data stream of a file. • StreamHandle — This represents a single open of a file, i.e., a file object. 楚狂人教材翻译的是: 文件 - 指关于一个文件的所有打开的流。一般这些上下文是不支持的。 流 - 文件上的一个单独的数据流。 流句柄 - 一个文件的一次打开,比如一个文件对象。 有点知道意思,但是感觉还不是很理解之间的区别,能否哪位大牛用更通俗易懂的话帮忙解释下,谢谢了! 还有就是这里说文件的上下文一般是不支持的,但是在ctx例子中还是有FileContext的操作,为什么? |
|
沙发#
发布于:2007-10-30 09:58
一个文件由一个或多个Stream组成,而一个Stream又可以被多次Create,就像我们可以
CreateFile同一个文件多次得到多个句柄一样,这就对应于StreamHandle,而一个文件的 所有Stream其FsContex值t都是一样的,而FsContext也就是File。。。 不知道我解释的对否,大家可以指正!:&_& |
|
|
板凳#
发布于:2007-10-30 10:08
1. WDK上说只有Vista之上的OS才支持File Context;
(参见WDK:Managing Contexts in a Minifilter Driver) 2. 个人理解:按理说Stream Context也只在XP之上才支持,但是我们这里看到的Stream Context是构建在 MiniFilter构架之上的,和真正的FsRtlxxxPerStreamContextxxx操作的Stream Context感觉不是一个东东, (参见WDK:Tracking Per-Stream Context in a File System Filter Driver); |
|
|
地板#
发布于:2007-10-30 10:10
谢谢devia版主的解答,能否从使用的角度帮忙说说怎么理解?什么情况下需要使用哪种?
|
|
地下室#
发布于:2007-10-30 10:18
对一个文件的操作可以理解为对具体Stream的操作,而File是上层我们看到的实实在在的文件(或文件夹),可以和filespy对照着学习
|
|
|
5楼#
发布于:2007-10-30 10:32
谢谢!
|
|