Condividi tramite


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
STATUS_INSUFFICIENT_RESOURCES
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 .
La routine RxPostToWorkerThread richiama una routine nel contesto di un thread di lavoro. La memoria per la struttura WORK_QUEUE_ITEM deve essere allocata dalla memoria del pool non a pagina tramite la routine chiamante.

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

Vedi anche

RxDispatchToWorkerThread

RxSpinDownMRxDispatcher

_RxLog