EasyUniversal / DocsДокументация · SDK 0.3Подписка Universal ↗
Easy Universal / Справочник SDK

CUSTOM_PROVIDERS_RU.md

AngelScript · native runtime · локальная сборка

Собственный драйвер и провайдер

Драйвер с Easy ABI

Выберите пакет с process_read или process.scan, затем PID и разрешите
доступ к нему. В Settings укажите имя уже установленного устройства, например
\\.\MyDriver, затем включите Read through driver. Изменение имени сбрасывает
режим чтения. CLI в checkout разработки (TestHost не входит в клиентскую поставку):

bin/EasyUniversalTestHost.exe run PACKAGE --allow-process PID --process-backend driver --driver-device '\\.\MyDriver'

Драйвер обязан реализовать sdk/provider/protocol.h: READ_INFO версии 1,
capabilities READ_HANDLE, max_bytes 65536 и READ с форматом ответа из этого
заголовка. Клиент открывает устройство с GENERIC_READ и передаёт настоящий
унаследованный Windows PROCESS_VM_READ handle. Драйвер должен проверять права
этого handle в контексте вызывающего процесса. Имена pipe, файловые пути,
удалённые устройства и вложенные пути не принимаются. При несовместимом ABI
или отсутствии устройства запуск завершается до callbacks; fallback отсутствует.
Метаданные процесса и отдельно разрешённая запись остаются Windows-операциями.
Это подключение уже установленного устройства, не установка SYS.
Работа с живым сторонним драйвером ещё не подтверждена.

Другой ABI или гипервизор

Universal не угадывает чужие IOCTL и не загружает неизвестные бинарные плагины.
Для скалярной телеметрии собственный user-mode bridge реализует контракт
из EXTERNAL_SOURCE_RU.md. Исходный пример — sdk/provider/main.cpp;
заголовки драйверного ABI и read client находятся в той же папке.
Bridge может получать разрешённые данные от вашего драйвера/гипервизора;
Universal получает только описанные контрактом скаляры. В manifest укажите
external_source и source.read; для обновлений — source.write.
В Settings нажмите Choose provider, выберите запущенный bridge по имени/PID
и Load script. Pipe PID сверяется с выбранным процессом, источник соединяется
автоматически. Запись требует отдельного Allow provider writes.

Для чужого Process API backend потребуется отдельный адаптер его документированного
интерфейса или реализация Easy READ ABI на стороне этого драйвера. Необходимы
название backend, исходники/документация, IOCTL, структуры запросов/ответов,
модель разрешений и тестовая среда. Готовый универсальный адаптер к неизвестному
ABI отсутствует. Телеметрический bridge не предоставляет Process API.

Автоматические функции клиента

Load script автоматически разрешает GET только к точным manifest origins,
объявленную WT телеметрию и чтение явно выбранного скалярного провайдера.
Объявленный input работает после разрешения выбранного PID и только когда
его окно активно; отдельной кнопки Control active window нет. Без выбранного
PID ввод выключен. Необъявленные возможности не включаются.
POST, запись памяти, обновления провайдера, overlay и хранение настроек
по-прежнему требуют явного разрешения. CLI сохраняет явные flags.
Автоматическое разрешение не означает нулевое потребление памяти:
объявленные источники создают свои ограниченные очереди/состояние при запуске.

Easy Universal — отдельный проект. Easy External не изменён.