다음을 통해 공유


RpcSmAllocate 함수(rpcndr.h)

RpcSmAllocate 함수는 RPC 스텁 메모리 관리 함수 내에서 메모리를 할당하고 할당된 메모리 또는 NULL에 대한 포인터를 반환합니다.

구문

void * RpcSmAllocate(
  size_t     Size,
  RPC_STATUS *pStatus
);

매개 변수

Size

할당할 메모리 크기(바이트)입니다.

pStatus

반환된 상태 대한 포인터입니다.

반환 값

의미
RPC_S_OK
호출이 성공했습니다.
RPC_S_OUT_OF_MEMORY
시스템이 메모리가 부족합니다.
 
참고 유효한 오류 코드 목록은 RPC 반환 값을 참조하세요.
 

설명

RpcSmAllocate 루틴을 사용하면 애플리케이션이 RPC 스텁 메모리 관리 환경 내에서 메모리를 할당할 수 있습니다. RpcSmAllocate를 호출하기 전에 메모리 관리 환경을 이미 설정해야 합니다. 스텁 내에서 호출된 메모리 관리의 경우 서버 스텁 자체가 필요한 환경을 설정할 수 있습니다. 자세한 내용은 RpcSmEnableAllocate를 참조하세요. RpcSmAllocate를 사용하여 스텁에서 호출되지 않은 메모리를 할당하는 경우 애플리케이션은 RpcSmEnableAllocate를 호출하여 필요한 메모리 관리 환경을 설정해야 합니다.

호출이 성공하면 RpcSmAllocate 루틴은 할당된 메모리에 대한 포인터를 반환합니다. 그렇지 않으면 NULL 이 반환됩니다.

스텁이 메모리 관리를 설정하면 RpcSmAllocate에 의해 할당된 모든 메모리를 해제합니다. 애플리케이션은 RpcSmFree를 호출하여 호출 스텁으로 돌아가기 전에 이러한 메모리를 해제할 수 있습니다.

반면, 애플리케이션이 메모리 관리를 설정할 때 할당된 모든 메모리를 해제해야 합니다. RpcSmFree 또는 RpcSmDisableAllocate를 호출하여 이 작업을 수행합니다.

스텁 메모리 관리 환경 내에서 동일한 메모리를 관리하기 위해 여러 스레드에서 RpcSmAllocateRpcSmFree를 호출할 수 있습니다. 이 경우 스레드는 동일한 스텁 메모리 관리 스레드 핸들을 공유해야 합니다. 애플리케이션은 RpcSmGetThreadHandleRpcSmSetThreadHandle을 호출하여 스레드에서 스레드로 스레드 핸들을 전달합니다.

자세한 내용은 메모리 관리를 참조하세요.

요구 사항

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

추가 정보

RpcSmDisableAllocate

RpcSmEnableAllocate

RpcSmFree

RpcSmGetThreadHandle

RpcSmSetThreadHandle