функция обратного вызова EVT_SERCX_FILECLEANUP (sercx.h)
Функция обратного вызова события EvtSerCxFileCleanup уведомляет драйвер последовательного контроллера о том, что клиент закрыл последний дескриптор для объекта файла, представляющего устройство последовательного контроллера.
Синтаксис
EVT_SERCX_FILECLEANUP EvtSercxFilecleanup;
void EvtSercxFilecleanup(
[in] WDFDEVICE Device
)
{...}
Параметры
[in] Device
Дескриптор WDFDEVICE для объекта устройства платформы, представляющего последовательный контроллер.
Возвращаемое значение
None
Remarks
Эта функция может освободить определенные системные ресурсы, которые драйвер ранее выделил на время существования файлового объекта. В сочетании с функцией EvtSerCxFileClose функция EvtSerCxFileCleanup должна удалить устройство последовательного контроллера из состояния, в котором оно готово к приему и передаче данных. Функция EvtSerCxFileCleanup должна сосредоточиться на задачах очистки, таких как освобождение памяти.
Если драйвер последовательного контроллера ранее выделял память только на время существования закрытого файлового объекта, драйвер должен освободить эту память в функции EvtSerCxFileCleanup или EvtSerCxFileClose .
Как правило, прерывания следует отключать только после освобождения файлового объекта. Таким образом, функция EvtSerCxFileClose , а не функция EvtSerCxFileCleanup , должна отключить прерывания.
SerCx вызывает функцию EvtSerCxFileCleanup драйвера после закрытия последнего дескриптора объекта файла. Из-за невыполненных запросов ввода-вывода этот объект может еще не быть освобожден. После этого вызова драйвер не получает новых запросов для операций ввода-вывода.
SerCx вызывает функцию EvtSerCxFileClose драйвера после вызова функции EvtSerCxFileCleanup драйвера. SerCx вызывает функцию EvtSerCxFileClose после освобождения объекта файла, которая возникает только при выполнении или отмене всех невыполненных запросов ввода-вывода.
Функция EvtSerCxFileCleanup является необязательной. Если драйвер последовательного контроллера не реализует эту функцию, функция EvtSerCxFileClose драйвера должна обрабатывать все задачи очистки, необходимые после закрытия последнего дескриптора файла.
Чтобы зарегистрировать функцию обратного вызова EvtSerCxFileCleanup , драйвер должен вызвать метод SerCxInitialize .
Дополнительные сведения см. в разделе Объекты файлов платформы.
Примеры
Тип функции для этого обратного вызова объявлен в Sercx.h следующим образом.
typedef VOID
EVT_SERCX_FILECLEANUP(
__in WDFDEVICE Device
);
Чтобы определить функцию обратного вызова EvtSerCxFileCleanup с именем MyEvtSerCxFileCleanup
, необходимо сначала предоставить объявление функции, которое требуется для статического средства проверки драйверов (SDV) и других средств проверки, как показано ниже.
EVT_SERCX_FILECLEANUP MyEvtSerCxFileCleanup;
Затем реализуйте функцию обратного вызова следующим образом.
VOID
MyEvtSerCxFileCleanup(
__in WDFDEVICE Device
)
{ ... }
Дополнительные сведения о требованиях SDV для объявлений функций см. в статье Объявление функций с помощью типов ролей функций для драйверов KMDF.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows 8. |
Целевая платформа | Персональный компьютер |
Верхняя часть | sercx.h |
IRQL | Вызывается в IRQL <= DISPATCH_LEVEL |