функция обратного вызова 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 |