encode 특성

[인코딩] ACF 특성은 프로시저 또는 데이터 형식에 serialization 지원이 필요하도록 지정합니다.

[ 
    encode 
    [ , interface-attribute-list] 
] 
interface interface-name
{
    interface-definition
}

[ encode [ , op-attribute-list] ] proc-name

typedef [encode [ , type-attribute-list] ] type-name

매개 변수

interface-attribute-list

인터페이스 전체에 적용되는 다른 특성을 지정합니다.

interface-name

인터페이스의 이름을 지정합니다.

interface-definition

인터페이스의 정의를 형성하는 IDL 문을 지정합니다.

op-attribute-list

프로시저에 적용되는 다른 작업 특성(예: [디코딩])을 지정합니다.

proc-name

프로시저의 이름을 지정합니다.

type-attribute-list

형식에 적용되는 다른 특성(예: [디코딩][할당])을 지정합니다.

type-name

IDL 파일에 정의된 형식을 지정합니다.

설명

[인코딩] 특성으로 인해 MIDL 컴파일러는 애플리케이션이 데이터를 버퍼로 직렬화하는 데 사용할 수 있는 코드를 생성합니다. [디코딩] 특성은 버퍼에서 데이터를 구분 해제하기 위한 코드를 생성합니다.

ACF의 [인코딩][디코딩] 특성을 사용하여 인터페이스의 IDL 파일에 정의된 프로시저 또는 형식에 대한 serialization 코드를 생성합니다. 인터페이스 특성으로 사용되는 경우 [인코딩] 은 IDL 파일에 정의된 모든 형식 및 프로시저에 적용됩니다. 작업 특성으로 사용되는 경우 [인코딩] 은 지정된 프로시저에만 적용됩니다. 형식 특성으로 사용되는 경우 [인코딩] 은 지정된 형식에만 적용됩니다.

프로시저에 [인코딩] 또는 [디코딩] 특성이 적용되면 MIDL 컴파일러는 원격 루틴에 대해 원격 스텁이 생성되는 것과 비슷한 방식으로 serialization 스텁을 생성합니다. 프로시저는 원격 또는 직렬화 프로시저일 수 있지만 둘 다 될 수는 없습니다. 생성된 루틴의 프로토타입이 STUB로 전송됩니다. 스텁 자체가 STUB_C.C 파일로 들어가는 동안 H 파일입니다.

MIDL 컴파일러는 [encode] 특성이 적용되는 각 형식에 대해 두 개의 함수를 생성하고 각 형식에 대해 [decode] 특성이 적용되는 함수를 하나 더 생성합니다. 예를 들어 MyType이라는 사용자 정의 형식의 경우 컴파일러는 MyType_Encode, MyType_Decode 및 MyType_AlignSize 함수에 대한 코드를 생성합니다. 이러한 함수의 경우 컴파일러는 STUB에 프로토타입을 씁니다. STUB_C.C.에 대한 H 및 소스 코드입니다.

serialization 핸들 및 데이터 인코딩 또는 디코딩에 대한 자세한 내용은 Serialization Services를 참조하세요.

/* 
    ACF file example; 
    Assumes MyType1, MyType2, MyType3, MyProc1, MyProc2, MyProc3 defined 
    in IDL file  
    MyType1, MyType2, MyProc1, MyProc2 have encode and decode 
    serialization support 
    MyType3 and MyProc3 have encode serialization support only 
*/ 
[ 
    encode, 
    implicit_handle(handle_t bh) 
]    
interface regress 
{ 
    typedef [ decode ] MyType1; 
    typedef [ encode, decode ] MyType2; 
    [ decode ] MyProcc1(); 
    [ encode ] MyProc2(); 
}

참고 항목

ACF(애플리케이션 구성 파일)

할당

decode