규칙적 배열
준수 배열의 크기는 클라이언트가 서버의 원격 프로시저에 전달할 때마다 달라지거나 준수할 수 있습니다. 애플리케이션의 MIDL 파일에서 인터페이스 정의를 사용하면 클라이언트가 원격 프로시저를 호출할 때마다 배열의 크기를 지정할 수 있습니다. 배열 정의에서 빈 대괄호([ ]) 또는 대괄호([*])의 별표를 사용하여 준수 배열을 나타냅니다.
다음 샘플에는 MIDL 파일의 인터페이스에 있는 원격 프로시저의 정의가 포함되어 있습니다. 클라이언트는 arraySize 매개 변수로 서버에 전달하는 배열의 크기를 지정합니다.
[
/*Attributes are defined here. */
]
interface MyInterface
{
MyRemoteProc(
long lArraySize,
[size_is(lArraySize)] char achArray[*]
);
/* Other interface procedures are defined here. */
}
인터페이스 정의는 MIDL 특성 [size_is]을 사용하여 클라이언트가 서버에 전달하는 배열의 크기를 지정합니다. 배열의 인덱스 번호의 최대값을 나타내려면 대신 [max_is] 특성을 사용합니다. 이러한 MIDL 특성에 대한 자세한 내용은 배열 특성을 참조하세요.
다음 코드 조각은 클라이언트가 이전 MIDL 파일에 정의된 원격 프로시저를 호출하는 방법을 보여 줍니다.
long lArrayLength = 20;
char achCharArray[20], achAnotherCharArray[200];
// Code to store 20 chars in achCharArray goes here.
MyRemoteProc(
lArrayLength ,
achCharArray);
lArrayLength = 200;
// Code to store 200 chars in achAnotherCharArray goes here.
MyRemoteProc(
lArrayLength ,
achAnotherCharArray);
이 조각은 원격 프로시저 MyRemoteProc을 두 번 호출합니다. 첫 번째 호출에서 20개 요소의 배열을 전달합니다. 두 번째 호출에서 클라이언트는 200개의 요소 배열을 전달합니다.