Compartir a través de


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.

Nota Debe declarar la función mediante el tipo NDIS_IO_WORKITEM_FUNCTION (no NDIS_IO_WORKITEM_ROUTINE). Para obtener más información, consulte la sección Ejemplos siguientes.
 
La rutina incluye los siguientes parámetros de entrada:

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)

Consulte también

IoQueueWorkItem

MiniportHaltEx

Elementos de trabajo de E/S de NDIS

NdisAllocateIoWorkItem

NdisFreeIoWorkItem