Requisiti del server DLL

Anche se la maggior parte delle DLL può essere eseguita in un surrogato, alcune DLL non possono essere eseguite.

La DLL deve essere ben comportata se si vuole usare il surrogato fornito dal sistema. Ad esempio, una DLL che chiama i metodi che registrano i callback dal client tenta di richiamare tali callback come se i puntatori di funzione ricevuti fossero per istruzioni nello spazio degli indirizzi, che non è il caso. Analogamente, una DLL che usa una variabile globale che prevede che il client non funzioni. In generale, i parametri che non possono essere correttamente sottoposto a marshalling impediranno l'esecuzione del server DLL all'esterno del processo client. In molti casi, è possibile scrivere un surrogato personalizzato appositamente progettato per compensare il comportamento "cattivo". Per altre informazioni, vedere Scrittura di un surrogato personalizzato.

Se il server DLL usa interfacce personalizzate, è necessario assicurarsi che il codice di marshalling sia disponibile per tali interfacce. Ad esempio, è possibile compilare e registrare una DLL proxy oppure fornire e registrare una libreria dei tipi che consenta al server di funzionare correttamente durante l'esecuzione in un surrogato.

I server DLL verranno caricati solo in un processo surrogato in esecuzione nel contesto di sicurezza appropriato. Il contesto di sicurezza per il surrogato del server DLL viene determinato nello stesso modo dei server EXE. Il surrogato del server DLL viene eseguito nello stesso contesto di sicurezza del client, a meno che non venga impostato un valore RunAs , che determina il contesto di sicurezza, nella sezione Registro di sistema AppID per il server.

Surrogati DLL