async_uuid 특성
[async_uuid] 인터페이스 특성은 MIDL 컴파일러에 COM 인터페이스의 동기 및 비동기 버전을 모두 정의하도록 지시합니다.
[
object,
uuid(string-uuid1),
async_uuid(string-uuid2)[ [, interface-attribute-list]
]
interface interface-name : base-interface
{
interface-definition
}
-
string-uuid1
-
인터페이스의 동기 버전을 식별하는 Uuidgen 유틸리티에서 생성된 UUID 문자열입니다.
-
string-uuid2
-
인터페이스의 비동기 버전을 식별하는 Uuidgen 유틸리티에서 생성된 UUID 문자열입니다.
-
interface-attribute-list
-
인터페이스 전체에 적용되는 기타 특성입니다. COM 인터페이스에서는 [version] 특성을 사용할 수 없습니다.
-
interface-name
-
인터페이스의 이름입니다.
-
base-interface
-
이 인터페이스가 파생되는 인터페이스입니다. 기본 인터페이스는 IUnknown 또는 IUnknown에서 직접 또는 간접적으로 파생되는 비동기 인터페이스여야 합니다.
-
interface-definition
-
인터페이스의 정의를 형성하는 IDL 문을 지정합니다.
이 특성을 사용하려면 Windows 2000 이상 버전의 Windows가 필요합니다.
COM 인터페이스(즉, [object] 특성이 있는 인터페이스)에 [async_uuid] 특성을 적용하면 MIDL 컴파일러는 기존의 동기 버전 외에도 인터페이스의 비동기 정의를 생성합니다. 비동기 인터페이스는 동기 인터페이스와 이름이 같지만 "비동기" 접두사를 사용합니다. IID(인터페이스 식별자)는 [async_uuid] 특성에 대한 매개 변수로 지정된 UUID입니다.
비동기 인터페이스의 경우 MIDL은 각 메서드를 별도의 begin 및 finish 메서드로 분할합니다. begin 메서드는 "Begin_" 접두사를 가진 동기 메서드 이름을 가지며 동기 메서드의 모든 [in] 매개 변수를 포함합니다. finish 메서드는 "Finish_" 접두사를 가진 동기 메서드의 이름을 가지며 동기 메서드의 모든 [out] 매개 변수를 포함합니다. 동기 메서드에 [in, out] 매개 변수가 있는 경우 시작 및 마침 비동기 메서드 모두에 포함됩니다.
비동기 인터페이스 메서드에 [call_as] 특성이 있는 경우 MIDL은 begin 및 finish 메서드에 대한 선언을 생성합니다. 두 메서드를 모두 구현해야 합니다.
각 비동기 인터페이스는 동기 인터페이스의 한정자이므로 별도의 상속 그래프가 없습니다. 즉, IUnknown 이외의 비동기 인터페이스에서 동기 인터페이스를 정의할 수 없습니다. 또한 동기 인터페이스는 비동기 인터페이스에서 상속할 수 없습니다. 둘 중 하나를 시도하면 MIDL 컴파일러에서 오류 메시지를 실행합니다.
[
object,
uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
async_uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
pointer_default(unique)
]
interface IMyInterface : IUnknown
{
/* Interface definition goes here*/
}