Compartir vía


Creación de un archivo DLL del complemento de adaptador de DualEngine

La API DualEngine solo se puede usar desde dentro del proceso de Internet Explorer. Por lo tanto, para usar la API DualEngine, debe crear un archivo DLL de complemento que carga Internet Explorer. Este archivo DLL hospeda el código que usa la API DualEngine, así como cualquier código que sea necesario para comunicarse con la aplicación principal; es por eso que se conoce como adaptador.

Para que Internet Explorer cargue correctamente el archivo DLL, haga lo siguiente.

Desbloquear la característica de acceso limitado

La API DualEngine es una característica de acceso limitado (LAF); es decir, una característica que debe desbloquearse antes de que se pueda usar. Para obtener más información sobre la implementación, vea LimitedAccessFeatures (clase). Para solicitar un token de desbloqueo, póngase en contacto con Soporte técnico de Microsoft.

La API DualEngine no es una LAF típica, ya que Windows.ApplicationModel.TryUnlockFeature no se usa para desbloquear la característica. Esto se debe a que LAF normalmente usa la identidad de la aplicación del proceso de llamada para conceder acceso y, como dll de complemento, siempre será Internet Explorer. Por lo tanto, para desbloquear la API, debe llamar a DualEngineSessionFactory::TryUnlockFeature.

Además, la identidad de la aplicación debe proporcionarse a Internet Explorer a través de una cadena de recursos específica establecida en el archivo DLL. Puede establecer el valor en el archivo de recursos de la siguiente manera:

IDENTITY LIMITEDACCESSFEATURE { L"ExampleApp_6v1kqc8g0gcae" }

Microsoft le proporcionará una cadena de identidad específica cuando se conceda acceso a LAF.

Implementación de exportaciones de funciones

El archivo DLL del adaptador debe implementar las siguientes exportaciones de función:

  • DualEngineInitialize
  • DualEngineReady

Internet Explorer llama a estas exportaciones al cargar el archivo DLL. Proporcionan los objetos de fábrica para crear objetos de LA API DualEngine.

Estas exportaciones se llaman desde el subproceso principal del proceso de Internet Explorer, por lo que cualquier procesamiento a largo plazo dentro de las exportaciones detendrá Internet Explorer. Por lo tanto, para controlar cualquier trabajo de ejecución prolongada, debe crear un nuevo subproceso.

DualEngineInitialize

HRESULT APIENTRY DualEngineInitialize(DualEngineSessionFactory* pSessionFactory, PCWSTR pipeName)
Parameters
  • pSessionFactory Objeto de fábrica que se va a usar para acceder a la API DualEngine.
  • pipeName Cadena que se pasó a Internet Explorer a través de la marca de línea -DualEnginePipe de comandos.

Se llama a esta exportación inmediatamente después de que Internet Explorer cargue correctamente el archivo DLL. Esta es la primera oportunidad de configurar todo lo necesario para la aplicación.

Aquí es donde normalmente configuraría la comunicación entre el archivo DLL del adaptador y la aplicación host. La pipeName cadena se proporciona para este propósito. A pesar de su nombre, la pipeName cadena no necesita ser un nombre de canalización; es simplemente una cadena que se pasa al adaptador en función del valor de la marca de línea de comandos con la -DualEnginePipe que se inició Internet Explorer y no tiene ningún otro significado semántico.

Aunque el pSessionFactory objeto se proporciona en esta llamada, aún no es válido llamar GetVersionedBrowserSession a, porque en este momento, Internet Explorer no está listo para crear sesiones.

DualEngineReady

HRESULT APIENTRY DualEngineReady()

Esta exportación se llama después de que Internet Explorer haya terminado toda su configuración inicial y la API esté lista para usarse. Ahora es posible llamar GetVersionedBrowserSession y obtener el objeto Session, suponiendo que se haya realizado una llamada correcta a TryUnlockFeature .

Omitir la firma del archivo DLL del adaptador

Internet Explorer tiene un requisito de que para que se cargue un archivo DLL de adaptador, debe estar firmado con una firma de confianza. Con fines de pruebas y desarrollo, esta comprobación se puede omitir si se activa TestSigning para el dispositivo en el que está realizando pruebas, como se indica a continuación:

Bcdedit.exe -set TESTSIGNING ON