IDL 특성
일반적으로 .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 | 애플리케이션별 데이터 형식 대신 전송에 사용할 데이터 형식을 지정합니다. |