在 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 中将 ghostscript DLL 库提供给 python?
如何在 Windows 8 中将字节数组转换为 InMemoryRandomAccessStream 或 IRandomAccessStream
在 Windows 中将多个文件的前缀重命名或删除为每个文件的编号