Erstellen einer DualEngine-Adapter-Plug-In-DLL
Die DualEngine-API kann nur innerhalb des Internets Explorer Verwendet werden. Daher müssen Sie für die Verwendung der DualEngine-API eine Plug-In-DLL erstellen, die von internet Explorer geladen wird. Diese DLL hostet Ihren Code, der die DualEngine-API verwendet, sowie jeglichen Code, der für die Kommunikation mit Ihrer Standard-Anwendung benötigt wird. Deshalb wird er als Adapter bezeichnet.
Gehen Sie wie folgt vor, damit internet Explorer ihre DLL erfolgreich laden.
Entsperren des Features für eingeschränkten Zugriff
Die DualEngine-API ist ein Feature mit eingeschränktem Zugriff (Limited Access Feature, LAF). d. h. ein Feature, das entsperrt werden muss, bevor es verwendet werden kann. Weitere Informationen zur Implementierung finden Sie unter LimitedAccessFeatures-Klasse. Wenden Sie sich an Microsoft-Support, um ein Entsperrtoken anzufordern.
Die DualEngine-API ist keine typische LAF, da sie Windows.ApplicationModel.TryUnlockFeature
nicht zum Entsperren des Features verwendet wird. Dies liegt daran, dass LAF in der Regel die Anwendungsidentität des aufrufenden Prozesses verwendet, um Zugriff zu gewähren, und als Plug-In-DLL ist dies immer internet Explorer. Daher müssen Sie zum Entsperren der API DualEngineSessionFactory::TryUnlockFeature aufrufen.
Darüber hinaus muss die Identität Ihrer Anwendung dem Internet Explorer über eine bestimmte Ressourcenzeichenfolge bereitgestellt werden, die in Ihrer DLL festgelegt ist. Sie können den Wert in Ihrer Ressourcendatei wie folgt festlegen:
IDENTITY LIMITEDACCESSFEATURE { L"ExampleApp_6v1kqc8g0gcae" }
Ihre spezifische Identitätszeichenfolge wird Ihnen von Microsoft bereitgestellt, wenn laf-Zugriff gewährt wird.
Implementieren von Funktionsexporten
Ihre Adapter-DLL muss die folgenden Funktionsexporte implementieren:
DualEngineInitialize
DualEngineReady
Diese Exporte werden vom Internet Explorer beim Laden Der DLL aufgerufen. Sie stellen Ihnen die Factoryobjekte zum Erstellen von DualEngine-API-Objekten zur Verfügung.
Diese Exporte werden aus dem Standard Thread des Internet-Explorer-Prozesses aufgerufen, sodass die langfristige Verarbeitung innerhalb der Exporte das Internet Explorer. Daher sollten Sie einen neuen Thread erstellen, um alle zeitintensiven Aufgaben zu verarbeiten.
DualEngineInitialize
HRESULT APIENTRY DualEngineInitialize(DualEngineSessionFactory* pSessionFactory, PCWSTR pipeName)
Parameter
-
pSessionFactory
Das Factoryobjekt, das für den Zugriff auf die DualEngine-API verwendet werden soll. -
pipeName
Eine Zeichenfolge, die über das Befehlszeilenflag an internet-DualEnginePipe
Explorer übergeben wurde.
Dieser Export wird unmittelbar nach dem erfolgreichen Laden der DLL in internet Explorer aufgerufen. Dies ist Ihre erste Chance, alles einzurichten, was für Ihre Anwendung erforderlich ist.
Hier richten Sie in der Regel die Kommunikation zwischen der Adapter-DLL und Ihrer Host-App ein. Die pipeName
Zeichenfolge wird zu diesem Zweck bereitgestellt. Trotz ihres Namens muss die pipeName
Zeichenfolge kein Pipename sein. Es handelt sich lediglich um eine Zeichenfolge, die basierend auf dem Wert des -DualEnginePipe
Befehlszeilenflags, mit dem Internet Explorer gestartet wurde, an Ihren Adapter übergeben wird und keine andere semantische Bedeutung hat.
Obwohl das pSessionFactory
-Objekt in diesem Aufruf bereitgestellt wird, ist es noch nicht gültig, aufzurufenGetVersionedBrowserSession
, da zu diesem Zeitpunkt internet Explorer nicht bereit ist, Sitzungen zu erstellen.
DualEngineReady
HRESULT APIENTRY DualEngineReady()
Dieser Export wird aufgerufen, nachdem das Internet Explorer die gesamte anfängliche Einrichtung abgeschlossen hat und die API einsatzbereit ist. Es ist jetzt möglich, das Session-Objekt aufzurufen GetVersionedBrowserSession
und abzurufen, sofern ein erfolgreicher Aufruf von TryUnlockFeature
erfolgt ist.
Umgehen des Signierens der Adapter-DLL
Internet Explorer erfordert, dass eine Adapter-DLL mit einer vertrauenswürdigen Signatur signiert werden muss, damit sie geladen werden kann. Zu Test- und Entwicklungszwecken kann diese Überprüfung umgangen werden, indem sie für das Gerät, auf dem Sie testen, wie folgt aktiviert TestSigning
wird:
Bcdedit.exe -set TESTSIGNING ON