Funzione RxDispatchToWorkerThread (rxworkq.h)
RxDispatchToWorkerThread richiama una routine nel contesto di un thread di lavoro. La memoria per il WORK_QUEUE_ITEM viene allocata da questa routine.
Sintassi
NTSTATUS RxDispatchToWorkerThread(
[in] IN PRDBSS_DEVICE_OBJECT pMRxDeviceObject,
[in] IN WORK_QUEUE_TYPE WorkQueueType,
[in] IN PRX_WORKERTHREAD_ROUTINE Routine,
[in] IN PVOID pContext
);
Parametri
[in] pMRxDeviceObject
Puntatore all'oggetto dispositivo del driver del mini-redirector di rete corrispondente.
[in] WorkQueueType
Tipo della coda di lavoro che rappresenta la priorità dell'attività. Il parametro WorkQueueType può essere uno dei seguenti enumerazioni per WORK_QUEUE_TYPE:
CriticalWorkQueue
Inserire il WORK_QUEUE_ITEM nella coda da cui un thread di sistema con un attributo di priorità in tempo reale elabora l'elemento di lavoro.
DelayedWorkQueue
Inserire il WORK_QUEUE_ITEM nella coda da cui un thread di sistema con un attributo di priorità variabile elabora l'elemento di lavoro.
HyperCriticalWorkQueue
Inserire il WORK_QUEUE_ITEM nella coda da cui un thread di sistema elabora l'elemento di lavoro in modo che la routine da richiamare non venga bloccata.
[in] Routine
Puntatore alla routine da richiamare.
[in] pContext
Puntatore a un parametro di contesto associato all'elemento di lavoro da completare che viene passato al driver.
Valore restituito
RxDispatchToWorkerThread restituisce STATUS_SUCCESS in caso di esito positivo o uno dei codici di errore seguenti in caso di errore:
Codice restituito | Descrizione |
---|---|
|
Impossibile inviare l'elemento. |
Commenti
Esistono due casi comuni di invio delle operazioni ai thread di lavoro:
- Per un'operazione molto rara, lo spazio può essere conservato allocando e liberando in modo dinamico la memoria per l'elemento della coda di lavoro quando è necessario. In questo caso verrà usata la routine RxDispatchToWorkerThread
- Quando un'operazione verrà inviata ripetutamente, il tempo viene conservato allocando in anticipo la WORK_QUEUE_ITEM come parte della struttura dei dati da inviare e usando ripetutamente questa memoria preallocata. In questo caso verrà usata la routine RxPostToWorkerThread
RxDispatchToWorkerThread richiama una routine nel contesto di un thread di lavoro. La memoria per il WORK_QUEUE_ITEM viene allocata dalla routine RxDispatchToWorkerThread dalla memoria del pool non di paging. Di conseguenza, questa routine può non riuscire se sono disponibili risorse insufficienti.
L'implementazione corrente delle code di routine RxDispatchToWorkerThread funziona sullo stesso processore da cui ha avuto origine la chiamata.
Se la routine RxDispatchToWorkerThread non riesce in una compilazione di debug, la routine _RxLog viene chiamata con i dettagli dell'errore. Se la routine RxDispatchToWorkerThread ha esito negativo e WMI è abilitato nel kernel, i dettagli dell'errore verranno registrati con WMI.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | rxworkq.h (include Rxworkq.h, Rxstruc.h, Ntifs.h) |
IRQL | <= APC_LEVEL |