共用方式為


midl_user_allocate函式

midl_user_allocate 函式是 RPC 應用程式的開發人員必須提供的程式。 它會配置 RPC 存根和連結庫例程的記憶體。 您的 midl_user_allocate 函式必須符合下列原型:

void __RPC_FAR * __RPC_USER midl_user_allocate (size_t cBytes);

cBytes 參數會指定要配置的位元元數目。 除非您是以OSF相容性 (/osf) 模式編譯,否則用戶端應用程式和伺服器應用程式都必須實作 midl_user_allocate 函式。 應用程式和產生的存根會直接或間接呼叫 midl_user_allocate 來管理配置的物件。 例如:

  • 用戶端和伺服器應用程式會呼叫 midl_user_allocate 來配置應用程式的記憶體,例如在樹狀結構或連結清單中建立新節點時。
  • 將數據取消分送至伺服器位址空間時,伺服器存根會呼叫 midl_user_allocate
  • 從 [out] 指標所參考的伺服器取消分送數據時,用戶端存根會呼叫 midl_user_allocate。 請注意,針對 [in]、[out]和 [unique] 指標,用戶端存根只有在輸入 [unique] 指標值為 null 且在呼叫期間變更為非 Null 值時,用戶端存根才會呼叫 midl_user_allocate。 如果輸入上的 [unique] 指標不是 Null,用戶端存根會將相關聯的數據寫入現有的記憶體中。

如果 midl_user_allocate 無法配置記憶體,它應該會傳回 Null 指標。

midl_user_allocate 函式應該會傳回 8 位元組對齊的指標。

例如,平臺軟體開發工具套件 (SDK) 所提供的範例程式會實作 C 函式 mallocmidl_user_allocate

void __RPC_FAR * __RPC_USER midl_user_allocate(size_t cBytes)
{
    return((void __RPC_FAR *) malloc(cBytes));
}

注意

如果已啟用 RpcSs 套件(例如,使用 [ enable_allocate] 屬性的結果,請使用 RpcSmAllocate 在伺服器端配置記憶體。 如需 [enable_allocate] 的其他資訊,請參閱 MIDL 參考