функция обратного вызова EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO (sercx.h)

Функция обратного вызова события EvtSerCx2PioTransmitCancelDrainFifo вызывается версией 2 расширения последовательной платформы (SerCx2) для отмены предыдущего запроса на очистку передаваемого FIFO в оборудовании последовательного контроллера.

Синтаксис

EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO EvtSercx2PioTransmitCancelDrainFifo;

BOOLEAN EvtSercx2PioTransmitCancelDrainFifo(
  [in] SERCX2PIOTRANSMIT PioTransmit
)
{...}

Параметры

[in] PioTransmit

Дескриптор SERCX2PIOTRANSMIT объекту piO-передачи. Драйвер последовательного контроллера ранее вызывал метод SerCx2PioTransmitCreate для создания этого объекта.

Возвращаемое значение

Функция EvtSerCx2PioTransmitCancelDrainFifo возвращает значение TRUE , если успешно отменяет запрос на очистку, а драйвер последовательного контроллера может гарантировать, что он не вызовет метод SerCx2PioTransmitDrainFifoComplete , чтобы уведомить SerCx2 о том, что FIFO истощается. В противном случае эта функция возвращает значение FALSE , чтобы указать, что драйвер уже вызвал или вот-вот вызовет SerCx2PioTransmitDrainFifoComplete.

Комментарии

Драйвер последовательного контроллера может, как вариант, реализовать эту функцию. При реализации драйвер регистрирует функцию в вызове SerCx2PioTransmitCreate , который создает объект передачи PIO.

Драйвер должен реализовать функцию EvtSerCx2PioTransmitCancelDrainFifo , если последовательный контроллер имеет аппаратный FIFO (или аналогичный механизм буферизации) для хранения передаваемых данных. Если драйвер реализует эту функцию, он также должен реализовать функции обратного вызова событий EvtSerCx2PioTransmitDrainFifo и EvtSerCx2PioTransmitPurgeFifo .

SerCx2 вызывает функцию обратного вызова события EvtSerCx2PioTransmitDrainFifo , чтобы попросить драйвер последовательного контроллера слить передачу FIFO, а затем ожидает, пока драйвер последовательного контроллера вызовет SerCx2PioTransmitDrainFifoComplete. Для завершения операции стока может потребоваться неопределенное время. Таким образом, если время ожидания запроса на запись истекает или отменено во время выполнения операции очистки, SerCx2 вызывает функцию EvtSerCx2PioTransmitCancelDrainFifo , чтобы отменить ожидающие операции стока до ее завершения.

Дополнительные сведения см. в разделе SerCx2 PIO-Transmit Transactions.

Примеры

Чтобы определить функцию обратного вызова EvtSerCx2PioTransmitCancelDrainFifo , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции обратного вызова. Windows предоставляет набор типов функций обратного вызова для драйверов. Объявление функции с помощью типов функций обратного вызова помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию обратного вызова EvtSerCx2PioTransmitCancelDrainFifo с именем MyPioTransmitCancelDrainFifo, используйте тип функции EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO , как показано в следующем примере кода:

EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO  MyPioTransmitCancelDrainFifo;

Затем реализуйте функцию обратного вызова следующим образом:

_Use_decl_annotations_
BOOLEAN
  MyPioTransmitCancelDrainFifo(
    SERCX2PIOTRANSMIT  PioTransmit
    )
  {...}

Тип функции EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO определен в файле заголовка Sercx.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, применяемых к типу функции EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов KMDF. Дополнительные сведения о Use_decl_annotations см. в статье О поведении функции.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 8.1.
Целевая платформа Персональный компьютер
Верхняя часть sercx.h
IRQL Вызывается по адресу IRQL <= DISPATCH_LEVEL.

См. также раздел

EvtSerCx2PioTransmitDrainFifo

EvtSerCx2PioTransmitPurgeFifo

IOCTL_SERIAL_PURGE

IRP_MJ_WRITE

SERCX2PIOTRANSMIT

SerCx2PioTransmitCreate

SerCx2PioTransmitDrainFifoComplete