функция обратного вызова EVT_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION (sercx.h)
Функция обратного вызова событий EvtSerCx2SystemDmaReceiveEnableNewDataNotification вызывается версией 2 расширения последовательной платформы (SerCx2), чтобы разрешить драйверу последовательного контроллера уведомлять SerCx2 о получении новых данных.
Синтаксис
EVT_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION EvtSercx2SystemDmaReceiveEnableNewDataNotification;
void EvtSercx2SystemDmaReceiveEnableNewDataNotification(
[in] SERCX2SYSTEMDMARECEIVE SystemDmaReceive
)
{...}
Параметры
[in] SystemDmaReceive
Дескриптор SERCX2SYSTEMDMARECEIVE объекту system-DMA-receive. Драйвер последовательного контроллера ранее вызвал метод SerCx2SystemDmaReceiveCreate для создания этого объекта.
Возвращаемое значение
Никакой
Замечания
Драйвер последовательного контроллера может реализовать эту функцию в качестве параметра. При реализации драйвер регистрирует функцию в вызове serCx2SystemDmaReceiveCreate, который создает объект system-DMA-receive.
После вызова функции EvtSerCx2SystemDmaReceiveEnableNewDataNotification для включения уведомления о новых данных для транзакции получения системы DMA, Драйвер последовательного контроллера должен вызвать метод SerCx2SystemDmaReceiveNewDataNotification, чтобы уведомить SerCx2, когда драйвер обнаруживает, что один или несколько байт полученных данных готовы к передаче или уже переданы системным контроллером DMA.
Уведомление о новых данных, включенное функцией EvtSerCx2SystemDmaReceiveEnableNewDataNotification является одноразовым уведомлением. После вызова этой функции драйвер последовательного контроллера отправляет уведомление о новых данных в SerCx2, пока не будет отправлено дополнительное уведомление, пока SerCx2 снова не вызовет функцию, чтобы включить другое уведомление.
Функция EvtSerCx2SystemDmaReceiveEnableNewDataNot ification, как правило, позволяет активировать прерывание, когда последовательный контроллер получает данные от периферийного устройства.
Не более одного уведомления о новых данных могут находиться в ожидании одновременно. Когда SerCx2 вызывает функцию EvtSerCx2SystemDmaReceiveEnableNewDataNotification, чтобы включить уведомление о новых данных, SerCx2 не вызывает эту функцию снова, пока драйвер контроллера не вызывает SerCx2SystemDmaReceiveNewDataNotification.
Ожидающее уведомление о новых данных может быть отменено, если связанный запрос на чтение истекает или отменяется. Чтобы отменить уведомление о новых данных для транзакции получения system-DMA-receive, SerCx2 вызывает функцию обратного вызова событий EvtSerCerCx2SystemDmaReceiveCancelNewDataNotification функцию обратного вызова событий. Драйвер, реализующий функцию EvtSerCx2SystemDmaReceiveEnableNewDataNotification, также должен реализовать функцию EvtSerCx2SystemDmaReceiveCancelNewDataNotification.
SerCx2 использует уведомления о новых данных для эффективного управления временем ожидания интервала, которые происходят при обработке запросов на чтение, обрабатываемых как транзакциях системного приема DMA.
Дополнительные сведения см. в разделе SerCx2 System-DMA-Receive Transactions.
Примеры
Чтобы определить функцию обратного вызова EvtSerCx2SystemDmaReceiveEnableNewDataNotification, необходимо сначала указать объявление функции, определяющее тип определяемой функции обратного вызова. Windows предоставляет набор типов функций обратного вызова для драйверов. Объявление функции с помощью типов функций обратного вызова помогает анализ кода для драйверов, статический проверяющий драйвер (SDV) и другие средства проверки подлинности, и это требование для написания драйверов для операционной системы Windows.
Например, чтобы определить функцию обратного вызова EvtSerCx2SystemDmaReceiveEnableNewDataNotification, которая называется MySystemDmaReceiveEnableNewDataNotification
, используйте тип функции EVT_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION, как показано в этом примере кода:
EVT_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION MySystemDmaReceiveEnableNewDataNotification;
Затем реализуйте функцию обратного вызова следующим образом:
_Use_decl_annotations_
VOID
MySystemDmaReceiveEnableNewDataNotification(
SERCX2SYSTEMDMARECEIVE SystemDmaReceive
)
{...}
Тип функции EVT_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION определен в файле заголовка Sercx.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте в определение функции заметку Use_decl_annotations. Заметка Use_decl_annotations гарантирует, что используются заметки, применяемые к типу функции EVT_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в объявлении функций с помощью типов ролей функций для драйверов KMDF. Дополнительные сведения о
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 8.1. |
целевая платформа | Настольный |
заголовка | sercx.h |
IRQL | Вызывается в IRQL <= DISPATCH_LEVEL. |
См. также
EvtSerCx2SystemDmaReceiveCancelNewDataNotification