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

Драйвер для master автобуса предоставляет функцию MiniportProcessSGList для обработки точечной и сборной списков для сетевых данных.

Примечание Функцию необходимо объявить с помощью типа MINIPORT_PROCESS_SG_LIST . Дополнительные сведения см. в следующем разделе Примеры.
 

Синтаксис

MINIPORT_PROCESS_SG_LIST MiniportProcessSgList;

void MiniportProcessSgList(
  [in] PDEVICE_OBJECT pDO,
  [in] PVOID Reserved,
  [in] PSCATTER_GATHER_LIST pSGL,
  [in] PVOID Context
)
{...}

Параметры

[in] pDO

Драйверы мини-порта должны игнорировать этот параметр.

[in] Reserved

Драйверы мини-порта должны игнорировать этот параметр.

[in] pSGL

Указатель на буфер точечного или собираемого списка. Это не обязательно тот же буфер, что и драйвер, указанный в вызовеФункция NdisMAllocateNetBufferSGList

[in] Context

Указатель на область контекста, созданную драйвером мини-порта до вызова NdisMAllocateNetBufferSGList.

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

None

Remarks

Водители минипорта вызывают Функция NdisMRegisterScatterGatherDma для регистрации функции MiniportProcessSGList . Когда драйвер мини-порта вызывает NdisMAllocateNetBufferSGList для создания списка точечной и сборной, NDIS вызывает HAL для создания списка.

NDIS вызывает функцию MiniportProcessSGList драйвера miniportProcessSGList , если NdisMAllocateNetBufferSGList успешно выполнено. Однако успешное возвращение этой функции не гарантирует, что обратный вызов уже был вызван. Его можно вызывать асинхронно.

Когда NDIS вызывает MiniportProcessSGList, драйвер может отправить NET_BUFFER структуру на оборудование. MiniportProcessSGList отправляет физические адреса списка точечной или сборной в DMA сетевой карты и выдает команду отправки в сетевую карту.

HAL может вызывать MiniportProcessSGList до или после возврата NDIS из NdisMAllocateNetBufferSGList. Поэтому средства записи драйверов не должны предполагать, что вызов выполняется в контексте NdisMAllocateNetBufferSGList.

NDIS вызывает MiniportProcessSGList в IRQL = DISPATCH_LEVEL.

Примеры

Чтобы определить функцию MiniportProcessSGList , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию MiniportProcessSGList с именем MyProcessSGList, используйте тип MINIPORT_PROCESS_SG_LIST , как показано в следующем примере кода:

MINIPORT_PROCESS_SG_LIST MyProcessSGList;

Затем реализуйте функцию следующим образом:

_Use_decl_annotations_
VOID
 MyProcessSGList(
    PDEVICE_OBJECT  pDO,
    PVOID  Reserved,
    PSCATTER_GATHER_LIST  pSGL,
    PVOID  Context
    )
  {...}

Тип функции MINIPORT_PROCESS_SG_LIST определяется в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции MINIPORT_PROCESS_SG_LIST в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в разделе Объявление функций с помощью типов ролей функций для драйверов NDIS.

Сведения о Use_decl_annotations см. в статье О поведении функции.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL DISPATCH_LEVEL

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

NdisMAllocateNetBufferSGList

NdisMRegisterScatterGatherDma