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에 대한 포인터로 사용됩니다. 집계는 프로세스 간 또는 컴퓨터 간에서 지원되지 않습니다. 프로세스에서 개체를 인스턴스화할 때 punkOuter 가 NULL이 아닌 경우 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 |
---|---|
|
함수는 모든 인터페이스를 성공적으로 검색했습니다. |
|
하나 이상이지만 pResults 배열에서 요청된 모든 인터페이스가 성공적으로 검색되지는 않았습니다. 각 MULTI_QI 구조체의 hr 멤버는 특정 인터페이스가 반환되었는지 여부를 S_OK 또는 E_NOINTERFACE 나타냅니다. |
|
pResults 배열에서 요청된 인터페이스가 검색되지 않았습니다. |
설명
CoGetInstanceFromIStorage 는 새 개체를 만들고 IPersistFile::Load를 사용하여 스토리지 개체에서 초기화합니다. 이 함수의 결과는 CoCreateInstanceEx를 호출한 후 IPersistFile::Load에 대한 초기화 호출을 사용하여 다음과 같은 중요한 차이점을 가진 instance 만드는 것과 비슷합니다.
- 이 함수는 원격 컴퓨터에서 개체를 인스턴스화할 때 필요한 네트워크 왕복 수가 줄어듭니다.
- dwClsCtx가 CLSCTX_REMOTE_SERVER 설정되고 pServerInfo가 NULL인 경우 클래스가 ActivateAtStorage 값에 등록되었거나 연결된 레지스트리 정보가 없는 경우 이 함수는 pstg가 있는 컴퓨터에서 개체를 인스턴스화하여 가능한 최소 네트워크 트래픽을 제공합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | objbase.h |
라이브러리 | Ole32.lib |
DLL | Ole32.dll |