Funzione RxPostToWorkerThread (rxworkq.h)
RxPostToWorkerThread richiama una routine passata come parametro nel contesto di un thread di lavoro. La memoria per il WORK_QUEUE_ITEM deve essere allocata dal chiamante.
Sintassi
NTSTATUS RxPostToWorkerThread(
[in] IN PRDBSS_DEVICE_OBJECT pMRxDeviceObject,
[in] IN WORK_QUEUE_TYPE WorkQueueType,
[in] IN PRX_WORK_QUEUE_ITEM pWorkQueueItem,
[in] IN PRX_WORKERTHREAD_ROUTINE Routine,
[in] IN PVOID pContext
);
Parametri
[in] pMRxDeviceObject
Puntatore all'oggetto dispositivo del driver mini-redirector di rete corrispondente.
[in] WorkQueueType
Tipo della coda di lavoro che rappresenta la priorità dell'attività. Questo parametro può essere uno dei valori seguenti:
CriticalWorkQueue
Inserire WORK_QUEUE_ITEM nella coda da cui un thread di sistema con un attributo di priorità in tempo reale elabora l'elemento di lavoro.
RitardatoWorkQueue
Inserire WORK_QUEUE_ITEM nella coda da cui un thread di sistema con un attributo di priorità variabile elabora l'elemento di lavoro.
HyperCriticalWorkQueue
Inserire 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] pWorkQueueItem
Puntatore a WORK_QUEUE_ITEM.
[in] Routine
Puntatore alla routine da richiamare.
[in] pContext
Puntatore a un parametro di contesto associato all'elemento di lavoro da completare passato al driver.
Valore restituito
RxDispatchToWorkerThread restituisce STATUS_SUCCESS sull'esito positivo o su uno dei seguenti codici di errore in caso di errore:
Codice restituito | Descrizione |
---|---|
|
Impossibile inviare l'elemento. |
Commenti
Esistono due casi comuni di operazioni di invio ai thread di lavoro. Il compromesso tra le due operazioni di invio seguenti è tempo rispetto allo spazio (utilizzo della memoria):
- Quando un'operazione verrà ripetutamente inviata, il tempo viene conservato allocando in anticipo la struttura WORK_QUEUE_ITEM come parte della struttura dei dati da inviare. In questo caso, usare la routine RxPostToWorkerThread .
- Per un'operazione rara, è possibile risparmiare spazio assegnando e liberando memoria dinamicamente per l'elemento della coda di lavoro quando è necessario. In questo caso, usare la routine RxDispatchToWorkerThread .
L'implementazione corrente delle code di routine RxPostToWorkerThread funziona nello stesso processore da cui ha avuto origine la chiamata.
Se la routine RxPostToWorkerThread ha esito negativo in una compilazione di debug, la routine di _RxLog viene chiamata con i dettagli dell'errore. Se la routine RxPostToWorkerThread ha esito negativo e WMI è abilitata 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 |