Функция SerCx2CustomReceiveCreate (sercx.h)
Метод SerCx2CustomReceiveCreate создает объект пользовательского получения, который версии 2 расширения последовательной платформы (SerCx2) использует для чтения данных из последовательного контроллера с помощью пользовательского механизма передачи данных.
Синтаксис
NTSTATUS SerCx2CustomReceiveCreate(
[in] WDFDEVICE Device,
[in] PSERCX2_CUSTOM_RECEIVE_CONFIG CustomReceiveConfig,
[in] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] SERCX2CUSTOMRECEIVE *CustomReceive
);
Параметры
[in] Device
Дескриптор WDFDEVICE для объекта устройства платформы, представляющего последовательный контроллер. Драйвер последовательного контроллера создал этот объект в своей функции обратного вызова EvtDriverDeviceAdd. Дополнительные сведения см. в разделе SerCx2InitializeDevice.
[in] CustomReceiveConfig
Указатель на структуру SERCX2_CUSTOM_RECEIVE_CONFIG. Перед вызовом этого метода вызывающий объект должен вызвать функцию SERCX2_CUSTOM_RECEIVE_CONFIG_INIT для инициализации структуры. Эта структура содержит указатели на набор подпрограмм обратного вызова событий, реализованных драйвером последовательного контроллера. SerCx2 вызывает эти функции для выполнения пользовательских транзакций приема.
[in] Attributes
Указатель на структуру WDF_OBJECT_ATTRIBUTES, описывающую атрибуты для назначения новому объекту пользовательского получения. Перед вызовом этого метода вызывающий объект должен вызвать функцию WDF_OBJECT_ATTRIBUTES_INIT для инициализации структуры. Этот параметр является необязательным и может быть указан как WDF_NO_OBJECT_ATTRIBUTES если драйвер последовательного контроллера не должен назначать атрибуты объекту. Дополнительные сведения см. в разделе "Примечания".
[out] CustomReceive
Указатель на расположение, в которое этот метод записывает SERCX2CUSTOMRECEIVE дескриптор в только что созданный объект пользовательского получения. SerCx2 и драйвер последовательного контроллера используют этот дескриптор в последующих вызовах для ссылки на этот объект.
Возвращаемое значение
Этот метод возвращает STATUS_SUCCESS, если вызов выполнен успешно. Возможные значения возвращаемых ошибок включают следующие коды состояния.
Возвращаемый код | Описание |
---|---|
|
Объект настраиваемого получения уже существует из предыдущего вызова SerCx2CustomReceiveCreate; или объект system-DMA-receive существует из предыдущего вызова SerCx2CustomReceiveCreate; или объект передачи system-DMA существует из предыдущего вызова SerCx2CustomTransmitCreate; или SerCx2PioReceiveCreate еще не вызывается для создания объекта PIO-receive. |
|
Недопустимое значение параметра. |
|
Значение размера |
|
Недостаточно ресурсов для создания объекта пользовательского получения. |
Замечания
Этот метод вызывается драйвером последовательного контроллера для создания объекта пользовательского получения. SerCx2 использует этот объект для выполнения транзакций с пользовательским получением, которые являются транзакциями, использующими пользовательский механизм передачи данных для чтения данных, полученных последовательным контроллером.
Драйвер последовательного контроллера должен успешно вызывать методы SerCx2InitializeDevice и методы SerCx2PioReceiveCreate перед вызовом SerCx2CustomReceiveCreate.
Перед вызовом SerCx2CustomReceiveCreateдрайвер последовательного контроллера должен вызвать функцию SERCX2_CUSTOM_RECEIVE_CONFIG_INIT, чтобы инициализировать структуру SERCX2_CUSTOM_RECEIVE_CONFIG, на которую указывает CustomReceiveConfig. Эта функция задает следующие элементы структуры равным нулю:
- выравнивания
- MinimumTransactionLength
- MaximumTransactionLength
- MinimumTransferUnit
- эксклюзивные
- Если выравнивание равно нулю, SerCx2 задает значение выравнивания данных одному, то есть буфер чтения может начинаться с произвольной границы байтов в памяти.
- Если MinimumTransactionLength равно нулю, SerCx2 задает минимальную длину транзакции в один байт.
- Если MaximumTransactionLength равно нулю, SerCx2 задает максимальную длину транзакции ((ULONG)-1).
- Если MinimumTransferUnit равно нулю, SerCx2 задает минимальную единицу передачи в один байт.
- Если монопольная равно нулю (FALSE), монопольный режим отключен.
В качестве параметра драйвер последовательного контроллера может использовать параметр Атрибуты для создания контекста для объекта пользовательского получения, а также для предоставления указателей на EvtCleanupCallback и EvtDedataCallback функции, которые вызываются для подготовки объекта к удалению. Дополнительные сведения см. в разделе WDF_OBJECT_ATTRIBUTES.
Если параметр атрибутов указывает на структуру WDF_OBJECT_ATTRIBUTES, вызывающий объект не должен перезаписать значения, которые функция инициализации WDF_OBJECT_ATTRIBUTES_INIT записывает в ParentObject, ExecutionLevelи syncScope членов этой структуры.
Дополнительные сведения о создании пользовательских объектов получения см. в SERCX2CUSTOMRECEIVE. Дополнительные сведения о пользовательских транзакциях получения см. в SerCx2 Custom-Receive транзакций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 8.1. |
целевая платформа | Всеобщий |
заголовка | sercx.h |
IRQL | PASSIVE_LEVEL |