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


функция обратного вызова PBUILD_MDL_FROM_SCATTER_GATHER_LIST (wdm.h)

Подпрограмма BuildMdlFromScatterGatherList создает MDL из точечных и сборных списков, выделенных системой.

Эта подпрограмма зарезервирована для использования системой.

Синтаксис

PBUILD_MDL_FROM_SCATTER_GATHER_LIST PbuildMdlFromScatterGatherList;

NTSTATUS PbuildMdlFromScatterGatherList(
  [in]  PDMA_ADAPTER DmaAdapter,
  [in]  PSCATTER_GATHER_LIST ScatterGather,
  [in]  PMDL OriginalMdl,
  [out] PMDL *TargetMdl
)
{...}

Параметры

[in] DmaAdapter

Указатель на структуру DMA_ADAPTER, возвращаемую IoGetDmaAdapter, которая представляет адаптер master шины или контроллер DMA.

[in] ScatterGather

Указатель на структуру SCATTER_GATHER_LIST , переданную в подпрограмму AdapterListControl драйвера.

[in] OriginalMdl

Указатель на исходный MDL, который драйвер использовал для создания точечных и сборных списков.

[out] TargetMdl

Указатель на переменную, которую подпрограмма использует для возврата MDL, созданного для хранения буфера, описанного в списке точечной и сборной. Возвращаемое значение может совпадать с OriginalMdl.

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

BuildMdlFromScatterGatherList возвращает один из следующих кодов состояния:

Код возврата Описание
STATUS_SUCCESS Операция успешно выполнена.
STATUS_INVALID_PARAMETER Параметр OriginalMdl имеет значение NULL.
STATUS_INSUFFICIENT_RESOURCES Недостаточно памяти для выделения нового языка MDL.
STATUS_NONE_MAPPED Система уже создала новый MDL для расположений памяти в списке точечной и сборной. (Это происходит только в том случае, если подпрограмма вызывается дважды в одном и том же списке точечной или сборной.)

Комментарии

BuildMdlFromScatterGatherList не является системной подпрограммой, которую можно вызывать напрямую по имени. Эта подпрограмма может вызываться только указателем из адреса, возвращаемого в DMA_OPERATIONS структуре. Драйверы получают адрес этой подпрограммы, вызывая IoGetDmaAdapter с элементом Version параметра DeviceDescription , равным DEVICE_DESCRIPTION_VERSION2. Если IoGetDmaAdapter возвращает значение NULL, подпрограмма недоступна на вашей платформе.

Когда драйвер создает список точечной или сборной для записи на устройство, система может создать копию записываемых данных и использовать ее для выполнения операции DMA. Используйте эту подпрограмму для доступа к расположениям памяти в списке точечной и сборной независимо от того, являются ли эти расположения копиями.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows XP и более поздних версиях Windows.
Целевая платформа Персональный компьютер
Верхняя часть wdm.h (включая Wdm.h)
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI IrqlDispatch(wdm)

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

BuildScatterGatherList

DEVICE_DESCRIPTION

DMA_ADAPTER

DMA_OPERATIONS

IoGetDmaAdapter

SCATTER_GATHER_LIST