midl_user_allocate İşlevi
midl_user_allocate işlevi, RPC uygulamalarının geliştiricileri tarafından sağlanması gereken bir yordamdır. RPC saptamaları ve kitaplık yordamları için bellek ayırır. midl_user_allocate işlevinizin aşağıdaki prototiple eşleşmesi gerekir:
void __RPC_FAR * __RPC_USER midl_user_allocate (size_t cBytes);
cBytes parametresi ayrılacak bayt sayısını belirtir. OSF uyumluluğu (/osf) modunda derleme yapmazsanız hem istemci uygulamalarının hem de sunucu uygulamalarının midl_user_allocate işlevini uygulaması gerekir. Uygulamalar ve oluşturulan saptamalar, ayrılmış nesneleri yönetmek için doğrudan veya dolaylı olarak midl_user_allocate çağırır. Mesela:
- İstemci ve sunucu uygulamaları, ağaçta veya bağlı listede yeni bir düğüm oluştururken olduğu gibi uygulama için bellek ayırmak üzere midl_user_allocate çağırır.
- Sunucu saptaması, verileri sunucu adres alanına ayırırken midl_user_allocate çağırır.
- İstemci saptaması, [out] işaretçisi tarafından başvuruda bulunan sunucudan verileri özetlerken midl_user_allocate çağırır. [in], [out] ve [unique] işaretçileri için istemci saplamanın yalnızca [unique] işaretçi değeri girişte null ise ve çağrı sırasında null olmayan bir değere değiştiğinde midl_user_allocate çağırdığını unutmayın. [unique] işaretçisi girişte null değilse, istemci saplaması ilişkili verileri mevcut belleğe yazar.
midl_user_allocate bellek ayıramazsa, null bir işaretçi döndürmelidir.
midl_user_allocate işlevi 8 bayt hizalı bir işaretçi döndürmelidir.
Örneğin, Platform Yazılım Geliştirme Seti (SDK) ile sağlanan örnek programlar, mallocC işlevi açısından midl_user_allocate uygular:
void __RPC_FAR * __RPC_USER midl_user_allocate(size_t cBytes)
{
return((void __RPC_FAR *) malloc(cBytes));
}
Not
RpcSs paketi etkinse (örneğin, [ enable_allocate] özniteliğini kullanmanın sonucu olarak), sunucu tarafında bellek ayırmak için rpcSmAllocatekullanın. [enable_allocate] hakkında ek bilgi için bkz. MIDL Başvurusu.