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


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

Функция обратного вызова события EvtSerCxPurge вызывается расширением последовательной платформы (SerCx) для очистки аппаратных буферов последовательного контроллера.

Синтаксис

EVT_SERCX_PURGE EvtSercxPurge;

NTSTATUS EvtSercxPurge(
  [in] WDFDEVICE Device,
  [in] ULONG PurgeMask
)
{...}

Параметры

[in] Device

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

[in] PurgeMask

Набор флагов, описывающих аппаратные буферы, которые необходимо очистить. В настоящее время флаги для операций очистки, выполняемых последовательным контроллером, не определены. Дополнительные сведения см. в подразделе "Примечания".

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

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

Комментарии

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

SerCx выполняет операции очистки, обозначенные флагами, перечисленными в следующей таблице.

Бит флага Значение
SERIAL_PURGE_RXABORT Очистка всех запросов на чтение.
SERIAL_PURGE_RXCLEAR Очистите входной буфер, если он существует. Все получаемые данные в этом буфере удаляются.
SERIAL_PURGE_TXABORT Очистка всех запросов на запись.
SERIAL_PURGE_TXCLEAR Очистите выходной буфер, если он существует. Все передаваемые данные в этом буфере удаляются.
 

Функция EvtSerCxPurge никогда не получит запрос на очистку, содержащий флаги в этой таблице. Флаги SERIAL_PURGE_XXX определяются в файле заголовка Ntddser.h.

В настоящее время флаги SERIAL_PURGE_XXX не определены для обозначения операций очистки, выполняемых драйвером последовательного контроллера, и драйвер последовательного контроллера не должен выполнять никаких операций очистки в ответ на вызов EvtSerCxPurge .

Если запрос IOCTL_SERIAL_PURGE управления требует отмены ожидающих запросов на чтение или запись, SerCx отменяет эти запросы перед вызовом функции EvtSerCxPurge .

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

Примеры

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

typedef NTSTATUS
  EVT_SERCX_PURGE(
    __in WDFDEVICE Device,
    __in ULONG PurgeMask
    );

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

EVT_SERCX_PURGE MyEvtSerCxPurge;

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

NTSTATUS
  MyEvtSerCxPurge(
    __in WDFDEVICE Device,
    __in ULONG PurgeMask
    )
{ ... }

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

Требования

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

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

EvtDriverDeviceAdd

IOCTL_SERIAL_PURGE

SerCxInitialize