What is BitmapData.reserved?

本文关键字:reserved BitmapData is What | 更新日期: 2023-09-27 17:59:37

BitmapData有一个名为Reserved的属性,它返回一个32位的signed integer。微软的文档中说不要使用这个属性。如果我们不应该使用它;那它为什么在那里?它到底是干什么的?

What is BitmapData.reserved?

保留字段和属性可以有多种用途。一个相当常见的用法是允许将来更复杂类型的BitmapData可能需要存储某些类型的信息的可能性,而本结构没有对此进行规定。如果没有人将Reserved字段用于任何内容,那么未来的实现可以使用该字段来保存指向另一个包含附加信息的结构的指针或句柄。

有趣的是,这是一个bug。它实际上是一个IntPtr,你可以从本机声明中看出,它是SDK中的GdiPlusImaging.h头文件(VS2008的c:''program files''microsoft-sdks''windows''v6.0a''include目录)。这个错误没有字节,因为GDI+创建了它的实例。

这使得字段可能存储了指针或句柄。我猜是内存映射的文件对象句柄。将其存储在客户端状态对象中比必须维护字典才能在UnlockBits()函数中找到它更便宜。不要搞砸了。

在微软的旧API中有很多这样的东西,它们源于在属性集中为未来的开发工作留出空间的时代。它们的作用与一个红色的大按钮相同,任何人都不应该按下它。也许将来会有人想要一个按钮,然后,好吧,我们已经有了这个按钮!