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


IOCTL_NFCSE_GET_NEXT_EVENT IOCTL (nfcsedev.h)

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

Основной код

IRP_MJ_DEVICE_CONTROL

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

Никакой

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

Никакой

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

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