Condividi tramite


IO_WORKITEM_ROUTINE_EX funzione di callback (wdm.h)

Una routine WorkItemEx esegue l'elaborazione di un elemento di lavoro accodato dalla routine IoQueueWorkItemEx o IoTryQueueWorkItem .

Sintassi

IO_WORKITEM_ROUTINE_EX IoWorkitemRoutineEx;

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

Parametri

[in] IoObject

Puntatore all'oggetto driver del chiamante o a uno degli oggetti dispositivo del chiamante. Si tratta del puntatore passato come parametro DeviceObject a IoAllocateWorkItem quando l'elemento di lavoro è stato allocato o come parametro IoObject a IoInitializeWorkItem o IoTryQueueWorkItem quando l'elemento di lavoro è stato inizializzato.

[in, optional] Context

Specifica le informazioni sul contesto specifiche del driver. Si tratta del valore passato come parametro Context a IoQueueWorkItemEx o IoTryQueueWorkItem quando l'elemento di lavoro è stato accodato.

[in] IoWorkItem

Puntatore alla struttura IO_WORKITEM per l'elemento di lavoro. Puntatore passato come parametro IoWorkItem a IoQueueWorkItemEx o IoTryQueueWorkItemItem.

Valore restituito

nessuno

Osservazioni

I driver possono implementare routine WorkItemEx solo in Windows Vista e versioni successive di Windows.

Il driver accoda una routine WorkItemEx chiamando IoQueueWorkItemEx o IoTryQueueWorkItem e un thread di lavoro di sistema esegue successivamente la routine. Per altre informazioni, vedere Thread di lavoro di sistema.

Una routine WorkItemEx deve essere eseguita per un periodo di tempo limitato; in caso contrario, il sistema può deadlock. Per altre informazioni, vedere Thread di lavoro di sistema.

Una routine WorkItemEx viene eseguita in IRQL = PASSIVE_LEVEL e in un contesto di thread di sistema.

Esempio

Per definire una routine di callback WorkItemEx , è innanzitutto necessario fornire una dichiarazione di funzione che identifica il tipo di routine di callback che si sta definendo. Windows fornisce un set di tipi di funzione di callback per i driver. La dichiarazione di una funzione tramite i tipi di funzione di callback consente di analizzare il codice per i driver, l'SDV ( Static Driver Verifier ) e altri strumenti di verifica di trovare errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.

Ad esempio, per definire una routine di callback WorkItemEx denominata MyWorkItemEx, usare il tipo di IO_WORKITEM_ROUTINE_EX, come illustrato nell'esempio di codice seguente:

IO_WORKITEM_ROUTINE_EX MyWorkItemEx;

Implementare quindi la routine di callback come indicato di seguito:

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

Il tipo di funzione IO_WORKITEM_ROUTINE_EX è definito nel file di intestazione Wdm.h. Per identificare in modo più accurato gli errori quando si eseguono gli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione _Use_decl_annotations_ alla definizione della funzione. L'annotazione _Use_decl_annotations_ garantisce che vengano utilizzate le annotazioni applicate al tipo di funzione IO_WORKITEM_ROUTINE_EX nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo di funzione per i driver WDM. Per informazioni su _Use_decl_annotations_, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL Chiamato a PASSIVE_LEVEL.

Vedi anche

IO_WORKITEM

IoInitializeWorkItem

IoQueueWorkItemEx

IoTryQueueWorkItem