You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

一种内存高效的方式来从COM流中读取到C#的byte[]

下面是一个使用MemoryStreamBinaryReader从COM流中读取到C#的byte[]的示例代码:

using System;
using System.IO;
using System.Runtime.InteropServices;

class Program
{
    [DllImport("ole32.dll")]
    public static extern int CreateStreamOnHGlobal(IntPtr hGlobal, bool fDeleteOnRelease, out IntPtr pStream);

    [DllImport("kernel32.dll", SetLastError = true)]
    public static extern IntPtr GlobalLock(IntPtr hMem);

    [DllImport("kernel32.dll", SetLastError = true)]
    public static extern bool GlobalUnlock(IntPtr hMem);

    [DllImport("kernel32.dll", SetLastError = true)]
    public static extern bool GlobalFree(IntPtr hMem);

    static void Main(string[] args)
    {
        // 假设COM流已经被实例化并赋值给了comStream变量

        // 读取COM流的字节长度
        comStream.Size(out long streamSize);

        // 分配全局内存
        IntPtr hGlobal = Marshal.AllocHGlobal((IntPtr)streamSize);

        // 通过CreateStreamOnHGlobal将全局内存包装为COM流
        CreateStreamOnHGlobal(hGlobal, true, out IntPtr pStream);

        // 从COM流中读取数据到全局内存
        comStream.Read((IntPtr)streamSize, GlobalLock(hGlobal), out int bytesRead);
        GlobalUnlock(hGlobal);

        // 创建MemoryStream并将COM流的全局内存拷贝到其中
        using (MemoryStream memoryStream = new MemoryStream())
        {
            byte[] buffer = new byte[4096];
            IntPtr pBuffer = GlobalLock(hGlobal);

            while (bytesRead > 0)
            {
                Marshal.Copy(pBuffer, buffer, 0, bytesRead);
                memoryStream.Write(buffer, 0, bytesRead);
                bytesRead = Math.Min(4096, bytesRead);
            }

            GlobalUnlock(hGlobal);

            // 读取MemoryStream的字节数组
            byte[] data = memoryStream.ToArray();

            // 使用data进行后续操作

            // 释放全局内存
            GlobalFree(hGlobal);
        }
    }
}

这段代码使用了CreateStreamOnHGlobal函数将全局内存包装为COM流,然后使用comStream.Read方法从COM流中读取数据到全局内存。接下来,使用MemoryStream将全局内存的数据复制到其中,最后通过ToArray方法获取byte[]数组。

请注意,这段代码中使用了一些不安全的代码,如使用Marshal.AllocHGlobal分配全局内存,以及通过GlobalLockGlobalUnlock锁定和解锁全局内存。因此,确保在使用这些代码之前了解其工作原理,并小心处理全局内存的生命周期和释放。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

火山引擎大规模机器学习平台架构设计与应用实践

(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a1786bfc62944f8cbf19957c30503366~tplv-k3u1fbpfcp-5.jpeg?)可以看到不同应用场景下的参数和数据集、模型训练过程中的网络通信带宽、训练资源数和时长都不... **并行文件系统 vePFS:** 百 Gb 带宽,亚毫秒延迟,支持数亿小文件随机读取。![1280X1280 (1).PNG](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c0535ac7c0854c7b92de764041a46f10~tplv-k3u1fbpfcp-5....

Katalyst Memory Advisor:用户态的 K8s 内存管理方案

内核原生的内存回收方式包含以下几种:* **Memcg 直接内存回收:** 如果一个 Cgroup 的 Memory Usage 达到阈值,则会触发 Memcg 级别的同步内存回收来释放一些内存。如果还不成功,则会触发 Cgroup 级别的 OOM。* **全局快速内存回收:** 上文在介绍快速内存分配时提到了快速内存回收,其之所以快速,是因为只要求回收这次分配所需的页数量即可。 ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i...

一文读懂火山引擎云数据库产品及选型

其中关系型数据库管理系统是所有数据库中使用最广泛的一类。同时,根据卡内基梅隆大学维护的全球数据库信息库(dbdb.io)显示,数据库系统种类已经多达 870 种,可谓是欣欣向荣,让人眼花缭乱。![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7fc9549bb9204de5b6e605dc5b533383~tplv-k3u1fbpfcp-5.jpeg?)纵观整个数据库发展史,关系型数据库系统是历史最悠久并且使用最广泛的一类数据库系统,其理论基础是基于 IB...

基于火山引擎 EMR 构建企业级数据湖仓

导致了他们在演化过程中变得越来越相似。![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2645a6a61a2a435084a734eea0ccf356~tplv-k3u1fbpfcp-5.jpeg?)可以看到,绝大部分特性这三者都是支持... 但我们还是期望能有一些来自社区。能提升用户体验,解决维护问题,这是我们最终期望的形态。### 趋势二:计算向精细化内存管理和高效执行方向发展,榨干硬件性能数据湖的本质是起一堆 task 然后做暴力的计算,当引擎...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

一种内存高效的方式来从COM流中读取到C#的byte[]-优选内容

Katalyst Memory Advisor:用户态的 K8s 内存管理方案
内核原生的内存回收方式包含以下几种:* **Memcg 直接内存回收:** 如果一个 Cgroup 的 Memory Usage 达到阈值,则会触发 Memcg 级别的同步内存回收来释放一些内存。如果还不成功,则会触发 Cgroup 级别的 OOM。* **全局快速内存回收:** 上文在介绍快速内存分配时提到了快速内存回收,其之所以快速,是因为只要求回收这次分配所需的页数量即可。 ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i...
一文读懂火山引擎云数据库产品及选型
其中关系型数据库管理系统是所有数据库中使用最广泛的一类。同时,根据卡内基梅隆大学维护的全球数据库信息库(dbdb.io)显示,数据库系统种类已经多达 870 种,可谓是欣欣向荣,让人眼花缭乱。![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7fc9549bb9204de5b6e605dc5b533383~tplv-k3u1fbpfcp-5.jpeg?)纵观整个数据库发展史,关系型数据库系统是历史最悠久并且使用最广泛的一类数据库系统,其理论基础是基于 IB...
基于火山引擎 EMR 构建企业级数据湖仓
导致了他们在演化过程中变得越来越相似。![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2645a6a61a2a435084a734eea0ccf356~tplv-k3u1fbpfcp-5.jpeg?)可以看到,绝大部分特性这三者都是支持... 但我们还是期望能有一些来自社区。能提升用户体验,解决维护问题,这是我们最终期望的形态。### 趋势二:计算向精细化内存管理和高效执行方向发展,榨干硬件性能数据湖的本质是起一堆 task 然后做暴力的计算,当引擎...
基于 Flink 构建实时数据湖的实践
=&rk3s=8031ce6d&x-expires=1716222077&x-signature=v748uqBZ2v5VYYMkHzsbI8qvGJo%3D)# 数据入湖实践![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/97017b77b599433d990d13747b796bad~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1716222077&x-signature=imPJxGhOtuwtfY5fdeBEpvbCENo%3D)在数据入湖时 Flink 从左边的数据源获取数据,通过流或批的方式写入到 Iceberg 中。...

一种内存高效的方式来从COM流中读取到C#的byte[]-相关内容

全面揭秘!火山引擎边缘 IaaS 混合部署架构实践

如何在边缘场景下构建高效的基础设施服务成为了行业发展新课题。火山引擎边缘计算架构师郭少巍认为:**云原生技术提供了一种全新的方式,使得边缘计算IaaS服务具备了混合部署、弹性扩缩容、简单运维等能力。**在... [picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/00014c7e52b745099aa177156ee6bf83~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1716222098&x-signature=OWibh1ugT...

湖仓一体架构在 LAS 服务的探索与实践

ByteLake 支持流批一体的读写能力,提供流式读写的 source 和 sink,支持近实时分析。**ByteLake** **又是怎么做到这些能力的呢?接下来从以下几个特性来展开阐述。**![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/d157144078904a7caa4fe56b43a1f1b5~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1716222104&x-signature=RLqhYT73a9Lt7hdy0Q4n4ltL%2Buc%3D)**如何实现高效数据...

全面揭秘!火山引擎边缘 IaaS 混合部署架构实践

如何在边缘场景下构建高效的基础设施服务成为了行业发展新课题。火山引擎边缘计算架构师郭少巍认为: **云原生技术提供了一种全新的方式,使得边缘计算IaaS服务具备了混合部署、弹性扩缩容、简单运维等能力。*... [picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/73e748d142c74249a3dfcf735c8fd357~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1716222006&x-signature=plOoxhF%2...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

Actor模型 - 分布式应用框架Akka

Akka是另外一种解决并发问题的思路,通过线程进程之间传递消息,避免对共享资源的竞争,Akka提供了一种称之为Actor的并发模型,粒度比线程还要小(但并不等同于协程),这表明你可以在系统当中创建及其大量的Actor,Akka不... 通过消息传递的方式进行合作,这些线程(或进程)称为Actor。## actor组成和通信![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/96022acc7ef84c1884ee99a286bb7b5e~tplv-tldd...

2022年终总结-两年Androider的技术成长之路|社区征文

**后半年的时间除了工作睡觉吃饭几乎都是泡在学习平台中**。先放出自己的成果吧:![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7ef3470eb9f34efd8d394a2eb2e810e4~tplv-k3u1fbpfcp-waterma... 在记录和总结中我的思维和认知也有了潜移默化的变化...这里主要大致整理下不同的方向,jym如果想要提升自己的话可以从这几个方面去找资料:>- 知识管理法>- 高效时间管理,GTD时间管理法,生活黑客的时间管理>- 思...

打造新一代云原生"消息、事件、流"统一消息引擎的融合处理平台 | 社区征文

交由云基础设施来管理。这不仅消除了非功能性业务中断的问题,而且为业务赋予了轻量化、灵活性以及高度自动化的特质。![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/0112ee... 这样做有助于实现对流量的控制、隔离、调度、权限管理以及协议转换等功能。通过将存储和计算分离,可以更好地管理和保护后端存储服务,并提供一种更灵活、高效、安全的数据处理方式。这种模式适用于复杂的云上环境,可...

[数据库系统] 业界列式存储浅析

相同column的数据组成一个一个的块,排列结构如下图所示:![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/79d811ef46584e5ea0ed316277eef84d~tplv-k3u1fbpfcp-5.jpeg?)通过两者的存储方式我们... 在读取时,由于会读取大量的无效的列的数据,且数据量很大,在存储是系统瓶颈的时代无疑是一大灾难,而且会影响内存中cache的使用效率;在计算时,由于行数据在内存中是顺序存储在一起的,所以对 cpu cache 也很不友好。 ...

「火山引擎」数智平台 VeDI 数据中台产品双月刊 VOL.03

读取能力,支持 CFS_to_LAS 通道作业。- **【新增开发规范及流水管理】** - 智能市场新增建表规范,结合数据地图功能,支持对表名、业务元数据等内容进行开发规范校验。 - 控制台项目新增任务流水线... https://www.volcengine.com/docs/6260/65395/?utm_source=wechat_dp&utm_medium=yuekan&utm_term=doc_link&utm_campaign=20230105&utm_content=datamidoff### **云原生** **数据仓库** **ByteHouse**- **【...

火山引擎 Iceberg 数据湖的应用与实践

管理和使用这些云上的数据提出了挑战。而 Iceberg 作为一种云原生的表格式,可以很好地应对这些挑战。本文将介绍火山引擎在云原生计算产品上使用 Iceberg 的实践,和大家分享高效查询、存储和治理 Iceberg 数据的方法。**相关产品**:https://www.volcengine.com/product/cfs 作者|火山引擎云原生计算工程师-林阳昊# Why Iceberg![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/3f173...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询