Die midl_user_allocate-Funktion
Die midl_user_allocate-Funktion ist eine Prozedur, die von Entwicklern von RPC-Anwendungen bereitgestellt werden muss. Er weist Speicher für die RPC-Stubs und Bibliotheksroutinen zu. Die midl_user_allocate-Funktion muss mit dem folgenden Prototyp übereinstimmen:
void __RPC_FAR * __RPC_USER midl_user_allocate (size_t cBytes);
Der parameter cBytes gibt die Anzahl der zuzuordnenden Bytes an. Sowohl Clientanwendungen als auch Serveranwendungen müssen die midl_user_allocate-Funktion implementieren, es sei denn, Sie kompilieren im OSF-Kompatibilitätsmodus (/osf). Anwendungen und generierte Stubs rufen midl_user_allocate direkt oder indirekt auf, um zugeordnete Objekte zu verwalten. Zum Beispiel:
- Die Client- und Serveranwendungen rufen midl_user_allocate auf, um Speicher für die Anwendung zuzuweisen, z. B. beim Erstellen eines neuen Knotens in einer Struktur oder einer verknüpften Liste.
- Der Server-Stub ruft midl_user_allocate auf, wenn Daten im Serveradressraum getrennt werden.
- Der Client-Stub ruft midl_user_allocate auf, wenn daten vom Server entfernt werden, auf den durch einen [out]-Zeiger verwiesen wird. Beachten Sie, dass der Client-Stub für [in], [out] und [unique] Zeiger nur midl_user_allocate aufruft, wenn der [eindeutige] Zeigerwert bei eingaben null war und während des Aufrufs zu einem Wert ungleich NULL wechselt. Wenn der [eindeutige] Zeiger bei eingaben nicht NULL war, schreibt der Client-Stub die zugeordneten Daten in den vorhandenen Arbeitsspeicher.
Wenn midl_user_allocate Speicher nicht zuordnen kann, sollte ein NULL-Zeiger zurückgegeben werden.
Die midl_user_allocate-Funktion sollte einen ausgerichteten 8-Byte-Zeiger zurückgeben.
Beispielprogramme, die mit dem Platform Software Development Kit (SDK) bereitgestellt werden, implementieren midl_user_allocate in Bezug auf die C-Funktion malloc:
void __RPC_FAR * __RPC_USER midl_user_allocate(size_t cBytes)
{
return((void __RPC_FAR *) malloc(cBytes));
}
Anmerkung
Wenn das RpcSs-Paket aktiviert ist (z. B. als Ergebnis der Verwendung des Attributs [ enable_allocate] ), verwenden Sie RpcSmAllocate, um Arbeitsspeicher auf serverseitiger Seite zuzuweisen. Weitere Informationen zu [enable_allocate], finden Sie unter MIDL Reference.