本文档已存档,并且将不进行维护。

Marshal.StringToCoTaskMemAuto 方法

将托管 String 的内容复制到从非托管 COM 任务分配器分配的内存块。

命名空间:System.Runtime.InteropServices
程序集:mscorlib(在 mscorlib.dll 中)

public static IntPtr StringToCoTaskMemAuto (
	string s
)
public static IntPtr StringToCoTaskMemAuto (
	String s
)
public static function StringToCoTaskMemAuto (
	s : String
) : IntPtr

参数

s

要复制的托管字符串。

返回值

分配的内存块;如果提供的是空字符串,则为 0。

异常类型条件

OutOfMemoryException

没有足够的可用内存。

StringToCoTaskMemAuto 对于自定义封送处理或者在混合托管和非托管代码时很有用。由于该方法分配字符串所需的非托管内存,因此应始终通过调用 FreeCoTaskMem 释放内存。此方法提供 Marshal.PtrToStringAuto 的相反功能。

根据执行代码所在的操作系统,将字符串的字符作为 ANSI 字符或 Unicode 字符进行复制。在 Windows 98 中,字符作为 ANSI 字符复制。在 Windows NT 4.0、Windows 2000、Windows XP 以及 Windows Server 2003 系列产品中,字符作为 Unicode 字符复制。

Note注意

此方法使用 SecurityAction.LinkDemand 防止不可信代码对它进行调用;只有直接调用方才需要具有 SecurityPermissionAttribute.UnmanagedCode 权限。如果您的代码可从部分受信任的代码调用,则未经验证不要将用户输入传递给 Marshal 类方法。有关使用 LinkDemand 成员的重要限制,请参见 Demand 和 LinkDemand

Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

.NET Framework

受以下版本支持:2.0、1.1、1.0
显示: