【发布时间】:2021-10-22 14:49:48
【问题描述】:
所以在my previous question 中,我被建议通过SHCreateMemStream 将字节缓冲区转换为IStream 并使用IWICImagingFactory::CreateDecoderFromStream。第一部分已经引起了一些复杂性,因为 winapi-rs 确实包含 implementation 用于 IStream 但不是函数本身 - 谢天谢地 winapi-rs 包含我需要链接它的所有内容,如下所示:
pub type HIStream = *const IStream;
extern "system" {
pub fn SHCreateMemStream(pbInit: *const BYTE, cbInit: UINT) -> HIStream;
}
。
现在我面临与IWICImagingFactory 类类似的问题,我需要调用CreateDecoderFromStream 方法。但是,根据documentation,它需要一个&self 参数,并且与IStream 类似,这是我理解的一个特征。如何在不从头开始实施的情况下获得IWICImagingFactory 的新实例。我看到一些关于名为 CoCreateInstance 的函数和一些 com API 细节的讨论,但这不是很清楚,因为我目前对 com API 的理解非常差。
【问题讨论】:
-
WIC API Overview 的示例代码解释了如何创建
IWICImagingFactory实例。您需要做的就是将其音译成 Rust 代码。