从字节数组c++ winapi创建句柄
Create a handle from byte array c++ winapi
我有一个应用程序,它接受句柄并执行一些任务。句柄当前正在用CreateFile创建。我的问题是CreateFile将文件路径作为参数之一。我正在寻找一种方法从字节数组返回句柄,因为我需要处理的数据不在磁盘上。有人知道有什么函数可以接受字节数组并返回句柄吗?或者我该怎么做?
您有几个选择:
-
重新设计你的处理逻辑,从内存指针而不是
HANDLE
读取数据,然后你可以将你的字节数组按原样传递给你的处理逻辑。如果您还需要处理文件,您可以将文件数据读入字节数组,然后相应地处理它。 -
重新设计你的处理逻辑,从
IStream
接口读取数据,然后你可以使用SHCreateStreamOnFileEx()
和SHCreateMemStream()
,就像Jonathan Potter建议的。 -
如果您必须使用
ReadFile()
或相关功能从HANDLE
读取数据,您可以:。将字节数组写入临时文件,然后从该文件中读取。
b。使用
CreatePipe()
创建一个匿名管道,然后将字节数组写入一端,并从另一端读取数据,就像Harry Johnston建议的那样。
使用CreateFile()
和FILE_ATTRIBUTE_TEMPORARY
属性允许操作系统将文件保存在内存中。当你必须将内存缓冲区写入文件,然后从文件中读取数据时,你仍然有一个副本发生,但是如果你有足够的缓存内存,什么都不会击中硬盘驱动器。
查看更多细节:
CREATEFILE2_EXTENDED_PARAMETERS结构|缓存行为
您也可以使用文件映射,其中写入文件的数据被强制保留在内存中,但这要复杂得多,可能没有任何好处,因为它不太可能整体上变慢。
相关文章:
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- WinAPI 无法创建按钮
- Winapi - SetWindowLongPtr in ShutdownBlockReason创建/销毁JNI本机代码
- 隐藏由 WinAPI 调用创建的窗口
- Winapi创建选项卡菜单
- 调用函数来创建 WinAPI 按钮不会执行任何操作
- 使用 WinAPI 创建自定义菜单的最佳方法是什么
- WINAPI EnumWindowsProc:非标准语法;使用 & 创建指向成员的点
- C Winapi在已安装的VHD上创建多个分区
- 如何在winApi上正确创建按钮以及处理其消息
- Winapi:在类成员功能上创建新线程 - 不兼容的参数类型
- WinApi - 创建文件invalid_handle_value
- WinAPI 创建文件函数 2.
- WinAPI 创建窗口 + 子窗口,处理一个按钮按下
- WINAPI 创建窗口显示奇怪的结果
- 从字节数组c++ winapi创建句柄
- WinAPI:创建可调整大小的窗口,没有标题栏,但有最小化/最大化/关闭按钮(如Firefox/Chrome/Opera
- 从png, winapi创建透明图像
- 使用WinAPI创建具有透明背景的文本标签
- 重定向计数到用winapi创建的新缓冲区