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


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

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

Синтаксис

EVT_SERCX_FILECLEANUP EvtSercxFilecleanup;

void EvtSercxFilecleanup(
  [in] WDFDEVICE Device
)
{...}

Параметры

[in] Device

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

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

Никакой

Замечания

Эта функция может освободить определенные системные ресурсы, которые драйвер ранее выделил для времени существования объекта файла. В сочетании с функцией evtSerCxFileClose функция EvtSerCerCxFileClean up должна удалить устройство последовательного контроллера из состояния, в котором он готов получать и передавать данные. Функция EvtSerCxFileCleanup должна сосредоточиться специально на задачах очистки, таких как выделение памяти.

Если драйвер последовательного контроллера ранее выделил память только для времени существования закрытого объекта файла, драйвер должен освободить эту память в EvtSerCerCxFileCleanup или функцию EvtSerCerCxFileClose.

Как правило, прерывания должны быть отключены только после освобождения объекта файла. Таким образом, функция EvtSerCxFileClose, а не функция EvtSerCerCxFileCleanup, должна отключить прерывания.

SerCx вызывает функцию драйвера EvtSerCxFileCleanup после закрытия последнего дескриптора объекта файла. Из-за невыполненных запросов ввода-вывода этот объект пока не будет выпущен. После этого вызова драйвер не получает новых запросов на операции ввода-вывода.

SerCx вызывает функцию драйвера EvtSerCxFileCl ose после вызова функции драйвера EvtSerCxFileCleanup. SerCx вызывает функцию EvtSerCxFileCl ose после освобождения объекта файла, которая возникает только при завершении или отмене всех невыполненных запросов ввода-вывода.

Функция EvtSerCxFileCleanup является необязательной. Если драйвер последовательного контроллера не реализует эту функцию, функция драйвера EvtSerCxFileClose должна обрабатывать все задачи очистки, необходимые после закрытия последнего дескриптора файла.

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

Дополнительные сведения см. в разделе Объектов файлов платформы.

Примеры

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

typedef VOID
  EVT_SERCX_FILECLEANUP(
    __in WDFDEVICE Device
    );

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

EVT_SERCX_FILECLEANUP MyEvtSerCxFileCleanup;

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

VOID
  MyEvtSerCxFileCleanup(
    __in WDFDEVICE Device
    )
{ ... }

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 8.
целевая платформа Настольный
заголовка sercx.h
IRQL Вызывается в IRQL <= DISPATCH_LEVEL

См. также

EvtSerCxFileClose

SerCxInitialize