функция обратного вызова PCALCULATE_SCATTER_GATHER_LIST_SIZE (wdm.h)
Подпрограмма CalculateScatterGatherList вычисляет размер (в байтах) списка точечной и собираемой информации, необходимой для хранения заданного буфера.
Синтаксис
PCALCULATE_SCATTER_GATHER_LIST_SIZE PcalculateScatterGatherListSize;
NTSTATUS PcalculateScatterGatherListSize(
[in] PDMA_ADAPTER DmaAdapter,
[in, optional] PMDL Mdl,
[in] PVOID CurrentVa,
[in] ULONG Length,
[out] PULONG ScatterGatherListSize,
[out, optional] PULONG pNumberOfMapRegisters
)
{...}
Параметры
[in] DmaAdapter
Указатель на структуру DMA_ADAPTER, возвращаемую IoGetDmaAdapter, которая представляет адаптер master шины или контроллер DMA.
[in, optional] Mdl
Либо значение NULL , либо указатель на MDL, содержащий буфер.
[in] CurrentVa
Указатель на виртуальный адрес начала буфера.
[in] Length
Задает длину буфера в байтах.
[out] ScatterGatherListSize
Указатель на переменную, используется подпрограммой для возврата размера точечных и собираемых списков в байтах.
[out, optional] pNumberOfMapRegisters
Либо значение NULL , либо указатель на переменную, используется подпрограммой для возврата количества регистров карты, необходимых для операций DMA в буфере.
Возвращаемое значение
CalculateScatterGatherList возвращает один из следующих кодов состояния.
Код возврата | Описание |
---|---|
|
Значения, возвращаемые в ScatterGatherListSize и NumberOfMapRegisters, являются допустимыми . |
|
Требуемое количество регистров карты превышает количество доступных регистров карты. |
|
Указанная длина слишком велика, чтобы поместиться в буфер. |
Комментарии
CalculateScatterGatherList не является системной подпрограммой, которую можно вызывать напрямую по имени. Эта подпрограмма может вызываться только указателем из адреса, возвращаемого в DMA_OPERATIONS структуре. Драйверы получают адрес этой подпрограммы, вызывая IoGetDmaAdapter с элементом Version параметра DeviceDescription , для DEVICE_DESCRIPTION_VERSION2. Если IoGetDmaAdapter возвращает значение NULL, подпрограмма недоступна на вашей платформе.
Если вызывающий объект передает значение NULL для параметра Mdl , подпрограмма вычисляет максимальный возможный размер, необходимый для хранения точечной или собираемой таблицы для указанного буфера. Если вызывающий объект указывает MDL, содержащий буфер в параметре Mdl , подпрограмма вычисляет фактический размер, необходимый для хранения списка точечной и сборной.
Драйвер использует CalculateScatterGatherList для выделения буфера точечной и собираемой списков для передачи в BuildScatterGatherList.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows XP и более поздних версиях Windows. |
Целевая платформа | Персональный компьютер |
Верхняя часть | wdm.h (включая Wdm.h) |
IRQL | Любой уровень |