Freigeben über


DLL-Serveranforderungen

Während die meisten DLLs in einem Ersatzzeichen ausgeführt werden können, können einige DLLs nicht ausgeführt werden.

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, versuchen, diese Rückrufe aufzurufen, als ob die empfangenen Funktionszeiger für Anweisungen in ihrem Adressraum wären, was nicht der Fall ist. Ebenso würde eine DLL, die eine globale Variable verwendet, auf die der Client zugreifen soll, nicht funktionieren. Im Allgemeinen verhindern Parameter, die nicht ordnungsgemäß gemarshallt werden können, dass der DLL-Server außerhalb des Clientprozesses ausgeführt wird. In vielen Fällen können Sie ein benutzerdefiniertes Ersatzzeichen schreiben, das speziell entwickelt wurde, um "schlechtes" Verhalten auszugleichen. (Weitere Informationen finden Sie unter Schreiben eines benutzerdefinierten Ersatzzeichens.)

Wenn der DLL-Server benutzerdefinierte Schnittstellen verwendet, müssen Sie sicherstellen, dass Marshallingcode für diese Schnittstellen verfügbar ist. Sie können beispielsweise eine Proxy-DLL erstellen und registrieren oder eine Typbibliothek bereitstellen und registrieren, die es dem Server ermöglicht, während er in einem Ersatzzeichen ausgeführt wird, ordnungsgemäß zu funktionieren.

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 Abschnitt AppID-Registrierung für den Server festgelegt.

DLL-Ersatzzeichen