2011-01-10 1 views

Antwort

6

Wenn man davon absieht, was eine DLL für verwendet wird, dann gibt es nur eine Art von 32-Bit-DLL.

Es hat PE (Portable Executable) -Format, und es exportiert Funktionen und Daten sowie Ressourcen.

Wenn Sie zwischen verschiedenen Arten von Inhalt unterscheiden, gibt es eine unbegrenzte Anzahl von verschiedenen "Typen" von DLLs. Beispielsweise enthält eine DLL möglicherweise nur Ressourcen für ein Programm. Oder es könnte Bytecode für einen Interpreter enthalten (eine .NET DLL ist ein Beispiel dafür). Oder Wasauchimmer. Wenn Sie sich beispielsweise für diejenigen mit direkter Unterstützung in Windows interessieren, ist ein Control Panel-Applet eine DLL, eine COM-Typbibliothek eine DLL und eine Shell-Namespace-Erweiterung normalerweise eine DLL, die Sie zur Unterscheidung zwischen verschiedenen Arten führt von COM-DLLs als "Typen" von DLLs. Wie sie sagten, ist es nur durch Ihre Vorstellungskraft und durch Ihre Vorstellung von "Typ" begrenzt - was auch immer diese Vorstellung ist.

Beifall & hth.,

+1

.NET DLLs tun bekommen tatsächlich eine spezielle Handhabung von Windows, glaube ich. Der ganze Rest sind, wie Sie sagen, nur spezifische Beispiele für PE-DLLs. –

+0

@Ben Voigt: Welche spezielle Behandlung wäre das? Mir scheint, dass das Verhalten von der .NET CLR (mscoree.dll) oder Mono stammt. Für registrierte COM-DLLs weiß ich, dass Windows sie in einem Proxy-Prozess und Marshall-Schnittstellen hosten kann. Das ist auf jeden Fall ein besonderer Umgang. normale DLLs bekommen es nicht. – MSalters

+1

@MSalters: Spezielle Behandlung von Proxy-DLLs kommen von der COM-API, die nur eine Bibliothek mit Windows verteilt ist, wohl Teil des Betriebssystems und wohl nicht. .NET-Module erhalten dagegen ein anderes Verhalten als der OS-Loader (für WinXP und höher). So können reine MSIL-Assemblies in einen Prozess mit unterschiedlicher Bissigkeit geladen werden. –

Verwandte Themen