CoGetInstanceFromIStorage 함수(objbase.h)

새 개체를 만들고 IPersistFile::Load에 대한 내부 호출을 통해 스토리지 개체에서 초기화합니다.

구문

HRESULT CoGetInstanceFromIStorage(
  [in, optional] COSERVERINFO *pServerInfo,
  [in, optional] CLSID        *pClsid,
  [in, optional] IUnknown     *punkOuter,
  [in]           DWORD        dwClsCtx,
  [in]           IStorage     *pstg,
  [in]           DWORD        dwCount,
  [in, out]      MULTI_QI     *pResults
);

매개 변수

[in, optional] pServerInfo

개체를 인스턴스화할 컴퓨터와 사용할 인증 설정을 지정하는 COSERVERINFO 구조체에 대한 포인터입니다. 이 매개 변수는 NULL일 수 있습니다. 이 경우 개체는 현재 컴퓨터, 클래스의 RemoteServerName 레지스트리 값 아래에 지정된 컴퓨터 또는 클래스에 대해 ActivateAtStorage 값이 지정되었거나 로컬 레지스트리 정보가 없는 경우 pstg 스토리지 개체가 있는 컴퓨터에서 인스턴스화됩니다.

[in, optional] pClsid

만들 개체의 클래스 식별자에 대한 포인터입니다. 이 매개 변수는 NULL일 수 있으며, 이 경우 IStorage::Stat 를 호출하여 개체의 클래스를 찾습니다.

[in, optional] punkOuter

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

[in] dwClsCtx

CLSCTX 열거형의 값입니다.

[in] pstg

IPersistFile::Load를 사용하여 개체를 초기화하는 데 사용되는 스토리지 개체에 대한 포인터입니다. 이 매개 변수는 NULL일 수 없습니다.

[in] dwCount

pResults의 구조체 수입니다. 이 매개 변수는 0보다 커야 합니다.

[in, out] pResults

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

반환 값

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

반환 코드 Description
S_OK
함수는 모든 인터페이스를 성공적으로 검색했습니다.
CO_S_NOTALLINTERFACES
하나 이상이지만 pResults 배열에서 요청된 모든 인터페이스가 성공적으로 검색되지는 않았습니다. 각 MULTI_QI 구조체의 hr 멤버는 특정 인터페이스가 반환되었는지 여부를 S_OK 또는 E_NOINTERFACE 나타냅니다.
E_NOINTERFACE
pResults 배열에서 요청된 인터페이스가 검색되지 않았습니다.

설명

CoGetInstanceFromIStorage 는 새 개체를 만들고 IPersistFile::Load를 사용하여 스토리지 개체에서 초기화합니다. 이 함수의 결과는 CoCreateInstanceEx를 호출한 후 IPersistFile::Load에 대한 초기화 호출을 사용하여 다음과 같은 중요한 차이점을 가진 instance 만드는 것과 비슷합니다.

  • 이 함수는 원격 컴퓨터에서 개체를 인스턴스화할 때 필요한 네트워크 왕복 수가 줄어듭니다.
  • dwClsCtx가 CLSCTX_REMOTE_SERVER 설정되고 pServerInfoNULL인 경우 클래스가 ActivateAtStorage 값에 등록되었거나 연결된 레지스트리 정보가 없는 경우 이 함수는 pstg가 있는 컴퓨터에서 개체를 인스턴스화하여 가능한 최소 네트워크 트래픽을 제공합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 objbase.h
라이브러리 Ole32.lib
DLL Ole32.dll

추가 정보

CLSCTX

CoCreateInstanceEx

CoGetInstanceFromFile