IO_WORKITEM_ROUTINE_EX función de devolución de llamada (wdm.h)

Una rutina WorkItemEx realiza el procesamiento de un elemento de trabajo en cola por la rutina IoQueueWorkItemEx o IoTryQueueWorkItem .

Sintaxis

IO_WORKITEM_ROUTINE_EX IoWorkitemRoutineEx;

void IoWorkitemRoutineEx(
  [in]           PVOID IoObject,
  [in, optional] PVOID Context,
  [in]           PIO_WORKITEM IoWorkItem
)
{...}

Parámetros

[in] IoObject

Puntero al objeto de controlador del autor de la llamada o a uno de los objetos de dispositivo del autor de la llamada. Este es el puntero que se pasó como parámetro DeviceObject a IoAllocateWorkItem cuando se asignó el elemento de trabajo, o como parámetro IoObject a IoInitializeWorkItem o IoTryQueueWorkItem cuando se inicializó el elemento de trabajo.

[in, optional] Context

Especifica información de contexto específica del controlador. Este es el valor que se pasó como parámetro Context a IoQueueWorkItemEx o IoTryQueueWorkItem cuando se puso en cola el elemento de trabajo.

[in] IoWorkItem

Puntero a la estructura IO_WORKITEM del elemento de trabajo. Este es el puntero que se pasó como parámetro IoWorkItem a IoQueueWorkItemEx o IoTryQueueWorkItem.

Valor devuelto

None

Observaciones

Los controladores pueden implementar rutinas WorkItemEx solo en Windows Vista y versiones posteriores de Windows.

El controlador pone en cola una rutina WorkItemEx mediante una llamada a IoQueueWorkItemEx o IoTryQueueWorkItem, y un subproceso de trabajo del sistema ejecuta posteriormente la rutina. Para obtener más información, vea Subprocesos de trabajo del sistema.

Una rutina WorkItemEx debe ejecutarse durante un período de tiempo limitado; de lo contrario, el sistema puede interbloquear. Para obtener más información, vea Subprocesos de trabajo del sistema.

Una rutina WorkItemEx se ejecuta en IRQL = PASSIVE_LEVEL y en un contexto de subproceso del sistema.

Ejemplos

Para definir una rutina de devolución de llamada workItemEx , primero debe proporcionar una declaración de función que identifique el tipo de rutina de devolución de llamada que está definiendo. Windows proporciona un conjunto de tipos de función de devolución de llamada para controladores. Declarar una función mediante los tipos de función de devolución de llamada 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 rutina de devolución de llamada WorkItemEx denominada MyWorkItemEx, use el tipo IO_WORKITEM_ROUTINE_EX tal y como se muestra en este ejemplo de código:

IO_WORKITEM_ROUTINE_EX MyWorkItemEx;

A continuación, implemente la rutina de devolución de llamada de la siguiente manera:

_Use_decl_annotations_
VOID
  MyWorkItemEx(
    PVOID  IoObject,
    PVOID  Context,
    PIO_WORKITEM  IoWorkItem 
    )
  {
      // Function body
  }

El tipo de función IO_WORKITEM_ROUTINE_EX se define en el archivo de encabezado Wdm.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 a la _Use_decl_annotations_ definición de la función. La _Use_decl_annotations_ anotación garantiza que se usen las anotaciones que se aplican al tipo de función IO_WORKITEM_ROUTINE_EX en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declarar funciones mediante tipos de rol de función para controladores WDM. Para obtener información sobre _Use_decl_annotations_, vea Anotación del comportamiento de la función.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
IRQL Se llama en PASSIVE_LEVEL.

Consulte también

IO_WORKITEM

IoInitializeWorkItem

IoQueueWorkItemEx

IoTryQueueWorkItem