Бөлісу құралы:


Создание библиотеки DLL подключаемого модуля адаптера DualEngine

API DualEngine можно использовать только из процесса Обозреватель Интернета. Таким образом, чтобы использовать API DualEngine, необходимо создать подключаемый модуль DLL, который Обозреватель загружает Интернет. В этой библиотеке DLL размещается код, использующий API DualEngine, а также любой код, необходимый для взаимодействия с приложением main. Поэтому он называется адаптером.

Чтобы интернет-Обозреватель успешно загрузить библиотеку DLL, выполните указанные ниже действия.

Разблокировка функции ограниченного доступа

API DualEngine — это функция ограниченного доступа (LAF); то есть функция, которую необходимо разблокировать, прежде чем ее можно будет использовать. Дополнительные сведения о реализации см. в разделе Класс LimitedAccessFeatures. Чтобы запросить маркер разблокировки, обратитесь к служба поддержки Майкрософт.

API DualEngine не является типичным LAF, так как Windows.ApplicationModel.TryUnlockFeature он не используется для разблокировки функции. Это связано с тем, что LAF обычно использует удостоверение приложения вызывающего процесса для предоставления доступа, а в качестве библиотеки DLL подключаемого модуля это всегда будет интернет-Обозреватель. Поэтому, чтобы разблокировать API, необходимо вызвать DualEngineSessionFactory::TryUnlockFeature.

Кроме того, удостоверение приложения должно быть предоставлено в Интернет Обозреватель через определенную строку ресурса, заданную в библиотеке DLL. Значение в файле ресурсов можно задать следующим образом:

IDENTITY LIMITEDACCESSFEATURE { L"ExampleApp_6v1kqc8g0gcae" }

Определенная строка удостоверения будет предоставлена вам корпорацией Майкрософт при предоставлении доступа LAF.

Реализация экспорта функций

Библиотека DLL адаптера должна реализовывать следующие функции экспорта:

  • DualEngineInitialize
  • DualEngineReady

Эти экспорты вызываются интернет-Обозреватель при загрузке библиотеки DLL. Они предоставляют объекты фабрики для создания объектов API DualEngine.

Эти экспорты вызываются из main потока процесса Обозреватель Интернета, поэтому выполнение любой долгосрочной обработки в экспорте приведет к остановке интернет-Обозреватель. Поэтому для обработки любой длительной работы необходимо создать новый поток.

DualEngineInitialize

HRESULT APIENTRY DualEngineInitialize(DualEngineSessionFactory* pSessionFactory, PCWSTR pipeName)
Параметры
  • pSessionFactory Объект фабрики, используемый для доступа к API DualEngine.
  • pipeNameСтрока, переданная в Интернет Обозреватель через флаг командной -DualEnginePipe строки.

Этот экспорт вызывается сразу после того, как интернет-Обозреватель успешно загрузит библиотеку DLL. Это ваш первый шанс настроить все необходимое для приложения.

Здесь обычно настраивается обмен данными между библиотекой DLL адаптера и ведущим приложением. Для pipeName этой цели предоставляется строка. Несмотря на свое имя, pipeName строка не обязательно должна быть именем канала. Это просто строка, которая передается адаптеру на основе значения флага командной строки, с помощью которого был запущен интернет-Обозреватель, и не имеет другого -DualEnginePipe семантического значения.

pSessionFactory Хотя объект предоставляется в этом вызове, вызывать его пока нельзяGetVersionedBrowserSession, так как на данный момент интернет-Обозреватель не готов к созданию сеансов.

DualEngineReady

HRESULT APIENTRY DualEngineReady()

Этот экспорт вызывается после того, как интернет-Обозреватель завершит всю первоначальную настройку и API будет готов к использованию. Теперь можно вызвать GetVersionedBrowserSession и получить объект Session, если был выполнен успешный вызов TryUnlockFeature .

Обход подписывания библиотеки DLL адаптера

Интернет-Обозреватель требуется, чтобы для загрузки библиотеки DLL адаптера она должна быть подписана доверенной подписью. В целях тестирования и разработки эту проверка можно обойти, включив TestSigning для устройства, на которое выполняется тестирование, следующим образом:

Bcdedit.exe -set TESTSIGNING ON