Интерфейс устройства 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, *, *) |