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