Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
[Funktionen som är associerad med den här sidan, DirectShow, är en äldre funktion. Det har ersatts av MediaPlayer, IMFMediaEngineoch Audio / Video Capture i Media Foundation. Dessa funktioner har optimerats för Windows 10 och Windows 11. Microsoft rekommenderar starkt att ny kod använder MediaPlayer, IMFMediaEngine och Audio/Video Capture i Media Foundation i stället för DirectShow, när det är möjligt. Microsoft föreslår att befintlig kod som använder äldre API:er skrivs om för att använda de nya API:erna om möjligt.]
I det här avsnittet beskrivs hur du implementerar en komponent som ett DLL -bibliotek (Dynamic Link Library) i Microsoft DirectShow.
En DLL måste implementera följande funktioner så att den kan registreras, avregistreras och läsas in i minnet.
- DllMain: DLL-startpunkten. Namnet DllMain är en platshållare för det biblioteksdefinierade funktionsnamnet. DirectShow-implementeringen använder namnet DllEntryPoint. Mer information finns i Platform SDK.
- DllGetClassObject: Skapar en klassfabriksinstans. Beskrivs i föregående avsnitt.
- DllCanUnloadNow: Frågar om DLL:en kan tas bort på ett säkert sätt.
- DllRegisterServer: Skapar registerposter för DLL:en.
- DllUnregisterServer: Tar bort registerposter för DLL.
Av dessa implementeras de tre första av DirectShow. Om din fabriksmall tillhandahåller en initieringsfunktion i m_lpfnInit medlemsvariabeln anropas den funktionen inifrån DLL-startpunktsfunktionen. Mer information om när systemet anropar funktionen DLL-startpunkt finns i DllMain.
Du måste implementera DllRegisterServer och DllUnregisterServer, men DirectShow tillhandahåller en funktion med namnet AMovieDllRegisterServer2 som utför det nödvändiga arbetet. Komponenten kan helt enkelt omsluta den här funktionen, som du ser i följande exempel:
STDAPI DllRegisterServer()
{
return AMovieDllRegisterServer2( TRUE );
}
STDAPI DllUnregisterServer()
{
return AMovieDllRegisterServer2( FALSE );
}
Men inom DllRegisterServer och DllUnregisterServer kan du anpassa registreringsprocessen efter behov. Om DLL-filen innehåller ett filter kan du behöva utföra ytterligare arbete. Mer information finns i Registrera DirectShow-filter.
I moduldefinitionsfilen (.def) exporterar du alla DLL-funktioner förutom startpunktsfunktionen. Följande är ett exempel på en .def-fil:
EXPORTS
DllGetClassObject PRIVATE
DllCanUnloadNow PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
Du kan registrera DLL:en med hjälp av verktyget Regsvr32.exe.
Relaterade ämnen
-
Skapa en DLL- för DirectShow-filter