Función NdisQueueIoWorkItem (ndis.h)
Los controladores NDIS llaman a la función NdisQueueIoWorkItem para poner en cola un elemento de trabajo.
Sintaxis
void NdisQueueIoWorkItem(
[in] NDIS_HANDLE NdisIoWorkItemHandle,
[in] NDIS_IO_WORKITEM_ROUTINE Routine,
[in] PVOID WorkItemContext
);
Parámetros
[in] NdisIoWorkItemHandle
Identificador de una estructura de IO_WORKITEM privada devuelta por una llamada anterior a . función NdisAllocateIoWorkItem.
[in] Routine
Punto de entrada a la función a la que llama NDIS para procesar el elemento de trabajo. NDIS llama a esta rutina en el contexto de un subproceso del sistema.
WorkItemContext
Puntero al área de contexto que el controlador pasó al parámetro WorkItemContext de NdisQueueIoWorkItem.
NdisIoWorkItemHandle
Identificador de una estructura de NDIS_IO_WORKITEM privada devuelta por una llamada anterior a . función NdisAllocateIoWorkItem.
[in] WorkItemContext
Puntero a un área de contexto proporcionada por el autor de la llamada que pasa NDIS a la rutina de devolución de llamada. workItemContext puede ser cualquier dato especificado por el autor de la llamada que el controlador requiera para administrar el elemento de trabajo.
Valor devuelto
Ninguno
Observaciones
NdisQueueIoWorkItem llama a ioQueueWorkItem para poner en cola un elemento de trabajo. Los elementos de trabajo de NDIS usan el tipo de cola criticalWorkQueue .
La rutina de devolución de llamada proporcionada por el autor de la llamada (NDIS_IO_WORKITEM_ROUTINE) se ejecuta en un contexto de subproceso del sistema en IRQL = PASSIVE_LEVEL.
Esta rutina proporcionada por el autor de la llamada puede llamar a la función NdisFreeIoWorkItem para reclamar el almacenamiento asignado para el elemento de trabajo.
Ejemplos de
Para definir una función Rutina, primero debe proporcionar una declaración de función que identifique el tipo de función que va a definir. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a análisis de código para controladores, comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.Por ejemplo, para definir una función rutina denominada "MyWorkitemRoutine", use el tipo NDIS_IO_WORKITEM_FUNCTION tal como se muestra en este ejemplo de código:
NDIS_IO_WORKITEM_FUNCTION MyWorkitemRoutine;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
VOID
MyWorkitemRoutine(
PVOID WorkItemContext,
NDIS_HANDLE NdisIoWorkItemHandle
)
{...}
El tipo de función NDIS_IO_WORKITEM_FUNCTION 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 NDIS_IO_WORKITEM_FUNCTION en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea 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, vea Anotación del comportamiento de la función.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Se admite en NDIS 6.0 y versiones posteriores. |
de la plataforma de destino de | Universal |
encabezado de | ndis.h (incluya Ndis.h) |
biblioteca de | Ndis.lib |
irQL | <= DISPATCH_LEVEL |
reglas de cumplimiento de DDI | Irql_Miscellaneous_Function(ndis) |