Функция 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 возвращает одно из следующих значений:

Код возврата Описание
STOR_STATUS_NOT_IMPLEMENTED
Эта функция не реализована в активной операционной системе.
STOR_STATUS_SUCCESS
Указывает, что подпрограмма успешно создала точечный/собирающийся список.
Важно См. раздел "Примечания".
 
STOR_STATUS_INVALID_PARAMETER
Переданный HwDeviceExtension имеет значение NULL.
STOR_STATUS_INVALID_IRQL
Вызов был выполнен в недопустимом irQL.
STOR_STATUS_INSUFFICIENT_RESOURCES
В системе недостаточно регистров карт, доступных для передачи.
STOR_STATUS_BUFFER_TOO_SMALL
Параметр Length слишком велик, чтобы поместиться в буфер.

Комментарии

Драйвер мини-порта вызывает StorPortPutScatterGatherList , чтобы освободить ресурсы, выделенные StorPortBuildScatterGatherList при создании списка точечной и сборной.

Драйвер мини-порта должен вызвать StorPortPutScatterGatherList перед освобождением или повторным использованием памяти, выделенной для списка точечной и сборной.

Примечание Если StorPortBuildScatterGatherList возвращает STOR_STATUS_SUCCESS, то обратный вызов в ExecutionRoutine был успешно поставлен в очередь для выполнения после создания списка точечной и сборной. Мини-порт не должен предполагать, что метод ExecutionRoutine был вызван или что список точечной и собираемой информации готов при возврате StorPortBuildScatterGatherList . При необходимости минипорт может синхронизировать выполнение кода, следующего за StorPortBuildScatterGatherList , с обратным вызовом в ExecutionRoutine , чтобы обеспечить доступность списка точечной и сборной.
 

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть storport.h (включая Storport.h)
IRQL DISPATCH_LEVEL

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

STOR_SCATTER_GATHER_LIST

StorPortAllocatePool

StorPortPutScatterGatherList