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