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


IOCTL_NFCSE_GET_NEXT_EVENT IOCTL (nfcsedev.h)

Код элемента управления IOCTL_NFCSE_GET_NEXT_EVENT возвращает следующее событие, доступное в буфере, или, если буферизация событий больше отсутствует, остается в состоянии ожидания до тех пор, пока не будет доступно событие защищенного элемента. Затем сведения о событии должны быть возвращены вызывающей объекту.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

None

Длина входного буфера

None

Выходной буфер

Значение DWORD, указывающее размер структуры SECURE_ELEMENT_EVENT_INFO плюс ее полезные данные, за которым сразу же следует сама структура SECURE_ELEMENT_EVENT_INFO.

Блок состояния

Irp->IoStatus.Status имеет значение STATUS_SUCCESS , если запрос выполнен успешно. Возможные коды ошибок:

Код возврата Описание
STATUS_INVALID_DEVICE_STATE Этот код возвращается при вызове этого IOCTL для дескриптора устройства с именем файла, отличного от SEEvents, или при наличии еще одного ожидающего запроса, который еще не завершен.
STATUS_INVALID_PARAMETER Этот код возвращается, если выходной буфер не равен нулю или если GUID защищенного элемента не соответствует ни одному из перечисленных идентификаторов.

Комментарии

Ниже приведены требования, которым должен соответствовать драйвер.

  • Этот IOCTL должен вызываться для дескриптора с относительным именем файла SEEvents ; в противном случае драйвер возвращает STATUS_INVALID_DEVICE_STATE
  • Этот драйвер должен поддерживать CancelIO для этого ожидающего IOCTL.
  • Этот драйвер должен поддерживать очередь полученных событий защищенного элемента, которые соответствуют типу подписки.
  • При получении этого IOCTL в драйвере должны выполняться следующие условия:
    • Если полученная очередь пуста, драйвер должен настроить IOCTL для последующего завершения.
    • Если полученная очередь не пуста, драйвер должен удалить из очереди одно событие, скопировать буфер сообщений в выходной буфер IOCTL и немедленно завершить IOCTL с STATUS_SUCCESS .
  • Если драйвер завершает этот IOCTL с STATUS_SUCCESS, первый DWORD [4 байт] выходного буфера должен содержать размер структуры SECURE_ELEMENT_EVENT_INFO плюс ее полезные данные.
  • Если полученная информация о событии безопасного элемента слишком велика для копирования в буфер этого IOCTL, драйвер должен скопировать требуемый размер буфера в первые 4 байта выходного буфера, задать для поля сведений IOCTL значение sizeof(DWORD) и завершить IOCTL с помощью STATUS_BUFFER_OVERFLOW. Затем событие должно быть оставлено в очереди получения.

Требования

Требование Значение
Заголовок nfcsedev.h