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。
异常
异常类型 | 条件 |
---|---|
没有足够的可用内存。 |
|
s 参数超过了操作系统所允许的最大长度。 |
备注
StringToHGlobalAnsi 对于自定义封送处理或者在混合托管和非托管代码时很有用。由于该方法分配字符串所需的非托管内存,因此应始终通过调用 FreeHGlobal 释放内存。StringToHGlobalAnsi 提供与 Marshal.PtrToStringAnsi 相反的功能。
提示
此方法使用 SecurityAction.LinkDemand 防止不可信代码对它进行调用;只有直接调用方才需要具有 SecurityPermissionAttribute.UnmanagedCode 权限。如果您的代码可从部分受信任的代码调用,则未经验证不要将用户输入传递给 Marshal 类方法。有关使用 LinkDemand 成员的重要限制,请参见 Demand 和 LinkDemand。
示例
下面的代码示例演示如何将托管 String 类的内容转换为非托管内存,然后在完成转换后释放该非托管内存。
.NET Framework 安全性
- SecurityPermission 调用非托管代码的权限。 关联枚举:UnmanagedCode 安全操作: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
请参见
参考
Marshal 类
Marshal 成员
System.Runtime.InteropServices 命名空间
FreeCoTaskMem
PtrToStringAnsi