DLL-Funktionen

In diesem Thema wird beschrieben, wie Sie eine Komponente als Dll (Dynamic Link Library) in Microsoft DirectShow implementieren.

Eine DLL muss die folgenden Funktionen implementieren, damit sie registriert, nicht registriert und in den Arbeitsspeicher geladen werden kann.

  • DllMain:Der DLL-Einstiegspunkt. Der Name DllMain ist ein Platzhalter für den bibliotheksdefinierten Funktionsnamen. Die DirectShow-Implementierung verwendet den Namen DllEntryPoint. Weitere Informationen finden Sie im Plattform-SDK.
  • DllGetClassObject:Erstellt eine Klassen-Factoryinstanz. In den vorherigen Abschnitten beschrieben.
  • DllCanUnloadNow: Fragtab, ob die DLL sicher entladen werden kann.
  • DllRegisterServer:Erstellt Registrierungseinträge für die DLL.
  • DllUnregisterServer:Entfernt Registrierungseinträge für die DLL.

Von diesen werden die ersten drei von DirectShow implementiert. Wenn Ihre Factoryvorlage eine Initialisierungsfunktion in der m _ lpfnInit-Membervariablen enthält, wird diese Funktion innerhalb der DLL-Einstiegspunktfunktion aufgerufen. Weitere Informationen dazu, wann das System die DLL-Einstiegspunktfunktion aufruft, finden Sie unter DllMain.

Sie müssen DllRegisterServer und DllUnregisterServerimplementieren, aber DirectShow stellt eine Funktion namens AMovieDllRegisterServer2 zur Durchführung der erforderlichen Arbeit zur Anwendung. Ihre Komponente kann diese Funktion einfach umschließen, wie im folgenden Beispiel gezeigt:

STDAPI DllRegisterServer()
{
    return AMovieDllRegisterServer2( TRUE );
}

STDAPI DllUnregisterServer()
{
    return AMovieDllRegisterServer2( FALSE );
}

In DllRegisterServer und DllUnregisterServer können Sie den Registrierungsprozess jedoch nach Bedarf anpassen. Wenn Ihre DLL einen Filter enthält, müssen Sie möglicherweise zusätzliche Arbeit tun. Weitere Informationen finden Sie unter Registrieren von DirectShow-Filtern.

Exportieren Sie in ihrer Moduldefinitionsdatei (DEF) alle DLL-Funktionen mit Ausnahme der Einstiegspunktfunktion. Im Folgenden finden Sie ein Beispiel für eine DEF-Datei:

EXPORTS
    DllGetClassObject PRIVATE
    DllCanUnloadNow PRIVATE
    DllRegisterServer PRIVATE
    DllUnregisterServer PRIVATE

Sie können die DLL mithilfe des Hilfsprogramms Regsvr32.exe registrieren.

Erstellen einer DirectShow-Filter-DLL