Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Применимо только к KMDF]
Если драйвер на основе платформы обрабатывает операции ввода-вывода для устройств DMA, драйвер должен включить функции DMA платформы для каждого устройства DMA. Чтобы включить эти функции, функция обратного вызова драйвера EvtDriverDeviceAdd или EvtDevicePrepareHardware должна:
Вызовите WdfDeviceSetAlignmentRequirement, чтобы задать требование к выравниванию буфера устройства.
Вызовите WdfDmaEnablerCreate, чтобы указать тип операций DMA (один пакет или точечная или сборная) и максимальный размер передачи, поддерживаемый устройством. Начиная с KMDF версии 1.11 платформа поддерживает системный режим DMA в системах на микросхеме (SoC), работающих в Windows 8 или более поздних версиях операционной системы.
Вызовите WdfDmaEnablerSetMaximumScatterGatherElements, чтобы указать максимальное количество элементов, которые устройство поддерживает в списке операций разброса/сбора, если устройство поддерживает такие операции.
В следующем примере кода из примера PLX9x5x показано, как включить функции DMA платформы. Этот код находится в файле init.c.
WDF_DMA_ENABLER_CONFIG dmaConfig;
WdfDeviceSetAlignmentRequirement( DevExt->Device, PCI9656_DTE_ALIGNMENT_16 );
WDF_DMA_ENABLER_CONFIG_INIT( &dmaConfig,
WdfDmaProfileScatterGather64Duplex,
DevExt->MaximumTransferLength );
status = WdfDmaEnablerCreate( DevExt->Device,
&dmaConfig,
WDF_NO_OBJECT_ATTRIBUTES,
&DevExt->DmaEnabler );
Если драйверу требуются общие буферы, функция обратного вызова драйвера EvtDriverDeviceAdd обычно настраивает их. Дополнительные сведения об этих буферах см. в разделе Использование общих буферов.
После вызова драйвера WdfDmaEnablerCreateон может вызывать WdfDmaEnablerWdmGetDmaAdapter для получения указателей на структуры WDM DMA_ADAPTER, создаваемые платформой для входных и выходных направлений устройства. Однако большинству драйверов на основе платформ не нужно обращаться к этим структурам.