Marshal.StringToHGlobalAnsi 方法

将托管 String 中的内容复制到非托管内存,并在复制时转换为 ANSI 格式。

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

语法

声明
Public Shared Function StringToHGlobalAnsi ( _
    s As String _
) As IntPtr
用法
Dim s As String
Dim returnValue As IntPtr

returnValue = Marshal.StringToHGlobalAnsi(s)
public static IntPtr StringToHGlobalAnsi (
    string s
)
public:
static IntPtr StringToHGlobalAnsi (
    String^ s
)
public static IntPtr StringToHGlobalAnsi (
    String s
)
public static function StringToHGlobalAnsi (
    s : String
) : IntPtr

参数

  • s
    要复制的托管字符串。

返回值

非托管内存中将 s 复制到的地址,如果提供的是空字符串,则为 0。

异常

异常类型 条件

OutOfMemoryException

没有足够的可用内存。

ArgumentOutOfRangeException

s 参数超过了操作系统所允许的最大长度。

备注

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

提示

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

示例

下面的代码示例演示如何将托管 String 类的内容转换为非托管内存,然后在完成转换后释放该非托管内存。

.NET Framework 安全性

平台

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

请参见

参考

Marshal 类
Marshal 成员
System.Runtime.InteropServices 命名空间
FreeCoTaskMem
PtrToStringAnsi