RxPostToWorkerThread 함수(rxworkq.h)
RxPostToWorkerThread 는 작업자 스레드의 컨텍스트에서 매개 변수로 전달된 루틴을 호출합니다. 호출자가 WORK_QUEUE_ITEM 메모리를 할당해야 합니다.
구문
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
);
매개 변수
[in] pMRxDeviceObject
해당 네트워크 미니 리렉터 드라이버의 디바이스 개체에 대한 포인터입니다.
[in] WorkQueueType
작업의 우선 순위를 나타내는 작업 큐의 형식입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.
CriticalWorkQueue
실시간 우선 순위 특성이 있는 시스템 스레드가 작업 항목을 처리하는 큐에 WORK_QUEUE_ITEM 삽입합니다.
DelayedWorkQueue
변수 우선 순위 특성이 있는 시스템 스레드가 작업 항목을 처리하는 큐에 WORK_QUEUE_ITEM 삽입합니다.
HyperCriticalWorkQueue
호출할 루틴이 차단되지 않도록 시스템 스레드가 작업 항목을 처리하는 큐에 WORK_QUEUE_ITEM 삽입합니다.
[in] pWorkQueueItem
WORK_QUEUE_ITEM 대한 포인터입니다.
[in] Routine
호출할 루틴에 대한 포인터입니다.
[in] pContext
드라이버에 전달되는 완료할 작업 항목과 연결된 컨텍스트 매개 변수에 대한 포인터입니다.
반환 값
RxDispatchToWorkerThread 는 성공 시 STATUS_SUCCESS 반환하거나 실패 시 다음 오류 코드 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
|
항목을 디스패치할 수 없습니다. |
설명
작업자 스레드에 작업을 디스패치하는 두 가지 일반적인 경우가 있습니다. 다음 두 디스패치 작업 간의 장단점은 시간 대 공간(메모리 사용량)입니다.
- 작업이 반복적으로 디스패치되는 경우 WORK_QUEUE_ITEM 구조체를 디스패치할 데이터 구조의 일부로 미리 할당하여 시간이 보존됩니다. 이 경우 RxPostToWorkerThread 루틴을 사용합니다.
- 자주 사용하지 않는 작업의 경우 필요할 때 작업 큐 항목에 대한 메모리를 동적으로 할당하고 해제하여 공간을 절약할 수 있습니다. 이 경우 RxDispatchToWorkerThread 루틴을 사용합니다.
RxPostToWorkerThread 루틴 큐의 현재 구현은 호출이 시작된 동일한 프로세서에서 작동합니다.
디버그 빌드에서 RxPostToWorkerThread 루틴이 실패하면 오류 세부 정보와 함께 _RxLog 루틴이 호출됩니다. RxPostToWorkerThread 루틴이 실패하고 커널에서 WMI를 사용하도록 설정하면 오류의 세부 정보가 WMI로 기록됩니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 데스크톱 |
머리글 | rxworkq.h(Rxworkq.h, Rxstruc.h, Ntifs.h 포함) |
IRQL | <= APC_LEVEL |