DLL-Serveranforderungen
Während die meisten DLLs in einem Ersatzzeichen ausgeführt werden können, ist dies bei einigen DLLs nicht möglich.
Die DLL muss sich gut verhalten, wenn Sie das vom System bereitgestellte Ersatzzeichen verwenden möchten. Beispielsweise würde eine DLL, die Methoden aufruft, die Rückrufe vom Client registrieren, diese Rückrufe so aufrufen, als ob die empfangenen Funktionsze zeiger Anweisungen im Adressraum hätten, was nicht der Fall wäre. Ebenso funktioniert eine DLL, die eine globale Variable verwendet, auf die der Client zugreifen soll, nicht. Im Allgemeinen verhindern Parameter, die nicht ordnungsgemäß gemarshallt werden können, die Ausführung des DLL-Servers außerhalb des Clientprozesses. In vielen Fällen können Sie ein benutzerdefiniertes Ersatzzeichen schreiben, das speziell entwickelt wurde, um ein "schlechtes" Verhalten zu kompensieren. (Weitere Informationen finden Sie unter Schreiben eines benutzerdefinierten Ersatzzeichens.)
Wenn der DLL-Server benutzerdefinierte Schnittstellen verwendet, müssen Sie sicherstellen, dass für diese Schnittstellen Marshallingcode verfügbar ist. Sie können z. B. eine Proxy-DLL erstellen und registrieren oder eine Typbibliothek bereitstellen und registrieren, die es dem Server ermöglicht, ordnungsgemäß zu funktionieren, während er in einem Ersatzzeichen ausgeführt wird.
DLL-Server werden nur in einen Ersatzprozess geladen, der im richtigen Sicherheitskontext ausgeführt wird. Der Sicherheitskontext für das DLL-Server-Ersatzzeichen wird auf die gleiche Weise wie für EXE-Server bestimmt. Das DLL-Server-Ersatzzeichen wird im gleichen Sicherheitskontext wie der Client ausgeführt, es sei denn, ein RunAs-Wert, der den Sicherheitskontext bestimmt, wird im AppID-Registrierungsabschnitt für den Server festgelegt.