封送字符串
平台调用复制字符串参数,根据需要将其从 .NET Framework 格式 (Unicode) 转换为非托管格式 (ANSI)。 由于托管的字符串不可变,在函数返回时,平台调用并不将它们从非托管内存复制回托管内存。
下表列出了字符串的封送处理选项,描述了它们的用法,并提供了指向相应 .NET Framework 示例的链接。
String | 描述 | 示例 |
---|---|---|
按值。 | 将字符串作为 In 参数传递。 | MsgBox |
作为结果。 | 从非托管代码返回字符串。 | 字符串 |
按引用。 | 使用 StringBuilder 将字符串作为 In/Out 参数传递。 | 缓冲区 |
结构中按值。 | 在作为 In 参数的结构中传递字符串。 | 结构 |
结构中按引用 (char*)。 | 在作为 In/Out 参数的结构中传递字符串。 非托管函数需要指向字符缓冲区的指针,并且该缓冲区大小是结构的成员。 | 字符串 |
结构中按引用 (char[])。 | 在作为 In/Out 参数的结构中传递字符串。 非托管函数需要嵌入字符缓冲区。 | OSInfo |
类中按值 (char*)。 | 在类(类是 In/Out 参数)中传递字符串。 非托管函数需要指向字符缓冲区的指针。 | OpenFileDlg |
类中按值 (char[])。 | 在类(类是 In/Out 参数)中传递字符串。 非托管函数需要嵌入字符缓冲区。 | OSInfo |
作为字符串数组按值。 | 创建按值传递的字符串数组。 | 数组 |
作为包含字符串的结构数组按值。 | 创建包含字符串的结构数组,且该数组是按值传递的。 | 数组 |