Поделиться через


Интерфейс устройства NFP

Клиентское приложение взаимодействует с устройством близкого взаимодействия с помощью определенного набора кодов управления ввода-вывода, отправленных в открытый дескриптор.

Дескриптор публикации и подписки

Каждая публикация и каждая подписка представлены как открытый дескриптор драйвера. Поэтому публикации M и подписки N приравниваются к открытым дескрипторам M+N к драйверу. Диспетчер операций ввода-вывода Windows будет применять разумные ограничения количества дескрипторов для процессов.

Универсальные дескрипторы имен ФАЙЛОВ NULL

Универсальный дескриптор файлов открыт для отправки запросов, не относящихся к публикации, и не подписок драйверу. Этот тип дескриптора должен быть принят. Клиент будет использовать этот дескриптор для определения максимального размера сообщения и скорости передачи драйвера.

Поддержка IOCTL

IoCTLs, поддерживающие интерфейс драйвера близкого взаимодействия, определяются в Nfpdev.h. Коды элементов управления определяются следующими атрибутами.

  • METHOD_BUFFERED
  • FILE_ANY_ACCESS
  • FILE_DEVICE_NFP

Каждая публикация и каждая подписка манифестируются как собственный открытый дескриптор драйверу. Поэтому публикации M и подписки N приравниваются к открытым дескрипторам M+N к драйверу. Диспетчер операций ввода-вывода Windows будет применять разумные ограничения количества дескрипторов для процессов.

Коды IOCTL определяются в заголовке Nfpdev.h

Дескриптор безопасности устройства остается в качестве класса ОС или устройства по умолчанию.

Коды IOCTL зарезервированных и поставщиков

В следующей таблице описаны зарезервированные и определенные диапазоны кода кода поставщика.

Тип Начало диапазона Конец диапазона
Зарезервировано CTL_CODE(FILE_DEVICE_NFP, 0x0000, *, *) CTL_CODE(FILE_DEVICE_NFP, 0x00FF, *, *)
Конкретный поставщик CTL_CODE(FILE_DEVICE_NFP, 0x0100, *, *) CTL_CODE(FILE_DEVICE_NFP, 0x01FF, *, *)