封送字符串

平台调用会复制字符串参数,并根据需要将其从 .NET Framework 格式(Unicode)转换为非托管格式(ANSI)。 由于托管字符串是不可变的,因此当函数返回时,平台调用不会将它们从非托管内存复制回托管内存。

下表列出了字符串的封送选项、描述其用法,并提供指向相应 .NET Framework 示例的链接。

字符串 DESCRIPTION 示例
按值。 将字符串作为 In 参数传递。 MsgBox
作为结果。 从非托管代码返回字符串。 字符串
按引用。 使用 StringBuilder.. 将字符串作为 In/Out 参数传递。 缓冲区
结构中按值。 在作为 In 参数的结构中传递字符串。 结构
结构中按引用 (char*) 在作为 In/Out 参数的结构中传递字符串。 非托管函数需要一个指向字符缓冲区的指针,而缓冲区大小是结构体中的一个成员。 字符串
结构中按引用 (char[]) 在作为 In/Out 参数的结构中传递字符串。 非托管函数需要嵌入字符缓冲区。 OSInfo
类中按值 (char*) 传递类中的字符串(类是 In/Out 参数)。 非托管函数需要指向字符缓冲区的指针。 OpenFileDlg
类中按值 (char[]) 传递类中的字符串(类是 In/Out 参数)。 非托管函数需要嵌入字符缓冲区。 OSInfo
作为字符串数组按值。 创建按值传递的字符串数组。 数组
作为包含字符串的结构数组按值。 创建一个结构数组,其中包含字符串,并且数组通过值传递。 数组

另请参阅