структура SERCX2_SYSTEM_DMA_RECEIVE_CONFIG (sercx.h)
Структура SERCX2_SYSTEM_DMA_RECEIVE_CONFIG содержит сведения, которые версии 2 расширения последовательной платформы (SerCx2) используются для настройки нового объекта system-DMA-receive.
Синтаксис
typedef struct _SERCX2_SYSTEM_DMA_RECEIVE_CONFIG {
ULONG Size;
size_t MaximumTransferLength;
size_t MinimumTransactionLength;
ULONG DmaAlignment;
ULONG MaximumScatterGatherFragments;
DMA_WIDTH DmaWidth;
PHYSICAL_ADDRESS DeviceAddress;
PCM_PARTIAL_RESOURCE_DESCRIPTOR DmaDescriptor;
ULONG MinimumTransferUnitOverride;
BOOLEAN Exclusive;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_INITIALIZE_TRANSACTION EvtSerCx2SystemDmaReceiveInitializeTransaction;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CLEANUP_TRANSACTION EvtSerCx2SystemDmaReceiveCleanupTransaction;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CONFIGURE_DMA_CHANNEL EvtSerCx2SystemDmaReceiveConfigureDmaChannel;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION EvtSerCx2SystemDmaReceiveEnableNewDataNotification;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CANCEL_NEW_DATA_NOTIFICATION EvtSerCx2SystemDmaReceiveCancelNewDataNotification;
} SERCX2_SYSTEM_DMA_RECEIVE_CONFIG, *PSERCX2_SYSTEM_DMA_RECEIVE_CONFIG;
Члены
Size
Размер этой структуры в байтах. Метод SerCx2SystemDmaReceiveCreate использует этот элемент для определения версии структуры, которую использует вызывающий объект. Размер этой структуры может измениться в будущих версиях файла заголовка Sercx.h.
MaximumTransferLength
Максимальный размер по умолчанию в байтах, который последовательный контроллер может обрабатывать в одной системной передаче DMA. Если размер буфера в запросе на чтение (IRP_MJ_READ) превышает этот максимальный размер, SerCx2 использует несколько передач DMA для обработки запроса и ограничивает каждую передачу до максимальной длины.
MinimumTransactionLength
Минимальная длина транзакции в байтах для транзакции получения системы DMA. Если длина буфера в запросе на чтение меньше этой минимальной длины, SerCx2 использует программируемый ввод-вывод (PIO) для транзакции.
DmaAlignment
Требование выравнивания DMA. Указывает, как начальный адрес передачи в транзакции приема системы DMA должен быть выровнен в памяти. Задайте этому элементу соответствующую константу FILE_XXX_ALIGNMENT в файле заголовка Wdm.h. Например, FILE_WORD_ALIGNMENT указывает, что начальный адрес DMA должен быть выровнен по двухбайтовой границе в памяти, FILE_LONG_ALIGNMENT указывает, что адрес должен быть выровнен по четырехбайтовой границе и т. д. SerCx2 не поддерживает FILE_BYTE_ALIGNMENT. Минимальная единица передачи (MTU) адаптера DMA системы должна быть больше или равна требуемому выравниванию. Например, если MTU составляет четыре байта, DmaAlignment должно быть не менее FILE_LONG_ALIGNMENT.
MaximumScatterGatherFragments
Максимальное количество фрагментов буфера, которые можно указать в списке точечной или сборной для передачи DMA в транзакции получения системы-DMA.
DmaWidth
Ширина регистра данных по адресу, указанному DeviceAddress. Возможные значения: Width8Bits, Width16Bits, Width32Bitsи Width64Bits.
DeviceAddress
Преобразованный адрес, из которого передается контроллер DMA. Дополнительные сведения см. в описании элемента DeviceAddress в WDF_DMA_SYSTEM_PROFILE_CONFIG.
DmaDescriptor
Указатель на структуру CM_PARTIAL_RESOURCE_DESCRIPTOR, описывающую системный ресурс DMA, используемый для получения транзакций. Драйвер последовательного контроллера получает эту структуру из списка необработанных ресурсов, который он получает в EvtDevicePrepareHardware обратном вызове, который запускает последовательный контроллер.
MinimumTransferUnitOverride
Переопределение значения, используемого вместо минимальной единицы передачи по умолчанию. Число байтов, указанных элементом в списке точечной или сборной, должно быть целым числом минимальной единицы передачи. Значение нуля указывает, что следует использовать минимальную единицу передачи по умолчанию. Дополнительные сведения см. в описании элемента MinimumTransferUnit в DMA_ADAPTER_INFO_V1.
Exclusive
Следует ли использовать транзакции получения системы DMA исключительно для обработки запросов на запись (IRP_MJ_READ) . Задайте значение TRUE, чтобы указать, что запросы на чтение должны использовать исключительно транзакции получения системы DMA. Установите значение FALSE, чтобы указать, что запросы на чтение могут использовать сочетание транзакций получения системных данных DMA и транзакций получения PIO..
Задайте для этого элемента значение TRUE только в том случае, если минимальная единица передачи для транзакций с получением системы DMA составляет один байт, минимальная длина транзакции составляет один байт, а буфер чтения для транзакции может начинаться с любой границы байтов в памяти.
Если
Независимо от значения этого члена, транзакции piO-receive используются для сохранения любых непрочитанных данных в получающем FIFO, прежде чем последовательный контроллер выходит из состояния питания устройства D0, чтобы войти в состояние низкой мощности.
EvtSerCx2SystemDmaReceiveInitializeTransaction
Указатель на функцию обратного вызова событий, реализованную драйвером, EvtSerCx2SystemDmaReceiveInitializeTransaction. Этот член является необязательным и может быть установлен null, чтобы указать, что драйвер не реализует функцию.
EvtSerCx2SystemDmaReceiveCleanupTransaction
Указатель на функцию обратного вызова событий, реализованную драйвером, EvtSerCx2SystemDmaReceiveCleanupTransaction функцию обратного вызова событий. Этот член является необязательным и может быть установлен null, чтобы указать, что драйвер не реализует функцию.
EvtSerCx2SystemDmaReceiveConfigureDmaChannel
Указатель на функцию обратного вызова событий, реализованную драйвером EvtSerCx2SystemDmaReceiveConfigureDmaChannel. Этот член является необязательным и может быть установлен null, чтобы указать, что драйвер не реализует функцию.
EvtSerCx2SystemDmaReceiveEnableNewDataNotification
Указатель на функцию обратного вызова событий, реализованную драйвером, EvtSerCx2SystemDmaReceiveEnableNewDataNotification функции обратного вызова событий. Этот член является необязательным и может быть установлен null, чтобы указать, что драйвер не реализует функцию. Однако драйвер, реализующий эту функцию, также должен реализовать функцию EvtSerCx2SystemDmaReceiveCancelNewDataNotification.
EvtSerCx2SystemDmaReceiveCancelNewDataNotification
Указатель на функцию обратного вызова событий, реализованную драйвером, EvtSerCx2SystemDmaReceiveCancelNewDataNotification функции обратного вызова событий. Этот член является необязательным и может быть установлен null, чтобы указать, что драйвер не реализует функцию. Однако драйвер, реализующий эту функцию, также должен реализовать функцию EvtSerCx2SystemDmaReceiveEnableNewDataNotification.
Замечания
Метод SerCx2SystemDmaReceiveCreate принимает указатель на структуру SERCX2_SYSTEM_DMA_RECEIVE_CONFIG в качестве входного параметра. Перед вызовом SerCx2SystemDmaReceiveCreateвызовите функцию SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT или SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION, чтобы инициализировать эту структуру.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Поддерживается начиная с Windows 8.1. |
заголовка | sercx.h |
См. также
CM_PARTIAL_RESOURCE_DESCRIPTOR
EvtSerCx2SystemDmaReceiveCancelNewDataNotification
EvtSerCx2SystemDmaReceiveCleanupTransaction
EvtSerCx2SystemDmaReceiveConfigureDmaChannel
EvtSerCx2SystemDmaReceiveEnableNewDataNotification
EvtSerCx2SystemDmaReceiveInitializeTransaction
SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT