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
None
Observaciones
NdisQueueIoWorkItem llama a IoQueueWorkItem para poner en cola un elemento de trabajo. Los elementos de trabajo 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
Para definir una función Routine , 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 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 Routine denominada "MyWorkitemRoutine", use el tipo NDIS_IO_WORKITEM_FUNCTION tal y 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, 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 | Universal |
Encabezado | ndis.h (incluya Ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | Irql_Miscellaneous_Function(ndis) |