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.
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) |