문자열 마샬링
플랫폼 호출에서는 필요하면 문자열 매개 변수를 .NET Framework 형식인 유니코드에서 관리되지 않는 형식인 ANSI로 변환하여 복사합니다. 관리되는 문자열은 변경할 수 없으므로 플랫폼 호출에서는 함수 반환 시 관리되지 않는 메모리에서 관리되는 메모리로 문자열을 다시 복사하지 않습니다.
다음 표에서는 문자열의 마샬링 옵션을 보여 주고 각 옵션의 용도에 대해 설명한 다음 해당되는 .NET Framework 샘플의 링크를 제공합니다.
String |
설명 |
샘플 |
---|---|---|
값으로 |
문자열을 In 매개 변수를 통해 전달합니다. |
|
결과로 |
비관리 코드에서 문자열을 반환합니다. |
|
참조로 |
StringBuilder를 사용하여 문자열을 In/Out 매개 변수를 통해 전달합니다. |
|
구조체에서 값으로 |
In 매개 변수인 구조체에서 문자열을 전달합니다. |
|
구조체에서 참조로(char*) |
In/Out 매개 변수인 구조체에서 문자열을 전달합니다. 관리되지 않는 함수에서는 문자 버퍼에 대한 포인터를 필요로 하며 버퍼 크기는 구조체의 멤버입니다. |
|
구조체에서 참조로(char[]) |
In/Out 매개 변수인 구조체에서 문자열을 전달합니다. 관리되지 않는 함수에서는 포함된 문자 버퍼를 필요로 합니다. |
|
클래스에서 값으로(char*) |
클래스에서 문자열을 전달합니다. 클래스는 In/Out 매개 변수입니다. 관리되지 않는 함수에서는 문자 버퍼에 대한 포인터를 필요로 합니다. |
|
클래스에서 값으로(char[]) |
클래스에서 문자열을 전달합니다. 클래스는 In/Out 매개 변수입니다. 관리되지 않는 함수에서는 포함된 문자 버퍼를 필요로 합니다. |
|
문자열 배열로서 값으로 |
값으로 전달되는 문자열 배열을 만듭니다. |
|
문자열이 포함된 구조체 배열로서 값으로 |
문자열을 포함하는 구조체 배열을 만들며 이 배열이 값으로 전달됩니다. |