다양 한 배열

MIDL에서 다양 한 배열의 크기가 고정 됩니다. 클라이언트를 사용 하 여 클라이언트에서 서버로 배열의 다양 한 부분을 전달할 수 있습니다. 배열 부분의 크기는 호출에 따라 달라질 수 있습니다. 그러나 전체 배열의 크기는 고정 되어 있습니다.

예를 들어 다음 예제에서는 MIDL 파일의 인터페이스에 있는 원격 프로시저의 정의를 보여 줍니다. 클라이언트에서 서버에 전달 하는 배열의 크기는 상수 배열 크기로 고정 됩니다 _ . 인터페이스는 클라이언트가 firstElement 및 chunkSize 매개 변수에서 서버로 전달 하는 배열의 부분을 지정 합니다.

[
    /*Attributes are defined here. */
]
interface MyInterface
{
    const long ARRAY_SIZE = 1000;

    MyRemoteProc(
        [in] long lFirstElement,
        [in] long lChunkSize,
        [in, first_is(lFirstElement), 
          length_is(lChunkSize)] char achArray[ARRAY_SIZE]
    );

    /* Other interface procedures are defined here. */
}

인터페이스 정의는 먼저 MIDL 특성을 사용 합니다 [ .이는 클라이언트가 서버에 전달 하는 배열의 첫 번째 요소에 대 한 인덱스 번호를 지정 하는 _ 것입니다 ] . [ Length _ 는 ] 특성은 클라이언트에서 통과 하는 배열 요소의 총 수를 지정 합니다. 이러한 MIDL 특성에 대 한 자세한 내용은 배열 특성을 참조 하세요.

다음 코드 조각에서는 클라이언트가 이전 MIDL 파일에 정의 된 원격 프로시저를 호출할 수 있는 방법을 보여 줍니다.

long lFirstArrayElementNumber = 20;
long lTotalElementsPassed = 100;
char achCharArray[ARRAY_SIZE];

// Code to store chars in the array goes here.

MyRemoteProc(
    lFirstArrayElementNumber ,
    lTotalElementsPassed , 
    achCharArray);

firstArrayElementNumber = 120;
totalElementsPassed = 200;

MyRemoteProc(
    lFirstArrayElementNumber ,
    lTotalElementsPassed , 
    achCharArray);

이 조각은 원격 프로시저 MyRemoteProc를 두 번 호출 합니다. 첫 번째 호출에서는 firstArrayElementNumber 및 totalElementsPassed 변수의 값으로 표시 된 대로 20에서 119까지 번호가 매겨진 배열 요소를 전달 합니다. 두 번째 호출에서 클라이언트는 120에서 번호가 매겨진 배열 요소를 319으로 전달 합니다.