일반적으로 .idl 파일을 유지 관리하면 다음을 수행해야 했습니다.
.idl 파일의 구조 및 구문을 숙지하여 수정할 수 있습니다.
마법사를 사용하여 .idl 파일의 일부 측면을 수정할 수 있습니다.
이제 Visual C++ IDL 특성을 사용하여 소스 코드 파일 내에서 .idl 파일을 수정할 수 있습니다. 대부분의 경우 Visual C++ IDL 특성은 MIDL 특성과 동일한 이름을 갖습니다. Visual C++ IDL 특성과 MIDL 특성의 이름이 같으면 소스 코드 파일에 Visual C++ 특성을 배치하면 이름 지정 MIDL 특성이 포함된 .idl 파일이 생성됩니다. 그러나 Visual C++ IDL 특성은 MIDL 특성의 모든 기능을 제공하지 않을 수 있습니다.
COM 특성과 함께 사용되지 않는 경우 IDL 특성을 사용하여 인터페이스를 정의할 수 있습니다. 소스 코드가 컴파일되면 특성이 생성된 .idl 파일을 정의하는 데 사용됩니다. ATL 프로젝트에서 COM 특성과 함께 사용할 경우 일부 IDL 특성(예: coclass)은 코드가 프로젝트에 삽입되도록 합니다.
idl_quote 현재 버전의 Visual C++에서 지원되지 않는 MIDL 구문을 사용할 수 있습니다. 이 특성 및 importlib 및 includelib와 같은 다른 특성은 현재 Visual Studio C++ 프로젝트에서 기존 .idl 파일을 사용하는 데 도움이 됩니다.
| attribute | 설명 |
|---|---|
| aggregatable | 컨트롤을 다른 컨트롤로 집계할 수 있음을 나타냅니다. |
| appobject | 전체 EXE 애플리케이션과 연결된 애플리케이션 개체로 coclass를 식별하고, coclass의 함수 및 속성을 이 형식 라이브러리에서 전역적으로 사용할 수 있음을 나타냅니다. |
| async_uuid | MIDL 컴파일러가 COM 인터페이스의 동기 버전과 비동기 버전을 모두 정의하도록 지시하는 UUID를 지정합니다. |
| bindable | 속성이 데이터 바인딩을 지원합니다. |
| call_as | 원격 함수에 매핑할 수 없는 함수를 사용하도록 설정합니다. |
| case | 공용 구조체의 switch_type 특성과 함께 사용됩니다. |
| coclass | 클래스 정의를 .idl 파일에 coclass로 배치합니다. |
| control | 사용자 정의 형식이 컨트롤임을 지정합니다. |
| cpp_quote | 따옴표 문자 없이 지정된 문자열을 생성된 헤더 파일로 내보냅니다. |
| defaultbind | 개체를 가장 잘 나타내는 바인딩 가능한 단일 속성을 나타냅니다. |
| defaultcollelem | Visual Basic 코드 최적화에 사용됩니다. |
| defaultvalue | 형식화된 선택적 매개 변수에 대한 기본값의 사양을 허용합니다. |
| default | coclass 내에 정의된 custom 또는 dispinterface가 기본 프로그래밍 인터페이스를 나타낸다는 것을 의미합니다. |
| defaultvtable | 인터페이스를 컨트롤의 기본 vtable 인터페이스로 정의합니다. |
| dispinterface | .Idl 파일의 인터페이스를 디스패치 인터페이스로 배치합니다. |
| displaybind | 사용자에게 바인딩 가능으로 표시되어야 하는 속성을 나타냅니다. |
| dual | .idl 파일에 인터페이스를 이중 인터페이스로 배치합니다. |
| entry | DLL의 진입점을 식별하여 모듈에서 내보낸 함수 또는 상수를 지정합니다. |
| first_is | 전송할 첫 번째 배열 요소의 인덱스를 지정합니다. |
| helpcontext | 사용자가 도움말 파일에서 이 요소에 대한 정보를 볼 수 있도록 하는 컨텍스트 ID를 지정합니다. |
| helpfile | 형식 라이브러리에 대한 도움말 파일의 이름을 설정합니다. |
| helpstringcontext | .hlp 또는 .chm 파일에서 도움말 항목의 ID를 지정합니다. |
| helpstringdll | 문서 문자열 조회(지역화)를 수행하는 데 사용할 DLL의 이름을 지정합니다. |
| helpstring | 적용되는 요소를 설명하는 데 사용되는 문자열을 지정합니다. |
| hidden | 항목이 존재하지만 사용자 지향 브라우저에 표시해서는 안 됨을 나타냅니다. |
| idl_module | DLL의 진입점을 지정합니다. |
| idl_quote | 현재 버전의 Visual C++에서 지원되지 않는 특성 또는 IDL 구문을 사용할 수 있습니다. |
| id | 멤버 함수(인터페이스 또는 dispinterface의 속성 또는 메서드)에 대한 DISPID를 지정합니다. |
| iid_is | 인터페이스 포인터가 가리키는 COM 인터페이스의 IID를 지정합니다. |
| immediatebind | 데이터 바인딩된 개체의 속성에 대한 모든 변경 내용을 데이터베이스에 즉시 알립니다. |
| importlib | 다른 형식 라이브러리에 이미 컴파일된 형식을 만들고 있는 형식 라이브러리에서 사용할 수 있도록 합니다. |
| import | 기본 .idl 파일에서 참조하려는 정의가 포함된 다른 .idl, .odl 또는 헤더 파일을 지정합니다. |
| include | 생성된 .idl 파일에 포함할 하나 이상의 헤더 파일을 지정합니다. |
| includelib | .idl 또는 .h 파일이 생성된 .idl 파일에 포함되도록 합니다. |
| in | 호출 프로시저에서 호출된 프로시저로 매개 변수를 전달할 것임을 나타냅니다. |
| last_is | 전송할 마지막 배열 요소의 인덱스를 지정합니다. |
| lcid | 로캘 식별자를 함수에 전달할 수 있습니다. |
| length_is | 전송할 배열 요소의 수를 지정합니다. |
| licensed | 적용되는 coclass에 라이선스가 부여되고 IClassFactory2. |
| local | 인터페이스 헤더에서 사용될 때 MIDL 컴파일러를 헤더 생성기로 사용할 수 있습니다. 개별 함수에서 사용되는 경우 스텁이 생성되지 않는 로컬 프로시저를 지정합니다. |
| max_is | 유효한 배열 인덱스의 최대값을 지정합니다. |
| module | .Idl 파일의 라이브러리 블록을 정의합니다. |
| ms_union | 캡슐화되지 않은 공용 구조체의 네트워크 데이터 표현 맞춤을 제어합니다. |
| no_injected_text | 특성 사용의 결과로 컴파일러가 코드를 삽입하지 못하도록 합니다. |
| nonbrowsable | 인터페이스 멤버를 속성 브라우저에 표시해서는 안 됨을 나타냅니다. |
| noncreatable | 자체적으로 인스턴스화할 수 없는 개체를 정의합니다. |
| nonextensible | 구현에 IDispatch 인터페이스 설명에 나열된 속성 및 메서드만 포함하며 런타임에 추가 멤버로 확장할 수 없게 지정합니다. |
| object | 사용자 지정 인터페이스를 식별합니다. 사용자 지정 특성과 동의어입니다. |
| odl | 인터페이스를 ODL(개체 설명 언어) 인터페이스로 식별합니다. |
| oleautomation | 인터페이스가 Automation과 호환된다는 것을 나타냅니다. |
| optional | 멤버 함수에 대한 선택적 매개 변수를 지정합니다. |
| out | 호출된 프로시저에서 호출하는 프로시저로 반환된(서버에서 클라이언트로 반환된) 포인터 매개 변수를 식별합니다. |
| pointer_default | 매개 변수 목록에 표시되는 최상위 포인터를 제외한 모든 포인터에 대한 기본 포인터 특성을 지정합니다. |
| pragma | 따옴표 문자 없이 지정된 문자열을 생성된 .idl 파일로 내보냅니다. |
| progid | COM 개체의 ProgID를 지정합니다. |
| propget | 속성 접근자(get) 함수를 지정합니다. |
| propputref | 값 대신 참조를 사용하는 속성 설정 함수를 지정합니다. |
| propput | 속성 설정 함수를 지정합니다. |
| ptr | 포인터를 전체 포인터로 지정합니다. |
| public | .idl 파일 내에서 참조되지 않은 경우에도 typedef가 형식 라이브러리로 이동하도록 합니다. |
| range | 런타임에 값이 설정된 인수 또는 필드에 허용되는 값의 범위를 지정합니다. |
| readonly | 변수에 대한 할당을 금지합니다. |
| ref | 참조 포인터를 식별합니다. |
| requestedit | 속성이 OnRequestEdit 알림을 지원함을 나타냅니다. |
| restricted | 라이브러리 또는 모듈, 인터페이스 또는 dispinterface의 멤버를 임의로 호출할 수 없게 지정합니다. |
| retval | 멤버의 반환 값을 받는 매개 변수를 지정합니다. |
| size_is | 크기가 큰 포인터, 크기가 큰 포인터에 대한 크기 포인터 및 단일 또는 다차원 배열에 할당된 메모리 크기를 지정합니다. |
| source | 클래스, 속성 또는 메서드의 멤버가 이벤트의 원본임을 나타냅니다. |
| string | 1차원 char, wchar_t또는 byte이와 동등한 배열 또는 이러한 배열에 대한 포인터를 문자열로 처리해야 임을 나타냅니다. |
| switch_is | 공용 구조체 멤버를 선택하는 공용 구조체 비범죄자 역할을 하는 식 또는 식별자를 지정합니다. |
| switch_type | 공용 구조체로 사용되는 변수의 형식을 식별합니다. |
| transmit_as | 클라이언트 및 서버 애플리케이션이 조작하는 제공된 형식을 전송된 형식과 연결하도록 컴파일러에 지시합니다. |
| uidefault | 형식 정보 멤버가 사용자 인터페이스에 표시할 기본 멤버임을 나타냅니다. |
| unique | 고유한 포인터를 지정합니다. |
| usesgetlasterror | 호출자에게 해당 함수를 호출할 때 오류가 발생하면 호출자가 호출 GetLastError 하여 오류 코드를 검색할 수 있음을 알릴 수 있습니다. |
| uuid | 클래스 또는 인터페이스의 고유 ID를 지정합니다. |
| v1_enum | 지정된 열거형 형식이 16비트 기본값이 아닌 32비트 엔터티로 전송되도록 지시합니다. |
| vararg | 함수가 가변 개수의 인수를 취하게 지정합니다. |
| vi_progid | ProgID의 버전 독립적 형식을 지정합니다. |
| wire_marshal | 애플리케이션별 데이터 형식 대신 전송에 사용할 데이터 형식을 지정합니다. |