이 주제은
값으로 문자열을 리턴하는 C 함수에 사용되는 인터페이스를 설명합니다.
C API에서 특정 함수는 문자열을 매개변수로 리턴합니다.
각 함수는 문자열 검색에 동일한 인터페이스를 사용합니다.
다음은 해당 함수 중 하나인
PropertyContext 클래스의
xmsGetStringProperty()에 대한
예입니다.
xmsRC xmsGetStringProperty(xmsHObj object,
xmsCHAR *propertyName,
xmsCHAR *propertyValue,
xmsINT length,
xmsINT *actualLength,
xmsHErrorBlock errorBlock);
다음과 같은 세 개의 매개변수가 문자열의 검색을 제어합니다.
- propertyValue
- 이 매개변수는 XMS
문자열로 문자를 복사해 넣는 응용프로그램에서 제공하는 버퍼의 포인터입니다.
데이터 변환이 필수인 경우 XMS
문자를 버퍼로 복사하기 전에 응용프로그램에서 사용하는 문자를 코드 페이지로 변환합니다.
- length
- 이 매개변수는 버퍼 길이(바이트)입니다. 이 매개변수는 호출 전에 응용프로그램에서 설정해야 하는
입력 매개변수입니다. XMSC_QUERY_SIZE를 지정한 경우
문자열은 리턴되지 않고 actualLength 매개변수로 길이가 리턴됩니다.
- actualLength
- 이 출력 매개변수는 XMS 버퍼로
복사해 넣는 문자열의 길이입니다. 데이터 변환이 필수인 경우 이 매개변수는 변환 후 길이입니다.
길이는 바이트 단위로 측정됩니다. XMS
항상 널 종료 문자열을 리턴하며 응용프로그램에 보고되는 길이에는 종료하는 널 문자가 포함됩니다.
입력에서 이 매개변수의 널 포인터를 지정한 경우 문자열의 길이는 리턴되지 않습니다.
버퍼가 종료하는 널 문자를 포함하여 전체 문자열을 저장할 정도로 크지 않을 경우
XMS 버퍼의 길이로 잘려진
문자열을 리턴하고, actualLength 매개변수를 전체 문자열의 길이로 설정하며, 오류 코드
XMS_E_DATA_TRUNCATED를 리턴합니다.
XMS 응용프로그램이
JMS 응용프로그램에서 전송한 메시지를 수신할 경우 헤더 필드의 문자열, 등록 정보 및
메시지의 본문에 임베디드 널 문자가 포함될 수 있습니다.
표준 C 문자열 조작 함수는 문자열의 첫 번째 널 문자가 문자열의 끝을 표시한다고
가정하므로 해당 함수를 사용하여 임베디드 널을 포함하는 문자열을 처리할
수 없습니다.