DLL-Funktionen
[Das dieser Seite zugeordnete Feature DirectShow-ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngineund Audio/Video Capture in Media Foundationersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code MediaPlayer-, IMFMediaEngine und Audio-/Videoaufnahme in Media Foundation anstelle von DirectShow-verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, um die neuen APIs zu verwenden, falls möglich umgeschrieben werden.]
In diesem Thema wird beschrieben, wie Sie eine Komponente als Dynamic Link Library (DLL) in Microsoft DirectShow implementieren.
Eine DLL muss die folgenden Funktionen implementieren, damit sie registriert, nicht registriert und in den Speicher 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 Platform SDK.
- DllGetClassObject-: Erstellt eine Klassenfactoryinstanz. In den vorherigen Abschnitten beschrieben.
- DllCanUnloadNow: Fragt ab, ob die DLL sicher entladen werden kann.
- DllRegisterServer: Erstellt Registrierungseinträge für die DLL.
- DllUnregisterServer: Entfernt Registrierungseinträge für die DLL.
Davon werden die ersten drei von DirectShow implementiert. Wenn Ihre Factoryvorlage eine Initialisierungsfunktion in der m_lpfnInit Membervariable bereitstellt, 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 DllUnregisterServer-implementieren, aber DirectShow stellt eine Funktion namens AMovieDllRegisterServer2 bereit, die die erforderlichen Aufgaben ausführt. Ihre Komponente kann diese Funktion einfach umschließen, wie im folgenden Beispiel gezeigt:
STDAPI DllRegisterServer()
{
return AMovieDllRegisterServer2( TRUE );
}
STDAPI DllUnregisterServer()
{
return AMovieDllRegisterServer2( FALSE );
}
Innerhalb DllRegisterServer und DllUnregisterServer können Sie den Registrierungsprozess jedoch bei Bedarf anpassen. Wenn Ihre DLL einen Filter enthält, müssen Sie möglicherweise weitere Aufgaben ausführen. Weitere Informationen finden Sie unter Registrieren von DirectShow-Filtern.
Exportieren Sie in ihrer Moduldefinitionsdatei (.def) alle DLL-Funktionen mit Ausnahme der Einstiegspunktfunktion. Nachfolgend sehen 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.
Verwandte Themen