IDispatch::Invoke 메서드(oaidl.h)
개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다. Dispatch 함수 DispInvoke는 Invoke의 표준 구현을 제공합니다.
구문
HRESULT Invoke(
[in] DISPID dispIdMember,
[in] REFIID riid,
[in] LCID lcid,
[in] WORD wFlags,
[in, out] DISPPARAMS *pDispParams,
[out] VARIANT *pVarResult,
[out] EXCEPINFO *pExcepInfo,
[out] UINT *puArgErr
);
매개 변수
[in] dispIdMember
멤버를 식별합니다. GetIDsOfNames 또는 개체의 설명서를 사용하여 디스패치 식별자를 가져옵니다.
[in] riid
다음에 사용하도록 예약됩니다. IID_NULL이어야 합니다.
[in] lcid
인수를 해석할 로캘 컨텍스트입니다. lcid는 GetIDsOfNames 함수에서 사용되며 개체가 로캘과 관련된 인수를 해석할 수 있도록 Invoke에도 전달됩니다.
여러 국가 언어를 지원하지 않는 애플리케이션은 이 매개 변수를 무시할 수 있습니다. 자세한 내용은 여러 국가 언어 지원 및 ActiveX 개체 노출을 참조하세요.
[in] wFlags
Invoke 호출의 컨텍스트를 설명하는 플래그입니다.
[in, out] pDispParams
인수 배열, 명명된 인수에 대한 인수 DISPID 배열 및 배열의 요소 수에 대한 개수를 포함하는 DISPPARAMS 구조체에 대한 포인터입니다.
[out] pVarResult
결과를 저장할 위치에 대한 포인터이거나 호출자에게 결과가 필요하지 않은 경우 NULL입니다. DISPATCH_PROPERTYPUT 또는 DISPATCH_PROPERTYPUTREF 지정하면 이 인수는 무시됩니다.
[out] pExcepInfo
예외 정보가 포함된 구조체에 대한 포인터입니다. DISP_E_EXCEPTION 반환되는 경우 이 구조체를 채워야 합니다. NULL일 수 있습니다.
[out] puArgErr
오류가 있는 첫 번째 인수의 rgvarg 내 인덱스입니다. 인수는 역순으로 pDispParams-rgvarg>에 저장되므로 첫 번째 인수는 배열에서 인덱스가 가장 높은 인수입니다. 이 매개 변수는 결과 반환 값이 DISP_E_TYPEMISMATCH 또는 DISP_E_PARAMNOTFOUND 경우에만 반환됩니다. 이 인수는 null로 설정할 수 있습니다. 자세한 내용은 오류 반환을 참조하세요.
반환 값
이 메서드는 이러한 값 중 하나를 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
성공. |
|
DISPPARAMS에 제공된 요소 수는 메서드 또는 속성에서 허용하는 인수 수와 다릅니다. |
|
DISPPARAMS의 인수 중 하나는 유효한 변형 형식이 아닙니다. |
|
애플리케이션에서 예외를 발생시켜야 합니다. 이 경우 pexcepinfo 에 전달된 구조체를 채워야 합니다. |
|
요청된 멤버가 없습니다. |
|
이 IDispatch 구현은 명명된 인수를 지원하지 않습니다. |
|
DISPPARAMS의 인수 중 하나를 지정된 형식으로 강제 변환할 수 없습니다. |
|
매개 변수 ID 중 하나가 메서드의 매개 변수에 해당하지 않습니다. 이 경우 puArgErr 는 오류를 포함하는 첫 번째 인수로 설정됩니다. |
|
하나 이상의 인수를 강제 변환할 수 없습니다. rgvarg 내에서 잘못된 형식을 가진 첫 번째 매개 변수의 인덱스가 puArgErr에 반환됩니다. |
|
riid에 전달된 인터페이스 식별자가 IID_NULL 않습니다. |
|
호출되는 멤버는 LCID에 따라 문자열 인수를 해석하며 LCID는 인식되지 않습니다. 인수를 해석하는 데 LCID가 필요하지 않은 경우 이 오류가 반환되지 않아야 합니다. |
|
필수 매개 변수를 생략했습니다. |
설명
일반적으로 Invoke 를 직접 구현해서는 안 됩니다. 대신 디스패치 인터페이스를 사용하여 CreateStdDispatch 및 DispInvoke 함수를 만듭니다. 자세한 내용은 CreateStdDispatch, DispInvoke, IDispatch 인터페이스 만들기 및 ActiveX 개체 노출을 참조하세요.
멤버를 호출하기 전에 일부 애플리케이션 관련 처리를 수행해야 하는 경우 코드는 필요한 작업을 수행한 다음 ITypeInfo::Invoke 를 호출하여 멤버를 호출해야 합니다. ITypeInfo::Invoke는 Invoke 와 똑같이 작동 합니다. CreateStdDispatch 및 DispInvoke에서 만든 Invoke의 표준 구현은 ITypeInfo::Invoke로 연기됩니다.
ActiveX 클라이언트에서 Invoke 를 사용하여 속성 값을 가져와서 설정하거나 ActiveX 개체의 메서드를 호출해야 합니다. dispIdMember 인수는 호출할 멤버를 식별합니다. 멤버를 식별하는 DISPID는 개체의 구현자에 의해 정의되며 개체의 설명서, IDispatch::GetIDsOfNames 함수 또는 ITypeInfo 인터페이스를 사용하여 확인할 수 있습니다.
DISPATCH_PROPERTYPUT 또는 DISPATCH_PROPERTYPUTREF IDispatch::Invoke() 를 사용하는 경우 다음을 사용하여 DISPPARAMS 구조체의 cNamedArgs 및 rgdispidNamedArgs 요소를 특별히 초기화해야 합니다.
DISPID dispidNamed = DISPID_PROPERTYPUT;
dispparams.cNamedArgs = 1;
dispparams.rgdispidNamedArgs = &dispidNamed;
다음 정보는 ActiveX 클라이언트 개발자와 코드를 사용하여 ActiveX 개체를 노출하는 다른 사용자를 다룹니다. 노출된 개체의 사용자가 예상해야 하는 동작을 설명합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | oaidl.h |