이 주제은 참조로 문자열 또는 바이트 배열을 리턴하는 C 함수에 사용되는 인터페이스를 설명합니다.
C 응용프로그램이 값으로 문자열을 리턴하는 C 함수 또는 값으로 바이트 배열을 리턴하는 C 함수에 설명된 함수 중 하나를 호출할 경우 XMS 응용프로그램에서 제공하는 버퍼로 문자열 또는 바이트 배열을 복사해 넣어야 합니다. 응용프로그램이 대용량의 메시지를 처리 중이며 메시지의 문자열 또는 바이트 배열이 너무 큰 경우 해당 문자열 또는 바이트 배열을 복사하는 데 걸리는 시간이 성능에 영향을 줄 수 있습니다.
이런 경우, 성능을 향상시키기 위해 C API에서 다른 함수 세트를 제공합니다. 응용프로그램이 해당 함수 중 하나를 호출할 때 한 매개변수가 XMS에서 소유하는 메모리에 저장된 바이트 배열 또는 문자열의 포인터를 리턴하고 다른 매개변수가 문자열 또는 바이트 배열의 길이를 리턴합니다. 이러한 함수의 예는 xmsBytesMsgReadBytesByRef() 및 xmsGetStringPropertyByRef()입니다.
문자열에 데이터 변환이 필수인 경우 XMS 문자를 응용프로그램의 코드 페이지로 변환한 후 변환된 문자열의 포인터를 리턴합니다. 응용프로그램으로 리턴된 길이는 변환된 문자열의 길입니다.
데이터 변환이 필수인 경우 처음으로 응용프로그램이 참조로 문자열을 검색하는 시간은 값으로 문자열을 검색하는 시간만큼 걸릴 수 있습니다. 그러나 XMS 변환된 문자열을 캐시화한 후에는 동일한 문자열을 검색하는 후속 호출은 그다지 오래 걸리지 않습니다.
해당 함수가 XMS에서 소유하는 메모리 포인터를 리턴하므로 응용프로그램에서 이 메모리의 내용을 수정하거나 해제하려는 시도를 할 수 없습니다. 그러한 시도를 하면 예상치 못한 결과가 발생할 수 있습니다.
응용프로그램으로 리턴한 포인터는 문자열 또는 바이트 배열과 연관된 XMS 오브젝트를 삭제할 때까지 유효한 상태로 남아 있습니다. 오브젝트를 삭제한 후에도 데이터가 필요할 경우 이 응용프로그램은 문자열 또는 바이트 배열을 복사해야 합니다.