rpcSmAllocate 函数 (rpcndr.h)

RpcSmAllocate 函数在 RPC 存根内存管理函数中分配内存,并返回指向已分配内存或 NULL 的指针。

语法

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

parameters

Size

要分配的内存大小(以字节为单位)。

pStatus

指向返回状态的指针。

返回值

含义
RPC_S_OK
调用成功。
RPC_S_OUT_OF_MEMORY
系统内存不足。
 
注意 有关有效错误代码的列表,请参阅 RPC 返回值
 

注解

RpcSmAllocate 例程允许应用程序在 RPC 存根内存管理环境中分配内存。 在调用 RpcSmAllocate 之前,必须已建立内存管理环境。 对于在存根中调用的内存管理,服务器存根本身可能会建立必要的环境。 有关详细信息,请参阅 RpcSmEnableAllocate。 使用 RpcSmAllocate 分配未从存根调用的内存时,应用程序必须调用 RpcSmEnableAllocate 来建立所需的内存管理环境。

如果调用成功, RpcSmAllocate 例程将返回指向分配的内存的指针。 否则,返回 NULL

当存根建立内存管理时,它会释放 RpcSmAllocate 分配的任何内存。 应用程序可以通过调用 RpcSmFree 在返回到调用存根之前释放此类内存。

相比之下,当应用程序建立内存管理时,它必须释放分配的任何内存。 它通过调用 RpcSmFreeRpcSmDisableAllocate 来执行此操作

若要在存根内存管理环境中管理相同的内存,多个线程可以调用 RpcSmAllocateRpcSmFree。 在这种情况下,线程必须共享相同的存根内存管理线程句柄。 应用程序通过调用 RpcSmGetThreadHandleRpcSmSetThreadHandle 将线程句柄从线程传递到线程。

有关详细信息,请参阅 内存管理

要求

   
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 rpcndr.h (包括 Rpc.h)
Library Rpcrt4.lib
DLL Rpcrt4.dll

请参阅

RpcSmDisableAllocate

RpcSmEnableAllocate

RpcSmFree

RpcSmGetThreadHandle

RpcSmSetThreadHandle