Функция StorPortBuildScatterGatherList (storport.h)
Подпрограмма StorPortBuildScatterGatherList создает список точечной и сборной для указанного буфера данных.
Синтаксис
ULONG StorPortBuildScatterGatherList(
[in] PVOID HwDeviceExtension,
[in] PVOID Mdl,
[in] PVOID CurrentVa,
[in] ULONG Length,
[in] PPOST_SCATTER_GATHER_EXECUTE ExecutionRoutine,
[in] PVOID Context,
[in] BOOLEAN WriteToDevice,
[in, out] PVOID ScatterGatherBuffer,
[in] ULONG ScatterGatherBufferLength
);
Параметры
[in] HwDeviceExtension
Указатель на расширение аппаратного устройства для адаптера шины узла (HBA).
[in] Mdl
Указатель на список дескрипторов памяти (MDL), описывающий страницы памяти, связанные с буфером данных.
[in] CurrentVa
Виртуальный адрес буфера данных.
[in] Length
Длина буфера данных (в байтах).
[in] ExecutionRoutine
Указатель на предоставленный драйвером мини-порта ExecutionRoutine. Драйвер Storport вызывает эту подпрограмму после создания списка точечной и собираемой информации. Драйвер мини-порта должен выполнять все операции, использующие список точечной и сборной в подпрограмме выполнения, а не в коде, который следует за вызовом процедуры StorPortBuildScatterGatherList .
ExecutionRoutine объявляется следующим образом:
VOID
ExecutionRoutine (
IN PVOID *DeviceObject,
IN PVOID *Irp,
IN PSTOR_SCATTER_GATHER_LIST ScatterGather,
IN PVOID Context
);
DeviceObject
Драйверы мини-порта должны игнорировать этот параметр.
Irp
Драйверы мини-порта должны игнорировать этот параметр.
Точечная диаграмма
Указатель на структуру STOR_SCATTER_GATHER_LIST , содержащую список точечной и сборной для указанного буфера данных.
Контекст
Значение контекста, указанное в параметре Context функции StorPortBuildScatterGatherList.
Драйвер Storport вызывает ExecutionRoutine драйвера минипорта по адресу IRQL = DISPATCH_LEVEL.
[in] Context
Контекстное значение, которое драйвер порта передает в подпрограмму выполнения, указанную в параметре ExecutionRoutine . Подпрограмма выполнения использует это значение для уникальной идентификации запроса.
[in] WriteToDevice
Значение типа , указывающее направление передачи DMA. Значение TRUE указывает на передачу данных из буфера данных на устройство, а значение FALSE указывает на передачу из устройства в буфер данных.
[in, out] ScatterGatherBuffer
Указатель на буфер, предоставляемый мини-портом, который получает точечный/собираемый список. Драйвер мини-порта может выделить память для этого буфера, вызвав подпрограмму StorPortAllocatePool .
[in] ScatterGatherBufferLength
Размер (в байтах) буфера, на который указывает параметр ScatterGatherBuffer .
Возвращаемое значение
StorPortBuildScatterGatherList возвращает одно из следующих значений:
Код возврата | Описание |
---|---|
|
Эта функция не реализована в активной операционной системе. |
|
Указывает, что подпрограмма успешно создала точечный/собирающийся список.
Важно См. раздел "Примечания".
|
|
Переданный HwDeviceExtension имеет значение NULL. |
|
Вызов был выполнен в недопустимом irQL. |
|
В системе недостаточно регистров карт, доступных для передачи. |
|
Параметр Length слишком велик, чтобы поместиться в буфер. |
Комментарии
Драйвер мини-порта вызывает StorPortPutScatterGatherList , чтобы освободить ресурсы, выделенные StorPortBuildScatterGatherList при создании списка точечной и сборной.
Драйвер мини-порта должен вызвать StorPortPutScatterGatherList перед освобождением или повторным использованием памяти, выделенной для списка точечной и сборной.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | storport.h (включая Storport.h) |
IRQL | DISPATCH_LEVEL |