Die midl_user_free-Funktion
Die midl_user_free-Funktion muss von RPC-Entwicklern bereitgestellt werden. Es gibt Arbeitsspeicher frei, der von midl_user_allocate für die RPC-Stubs und Bibliotheksroutinen zugewiesen wurde. Ihre midl_user_free-Funktion muss mit dem folgenden Prototyp übereinstimmen:
void __RPC_USER midl_user_free(void * pBuffer);
Der pBuffer-Parameter gibt einen Zeiger auf den Arbeitsspeicher an, der freigegeben werden soll. Sowohl die Clientanwendung als auch die Serveranwendung müssen die midl_user_free-Funktion implementieren, es sei denn, Sie kompilieren im OSF-Kompatibilitätsmodus (/osf). Die midl_user_free-Funktion muss in der Lage sein, den gesamten von midl_user_allocate zugewiesenen Speicher frei zu geben.
Anwendungen und Stubs rufen midl_user_free auf, wenn es um zugeordnete Objekte geht:
- Die Serveranwendung sollte midl_user_free aufrufen, um den von der Anwendung zugewiesenen Arbeitsspeicher freizugeben, z. B. beim Löschen eines dynamisch zugeordneten Datenknotens.
- Der Serverstub ruft midl_user_free auf, um Arbeitsspeicher auf dem Server freizugeben, nachdem alle [out]-Argumente, [in],[out]-Argumente und der Funktionsrückgabewert ge marshallt wurden.
Beispielsweise implementiert das RPC-Windows-Beispielprogramm, das "Hello, world" anzeigt, midl_user_free in Bezug auf die freie C-Funktion:
void __RPC_USER midl_user_free(void __RPC_FAR * p)
{
free(p);
}
Hinweis
Wenn das RpcSs-Paket aktiviert ist (z. B. als Ergebnis der Verwendung des Attributs [ enable_allocate], sollte Ihr Serverprogramm RpcSmFree verwenden, um Arbeitsspeicher freizugeben. Weitere Informationen finden Sie unter RpcSs-Speicherverwaltungspaket.