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


перечисление WDF_DMA_ENABLER_CONFIG_FLAGS (wdfdmaenabler.h)

[Относится только к KMDF]

Тип перечисления WDF_DMA_ENABLER_CONFIG_FLAGS определяет флаги, используемые в структуре WDF_DMA_ENABLER_CONFIG драйвера.

Синтаксис

typedef enum _WDF_DMA_ENABLER_CONFIG_FLAGS {
  WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION = 0x00000001,
  WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER = 0x00000002
} WDF_DMA_ENABLER_CONFIG_FLAGS;

Константы

 
WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION
Значение: 0x00000001
Флаг WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION применяется только к следующим профилям DMA:


  • WdfDmaProfileScatterGather

  • WdfDmaProfileScatterGather64

  • WdfDmaProfileScatterGatherDuplex

  • WdfDmaProfileScatterGather64Duplex



По умолчанию, если WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION не задан и WDF_DMA_PROFILE является одним из указанных в предыдущем списке, WDF
создает список точечной и сборной, который используется транзакцией адаптера DMA.
баз данных. Записи списка инициализируются, чтобы разрешить максимальное указанное значение
длина передачи. При выполнении транзакции WDF вызывает входную функцию BuildScatterGatherList . Драйверы хода выполнения пересылки
не должен устанавливать этот флаг и должен использовать один из четырех профилей, показанных ранее.

Если задано WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION и WDF_DMA_PROFILE является одним из указанных в предыдущем списке, WDF не создает список lookaside. При выполнении транзакции WDF вызывает GetScatterGatherList.

Установка WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION может привести к сокращению использования памяти, особенно если максимальная длина передачи велика. Однако установка этого флага может привести к сбою при выполнении операций DMA в условиях нехватки памяти. Чтобы гарантировать прогресс при установке WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION , драйвер может использовать отдельное средство включения DMA или передавать передачу данных через общий буфер.
WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER
Значение: 0x00000002
Флаг WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER доступен начиная с версии 1.19 KMDF. Для этого флага также требуется DMA версии 3.
Чтобы выбрать DMA версии 3, установите для элемента WdmDmaVersionOverrideWDF_DMA_ENABLER_CONFIG значение 3.

Этот флаг применяется ко всем профилям DMA. Если он задан, WDF не фрагментируется WDFDMATRANSACTION, созданные с помощью этого включения, в несколько передач DMA. Если это невозможно, попытки инициализации или выполнения транзакции завершаются сбоем. Этот параметр предназначен для устройств, которым необходимо получать все данные в рамках одной операции DMA.

Драйверы также могут указать это значение на уровне транзакции с помощью WdfDmaTransactionSetSingleTransferRequirement.

Дополнительные сведения см. в разделе Использование DMA с одной передачей.

Комментарии

Можно указать допустимое побитовое ИЛИ значений на этой странице для элемента Flags структуры WDF_DMA_ENABLER_CONFIG .

Требования

Требование Значение
Минимальная версия KMDF 1.11
Верхняя часть wdfdmaenabler.h (включая Wdf.h)

См. также раздел

WDF_DMA_ENABLER_CONFIG

WDF_DMA_PROFILE

WdfDmaTransactionSetSingleTransferRequirement