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


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

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

Синтаксис

EVT_SERCX2_CUSTOM_RECEIVE_TRANSACTION_INITIALIZE EvtSercx2CustomReceiveTransactionInitialize;

void EvtSercx2CustomReceiveTransactionInitialize(
  [in] SERCX2CUSTOMRECEIVETRANSACTION CustomReceiveTransaction,
  [in] PMDL Mdl,
  [in] ULONG Offset,
  [in] ULONG Length
)
{...}

Параметры

[in] CustomReceiveTransaction

Дескриптор SERCX2CUSTOMRECEIVETRANSACTION для объекта пользовательской транзакции получения. Драйвер последовательного контроллера ранее вызвал метод SerCx2CustomReceiveTransactionCreate для создания этого объекта.

[in] Mdl

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

[in] Offset

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

[in] Length

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

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

Никакой

Замечания

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

Драйвер должен реализовать функцию EvtSerCx2CustomReceiveTransactionInitialize, если необходимо инициализировать последовательный контроллер и связанное оборудование при подготовке к новой транзакции пользовательского получения. SerCx2 вызывает эту функцию, если она реализована, прежде чем запускать пользовательскую транзакцию получения. В ответ на этот вызов драйвер последовательного контроллера должен вызвать метод SerCx2CustomReceiveTransactionInitializeComplete, чтобы уведомить SerCx2 после завершения инициализации.

Дополнительные сведения см. в разделе SerCx2 Custom-Receive Транзакций.

Примеры

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

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

EVT_SERCX2_CUSTOM_RECEIVE_TRANSACTION_INITIALIZE  MyCustomReceiveTransactionInitialize;

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

_Use_decl_annotations_
VOID
  MyCustomReceiveTransactionInitialize(
    SERCX2CUSTOMRECEIVETRANSACTION  CustomReceiveTransaction,
    WDFREQUEST  Request,
    PMDL  Mdl,
    ULONG  Offset,
    ULONG  Length
    )
  {...}

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

Требования

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

См. также

IRP_MJ_READ

MDL

SERCX2CUSTOMRECEIVETRANSACTION

SerCx2CustomReceiveTransactionCreate

SerCx2CustomReceiveTransactionInitializeComplete