ICallFrame::Marshal 메서드(callobj.h)

프레임을 방해하지 않고 연결 가능한 데이터를 플랫 버퍼로 전환하여 호출 프레임을 마샬링합니다.

구문

HRESULT Marshal(
  [in]  CALLFRAME_MARSHALCONTEXT *pmshlContext,
  [in]  MSHLFLAGS                mshlflags,
  [in]  PVOID                    pBuffer,
  [in]  ULONG                    cbBuffer,
  [out] ULONG                    *pcbBufferUsed,
  [out] RPCOLEDATAREP            *pdataRep,
  [out] ULONG                    *prpcFlags
);

매개 변수

[in] pmshlContext

마샬링이 수행되는 방법에 대한 컨텍스트 정보를 포함하는 CALLFRAME_MARSHALCONTEXT 구조체에 대한 포인터입니다.

[in] mshlflags

마샬링할 데이터를 클라이언트 프로세스(일반 사례)로 다시 전송할지 아니면 여러 클라이언트에서 검색할 수 있는 전역 테이블에 쓸 것인지를 나타내는 플래그입니다. 가능한 값은 MSHLFLAGS 열거형에서 가져옵니다.

[in] pBuffer

마샬링된 데이터를 배치할 버퍼에 대한 포인터입니다.

[in] cbBuffer

버퍼의 크기(바이트)입니다.

[out] pcbBufferUsed

실제로 사용된 버퍼의 크기를 받습니다. 이 매개 변수는 선택 사항입니다.

[out] pdataRep

데이터가 마샬링된 NDR 데이터 표현을 받습니다. 이 매개 변수는 선택 사항입니다. 자세한 내용은 IRpcChannelBuffer::GetBuffer를 참조하세요.

[out] prpcFlags

호출과 연결된 RPC 플래그를 받습니다. 이 매개 변수는 선택 사항입니다. 자세한 내용은 IRpcChannelBuffer::GetBuffer를 참조하세요.

반환 값

이 메서드는 다음 값을 반환할 수 있습니다.

반환 코드 설명
S_OK
메서드가 완료되었습니다.
E_UNEXPECTED
예기치 않은 오류가 발생했습니다.

설명

[In] 버전의 [in, out] 매개 변수를 마샬링하는 경우 [out] 버전이 정의되지 않습니다. [out] 매개 변수를 마샬링할 때 값이 유효합니다.

이 메서드가 오류를 반환하는 경우 호출자는 오류를 클린 수 없습니다. 마샬링을 시도하는 동안 일시적으로 할당된 메모리와 같은 리소스가 해제되었습니다.

요구 사항

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

추가 정보

ICallFrame