在 Windows 中将 FILE * 或 HANDLE 转换(分配)到 IStream

Posted

技术标签:

【中文标题】在 Windows 中将 FILE * 或 HANDLE 转换(分配)到 IStream【英文标题】:Convert(ASSIGN) a FILE * or HANDLE to IStream in windows 【发布时间】:2015-02-05 07:37:26 【问题描述】:

想要编写一个函数,该函数期望打开一个文件的句柄,并且 出于某些目的将其转换为 IStream 以与 Wrapper 库进行交互

我知道的一种方法是,我可以从 HANDLE 获取 FILE *, 但我没有任何方法可以将此 FILE * 或 HANDLE 直接转换或分配给 IStream (COM)。

【问题讨论】:

这基本上是在问如何在COM中实现一个接口。您是否阅读过任何教程和示例? 是的,我已经完成了 IStream 教程,但是我无法找到将打开的 FILE * 或打开的句柄转换(分配)到 IStream @Ulrich Eckhardt 转换或分配不起作用。 IStream是一个COM接口,应该由一个对象来实现。 HANDLE 只是操作系统分配的一些数字,通常只是内核级表的索引。 好的@MSalters,所以你能给我一些建议吗,我可以通过_open_osfhandle从HANDLE获取一个FILE *,并且可以对该FILE *进行任何操作来获取它。 @ash123:你自己应该能够弄清楚:FILE* 只是指向某个 C 库内部结构的指针,在 IStream 之前大约 25 年定义。 【参考方案1】:

您可以尝试从路径get filename from HANDLE 然后create IStream。

【讨论】:

是的,我已经实现了,但基本上该文件还没有出现在磁盘上,无论如何我得到了解决方案。谢谢@Eugene

以上是关于在 Windows 中将 FILE * 或 HANDLE 转换(分配)到 IStream的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 中将 csv 导入 hdfs 时出错

如何在 Windows 中将 ghostscript DLL 库提供给 python?

如何在 Windows 8 中将字节数组转换为 InMemoryRandomAccessStream 或 IRandomAccessStream

在 Windows 中将多个文件的前缀重命名或删除为每个文件的编号

如何在 R Windows 中将 Unicode 字符串写入文本文件?

如何在 Windows 中将 .ui 转换为 py?