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


Функция WdfDmaEnablerWdmGetDmaAdapter (wdfdmaenabler.h)

[Применимо только к KMDF]

Метод WdfDmaEnablerWdmGetDmaAdapter возвращает указатель на структуру WDM DMA_ADAPTER, связанную с объектом включения DMA.

Синтаксис

PDMA_ADAPTER WdfDmaEnablerWdmGetDmaAdapter(
  [in] WDFDMAENABLER     DmaEnabler,
  [in] WDF_DMA_DIRECTION DmaDirection
);

Параметры

[in] DmaEnabler

Дескриптор объекта включения DMA, полученный драйвером из предыдущего вызова WdfDmaEnablerCreate.

[in] DmaDirection

Значение WDF_DMA_DIRECTIONтипа, указывающее направление операции передачи DMA. Дополнительные сведения см. в следующем разделе "Примечания".

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

WdfDmaEnablerWdmGetDmaAdapter возвращает указатель на структуру DMA_ADAPTER или NULL, если значение параметра DmaDirection недопустимо.

Ошибка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Замечания

Когда драйвер вызывает WdfDmaEnablerCreate, платформа создает отдельный объект адаптера для каждого направления, если драйвер задает дуплексный профиль, и создает один объект адаптера, если драйвер не задает дуплексный профиль.

Если драйвер указал дуплексный профиль при вызове WdfDmaEnablerCreate, параметр метода WdfDmaEnablerWdmGetDmaAdapterпараметр dmaDirection Значение должно быть WdfDmaDirectionReadFromDevice для получения структуры DMA_ADAPTER операций чтения и WdfDmaDirectionWriteToDevice для получения структуры DMA_ADAPTER операций записи. Если драйвер не указал дуплексный профиль, драйвер может указать WdfDmaDirectionReadFromDevice или WdfDmaDirectionWriteToDevice.

Указатель, который WdfDmaEnablerWdmGetDmaAdapter возвращается до удаления объекта включения DMA. Если драйвер предоставляет функцию EvtCleanupCallback для объекта включения DMA, указатель действителен до возврата функции обратного вызова.

Примеры

В следующем примере кода создается объект включения DMA, а затем получает указатели на структуры WDM DMA_ADAPTER, создаваемые платформой для операций чтения и записи.

NTSTATUS  status = STATUS_SUCCESS;
WDF_DMA_ENABLER_CONFIG  dmaConfig;
WDFDMAENABLER  dmaEnabler;
PDMA_ADAPTER  readAdapter, writeAdapter;

WDF_DMA_ENABLER_CONFIG_INIT(
                            &dmaConfig,
                            WdfDmaProfileScatterGatherDuplex,
                            maxLength
                            );
status = WdfDmaEnablerCreate(
                             Device,
                             &dmaConfig,
                             WDF_NO_OBJECT_ATTRIBUTES,
                             &dmaEnabler
                             );
if (!NT_SUCCESS (status)) {
    return status;
}

readAdapter = WdfDmaEnablerWdmGetDmaAdapter(
                                            dmaEnabler,
                                            WdfDmaDirectionReadFromDevice
                                            );
writeAdapter = WdfDmaEnablerWdmGetDmaAdapter(
                                             dmaEnabler,
                                             WdfDmaDirectionWriteToDevice
                                             );

Требования

Требование Ценность
целевая платформа универсальный
минимальная версия KMDF 1.5
Заголовок wdfdmaenabler.h (include Wdf.h)
Библиотека Wdf01000.sys (см. управление версиями библиотеки Платформы).)
IRQL <=DISPATCH_LEVEL
правил соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

См. также

DMA_ADAPTER

WDF_DMA_DIRECTION

WdfDmaEnablerCreate