функция обратного вызова MINIPORT_PROCESS_SG_LIST (ndis.h)
Драйвер для master автобуса предоставляет функцию MiniportProcessSGList для обработки точечной и сборной списков для сетевых данных.
Синтаксис
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 |