Die _ _ midl-Benutzerzuweisungsfunktion
Die funktion midl _ user _ allocate ist eine Prozedur, die von Entwicklern von RPC-Anwendungen bereitgestellt werden muss. Es belegt Arbeitsspeicher für die RPC-Stubs und Bibliotheksroutinen. Ihre _ Midl-Benutzerfunktion _ "allocate" muss mit dem folgenden Prototyp übereinstimmen:
void __RPC_FAR * __RPC_USER midl_user_allocate (size_t cBytes);
Der cBytes-Parameter gibt die Anzahl der zuzuordnenden Bytes an. Sowohl Clientanwendungen als auch Serveranwendungen müssen die _ Midl-Benutzerzuweisungsfunktion _ implementieren, es sei denn, Sie kompilieren im OSF-Kompatibilitätsmodus (/osf). Anwendungen und generierte Stubs rufen die direkte oder indirekte Zuweisung des _ Midl-Benutzers _ auf, um zugeordnete Objekte zu verwalten. Beispiel:
- Die Client- und Serveranwendungen rufen midl user auf, um Speicher für die Anwendung zu _ _ belegen, z. B. beim Erstellen eines neuen Knotens in einer Struktur oder verknüpften Liste.
- Der Serverstub ruft midl _ user _ allocate auf, wenn die Zuordnung von Daten in den Serveradressraum aufheben wird.
- Der Clientstub ruft midl _ user _ allocate auf, wenn daten vom Server entfernt werden, auf den ein [ ] Out-Zeiger verweist. Beachten Sie, dass der Clientstub für in , [ out und eindeutige Zeiger ] [ ] [ ] midl user nur dann _ _ zuordnet, wenn der eindeutige Zeigerwert bei der [ Eingabe NULL war und während des ] Aufrufs in einen Wert ungleich NULL geändert wird. Wenn der eindeutige Zeiger bei der [ ] Eingabe ungleich NULL war, schreibt der Clientstub die zugeordneten Daten in den vorhandenen Arbeitsspeicher.
Wenn midl _ user _ allocate keinen Arbeitsspeicher belegen kann, sollte ein NULL-Zeiger zurückgegeben werden.
Die _ midl-Benutzerzuweisungsfunktion _ sollte einen 8-Byte-ausgerichteten Zeiger zurückgeben.
Beispielsweise implementieren die mit dem Platform Software Development Kit (SDK) bereitgestellten Beispielprogramme 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));
}
Hinweis
Wenn das RpcSs-Paket aktiviert ist (z. B. aufgrund der Verwendung des [ Attributs enable _ allocate), ] verwenden Sie RpcSmAllocate, um Arbeitsspeicher auf serverseitiger Seite zuzuordnen. Weitere Informationen zum Aktivieren von [ _ "Zuordnen" ] finden Sie unter MIDL-Referenz.