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


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

Функция обратного вызова событий EvtSerCxPur ge вызывается расширением последовательной платформы (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 во время обратного вызова EvtDriverDeviceAd d.

Примеры

Тип функции для этого обратного вызова объявлен в 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