다음을 통해 공유


CoGetMarshalSizeMax 함수(combaseapi.h)

지정된 인터페이스 포인터를 지정된 개체로 마샬링하는 데 필요한 바이트 수의 상한을 반환합니다.

구문

HRESULT CoGetMarshalSizeMax(
  [out]          ULONG     *pulSize,
  [in]           REFIID    riid,
  [in]           LPUNKNOWN pUnk,
  [in]           DWORD     dwDestContext,
  [in, optional] LPVOID    pvDestContext,
  [in]           DWORD     mshlflags
);

매개 변수

[out] pulSize

마샬링 스트림에 쓸 데이터 패킷의 크기(바이트)에 대한 상한 값에 대한 포인터입니다. 이 매개 변수가 0이면 패킷 크기를 알 수 없습니다.

[in] riid

포인터를 마샬링할 인터페이스의 식별자에 대한 참조입니다. 이 인터페이스는 IUnknown 인터페이스에서 파생되어야 합니다.

[in] pUnk

마샬링할 인터페이스에 대한 포인터입니다. 이 인터페이스는 IUnknown 인터페이스에서 파생되어야 합니다.

[in] dwDestContext

지정된 인터페이스를 숨기지 않을 대상 컨텍스트입니다. dwDestContext의 값은 열거형 MSHCTX에서 가져옵니다.

[in, optional] pvDestContext

이 매개 변수는 예약되어 있으며 NULL이어야 합니다.

[in] mshlflags

마샬링할 데이터를 클라이언트 프로세스로 다시 전송할지 아니면 여러 클라이언트에서 검색할 수 있는 전역 테이블에 쓸지 여부를 나타냅니다. 값은 열거형 MSHLFLAGS에서 가져옵니다.

반환 값

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

반환 코드 Description
S_OK
상한이 성공적으로 반환되었습니다.
CO_E_NOTINITIALIZED
이 함수를 호출하려면 CoInitialize 또는 OleInitialize 함수를 호출해야 합니다.

설명

이 함수는 다음 작업을 수행합니다.

  1. 개체에서 IMarshal 포인터를 쿼리하거나 개체가 IMarshal을 구현하지 않으면 COM의 표준 마샬러에 대한 포인터를 가져옵니다.
  2. 이전 항목에서 가져온 포인터를 사용하여 IMarshal::GetMarshalSizeMax를 호출합니다.
  3. GetMarshalSizeMax 호출에서 반환되는 값에 마샬링 데이터 헤더의 크기 및 프록시 CLSID의 값을 추가하여 마샬링 스트림에 쓸 데이터의 최대 크기(바이트)를 가져옵니다.
IMarshal을 구현하지 않는 한 이 함수를 명시적으로 호출하지 않습니다. 이 경우 마샬링 스텁은 마샬링할 데이터 패킷의 올바른 크기를 가져오기 위해 이 함수를 호출해야 합니다.

이 메서드에서 반환된 값은 마샬링되는 개체의 내부 상태가 변경되지 않는 한 유효합니다. 따라서 이 함수가 반환된 직후에 실제 마샬링이 수행되어야 합니다. 또는 스텁은 상태의 일부 변경으로 인해 원래 표시된 것보다 더 많은 메모리를 마샬링해야 할 수 있는 위험을 실행합니다.

요구 사항

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

추가 정보

CoMarshalInterface

IMarshal::GetMarshalSizeMax