функция обратного вызова 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 Транзакций.
Примеры
Чтобы определить функцию обратного вызова 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. Дополнительные сведения о
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 8.1. |
целевая платформа | Настольный |
заголовка | sercx.h |
IRQL | Вызывается в IRQL <= DISPATCH_LEVEL. |