Share via


마샬링 형식 정의

업데이트: 2007년 11월

마샬러를 빌드하려면 먼저 마샬링하는 관리되는 인터페이스와 관리되지 않는 인터페이스를 정의해야 합니다. 이 인터페이스는 일반적으로 동일한 기능을 수행하지만 관리되는 개체와 관리되지 않는 개체에 대해 다르게 노출됩니다.

관리되는 컴파일러는 메타데이터로부터 관리되는 인터페이스를 생성하고 결과 인터페이스는 다른 관리되는 인터페이스와 같습니다. 다음 코드 예제에서는 일반적인 인터페이스를 보여 줍니다.

#using <mscorlib.dll>
interface INew {
    void NewMethod();
}

IDL(인터페이스 정의 언어)을 사용하여 관리되지 않는 형식을 정의하고 MIDL 컴파일러를 사용하여 이 형식을 컴파일합니다. 라이브러리 문 내에서 인터페이스를 정의하고 UUID(Universal Unique Identifier) 특성을 사용하여 인터페이스 ID를 할당합니다.

Old.idl

[uuid(9B2BAADA-0705-11D3-A0CD-00C04FA35826)]
library OldLib {
     [uuid(9B2BAADD-0705-11D3-A0CD-00C04FA35826)]
     interface IOld : IUnknown
         HRESULT OldMethod();
}

MIDL 컴파일러는 여러 가지 출력 파일을 생성합니다. 인터페이스가 Old.idl에 정의된 경우 출력 파일 Old_i.c는 인터페이스의 IID(인터페이스 식별자)를 사용하여 const 변수를 정의합니다.

Old_i.c

const IID IID_IOld = {0x9B2BAADD,0x0705,0x11D3,{0xA0,0xCD,0x00,0xC0,0x4F,0xA3,0x58,0x26}};

또한 MIDL은 Old.h 파일도 생성합니다. 이 파일은 C++ 소스 코드에 #include로 포함될 수 있는 인터페이스의 C++ 정의를 포함합니다.

참고 항목

개념

ICustomMarshaler 인터페이스 구현

대체 마샬러 사용

기타 리소스

사용자 지정 마샬링