共用方式為


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 函式malloc實作midl_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 參考