CoCreateInstanceFromApp 함수(combaseapi.h)

앱 컨테이너 내에서 특정 컴퓨터에 특정 클래스의 instance 만듭니다.

구문

HRESULT CoCreateInstanceFromApp(
  [in]           REFCLSID Clsid,
  [in, optional] IUnknown *punkOuter,
  [in]           DWORD    dwClsCtx,
  [in, optional] PVOID    reserved,
  [in]           DWORD    dwCount,
  [in, out]      MULTI_QI *pResults
);

매개 변수

[in] Clsid

만들 개체의 CLSID입니다.

[in, optional] punkOuter

이 매개 변수가 NULL이 아닌 경우 는 instance 집계의 일부로 생성되고 있음을 나타내고, punkOuter는 새 instance 제어하는 IUnknown으로 사용됩니다. 집계는 현재 크로스 프로세스 또는 컴퓨터 간 지원되지 않습니다. 프로세스에서 개체를 인스턴스화할 때 punkOuterNULL이 아닌 경우 CLASS_E_NOAGGREGATION 반환됩니다.

[in] dwClsCtx

CLSCTX 열거형의 값입니다.

[in, optional] reserved

다음에 사용하도록 예약됩니다.

[in] dwCount

pResults의 구조체 수입니다. 이 값은 0보다 커야 합니다.

[in, out] pResults

MULTI_QI 구조체의 배열입니다. 각 구조체에는 요청된 인터페이스(pIID)의 식별자, 인터페이스 포인터(pItf)를 반환할 위치 및 QueryInterface 호출의 반환 값(hr)의 세 멤버가 있습니다.

반환 값

이 함수는 E_INVALIDARG 표준 반환 값과 다음 값을 반환할 수 있습니다.

반환 코드 Description
S_OK
성공을 나타냅니다.
REGDB_E_CLASSNOTREG
지정된 클래스가 등록 데이터베이스에 등록되지 않았거나 앱 컨테이너에서 클래스가 지원되지 않습니다. CLSCTX 열거형에서 요청한 서버 유형이 등록되지 않았거나 레지스트리의 서버 형식 값이 손상되었음을 나타낼 수도 있습니다.
CLASS_E_NOAGGREGATION
이 클래스는 집계의 일부로 만들 수 없습니다.
CO_S_NOTALLINTERFACES
하나 이상이지만 pResults 배열에서 요청된 모든 인터페이스가 성공적으로 검색되지는 않았습니다. pResults의 각 MULTI_QI 구조체의 hr 멤버는 특정 인터페이스가 반환되었는지 여부를 S_OK 또는 E_NOINTERFACE 나타냅니다.
E_NOINTERFACE
pResults 배열에서 요청된 인터페이스가 검색되지 않았습니다.

설명

CoCreateInstanceFromApp 함수는 CoCreateInstanceEx 함수와 동일하며 다음과 같은 차이점이 있습니다.

  • CoCreateInstanceFromApp 함수는 애플리케이션 컨텍스트 및 HKLM\SOFTWARE\Classes\CLSID 레지스트리 하이브에서만 클래스 등록을 읽습니다.
  • 앱 컨테이너에서 지원되는 기본 제공 클래스만 제공됩니다. 타사 코드에 의해 설치된 모든 클래스와 많은 Windows 클래스를 포함하여 지원되지 않는 클래스를 활성화하려고 하면 오류 코드 REGDB_E_CLASSNOTREG 발생합니다.
  • CoCreateInstanceFromApp 함수는 Windows 스토어 앱에서 사용할 수 있습니다. 데스크톱 애플리케이션은 이 함수를 호출할 수 있지만 Windows 스토어 앱과 동일한 제한 사항이 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 combaseapi.h
라이브러리 Combase.lib
DLL Combase.dll

추가 정보

CoCreateInstanceEx

Fusion(관리되지 않는 API 참조)