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();
}