Partilhar via


Criar um plug-in de adaptador DualEngine DLL

A API DualEngine só pode ser utilizada a partir do processo de Explorer Da Internet. Por conseguinte, para utilizar a API DualEngine, tem de criar uma DLL de plug-in que a Internet Explorer carregar. Esta DLL aloja o código que utiliza a API DualEngine, bem como qualquer código necessário para comunicar com a sua aplicação principal; é por isso que é referido como o adaptador.

Para que a Internet Explorer carregue com êxito a DLL, faça o seguinte.

Desbloquear a Funcionalidade de Acesso Limitado

A API DualEngine é uma Funcionalidade de Acesso Limitado (LAF); ou seja, uma funcionalidade que tem de ser desbloqueada antes de poder ser utilizada. Para obter mais informações sobre a implementação, veja LimitedAccessFeatures Class (Classe LimitedAccessFeatures). Para pedir um token de desbloqueio, contacte Suporte da Microsoft.

A API DualEngine não é uma LAF típica, uma vez que Windows.ApplicationModel.TryUnlockFeature não é utilizada para desbloquear a funcionalidade. Isto acontece porque, normalmente, a LAF utiliza a identidade da aplicação do processo de chamada para conceder acesso e, como DLL de plug-in, esta será sempre a Internet Explorer. Por conseguinte, para desbloquear a API, tem de chamar DualEngineSessionFactory::TryUnlockFeature.

Além disso, a identidade da sua aplicação tem de ser fornecida à Internet Explorer através de uma cadeia de recursos específica definida na DLL. Pode definir o valor no ficheiro de recursos da seguinte forma:

IDENTITY LIMITEDACCESSFEATURE { L"ExampleApp_6v1kqc8g0gcae" }

A sua cadeia de identidade específica será-lhe fornecida pela Microsoft quando for concedido acesso à LAF.

Implementar exportações de funções

A DLL do adaptador tem de implementar as seguintes exportações de funções:

  • DualEngineInitialize
  • DualEngineReady

Estas exportações são chamadas pela Internet Explorer ao carregar a DLL. Fornecem-lhe os objetos de fábrica para criar objetos da API DualEngine.

Estas exportações são chamadas a partir do tópico principal do processo de Explorer Internet, pelo que qualquer processamento a longo prazo dentro das exportações irá parar a Internet Explorer. Por conseguinte, para processar qualquer trabalho de execução prolongada, deve criar um novo thread.

DualEngineInitialize

HRESULT APIENTRY DualEngineInitialize(DualEngineSessionFactory* pSessionFactory, PCWSTR pipeName)
Parâmetros
  • pSessionFactory O objeto de fábrica a utilizar para aceder à API DualEngine.
  • pipeNameUma cadeia que foi transmitida para a Internet Explorer através do sinalizador da -DualEnginePipe linha de comandos.

Esta exportação é chamada imediatamente após a Internet Explorer carregar com êxito a DLL. Esta é a primeira oportunidade para configurar tudo o que for necessário para a sua aplicação.

É aqui que normalmente configuraria a comunicação entre a DLL do adaptador e a aplicação anfitriã. A pipeName cadeia é fornecida para esta finalidade. Apesar do nome, a pipeName cadeia não precisa de ser um nome de pipe; é simplesmente uma cadeia que é transmitida ao adaptador com base no valor do sinalizador da -DualEnginePipe linha de comandos com o qual a Internet Explorer foi iniciada e não tem outro significado semântico.

Apesar de o pSessionFactory objeto ser fornecido nesta chamada, ainda não é válido efetuar uma chamada GetVersionedBrowserSession porque, neste momento, a Internet Explorer não está pronta para criar Sessões.

DualEngineReady

HRESULT APIENTRY DualEngineReady()

Esta exportação é chamada depois de a Internet Explorer ter concluído toda a configuração inicial e a API estar pronta para ser utilizada. Agora é possível ligar GetVersionedBrowserSession e obter o objeto Sessão, partindo do princípio de que foi feita uma chamada TryUnlockFeature com êxito.

Ignorar a assinatura da DLL do adaptador

A Internet Explorer tem um requisito de que, para que uma DLL de adaptador seja carregada, tem de ser assinada com uma assinatura fidedigna. Para fins de teste e desenvolvimento, este marcar pode ser ignorado ao ativar TestSigning o dispositivo no qual está a testar, da seguinte forma:

Bcdedit.exe -set TESTSIGNING ON