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


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

Функция обратного вызова событий EvtSerCx2SystemDmaTransmitConfigureDmaChannel вызывается версией 2 расширения последовательной платформы (SerCx2), чтобы драйвер последовательного контроллера мог выполнять любую настраиваемую настройку адаптера DMA, который может потребоваться перед началом каждой передачи DMA в транзакции передачи данных в транзакции передачи данных системы DMA.

Синтаксис

EVT_SERCX2_SYSTEM_DMA_TRANSMIT_CONFIGURE_DMA_CHANNEL EvtSercx2SystemDmaTransmitConfigureDmaChannel;

NTSTATUS EvtSercx2SystemDmaTransmitConfigureDmaChannel(
  [in] SERCX2SYSTEMDMATRANSMIT SystemDmaTransmit,
  [in] PMDL Mdl,
  [in] ULONG Offset,
  [in] ULONG Length
)
{...}

Параметры

[in] SystemDmaTransmit

Дескриптор SERCX2SYSTEMDMATRANSMIT объекту передачи system-DMA. Драйвер последовательного контроллера ранее вызвал метод SerCx2SystemDmaTransmitCreate для создания этого объекта.

[in] Mdl

Указатель на MDL, описывающий страницы памяти, охватываемые буфером записи для транзакции передачи данных системы DMA. Список точечной и сборной для передачи DMA будет использовать область этой памяти, указанную параметрами смещения и длины.

[in] Offset

Начальная смещение для передачи данных. Этот параметр является смещением байтов с начала буферной области, описанной MDL. Если MDL задает общее количество байтов буферного пространства, возможные значения Offset находятся в диапазоне от 0 до N–1.

[in] Length

Размер передачи данных в байтах. Если MDL задает общее число байтов буферного пространства, возможные значения длины находятся в диапазоне 1 до N–смещения.

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

Функция EvtSerCx2SystemDmaTransmitConfigureDmaChan nel возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае возвращается соответствующий код состояния ошибки.

Замечания

Драйвер последовательного контроллера может реализовать эту функцию в качестве параметра. При реализации драйвер регистрирует функцию в вызове serCx2SystemDmaTransmitCreate , который создает объект передачи system-DMA.

Прежде чем инициировать транзакцию передачи system-DMA, SerCx2 вызывает функцию EvtSerCx2SystemDmaTransmitConfigureDmaChannel, если она реализована. Эта функция выполняет любую специальную конфигурацию контроллера DMA системы, который может потребоваться до запуска транзакции передачи system-DMA.

Драйвер последовательного контроллера может вызывать такой метод, как SerCx2SystemDmaTransmitGetDmaEnabler для получения средства включения DMA для контроллера DMA системы, используемого для транзакций передачи system-DMA.

Дополнительные сведения см. в разделе SerCx2 System-DMA-Transmit Transactions.

Примеры

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

Например, чтобы определить функцию обратного вызова EvtSerCx2SystemDmaTransmitConfigureDmaChannel, которая называется MySystemDmaTransmitConfigureDmaChannel, используйте тип функции EVT_SERCX2_SYSTEM_DMA_TRANSMIT_CONFIGURE_DMA_CHANNEL, как показано в этом примере кода:

EVT_SERCX2_SYSTEM_DMA_TRANSMIT_CONFIGURE_DMA_CHANNEL  MySystemDmaTransmitConfigureDmaChannel;

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

_Use_decl_annotations_
NTSTATUS
  MySystemDmaTransmitConfigureDmaChannel(
    SERCX2SYSTEMDMATRANSMIT SystemDmaTransmit,
    PMDL Mdl,
    ULONG Offset,
    ULONG Length
    )
  {...}

Тип функции EVT_SERCX2_SYSTEM_DMA_TRANSMIT_CONFIGURE_DMA_CHANNEL определен в файле заголовка Sercx.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте в определение функции заметку Use_decl_annotations. Заметка Use_decl_annotations гарантирует, что используются заметки, применяемые к типу функции EVT_SERCX2_SYSTEM_DMA_TRANSMIT_CONFIGURE_DMA_CHANNEL в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в объявлении функций с помощью типов ролей функций для драйверов KMDF. Дополнительные сведения о Use_decl_annotationsсм. в поведению функции.

Требования

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

См. также

MDL

SERCX2SYSTEMDMATRANSMIT

SerCx2SystemDmaTransmitCreate

SerCx2SystemDmaTransmitGetDmaEnabler