다음을 통해 공유


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

원본 데이터 개체에서 데이터를 가져오기 위해 데이터 소비자가 호출합니다. 이 메서드는 호출자가 지정된 스토리지 매체를 할당하고 해제해야 한다는 점에서 GetData 메서드와 다릅니다.

구문

HRESULT GetDataHere(
  [in]      FORMATETC *pformatetc,
  [in, out] STGMEDIUM *pmedium
);

매개 변수

[in] pformatetc

데이터를 전달할 때 사용할 형식, 중간 및 대상 디바이스를 정의하는 FORMATETC 구조체에 대한 포인터입니다. 하나의 매체만 tymed로 지정할 수 있으며 TYMED_ISTORAGE, TYMED_ISTREAM, TYMED_HGLOBAL 또는 TYMED_FILE 값만 유효합니다.

[in, out] pmedium

전송되는 데이터를 포함하는 스토리지 매체를 정의하는 STGMEDIUM 구조체에 대한 포인터입니다. 매체는 호출자가 할당하고 GetDataHere로 채워야 합니다. 또는 호출자가 미디어를 해제해야 합니다. 이 메서드의 구현은 항상 이 매개 변수가 가리키는 STGMEDIUM 구조체의 punkForRelease 멤버에 대해 NULL 값을 제공해야 합니다.

반환 값

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

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

설명

GetDataHere 메서드는 호출자가 pmedium에 지정된 매체를 할당하고 해제해야 한다는 점을 제외하고 IDataObject::GetData와 비슷합니다. GetDataHereFORMATETC 구조에 설명된 데이터를 렌더링하고 호출자가 제공한 STGMEDIUM 구조체에 데이터를 복사합니다. 예를 들어 매체가 TYMED_HGLOBAL 경우 이 메서드는 매체의 크기를 조정하거나 새 hGlobal을 할당할 수 없습니다.

일부 미디어는 메타파일과 같은 GDI 형식을 포함하여 GetDataHere 호출에 적합하지 않습니다. GetDataHere 메서드는 호출자가 제공한 메타파일로 데이터를 넣을 수 없습니다. 일반적으로 이 메서드에서 지원하는 데 필요한 유일한 스토리지 미디어는 TYMED_ISTORAGE, TYMED_ISTREAM 및 TYMED_FILE.

전송 매체가 스트림인 경우 OLE는 데이터가 반환되는 위치와 스트림의 검색 포인터 위치를 가정합니다. GetData 호출에서 반환된 데이터는 스트림 위치 0부터 스트림의 현재 검색 포인터(즉, 종료 시 위치) 직전까지입니다. GetDataHere의 경우 반환된 데이터는 입력 시 스트림 위치에서 종료 위치 바로 앞까지입니다.

요구 사항

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

추가 정보

Idataobject