MINIPORT_PROCESS_SG_LIST función de devolución de llamada (ndis.h)
Un controlador de minipuerto de bus-master proporciona una función MiniportProcessSGList para procesar listas de dispersión y recopilación de datos de red.
Sintaxis
MINIPORT_PROCESS_SG_LIST MiniportProcessSgList;
void MiniportProcessSgList(
[in] PDEVICE_OBJECT pDO,
[in] PVOID Reserved,
[in] PSCATTER_GATHER_LIST pSGL,
[in] PVOID Context
)
{...}
Parámetros
[in] pDO
Los controladores de minipuerto deben omitir este parámetro.
[in] Reserved
Los controladores de minipuerto deben omitir este parámetro.
[in] pSGL
Puntero a un búfer de lista de dispersión y recopilación. Esto no es necesariamente el mismo búfer que el controlador especificado en la llamada a . Función NdisMAllocateNetBufferSGList
[in] Context
Puntero a un área de contexto que creó el controlador de miniporte antes de llamar a NdisMAllocateNetBufferSGList.
Valor devuelto
None
Observaciones
Los controladores de minipuerto llaman a Función NdisMRegisterScatterGatherDma para registrar una función MiniportProcessSGList . Cuando un controlador de minipuerto llama a NdisMAllocateNetBufferSGList para crear una lista de dispersión y recopilación, NDIS llama a HAL para crear la lista.
NDIS llama a la función MiniportProcessSGList del controlador de miniport si NdisMAllocateNetBufferSGList se realiza correctamente. Sin embargo, una devolución correcta de esa función no garantiza que ya se haya invocado la devolución de llamada; se puede invocar de forma asincrónica.
Cuando NDIS llama a MiniportProcessSGList, el controlador puede enviar la estructura NET_BUFFER al hardware. MiniportProcessSGList envía las direcciones físicas de la lista de dispersión y recopilación al DMA de la NIC y emite un comando de envío a la NIC.
HAL puede llamar a MiniportProcessSGList antes o después de que NDIS devuelva de NdisMAllocateNetBufferSGList. Por lo tanto, los escritores de controladores no deben suponer que la llamada se realiza en el contexto de NdisMAllocateNetBufferSGList.
NDIS llama a MiniportProcessSGList en IRQL = DISPATCH_LEVEL.
Ejemplos
Para definir una función MiniportProcessSGList , primero debe proporcionar una declaración de función que identifique el tipo de función que está definiendo. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación a encontrar errores y es un requisito para escribir controladores para el sistema operativo Windows.Por ejemplo, para definir una función MiniportProcessSGList denominada "MyProcessSGList", use el tipo MINIPORT_PROCESS_SG_LIST como se muestra en este ejemplo de código:
MINIPORT_PROCESS_SG_LIST MyProcessSGList;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
VOID
MyProcessSGList(
PDEVICE_OBJECT pDO,
PVOID Reserved,
PSCATTER_GATHER_LIST pSGL,
PVOID Context
)
{...}
El tipo de función MINIPORT_PROCESS_SG_LIST se define en el archivo de encabezado Ndis.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función MINIPORT_PROCESS_SG_LIST en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, consulte Declaración de funciones mediante el uso de tipos de roles de función para controladores NDIS.
Para obtener información sobre Use_decl_annotations, consulte Anotación del comportamiento de la función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Se admite en NDIS 6.0 y versiones posteriores. |
Plataforma de destino | Windows |
Encabezado | ndis.h (incluya Ndis.h) |
IRQL | DISPATCH_LEVEL |