如何将 IntPtr 转换为 Stream?
class Foo
{
static bool Bar(Stream^ stream);
};
class FooWrapper
{
bool Bar(LPCWSTR szUnicodeString)
{
return Foo::Bar(??);
}
};
MemoryStream
将采用 byte[]
,但如果可能的话,我希望在不复制数据的情况下执行此操作。
class Foo
{
static bool Bar(Stream^ stream);
};
class FooWrapper
{
bool Bar(LPCWSTR szUnicodeString)
{
return Foo::Bar(??);
}
};
MemoryStream
will take a byte[]
but I'd like to do this without copying the data if possible.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果我必须复制内存,我认为以下方法可行:
If I had to copy the memory, I think the following would work:
如果您使用
UnmanagedMemoryStream( )
(类存在于 .NET FCL 2.0 及更高版本中)。 与MemoryStream
一样,它是IO.Stream
的子类,并且具有所有常见的流操作。微软对该类的描述是:
这几乎告诉了你需要知道的事情。 请注意,
UnmanagedMemoryStream()
不符合 CLS。You can avoid the copy if you use an
UnmanagedMemoryStream()
instead (class exists in .NET FCL 2.0 and later). LikeMemoryStream
, it is a subclass ofIO.Stream
, and has all the usual stream operations.Microsoft's description of the class is:
which pretty much tells you what you need to know. Note that
UnmanagedMemoryStream()
is not CLS-compliant.