Partage via


Création d’une DLL de plug-in d’adaptateur DualEngine

L’API DualEngine ne peut être utilisée qu’à partir du processus de Explorer Internet. Par conséquent, pour utiliser l’API DualEngine, vous devez créer une DLL de plug-in que Explorer Internet charge. Cette DLL héberge votre code qui utilise l’API DualEngine, ainsi que tout code nécessaire pour communiquer avec votre application main ; c’est pourquoi elle est appelée adaptateur.

Pour qu’Internet Explorer chargez correctement votre DLL, procédez comme suit.

Déverrouiller la fonctionnalité d’accès limité

L’API DualEngine est une fonctionnalité d’accès limité (LAF) ; c’est-à-dire, une fonctionnalité qui doit être déverrouillée avant de pouvoir être utilisée. Pour plus d’informations sur l’implémentation, consultez LimitedAccessFeatures, classe. Pour demander un jeton de déverrouillage, contactez Support Microsoft.

L’API DualEngine n’est pas un LAF classique, car Windows.ApplicationModel.TryUnlockFeature elle n’est pas utilisée pour déverrouiller la fonctionnalité. En effet, LAF utilise généralement l’identité d’application du processus appelant pour accorder l’accès, et en tant que DLL de plug-in, il s’agit toujours d’Internet Explorer. Par conséquent, pour déverrouiller l’API, vous devez appeler DualEngineSessionFactory ::TryUnlockFeature.

En outre, l’identité de votre application doit être fournie à Internet Explorer via une chaîne de ressource spécifique définie dans votre DLL. Vous pouvez définir la valeur dans votre fichier de ressources comme suit :

IDENTITY LIMITEDACCESSFEATURE { L"ExampleApp_6v1kqc8g0gcae" }

Votre chaîne d’identité spécifique vous est fournie par Microsoft lorsque l’accès LAF est accordé.

Implémenter des exportations de fonction

Votre DLL d’adaptateur doit implémenter les exportations de fonction suivantes :

  • DualEngineInitialize
  • DualEngineReady

Ces exportations sont appelées par internet Explorer lors du chargement de votre DLL. Ils vous fournissent les objets de fabrique pour créer des objets API DualEngine.

Ces exportations sont appelées à partir du thread de main du processus de Explorer Internet. Par conséquent, tout traitement à long terme à l’intérieur des exportations arrêtera les Explorer Internet. Par conséquent, pour gérer tout travail de longue durée, vous devez créer un thread.

DualEngineInitialize

HRESULT APIENTRY DualEngineInitialize(DualEngineSessionFactory* pSessionFactory, PCWSTR pipeName)
Paramètres
  • pSessionFactory Objet de fabrique à utiliser pour accéder à l’API DualEngine.
  • pipeNameChaîne transmise à Internet Explorer via l’indicateur -DualEnginePipe de ligne de commande.

Cette exportation est appelée immédiatement après qu’Internet Explorer a correctement chargé la DLL. Il s’agit de votre première chance de configurer tout ce qui est nécessaire pour votre application.

C’est là que vous configurez généralement la communication entre la DLL de l’adaptateur et votre application hôte. La pipeName chaîne est fournie à cet effet. Malgré son nom, la pipeName chaîne n’a pas besoin d’être un nom de canal ; il s’agit simplement d’une chaîne transmise à votre adaptateur en fonction de la valeur de l’indicateur -DualEnginePipe de ligne de commande avec lequel Internet Explorer a été lancé et n’a aucune autre signification sémantique.

Bien que l’objet pSessionFactory soit fourni dans cet appel, il n’est pas encore valide pour appelerGetVersionedBrowserSession, car à ce stade, Internet Explorer n’est pas prêt à créer des sessions.

DualEngineReady

HRESULT APIENTRY DualEngineReady()

Cette exportation est appelée une fois qu’Internet Explorer a terminé toute sa configuration initiale et que l’API est prête à être utilisée. Il est désormais possible d’appeler GetVersionedBrowserSession et d’obtenir l’objet Session, en supposant qu’un appel à TryUnlockFeature a été effectué avec succès.

Ignorer la signature de la DLL de l’adaptateur

Internet Explorer exige que pour qu’une DLL d’adaptateur soit chargée, elle doit être signée avec une signature approuvée. À des fins de test et de développement, vous pouvez contourner cette case activée en activant TestSigning l’appareil sur lequel vous testez, comme suit :

Bcdedit.exe -set TESTSIGNING ON