Compartir a través de


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

Una rutina de workItemEx realiza el procesamiento de un elemento de trabajo en cola por el IoQueueWorkItemEx o rutina de 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 para 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

Ninguno

Observaciones

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

El controlador pone en cola una rutina de WorkItemEx llamando a IoQueueWorkItemEx o IoTryQueueWorkItemy un subproceso de trabajo del sistema ejecuta posteriormente la rutina. Para obtener más información, vea subprocesos de trabajo del sistema.

Una rutina de 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 de 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 de 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 de WorkItemEx denominada MyWorkItemEx, use el tipo de IO_WORKITEM_ROUTINE_EX 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 mayor 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 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 Valor
de la plataforma de destino de Escritorio
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
irQL Se llama en PASSIVE_LEVEL.

Consulte también

IO_WORKITEM

IoInitializeWorkItem

IoQueueWorkItemEx

IoTryQueueWorkItem