语言:C
操作系统: Windows
我的应用程序是由nt级apis构成的,并且必须操作文件和目录句柄。在Zwopenfile或zwcreate文件上,我得到了一个HANDLE。通常,HANDLE的值类似于0x00000024,28,2c...当我将其转换为LPBYTE以查看内容时。Visual studio显示“表达式无法求值”。我知道从创建/打开文件apis返回的HANDLE不是指向内存位置的指针。但是,windows使用该值并执行文件操作。Ntquerydirectory对象为我提供了关于句柄的信息。但是,windows是如何实现此功能的尚不清楚。有没有人能解释清楚这件事。
发布于 2011-05-30 15:10:10
这就是所谓的“不透明值”,意思是“它完全取决于Windows如何在内部完成它。例如,它可能是某个全局表中的一个索引,您的程序无法直接访问它- Windows只知道如何到达那里,您甚至不应该考虑这样做。”
发布于 2011-05-30 16:10:14
句柄存储在只能从内核代码访问的表中。如果你对Windows内核是如何工作的感兴趣,你可能会发现Mark Russinovitch blog或driver development很有趣。
发布于 2011-05-30 17:48:27
我所知道的最后一本书是马克·E·鲁西诺维奇和大卫·A·所罗门写的关于这类东西的很好的参考资料《Inside Windows 2000》。虽然很明显已经过时了,但这本书的很多内容仍然是相关的。谷歌搜索“Windows7内幕”,链接到Russinovitch的演讲视频和其他一些我不能保证但似乎是主题的书籍。
https://stackoverflow.com/questions/6173258
复制相似问题