Dela via


Funktionen midl_user_allocate

Funktionen midl_user_allocate är en procedur som måste tillhandahållas av utvecklare av RPC-program. Den allokerar minne för RPC-stubs och biblioteksrutiner. Din midl_user_allocate-funktion måste matcha följande prototyp:

void __RPC_FAR * __RPC_USER midl_user_allocate (size_t cBytes);

Parametern cBytes anger antalet byte som ska allokeras. Både klientprogram och serverprogram måste implementera funktionen midl_user_allocate såvida du inte kompilerar i OSF-kompatibilitetsläge (/osf). Program och genererade stubs anropar midl_user_allocate direkt eller indirekt för att hantera allokerade objekt. Till exempel:

  • Klient- och serverprogrammen anropar midl_user_allocate för att allokera minne för programmet, till exempel när du skapar en ny nod i ett träd eller en länkad lista.
  • Serverns stub anropar midl_user_allocate när du tar bort data till serverns adressutrymme.
  • Klientens stub anropar midl_user_allocate när data tas bort från servern som refereras till av en [out]-pekare. Observera att för [in], [out] och [unika] pekare anropar klientens stub endast midl_user_allocate om pekarvärdet [unikt] var null vid indata och ändras till ett värde som inte är null under anropet. Om pekaren [unik] inte var null vid indata skriver klientstuben associerade data till befintligt minne.

Om midl_user_allocate inte allokerar minne bör den returnera en null-pekare.

Funktionen midl_user_allocate ska returnera en pekare med 8 byte.

Exempelprogrammen som medföljer Platform Software Development Kit (SDK) implementerar till exempel midl_user_allocate när det gäller C-funktionen malloc:

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

Not

Om RpcSs-paketet är aktiverat (till exempel som ett resultat av att använda attributet [ enable_allocate] ) använder du RpcSmAllocate för att allokera minne på serversidan. Mer information om [enable_allocate], finns i MIDL-referens.