Создание библиотеки 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