다음을 통해 공유


IDataObject::GetData 메서드(objidl.h)

원본 데이터 개체에서 데이터를 가져오기 위해 데이터 소비자가 호출합니다. GetData 메서드는 지정된 FORMATETC 구조에 설명된 데이터를 렌더링하고 지정된 STGMEDIUM 구조를 통해 전송합니다. 그런 다음 호출자는 STGMEDIUM 구조를 해제하는 책임을 맡습니다.

구문

HRESULT GetData(
  [in]  FORMATETC *pformatetcIn,
  [out] STGMEDIUM *pmedium
);

매개 변수

[in] pformatetcIn

데이터를 전달할 때 사용할 형식, 중간 및 대상 디바이스를 정의하는 FORMATETC 구조체에 대한 포인터입니다. 메서드에서 지정된 미디어 중 가장 적합한 미디어를 선택할 수 있도록 부울 OR 연산자를 사용하여 둘 이상의 미디어를 지정할 수도 있습니다.

[out] pmedium

tymed 멤버를 통해 반환된 데이터를 포함하는 스토리지 매체와 pUnkForRelease 멤버의 값을 통해 매체를 해제하는 책임을 나타내는 STGMEDIUM 구조체에 대한 포인터입니다. pUnkForReleaseNULL이면 매체의 수신자가 해제를 담당합니다. 그렇지 않으면 pUnkForRelease해당 Release 메서드를 호출할 수 있도록 적절한 개체의 IUnknown을 가리킵니다. GetData에서 매체를 할당하고 채워야 합니다.

반환 값

이 메서드는 성공에 대한 S_OK 반환합니다. 다른 가능한 값은 다음과 같습니다.

반환 코드 설명
DV_E_LINDEX
lindex 값이 잘못되었습니다. 현재 -1만 지원됩니다.
DV_E_FORMATETC
pformatetcIn 값이 잘못되었습니다.
DV_E_TYMED
tymed 값이 잘못되었습니다.
DV_E_DVASPECT
dwAspect 값이 잘못되었습니다.
OLE_E_NOTRUNNING
개체 애플리케이션이 실행되고 있지 않습니다.
STG_E_MEDIUMFULL
매체를 할당할 때 오류가 발생했습니다.
E_UNEXPECTED
예기치 않은 오류가 발생했습니다.
E_INVALIDARG
dwDirection 값이 잘못되었습니다.
E_OUTOFMEMORY
이 작업에 사용할 수 있는 메모리가 부족했습니다.

설명

데이터 소비자는 GetData 를 호출하여 스토리지 매체( STGMEDIUM 구조를 통해 정의됨)를 통해 전달되는 데이터 개체에서 데이터를 검색합니다.

발신자에 대한 참고 사항

부울 OR 연산자를 사용하여 둘 이상의 허용 가능한 tymed 매체를 지정할 수 있습니다. GetData 는 데이터를 가장 잘 나타내는 매체의 OR 값 중에서 선택하고, 할당을 수행하고, 매체를 해제할 책임을 나타내야 합니다.

스트림을 통해 전송되는 데이터는 스트림 포인터의 위치 0에서 현재 스트림 포인터 바로 앞의 위치(즉, 종료 시 스트림 포인터 위치)로 확장됩니다.

구현자에 대한 참고 사항

GetDataFORMATETC 구조의 모든 필드를 검사 합니다. GetData는 요청된 측면을 렌더링하고 가능하면 요청된 매체를 사용하는 것이 중요합니다. 데이터 개체가 FORMATETC에 지정된 정보를 준수할 수 없는 경우 메서드는 DV_E_FORMATETC 반환해야 합니다. 매체 할당 시도가 실패하면 메서드는 STG_E_MEDIUMFULL 반환해야 합니다. STGMEDIUM 구조체의 모든 필드를 채우는 것이 중요합니다.

호출자는 데이터를 반환하기 위해 둘 이상의 매체를 지정할 수 있지만 GetData 는 하나의 매체만 제공할 수 있습니다. 선택한 매체로 초기 전송이 실패하면 오류를 반환하기 전에 지정된 다른 미디어 중 하나를 시도하도록 이 메서드를 구현할 수 있습니다.

요구 사항

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

추가 정보

Idataobject