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


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

Функция обратного вызова события EvtSerCxTransmit подготавливает устройство последовательного контроллера (UART) к выполнению операции записи (передачи).

Синтаксис

EVT_SERCX_TRANSMIT EvtSercxTransmit;

NTSTATUS EvtSercxTransmit(
  [in] WDFDEVICE Device,
  [in] size_t Length
)
{...}

Параметры

[in] Device

Дескриптор WDFDEVICE для объекта устройства платформы, представляющего последовательный контроллер.

[in] Length

Количество передаваемых байтов. Драйвер контроллера может использовать это значение в качестве подсказки, чтобы решить, следует ли использовать PIO или DMA для передачи данных.

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

Функция EvtSerCxTransmit возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае возвращается соответствующий код состояния ошибки.

Комментарии

Расширение последовательной платформы (SerCx) вызывает эту функцию для настройки оборудования последовательного контроллера для передачи данных. При необходимости функция EvtSerCxTransmit может включить прерывания.

Функция EvtSerCxTransmit не обязательно записывает выходные данные в буфер FIFO передачи. В зависимости от оборудования последовательного контроллера или типа передачи эта функция может настроить операцию DMA для записи данных или запланировать функцию передачи и получения DPC для записи данных. Драйвер последовательного контроллера реализует эту функцию DPC для передачи данных в последовательный контроллер и получения данных от контроллера. Во время DPC функция DPC определяет, доступны ли данные для передачи, и, если да, использует PIO для передачи данных в FIFO в последовательном контроллере.

Если передача FIFO в последовательном контроллере заполнена или почти заполнена, но включено прерывание FIFO с низким уровнем воды, функция EvtSerCxTransmit может просто вернуть. Позже ISR драйвера контроллера может запланировать выполнение функции DPC передачи и приема, и эта функция может передавать больше выходных данных в передаточную функцию FIFO.

Чтобы зарегистрировать функцию обратного вызова EvtSerCxTransmit , драйвер контроллера вызывает метод SerCxInitialize во время обратного вызова EvtDriverDeviceAdd .

Примеры

Тип функции для этого обратного вызова объявлен в Sercx.h, как показано ниже.

typedef NTSTATUS
  EVT_SERCX_TRANSMIT(
    __in WDFDEVICE Device
    );

Чтобы определить функцию обратного вызова EvtSerCxTransmit с именем MyEvtSerCxTransmit, необходимо сначала предоставить объявление функции, которое требуется для статического средства проверки драйверов (SDV) и других средств проверки, как показано ниже.

EVT_SERCX_TRANSMIT MyEvtSerCxTransmit;

Затем реализуйте функцию обратного вызова, как показано ниже.

NTSTATUS
  MyEvtSerCxTransmit(
    __in WDFDEVICE Device
    )
{ ... }

Дополнительные сведения о требованиях SDV для объявлений функций см. в статье Объявление функций с помощью типов ролей функций для драйверов KMDF.

Требования

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

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

EvtDriverDeviceAdd

SerCxInitialize

WdfDpcEnqueue