функция обратного вызова EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION (sercx.h)
Функция обратного вызова событий EvtSerCx2PioTransmitEnableReadyNotification функция обратного вызова событий вызывается версией 2 расширения последовательной платформы (SerCx2), чтобы разрешить драйверу последовательного контроллера уведомлять SerCx2, когда передача FIFO в последовательном контроллере готова принять дополнительные данные.
Синтаксис
EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION EvtSercx2PioTransmitEnableReadyNotification;
void EvtSercx2PioTransmitEnableReadyNotification(
[in] SERCX2PIOTRANSMIT PioTransmit
)
{...}
Параметры
[in] PioTransmit
Дескриптор SERCX2PIOTRANSMIT объекту PIO-передачи. Драйвер последовательного контроллера, ранее называемый методом SerCx2PioTransmitCreate для создания этого объекта.
Возвращаемое значение
Никакой
Замечания
Драйвер последовательного контроллера должен реализовать эту функцию. Драйвер регистрирует функцию в вызове SerCx2PioTransmitCreate, который создает объект piO-передачи.
Если включено готовое уведомление о транзакциях передачи piO,драйвер последовательного контроллера должен вызвать метод SerCx2PioTransmitReady, чтобы уведомить SerCx2, когда драйвер обнаруживает, что передача FIFO в оборудовании последовательного контроллера готова принять дополнительные данные. Если передача FIFO готова принять данные при включении готового уведомления, драйвер немедленно вызывает этот метод, чтобы уведомить SerCx2.
Готовое уведомление для транзакции передачи пино-данных — это однократное уведомление. После отправки готового уведомления в SerCx2 драйвер последовательного контроллера не отправляет никаких дополнительных уведомлений, пока SerCx2 не вызывает функцию EvtSerCx2PioTransmitEnableReadyNotification, чтобы включить другое уведомление.
Вызов функции EvtSerCx2PioTransmitWriteBuffer может частично завершить транзакцию передачи PIO, так как в передаче FIFO больше места не доступно для записи дополнительных данных. В этом случае SerCx2 вызывает функцию EvtSerCx2PioTransmitEnableReadyNotification, чтобы включить готовое уведомление, в этом случае драйвер последовательного контроллера должен уведомить SerCx2, когда передача FIFO имеет место для получения дополнительных данных. В ответ на это уведомление SerCx2 возобновляет частично завершенную транзакцию передачи, вызвав функцию EvtSerCx2PioTransmitWriteBuffer.
Как правило, функция EvtSerCx2PioTransmitEnableReadyNot ification позволяет прерывание, возникающее при готовности передачи FIFO в последовательном контроллере принимать больше данных. В ответ на это прерывание драйвер последовательного контроллера вызывает SerCx2PioTransmitReady.
За раз не более одного готового уведомления может находиться в ожидании. SerCx2 никогда не вызывает функцию EvtSerCx2PioTransmitEnableReadyNotification, если готовое уведомление уже включено.
SerCx2 никогда не вызывает функцию EvtSerCx2PioTransmitWriteBuffer при включении готового уведомления.
Ожидающее готовое уведомление может быть отменено, если связанный запрос на запись истекает или отменен. Чтобы отменить готовое уведомление для транзакции передачи PIO, SerCx2 вызывает функцию обратного вызова события EvtSerCx2PioTransmitCancelReadyNotification функции обратного вызова событий.
Дополнительные сведения см. в разделе SerCx2 PIO-Transmit Транзакций.
Примеры
Чтобы определить функцию обратного вызова EvtSerCx2PioTransmitEnableReadyNotification, необходимо сначала указать объявление функции, определяющее тип определяемой функции обратного вызова. Windows предоставляет набор типов функций обратного вызова для драйверов. Объявление функции с помощью типов функций обратного вызова помогает анализ кода для драйверов, статический проверяющий драйвер (SDV) и другие средства проверки подлинности, и это требование для написания драйверов для операционной системы Windows.
Например, чтобы определить функцию обратного вызова EvtSerCx2PioTransmitEnableReadyNotification, которая называется MyPioTransmitEnableReadyNotification
, используйте тип функции EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION, как показано в этом примере кода:
EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION MyPioTransmitEnableReadyNotification;
Затем реализуйте функцию обратного вызова следующим образом:
_Use_decl_annotations_
VOID
MyPioTransmitEnableReadyNotification(
SERCX2PIOTRANSMIT PioTransmit
)
{...}
Тип функции EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION определен в файле заголовка Sercx.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте в определение функции заметку Use_decl_annotations. Заметка Use_decl_annotations гарантирует, что используются заметки, применяемые к типу функции EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в объявлении функций с помощью типов ролей функций для драйверов KMDF. Дополнительные сведения о
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 8.1. |
целевая платформа | Настольный |
заголовка | sercx.h |
IRQL | Вызывается в IRQL <= DISPATCH_LEVEL. |