Condividi tramite


Funzione NdisQueueIoWorkItem (ndis.h)

I driver NDIS chiamano la funzione NdisQueueIoWorkItem per accodare un elemento di lavoro.

Sintassi

void NdisQueueIoWorkItem(
  [in] NDIS_HANDLE              NdisIoWorkItemHandle,
  [in] NDIS_IO_WORKITEM_ROUTINE Routine,
  [in] PVOID                    WorkItemContext
);

Parametri

[in] NdisIoWorkItemHandle

Handle a una struttura di IO_WORKITEM privata restituita da una chiamata precedente all'oggetto Funzione NdisAllocateIoWorkItem .

[in] Routine

Punto di ingresso alla funzione che NDIS chiama per elaborare l'elemento di lavoro. NDIS chiama questa routine nel contesto di un thread di sistema.

Nota È necessario dichiarare la funzione usando il tipo di NDIS_IO_WORKITEM_FUNCTION (non NDIS_IO_WORKITEM_ROUTINE). Per altre informazioni, vedere la sezione Esempi seguente.
 
La routine include i parametri di input seguenti:

WorkItemContext

Puntatore all'area di contesto passata dal driver al parametro WorkItemContext di NdisQueueIoWorkItem.

NdisIoWorkItemHandle

Handle a una struttura di NDIS_IO_WORKITEM privata restituita da una chiamata precedente a Funzione NdisAllocateIoWorkItem .

[in] WorkItemContext

Puntatore a un'area di contesto fornita dal chiamante che NDIS passa alla routine di callback. WorkItemContext può essere qualsiasi dato specificato dal chiamante richiesto dal driver per gestire l'elemento di lavoro.

Valore restituito

nessuno

Osservazioni

NdisQueueIoWorkItem chiama IoQueueWorkItem per accodare un elemento di lavoro. Gli elementi di lavoro NDIS usano il tipo di coda CriticalWorkQueue .

La routine di callback fornita dal chiamante (NDIS_IO_WORKITEM_ROUTINE) viene eseguita in un contesto di thread di sistema in IRQL = PASSIVE_LEVEL.

Questa routine fornita dal chiamante può chiamare la funzione NdisFreeIoWorkItem per recuperare lo spazio di archiviazione allocato per l'elemento di lavoro.

Esempi

Per definire una funzione Routine , è necessario innanzitutto fornire una dichiarazione di funzione che identifica il tipo di funzione che si sta definendo. Windows fornisce un set di tipi di funzione per i driver. La dichiarazione di una funzione con i tipi di funzione consente di eseguire l'analisi del codice per i driver, l'SDV ( Static Driver Verifier ) e altri strumenti di verifica rilevano gli errori ed è un requisito per la scrittura dei driver per il sistema operativo Windows.

Ad esempio, per definire una funzione Routine denominata "MyWorkitemRoutine", usare il tipo NDIS_IO_WORKITEM_FUNCTION , come illustrato nell'esempio di codice seguente:

NDIS_IO_WORKITEM_FUNCTION MyWorkitemRoutine;

Implementare quindi la funzione come segue:

_Use_decl_annotations_
VOID
 MyWorkitemRoutine(
    PVOID   WorkItemContext,
    NDIS_HANDLE  NdisIoWorkItemHandle
    )
  {...}

Il tipo di funzione NDIS_IO_WORKITEM_FUNCTION è definito nel file di intestazione Ndis.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 assicura che vengano utilizzate le annotazioni applicate al tipo di funzione NDIS_IO_WORKITEM_FUNCTION 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 NDIS.

Per informazioni sulle Use_decl_annotations, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Universale
Intestazione ndis.h (include Ndis.h)
Libreria Ndis.lib
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI Irql_Miscellaneous_Function(ndis)

Vedi anche

IoQueueWorkItem

MiniportHaltEx

Elementi di lavoro di I/O NDIS

NdisAllocateIoWorkItem

NdisFreeIoWorkItem