다음을 통해 공유


길이, 크기 및 방향 특성

클라이언트와 서버 간에 배열을 전달할 때 크기 관련 특성 [max_is]과 [size_is]은 서버 스텁이 할당하는 배열 요소 수를 결정합니다. 길이 관련 특성 [length_is], [first_is] 및 [last_is]은 서버와 클라이언트 모두에 전송되는 요소 수를 결정합니다.

다른 방향 특성을 매개 변수에 적용할 수 있습니다. 그러나 방향 특성의 일부 조합으로 인해 오류가 발생할 수 있습니다. 예를 들어 두 개의 매개 변수, 배열 및 배열의 전송된 길이를 사용하여 프로시저를 지정하는 인터페이스를 작성한다고 가정합니다. dir_attr 용어는 매개 변수에 적용된 방향 특성을 다음과 같이 나타냅니다.

Proc1(
    [dir_attr] short *plength;
    [dir_attr, length_is(pLength)] short array[MAX_SIZE]);

방향 특성의 각 조합에 대한 MIDL 컴파일러 동작은 다음 표에 설명되어 있습니다.

Array Length 매개 변수 클라이언트에서 서버로 호출하는 동안의 스텁 작업 서버에서 클라이언트로 반환할 때의 스텁 작업
[in] [in] 매개 변수가 나타내는 요소의 길이와 개수를 전송합니다. 전송된 데이터가 없습니다.
[in] [out] 합법적이지 않음; MIDL 컴파일러 오류입니다. 합법적이지 않음; MIDL 컴파일러 오류입니다.
[in] [in, out] length 매개 변수로 표시된 요소의 길이와 개수를 전송합니다. 길이만 전송합니다.
[out] [in] 길이를 전송합니다.
배열 크기가 고정된 경우 서버에 배열 크기를 할당하지만 요소를 전송하지 않습니다.
배열 크기가 바인딩되지 않은 경우 합법적이지 않습니다. MIDL 컴파일러 오류입니다.
길이로 표시된 요소 수를 전송합니다.
길이를 변경할 수 있으며 클라이언트의 값과 다른 값을 가질 수 있습니다. 길이를 전송하지 마세요.
[out] [out] 서버의 길이 매개 변수에 대한 공간을 할당하지만 매개 변수를 전송하지는 않습니다. 배열 크기가 고정된 경우 서버에 배열 크기를 할당하지만 요소를 전송하지 않습니다.
배열 크기가 수정되지 않은 경우 합법적이지 않습니다. MIDL 컴파일러 오류입니다.
서버 애플리케이션에서 설정한 길이로 표시된 요소의 길이와 개수를 전송합니다.
[out] [in, out] 길이 매개 변수를 전송합니다. 배열 크기가 바인딩된 경우 서버에 배열 크기를 할당하지만 요소를 전송하지 않습니다.
배열 크기가 바인딩되지 않은 경우 합법적이지 않습니다. MIDL 컴파일러 오류입니다.
길이를 전송합니다. 길이로 표시된 배열 요소의 수를 전송합니다.
[in, out] [in] 매개 변수가 나타내는 요소의 길이와 개수를 전송합니다. 길이를 전송하지 마세요. 길이로 표시된 요소 수를 전송합니다.
길이를 변경할 수 있으며 클라이언트의 원래 값과 다른 값을 가질 수 있습니다.
[in, out] [out] 합법적이지 않음; MIDL 컴파일러 오류입니다. 합법적이지 않음; MIDL 컴파일러 오류입니다.
[in, out] [in, out] 매개 변수가 나타내는 요소의 길이와 개수를 전송합니다. 매개 변수가 나타내는 요소의 길이와 개수를 전송합니다.

일반적으로 서버 쪽에서 길이 또는 크기 매개 변수를 수정해서는 안 됩니다. 길이 매개 변수를 변경하면 메모리를 분리할 수 있습니다. 자세한 내용은 메모리 분리를 참조하세요.